![人事管理系统——C语言_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/18/546bc417-e3f8-46b3-950b-d4747043e34b/546bc417-e3f8-46b3-950b-d4747043e34b1.gif)
![人事管理系统——C语言_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/18/546bc417-e3f8-46b3-950b-d4747043e34b/546bc417-e3f8-46b3-950b-d4747043e34b2.gif)
![人事管理系统——C语言_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/18/546bc417-e3f8-46b3-950b-d4747043e34b/546bc417-e3f8-46b3-950b-d4747043e34b3.gif)
![人事管理系统——C语言_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-7/18/546bc417-e3f8-46b3-950b-d4747043e34b/546bc417-e3f8-46b3-950b-d4747043e34b4.gif)
![人事管理系统——C语言_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-7/18/546bc417-e3f8-46b3-950b-d4747043e34b/546bc417-e3f8-46b3-950b-d4747043e34b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人事管理管理系统要求某高校主要人员有:在职人员(行政人员、教师、一般员工) 、退休人员和临时 工。现在,需要存储这些人员的人事档案信息: 编号、姓名、性别、年龄、职务、 职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号 唯一,不能重复。( 1) 添加删除功能:能根据学院人事的变动情况,添加删除记录;( 2) 查询功能:能根据编号和姓名进行查询;( 3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储;( 4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工 人数、高学历高职称人数 (硕士学位以上或者副教授以上) ),统计要求同 时显示被统计者的信
2、息;( 5) 排序功能:按照年龄、来院时间进行排序;( 6) 保存功能:能对输入的数据进行相应的存储;一、需求分析:根据题目要求, 职工信息是存放在文件中的, 所以应该提供相应的文件的输入输 出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实 现相应的操作, 另外菜单式的选择方式选择程序的功能也是必须需的。 另外程序 中要求存储的模块, 采用的方式均为将原文件中的所有数据读入内存, 在内存中 处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写, 但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将 N 定 为 100,也即最多可储存的职工人数为
3、 100;二、总体设计:根据以上需求分析,将程序分成以下几个模块:1、新建档案信息;2、删除信息;3、追加信息;4、搜索查找信息(按姓名或者编号搜索) ;5、浏览全部信息;6、修改信息;7、信息排序;8、信息统计;三、详细设计;1、主函数:1需求分析:为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的很简单,只包含一个menu()函数,其余的全部功能都通过 menu()函数调用来实现, 并通过menu()函数的递归调用实现返回主界面的功能。mai n()函数定义如下:main()me nu();而menu()定义如下:2流程图:通过menuO函数的心 谨归调用实现重新a
4、 选择,void menu()int n,w1;doprintf(ntttt 菜t 单n);printf(ntt0t 新建档案信息 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);提示选择*/sea nf(%d,&n);if(n8)w1=1;getcha
5、r();else w1=0;while(w 1=1);于0到8*/*显示一系列功能并/*输入n并判断是否属switch( 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 的值调用各功能函数 */
6、2、各功能模块设计:(1)、新建档案信息模块:、数据结构; 看各个数据信息,编号、姓名、性别、年龄、 职务、职称、政治面貌、最高学历、 任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放, 每条记录对应一个人员的信息, 可以方便信息的管理; 而数据读进内存中时, 可 以以结构体的形式, 每一个结构体包含了一个人员的全部信息, 多的人员的信息 组成了一个结构体数组。定义如下:struct workerchar num11;char name10;char sex2;char age3;char zhiwu15;char zhicheng15;char zhengzhi15;ch
7、ar xueli15;char renzhisj8;char laiyansj8;char leibie15;wkN,s;其中N是宏定义形式定义的字符,临时定义为 100, wkN,为存放人员信息的结 构体数组,而 S 为临时的结构体,用来保存信息处理过程中的临时数据。2、流程图如下:3、程序:int build()int i,m, n,p;FILE *fp;if(fp=fope n(workerOO.txt,w)=NULL)prin tf(ca n not build filen);prin tf_back();/*输入用户要输入的学生的个数N*/printf(您要输入的人数是(0-%d)?
8、:,N);sea nf(%d,&m);n=m;for(i=0;i n;i+)printf(n请输入第%d个工作人员的信息n,i+1);input(i);/*从0到N调用输入函数 input*/for(p=O;p=i;p+)if(fpri ntf(fp,%st%st%1st%st%st%st%st%st%st%st%sn,wkp. nu m,wkp .n ame,wkp.sex,wkp.age,wkp.zhiwu,wkp.zhiche ng,wkp.zhe ngzhi,wkp.xueli,wkp.re nzhisj,wkp.laiya nsj,wkp.leibie)!=1) printf(can
9、not write the datann);/*将结构体数组中的数据写入文件*/fclose(fp);/* 关闭文件 */prin tf_back(); _(2)、追加模块:1需求分析该模块的功能是拥护需要增加新的员工记录,从键盘输入并逐条写入到原来的文 件中去,其中输入号码是要防止号码重复,重复时报告错误,重新输入。为方便 用户管理和查看,该模块采用的方式是用先把原来文件中的数据读入内存,保存在内存中,然后在内存中的数据后面增加新的数据,操作完成后用写的方式打开文件,用覆盖的方式写入。2流程图:3程序:int add()int i,m, n,p;FILE *fp;n=load();/*调用加
10、载函数load将文件中的数据读入内存*/if(n=-1)printf(n对不起,还没有档案,请新建一个档案n);menu();printf(您要追加的人数是(0-%d)?:bbb,N-n);sca nf(%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=
11、m+n;p+) fprintf(fp,%st%st%1st%st%st%st%st%st%st%st%sn,wkp.num,wkp.nam e,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 流程图修改模块流程图43程序;modify()int i,n ,k,p,w0=1,w1,w2=0;FILE *fp;n=load();dok=-1;prin tf_face();for(i=0;i=n ;i+) prin tf_on e(i);doprintf(nn请输入你要修改的信息的编号ntt编号:bb);sca nf(%s,s .nu m);for(i=0;i=n ;i+)if(strcmp(s.num,wki.num)=0) k=i;s=wki;if(k=
13、-1) printf(nn 没有找到您所需的信息 ! 请重新输入 !n); while(k=-1);printf_face();printf_one(k);w1=modify_data(k);if(w1=1)printf(n修改成功!nn要继续修改吗?nntt1t是nntt2t保存并返 回 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 职称 ntt
14、7t 政治面貌 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);break;case 2:printf( 旧 的 姓 名 是%s,请输入新的姓名:,wki. name);sca nf(%s,wki. name);break;case 3:printf( 旧 的 性 别 是%s,请输入新的性别:,wki.sex);sca nf(%1s,wki.sex);break;c
15、ase 4:printf( 旧 的 年 龄 是%s,请输入新的年龄:,wki.age);sca nf(%s,wki.age);break;case 5:printf( 旧 的 职 务 是%s,请输入新的职务:,wki.zhiwu);sca nf(%s,wki.zhiwu);break;case 6:printf( 旧 的 职 称 是%s,请输入新的职称:,wki.zhiche ng);sca nf(%s,wki.zhiche ng);break;case 7:printf( 旧 的 政 治 面 貌 是%s, 请输入新的政治面貌:,wki.zhe ngzhi);sca nf(%s,wki.zhe
16、 ngzhi);break;case 8:printf( 旧 的 学 历 是 %s, 请 输 入 新 的 学历:,wki.xueli);sca nf(%s,wki.xueli);break;case 9:printf( 旧 的 任 职 时 间 是 %s, 请 输 入 新 的 任 职 时 间:,wki.re nzhisj);sca nf(%s,wki.re nzhisj);break;case 10:printf( 旧 的 来 院 时 间 是%s, 请 输 入 新 的 来 院 时间:,wki.laiya nsj);sca nf(%s,wki.laiya nsj);break;case 11:pr
17、intf( 旧 的 在 职 类 别 是%s, 请 输 入 新 的 在 职 类别:,wki.leibie);sca nf(%s,wki.leibie);break;printf(now:nn);printf_face();printf_one(i);printf(n确定修改吗?nntt1t是ntt2t重新修改ntt3t返回并不保存ntttbbb);scanf(%d,&w1);while(w1=2);return(w1);(4)删除模块:1需求分析:该模块的运行方式与修改模块类似, 首先分屏显示所有人员的记录,显示完所有 的记录后,由用户输入要删除的人员的号码,根据号码查找相应的记录并将结果 显示
18、出来,经用户确认后删除,删除的方法是将文件中的数据读入内存, 赋给相 应的结构体,并将结构体数组中将删除的后面的数据赋给前一个结构体,然后将相应数据写入文件并保存;2流程图:删除记录模块流程图3程序;int del()char c;int i,j,n ,k,m,w0,w1=0,w2=0;FILE *fpt;/*fpt?*/n=load();dok=-1;prin tf_face();/* 调用 */for(i=0;i=n ;i+)prin tf_on e(i);doprintf(nn请输入您想要删除的人员的编号!nttNO. bb); sea nf(%s,s .nu m);for(i=0;i=
19、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();else printf(n 错误 ,请输入 y 或者 nn); menu(); if(w1=1)printf(n删除成功!nn您要继续删除吗?nntt1t是nntt2t保存并 返回 ntbb);sc
20、anf(%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.na me,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 需求分析 :该模块的功能
21、是按照输入的人员的号码查找对应的记录,并将其显示,查找 成功以后,增加删除和修改等功能,其中删除和修改功能可以通过调用相应 的函数来实现。2流程图;按号码查询荷程图+3、程序;snum()FILE *fp;int i,k,w1=1,w2,w3,n;n=load();dodok=-1;printf(nn 请输入您要查询的编号!nttnumber: bbbbb); sca nf(%s,s .nu m);for(i=0;i=n ;i+)if(strcmp(s.num,wki.num)=0)k=i; printf_one(k);break; if(k=-1)printf(nn 您查询的编号不存在 !
22、请重新输入 );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!=-1)w3=0;printf(n 要继续查询吗 ?ntt1t 继续 ntt2t 返回菜单 ntt bb); scanf(%d,&w3);if(w3=2)menu();break; if(w3!=1&w3!=2)printf(n 对
23、不起 ,请输入 1 或 2 n);search();break; while(k!=-1&w3=1); (6)按姓名搜索。 该模块的结构与按号码查询的结构基本相同;(7)浏览模块;1需求分析:该模块的功能是显示所有保存在文件中的记录,考虑到记录较多,采用分屏 显示的方式;2、流程图;浏览模块流程图p3程序:browse()int i,j, n;n=load();/*调load函数将所有的数据调入内存*/printf_face();/*调用表头函数*/for(i=0;i=n ;i+)prin tf_on e(i);printf(t总计有%d个工作人员n,n+1);printf(按任意键继续.);
24、getch();menu();(9)、排序模块;1、需求分析;该模块的功能是要求将记录按照年龄或者来院时间进行排序,总体结构是先用 n=load ()函数将文件中的数据调入内存,然后按照选择法排序,并将结果显示 出来,然后将排序后的结果保存。2流程图;排序模块谥程圏3程序;order()int i,j,k, n,p;FILE *fp;n=load();printf(请选择您要排序的项ntt1t年龄ntt2t来院时间nn); sea nf(%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)O)s=wki;wki=wkj;wkj=s;for(k=0;k=n ;k+) printf_on e(k);if(p=2)一for(i=0;i=n-1;i+)for(j=i+1;j=n ;j+)if(strcmp(wki.laiya nsj,wkj.laiya nsj)0)s=wki;wki=wkj;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代服务业的全球化进程与未来趋势预测报告
- 我们的节日端午节包粽子活动方案
- 生态城市规划中的公园绿地建设
- 现代物流技术创新开启智能化时代
- 客户满意度调查的解决方案
- 2023六年级数学上册 四 圆的周长和面积 1圆的周长 圆的周长公式的拓展应用说课稿 冀教版
- 14-2《变形记》(节选)(说课稿)-2024-2025学年高一语文下学期同步教学说课稿专辑(统编版必修下册)
- 11 屹立在世界的东方 第1课时 说课稿-2023-2024学年道德与法治五年级下册统编版001
- 2023二年级数学上册 五 测量长度 1用厘米作单位量长度第3课时 用厘米、分米作单位量长度的练习说课稿 西师大版
- Unit 5 Whose dog is it(说课稿)-2023-2024学年人教PEP版英语五年级下册
- 医生定期考核简易程序述职报告范文(10篇)
- 市政工程人员绩效考核制度
- 公园景区安全生产
- 安全创新创效
- 《中国糖尿病防治指南(2024版)》更新要点解读
- 初级创伤救治课件
- 《处理人际关系》课件
- TSGD7002-2023-压力管道元件型式试验规则
- 2022版义务教育英语课程标准整体解读课件
- 2024年实验小学大队委竞选笔试试题题库
- GB/T 44412-2024船舶与海上技术液化天然气燃料船舶加注规范
评论
0/150
提交评论