收藏 分销(赏)

人事综合管理系统C语言.doc

上传人:二*** 文档编号:4576716 上传时间:2024-09-30 格式:DOC 页数:29 大小:232.54KB
下载 相关 举报
人事综合管理系统C语言.doc_第1页
第1页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

2、进行排序;(6) 保留功效:能对输入数据进行对应存放;一、 需求分析:依据题目要求,职员信息是存放在文件中,所以应该提供对应文件输入输出功效,在程序中应该有添加删除,查询,编辑,统计,排序,保留等程序实现对应操作,另外菜单式选择方法选择程序功效也是必需需。另外程序中要求存放模块,采取方法均为将原文件中全部数据读入内存,在内存中处理以后以覆盖方法写入文件中重新储存,这么方法轻易了解、轻易编写,但当文件中数据量很大时,这种方法也存在一定难度,在本程序中将N定为100,也即最多可储存职员人数为100;二、 总体设计:依据以上需求分析,将程序分成以下多个模块:1、 新建档案信息;2、 删除信息;3、

3、追加信息;4、 搜索查找信息(按姓名或编号搜索);5、 浏览全部信息;6、 修改信息;7、 信息排序;8、 信息统计;三、 具体设计;1、 主函数:1需求分析:为使系统实施完每部分功效后能够方便回到系统主界面,main()函数设计很简单,只包含一个menu()函数,其它全部功效全部经过menu()函数调用来实现,并经过menu()函数递归调用实现返回主界面功效。main()函数定义以下:main() menu();而menu()定义以下:2步骤图:void menu()int n,w1; doprintf(ntttt菜t单n); printf(ntt0t新建档案信息nn); printf(tt

4、1t删除信息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*/ switch(n)case 0:build();br

5、eak; 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 leibie15; wkN,s;其中N是宏定义形式定义字符,临时定义为100

7、,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个工作人员信息n,i+1); input(i); /*从0到N调用输入函数input

8、*/ 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); /*关闭文件*/ printf_back();(2)、追加模块:1需求分析该模块功效是拥护需要

9、增加新职员统计,从键盘输入并逐条写入到原来文件中去,其中输入号码是要预防号码反复,反复时汇报错误,重新输入。为方便用户管理和查看,该模块采取方法是用先把原来文件中数据读入内存,保留在内存中,然后在内存中数据后面增加新数据,操作完成后用写方法打开文件,用覆盖方法写入。2步骤图:3程序:int add() int i,m,n,p; FILE *fp; n=load(); /*调用加载函数load将文件中数据读入内存*/ if(n=-1) printf(n对不起,还没有档案,请新建一个档案n);menu(); printf(您要追加人数是(0-%d)?: bbb,N-n); scanf(%d,&m)

10、; /*输入要追加人员个数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%st%sn,wkp.num,wkp.name,wkp.sex,wkp.age,wkp.zhiwu,wkp. zhiche

11、ng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie); /*从0到k以覆盖方法写入文件并保留*/ fclose(fp); printf_back(); /*关闭文件*/(3)修改模块:1 需求分析:该模块功效是显示全部信息,考虑到统计较多,采取分屏显示,显示完全部统计后,由用户输入需要修改人员号码,查找成功后,显示查找结果,并问询拥护修改人员哪部分统计,依据用户选择修改对应信息,然后保留修改后结果;2 步骤图3 程序;modify()int i,n,k,p,w0=1,w1,w2=0; FILE *fp; n=load()

12、; dok=-1; printf_face(); for(i=0;i=n;i+) printf_one(i);doprintf(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();printf_one(k); w1=modify_data(k); if(w1=1)printf(n修改成功!nn要继续修改吗?nntt1t是nntt2

13、t保留并返回nt bb); scanf(%d,&w0); w2=1; elsew0=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,&c); if(c11|c11|c1); doswitch(c)case 1:printf(旧编号是 %s,wki.num);input_num(i,i-1);br

14、eak; 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:printf(旧职务是 %s,请输入新职务:,wki.zhiwu);scanf(%s,wki.zhiwu);break; case 6:printf(旧职称是 %s,请输入新职称:,wk

15、i.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(旧任职时间是 %s,请输入新任职时间:,wki.renzhisj);scanf(%s,wki.renzhisj);break; case 10:printf(旧来院时间是 %s,请输入新来院时间:

16、,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重新修改ntt3t返回并不保留nttt bbb); scanf(%d,&w1);while(w1=2);return(w1);(4)删除模块:1需求分析:该模块运行方法和修改模块类似,首先分屏显示全部些人员统计,显示完

17、全部统计后,由用户输入要删除人员号码,依据号码查找对应统计并将结果显示出来,经用户确定后删除,删除方法是将文件中数据读入内存,赋给对应结构体,并将结构体数组中将删除后面数据赋给前一个结构体,然后将对应数据写入文件并保留;2步骤图:Y3程序;int del()char c; int i,j,n,k,m,w0,w1=0,w2=0; FILE *fpt; /*fpt?*/ n=load(); dok=-1; printf_face(); /*调用*/ for(i=0;i=n;i+) printf_one(i); doprintf(nn请输入您想要删除人员编号!nttNO. bb); scanf(%s

18、,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(j=i;j=n;j+) wkj=wkj+1; w1=1;if(c=n) menu();elseprintf(n错误,请输入y或nn);menu(); if(w1=1)printf(n删除成功!nn您要继续删除吗?nntt1t是nntt2t保留并返回nt

19、bb); 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.zhiwu,wkm. zhicheng,wkm.zhengzhi,wkm.xueli,wkm.renzhisj,wkm.laiyansj,wkm.leibie); fclose(fpt);while(w0=1); menu();(5)、按号码搜索:1需求分析:该模块功效

20、是根据输入人员号码查找对应统计,并将其显示,查找成功以后,增加删除和修改等功效,其中删除和修改功效能够经过调用对应函数来实现。2步骤图;3、程序;snum() FILE *fp; int i,k,w1=1,w2,w3,n; n=load(); dodo k=-1; printf(nn请输入您要查询编号!nttnumber: 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(n

21、n您要继续查询吗?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!=-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

22、(k!=-1&w3=1);(6)按姓名搜索。该模块结构和按号码查询结构基础相同;(7) 浏览模块;1 需求分析:该模块功效是显示全部保留在文件中统计,考虑到统计较多,采取分屏显示方法;2、步骤图;3程序:browse()int i,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、需求分析;该模块功效是要求将统计根据年纪或

23、来院时间进行排序,总体结构是先用n=load()函数将文件中数据调入内存,然后根据选择法排序,并将结果显示出来,然后将排序后结果保留。2 步骤图;3 程序;order()int i,j,k,n,p; FILE *fp; n=load(); printf(请选择您要排序项ntt1t年纪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)

24、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; prin

25、tf(请选择您要统计项目?ntt1t在职人数ntt2t党员人数ntt3t女工人数ntt4t高学历人员统计ntt5texitnntt bb); scanf(%d,&p); switch(p)case 1:numduty();break; case 2:numpm();break; case 3:numwm();break; case 4:hiedcation();break; case 5:menu();break; default:printf(错误,请输入一个14之间数字!); data();printf(n您要继续统计吗?继续请按 1 ,返回菜单请按 2 n);scanf(%d,&w);if(w=1) data();if(w=2) menu();if(w!=1&w!=2) menu();该过程中调用了四个函数,numduty()(统计在职人员人数),numpm()(统计党员人数),numwm()(统计女工人数),hieduction()(统计高学历高职称人数),函数具体定义见后面附录源程序。并经过在四个函数中调用menu()函数返回到主菜单。上机操作:1:数据源2:编译,连接和运行下面是各个模块运行结果界面图:1、 主菜单函数界面:2、输入模块:3、删除模块:4、浏览模块;5、编辑模块:6、统计模块:7、排序模块:8、搜索模块

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服