C语言课程设计-人事管理管理系统Ⅱ

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

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

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

资源描述

1人事管理管理系统[要求]某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;(5)排序功能:按照年龄、来院时间进行排序;(6)保存功能:能对输入的数据进行相应的存储;一.需求分析:根据题目要求,人事信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将RS定为100,也即最多可储存的职工人数为100;二总体设计:根据以上需求分析,将程序分成以下几个模块:1浏览:****浏览文件(0)2删除****删除记录(1)3查询****按名称查询(2)****按编号查询(3)4编辑****查询名称编辑信息(4)****查询编号编辑信息(5)5统计****统计在职人数(6)****统计党员人数(7)****统计女工人数(8)****统计硕士以上学历人数(9)****统计副教授以上职称人数(10)6排序****按年龄进行排序(11)****按来院时间进行排序(12)7保存****将输入的记录进行保存(13)2三详细设计;1、主函数:主函数设计的比较简单,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图如下程序voidmain(){do{intn;puts(****************************************************\n);puts(****************人事管理系统************************\n);puts(**请选择以下选项后面的数字输入以确定您要进行的操作**\n);puts(选项:);puts(浏览:);puts(****浏览文件(0));puts(删除);puts(****删除记录(1));puts(查询);puts(****按名称查询(2));puts(****按编号查询(3));puts(编辑);puts(****查询名称编辑信息(4));puts(****查询编号编辑信息(5));puts(统计);开始显示一系列功能根据n的值调用个功能模块函数结束输入n,判断是否是0~14NY3puts(****统计在职人数(6));puts(****统计党员人数(7));puts(****统计女工人数(8));puts(****统计硕士以上学历人数(9));puts(****统计副教授以上职称人数(10));puts(排序);puts(****按年龄进行排序(11));puts(****按来院时间进行排序(12));puts(保存);puts(****将输入的记录进行保存(13));puts(退出);puts(****退出(14));printf(请输入选项号:);scanf(%d,&n);switch(n){case0:browse();break;case1:dele();break;case2:searname();break;case3:searnum();break;case4:channame();break;case5:channum();break;case6:sumzzrs();break;case7:sumdyrs();break;case8:sumngrs();break;case9:sumssysxlrs();break;case10:sumfjsyszhichers();break;case11:sortage();break;case12:sortlysj();break;case13:save();break;case14:return;default:printf(输入错误);}}while(1);}2、各功能设计模块(0)浏览模块该模块的功能是显示文件的所有信息,流程图如下4程序voidbrowse(){inti=0,j;if((fp=fopen(renshi.txt,r))==NULL){printf(cannotopenthisfile\n);return;}while(!feof(fp)){fscanf(fp,%s%s%s%d%s%d%s%d%s%d%s,per[i].num,per[i].name,per[i].sex,&per[i].age,per[i].zhiwu,&per[i].zhiche,per[i].zzmm,&per[i].zgxl,per[i].rzsj,&per[i].lysj,per[i].rylb);i++;}printf(\n\n当前文件内容是:\n\n);for(j=0;ji;j++){printf(%s%s%s%d%s%d%s%d%s%d%s\n,per[j].num,per[j].name,per[j].sex,per[j].age,per[j].zhiwu,per[j].zhiche,per[j].zzmm,per[j].zgxl,per[j].rzsj,per[j].lysj,per[j].rylb);}fclose(fp);printf(\n);printf(\n\n\npressanykeytocontinue\n\n\n);getchar();printf(\n);}(1)删除模块该模块的功能是根据编号删除记录的信息,删除空行,后面的前移,浏览。流程图如下显示所有信息按任意键显示下一屏按任意键继续5程序voiddele(){inti=0,j,k=0;charnum[10];printf(请输入您要删除的记录的编号:);scanf(%s,num);if((fp=fopen(renshi.txt,r))==NULL){printf(cannotopenthisfile\n);return;}while(!feof(fp)){fscanf(fp,%s%s%s%d%s%d%s%d%s%d%s,per[i].num,per[i].name,per[i].sex,&per[i].age,per[i].zhiwu,&per[i].zhiche,per[i].zzmm,&per[i].zgxl,per[i].rzsj,&per[i].lysj,per[i].rylb);i++;}fclose(fp);if((fp=fopen(renshi.txt,w))==NULL){printf(cannotopenthisfile\n);return;}for(j=0;ji;j++){if(strcmp(per[j].num,num)!=0)fprintf(fp,%s%s%s%d%s%d%s%d%s%d%s\n,per[j].num,per[j].name,per[j].sex,per[j].age,per[j].zhiwu,per[j].zhiche,per[j].zzmm,per[j].zgxl,per[j].rzsj,per[j].lysj,per[j].rylb);}fclose(fp);trim();开始输入要删除记录的编号是否找到记录?显示没有找到删除记录YN6browse();printf();getchar();}(2)按名称查询模块该模块的功能是根据名字查询记录。流程如下程序voidsearname(){inti=0,j,k=0;charname[8];printf(请输入您要查询的记录的姓名:);scanf(%s,name);if((fp=fopen(renshi.txt,a+))==0){printf(cannotopenthisfile\n);return;}while(!feof(fp)){fscanf(fp,%s%s%s%d%s%d%s%d%s%d%s,per[i].num,per[i].name,per[i].sex,&per[i].age,per[i].zhiwu,&per[i].zhiche,per[i].zzmm,&per[i].zgxl,per[i].rzsj,&per[i].lysj,per[i].rylb);i++;}printf(您要的信息如下:\n);for(j=0;ji;j++){if(strcmp(per[j].name,name)==0){printf(%s%s%s%d%s%d%s%d%s%d%s\n,per[j].num,per[j].name,per[j].sex,per[j].age,per[j].zhiwu,per[j].zhiche,per[j].zzmm,per[j].zgxl,per[j].rzsj,per[j].lysj,per[j].rylb);k++;开始输入要查询记录的名字是否找到记录?显示没有找到显示记录YN7}}if(k==0){printf(没有您要的信息);return;}fclose(fp);browse();printf();getchar();}(3)按编号查询模块该模块功能是根据记录编号查询记录。流程路如下(4)程序voidsearnum(){inti=0,j,k=0;charnum[10];printf(请输入您要查询的记录的编号:);scanf(%s,num);if((fp=fopen(renshi.txt,r+))==NULL){printf(cannotopenthisfile\n);return;}while(!feof(fp)){fscanf(fp,%s%s%s%d%s%d%s%d%s%d%s,per[i].num,per[i].name,per[i].sex,&per[i].age,per[i].zhiwu,&per[i].zhiche,per[i].zzmm,&per[i].zgxl,per[i].rzsj,&per[i].lysj,per[i].rylb);i++;}开始输入要查询记录的编号是否找到记录?显示没有找到显示记录YN8printf(您要的信息如下:\n);for(j=0;ji;j++){if(strcmp(per[j].num,num)==0){printf(%s%s%s%d%s%d%s%d%s%d%s\n,per[j].num,per[j].name,per[j].sex,per[j].age,per[j].zhiwu,per[j].zhiche,per[j].zzmm,per[j].zgxl,per[j].rzsj,per[j].lysj,per[j].rylb);k++;}}if(k==0){printf(没有您要的信息);return;}fclose(fp);browse();printf();getchar();}(5)查询名称编辑模块该模块先根据名字查找记录,然后修改记录。流程图如下程序voidchanname(){inti=0,j,k;开始输入要查询记录的名字是否找到记录?显示没有找到输入对应要修改项的数字YN输入修改后的值9charname[8];printf(请输入您要编辑的记录的姓名:);scanf(%s,name);if((fp=fopen(renshi.txt,r))==NULL){printf(cannotopenthisfile\n);return;}while(!feof(fp)){fsc

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

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

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

×
保存成功