人事综合管理系统C语言_第1页
人事综合管理系统C语言_第2页
人事综合管理系统C语言_第3页
人事综合管理系统C语言_第4页
人事综合管理系统C语言_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

人事管理管理系统[要求]某高校关键人员有:在职人员(行政人员、老师、通常职员)、退休人员和临时工。现在,需要存放这些人员人事档案信息:编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能反复。添加删除功效:能依据学院人事变动情况,添加删除统计;查询功效:能依据编号和姓名进行查询;编辑功效(高级):依据查询对对应统计进行修改,并存放;统计功效:能依据多个参数进行人员统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或副教授以上)),统计要求同时显示被统计者信息;排序功效:根据年纪、来院时间进行排序;保留功效:能对输入数据进行对应存放;需求分析:依据题目要求,职员信息是存放在文件中,所以应该提供对应文件输入输出功效,在程序中应该有添加删除,查询,编辑,统计,排序,保留等程序实现对应操作,另外菜单式选择方法选择程序功效也是必需需。另外程序中要求存放模块,采取方法均为将原文件中全部数据读入内存,在内存中处理以后以覆盖方法写入文件中重新储存,这么方法轻易了解、轻易编写,但当文件中数据量很大时,这种方法也存在一定难度,在本程序中将N定为100,也即最多可储存职员人数为100;总体设计:依据以上需求分析,将程序分成以下多个模块:新建档案信息;删除信息;追加信息;搜索查找信息(按姓名或编号搜索);浏览全部信息;修改信息;信息排序;信息统计;具体设计;主函数:〈1〉需求分析:为使系统实施完每部分功效后能够方便回到系统主界面,main()函数设计很简单,只包含一个menu()函数,其它全部功效全部经过menu()函数调用来实现,并经过menu()函数递归调用实现返回主界面功效。main()函数定义以下:main(){menu();}而menu()定义以下:〈2〉步骤图:voidmenu(){ intn,w1;do { printf("\n\t\t\t\t菜\t单\n");printf("\n\t\t0\t新建档案信息\n\n");printf("\t\t1\t删除信息\n\n");printf("\t\t2\t追加信息\n\n");printf("\t\t3\t搜索查找信息\n\n");printf("\t\t4\t浏览全部信息\n\n");printf("\t\t5\t修改信息\n\n");printf("\t\t6\t信息排序\n\n");printf("\t\t7\t信息统计\n\n");printf("\t\t8\t离开\n\n");printf("\t\t请选择您要进行操作[]\b\b");/**显示一系列功效并提醒选择**/scanf("%d",&n);if(n<0||n>8) {w1=1;getchar(); }elsew1=0; }while(w1==1);/**输入n并判定是否属于0到8**/switch(n) { case0:build();break;case1:del();break;case2:add();break;case3:search();break;case4:browse();break;case5:modify();break;case6:order();break;case7:data();break;case8:exit(0);default:{printf("输入错误!请重新输入");menu();}/**依据n值调用各功效函数**/ }}2、各功效模块设计:(1)、新建档案信息模块:<1>、数据结构;看各个数据信息,编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条统计对应一个人员信息,能够方便信息管理;而数据读进内存中时,能够以结构体形式,每一个结构体包含了一个人员全部信息,多人员信息组成了一个结构体数组。定义以下:structworker{charnum[11];charname[10];charsex[2];charage[3];charzhiwu[15];charzhicheng[15];charzhengzhi[15];charxueli[15];charrenzhisj[8];charlaiyansj[8];charleibie[15];}wk[N],s;其中N是宏定义形式定义字符,临时定义为100,wk[N],为存放人员信息结构体数组,而S为临时结构体,用来保留信息处理过程中临时数据。〈2〉、步骤图以下:〈3〉、程序:intbuild(){ inti,m,n,p;FILE*fp;if((fp=fopen("worker00.txt","w"))==NULL) { printf("cannotbuildfile\n");printf_back();/*输入用户要输入学生个数N*/ }printf("您要输入人数是(0-%d)?:",N);scanf("%d",&m);n=m;for(i=0;i<n;i++) { printf("\n请输入第%d个工作人员信息\n",i+1);input(i);/*从0到N调用输入函数input*/ }for(p=0;p<=i;p++)if((fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie))!=1)printf("cannotwritethedata\n\n");/*将结构体数组中数据写入文件*/fclose(fp);/*关闭文件*/printf_back();}(2)、追加模块:〈1〉[需求分析]该模块功效是拥护需要增加新职员统计,从键盘输入并逐条写入到原来文件中去,其中输入号码是要预防号码反复,反复时汇报错误,重新输入。为方便用户管理和查看,该模块采取方法是用先把原来文件中数据读入内存,保留在内存中,然后在内存中数据后面增加新数据,操作完成后用写方法打开文件,用覆盖方法写入。〈2〉步骤图:〈3〉程序:intadd(){ inti,m,n,p;FILE*fp;n=load();/*调用加载函数load将文件中数据读入内存*/if(n==-1){ printf("\n对不起,还没有档案,请新建一个档案\n"); menu(); }printf("您要追加人数是(0-%d)?:[]\b\b\b",N-n);scanf("%d",&m);/*输入要追加人员个数m*/for(i=n+1;i<=m+n;i++) { printf("\n追加第%d个工作人员信息\n",i-n);input(i);/*从n到k调用输入函数input(i)*/ }if((fp=fopen("worker00.txt","a+"))==NULL) { printf("cannotopenfile\n"); printf_back();/*调用*/ }for(p=n+1;p<=m+n;p++)fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie);/*从0到k以覆盖方法写入文件并保留*/fclose(fp);printf_back();/*关闭文件*/}(3)修改模块:[需求分析:]该模块功效是显示全部信息,考虑到统计较多,采取分屏显示,显示完全部统计后,由用户输入需要修改人员号码,查找成功后,显示查找结果,并问询拥护修改人员哪部分统计,依据用户选择修改对应信息,然后保留修改后结果;步骤图程序;modify(){ inti,n,k,p,w0=1,w1,w2=0;FILE*fp;n=load();do { k=-1;printf_face();for(i=0;i<=n;i++)printf_one(i); do { printf("\n\n请输入你要修改信息编号\n\t\t编号:[]\b\b");scanf("%s",s.num);for(i=0;i<=n;i++) { if(strcmp(s.num,wk[i].num)==0) { k=i;s=wk[i]; } } if(k==-1)printf("\n\n没有找到您所需信息!请重新输入!\n"); }while(k==-1); printf_face(); printf_one(k);w1=modify_data(k);if(w1==1) { printf("\n修改成功!\n\n要继续修改吗?\n\n\t\t1\t是\n\n\t\t2\t保留并返回\n\t[]\b\b");scanf("%d",&w0);w2=1; }else { w0=0;if(w2==1) wk[k]=s; }if(w0!=1&&w2==1) { fp=fopen("worker00.txt","w"); { for(p=0;p<=n;p++)fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie); }fclose(fp); }}while(w0==1);menu();}修改数据函数以下:modify_data(inti){ intc,w1;do { printf("\n请选择需要修改项=>\n\n\t\t1\t编号\n\t\t2\t姓名\n\t\t3\t性别\n\t\t4\t年纪\n\t\t5\t职务\n\t\t6\t职称\n\t\t7\t政治面貌\n\t\t8\t学历\n\t\t9\t任职时间\n\t\t10\t来院时间\n\t\t11\t在职类别\n\n\t\t\t[]\b\b");scanf("%d",&c);if(c>11||c<1)printf("错误,请重新选择!");getchar(); }while(c>11||c<1);do { switch(c) { case1:printf("旧编号是%s,",wk[i].num);input_num(i,i-1);break;case2:printf("旧姓名是%s,请输入新姓名:",wk[i].name);scanf("%s",wk[i].name);break;case3:printf("旧性别是%s,请输入新性别:",wk[i].sex);scanf("%1s",wk[i].sex);break;case4:printf("旧年纪是%s,请输入新年纪:",wk[i].age);scanf("%s",wk[i].age);break;case5:printf("旧职务是%s,请输入新职务:",wk[i].zhiwu);scanf("%s",wk[i].zhiwu);break;case6:printf("旧职称是%s,请输入新职称:",wk[i].zhicheng);scanf("%s",wk[i].zhicheng);break;case7:printf("旧政治面貌是%s,请输入新政治面貌:",wk[i].zhengzhi);scanf("%s",wk[i].zhengzhi);break;case8:printf("旧学历是%s,请输入新学历:",wk[i].xueli);scanf("%s",wk[i].xueli);break;case9:printf("旧任职时间是%s,请输入新任职时间:",wk[i].renzhisj);scanf("%s",wk[i].renzhisj);break;case10:printf("旧来院时间是%s,请输入新来院时间:",wk[i].laiyansj);scanf("%s",wk[i].laiyansj);break;case11:printf("旧在职类别是%s,请输入新在职类别:",wk[i].leibie);scanf("%s",wk[i].leibie);break; } printf("now:\n\n");printf_face();printf_one(i);printf("\n确定修改吗?\n\n\t\t1\t是\n\t\t2\t重新修改\n\t\t3\t返回并不保留\n\t\t\t[]\b\b\b");scanf("%d",&w1); }while(w1==2); return(w1);}(4)删除模块:〈1〉[需求分析]:该模块运行方法和修改模块类似,首先分屏显示全部些人员统计,显示完全部统计后,由用户输入要删除人员号码,依据号码查找对应统计并将结果显示出来,经用户确定后删除,删除方法是将文件中数据读入内存,赋给对应结构体,并将结构体数组中将删除后面数据赋给前一个结构体,然后将对应数据写入文件并保留;〈2〉步骤图:YY〈3〉程序;intdel(){ charc;inti,j,n,k,m,w0,w1=0,w2=0;FILE*fpt;/*fpt?*/n=load();do { k=-1;printf_face();/*调用*/for(i=0;i<=n;i++)printf_one(i);do { printf("\n\n请输入您想要删除人员编号!\n\t\tNO.[]\b\b");scanf("%s",s.num);for(i=0;i<=n;i++)if(strcmp(s.num,wk[i].num)==0); { k=i;s=wk[i]; }if(k==-1)printf("\n\n对不起,这个编号不存在!请重新输入"); }while(k==-1);printf("确定要删除吗?\t请输入y或n\n\t\t[]\b\b"); scanf("%1s",&c); if(c=='y') { for(j=i;j<=n;j++)wk[j]=wk[j+1];w1=1; } if(c=='n')menu(); else { printf("\n错误,请输入y或n\n"); menu(); }if(w1==1) { printf("\n删除成功!\n\n您要继续删除吗?\n\n\t\t1\t是\n\n\t\t2\t保留并返回\n\t[]\b\b");scanf("%d",&w0);w2=1; } if(w0==2&&w2==1) { fpt=fopen("worker00.txt","w");for(m=0;m<=n;m++)fprintf(fpt,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[m].num,wk[m].name,wk[m].sex,wk[m].age,wk[m].zhiwu,wk[m].zhicheng,wk[m].zhengzhi,wk[m].xueli,wk[m].renzhisj,wk[m].laiyansj,wk[m].leibie);fclose(fpt); } } while(w0==1);menu();}(5)、按号码搜索:〈1〉[需求分析]:该模块功效是根据输入人员号码查找对应统计,并将其显示,查找成功以后,增加删除和修改等功效,其中删除和修改功效能够经过调用对应函数来实现。〈2〉步骤图;〈3〉、程序;snum(){ FILE*fp;inti,k,w1=1,w2,w3,n;n=load();do { do { k=-1;printf("\n\n请输入您要查询编号!\n\t\tnumber:[]\b\b\b\b\b");scanf("%s",s.num);for(i=0;i<=n;i++)if(strcmp(s.num,wk[i].num)==0) { k=i;printf_one(k); break; }if(k==-1) { printf("\n\n您查询编号不存在!请重新输入");printf("\n\n您要继续查询吗?\n\t\t1\t继续\n\t\t2\t返回\n\t\t[]\b\b");scanf("%d",&w1);if(w1==2) { menu(); break; } if(w1!=1&&w1!=2) { printf("\n对不起,请输入1或2\n");printf("\n请重新输入\n"); } } }while(k==-1&&w1!=2);if(k!=-1) { w3=0; printf("\n要继续查询吗?\n\t\t1\t继续\n\t\t2\t返回菜单\n\t\t[]\b\b"); scanf("%d",&w3); if(w3==2) { menu(); break; } if(w3!=1&&w3!=2) { printf("\n对不起,请输入1或2\n"); search(); break; } } }while(k!=-1&&w3==1);}(6)按姓名搜索。该模块结构和按号码查询结构基础相同;浏览模块;需求分析:该模块功效是显示全部保留在文件中统计,考虑到统计较多,采取分屏显示方法;〈2〉、步骤图;〈3〉程序:browse(){ inti,j,n;n=load();/*调load函数将全部数据调入内存*/printf_face();/*调用表头函数*/for(i=0;i<=n;i++)printf_one(i);printf("\t总计有%d个工作人员\n",n+1);printf("按任意键继续...");getch();menu();}(9)、排序模块;〈1〉、[需求分析];该模块功效是要求将统计根据年纪或来院时间进行排序,总体结构是先用n=load()函数将文件中数据调入内存,然后根据选择法排序,并将结果显示出来,然后将排序后结果保留。步骤图;程序;order(){ inti,j,k,n,p;FILE*fp;n=load();printf("请选择您要排序项\n\t\t1\t年纪\n\t\t2\t来院时间\n\n");scanf("%d",&p);if(p==1) { for(i=0;i<=n-1;i++) { for(j=i+1;j<=n;j++){ if(strcmp(wk[i].age,wk[j].age)<0) { s=wk[i];wk[i]=wk[j];wk[j]=s; }} } } for(k=0;k<=n;k++)printf_one(k); if(p==2) {

温馨提示

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

评论

0/150

提交评论