用C++写一个电话通讯录
目前我也是名初学C++的菜鸟,一直在B站上看的C++的网课,这个的C++电话通讯录是我写的第一个有一些功能的代码,所以在这里想分享给初学C++的小白们,如有任何问题或是建议可以在下方评论或是私信我,下面就先介绍一下这个电话通讯录的功能。
一、功能目录
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
0、退出联系人
二、功能介绍+部分函数代码的展示
1、添加联系人
在控制台中输入1就表示是添加联系人的功能,随后会依次出现 “姓名:”、“性别:”、“年龄:”、“联系电话:”、“联系地址:”的字样,我们只需正确输入即可,其中“性别:”中只能输入“男”或“女”,如果输入其他的字样就会被要求重新输入。还有这个添加联系人的添加人数是1000人。

void addpeople(peoplebook* abs)
{
if (abs->size == max)
{
cout << "联系人已满,无法添加" << endl;
return;
}
else {
string name;
cout << "请输入名字: " << endl;
cin >> name;
abs->peoplearray[abs->size].name = name;
string sex; while (true)
{
cout << "请输入性别: " << endl;
cin >> sex;
if (sex == "男" || sex == "女")
{
abs->peoplearray[abs->size].sex = sex; break;
}
else
{
cout << "输入错误,请重新输入" << endl;
}
}
int age;
cout << "请输入年龄: " << endl;
cin >> age;
abs->peoplearray[abs->size].age = age;
string phone;
cout << "请输入联系电话: " << endl;
cin >> phone;
abs->peoplearray[abs->size].phone = phone;
string map;
cout << "请输入联系地址: " << endl;
cin >> map;
abs->peoplearray[abs->size].map = map;
cout << "添加成功" << endl;
abs->size++;
system("pause");
system("cls");
}
}
2、显示联系人
添加完联系人之后就可以显示联系人了,输入2就会显示出之前添加的联系人了。

void showpeople(peoplebook* abs)
{
if (abs->size == 0)
{
cout << "对不起,未添加联系人,请添加联系人" << endl;
}
else {
for(int i=0;i<abs->size;++i)
{
cout << "姓名: " << "\t";
cout << abs->peoplearray[i].name << "\t";
cout << "性别: " << "\t";
cout << abs->peoplearray[i].sex << "\t";
cout << "年龄: " << "\t";
cout << abs->peoplearray[i].age << "\t";
cout << "联系电话: " << "\t";
cout << abs->peoplearray[i].phone << "\t";
cout << "联系地址: " << "\t";
cout << abs->peoplearray[i].map << endl;
}
}
system("pause");
system("cls");
}
3、删除联系人
输入3后,再输入要删除的联系人的姓名就可以删除想要删除的联系人了。

void delpeople(peoplebook* abs)
{
string name;
cin >> name;
int res = ispeople(name, abs);
if (res == -1)
{
cout << "查无此人" << endl;
}
if(res != -1) {
for (int i = res;i < abs->size;++i)
{
abs->peoplearray[i] = abs->peoplearray[i + 1];
}
abs->size--;
cout << "删除成功!!!" << endl; }
system("pause");
system("cls");
}
4、查找联系人
添加完联系人之后,输入4再输入想要查找联系人的姓名就可以显示出来了。

void chapeople(peoplebook* abs)
{
string name;
cin >> name;
int res = ispeople(name, abs);
if (res == -1)
{
cout << "查无此人" << endl;
}
if (res != -1)
{
cout << "姓名: " << "\t";
cout << abs->peoplearray[res].name << "\t";
cout << "性别: " << "\t";
cout << abs->peoplearray[res].sex << "\t";
cout << "年龄: " << "\t";
cout << abs->peoplearray[res].age << "\t";
cout << "联系电话: " << "\t";
cout << abs->peoplearray[res].phone << "\t";
cout << "联系地址: " << "\t";
cout << abs->peoplearray[res].map << endl;
}
system("pause");
system("cls");
}
5、修改联系人
输入5再输入将要修改的联系人的姓名就可以重新添加联系人了。

void modifypeople(peoplebook* abs)
{
string name;
cin >> name;
int res = ispeople(name, abs);
if (res == -1)
{
cout << "查无此人" << endl;
}
if (res != -1)
{
string name;
cout << "请输入名字: " << endl;
cin >> name;
abs->peoplearray[res].name = name;
string sex; while (true)
{
cout << "请输入性别: " << endl;
cin >> sex;
if (sex == "男" || sex == "女")
{
abs->peoplearray[res].sex = sex; break;
}
else
{
cout << "输入错误,请重新输入" << endl;
}
}
int age;
cout << "请输入年龄: " << endl;
cin >> age;
abs->peoplearray[res].age = age;
string phone;
cout << "请输入联系电话: " << endl;
cin >> phone;
abs->peoplearray[res].phone = phone;
string map;
cout << "请输入联系地址: " << endl;
cin >> map;
abs->peoplearray[res].map = map;
cout << "添加成功" << endl;
}
system("pause");
system("cls");
}
6、清空联系人
输入6就可以删除所有保存过的联系人了。

void cleanpeople(peoplebook* abs)
{
abs->size = 0;
cout << "已清空完毕" << endl;
system("pause");
system("cls");
}
0、退出联系人
输入0就可退出控制台。
三、主函数+剩余的代码
#include<iostream>
#include <string>
#define max 1000
using namespace std;
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;
}
struct people
{
string name;
string sex;
int age;
string phone;
string map;
};
struct peoplebook
{
people peoplearray[max];
int size=0;
};
int main()
{
int select = 0;
string name;
peoplebook abs;
while (true)
{
showMenu();
cin >> select; switch (select)
{
case 1://1、添加联系人
addpeople(&abs);
break;
case 2://2、显示联系人
showpeople(&abs);
break;
case 3://3、删除联系人
cout << "请输入联系人的姓名:" << endl;
delpeople(&abs);
break;
case 4://4、查找联系人
cout << "请输入联系人的姓名:" << endl;
chapeople(&abs);
break;
case 5://5、修改联系人
cout << "请输入联系人的姓名:" << endl;
modifypeople(&abs);
break;
case 6://、清空联系人
cleanpeople(&abs);
break;
case 0:
cout << "欢迎下次使用" << endl;
return 0;
break;
}
}
return 0;
}
四、结尾
此代码是我在B站上的C++传智播客中的案例中学习到的,有想要学习的也可以去B站上学习。这个代码量对于初学C++来说是比较多的,但是难度并不是很大,主要是练习了struct、调用函数的使用。我相信如果把这些代码写下来的话,也可以增长一些对C++的兴趣。因为我自身也是初学C++的菜鸟,其中有任何建议和意见可以私信给我,或者可以互相讨论交流一起学习。
用C++写一个电话通讯录的更多相关文章
- 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
解题: 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码[123和12345]那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出 ...
- [py]python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...
- CBrother脚本10分钟写一个拯救“小霸王服务器”的程序
CBrother脚本语言10分钟写一个拯救“小霸王服务器”的程序 到了一家新公司,接手了一坨c++服务器代码,到处内存泄漏,这服务器没有数据库,挂了后重启一下就好了,公司就这么凑活着用了几年了,定时重 ...
- 剖析:如何用 SwiftUI 5天组装一个微信 —— 通讯录发现我篇
前置资源 GitHub: SwiftUI-WeChatDemo 第零章:用 SwiftUI 5天组装一个微信 第一章:剖析:如何用 SwiftUI 5天组装一个微信 -- 聊天界面篇 通讯录 通讯录的 ...
- 怎样写一个webpack loader
div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...
- 请写一个php函数,可以接受任意数量的参数
请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...
- 学记:为spring boot写一个自动配置
spring boot遵循"约定优于配置"的原则,使用annotation对一些常规的配置项做默认配置,减少或不使用xml配置,让你的项目快速运行起来.spring boot的神奇 ...
- 自己写一个 jQuery 插件
我知道这一天终将会到来,现在,它来了. 需求 开发 SharePoint 的 CSOM 应用时,经常需要在网页上输出一些信息. 这种需求和 alert 的弹窗.F12 的断点查看信息的场景是不一样的: ...
- 深入浅出React Native 3: 从零开始写一个Hello World
这是深入浅出React Native的第三篇文章. 1. 环境配置 2. 我的第一个应用 将index.ios.js中的代码全部删掉,为什么要删掉呢?因为我们准备从零开始写一个应用~学习技术最好的方式 ...
随机推荐
- 如何理解Flutter中的asyc 和 await
https://blog.csdn.net/xdhc304/article/details/90232723 Flutter的语法非常精简, 对于异步任务, 只要使用asyc和awai 配合就能实现, ...
- Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)
SSD写数据会出现什么问题 SSD读写的单位不是位,而是一个块.如果要改变这个块中的一位,首先要将整个块擦写成1,然后再写入更新的数据. 为了解决擦写块的低效,SSD的策略是将需要改写的块,读取出来, ...
- 事件流和初识Jquery
一.事件流 定义: 多个彼此嵌套元素,他们拥有相同的事件,最内部元素事件被触发后,外边多个元素的同类型事件也会被触发,多个元素他们同类型事件同时执行的效果称为“事件流”. 事件对象获取: 获得: ①主 ...
- 02_HTML02
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"软件测试"获取视频和教程资料! b站在线视频 HTML ...
- 图解HTTP 6/11
第三章 HTTP报文内的HTTP信息 1.用于http协议交互的信息被称为HTTP报文.请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端 )的叫做响应报文. 2.请求报文的结构 请求行:包 ...
- Python os.chown() 方法
概述 os.chown() 方法用于更改文件所有者,如果不修改可以设置为 -1, 你需要超级用户权限来执行权限修改操作.高佣联盟 www.cgewang.com 只支持在 Unix 下使用. 语法 c ...
- PHP frenchtojd() 函数
------------恢复内容开始------------ 实例 把法国共和历法的日期转换为儒略日计数,然后再转换回法国共和历法的日期: <?php$jd=frenchtojd(3,3,14) ...
- [草稿] Linux 各种 打包 / 解包 命令
https://www.cnblogs.com/yeungchie/ 有不少错误 .tar格式 解包: tar -xvf FileName.tar 打包: tar -cvf FileName.tar ...
- luogu P4166 [SCOI2007]最大土地面积 凸包 旋转卡壳
LINK:最大土地面积 容易想到四边形的边在凸包上面 考虑暴力枚举凸包上的四个点计算面积. 不过可以想到可以直接枚举对角线的两个点找到再在两边各找一个点 这样复杂度为\(n^3\) 可以得到50分. ...
- Pytorch Autograd (自动求导机制)
Pytorch Autograd (自动求导机制) Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logisti ...