C语言运行时*.exe已停止工作 求帮助
#include<stdio.h>#include<string.h>
typedef struct student
{
char sName[30];
int id;
int sMovtel;
int home;
char age[30];
char dor[30];
}student;
int c;
void build();
void search();
void amend();
void change();
void input(student *p);
void output(student *p);
void sdele();
void cover();
int main()
{
int admin, a, b = 1;
char s;
while (b == 1)
{
printf("********************是否以管理员身份登录**********************?(1是 OR 2否)");
fflush(stdin);
scanf("%d", &admin);
switch (admin)
{
case 1:
while (b == 1)
{
printf(" **************************************************************************\n");
printf(" * *\n");
printf(" * 欢迎使用学生通讯录管理系统 *\n");
printf(" * *\n");
printf(" **************************************************************************\n");
printf("\t 1、信息输入 2、信息查询和统计 3、信息修改 4、信息删除 \n");
printf("请选择.......\n");
scanf("%d", &a);
switch (a)
{
case 1:build(); break;
case 2:search(); break;
case 3:amend(); break;
case 4:sdele(); break;
}
printf("是否返回主菜单('Y'or'N')\n");
fflush(stdin);
scanf("%c", &s);
if (s == 'y' || s == 'Y')
b = 1;
else
break;
}
break;
case 2:
while (b == 1)
{
printf("\t\t通讯录\n");
printf("\t1、查找\n");
printf("请选择.......\n");
scanf("%d", &a);
switch (a)
{
case 1:search(); break;
}
printf("是否返回主菜单('Y'or'N')\n");
fflush(stdin);
scanf("%c", &s);
if (s == 'y' || s == 'Y')
b = 1;
else
b = 2;
break;
}
break;
}
}
return 0;
}
/*信息输入*/
void build()
{
int b = 1;
char d;
student x;
FILE *fp = NULL;
fp = fopen("e:\\通讯录.txt", "ab");
while (b == 1)
{
input(&x);
fwrite(&x, sizeof(x), 1, fp);
printf("是否继续新建('Y'or'N')?\n");
fflush(stdin);
scanf("%c", &d);
if (d == 'y' || d == 'Y')
{
b = 1;
}
else
break;
}
fclose(fp);
}
/*查找*/
void search()
{
int h, j = 1, n = 0, num, score;
char k[20], sdor[20];
FILE *fp = NULL;
student y;
printf("\t1、按电话号码查找\n");
printf("\t2、按姓名查找\n");
printf("\t3、按学生号查找\n");
printf("\t4、按寝室号查找\n");
printf("请选择...........\n");
scanf("%d", &h);
if (h == 1)
{
printf("\t请输入你查找的号码!\n");
while (j == 1)
{
scanf("%d", &num);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
fread(&y, sizeof(y), 1, fp);
if (num == y.sMovtel)
{
output(&y);
break;
}
}
if (num != y.sMovtel)
{
printf("你输入的号码有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
if (h == 2)
{
printf("\t请输入你查找的姓名!\n");
while (j == 1)
{
scanf("%s", k);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
fread(&y, sizeof(y), 1, fp);
if (strcmp(k, y.sName) == 0)
{
output(&y);
break;
}
}
if (strcmp(k, y.sName) != 0)
{
printf("你输入的姓名有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
if (h == 3)
{
printf("\t请输入你查找的学生号!\n");
while (j == 1)
{
scanf("%d", &score);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
fread(&y, sizeof(y), 1, fp);
if (score == y.id)
{
output(&y);
break;
}
}
if (score != y.id)
{
printf("你输入的姓名有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
if (h == 4)
{
printf("\t请输入你查找的姓名!\n");
while (j == 1)
{
scanf("%s", sdor);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
fread(&y, sizeof(y), 1, fp);
if (strcmp(sdor, y.dor) == 0)
{
output(&y);
break;
}
}
if (strcmp(sdor, y.dor) != 0)
{
printf("你输入的姓名有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
}
/*修改*/
void amend()
{
int h, j = 1, n = 0, num;
char k[20];
FILE *fp;
student y;
printf("\t1、按号码查找你所需要修改的原始资料\n");
printf("\t2、按姓名查找你所需要修改的原始资料\n");
printf("请选择...........\n");
scanf("%d", &h);
if (h == 1)
{
printf("\t请输入查找你的号码!\n");
while (j == 1)
{
scanf("%d", &num);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
c++;
fread(&y, sizeof(y), 1, fp);
if (num == y.sMovtel)
{
change();
break;
}
}
if (num != y.sMovtel)
{
printf("你输入的号码有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
if (h == 2)
{
printf("\t请输入你查找的姓名!\n");
while (j == 1)
{
c++;
scanf("%s", k);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
fread(&y, sizeof(y), 1, fp);
if (strcmp(k, y.sName) == 0)
{
change();
break;
}
}
if (strcmp(k, y.sName) != 0)
{
printf("你输入的姓名有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
}
/*删除*/
void sdele()
{
int h, j = 1, n = 0, num;
char k[20];
FILE *fp = NULL;
student y;
printf("\t1、按号码查找你所需要修改的原始资料\n");
printf("\t2、按姓名查找你所需要修改的原始资料\n");
printf("请选择...........\n");
scanf("%d", &h);
if (h == 1)
{
printf("\t请输入查找你的号码!\n");
while (j == 1)
{
scanf("%d", &num);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
fread(&y, sizeof(y), 1, fp);
if (num == y.sMovtel)
{
cover();
break;
}
}
if (num != y.sMovtel)
{
printf("你输入的号码有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
if (h == 2)
{
printf("\t请输入你查找的姓名!\n");
while (j == 1)
{
scanf("%s", k);
fp = fopen("e:\\通讯录.txt", "rb");
while (!feof(fp))
{
fread(&y, sizeof(y), 1, fp);
if (strcmp(k, y.sName) == 0)
{
cover();
break;
}
}
if (strcmp(k, y.sName) != 0)
{
printf("你输入的姓名有误!!!\n请重新输入\n");
j = 1;
}
fclose(fp);
}
}
}
void change()/*用于修改*/
{
int f, j;
FILE *fp = NULL;
student z;
j = c * 133;
printf("你要修改的内容:\n");
printf("\t1、姓名\n\t2、固定电话号码\n\t3、学号\n");
printf("\t4、年龄\n\t5、家庭住址、\n\t6、宿舍号\n");
printf("请选择...........\n");
scanf("%d", &f);
printf("输入你的新信息!\n");
switch (f)
{
case 1:fp = fopen("e:\\通讯录.txt", "wb");
fread(&z, sizeof(z), 1, fp);
fseek(fp, j, SEEK_SET);
scanf("%s", z.sName);
fwrite(&z.sName, sizeof(z.sName), 1, fp);
fclose(fp);
output(&z);
break;
fclose(fp);
case 2:fp = fopen("e:\\通讯录.txt", "rb");
fread(&z, sizeof(z), 1, fp);
fseek(fp, (j + 31), SEEK_SET);
scanf("%d", &z.sMovtel);
fwrite(&z.sMovtel, sizeof(z.sMovtel), 1, fp);
fclose(fp);
break;
case 3:fp = fopen("e:\\通讯录.txt", "rb");
fread(&z, sizeof(z), 1, fp);
fseek(fp, (j + 35), SEEK_SET);
scanf("%d", &z.id);
fwrite(&z.id, sizeof(z.id), 1, fp);
fclose(fp);
case 4:fp = fopen("e:\\通讯录.txt", "rb");
fread(&z, sizeof(z), 1, fp);
fseek(fp, (j + 73), SEEK_SET);
scanf("%s", z.age);
fwrite(&z.age, sizeof(z.age), 1, fp);
fclose(fp);
break;
case 5:fp = fopen("e:\\通讯录.txt", "rb");
fread(&z, sizeof(z), 1, fp);
fseek(fp, (j + 69), SEEK_SET);
scanf("%d", &z.home);
fwrite(&z.home, sizeof(z.home), 1, fp);
fclose(fp);
break;
case 6:fp = fopen("e:\\通讯录.txt", "rb");
fread(&z, sizeof(z), 1, fp);
fseek(fp, (j + 103), SEEK_SET);
scanf("%d", &z.dor);
fwrite(&z.dor, sizeof(z.dor), 1, fp);
fclose(fp);
break;
}
}
void input(student *p)/*输入*/
{
printf("请输入姓名:\n");
scanf("%s", p->sName);
printf("请输入手机号码:\n");
scanf("%d", &p->sMovtel);
printf("请输入学号:\n");
scanf("%d", &p->id);
printf("请输入年龄:\n");
scanf("%s", p->age);
printf("输入家庭住址");
scanf("%s", p->home);
printf("请输入宿舍号:\n");
scanf("%s", p->dor);
}
void output(student *p)/*输出*/
{
printf("**********************\n");
printf("%s\n", p->sName);
printf("%d\n", p->sMovtel);
printf("%d\n", p->id);
printf("%s\n", p->age);
printf("%d\n", p->home);
printf("%s\n", p->dor);
}
void cover()/*用于删除 */
{
student d;
FILE *fp = NULL;
fp = fopen("e:\\通讯录.txt", "rb");
fread(&d, sizeof(d), 1, fp);
}