版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计试验汇报班级姓名学号试验课程C试验名称人事管理系统试验成绩试验日期/2/15-22任课老师目标(此次课程设计所包含并要求掌握知识点。)经过此程序能实现职员信息输入,保留,添加,删除,查询,修改,排序,统计等。二、使用环境(此次上机实践所使用平台和相关软件。)软硬件软件:MicrosoftVisualC++6.0硬件:windows,及相关硬件设备。三、内容和设计思想(1.设计思绪2.关键数据结构3.关键代码结构4.关键代码段分析。)(1)菜单模块用键盘式选择菜单以实现功效选择,从而进行想要进行操作来实现其功能。(2)数据输入模块用键盘式输入人事信息并把人事信息写入人事档案文件。(3)数据添加模块用追加方法把新增人事信息写入人事档案文件。(4)数据删除模块依据人事信息编号查找要删除人事信息,从文件中读一条统计,查看编号是否删除,假如是,则舍弃,不再写入文件;不然重新写入文件。(5)数据查询模块(编号)把编号作为查询字段,用基础查找算法查找人事档案文件,把符合查找要求统计输出。(6)数据查询模块(姓名)把姓名作为查询字段,用基础查找算法查找人事档案文件,把符合查找要求统计输出。(7)数据修改模块查找要修改统计,修改之。先读统计,若是要修改统计,则修改信息,把修改后信息写入文件;不然直接写入文件。(8)数据排序模块经过菜单选择年纪或来院时间,把数据从文件中读出来,任意选择一个排序算法对统计进行排序,输出排序结果。(9)数据统计模块经过菜单选择统计字段:在职人数、党员人数、女工人数、高学历人数、高职称人数。(10)结束程序模块经过菜单选择退出来结束整个程序操作。具体函数voiddesplaymenu();//菜单函数voidinsert_per();//输入人事信息voidsave_per();//将人事信息保留到文件voidread_per();//读文件voidsave_add();//保留添加信息voidadd_per();//添加新人事信息voiddel_per();//用编号查询人事信息并删除voidsearch_No();//用编号查询人事信息voidsearch_name();//用姓名查询人事信息voidrevise_per();//用编号查询人事信息并修改voidsave_revise();//保留修改后信息voidsortarray_age();//用年纪将人事信息排序voidsum_sex();//统计女工人数intmain()//主函数源代码#include<stdio.h>#include<string.h>#defineN100voidmenu();voidbuild();voidadd();voidmodify();voidmodify_data();voiddel();voidsnum();voidbrowse();voidorder();voiddata();voidnumduty();voidmenu(){ intn,w1; do { printf("\n\t\t\t\t菜\t单\n"); printf("\n\t\t0\t新建档案信息\n\n"); printf("\t\t1\t删除信息\n\n"); printf("\t\t2\t追加信息\n\n"); printf("\t\t3\t搜索查找信息\n\n"); printf("\t\t4\t浏览全部信息\n\n"); printf("\t\t5\t修改信息\n\n"); printf("\t\t6\t信息排序\n\n"); printf("\t\t7\t信息统计\n\n"); printf("\t\t8\t离开\n\n"); printf("\t\t请选择要进行操作[]\b\b"); scanf("%d",&n); if(n<0||n>8){w1=1;getchar();} elsew1=0; } while(w1==1); switch(n) { case0:build();break;//建立 case1:del();break;//删除 case2:add();break;//追加 case3:search();break;//搜索 case4:browse();break;//浏览 case5:modify();break;//修改 case6:order();break;//排序 case7:data();break;//统计 case8:exit(); default:{("输入错误!请重新输入");menu();} }}structpersonnelArcheiveInfo{ charnum[10];//编号charname[10];//姓名charsex;//性别charage;//年纪charjob[10];//职务charpost[10];//职称charpolitic[10];//政治面貌charedu_level[10];//最高学历charperiod[10];//任职时间charstart_time[10];//来院时间chartype[10];//人员类别}wk[N],s;voidbuild()//建立信息{ inti,m,n,p; FILE*fp; if((fp=fopen("worker00.txt","w"))==NULL) { printf("cannotbuildfile\n"); printf_back(); } printf("输入人数是(0-%d)?:",N); scanf("%d",&m); n=m; for(i=0;i<n;i++) { printf("\n输入第%d个工作人员信息\n",i+1); input(i); } for(p=0;p<=i;p++) if((fprintf(fp,"%s\t%s\t%ls\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name, wk[p].sex,wk[p].age,wk[p].job,wk[p].post,wk[p].politic, wk[p].edu_level,wk[p].period,wk[p].start_time,wk[p].type))!=1) printf("cannotwritethedata\n\n"); fclose(fp); printf_back();}voidadd()//追加{ FILE*fp; inti,m,n,p; n=load(); if(n==-1) { printf("\n请新建文档\n"); menu(); } printf("要追加人数是(0-%d)?:[]\b\b\b",N-n); scanf("%d",&m); for(i=n+1;i<=m+n;i++) { printf("\n追加第%d个工作人员信息\n",i-n); input(i); } if((fp=fopen("worker00.txt","a+"))==NULL) { printf("cannotopenfile\n"); printf_back(); } for(p=n+1;p<=m+n;p++) fprintf(fp,"%s\t%s\t%ls\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name, wk[p].sex,wk[p].age,wk[p].job,wk[p].post,wk[p].politic, wk[p].edu_level,wk[p].period,wk[p].start_time,wk[p].type); fclose(fp); fprintf_back();}voidmodify()//修改{ FILE*fp; inti,n,p,k,w0=1,w1,w2=0;modify_data(); n=load(); do { k=-1; printf_face(); for(i=0;i<=n;i++)printf_one(i); do { printf("\n\n输入要修改信息编号\n\t编号:[]\b\b"); scanf("%s",s.num); for(i=0;i<=n;i++) { if(strcmp(s.num,wk[i].num)==0) { k=i; s=wk[i]; } } if(k==-1)printf("\n\n没有找到所需信息!请重新输入!\n"); }while(k==-1); printf_face(); printf_one(); modify_data(); if(w1==1) { printf("\n修改成功!\n\n是否继续修改?\n\n\t\t1\t是\n\n\t\t2\t保留并返回\n\t[]\b\b"); scanf("%d",&w0); w2=1; } else { w0=0; if(w2==1) wk[k]=s; } if(w0!=1&&w2==1) { fp=fopen("worker00.txt","w"); { for(p=0;p<=n;p++) fprintf(fp,"%s\t%s\t%ls\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name, wk[p].sex,wk[p].age,wk[p].job,wk[p].post,wk[p].politic, wk[p].edu_level,wk[p].period,wk[p].start_time,wk[p].type); } fclose(fp); } }while(w0==1); menu();}voidmodify_data()//修改数据{ intc,w1,i; do {scanf("%d",&c); if(c>11||c<1)printf("错误,请重新选择!"); getchar(); }while(c>11||c<1); do { switch(c) { case1:printf("就编号是%s,",wk[i].num); input_num(i,i-1);break; case2:printf("旧姓名是%s,请输入新姓名:",wk[i].name); scanf("%s",wk[i].name);break; case3:printf("旧性别是%s,请输入新性别:",wk[i].sex); scanf("%ls",wk[i].sex);break; case4:printf("旧年纪是%s,请输入新年纪:",wk[i].age); scanf("%ls",wk[i].age);break; case5:printf("旧职务是%s,请输入新职务:",wk[i].job); scanf("%ls",wk[i].job);break; case6:printf("旧职称是%s,请输入新职称:",wk[i].post); scanf("%ls",wk[i].post);break; case7:printf("旧政治面貌是%s,请输入新政治面貌:",wk[i].politic); scanf("%ls",wk[i].politic);break; case8:printf("旧学历是%s,请输入新学历:",wk[i].edu_level); scanf("%ls",wk[i].edu_level);break; case9:printf("旧任职时间是%s,请输入新任职时间:",wk[i].period); scanf("%ls",wk[i].period);break; case10:printf("旧来院时间是%s,请输入新来院时间:",wk[i].start_time); scanf("%ls",wk[i].start_time);break; case11:printf("旧在职类别是%s,请输入新在职类别:",wk[i].type); scanf("%ls",wk[i].type);break; } printf("now:\n\n"); printf_face(); printf_one(i); printf("\n确定修改吗?\n\n\t\t1\t是\n\t\t2\t重新修改\n\t\t3\t返回并不保留\n\t\t\t[]\b\b\b"); scanf("%d",&w1); }while(w1==2); return(w1);}voiddel()//删除{FILE*fp; charc; inti,j,n,k,m,p,w0,w1=0,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i<=n;i++)printf_one(i); do { printf("\n\n请输入要删除人员编号!\n\t\tNO.[]\b\b"); scanf("%s",s.num); for(i=0;i<=n;i++) if(strcmp(s.num,wk[i].num)==0); { k=i; s=wk[i]; } if(k==-1) printf("\n\n对不起,这个编号不存在!请重输"); } while(k==-1); printf("确定要删除吗?\t请输入y或n\n\t\t[]\b\b"); scanf("%ls",&c); if(c=='y') { for(j=i;j<=n;j++)wk[j]=wk[j+1]; w1=1; } if(c=='n')menu(); else { printf("\n错误,请输入y或n\n"); menu(); } if(w1==1) { printf("\n删除成功!\n要继续删除吗?\n是\n保留并返回\n"); scanf("%d",&w0); w2=1; } if(w0==2&&w2==1) { fp=fopen("worker00.txt","w"); for(m=0;m<=n;m++) fprintf(fp,"%s\t%s\t%ls\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name, wk[p].sex,wk[p].age,wk[p].job,wk[p].post,wk[p].politic, wk[p].edu_level,wk[p].period,wk[p].start_time,wk[p].type); fclose(fp); } } while(w0==1); menu();}voidsnum()//按编号查询{ FILE*fp; inti,k,w1=1,w2,w3,n; n=load(); do { do { k=-1; printf("\n\n请输入要查询编号!\n\t\tnumber:[]\b\b\b\b\b"); scanf("%s",s.num); for(i=0;i<=n;i++) if(strcmp(s.num,wk[i].num)==0) { k=i; printf_one(k); break; } if(k==-1) { printf("\n\n要查询编号不存在,请重新输入"); printf("\n\n要继续查询吗?\n\t\t1\t继续\n\t\t2\t返回\n\t\t[]\b\b"); scanf("%d",&w1); if(w1==2) { menu(); break; } if(w1!=1&&w1!=2) { menu(); break; } if(w1!=1&&w1!=2) { printf("\n对不起,请输入1或2\n"); printf("\n请重新输入\n"); } } }while(k==-1&&w1!=2); if(k!=-1) { w3=0; printf("\n要继续查询吗?\n\t\t1\t继续\n\t\t2\t返回菜单\n\t\t[]\b\b"); scanf("%d",&w3); if(w3==2) { menu(); break; } if(w3!=1&&w3!=2) { printf("\n对不起,请输入1或2\n"); search(); break; } } }while(k!=-1&&w3==1);}voidbrowse()//浏览{ inti,j,n; n=load(); printf_face(); for(i=0;i<=n;i++)printf_one(i); printf("\t总计有%d个工作人员\n",n+1); printf("按任意键继续"); getch(); menu();}voidorder()//排序{ inti,j,k,n,p; FILE*fp; n=load(); printf("请选择要排序项\n\t\t1\t年纪\n\t\t2\t来院时间\n\n"); scanf("%d",&p); if(p==1) { for(i=0;i<=n-1;i++) { for(j=i+1;j<=n;j++) { if(strcmp(wk[i].age,wk[j].age)<0) { s=wk[i]; wk[i]=wk[j]; wk[j]=s; } } } } for(k=0;k<=n;k++)printf_one(k); if(p==2) { for(i=0;i<=n-1;i++) { for(j=i+1;j<=n;j++) { if(strcmp(wk[i].age,wk[j].age)<0) { s=wk[i]; wk[i]=wk[j]; wk[j]=s; } } } } for(k=0;k<=n;k++)printf_one(k); if(p==2) { for(i=0;i<=n-1;i++) { for(j=i+1;j<=n;j++) { if(strcmp(wk[i].start_time,wk[j].start_time)<0) { s=wk[i]; wk[i]=wk[j]; wk[j]=s; } } } } for(k=0;k<=n;k++)printf_one(k); printf("\n按任意键返回菜单:[]\n"); scanf("%s",&p); if(!p||p) menu();}voiddata()//统计{ intp,w; printf("请选择要统计项目"); printf("1:在职人数2:党员人数3:女工人数4:高学历人员统计5:exit"); scanf("%d",&p); switch(p) { case1:numduty();break; case2:numpm();break; case3:numwm();break; case4:hiedcation();break; case5:menu();break; default: { printf("错误,请输入一个1~4之间数字"); data(); } printf("\n要继续统计?继续请按1,返回菜单请按2\n"); scanf("%d",&w); if(w==1)data();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 简明法语教程课件
- 单位管理制度展示大合集【员工管理篇】
- 艾罗能源(688717)新产品与新市场老牌户储企业打开第二成长曲线
- 单位管理制度收录大合集人力资源管理十篇
- 单位管理制度品读选集人员管理十篇
- 《口腔内科护理评估》课件
- 2022年内蒙古呼伦贝尔市牙克石市初中毕业生学业水平模拟测
- 2025年中国劳动防护手套市场深度调研分析及投资前景研究预测报告
- 2025年中国单烷基醚磷酸酯醚行业市场发展前景及发展趋势与投资战略研究报告
- 2020-2025年中国无芯卷筒纸行业发展潜力分析及投资方向研究报告
- 《治安管理处罚法》辅导讲座课件
- 国家开放大学1116《机电控制工程基础》
- 程琳-职业生涯分析与规划
- 仁爱英语九年级总复习教案
- 心电图基本知识PPT
- GB/T 5130-1997电气用热固性树脂工业硬质层压板试验方法
- FZ/T 01041-2014绒毛织物绒毛长度和绒毛高度的测定
- 中小学食材配送中心项目建设可行性研究报告
- 人体解剖上肢血管
- 精品解析浙教版科学 九年级上册 3.43 简单机械之机械效率 同步练习
- 夸美纽斯-大教学论-文本细读
评论
0/150
提交评论