1、一.需求分析:根据题目要求,人事信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将RS定为100,也即最多可储存的职工人数为100;二总体设计:根据以上需求分析,将程序分成以下几个模块: 1浏览: *浏览文件(0) 2 删除 *删除记录(1) 3查询 *
2、按名称查询(2) *按编号查询(3) 4 编辑 *查询名称编辑信息(4) *查询编号编辑信息(5) 5 统计 *统计在职人数(6) *统计党员人数(7) *统计女工人数(8) *统计硕士以上学历人数(9) *统计副教授以上职称人数(10) 6 排序 *按年龄进行排序(11) *按来院时间进行排序(12) 7 保存 *将输入的记录进行保存(13)三 详细设计;1、 主函数:主函数设计的比较简单,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图如下程序void main() do int n; puts(*n);*人事管理系统*n*请选择以下选项后面的数字输入以确定您要
3、进行的操作*n选项:浏览: *浏览文件(0) 删除 *删除记录(1) 查询 *按名称查询(2) *按编号查询(3) 编辑 *查询名称编辑信息(4) *查询编号编辑信息(5) 统计 *统计在职人数(6) *统计党员人数(7) *统计女工人数(8) *统计硕士以上学历人数(9) *统计副教授以上职称人数(10) 排序 *按年龄进行排序(11) *按来院时间进行排序(12) 保存 *将输入的记录进行保存(13) 退出 *退出(14) printf(请输入选项号: scanf(%d,&n); switch(n) case 0:browse();break; case 1:dele(); case 2:
4、searname(); case 3:searnum(); case 4:channame(); case 5:channum(); case 6:sumzzrs(); case 7:sumdyrs(); case 8:sumngrs(); case 9:sumssysxlrs(); case 10:sumfjsyszhichers(); case 11:sortage(); case 12:sortlysj(); case 13:save(); case 14:return; default:输入错误 while(1);2、 各功能设计模块(1) 浏览模块该模块的功能是显示文件的所有信息,流
5、程图如下void browse() int i=0,j; if(fp=fopen(renshi.txt,r)=NULL) printf(cannot open this filen return; while(!feof(fp) fscanf(fp,%s %s %s %d %s %d %s %d %s %d %s,peri.num,peri.name,peri.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+;nn当前文件内容是:nn for(j=0;ji
6、;j+)%s %s %s %d %s %d %s %d %s %d %sn,perj.num,perj.name,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp);nnnnpress any key to continuennn getchar();(2) 删除模块该模块的功能是根据编号删除记录的信息,删除空行,后面的前移,浏览。流程图如下void dele() int i=0,j,k=0; char num10;请输入您要删除的记录的编
7、号:%s,num);w if(strcmp(perj.num,num)!=0) fprintf(fp, trim(); browse();(3) 按名称查询模块该模块的功能是根据名字查询记录。流程如下void searname() char name8;请输入您要查询的记录的姓名:,name);a+)=0)您要的信息如下: if(strcmp(perj.name,name)=0) k+; if(k=0)没有您要的信息(4) 按编号查询模块该模块功能是根据记录编号查询记录。流程路如下(5) void searnum()请输入您要查询的记录的编号:r+%s %s %s %d %s %d %s %d %s %d
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1