C语言课程设计-人事管理管理系统Ⅱ.doc_第1页
C语言课程设计-人事管理管理系统Ⅱ.doc_第2页
C语言课程设计-人事管理管理系统Ⅱ.doc_第3页
C语言课程设计-人事管理管理系统Ⅱ.doc_第4页
C语言课程设计-人事管理管理系统Ⅱ.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人事管理管理系统要求某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。(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)三 详细设计;1、 主函数:主函数设计的比较简单,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图如下程序开始显示一系列功能根据n的值调用个功能模块函数结束输入n,判断是否是014NYvoid main() do int n; 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,&n); switch(n) case 0:browse();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; default: printf(输入错误); while(1);2、 各功能设计模块(0) 浏览模块该模块的功能是显示文件的所有信息,流程图如下显示所有信息按任意键显示下一屏按任意键继续程序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.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) 删除模块该模块的功能是根据编号删除记录的信息,删除空行,后面的前移,浏览。流程图如下开始输入要删除记录的编号是否找到记录?显示没有找到删除记录YN程序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(); browse(); printf(); getchar();(2) 按名称查询模块该模块的功能是根据名字查询记录。流程如下开始输入要查询记录的名字是否找到记录?显示没有找到显示记录YN程序void searname() int i=0,j,k=0; char name8; printf(请输入您要查询的记录的姓名: ); scanf(%s,name); if(fp=fopen(renshi.txt,a+)=0) 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); browse(); printf(); getchar();(3) 按编号查询模块该模块功能是根据记录编号查询记录。流程路如下开始输入要查询记录的编号是否找到记录?显示没有找到显示记录YN(4)程序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); browse(); printf(); getchar();(5) 查询名称编辑模块该模块先根据名字查找记录,然后修改记录。流程图如下开始输入要查询记录的名字是否找到记录?显示没有找到输入对应要修改项的数字YN输入修改后的值程序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(请输入您要修改的项所对应的数字:(编号对应的数字为1,其他项依次为2,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(); browse(); printf(); getchar(); (6) 查询编号编辑信息模块该模块是先根据记录的编号查询记录,而后编辑记录。流程图如下程序void channum()开始输入要查询记录的编号是否找到记录?显示没有找到输入对应要修改项的数字YN输入修改后的值 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(请输入您要修改的项所对应的数字:(编号对应的数字为1,其他项依次为2,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(); browse(); printf(); getchar();(7) 根据在职人数进行统计模块开始判断人员是否在职把在职人员相加完成程序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(); browse(); printf(); getchar();(7)根据党员人数进行统计模块程序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(); browse(); printf(); getchar();(8)根据女工人数进行统计模块程序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(); browse(); printf(); getchar();(9)根据硕士以上学历人数进行统计模块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(); browse(); printf(); getchar();(10)根据副教授以上职称人数进行统计模块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(); browse(); printf(); getchar();(11)按年龄进行排序模块该模块的功能是根据年龄排序。流程图排序开始用选择法排序保存结束程序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(); browse(); printf(); getchar();(12)按来院时间进行排序模块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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论