实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
#include <stdio.h> #include <windows.h> #include <stdlib.h> #pragma warning (disable:4996) #define MAX 1000 typedef struct man { char name[10]; char sex[5]; int age; int plone_Num; char add[20]; }list; typedef struct men { struct man list[MAX]; int count; }men; void test(); void menu(); int find(men *p, char*name); void add(men *p); void my_delete(men *p); void search(men *p); void change(men *p); void display(men *p); void empty(men *p); void sort_name(men *p); struct men book; int main() { book.count = 0; test(); system("pause"); return 0; } void test() { int select = 0; do { //system("cls"); menu(); printf("please select <0-7>:\n"); scanf("%d", &select); switch (select) { case 1: add(&book); break; case 2: my_delete(&book); break; case 3: search(&book); break; case 4: change(&book); break; case 5: display(&book); break; case 6: empty(&book); break; case 7: sort_name(&book); break; case 0: exit(0); break; default: printf("error,please try again!"); break; } } while (1); } void menu() { printf("******************************************\n"); printf("*** 1、添加 2、删除 ***\n"); printf("*** 3、查找 4、修改 ***\n"); printf("*** 5、显示 6、清空 ***\n"); printf("*** 7、按姓名排序 0、退出 ***\n"); printf("******************************************\n"); } int find(men *p, char*name) { int i = 0; for (; i <= (p->count); i++) { if (strcmp(p->list[i].name, name) == 0) { return i; } } return -1; } void add(men *p) //添加 { if ((p->count) > MAX) { printf("通讯录已满!!!"); } else { printf("姓名 性别 年龄 电话 地址\n"); scanf("%s %s %d %d %s", (p->list[p->count]).name, p->list[p->count].sex, &p->list[p->count].age, &p->list[p->count].plone_Num, p->list[p->count].add); } p->count++; } void my_delete(men *p) //删除 { char name[10] = { 0 }; int ret; printf("请输入要删除的联系人:"); scanf("%s", &name); ret = find(p, name); if (ret == -1) { printf("该联系人不存在!!!"); } else { int j = ret; for (; j < p->count; j++) { p->list[j] = p->list[j + 1]; } printf("已删除!!!\n"); } p->count--; } void search(men *p) //查找 { char name[10] = { 0 }; int ret; printf("请输入要查询的联系人:"); scanf("%s", &name); ret = find(p, name); if (ret == -1) { printf("该联系人不存在!!!\n"); } else { printf("姓名:%s\n", p->list[ret].name); printf("性别:%s\n", p->list[ret].sex); printf("年龄:%d\n", p->list[ret].age); printf("电话:%d\n", p->list[ret].plone_Num); printf("地址:%s\n", p->list[ret].add); } } void change(men *p) //修改 { char name[10] = { 0 }; int ret; printf("请输入要修改的联系人:"); scanf("%s", &name); ret = find(p, name); if (ret == -1) { printf("该联系人不存在!!!\n"); } else { printf("姓名 性别 年龄 电话 地址\n"); scanf("%s %s %d %d %s", (p->list[ret]).name, p->list[ret].sex, &p->list[ret].age, &p->list[ret].plone_Num, p->list[ret].add); } } void display(men *p) //显示 { int i = 0; for (; i < p->count; i++) { printf("姓名:%s\t", p->list[i].name); printf("性别:%s\t", p->list[i].sex); printf("年龄:%d\t", p->list[i].age); printf("电话:%d\t", p->list[i].plone_Num); printf("地址:%s\n", p->list[i].add); } } void empty(men *p) //清空 { p->count = 0; } void sort_name(men *p) //按名字排序 { int i = 0; int j = 0; for (; i < p->count - 1; i++) { for (; j < p->count - 1 - i; j++) { if (strcmp(p->list[j].name, p->list[j + 1].name) < 0) { list temp; temp = p->list[j]; p->list[j] = p->list[j + 1]; p->list[j + 1] = temp; } } } }