




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、题目要求21、系统功能的基本要求22、提示2二、需求分析2三、总体设计2四、详细设计31、主函数32、各模块设计5 (0)浏览模块-6(1)删除模块-7 (2) 查询模块-8 (2.1) 按编号查询模块-9 (2.2) 按姓名查询模块-9(3)编辑模块10(4)统计模块11 (4.1) 在职人数统计模块-11 (4.2) 党员人数统计模块-11 (4.3) 女工人数统计模块-11 (4.4) 高学历高职称人数统计模块-11(5)排序模块16 (5.1) 按年龄排序模块-16 (5.2) 按来院时间模块-16(6)保存模块22五、上机操作30六、完整程序31七、运行结果截图53八、总结与感想56一、题目要求 某高校主要人员有:在职人员(行政人员、教师、一般人员)、退休人员和临时工。现在需要储存这些人员的人事档案信息,内容包括编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。(1) 添加删除功能:能根据学院人事的变动情况,添加删除记录。(2) 查询功能:能根据编号和姓名进行查询。(3) 编辑功能(高级):根据查询对相应的记录进行修改并储存。(4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息。(5) 排序功能:按照年龄、来院时间进行排序。(6) 保存功能:能对输入的数据进行相应的储存。二、需求分析根据题目要求,需要把仪器仪表信息的的数据存储在文件里,所以需要提供文件的输入输出等操作;在程序中要提供修改,删除,查找等操作;另外还应该提供键盘式选择菜单实现功能选择。三、总体设计人事管理系统删除模块查询模块编辑模块统计模块排序模块保存模块按编号查询按姓名查询在职人数统计党员人数统计女工人数统计高学历高职称统计按年龄排序按来院时间排序四、详细设计1、主函数主函数只提供输入输出和功能处理的函数调用。其各功能模块用菜单方式选择。将main()函数体内的界面选择部分语句单独抽取出来作为一独立函数,目的在于系统执行完每部分功能模块后能够方便返回到系统界面。【程序】*主函数*/int main() do int cz; puts(*n); puts(*人事管理系统*n); puts(*请选择以下选项后面的数字输入以确定您要进行的操作*n); puts(选项:); puts(浏览:); puts( *浏览文件(0); puts( 删除); puts( *删除记录(1); puts( 查询); puts( *按名称查询(2); puts( *按编号查询(3); puts( 编辑); puts( *查询名称编辑信息(4); puts( *查询编号编辑信息(5); puts( 统计); puts( *统计在职人数(6); puts( *统计党员人数(7); puts( *统计女工人数(8); puts( *统计硕士以上学历人数(9); puts( *统计副教授以上职称人数(10); puts( 排序); puts( *按年龄进行排序(11); puts( *按来院时间进行排序(12); puts( 保存); puts( *将输入的记录进行保存(13); puts( 退出); puts( *退出(14); printf(请输入选项号: ); scanf(%d,&cz); switch(cz) case 0:blose();break; case 1:dele();break; case 2:searname();break; case 3:searnum();break; case 4:channame();break; case 5:channum();break; case 6:sumzzrs();break; case 7:sumdyrs();break; case 8:sumngrs();break; case 9:sumssysxlrs();break; case 10:sumfjsyszhichers();break; case 11:sortage();break; case 12:sortlysj();break; case 13:save();break; case 14:return 0; default: printf(对不起,您没有按要求输入); while(1);2、各模块设计(0)浏览模块void blose() 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; printf(nn当前文件内容是:nn); for(j=0;ji;j+) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); printf(n); printf(nnnpress any key to continuennn); getchar(); printf(n);(1)删除模块void dele() int i=0,j,k=0; char num10; printf(请输入您要删除的记录的编号: ); scanf(%s,num); 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; fclose(fp); if(fp=fopen(renshi.txt,w)=NULL) printf(cannot open this filen); return; for(j=0;ji;j+) if(strcmp(perj.num,num)!=0) fprintf(fp,%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); trim(); blose(); printf(); getchar();(2)查询模块(2.1)按编号查询void searname() int i=0,j,k=0; char name8; printf(请输入您要查询的记录的姓名: ); scanf(%s,name); 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; printf(您要的信息如下:n); for(j=0;ji;j+) if(strcmp(,name)=0) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); k+; if(k=0) printf(没有您要的信息); return; fclose(fp); blose(); printf(); getchar();(2.2)按姓名查询void searnum() int i=0,j,k=0; char num10; printf(请输入您要查询的记录的编号: ); scanf(%s,num); 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; printf(您要的信息如下:n); for(j=0;ji;j+) if(strcmp(perj.num,num)=0) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); k+; if(k=0) printf(没有您要的信息); return; fclose(fp); blose(); printf(); getchar();(3)编辑模块void channame() int i=0,j,k; char name8; printf(请输入您要编辑的记录的姓名: ); scanf(%s,name); 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; fclose(fp); trim(); if(fp=fopen(renshi.txt,w)=NULL) printf(cannot open this filen); return; printf(请输入您要修改的项所对应的数字:(编号对应的数字为,其他项依次为,3,4.); scanf(%d,&k); printf(请输入这一项修改后的值); for(j=0;ji;j+) if(strcmp(,name)=0) switch(k) case 1:scanf(%s,perj.num);break; case 2:scanf(%s,);break; case 3:scanf(%s,perj.sex);break; case 4:scanf(%d,&perj.age);break; case 5:scanf(%s,perj.zhiwu);break; case 6:scanf(%d,&perj.zhiche);break; case 7:scanf(%s,perj.zzmm);break; case 8:scanf(%d,&perj.zgxl);break; case 9:scanf(%s,perj.rzsj);break; case 10:scanf(%d,&perj.lysj);break; case 11:scanf(%s,perj.rylb);break; case 12:return; default:printf(输入错误); for(j=0;ji;j+) fprintf(fp,%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); trim(); blose(); printf(); getchar();void channum() int i=0,j,k; char num10; printf(请输入您要编辑的记录的编号: ); scanf(%s,num); 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; fclose(fp); if(fp=fopen(renshi.txt,w)=NULL) printf(cannot open this filen); return; printf(请输入您要修改的项所对应的数字:(编号对应的数字为,其他项依次为,3,4.); scanf(%d,&k); printf(请输入这一项修改后的值); for(j=0;ji;j+) if(strcmp(perj.num,num)=0) switch(k) case 1:scanf(%s,perj.num);break; case 2:scanf(%s,);break; case 3:scanf(%s,perj.sex);break; case 4:scanf(%d,&perj.age);break; case 5:scanf(%s,perj.zhiwu);break; case 6:scanf(%d,&perj.zhiche);break; case 7:scanf(%s,perj.zzmm);break; case 8:scanf(%d,&perj.zgxl);break; case 9:scanf(%s,perj.rzsj);break; case 10:scanf(%d,&perj.lysj);break; case 11:scanf(%s,perj.rylb);break; case 12:return; default:printf(输入错误); for(j=0;ji;j+) fprintf(fp,%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); trim(); blose(); printf(); getchar();(4)统计模块(4.1)在职人数统计void sumzzrs() 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; if(i=0) printf(这是一个空文件); return; printf(在职人员数量是%d人n,i); for(j=0;ji;j+) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); trim(); blose(); printf(); getchar();(4.2) 党员人数统计void sumdyrs() int i=0,j,count=0; 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; if(i=0) printf(这是一个空文件); return; for(j=0;ji;j+) if(strcmp(perj.zzmm,党员)=0) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); count+; fclose(fp); printf(党员数量是%d人,count); trim(); blose(); printf(); getchar();(4.3) 女工人数统计void sumngrs() int i=0,j,count=0; 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; if(i=0) printf(这是一个空文件); return; for(j=0;ji;j+) if(strcmp(perj.sex,女)=0) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); count+; fclose(fp); printf(女工数量是%d人,count); trim(); blose(); printf(); getchar();(4.4) 高学历高职称人数统计void sumssysxlrs() int i=0,j,count=0; 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; if(i=0) printf(这是一个空文件); return; for(j=0;j=2) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); count+; fclose(fp); printf(硕士以上学历人数是%d人,count); trim(); blose(); printf(); getchar();void sumfjsyszhichers() int i=0,j,count=0; 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; if(i=0) printf(这是一个空文件); return; for(j=0;j=4) printf(%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); count+; fclose(fp); printf(副教授以上学历人数是%d人,count); trim(); blose(); printf(); getchar();(5)排序模块(5.1) 按年龄排序模块void sortage() int i=0,j,k; struct person a; 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; fclose(fp); if(fp=fopen(renshi.txt,w)=NULL) printf(cannot open this filen); return; for(j=0;ji;j+) for(k=0;kperk.age) a=perk; perk=perj;perj=a; for(j=0;ji;j+) fprintf(fp,%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); trim(); blose(); printf(); getchar();(5.2) 按来院时间void sortlysj() int i=0,j,k; struct person a; 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; fclose(fp); if(fp=fopen(renshi.txt,w)=NULL) printf(cannot open this filen); return; for(j=0;ji;j+) for(k=0;kperk.lysj) a=perk; perk=perj;perj=a; for(j=0;ji;j+) fprintf(fp,%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); trim(); blose(); printf(); getchar();(6)保存模块void save() int n,i=0,j,k; printf(您要输入几条记录: ); scanf(%d,&n); 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.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; fclose(fp); if(fp=fopen(renshi.txt,w)=NULL) printf(cannot open this filen); return; printf(请输入您的记录(以空格隔开)n); for(j=0;jn;j+) scanf(%s %s %s %d %s %d %s %d %s %d %s,peri+j.num,peri+,peri+j.sex,&peri+j.age,peri+j.zhiwu,&peri+j.zhiche,peri+j.zzmm,&peri+j.zgxl,peri+j.rzsj,&peri+j.lysj,peri+j.rylb); k=i+j; for(j=0;j=k;j+) fprintf(fp,%s %s %s %d %s %d %s %d %s %d %sn,perj.num,,perj.sex,perj.age,perj.zhiwu,perj.zhiche,perj.zzmm,perj.zgxl,perj.rzsj,perj.lysj,perj.rylb); fclose(fp); trim(); blose(); printf(); getchar();五、上机操作1. 数据源:为了保存数据,需要建立一个data.txt文件2. 编译、连接和运行3. 结果六、完整程序#include #include #define RS 100struct person char num10; char name8; char sex4; int age; char zhiwu20; int zhiche;/*1=助理,2=讲师,3=教授,4=副教授,5=博导,6=院士*/ char zzmm10; int zgxl;/*1=本科,2=硕士,3=博士,4=博士后*/ char rzsj12; int lysj; char rylb10;perRS;void blose();/*浏览文件*/void trim();/*删除空行*/void dele();/*删除函数*/void searname();/*按名称查询*/void searnum();/*按编号查询*/void channame();/*查询名称编辑信息*/void channum();/*查询编号编辑信息*/void sumzzrs();/*根据在职人数进行统计*/void sumdyrs();/*根据党员人数进行统计*/void sumngrs();/*根据女工人数进行统计*/void sumssysxlrs();/*根据硕士以上学历人数进行统计*/void sumfjsyszhichers();/*根据副教授以上职称人数进行统计*/void sortage();/*按年龄进行排序*/void so
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论