初学者必学项目之C++实现简易通讯录
本期我们利用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++实现简易通讯录相关推荐
- 初学者必学:绘画初学者如何设计人物?
绘画初学者如何设计人物?如何成为职业的插画师?角色设计的流程是什么?CG插画是什么?原画师是什么?学习绘画难吗?怎样才能学习好绘画?想必这些都是绘画初学者们经常在想的问题吧,就是不知道如何才能学习好绘 ...
- div css标记,前端初学者必学的div加css标签
原标题:前端初学者必学的div加css标签 今天给大家分享前端初学者必须要学习的标签,这些标签你都会了吗? DIV加css标签 页头:header 登录条:loginBar 标志:logo 侧栏:si ...
- 初学者必学的C++项目!花3天搞定
学C++应该都知道Google测试框架,它是一个非常重要的测试软件,一直广泛应用于C/C++项目测试. 重点是,它的设计过程几乎覆盖C++项目开发中常遇到的问题. 所以Google测试框架常常被当作初 ...
- 八个Python常用函数,非常好用,初学者必学知识点!
Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print print函 ...
- Python初学者必学的20个重要技巧
Python是世界上使用最广泛的编程语言之一,原因有很多:易理解.用途非常广泛.包含了大量的模块和库等等.其中,简洁和较高的可读性使Python在所有软件中非常突出. 作为一名数据科学家,笔者每天都在 ...
- 赚到!4个Python初学者必学的Numpy小技巧
2020-01-22 17:01:00 全文共3384字,预计学习时长10分钟 图源:Unsplash Python初学者除了要掌握基础知识外,了解一些小技巧.小窍门也是学习路上必不可少的一种催化剂, ...
- 初学者必学教程——JQuery的简介
JQuery是一个优秀的轻量级Javascript库,兼容CSS3,还兼容各种浏览器,在Web前端开发中广泛使用.在现在就业的过程中,会运用JQuery会成为你的加分项. JQuery简介 什么是JQ ...
- 同字母异序词 python_Python初学者必学的20个重要技巧
本文转载自公众号"读芯术"(ID:AI_Discovery). Python是世界上使用最广泛的编程语言之一,原因有很多:易理解.用途非常广泛.包含了大量的模块和库等等.其中,简洁 ...
- 3D建模初学者必学运算操作
3d建模是一个总称,基本来讲3d建模可以分为:3d低模手绘[场景/角色]以及次世代高模[场景/角色]. 1 .什么是3d低模手绘? 3d美术设计师的工作内容是根据原画设计师的构思,将二维的东西在3d软 ...
最新文章
- Java web 环境搭建-Linux
- dubbo 单元测试_技术分享——一路踩坑构建Dubbo源码
- 治标不治本:POI Ptg错误的解决方法
- 包装exp是什么意思_全包装修是什么意思?全包6万装修60平米的房子好不好?-广州亚运城装修...
- 在Windows 2000下优化Oracle9i性能[转]
- r语言怎么做经验分布_R语言如何做马尔科夫转换模型markov switching model
- font face如何导入自定义字体
- [EffectiveC++]item34:区分接口继承和实现继承
- springboot-添加拦截器
- 在Data Lake Analytics中使用视图 1
- 电子科技大学2019年计算机复试分数线,2019考研电子科技大学复试分数线已公布...
- DM8168 DMM(2)
- Gse v0.40.0 发布,Go 高性能分词,增加更多常用 API
- shell获取git最近一次提交信息_我低估了PowerShell:一个提取Git提交记录并生成文件Diff列表的脚本案例...
- u盘文件意外删除怎么恢复,不小心删了u盘的文件怎么办
- Java——聊聊JUC中的线程中断机制 LockSupport
- aws lambda_AWS Lambda和Node JS的路由管理框架
- 从网页中获取图片链接的方法。
- 不知道玩什么游戏的你看过来
- 指纹特征提取及描述(附Python代码)
热门文章
- VRML浏览器——Cortona的简介
- 如何手写一个支持H.265的高清播放器
- 实拍自行车运动员坠崖身亡,恐怖!!!
- GP200光缆普查仪 OTDR一体机 光通信综合测试仪 敲缆机
- 织梦php页面中调用标签,织梦dede:php标签中调用其他普通标签和页面相关变量及全局配...
- 萨姆森阀门定位器3730-300000040000000.03结构和工作原理
- 【python】将单通道图像转换为3通道图像
- 【安全知识分享】PPTX|行为安全观察(BAS)培训课件(附下载)
- SC8205A耐压20V双N 沟道增强型 MOS 场效应管
- 运维之道 | Redis 命令解析大全