#include#include using namespace std; #define MAX 1000 //快捷对齐代码ctrl+k+f //显示菜单 void showMenu() { cout << "*************************" << endl; cout << "***** 1、添加联系人 *****" << endl; cout << "***** 2、显示联系人 *****" << endl; cout << "***** 3、删除联系人 *****" << endl; cout << "***** 4、查找联系人 *****" << endl; cout << "***** 5、修改联系人 *****" << endl; cout << "***** 6、清空联系人 *****" << endl; cout << "***** 0、退出通讯录 *****" << endl; cout << "*************************" << endl; } //定义联系人结构体 struct Person //结构体命名最好用大写字母开头 { string name;//姓名 int sex;//性别 1男2女 int age;//年龄 string num;//电话 string address;//地址 }; //定义通讯录结构体 (结构体嵌套 通讯录中有联系人) struct Addressbooks { struct Person personarr[MAX]; //联系人数组 int size; }; //1.创建添加联系人函数 void addPerson(Addressbooks* abs) { //先判断通讯录是否已满,满则拒绝,未满添加 if (abs->size == MAX) { // cout << "通讯录已满。" << endl; return; } else { //添加姓名 string name; cout << "请输入联系人姓名:" << endl; cin >> name; //把新联系人的名字赋给 通讯录变量abs的联系人数组personarr中所在位置abs->size的联系人名字name abs->personarr[abs->size].name = name; //性别 cout << "请输入联系人性别:(1 为 男,2 为 女)" << endl; int sex = 0; //写一个死循环,只有输入正确格式(1或2)才能出去 while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs->personarr[abs->size].sex = sex; break; } cout << "输入不合法!" << endl; } //年龄 cout << "请输入联系人年龄:" << endl; int age = 0; while (true) { cin >> age; if (age >= 0 && age <= 100) { abs->personarr[abs->size].age = age; break; } cout << "年龄不对劲!" << endl; } //电话 string num; cout << "请输入联系人电话:" << endl; cin >> num; abs->personarr[abs->size].num = num; //地址 string address; cout << "请输入联系人地址:" << endl; cin >> address; abs->personarr[abs->size].address = address; //更新通讯录人数 abs->size++; cout << "添加成功!" << endl; system("pause");//按任意键继续 system("cls");//清屏操作 } } //2.显示所有联系人信息 void showPerson(Addressbooks* abs) { //判断通讯录中是否为空,空则显示0;不空则显示联系人 if (abs->size == 0) { cout << "联系人为空!" << endl; } else { for (int i = 0; i < abs->size; i++) { cout << "姓名:" << abs->personarr[i].name <<"t"; cout << "性别:" << (abs->personarr[i].sex == 1 ? "男":"女")<< "t"; cout << "年龄:" << abs->personarr[i].age << "t"; cout << "电话:" << abs->personarr[i].num << "t"; cout << "地址:" << abs->personarr[i].address << endl; } } system("pause"); system("cls"); } //检测联系人是否存在。存在返回所在位置,不存在返回-1 //参数1 通讯录 参数2 对比姓名 int isExist(Addressbooks* abs, string name) { //for循环遍历通讯录,查找联系人名字进行比对 for (int i = 0; i < abs->size; i++) { if (abs->personarr[i].name == name) { return i; //存在返回位置 } } return -1; //不存在返回-1 } //3.删除联系人信息 void deletePerson(Addressbooks* abs) { cout << "请输入您要删除的联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name);//设置一个ret接收 检测联系人是否存在结果 if (ret != -1) { //查到该联系人进行删除操作,即把后面所有数据往前移一个 for (int i = ret; i < abs->size; i++) { abs->personarr[i] = abs->personarr[i + 1]; abs->size--; cout << "删除成功!" << endl; } } else { cout << "联系人不存在" << endl; } system("pause"); system("cls"); } //4.查找联系人信息 void findPerson(Addressbooks* abs) { cout << "请输入查找的联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name); if (ret != -1) { cout << "所查找联系人信息如下:" << endl; cout << "姓名:" << abs->personarr[ret].name << "t"; cout << "性别:" << (abs->personarr[ret].sex == 1 ? "男" : "女") << "t"; cout << "年龄:" << abs->personarr[ret].age << "t"; cout << "电话:" << abs->personarr[ret].num << "t"; cout << "地址:" << abs->personarr[ret].address << endl; } else { cout << "联系人不存在!" << endl; } system("pause"); system("cls"); } //5.修改联系人信息 void modifyPerson(Addressbooks* abs) { cout << "请输入您要修改的联系人姓名:" << endl; string name; cin >> name; int ret = isExist(abs, name); if (ret != -1) { //分别修改各个信息 //修改姓名 string name; cout << "请输入姓名:" << endl; cin >> name; abs->personarr[ret].name = name; //修改性别 cout << "请输入联系人性别:(1 为 男,2 为 女)" << endl; int sex = 0; //写一个死循环,只有输入正确格式(1或2)才能出去 while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs->personarr[ret].sex = sex; break; } cout << "输入不合法!" << endl; } //修改年龄 cout << "请输入联系人年龄:" << endl; int age = 0; while (true) { cin >> age; if (age >= 0 && age <= 100) { abs->personarr[ret].age = age; break; } cout << "年龄不对劲!" << endl; } //修改电话 string num; cout << "请输入联系人电话:" << endl; cin >> num; abs->personarr[ret].num = num; //修改地址 string address; cout << "请输入联系人地址:" << endl; cin >> address; abs->personarr[ret].address = address; cout << "修改成功!" << endl; } else { cout << "联系人不存在!" << endl; } system("pause"); system("cls"); } //6.清空联系人信息 void noPerson(Addressbooks* abs) { cout << "确认清空联系人吗?(1.确认 2.取消)" << endl; int a; cin >> a; if (a == 1) { if (abs->size = 0) { cout << "联系人为空!" << endl; system("pause"); system("cls"); } else { abs->size == 0; cout << "清空成功!" << endl; } system("pause"); system("cls"); } else { system("pause"); system("cls"); } } int main() { //创建通讯录结构体变量: Addressbooks abs; //初始化通讯录中联系人人数 abs.size = 0; int select = 0; while (true) { //菜单调用 showMenu(); cin >> select; //switch语句分别调用菜单 switch (select) { case 1: //1、添加联系人 addPerson(&abs); break; case 2: //2、显示联系人 showPerson(&abs); break; case 3: //3、删除联系人 deletePerson(&abs); break; case 4: //4、查找联系人 findPerson(&abs); break; case 5: //5、修改联系人 modifyPerson(&abs); break; case 6: //6、清空联系人 noPerson(&abs); break; case 0: //0、退出通讯录 cout << "欢迎下次使用!" << endl; system("pause"); return 0; break; default: break; } } system("pause"); return 0; }



