当前位置:文档之家› 职工信息管理系统

职工信息管理系统

摘要:本论文设计了程序:《C语言课程设计指导书》第11题职工信息管理系统。

这个管理系统能对职工信息(包括职工号、姓名、性别、年龄、学历、工资、住址、电话等)进行有效地信息录入、浏览、查询、插入、删除等操作,会给用户带来很大的便利。

一职工信息管理系统1.1 题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)(3)职工信息浏览功能(4)职工信息查询功能,查询方式按职工号查询等按学历查询等(5)职工信息删除、修改功能(可选项)[提示]建立职工信息结构体,结构体成员包括职工号、姓名、性别、年龄、学历、工资、住址、电话。

1.2 需求分析根据题目要求,要求对职工信息进行输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、浏览、插入、修改等操作;另外还应提供键盘式选择菜单实现功能选择。

1.3总体设计根据需求分析,可以对这个系统的设计分为以下几个模块:职工信息管理系统数据输入数据浏览数据查找数据插入退出图1.3 系统功能模块图1.4详细设计1.4.1 主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

[流程图]:显示各功能选项N输入n ,判断n 是否是0-5Y根据n的值调用各功能模块函数图1.4.1 主函数流程图[程序]:/*****************主函数**********************/main (){menu();}/*****************menu函数********************/void menu(){ int n,w1;/*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围*/ do{puts("\t\t*****************menu****************\n\n");puts("\t\t\t\t1.Enter new data");puts("\t\t\t\t2.Browse all");puts("\t\t\t\t3.Search ");puts("\t\t\t\t4.add");puts("\t\t\t\t5.Exit");puts("\n\n\t\t***********************************\n");printf("Choice your number(1-5):[ ]\b\b");scanf("%d",&n);if(n<1||n>5) /*对选择的数字作出判断,是否在菜单功能数字范围内*/{w1=1;getchar();}else w1=0;} while(w1==1);switch(n)/*根据输入的数字,进入到相应的操作模块中*/{case 1:enter();break;/*输入模块*/case 2:browse();break; /*浏览模块*/case 3:search();break; /*查找模块,其中包括按不同类别进行查找的多个子模块*/case 4:add();break;/*插入模块*/case 5:exit(0); /*退出*/}}注:menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。

用结构体来存放职工信息:/********************结构体*******************/struct worker{char number[11];char name[20];char sex[20];char adress[20];char xueli[20];char telephone[20];char age[20];char salary[20];}wor[N];/* wor[N]中每个数组元素对应一个职工*/其中可以根据宏定义# define N随时对N的值进行调整,扩大信息的储存量。

1.4.2各功能模块设计(1)输入模块[需求分析] 对信息进行输入。

[流程图]:输入用户要输入职工记录的个数ni从0到n-1调用输入函数input(i)i!=0Y保存调用函数save( n)图1 输入模块流程图[程序]:/********************输入模块*******************/void enter()/*输入函数*/{int i,n;printf("How many workers(0-%d):",N-1);scanf("%d",&n);/*输入记录的个数,赋值给n*/for(i=0;i<n;i++)/*通过for 循环语句依次输入N 个职工信息数据*/{ printf("\n Input %dth worker record.\n",i+1);input(i);/*调用单个输入函数*/}if(i!=0)save(n);/*调用保存函数*/printf_back(); /*一个任务结束时让用户选择是浏览还是返回*/}(2)浏览模块[需求分析] 该模块的功能是显示所有职工记录信息。

[流程图]:图2 浏览模块流程图[程序]:/****************浏览(全部)模块***************/browse() /*浏览(全部模块)*/{int i,j,n;n=load(); /*调用加载函数,并计算可以记录的个数*/printf_face(); /*调出显示数据结构项目函数*/for(i=0;i<n;i++) /* for 循环语句用以分屏显示*/{if((i!=0)&&(i%10==0))/*判断i 值能否整除10,每10行一屏显示*/{printf("\n\nPass any key to continue...");getchar();puts("\n\n");}按任意键显示下一屏 按任意键返回主菜单 显示职工记录(10个一屏)}printf("\tThere are %d record.\n",n);/*提示用户储存信息数量*/printf("\nPass any key to back...");getch();/*按任意键*/menu();/*返回主菜单*/} (3)查找模块:图3 查找模块流程图[程序]:/***************查找模块***************/search() /*查找模块*/{int c,w1;do /* do- while 循环语句用来判断用户的选择是否在程序规定之内*/{puts("\nsearch by=>\n\n1).number2}.xueli3).cancel and back");printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1) /*对选择的数字作出判断*/{是否找到职工记录输入一整型数值 提示没有找到YN 查找模块1,2,还是3按职工号查找,调用Search1()按学历查找,调用Search2() 返回主菜单3 21[流程图]:getchar();}}while(c>3||c<1);{switch(c) /* switch 语句提供按不同类别进行查找功能*/{case 1:search1();break; /*按职工号进行查找*/case 2:search2();break; /*按姓名进行查找*/case 3:menu();break; /*返回主菜单*/}}}错误!未找到引用源。

/***************按职工号查找模块***************/[流程图]:图4 按职工号查找模块流程图[程序]:search1(){int i,n,k,w1=1,w2,w3,w4;struct worker s; /*定义结构体变量s ,用以储存输入的number 的值,便于进行比较*/ n=load(); /*加载将要记录的个数*/do /*该do- while 循环语句判断是否继续执行该函数*/按职工号查找模块用户作出选择,输入一整型数值返回主菜单 修改 1,2,还是3继续查找do /*该do- while循环语句判断是否找到要查找的对象*/{k=-1;printf("\n\nEnter number that you want to search! number:");scanf("%s",s.number);printf_face();/*调出显示数据结构项目函数*/for(i=0;i<n;i++) /* for循环语句用来判断原数据信息中是否有与输入职工号相同的职工号*/if(strcmp(s.number,wor[i].number)==0) /*原数据信息中找到与输入职工号相同的职工号*/{ k=i;printf_one(k);break;}if(k==-1) / *原数据信息中没有找到与输入职工号相同的职工号*/{printf("\n\nNo exit!please");printf("\n\nAre you again?\n\t1).again 2).No and back [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();/*返回主菜单*/}}while(k==-1&&w1==1);/*在没有找到且想再次查找的情况下继续进行循环*/ w4=0;w3=0;if(k!=-1) /*在查找到的情况下*/{printf("\n\nWhat do you want to do?\n\t1).Search another 2).Modify 3).Back menu [ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;/*继续按照职工号查找其他对象*/case 2:w3=modify_data(k,n);break;/*对查找到的对象进行修改*/case 3:menu();break;/*返回主菜单*/}}}while(w2==1);menu();/*返回主菜单*/}错误!未找到引用源。

相关主题