一 系统需求

主要用C++来实现一个通讯录管理系统
需要包含以下功能

  • 添加联系人:向通讯录中添加新人,信息包括姓名、性别、年龄、联系电话、家庭住址,最多记录1000人
  • 显示联系人:显示通讯录中所有联系人信息
  • 删除联系人:按照姓名进行删除指定联系人
  • 查找联系人: 按照姓名查看指定联系人信息
  • 修改联系人:情况通讯录中所有信息
  • 退出通讯录:退出当前使用的通讯录

二 创建项目

创建步骤如下:

  • 创建新项目
  • 添加文件

visual studio code创建新项目

三 菜单功能

用户选择功能的界面
步骤:

  • 封装函数显示该界面,如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;
}

四 退出功能

退出通讯录系统
思路:根据用户不同的选择,进入不同的功能,可以选择switch分支结构,将整个架构进行搭建

当用户选择0的时候,执行退出,选择其他先不做操作,也不会退出程序

while (true) {// 菜单调用showMenu();cin >> select;switch (select){case(1):  //1.添加联系人break;case(2): //2.显示联系人break;case(3): //3.删除联系人break;case(4): //4.查找联系人break;case(5): //5.修改联系人break;case(6): //6.清空联系人break;case(0): //0.退出通讯录cout << "欢迎下次使用" << endl;system("pause");return 0;break;default:break;}}

五 添加联系人

实现添加联系人功能,联系人上限为1000人,联系人信息包括姓名、性别、年龄、联系电话、家庭住址
添加联系人实现步骤:

  • 设计联系人结构体
  • 设计通讯录结构体
  • mian函数中创建通讯录
  • 封装添加联系人函数
  • 测试添加联系人功能

5.1 设计联系人结构体

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

// 设计联系人结构体
struct Person {// 姓名string m_Name;// 性别 1 男 2 女int m_Sex;// 年龄int m_Age;// 电话string m_Phone;// 住址string m_Addr;
};

5.2 设计通讯录结构体

#define MAX 1000 // 不能加;
/ 设计通讯录结构体
struct Addressbooks {// 通讯录中保存的联系人数组struct Person personArray[MAX];// 通讯录中当前记录联系人个数int m_Size;
};

5.3 设计增添用户的方法

// 1.添加联系人
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;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"); // 清屏}
}

六 显示联系人

功能描述:显示通讯录中已有的联系人信息
显示联系人实现步骤:

  • 封装显示联系人函数
  • 测试显示联系人功能

6.1 封装显示联系人函数

思路:判断如果当前通讯录中没有人员,就提示记录为空,人数大于0,显示通讯录中信息

// 2 显示联系人
void showPerson(Addressbooks* abs) {// 判断通讯录中人数是否为0,如果为0,提示记录为空// 如果不为0,显示记录的联系人信息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");
}

七 删除联系人

功能描述:按照姓名进行删除指定联系人
删除联系人实现步骤:

  • 封装检测联系人是否存在
  • 封装删除联系人函数
  • 测试删除联系人功能

7.1 封装检测联系人是否存在

设计思路:
删除联系人前,需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示没有要删除的联系人,因此我们可以把检测联系人是否存在封装成封装成一个函数,如果存在,返回联系人在通讯录中的位置,不存在返回-1

// 检测联系人是否存在,如果存在,返回联系人所在数组中位置,不存在返回-1
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; // 如果遍历结束都没有找到,返回-1}
}

7.2 封装删除联系人函数

根据用户输入的来呢西人判断该通讯录中是否有此人
查找到进行删除,并提示删除成功
查不到提示查无此人

/ 删除指定联系人
void deletePerson(Addressbooks *abs) {cout << "请输入您要删除的联系人:" << endl;string name;cin >> name;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");
}

八 查找联系人

功能描述:按照姓名查看指定联系人信息
查找联系人步骤:

  • 封装查找联系人函数
  • 测试查找指定联系人

8.1 封装查找联系人函数

判断用户指定联系人是否存在,如果存在显示信息,不存在提示查无此人

//4. 查找联系人
void findPerson(Addressbooks *abs) {cout << "请输入您要查找的联系人:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1) {cout << "姓名:" << abs->personArray[ret].m_Name << "\t";cout << "性别:" << abs->personArray[ret].m_Sex << "\t";cout << "电话:" << abs->personArray[ret].m_Phone << "\t";cout << "年龄:" << abs->personArray[ret].m_Age << "\t";cout << "住址:" << abs->personArray[ret].m_Addr << "\t";}else {cout << "查无此人" << endl;}system("pause");system("cls");
}

九 修改联系人

功能描述:按照姓名重新修改指定联系人
修改联系人实现步骤:

  • 封装修改联系人函数
  • 测试修改联系人功能

9.1封装修改联系人函数

实现思路:查找用户输入的联系人,如果查找成功进行修改操作,查找失败提示查无此人

// 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->personArray[ret].m_Name = name;int age;cout << "请输入年龄:" << endl;cin >> age;abs->personArray[ret].m_Age = age;cout << "请输入性别:" << endl;cout << "1--男" << endl;cout << "2--女" << endl;int sex = 0;while (true) {cin >> sex;if (sex == 1 || sex == 2) {abs->personArray[ret].m_Sex = sex;break;}cout << "输入有误,请重新输入" << endl;}string phone;cout << "请输入电话:" << endl;cin >> phone;abs->personArray[ret].m_Phone = phone;string addr;cout << "请输入地址:" << endl;cin >> addr;abs->personArray[ret].m_Addr = addr;}else {cout << "查无此人" << endl;}system("pause");system("cls");
}

十 清空联系人

功能描述:清空通讯录中所有信息
清空联系人步骤:

  • 封装清空联系人函数
  • 测试清空联系人

10.1 封装清空联系人函数

将通讯录所有联系人信息清除掉,只要通讯录记录的联系人数量置为0,做逻辑清空即可

void cleanPerson(Addressbooks* abs) {abs->m_Size = 0;cout << "通讯录已经清空" << endl;system("pause");system("cls");
}

通讯录管理系统(cpp)相关推荐

  1. C++ 通讯录管理系统实验报告

    [概述] 手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个联系人). 存储在手机 ...

  2. 基于C++实现(控制台+界面)通讯录管理系统【100010012】

    个人通讯录管理系统 问题描述: 主要内容: 个人通讯录是记录了同学(包含一起上学的学校名称).同事(包含共事的单位名称).朋友(包含认识的地点).亲戚(包含称呼)等与本人有关人员的数据集. 具体要求: ...

  3. 基于C++和QT实现的个人通讯录管理系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85722043 资源下载地址:https://download.csdn.net/downl ...

  4. C++课程设计 STL通讯录管理系统

    目录 一,设计要求3 (一)功能设计要求3 1.建立文件3 2.文件存储3 3.读取文件3 4.增加学生记录3 5.删除记录4 6.修改记录4 7.查询记录4 8.显示记录4 9.关于记录的排序4 1 ...

  5. C++课程设计------通讯录管理系统

    一. 任务描述 通讯录管理系统 手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个 ...

  6. 通讯录管理系统-C++课程设计(试错版)

    目录 项目要求: 首先:建立手机联系人头文件 手机卡联系人源文件.cpp文件: 建立手机联系人头文件-Phone_Contacts.h: 建立 手机联系人源文件-Phone_Contacts.cpp文 ...

  7. 通讯录管理系统—优化版 (C语言 期末大作业 课程设计)

    文章目录 通讯录管理系统 --- 优化版 一.设计要求 二.总体设计 1.系统具体功能 2.数据结构设计 3.函数功能 4.磁盘文件 三.详细设计 主界面 管理员模块 用户模块 四.程序测试 1.查看 ...

  8. 通讯录管理系统C++代码

    目录 通讯录管理系统(课程设计) 一.系统中需要实现的功能 二.创建项目 三.实现功能 1.菜单功能 2.添加联系人功能 3.显示联系人功能 4.删除联系人 5 .查找联系人功能 6.修改联系人功能 ...

  9. C++实现通讯录管理系统(不涉及文件操作)

    目录 一.前言 二.项目文件构成 三.项目实现功能 四.项目代码 一.前言 这个是学习c++的时候顺手写的一个练习小demo,发出来希望有需要的朋友可以用到. 也可以直接到我的github仓库中拉取源 ...

最新文章

  1. pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库
  2. linux下sudo权限管理
  3. python饼状图颜色一样_Python饼状图的绘制实例
  4. tomcat的server.xml详解
  5. 获取屏幕的宽和高-Display中getHeight()和getWidth() 官方废弃
  6. 解决ActionBar中的不显示View控件
  7. 2021HDU多校10 - 7084 Pty loves string(KMPnext树+主席树+dfs序)
  8. Scala的存在类型
  9. 使用countup.js使数字动态叠加
  10. r.java没有生成_R.java 常见问题(R.java文件没有生成 )
  11. 手机uc浏览器夜间模式怎么设置调成全黑
  12. phantomjs php 登录,PHANTOMJS PHP:空响应对象
  13. 白板推导系列Pytorch-线性判别分析(LDA)
  14. 2014年最新前端开发面试题(题目列表+答案 完整版)
  15. php 编译安装参数详解
  16. 华为HG8347R光猫 4台设备连接限制破解全过程
  17. ”在禁用UAC时,无法激活此应用“问题
  18. 微服务的数据聚合Join
  19. 提问的智慧 - 艾瑞克.史蒂文.雷蒙德(Eric Steven Raymond)
  20. [转]程序员成功之路 ——The road ahead for programmer(演讲稿)

热门文章

  1. 2.Android高仿网易云音乐-引导界面和广告界面实现
  2. python pptp链接_Centos7搭建pptp一键安装脚本
  3. 怀旧服服务器荣誉系统是啥,魔兽世界怀旧服荣誉系统上线 荣誉有何作用
  4. 1-Ubuntu18.04安装教程
  5. 计算机竞赛主持人开场白台词,辩论赛流程主持人台词
  6. linux yum安装ipmitool,centos安装ipmitool
  7. mysql 大量 time wait_mysql出现大量的TIME_WAIT解决办法
  8. 一起学英语第三季第五集
  9. [UE4][C++]第一个简单的小游戏--黑洞引力
  10. 优盘Flash, SD卡, TF 卡 ,CF卡一体黑胶存储颗粒数据恢复专用必备工具合