第一篇:C语言课程设计 职工信息管理系统 结构体数组实现程序源代码
//C语言课程设计 职工信息管理系统—结构体数组实现 #include
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所指的文件,释放文件缓冲区
} else
exit(0);} else {
Number=read_file(em);//要是文件已经有数据 将数据初始化到数组中 } system(“cls”);while(1){ menu();printf(“tt====>请选择:”);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 if(strcmp(gh,em[i].num)==0)//比较输入工号和数组中已有工号 { changeIndex=i;//保存要修改的人的下标 break; } } printf(“t工号t姓名t性别t部门t职称t工资n”);printf(“t%st%st%st%st%st%dnn”,em[changeIndex].num,em[changeIndex].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 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 printf(“t%st%st%st%st%st%dnn”,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 for(j=i+1;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 printf(“t%st%st%st%st%st%dnn”,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 if(em[i].gz>max) m=i; max=em[m].gz;} printf(“最高工资为:%dn”,max);printf(“t%st%st%st%st%st%dnn”,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 if(em[i].gz k=i; min=em[k].gz;} printf(“最低工资:%dn”,min);printf(“t%st%st%st%st%st%dnn”,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 if(strcmp(gh,em[i].num)==0)//如果查找到就删除 { for(j=i;j { em[j]=em[j+1]; } Number--; } } //将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了 fp=fopen(“employee1.dat”,“wb”);for(i=0;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 if(strcmp(zc,em[i].zc)==0) { printf(“t%st%st%st%st%st%dnn”,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 printf(“t%st%st%st%st%st%dnn”,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 printf(“输入第%d个职工信息n”,i+1); printf(“工号:”); scanf(“%s”,temp.num); printf(“姓名:”); scanf(“%s”,temp.name); 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语言课程设计 职工信息管理系统—单链表实现 #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(“tttt显示结果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%st%st%dt%dt%dt %dt %dn”,p->data.num,p->data.name,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是否重复。 while(s)//工号重复时,返回主菜单 { if(strcmp(s->data.num,num)==0) { printf(“=====>提示:工号为'%s'的职工已经存在,若要修改请你选择'4 修改'!n”,num); flag=1;//break; return; } s=s->next; } //while(s) p=(Node *)malloc(sizeof(Node));//生成没赋值的新节点 p strcpy(p->data.num,num); printf(“请你输入姓名:”); scanf(“%s”,p->data.name); getchar(); printf(“请你输入性别:”); scanf(“%s”,p->data.sex); getchar(); printf(“请你输入职工所在部门:”); scanf(“%d”,&p->data.bm); getchar(); printf(“请你输入职工职称:”); scanf(“%d”,&p->data.zc); getchar(); printf(“请你输入职工工资:”); scanf(“%d”,&p->data.gz); getchar(); /* 信息输入已经完成 */ p->next=NULL;/*表明这是链表的尾部结点*/ r->next=p;/*将新建的结点加入链表尾部中*/ r=p; saveflag=1;} //while(1)} //void Add增加结束 void Del(Link l)/* 删除 */ { int sel;Node *p,*r;/*实现删除操作的临时的结构体指针变量*/ char findmess[20]; if(!l->next)//当list无后继结点时,提示和结束返回del(){ printf(“n=====>提示:没有记录可以删除!n”); return;} printf(“n=====>1按工号删除n=====>2按姓名删除n”);scanf(“%d”,&sel);if(sel==1)//按工号删除 { printf(“请你输入要删除的工号:”); scanf(“%s”,findmess); p=Locate(l,findmess,“num”); if(p) { r=l; while(r->next!=p) r=r->next;//从第一个结点找起,直到发现r->next=p, 删除结点,跳出循环 r->next=p->next;//r r->next(p)p->next free(p); printf(“n=====>提示:该职工已经成功删除!n”); saveflag=1; } else Nofind();//显示一句话 } //if(sel==1)else if(sel==2)//按姓名删除 { 是待 printf(“请你输入要删除的姓名:”); scanf(“%s”,findmess); p=Locate(l,findmess,“name”); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next;//r r->next(p)p->next free(p); printf(“n=====>提示:该职工已经成功删除!n”); saveflag=1; } else Nofind();} //if(sel==2)else Wrong();//显示输入错误的话 } //void Del删除结束 void Qur(Link l)//查询功能 { int sel;char findmess[20];Node *p;//实现查询操作的临时的结构体指针变量 if(!l->next){ printf(“n=====>提示:没有资料可以查询!n”); return;} printf(“n=====>1按工号查找n=====>2按职称查找n”);scanf(“%d”,&sel); if(sel==1)/* 工号 */ { printf(“请你输入要查找的工号:”); scanf(“%s”,findmess); p=Locate(l,findmess,“num”); if(p) { printf(“tttt查找结果n”); printstart();//打印横线 printc();//打印各学科标题 printe(p);//打印p结点各个数据成员的值 printstart();//打印横线 } else Nofind();} //if(sel==1) else if(sel==2)/* 职称 */ { printf(“请你输入要查找的职称:”); scanf(“%s”,findmess); p=Locate(l,findmess,“zc”); if(p) { printf(“tttt查找结果n”); printstart(); printc(); printe(p); printstart(); } else Nofind();} else Wrong();} //void Qur查询结束 void Modify(Link l)//修改功能 { Node *p;char findmess[20];if(!l->next){ printf(“n=====>提示:没有资料可以修改!n”); return;} printf(“请你输入要修改的职工工号:”);scanf(“%s”,findmess);p=Locate(l,findmess,“num”); if(p){ printf(“请你输入新工号(原来是%s):”,p->data.num); scanf(“%s”,p->data.num); printf(“请你输入新姓名(原来是%s):”,p->data.name); scanf(“%s”,p->data.name); getchar(); printf(“请你输入新性别(原来是%s):”,p->data.sex); scanf(“%s”,p->data.sex); getchar(); printf(“请你输入新的部门(原来是%s):”,p->data.bm); scanf(“%d”,&p->data.bm); printf(“请你输入新的职称(原来是%s):”,p->data.zc); scanf(“%d”,&p->data.zc); getchar(); printf(“请你输入新的工资(原来是%d):”,p->data.gz); scanf(“%d”,&p->data.gz); printf(“n=====>提示:资料修改成功!n”); //shoudsave=1;} else Nofind();//if(p)结束 } //void Modify(Link l)//修改功能结束 //插入记录:按工号查询到要插入的节点的位置,然后在该工号之后插入一个新节点。 void Insert(Link l){ Node *s,*r,*p;/*p指向插入位置,p指新插入记录节点*/ char ch,new_num[10],old_num[10];//old_num[]保存插入点位置之前的工号,new_num[]保存输入的新记录的工号 int flag=0;s=l->next;system(“cls”);Disp(l); while(1){ //stringinput(s,10,“please input insert location after the Number:”); printf(“请你输入已存在的工号(以'0'返回上一级菜单:)”); scanf(“%s”,old_num); if(strcmp(old_num,“0”)==0)//输入'0',跳出while(1),即跳出Insert()函数 return; s=l->next;//作用? 每次从第一个节点开始找 flag=0; while(s)/*查询该工号是否存在,flag=1表示该工号存在*/ { if(strcmp(s->data.num,old_num)==0) { flag=1; break; } s=s->next; } if(flag==1) break;/*若工号存在,则进行插入之前的新记录的输入操作*/ else { getchar(); printf(“n=====>The number %s is not existing,try again?(y/n):”,old_num); scanf(“%c”,&ch); if(ch=='y'||ch=='Y') {continue;} else {return;} //回主菜单 } }//while(1)/*以下新记录的插入新节点,工号不能跟已存在的工号相同,操作与Add()相同*/ printf(“请你输入待插入的工号(以'0'返回上一级菜单:)”);scanf(“%s”,new_num);if(strcmp(new_num,“0”)==0)//输入'0',跳出while(1),即跳出add()函数 return;s=l->next;//作用? 每次从第一个节点开始找,看num是否重复。 while(s)//工号重复时,返回主菜单 { if(strcmp(s->data.num,new_num)==0) { printf(“=====>提示:工号为'%s'的职工已经存在'!n”,new_num); flag=1; return; } s=s->next;} //while(s) p=(Node *)malloc(sizeof(Node));if(!p){ printf(“n allocate memory failure ”);/*如没有申请到,打印提示信息*/ return;/*返回主界面*/ } strcpy(p->data.num,new_num);printf(“请你输入姓名:”);scanf(“%s”,p->data.name);getchar();printf(“请你输入性别:”);scanf(“%s”,p->data.sex);getchar();printf(“请你输入部门:”);scanf(“%d”,&p->data.bm);getchar();printf(“请你输入职称:”);scanf(“%d”,&p->data.zc);getchar();printf(“请你输入工资:”);scanf(“%d”,&p->data.gz);getchar();// 信息输入已经完成 p->next=NULL;/*表明这是链表的尾部结点*/ saveflag=1;/*在main()有对该全局变量的判断,若为1,则进行存盘操作*/ /*将指针赋值给r,因为l中的头节点的下一个节点才实际保存着学生的记录*/ r=l->next;while(1){ if(strcmp(r->data.num,old_num)==0)/*在链表中插入一个节点*/ { p->next=r->next; r->next=p; break; } r=r->next;}// while(1),r作为查询指针,依次从第一个节点找起,找到后 跳出 while(1)循环 Disp(l);printf(“nn”);// getchar(); } void Tongji(Link l)//统计 { Node *max,*min;/*用于指向工资最高的节点*/ Node *t=l->next;if(!t){ system(“cls”); printf(“n=====>Not employee record!n”); getchar(); return;} system(“cls”);Disp(l);max=min=t;while(t){ if(t->data.gz>=max->data.gz)max=t; if(t->data.gz<=min->data.gz)min=t; t=t->next; printf(“最高工资为:%dn”,max); printf(“t%st%st%st%st%st%dnn”,t->data.num,t->data.name,t->data.sex,t->data.bm,t->data.zc,t->data.gz);printf(“最低工资为:%dn”,min); printf(“t%st%st%st%st%st%dnn”,t->data.num,t->data.name,t->data.sex,t->data.bm,t->data.zc,t->data.gz);} } void Sort(Link l)//排序 { Link ll;Node *p,*rr,*s;int i=0;if(l->next==NULL){ system(“cls”);printf(“n=====>Not employee record!n”);getchar();return;} ll=(Node*)malloc(sizeof(Node));/*用于创建新的节点*/ if(!ll){ printf(“n allocate memory failure ”);/*如没有申请到,打印提示信息*/ return;/*返回主界面*/ } ll->next=NULL;system(“cls”);Disp(l);/*显示排序前的所有职工记录*/ p=l->next;while(p)/*p!=NULL*/ { s=(Node*)malloc(sizeof(Node));/*新建节点用于保存从原链表中取出的节点信息*/ if(!s)/*s==NULL*/ { printf(“n allocate memory failure ”);/*如没有申请到,打印提示信息*/ return;/*返回主界面*/ } s->data=p->data;/*填数据域*/ s->next=NULL;/*指针域为空*/ rr=ll; /*rr链表于存储插入单个节点后保持排序的链表,ll是这个链表的头指针,每次从头开始查找插入位置*/ while(rr->next!=NULL && rr->next->data.gz>=p->data.gz) {rr=rr->next;} /*指针移至总分比p所指的节点的总分小的节点位置*/ if(rr->next==NULL)/*若新链表ll中的所有节点的总分值都比p->data.gz大时,就将p所指节点加入链表尾部*/ rr->next=s; else /*否则将该节点插入至第一个总分字段比它小的节点的前面*/ { s->next=rr->next; rr->next=s; } p=p->next;/*原链表中的指针下移一个节点*/ } l->next=ll->next;/*ll中存储是的已排序的链表的头指针*/ Disp(l);saveflag=1;printf(“n =====>sort complete!n”);} void Save(Link l){ FILE* fp;Node *p;//实现保存操作的临时的结构体指针变量 int flag=1,count=0; fp=fopen(“employee.txt”,“wb”);if(fp==NULL){ printf(“n=====>提示:重新打开文件时发生错误!n”); return;} p=l->next;//p指向第一个记录结点 while(p){ if(fwrite(p,sizeof(Node),1,fp)==1)//将第一个记录结点值写入文件 { p=p->next;//依次写入第二个结点的值,count++;//文件的记录数+1 } else { flag=0; break; } } //while(p) if(count>0){ printf(“n=====>提示:文件保存成功.(有%d条记录已经保存.)n”,count); saveflag=0;} else { system(“cls”); printf(“保存文件失败,'0'条记录被保存!n”);} fclose(fp);} // void Save结束 void main(){ Link list;/*定义链表*/ // struct node *list;FILE *fp;/* 文件指针 */ int choose;/*保存选择结果变量*/ char ch;/*保存(y,Y,n,N)*/ int count=0;/*保存文件中的记录条数(或结点个数)*/ struct node *p,*r;/*定义记录指针变量*/ printf(“tttt职工信息管理系统nttttn”); list=(struct node*)malloc(sizeof(struct node)); if(!list){ printf(“n allocate memory failure ”);/*如没有申请到,打印提示信息*/ return;/*返回主界面*/ } list->next=NULL;r=list; fp=fopen(“employee.txt”,“rb”);if(fp==NULL){ printf(“n=====>提示:文件还不存在,是否创建?(y/n)n”); scanf(“%c”,&ch); if(ch=='y'||ch=='Y') fp=fopen(“employee.txt”,“ab+”); else exit(0);} // if(fp==NULL) printf(“n=====>提示:文件已经打开,正在导入记录......n”); while(!feof(fp))//没有到文件尾时,循环 { p=(struct node*)malloc(sizeof(struct node)); if(!p) { printf(“ memory malloc failure!n”);/*没有申请成功*/ exit(0);/*退出*/ } if(fread(p,sizeof(struct node),1,fp))/* 读文件的已有内容放入结点中 */ { p->next=NULL; r->next=p; r=p;/* 将该结点挂入链表中, r指向最后的节点 */ count++; } } //while(!feof(fp)) fclose(fp);/* 关闭文件 */ printf(“n=====>提示:记录导入完毕,共导入%d条记录.n”,count); while(1){ menu(); printf(“tt====>请选择:”); scanf(“%d”,&choose); if(choose==0) { if(saveflag==1) { getchar(); printf(“n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?n”); scanf(“%c”,&ch); if(ch=='y'||ch=='Y') Save(list); } //if printf(“n=====>提示:你已经退出系统,再见!n”); break; }//if switch(choose) { case 1:Add(list); break;/* 增加职工记录 */ case 2: Del(list); break;/* 删除职工记录 */ case 3: Qur(list); break;/* 查询职工记录 */ case 4: Modify(list); break;/* 修改职工记录 */ case 5: Insert(list); break;/*插入职工记录*/ case 6: Tongji(list); break;/*统计职工记录*/ case 7: Sort(list); break;/*排序职工记录*/ case 8: Save(list); break;/* 保存职工记录 */ case 9: system(“cls”); Disp(list); break;/*显示职工记录*/ default: Wrong(); getchar(); break; } //switch(choose)}//while(1)} //main()/* */ #include intnum; /*定义一个职工信息的结构体*/ 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(); voidsearch_education(); voidsearch_num(); void del(); void modify(); void main() { char s; system(“color 3f”); printf(“nn”); 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(“tn”);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() //录入职工信息 { inti,flag,j;printf(“输入职工个数(默认个数为2):”);scanf(“%d”,&N);fflush(stdin);//清除缓存 for(i=0;i { loop: printf(“职工号:”);scanf(“%d”,&worker[i].num);fflush(stdin);flag=1;if(worker[N].num<0) printf(“请输入正整数:n”);else for(j=0;j { if(worker[i].num==worker[j].num) { flag=0; printf(“ 工号重复,请重新输入!n”); goto loop; } } printf(“姓名:”);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 filen”); exit(0);} for(i=0;i void read() //读入函数 { FILE *fp;int i=0; if((fp=fopen(“worker.txt”,“rb”))==NULL)//以只读方式为输出打开磁盘文件中的一个二进制文件 { printf(“ncannot open filen”); 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 { printf(“职工号:%dn”,worker[i].num);printf(“姓名:%sn”,worker[i].name);printf(“性别:%sn”,worker[i].sex);printf(“出生年月:%dn”,worker[i].birth);printf(“工作年月:%dn”,worker[i].deta);printf(“学历:%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%dn”,worker[i].work);printf(“住址:%sn”,worker[i].addr);printf(“电话:%sn”,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 { while(worker[i].num==p.num) { printf(“ 工号重复,请重新输入!n”); scanf(“%d”,&p.num); } } printf(“请输入姓名:n”);scanf(“%s”,p.name);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”,p.education);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 filen”);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(“nchoiceerror!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() //按学历查询函数 { inti,flag=0;char s[10];printf(“n请输入你要查询的学历:n”);scanf(“%s”,s);for(i=0;i { if(strcmp(s,worker[i].education)==0) { printf(“职工号:%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性别:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“学历(中专=zz,大专=dz,yjs):%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“电话:%sn”,worker[i].tel);flag++; } } if(flag==0) printf(“n对不起没有找到!n”);getchar();} void search_num() //按工号查询函数 { inti,s,flag=0;printf(“n输入要查询的职工号!:n”);scanf(“%d”,&s); 本科=bk,研究生=for(i=0;i { if(s==worker[i].num) { printf(“职工号:%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性别:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%sn”,worker[i].education); printf(“工资:%lfn”,worker[i].salary);printf(“职务:%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“电话:%sn”,worker[i].tel); flag++; } } if(flag==0)printf(“n对不起没有找到!please”); getchar();} void del() //删除函数 { inti,j;FILE *fp;char name[20];char c;if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只写方式打开一个二进制文件 { printf(“ncannot open filen”);exit(0); } printf(“请输入要删除的职工的姓名:”);scanf(“%s”,name);for(i=0;i if(strcmp(name,worker[i].name)==0)//判断输入的姓名和原来的姓名是否相同 { printf(“找到该职工,是否删除?(y/n)”); fflush(stdin); scanf(“%c”,&c); if(c =='Y'||c=='y') { for(j=i;j worker[j]=worker[j+1]; printf(“删除成功!n”); //break; } } } if(i>=N){ printf(“没有找到该职工!n ”); return;} else { N=N-1; for(i=0;i if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1) { printf(“ncannot save filen”);getchar(); } fclose(fp);} } void modify() //修改函数 { struct worker p;FILE *fp;inti,n;double t;printf(“n输入要修改的职工号:n”);scanf(“%d”,&n); for(i=0;i if(n==worker[i].num) { printf(“找到该职工的信息(任意键继续)!”); printf(“n请输入职工的信息!n”); printf(“请输入姓名:n”);scanf(“%s”,p.name); printf(“请输入性别:n”);scanf(“%s”,p.sex); printf(“请输入出身年月:n”);scanf(“%d”,&p.birth);printf(“请输入工作年月:n”);scanf(“%lf”,&p.deta); printf(“请输入学历(中专=zz,大专=dz,yjs):n”);scanf(“%s”,p.education);printf(“请输入工资:n”);scanf(“%lf”,&t); p.salary=t;printf(“请输入职务:n”);scanf(“%s”,p.work); printf(“请输入住址:n”);scanf(“%s”,p.addr); 本科=bk,研究生= } printf(“请输入电话:n”);scanf(“%s”,p.tel);p.num=n; if((fp=fopen(“worker.txt”,“r+”))==NULL)//以读写的方式将修改的信息写入磁盘文件 { printf(“ncannot open filen”); 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”); 教职工信息管理系统源码 #include #define maxsize 100 fstream iofile;//文件指针 class Time //时间类 { public: int year; int month; int day;}; class Telem //个人信息 { public: char name[20]; char sex[10]; Time birthtime;//组合Time类 char num[20]; char wage[20]; Time worktime; int year; char department[20]; friend istream& operator>>(istream& input,Telem& T); friend ostream& operator<<(ostream& output,Telem& T); friend int operator-(Time & t1,Time & t2);}; class People:virtual public Telem //雇员类 { public: People(); virtual void AddF()=0;//添加 virtual void Addall()=0; virtual void Add()=0; virtual void Display();//输出数组的内容 virtual void Displaypart(char p[]); virtual void Findname(char n[]); virtual void Findyear(int); virtual void Del(char n[])=0; virtual void Del(int);protected: Telem data[maxsize]; Time now; int length;}; class Teacher:virtual public People //派生虚基类 { public: virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]);}; class worker:virtual public People //派生虚基类 { public: virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]);}; People::People()//系统自动生成的构造函数 { length=0; now.year=2010; now.month=7; now.day=6;} void People::Display()//引用 { int i; for(i=0;i cout< void People::Displaypart(char p[])//引用数组 { int i,c; for(i=0;i if(strcmp(data[i].wage,p)==0) { cout<<“输出选择姓名1 性别2 编号3 工资4 出生日期5 工作时间6 年龄7 系别8 退出选择9”< while(cin>>c) { switch(c) { case 1: cout<<“姓名:”< case 2: cout<<“性别:”< case 3: cout<<“编号:”< case 4: cout<<“工资:”< case 5: cout<<“出生日期:”< case 6: cout<<“工作时间:”< case 7: cout<<“年龄:”< case 8: cout<<“系别:”< case 9: goto loop; default:cout<<“操作错误......”< } } loop:; } } void People::Findname(char n[])//引用 { int i; for(i=0;i if(strcmp(data[i].name,n)==0)//对象引用 cout< void People::Findyear(int y){ int i; for(i=0;i if(data[i].year==y) cout< void People::Del(int i){ int j; if(i<1||i>length) cout<<“不存在第”< for(j=i;j data[j-1]=data[j]; length--;} void worker::AddF(){ int flag=0; iofile.open(“worker_information.txt”,ios::in|ios::binary);//文件的打开与关闭 while(iofile.seekg(ios::cur)) { iofile.seekg(length*sizeof(data[length]),ios::beg); iofile.read((char*)&data[length],sizeof(data[length]));//文件的随机访问 length++; if(length==maxsize) { flag=1; goto loop; } } People::Del(length); cout<<“添加人员信息成功......”< loop: if(1==flag) cout<<“人员信息储存空间已满......”< iofile.close();} void worker::Addall(){ char ans; int flag=0; iofile.open(“worker_information.txt”,ios::out|ios::binary); do { cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人员信息成功......”< length++; if(length==maxsize) { flag=1; goto loop; } cout<<“contine(Y|N)?”; cin>>ans; }while('y'==ans||'Y'==ans);loop: if(1==flag) cout<<“人员信息储存空间已满......”< iofile.close();} void worker::Add(){ int flag=0; iofile.open(“worker_information.txt”,ios::app|ios::out|ios::binary); if(length==maxsize) { flag=1; goto loop; } cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人员信息成功......”< length++; loop: if(1==flag) cout<<“人员信息储存空间已满......”< iofile.close();} void worker::Display(){ cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< if(0==length) cout<<“无......”< int i; for(i=0;i cout< int i,j,k; for(i=0;i if(strcmp(data[i].name,n)==0){ k=i+1;break;} if(k<1) cout<<“不存在姓名”< for(j=k;j data[j-1]=data[j]; length--; cout<<“删除人员信息成功......”< void worker::Del(int i){ int j; if(i<1||i>length) cout<<“不存在第”< for(j=i;j data[j-1]=data[j]; length--; cout<<“删除成功......”< } void Teacher::AddF(){ int flag=0; iofile.open(“Teacher_information.txt”,ios::in|ios::binary); while(iofile.seekg(sizeof(data[length]),ios::cur)) { if(iofile.seekg(length*sizeof(data[length]),ios::beg)) iofile.read((char*)&data[length],sizeof(data[length])); else break; length++; if(length==maxsize) { flag=1; goto loop; } } People::Del(length); cout<<“添加人员信息成功......”< if(1==flag) cout<<“人员信息储存空间已满......”< iofile.close();} void Teacher::Addall(){ char ans; int flag=0; iofile.open(“Teacher_information.txt”,ios::in|ios::out|ios::binary); do { cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人员信息成功......”< length++; if(length==maxsize) { flag=1; goto loop; } cout<<“contine(Y|N)?”; cin>>ans; }while('y'==ans||'Y'==ans);loop: if(1==flag) cout<<“人员信息储存空间已满......”< iofile.close();} void Teacher::Add(){ int flag=0; iofile.open(“Teacher_information.txt”,ios::app|ios::out|ios::binary); if(length==maxsize) { flag=1; goto loop; } cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人员信息成功......”< length++;loop: if(1==flag) cout<<“人员信息储存空间已满......”< iofile.close();} void Teacher::Display(){ cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆教师信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< if(0==length) cout<<“无......”< int i; for(i=0;i cout< void Teacher::Del(char n[]){ int i,j,k; for(i=0;i if(strcmp(data[i].name,n)==0) { k=i+1;break; } if(k<1)cout<<“不存在姓名”< for(j=k;j data[j-1]=data[j]; length--; cout<<“删除人员信息成功......”< void Teacher::Del(int i){ int j; if(i<1||i>length) cout<<“不存在第”< for(j=i;j data[j-1]=data[j]; length--; cout<<“删除成功......”< istream& operator>>(istream& input,Telem& T){ int y,m,d; cout<<“请输入姓名(以*结尾):”< input.getline(T.name,20,'*'); cout<<“请输入性别(以*结尾 男或女):”< input.getline(T.sex,10,'*'); cout<<“编号(以*结尾):”< input.getline(T.num,20,'*'); cout<<“工资(以*结尾):”< input.getline(T.wage,20,'*'); cout<<“请输入出生日期:”< input>>y>>m>>d; T.birthtime.year=(y>=1900&&y<=2100)?y:1900; T.birthtime.month=(m>=1&&m<=12)?m:1; T.birthtime.day=(d>=1&&d<=31)?d:1; cout<<“请输入系别(以*结尾):”< input.getline(T.department,20,'*'); cout<<“参加工作时间:”< input>>y>>m>>d; T.worktime.year=(y>=1900&&y<=2100)?y:1900; T.worktime.month=(m>=1&&m<=12)?m:1; T.worktime.day=(d>=1&&d<=31)?d:1; return input;} ostream& operator<<(ostream& output,Telem& T){ cout<<“姓名:”; output< cout<<“性别:”; output< cout<<“编号:”; output< cout<<“工资:”; output< cout<<“出生日期:”; output< cout<<“系别:”; output< cout<<“参加工作时间:”; output< cout<<“年龄:”; output< return output;} int operator-(Time & t1,Time & t2){ return t1.year-t2.year;} void Showmenu(){ cout< cout<<“ 欢 迎 进 入 教 职 工 信 息 管 理 系 统”< cout<<“ 2010 年7月7日发布”<<“ 版权所有: swa”< cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★人员信息管理系统★ ☆ ★ ☆ ★ ☆ ★ ☆ ★”< cout<<“ ★ 1-从键盘录入全部人员记录 ☆ ”< cout<<“ ☆ 2-增加一位人员记录 ★”< cout<<“ ★ 3-显示全部人员记录 ☆”< cout<<“ ☆ 4-按系别输出人员信息(可选)★ ”< cout<<“ ★ 5-按姓名或年龄检索所有信息☆ ”< cout<<“ ☆ 6-显示菜单目录 ★ ”< cout<<“ ★ 7-结束程序运行 ☆ ”< cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< int main(){ Teacher tea; worker stu; People *pt=&tea; People *ps=&stu; int c=0,k=0,l=0,i=0; char nam[20],part[20];Showmenu(); for(;;) { cout<<“请根据菜单执行相应操作: ”; cin>>c; switch(c) { case 1: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★录入全部人员记录 ★ ☆ ★ ☆ ★ ☆ ★”< cout<<“ ★ ☆ ★ ☆ ★从键盘输入教师信息 ☆ ★ ☆ ★ ☆”< pt->Addall(); cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘输入工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< ps->Addall(); break; } case 2: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘增加一位人员记录 ★ ☆ ★ ☆ ★ ☆ ★ ☆”< cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆教师操作请按1 工人操作请按2 ★ ☆ ★ ☆ ★ ☆ ★ ☆”< cin>>k; if(1==k) pt->Add(); else if(2==k) ps->Add(); else cout<<“操作错误...”< break; } case 3: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆显示全部人员记录 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< pt->Display(); ps->Display(); break; } case 4: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆按部门输出人员信息(可选)★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< cout<<“ ★ ☆ ★ ☆ ★ ☆教师操作请按1 工人操作请按2 ★ ☆ ★ ☆ ★ ☆”< cin>>k; if(1==k) { cout<<“请输入要输出人员的系别(以*结尾):”< pt->Displaypart(part); } else if(2==k) { cout<<“请输入要输出人员的系别(以*结尾):”< ps->Displaypart(part); } else cout<<“操作错误......”< break; } case 5: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★按姓名或年龄检索所有信息 ★ ☆ ★ ☆ ★ ☆ ★”< cout<<“ ★ ☆ ★ ☆ ★ ☆ ★按姓名查找1 按年龄查找2 ★ ☆ ★ ☆ ★ ☆ ★”< cin>>k; if(1==k) { cout<<“按姓名查找1 按年龄查找2”< if(1==l) { cout<<“请输入要查找人员的姓名(以*结尾):”< pt->Findname(nam); } else if(2==l) { cout<<“请输入要查找人的年龄:”< pt->Findyear(i); } else cout<<“操作错误......”< } else if(2==k) { cout<<“按姓名查找1 按年龄查找2”< if(1==l) { cout<<“请输入要查找人员的姓名(以*结尾):”< ps->Findname(nam); } else if(2==l) { cout<<“请输入要查找人的年龄:”< ps->Findyear(i); } else cout<<“操作错误......”< } else cout<<“操作错误......”< break; } case 6: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆显示菜单目录 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< Showmenu(); break; } case 7: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆结束程序运行 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< exit(0); } default:cout<<“操作错误......”<第二篇:C语言课程设计 职工信息管理系统 单链表实现程序源代码
第三篇:职工信息管理系统源代码
第四篇:C++课程设计 教职工信息管理系统源代码