c语言课程设计人事管理系统.doc

上传人:h**** 文档编号:100841 上传时间:2018-07-06 格式:DOC 页数:34 大小:1.01MB
下载 相关 举报
c语言课程设计人事管理系统.doc_第1页
第1页 / 共34页
c语言课程设计人事管理系统.doc_第2页
第2页 / 共34页
c语言课程设计人事管理系统.doc_第3页
第3页 / 共34页
c语言课程设计人事管理系统.doc_第4页
第4页 / 共34页
c语言课程设计人事管理系统.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、 本科生 C 语言课程设计论文 课程名 称 C 语言课程设计 教师姓 名 朱莉 本科生姓名 李百蝉 本科生学号 20111002986 本科生专业 地质学 所在院 系 地球科学学院 日 期 : 2013 年 12 月 26 日 目 录 目 录 . 2 1.课程论文题目 . 3 2.程序设计思路 . 3 3.功能模块图 . 4 4.程序代码 . 4 5.程序运行结果 . 30 6.课程设计总结 . 32 7.致谢 . 32 8.参考文献 . 32 一 课程论文题目 某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年

2、龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。 ( 1) 添加删除功 能:能根据学院人事的变动情况,添加删除记录; ( 2) 查询功能:能根据编号和姓名进行查询; ( 3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储; ( 4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上),统计要求同时显示被统计者的信息; ( 5) 排序功能:按照年龄、来院时间进行排序; ( 6) 保存功能:能对输入的数据进行相应的存储; 二 程序设计思路 根据题目要求,人事信息是存放在文件中

3、的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑 ,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将 M 定为 2000,也即最多可储存的职工人数为 2000; 根据以上需求分析,将程序分成以下几个模块: 1.添加和删除 *添加人员信息并保存( 1) *按名 称和编号查询与删除记录并保存( 2) 2.查询与编辑 *按名

4、称和编号查询 *重新编辑信息并保存 3. 统计 *统计在职人数 *统计党员人数 *统计女工人数 *统计硕士以上学历和副教授以上职称人数 *将统计得到的信息保存在 worker3.txt 文件中 4. 排序 *按年龄进行排序 (1) *按来院时间进行排序 (2) 三 功能模块图 四 程序代码 1、 主函数: 主函数设计的比较简单,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图如下 程序 开始 显示一系列功能 根据 n 的值调用个功能模块函数 结束 输入 n,判断是否是 04 N Y main() int n,w; do puts(“tt* 高校人事管理*nnn“);

5、 puts(“tttt 1.添加或删除 n“); puts(“tttt 2.查询与编辑 n“); puts(“tttt 3.统计 n“); puts(“tttt 4.排序 n“); puts(“tttt 5.退出 n“); puts(“tt*n“); printf(“选择你要的服务 (1-5): bb“); scanf(“%d“, if(n5) w=1; getchar(); else w=0; while(w=1); switch(n) case 1:retify();main();break; case 2:sear_edit();main();break; case 3:stat();m

6、ain();break; case 4:row();main();break; case 5:exit(0);break; struct worker int num; char name20; char sex10; int old; char zhicheng20; char zhiwei20; char mianmao20; char xueli20; int come_time; int work_time; int leibie; worN; 1.添加与删除模块,此模块有( 1),( 2)两个模块构成。 void retify() int n,w; do puts(“tt*删除或添加

7、人员的信息 *nnnnn“); puts(“tttt 1.添加 “); puts(“tttt 2.删除 “); printf(“请选择服务 (1-2): bb“); scanf(“%d“, if(n2) w=1; getchar(); else w=0; while(w=1); switch(n) case 1:tianjia();break; case 2:shanchu();break; ( 1) .添加模块 : 开始 输入你要添加人的信息并且显示在屏幕中 对原文件进行添加并保存 void tianjia() FILE *fp; int i,number; struct worker wo

8、r_tN; printf(“您要添加的人的人数: “); scanf(“%d“, printf(“输入添加人的信息: n“); for(i=0;inumber;i+) printf(“编号: n“);scanf(“%d“, printf(“姓名: n“); scanf(“%s“,wor_ti.name); printf(“性别: n“);scanf(“%s“,wor_ti.sex); printf(“年龄: n“);scanf(“%d“, printf(“职称: n“);scanf(“%s“,wor_ti.zhicheng); printf(“职位: n“);scanf(“%s“,wor_ti

9、.zhiwei); printf(“政治面貌: n“);scanf(“%s“,wor_ti.mianmao); printf(“学历: n“);scanf(“%s“,wor_ti.xueli); printf(“来院时间: n“);scanf(“%d“, printf(“在院工作时间: n“);scanf(“%d“, printf(“在职与否:在职请按 1,不在职请按 2n“);scanf(“%d“, printf(“您刚才输入的人的信息 n“); printf(“%d %s %s %d %s %s %s %s %d %d %d n“,wor_ti.num,wor_ti.name,wor_ti

10、.sex,wor_ti.old,wor_ti.zhicheng,wor_ti.zhiwei,wor_ti.mianmao,wor_ti.xueli,wor_e_time,wor_ti.work_time,wor_ti.leibie); if(fp=fopen(“D:txtworker.txt“,“a+“)=NULL) printf(“nCannot open filen“); exit(0); for(i=0;inumber;i+) fprintf(fp,“n%d %s %s %d %s %s %s %s %d %d %d“,wor_ti.num,wor_ti.name,wor_ti.sex,

11、wor_ti.old,wor_ti.zhicheng,wor_ti.zhiwei,wor_ti.mianmao,wor_ti.xueli,wor_e_time,wor_ti.work_time,wor_ti.leibie); fclose(fp); ( 2) .删除模块 该模块的功能是根据编号和姓名先查询出该人的信息,然后从原文件中删除该人的信息。流程图如下, 程序 void shanchu() FILE *fp,*fp1; int i,number,k,j,m; struct worker worker1M,worker2M; int aN; char bN20; printf(“您要删除的

12、人的人数: n“); scanf(“%d“, for(i=0;inumber;i+) printf(“输入删除人的信息的编号和姓名: n“); printf(“输入删除人的编号: n“);scanf(“%d“, printf(“输入删除人的姓名: n“);scanf(“%s“,bi); printf(“您刚才输入的人的信息的编号和姓名: n“); printf(“%d %sn“,ai,bi); if(fp=fopen(“worker.txt“,“r“)=NULL) printf(“nCannot open filen“); getch(); exit(0); for(i=0;!feof(fp)

13、;i+) 开始 输入要删除记录的编号和姓名 该人存在与否? 显示:该人在? 删除原文件中该人的信息并且保存 Y N fscanf(fp,“%d %s %s %d %s %s %s %s %d %d %dn“, k=i; m=0; for(i=0;ik;i+) for(j=0;jnumber;j+) if(worker2i.num=aj|!strcmp(worker2i.name,bj)break; if(j=number)worker1m=worker2i,m+; printf(“输出公司更改后所有人员的信息: n 编号 姓名 性别 年龄 职称 职位 面貌 学历 来院时间 工作时间 在职与否

14、n“); if(fp1=fopen(“worker.txt“,“w“)=NULL) printf(“nCannot open filen“); getch(); exit(0); for(i=0;im;i+) printf(“ %d %s %s %d %s %s %s %s %d %d %dn“,worker1i.num,worker1i.name,worker1i.sex,worker1i.old,worker1i.zhicheng,worker1i.zhiwei,worker1i.mianmao,worker1i.xueli,e_time,worker1i.work_time,worker

15、1i.leibie); fprintf(fp1,“ %d %s %s %d %s %s %s %s %d %d %dn“,worker1i.num,worker1i.name,worker1i.sex,worker1i.old,worker1i.zhicheng,worker1i.zhiwei,worker1i.mianmao,worker1i.xueli,e_time,worker1i.work_time,worker1i.leibie); fclose(fp1); getch(); 2,查询和编辑功能 : 首先,输入你要查询的人的编号和姓名,电脑将显示出该人的信息,并提问你是否要对该人的信

16、息重新进行编辑,若选择了重新编辑的选项就重新输入该人的信息,此时将显示该人的信息并且对原文件进行修改和保存。 void sear_edit() FILE *fp,*fp1; struct worker wor_people ,worker1M; int i,k,m,n; printf(“你想查询谁? n“); printf(“输入 你想查询的人的编号和姓名 n“); printf(“输入你想查询的人的编号 n“);scanf(“%d“, printf(“输入你想查询的人的姓名 n“);scanf(“%s“,wor_people.name); if(fp=fopen(“worker.txt“,“r“)=0) printf(“nCannot open filen“);getch(); exit(0); for(i=0;!feof(fp);i+) fscanf(fp,“%d %s %s %d %s %s %s %s %d %d %d“,&worker1i.num,worker1i.name,wor开始 输入你要查询人的编号和姓名 显示 该人的信息 是否重新编辑该信息? 该人是否存在? 显示该人不存在 重新输入该人的信息 显示你刚才输入的信息,并且保存到原文件里

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。