需求分析:

1.通讯录可以添加联系人。

2.通讯录可以显示所有联系人。

3.通讯录可以查找联系人。

4.通讯录可以删除联系人。

5.通讯录可以修改联系人。

6.可以清空通讯录。

7.退出通讯录。

项目代码:

#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
#define MAX 1000
typedef struct person {                     //定义一个联系人的结构体string name;string sex;int age;int telnumber;string addr;
}person;
typedef struct Addressbooks {                 //定义一个通讯录,自带一个联系人数组,里面可以存放MAX个联系人struct person personArray[MAX];int m_size=0;
}Addressbooks;
void Menu() {                                  //菜单函数cout << "                                                    通讯录管理系统" << endl;cout << "" << endl;cout << "" << endl;cout << "                                                    1--添加联系人" << endl;cout << "                                                    2--显示联系人" << endl;cout << "                                                    3--删除联系人" << endl;cout << "                                                    4--查找联系人" << endl;cout << "                                                    5--修改联系人" << endl;cout << "                                                    6--清空联系人" << endl;cout << "                                                    7--退出联系人" << endl;
}
void addPerson(Addressbooks* abs) {                 //添加联系人的函数实现if (abs->m_size == MAX) {cout << "此通讯录已满,不能添加\n" << endl;}else {string name;string sex;int age;int telnumber;string addr;cout << "请输入联系人姓名:" << endl;cin >> name;abs->personArray[abs->m_size].name = name;cout << "请输入联系人性别:" << endl;cin >> sex;abs->personArray[abs->m_size].sex = sex;cout << "请输入联系人年龄:" << endl;cin >> age;abs->personArray[abs->m_size].age = age;cout << "请输入联系人电话号码:" << endl;cin >> telnumber;abs->personArray[abs->m_size].telnumber = telnumber;cout << "请输入联系人家庭住址:" << endl;cin >> addr;abs->personArray[abs->m_size].addr = addr;abs->m_size++;cout << "添加成功!!!" << endl;system("pause");                                //利用这行语句达到一个显示按任意键继续的效果system("cls");                                  //清空整个屏幕,刷新屏幕}
}
void showPerson(Addressbooks* abs) {                    //显示整个通讯录中联系人的函数实现for (int i = 0; i < abs->m_size; i++) {cout << abs->personArray[i].name << " " << abs->personArray[i].sex << " " << abs->personArray[i].age << " " << abs->personArray[i].telnumber << " " << abs->personArray[i].addr << endl;}system("pause");system("cls");
}
int selectPerson(Addressbooks* abs,string name) {                   //查询输入的联系人是否存在,存在返回联系人坐在的下标值,不存在则返回-1for (int i = 0; i < abs->m_size; i++) {if (abs->personArray[i].name == name) {return i;}}return -1;
}
void deletePerson(Addressbooks* abs) {                              //删除联系人的函数实现string name;cout << "请输入删除联系人的名字:" << endl;cin >> name;if (selectPerson(abs, name) != -1) {for (int i = selectPerson(abs, name); 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 searchPerson(Addressbooks* abs) {                      //查询联系人并输出相关信息的函数实现string name;cout << "请输入联系人姓名:" << endl;cin >> name;int ret = selectPerson(abs, name);if (ret != -1) {cout << abs->personArray[ret].name << " " << abs->personArray[ret].sex << " " << abs->personArray[ret].age << " " << abs->personArray[ret].telnumber << " " << abs->personArray[ret].addr << endl;}else {cout << "查无此人" << endl;}system("pause");system("cls");
}
void revisePerson(Addressbooks* abs) {                      //修改联系人的函数实现string name;cout << "请选择联系人 :" << endl;cin >> name;int ret;ret = selectPerson(abs, name);if (ret != -1) {cout << "                               1--修改姓名" << endl;cout << "                               2--修改性别" << endl;cout << "                               3--修改年龄" << endl;cout << "                               4--修改电话号码" << endl;cout << "                               5--修改家庭住址" << endl;cout << "                               0--退出" << endl;int chosen;while (1) { cout << "选择:"<<endl;cin >> chosen;switch (chosen){case 1:{string name2;cout << "修改名字:" << endl;cin >> name2;abs->personArray[ret].name = name2;break;}case 2:{string sex;cout << "修改性别:" << endl;cin >> sex;abs->personArray[ret].sex = sex;break;}case 3:{int age;cout << "修改年龄:" << endl;cin >> age;abs->personArray[ret].age = age;break;}case 4:{int tel;cout << "修改电话号码:" << endl;cin >> tel;abs->personArray[ret].telnumber = tel;break;}case 5:{string addr;cout << "修改住址:" << endl;cin >> addr;abs->personArray[ret].addr = addr;break;}case 0:goto FLAG1;default:break;}}}else {cout << "查无此人!!!" << endl;}FLAG1:system("pause");system("cls");
}
void clear(Addressbooks* abs) {abs->m_size = 0;cout << "此通讯录已清空!!!" << endl;system("pause");system("cls");
}
int main() {Addressbooks book1;                             //先定义一个通讯录,并添加一个联系人hypbook1.personArray[0].name = "hyp";              book1.personArray[0].sex = "man";book1.personArray[0].age = 21;book1.personArray[0].telnumber = 76766767;book1.personArray[0].addr = "重庆";book1.m_size = 1;int chosen;                                     while (1) {Menu();cout << "选择:" ;cin >> chosen;switch (chosen){case 1:                             //添加联系人addPerson(&book1);break;case 2:                             //显示联系人showPerson(&book1);break;case 3:                             //删除联系人deletePerson(&book1);break;case 4:                             //查找联系人searchPerson(&book1);break;case 5:                             //修改联系人revisePerson(&book1);break;case 6:                             //清空联系人clear(&book1);break;case 7:                             //退出通讯录return 0;break;default:break;}}return 0;
}

效果:

显示联系人

添加联系人

后面效果就不一一显示了

c++实现简单通讯录系统相关推荐

  1. 设计简单通讯录系统 普通数组和vector数组实现

    设计并实现简单通讯录系统 1.定义描述联系人信息的类(数据类) 数据成员:身份证号.姓名.手机号(用字符串数组,可能不止一个).QQ号.微信号.住址;成员函数:构造函数若干.get/set函数.显示函 ...

  2. 【C语言】实现简单通讯录系统(源码)

    文章目录 一.通讯录简介 二.自定义的函数操作数据 1.定义使用的常量和通讯录个人信息类 2.初始化通讯录 3.往通讯录中添加联系人 4.删除通讯录中的某个联系人 5.查找通讯录中的某个联系人 6.修 ...

  3. Java课设-简单的通讯录系统(增删改查连接数据库)

    一.题目介绍 二.实验思路 这里主要是运用到了jdbc来连接数据库,而在数据库中存在的是通讯录的记录,有id,姓名,手机号,创建时间,修改时间.同时使用的是swing的来做可视化界面,其中运用到了弹窗 ...

  4. C++实现简单的通讯录系统

    需求 利用C++写一个简单的通讯录系统,具体需求如下: 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别.年龄.联系电话.家庭住址)最多记录100人 显示联系人:显示通 ...

  5. java学生通讯录_简单实现Java通讯录系统

    本文实例为大家分享了Java通讯录系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; class Person { String name; String n ...

  6. C++ MFC 学习笔记+小型通讯录系统实现

    MFC 最详细入门教程 [MFC常用函数总结](https://www.cnblogs.com/jiu0821/p/4606639.html) [C++ & MFC]https://www.c ...

  7. IDEA+MySQL+JavaFX之通讯录系统

    IDEA+MySQL+JavaFX 软件 项目创建 设计界面 Controller代码编写 按钮响应 数据库 主要代码 欢迎打扰 刚刚结束了小学期,在这里我想借助我的一个小项目--班级通讯录管理系统, ...

  8. 可视化图形界面编程(Easyx联合c++的通讯录系统)

    一.初想 1.QT? 学了快两年的编程了,一直都是在黑窗口控制台进行操作,于是我突发奇想,想要做出一个带界面的,可以用鼠标进行人机交互的通讯录程序作为实训的内容,于是我开始了在网上搜索'如何用c++做 ...

  9. (Easyx联合c++的通讯录系统)续

    目录 一.前言 二.改进 三.题外话 四.完整代码 一.前言 忙完了考试周,才有闲情雅致写这篇博客---- (20条消息) 可视化图形界面编程(Easyx联合c++的通讯录系统)_Hzq958的博客- ...

最新文章

  1. linux 如何设置待机时间_小型手持喷码机@小型手持喷码机如何安装
  2. 【干货集锦】如何轻松玩转文档管理工具?我们为你精心准备了一份学习大礼包...
  3. java常见异常思维导图_21_异常_第21天(异常、企业面试题,思维导图下载)
  4. 设计模式之——bridge模式
  5. 【排序+难题】LeetCode 41. First Missing Positive
  6. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序处理并发
  7. 修改Hosts不生效的解决办法
  8. 8086CPU各寄存器及其简介
  9. 如何区分手机端 APP 是原生 APP 还是 H5?H5 和原生 APP 之间的区别
  10. PPT用宏插入不同背景图片
  11. GPU Pro 7——实时体积云(翻译,附Unity工程)
  12. MES系统是什么?对企业来说有何好处?
  13. 滴滴跨端框架 Chameleon 正式支持快应用
  14. Linksys WRT1900ACS 路由器恢复原厂固件
  15. TFmini Plus 开关量输出说明
  16. 字节Java高级岗:java测试开发工程师要求
  17. 2020年计算机科学与技术学校排名,2020年全国计算机科学与技术专业大学排名
  18. 推荐算法之DeepCross模型
  19. 深度学习如何“助攻”医学影像?我们来听听学界大拿的解释 | CNCC 2017
  20. Java JDBC和数据库连接池 韩顺平老师自学笔记

热门文章

  1. python怎么使用显卡gpu_win10 显卡GPU使用tensorflow-gpu训练模型(精华帖汇总)
  2. SAP中采购提示预算耗竭的原因分析
  3. 计算机辅助设计与制造考试重点,华中科技大学2017博士招生:计算机辅助设计与制造考试大纲...
  4. MediaDevices html5,HTML5如何通过navigator.mediaDevices.getUserMedia调用手机摄像头
  5. egg-mongoose的 update only works with $ operators报错
  6. Laya ProtoBuffer
  7. java trace stack_jstack命令(Java Stack Trace)
  8. span 文字自动换行(实测可用)
  9. fromCallable() defer() andThen()
  10. Win XP iso映像文件(附序列号)