26C语言课设之人事管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言课程设计——人事管理系统题目要求:人事管理管理系统[要求]某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;(5)排序功能:按照年龄、来院时间进行排序;(6)保存功能:能对输入的数据进行相应的存储;一、需求分析:根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件存贮,这样的方法在一定程度上提高了对数据处理的灵活性,较容易理解,但存在处理中遇到以外情况而丢失数据的风险,另外当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,基本上能满足要求;二、总体设计:根据以上需求分析,将程序分成以下几个模块:1、新建数据文件(buildnewdata);2、添加记录(adddata);3、删除记录(deletedata);4、按工号搜索(searchbynumber);5、按姓名搜索(searchbyname);6、浏览全部数据(browseall);7、修改数据(modifythedata);8、排序功能(orderthevolume);9、统计功能(dataavolume);系统功能模块图如下:三、详细设计;1、主函数:〈1〉需求分析:为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的较简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。main()函数定义如下:main(){menu();}而menu()定义如下:〈2〉流程图:menu(){intn,w1;do{printf(\n\t\t\t\tMENU\n);printf(\t\t0\tbuildnewdata\n\n);printf(\t\t1\tdeletedata\n\n);printf(\t\t2\tadddata\n\n);printf(\t\t3\tsearchbynumber\n\n);printf(\t\t4\tsearchbyname\n\n);printf(\t\t5\tbrowseall\n\n);printf(\t\t6\tmodifythedata\n\n);printf(\t\t7\torderthevolume\n\n);printf(\t\t8\tdataavolume\n\n);printf(\t\t9\texit\n\n);printf(\tpleasechoiceandenteranumber[]\b\b);scanf(%d,&n);if(n0||n8){w1=1;getchar();}elsew1=0;}while(w1==1);switch(n){case0:build();break;/*********调用新建数据文件函数*******/case1:del();break;/*********调用删除数据函数***********/case2:add();break;/*********调用添加数据函数***********/case3:snum();break;/*********调用按工号搜索函数*********/case4:sname();break;/*********调用按姓名搜索函数*********/case5:browse();break;/*********调用浏览数据函数************/case6:modify();break;/*********调用修改数据函数************/case7:order();break;/*********调用排序函数函数************/case8:data();break;/*********调用统计函数****************/case9:exit(0);/*********退出*************************/default:{printf(inputerror!!pleaseinputanumberbetween0and8);menu();}}}2、各功能模块设计:(1)、新建数据文件模块:1、数据结构;看各个数据信息,编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进内存中时,可以以结构体的形式,每一个结构体包含了一个人员的全部信息,多的人员的信息组成了一个结构体数组。定义如下:structworker{charnum[11];charname[10];charsex[2];charage[3];charzhiwu[15];charzhicheng[15];charzhengzhi[15];charxueli[15];charrenzhisj[8];charlaiyansj[8];charleibie[15];}wk[N],s;其中N是宏定义形式定义的字符,临时定义为100,wk[N],为存放人员信息的结构体数组,而S为临时的结构体,用来保存信息处理过程中的临时数据。〈2〉、流程图如下:〈3〉、程序:build(){inti,m,k,p;FILE*fp;if((fp=fopen(worker00.txt,w))==NULL){printf(cannotbuildfile\n);printf_back();}printf(howmanyworkersdoyouwanttoinput(0-%d)?:,N);scanf(%d,&m);k=m;for(i=0;ik;i++){printf(\nInput%dthworkerrecord.\n,i+1);input(i);}for(p=0;p=i;p++)if((fprintf(fp,%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n,wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie))!=1)printf(cannotwritethedata\n\n);fclose(fp);printf_back();}(2)、追加模块:〈1〉[需求分析]该模块的功能是拥护需要增加新的员工记录,从键盘输入并逐条写入到原来的文件中去,其中输入号码是要防止号码重复,重复时报告错误,重新输入。为方便用户管理和查看,该模块采用的方式是用先把原来文件中的数据读入内存,保存在内存中,然后在内存中的数据后面增加新的数据,操作完成后用写的方式打开文件,用覆盖的方式写入。〈2〉流程图:〈3〉程序:add(){inti,m,n,k,p;FILE*fp;n=load();if(n==-1)menu();printf(howmanyworkersdoyouwanttoadd(0-%d)?:[]\b\b\b,N-n);scanf(%d,&m);k=m+n;for(i=n+1;i=k;i++){printf(\nInput%dthworkerrecord.\n,i-n+1);input(i);}if((fp=fopen(worker00.txt,w))==NULL)/*******将数据保存到文件********/{printf(cannotopenfile\n);printf_back();}for(p=0;pk;p++)fprintf(fp,%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n,wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie);fclose(fp);printf_back();}(3)修改模块:〈1〉[需求分析:]该模块的功能是显示所有信息,考虑到记录较多,采用分屏显示,显示完所有的记录后,由用户输入需要修改的人员的号码,查找成功后,显示查找结果,并询问拥护修改人员的哪部分记录,根据用户选择修改相应的信息,然后保存修改后的结果;〈2〉流程图〈3〉程序;modify(){inti,n,k,p,w0=1,w1,w2=0;FILE*fp;n=load();do{k=-1;printf_face();for(i=0;i=n;i++){if((i!=0)&&(i%10==0)){printf(\n\nRemembertheNo.whichneedmodify.\npressanykeytocontinue...);getch();puts(\n\n);}printf_one(i);}do{printf(\n\nEnterNO.thatyouwanttomodify!\n\t\tNO.[]\b\b);scanf(%s,s.num);for(i=0;in;i++)if(strcmp(s.num,wk[i].num)==0);{k=i;s=wk[i];}if(k==-1)printf(\n\nNOexit!pleaseagain);}while(k==-1);printf_face();printf_one(k);w1=modify_data(k);if(w1==1){printf(\nsuccessful!!\n\nDoyuowanttomodifyanother?\n\n\t\t1\tYes\n\n\t\t2\tBackwithsave\n\t[]\b\b);scanf(%d,&w0);w2=1;}else{w0=0;if(w2==1)wk[k]=s;}wk[k]=s;if(w0!=1&&w2==1){fp=fopen(worker00.txt,w);{for(p=0;p=n;p++)fprintf(fp,%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n,wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie);}fclose(fp);}}while(w0==1);menu();}修改数据函数如下:modify_data(inti){intc,w1;do{printf(\nmodifyby=\n\n\t\t1\tNO.\n\t\t2\tname\n\t\t3\tsex\n\t\t4\tage\n\t\t5\tzhiwu\n\t\t6\tzhicheng\n\t\t7\tzhengzhimianmao\n\t\t8\txueli\n\t\t9\trenzhishijian\n\t\t1

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功