C语言-职工档案管理系统12121.docx
C语言程序设计课程设计报报告设计题目:职工档案案管理系统统设计专 业: 电子信息息科学与技技术学 号: 330804422*班 级: 22008级级1班 姓 名:*指导教师 :* 20099 年 春季 学期C语言课程程设计任务务书4题目:职工工档案管理理系统设计计功能:职工工档案管理理系统设计计,每个职职工是一条条记录,包包括编号,姓姓名,性别别,出生年年月,所在在部门,职职称,工资资级别、电电话等。系系统可实现现以下功能能:1、输入功功能:输入入每一位职职工记录,将将其信息存存入文件中中。2、显示功功能:完成成全部职工工记录的显显示。3、查找功功能:完成成按编号或或姓名查找找职工的相关关记录,并并显示。分步实施:1、初步完完成总体设设计,搭好好框架,确确定人机对对话的界面面,确定函函数个数。2、建立一一个文件,将每位职工的信息写入文件中并能显示于屏幕上。3、完成上上述查找(编号,姓姓名,性别别等)、修修改等功能能。4、进一步步要求,修修改记录设设置密码操操作。要求:1、用用C语言实实现程序设设计;2、利用结结构体数组组实现职工工信息的数数据结构设设计;3、系统的的各个功能能模块要求求用函数的的形式实现现;4、界面友友好(良好好的人机交交互),程程序加必要要的注释。课程设计实实验报告要要求:1、预习报报告:题目目、课程设设计任务、数数据结构、程程序的总体体设计(算算法)、模模块划分 。2、实验总总结报告:流程图、主主要源程序序代码(需需打印)、测测试情况及及调试中问问题与解决决方案、小结等。总评成绩:指导教师:附件:主要要源程序代代码(职工工档案管理理系统)char sex;/性别别f为女mm为男#iincluude <<stdiio.h>>#incllude <strring.h>#incllude <stddlib.h>#incllude <connio.hh>#defiine NN 1000 typeddef sstrucct emmployyee/职工基本本情况 charr numm6;/编号号 charr namme8;/姓姓名 charr birrth88;/出生年月月 charr worrkplaace110;/工作部部门 charr sallaryllevell8;/工资资级别 charr possitioon8;/职职称 charr tell16;/电电话 emN; /*主要函函数*/void inpuut();/输入入职工信息息void dispplay();/显示职工工信息void passsWordd();/设置密密码void savee();/保存职职工信息void channge();/修修改职工信信息/*查找函函数*/void searrch();void searrchByynamee();/按姓名名查找void searrchByynum();/按编号查查找int ttotall=0;/定义ttotall来记数记记录数int ii=0;void mainn() innt chhoicee; doo pprinttf(" n");/系统统欢迎界面面 pprinttf(" 欢迎进入入职工管理理系统 n""); pprinttf(" n"); prinntf(""CCoyotte 20009年66月 nn");printtf(" n"); pprinttf(" 请您选择择操作类型型: nn"); pprinttf("= n"); pprinttf(" 1.输入职工工信息 n");/用户户选择 pprinttf(" 2.显示职工工信息 n"); pprinttf(" 3.查找职工工信息 n"); pprinttf(" 4.修改职工工信息 n"); pprinttf(" 0.退出系统统 n""); pprinttf("= n"); sscanff("%dd",&cchoicce);switcch(chhoicee)case 1:innput();brreak;case 2:diisplaay();breaak;case 3:seearchh();bbreakk;case 4:chhangee();bbreakk;case 0: prinntf(""谢谢使用用!再见! "); exitt(0);/退出出系统defauult:prinntf(""输入有错错误请重新新输入: "); retuurn;whille(1);/当当为真值时时执行doo循环 void inpuut()char j='0'/初始化化j值为空空dototall+;i+;printtf("第第%d个职职工:nn",i);printtf("请请您输入编编号: "");/输入编号号scanff("%ss",emmi.num);printtf("请请您输入姓姓名: "");/输入姓名名scanff("%ss",emmi.namee);printtf("请请您输入性性别以(mm男f女): ");/输输入性别getchhar();scanff("%cc",&eemi.sexx);printtf("请请您输入出出生年月(格式如:19900.03): ");/输输入出生年年月scanff("%ss",emmi.birtth);printtf("请请您输入工工作部门: ");/输入入工作部门门scanff("%ss",emmi.workkplacce);printtf("请请您输入职职位: "");/输入职位位scanff("%ss",emmi.posiitionn);printtf("请请您输入工工资级别: ");/输入入工资级别别scanff("%ss",emmi.salaaryleevel);printtf("请请您输入联联系电话: ");/输入入联系电话话scanff("%ss",emmi.tel);printtf("是是否继续输输入?(yy/n):");getchhar();j=gettcharr();whilee(j!='y'&&&j!='n')printtf("输输入不合法法!n是是否继续输输入?(yy/n):");getchhar();j=gettcharr();whille(j='y'');save();/保存职工工记录printtf("输输入完毕,请按任意意键返回n "); geetch();/coniio库函数数里的,结结收键盘输输入任意 reeturnn;void savee() FFILE *fp; iint ii=0; iif(ffp=foopen("empployeee.txxt",""ab")=NNULL)printtf("ccannoot oppen ffilen");returrn;for(ii=1;ii<=tootal;i+) iff(fwrrite(&emi,ssizeoof(sttructt empployeee),11,fp)!=1)printtf("ffile writte errrorn"); fcclosee(fp);void dispplay()/显显示所有职职工信息 FIILE *fp; innt i; iff(fpp=foppen(""emplloyeee.txtt","rrb")=NUULL) prrintff("文件件打开失败败或未创建建文件!n"); reeturnn; prrintff("所有有职工信息息如下: n");/输输出所有职职工信息 prrintff("nn=n");printtf("编编号 姓姓 名 性别 出生生年月 所在部部门 职 称称 工资资级别 联系电电话n"");printtf("=nn"); foor(i=1;frread(&emi,ssizeoof(sttructt empployeee),11,fp)!=0;i+)/读完完所有数据据printtf("%-6s%8s%66c%122s%100s%8ss%8s%18sn",eemi.numm,emi.nname,emii.seex,emmi.birtth,emmi.workkplacce,emmi.posiitionn,emi.ssalarrylevvel,eemi.tell); prrintff("完毕毕,请按任任意键返回回n ""); geetch(); fcclosee(fp); reeturnn;void searrch()int choiice; prinntf(""请您选择择查找方式式:n""); prinntf(""1.按编编号查找n 2.按姓名查查找 nn"); scannf("%d",&&choiice); swittch(cchoicce) casee 1:ssearcchBynnum();breeak; casee 2:ssearcchBynname();brreak; defaault:prinntf(""输入有误误,请重输输入:nn"); void searrchByynum()FILE *fp; iint ii;char numbb6;if(ffp=foopen("empployeee.txxt",""r")=NUULL) priintf("不能够够打开这个个文件,请请按任意键键返回"); retturn; prinntf(""请您输入入要查找的的人的编号号: "); scannf("%s",nnumb); for(i=0;i<N;i+)/在所所有信息中中查找符合合要求的职职工信息 iff(strrcmp(emii.nuum,nuumb)=0) /找找到并显示示该职工记记录 printtf("以以下是您要要查询的人人的信息:n ""); pprinttf("n=n");printtf("编编号 姓姓 名 性别 出生生年月 所在部部门 职 称称 工资资级别 联系电电话n""); pprinttf("=nn");printtf("%-6s%8s%66c%122s%100s%8ss%8s%18sn",eemi.numm,emi.nname,emii.seex,emmi.birtth,emmi.workkplacce,emmi.posiitionn,emi.ssalarrylevvel,eemi.tell); pprinttf("查查找完毕,请请按任意键键返回nn ");getchh();fclosse(fpp);returrn; prinntf(""没有这样样的人,请请按任意键键返回nn"); ggetchh(); ffclosse(fpp); rreturrn;void searrchByynamee() FILEE *fpp; int i=0; charr namm8; if(fp=ffopenn("emmployyee.ttxt","rb"")=NULLL) priintf("不能够够打开这个个文件,请请按任意键键返回nn"); retturn; priintf("请您输输入要查找找的人的姓姓名: ""); scaanf(""%s",nam); forr(i=00;i<NN;i+) if(sstrcmmp(emmi.namee,namm)=00) /找到并并显示该职职工记录 printtf("以以下是您要要查询的人人的信息:n ""); pprinttf("n=n");printtf("编编号 姓姓 名 性别 出生生年月 所在部部门 职 称称 工资资级别 联系电电话n"");prrintff("=n"");prrintff("%-6s%88s%6cc%12ss%10ss%8s%8s%118snn",emmi.num,emii.naame,eemi.sexx,emi.bbirthh,emi.wworkpplacee,emi.pposittion,emii.saalaryyleveel,emmi.tel); fcllose(fp); priintf("查找完完毕,请按按任意键返返回n "); getcch(); retuurn; priintf("没有这这样的人,请请按任意键键返回nn ");getchh();fclosse(fpp);returrn; void passsWordd() charr passsWorrd8="12234566"/起始密码码 charr s88; int flagg=0; int n=3;/密码码输入次数数 do sscanff("%ss",s); iif(sttrcmpp(passsWorrd,s)=0)/若密密码正确 pprinttf("密密码正确,祝您操作作愉快!n "); fflag=1; bbreakk; eelse pprinttf("密密码错误,您还有%d次机会会: ",n-1); nn-;/次数记记数 whiile(nn>0); if(fflag!=1) prrintff("您的的输入次数数已到!再再见!nn "); maain();/返返回主函数数(主菜单单) void channge() FILEE *fpp; int i; charr newwnum6;/新编号号 charr newwnamee8;/新名名字 charr newwsex;/新性性别 charr newwbirtth8;/新新出生年月月 charr newwworkkplacce100;/新工作部部门 charr newwposiitionn8;/新职职称 charr newwsalaaryleevel8;/新工资资水平 charr newwtel16;/新电电话号码 charr namm8; int choiice; prinntf(""请您输入入密码:""); passsWordd();/调用密密码函数 prinntf(""请您输入入要修改的的人的姓名名: "); scannf("%s",&&nam); if(fp=ffopenn("emmployyee.ttxt","w+"")=NULLL) priintf("不能够够打开这个个文件 ""); retturn; for(i=1;i<=NN;i+) iff(strrcmp(nam,emii.naame)=0) pprinttf("这这是您要修修改的人的的信息:n"); pprinttf("n=n"); prrintff("编号号 姓 名 性别 出生年年月 所在部门门 职职 称 工资级级别 联系电话话n"); prrintff("=n""); prrintff("%-6s%88s%6cc%12ss%10ss%8s%8s%118snn",emmi.num,emii.naame,eemi.sexx,emi.bbirthh,emi.wworkpplacee,emi.pposittion,emii.saalaryyleveel,emmi.tel); prrintff("-n "); prrintff("请您您选择要修修改的部分分: nn"); prrintff("=n "); prrintff("1.修改编号号n ""); prrintff("2.修改姓名名n ""); prrintff("3.修改性别别n ""); prrintff("4.修改出生生年月nn "); prrintff("5.修改所在在部门nn "); prrintff("6.修改职位位n ""); prrintff("7.修改工资资级别nn "); prrintff("8.修改联系系电话nn "); prrintff("0.返回主菜菜单n "); prrintff("=nn "); sccanf("%d"",&chhoicee); swwitchh(chooice) caase 11: prrintff("请您您输入新的的编号: "); sccanf("%s"",newwnum); sttrcpyy(emi.nnum,nnewnuum); brreak; caase 22: prrintff("请您您输入新的的姓名: "); sccanf("%s"",newwnamee); sttrcpyy(emi.nname,newnname); brreak; caase 33: prrintff("请您您输入新的的性别: "); geetchaar(); sccanf("%c"",&neewsexx); emmi.sex=newssex; brreak; caase 44: prrintff("请您您输入新的的出生年月月: "); sccanf("%s"",newwbirtth); sttrcpyy(emi.bbirthh,newwbirtth); brreak; caase 55: prrintff("请您您输入新的的工作部门门: "); sccanf("%s"",newwworkkplacce); sttrcpyy(emi.wworkpplacee,newwworkkplacce); brreak; caase 66:priintf("请您输输入新的职职位: ""); scaanf(""%s",newpposittion); strrcpy(emii.poositiion,nnewpoositiion); breeak; caase 77:priintf("请您输输入新的工工资级别: "); scaanf(""%s",newssalarrylevvel); strrcpy(emii.saalaryyleveel,neewsallaryllevell); breeak; caase 88:priintf("请您输输入新的联联系电话: "); scaanf(""%s",newttel); strrcpy(emii.teel,neewtell); breeak; caase 00: prinntf(""返回主菜菜单 "); mainn();/返回 deefaullt :pprinttf("输输入有错误误!请重新新输入!"");reeturnn; pprinttf("n=n");printtf("编编号 姓姓 名 性别 出生生年月 所在部部门 职 称称 工资资级别 联系电电话n""); pprinttf("=nn");printtf("%-6s%8s%66c%122s%100s%8ss%8s%18sn",eemi.numm,emi.nname,emii.seex,emmi.birtth,emmi.workkplacce,emmi.posiitionn,emi.ssalarrylevvel,eemi.tell); ssave();/保存修改改信息breakk; elsse iff(i=N) priintf("没有这这个职工,为为了安全,请请再次输入入密码!n"); chaange(); prrintff("nn=n"); prrintff("1.继续修改改n2.返回主菜菜单n""); prrintff("=n""); prrintff("nn请您选择择:"); sccanf("%d"",&chhoicee); swwitchh(chooice) casse 1:channge();breeak; casse 2:mainn();bbreakk; deffaultt:priintf("输入不不合法!返返回n"");maain();