职工信息管理系统C语言课程设计源代码
- 格式:doc
- 大小:486.50 KB
- 文档页数:26
//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;}。
课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系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用和结构体等,把学过的知识运用于实践中,而不仅仅停留于对课本的单纯理要学习的东西还有很多。
想完成一项功能解;这次设计也让我知道我懂的太少,就要用很复杂的语句去实现,所以整个程序变的很长,复杂,但是结构体,数组,指针等的灵活运用又可使程序变的易懂。
另外,团队的合作也是成功的一部分!结果找起来和修改,在编写代码时一开始没有运用有意义的函数名和变量我认为最重要的就是耐心和细心。
,也使别人看不懂。
在整个课程设计中,好麻烦细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。
虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设以前好多不懂的也都理解了。
也学会了作为大学生我,计的经历让我学到了太多们也应该学会不仅从课堂上学习知识,还应该学会自学。
#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");}- .- . 可修编.。
课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系修改职工信息,添加职工信息,删除职工信息。
5.执行程序。
结果与分析(可以加页):功能上有对职工信息的增加,删除,浏览,查询,修改等简单的功能. 使用说明及运行实例1.运行程序,进入职工信息管理系统的主菜单:图1:进入主菜单界2.输入数字“1”进行录入职工信息:图2:录入职工信息3.输入“y”返回主菜单(界面同图1)。
4.输入“2”浏览职工信息:图3:浏览职工信息5.输入“y”后继续,输入“3”进行查询职工信息:图4:按职工号查询职工信息5:按学历查询职工信息图6:按电话号码查询职工信息6.进入主菜单,输入“4”进行删除职工信息:图7:按姓名删除职工信息图8:按职工号删除职工信息7.进入主菜单输入“5”进行添加职工信息:图9:添加职工信息8.进入主菜单输入“6”进行修改职工信息:图10:按姓名修改职工信息图11:按职工号修改职工信息9.进入主菜单输入”7”退出职工信息管理系统:图12:退出系统优点是:基本实现了程序的多功能,对与查询职工信息提供了三种方法,对与修改和删除职工信息提供了两种方法,功能多种多样。
旗帜变量的使用也是优点之一;这个程序用到了的结构体,整个程序简单,易懂。
缺点是:保存职工信息有限,程序段比较臃长。
设计体会与建议:通过这次的课程设计,我更加了解C语言,学会更好的使用C语言函数调用和结构体等,把学过的知识运用于实践中,而不仅仅停留于对课本的单纯理解;这次设计也让我知道我懂的太少,要学习的东西还有很多。
想完成一项功能就要用很复杂的语句去实现,所以整个程序变的很长,复杂,但是结构体,数组,指针等的灵活运用又可使程序变的易懂。
另外,团队的合作也是成功的一部分!在编写代码时一开始没有运用有意义的函数名和变量,结果找起来和修改好麻烦,也使别人看不懂。
在整个课程设计中,我认为最重要的就是耐心和细心。
附录:#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");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",&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);}elsedo{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,employee[i].addr,employ ee[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,employee[i].addr,employ ee[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(str1,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:del();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,employee[i].addr,employ ee[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(str1,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:del();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"); printf("请输入职工号: ");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);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()//查询函数{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,employee[i].addr,employ ee[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,employee[i].addr,employ ee[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,employee[i].addr,employ ee[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,employee[i].addr,employ ee[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() //按姓名修改函数{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(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,employee[i].addr,employ ee[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);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;} }。
#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>int main();void save(int N);int load();void change();void input();//录入工人的信息void print();void find_edu();void find_num();void find();int menu();void del();int i,c=0;struct Workers{int job_num;char name[10];char sex[6];int eages;char education[20];int salary;char address[20];char number[15];}worker[100];void input()//录入工人的信息{int N;printf("输入工人的个数:");scanf("%d",&N);for(i=0;i<N;i++){printf("输入第%d个工人的信息: \n",i+1);printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");scanf("%d%s%s%d%s%d%s%s",&worker[i].job_num,worker[i].name,worker[i].sex,&work er[i].eages,worker[i].education,&worker[i].salary,worker[i].address,worker[i].number);printf("\n");fflush(stdin);}save(N);}void save(int N)//将工人的信息存入磁盘{FILE *fp;if((fp=fopen("worker.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}for(i=0;i<N;i++)if(fwrite(&worker[i],sizeof(struct Workers),1,fp)!=1) printf("file write error\n");fclose(fp);}int load()//读盘里的信息{FILE *fp;i=0;if((fp=fopen("worker.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}do{fread(&worker[i],sizeof(struct Workers),1,fp);i++;}while(!feof(fp));fclose(fp);return(i-1);}void print()//浏览工人信息{if(c<=0)c=load();for(i=0;i<c;i++){printf("输出第%d个工人的信息: \n",i+1);printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i]. sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);printf("\n");}}void find_edu()//按工号查询工人信息{int t,flag=0;if(c<=0)c=load();char edu[20];printf("请输入需要查询的学历:");scanf("%s",edu);for(i=0;i<c;i++)if(strcmp(worker[i].education,edu)==0){printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s",worker[i].job_num,worker[i].name,worker[i].sex,wor ker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);printf("\n");flag=1;}if(flag==0)printf("\n对不起,没有找到此工人!\n");printf("\n继续查询学历请按1,返回查询函数请按2\n");scanf("%d",&t);switch(t){case 1:find_edu();break;case 2:find();break;}printf("\n");}void find_num()//按学历查询工人信息{int t,flag=0;if(c<=0)c=load();int num1;printf("请输入需要查询的职工号:");scanf("%d",&num1);for(i=0;i<c;i++){if(worker[i].job_num==num1)printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i].se x,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);flag=1;}if(flag==0)printf("\n对不起,没有找到此工人!\n");printf("\n继续查询学历请按1,返回查询函数请按2\n");scanf("%d",&t);switch(t){case 1:find_num();break;case 2:find();break;}}void find() //查询函数{int a,flag;do{printf("\n******************************************\n");printf("\t按职工号查询请按1 \n \t按学历查询请按2\n \t进入主菜单按3\n");printf("\n******************************************\n");scanf("%d",&a);if(a>0&&a<4){flag=1;break;}else{flag=0;printf("您输入有误,请重新输入!");}}while(flag==0);while(flag==1){switch(a){case 1:find_num();break;case 2:find_edu();break;case 3:main();break;}}}int menu()//创建菜单{int b;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** 0. 退出**\n");printf("\t**************************************\n");do{printf("\n 输入你的选择项(0~5):\n");scanf("%d",&b);}while(b<0||b>5);return b;}void del() //删除函数{if(c<=0)c=load();int j,flag=0,num,a;char ch1,ch2;printf("\n 原来的职工信息:\n");print(); //调用浏览函数printf("\n");printf("请输入要删除的工人的工号:\n");fflush(stdin);scanf("%d",&num);for(i=0;i<c;i++){if(worker[i].job_num==num){printf("已找到该工人,输出工人的信息:\n");printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i]. sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);printf("\n确实要删除此人信息请按Y/y,不删除请按N/n\n");fflush(stdin);scanf("%c",&ch1);if(ch1=='y'||ch1=='Y'){for(j=i;j<c-1;j++){worker[j] = worker[j+1];}printf("你要保存你的修改吗? 保存请按1 不保存请按0\n");scanf("%d",&a);if(a==1){c=c-1;save(c); //调用保存函数c=load();printf("\n浏览改变后的所有工人信息:\n");print();}elseprintf("谢谢你的使用!");}if(ch1=='n'||ch1=='N')printf("谢谢使用!\n");flag=1;}}if(flag==0)printf("对不起,没有找到此工人!\n");printf("\n继续删除请按Y/y,不再删除请按N/n:\n");fflush(stdin);scanf("%c",&ch2);switch(ch2){case 'Y':del();break;case 'y':del();break;case 'N':break;case 'n':break;}}void change() //修改函数{char sex1[10],name1[20],education1[20],address1[30],number1[15];char ch1,ch2;int job_num1,eages1,salary1,num,a;int b,i,t,flag=0;if(c<=0)c=load(); //调用load函数printf("\n 输出原来的职工信息:\n");print(); // 调用浏览函数printf("请输入要修改的工人的工号:\n");fflush(stdin);scanf("%d",&num);for(i=0;i<c;i++){if(worker[i].job_num==num){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name, worker[i].sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].nu mber);printf("\n确实要修改此人信息请按Y/y ; 不修改请按N/n\n");fflush(stdin);scanf("%c",&ch1);if(ch1=='y'||ch1=='Y'){do{printf("\n******************************************\n");printf("\t需要进行修改的选项\n \t1.职工号****** 2.姓名\n \t3.性别****** 4.年龄\n \t5.学历****** 6.工资\n \t7.住址****** 8.电话\n");printf("\n******************************************\n");do{printf("\n 输入你的选择项(1~8):\n");scanf("%d",&b);}while(b<1||b>8);switch(b) //因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人{case 1 :printf("工人的工号改为\n");scanf("%d",&job_num1);worker[i].job_num=job_num1;break;case 2 :printf("工人的名字改为\n");scanf("%s",name1);strcpy(worker[i].name,name1);break;case 3 :printf("工人的性别改为\n");scanf("%s",sex1);strcpy(worker[i].sex,sex1);break;case 4 :printf("工人的年龄改为\n");scanf("%d",&eages1);worker[i].eages=eages1;break;case 5 :printf("工人的学历改为\n");scanf("%s",education1);strcpy(worker[i].education,education1);break;case 6 :printf("工人的工资改为\n");scanf("%d",&salary1);worker[i].salary=salary1;break;case 7 :printf("工人的地址改为\n");scanf("%s",address1);strcpy(worker[i].address,address1);break;case 8 :printf("工人的电话改为\n");scanf("%s",number1);strcpy(worker[i].number,number1);break;}printf("\n是否还要继续修改的信息?\n 继续请按Y/y ; 不重新修改请按N/n: \n");fflush(stdin);scanf("%c",&ch2);}while(ch2=='y'||ch2=='Y');printf("\n你要保存你的修改吗? 保存请按1 不保存请按0\n");scanf("%d",&a);if(a==1){save(c); //调用保存函数printf("\n浏览修改后的职工信息:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i].sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].nu mber);}elseprintf("谢谢你的使用!");}if(ch1=='n'||ch1=='N')printf("谢谢使用!");flag=1;}}if(!flag)printf("\n对不起,没有找到此工人!\n");printf("\n继续修改请按1,不再修改请按2\n");scanf("%d",&t);switch(t){case 1:change();break;case 2:break;}}int main(){printf("\n按任意一键进入菜单........");getch();putchar(10);while(1){switch(menu()) //调用主菜单函数,返回值整数作开关语句的条件{case 1 : input();//工人信息录入system("PAUSE");break;case 2 : print();//浏览工人信息system("PAUSE");break;case 3 : find();//查询工人信息system("PAUSE");break;case 4 : del();//删除工人信息system("PAUSE");break;case 5 : change();//修改工人信息信息system("PAUSE");break;case 0 : exit(0);//退出}}return 0;}。
西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。
二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。
用户密码的修改。
而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。
三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。
2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。
3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。
4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。
5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。
6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。
b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。
C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。
7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。
8.输出现有职工的信息: 会显示现在记录的职工的各项信息。
c语言课程设计报告_员工信息管理系统_结构数组实现程序源代
码。
//C语言课程设计人员信息管理系统-结构数组实现# INCLUDE # INCLUDE # INCLUDE STRUCT EMPLOYEE { Charnum[10];char name[15];迷人的性感[5];[·XXXX日期、教育背景、职位、电话号码、地址等。
系统可以完成员工信息的查询、更新、插入、删除和排序功能。
基本要求和说明
1.员工信息保存在文本文件中
2.排序:
根据不同的关键字对所有员工的信息进行排序,并输出排序结果。
3.询问:
根据特定标准查找员工。
4.更新:
通过编号修改员工的某些信息。
5.插入:
关于添加新员工的信息。
6.删除:
按号码删除已离开公司的员工信息。
计算机科学与信息工程学院欢迎您的来访。
下载后可以修改和编辑word文档。
双击以删除页眉和页脚。
谢谢!简单的教科书内容不能满足学生的需要。
教育中常见
的问题是教大脑的人不使用手,不使用手的人使用大脑,所以他们什么也做不了。
教育革命的对策是手脑联盟。
因此,双手和大脑的力量都是不可思议的。
单词模型divI)。
#include<stdio。
h〉#include〈string〉using namespace std;int sum;struct people{char WorkName[10];char Name[15];char sex[7];char birthday[15];char study[13];char career[9];char income[5];char address[15];char phone[15];}people[10];void PrintEqual(){printf("************************************\n");}void DelDate(int DelNum){int i;for(i=DelNum;i<sum;i++){people[i]=people[i+1];}sum——;}void addEdit(int isEdit,int EditNum){int i;PrintEqual();if (isEdit==0){i=sum;}else if(isEdit==1){i=EditNum;sum--;}printf(”请输入工号姓名性别出生年月学历职务工资住址电话\n”);scanf("%s%s%s%s%s%s%s%s%s",&people[i]。
WorkName,&people[i]。
Name,&people[i]。
sex,&people[i].birthday,&people[i].study,&people[i]。
career,&people [i].income,&people[i].address,&people[i].phone);sum++;PrintEqual();}void ShowItem(int isAll,char Name[15]){int i;PrintEqual();if (sum==0){printf(”没有数据\n");return;}for(i=0;i<sum;i++){if(isAll==1){printf("%d,%s,%s,%s,%s,%s,%s,%s,%s,%s\n”,i,people[i].WorkName,people [i].Name,people[i]。
#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; }} 雨滴穿石,不是靠蛮力,而是靠持之以恒。
课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系功能上有对职工信息的增加,删除,浏览,查询,修改等简单的功能. 使用说明及运行实例1.运行程序,进入职工信息管理系统的主菜单:图1:进入主菜单界2.输入数字“1”进行录入职工信息:图2:录入职工信息3.输入“y”返回主菜单(界面同图1)。
4.输入“2”浏览职工信息:图3:浏览职工信息5.输入“y”后继续,输入“3”进行查询职工信息:图4:按职工号查询职工信息5:按学历查询职工信息图6:按电话号码查询职工信息6.进入主菜单,输入“4”进行删除职工信息:图7:按姓名删除职工信息图8:按职工号删除职工信息7.进入主菜单输入“5”进行添加职工信息:图9:添加职工信息8.进入主菜单输入“6”进行修改职工信息:图10:按姓名修改职工信息图11:按职工号修改职工信息9.进入主菜单输入”7”退出职工信息管理系统:图12:退出系统优点是:基本实现了程序的多功能,对与查询职工信息提供了三种方法,对与修改和删除职工信息提供了两种方法,功能多种多样。
旗帜变量的使用也是优点之一;这个程序用到了的结构体,整个程序简单,易懂。
缺点是:保存职工信息有限,程序段比较臃长。
设计体会与建议:通过这次的课程设计,我更加了解C语言,学会更好的使用C语言函数调用和结构体等,把学过的知识运用于实践中,而不仅仅停留于对课本的单纯理解;这次设计也让我知道我懂的太少,要学习的东西还有很多。
想完成一项功能就要用很复杂的语句去实现,所以整个程序变的很长,复杂,但是结构体,数组,指针等的灵活运用又可使程序变的易懂。
另外,团队的合作也是成功的一部分!在编写代码时一开始没有运用有意义的函数名和变量,结果找起来和修改好麻烦,也使别人看不懂。
在整个课程设计中,我认为最重要的就是耐心和细心。
细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。
虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,以前好多不懂的也都理解了。
也学会了作为大学生我们也应该学会不仅从课堂上学习知识,还应该学会自学。
附录:<> 标准输入输出函数库<> 字符串函数库<>{; 职工号[20]; 姓名; 性别; 年龄[30]; 学历; 工资[30]; 家庭住址[20]; 联系电话}[100]; 定义一个结构体() 函数主体{(); 菜单函数(); 录入函数( m); 保存文件函数(); 浏览函数(); 删除函数(); 按姓名删除函数(); 按职工号删除函数(); 添加函数(); 查询函数(); 按职工号码查询函数(); 按学历查询函数(); 按号码查询函数(); 修改函数(); 按员工号修改函数(); 按姓名修改函数;a;();("请选择你需要操作的步骤(17):\n");("");{(n>=1<=7){1;;}{0;("您输入有误,请重新选择!");}}(0);(1){(n){1(" ◆◆◆输入职工信息◆◆◆\n")("\n")();2(" ◆◆◆浏览职工信息◆◆◆\n")("\n")();3(" ◆◆◆查询职工信息◆◆◆\n")("\n")();4(" ◆◆◆删除职工信息◆◆◆\n")("\n");del();5(" ◆◆◆添加职工信息◆◆◆\n")("\n")();6(" ◆◆◆修改职工信息◆◆◆\n")("\n")();7(0);;}();("\n");("是否继续进行(y n):\n");("");('y'){1;(""); 清屏(); 调用菜单函数("请再次选择你需要操作的步骤(17):\n");("");("\n");}(0);}}() 菜单函数{(" ************欢迎进入职工信息管理系统**********\n"); (" 1.录入职工信息");(" 2.浏览职工信息\n");(" 3.查询职工信息");(" 4.删除职工信息\n");(" 5.添加职工信息");(" 6.修改职工信息\n");(" 7.退出\n");(" ********************谢谢使用******************\n"); ("\n");("\n");}() 录入函数{;("请输入需要创建信息的职工人数(1100):\n");("");(0<){("请输入职工号:");(""[i]);("请输入姓名: ");(""[i]);();("请输入性别(女男): ");(""[i]);("请输入年龄: ");(""[i]);("请输入学历: ");(""[i]);("请输入工资: ");(""[i]);("请输入住址: ");(""[i]);("请输入电话: ");(""[i]);("\n");}("\n创建完毕!\n");(m);( m) 保存文件函数{i;*;((("",""))){(" \n");(0);}(0<) 将内存中职工的信息输出到磁盘文件中去(([i]( ),1)1)(" \n");();}() 导入函数{*;0;((("",""))){(" \n");(0);}{{([i]( ),1);;}(()0);}();(1)循环过程中跳出循环时i自动加一,所以要减去一}() 浏览函数{();(" 职工号姓名性别年龄学历工资住址电话\n");(0<) 为输入部分的职工人数(" \n"[i][i][i],[i][i][i][i][i]);}() 删除函数{;{("\n按职工号删除请按1; 按姓名删除请按2; 进入主函数请按3\n");("");(t>=1<=3){1;;}{0;("您输入有误,请重新选择!");}}(0);(1){(t){1("按职工号删除\n")();2("按姓名删除\n")();3();;}}}() 按姓名删除函数{;[20];("\n 原来的职工信息:\n");(); 调用浏览函数("\n");("请输入要删除的职工的姓名:\n");("");(10<){(([i])0){("\n已找到此人,原始记录为:\n");(" 职工号姓名性别年龄学历工资住址电话\n");(" \n"[i][i][i],[i][i][i][i][i]);("\n确实要删除此人信息请按1,不删除请按0\n");("");(1){(<1){([j][1])(12)把2指向的字符串复制到1中去[j][1];[j][1];[j][1];([j][1]);[j][1];([j][1]);([j][1])把下一员工的信息复制到上一个员工信息的位置中去}0;}}}() 取逻辑反,及01;("\n对不起,查无此人!\n");("\n 浏览删除后的所有职工信息:\n");(m); 调用保存函数(); 调用浏览函数("\n不在删除请按0, 返回删除菜单请按1,继续按姓名删除请按2\n"); ("");{0();1:del();2;;}}() 按职工号删除函数{();;;("\n 原来的职工信息:\n");(); 调用浏览函数("\n");("请输入要删除的职工的职工号:\n");("");(10<){([i]){("\n已找到此人,原始记录为:\n");(" 职工号姓名性别年龄学历工资住址电话\n");(" \n"[i][i][i],[i][i][i][i][i]);("\n确实要删除此人信息请按1,不删除请按0\n");("");(1){(<1){([j][1])(12)把2指向的字符串复制到1中去[j][1];[j][1];[j][1];([j][1]);[j][1];([j][1]);([j][1])把下一员工的信息复制到上一个员工信息的位置中去}0;}}() 取逻辑反,及01;("\n对不起,查无此人!\n");("\n 浏览删除后的所有职工信息:\n");(m); 调用保存函数(); 调用浏览函数("\n不在删除请按0,返回删除菜单请按1,继续按职工号删除请按2\n"); ("");(t){0();1:del();2;;}}() 添加函数{*;n;0;i;();("\n 原来的职工信息:\n");();("\n");("","a");("请输入想增加的职工数:\n");("");(<()){("\n 请输入新增加职工的信息:\n");("请输入职工号: ");(""[i]);("\n");("请输入姓名: ");(""[i]);();("请输入性别(女男): ");(""[i]);("请输入年龄: ");(""[i]);("请输入学历: ");(""[i]);("请输入工资: ");(""[i]);("请输入住址: ");(""[i]);("请输入电话: ");(""[i]);("\n");1;("已增加的人数:\n");("\n");}("\n添加完毕!\n");;("\n浏览增加后的所有职工信息:\n");("\n");(m);();();}()查询函数{;{("\n按职工号查询请按1; 按学历查询请按2; 按电话号码查询请按3;进入主函数请按4\n");("");(t>=1<=4){1;;}{0;("您输入有误,请重新选择!");}(0);(1){(t){1("按职工号查询\n")();2("按学历查询\n")();3("按电话号码查询\n")();4();;}}}() 按职工号码查询函数{;;();("请输入要查找的职工号:\n");("");(0<)([i]){("\n已找到此人,其记录为:\n");(" 职工号姓名性别年龄学历工资住址电话\n");(" \n"[i][i][i],[i][i][i][i][i]);;}()("\n对不起,查无此人\n");("\n");("不在查询请按0,返回查询函数请按1,继续查询职工号请按2\n");("");(t){0();2: ;;}}() 按职工号码查询函数{[30];0;();("请输入要查找的学历:\n");("");(0<)(([i])0){("\n已找到,其记录为:\n");(" 职工号姓名性别年龄学历工资住址电话\n");(" \n"[i][i][i],[i][i][i][i][i]);;}()("\n对不起,查无此人\n");("\n");("不在查询请按0,返回查询函数请按1,继续查询学历请按2\n");("");(t){0();1();2;;}}() 按号码查询函数{[20];i, t;();("请输入要查找的电话号码:\n");(0<)(([i])0){("\n已找到此人,其记录为:\n");(" 职工号姓名性别年龄学历工资住址电话\n");(" \n"[i][i][i],[i][i][i][i][i]);;}()("\n对不起,查无此人\n");("\n");("不在查询请按0;返回查询函数请按1,继续查询电话号码请按2\n");("");(t){0();1();2;;}}() 修改函数{;{("\n按职工号修改请按1; 按姓名修改请按2; 进入主函数请按3\n");("");(t>=1<=3){1;;}{0;("您输入有误,请重新选择!");}}(0);{(t){1("按职工号修改\n")();2("按姓名修改\n")();3();;}}}() 按员工号修改函数{;[20];;;[30];;[30];[20];;();("\n 原来的职工信息:\n");(); 调用浏览函数("\n");("请输入要修改的职工的员工号:\n");("");(10<){([i])比较两个字符串,{("\n已找到此人,原始记录为:\n");(" 职工号姓名性别年龄学历工资住址电话\n");(" \n"[i][i][i],[i][i][i][i][i]);("\n确实要修改此人信息请按1 ; 不修改请按0\n");("");(1){("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历6.工资7.住址8.电话\n");("请输入你想修改的那一项序号:\n");("");(c>8<1)("\n选择错误,请重新选择!\n");}0;}}(1)("\n对不起,查无此人!\n");{(c) 因为当找到第i个职工时语句后i自加了1,所以下面的应该把改后的信息赋值给第1个人{1("职工号改为: ");("");[1];;2("姓名改为: ");("");([1]);;3("性别改为: ");();("");[1];;4("年龄改为: ");("");[1];;5("学历改为: ");("");([1]);;6("工资改为: ");("");[1];;7("住址改为: ");("");([1]);;8("电话改为: ");("");([1]);;}("\n");("\n是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2: \n"); ("");}(2);("\n浏览修改后的所有职工信息:\n");("\n");(m);();("\n 不在修改请按0, 返回修改函数请按1, 继续修改职工号码请按2\n");("");(t){0();1();2;;}}() 按姓名修改函数{;[20];;;[30];;[30];[20];;();("\n 原来的职工信息:\n");(); 调用浏览函数("\n");("请输入要修改的职工的姓名:\n");("");(10<){(([i])0)比较两个字符串,{("\n已找到此人,原始记录为:\n");(" 职工号姓名性别年龄学历工资住址电话\n");(" \n"[i][i][i],[i][i][i][i][i]);("\n确实要修改此人信息请按1 ; 不修改请按0\n");("");(1){("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历6.工资7.住址8.电话\n");("请输入你想修改的那一项序号:\n");("");(c>8<1)("\n选择错误,请重新选择!\n");}0;}}(1)("\n对不起,查无此人!\n");{(c) 因为当找到第i个职工时语句后i自加了1,所以下面的应该把改后的信息赋值给第1个人{1("职工号改为: ");("");[1];;2("姓名改为: ");("");([1]);;3("性别改为: ");();("");[1];;4("年龄改为: ");("");[1];;5("学历改为: ");("");([1]);;6("工资改为: ");("");[1];;7("住址改为: ");("");([1]);;8("电话改为: ");("");([1]);;}("\n");("\n是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2: \n"); ("");}(2);("\n浏览修改后的所有职工信息:\n");("\n");(m);();("\n 不在修改请按0, 返回修改函数请按1, 继续修改职工姓名请按2\n");("");(t){0();1();2;;}}。