人事档案管理系统_c语言.docx

上传人:牧羊曲112 文档编号:1896616 上传时间:2022-12-24 格式:DOCX 页数:26 大小:197.99KB
返回 下载 相关 举报
人事档案管理系统_c语言.docx_第1页
第1页 / 共26页
人事档案管理系统_c语言.docx_第2页
第2页 / 共26页
人事档案管理系统_c语言.docx_第3页
第3页 / 共26页
人事档案管理系统_c语言.docx_第4页
第4页 / 共26页
人事档案管理系统_c语言.docx_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《人事档案管理系统_c语言.docx》由会员分享,可在线阅读,更多相关《人事档案管理系统_c语言.docx(26页珍藏版)》请在三一办公上搜索。

1、C语言程序设计课程设计人事档案管理系统指导教师:李耀成设 计 者:刘玉成、孙涛、马新涌、郭恒阳 专业班级:机电081设计时间:2009年11月人事档案管理系统一、需求分析电脑已经深入到我们日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。 随着企事业单位的发展,人员会越来越多,少则几十人、

2、多则上万人。例如一个企业分很多部门,每个部门又分为许多科或室等,而其下又分为各级领导和员工。用笔和纸传统的手工管理档案,这中管理方式存在着不易更新、不易存放、不安全、容易丢失、难以备份等重大缺陷,管理起来效率低下而且很可能造成管理上的混乱。而自己建立简单的电子文档对信息管理进行管理虽然克服了以上的缺点,但查询效率较低,特别是当数据量十分庞大时,劣势尤其明显。因此开发一个既可以存储信息,又可以进行更新、查询、管理等功能,同时价格又能为广大消费者接受的多功能电子人事信息管理系统就显得十分必要。 本实验的读者对象为研发中心领导和主管技术人员以及项目设计和开发人员。 二、系统框图 输入i判断i输入人事

3、信息显示人事信息删除人事信息查询人事信息读取文件存储文件读取文件人事统计信息 性别统计人数规模入公司时间输入判断i开始关闭 2 三、任务分工 高玉峰负责:输入模块,显示模块,删除模块 。祝令瑞负责:存储模块 查询模块、读取模块统计模块、退出模块 。四、系统的软硬件环境1、硬件环境: CPU 2.4GHz 256M内存 80G硬盘。 2、软件环境:turboc2.0 UCDOS5.0 操作系统 WindowsXp。 五、设计分析人事档案管理系统功能:程序设计一般由两部分组成:算法和数据结构,合理地选择和实现一个数据结构和处理这些数据结构具有同样的重要性。在人事管理过程中,由于预计记录对于一个单位

4、的学生数或人事数来说太大,操作除了能够增加、删除、保存等外,更多的情况是查询,且能够实现快速查询。特别是当需要动态变化时利用链表,例如插入和删除数据等操作时,为方便插入和删除人事记录,通过数据的自动的移动数据,实现动态管理。本系统涉及的模块主要有:开始、系统管理、人事管理、信息查询等四大模块。(1) 人事管理主要包括:(编号、姓名、性别、年龄、出生日期、政治面貌、家庭住址、图片等)基本 内容的输入,删除,修改,查询(2) 系统管理主要包括:用户的注册,资料的修改等。(3) 信息查询主要包括:员工信息的查找、打印等。2 模块功能及操作步骤:各个模块功能及流程图 (1)record()系统将提示输

5、入人事姓名、性别、城市、街道、电话、邮编、进入公司的时间(*注意:按提示输入*),主要使用”scanf()”及”getchar()”语句。首先利用”malloc”函数在内存的动态存储器中开辟一个长度为”sizeof”长度的空间,以存放预定义的”*worker”指向的内容。并用”new”指向起始地址的指针。若不能执行,返回空指针.否则,利用链表执行输入功能。即:else 流程图 head=NULL输入new=headnew=thisnew=this-nextthis-next=thisisthis-next.=NULLhead=this申请内存记录(1) Y(2)listall()系统将显示文件

6、中存储的人事档案。此功能利用dowhile;语句。若”this”不指向空。该系统利用语句 doprintf(“n记录%d”,+i); printf(this);getchar(); this=this-next; 此外使用“printf()”语句完成显示功能系统。(流程图在7页)()del()系统将提示输入要删除人事的姓名。输入相应信息。系统将删除您所指定的信息。主要使用”strcmp()”及”printf()”等语句。本系统执行删除语句一条比较函数。即:if(strcmp(p-name,str)=0)break;应用链表的实行地址转换,以便执行查找人名的功能:if(p2)p1-next=p2

7、-next;free(p2);print (“n*请存盘*n”);显示 head=NULLhead=this输出thisthis-next=this this=NULL读取getchar();elseprintf(“没找到所须删除员工n”);getchar(); 流程图: 删除删除输入strhead=p1p1=p2p2=NULL 比较p-name与strp2=p1p2-next=p2p2=headhead-next=nextp2=NULL(3) Y N Y() search()系统将对您指定的信息进行查找。主要使用“strcmp()”“getchar()”等语句。该系统主要运行过程为:若头指针

8、不为空,则利用比较函数if(strcmp(p1-name,nsme)= =0)如果该语句成立,证明输入的信息已被查询到,如果语句(p1=NULL)成立,表示您查找的人不是本公司员工,按任意键可回到主程序执行区。(流程图在11页)() rfile()系统将显示您所要读取的信息。主要使用文件指针及“fopen”“fclose”语句。此模块我们系统的重要部分,相对来说较为复杂。开始时要用到”mallo”函数来开辟空间(与模块1中的原理相同),如果能打开目标文件,逐条读取,直到指针指向的下个地址为空,则表明读取完毕。执行此项功能的语句为: elsewhile(fread(p,sizeof(worker

9、),1,in)= =1) j+; printf(“n 记录n”,j); if(j= =1) head=p; p=p-next;if(p= =NULL)p=(worker*)malloc(sizeof(worker); p2=p; free(p); p2=NULL; fclose(in); printf(“n%d条文件读取完毕n”,j);if(j = =0)printf(“*磁盘无数据*n”);printf(“按任意键继续n”);getchar();(流程图在下页)head=p1 查询显示输入str head=NULLp1=NULL比较str与姓名p1-head=p1is输出(4) Y显示存储打

10、开文件P=NULL存 储p-next=p关闭文件P=NULL(5) Y Y() wfile()系统将自动保存您所要存储的信息。用到了”if”及”for”语句。如果该文件能打开,预将文件存储在1.out文件中,即:while(p)fwrite(p,sizeof(worker),1.out);/*将p以sizeof长度逐条存储在文件1.out中*/ n+;p =p-next;fclose(out);printf(“n文件的%d被写入。n”,n);printf(“按任意键继续”n); getchar; 流程图 p=NULL申请内存打开文件提取j+j=1p=nextp-next=pp=NULL申请内存

11、p-p2释放p关闭 读取(6) N N N() total()系统将统计您所输入的信息。这个模块是本组成员最满意的,此模块的执行程序极为简单,但是执行的功能确实非常齐全。本模块主要运用”if()else”的循环嵌套;就完成了性别统计、公司人员规模、入公司时间的三项功能。值得一提的是在执行性别统计与公司人员规模的执行语句后加上2个”getchar()”本小组成员在借鉴的同时的提高,这是为了减缓程序运行速度,保证指针所指向的最后一个内容被系统执行,这才使两项功能完整的执行。(流程图在16页)开 始Head-p输入str判断strp=NULLp=NULLp=NULLx+y+i+输出pt-sexpt-

12、next=ptX+=1pt-next=pt输出日期pt-next=pt()退出模块:系统将退出到DOS环境。(7) 1 2 3 Y Y六、使用说明初始化界面输入回车进入主菜单选择功能,(输入0-7)录入功能输入人事信息输入姓名,性别,城市,街道,电话,邮编,年龄。入公司年份。显示人事信息键入6并按回车键以后,保存录入信息,键入2并按回车,可以显示录入的人事信息。查询功能键入4,按回车后,就可以进行查询功能。查询人事信息,需要输入查询人事的姓名。删除功能键入3并按回车,可以进行删除功能。一旦删除无法恢复,请审用。删除人事记录结束程序,显示 指导老师 迟老师,设计者,课程名称,设计时间。七、结束语

13、 程序优点:本系统属于小型应用程序,适用于人事管理系统。使用灵活方便,本系统操作界面友好,有无计算机基础军可使用。能提高工作效率,节约时间,使烦琐的管理变得十分轻松。程序的不足之处:本程序虽然使用方便,但是并不十分完善,由于我们的能力和要求的范围有限,对具体细节的内容作的并不是很到位。我们并不能计算学生的借书时间等。设计之初我们也没有把文件这一重要组成部分写到程序里,使得本程序只能使用一次。经过迟老师的细心指导我们才知道一个完整的程序是可以重复使用的并且及时添加了这一功能。由于时间有限,我们只能运用一些简单的函数进行编程本程序。以及对某些函数录入的限制还有待改进和完善。收获: 成功之处:此系统

14、程序虽然简单,却集结了基本的管理功能。删除,存储,统计等功能还是较为成功的。特别是人事档案的统计管理功能,使烦琐的工作变得简单轻松。不足之处:由于我们水平和时间有限,难免有不足和差强人意的地方。尤其是对于系统应该配以保密性的设置,可是由于我们的知识积累不够,运行不了。还请迟老师海涵。小结:我们只有两人组成的程序设计小组,利用课余时间别编写了这套人事管理系统。通过这次课程设计,我们团结合作,相互支持,充分发挥了团队精神,使我们所学的知识转化今天的成果。当然,在程序设计的过程中,通过与其他专业同学交流,我们也深刻体会到自计算机水平的有限与不足,为了将我们与齐大其他专业学生以及其他高校学生的差距缩小

15、,我们今后将会以200%的努力投入到学习中去,用汗水和知识衡量我们与成功间的差距!最后,感谢给予我们这次实践和创做机会的迟立颖老师 ! 八、源程序#include string.h#include #include stdlib.h#define NULL 0typedef struct worker char name20; char sex; char age4; char te20; char zi10; char adress20; char city10;typedef struct date int year; int month; int day; date;worker;wor

16、ker *head,*this,*new;/*主函数*/main()char order;head=NULL;clrscr();printf(nn*提示请先读取文件!*n);printf (nn* 按回车继续!*n);getchar();do clrscr();printf( n);printf(n);printf(*n);printf( * 1.输入人事信息 $ 2.显示人事信息 *n);printf( * 3.删除人事信息 $ 4.查询人事信息 *n);printf( * 5.读取文件 $ 6.存储文件 *n);printf( * 7.人事统计信息 $ 0.退出系统 *n);printf(

17、*n);printf(n 请您在上述功能(0-7)中选择:n);order=getch(); switch(order) case1:record();break; case2:listall();break; case3:del(head);break; case4:search();break; case5:rfile(head);break; case6:wfile(head);break; case7:total(head);break; case0:wfile(head);break; while(order!=0);clrscr();printf(nnnnnn);printf(*

18、c 语言程序设计 *n);printf(* 名称:人事管理系统n);printf(* 班级:化工062班。n);printf(* 指导老师:迟立颖老师n);printf(* 设计者:祝令瑞 高玉峰 n);printf(* 组长:高玉峰 n);printf(* 设计时间:2007年10月n);getchar();/*输入信息*/record() char re,num30; new=(worker*)malloc(sizeof(worker);/*(*void)malloc(sizeof(*) *malloc(sizeof(*void)是内存的动态存储中分配一个长度为sizeof的连续空间((*

19、void)指向分配域起始地址的指针)若不能执行返回空指针*if(head=NULL) head=new; else this=head; while(this-next!=NULL) this=this-next; this-next=new; this=new;clrscr(); printf(n 请您输入姓名:n); scanf(%s,this=-name);getchar(); printf(n 请您输入性别(m代表男,W代表女:n); this-sex=getchar();getchar(); printf(n 请您输入城市:n); scanf(%s,this-city);getcha

20、r(); printf(n请您输入街道:n); scanf(%s,this-address);getchar(); printf(n请您输入电话n); scanf(%s,this-tel);getchar(); printf(n请您输入邮编n); scanf(%s,this-zi);getchar(); printf(n请您输入年龄n); scanf(%s,this-age);getchar() printf(n请输入入公司时间年份n); scanf(%d,&this-date-year);getchar(); printf(n请输入入公司时间月份n); scanf(%d,&this-date

21、-month);getchar(); printf(n请输入入公司时间日期n); scanf(%d,&this-date-day);getchar(); printf(n*请存盘!*);getchar(); this-next=NULL;/*显示信息*/listall()int i=0;if(head=NULL) rfile();return(); this=head; clrscr();do printf(n记录%dn,+i); print(this); this=this-next; while(this!=NULL); (-this)-next=NULL;void print(worke

22、r *t) * *t传递链表、储存数据* printf(姓名:%sn,t-name); printf(性别:%cn,t-sex); printf(入公司时间:%4d/%2d/%2dn, pt-date-year, pt-date-month, pt-date-month); printf(城市:%sn,pt-city); printf(街道:%sn,pt-adress); printf(电话:%sn,pt-te); printf(邮编:%sn,pt-zi);/*查询信息*/int search() worker *p1; char name20; p1 = head; printf(请输入所需

23、查询员工姓名:); scanf(%s,name); printf(n); if(head = NULL) printf(记录以空!n); return 0; printf(按回车键继续!n); getchar(); clrscr(); while(p1!=NULL) if(strcmp(p1-name,name)!=0) p1 = p1-next; else printf(所查询人员信息:n); print(p1); break; if(p1 = NULL) printf(%s 不是本公司人事.n); printf(按任意键继续n); getchar(); /*删除信息*/void del(w

24、orker *pt) worker *p1,p2; char str20; printf(请输入所需删除人员姓名:); scanf(%s,str); p1 = p5;p2 = p1; while(p2) if(strcmp(p2-name,str) = 0)break; elsep1 = p2;p2 = p2-next; if(p2) p1-next = p2-next; free(p2);/*free(void)释放void内存区使该区能被其它变量使用*/ printf(n* 请存盘 *n); else printf(没找到所需删除员工n); if(p2 = head) head = hea

25、d-next; printf(按回车键继续 n); getchar();/*存储信息*/void wfile(worker *p) int n =0; FILE *out; if(out = fopen(a:数据.c,wb)=NULL) printf(n不能打开“a:数据.c”); else if(p) while(p) fwrite(p,sizeof(worker),1,out); n+; p = p-next; fclose(out); listall(); printf(n文件的%d条记录被写入。n,n); printf(按任意键继续n); getchar(); /*读取信息*/void

26、 rfile(worker *p) int j=0; FILE *in; if(in = fopen(a:数据.c,rb)= NULL) printf(不能打开目标文件n); return; else while(fread(p,sizeof(worker),1,in)=1) j+; printf(n记录:%d,j); if(j = 1) head = p; p = p-next; fclose(in); printf(n%d条文件读取完毕.n,j); if(j = 0) printf(* 磁盘无数据 *n); printf(按任意键继续n); getchar(); /* 统计信息*/ voi

27、d total(worker *p) char str; int i=0,x=0,y=0; float a=0.0; worker pt, /*pt当前变量*/ pt2, /*pt2循环变量 */ pri; /*pri前驱*/ if(p = NULL) printf(n*请先读文件*); printf(n* 按回车继续 *); getchar(); return 0; pri = pt =t; printf(n*); printf(n* 1.性别统计 2.公司人数规模*); printf(n* 3.工龄 0.退出 *); printf(n*); printf(n 请你在上述功能(0-3)选择

28、); str = getchar(); if(str = 0) return; if(str = 1); while(pt) i+; if(pt-sex = m)x+; else y+; pt = pt-next; printf(n公司人员总数:%5dn,i); printf(n性别比例:%4.2fn,x/y); printf(n人员-男:%5dn,x); printf(n人员-女:%5dn,x); else if(str = 2) while(pt) pt2 = pt-next; while(pt2) if(pt-age age) pt-next = pt2-next; pt2-next =

29、 pt; pri-next = pt2; /*交换*/ pt2 = pt2-next; pri = pt; pt = pt-next; pt =p; printf(n公司员工年龄); while(pt) printf(姓名:%s-,pt-name); printf(年龄:%5dn,pt-age); pt = pt-next; else if(str = 3) printf(n入公司时间n); while(pt) printf(姓名:%s-,pt-name); printf(入公司时间:%4d/%2d/%2dn, pt-date-year, pt-date-month, pt-date-month); printf( 城市:%sn,pt-city); printf( 街道:%sn,pt-adress); printf( 电话:%sn,pt-te); printf( 邮编:%sn,pt-zi); printf(nnn); getchar(); pt = pt-next; 九、参考文献1、 C语言大学实用教程 电子工业出版社2、从问题到程序 程序设计与c语言引论 北京大学出版社 3、c语言程序设计教程 北京大学出版社4、c语言程序设计实例精粹 电子工业出版社 5、C语言程序设计 高等教育出版社6、The C Programming Language 机械工业出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号