ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:186.48KB ,
资源ID:25469302      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25469302.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人事管理系统C语言.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

人事管理系统C语言.docx

1、人事管理系统C语言人事管理管理系统要求某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上),统计要求同时显示被统计者的信息;(5)排序功能

2、:按照年龄、来院时间进行排序;(6)保存功能:能对输入的数据进行相应的存储;一、需求分析:根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,也即最多可储存的职工人数为100;二、总体设计:根据以上需求分析,将程序分成以下几

3、个模块:1、新建档案信息;2、删除信息;3、追加信息;4、搜索查找信息(按姓名或者编号搜索);5、浏览全部信息;6、修改信息;7、信息排序;8、信息统计;三、详细设计;1、主函数:1需求分析:为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的很简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。main()函数定义如下:main() menu();而menu()定义如下:2流程图:void menu() int n,w1; do printf(ntttt菜t单n); printf(ntt

4、0t新建档案信息nn); printf(tt1t删除信息nn); printf(tt2t追加信息nn); printf(tt3t搜索查找信息nn); printf(tt4t浏览所有信息nn); printf(tt5t修改信息nn); printf(tt6t信息排序nn); printf(tt7t信息统计nn); printf(tt8t离开nn); printf(tt请选择您要进行的操作 bb); /*显示一系列功能并提示选择*/ scanf(%d,&n); if(n8) w1=1; getchar(); else w1=0; while(w1=1); /*输入n并判断是否属于0到8*/ swi

5、tch(n) case 0:build();break; case 1:del();break; case 2:add();break; case 3:search();break; case 4:browse();break; case 5:modify();break; case 6:order();break; case 7:data();break; case 8:exit(0);default:printf(输入错误!请重新输入);menu(); /*根据n的值调用各功能函数*/ 2、各功能模块设计:(1)、新建档案信息模块:、数据结构;看各个数据信息,编号、姓名、性别、年龄、职务、

6、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进内存中时,可以以结构体的形式,每一个结构体包含了一个人员的全部信息,多的人员的信息组成了一个结构体数组。定义如下:struct worker char num11; char name10; char sex2; char age3; char zhiwu15; char zhicheng15; char zhengzhi15; char xueli15; char renzhisj8; char laiyansj8; char leibie

7、15; wkN,s;其中N是宏定义形式定义的字符,临时定义为100,wkN,为存放人员信息的结构体数组,而S为临时的结构体,用来保存信息处理过程中的临时数据。2、流程图如下:3、程序:int build() int i,m,n,p; FILE *fp; if(fp=fopen(worker00.txt,w)=NULL) printf(can not build filen); printf_back(); /*输入用户要输入的学生的个数N*/ printf(您要输入的人数是(0-%d)?:,N); scanf(%d,&m); n=m; for(i=0;in;i+) printf(n请输入第%d

8、个工作人员的信息n,i+1); input(i); /*从0到N调用输入函数input*/ for(p=0;p=i;p+) if(fprintf(fp,%st%st%1st%st%st%st%st%st%st%st%sn,wkp.num,wkp.name,wkp.sex,wkp.age,wkp.zhiwu,wkp. zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie)!=1) printf(cannot write the datann); /*将结构体数组中的数据写入文件*/ fclose(fp); /*关

9、闭文件*/ printf_back();(2)、追加模块:1需求分析该模块的功能是拥护需要增加新的员工记录,从键盘输入并逐条写入到原来的文件中去,其中输入号码是要防止号码重复,重复时报告错误,重新输入。为方便用户管理和查看,该模块采用的方式是用先把原来文件中的数据读入内存,保存在内存中,然后在内存中的数据后面增加新的数据,操作完成后用写的方式打开文件,用覆盖的方式写入。2流程图:3程序:int add() int i,m,n,p; FILE *fp; n=load(); /*调用加载函数load将文件中的数据读入内存*/ if(n=-1) printf(n对不起,还没有档案,请新建一个档案n)

10、; menu(); printf(您要追加的人数是(0-%d)?: bbb,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(can not open filen); printf_back(); /*调用*/ for(p=n+1;p=m+n;p+) fprintf(fp,%st%st%1st%st%st%st%st%st%st

11、%st%sn,wkp.num,wkp.name,wkp.sex,wkp.age,wkp.zhiwu,wkp. zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie); /*从0到k以覆盖的方式写入文件并保存*/ fclose(fp); printf_back(); /*关闭文件*/(3)修改模块:1需求分析:该模块的功能是显示所有信息,考虑到记录较多,采用分屏显示,显示完所有的记录后,由用户输入需要修改的人员的号码,查找成功后,显示查找结果,并询问拥护修改人员的哪部分记录,根据用户选择修改相应的信息,然后保存修

12、改后的结果;2流程图3程序;modify() int i,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(nn请输入你要修改的信息的编号ntt编号: bb); scanf(%s,s.num); for(i=0;i=n;i+) if(strcmp(s.num,wki.num)=0) k=i; s=wki; if(k=-1) printf(nn没有找到您所需的信息 ! 请重新输入!n); while(k=-1); printf_face(

13、); printf_one(k); w1=modify_data(k); if(w1=1) printf(n修改成功!nn要继续修改吗?nntt1t是nntt2t保存并返回nt bb); scanf(%d,&w0); w2=1; else w0=0; if(w2=1) wkk=s; if(w0!=1&w2=1) fp=fopen(worker00.txt,w); for(p=0;pnntt1t编号ntt2t姓名ntt3t性别ntt4t年龄ntt5t职务ntt6t职称ntt7t政治面貌ntt8t学历ntt9t任职时间ntt10t来院时间ntt11t在职类别nnttt bb); scanf(%d,

14、&c); if(c11|c11|c1); do switch(c) case 1:printf(旧的编号是 %s,wki.num);input_num(i,i-1);break; case 2:printf(旧的姓名是 %s,请输入新的姓名:,wki.name);scanf(%s,wki.name);break; case 3:printf(旧的性别是 %s,请输入新的性别:,wki.sex);scanf(%1s,wki.sex);break; case 4:printf(旧的年龄是 %s,请输入新的年龄:,wki.age);scanf(%s,wki.age);break; case 5:pr

15、intf(旧的职务是 %s,请输入新的职务:,wki.zhiwu);scanf(%s,wki.zhiwu);break; case 6:printf(旧的职称是 %s,请输入新的职称:,wki.zhicheng);scanf(%s,wki.zhicheng);break; case 7:printf(旧的政治面貌是 %s,请输入新的政治面貌:,wki.zhengzhi);scanf(%s,wki.zhengzhi);break; case 8:printf(旧的学历是 %s,请输入新的学历:,wki.xueli);scanf(%s,wki.xueli);break; case 9:printf

16、(旧的任职时间是 %s,请输入新的任职时间:,wki.renzhisj);scanf(%s,wki.renzhisj);break; case 10:printf(旧的来院时间是 %s,请输入新的来院时间:,wki.laiyansj);scanf(%s,wki.laiyansj);break; case 11:printf(旧的在职类别是 %s,请输入新的在职类别:,wki.leibie);scanf(%s,wki.leibie);break; printf(now:nn); printf_face(); printf_one(i); printf(n确定修改吗?nntt1t是ntt2t重新修

17、改ntt3t返回并不保存nttt bbb); scanf(%d,&w1); while(w1=2); return(w1);(4)删除模块:1需求分析:该模块的运行方式与修改模块类似,首先分屏显示所有人员的记录,显示完所有的记录后,由用户输入要删除的人员的号码,根据号码查找相应的记录并将结果显示出来,经用户确认后删除,删除的方法是将文件中的数据读入内存,赋给相应的结构体,并将结构体数组中将删除的后面的数据赋给前一个结构体,然后将相应数据写入文件并保存;2流程图:Y3程序;int del() char c; int i,j,n,k,m,w0,w1=0,w2=0; FILE *fpt; /*fpt

18、?*/ n=load(); do k=-1; printf_face(); /*调用*/ for(i=0;i=n;i+) printf_one(i); do printf(nn请输入您想要删除的人员的编号!nttNO. bb); scanf(%s,s.num); for(i=0;i=n;i+) if(strcmp(s.num,wki.num)=0); k=i; s=wki; if(k=-1) printf(nn对不起,这个编号不存在! 请重新输入); while(k=-1); printf(确定要删除吗? t请输入y或者nntt bb); scanf(%1s,&c); if(c=y) for(

19、j=i;j=n;j+) wkj=wkj+1; w1=1; if(c=n) menu(); else printf(n错误,请输入y或者nn); menu(); if(w1=1) printf(n删除成功!nn您要继续删除吗?nntt1t是nntt2t保存并返回ntbb); scanf(%d,&w0); w2=1; if(w0=2&w2=1) fpt=fopen(worker00.txt,w); for(m=0;m=n;m+) fprintf(fpt,%st%st%1st%st%st%st%st%st%st%st%sn,wkm.num,wkm.name,wkm.sex,wkm.age,wkm.z

20、hiwu,wkm. zhicheng,wkm.zhengzhi,wkm.xueli,wkm.renzhisj,wkm.laiyansj,wkm.leibie); fclose(fpt); while(w0=1); menu();(5)、按号码搜索:1需求分析:该模块的功能是按照输入的人员的号码查找对应的记录,并将其显示,查找成功以后,增加删除和修改等功能,其中删除和修改功能可以通过调用相应的函数来实现。2流程图;3、程序;snum() FILE *fp; int i,k,w1=1,w2,w3,n; n=load(); do do k=-1; printf(nn请输入您要查询的编号!nttnum

21、ber: bbbbb); scanf(%s,s.num); for(i=0;i=n;i+) if(strcmp(s.num,wki.num)=0) k=i; printf_one(k); break; if(k=-1) printf(nn您查询的编号不存在!请重新输入); printf(nn您要继续查询吗?ntt1t继续ntt2t返回ntt bb); 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!=

22、-1) w3=0; printf(n要继续查询吗?ntt1t继续ntt2t返回菜单ntt bb); 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)按姓名搜索。该模块的结构与按号码查询的结构基本相同;(7)浏览模块;1需求分析:该模块的功能是显示所有保存在文件中的记录,考虑到记录较多,采用分屏显示的方式;2、流程图;3程序:browse() int i,j,n; n=load(); /*调load函数将所有

23、的数据调入内存*/ printf_face(); /*调用表头函数*/ for(i=0;i=n;i+) printf_one(i); printf(t总计有%d个工作人员n,n+1); printf(按任意键继续.); getch(); menu();(9)、排序模块;1、需求分析;该模块的功能是要求将记录按照年龄或者来院时间进行排序,总体结构是先用n=load()函数将文件中的数据调入内存,然后按照选择法排序,并将结果显示出来,然后将排序后的结果保存。2流程图;3程序;order() int i,j,k,n,p; FILE *fp; n=load(); printf(请选择您要排序的项ntt

24、1t年龄ntt2t来院时间nn); scanf(%d,&p); if(p=1) for(i=0;i=n-1;i+) for(j=i+1;j=n;j+) if(strcmp(wki.age,wkj.age)0) s=wki; wki=wkj; wkj=s; for(k=0;k=n;k+) printf_one(k); if(p=2) for(i=0;i=n-1;i+) for(j=i+1;j=n;j+) if(strcmp(wki.laiyansj,wkj.laiyansj)0) s=wki; wki=wkj; wkj=s; for(k=0;k=n;k+) printf_one(k); printf(n按任意键返回菜单:n); scanf(%s,&p); if(!p|p) menu();(10)、统计模块1、需求分析;该模块的功能是按照用户的要求统计出满足符合条件的所有记录的个数,并将满足条件的记录显示出来。该模块没有涉及到文件的保存,所以将文件用只读的方式打开,可以防止操作过程中数据的丢失。2流程图;3、程序data() int p,w; printf(请选择您要统计的项目?ntt1t在职人数ntt2t党员人数ntt3t女工人数ntt4t高学历人员统计ntt5texitnntt bb); scanf(%d,&p); swit

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1