一、目的:

使用C++实现通讯录

二、包含功能:

添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人

显示联系人:显示通讯录中所有联系人信息

删除联系人:按照姓名进行删除指定联系人

查找联系人:按照姓名查看指定联系人信息

修改联系人:按照姓名重新修改指定联系人

清空联系人:清空通讯录中所有信息

退出通讯录:退出当前使用的通讯录

三、代码部分

打印菜单

void showMenu()
{cout << "*******************************" << endl <<"*******  1、添加联系人  *******" << endl <<"*******  2、删除联系人  *******" << endl <<"*******  3、显示联系人  *******" << endl <<"*******  4、查找联系人  *******" << endl <<"*******  5、修改联系人  *******" << endl <<"*******  6、清空联系人  *******" << endl <<"*******  0、退出通讯录  *******" << endl<<"*******************************" << endl;cout << "请选择:" << endl;
}

首先,因为我们要选择1、2、3、4、5、6、0这些数字从而开启各项功能,所以这里我使用switch语句

同时,当我们选择1-6这些数字时,功能完成后我们并不直接退出程序,而是重新回到功能展示界面供我们选择功能,因此我们使用while循环,只有选择了功能0,才执行退出功能

    while (true){showMenu();int input = 0;cin >> input;switch (input){case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:break;case 0:cout << "退出程序!" << endl;return 0;break;default:break;}}

而在实现添加联系人、删除联系人等的功能之前,需要先有联系人才行,因此接下来我们先实现联系人的创建,这里使用2个结构体:联系人结构体/通讯录结构体

#define MAX 1000
struct person  // 定义联系人结构体
{string name;int sex;int age;string tel;string address;
};
struct Contact // 定义通讯录结构体
{struct person ContactArray[MAX]; // 创建联系人结构体数组int size;    // 确定当前通讯录数量,上限为MAX=1000
};

添加联系人

void Add(Contact* Con)
{if (Con->size == MAX){cout << "通讯录已满,无法添加!" << endl;return;}else{cout << "请输入姓名:" << endl;cin >> Con->ContactArray[Con->size].name;int sex = 0;while (true){cout << "请输入性别:" << endl;cout << "男 - 1" << "  " << "女 - 2" << endl;cin >> sex;if (sex == 1 || sex == 2){Con->ContactArray[Con->size].sex = sex;break;}cout << "输入错误,请重新输入!" << endl;}int age = 0;while (true){cout << "请输入年龄:" << endl;cin >> age;if (age > 0 && age < 110){Con->ContactArray[Con->size].sex = age;break;}cout << "输入错误,请重新输入!" << endl;}cout << "请输入电话:" << endl;cin >> Con->ContactArray[Con->size].tel;cout << "请输入住址:" << endl;cin >> Con->ContactArray[Con->size].address;Con->size++; // 数量+1cout << "添加成功!" << endl;system("pause"); // 请按任意键继续}system("cls"); // 清屏
}

显示联系人

void Show(Contact* Con)
{if (Con->size == 0){cout << "通讯录为空!" << endl;}else{for (int i = 0; i < Con->size; i++){cout << "序号:" << i+1 << "\t";cout << "姓名:" << Con->ContactArray[i].name << "\t";cout << "性别:" << (Con->ContactArray[i].sex == 1 ? "男" : "女") << "\t";// 1则返回男,否则是女cout << "年龄:" << Con->ContactArray[i].age << "\t";cout << "电话:" << Con->ContactArray[i].tel << "\t";cout << "住址:" << Con->ContactArray[i].address << "\t";cout << endl;}system("pause"); // 请按任意键继续}system("cls"); // 清屏
}

判断联系人是否存在

int Exist(Contact* Con,string name)
{for (int i = 0; i <= Con->size; i++){if (Con->ContactArray[i].name == name)return i;elsereturn -1;}
}

查找联系人

void Find(Contact* Con)
{cout << "请输入要查找人的名字:" << endl;string name;cin >> name;int ret = Exist(Con, name);if (ret == -1){cout << "查无此人!" << endl;}else{cout << "序号:" << ret + 1 << "\t";cout << "姓名:" << Con->ContactArray[ret].name << "\t";cout << "性别:" << (Con->ContactArray[ret].sex == 1 ? "男" : "女") << "\t";// 1则返回男,否则是女cout << "年龄:" << Con->ContactArray[ret].age << "\t";cout << "电话:" << Con->ContactArray[ret].tel << "\t";cout << "住址:" << Con->ContactArray[ret].address << "\t";cout << endl;}system("pause");system("cls"); // 清屏
}

删除指定联系人

void Del(Contact* Con)
{cout << "请输入要删除人的名字:" << endl;string name;cin >> name;int ret = Exist(Con,name);if (ret == -1){cout << "查无此人!" << endl;}else{for (; ret < Con->size; ret++){// 数据前移Con->ContactArray[ret] = Con->ContactArray[ret + 1];}Con->size--;cout << "删除成功!" << endl;}system("pause");system("cls");
}

修改指定联系人

void Mod(Contact* Con)
{cout << "请输入要修改人的名字:" << endl;string name;cin >> name;int ret = Exist(Con, name);if (ret == -1){cout << "查无此人!" << endl;}else{cout << "请输入姓名:" << endl;cin >> Con->ContactArray[ret].name;int sex = 0;while (true){cout << "请输入性别:" << endl;cout << "男 - 1" << "  " << "女 - 2" << endl;cin >> sex;if (sex == 1 || sex == 2){Con->ContactArray[Con->size].sex = sex;break;}cout << "输入错误,请重新输入!" << endl;}int age = 0;while (true){cout << "请输入年龄:" << endl;cin >> age;if (age > 0 && age < 110){Con->ContactArray[Con->size].age = age;break;}cout << "输入错误,请重新输入!" << endl;}cout << "请输入电话:" << endl;cin >> Con->ContactArray[ret].tel;cout << "请输入住址:" << endl;cin >> Con->ContactArray[ret].address;cout << "修改成功!" << endl;}system("pause");system("cls"); // 清屏
}

清空联系人

void Des(Contact* Con)
{char input;cout << "请确认是否要清空联系人?" << endl<< " 确认输入Y ,否则输入N" << endl;cin >> input;if (input == 'Y'){Con->size = 0;cout << "已清空通讯录!" << endl;}system("pause");system("cls"); // 清屏
}

主函数

int main()
{Contact Con;Con.size = 0;while (true){showMenu();int input = 0;cin >> input;switch (input){case 1:Add(&Con);break;case 2:Del(&Con);break;case 3:Show(&Con);break;case 4:Find(&Con);break;case 5:Mod(&Con);break;case 6:Des(&Con);break;case 0:cout << "退出程序!" << endl;return 0;break;default:break;}}return 0;
}

C++之 通讯录的实现(contact)相关推荐

  1. 教你C语言实现通讯录的详细代码

    本文详细讲解了C语言实现通讯录的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 (一)实现思路 1.通讯录功能 添加好友,删除好友,查找好友,修改 ...

  2. 用C语言实现 静态通讯录+动态通讯录+文件实现“退出保存信息版本”(附上思路+项目展示+源代码)

    前言 : 在生活中我们经常会遇到通讯录的使用,比如存进一个新的联系人的信息,或者对其删除,修改,查找:那这些神奇的功能是如何实现的?我们不禁好奇.今天,这篇博文将教会大家实现一个静态的或者动态的通讯录 ...

  3. android 获取通讯录全选反选_Xamarin.Forms读取并展示Android和iOS通讯录 TerminalMACS客户端...

    本文同步更新地址: https://dotnet9.com/11520.html https://terminalmacs.com/861.html 阅读导航: 一.功能说明 二.代码实现 三.源码获 ...

  4. C语言实现支持增删查改的通讯录

    通讯录的实现: 正文开始@Assassin 目录: 通讯录的实现: 1. 创建基本信息结构体: 2. 创建通讯录结构体: 3. 初始化通讯录: 4. 添加联系人信息: 5. 查找联系人信息: 6. 删 ...

  5. Android手机通讯录解析

    相关图片上传麻烦,原文件到我的博客上传的文件里下载. 1.通讯录应用介绍 通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的 ...

  6. C语言实现通讯录1.0

    简易通讯录 本文为大家提供一个简易通讯录,后续会更通讯录2.0以及通讯录3.0,分别为动态增长版本和文件版本. contact.h 头文件 -->存放函数的声明,库函数声明等 text.c 源文 ...

  7. 通讯录2.0(动态内存增长版本)

    通讯录2.0 我们在写之前通讯录1.0版本时,通讯录只能存储1000人的信息,若想存储更多人的信息就必须手动修改定义的数值,不够方便.通讯录2.0版本实现了内存的自动增长,若想存储更多人的信息,可以自 ...

  8. 【C语言进阶】C语言程序设计:动态通讯录(顺序表实现)

    目录 动态通讯录的实现 一.实验的目的和意义 二.实验内容描述 三.功能描述 四.数据结构 1.三大模块 2.结构设计 3.动态开辟 4.文件操作 5.主要函数 五.流程图及模块算法 1.Contac ...

  9. 【基于动态内存+文件操作】通讯录管理系统

    前言 每一个项目文件的功能说明 打印基本菜单 1.创建一个适合存放联系人信息的结构体和通讯录结构体 2.初始化通讯录(加载上次的联系人,检查容量是否充足) 枚举常量内部内容 (1)增加联系人信息 (2 ...

  10. 通讯录的实现(C语言)

    目录 前言 一.C语言知识点回顾 1.枚举 1.1枚举类型的定义 1.2 枚举的优点 为什么使用枚举? 1.3 通讯录中枚举的使用 2. return 与 return 0 3. qsort 参数 用 ...

最新文章

  1. eclipse注释模板设置(未整理)
  2. 新款iPad真香,谁用谁知道!
  3. Iphone4涨到2万,相对VERTU有里子,面子也便宜
  4. 自定义字段类型的开发[转]
  5. Groovy与Java集成常见的坑
  6. 零基础学Python(第十七章 模块import)
  7. BASIC-4 数列特征
  8. vue amp; nuxt 博客网站
  9. 7-201 列出连通集 (25 分)
  10. 洛谷P1312 Mayan游戏
  11. 如何从零开始学好单片机
  12. 大学生职业生涯规划计划与路径_我校举办2020年大学生职业生涯规划大赛
  13. 基于STM32单片机多功能电梯系统设计(论文原理图程序)
  14. 个人信贷不良资产成因和策略
  15. 【GAMES101现代计算机图形学入门笔记】Lec05 光栅化1(三角形)
  16. uniapp-路由和navigate跳转
  17. Kafka代码连不上:Recovery is suppressed by NoRestartBackoffTimeStrategy
  18. signature=0ca2720a9af9bfe70731d72325e6c137,Ca2+ signatures
  19. 即使是庸才我也要成为庸才中的人才
  20. c++实现经典游戏——贪吃蛇

热门文章

  1. DevOps 致简之道 —— MaxCloud + EKS 让开发回归开发
  2. kvm介绍与操作文档
  3. vue项目播放H.265编码视频流
  4. python搜索关键词自动提交_python+selenium实现百度关键词搜索自动化操作
  5. 摘自林少波的《毕业5年决定你的一生》
  6. 809*??=800*??+9*??
  7. 交叉熵损失函数(Cross Entropy Loss)
  8. ls -l 每一列的含义
  9. tableau创建计算字段,进行年龄段分类
  10. LInux_学习笔记_ViM编辑器的常用操作及命令