求助各位大神这个代码哪里错了,题目如图
程序代码:
#include<stdio.h> #include <string.h> #define N 6 struct employee { char name[20],sex[10],xueli[20],address[30]; int number,age,wage; long int telephone; } em[N]; int a=N; int *p=&a; main() { void search(); void search_name(); void search_number(); void search_xueli(); void load(); void display(); void add(); void input(); void del(); void save(); int n; printf("\n"); printf(" ***************职工信息管理系统*************\n"); printf("\n"); printf(" 1.录入职工信息\n"); printf(" 2.浏览职工信息\n"); printf(" 3.查询职工信息\n"); printf(" 4.添加职工信息\n"); printf(" 5.删除职工信息\n"); printf(" 6.退出\n"); printf("\n"); scanf("%d",&n); switch(n) { case 1:printf(" ****输入职工信息****\n");printf("\n");input();main();break; case 2:printf(" ****浏览职工信息****\n");printf("\n");display();main();break; case 3:printf(" ****查询职工信息****\n");printf("\n");search();break; case 4:printf(" ****添加职工信息****\n");printf("\n");add();break; case 5:printf(" ****删除职工信息****\n");printf("\n");del();break; case 6:exit(0);break; default :break; } } void input() { int i; for(i=0;i<N;i++) { printf("请输入职工号:"); scanf("%d",&em[i].number); printf("请输入该职工姓名:"); scanf("%s",em[i].name); printf("请输入该职工性别:"); scanf("%s",&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].address); printf("请输入该职工电话:"); scanf("%d",&em[i].telephone); printf("\n"); } printf("\n创建成功!\n"); save(N); } 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 search() { int t; printf("\n按职工号查询按1\n按姓名查询请按2"); printf("\n按学历查询请按3\n返回主菜单请按4\n"); scanf("%d",&t); switch(t) { case 1:printf("\n按职工号查询\n"); search_number(); break; case 2:printf("\n按姓名查询\n"); search_name(); break; case 3: printf("\n按学历查询\n"); search_xueli(); break; case 4:main(); break; default :printf("输入错误,请重新输入!\n"); search(); break; } } void search_number() { int i,number; load(*p); printf("\n请输入要查询的职工号:"); scanf("%d",&number); for(i=0;i<*p;i++) if(number==em[i].number) { printf("\n该职工信息如下:\n"); printf("\n职工号\t 姓名\t性别\t年龄\t 学历\t 工资\t 住址\t 电话\n"); printf("\n%d\t%8s\t%s\t%d\t%8s %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone); printf("\n"); break; } if(i==*p) printf("\n记录中无此职工!\n"); search(); } void search_name() { int i; char name[20]; load(*p); printf("\n请输入要查询的姓名:"); scanf("%s",name); for(i=0;i<*p;i++) if(!strcmp(em[i].name,name)) { printf("\n该职工信息如下:\n"); printf("\n职工号\t 姓名\t性别\t年龄\t 学历\t 工资\t 住址\t 电话\n"); printf("\n%d\t%8s\t%s\t%d\t%8s %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone); printf("\n"); break; } if(i==*p) printf("\n记录中无此职工!\n"); search(); } void search_xueli() { int i,k=0; char xueli[20]; load(*p); printf("\n请输入要查询的学历:"); scanf("%s",xueli); for(i=0;i<*p;i++) if(!strcmp(em[i].xueli,xueli)) { printf("职工号\t 姓名\t性别\t年龄\t 学历\t 工资\t 住址\t 电话\n"); printf("%d\t%8s\t%s\t%d\t%8s %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone); } for(i=0;i<*p;i++) { if(!strcmp(em[i].xueli,xueli)) break; else k++; } if(k==*p) printf("\n记录中无此职工!\n"); search(); } 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(" 职工号\t姓名\t\t性别\t\t年龄 \n"); printf("\n %d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age); printf("\n 学历\t\t工资\t\t住址\t\t电话 \n"); printf("\n %s\t%d\t\t%s\t%s\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; else printf("\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 display() /*浏览函数*/ { int i; int m=load(); printf(" 职工号\t姓名\t\t性别\t\t年龄 \n"); for(i=0;i<m;i++) /*m为输入部分的职工人数*/ printf("\n %d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age); printf("\n 学历\t\t工资\t\t住址\t\t电话 \n"); for(i=0;i<m;i++) /*m为输入部分的职工人数*/ printf("\n %s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } void add(int *p) { int i,n,m; FILE*fp; if(!(fp=fopen("d://bbb.txt","p"))) { printf("打开失败"); exit(0); } printf("\n请输入想添加的人数:\n"); scanf("%d",&n); for(i=*p;i<n+(*p);i++) { printf("请输入职工号: "); scanf("%d",&em[i].number); printf("请输入姓名: "); scanf("%s",em[i].name); printf("请输入性别: "); scanf("%s",&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].address); printf("请输入电话: "); scanf("%d",&em[i].telephone); printf("\n"); } printf("\n添加完成!\n"); for(i=*p;i<n+(*p);i++) fprintf(fp,"M %8s %5s ] %8s ] %8s ?\n",em[i].number, em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage, em[i].address,em[i].telephone); fclose(fp); *p=*p+n; printf("\n浏览新信息请按1\n返回主菜单请按2\n"); scanf("%d",&m); switch(m) { case 1:display();main();break; case 2:main();break; default:break; } }