C语言课程设计(论文)高校人事管理系统设计.doc
一、题目要求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.name,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;j<i;j+) printf("%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); 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.name,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;j<i;j+) if(strcmp(perj.num,num)!=0) fprintf(fp,"%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); 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.name,peri.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; printf("您要的信息如下:n"); for(j=0;j<i;j+) if(strcmp(perj.name,name)=0) printf("%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); 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.name,peri.sex,&peri.age,peri.zhiwu,&peri.zhiche,peri.zzmm,&peri.zgxl,peri.rzsj,&peri.lysj,peri.rylb); i+; printf("您要的信息如下:n"); for(j=0;j<i;j+) if(strcmp(perj.num,num)=0) printf("%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); 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.name,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;j<i;j+) if(strcmp(perj.name,name)=0) switch(k) case 1:scanf("%s",perj.num);break; case 2:scanf("%s",perj.name);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;j<i;j+) fprintf(fp,"%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); 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.name,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;j<i;j+) if(strcmp(perj.num,num)=0) switch(k) case 1:scanf("%s",perj.num);break; case 2:scanf("%s",perj.name);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;j<i;j+) fprintf(fp,"%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); 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.name,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;j<i;j+) printf("%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); 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.name,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<i;j+) if(strcmp(perj.zzmm,"党员")=0) printf("%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); 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.name,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<i;j+) if(strcmp(perj.sex,"女")=0) printf("%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); 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.name,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<i;j+) if(perj.zgxl>=2) printf("%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); 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.name,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<i;j+) if(perj.zhiche>=4) printf("%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); 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.name,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;j<i;j+) for(k=0;k<i;k+) if(perj.age>perk.age) a=perk; perk=perj;perj=a; for(j=0;j<i;j+) fprintf(fp,"%s %s %s %d %s %d %s %d %s %d %sn",perj.num,per