test.c - 测试通讯录
contact.c - 函数和类型的声明
contact.c - 函数的实现
设计保存人的信息的结构体
typedef struct PeoInfo{
char name[MAX_NAME];
int age;
char sex[MAX_SEX];
char tele[MAX_TELE];
char addr[MAX_ADDR];
}PeoInfo;
void menu() {
printf("************************************\n");
printf("***** 1.add 2.del *****\n");
printf("***** 3.search 4.modify *****\n");
printf("***** 5.show 6.sort *****\n");
printf("***** 0.exit *****\n");
printf("************************************\n");
}
void InitContact(Contact* pc){
assert(pc);
memset(pc->data, 0, sizeof(pc->data));
pc->sz = 0;
}
void ADDContact(Contact* pc){
assert(pc);
if (pc->sz == MAX) {
printf("通讯录已满,无法添加\n");
return ;
}
printf("请输入名字>>>");
scanf("%s", pc->data[pc->sz].name);//name本身就是数组,数组名就是地址
printf("请输入年龄>>>");
scanf("%d", &(pc->data[pc->sz].age));
printf("请输入性别>>>");
scanf("%s", pc->data[pc->sz].sex);
printf("请输入电话>>>");
scanf("%s", pc->data[pc->sz].tele);
printf("请输入地址>>>");
scanf("%s", pc->data[pc->sz].addr);
pc->sz++;
printf("成功添加联系人\n");
}
void ShowContact(const Contact* pc){
assert(pc);
printf("%-7s\t%-4s\t%-5s\t%-11s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
for (int i = 0; i < pc->sz; i++) {
printf("%-7s\t%-4d\t%-5s\t%-11s\t%-30s\n",
pc->data[i].name,
pc->data[i].age,
pc->data[i].sex,
pc->data[i].tele,
pc->data[i].addr
);
}
}
void DelContact(Contact* pc){
assert(pc);
if (pc->sz == 0) {
printf("通讯录为空,无法删除\n");
return;
}
char name[MAX_NAME] = { 0 };
printf("请输入要删除的名字>>>");
scanf("%s", &name);
//找到要删除的人,删除
int del= FindByName(pc, name);
if (del == -1) {
printf("不存在指定联系人\n");
return;
}
for (int i = del; i < pc->sz-1; i++) {
pc->data[i] = pc->data[i + 1];
}
pc->sz--;
printf("成功删除联系人\n");
}
void SearchContact(const Contact* pc){
assert(pc);
char name[MAX_NAME] = { 0 };
printf("请输入要查找人的名字>>>");
scanf("%s", name);
int pos = FindByName(pc, name);
if (pos == -1)
printf("要查找的人不存在\n");
else {
printf("%-7s\t%-4s\t%-5s\t%-11s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
printf("%-7s\t%-4d\t%-5s\t%-11s\t%-30s\n",pc->data[pos].name,pc->data[pos].age,pc->data[pos].sex,pc->data[pos].tele,pc->data[pos].addr);
}
}
void ModifyContact(Contact* pc){
assert(pc);
char name[MAX_NAME] = { 0 };
printf("请输入要修改人的名字>>>");
scanf("%s", name);
int pos = FindByName(pc, name);
if (pos == -1)
printf("要查找的人不存在\n");
else {
printf("请输入名字>>>");
scanf("%s", pc->data[pos].name);//name本身就是数组,数组名就是地址
printf("请输入年龄>>>");
scanf("%d", &(pc->data[pos].age));
printf("请输入性别>>>");
scanf("%s", pc->data[pos].sex);
printf("请输入电话>>>");
scanf("%s", pc->data[pos].tele);
printf("请输入地址>>>");
scanf("%s", pc->data[pos].addr);
printf("修改成功\n");
}
}