IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 通讯录管理系统 -> 正文阅读

[C++知识库]C++ 通讯录管理系统

用VS2019所写,个人学习C++的第一个小项目,注释多,简单易懂,供大家参考。

可实现的功能有:

1、添加联系人

2、显示联系人

3、删除联系人

4、查找联系人

5、修改联系人

6、清空联系人

代码如下:

#include<iostream>
using namespace std;
#define MAX 100//通讯录最大人数


//联系人结构体
struct Preson
{
?? ?string m_Name;//姓名
?? ??
?? ?int m_Sex;//性别 1男 ?2女
?? ?
?? ?int m_Age;//年龄
?? ?
?? ?string m_Phone;//电话
?? ?
?? ?string m_Addr;//住址
};

//通讯录结构体
struct Addressbooks
{
?? ?struct Preson presonArray[MAX];
?? ?int m_max;//通讯录中的人数
};

//菜单界面
void ShowMenu()
{
?? ?cout << "-----1、添加联系人-----" << endl;
?? ?cout << "-----2、显示联系人-----" << endl;
?? ?cout << "-----3、删除联系人-----" << endl;
?? ?cout << "-----4、查找联系人-----" << endl;
?? ?cout << "-----5、修改联系人-----" << endl;
?? ?cout << "-----6、清空联系人-----" << endl;
?? ?cout << "-----0、退出通讯录-----" << endl;

}

//1、添加通讯录联系人函数
void addpreson(Addressbooks* abs)
{
?? ?//判断通讯录是否已经满人
?? ?if (abs->m_max == 1000)
?? ?{
?? ??? ?cout << "您的通信录人数已满" << endl;
?? ??? ?return;
?? ?}
?? ?else
?? ?{?? ??? ?
?? ??? ?//添加联系人
?? ??? ?//姓名
?? ??? ?string name;
?? ??? ?cout << "请输入您要添加联系人的姓名为:" << endl;
?? ??? ?cin >> name;
?? ??? ?abs->presonArray[abs->m_max].m_Name = name;
?? ??? ?
?? ??? ?//性别
?? ??? ?cout << "请输入您要添加联系人的性别为:"<<"1、男"<<"2、女"
?? ??? ??? ?<< endl;
?? ??? ?int sex;
?? ??? ?while (true)
?? ??? ?{
?? ??? ??? ?cin >> sex;
?? ??? ??? ?if (sex == 1 || sex == 2)
?? ??? ??? ?{
?? ??? ??? ??? ?abs->presonArray[abs->m_max].m_Sex = sex;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?cout << "输入有误请重新再输!" << endl;
?? ??? ?}
?? ??? ?//年龄
?? ??? ?int age;
?? ??? ?cout << "请输入您要添加联系人的年龄为:" << endl;
?? ??? ?cin >> age;
?? ??? ?abs->presonArray[abs->m_max].m_Age = age;
?? ??? ?//电话
?? ??? ?string phone;
?? ??? ?cout << "请输入您要添加联系人的电话号码为:" << endl;
?? ??? ?cin >> phone;
?? ??? ?abs->presonArray[abs->m_max].m_Phone = phone;
?? ??? ?//地址
?? ??? ?string addr;
?? ??? ?cout << "请输入您要添加联系人的地址为:" << endl;
?? ??? ?cin >> addr;
?? ??? ?abs->presonArray[abs->m_max].m_Addr = addr;
?? ??? ?//更新通信录人数
?? ??? ?abs->m_max++;
?? ??? ?cout << "恭喜添加成功!" << endl;
?? ??? ?system("pause");//请按任意键继续
?? ??? ?system("cls");//清屏操作
?? ?}
}

//2、显示函数
void showpreson(Addressbooks* abs)
{
?? ?//判断通信录人数是否为0,若是显示为空
?? ?//如果不为零显示通信录联系人的信息
?? ?
?? ??? ?if (abs->m_max == 0)
?? ??? ?{
?? ??? ??? ?cout << "您的通信录为空" << endl;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?for (int i = 0; i < abs->m_max;i++)
?? ??? ??? ?{
?? ??? ??? ??? ?cout << "您的第" << i+1 << "个联系人姓名为:" << abs->presonArray[i].m_Name << "\t";
?? ??? ??? ??? ?cout << "性别:" << (abs->presonArray[i].m_Sex == 1 ? "男" : "女") << "\t";
?? ??? ??? ??? ?cout << "年龄:" << abs->presonArray[i].m_Age << "\t";
?? ??? ??? ??? ?cout << "电话号码:" << abs->presonArray[i].m_Phone << "\t";
?? ??? ??? ??? ?cout << "地址:" << abs->presonArray[i].m_Addr << endl;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?system("pause");//按任意键继续
?? ??? ?system("cls");//清屏
}


//检测函数
//检测联系人是否存在,如果存在,返回联系人在数组中的具体位置,不存在返回-1
//参数一 通信录 参数二 对比姓名
int isExist(Addressbooks* abs, string name)
{
?? ?for (int i = 0;i < abs->m_max;i++)
?? ?{
?? ??? ?//找到用户输入的姓名
?? ??? ?if (abs->presonArray[i].m_Name == name)
?? ??? ?{
?? ??? ??? ?return i;
?? ??? ?}?? ?
?? ?}
?? ?//没找到返回-1
?? ?return -1;
}

//3、删除函数
void deletePerson(Addressbooks* abs)
{
?? ?cout << "请输入您要输入的联系人" << endl;
?? ?
?? ?string name;
?? ?cin >> name;

?? ?//ret来接收返回值
?? ?int ret = isExist(abs, name);
?? ?if (ret != -1)
?? ?{
?? ??? ?for (int i = ret;i < abs->m_max;i++)
?? ??? ?{
?? ??? ??? ?//数据前移
?? ??? ??? ?abs->presonArray[i] = abs->presonArray[i + 1];
?? ??? ?}
?? ??? ?abs->m_max--;//更新通信录中联系人数
?? ??? ?cout << "恭喜删除成功!" << endl;
?? ?}
?? ?else
?? ?{
?? ??? ?cout << "对不起查无此人!" << endl;
?? ?}
?? ?system("pause");
?? ?system("cls");
}

//4、查找指定的联系人信息
void findPreson(Addressbooks* abs)
{
?? ?cout << "请输入您要查找联系人的姓名:" << endl;
?? ?string name;
?? ?cin >> name;

?? ?int ret = isExist(abs, name);//调用查找函数,查找是否有所要查找的联系人
?? ?if (ret != -1)//若所要查找的联系人存在
?? ?{
?? ??? ?cout << "您的第" << ret + 1 << "个联系人姓名为:" << abs->presonArray[ret].m_Name << "\t";
?? ??? ?cout << "性别:" << (abs->presonArray[ret].m_Sex == 1 ? "男" : "女") << "\t";
?? ??? ?cout << "年龄:" << abs->presonArray[ret].m_Age << "\t";
?? ??? ?cout << "电话号码:" << abs->presonArray[ret].m_Phone << "\t";
?? ??? ?cout << "地址:" << abs->presonArray[ret].m_Addr << endl;

?? ?}
?? ?else//若没有所要查找的人
?? ?{
?? ??? ?cout << "对不起查无此人!" << endl;
?? ?}
?? ?system("pause");//按任意键继续
?? ?system("cls");//清屏
}

//5、修改联系人
void modifyPreson(Addressbooks* abs)
{
?? ?cout << "请输入您要修改联系人的姓名" << endl;
?? ?string name;
?? ?cin >> name;

?? ?int ret = isExist(abs, name);//调用查找函数,查找联系人是否存在
?? ?
?? ?if (ret != -1)//找到指定联系人
?? ?{
?? ??? ?//先显示一下联系人当前的信息
?? ??? ?cout << "您的第" << ret + 1 << "个联系人姓名为:" << abs->presonArray[ret].m_Name << "\t";
?? ??? ?cout << "性别:" << (abs->presonArray[ret].m_Sex == 1 ? "男" : "女") << "\t";
?? ??? ?cout << "年龄:" << abs->presonArray[ret].m_Age << "\t";
?? ??? ?cout << "电话号码:" << abs->presonArray[ret].m_Phone << "\t";
?? ??? ?cout << "地址:" << abs->presonArray[ret].m_Addr << endl;
?? ??? ?
?? ??? ?//姓名
?? ??? ?cout << "姓名是否要修改?" <<"1、修改 ?2、不修改" << endl;
?? ??? ?int a = 0;
?? ??? ?cin >> a;
?? ??? ?if (a == 1)//若要修改
?? ??? ?{
?? ??? ??? ?cout << "请输入修改后的姓名:" << endl;
?? ??? ??? ?string name;
?? ??? ??? ?cin >> name;
?? ??? ??? ?abs->presonArray[ret].m_Name = name;
?? ??? ?}
?? ??? ?//性别
?? ??? ?cout << "性别是否要修改?" << "1、修改 ?2、不修改" << endl;
?? ??? ?int b = 0;
?? ??? ?cin >> b;
?? ??? ?if (b == 1)//若要修改
?? ??? ?{
?? ??? ??? ?cout << "请输入修改后的性别:" <<"1: 男 ?2:女" << endl;
?? ??? ??? ?int sex;
?? ??? ??? ?cin >> sex;
?? ??? ??? ?abs->presonArray[ret].m_Sex = sex;
?? ??? ?}
?? ??? ?//年龄
?? ??? ?cout << "年龄是否要修改?" << "1、修改 ?2、不修改" << endl;
?? ??? ?int c = 0;
?? ??? ?cin >> c;
?? ??? ?if (c == 1)//若要修改
?? ??? ?{
?? ??? ??? ?cout << "请输入修改后的年龄:" << endl;
?? ??? ??? ?int age;
?? ??? ??? ?cin >> age;
?? ??? ??? ?abs->presonArray[ret].m_Age = age;
?? ??? ?}
?? ??? ?//电话
?? ??? ?cout << "电话是否要修改?" << "1、修改 ?2、不修改" << endl;
?? ??? ?int d = 0;
?? ??? ?cin >> d;
?? ??? ?if (d == 1)//若要修改
?? ??? ?{
?? ??? ??? ?cout << "请输入修改后的电话:" << endl;
?? ??? ??? ?string phone;
?? ??? ??? ?cin >> phone;
?? ??? ??? ?abs->presonArray[ret].m_Phone = phone;
?? ??? ?}
?? ??? ?//住址
?? ??? ?cout << "住址是否要修改?" << "1、修改 ?2、不修改" << endl;
?? ??? ?int e = 0;
?? ??? ?cin >> e;
?? ??? ?if (e == 1)//若要修改
?? ??? ?{
?? ??? ??? ?cout << "请输入修改后的住址:" << endl;
?? ??? ??? ?string addr;
?? ??? ??? ?cin >> addr;
?? ??? ??? ?abs->presonArray[ret].m_Addr = addr;
?? ??? ?}
?? ??? ?cout << "恭喜修改成功!" << endl;
?? ?}
?? ?else//未找到指定联系人
?? ?{
?? ??? ?cout << "对不起查无此人!" << endl;
?? ?}
?? ?
?? ?system("pause");//按任意键继续
?? ?system("cls");//清屏
}

//6、清空所有联系人
void cleanPreson(Addressbooks* abs)
{
?? ?abs->m_max = 0;//将当前记录的联系人数置0,做逻辑清空操作
?? ?cout << "通讯录已清空!" << endl;
?? ?system("pause");//按任意键继续
?? ?system("cls");//清屏操作
}
int main()
{
?? ?Addressbooks abs;//创建通信录
?? ?abs.m_max = 0;//初始化通信录


?? ?//用户选择输入
?? ?int select = 0;
?? ?while (1)
?? ?{
?? ??? ?ShowMenu();
?? ??? ?cin >> select;
?? ??? ?switch (select)
?? ??? ?{
?? ??? ?case 1://1、添加联系人
?? ??? ??? ?addpreson(&abs);
?? ??? ??? ?break;
?? ??? ?case 2://2、显示联系人
?? ??? ??? ?showpreson(&abs);
?? ??? ??? ?break;
?? ??? ?case 3://3、删除联系人
?? ??? ??? ?deletePerson(&abs);
?? ??? ??? ?break;
?? ??? ?case 4://4、查找联系人
?? ??? ??? ?findPreson(&abs);
?? ??? ??? ?break;
?? ??? ?case 5://5、修改联系人
?? ??? ??? ?modifyPreson(&abs);
?? ??? ??? ?break;
?? ??? ?case 6://6、清空联系人
?? ??? ??? ?cleanPreson(&abs);
?? ??? ??? ?break;
?? ??? ?case 0://0、退出通讯录
?? ??? ??? ?cout << "欢迎下次使用" << endl;
?? ??? ??? ?system("pause");
?? ??? ??? ?return 0;
?? ??? ?break;
?? ??? ?}
?? ?}
?? ?system("pause");
?? ?return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:28:07  更:2021-10-16 19:28:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:08:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码