QQ通讯录系统——用C++模拟实现,学C++必玩项目】
通讯录是最简单的项目,现在用C++实现一下
需求描述:
用C++实现一个QQ通讯录系统
要求的功能如下:
0.退出通讯录
1.添加联系人
2.显示通讯录
3.删除联系人
4.查找联系人
5.修改联系人
6.清空联系人
7.显示联系人总数
暂不要求《【文件交互】》功能
目录:
- 1.单文件代码实现>>>
- 2.多文件代码实现>>>
- "Addressbooks.h"接口实现
- 源cpp文件:
- 3.实现效果
- 【1】:开始界面
- 【2】:添加联系人
- 【3】:显示所有联系人
- 【4】:修改联系人的信息
- 【5】:删除联系人
- 【6】:清空通讯录
- 【7】:退出通讯录
- 4.后记
1.单文件代码实现>>>
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct Person {//联系人结构体string m_name; //姓名string m_sex; //性别int m_age; //年龄string m_qq; //QQ号string m_addr; //地址
};
class Findper {private:string name;
public:Findper(const string& name) {this->name = name;}bool operator()(vector<Person>::value_type& p) {return this->name == p.m_name;}
};
class Addressbooks {private:vector<Person>personArr;
public://------------------------------------------------------void showmenu() {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;cout << " ****** 0.退出通讯录 *******" << endl;cout << " ****************************" << endl;}//----------------------------------------------void addPerson() {//添加具体联系人Person p;cout << "请输入联系人姓名:" << endl;cin >> p.m_name;cout << "请输入联系人性别:" << endl;cin >> p.m_sex;cout << "请输入联系人年龄:" << endl;cin >> p.m_age;cout << "请输入联系人QQ号:" << endl;cin >> p.m_qq;cout << "请输入联系人地址:" << endl;cin >> p.m_addr;while (true) {vector<Person>::iterator it = find_if(this->personArr.begin(), this->personArr.end(), Findper(p.m_name));if (it == this->personArr.end())break;else {cout << "通讯录中已有该联系人!可在其名字后面添加数字,保证通讯录姓名唯一!" << endl;cin >> p.m_name;}}this->personArr.push_back(p);cout << "添加成功" << endl;cout << endl;system("pause");system("cls");return;}//-------------------------------------------------void showallPersons() { //显示所有联系人if (this->personArr.empty())cout << "该通讯录中暂时没有联系人,等待添加" << endl;else {for (int i = 0; i < this->personArr.size(); i++) {cout << "姓名:" << this->personArr[i].m_name <<" ";cout << "性别:" << this->personArr[i].m_sex << " ";cout << "年龄:" << this->personArr[i].m_age << " ";cout << "QQ:" << this->personArr[i].m_qq << " ";cout << "地址:" << this->personArr[i].m_addr << endl;}}cout << endl;system("pause");system("cls");return;}//--------------------------------------------------------void deletePerson() {cout << "请输入要删除联系人的姓名:" << endl;string name;cin >> name;vector<Person>::iterator find_res = find_if(this->personArr.begin(), this->personArr.end(), Findper(name));if (find_res == this->personArr.end())cout << "查无此人!!!" << endl;else {this->personArr.erase(find_res);cout << "—删除成功!—" << endl;}cout << endl;system("pause");system("cls");return;}//-------------------------------------------------------------void findPerson() {cout << "请输入您要查找的联系人的名字:" << endl;string name;cin >> name;vector<Person>::iterator it = find_if(this->personArr.begin(), this->personArr.end(), Findper(name));if (it == this->personArr.end())cout << "查无此人!!!" << endl;else {cout << "姓名:" << it->m_name << "\t";cout << "性别:" << it->m_sex << "\t";cout << "年龄:" << it->m_age << "\t";cout << "QQ:" << it->m_qq << "\t";cout << "地址:" << it->m_addr << endl;}cout << endl;system("pause");system("cls");return;}//-------------------------------------------------------------------------void modifyPerson() {cout << "请输入您要修改的联系人的名字:" << endl;string name;cin >> name;vector<Person>::iterator it = find_if(this->personArr.begin(), this->personArr.end(), Findper(name));if (it == this->personArr.end())cout << "查无此人!!!" << endl;else {cout << "重新输入联系人的除姓名外的所有信息!" << endl;cout << "姓别:" << endl;cin >> it->m_sex;cout << "年龄:" << endl;cin >> it->m_qq;cout << "地址:" << endl;cin >> it->m_addr;cout << "修改成功!!!" << endl;}cout << endl;system("pause");system("cls");return;}//-----------------------------------------------------------------------void cleanPeron() {cout << "确定清空吗?" << endl;bool jd;cout << "1----------确定||||||||||0--------退出" << endl;cin >> jd;if (jd) {this->personArr.clear();cout << "^_^删除成功!" << endl;}cout << endl;system("pause");system("cls");return;}//-----------------------------------------------------------------------void showsize() {cout << "通讯录现有的人数为:" << this->personArr.size() << endl;cout << endl;system("pause");system("cls");return;}//--------------------------------------------------------------------------void start() {while (true) {this->showmenu();int select = -1;cout << endl;cout << "请输入操作选项:" << endl;cout << endl;cin >> select;cout << endl;cout << "OK执行—>" << endl;switch (select) {case 1:this->addPerson(); //添加联系人break;case 2:this->showallPersons(); //显示通讯录break;case 3:this->deletePerson(); //删除联系人break;case 4:this->findPerson(); //查找联系人break;case 5:this->modifyPerson(); //修改联系人break;case 6:this->cleanPeron(); //清空通讯录break;case 7:this->showsize(); //显示通讯录的总人数break;case 0:cout << "“你已退出通讯录,欢迎下次使用”" << endl;return;default:cout << "无此类选项,请重新输入选项!" << endl;break;}}}
};int main() {Addressbooks mybook;mybook.start();system("pause");return 0;
}
2.多文件代码实现>>>
分文件编写,使用VS 2022
"Addressbooks.h"接口实现
#pragma once
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct Person {//联系人结构体string m_name; //姓名string m_sex; //性别int m_age; //年龄string m_qq; //QQ号string m_addr; //地址
};
class Findper {private:string name;
public:Findper(const string& name) {this->name = name;}bool operator()(vector<Person>::value_type& p) {return this->name == p.m_name;}
};
class Addressbooks {private:vector<Person>personArr;
public:void showmenu() {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;cout << " ****** 0.退出通讯录 *******" << endl;cout << " ****************************" << endl;}//----------------------------------------------void addPerson() {//添加具体联系人Person p;cout << "请输入联系人姓名:" << endl;cin >> p.m_name;cout << "请输入联系人性别:" << endl;cin >> p.m_sex;cout << "请输入联系人年龄:" << endl;cin >> p.m_age;cout << "请输入联系人QQ号:" << endl;cin >> p.m_qq;cout << "请输入联系人地址:" << endl;cin >> p.m_addr;while (true) {vector<Person>::iterator it = find_if(this->personArr.begin(), this->personArr.end(), Findper(p.m_name));if (it == this->personArr.end())break;else {cout << "通讯录中已有该联系人!可在其名字后面添加数字,保证通讯录姓名唯一!" << endl;cin >> p.m_name;}}this->personArr.push_back(p);cout << "添加成功" << endl;cout << endl;system("pause");system("cls");return;}//-------------------------------------------------void showallPersons() { //显示所有联系人if (this->personArr.empty())cout << "该通讯录中暂时没有联系人,等待添加" << endl;else {for (int i = 0; i < this->personArr.size(); i++) {cout << "姓名:" << this->personArr[i].m_name << " ";cout << "性别:" << this->personArr[i].m_sex << " ";cout << "年龄:" << this->personArr[i].m_age << " ";cout << "QQ:" << this->personArr[i].m_qq << " ";cout << "地址:" << this->personArr[i].m_addr << endl;}}cout << endl;system("pause");system("cls");return;}//--------------------------------------------------------void deletePerson() {cout << "请输入要删除联系人的姓名:" << endl;string name;cin >> name;vector<Person>::iterator find_res = find_if(this->personArr.begin(), this->personArr.end(), Findper(name));if (find_res == this->personArr.end())cout << "查无此人!!!" << endl;else {this->personArr.erase(find_res);cout << "—删除成功!—" << endl;}cout << endl;system("pause");system("cls");return;}//-------------------------------------------------------------void findPerson() {cout << "请输入您要查找的联系人的名字:" << endl;string name;cin >> name;vector<Person>::iterator it = find_if(this->personArr.begin(), this->personArr.end(), Findper(name));if (it == this->personArr.end())cout << "查无此人!!!" << endl;else {cout << "姓名:" << it->m_name << "\t";cout << "性别:" << it->m_sex << "\t";cout << "年龄:" << it->m_age << "\t";cout << "QQ:" << it->m_qq << "\t";cout << "地址:" << it->m_addr << endl;}cout << endl;system("pause");system("cls");return;}//-------------------------------------------------------------------------void modifyPerson() {cout << "请输入您要修改的联系人的名字:" << endl;string name;cin >> name;vector<Person>::iterator it = find_if(this->personArr.begin(), this->personArr.end(), Findper(name));if (it == this->personArr.end())cout << "查无此人!!!" << endl;else {cout << "重新输入联系人的除姓名外的所有信息!" << endl;cout << "姓别:" << endl;cin >> it->m_sex;cout << "年龄:" << endl;cin >> it->m_qq;cout << "地址:" << endl;cin >> it->m_addr;cout << "修改成功!!!" << endl;}cout << endl;system("pause");system("cls");return;}//-----------------------------------------------------------------------void cleanPeron() {cout << "确定清空吗?" << endl;bool jd;cout << "1----------确定||||||||||0--------退出" << endl;cin >> jd;if (jd) {this->personArr.clear();cout << "^_^删除成功!" << endl;}cout << endl;system("pause");system("cls");return;}//-----------------------------------------------------------------------void showsize() {cout << "通讯录现有的人数为:" << this->personArr.size() << endl;cout << endl;system("pause");system("cls");return;}//--------------------------------------------------------------------------void start() {while (true) {this->showmenu();int select = -1;cout << endl;cout << "请输入操作选项:" << endl;cout << endl;cin >> select;cout << endl;cout << "OK执行—>" << endl;switch (select) {case 1:this->addPerson(); //添加联系人break;case 2:this->showallPersons(); //显示通讯录break;case 3:this->deletePerson(); //删除联系人break;case 4:this->findPerson(); //查找联系人break;case 5:this->modifyPerson(); //修改联系人break;case 6:this->cleanPeron(); //清空通讯录break;case 7:this->showsize(); //显示通讯录的总人数break;case 0:cout << "“你已退出通讯录,欢迎下次使用”" << endl;return;default:cout << "无此类选项,请重新输入选项!" << endl;break;}}}
};
代码如单文件所写
( ̄︶ ̄)↗
源cpp文件:
#include"Addressbook.h"//直接调用写好的接口
using namespace std;
int main() {Addressbooks mybook;mybook.start();system("pause");return 0;
}
3.实现效果
【1】:开始界面
【2】:添加联系人
输入小黑、小明——
【3】:显示所有联系人
【4】:修改联系人的信息
【5】:删除联系人
【6】:清空通讯录
【7】:退出通讯录
4.后记
这个通讯录是我为应对
学校大作业:
《图书馆管理系统》的练手项目ψ(`∇´)ψ
对于这个专栏,可能不会太涉及算法,但会搞一些有意思的项目之类的
计划中的有《坦克大战》《飞机大战》《班级学生学习管理系统》之类。
一定会比较实用或者比较好玩**( •̀ ω •́ )✧** 点击下载https://pan.baidu.com/s/1dGpAxc1 关注微信公众平台 IM社区 或扫描下二维码 回复 :东京食种 即可获取 更多精彩 查看全文 http://www.taodud ... 这是一个模拟通讯录系统,写的不到位的地方希望各位多多指点 通讯录2.0版本 1.Person类 2.Contacts类(通讯录) 3.代码实现效果 查看所有联系人 根据id查询联系人 根据id修改联系 ... 湖南工业大学教务系统爬虫(模拟登陆篇) 之前写了一个教务系统的爬虫程序,可以根据用户要求爬取任何一部分的数据,也可以模拟提交数据,可能这也是部分工大计算机学生比较感兴趣的,所以今天就在这分享一下整个的 ... Java~通讯录欢迎各位 1.需求分析 2.概要设计 2.1功能模块结构图 2.2业务流程图 3 运行环境 4 开发工具和编程语言 5 详细设计 5.1 数据库设计 5.2 类的设计 5.3登录 5. ... 课 程 设 计 课 程数据库原理及应用课程设计 题 目个人通讯录系统 学 院 信息工程学院 专 业 计算机科学 ... ios开发基础之通讯录系统实战 基础知识 OC 基础 segue 的使用.delegate 代理的使用 自定义代理.面向对象思想 沙盒容器的数据持久化方案, controller 之间的跳转 ,登录方 ... MFC 最详细入门教程 [MFC常用函数总结](https://www.cnblogs.com/jiu0821/p/4606639.html) [C++ & MFC]https://www.c ... 文章目录 1.前言 2.设计步骤 前言 利用链表增.删.改.查功能以及文件来完成通讯录系统.通讯录中包含联系人的基本信息:姓名.联系电话.家庭住址以及电子邮件. 以下是设计该系统的步骤: 1.导出通讯 ... 微信电话本可谓是QQ通讯录的全新升级产品,重新整合进微信团队后,不仅仅UI界面更加类似微信,且功能上可将联系人对应的微信头像导入通讯录中,还可以识别陌生号码,支持来电号码归属地显示等等.对很多从QQ通 ...
O(∩_∩)O
由于每次启动程序,我们的数据是临时地储存在栈区,所以要保证通讯录一直开着才能储存信息,并不能达到[真正的实用]
QQ通讯录系统——用C++模拟实现,学C++必玩项目】相关推荐
最新文章
热门文章