c++实现简单通讯录系统
需求分析:
1.通讯录可以添加联系人。
2.通讯录可以显示所有联系人。
3.通讯录可以查找联系人。
4.通讯录可以删除联系人。
5.通讯录可以修改联系人。
6.可以清空通讯录。
7.退出通讯录。
项目代码:
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
#define MAX 1000
typedef struct person { //定义一个联系人的结构体string name;string sex;int age;int telnumber;string addr;
}person;
typedef struct Addressbooks { //定义一个通讯录,自带一个联系人数组,里面可以存放MAX个联系人struct person personArray[MAX];int m_size=0;
}Addressbooks;
void Menu() { //菜单函数cout << " 通讯录管理系统" << endl;cout << "" << endl;cout << "" << endl;cout << " 1--添加联系人" << endl;cout << " 2--显示联系人" << endl;cout << " 3--删除联系人" << endl;cout << " 4--查找联系人" << endl;cout << " 5--修改联系人" << endl;cout << " 6--清空联系人" << endl;cout << " 7--退出联系人" << endl;
}
void addPerson(Addressbooks* abs) { //添加联系人的函数实现if (abs->m_size == MAX) {cout << "此通讯录已满,不能添加\n" << endl;}else {string name;string sex;int age;int telnumber;string addr;cout << "请输入联系人姓名:" << endl;cin >> name;abs->personArray[abs->m_size].name = name;cout << "请输入联系人性别:" << endl;cin >> sex;abs->personArray[abs->m_size].sex = sex;cout << "请输入联系人年龄:" << endl;cin >> age;abs->personArray[abs->m_size].age = age;cout << "请输入联系人电话号码:" << endl;cin >> telnumber;abs->personArray[abs->m_size].telnumber = telnumber;cout << "请输入联系人家庭住址:" << endl;cin >> addr;abs->personArray[abs->m_size].addr = addr;abs->m_size++;cout << "添加成功!!!" << endl;system("pause"); //利用这行语句达到一个显示按任意键继续的效果system("cls"); //清空整个屏幕,刷新屏幕}
}
void showPerson(Addressbooks* abs) { //显示整个通讯录中联系人的函数实现for (int i = 0; i < abs->m_size; i++) {cout << abs->personArray[i].name << " " << abs->personArray[i].sex << " " << abs->personArray[i].age << " " << abs->personArray[i].telnumber << " " << abs->personArray[i].addr << endl;}system("pause");system("cls");
}
int selectPerson(Addressbooks* abs,string name) { //查询输入的联系人是否存在,存在返回联系人坐在的下标值,不存在则返回-1for (int i = 0; i < abs->m_size; i++) {if (abs->personArray[i].name == name) {return i;}}return -1;
}
void deletePerson(Addressbooks* abs) { //删除联系人的函数实现string name;cout << "请输入删除联系人的名字:" << endl;cin >> name;if (selectPerson(abs, name) != -1) {for (int i = selectPerson(abs, name); i < abs->m_size;i++) {abs->personArray[i] = abs->personArray[i + 1];}abs->m_size--;cout << "删除成功" << endl;}else {cout << "查无此人" << endl;}system("pause");system("cls");
}
void searchPerson(Addressbooks* abs) { //查询联系人并输出相关信息的函数实现string name;cout << "请输入联系人姓名:" << endl;cin >> name;int ret = selectPerson(abs, name);if (ret != -1) {cout << abs->personArray[ret].name << " " << abs->personArray[ret].sex << " " << abs->personArray[ret].age << " " << abs->personArray[ret].telnumber << " " << abs->personArray[ret].addr << endl;}else {cout << "查无此人" << endl;}system("pause");system("cls");
}
void revisePerson(Addressbooks* abs) { //修改联系人的函数实现string name;cout << "请选择联系人 :" << endl;cin >> name;int ret;ret = selectPerson(abs, name);if (ret != -1) {cout << " 1--修改姓名" << endl;cout << " 2--修改性别" << endl;cout << " 3--修改年龄" << endl;cout << " 4--修改电话号码" << endl;cout << " 5--修改家庭住址" << endl;cout << " 0--退出" << endl;int chosen;while (1) { cout << "选择:"<<endl;cin >> chosen;switch (chosen){case 1:{string name2;cout << "修改名字:" << endl;cin >> name2;abs->personArray[ret].name = name2;break;}case 2:{string sex;cout << "修改性别:" << endl;cin >> sex;abs->personArray[ret].sex = sex;break;}case 3:{int age;cout << "修改年龄:" << endl;cin >> age;abs->personArray[ret].age = age;break;}case 4:{int tel;cout << "修改电话号码:" << endl;cin >> tel;abs->personArray[ret].telnumber = tel;break;}case 5:{string addr;cout << "修改住址:" << endl;cin >> addr;abs->personArray[ret].addr = addr;break;}case 0:goto FLAG1;default:break;}}}else {cout << "查无此人!!!" << endl;}FLAG1:system("pause");system("cls");
}
void clear(Addressbooks* abs) {abs->m_size = 0;cout << "此通讯录已清空!!!" << endl;system("pause");system("cls");
}
int main() {Addressbooks book1; //先定义一个通讯录,并添加一个联系人hypbook1.personArray[0].name = "hyp"; book1.personArray[0].sex = "man";book1.personArray[0].age = 21;book1.personArray[0].telnumber = 76766767;book1.personArray[0].addr = "重庆";book1.m_size = 1;int chosen; while (1) {Menu();cout << "选择:" ;cin >> chosen;switch (chosen){case 1: //添加联系人addPerson(&book1);break;case 2: //显示联系人showPerson(&book1);break;case 3: //删除联系人deletePerson(&book1);break;case 4: //查找联系人searchPerson(&book1);break;case 5: //修改联系人revisePerson(&book1);break;case 6: //清空联系人clear(&book1);break;case 7: //退出通讯录return 0;break;default:break;}}return 0;
}
效果:
显示联系人
添加联系人
后面效果就不一一显示了
c++实现简单通讯录系统相关推荐
- 设计简单通讯录系统 普通数组和vector数组实现
设计并实现简单通讯录系统 1.定义描述联系人信息的类(数据类) 数据成员:身份证号.姓名.手机号(用字符串数组,可能不止一个).QQ号.微信号.住址;成员函数:构造函数若干.get/set函数.显示函 ...
- 【C语言】实现简单通讯录系统(源码)
文章目录 一.通讯录简介 二.自定义的函数操作数据 1.定义使用的常量和通讯录个人信息类 2.初始化通讯录 3.往通讯录中添加联系人 4.删除通讯录中的某个联系人 5.查找通讯录中的某个联系人 6.修 ...
- Java课设-简单的通讯录系统(增删改查连接数据库)
一.题目介绍 二.实验思路 这里主要是运用到了jdbc来连接数据库,而在数据库中存在的是通讯录的记录,有id,姓名,手机号,创建时间,修改时间.同时使用的是swing的来做可视化界面,其中运用到了弹窗 ...
- C++实现简单的通讯录系统
需求 利用C++写一个简单的通讯录系统,具体需求如下: 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别.年龄.联系电话.家庭住址)最多记录100人 显示联系人:显示通 ...
- java学生通讯录_简单实现Java通讯录系统
本文实例为大家分享了Java通讯录系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; class Person { String name; String n ...
- C++ MFC 学习笔记+小型通讯录系统实现
MFC 最详细入门教程 [MFC常用函数总结](https://www.cnblogs.com/jiu0821/p/4606639.html) [C++ & MFC]https://www.c ...
- IDEA+MySQL+JavaFX之通讯录系统
IDEA+MySQL+JavaFX 软件 项目创建 设计界面 Controller代码编写 按钮响应 数据库 主要代码 欢迎打扰 刚刚结束了小学期,在这里我想借助我的一个小项目--班级通讯录管理系统, ...
- 可视化图形界面编程(Easyx联合c++的通讯录系统)
一.初想 1.QT? 学了快两年的编程了,一直都是在黑窗口控制台进行操作,于是我突发奇想,想要做出一个带界面的,可以用鼠标进行人机交互的通讯录程序作为实训的内容,于是我开始了在网上搜索'如何用c++做 ...
- (Easyx联合c++的通讯录系统)续
目录 一.前言 二.改进 三.题外话 四.完整代码 一.前言 忙完了考试周,才有闲情雅致写这篇博客---- (20条消息) 可视化图形界面编程(Easyx联合c++的通讯录系统)_Hzq958的博客- ...
最新文章
- linux 如何设置待机时间_小型手持喷码机@小型手持喷码机如何安装
- 【干货集锦】如何轻松玩转文档管理工具?我们为你精心准备了一份学习大礼包...
- java常见异常思维导图_21_异常_第21天(异常、企业面试题,思维导图下载)
- 设计模式之——bridge模式
- 【排序+难题】LeetCode 41. First Missing Positive
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序处理并发
- 修改Hosts不生效的解决办法
- 8086CPU各寄存器及其简介
- 如何区分手机端 APP 是原生 APP 还是 H5?H5 和原生 APP 之间的区别
- PPT用宏插入不同背景图片
- GPU Pro 7——实时体积云(翻译,附Unity工程)
- MES系统是什么?对企业来说有何好处?
- 滴滴跨端框架 Chameleon 正式支持快应用
- Linksys WRT1900ACS 路由器恢复原厂固件
- TFmini Plus 开关量输出说明
- 字节Java高级岗:java测试开发工程师要求
- 2020年计算机科学与技术学校排名,2020年全国计算机科学与技术专业大学排名
- 推荐算法之DeepCross模型
- 深度学习如何“助攻”医学影像?我们来听听学界大拿的解释 | CNCC 2017
- Java JDBC和数据库连接池 韩顺平老师自学笔记
热门文章
- python怎么使用显卡gpu_win10 显卡GPU使用tensorflow-gpu训练模型(精华帖汇总)
- SAP中采购提示预算耗竭的原因分析
- 计算机辅助设计与制造考试重点,华中科技大学2017博士招生:计算机辅助设计与制造考试大纲...
- MediaDevices html5,HTML5如何通过navigator.mediaDevices.getUserMedia调用手机摄像头
- egg-mongoose的 update only works with $ operators报错
- Laya ProtoBuffer
- java trace stack_jstack命令(Java Stack Trace)
- span 文字自动换行(实测可用)
- fromCallable() defer() andThen()
- Win XP iso映像文件(附序列号)