#include <iostream>
using namespace std;
#define MAX 1000
#include <string>//联系人的结构体
struct Person
{//姓名string m_Name;//性别int m_Sex;//年龄int m_Age;//电话string m_Phone;//住址string m_Addr;
};//设计通讯录的结构体
struct Addressbooks {//通讯录中保存的联系人数组struct Person personArray[MAX];//通讯录中当前记录联系人个数int M_Size;
};//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;}//年龄cout<<"请输入年龄:" << endl;int age = -1;while (true){cin >> age;if (age >= 0 && age <= 120) {abs->personArray[abs->M_Size].m_Age = age;break;}cout<<"输入有误,请重新输入" << endl;}//电话cout<<"请输入联系电话:" << endl;string phone;while (true){cin >> phone;if (phone.length() == 11) {abs->personArray[abs->M_Size].m_Phone = phone;break;}cout << "输入有误,请重新输入" << endl;}//住址cout<<"请输入住址:" << endl;string addrss;cin >> addrss;abs->personArray[abs->M_Size].m_Addr = addrss;//更新通讯录人数abs->M_Size++;cout<<"录入成功" << endl;system("pause");//请按任意键system("cls");//清屏操作}}
//2.显示所有的联系人
void showPerson(Addressbooks* abs) {//判断通讯录中人数是否为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");//清屏操作
}//检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1int 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;
}//3.删除指定的联系人
void deletePorson(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");//清屏操作
}//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 == 1 ? "男" : "女") << "\t";cout << "年龄:" << abs->personArray[ret].m_Age << "\t";cout << "电话:" << abs->personArray[ret].m_Phone << "\t";cout << "地址:" << abs->personArray[ret].m_Addr << endl;}else {cout<<"未找到此人" << endl;}system("pause");//请按任意键system("cls");//清屏操作
}//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;//性别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;}//年龄cout << "请输入年龄:" << endl;int age = -1;while (true){cin >> age;if (age >= 0 && age <= 120) {abs->personArray[ret].m_Age = age;break;}cout << "输入有误,请重新输入" << endl;}//电话cout << "请输入联系电话:" << endl;string phone;while (true){cin >> phone;if (phone.length() == 11) {abs->personArray[ret].m_Phone = phone;break;}cout << "输入有误,请重新输入" << endl;}//住址cout << "请输入住址:" << endl;string addrss;cin >> addrss;abs->personArray[ret].m_Addr = addrss;}else {cout << "未找到此人" << endl;}system("pause");//请按任意键system("cls");//清屏操作
}//6.清空通讯录的信息
void clearPerson(Addressbooks* abs) {abs->M_Size = 0;cout<<"通讯录已被清空" << endl;system("pause");//请按任意键system("cls");//清屏操作
}//菜单页面
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() {//创建通讯录结构体变量Addressbooks abs;//初始化通讯录中当前人员个数abs.M_Size = 0;int select = 0;//创建用户选择输入的变量while (true) {//菜单的调用showMenu();cin >> select;switch (select) {case 1:    //1.添加联系人addPerson(&abs);break;case 2:    //2.显示联系人showPerson(&abs);break;case 3:    //3.删除联系人deletePorson(&abs);break;case 4:    //4.查找联系人findPerson(&abs);break;case 5:    //5.修改联系人modifyPerson(&abs);break;case 6:    //6.清空联系人clearPerson(&abs);break;case 0:    //0.退出通讯录cout << "欢迎下一次使用" << endl;system("pause");return 0;break;}}system("pause");return 0;
}

C++一个简单的通讯录相关推荐

  1. 用结构体写一个简单的通讯录

    一个简单的通讯录 通讯录应该具备简单的一些功能 1 增添联系人 2 删除联系人 3 查找联系人 4 修改联系人 5 按名字给联系人排序 6 查看通讯录 除此之外,应该在实现上还应该具备一些其他的功能函 ...

  2. java开发一个简单的通讯录

    java开发一个简单的通讯录 ArrayList的综合应用 import java.util.*; public class ContactNote{static Scanner sc=new Sca ...

  3. 编写一个简单的通讯录python-python写一个通讯录

    闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 ? 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...

  4. android 通讯录搜索算法,一个简单的通讯录联系人拼音匹配算法

    这是很久以前遇到一个面试题,通讯录联系人拼音匹配算法,题目描述如下: 在通讯录里搜索联系人里,用户习惯使用拼音缩写,我们定义如下的搜索匹配规则: 以搜索王海宝(WangHaiBao)为例,如下输入均能 ...

  5. C++ 实现一个简单的通讯录管理系统

    需求 通讯录是一个可以记录亲人.好友信息的工具.本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下: 添加联系人∶向通讯录中添加新人,信息包括(姓名.性别.年龄.联系电话.家庭住址) ...

  6. java简单通讯录代码_java使用线性表写一个简单的通讯录系统

    全部代码: import java.util.Scanner; class Contact { String cellPhone; String name; } public class Main { ...

  7. 简单的通讯录程序系统python

    用python做一个简单的通讯录程序系统 主要功能∶ 1.查询联系人资料 2.插入新的联系人 3.删除已有联系人 4.退出通讯录程序 print('''|---欢迎进入通讯录程序---| |---1. ...

  8. C编程实践:简单的通讯录

    分享一个之前学C语言时练习写的一个简单的通讯录程序.程序功能: 1.添加联系人信息(姓名.电话号码.城市.公司). 2.保存联系人信息至本地文件. 3.打印输出联系人列表. 4.删除某个联系人信息或删 ...

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

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

最新文章

  1. Windows设置共享文件夹并允许写入--windows shared folder write access
  2. 读书笔记4:单例模式
  3. python安装路径怎么找-Python---查看安装路径
  4. SVC和PendSV
  5. C#基于LibUsbDotNet实现USB通信(一)
  6. 2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
  7. 红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...
  8. 【Siddhi】Error:osgi: [siddhi-execution-string] Manifest file ${_include} missing OSGi facet
  9. CTime类,CTime 与 CString转换
  10. matdem矩阵维度必须一致_「数据仓库篇」Kimball维度建模方案
  11. ffmpeg视频播放、格式转化、缩放等命令
  12. 使用 SqlDataSource 控件查询数据47
  13. 如何 方法内指令重排 进制_宁波PLC编程培训:新手如何学习PLC?
  14. Java、JSP电子书下载系统
  15. 基于java的网络电子通讯录的设计_网络电子通讯录管理系统
  16. (六)、Redis的AOF持久化---Redis设计与实现读书笔记
  17. Tomcat日志乱码问题解决方法
  18. webqq机器人java_机器人之一步一步来做WebQQ机器人-(三)(登录QQ并保持在线)
  19. 将汉语转换成拼音,实现拼音和中文双重登录
  20. 2.2、项目管理知识体系构成

热门文章

  1. 白话空间统计三十:地统计(4)探索性数据分析(1)
  2. 计算机辅助调试,腔体滤波器计算机辅助调试研究.pdf
  3. android手柄设置在哪里设置,android蓝牙游戏手柄怎样设置
  4. theharvester用法
  5. unity录音获取真实音频大小并获取字节流保存录音文件
  6. 「最通俗易懂」的java数组去重(其他语言通用)
  7. C++实现cat021(0.26版)报文解析
  8. 特斯拉柏林超级工厂又突发火灾;多模态人工智能产业联合体第二次大会召开;奇瑞汽车战略投资AI芯片公司 | 每日大事件...
  9. MCMC(三)蒙特卡洛之Gibbs采样
  10. 如何选性价比高的笔记本电脑,戴尔灵越16 Plus怎么样?