内容:
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
实现:
将变量定义在结构体中:
typedef struct person { char name[20]; //姓名 char sex[10]; //性别 int age; //年龄 int tel; //电话 char addr[30]; //住址 }Person; typedef struct people { Person p[1000]; //定义一个结构体数组存放成员信息 int num; //人数 }People;
对联系人进行的操作:
void add_person(People *people); //添加联系人 void dele_person(People *people); //删除联系人 void find_person(People *people); //查找联系人 void alter_person(People *people); //修改联系人 void print_person(People *people); //显示联系人 void clear_person(People *people); //清空联系人列表 void sort_person(People *people); //对联系人进行排序
方法实现:
//添加联系人 void add_person(People *people) { int i = 0; while (i < people->num){ printf("请输入姓名:"); scanf("%s", &(people->p[i].name)); printf("请输入性别:"); scanf("%s", &(people->p[i].sex)); printf("请输入年龄:"); scanf("%d", &(people->p[i].age)); printf("请输入电话:"); scanf("%d", &(people->p[i].tel)); printf("请输入住址:"); scanf("%s", &(people->p[i].addr)); i++; } }
//删除联系人 void dele_person(People *people) { if (people == NULL){ printf("空通讯录!"); return; } int i = 0; char name1[20]; printf("请输入要删联系人姓名:"); scanf("%s", &name1); while (strcmp(people->p[i].name, name1) != 0 && i < people->num){ i++; } if (i ==people->num) printf("列表中没有此联系人!!!\n"); int j = i; while (j < people->num){ people->p[j] = people->p[j + 1]; j++; } }
//查找联系人 void find_person(People *people) { //通过姓名查找 if (people == NULL){ printf("空通讯录!"); return; } int i = 0; char name1[20]; printf("请输入要查找的联系人:"); scanf("%s", &name1); while (strcmp(people->p[i].name, name1) != 0 && i <people->num-1){ i++; } if (i == people->num) printf("列表中没有此联系人!!!\n"); else { printf("性别:%s\n",people->p[i].sex); printf("年龄:%d\n", people->p[i].age); printf("电话:%d\n", people->p[i].tel); printf("住址:%s\n", people->p[i].addr); } }
//修改联系人 void alter_person(People *people) { if (people == NULL){ printf("空通讯录!"); return; } int i = 0; char name1[20]; printf("请输入要查找的联系人:"); scanf("%s", &name1); while (strcmp(people->p[i].name, name1) != 0 && i < people->num){ i++; } if (i == people->num) printf("列表中没有此联系人!!!\n"); else { printf("修改性别:"); scanf("%s", &people->p[i].sex); printf("修改年龄:"); scanf("%d", &people->p[i].age); printf("修改电话:"); scanf("%d", &people->p[i].tel); printf("修改住址:people"); scanf("%s", &people->p[i].addr); } }
//显示联系人 void print_person(People *people) { if (people == NULL){ printf("空通讯录!"); return; } int i = 0; while (i < (people->num)){ printf("姓名:%s", people->p[i].name); printf("性别:%s", people->p[i].sex); printf("年龄: %d", people->p[i].age); printf("电话: %d", people->p[i].tel); printf("住址: %s", people->p[i].addr); i++; } }
//清空联系人列表 void clear_person(People *people) { people->num = 0; }
//对联系人进行排序 void sort_person(People *people) { if (people == NULL) { printf("空通讯录!"); return; } int i = 0; for (; i < people->num; i++) { int flag = 0; int j = 0; for (; j < people->num - i - 1; j++) { if (strcmp(people->p[j].name, people->p[j + 1].name)>0) { flag = 1; char tem[20]; strcpy(tem, people->p[j].name); strcpy(people->p[j].name, people->p[j + 1].name); strcpy(people->p[j + 1].name, tem); } } if (flag == 0) break; } }
菜单界面:
void menu() { printf("*************通讯录*********************\n"); printf("*********1 增加成员*********************\n"); printf("*********2 删除成员*********************\n"); printf("*********3 查找成员*********************\n"); printf("*********4 修改成员*********************\n"); printf("*********5 显示成员*********************\n"); printf("*********6 清空成员*********************\n"); printf("*********7 排序*************************\n"); printf("*********8 退出*************************\n"); }
main函数实现:
main(){ People people; people.num = 1000; while (1) { menu(); int input = 0; scanf("%d", &input); switch (input) { case 1: add_person(&people); break; case 2: dele_person(&people); break; case 3: find_person(&people); break; case 4: alter_person(&people); break; case 5: print_person(&people); break; case 6: clear_person(&people); break; case 7: sort_person(&people); break; case 8: exit(0); default: { printf("输入错误,请重新输入<1~8>"); break; } system("pause"); return 0; } } }