《人事档案管理系统_c语言12736.docx》由会员分享,可在线阅读,更多相关《人事档案管理系统_c语言12736.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言言程序设设计课程设设计人事档案案管理系系统指导教师师:李耀耀成设 计 者:刘刘玉成、孙涛、马新涌涌、郭恒恒阳专业班级级:机电电0811设计时间间:20009年年11月月人事档案案管理系系统一、需求求分析电脑已经经深入到到我们日日常工作作和生活活的方方方面面,比比如文字字处理、信息管管理、辅辅助设计计、图形形图像处处理、教教育培训训以及游游戏娱乐乐等。WWinddowss系统的的推出使使电脑从从高雅的的学术殿殿堂走入入了寻常常百姓家家,各行行各业的的人们无无须经过过特别的的训练就就能够使使用电脑脑完成许许许多多多复杂的的工作。然而,虽虽然现在在世界上上已经充充满了多多如牛毛毛的各种种软件,
2、但但它们依依然不能能满足用用户的各各种特殊殊需要,人人们还不不得不开开发适合合自己特特殊需求求的软件件。 随随着企事事业单位位的发展展,人员员会越来来越多,少少则几十十人、多多则上万万人。例例如一个个企业分分很多部部门,每每个部门门又分为为许多科科或室等等,而其其下又分分为各级级领导和和员工。用笔和和纸传统统的手工工管理档档案,这这中管理理方式存存在着不不易更新新、不易易存放、不安全全、容易易丢失、难以备备份等重重大缺陷陷,管理理起来效效率低下下而且很很可能造造成管理理上的混混乱。而而自己建建立简单单的电子子文档对对信息管管理进行行管理虽虽然克服服了以上上的缺点点,但查查询效率率较低,特特别是
3、当当数据量量十分庞庞大时,劣劣势尤其其明显。因此开开发一个个既可以以存储信信息,又又可以进进行更新新、查询询、管理理等功能能,同时时价格又又能为广广大消费费者接受受的多功功能电子子人事信信息管理理系统就就显得十十分必要要。 本本实验的的读者对对象为研研发中心心领导和和主管技技术人员员以及项项目设计计和开发发人员。 二、系统统框图输入i判断i输入人事信息显示人事信息删除人事信息查询人事信息读取文件存储文件读取文件人事统计信息 性别统计人数规模入公司时间输入判断i开始关闭 2 三、任务务分工高玉峰负负责:输输入模块块,显示示模块,删删除模块块 。祝令瑞负负责:存存储模块块 查询询模块、读取模模块统
4、计计模块、退出模模块 。四、系统统的软硬硬件环境境1、硬件件环境: CPPU 22.4GGHz 2556M内内存 80GG硬盘。 2、软软件环境境:tuurbooc2.0UCCDOSS5.00 操作作系统 WinndowwsXp。五、设计计分析人事档案案管理系系统功能能:程序设计计一般由由两部分分组成:算法和和数据结结构,合合理地选选择和实实现一个个数据结结构和处处理这些些数据结结构具有有同样的的重要性性。在人人事管理理过程中中,由于于预计记记录对于于一个单单位的学学生数或或人事数来来说太大大,操作作除了能能够增加加、删除除、保存存等外,更更多的情情况是查查询,且且能够实实现快速速查询。特别是
5、是当需要要动态变变化时利利用链表表,例如如插入和和删除数数据等操操作时,为为方便插插入和删删除人事事记录,通通过数据据的自动动的移动动数据,实实现动态态管理。本系统涉涉及的模模块主要要有:开开始、系系统管理理、人事事管理、信息查查询等四四大模块块。(11) 人人事管理理主要包包括:(编编号、姓姓名、性性别、年年龄、出出生日期期、政治治面貌、家庭住住址、图图片等)基基本内容容的输入入,删除除,修改改,查询询(2) 系统统管理主主要包括括:用户户的注册册,资料料的修改改等。(3) 信息查查询主要要包括:员工信信息的查查找、打打印等。2 模块功能能及操作作步骤:各个模块块功能及及流程图图 (1)rr
6、ecoord()系统统将提示示输入人人事姓名名、性别别、城市市、街道道、电话话、邮编编、进入入公司的的时间(*注意意:按提提示输入入*),主主要使用用”sccanff()”及及”geetchhar()”语语句。首首先利用用”maallooc”函函数在内内存的动动态存储储器中开开辟一个个长度为为”siizeoof”长长度的空空间,以以存放预预定义的的”*wworkker”指向的内容。并用”new”指向起始地址的指针。若不能执行,返回空指针.否则,利用链表执行输入功能。即:else流程图 head=NULL输入new=headnew=thisnew=this-nextthis-next=thisi
7、sthis-next.=NULLhead=this申请内存记录(1) YY(2)llisttalll()系系统将显显示文件件中存储储的人事事档案。此功能能利用ddowhiile;语句。若”tthiss”不指指向空。该系统统利用语语句dopriintff(“n记录录%d”,+ii); prrinttf(tthiss);getccharr(); tthiss=thhis-neext; 此外使用用“priintff()”语句完完成显示示功能系系统。(流流程图在在7页)()ddel()系统统将提示示输入要要删除人人事的姓姓名。输输入相应应信息。系统将将删除您您所指定定的信息息。主要要使用”sstrcc
8、mp()”及及”prrinttf()”等语语句。本本系统执执行删除除语句一一条比较较函数。即:iif(sstrccmp(p-namme,sstr)=00)brreakk;应用用链表的的实行地地址转换换,以便便执行查查找人名名的功能能:if(pp2)p1-neext=p2-neext;freee(p22);prinnt (“nn*请请存盘*nn”);显示 head=NULLhead=this输出thisthis-next=this this=NULL读取getccharr();elseepriintff(“没没找到所所须删除除员工n”);getccharr();流程图图: 删除删除输入strhe
9、ad=p1p1=p2p2=NULL 比较p-name与strp2=p1p2-next=p2p2=headhead-next=nextp2=NULL(3)YNY() searrch()系统统将对您您指定的的信息进进行查找找。主要要使用“strrcmpp()”“geetchhar()”等语句句。该系系统主要要运行过过程为:若头指指针不为为空,则则利用比比较函数数if(strrcmpp(p11-nnamee,nssme)= =0)如如果该语语句成立立,证明明输入的的信息已已被查询询到,如如果语句句(p11=NNULLL)成立立,表示示您查找找的人不不是本公公司员工工,按任任意键可可回到主主程序执执行
10、区。(流程程图在111页)() rfille()系统将将显示您您所要读读取的信信息。主主要使用用文件指指针及“foppen”“fcclosse”语句。此模块块我们系系统的重重要部分分,相对对来说较较为复杂杂。开始始时要用用到”mmalllo”函函数来开开辟空间间(与模模块1中的原原理相同同),如如果能打打开目标标文件,逐逐条读取取,直到到指针指指向的下下个地址址为空,则则表明读读取完毕毕。执行行此项功功能的语语句为:elseewhiile(freead(p,ssizeeof(worrkerr),11,inn)= =1) jj+; prrinttf(“n 记记录nn”,jj); iff(j= =
11、11) hheadd=p; pp=p-neext;if(pp= =NULLL)p=(wworkker*)maallooc(ssizeeof(worrkerr); p2=p; freee(pp); p22=NUULL; fcclosse(iin); prrinttf(“n%dd条文件件读取完完毕nn”,j);if(jj = =0)prinntf(“*磁盘无无数据*nn”);prinntf(“按任任意键继继续nn”);getccharr();(流程图图在下页)head=p1 查询显示输入str head=NULLp1=NULL比较str与姓名p1-head=p1is输出(4)Y显示存储打开文件P=
12、NULL存 储p-next=p关闭文件P=NULL(5)YY() wfille()系统将将自动保保存您所所要存储储的信息息。用到到了”iif”及及”foor”语语句。如如果该文文件能打打开,预预将文件件存储在在1.oout文文件中,即即:whille(pp)fwrritee(p,sizzeoff(woorkeer),1.oout);/*将p以sizzeoff长度逐逐条存储储在文件件1.oout中中*/ n+;p =pp-nnextt;fcloose(outt);prinntf(“nn文件的的%d被写写入。n”,n);prinntf(“按任任意键继继续”n); gettchaar;流程图p=NU
13、LL申请内存打开文件提取j+j=1p=nextp-next=pp=NULL申请内存p-p2释放p关闭 读取(6)NNN() totaal()系统将将统计您您所输入入的信息息。这个个模块是是本组成成员最满满意的,此此模块的的执行程程序极为为简单,但但是执行行的功能能确实非非常齐全全。本模模块主要要运用”iif()elsse”的循循环嵌套套;就完完成了性性别统计计、公司司人员规规模、入入公司时时间的三三项功能能。值得得一提的的是在执执行性别别统计与与公司人人员规模模的执行行语句后后加上22个”ggetccharr()”本小组成员在借鉴的同时的提高,这是为了减缓程序运行速度,保证指针所指向的最后一个
14、内容被系统执行,这才使两项功能完整的执行。(流程图在16页)开 始Head-p输入str判断strp=NULLp=NULLp=NULLx+y+i+输出pt-sexpt-next=ptX+=1pt-next=pt输出日期pt-next=pt()退退出模块块:系统统将退出出到DOOS环境境。(7) 11 22 3Y Y六、使用用说明初始化界界面输入回车车进入主主菜单选择功能能,(输输入0-7)录入功能能输入人事事信息输入姓名名,性别别,城市市,街道道,电话话,邮编编,年龄龄。入公公司年份份。显示人事事信息键入6并并按回车车键以后后,保存存录入信信息,键键入2并并按回车车,可以以显示录录入的人人事信
15、息息。查询功能能键入4,按按回车后后,就可可以进行行查询功功能。查询人事事信息,需需要输入入查询人人事的姓姓名。删除功能能键入3并并按回车车,可以以进行删删除功能能。一旦旦删除无无法恢复复,请审审用。删除人事事记录结束程序序,显示 指指导老师师 迟老老师,设设计者,课课程名称称,设计计时间。七、结束束语 程序优点点:本系统属属于小型型应用程程序,适适用于人人事管理理系统。使用灵灵活方便便,本系系统操作作界面友友好,有有无计算算机基础础军可使使用。能能提高工工作效率率,节约约时间,使使烦琐的的管理变变得十分分轻松。程序的不不足之处处:本程序虽虽然使用用方便,但但是并不不十分完完善,由由于我们们的
16、能力力和要求求的范围围有限,对对具体细细节的内内容作的的并不是是很到位位。我们们并不能能计算学学生的借借书时间间等。设设计之初初我们也也没有把把文件这这一重要要组成部部分写到到程序里里,使得得本程序序只能使使用一次次。经过过迟老师师的细心心指导我我们才知知道一个个完整的的程序是是可以重重复使用用的并且且及时添添加了这这一功能能。由于于时间有有限,我我们只能能运用一一些简单单的函数数进行编编程本程程序。以以及对某某些函数数录入的的限制还还有待改改进和完完善。收获: 成功之处处:此系系统程序序虽然简简单,却却集结了了基本的的管理功功能。删删除,存存储,统统计等功功能还是是较为成成功的。特别是是人事
17、档案案的统计计管理功功能,使使烦琐的的工作变变得简单单轻松。不足之处处:由于于我们水水平和时时间有限限,难免免有不足足和差强强人意的的地方。尤其是是对于系系统应该该配以保保密性的的设置,可可是由于于我们的的知识积积累不够够,运行行不了。还请迟老师海海涵。小结:我我们只有有两人组组成的程程序设计计小组,利利用课余余时间别别编写了了这套人人事管理理系统。通过这这次课程程设计,我我们团结结合作,相相互支持持,充分分发挥了了团队精精神,使使我们所所学的知知识转化化今天的的成果。当然,在在程序设设计的过过程中,通通过与其其他专业业同学交交流,我我们也深深刻体会会到自计计算机水水平的有有限与不不足,为为了
18、将我我们与齐齐大其他他专业学学生以及及其他高高校学生生的差距距缩小,我我们今后后将会以以2000%的努努力投入入到学习习中去,用用汗水和和知识衡衡量我们们与成功功间的差差距!最最后,感感谢给予予我们这这次实践践和创做做机会的的迟立颖颖老师!八、源程程序#inccludde strringg.h#inccludde #inccludde stddlibb.h#deffinee NUULL 0typeedeff sttrucct wworkker chaar nnamee200; chaar ssex; chaar aage4; chaar tte220; chaar zzi110; chaar
19、aadreess20; chaar ccityy100;typeedeff sttrucct ddatee innt yyearr; innt mmontth; innt dday; daate;worrkerr;workker *heead,*thhis,*neew;/*主函数数*/mainn()charr orrderr;headd=NUULL;clrsscr();prinntf(nnn*提提示请先先读取文文件!*nn);prinntf (nnn* 按回车车继续!*n);getccharr();do clrrscrr();prinntf( n);prinntf(nn);prinntf(*n
20、n);prinntf( * 11.输入入人事信息息 $ 2.显示人人事信息息 *n);prinntf( * 33.删除除人事信息息 $ 4.查询人人事信息息 *n);prinntf( * 55.读取取文件 $ 6.存储文文件 *n);prinntf( * 77.人事事统计信信息 $ 00.退出出系统 *n);prinntf(*nn);prinntf(nn 请您您在上述述功能(00-7)中中选择:n);ordeer=ggetcch(); swiitchh(orrderr) ccasee1:reecorrd();brreakk; ccasee2:liistaall();bbreaak; ccase
21、e3:deel(hheadd);bbreaak; ccasee4:seearcch();brreakk; ccasee5:rffilee(heead);brreakk; ccasee6:wffilee(heead);brreakk; ccasee7:tootall(heead);brreakk; ccasee0:wffilee(heead);brreakk; whille(oordeer!=0);clrsscr();prinntf(nnnnnnnn);prinntf(* cc 语言言程序设设计 *n);prinntf(* 名名称:人人事管理理系统n);prinntf(* 班班级:化化工0662
22、班。n);prinntf(* 指指导老师师:迟立立颖老师师n);prinntf(* 设设计者:祝令瑞瑞 高玉玉峰 n);prinntf(* 组组长:高高玉峰 n);prinntf(* 设设计时间间:20007年10月n);getccharr();/*输入入信息*/recoord() chhar re,numm300; neew=(worrkerr*)mmallloc(sizzeoff(woorkeer);/*(*vvoidd)maallooc(ssizeeof(*)*malllocc(siizeoof(*voiid)是内存存的动态态存储中中分配一一个长度度为siizeoof的连连续空间间((*
23、voiid)指指向分配配域起始始地址的的指针)若若不能执执行返回回空指针针*if(hheadd=NNULLL) heead=neww; ellse tthiss=heead; wwhille(tthiss-nnextt!=NNULLL) tthiss=thhis-neext; tthiss-nnextt=neew; tthiss=neew;cclrsscr(); prrinttf(n 请您输输入姓名名:nn); sccanff(%s,thiis=-naame);geetchhar(); prrinttf(n 请您输输入性别别(m代代表男,WW代表女女:nn); thhis-seex=ggetc
24、charr();gettchaar(); prrinttf(n 请您输输入城市市:nn); sccanff(%s,thiis-citty);gettchaar(); prrinttf(n请请您输入入街道:n); sccanff(%s,tthiss-aaddrresss);ggetccharr(); prrinttf(n请请您输入入电话n); sccanff(%s,thiis-tell);ggetccharr(); prrinttf(n请请您输入入邮编n); sccanff(%s,thiis-zi);geetchhar(); prrinttf(n请请您输入入年龄n); sccanff(%s,th
25、iis-agee);ggetccharr() prrinttf(n请请输入入入公司时时间年份份n); sccanff(%d,&thhis-daate-yeear);geetchhar(); prrinttf(n请请输入入入公司时时间月份份n); sccanff(%d,&thhis-daate-moonthh);ggetccharr(); prrinttf(n请请输入入入公司时时间日期期n); sccanff(%d,&thhis-daate-daay);gettchaar(); prrinttf(n*请存存盘!*);geetchhar(); thhis-neext=NULLL;/*显示信信息*/
26、listtalll()int i=00;if(hheadd=NNULLL) rffilee();retturnn(); thhis=heaad; clrrscrr();do prrinttf(n记记录%ddn,+i); prrintt(thhis); thhis=thiis-nexxt; whhilee(thhis!=NUULL); (-thiis)-neext=NULLL;voidd prrintt(woorkeer *t) * *t传递递链表、储存数数据* prrinttf(姓名:%sn,t-namme); prrinttf(性别:%cn,t-sexx); prrinttf(入公司司时间:
27、%4dd/%22d/%2dn, pt-daate-yeear, pt-daate-moonthh, pt-daate-moonthh); prrinttf(城市:%sn,pt-ciity); prrinttf(街道:%sn,pt-addresss); prrinttf(电话:%sn,pt-tee); prrinttf(邮编:%sn,pt-zii);/*查询信信息*/int seaarchh() woorkeer *p1; chhar namme220; p11 = heaad; prrinttf(请输入入所需查查询员工工姓名:); sccanff(%s,namme); prrinttf(n);
28、 iff(heead = NULLL) prrinttf(记录以以空!n); reeturrn 00; prrinttf(按回车车键继续续!n); geetchhar(); cllrsccr(); whhilee(p11!=NNULLL) if(strrcmpp(p11-nnamee,naame)!=00) p1 = pp1-nexxt; elsse priintff(所所查询人人员信息息:nn); priint(p1); breeak; iif(pp1 = NNULLL) pprinntf(%ss 不是是本公司司人事.n); pprinntf(按任任意键继继续nn); ggetccharr(
29、); /*删删除信息息*/voidd deel(wworkker *ptt) wworkker *p11,p22; ccharr sttr220; pprinntf(请输输入所需需删除人人员姓名名:); sscannf(%s,sttr); pp1 = p55;p22 = p1; wwhille(pp2) iff(sttrcmmp(pp2-namme,sstr) = 0)breeak; ellsep1 = pp2;pp2 = p22-nnextt; if(p2) pp1-nexxt = p22-nnextt; ffreee(p22);/*ffreee(vooid)释放vvoidd内存区区使该区区
30、能被其其它变量量使用*/ pprinntf(nn* 请存盘盘 *n); ellse prrinttf(没找到到所需删删除员工工n); iff(p22 = heead) heead = hheadd-nnextt; prrinttf(按回车车键继续续 nn); geetchhar();/*存储信信息*/voidd wffilee(woorkeer *p) innt nn =00; FIILE *ouut; iff(oout = ffopeen(a:数据.c,wbb)=NNULLL) priintff(n不能能打开“a:数据.c”); ellse if(p) whiile(p) ffwriite(
31、p,ssizeeof(worrkerr),11,ouut); nn+; pp = p-nexxt; fcclosse(oout); liistaall(); prrinttf(n文件件的%dd条记录录被写入入。nn,nn); prrinttf(按任意意键继续续n); geetchhar(); /*读取信信息*/voidd rffilee(woorkeer *p) iint j=00; FFILEE *iin; iif(in = ffopeen(a:数数据.c,rbb)= NULLL) pprinntf(不能能打开目目标文件件n); rretuurn; eelsee wwhille(ffreaa
32、d(pp,siizeoof(wworkker),1,in)=11) j+; prrinttf(n记记录:%d,j); iff(j = 1) heead = pp; p = pp-nnextt; ffcloose(in); pprinntf(nn%d条条文件读读取完毕毕.nn,jj); iif(jj = 0) pprinntf(* 磁盘盘无数据据 *n); pprinntf(按任任意键继继续nn); ggetccharr();/*统统计信息息*/voidd tootall(woorkeer *p) chhar sstr; innt ii=0,x=00,y=0; flloatt aa=0.0; w
33、oorkeer ppt, /*pt当当前变量量*/ ppt2, /*ppt2循循环变量量 */ ppri; /*ppri前前驱*/ iff(p = NULLL) priintff(n*请请先读文文件*); priintff(n* 按按回车继继续 *); gettchaar(); retturnn 0; ppri = ppt =t; pprinntf(nn*); pprinntf(nn* 1.性性别统计计 22.公司司人数规规模*); pprinntf(nn* 3.工工龄 0.退出 *); pprinntf(nn*); pprinntf(nn 请你在在上述功功能(00-3)选选择 ); sstr
34、 = ggetccharr(); iif(sstr = 0) rretuurn; iif(sstr = 1); whiile(pt) i+; if(pt-seex = m)x+; elsse y+; pt = ppt-nexxt; prrinttf(n公公司人员员总数:%5ddn,i); prrinttf(n性性别比例例:%44.2ffn,x/y); prrinttf(n人人员-男男:%55dnn,xx); prrinttf(n人人员-女女:%55dnn,xx); eelsee iff(sttr = 2) whhilee(ptt) ptt2 = ptt-nnextt; whhilee(ptt2) iff(ptt-aage