关注公众号,后台回复
找书+ C++Primer
获取C++相关电子书。
系统需求
通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下:
-
添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 -
显示联系人:显示通讯录中所有联系人信息 -
删除联系人:按照姓名进行删除指定联系人 -
查找联系人:按照姓名查看指定联系人信息 -
修改联系人:按照姓名重新修改指定联系人 -
清空联系人:清空通讯录中所有信息 -
退出通讯录:退出当前使用的通讯录
新建项目
菜单功能
添加已进入终端的菜单,输出所有可以实现的功能,暂时先不写功能。
// AddressBookManagementSystem.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include<iostream>usingnamespacestd;voidshowMenu()//显示菜单{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;}intmain(){ showMenu();}
退出功能
先系欸一个函数,用于退出时显示退出系统的提示“欢迎下次使用”。
voidexitSystem()//退出系统{cout << "欢迎下次使用" << endl; system("pause");exit(0); //退出程序,全部退出}
然后再主程序中根据选择,执行相应的功能。
intmain(){int select = 0; //创建用户选择的变量while (true) { showMenu(); //调用显示菜单函数cin >> select; //用户输入选择switch (select) {case1: //添加联系人 功能还没写好,先暂时breakbreak; //跳出当前switch循环,继续下一次while循环,但是不退出程序case2: //显示联系人break;case3: //删除联系人break;case4: //查找联系人break;case5: //修改联系人break;case6: //清空联系人break;case0: //退出系统 exitSystem();break;default:break; } } system("pause");return0;}
添加联系人
功能描述: 实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址) 添加联系人实现步聚:
-
设计联系人结构体 -
设计通讯录结构体 -
main函数中创建通讯录 -
封装添加联系人函数 -
测试添加联系人功能
设计联系人结构体
structPersonConnect {//通讯录结构体string PName; //姓名int PSex; //性别 1 男 2 女int PAge; //年龄string PPhone; //电话string PAddress; //住址};structAddDressBooks { PersonConnect personArray[1000]; //通讯录中保存1000个联系人int pSize; //通讯录中人员个数 };
创建通讯录
voidaddPerson(AddDressBooks * abs)//添加联系人{//判断通讯录是否已满,如果满了,提示已满,否则添加联系人if (abs->pSize == 1000) {cout << "通讯录已满,无法添加" << endl;return; }else {//添加联系人string name;cout << "请输入姓名:" << endl;cin >> name;abs->personArray[abs->pSize].PName = name;//添加联系人性别int sex;cout << "请输入性别:1男2女" << endl;while (true) {cin >> sex;if (sex == 1 || sex == 2)//1男2女 1 2 为合法输入 {abs->personArray[abs->pSize].PSex = sex;break; }cout << "输入有误,请重新输入" << endl; }//添加联系人年龄int age;cout << "请输入年龄:" << endl;cin >> age;abs->personArray[abs->pSize].PAge = age;//添加联系人电话string phone;cout << "请输入电话:" << endl;cin >> phone;abs->personArray[abs->pSize].PPhone = phone;//添加联系人地址string address;cout << "请输入地址:" << endl;cin >> address;abs->personArray[abs->pSize].PAddress = address;abs->pSize++; //增加通讯录中人员个数cout << "添加成功" << endl; }} ---case1: //添加联系人 addPerson(&abs); //通过地址传递,可以利用abs的地址,直接操作abs的数据break; //跳出当前switch循环,继续下一次while循环,但是不退出程序
觉得滚动这么长,太难看了,加一个清屏功能。
cout << "添加成功" << endl;system("pause"); //按任意键继续system("cls"); //清屏
显示联系人
voidshowPerson(AddDressBooks* abs)//显示联系人{//判断通讯录中人员个数是否为0,如果为0,提示记录为空,否则显示联系人信息if (abs->pSize == 0) {cout << "当前记录为空" << endl; }else {for (int i = 0; i < abs->pSize; i++) {cout << "姓名:" << abs->personArray[i].PName << "t";cout << "性别:" << (abs->personArray[i].PSex == 1 ? "男" : "女") << "t"; //三目运算符cout << "年龄:" << abs->personArray[i].PAge << "t";cout << "电话:" << abs->personArray[i].PPhone << "t";cout << "地址:" << abs->personArray[i].PAddress << endl; //最后endl能控制都在一行 } } system("pause"); system("cls"); //清屏}---case2: //显示联系人showPerson(&abs);
查找联系人
intisExist(AddDressBooks* abs, string name)//判断联系人是否存在,存在返回在通讯录中的位置,不存在返回-1{for (int i = 0; i < abs->pSize; i++) {if (abs->personArray[i].PName == name) {return i; } }return-1;}voidfindPerson(AddDressBooks* abs)//查找联系人{cout << "请输入查找的姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1) {cout << "姓名:" << abs->personArray[ret].PName << "t";cout << "性别:" << (abs->personArray[ret].PSex == 1 ? "男" : "女") << "t"; //三目运算符cout << "年龄:" << abs->personArray[ret].PAge << "t";cout << "电话:" << abs->personArray[ret].PPhone << "t";cout << "地址:" << abs->personArray[ret].PAddress << endl; //最后endl能控制都在一行 }else {cout << "查无此人" << endl; } system("pause"); system("cls"); //清屏}---case4: //查找联系人 findPerson(&abs);
删除联系人功能
---case3: //删除联系人 deletePerson(&abs);break;
修改联系人
voidmodifyPerson(AddDressBooks* abs)//修改联系人{cout << "请输入修改的姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1) { //添加联系人string name;cout << "请输入姓名:" << endl;cin >> name;abs->personArray[ret].PName = name;//添加联系人性别int sex;cout << "请输入性别:1男2女" << endl;while (true) {cin >> sex;if (sex == 1 || sex == 2)//1男2女 1 2 为合法输入 {abs->personArray[ret].PSex = sex;break; }cout << "输入有误,请重新输入" << endl; }//添加联系人年龄int age;cout << "请输入年龄:" << endl;cin >> age;abs->personArray[ret].PAge = age;//添加联系人电话string phone;cout << "请输入电话:" << endl;cin >> phone;abs->personArray[ret].PPhone = phone;//添加联系人地址string address;cout << "请输入地址:" << endl;cin >> address;abs->personArray[ret].PAddress = address;cout << "修改成功" << endl; }else {cout << "查无此人" << endl; } system("pause"); //按任意键继续 system("cls"); //清屏}
清空联系人
voidcleanPerson(AddDressBooks* abs)//清空联系人{abs->pSize = 0; //将通讯录中人员个数置为0 不读取,没有标,但是会在内存,访问不到就行cout << "通讯录已清空" << endl; system("pause"); system("cls"); //清屏}
打包项目
配置管理器改为Release
,选择生成 > 生成解决方案
或按下快捷键Ctrl+Shift+B
来生成项目。
🔔 想要获取更多网络安全与编程技术干货?
关注 泷羽Sec-静安 公众号,与你一起探索前沿技术,分享实用的学习资源与工具。我们专注于深入分析,拒绝浮躁,只做最实用的技术分享!💻
扫描下方二维码,马上加入我们,共同成长!🌟
👉 长按或扫描二维码关注公众号
或者直接回复文章中的关键词,获取更多技术资料与书单推荐!📚
原文始发于微信公众号(泷羽Sec-静安):09x通讯录管理系统
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论