本期我们利用C++实现简易通讯录

一、基本功能

1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
0、退出通讯录

二、成品展示

以上为通讯录各功能的详细展示,时长90s,想看的猿友可以看完。
话不多说,直接上代码。

三、注意事项:该代码能在vs2017完美运行

注意:为了代码的可观与其维护性,我们将代码分成三块书写

1、test.cpp用于测试函数功能
2、contact.h用于声明函数和结构体
3、contact.cpp用于函数实现

tip:大家一定要添加两个源文件以及一个头文件哦
如图:

四、上源码

1、contact.h

#pragma once
#include<iostream>
#include<string>
using namespace std;#define MAX 1000  //用宏定义定义最大容量,利于后期的维护,可一改全改//创建联系人结构体
struct Contacts
{string name;int sex;//1男2女int age;string phone;string address;
};//创建通讯录结构体
struct AddressBook
{struct Contacts People[MAX];  //最多存MAX人int size;   //记录当前人数
};//1、添加联系人
void Addpeople(struct AddressBook* list);//2、显示联系人
void Showpeople(struct AddressBook* list);//找一个人是否在,在的话返回下标
int IsExit(struct AddressBook* list, string name);//3、删除联系人
void Deletepeople(struct AddressBook* list);//4、查找联系人
void Findpeople(struct AddressBook* list);//5、修改联系人
void Modifypeople(struct AddressBook* list);//6、清空联系人
void Emptypeople(struct AddressBook* list);

2、test.cpp

#include"contact.h"//基本框架
//菜单框架
//test.cpp用于测试
//contact.h用于声明
//contact.cpp用于函数实现
//1、添加联系人
//2、显示联系人
//3、删除联系人
//4、查找联系人
//5、修改联系人
//6、清空联系人
//0、退出通讯录//显示菜单
void menu()
{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()
{struct AddressBook list;//创建一个通讯录list.size = 0;          //初始化通讯录为0;int select = 0;do {menu();//显示菜单cin >> select;switch (select){case 1://1、添加联系人Addpeople(&list);break;case 2://2、显示联系人Showpeople(&list);break;case 3://3、删除联系人Deletepeople(&list);break;case 4://4、查找联系人Findpeople(&list);break;case 5://5、修改联系人Modifypeople(&list);break;case 6://6、清空联系人Emptypeople(&list);break;case 0:cout << "按任意键退出,欢迎下次使用" << endl;break;default:cout << "输入错误,请重新输入" << endl;break;}} while (select);system("pause");return 0;
}

3、contact.cpp

#include"contact.h"//1、添加联系人
void Addpeople(struct AddressBook* list)
{//先判断通讯录是否已满if (list->size == MAX){cout << "通讯录已满,无法添加" << endl;return;}else{//添加联系人string name;int sex;//1男2女int age;string phone;string address;cout << "请输入姓名" << endl;cin >> name;list->People[list->size].name = name;cout << "请输入性别" << endl;cout << "1---男    2---女" << endl;while (1){cin >> sex;if (sex == 1 || sex == 2){list->People[list->size].sex = sex;break;}else{cout << "请按提示出入1或2" << endl;}}cout << "请输入年龄" << endl;cin >> age;list->People[list->size].age = age;cout << "请输入手机号" << endl;cin >> phone;list->People[list->size].phone = phone;cout << "请输入地址" << endl;cin >> address;list->People[list->size].address = address;}list->size++;cout << "添加成功" << endl;system("pause");system("cls");
}//2、显示联系人
void Showpeople(struct AddressBook* list)
{//先判断联系人是否为空if (list->size == 0){cout << "通讯录为空" << endl;}else{//显示联系人,遍历联系人数组即可for (int i = 0; i < list->size; i++){cout << "姓名:" << list->People[i].name <<"    "<< "性别:" << (list->People[i].sex==1?"男":"女") << "    "<< "年龄:" << list->People[i].age << "    "<< "电话:" << list->People[i].phone << "    "<< "地址:" << list->People[i].address << endl;}}system("pause");system("cls");
}//找一个人是否在,在的话返回下标
int IsExit(struct AddressBook* list, string name)
{for (int i = 0; i < list->size; i++){if (list->People[i].name == name){return i;}}return -1;
}//3、删除联系人
void Deletepeople(struct AddressBook* list)
{string name;cout << "请输入要删除联系人的姓名:" << endl;cin >> name;int pos = IsExit(list, name);if (pos!=-1){for (int i = pos; i < list->size - 1; i++){list->People[i] = list->People[i + 1];}list->size--;cout << "删除成功!" << endl;}else{cout << "搜索结果为空!" << endl;}system("pause");system("cls");
}//4、查找联系人
void Findpeople(struct AddressBook* list)
{string name;cout << "请输入要查找联系人的姓名:" << endl;cin >> name;int pos = IsExit(list, name);if (pos != -1){//找到此人,显示其信息cout << "姓名:" << list->People[pos].name << "    "<< "性别:" << (list->People[pos].sex == 1 ? "男" : "女") << "    "<< "年龄:" << list->People[pos].age << "    "<< "电话:" << list->People[pos].phone << "    "<< "地址:" << list->People[pos].address << endl;}else{cout << "查找结果为空!" << endl;}system("pause");system("cls");
}//5、修改联系人
void Modifypeople(struct AddressBook* list)
{string name1;cout << "请输入要修改联系人的姓名:" << endl;cin >> name1;int pos = IsExit(list, name1);if (pos != -1){//找到此人,修改其信息string name;int sex;//1男2女int age;string phone;string address;cout << "请输入姓名" << endl;cin >> name;list->People[pos].name = name;cout << "请输入性别" << endl;cout << "1、男     2、女" << endl;while (1){cin >> sex;if (sex == 1 || sex == 2){list->People[pos].sex = sex;break;}else{cout << "请按提示出入1或2" << endl;}}cout << "请输入年龄" << endl;cin >> age;list->People[pos].age = age;cout << "请输入手机号" << endl;cin >> phone;list->People[pos].phone = phone;cout << "请输入地址" << endl;cin >> address;list->People[pos].address = address;cout << "修改成功!" << endl;}else{cout << "搜索结果为空!" << endl;}system("pause");system("cls");
}//6、清空联系人
void Emptypeople(struct AddressBook* list)
{cout << "确认清空吗?" << endl;int ret = 0;cout << "1、确认清空    2、考虑考虑" << endl;cin >> ret;if (list->size == 0){cout << "通讯录已空,无需清空!" << endl;}else{if (ret == 1){list->size = 0;cout << "通讯录已清空!" << endl;}}system("pause");system("cls");
}

本期通讯录代码分享就到这啦,欢迎各位看官留下你们宝贵的意见!
下期出QT实战项目——翻金币。

初学者必学项目之C++实现简易通讯录相关推荐

  1. 初学者必学:绘画初学者如何设计人物?

    绘画初学者如何设计人物?如何成为职业的插画师?角色设计的流程是什么?CG插画是什么?原画师是什么?学习绘画难吗?怎样才能学习好绘画?想必这些都是绘画初学者们经常在想的问题吧,就是不知道如何才能学习好绘 ...

  2. div css标记,前端初学者必学的div加css标签

    原标题:前端初学者必学的div加css标签 今天给大家分享前端初学者必须要学习的标签,这些标签你都会了吗? DIV加css标签 页头:header 登录条:loginBar 标志:logo 侧栏:si ...

  3. 初学者必学的C++项目!花3天搞定

    学C++应该都知道Google测试框架,它是一个非常重要的测试软件,一直广泛应用于C/C++项目测试. 重点是,它的设计过程几乎覆盖C++项目开发中常遇到的问题. 所以Google测试框架常常被当作初 ...

  4. 八个Python常用函数,非常好用,初学者必学知识点!

    Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print print函 ...

  5. Python初学者必学的20个重要技巧

    Python是世界上使用最广泛的编程语言之一,原因有很多:易理解.用途非常广泛.包含了大量的模块和库等等.其中,简洁和较高的可读性使Python在所有软件中非常突出. 作为一名数据科学家,笔者每天都在 ...

  6. 赚到!4个Python初学者必学的Numpy小技巧

    2020-01-22 17:01:00 全文共3384字,预计学习时长10分钟 图源:Unsplash Python初学者除了要掌握基础知识外,了解一些小技巧.小窍门也是学习路上必不可少的一种催化剂, ...

  7. 初学者必学教程——JQuery的简介

    JQuery是一个优秀的轻量级Javascript库,兼容CSS3,还兼容各种浏览器,在Web前端开发中广泛使用.在现在就业的过程中,会运用JQuery会成为你的加分项. JQuery简介 什么是JQ ...

  8. 同字母异序词 python_Python初学者必学的20个重要技巧

    本文转载自公众号"读芯术"(ID:AI_Discovery). Python是世界上使用最广泛的编程语言之一,原因有很多:易理解.用途非常广泛.包含了大量的模块和库等等.其中,简洁 ...

  9. 3D建模初学者必学运算操作

    3d建模是一个总称,基本来讲3d建模可以分为:3d低模手绘[场景/角色]以及次世代高模[场景/角色]. 1 .什么是3d低模手绘? 3d美术设计师的工作内容是根据原画设计师的构思,将二维的东西在3d软 ...

最新文章

  1. Java web 环境搭建-Linux
  2. dubbo 单元测试_技术分享——一路踩坑构建Dubbo源码
  3. 治标不治本:POI Ptg错误的解决方法
  4. 包装exp是什么意思_全包装修是什么意思?全包6万装修60平米的房子好不好?-广州亚运城装修...
  5. 在Windows 2000下优化Oracle9i性能[转]
  6. r语言怎么做经验分布_R语言如何做马尔科夫转换模型markov switching model
  7. font face如何导入自定义字体
  8. [EffectiveC++]item34:区分接口继承和实现继承
  9. springboot-添加拦截器
  10. 在Data Lake Analytics中使用视图 1
  11. 电子科技大学2019年计算机复试分数线,2019考研电子科技大学复试分数线已公布...
  12. DM8168 DMM(2)
  13. Gse v0.40.0 发布,Go 高性能分词,增加更多常用 API
  14. shell获取git最近一次提交信息_我低估了PowerShell:一个提取Git提交记录并生成文件Diff列表的脚本案例...
  15. u盘文件意外删除怎么恢复,不小心删了u盘的文件怎么办
  16. Java——聊聊JUC中的线程中断机制 LockSupport
  17. aws lambda_AWS Lambda和Node JS的路由管理框架
  18. 从网页中获取图片链接的方法。
  19. 不知道玩什么游戏的你看过来
  20. 指纹特征提取及描述(附Python代码)

热门文章

  1. VRML浏览器——Cortona的简介
  2. 如何手写一个支持H.265的高清播放器
  3. 实拍自行车运动员坠崖身亡,恐怖!!!
  4. GP200光缆普查仪 OTDR一体机 光通信综合测试仪 敲缆机
  5. 织梦php页面中调用标签,织梦dede:php标签中调用其他普通标签和页面相关变量及全局配...
  6. 萨姆森阀门定位器3730-300000040000000.03结构和工作原理
  7. 【python】将单通道图像转换为3通道图像
  8. 【安全知识分享】PPTX|行为安全观察(BAS)培训课件(附下载)
  9. SC8205A耐压20V双N 沟道增强型 MOS 场效应管
  10. 运维之道 | Redis 命令解析大全