logo资料库

职工信息管理系统(C语言版).doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
#include #include #include #include #define LEN sizeof(struct employee) typedef struct employee { char name[20]; long num; char sex[5]; int age; char addr[30]; int wage; char health[20]; char edu[20]; struct employee * next; }EMP; void input(); EMP * open(); void numfind(EMP *); void namefind(EMP *); void modify(EMP *); void delet(EMP *); void numsort(EMP *); void wagesort(EMP *); void print(EMP *); void renew(EMP *); int n; void main() { EMP *fhead; int choice,flag=1; char s; while(flag) { printf("\n printf(" printf("\n"); printf(" printf(" printf(" printf(" //输入职工信息 //将文件中的职工信息载入链表 //查找职工信息,按职工号查找 //查找职工信息,按职工姓名查找 //修改职工信息 //删除职工信息 //按工号给职工信息排序 //按工资给职工信息排序 //输出职工信息 //更新文件信息 //职工的个数 *****************************************************\n"); 欢迎使用职工信息管理系统!"); *****************************************************\n\n"); >>> 主窗口菜单 <<<\n\n"); 1.录入职工信息\n\n"); 2.查找职工信息\n\n");
3.修改职工信息\n\n"); 4.删除职工信息\n\n"); 5.排序职工信息\n\n"); 6.打印职工信息\n\n"); 0.退出\n"); printf(" printf(" printf(" printf(" printf(" printf("\n 请选择: "); scanf("%d",&choice); getchar(); switch(choice) { case 0: exit(0); case 1: input();break; case 2: system("cls"); printf("\na.按工号查找\n\n"); printf("b.按姓名查找\n"); printf("\n 请选择: "); scanf("%c",&s); getchar(); fhead=open(); if(s=='a') numfind(fhead); else if(s=='b') namefind(fhead); else printf("\n 输入错误!\n"); break; case 3: fhead=open();modify(fhead);break; case 4: fhead=open();delet(fhead);break; case 5: system("cls"); printf("\na.按工号排序\n\n"); printf("b.按工资排序\n"); printf("\n 请选择: "); scanf("%c",&s); getchar(); fhead=open(); if(s=='a') numsort(fhead); else if(s=='b') wagesort(fhead); else printf("\n 输入错误!\n"); break;
case 6: fhead=open();print(fhead);break; default: printf("\n 输入错误!\n"); } printf("\n 按任意键返回主菜单!"); getchar(); system("cls"); } } void input() { //录入信息 int flag=1; char s; FILE *fp; EMP *p,*p1,*p2,*head; head=p1=p2=(EMP *)malloc(LEN); while(flag==1) { system("cls"); printf("\n 姓名: "); scanf("%s",p1->name); printf("\n 工号: "); scanf("%ld",&p1->num); getchar(); printf("\n 性别: "); scanf("%s",p1->sex); printf("\n 年龄: "); scanf("%d",&p1->age); printf("\n 地址: "); scanf("%s",p1->addr); printf("\n 月薪: "); scanf("%d",&p1->wage); printf("\n 健康状况: "); scanf("%s",p1->health); printf("\n 教育程度: "); scanf("%s",p1->edu); getchar(); printf("\n 是否继续录入?(y/n): "); scanf("%c",&s); getchar(); if(s=='y') { p2=p1; p1=(EMP *)malloc(LEN);
p2->next=p1; } else flag=0; } p1->next=NULL; p=head; if((fp=fopen("employee.txt","ab"))==NULL) if((fp=fopen("employee.txt","wb"))==NULL) { printf("无法打开文件!\n"); exit(0); } while(p!=NULL) { if(fwrite(p,LEN,1,fp)!=1) printf("无法保存!\n"); p=p->next; } fclose(fp); printf("\n 录入成功!\n"); } EMP * open(void) { n=0; EMP *fhead,*p1,*p2; FILE *fp; fhead=NULL; p1=p2=(EMP *)malloc(LEN); if((fp=fopen("employee.txt","rb"))!=NULL) { fread(p1,LEN,1,fp); while(!feof(fp)) { n=n+1; if(n==1) fhead=p1; else p2->next=p1; p2=p1; p1=(EMP *)malloc(LEN); fread(p1,LEN,1,fp); }
p2->next=NULL; } else fp=fopen("employee.txt","wb"); fclose(fp); return (fhead); } void namefind(EMP * head) { int a=0; char findname[20]; EMP *p; p=head; printf("\n 请输入姓名: "); gets(findname); while(p!=NULL) { if(strcmp(findname,p->name)==0) { a=a+1; if(a==1) printf("\n 姓名 工号 性别 年龄 地址 月薪 健康状况 教育程度\n\n"); printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p->name,p->num,p->sex,p->age,p->a ddr,p->wage,p->health,p->edu); } p=p->next; } if(a==0) printf("\n 没有姓名为 %s 的职工\n",findname); } void numfind(EMP * head) { int findnum,a=0; EMP *p; p=head; printf("\n 请输入职工号: "); scanf("%ld",&findnum); getchar(); while(p!=NULL) {
if(findnum==p->num) { a=a+1; printf("\n 姓名 状况 教育程度\n\n"); 工号 性别 年龄 地址 月薪 健康 printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p->name,p->num,p->sex,p->age,p->a ddr,p->wage,p->health,p->edu); } p=p->next; } if(a==0) printf("\n 没有工号为 %ld 的职工\n",findnum); } void modify(EMP * head) { EMP *p; int a=0; char findname[20]; p=head; system("cls"); printf("\n 请输入姓名: "); gets(findname); while(p!=NULL) { if(strcmp(findname,p->name)==0) { a=a+1; printf("\n 姓名 状况 教育程度\n\n"); 工号 性别 年龄 地址 月薪 健康 printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p->name,p->num,p->sex,p->age,p->a ddr,p->wage,p->health,p->edu); printf("\n 请修改!\n"); printf("\n 姓名: "); scanf("%s",p->name); printf("\n 工号: "); scanf("%ld",&p->num); getchar(); printf("\n 性别: "); scanf("%s",p->sex); printf("\n 年龄: "); scanf("%d",&p->age);
printf("\n 地址: "); scanf("%s",p->addr); printf("\n 月薪: "); scanf("%d",&p->wage); printf("\n 健康状况: "); scanf("%s",p->health); printf("\n 教育程度: "); scanf("%s",p->edu); getchar(); printf("\n 修改成功!\n"); } p=p->next; } if(a==0) printf("\n 没有姓名为 %s 的职工\n",findname); else renew(head); } void delet(EMP * head) { int a=0; char c,findname[20]; EMP *p1,*p2; p1=p2=head; system("cls"); printf("\n 请输入姓名: "); scanf("%s",findname); getchar(); while(p1!=NULL) { //清空缓冲区 if(strcmp(findname,p1->name)==0) { a=a+1; printf("\n 姓名 状况 教育程度\n\n"); 工号 性别 年龄 地址 月薪 健康 printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p1->name,p1->num,p1->sex,p1->age, p1->addr,p1->wage,p1->health,p1->edu); printf("\n 确定删除该职工信息?(y/n): "); c=getchar(); getchar(); if(c=='y') { //清空缓冲区
if(p1==head) p1=p2=head=p1->next; else { p2->next=p1->next; free(p1); p1=p2; } printf("\n 删除成功!\n"); } } p2=p1; if(p1!=NULL) p1=p1->next; else; } if(a==0) printf("\n 没有姓名为 %s 的职工\n",findname); else renew(head); } void renew(EMP * head) { FILE *fp; struct employee *p; p=head; if((fp=fopen("employee.txt","wb"))==NULL) { printf("无法打开文件!\n"); exit(0); } while(p!=NULL) { if(fwrite(p,LEN,1,fp)!=1) printf("无法保存!\n"); p=p->next; } fclose(fp); } void print(EMP * head)
分享到:
收藏