C++初级案例

张开发
2026/4/3 23:29:58 15 分钟阅读
C++初级案例
终极案例--通讯录管理系统1 系统需求通讯录是一个可以记录亲人、好友信息的工具。此案例主要利用C来实现一个通讯录管理系统系统中需要实现的功能如下添加联系人向通讯录中添加新人信息包括姓名、性别、年龄、联系电话、家庭住址最多记录1000人显示联系人显示通讯录中所有联系人信息删除联系人按照姓名进行删除指定联系人查找联系人按照姓名查看指定联系人信息修改联系人按照姓名重新修改指定联系人清空联系人清空通讯录中所有信息退出通讯录退出当前使用的通讯录2 创建项目创建项目步骤如下创建新项目添加文件3 菜单功能功能描述用户选择功能的界面菜单界面效果如下图步骤封装函数显示该界面 如void showMenu()在main函数中调用封装好的函数#include iostream using namespace std; //封装函数显示菜单界面 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; } int main() { showMenu(); system(pause); return 0; }4 退出功能功能描述退出通讯录系统思路根据用户不同的选择进入不同的功能可以选择switch分支结构将整个架构进行搭建当用户选择0时候执行退出选择其他先不做操作也不会退出程序代码#include iostream using namespace std; //封装函数显示菜单界面 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; } int main() { int select 0; while (true) { showMenu(); cin select; switch (select) { case 1: //添加联系人 break; case 2: //显示联系人 break; case 3: //删除联系人 break; case 4: //查找联系人 break; case 5: //修改联系人 break; case 6: //清空联系人 break; case 0: //退出通讯录 cout 欢迎下次使用 endl; system(pause); return 0; break; default: break; } } system(pause); return 0; }5 添加联系人功能描述实现添加联系人功能联系人上限为1000人联系人信息包括姓名、性别、年龄、联系电话、家庭住址添加联系人实现步骤设计联系人结构体设计通讯录结构体main函数中创建通讯录封装添加联系人函数测试添加联系人功能5.1 设计联系人结构体联系人信息包括姓名、性别、年龄、联系电话、家庭住址//联系人结构体 struct Person { string m_Name; //姓名 int m_Sex; //性别1男 2女 int m_Age; //年龄 string m_Phone; //电话 string m_Addr; //住址 };5.2 设计通讯录结构体设计时候可以在通讯录结构体中维护一个容量为10的存放联系人的数组并记录当前通讯录中联系人数量# define MAX 10 //最大人数 //通讯录结构体 struct addressBooks { struct Person personArray[MAX]; int m_Size;//通讯录中人员个数 };5.3 main函数中创建通讯录添加联系人函数封装好后在main函数中创建一个通讯录变量这个就是我们需要一直维护的通讯录//mian函数起始位置添加 //创建通讯录 addressBooks abs; //初始化通讯录中的人数 abs.m_Size 0;5.4 封装添加联系人函数思路添加联系人前先判断通讯录是否已满如果满了就不再添加未满情况将新联系人信息逐个加入到通讯录添加联系人代码//添加联系人函数 void addPerson(addressBooks* abs) { //判断电话本是否满了 if (abs-m_Size MAX) { cout 通讯录已满无法添加 endl; return; } else { //姓名 string name; cout 请输入姓名 endl; cin name; abs-personArray[abs-m_Size].m_Name name; //性别 cout 请输入性别 endl; cout 1 -- 男 endl; cout 2 -- 女 endl; int sex 0; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArray[abs-m_Size].m_Sex sex; break; } cout 输入有误 endl; } //年龄 cout 请输入年龄 endl; int age 0; cin age; abs-personArray[abs-m_Size].m_Age age; //电话 cout 请输入电话 endl; string phone; cin phone; abs-personArray[abs-m_Size].m_Phone phone; //地址 cout 请输入地址 endl; string address; cin address; abs-personArray[abs-m_Size].m_Addr address; //更新通讯录人数 abs-m_Size; cout 添加成功 endl; //请按任意键继续. . . system(pause); //清屏操作 system(cls); } }5.5 测试添加联系人功能选择界面中如果玩家选择了1代表添加联系人我们可以测试下该功能在switch case 语句中case1里添加case 1: //添加联系人 addPerson(abs); break;6、显示联系人功能描述显示通讯录中已有的联系人信息显示联系人实现步骤封装显示联系人函数测试显示联系人功能6.1 封装显示联系人函数思路判断如果当前通讯录中没有人员就提示记录为空人数大于0显示通讯录中信息显示联系人代码//显示所有联系人 void showPerson(addressBooks* abs) { //判断通讯录中是否有联系人 //没有则打印暂无记录 if (abs-m_Size 0) { cout 暂无记录 endl; } else { for (int i 0; i abs-m_Size;i) { cout 姓名 abs-personArray[i].m_Name \t; cout 性别 (abs-personArray[i].m_Sex 1 ? 男:女) \t; cout 年龄 abs-personArray[i].m_Age \t; cout 电话 abs-personArray[i].m_Phone \t; cout 地址 abs-personArray[i].m_Addr endl; } } //请按任意键继续. . . system(pause); //清屏操作 system(cls); }6.2 测试显示联系人功能在switch case语句中case 2 里添加case 2: //显示联系人 showPerson(abs); break;7、删除联系人功能描述按照姓名进行删除指定联系人删除联系人实现步骤封装检测联系人是否存在封装删除联系人函数测试删除联系人功能7.1 封装检测联系人是否存在设计思路删除联系人前我们需要先判断用户输入的联系人是否存在如果存在删除不存在提示用户没有要删除的联系人因此我们可以把检测联系人是否存在封装成一个函数中如果存在返回联系人在通讯录中的位置不存在返回-1检测联系人是否存在代码//判断是否存在某联系人 //存在返回在数组中索引位置不存在返回 - 1 int existPerson(addressBooks* abs, string name) { for (int i 0;i abs-m_Size;i) { if (abs-personArray[i].m_Name name) { return i; } } return -1; }7.2 封装删除联系人函数根据用户输入的联系人判断该通讯录中是否有此人查找到进行删除并提示删除成功查不到提示查无此人。//删除联系人 void deletePerson(addressBooks* abs) { cout 请输入要删除的联系人 endl; string name; cin name; int res existPerson(abs, name); if (res ! -1) { //查到了进行删除操作 for (int i res;i abs-m_Size;i) { //进行前移操作 abs-personArray[i] abs-personArray[i 1]; } //并让联系人数量递减 abs-m_Size--; cout 删除成功 endl; } else { cout 查无此人 endl; } //请按任意键继续. . . system(pause); //清屏操作 system(cls); }7.3 测试删除联系人功能在switch case 语句中case3里添加case 3: //删除联系人 deletePerson(abs); break;8、查找联系人功能描述按照姓名查看指定联系人信息查找联系人实现步骤封装查找联系人函数测试查找指定联系人8.1 封装查找联系人函数实现思路判断用户指定的联系人是否存在如果存在显示信息不存在则提示查无此人。查找联系人代码//查找指定联系人信息 void findPerson(addressBooks* abs) { cout 请输入要查找的联系人 endl; string name; cin name; int res existPerson(abs, name); if (res ! -1) { cout 找到了 endl; cout 姓名: abs-personArray[res].m_Name endl; cout 性别: abs-personArray[res].m_Sex endl; cout 年龄: abs-personArray[res].m_Age endl; cout 电话: abs-personArray[res].m_Phone endl; cout 地址: abs-personArray[res].m_Addr endl; } else { cout 查无此人 endl; } }8.2 测试查找指定联系人在switch case 语句中case4里添加case 4: //查找联系人 findPerson(abs); break;9、修改联系人功能描述按照姓名重新修改指定联系人修改联系人实现步骤封装修改联系人函数测试修改联系人功能9.1 封装修改联系人函数实现思路查找用户输入的联系人如果查找成功进行修改操作查找失败提示查无此人修改联系人代码//修改联系人 void changePerson(addressBooks* abs) { cout 请输入要修改的联系人 endl; string name; cin name; int res existPerson(abs, name); if (res ! -1) { //姓名 string name; cout 请输入姓名 endl; cin name; abs-personArray[res].m_Name name; //性别 cout 请输入性别 endl; cout 1 -- 男 endl; cout 2 -- 女 endl; int sex 0; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArray[res].m_Sex sex; break; } cout 输入有误请重新输入; } //年龄 cout 请输入年龄 endl; int age 0; cin age; abs-personArray[res].m_Age age; //联系电话 cout 请输入联系电话 endl; string phone; cin phone; abs-personArray[res].m_Phone phone; //家庭住址 cout 请输入家庭住址 endl; string address; cin address; abs-personArray[res].m_Addr address; cout 修改成功 endl; } else { cout 查无此人 endl; } //请按任意键继续. . . system(pause); //清屏操作 system(cls); }9.2 测试修改联系人功能在switch case 语句中case 5里添加case 5: //修改联系人 changePerson(abs); break;10、清空联系人功能描述清空通讯录中所有信息清空联系人实现步骤封装清空联系人函数测试清空联系人10.1 封装清空联系人函数实现思路 将通讯录所有联系人信息清除掉只要将通讯录记录的联系人数量置为0做逻辑清空即可。清空联系人代码//清空所有联系人 void cleanPerson(addressBooks* abs) { abs-m_Size 0; cout 通讯录已清空 endl; system(pause); system(cls); }10.2 测试清空联系人在switch case 语句中case 6 里添加case 6: //清空联系人 cleanPerson(abs); break;完整代码如下#include iostream using namespace std; # define MAX 10 //最大人数 //联系人结构体 struct Person { string m_Name; //姓名 int m_Sex; //性别1男 2女 int m_Age; //年龄 string m_Phone; //电话 string m_Addr; //住址 }; //通讯录结构体 struct addressBooks { struct Person personArray[MAX]; int m_Size;//通讯录中人员个数 }; //封装函数显示菜单界面 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; } //添加联系人函数 void addPerson(addressBooks* abs) { //判断电话本是否满了 if (abs-m_Size MAX) { cout 通讯录已满无法添加 endl; return; } else { //姓名 string name; cout 请输入姓名 endl; cin name; abs-personArray[abs-m_Size].m_Name name; //性别 cout 请输入性别 endl; cout 1 -- 男 endl; cout 2 -- 女 endl; int sex 0; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArray[abs-m_Size].m_Sex sex; break; } cout 输入有误 endl; } //年龄 cout 请输入年龄 endl; int age 0; cin age; abs-personArray[abs-m_Size].m_Age age; //电话 cout 请输入电话 endl; string phone; cin phone; abs-personArray[abs-m_Size].m_Phone phone; //地址 cout 请输入地址 endl; string address; cin address; abs-personArray[abs-m_Size].m_Addr address; //更新通讯录人数 abs-m_Size; cout 添加成功 endl; //请按任意键继续. . . system(pause); //清屏操作 system(cls); } } //显示所有联系人 void showPerson(addressBooks* abs) { //判断通讯录中是否有联系人 //没有则打印暂无记录 if (abs-m_Size 0) { cout 暂无记录 endl; } else { for (int i 0; i abs-m_Size;i) { cout 姓名 abs-personArray[i].m_Name \t; cout 性别 (abs-personArray[i].m_Sex 1 ? 男:女) \t; cout 年龄 abs-personArray[i].m_Age \t; cout 电话 abs-personArray[i].m_Phone \t; cout 地址 abs-personArray[i].m_Addr endl; } } //请按任意键继续. . . system(pause); //清屏操作 system(cls); } //判断是否存在某联系人 //存在返回在数组中索引位置不存在返回 - 1 int existPerson(addressBooks* abs, string name) { for (int i 0;i abs-m_Size;i) { if (abs-personArray[i].m_Name name) { return i; } } return -1; } //删除联系人 void deletePerson(addressBooks* abs) { cout 请输入要删除的联系人 endl; string name; cin name; int res existPerson(abs, name); if (res ! -1) { //查到了进行删除操作 for (int i res;i abs-m_Size;i) { //进行前移操作 abs-personArray[i] abs-personArray[i 1]; } //并让联系人数量递减 abs-m_Size--; cout 删除成功 endl; } else { cout 查无此人 endl; } //请按任意键继续. . . system(pause); //清屏操作 system(cls); } //查找指定联系人信息 void findPerson(addressBooks* abs) { cout 请输入要查找的联系人 endl; string name; cin name; int res existPerson(abs, name); if (res ! -1) { cout 找到了 endl; cout 姓名: abs-personArray[res].m_Name endl; cout 性别: abs-personArray[res].m_Sex endl; cout 年龄: abs-personArray[res].m_Age endl; cout 电话: abs-personArray[res].m_Phone endl; cout 地址: abs-personArray[res].m_Addr endl; } else { cout 查无此人 endl; } } //修改联系人 void changePerson(addressBooks* abs) { cout 请输入要修改的联系人 endl; string name; cin name; int res existPerson(abs, name); if (res ! -1) { //姓名 string name; cout 请输入姓名 endl; cin name; abs-personArray[res].m_Name name; //性别 cout 请输入性别 endl; cout 1 -- 男 endl; cout 2 -- 女 endl; int sex 0; while (true) { cin sex; if (sex 1 || sex 2) { abs-personArray[res].m_Sex sex; break; } cout 输入有误请重新输入; } //年龄 cout 请输入年龄 endl; int age 0; cin age; abs-personArray[res].m_Age age; //联系电话 cout 请输入联系电话 endl; string phone; cin phone; abs-personArray[res].m_Phone phone; //家庭住址 cout 请输入家庭住址 endl; string address; cin address; abs-personArray[res].m_Addr address; cout 修改成功 endl; } else { cout 查无此人 endl; } //请按任意键继续. . . system(pause); //清屏操作 system(cls); } //清空所有联系人 void cleanPerson(addressBooks* abs) { abs-m_Size 0; cout 通讯录已清空 endl; system(pause); system(cls); } int main() { //创建通讯录 addressBooks abs; //初始化通讯录中的人数 abs.m_Size 0; int select 0; while (true) { showMenu(); cin select; switch (select) { case 1: //添加联系人 addPerson(abs); break; case 2: //显示联系人 showPerson(abs); break; case 3: //删除联系人 deletePerson(abs); break; case 4: //查找联系人 findPerson(abs); break; case 5: //修改联系人 changePerson(abs); break; case 6: //清空联系人 cleanPerson(abs); break; case 0: //退出通讯录 cout 欢迎下次使用 endl; system(pause); return 0; break; default: break; } } system(pause); return 0; }

更多文章