C++通讯录管理系统开发(数组+函数+指针+结构体)

📅 发布时间:2026/7/11 8:51:08 👁️ 浏览次数:
C++通讯录管理系统开发(数组+函数+指针+结构体)
作者申明本文内容来自于黑马程序员C视频教学课程可作课程笔记参考。写在前面⭐如果本篇博文对你有帮助那就点赞 收藏一下吧通讯录管理系统1.系统需求2.菜单功能//菜单界面 void show_menu() { 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; }3.退出功能int select 0; //创建用户选择输入变量 bool flag true; while (flag) { //菜单调用 show_menu(); cin select; switch (select) { case 1: //添加联系人 add_person(abs); //利用地址传递可以修饰实参 break; case 2: //显示联系人 show_person(abs); break; case 3: { //删除联系人 delete_person(abs); break; } case 4: //查找联系人 find_person(abs); break; case 5: //修改联系人 update_person(abs); break; case 6: //清空联系人 clear_person(abs); break; case 0: //退出通讯录 cout 欢迎下次使用 endl; flag false; break; default: cout 输入有误请重新输入 endl; break; } }4.添加联系人4.1设计联系人结构体//设计联系人结构体 struct person { //姓名 string m_name; //性别 1男 2女 int m_sex; //年龄 int m_age; //电话 string m_phone; //住址 string m_addr; };4.2设计通讯录结构体//设计通讯录结构体 struct address_book { //联系人数组 struct person personArr[MAX]; //联系人个数 int m_size; };4.3封装添加联系人函数//1.添加联系人 void add_person(struct address_book *abs) { //判断通讯录是否已满满了就不添加了 if (abs-m_size MAX) { cout 通讯录已满无法添加 endl; return; }else { //添加联系人 // 姓名 string name; cout 请输入联系人姓名 endl; cin name; abs-personArr[abs-m_size].m_name name; //添加姓名将新输入的联系人姓名保存到通讯录数组的下一个空位置中。 //性别 cout 请输入联系人性别(1男2女) endl; int sex 0; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArr[abs-m_size].m_sex sex; break; } else { cout 输入性别有误请重新输入 endl; } } //年龄 cout 请输入联系人年龄 endl; int age 0; cin age; abs-personArr[abs-m_size].m_age age; //添加年龄 //电话 cout 请输入联系人电话 endl; string phone; cin phone; abs-personArr[abs-m_size].m_phone phone; //住址 cout 请输入联系人地址 endl; string addr; cin addr; abs-personArr[abs-m_size].m_addr addr; //更新通讯录人数 abs-m_size; cout 添加联系人成功 endl; system(pause); //请按任意键继续 system(cls); //清屏操作 } }5.显示联系人5.1封装显示联系人函数思路判断如果当前通讯录中没有人员就提示记录为空人数大于0显示通讯录中信息.//2.显示联系人 void show_person(struct address_book *abs) { //判断通讯录中人数是否为0若为0则提示记录为空若不为0则显示记录联系人信息 if (abs-m_size 0) { cout 通讯录为空 endl; }else { for (int i 0; i abs-m_size; i) { cout 姓名 abs-personArr[i].m_name \t; cout 性别 (abs-personArr[i].m_sex 1?男 : 女) \t; cout 年龄 abs-personArr[i].m_age \t; cout 电话 abs-personArr[i].m_phone \t; cout 地址 abs-personArr[i].m_addr endl; } } system(pause); system(cls); }6.删除联系人6.1封装检测联系人是否存在//检测联系人是否存在如果存在返回联系人所在数组中的具体位置不存在返回-1 int is_exist(struct address_book *abs, string name) { for (int i 0; i abs-m_size; i) { if (abs-personArr[i].m_name name) { return i; } } return -1; }6.2封装删除联系人函数//3.删除联系人 void delete_person(struct address_book *abs) { cout 请输入要删除的联系人姓名 endl; string name; cin name; int ret is_exist(abs, name); if (ret ! -1) { //查到此人 要进行删除操作 for (int i ret; i abs-m_size; i) { //数据前移 abs-personArr[i] abs-personArr[i 1]; } abs-m_size--; //更新通讯录人数 cout 删除联系人成功 endl; }else { cout 查无此人 endl; } system(pause); system(cls); }7.查找联系人7.1封装查找联系人函数实现思路判断用户指定的联系人是否存在如果存在显示信息不存在则提示查无此人。//4.查找联系人 void find_person(struct address_book *abs) { cout 请输入要查找的姓名 endl; string name; cin name; int ret is_exist(abs, name); if (ret ! -1) { cout 姓名 abs-personArr[ret].m_name \t; cout 性别 (abs-personArr[ret].m_sex 1?男 : 女) \t; cout 年龄 abs-personArr[ret].m_age \t; cout 电话 abs-personArr[ret].m_phone \t; cout 地址 abs-personArr[ret].m_addr endl; } else { cout 联系人不存在 endl; } system(pause); system(cls); }8.修改联系人8.1封装修改联系人函数实现思路查找用户输入的联系人如果查找成功进行修改操作查找失败提示查无此人。//修改联系人 void update_person(struct address_book *abs) { cout 请输入要修改的姓名 endl; string name; cin name; int ret is_exist(abs, name); if (ret ! -1) { //姓名 string name; cout 请重新输入联系人姓名 endl; cin name; abs-personArr[ret].m_name name; //性别 int sex 0; cout 请重新输入联系人性别(1男2女) endl; cin sex; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArr[ret].m_sex sex; break; } else { cout 输入性别有误请重新输入: endl; } } //年龄 int age 0; cout 请重新输入联系人年龄 endl; cin age; abs-personArr[ret].m_age age; //电话 string phone; cout 请重新输入联系人电话 endl; cin phone; abs-personArr[ret].m_phone phone; //住址 string addr; cout 请重新输入联系人地址 endl; cin addr; abs-personArr[ret].m_addr addr; cout 修改联系人成功 endl; }else { cout 查无此人 endl; } system(pause); system(cls); }9.清空联系人9.1封装清空联系人函数实现思路将通讯录所有联系人信息清除掉只要将通讯录记录的联系人数最置为0做逻辑清空即可。//清空联系人 void clear_person(struct address_book *abs) { cout 是否清空所有联系人1.是 0.否 endl; int choice 0; cin choice; if (choice 1) { abs-m_size 0; cout 清空成功 endl; } system(pause); system(cls); }10.全部实现代码10.1主函数int main() { system(chcp 65001 nul); //设置控制台为 UTF-8 编码 struct address_book abs; //创建通讯录结构体变量 abs.m_size 0; //通讯录当前记录联系人个数 int select 0; //创建用户选择输入变量 bool flag true; while (flag) { //菜单调用 show_menu(); cin select; switch (select) { case 1: //添加联系人 add_person(abs); //利用地址传递可以修饰实参 break; case 2: //显示联系人 show_person(abs); break; case 3: { //删除联系人 delete_person(abs); break; } case 4: //查找联系人 find_person(abs); break; case 5: //修改联系人 update_person(abs); break; case 6: //清空联系人 clear_person(abs); break; case 0: //退出通讯录 cout 欢迎下次使用 endl; flag false; break; default: cout 输入有误请重新输入 endl; break; } } return 0; }10.2整体代码#include iostream using namespace std; #include string #define MAX 1000 //设计联系人结构体 struct person { //姓名 string m_name; //性别 1男 2女 int m_sex; //年龄 int m_age; //电话 string m_phone; //住址 string m_addr; }; //设计通讯录结构体 struct address_book { //联系人数组 struct person personArr[MAX]; //联系人个数 int m_size; }; //1.添加联系人 void add_person(struct address_book *abs) { //判断通讯录是否已满满了就不添加了 if (abs-m_size MAX) { cout 通讯录已满无法添加 endl; return; }else { //添加联系人 // 姓名 string name; cout 请输入联系人姓名 endl; cin name; abs-personArr[abs-m_size].m_name name; //添加姓名将新输入的联系人姓名保存到通讯录数组的下一个空位置中。 //性别 cout 请输入联系人性别(1男2女) endl; int sex 0; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArr[abs-m_size].m_sex sex; break; } else { cout 输入性别有误请重新输入 endl; } } //年龄 cout 请输入联系人年龄 endl; int age 0; cin age; abs-personArr[abs-m_size].m_age age; //添加年龄 //电话 cout 请输入联系人电话 endl; string phone; cin phone; abs-personArr[abs-m_size].m_phone phone; //住址 cout 请输入联系人地址 endl; string addr; cin addr; abs-personArr[abs-m_size].m_addr addr; //更新通讯录人数 abs-m_size; cout 添加联系人成功 endl; system(pause); //请按任意键继续 system(cls); //清屏操作 } } //2.显示联系人 void show_person(struct address_book *abs) { //判断通讯录中人数是否为0若为0则提示记录为空若不为0则显示记录联系人信息 if (abs-m_size 0) { cout 通讯录为空 endl; }else { for (int i 0; i abs-m_size; i) { cout 姓名 abs-personArr[i].m_name \t; cout 性别 (abs-personArr[i].m_sex 1?男 : 女) \t; cout 年龄 abs-personArr[i].m_age \t; cout 电话 abs-personArr[i].m_phone \t; cout 地址 abs-personArr[i].m_addr endl; } } system(pause); system(cls); } //检测联系人是否存在如果存在返回联系人所在数组中的具体位置不存在返回-1 int is_exist(struct address_book *abs, string name) { for (int i 0; i abs-m_size; i) { if (abs-personArr[i].m_name name) { return i; } } return -1; } //3.删除联系人 void delete_person(struct address_book *abs) { cout 请输入要删除的联系人姓名 endl; string name; cin name; int ret is_exist(abs, name); if (ret ! -1) { //查到此人 要进行删除操作 for (int i ret; i abs-m_size; i) { //数据前移 abs-personArr[i] abs-personArr[i 1]; } abs-m_size--; //更新通讯录人数 cout 删除联系人成功 endl; }else { cout 查无此人 endl; } system(pause); system(cls); } //4.查找联系人 void find_person(struct address_book *abs) { cout 请输入要查找的姓名 endl; string name; cin name; int ret is_exist(abs, name); if (ret ! -1) { cout 姓名 abs-personArr[ret].m_name \t; cout 性别 (abs-personArr[ret].m_sex 1?男 : 女) \t; cout 年龄 abs-personArr[ret].m_age \t; cout 电话 abs-personArr[ret].m_phone \t; cout 地址 abs-personArr[ret].m_addr endl; } else { cout 联系人不存在 endl; } system(pause); system(cls); } //修改联系人 void update_person(struct address_book *abs) { cout 请输入要修改的姓名 endl; string name; cin name; int ret is_exist(abs, name); if (ret ! -1) { //姓名 string name; cout 请重新输入联系人姓名 endl; cin name; abs-personArr[ret].m_name name; //性别 int sex 0; cout 请重新输入联系人性别(1男2女) endl; cin sex; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArr[ret].m_sex sex; break; } else { cout 输入性别有误请重新输入: endl; } } //年龄 int age 0; cout 请重新输入联系人年龄 endl; cin age; abs-personArr[ret].m_age age; //电话 string phone; cout 请重新输入联系人电话 endl; cin phone; abs-personArr[ret].m_phone phone; //住址 string addr; cout 请重新输入联系人地址 endl; cin addr; abs-personArr[ret].m_addr addr; cout 修改联系人成功 endl; }else { cout 查无此人 endl; } system(pause); system(cls); } //清空联系人 void clear_person(struct address_book *abs) { cout 是否清空所有联系人1.是 0.否 endl; int choice 0; cin choice; if (choice 1) { abs-m_size 0; cout 清空成功 endl; } system(pause); system(cls); } //菜单界面 void show_menu() { 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; } int main() { system(chcp 65001 nul); //设置控制台为 UTF-8 编码 struct address_book abs; //创建通讯录结构体变量 abs.m_size 0; //通讯录当前记录联系人个数 int select 0; //创建用户选择输入变量 bool flag true; while (flag) { //菜单调用 show_menu(); cin select; switch (select) { case 1: //添加联系人 add_person(abs); //利用地址传递可以修饰实参 break; case 2: //显示联系人 show_person(abs); break; case 3: { //删除联系人 delete_person(abs); break; } case 4: //查找联系人 find_person(abs); break; case 5: //修改联系人 update_person(abs); break; case 6: //清空联系人 clear_person(abs); break; case 0: //退出通讯录 cout 欢迎下次使用 endl; flag false; break; default: cout 输入有误请重新输入 endl; break; } } return 0; }写到后面⭐如果本篇博文对你有帮助那就点赞 收藏一下吧