c语言程序执行已停止工作,C语言运行时*.exe已停止工作 求帮助

本文介绍了一个基于C语言实现的学生通讯录管理系统,包括信息输入、查询、修改和删除等功能。系统采用结构体存储学生信息,并通过文件操作实现数据持久化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已结贴√

问题点数:10 回复次数:2

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

C语言运行时*.exe已停止工作 求帮助

#include

#include

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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值