用C语言写了个简单的通讯录管理系统。。。。。。可老是会这样退出。。。。
错误:
Process exited after 13.64 seconds with return value 3221225477
源代码:
https://github.com/mhqlyh/1
修改如下,供参考:
#include <stdio.h>
#include "function.h"
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define MAX_NUM 500
#define MAX_LEN 10
//function.h
//#define MAX_NUM 500
//#define MAX_LEN 10
struct person {
int number; /*用户号码,姓名,地址,性别,关系*/
char name[MAX_LEN];
char address[64];
int sex;
char relationship[64];
};
struct addressbooks {
struct person personarray[MAX_NUM];
int nowsize; /*当前联系人的个数*/
};
int cleanperson(struct addressbooks *p);
void modifyperson(struct addressbooks *p);
void deleteperson(struct addressbooks *p);
void showperson(struct addressbooks *p);
void addperson(struct addressbooks *p);
void searchperson(struct addressbooks *p);
int Isexit(struct addressbooks *p, char *name_i);
void mainfunction();
//main.c
//#include <stdio.h>
//#include "function.h"
//#include <string.h>
//#include <math.h>
//#include <stdlib.h>
//#define MAX_NUM 500
//#define MAX_LEN 10
int main() {
struct addressbooks book1;
book1.nowsize=0; /*初始化*/
int select = 0;
while (1) {
mainfunction();
printf("请输入你的选择:\n");
scanf("%d", &select);
switch (select) {
case 1:
searchperson(&book1);
break;
case 2:
showperson(&book1);
break;
case 3:
addperson(&book1);
break;
case 4:
deleteperson(&book1);
break;
case 5:
modifyperson(&book1);
break;
case 6:
cleanperson(&book1);
break;
case 0:
printf("欢迎下次使用!\n");
system("pause");
exit(0);
break;
default:
break;
}
}
return 0;
}
//function.c
//#include"function.h"
void mainfunction() {
printf("*******************\n");
printf("***1、查找联系人***\n");
printf("***2、显示联系人***\n");
printf("***3、添加联系人***\n");
printf("***4、删除联系人***\n");
printf("***5、修改联系人***\n");
printf("***6、清空联系人***\n");
printf("***0、退出通讯录***\n");
printf("*******************\n");
}
int Isexit(struct addressbooks *p, char *name_i) { /*判断联系人是否存在*/
int i, t = -1;
for ( i = 0; i < p->nowsize; i++) {
if (strcmp(p->personarray[i].name,name_i)==0){
t = i; /*把联系人的下标储存,返回*/
break;
}
}
return t;
}
void searchperson(struct addressbooks *p) { /*查找功能*/
char name_search[MAX_LEN];
printf("请输入要查询联系人的姓名:\n");
scanf("%s", name_search);
int t = Isexit(p, name_search);
if (t >= 0) {
printf("姓名:%s\t", p->personarray[t].name);
printf("号码:%lld\t", p->personarray[t].number);
printf("性别:%s\t", (p->personarray[t].sex == 1 ? "男" : "女"));
printf("地址:%s\t", p->personarray[t].address);
printf("关系:%s\n", p->personarray[t].relationship);
} else {
printf("未查找到!\n");
}
}
void addperson(struct addressbooks *p) { /*添加功能*/
if (p->nowsize == MAX_NUM) {
printf("通讯录人数已满,无法添加!");
} else {
char name_scan[MAX_LEN];
printf("请输入新添联系人的姓名:\n");
scanf("%s",name_scan);
strcpy(p->personarray[p->nowsize].name,name_scan);
int number_scan;
printf("请输入新添联系人的号码:\n");
scanf("%d", &number_scan);
p->personarray[p->nowsize].number = number_scan;
int sex_scan;
printf("请输入新添联系人的性别,0——女,1——男:\n");
while (1) {
scanf("%d", &sex_scan);
if (sex_scan == 0 || sex_scan == 1) {
p->personarray[p->nowsize].sex = sex_scan;
break;
} else {
printf("输入错误,请重新输入!");
}
}
char address_scan[64];
printf("请输入新添联系人的地址:\n");
scanf("%s", address_scan);
strcpy(p->personarray[p->nowsize].address,address_scan);
char relationship_scan[64];
printf("请输入新添联系人的关系:\n");
scanf("%s", relationship_scan);
strcpy(p->personarray[p->nowsize].relationship,relationship_scan);
p->nowsize++; /*通讯录当前人数+1*/
printf("添加成功!\n");
}
}
void showperson(struct addressbooks *p) { /*显示功能*/
if (p->nowsize == 0) {
printf("当前通讯录为空!\n");
} else {
for (int i = 0; i < p->nowsize; i++) {
printf("姓名:%s\t", p->personarray[i].name);
printf("号码:%d\t", p->personarray[i].number);
printf("性别:%s\t", (p->personarray[i].sex == 1 ? "男" : "女"));
printf("地址:%s\t", p->personarray[i].address);
printf("关系:%s\n", p->personarray[i].relationship);
}
printf("\n");
}
}
void deleteperson(struct addressbooks *p) { /*删除功能*/
printf("请输入要删除的联系人:\n");
char name_scan[MAX_LEN];
scanf("%s", name_scan);
int t = Isexit(p, name_scan);
if (t >= 0) {
for (int i = t; i < p->nowsize-1; i++) {
p->personarray[i] = p->personarray[i + 1];
}
p->nowsize--;
printf("删除成功!\n");
} else {
printf("未找到联系人!\n");
}
}
void modifyperson(struct addressbooks *p) { /*修改功能*/
printf("请输入你要修改的联系人的姓名:\n");
char name_scan[MAX_LEN];
scanf("%s", name_scan);
int t = Isexit(p, name_scan);
if (t >= 0) {
printf("请输入修改后的姓名:\n");
scanf("%s", name_scan);
strcpy(p->personarray[t].name, name_scan);
printf("请输入号码:\n");
int number_scan;
scanf("%d", &number_scan);
p->personarray[t].number = number_scan;
printf("请输入性别,0——女,1——男:\n");
int sex_scan;
while (1) {
scanf("%d", &sex_scan);
if (sex_scan == 1 || sex_scan == 0) {
p->personarray[t].sex = sex_scan;
break;
} else {
printf("输入错误,请重新输入!");
}
}
printf("请输入地址:\n");
char address_scan[64];
scanf("%s", &address_scan);
strcpy(p->personarray[t].address, address_scan);
printf("请输入关系:\n");
char relationship_scan[64];
scanf("%s", relationship_scan);
strcpy(p->personarray[t].relationship,relationship_scan);
printf("修改成功!\n");
} else {
printf("没有该联系人!\n");
}
}
int cleanperson(struct addressbooks *p) {
printf("清空后不可恢复,是否继续? 0——否,1——是");
int select = 0;
while (1) {
scanf("%d", &select);
if (select) {
p->nowsize = 0;
printf("通讯录已清空!\n");
break;
} else {
printf("暂时不清理\n");
break;
}
}
return 0;
}