C++之 通讯录的实现(contact)
一、目的:
使用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)相关推荐
- 教你C语言实现通讯录的详细代码
本文详细讲解了C语言实现通讯录的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 (一)实现思路 1.通讯录功能 添加好友,删除好友,查找好友,修改 ...
- 用C语言实现 静态通讯录+动态通讯录+文件实现“退出保存信息版本”(附上思路+项目展示+源代码)
前言 : 在生活中我们经常会遇到通讯录的使用,比如存进一个新的联系人的信息,或者对其删除,修改,查找:那这些神奇的功能是如何实现的?我们不禁好奇.今天,这篇博文将教会大家实现一个静态的或者动态的通讯录 ...
- android 获取通讯录全选反选_Xamarin.Forms读取并展示Android和iOS通讯录 TerminalMACS客户端...
本文同步更新地址: https://dotnet9.com/11520.html https://terminalmacs.com/861.html 阅读导航: 一.功能说明 二.代码实现 三.源码获 ...
- C语言实现支持增删查改的通讯录
通讯录的实现: 正文开始@Assassin 目录: 通讯录的实现: 1. 创建基本信息结构体: 2. 创建通讯录结构体: 3. 初始化通讯录: 4. 添加联系人信息: 5. 查找联系人信息: 6. 删 ...
- Android手机通讯录解析
相关图片上传麻烦,原文件到我的博客上传的文件里下载. 1.通讯录应用介绍 通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的 ...
- C语言实现通讯录1.0
简易通讯录 本文为大家提供一个简易通讯录,后续会更通讯录2.0以及通讯录3.0,分别为动态增长版本和文件版本. contact.h 头文件 -->存放函数的声明,库函数声明等 text.c 源文 ...
- 通讯录2.0(动态内存增长版本)
通讯录2.0 我们在写之前通讯录1.0版本时,通讯录只能存储1000人的信息,若想存储更多人的信息就必须手动修改定义的数值,不够方便.通讯录2.0版本实现了内存的自动增长,若想存储更多人的信息,可以自 ...
- 【C语言进阶】C语言程序设计:动态通讯录(顺序表实现)
目录 动态通讯录的实现 一.实验的目的和意义 二.实验内容描述 三.功能描述 四.数据结构 1.三大模块 2.结构设计 3.动态开辟 4.文件操作 5.主要函数 五.流程图及模块算法 1.Contac ...
- 【基于动态内存+文件操作】通讯录管理系统
前言 每一个项目文件的功能说明 打印基本菜单 1.创建一个适合存放联系人信息的结构体和通讯录结构体 2.初始化通讯录(加载上次的联系人,检查容量是否充足) 枚举常量内部内容 (1)增加联系人信息 (2 ...
- 通讯录的实现(C语言)
目录 前言 一.C语言知识点回顾 1.枚举 1.1枚举类型的定义 1.2 枚举的优点 为什么使用枚举? 1.3 通讯录中枚举的使用 2. return 与 return 0 3. qsort 参数 用 ...
最新文章
- eclipse注释模板设置(未整理)
- 新款iPad真香,谁用谁知道!
- Iphone4涨到2万,相对VERTU有里子,面子也便宜
- 自定义字段类型的开发[转]
- Groovy与Java集成常见的坑
- 零基础学Python(第十七章 模块import)
- BASIC-4 数列特征
- vue amp; nuxt 博客网站
- 7-201 列出连通集 (25 分)
- 洛谷P1312 Mayan游戏
- 如何从零开始学好单片机
- 大学生职业生涯规划计划与路径_我校举办2020年大学生职业生涯规划大赛
- 基于STM32单片机多功能电梯系统设计(论文原理图程序)
- 个人信贷不良资产成因和策略
- 【GAMES101现代计算机图形学入门笔记】Lec05 光栅化1(三角形)
- uniapp-路由和navigate跳转
- Kafka代码连不上:Recovery is suppressed by NoRestartBackoffTimeStrategy
- signature=0ca2720a9af9bfe70731d72325e6c137,Ca2+ signatures
- 即使是庸才我也要成为庸才中的人才
- c++实现经典游戏——贪吃蛇
热门文章
- DevOps 致简之道 —— MaxCloud + EKS 让开发回归开发
- kvm介绍与操作文档
- vue项目播放H.265编码视频流
- python搜索关键词自动提交_python+selenium实现百度关键词搜索自动化操作
- 摘自林少波的《毕业5年决定你的一生》
- 809*??=800*??+9*??
- 交叉熵损失函数(Cross Entropy Loss)
- ls -l 每一列的含义
- tableau创建计算字段,进行年龄段分类
- LInux_学习笔记_ViM编辑器的常用操作及命令