求助各位大神这个代码哪里错了,题目如图
程序代码:#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;
}
}







