VC++编程题编译没错但运行时出错

2024-11-22 09:49:34
推荐回答(1个)
回答1:

没什么大问题,就是结构体定义的时候没有定义好,在加上结构体不是很了解,结构体相互赋值是可以直接赋值的。

#include

#include

#include

struct EI //Employee information职工信息//

{

int  Eid;

char EN[20];

char ES;

char EDOB[20]; //字符串

char EE[30];

char EJ[20]; //字符串

int EW;

char EA[30];

char  ET[20];

}Ei[100];

void face(); //使用主界面函数//

void save(int a) //保存函数//

{

int i;

FILE *fp;

if((fp=fopen("ei.dat","wb"))==NULL)

{

printf("无法打开\n");

exit(0);

}

for(i=0;i

if(fwrite(&Ei[i],sizeof(struct EI),1,fp)!=1)

printf("错误");

fclose(fp);

}

void Input() //录入函数//

{

int i,a;

system("cls");

printf("输入要录入的人数:\n");

scanf("%d",&a);

printf("按顺序输入职工基本信息.\n");

for(i=0;i

{

printf("输入职工号:");

scanf("%d",&Ei[i].Eid);

printf("输入姓名:");

scanf("%s",&Ei[i].EN);

getchar();

printf("输入性别:(W或者M)");

scanf("%c",&Ei[i].ES);

printf("输入出生年月:(格式XXXX-XX)");

scanf("%s",&Ei[i].EDOB);

printf("输入学历:");

scanf("%s",&Ei[i].EE);

printf("输入职务:");

scanf("%s",&Ei[i].EJ);

printf("输入工资:");

scanf("%d",&Ei[i].EW);

printf("输入住址:");

scanf("%s",&Ei[i].EA);

printf("输入电话:");

scanf("%s",&Ei[i].ET);

}

save(a);

face();

}

int load() //导入函数//

{

FILE*fp;

int i=0;

if((fp=fopen("ei.dat","rb"))==NULL)

{

printf ("无法打开\n");

exit(0);

}

else 

{

do 

{

fread(&Ei[i],sizeof(struct EI),1,fp);

i++;

}

while(feof(fp)==0);

}

fclose(fp);

return(i-1);

}

void All() //显示所有职工信息函数//

{

int i;

int m=load();

printf("全部职员信息如下:\n");

printf("职工号\t姓名\t性别\t出生年月\n");

for(i=0;i

printf("%d\t%s\t%c\t%s\n",Ei[i].Eid,Ei[i].EN,Ei[i].ES,Ei[i].EDOB);

printf("学历\t职位\t工资\t住址\t电话\n");

for(i=0;i

printf("%s\t%s\t%d\t%s\t%s\n",Ei[i].EE,Ei[i].EJ,Ei[i].EW,Ei[i].EA,Ei[i].ET);

system("pause");

face();

}

void IDfind() //职工号查询函数//

{

int n,i,a=load();

system("cls");

printf("输入员工工号:");

scanf("%d",&n);

system("cls");

for(i=0;i

if(n=Ei[i].Eid)

{

printf("职工号\t姓名\t性别\t出生年月\n");

printf("%d\t%s\t%c\t%s\n",Ei[i].Eid,Ei[i].EN,Ei[i].ES,Ei[i].EDOB);

printf("学历\t职位\t工资\t住址\t电话\n");

printf("%s\t%s\t%d\t%s\t%s\n",Ei[i].EE,Ei[i].EJ,Ei[i].EW,Ei[i].EA,Ei[i].ET);

system("pause");

}

face();

}

void EIrepair() //修改函数//

{

FILE *fp;

int i,n,a=load();

system("cls");

if((fp=fopen("ei.dat","wb+"))==NULL)

{

printf("无法打开\n");

exit(0);

}

printf("输入想修改的员工号:");

scanf("%d",&n);

system("cls");

for(i=0;i

{

if(Ei[i].Eid==n)

{

printf("1.职工号2.姓名3.性别4.出生年5.学历6.职务7.工资8.住址9.电话\n");

printf("输入想修改的序号:");

scanf("%d",&n);

system("cls");

switch(n)

{

case 1:printf("输入新数据:");scanf("%d",&Ei[i].Eid);break;

case 2:printf("输入新数据:");scanf("%s",&Ei[i].EN);break;

case 3:printf("输入新数据:");scanf("%s",&Ei[i].ES);break;

case 4:printf("输入新数据:");scanf("%s",&Ei[i].EDOB);break;

case 5:printf("输入新数据:");scanf("%s",&Ei[i].EE);break;

case 6:printf("输入新数据:");scanf("%s",&Ei[i].EJ);break;

case 7:printf("输入新数据:");scanf("%d",&Ei[i].EW);break;

case 8:printf("输入新数据:");scanf("%s",&Ei[i].EA);break;

case 9:printf("输入新数据:");scanf("%s",&Ei[i].ET);break;

}

}

}

save(a);

system("pause");

face();

}

void EIdelete() //删除函数//

{

FILE *fp;

int i,n,p,a=load();

system("cls");

if((fp=fopen("ei.dat","wb+"))==NULL)

{

printf("无法打开\n");

exit(0);

}

printf("输入想删除的职工号:");

scanf("%d",&n);

system("cls");

for(i=0;i

{

if(Ei[i].Eid==n)

break;

}

if(i >= a)

printf("未找到对应工号!\n");

else

{

for(p=i;p

{

Ei[p] = Ei[p+1]; //结构体可以直接这样赋值

}

save(a-1); //保存数少一个

}


system("pause");

face();

}

void face() //主界面函数//

{

int n;

system("cls");

printf("          主界面          \n");

printf("          1.录入          \n");

printf("        2.查看所有        \n");

printf("      3.按职工号查询      \n");

printf("          4.修改          \n");

printf("          5.删除          \n");

printf("输入想进行的操作:");

scanf("%d",&n);

if(n!=1&&n!=2&&n!=3&&n!=4&&n!=5)

{

face();

}

switch(n)

{

case 1:Input();break;

case 2:All();break;

case 3:IDfind();break;

case 4:EIrepair();break;

case 5:EIdelete();break;

}

}

void main()

{

face();

system("cls");

}