C语言课程设计_职工信息管理系统_结构体数组实现程序源代码

合集下载

员工信息管理系统(含附源代码)03

员工信息管理系统(含附源代码)03
printf("\n\t请输入员工姓名:");
scanf("%s",work[i].name);
printf("\n\t请输入员工身份证号:");
scanf("%s",work[i].ID);
printf("\n\t请输入员工性别:");
scanf("%s",work[i].sex);
printf("\n\t请输入员工出生日期(yyyy-mm-dd):");
开始选择更新内容i结束开始选择查询内容i结束按性别统计年龄查询函数isum判断两工作号相等isumworkiworki1sumflag1是否继续输入工作号退出删除结束开始输出信息结束开始开始isum输入年龄输出信息结束判断员工的年龄段变量自加开始输入年龄chisum存在员工输出员工信息继续查询退出查询结束身份证排序
scanf("%s",work[i].sex);
printf("\n\t请输入员工出生日期(yyyy-mm-dd):");
scanf("%d-%d-%d",&work[i].birthday.year,&work[i].birthday.month,&work[i].birthday.day);
printf("\n\t请输入员工年龄:");
printf("\t **输入'e'退出列表**\n");
ch=getche();
if(ch=='e')
break;
clrscr();
printf("\t *****员工基本信息列表*****\n");

C语言课程设计 职工信息管理系统 结构体数组实现程序源代码

C语言课程设计 职工信息管理系统 结构体数组实现程序源代码

//C语言课程设计职工信息管理系统—结构体数组实现#include <stdio.h>#include <stdlib.h>#include <string.h>struct employee{char num[10];char name[15];char sex[5];char bm[20];char zc[20];int gz;};int read_file(struct employee em[]);void menu();void write_file(struct employee em[]);void add();void select(); //查看职工所有信息void zc_query(); //按职称查询void num_del(); //按工号删除void tongji(); //统计void sort(); //排序void num_modify(); //按工号修改职工信息void save(); //保存信息void disp(); //显示职工信息void fh(); //返回主菜单struct employee em[300]; //这个数组用来保存所有的职工信息和文件里面的一致int Number=0; //记录总的职工人数也就是数组/文件里面的职工人数void menu(){printf("\t***********************************************************************\n");printf("\t* *\n");printf("\t* 职工信息管理系统_结构体数组实现*\n");printf("\t* *\n");printf("\t* [1] 增加职工信息 [2] 查看职工信息 *\n");printf("\t* [3] 查找职工信息 [4] 删除职工信息 *\n");printf("\t* [5] 统计 [6] 职工工资排列 *\n");printf("\t* [7] 修改职工信息 [8] 保存职工信息 *\n");printf("\t* [9] 显示职工信息 [0] 退出系统 *\n");printf("\t* *\n");printf("\t***********************************************************************\n");}void main(){int choose=0;FILE *fp=NULL;char yesorno;if((fp=fopen("employee1.txt","rb+"))==NULL){printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n");scanf("%c",&yesorno);if(yesorno=='y'||yesorno=='Y'){//这里仅为了建立文件fp=fopen("employee1.txt","wb+");fclose(fp); //关闭fp所指的文件,释放文件缓冲区}elseexit(0);}else{Number=read_file(em); //要是文件已经有数据将数据初始化到数组中}system("cls");while(1){menu();printf("\t\t====>请选择:");scanf("%d",&choose);system("cls");switch(choose){case 0:exit(0); //退出break;case 1:add();fh();//增加职工信息 break;case 2:select();fh();//查看职工信息 break;case 3:zc_query();fh();// 查找break;case 4:num_del();fh();//删除break;case 5:tongji();fh();//统计break;case 6:sort();fh();//排序break;case 7:num_modify();fh();//修改后返回 break;case 8:save();fh();//保存break;case 9:disp();fh();break;//显示default:break;}fflush(stdin);getchar();system("cls");}}void save(){printf("\t=====程序在运行时已自动保存.....\n");}void fh(){printf("\t===>按Enter键返回主菜单\n");}void num_modify() //修改职工信息{FILE *fp=NULL;char gh[60];int i=0;int changeIndex=0; //changeIndex 改变标记int index=0;printf("请输入要修改的职工工号:");scanf("%s",gh);for (i=0;i<Number;i++){if (strcmp(gh,em[i].num)==0) //比较输入工号和数组中已有工号{changeIndex=i; //保存要修改的人的下标break;}}printf("\t工号\t姓名\t性别\t部门\t职称\t工资\n");printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[changeIndex].num,em[chan geIndex].name,em[changeIndex].sex,em[changeIndex].bm,em[changeIndex]. zc,em[changeIndex].gz);printf("请重新输入该职工信息");printf("工号:");scanf("%s",em[changeIndex].num);printf("姓名:");scanf("%s",em[changeIndex].name);printf("性别:");scanf("%s",em[changeIndex].sex);printf("部门:");scanf("%d",em[changeIndex].bm);printf("职称:");scanf("%s",em[changeIndex].zc);printf("工资:");scanf("%d",&em[changeIndex].gz);//信息修改后重新更新文件里面的数据以保持数据一致性fp=fopen("employee1.txt","wb+");for (i=0;i<Number;i++){fwrite(&em[i],sizeof(struct employee),1,fp); //把ptr所指向n*size个字节输入到fp所指向的文件中}fclose(fp);printf("\t=======>修改成功\n");}void disp() //输出所有职工信息{int i=0;for (i=0;i<Number;i++){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i]. sex,em[i].bm,em[i].zc,em[i].gz);}}void sort()//排序{struct employee t;int wantNUmber=0;int i=0;int j=0;int k=0;for(i=0;i<Number-1;i++){k=i;for(j=i+1;j<Number;j++){if(em[j].gz>em[k].gz)k=j;}if(k!=i){t=em[i];em[i]=em[k];em[k]=t;}}printf("你想输出前几名职工的信息:");scanf("%d",&wantNUmber);if (wantNUmber>Number){wantNUmber=Number;}printf("\t工号\t姓名\t性别\t部门\t职称\t工资\n");for(i=0;i<wantNUmber;i++){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i].sex, em[i].bm,em[i].zc,em[i].gz);}}void tongji()//统计{int i,m,k,max,min;double sum=0.0;for(i=0;i<Number;i++){sum=sum+em[i].gz;}printf("全体职工的总工资为:%f\n",sum);printf("平均工资为:%f\n",sum/Number);i=0;m=0;max=0;max=em[m].gz;for(i=1;i<Number;i++){if (em[i].gz>max)m=i;max=em[m].gz;}printf("最高工资为:%d\n",max);printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[m].num,em[m].name,em[m]. sex,em[m].bm,em[m].zc,em[m].gz);i=0;k=0;min=0;min=em[0].gz;for(i=1;i<Number;i++){if (em[i].gz<min)k=i;min=em[k].gz;}printf("最低工资:%d\n",min);printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[k].num,em[k].name,em[k]. sex,em[k].bm,em[k].zc,em[k].gz);}void num_del()//按工号删除FILE *fp=NULL;char gh[60];int i=0;int j=0;printf("请输入要删除的职工工号:");scanf("%d",gh);for(i=0;i<Number;i++){if (strcmp(gh,em[i].num)==0) //如果查找到就删除{for (j=i;j<Number-1;j++){em[j]=em[j+1];}Number--;}}//将剩余数据写入文件重新一写的方式打开文件把以前的数据擦除了fp=fopen("employee1.dat","wb");for (i=0;i<Number;i++){fwrite(&em[i],sizeof(struct employee),1,fp);}fclose(fp);printf("删除成功;\n");}void zc_query()//按职称查找{char zc[20];int i=0;printf("请输入要查找职工职称:");scanf("%s",zc);system("cls");printf("\t工号\t姓名\t性别\t部门\t职称\t工资\n");for (i=0;i<Number;i++){if (strcmp(zc,em[i].zc)==0){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i]. sex,em[i].bm,em[i].zc,em[i].gz);}}void select()//查看职工{int i=0;printf("以下是全部职工信息\n");printf("\t工号\t姓名\t性别\t部门\t职称\t工资\n");for(i=0;i<Number;i++){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i]. sex,em[i].bm,em[i].zc,em[i].gz);}}void add()//增加职工{int numberTemp=0;int i=0;struct employee temp; //临时保存信息printf("请输入要增加职工信息的个数:");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++){printf("输入第%d个职工信息\n",i+1);printf("工号:");scanf("%s",temp.num);printf("姓名:");scanf("%s",);printf("性别:");scanf("%s",temp.sex);printf("部门:");scanf("%s",temp.bm);printf("职称:");scanf("%s",temp.zc);printf("工资:");scanf("%d",&temp.gz);em[Number++]=temp; //将刚添加的写入到数组write_file(&temp); //将刚添加的写入到文件}printf("添加成功\n");}void write_file(struct employee *em){FILE *fp=NULL;fp=fopen("employee1.txt","rb+");fwrite(em,sizeof(struct employee),1,fp);fclose(fp);}int read_file(struct employee em[]){FILE *fp=NULL;int i=0;fp=fopen("employee1.txt","rb");while(fread(&em[i],sizeof(struct employee),1,fp)) i++;fclose(fp);return i;}。

c语言课设职工管理系统

c语言课设职工管理系统

c语言课设职工管理系统《C语言课设职工管理系统》在当前社会中,职工管理对于一个企事业单位来说至关重要。

如何高效地管理职工,是每个企事业单位都要面临的问题。

为了解决这一问题,我们本次课程设计选择了使用C语言来开发一个职工管理系统。

下面将一步一步回答与该系统相关的问题。

1.系统需求分析人力资源管理系统对于企事业单位来说十分重要,所以我们的职工管理系统必须具备以下基本功能:-能够录入、修改和删除职工信息;-能够查询和打印职工信息表;-能够计算和输出职工薪资;-具备良好的用户操作界面。

2.系统设计与实现在设计与实现过程中,我们可以使用结构体来表示职工的信息,如下所示:cs t r u c t E m p l o y e e{c h a r n a m e[20];职工姓名i n t a g e;职工年龄c h a r g e nde r[5];职工性别f l o a t s a l a r y;职工薪资};同时,我们还可以设计一个数组来存储多个职工的信息:cs t r u c t E m p l o y e ee m p l o y e e s[M A X_E M P L O Y E E S];职工信息数组在实现过程中,我们可以使用菜单功能来提供用户操作选项,并根据用户选择进行相应的操作。

下面是一个示例菜单代码:cw h i l e(1){p r i n t f("职工管理系统\n");p r i n t f("1.录入职工信息\n");p r i n t f("2.修改职工信息\n");p r i n t f("3.删除职工信息\n");p r i n t f("4.查询职工信息\n");p r i n t f("5.计算薪资\n");p r i n t f("6.打印职工信息表\n");p r i n t f("0.退出系统\n");p r i n t f("请输入你的选择:");s c a n f("d",&c h o i c e);s w i t c h(c h o i c e){c a s e1:录入职工信息的代码逻辑b r e a k;c a s e2:修改职工信息的代码逻辑b r e a k;c a s e3:删除职工信息的代码逻辑b r e a k;c a s e4:查询职工信息的代码逻辑b r e a k;c a s e5:计算薪资的代码逻辑b r e a k;c a s e6:打印职工信息表的代码逻辑b r e a k;c a s e0:退出系统的代码逻辑b r e a k;d e f a u l t:p r i n t f("无效的选择,请重新输入!\n");b r e a k;}}3.系统测试与调试在系统功能完成后,我们要进行测试与调试,以确保系统的稳定性和正确性。

职工信息管理系统C语言课程设计+源代码

职工信息管理系统C语言课程设计+源代码

课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系23图1:进入主菜单界:”进行录入职工信息2.输入数字“1:录入职工信息图2。

y3.输入“”返回主菜单(界面同图1):职浏2入4.输“”览工息信 43:浏览职工信息图 3输入“y”后继续,输入“”进行查询职工信息:5.:按职工号查询职工信息图457图:按姓名删除职工信息:按职工号删除职工信息图8:职添进5入单主进7.入菜输“”行加工息信6:添加职工信息图9:工信息”进行修改职6单进8.入主菜输入“:按姓名修改职工信息10图:按职工号修改职工信息图11:息工出””输菜入9.进主单入7退职信管统理系7退出系统图12:优点是:基本实现了程序的多功能,对与查询职工信息提供了三种方法,对与修改和删除职工信息提供了两种方法,功能多种多样。

旗帜变量的使用也是优点之一;这个程序用到了的结构体,整个程序简单,易懂。

缺点是:保存职工信息有限,程序段比较臃长。

设计体会与建议:语言函数调语言,学会更好的使用C通过这次的课程设计,我更加了解C用和结构体等,把学过的知识运用于实践中,而不仅仅停留于对课本的单纯理要学习的东西还有很多。

想完成一项功能解;这次设计也让我知道我懂的太少,就要用很复杂的语句去实现,所以整个程序变的很长,复杂,但是结构体,数组,指针等的灵活运用又可使程序变的易懂。

另外,团队的合作也是成功的一部分!结果找起来和修改,在编写代码时一开始没有运用有意义的函数名和变量我认为最重要的就是耐心和细心。

,也使别人看不懂。

在整个课程设计中,好麻烦细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。

虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设以前好多不懂的也都理解了。

也学会了作为大学生我,计的经历让我学到了太多们也应该学会不仅从课堂上学习知识,还应该学会自学。

课程设计-职工信息管理系统-c语言

课程设计-职工信息管理系统-c语言

*******************实践教学*******************理工大学2011年秋季学期计算机应用基础课程设计题目:职工信息管理系统专业班级:姓名:学号:指导教师:成绩:当今时代是飞速发展的信息时代。

在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。

计算机的最大好处在于利用它能够进行信息管理。

使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。

计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。

本系统就是为了管理职工信息而设计的。

企业作为一种信息资源的集散地,包含很多的信息数据的管理,现今,有很多的企业都是初步开始使用,甚至尚未使用计算机进行信息管理。

根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于职工信息的统计和查询等往往采用对信息的人工检查进行,对职工代号和职务,工资等用人工计算,手抄进行。

数据信息处理工作量大,容易出错,由于数据繁多,容易丢失,且不易查找。

总的来说,缺乏系统,规范的信息管理手段。

尽管企业都有计算机,是尚未用于信息管理,有发挥它的效力,源闲置比较突出,就是管理信息系统的开发的基本环境。

据处理手工操作工作量大,出错率高,出错后不易更改,企业采取手工方式对职工信息进行人工管理,由于信息比较多,信息的管理工作混乱而又复杂,一般信息是记录在文件上,企业的工作人员也只是当时对它比较清楚,时间长了,如再要进行查询,就得在众多的资料中翻阅,查找了,造成查询费时,费力,所以开发了职工信息管理系统。

随着信息技术在管理上越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。

信息管理系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的信息管理系统。

为了更好地适应我校的要求,进一步提供全方位的信息服务,职工信息管理系统在实施后应该能够达到以下的目标,能够准确地记录职工的相关信息。

C语言课程设计职工信息管理系统源程序

C语言课程设计职工信息管理系统源程序

head=NULL; p=(struct worker *)malloc(LEN); printf(&quot;请输入职工信息!(输入工号为-1 时则表示创建结束) \n&quot;);
printf(&quot;请输入工号 num:&quot;); scanf(&quot;%d&quot;,&amp;p-&gt;num); if(p-&gt;num==-1) printf(&quot;你已经选择了结束创建!\n&quot;); while(p-&gt;num!=-1) { printf(&quot;请输入其余信息:\n&quot;); printf(&quot;name sex age sale telephone\n&quot;); scanf(&quot;%s %s %d %d %d&quot;,p-&gt;name,p-&gt;sex,&a mp;p-&gt;age,&amp;p-&gt;sale,&amp;p-&gt;telephone); head=insert(head,p); p=(struct worker *)malloc(LEN); printf(&quot;请输入工号 num:&quot;); scanf(&quot;%d&quot;,&amp;p-&gt;num); if(p-&gt;num==-1) printf(&quot;你已经选择了结束创建!\n&quot;); }; //以-1 为结束点
&amp;x); printf(&quot;\n&quot;); if(x==0) printf(&quot;\t\t 你 已 经 选 择 了 0 , 意 味 着 已 不 再 要 编 辑!\n&quot;); } } void menu_select() { printf(&quot;\t\t\t+ 职 工 信 息 管 理 系 统

职工信息管理系统源代码

职工信息管理系统源代码

#include<stdio.h>#include<string.h>#include<stdlib.h>int N=2;struct worker /*定义一个职工信息的结构体*/{int num; /*定义一个职工信息的结构体*/char name[20]; /*定义一个职工信息的结构体*/char sex[10]; //用字符串存放职工的性别数据char birth[20]; //用字符串存放职工的出生年月数据char deta[20]; //用字符串存放职工的工作年月数据char education[20]; //用字符串存放职工的学历数据double salary; //用字符串存放职工的性别数据char work[30]; //用字符串存放职工的职务数据char addr[20]; //用字符串存放职工的地址数据char tel[20]; //用字符串存放职工的数据}worker[100]; //用结构体数组存放职工的所有信息void menu();void input();void save();void read();void display();void add();void search();void search_education();void search_num();void del();void modify();void main(){char s;system("color 3f");printf("\n\n");printf(" \t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf(" \t┃**********************************************************┃\n");printf(" \t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 欢迎使用职工信息管理系统****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 制作人吴青伶****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 2013.12.28 ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n"); printf(" \t┃**********************************************************┃\n");printf(" \t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); do{menu();printf("Do you want to continue?(y/n)");s=getchar();}while(s=='Y'||s=='y');}void menu()/*菜单函数*/{int b;printf("\t \n");printf("\t \n");printf("\t \n");printf("\t \n");printf("\t \n");printf("\t 请选择\n");printf("\t ------------------------------ \n");printf("\t || || \n");printf("\t || 1. 职工信息录入|| \n");printf("\t || 2. 职工信息浏览|| \n");printf("\t || 3. 职工信息添加|| \n");printf("\t || 4. 职工信息查询|| \n");printf("\t || 5. 职工信息删除|| \n");printf("\t || 6. 职工信息修改|| \n");printf("\t || 0. 退出|| \n");printf("\t ------------------------------- \n");printf("\n 输入你的选择项(0~6):\n");scanf("%d",&b);switch(b){case 1 : //职工信息录入、保存input();save();getchar();break;case 2 ://读入职工信息并显示read();display();getchar();break;case 3 : //添加职工信息add();getchar();break;case 4 : //查询职工信息search();getchar();break;case 5 : //读入职工信息并实现职工信息删除功能read();del();getchar();break;case 6 : //读入职工信息并修改职工信息read();modify();getchar();break;case 0 : exit(0);//退出default:break;}}void input() //录入职工信息{int i,flag,j;printf("输入职工个数(默认个数为2):");scanf("%d",&N);fflush(stdin);//清除缓存for(i=0;i<N;i++){loop:printf("职工号:");scanf("%d",&worker[i].num); fflush(stdin);flag=1;if(worker[N].num<0)printf("请输入正整数:\n");elsefor(j=0;j<i;j++){if(worker[i].num==worker[j].num){flag=0;printf(" 工号重复,请重新输入!\n");goto loop;}}printf("XX:");scanf("%s",worker[i].name); fflush(stdin);printf("性别:");scanf(" %s",worker[i].sex); fflush(stdin);printf("出生年月:");scanf("%d",&worker[i].birth); fflush(stdin);printf("工作年月:");scanf("%lf",&worker[i].deta); fflush(stdin);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):\n");scanf("%s",worker[i].education);fflush(stdin);printf("工资:");scanf("%lf",worker[i].salary); fflush(stdin);printf("职务:");scanf("%s",worker[i].work); fflush(stdin);printf("住址:");scanf("%s",worker[i].addr); fflush(stdin);printf(":");scanf("%s",worker[i].tel); fflush(stdin);}printf("\n创建完毕!\n");}void save() //保存函数{FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件{printf("\ncannot open file\n");exit(0);}for(i=0;i<N;i++)fwrite(&worker[i],sizeof(struct worker),1,fp);//将存中的职工信息数据输出到磁盘文件中去(二进制)fclose(fp);}void read() //读入函数{FILE *fp;int i=0;if((fp=fopen("worker.txt","rb"))==NULL) //以只读方式为输出打开磁盘文件中的一个二进制文件{printf("\ncannot open file\n");exit(0);}do{fread(&worker[i],sizeof(struct worker),1,fp);//从worker.txt文件向存读入数据(二进制)i++;}while(!feof(fp));fclose(fp);N=i-1;}void display() //信息浏览函数{int i;for(i=0;i<N;i++){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历:%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%d\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);}}void add() //添加函数{FILE *fp;int i;struct worker p;double t;printf("\n请输入新增加职工的信息:\n");printf("请输入职工号:\n");scanf("%d",&p.num);for(i=0;i<N;i++){while(worker[i].num==p.num){printf(" 工号重复,请重新输入!\n");scanf("%d",&p.num);}}printf("请输入XX:\n");scanf("%s",);printf("请输入性别:\n");scanf("%s",p.sex);printf("请输入出生年月:\n");scanf("%d",&p.birth);printf("请输入工作年月:\n");scanf("%d",&p.deta);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs:):\n");scanf("%s",cation);printf("请输入工资:\n");scanf("%lf",&t);p.salary=t;printf("请输入职务:\n");scanf("%s",p.work);printf("请输入住址:\n");scanf("%s",p.addr);printf("请输入:\n");scanf("%s",p.tel);printf("\n添加完毕!\n");if((fp=fopen("worker.txt","ab"))==NULL)//以追加方式打开一个二进制文件尾部{printf("\ncannot open file\n");exit(0);}fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);}void search() //查询函数{int c;do{puts("\nsearch by=>\n1.学历2.职工号3.取消并返回");printf("Which you needed?:\n");scanf("%d",&c);if(c>3||c<1){puts("\nchoice error!please again!");getchar();//此语句用于接受在执行上一句时最后输出的回车符}}while(c>3||c<1);{switch(c){case 1:search_education();break;case 2:search_num();break;case 3:menu();break;}}}void search_education() //按学历查询函数{int i,flag=0;char s[10];printf("\n请输入你要查询的学历:\n");scanf("%s",s);for(i=0;i<N;i++){if(strcmp(s,worker[i].education)==0){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%lf\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);flag++;}}if(flag==0)printf("\n对不起没有找到!\n");getchar();}void search_num() //按工号查询函数{int i,s,flag=0;printf("\n输入要查询的职工号!:\n");scanf("%d",&s);for(i=0;i<N;i++){if(s==worker[i].num){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%lf\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);flag++;}}if(flag==0)printf("\n对不起没有找到! please");getchar();}void del() //删除函数{int i,j;FILE *fp;char name[20];char c;if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件{printf("\ncannot open file\n");exit(0);}printf("请输入要删除的职工的XX:");scanf("%s",name);for(i=0;i<N;i++){if(strcmp(name,worker[i].name)==0)//判断输入的XX和原来的XX是否相同{printf("找到该职工,是否删除?(y/n) ") ;fflush(stdin);scanf("%c",&c);if(c =='Y'||c=='y'){for(j=i;j<N;j++)worker[j]=worker[j+1];printf("删除成功! \n");//break;}}}if(i>=N){printf("没有找到该职工!\n ");return;}else{N=N-1;for(i=0;i<N;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1){printf("\ncannot save file\n");getchar();}fclose(fp);}}void modify() //修改函数{struct worker p;FILE *fp;int i,n;double t;printf("\n输入要修改的职工号:\n");scanf("%d",&n);for(i=0;i<N;i++){if(n==worker[i].num){printf("找到该职工的信息(任意键继续)!");printf("\n请输入职工的信息!\n");printf("请输入XX:\n");scanf("%s",);printf("请输入性别:\n");scanf("%s",p.sex);printf("请输入:\n");scanf("%d",&p.birth);printf("请输入工作年月:\n");scanf("%lf",&p.deta);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):\n");scanf("%s",cation);printf("请输入工资:\n");scanf("%lf",&t);p.salary=t;printf("请输入职务:\n");scanf("%s",p.work);printf("请输入住址:\n");scanf("%s",p.addr);printf("请输入:\n");scanf("%s",p.tel);p.num=n;if((fp=fopen("worker.txt","r+"))==NULL)//以读写的方式将修改的信息写入磁盘文件{printf("\ncannot open file\n");exit(0);}fseek(fp,i*sizeof(struct worker),0);//将位置指针移到i*sizeof(struct worker)个字节处fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);printf("修改成功!\n");break;}}if(i>=N)printf("\n未找到该职工!\n");}- .- . 可修编.。

职工信息管理系统源代码c语言

职工信息管理系统源代码c语言

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<time.h>#define N 100#define PRINT "\n%5d|%8s|%10.2f|%10.2f|%8.2f|%8.2f|%10.2f|%10.2f ",em[i].num,em[i].name,em[i].basicsalary,em[i].benefit,em[i].waterfare,em[i].electricityfare,em[i]. shouldpay,em[i].actualpay#define TOTAL1 em[i].basicsalary+em[i].benefit#define TOTAL2 TOTAL1-em[i].waterfare-em[i].electricityfare-em[i].personalstruct clerk{int num; //ID号char name[20]; //姓名double basicsalary; //基本工资double benefit; // 津贴double waterfare; //水费double electricityfare; //电费double actualpay; //实发工资double shouldpay; //应发工资double personal; //个人所得税}em[N];void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_name();void modify();void arrange();void sta();unsigned int password();void start(); /*定义各函数*/void start() //开始界面{printf("\n\n\n\n\n\n");system("color 06");//黄色字体printf("************************************************************************* *********");printf("**********************************");printf("*******************欢迎使用职工工资管理模拟系统*********************");printf("***************************************");printf("************************************************************************\ n\n\n\n\n");printf("\t\t\t ***请按任意键进入***\n");}void menu() //菜单界面{system("cls");printf("\t\t\t\t***菜单***\n\n");printf("|~~~~~~~~~~~~~~~~~~~~~~~~ \t\t\t 1 输入~~|\n");printf("| 小贴士: 2 显示|\n");printf("| 请按说明 3 查找|\n");printf("| 进行操作 4 删除|\n");printf("| 5 添加|\n");printf("| 6 修改|\n");printf("| 7 统计|\n");printf("| 8 排序|\n");printf("|________________________ \t\t\t 9 退出___|\n");printf("说明:\n *如首次使用尚未输入数据请先输入数据\n *输入的数据将自动保存\n *再次选择输入功能时原数据将被覆盖,此时可选添加加入职工\n\n");}unsigned int password()//密码模块{char a1[20],a2[20],a3[20];int i,j;FILE *fp1;time_t start,end;if((fp1=fopen("D:\\password.dat","rb"))==NULL)//无密码文件,设置密码。

职工信息管理系统C语言课程设计+源代码

职工信息管理系统C语言课程设计+源代码

课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系附录:#include<> del入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");printf(" ********************谢谢使用******************\n");printf("\n");printf("\n");}void input() um);printf("请输入姓名: ");scanf("%s",employee[i].name);getchar();printf("请输入性别(f--女 m--男): ");scanf("%c",&employee[i].sex);printf("请输入年龄: ");scanf("%d",&employee[i].age);printf("请输入学历: ");scanf("%s",employee[i].xueli);printf("请输入工资: ");scanf("%d",&employee[i].wage);printf("请输入住址: ");scanf("%s",employee[i].addr);printf("请输入电话: ");scanf("%s",employee[i].tel);printf("\n");}printf("\n创建完毕!\n");save(m);}void save(int m) um,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);}void del() ame,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee [i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(employee[j].name,employee[j+1].name);um=employee[j+1].num;employee[j].sex=employee[j+1].sex;employee[j].age=employee[j+1].age;strcpy(employee[j].xueli,employee[j+1].xueli);employee[j].wage=employee[j+1].wage;strcpy(employee[j].addr,employee[j+1].addr);strcpy(employee[j].tel,employee[j+1].tel);delum==num){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee [i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(employee[j].name,employee[j+1].name);um=employee[j+1].num;employee[j].sex=employee[j+1].sex;employee[j].age=employee[j+1].age;strcpy(employee[j].xueli,employee[j+1].xueli);employee[j].wage=employee[j+1].wage;strcpy(employee[j].addr,employee[j+1].addr);strcpy(employee[j].tel,employee[j+1].tel);delum);printf("\n");printf("请输入姓名: ");scanf("%s",employee[i].name);getchar();printf("请输入性别(f--女 m--男): ");scanf("%c",&employee[i].sex);printf("请输入年龄: ");scanf("%d",&employee[i].age);printf("请输入学历: ");scanf("%s",employee[i].xueli);printf("请输入工资: ");scanf("%d",&employee[i].wage);printf("请输入住址: ");scanf("%s",employee[i].addr);printf("请输入电话: ");scanf("%s",employee[i].tel);printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n");printf("\n");save(m);display();fclose(fp);}void search()um){printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话\n");printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee [i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0,返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2: break;default:break;}}void search_xueli() ueli,xueli)==0){printf("\n已找到,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话\n");printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee [i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);n++;}if(i==m&&n==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0,返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2:break;default :break;}}void search_tel() el)==0){printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话\n");printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee [i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0;返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2:break;default :break;}}void modify() um)um,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.工资 7.住址 8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c) um=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(employee[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);employee[i-1].sex=sex;break;case 4:printf("年龄改为: ");scanf("%d",&age);employee[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(employee[i-1].xueli,xueli);break;case 6:printf("工资改为: ");scanf("%d",&wage);employee[i-1].wage=wage;break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(employee[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%s",tel);strcpy(employee[i-1].tel,tel);break;}printf("\n");printf("\n是否确定所修改的信息\n 是请按1 ; 不,重新修改请按2: \n"); scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n 不在修改请按0, 返回修改函数请按1, 继续修改职工号码请按2\n"); scanf("%d",&t);switch(t){case 0:main();break;case 1:modify();break;case 2:break;default :break;}}void modify_name() ame,name)==0)um,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i ].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.工资 7.住址 8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c) um=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(employee[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);employee[i-1].sex=sex;break;case 4:printf("年龄改为: ");scanf("%d",&age);employee[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(employee[i-1].xueli,xueli);break;case 6:printf("工资改为: ");scanf("%d",&wage);employee[i-1].wage=wage;break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(employee[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%s",tel);strcpy(employee[i-1].tel,tel);break;}printf("\n");printf("\n是否确定所修改的信息\n 是请按1 ; 不,重新修改请按2: \n");scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n 不在修改请按0, 返回修改函数请按1, 继续修改职工姓名请按2\n"); scanf("%d",&t);switch(t){case 0:main();break;case 1:modify();break;case 2:break;default :break;}}。

c语言课程设计报告_员工信息管理系统_结构数组实现程序源代码.doc

c语言课程设计报告_员工信息管理系统_结构数组实现程序源代码.doc

c语言课程设计报告_员工信息管理系统_结构数组实现程序源代
码。

//C语言课程设计人员信息管理系统-结构数组实现# INCLUDE # INCLUDE # INCLUDE STRUCT EMPLOYEE { Charnum[10];char name[15];迷人的性感[5];[·XXXX日期、教育背景、职位、电话号码、地址等。

系统可以完成员工信息的查询、更新、插入、删除和排序功能。

基本要求和说明
1.员工信息保存在文本文件中
2.排序:
根据不同的关键字对所有员工的信息进行排序,并输出排序结果。

3.询问:
根据特定标准查找员工。

4.更新:
通过编号修改员工的某些信息。

5.插入:
关于添加新员工的信息。

6.删除:
按号码删除已离开公司的员工信息。

计算机科学与信息工程学院欢迎您的来访。

下载后可以修改和编辑word文档。

双击以删除页眉和页脚。

谢谢!简单的教科书内容不能满足学生的需要。

教育中常见
的问题是教大脑的人不使用手,不使用手的人使用大脑,所以他们什么也做不了。

教育革命的对策是手脑联盟。

因此,双手和大脑的力量都是不可思议的。

单词模型divI)。

职工信息管理系统C语言源代码

职工信息管理系统C语言源代码

#include <stdio.h>#include <windows.h>#include <string.h>#define N 100struct employee{int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100]; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /*定义各函数*/void main(){menu();int n,flag;char a;do{ printf("请选择你需要操作的步骤(1--7):\n");scanf("%d",&n);if(n>=1 && n<=7){f lag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf(" ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;case 2:printf(" ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;case 3:printf(" ◆◆◆按职工号查询职工信息◆◆◆\n");printf("\n");search();break;case 4:printf(" ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;case 5:printf(" ◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;case 6:printf(" ◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf("是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("请再次选择你需要操作的步骤(1--7):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void menu() /*菜单函数*/{printf(" ************欢迎进入职工信息管理系统**********\n");printf(" 1.录入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");printf(" ********************谢谢使用******************\n"); printf("\n");printf("\n");}void input() /*录入函数*/{ int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号:");scanf("%d",&em[i].num);printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%s",em[i].tel);printf("\n");}printf("\n创建完毕!\n");save(m);}void save(int m) /*保存文件函数*/{int i;FILE*fp;if ((fp=fopen("employee_list","wb"))==NULL){printf ("cannot open file\n");exit(0);}for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() /*导入函数*/{FILE*fp;int i=0;if((fp=fopen("employee_list","rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&em[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /*浏览函数*/{int i;int m=load();printf(" 职工号姓名性别年龄\n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age); printf("\n 学历工资住址电话\n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); }void del() /*删除函数*/{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(em[j].name,em[j+1].name);em[j].num=em[j+1].num;em[j].sex=em[j+1].sex;em[j].age=em[j+1].age;strcpy(em[j].xueli,em[j+1].xueli);em[j].wage=em[j+1].wage;strcpy(em[j].addr,em[j+1].addr);strcpy(em[j].tel,em[j+1].tel);}flag=0;}}}if(!flag)m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m); /*调用保存函数*/display(); /*调用浏览函数*/printf("\n继续删除请按1,不再删除请按0\n");scanf("%d",&t);switch(t){case 1:del();break;case 0:break;default :break;}}void add()/*添加函数*/{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");fp=fopen("emploee_list","a");printf("请输入想增加的职工数:\n");scanf("%d",&n);for (i=m;i<(m+n);i++){printf("\n 请输入新增加职工的信息:\n");printf("请输入职工号: ");scanf("%d",&em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%s",em[i].tel);printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n"); printf("\n");save(m);display();fclose(fp);}void search()/*查询函数*/{int t,flag;do{ printf("\n按职工号查询请按1; 按学历查询请按2; 按电话号码查询请按3;进入主函数请按4\n");scanf("%d",&t);if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){ case 1:printf("按职工号查询\n");search_num();break;case 2:printf("按学历查询\n");search_xueli();break;case 3:printf("按电话号码查询\n");search_tel();break;case 4:main();break;default:break;}}}void search_num(){int num;int i,t;int m=load();printf("请输入要查找的职工号:\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==em[i].num){ printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){ case 1:search();break;case 2: break;default:break;}}void search_xueli(){ char xueli[30];int i,t;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(em[i].xueli,xueli)==0){printf ("\n已找到,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); }if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void search_tel(){ char tel[20];int i, t;printf("请输入要查找的电话号码:\n");scanf("%s",tel);for(i=0;i<m;i++)if(strcmp(tel,em[i].tel)==0){printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void modify() /*修改函数*/{int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];int b,c,i,n,t,flag;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要修改的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历 6.工资7.住址8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/{case 1:printf("职工号改为: ");scanf("%d",&num);em[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);em[i-1].sex=sex;break;DP05b_205_215TC005 092-661解决方案case 4:printf("年龄改为: ");scanf("%d",&age);em[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(em[i-1].xueli,xueli);break;case 6:printf("工资改为: ");scanf("%d",wage);break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(em[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%s",tel);strcpy(em[i-1].tel,tel);break;}printf("\n");printf("\n是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2: \n");scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n继续修改请按1,不再修改请按0\n");scanf("%d",&t);switch(t){case 1:modify();break;case 0:break;default :break; }} 雨滴穿石,不是靠蛮力,而是靠持之以恒。

c程序设计源程序—职工信息管理系统.doc

c程序设计源程序—职工信息管理系统.doc

c++程序设计源程序—职工信息管理系统1#include#include#include#define N 100 /*宏定义N*/struct clerk /*定义结构型clerk*/{char num[12];/*职工号*/char name[9];/*职工姓名*/char sex[3];/*职工性别*/char xl[11];/*职工学历*/char adr[60];/*职工住址*/char tell[13];/*职工电话号码*/int age; /*职工年龄*/int salary; /*职工工资*/}c[N];void menu()/*定义菜单函数并显示菜单*/{printf("\n");printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("\t┃************************************************************┃\n");printf("\t┃************************************************************┃\n");printf("\t┃***************1.输入记录 2.浏览记录***************┃\n");printf("\t┃************** **************┃\n");printf("\t┃***************3.查询记录 4.添加记录***************┃\n");printf("\t┃************** **************┃\n");printf("\t┃***************5.删除记录 6.修改记录***************┃\n");printf("\t┃************** **************┃\n");printf("\t┃*************** 7.退出系统*****************┃\n");printf("\t┃************************************************************┃\n");printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }int enter(int n) /*录入职工信息*/{ int i;char judge;for(i=0;i{printf("开始输入记录!\n"); printf("职工号: ");scanf("%s",c[i].num); printf("姓名: ");scanf("%s",c[i].name); printf("性别: ");scanf("%s",c[i].sex); printf("学历: ");scanf("%s",c[i].xl);printf("住址: ");scanf("%s",c[i].adr); printf("电话: ");scanf("%s",c[i].tell); printf("年龄: ");scanf("%d",&c[i].age);printf("工资: ");scanf("%d",&c[i].salary);printf("\n");getchar();printf("是否继续输入(Y/N)?");/*是否继续输入数据*/ judge=getchar();if(judge=='Y'||judge=='y')continue;elseif(judge=='N'||judge=='n')break;}printf("输入成功,按任意键返回...");getchar();getchar();return i+1;}void display(int a) /*浏览职工信息*/{int i;printf("开始浏览记录!\n");printf(" 职工号姓名性别学历住址电话年龄工资\n"); for(i=0;i{printf("%-12s",c[i].num);printf("%-9s",c[i].name);printf("%-6s",c[i].sex);printf("%-6s",c[i].xl);printf("%-14s",c[i].adr);printf("%-13s",c[i].tell);printf("%-5d",c[i].age);printf("%-6d",c[i].salary);printf("\n");}printf("按任意键返回.......");getchar();getchar();}void locate(int a) /*查询职工信息*/{int choice,i,flag=0;char ch[11];printf("开始查询记录!\n");printf("请选择查找方式:(1.按学历 2.按职工号):"); scanf("%d",&choice); /*输入查找方式*/getchar();switch(choice){case 1:printf("请输入要查职工学历:");/*按职工学历查询*/ gets(ch);printf(" 职工号姓名性别学历住址电话年龄工资\n");for(i=0;i{if(strcmp(ch,c[i].xl)==0) /*比较两个字符串的大小*/{printf("%-12s",c[i].num);printf("%-9s",c[i].name);printf("%-6s",c[i].sex);printf("%-6s",c[i].xl);printf("%-14s",c[i].adr);printf("%-13s",c[i].tell);printf("%-5d",c[i].age);printf("%-6d",c[i].salary);printf("\n");flag=1;}}if(flag==0)printf("无此职工的相关信息!\n"); break;case 2:printf("请输入要查找的职工的职工号:"); /*按职工工号查询*/ gets(ch);printf(" 职工号姓名性别学历住址电话年龄工资\n");for(i=0;i{if(strcmp(ch,c[i].num)==0)/*比较两个字符串的大小*/{printf("%-12s",c[i].num);printf("%-9s",c[i].name);printf("%-6s",c[i].sex);printf("%-6s",c[i].xl);printf("%-14s",c[i].adr);printf("%-13s",c[i].tell);printf("%-5d",c[i].age);printf("%-6d",c[i].salary);printf("\n");flag=1;}}if(flag==0)printf("无此职工的相关信息!\n");break;default:printf("输入错误!");}printf("\n按任意键返回.......");getchar();}int add(int a,int *f) /*插入职工信息*/{int po,i;printf("请输入你在插入的位置(1-%d):",a+1); scanf("%d",&po);if(po>a+1){printf("输入位置有误,按任意键返回.......");return a;}else{printf("开始插入记录!\n"); for(i=a-1;i>=po-1;i--){strcpy(c[i+1].num,c[i].num); strcpy(c[i+1].name,c[i].name); strcpy(c[i+1].sex,c[i].sex); strcpy(c[i+1].xl,c[i].xl);strcpy(c[i+1].adr,c[i].adr); strcpy(c[i+1].tell,c[i].tell);c[i+1].age=c[i].age;c[i+1].salary=c[i].salary;} printf("请输入职工号: "); scanf("%s",c[po].num);getchar();printf("姓名: ");scanf("%s",c[po-1].name); printf("性别: ");scanf("%s",c[po-1].sex); printf("学历: ");scanf("%s",c[po-1].xl); printf("住址: ");scanf("%s",c[po-1].adr); printf("电话: ");scanf("%s",c[po-1].tell); printf("年龄: ");scanf("%d",&c[po-1].age); printf("工资: ");scanf("%d",&c[po-1].salary); printf("\n");*f=1;}if(* f==1){printf("添加成功,按任意键返回......."); getchar();getchar();return a+1;}else{printf("添加失败,按任意键返回......."); getchar();getchar();return a;}}int delet(int a,int *f) /*删除职工信息*/ {int i,po,flag=0;char nu[20];printf("开始删除记录!\n");printf("请输入要删除职工的工号:");/*按职工号删除职工信息*/ getchar(); scanf("%s",nu);/*输入职工号*/for(i=0;i{if(strcmp(nu,c[i].num)==0)/*比较两个字符串的大小*/。

职工信息管理系统c语言课程设计源代码

职工信息管理系统c语言课程设计源代码

课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系图1:进入主菜单界2.输入数字“1”进行录入职工信息:图2:录入职工信息3.输入“y”返回主菜单(界面同图1)。

4.输入“2”浏览职工信息:图4:按职工号查询职工信息图6:按电话号码查询职工信息6.进入主菜单,输入“4”进行删除职工信息:图7:按姓名删除职工信息图8:按职工号删除职工信息7.进入主菜单输入“5”进行添加职工信息:图10:按姓名修改职工信息图11:按职工号修改职工信息9.进入主菜单输入”7”退出职工信息管理系统:附录:#include<stdio.h>//标准输入输出函数库#include<string.h>//字符串函数库#include<stdlib.h>struct employee{int num;//职工号char name[20];//姓名char sex;//性别int age;//年龄char xueli[30];//学历int wage;//工资char addr[30];//家庭住址char tel[20];//联系电话}employee[100];//定义一个结构体int main()//函数主体{void menu();//菜单函数void input();// 录入函数void save(int m);//保存文件函数void display();//浏览函数void del();// 删除函数void del_name();//按姓名删除函数void del_num();//按职工号删除函数void add();//添加函数void search();//查询函数void search_num();//按职工号码查询函数void search_xueli();//按学历查询函数void search_tel();//按号码查询函数void modify();// 修改函数void modify_num();//按员工号修改函数void modify_name();//按姓名修改函数int n,flag;char a;menu();printf("请选择你需要操作的步骤(1--7):\n"); scanf("%d",&n);do{if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf("◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;case 2:printf("◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;case 3:printf("◆◆◆查询职工信息◆◆◆\n");printf("\n");search();break;case 4:printf("◆◆◆删除职工信息◆◆◆\n");printf("\n");();break;case 5:printf("◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;case 6:printf("◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf("是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls");//清屏menu();//调用菜单函数printf("请再次选择你需要操作的步骤(1--7):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void menu() //菜单函数{printf("************欢迎进入职工信息管理系统**********\n");printf("1.录入职工信息");printf("2.浏览职工信息\n");printf("3.查询职工信息");printf("4.删除职工信息\n");printf("5.添加职工信息");printf("6.修改职工信息\n");printf("7.退出\n");printf("********************xx使用******************\n");printf("\n");printf("\n");}void input() //录入函数{int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号: ");scanf("%d",&employee[i].num);printf("请输入姓名: ");scanf("%s",employee[i].name);getchar();printf("请输入性别(f--女 m--男): "); scanf("%c",&employee[i].sex);printf("请输入年龄: ");scanf("%d",&employee[i].age);printf("请输入学历: ");scanf("%s",employee[i].xueli);printf("请输入工资: ");scanf("%d",&employee[i].wage);printf("请输入住址: ");scanf("%s",employee[i].addr);printf("请输入电话: ");scanf("%s",employee[i].tel);printf("\n");}printf("\n创建完毕!\n");save(m);}void save(int m) //保存文件函数{int i;FILE*fp;if ((fp=fopen("employee_list.txt","wb"))==NULL){printf ("cannot open file\n");exit(0);}for (i=0;i<m;i++) //将内存中职工的信息输出到磁盘文件中去if (fwrite(&employee[i],sizeof(struct employee),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //导入函数{FILE*fp;int i=0;if((fp=fopen("employee_list.txt","rb"))==NULL) {printf ("cannot open file\n");exit(0);}else{do{fread(&employee[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);//循环过程中跳出循环时i自动加一,所以要减去一}void display() //浏览函数{int i;int m=load();printf(" 职工号姓名性别年龄学历工资住址电话 \n");for(i=0;i<m;i++) //m为输入部分的职工人数printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);}void del() //删除函数{int t,flag;do{printf("\n按职工号删除请按1; 按姓名删除请按2; 进入主函数请按3\n");scanf("%d",&t);if(t>=1&&t<=3){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!"); }}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号删除\n");del_num();break; case 2:printf("按姓名删除\n");del_name();break; case 3:main();break;default:break;}}}void del_name() //按姓名删除函数{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display(); //调用浏览函数printf("\n");printf("请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(employee[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1)for(j=i;j<m-1;j++){strcpy(employee[j].name,employee[j+1].name);//strcpy(st r1,str2)把str2指向的字符串复制到str1中去employee[j].num=employee[j+1].num;employee[j].sex=employee[j+1].sex;employee[j].age=employee[j+1].age;strcpy(employee[j].xueli,employee[j+1].xueli);employee[j].wage=employee[j+1].wage;strcpy(employee[j].addr,employee[j+1].addr);strcpy(employee[j].tel,employee[j+1].tel);//把下一员工的信息复制到上一个员工信息的位置中去}flag=0;}}if(!flag) //flag取逻辑反,及flag==0m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m);//调用保存函数display(); //调用浏览函数printf("\n不在删除请按0, 返回删除菜单请按1,继续按姓名删除请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:();break;case 2:break;default :break;}}void del_num() //按职工号删除函数{int m=load();int i,j,n,t,flag;int num;printf("\n 原来的职工信息:\n");display(); //调用浏览函数printf("\n");printf("请输入要删除的职工的职工号:\n"); scanf("%d",&num);for(flag=1,i=0;flag&&i<m;i++){if(employee[i].num==num){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(employee[j].name,employee[j+1].name);//strcpy(st r1,str2)把str2指向的字符串复制到str1中去employee[j].num=employee[j+1].num;employee[j].sex=employee[j+1].sex;employee[j].age=employee[j+1].age;strcpy(employee[j].xueli,employee[j+1].xueli);employee[j].wage=employee[j+1].wage;strcpy(employee[j].addr,employee[j+1].addr);strcpy(employee[j].tel,employee[j+1].tel);//把下一员工的信息复制到上一个员工信息的位置中去}flag=0;}}}if(!flag) //flag取逻辑反,及flag==0m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m);//调用保存函数display(); //调用浏览函数printf("\n不在删除请按0,返回删除菜单请按1,继续按职工号删除请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:();break;case 2:break;default :break;}}void add() //添加函数{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");fp=fopen("emploee_list.txt","a");printf("请输入想增加的职工数:\n"); scanf("%d",&n);for (i=m;i<(m+n);i++){printf("\n 请输入新增加职工的信息:\n");scanf("%d",&employee[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",employee[i].name);getchar();printf("请输入性别(f--女 m--男): "); scanf("%c",&employee[i].sex);printf("请输入年龄: ");scanf("%d",&employee[i].age);printf("请输入学历: ");scanf("%s",employee[i].xueli);printf("请输入工资: ");scanf("%d",&employee[i].wage);printf("请输入住址: ");scanf("%s",employee[i].addr);scanf("%s",employee[i].tel);printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n"); printf("\n");save(m);display();fclose(fp);}void search()//查询函数{int t,flag;do{printf("\n按职工号查询请按1; 按学历查询请按2; 按电话号码查询请按3;进入主函数请按4\n");scanf("%d",&t);if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号查询\n");search_num();break; case 2:printf("按学历查询\n");search_xueli();break; case 3:printf("按电话号码查询\n");search_tel();break; case 4:main();break;default:break;}}}void search_num() //按职工号码查询函数{int num;int i,t;int m=load();printf("请输入要查找的职工号:\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==employee[i].num){printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0,返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2: break;default:break;}}void search_xueli() //按职工号码查询函数{char xueli[30];int i,t,n=0;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(employee[i].xueli,xueli)==0){printf("\n已找到,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);n++;}if(i==m&&n==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0,返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2:break;default :break;}}void search_tel() //按号码查询函数{char tel[20];int i, t;int m=load();printf("请输入要查找的电话号码:\n"); scanf("%s",tel);for(i=0;i<m;i++)if(strcmp(tel,employee[i].tel)==0) {printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0;返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2:break;default :break;}}void modify() //修改函数{int t,flag;do{printf("\n按职工号修改请按1; 按姓名修改请按2; 进入主函数请按3\n");scanf("%d",&t);if(t>=1&&t<=3){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号修改\n");modify_num();break;case 2:printf("按姓名修改\n");modify_name();break; case 3:main();break;default:break;}}}void modify_num() //按员工号修改函数{int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];int b,c,i,n,t,flag;int m=load();printf("\n 原来的职工信息:\n");display(); //调用浏览函数printf("\n");printf("请输入要修改的职工的员工号:\n");scanf("%d",&num);for(flag=1,i=0;flag&&i<m;i++){if(num==employee[i].num)//比较两个字符串,{printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.工资 7.住址 8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c)//因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人{case 1:printf("职工号改为: ");scanf("%d",&num);employee[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(employee[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);employee[i-1].sex=sex;break;case 4:printf("年龄改为: ");scanf("%d",&age);employee[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(employee[i-1].xueli,xueli); break;case 6:printf("工资改为: ");scanf("%d",&wage);employee[i-1].wage=wage;break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(employee[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%s",tel);strcpy(employee[i-1].tel,tel);break;}printf("\n");printf("\n是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2: \n");scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n 不在修改请按0, 返回修改函数请按1, 继续修改职工号码请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:modify();break;case 2:break;default :break;}}void modify_name() //按姓名修改函数。

职工信息管理系统C语言课程设计源代码

职工信息管理系统C语言课程设计源代码

职工信息管理系统C语言课程设计源
代码
课程设计报告
(本科)
课程:高级语言课程设计学号:
姓名:
班级:
教师:
时间:
计算机科学与技术系
功能上有对职工信息的增加,删除,浏览,查询,修改等简单的功能. 使用说明及运行实例
1.运行程序,进入职工信息管理系统的主菜单:
图1:进入主菜单界
2.输入数字“1”进行录入职工信息:
图2:录入职工信息
3.输入“y”返回主菜单(界面同图1)。

4.输入“2”浏览职工信息:
图3:浏览职工信息
5.输入“y”后继续,输入“3”进行查询职工信息:
图4:按职工号查询职工信息
5:按学历查询职工信息。

职工信息管理系统C语言课程设计+源代码

职工信息管理系统C语言课程设计+源代码

职工信息管理系统C语言课程设计+源代码课程设计报告课程:高级语言课程设计学号:姓名:班级:教师:时间:设计名称:职工信息管理系统设计内容、目的与要求:本设计旨在熟练掌握C语言的基本知识和编辑技能,基本掌握结构化程序设计的基本思路和方法。

通过编写职工信息管理系统,便于对职工的信息进行管理,训练综合运用函数的自定义,数组,结构体等,并提高程序设计的能力。

要求:设计一个职工信息管理系统,提供以下功能:1.提供一个清晰美观的界面来调用各个功能。

2.录入功能:职工信息录入(职工信息用文件保存),可以一次完成若干条记录的输入。

3.浏览功能:完成对全部职工信息的显示。

4.查找功能:①按职工的职工号查询职工的相关信息,并显示。

②按职工的学历查询职工的相关信息,并显示。

③按职工的电话号码查询职工的相关信息,并显示。

5.删除功能:①通过输入职工的姓名完成对该名职工的信息进行删除。

②通过输入职工号完成对该名职工的信息进行删除。

6.添加功能:完成添加新职工的信息的任务。

7.修改功能:①通过输入职工的姓名完成对该名职工的信息进行修改。

②通过输入职工号完成对该名职工的信息进行修改。

8.退出职工信息管理系统。

计划与进度安排:2012年12月8日至2012年12月15日:仔细研究数据库相关知识,通过上网查资料找思路。

2012年12月16日至2012年12月20日:完成设计思路并作出草稿,编写主函数和各调用函数模块。

2012年12月21日至2013年1月1日:逐步实现各模块的功能化,实现整个程序大体功能。

2013年1月2日至2013年1月6日:修改并完善各功能,编写电子实验报告,并准备提交验收。

设计过程、步骤:一、功能结构1.职工信息管理系统开始菜单根据菜单输入的值选择程序1.录入职工信息2.浏览职工信息3.查询职工信息5.添加职工信息4.删除职工信息6.修改职工信息7.退出1.按职工号查询2.按学历查询3.按号码查询1.按职工号删除2.按职工姓名删除1.按职工号修改2.按职工姓名修改二、设计说明1.这个程序需要使用结构体来存储职工信息。

C语言课程设计职工工资信息管理系统源代码

C语言课程设计职工工资信息管理系统源代码

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#define N 10000int choice;struct employee{int num;int position;char name[10000];char sex[2];int salary;int i,max,t;}em[N];struct empsalary{char name[10000];int salary;}emps[N];void manage();void query();void input();void display();void change();void del();void add();void paixu();int changeposition();int changesalary();void querysalary();void creat();void main(){do{printf("欢迎进入职工管理系统中文版\n"); printf("请你选择操作类型:\n");printf("1进入管理系统\n");printf("2进入查询系统\n");printf("0退出系统\n");scanf("%d",&choice);switch(choice){case 1:manage();break;case 2:query();break;case 0:{printf("谢谢使用,再见\n");exit(0);}default:{printf("输入有错误请重新输入:\n");return;}}}while(1);}void manage(){int choicemanage;char choice='y';while(choice=='y'||choice=='Y'){printf("欢迎进入管理系统\n");printf("请你选择操作类型:\n");printf("1输入职工信息\n");printf("2显示职工信息\n");printf("3修改职工信息\n");printf("4追加一个职工信息\n");printf("5删除一个职工信息\n");printf("6排序\n");printf("0返回\n");scanf("%d",&choicemanage);switch(choicemanage){case 1:input();break;case 2:display();break;case 3:change();break;case 4:add();break;case 5:del();case 6:paixu();break;case 0:printf("谢谢你的使用再见\n");return;default:printf("你的输入有错请重新输入\n"); }printf("是否继续管理?(y/n)");scanf("%s",&choice);}if(toupper(choice)=='N'||(choice)=='n'){printf("输入完毕,任意键返回\n");getch();return;}}void input(){FILE *fp;int i=0;char choiceinput='y';if((fp=fopen("employee.txt","w"))==NULL) return;while(choiceinput=='y'||choiceinput=='Y'){i++;printf("第%d个职工\n",i);printf("\n");printf("请你输入工号:\n");scanf("%d",&em[i].num);printf("\n");printf("请你输入职位:\n");printf("1董事长2总经理3副总经理\n");printf("4经理5副经理6秘书\n");printf("7技术员8领班9员工\n");scanf("%d",&em[i].position);printf("\n");printf("请你输入姓名:\n");scanf("%s",em[i].name);printf("\n");printf("请你输入性别以m为男f为女:\n");scanf("%s",em[i].sex);printf("\n");printf("请你输入工资:\n");scanf("%d",&em[i].salary);printf("\n");printf("是否继续输入?(y/n)\n");scanf("%s",&choiceinput);fwrite(&em[i],sizeof(struct employee),1,fp);}if(toupper(choiceinput)=='N'){fclose(fp);printf("输入完毕,任意键返回\n");getch();return;}}void display(){FILE *fp;int i;if((fp=fopen("employee.txt","r"))==NULL)return;printf("输出结果:\n");for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++) {printf("工号%d\n",em[i].num);printf("职位为%d\n",em[i].position);printf("1董事长2总经理3副总经理\n");printf("4经理5副经理6秘书\n");printf("7技术员8领班9员工\n");printf("姓名为%s\n",em[i].name);printf("性别为%s\n",em[i].sex);printf("其中m为男f为女\n");printf("工资为%d\n",em[i].salary);}printf("完毕按任意键返回\n");getch();fclose(fp);return;}void change(){FILE *fp;int i;char chname[8];int choicechange;printf("请你输入要修改的人的姓名:\n");scanf("%s",&chname);if((fp=fopen("employee.txt","w+"))==NULL){printf("不能够打开这个文件\n");return;}for(i=0;i<N;i++){if(strcmp(chname,em[i].name)==0){printf("这是你要修改的人的信息\n");printf("工号为%d\n 职位为%d\n 姓名为%s\n 性别为%s\n 工资为%d\n",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].salary);printf("请你输入要修改的部分:\n");printf("1修改职位\n");printf("2修改工资\n");printf("0退出系统\n");printf("请选择\n");scanf("%d",&choicechange);switch(choicechange){case 1:em[i].position=changeposition();break;case 2:em[i].salary=changesalary();break;case 0:return;default :printf("输入有错误");}fwrite(&em[i],sizeof(struct employee),1,fp); }}fclose(fp);printf("操作完成按任意键返回\n");getch();return;}int changeposition(){int newposition;printf("请你输入新职位:\n");printf("1董事长2总经理3副总经理\n"); printf("4经理5副经理6秘书\n"); printf("7技术员8领班9员工\n"); scanf("%d",&newposition);return(newposition);}int changesalary(){int newsalary;printf("请你输入新的工资:\n");scanf("%d",&newsalary);return(newsalary);}void add(){struct employee emp;FILE *fp;int i=0;if((fp=fopen("employee.txt","ab+"))==NULL){printf("不能够打开这个文件\n");getch();return;}printf("请你输入新人的内容:\n");printf("请你输入工号:\n");scanf("%d",&em[i].num);printf("请你输入职位:\n");printf("1董事长2总经理3副总经理\n");printf("4经理5副经理6秘书\n");printf("7技术员8领班9员工\n");scanf("%d",&emp.position);printf("请你输入姓名:\n");scanf("%s",);printf("请你输入性别以m为男f为女:\n");scanf("%s",emp.sex);printf("请你输入工资:\n");scanf("%d",&emp.salary);fwrite(&emp,sizeof(struct employee),1,fp);rewind(fp);printf("插入完毕,按任意键返回\n");getch();fclose(fp);return;}void del(){int i=0;char delname[8];FILE *fp;if((fp=fopen("employee.txt","w"))==NULL){printf("文件为空,不能够打开\n");printf("按任意键返回\n");getch();return;}printf("请你输入要删除的人的姓名:\n");scanf("%s",delname);for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++) {if(strcmp(em[i].name,delname)!=0)fwrite(&em[i],sizeof(struct employee),1,fp);}fclose(fp);if((fp=fopen("employee.txt","r"))==NULL)return;printf("新的职工的信息为:\n");for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++) {printf("工号%d",em[i].num);printf("职位为%d",em[i].position);printf("1董事长2总经理3副总经理\n");printf("4经理5副经理6秘书\n");printf("7技术员8领班9员工\n");printf("姓名为%s\n",em[i].name[8]);printf("性别为%s\n",em[i].sex[2]);printf("其中m为男f为女\n");printf("工资为%d\n",em[i].salary);fclose(fp);}}void query(){FILE *fp;int i=0;char quename[8];if((fp=fopen("employee.txt","r"))==NULL){printf("不能够打开文件,按任意键返回\n");getch();return;}printf("请你输入要查询的人的姓名\n");scanf("%s",quename);for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++) {if(strcmp(em[i].name,quename)==0){printf("\t\t\n查询到的职工号或姓名为的信息如下:\n");printf("以下是你要查询的人的信息\n");printf("工号%d",em[i].num);printf("职位为%d",em[i].position);printf("\t 1董事长2总经理3副总经理\n");printf("\t 4经理5副经理6秘书\n");printf("\t 7技术员8领班9员工\n");printf("姓名为%s\n",em[i].name);printf("性别为%s\n",em[i].sex);printf("\t其中m为男f为女\n");printf("工资为%d\n",em[i].salary);printf("\n");printf("查询完毕,按任意键返回\n");getch();fclose(fp);return;}}printf("没有这样的人,按任意键返回\n");getch();fclose(fp);return;}void querysalary(){int i;FILE *fp1,*fp2;creat();if((fp1=fopen("employee.txt","w+"))==NULL)return;for(i=0;fread(&em[i],sizeof(struct employee),1,fp1)!=0;i++) {printf("输出结果为:\n");printf("工号%d",em[i].num);printf("职位为%d",em[i].position);printf(" 1董事长2总经理3副总经理\n");printf(" 4经理5副经理6秘书\n");printf(" 7技术员8领班9员工\n");printf("姓名为%s\n",em[i].name[8]);printf("性别为%s\n",em[i].sex[2]);printf("其中m为男f为女\n");printf("工资为%d\n",em[i].salary);strcpy(emps[i].name,em[i].name);emps[i].salary=em[i].salary;}if((fp2=fopen("empsalary.txt","w"))==NULL)return;for(i=0;i<N;i++)fwrite(&emps[i],sizeof(struct empsalary),1,fp2);fclose(fp1);fclose(fp2);}void creat(){FILE *fp;if((fp=fopen("D:\\employee.txt","w+"))==NULL)return;input();fclose(fp);}void paixu(){int max,i,t,j;for(i=1;i<10;i++){max=em[i].salary;for(j=i;j<10;j++){if(em[j].salary>max){max=em[j].salary;t=em[j].salary;em[j].salary=t;}}}printf("姓名工资工号性别职位\n");for(i=1;i<10;i++)printf(" %s %d %d %s %d\n ",em[i].name,em[i].salary,em[i].num,em[i].sex,em[i].position);}。

c语言课程设计 职工信息管理系统

c语言课程设计   职工信息管理系统

C语言课程设计1.设计题目:职工信息管理系统2. 系统功能简介:系统以菜单方式工作1)职工信息录入(文件保存职工信息)2)输出职工信息、浏览职工信息3)查询职工信息4)根据员工号查找职工信息5)根据工资、年龄、性别对职工信息进行排序6)删除职工信息3. 设计实施:#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct Empk{int EmpNum; /* staff number */char EmpName[12]; /* name*/int Sex; /*sex 1- woman 2- man*/int Old; /* old*/int Cult; /*education background 1-specilist 2-doctor 3-others*/ int Salary; /*salary*/char Address[12]; /* address*/int Tell; /*telephone number*/}Emp;Emp emp[100];void open(){int i;FILE *fp;if((fp=fopen("wyl","rb+"))==NULL){printf("can not do it! Because of no file of information\n"); exit(0);}for(i=0;i<100;i++){if(fread(&emp[i],sizeof(Emp),1,fp)==0){printf("Fail to output\n");exit(0);}}fclose(fp);}void close() /*跳出*/{int i;FILE *fp;if((fp=fopen("wyl","wr+"))==NULL){printf("can not do it!\n");exit(0);}for(i=0;i<100;i++)fwrite(&emp[i],sizeof(Emp),1,fp);fclose(fp);}void inputEmpInfo() /*输入信息*/{int i,k;for(i=0;i<100;i++){printf("Please enter the staff's :\nnumber:");scanf("%d",&emp[i].EmpNum);printf("\nname:");scanf("%s",emp[i].EmpName);printf("\nsex : 1- woman 2- man:");scanf("%d",&emp[i].Sex);printf("\nold:");scanf("%d",&emp[i].Old);printf("\nEducation background:1-specialist 2-doctor 3-others"); scanf("%d",&emp[i].Cult);printf("\nsalary:");scanf("%d",&emp[i].Salary);printf("\naddress:");scanf("%s",emp[i].Address);printf("\ntellphone:");scanf("%d",&emp[i].Tell);printf("continue?(1.yes 2.no)");scanf("%d",&k);if(k==2) break;}close();}void reorder() /*修改*/{int i,s,j,k,l;Emp temp;open();printf("\nChoose which category would you want to use\n1---sex \n2---salary(from maximum to minimum) \n3--old (from maximum to minimum) \n ( enter the corresponding nember) \n)");scanf("%d",&i);switch(i){case 1:printf("\nchoose which sex do you want to inquire? 1--woman 2 --man "); scanf("%d",&s);for(j=0;emp[j].EmpNum!=0;j++){if(emp[j].Sex==s){printf(" number:%d\n",emp[j].EmpNum);printf("name:%s", emp[j].EmpName);printf("\nsex 1- woman 2- man:%d", emp[j].Sex);printf("\nold:%d", emp[j].Old);printf("\neducation background:%d\t\t\t 1-specialist 2-doctor 3-others ",emp[j].Cult);printf("\nsalary:%d", emp[j].Salary);printf("\naddress:%s", emp[j].Address);printf("\ntelephone nember :%d", emp[j].Tell);}}break;case 2:for(k=0;emp[k].EmpNum!=0;j++ ){for(l=k;emp[l].EmpNum!=0;l++){if(emp[l].Salary<emp[l+1].Salary){temp=emp[l];emp[l]=emp[l+1];emp[l+1]=temp;}}printf(" number:%d\n",emp[k].EmpNum);printf("name:%s",emp[k].EmpName);printf("\nsex 1- woman 2- man:%d",emp[k].Sex);printf("\nold:%d",emp[k].Old);printf("\neducation background:%d\t\t\t 1-specialist 2-doctor 3-others ",emp[k].Cult);printf("\nsalary:%d",emp[k].Salary);printf("\nadress:%s",emp[k].Address);printf("\ntelephone nember :%d",emp[k].Tell);}break;case 3:for(k=0;emp[k].EmpNum!=0;j++ ){for(l=k;emp[l].EmpNum!=0;l++){if(emp[l].Old<emp[l+1].Old){temp=emp[l];emp[l]=emp[l+1];emp[l+1]=temp;}}printf(" number:%d\n",emp[k].EmpNum);printf("name:%s",emp[k].EmpName);printf("\nsex 1- woman 2- man:%d",emp[k].Sex);printf("\nold:%d",emp[k].Old);printf("\neducation background:%d\t\t\t 1-specialist 2-doctor 3-others",emp[k].Cult);printf("\nsalary:%d",emp[k].Salary);printf("\naddress:%s",emp[k].Address);printf("\ntelephone nember :%d",emp[k].Tell);}break;}}void show(){int j;open();printf("\n-------------------------informations of sraffs---------------------------\n");{printf("number:%d\n",emp[j].EmpNum);printf("name:%s",emp[j].EmpName);printf("\nsex 1- woman 2- man:%d",emp[j].Sex);printf("\nold:%d",emp[j].Old);printf("\neducation background:%d 1-specialist 2-doctor 3-others ",emp[j].Cult);printf("\nsalary:%d",emp[j].Salary);printf("\nadress:%s",emp[j].Address);printf("\ntelephone nember :%d",emp[j].Tell);}}void deleteEmp(){int j,k,m=1,d,i=0;open();printf("Enter the number whose date you want to delete:\n");scanf("%d",&d);for(j=0;emp[j].EmpNum!=0;j++){if(emp[j].EmpNum==d){for(k=j;emp[j].EmpNum!=0;k++)emp[k]=emp[k+1];i++;}}if(i==0)printf("The staffs informations manage systerm has no date of the number your entered\n");close();printf("succeeed to delete\n");}void findByEmpName() /*查询*/{int j,i,k=0;open();printf("Please enter the number :\n");scanf("%d",&i);{if(emp[j].EmpNum==i){printf("\n-------------------------information of your want---------------------------\n");printf("number:%d\n",emp[j].EmpNum);printf("name:%s",emp[j].EmpName);printf("\nsex 1- woman 2- man:%d",emp[j].Sex);printf("\nold:%d",emp[j].Old);printf("\neducation background:%d\t\t\t\t 1-specialist 2-doctor 3-others",emp[j].Cult);printf("\nsalary:%d",emp[j].Salary);printf("\nadress:%s",emp[j].Address);printf("\ntelephone number:%d",emp[j].Tell);k++;}}if(k==0)printf("\nHave no date of the number\n");}void menu(){printf("\n--------------------------------------------------------------------------\n");printf("\n Wellcome to the staff manage styterm \n");printf("\n-------------------------------------------------------------------------\n");printf("Please choose number for what are you want to do:\n\n");printf("\n 1 ---- input: Complete inputing workers' information.");printf("\n 2 ---- reorder: Make the new order of the information.");printf("\n 3 ---- delete: Delete the information of the staff.");printf("\n 4 ---- output: Display all worker of information.");printf("\n 5 ---- inquire.");printf("\n 0 ---- exit\n");}void main(){int op,choice=1;while(choice==1){menu();printf("\nPlease enter your order:\n");scanf("%d",&op);switch(op){case 1: inputEmpInfo();break;case 2: reorder();break;case 3: deleteEmp();break;case 4: show();break;case 5: findByEmpName();break;case 0: {printf("Welcome to use worker management system, goodbye"); exit(0);}getchar();}printf("\n-------------------------------------------------------------------------\n");printf("\nWhether continue? Yes-1 No--2\n");scanf("%d",choice);}}。

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

//要求用C语言完成课程设计职工信息管理系统—单链表实现#include <stdio.h>#include <stdlib.h>#include <string.h>int saveflag=0; /*是否需要存盘的标志变量*/struct employee{char name[15];char num[10];/* 工号*/char sex[4];char bm[15];char zc[20];int gz;};typedef struct node{struct employee data;struct node *next;}Node,*Link;//Link l (注意是:字母l不是数字1)void add(Link l);void disp(Link l); //查看职工所有信息void del(Link l); //删除功能Node* Locate(Link l,char findmess[],char nameornum[]);void Qur(Link l); //查询功能void Tongji(Link l); //统计void Sort(Link l); //排序void Modify(Link l); //修改功能void save(Link l); //将单链表l中的数据写入文件void printe(Node *p); //本函数用于打印链表中某个节点的数据内容*///以下4个函数用于输出中文标题void printstart();void Wrong();void Nofind();void printc();void menu(){printf("\t*****************************************************************\n");printf("\t**\n");printf("\t* 职工信息管理系统_结构体数组实现*\n");printf("\t**\n")printf("\t* [1] 增加职工信息[2] 删除职工信息*\n");printf("\t* [3] 查询职工信息[4] 修改职工信息*\n");printf("\t* [5] 插入职工记录[6] 统计职工记录*\n");printf("\t* [7] 排序[8] 保存职工信息*\n");printf("\t* [9] 显示数据[0] 退出系统*\n");printf("\t**\n");printf("\t*****************************************************************\n");} //void menu菜单结束void Disp(Link l) //显示单链表l中存储的职工记录,内容为employee结构中定义的内容{int count=0;Node *p;p=l->next; // l存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息if(!p) /*p==NULL,NUll在stdlib中定义为0*/{printf("\n=====>提示:没有职工记录可以显示!\n");return;}printf("\t\t\t\t显示结果\n");printstart(); //打印横线printc(); //打印各学科标题printf("\n");while(p) //逐条输出链表中存储的职工信息{printe(p);p=p->next;}printstart();printf("\n");} //void Disp结束void printstart(){printf("-----------------------------------------------------------------------\n"); }void Wrong(){printf("\n=====>提示:输入错误!\n");}void Nofind(){printf("\n=====>提示:没有找到该职工!\n");}void printc() /* 本函数用于输出中文*/{printf(" 工号\t 姓名性别部门职称工资总工资平均工资\n"); }void printe(Node *p)/* 本函数用于打印链表中某个节点的数据内容*/ {printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->,p->data.sex,p->data.bm,p->data.zc,p->data.gz); }//Locate(l,findmess,"num");/* 该函数用于定位连表中符合要求的结点,并返回该指针*/Node* Locate(Link l,char findmess[],char zcornum[]){Node *r;if(strcmp(zcornum,"num")==0) /* 按工号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的工号*/ return r;r=r->next;}}else if(strcmp(zcornum,"zc")==0) /* 按职称查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.zc,findmess)==0) /*若找到findmess值的职工职称*/ return r;r=r->next;}}return 0; /*若未找到,返回一个空指针*/}//add()函数中,无节点时,r指向list头,有节点时,r指向末尾节点void Add(Link l) /* 增加职工*/{Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/char num[10];int flag=0;r=l;s=l->next; //链表没有节点时,s=null;/链表有节点时,指向第一个职工节点while(r->next!=NULL) //如果存在后继结点时,r指针后移一个r=r->next; /*将指针移至于链表最末尾,准备添加记录*/while(1){printf("请你输入工号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0) //输入'0',跳出while(1),即跳出add()函数break;s=l->next; //作用?每次从第一个节点开始找,看num是否重复。

数据结构课程设计汇本职工信息管理系统单链表实现程序源代码

数据结构课程设计汇本职工信息管理系统单链表实现程序源代码

// 要求用 C 语言完成课程设计职工信息管理系统—单链表实现#include <stdio.h>#include <stdlib.h>#include <string.h> int saveflag=0; /* 是否需要存盘的标志变量*/ struct employee{char name[15];char num[10];/* 工号*/char sex[4];char bm[15];char zc[20];int gz;};typedef struct nodestruct employee data;struct node *next; }Node,*Link;//Link l ( 注意是:字母l 不是数字1)void add(Link l);void disp(Link l); // 查看职工所有信息void del(Link l); // 删除功能Node* Locate(Link l,char findmess[],char nameornum[]);void Qur(Link l); // 查询功能void Tongji(Link l); // 统计void Sort(Link l);// 排序void Modify(Link l); // 修改功能void save(Link l); // 将单链表l 中的数据写入文件void printe(Node *p);// 本函数用于打印链表中某个节点的数据容*/// 以下 4 个函数用于输出中文标题void printstart(); void Wrong();void Nofind();void printc();****************************************************************\n");printf("\t* *\n");printf("\t*职工信息管理系统_ 结构体数组实现*\n");printf("\t**\n")printf("\t*[1]增加职工信息[2] 删除职工信息*\n");printf("\t*[3]查询职工信息[4] 修改职工信息*\n");printf("\t*[5]插入职工记录[6] 统计职工记录*\n");printf("\t*[7]排序[8] 保存职工信息*\n");printf("\t*[9]显示数据[0] 退出系统void menu()printf("\t**\n");printf("\t* *\n");************************************************************** printf("\t***\n");} //void menu 菜单结束void Disp(Link l) // 显示单链表l 中存储的职工记录,容为employee 结构中定义的容{int count=0;Node *p;p=l->next; // l 存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息if(!p) /*p==NULL,NUll 在stdlib 中定义为0*/{printf("\n=====> 提示:没有职工记录可以显示!\n");return;}printf("\t\t\t\t 显示结果\n");printstart();线// 打印横printc(); // 打印各学科标题printf("\n");while(p) // 逐条输出链表中存储的职工信息{printe(p);p=p->next;}printstart();printf("\n");} //void Disp 结束void printstart(){printf(" ------------------------------------------------------------------ ---\n");}void Wrong()printf("\n 提示:输入错误!\n");void Nofind(){printf("\n=====> 提示:没有找到该职工!\n");}void printc() /* 本函数用于输出中文*/{printf(" 工号\t 性别部门职称工资总工资平均工资\n");}void printe(Node *p)/* 本函数用于打印链表中某个节点的数据容*/ { printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->,p->data.sex,p->data.bm,p->data.zc,p-> data.gz); }//Locate(l,findmess,"num");*//* 该函数用于定位连表中符合要求的结点,并返回该指针Node* Locate(Link l,char findmess[],char zcornum[]){Node *r;if(strcmp(zcornum,"num")==0) /* 按工号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0) /* 若找到findmess 值的工号*/return r;r=r->next;}}else if(strcmp(zcornum,"zc")==0) /* 按职称查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.zc,findmess)==0)/* 若找到findmess 值的职工职称*/return r;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//C语言课程设计职工信息管理系统—结构体数组实现#include <stdio.h>#include <stdlib.h>#include <string.h>struct employee{char num[10];char name[15];char sex[5];char bm[20];char zc[20];int gz;};int read_file(struct employee em[]);void menu();void write_file(struct employee em[]);void add();void select(); //查看职工所有信息void zc_query(); //按职称查询void num_del(); //按工号删除void tongji(); //统计void sort(); //排序void num_modify(); //按工号修改职工信息void save(); //保存信息void disp(); //显示职工信息void fh(); //返回主菜单struct employee em[300]; //这个数组用来保存所有的职工信息和文件里面的一致int Number=0; //记录总的职工人数也就是数组/文件里面的职工人数void menu(){printf("\t***********************************************************************\n");printf("\t* *\n");printf("\t* 职工信息管理系统_结构体数组实现*\n");printf("\t* *\n");printf("\t* [1] 增加职工信息 [2] 查看职工信息 *\n");printf("\t* [3] 查找职工信息 [4] 删除职工信息 *\n");printf("\t* [5] 统计 [6] 职工工资排列 *\n");printf("\t* [7] 修改职工信息 [8] 保存职工信息 *\n");printf("\t* [9] 显示职工信息 [0] 退出系统 *\n");printf("\t* *\n");printf("\t***********************************************************************\n");}void main(){int choose=0;FILE *fp=NULL;char yesorno;if((fp=fopen("employee1.txt","rb+"))==NULL){printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n");scanf("%c",&yesorno);if(yesorno=='y'||yesorno=='Y'){//这里仅为了建立文件fp=fopen("employee1.txt","wb+");fclose(fp); //关闭fp所指的文件,释放文件缓冲区}elseexit(0);}else{Number=read_file(em); //要是文件已经有数据将数据初始化到数组中}system("cls");while(1){menu();printf("\t\t====>请选择:");scanf("%d",&choose);system("cls");switch(choose){case 0:exit(0); //退出break;case 1:add();fh();//增加职工信息 break;case 2:select();fh();//查看职工信息 break;case 3:zc_query();fh();// 查找break;case 4:num_del();fh();//删除break;case 5:tongji();fh();//统计break;case 6:sort();fh();//排序break;case 7:num_modify();fh();//修改后返回 break;case 8:save();fh();//保存break;case 9:disp();fh();break;//显示default:break;}fflush(stdin);getchar();system("cls");}}void save(){printf("\t=====程序在运行时已自动保存.....\n");}void fh(){printf("\t===>按Enter键返回主菜单\n");}void num_modify() //修改职工信息{FILE *fp=NULL;char gh[60];int i=0;int changeIndex=0; //changeIndex 改变标记int index=0;printf("请输入要修改的职工工号:");scanf("%s",gh);for (i=0;i<Number;i++){if (strcmp(gh,em[i].num)==0) //比较输入工号和数组中已有工号{changeIndex=i; //保存要修改的人的下标break;}}printf("\t工号\t\t性别\t部门\t职称\t工资\n");printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[changeIndex].num,em[chan geIndex].name,em[changeIndex].sex,em[changeIndex].bm,em[changeIndex]. zc,em[changeIndex].gz);printf("请重新输入该职工信息");printf("工号:");scanf("%s",em[changeIndex].num);printf(":");scanf("%s",em[changeIndex].name);printf("性别:");scanf("%s",em[changeIndex].sex);printf("部门:");scanf("%d",em[changeIndex].bm);printf("职称:");scanf("%s",em[changeIndex].zc);printf("工资:");scanf("%d",&em[changeIndex].gz);//信息修改后重新更新文件里面的数据以保持数据一致性fp=fopen("employee1.txt","wb+");for (i=0;i<Number;i++){fwrite(&em[i],sizeof(struct employee),1,fp); //把ptr所指向n*size个字节输入到fp所指向的文件中}fclose(fp);printf("\t=======>修改成功\n");}void disp() //输出所有职工信息{int i=0;for (i=0;i<Number;i++){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i]. sex,em[i].bm,em[i].zc,em[i].gz);}}void sort()//排序{struct employee t;int wantNUmber=0;int i=0;int j=0;int k=0;for(i=0;i<Number-1;i++){k=i;for(j=i+1;j<Number;j++){if(em[j].gz>em[k].gz)k=j;}if(k!=i){t=em[i];em[i]=em[k];em[k]=t;}}printf("你想输出前几名职工的信息:");scanf("%d",&wantNUmber);if (wantNUmber>Number){wantNUmber=Number;}printf("\t工号\t\t性别\t部门\t职称\t工资\n");for(i=0;i<wantNUmber;i++){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i].sex, em[i].bm,em[i].zc,em[i].gz);}}void tongji()//统计{int i,m,k,max,min;double sum=0.0;for(i=0;i<Number;i++){sum=sum+em[i].gz;}printf("全体职工的总工资为:%f\n",sum);printf("平均工资为:%f\n",sum/Number);i=0;m=0;max=0;max=em[m].gz;for(i=1;i<Number;i++){if (em[i].gz>max)m=i;max=em[m].gz;}printf("最高工资为:%d\n",max);printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[m].num,em[m].name,em[m]. sex,em[m].bm,em[m].zc,em[m].gz);i=0;k=0;min=0;min=em[0].gz;for(i=1;i<Number;i++){if (em[i].gz<min)k=i;min=em[k].gz;}printf("最低工资:%d\n",min);printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[k].num,em[k].name,em[k]. sex,em[k].bm,em[k].zc,em[k].gz);}void num_del()//按工号删除{FILE *fp=NULL;char gh[60];int i=0;int j=0;printf("请输入要删除的职工工号:");scanf("%d",gh);for(i=0;i<Number;i++){if (strcmp(gh,em[i].num)==0) //如果查找到就删除{for (j=i;j<Number-1;j++){em[j]=em[j+1];}Number--;}}//将剩余数据写入文件重新一写的方式打开文件把以前的数据擦除了fp=fopen("employee1.dat","wb");for (i=0;i<Number;i++){fwrite(&em[i],sizeof(struct employee),1,fp);}fclose(fp);printf("删除成功;\n");}void zc_query()//按职称查找{char zc[20];int i=0;printf("请输入要查找职工职称:");scanf("%s",zc);system("cls");printf("\t工号\t\t性别\t部门\t职称\t工资\n");for (i=0;i<Number;i++){if (strcmp(zc,em[i].zc)==0){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i]. sex,em[i].bm,em[i].zc,em[i].gz);}}}void select()//查看职工int i=0;printf("以下是全部职工信息\n");printf("\t工号\t\t性别\t部门\t职称\t工资\n");for(i=0;i<Number;i++){printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[i].num,em[i].name,em[i]. sex,em[i].bm,em[i].zc,em[i].gz);}}void add()//增加职工{int numberTemp=0;int i=0;struct employee temp; //临时保存信息printf("请输入要增加职工信息的个数:");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++){printf("输入第%d个职工信息\n",i+1);printf("工号:");scanf("%s",temp.num);printf(":");scanf("%s",);printf("性别:");scanf("%s",temp.sex);printf("部门:");scanf("%s",temp.bm);printf("职称:");scanf("%s",temp.zc);printf("工资:");scanf("%d",&temp.gz);em[Number++]=temp; //将刚添加的写入到数组write_file(&temp); //将刚添加的写入到文件}printf("添加成功\n");}void write_file(struct employee *em){FILE *fp=NULL;fp=fopen("employee1.txt","rb+");fwrite(em,sizeof(struct employee),1,fp);fclose(fp);}int read_file(struct employee em[]){FILE *fp=NULL;int i=0;fp=fopen("employee1.txt","rb");while(fread(&em[i],sizeof(struct employee),1,fp)) i++;fclose(fp);return i;}《数据结构》课程设计任务书文档。

相关文档
最新文档