欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言课设之人事管理系统.doc

    • 资源ID:12962963       资源大小:361KB        全文页数:34页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课设之人事管理系统.doc

    . -C语言课程设计人事管理系统 题目要求:人事管理管理系统要求某高校主要人员有:在职人员行政人员、教师、一般员工、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。(1) 添加删除功能:能根据学院人事的变动情况,添加删除记录;(2) 查询功能:能根据编号和进展查询;(3) 编辑功能高级:根据查询对相应的记录进展修改,并存储;(4) 统计功能:能根据多种参数进展人员的统计在职人数、党员人数、女工人数、高学历高职称人数硕士学位以上或者副教授以上,统计要求同时显示被统计者的信息;(5) 排序功能:按照年龄、来院时间进展排序;(6) 保存功能:能对输入的数据进展相应的存储;一、 需求分析:根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入存,在存中处理之后以覆盖的方式写入文件存贮,这样的方法在一定程度上提高了对数据处理的灵活性,较容易理解,但存在处理中遇到以外情况而丧失数据的风险,另外当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,根本上能满足要求;二、 总体设计:根据以上需求分析,将程序分成以下几个模块:1、 新建数据文件build new data;2、 添加记录add data;3、 删除记录delete data;4、 按工号搜索search by number;5、 按搜索search by name;6、 浏览全部数据browse all;7、 修改数据modify the data;8、 排序功能order the volume;9、 统计功能data a volume;系统功能模块图如下:三、 详细设计;1、 主函数:1需求分析:为使系统执行完每局部功能后能够方便的回到系统主界面,main()函数设计的较简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。main()函数定义如下:main() menu();而menu()定义如下:2流程图:menu() int n,w1;doprintf("nttttMENUn");printf("tt0tbuild new datann");printf("tt1tdelete datann");printf("tt2tadd datann");printf("tt3tsearch by numbernn");printf("tt4tsearch by namenn");printf("tt5tbrowse allnn");printf("tt6tmodify the datann");printf("tt7torder the volumenn");printf("tt8tdata a volumenn");printf("tt9texitnn");printf("tplease choice and enter a number bb");scanf("%d",&n);if(n<0|n>8)w1=1; getchar(); else w1=0;while(w1=1);switch(n)case 0:build();break; /*调用新建数据文件函数*/case 1:del();break; /*调用删除数据函数*/case 2:add();break; /*调用添加数据函数*/case 3:snum();break; /*调用按工号搜索函数*/case 4:sname();break; /*调用按搜索函数*/case 5:browse();break; /*调用浏览数据函数*/case 6:modify();break; /*调用修改数据函数*/case 7:order();break; /*调用排序函数函数*/case 8:data();break; /*调用统计函数*/case 9:exit(0); /*退出*/default:printf("input error! please input a number between 0 and 8");menu();2、各功能模块设计:1、新建数据文件模块:<1>、数据构造;看各个数据信息,编号、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进存中时,可以以构造体的形式,每一个构造体包含了一个人员的全部信息,多的人员的信息组成了一个构造体数组。定义如下:struct worker char num11; char name10; char sex2; char age3; char zhiwu15; char zhicheng15; char zhengzhi15; char xueli15; char renzhisj8; char laiyansj8; char leibie15; wkN,s;其中N是宏定义形式定义的字符,临时定义为100,wkN,为存放人员信息的构造体数组,而S为临时的构造体,用来保存信息处理过程中的临时数据。2、流程图如下:3、程序:build() int i,m,k,p;FILE *fp;if(fp=fopen("worker00.txt","w")=NULL)printf("can not build filen");printf_back();printf("how many workers do you want to input(0-%d)?:",N);scanf("%d",&m);k=m;for(i=0;i<k;i+)printf("nInput %dth worker record.n",i+1);input(i);for(p=0;p<=i;p+)if(fprintf(fp,"%st%st%1st%st%st%st%st%st%st%st%sn",wkp.num,wkp.name,wkp.sex,wkp.age,wkp.zhiwu,wkp. zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie)!=1)printf("cannot write the datann");fclose(fp);printf_back();2、追加模块:1需求分析该模块的功能是拥护需要增加新的员工记录,从键盘输入并逐条写入到原来的文件中去,其中输入是要防止重复,重复时报告错误,重新输入。为方便用户管理和查看,该模块采用的方式是用先把原来文件中的数据读入存,保存在存中,然后在存中的数据后面增加新的数据,操作完成后用写的方式翻开文件,用覆盖的方式写入。2流程图:3程序:add() int i,m,n,k,p;FILE *fp;n=load();if(n=-1)menu();printf("how many workers do you want to add(0-%d)?: bbb",N-n);scanf("%d",&m);k=m+n;for(i=n+1;i<=k;i+)printf("nInput %dth worker record.n",i-n+1);input(i);if(fp=fopen("worker00.txt","w")=NULL) /*将数据保存到文件*/printf("can not open filen"); printf_back();for(p=0;p<k;p+)fprintf(fp,"%st%st%1st%st%st%st%st%st%st%st%sn",wkp.num,wkp.name,wkp.sex,wkp.age,wkp.zhiwu,wkp. zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie);fclose(fp);printf_back();3修改模块:1 需求分析:该模块的功能是显示所有信息,考虑到记录较多,采用分屏显示,显示完所有的记录后,由用户输入需要修改的人员的,查找成功后,显示查找结果,并询问拥护修改人员的哪局部记录,根据用户选择修改相应的信息,然后保存修改后的结果;2 流程图3 程序;modify() int i,n,k,p,w0=1,w1,w2=0;FILE *fp;n=load();dok=-1;printf_face();for(i=0;i<=n;i+) if(i!=0)&&(i%10=0) printf("nnRemember the No.which need modify.npress any key to continue.");getch();puts("nn"); printf_one(i);doprintf("nnEnter NO. that you want to modify!nttNO. bb");scanf("%s",s.num);for(i=0;i<n;i+) if(strcmp(s.num,wki.num)=0); k=i; s=wki; if(k=-1) printf("nnNO exit ! please again"); while(k=-1);printf_face();printf_one(k);w1=modify_data(k); if(w1=1) printf("nsuccessful!nnDo yuo want to modify another?nntt1tYesnntt2tBack with savent bb"); scanf("%d",&w0); w2=1; else w0=0; if(w2=1) wkk=s; wkk=s; if(w0!=1&&w2=1) fp=fopen("worker00.txt","w"); for(p=0;p<=n;p+) fprintf(fp,"%st%st%1st%st%st%st%st%st%st%st%sn",wkp.num,wkp.name,wkp.sex,wkp.age,wkp.zhiwu,wkp. zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie); fclose(fp); while(w0=1);menu();修改数据函数如下:modify_data(int i) int c,w1;doprintf("nmodify by =>nntt1tNO.ntt2tnamentt3tsexntt4tagentt5tzhiwuntt6tzhichengntt7tzhengzhimianmaontt8txuelintt9trenzhishijianntt10tlaiyuanshijianntt11trenyuanleibiennttt bb");scanf("%d",&c);if(c>11|c<1)printf("choice error!please choose again!");getchar();while(c>11|c<1);doswitch(c)case 1:printf("the old number is %s,",wki.num);input_num(i,i-1);break;case 2:printf("the old name is %s,enter the new name:",wki.name);scanf("%s",wki.name);break;case 3:printf("the old sex is %s,enter the new sex:",wki.sex);scanf("%1s",wki.sex);break;case 4:printf("the old age is %s,enter the new age:",wki.age);scanf("%s",wki.age);break;case 5:printf("the old zhiwu is %s,enter the new zhiwu:",wki.zhiwu);scanf("%s",wki.zhiwu);break;case 6:printf("the old zhicheng is %s,enter the new zhicheng:",wki.zhicheng);scanf("%s",wki.zhicheng);break;case 7:printf("the old zhengzhimianmao is %s,enter the new zhengzhimiainmao:",wki.zhengzhi);scanf("%s",wki.zhengzhi);break;case 8:printf("the old zuigaoxueli is %s,enter the new zuigaoxueli:",wki.xueli);scanf("%s",wki.xueli);break;case 9:printf("the old renzhishijian is %s,enter the new renzhishijian:",wki.renzhisj);scanf("%s",wki.renzhisj);break;case 10:printf("the old laiyuanshijian is %s,enter the new laiyuanshijian:",wki.laiyansj);scanf("%s",wki.laiyansj);break;case 11:printf("the old renyuanleibie is %s,enter the new renyuanleibie:",wki.leibie);scanf("%s",wki.leibie);break;printf("now:nn");printf_face();printf_one(i);printf("nare you sure?nntt1tsurentt2tNo and remodifyntt3tback without save in this timenttt bbb");scanf("%d",&w1);while(w1=2);return(w1);4删除模块:1需求分析:该模块的运行方式与修改模块类似,首先分屏显示所有人员的记录,显示完所有的记录后,由用户输入要删除的人员的,根据查找相应的记录并将结果显示出来,经用户确认后删除,删除的方法是将文件中的数据读入存,赋给相应的构造体,并将构造体数组中将删除的后面的数据赋给前一个构造体,然后将相应数据写入文件并保存;2流程图:Y3程序;del() char c;int i,j,n,k,m,w0=1,w1=0,w2=0;FILE *fpt;n=load();dok=-1;printf_face();for(i=0;i<=n;i+) if(i!=0)&&(i%10=0) printf("nnRemember the No.which need delete.npress any key to continue.");getch();printf("nn"); printf_one(i);do printf("nnEnter NO. that you want to delete!nttNO. bb");scanf("%s",s.num);for(i=0;i<=n;i+) if(strcmp(s.num,wki.num)=0); k=i; s=wki; if(k=-1) printf("nnNO exit ! please again"); while(k=-1);printf_face();printf_one(k);printf("are you sure to delete the data? ty/nntt bb");scanf("%1s",&c); if(c='y') for(j=i;j<=n;j+) wkj=wkj+1; w1=1; else menu(); if(w1=1) printf("nsuccessful!nnDo yuo want to delete another?nntt1tYesnntt2tBack with saventbb"); scanf("%d",&w0); w2=1; if(w0!=1&&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.name,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需求分析:该模块的功能是按照输入的人员的查找对应的记录,并将其显示,查找成功以后,增加删除和修改等功能,其中删除和修改功能可以通过调用相应的函数来实现。2流程图;3、程序;snum() FILE *fp;int i,n,k,p,w1=1,w2,w3,w4;n=load();do do k=-1; printf("nnEnter the number that you want to search!nttnumber: bbbbb"); scanf("%s",s.num);for(i=0;i<=n;i+)if(strcmp(s.num,wki.num)=0) k=i; printf_one(k);break; if(k=-1) printf("nnNO exist!please");printf("nnAre you again?ntt1tagainntt2tNO and backntt bb");scanf("%d",&w1);if(w1=1)snum();break;if(w1=2) menu();break; while(k=-1&&w1=1);w4=0;w3=0;if(k!=-1); printf("nnWhat do you want to do ?ntt1tsearch anotherntt2tmodifyntt3tDeletentt4tback menuntt bb"); scanf("%d",&w2); switch(w2) case 1:snum();break;case 2:w3=modify_data(k);break;/*调用修改数据函数*/case 3:printf("nAre you sure?ntt1tsurentt2tno and backntt bb"); scanf("%d",&w4); if(w4=1) for(p=i;p<=n;p+) wkp=wkp+1; break;case 4:menu();break; if(w3=1|w4=1) fp=fopen("worker00.txt","w");for(p=0;p<=n;p+)fprintf(fp,"%st%st%1st%st%st%st%st%st%st%st%sn",wkp.num,wkp.name,wkp.sex,wkp.age,wkp.zhiwu,wkp. zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie); fclose(fp);printf("nnttsuccessful!n");printf("nnWhat do you want to do?ntt1tSearch anotherntt2tBackntt bb");scanf("%d",&w2);while(w2=1);menu();(7) 按搜索。该模块的构造与按查询的构造根本一样;(8) 浏览模块;1 需求分析:该模块的功能是显示所有保存在文件中的记录,考虑到记录较多,采用分屏显示的方式;2、流程图;3程序:browse() int i,j,n; n=load(); printf_face();for(i=0;i<=n;i+) if(i!=0)&&(i%10=0) printf("nnRemember the No.which need delete.npress any key to continue.");getch();printf("nn"); printf_one(i); printf("tThere are %d record.n",n+1);printf("press any key to continue.");getch();menu();9、排序模块;1、需求分析;该模块的功能是要求将记录按照年龄或者来院时间进展排序,总体构造是先用n=load函数将文件中的数据调入存,然后按照选择法排序,并将结果显示出来,然后将排序后的结果保存。2 流程图;3 程序;order() int i,j,k,n,p,m;FILE *fp;n=load();printf("which do you like to follow?ntt1tagentt2tlaiyuanshijiannn");scanf("%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)<0) s=wki; wki=wkj; wkj=s; if(p=2) for(i=0;i<=n-1;i+) for(j=i+1;j<=n;j+) if(strcmp(wki.laiyansj,wkj.laiyansj)<0) s=wki; wki=wkj; wkj=s; fp=fopen("worker00.txt","w+");for(m=0;m<=n;m+)if(fprintf(fp,"%st%st%1st%st%st%st%st%st%st%st%sn",wkm.num,wkm.name,wkm.sex,wkm.age,wkm.zhiwu,wkm. zhicheng,wkm.zhengzhi,wkm.xueli,wkm.renzhisj,wkm.laiyansj,wkm.leibie)=NULL)printf("cannot open the file,press any key to continue.");getchar();menu(); fclose(fp);printf("nn");printf_back();10、统计模块1、需求分析;该模块的功能是按照用户的要求统计出满足符合条件的所有记录的个数,并将满足条件的记录显示出来。该模块没有涉及到文件的保存,所以将文件用只读的方式翻开,可以防止操作过程中数据的丧失。2流程图;3、程序data() int p;printf("what kind do you want to data?ntt1tthe number on dutyntt2tthe number of Party memberntt3tthe number of womenntt4tthe number of high educationntt5texitnntt bb");scanf("%d",&p); switch(p) case 1:numduty();break;case 2:numpm();break;case 3:numwm();break;case 4:hiedcation();break;case 5:menu();break;dafault:printf("the number must be between 1 and 4,please choose again!"); data(); 该过程中调用了四个函数,numduty统计在职人员人数,numpm统计党员人数,numwm(统计女工人数),hieduction统计高学历高职称人数,函数的具体定义见后面附录源程序。并通过在四个函数中调用menu函数返回到主菜单。上机操作:1:数据源2:编译,连接和运行下面是各个模块的运行结果的界面图:1、 主菜单函数界面:2、输入模块:新建文件和 添加模块的输入界面根本一样:3、删除模块:4、浏览模块;5、编辑模块:6、统计模块:7、排序模块:附所有源程序:#define N 100#include<stdio.h> struct worker char num11; char name10; char sex2; char age3; char zhiwu15; char zhicheng15; char zhengzhi15; char xueli15; char renzhisj8; char laiyansj8; char leibie15; wkN,s,h; menu() /*菜单函数*/int n,w1;doprintf("nttttMENUn");printf("tt0tbuild new datann");printf("tt1tdelete datann");printf("tt2tadd datann");printf("tt3tsearch by numbernn");printf("tt4tsearch by namenn");printf("tt5tbrowse allnn");printf("tt6tmodify the datann");printf("tt7torder the volumenn");printf("tt8tdata a volumenn");printf("tt9texitnn");printf("tplease choice and enter a number bb");scanf("%d",&n);if(n<0|n>8) w1=1; getchar(); else w1=0;while(w1=1);switch(n)case 0:build();break;case 1:del();break;case 2:add();break;case 3:snum();break;case 4:sname();break;case 5:browse();break;case 6:modify();break;case 7:order();break;case 8:data();break;case 9:exit(0);default:printf("input error! please input a number between 0 and 8");menu();build() /*新建文件*/int i,m,k,p;FILE *fp;if(fp=fopen("worker00.txt","w")=NULL)printf("can not build filen");printf_back();printf("how many workers do you want to input(0-%d)?:",N);scanf("%d",&m);k=m;for(i=0;i<k;i+)

    注意事项

    本文(C语言课设之人事管理系统.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开