通讯录管理系统【C++版本】
创始人
2024-06-03 17:16:01
0

博主:👍不许代码码上红
欢迎:🐋点赞、收藏、关注、评论。
格言: 大鹏一日同风起,扶摇直上九万里。

文章目录

    • 一、系统功能介绍
    • 二、新建项目
    • 三、菜单列表
    • 四、退出系统
    • 五、添加联系人
    • 六、显示联系人
    • 七、删除联系人
    • 八、查找联系人
    • 九、修改联系人
    • 十、清空联系人

一、系统功能介绍

1、添加联系人:向通讯录中添加联系人
2、显示联系人:显示通讯录中所有联系人信息
3、删除联系人:按照姓名删除指定的联系人
4、查找联系人:按照姓名查看特定联系人信息
5、修改联系人:按照姓名修改联系人信息
6、清空联系人:清空统续录中所有信息
7、退出通讯录系统

二、新建项目

创建新项目(visual studio2022)
在这里插入图片描述

创建源文件
在这里插入图片描述

三、菜单列表

菜单功能:用户可以使用的功能

1、封装函数showMenu()来显示菜单功能
在这里插入图片描述

代码

#include
using namespace std;//封装函数showMenu来显示菜单界面
void showMenu() {cout << "******通讯录管理系统_C++******" << endl;cout << "1、添加联系人" << endl;cout << "2、显示联系人" << endl;cout << "3、删除联系人" << endl;cout << "4、查找联系人" << endl;cout << "5、修改联系人" << endl;cout << "6、清空联系人" << endl;cout << "7、退出通讯录系统" << endl;cout << "************" << endl;}
int main() {showMenu();return 0;
}

四、退出系统

1、使用switch分支语句

在这里插入图片描述

代码

int select = 0;while (true) {cin >> select;switch (select) {case 0:cout << "欢迎下次使用!" << endl;system("pause");return 0;break; //退出通讯录功能}}

五、添加联系人

1、创建联系人结构体
代码

//联系人结构体
struct person {string m_name;//1、男性 2、女性int  m_gender;int m_age;string m_phone;string m_address;
};

2、创建通讯录结构体
代码

struct AddressBooks {//通讯录中保存的联系人的个数struct person personArray[MAX];//通讯录中当前联系人个数int m_size = 0;};

3、封装添加联系人函数
代码

//添加联系人函数
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  gender = 0;//写一个while循环,防止输入的不是1或者2while (true) {cin >> gender;if (gender == 1 || gender == 2) {abs->personArray[abs->m_size].m_gender = gender;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_address = address;//更新通讯录人数abs->m_size++;cout << "添加成功" << endl;//清屏system("pause");system("cls");}}

4、测试添加联系人功能
在这里插入图片描述

5、联系人信息包括:姓名、性别、年龄、联系电话、家庭住址

六、显示联系人

1、显示通讯录中所有的联系人信息
代码

case 2:showPerson(&abs);break;//显示联系人

2、封装显示联系人的函数
代码

//2、显示所有的联系人信息
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_gender == 1 ? "男":"女" )<< "\t";cout << "年龄:" << abs->personArray[i].m_age << "\t";cout << "电话:" << abs->personArray[i].m_phone << "\t";cout << "住址:" << abs->personArray[i].m_address << endl;}}system("pause");system("cls");}

在这里插入图片描述

七、删除联系人

1、封装检测联系人是否存在函数
代码

//3、检测联系人是否存在函数int isExist(AddressBooks * abs,string name) {for (int i = 0; i < abs->m_size; i++) {if (abs->personArray[i].m_name == name) {return i;}}return  -1;
}

2、封装删除联系人函数
代码

//封装删除联系人函数
void deletePerson(AddressBooks *abs) {cout << "请输入要删除的联系人:" << endl;string name;cin >> name;//ret = -1未查到//ret !=-1查到了int ret = isExist(abs,name);if( ret != -1) {for (int i = ret; i < abs->m_size; i++) {//数据前移操作abs->personArray[i] = abs->personArray[i + 1];}//更新通讯录中人员数abs->m_size--;cout << "删除成功!" << endl;}else  {cout << "查无此人!" << endl;}//清屏system("pause");system("cls");}

八、查找联系人

代码
1、封装查找联系人的函数

//4、查找联系人
void findPerson(AddressBooks *abs) {cout << "请输入要查找的联系人姓名:" << endl;string name;cin >> name;//判断联系人是否在通讯录中int ret = isExist(abs, name);if (ret != -1) {cout << "查找成功" << endl;cout << "姓名:"<< abs->personArray[ret].m_name << "\t";cout << "性别:" << abs->personArray[ret].m_gender << "\t";cout << "年龄:" << abs->personArray[ret].m_age << "\t";cout << "电话:" << abs->personArray[ret].m_phone << "\t";cout << "住址:" << abs->personArray[ret].m_address << endl;}else {cout << "查无此人" << endl;}system("pasue");system("cls");
}

九、修改联系人

1、封装修改联系人函数
代码

//修改指定联系人信息
void modifyPerson(AddressBooks *abs) {cout << "请输入要修改的联系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1) {cout << "找到联系人!" << endl;//修改姓名string name;cout << "请输入姓名:" << endl;cin >> name;abs->personArray[ret].m_name = name;//修改性别int gender;cout << "请输入性别:" << endl;cout << "1---男;2---女" << endl;while (true) {cin >> gender;if (gender == 1 || gender == 2) {abs->personArray[ret].m_gender = gender;break;}}//修改年龄int age;cout << "请输入年龄:" << endl;cin >> age;abs->personArray[ret].m_age = age;//修改手机号string phone;cout << "请输入手机号:" << endl;cin >> phone;abs->personArray[ret].m_phone = phone;//修改住址string address;cout << "请输入住址:" << endl;cin >> address;abs->personArray[ret].m_address = address;}else {cout << "查无此人!" << endl;}system("pause");system("cls");
}

在这里插入图片描述

十、清空联系人

1、封装函数实现清空联系人

代码

//6、清空所有联系人void cleanPerson(AddressBooks *abs) {int flag = 0;cout << "是否确认清空?" << endl;cout << "1---确认" << endl;cout << "2---取消" << endl;cin >> flag;switch (flag) {case 1:abs->m_size = 0;//做逻辑清空cout << "通讯录已经清空!" << endl;break;case 2:cout << "已经取消操作!" << endl;break;}system("pause");system("cls");}

如果对您的C++学习有帮助的话,就三联一下吧!

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
带头循环双向链表来咯!!! 前言:继上文,我们了解了结构最简单的一种链表---单链表那么我们今天就来...