#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
// 菜单界面
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 Person
{
string m_Name; // 联系人姓名
int m_Sex; // 联系人性别; 1-男 2-女
int m_Age; // 联系人年龄
string m_Tele; // 联系人电话
string m_Address; // 联系人地址
};
// 通讯录结构体
struct Addressbooks
{
// 通讯录中保存的联系人数组
Person person[MAX];
// 通讯录中当前记录联系人的个数
int m_Size;
};
// 更新联系人信息
void updatePersonInfo(Addressbooks* abs, int index) {
cout << "姓名:";
cin >> abs->person[index].m_Name;
cout << "性别(1-男 2-女):";
int sex = 0;
while (true)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->person[index].m_Sex = sex;
break;
}
else
{
cout << "输入不符合规定,请重新输入:";
}
}
cout << "年龄:";
cin >> abs->person[index].m_Age;
cout << "电话:";
cin >> abs->person[index].m_Tele;
cout << "地址:";
cin >> abs->person[index].m_Address;
}
// 添加联系人
void addPerson(Addressbooks* abs) {
if (abs->m_Size < MAX)
{
updatePersonInfo(abs, abs->m_Size);
cout << "添加成功!" << endl;
// 更新通讯录中的联系人个数
abs->m_Size++;
system("pause");
system("cls");
}
else
{
cout << "通讯录已满,不能再添加!" << endl;
}
}
// 显示单个联系人信息
void printPerson(Addressbooks* abs, int index) {
cout << "姓名:" << abs->person[index].m_Name << "\t";
cout << "性别:" << ((abs->person[index].m_Sex == 1) ? "男" : "女") << "\t";
cout << "年龄:" << abs->person[index].m_Age << "\t";
cout << "电话:" << abs->person[index].m_Tele << "\t";
cout << "地址:" << abs->person[index].m_Address << endl;
}
// 显示所有联系人信息
void printAllPerson(Addressbooks* abs) {
if (abs->m_Size > 0)
{
for (int i = 0; i < abs->m_Size; i++)
{
cout << "No." << i + 1 << "\t";
printPerson(abs, i);
}
}
else
{
cout << "当前通讯录为空!" << endl;
}
system("pause");
system("cls");
}
// 按照姓名来查找联系人是否存在
int isExitByName(Addressbooks* abs, string name) {
for (int i = 0; i < abs->m_Size; i++)
{
if (abs->person[i].m_Name == name)
{
// 遍历到查找的联系人后,返回对应的下标
return i;
}
}
// 遍历结束没有找到查找的人返回 -1
return -1;
}
// 删除指定联系人信息
void delectPerson(Addressbooks* abs) {
string search_Name;
cout << "请输入想要删除的人的姓名:";
cin >> search_Name;
// 想要查找的人是否存在
int search_Result = isExitByName(abs, search_Name);
if (search_Result != -1) {
for (int i = search_Result; i < abs->m_Size; i++)
{
// 数据前移
abs->person[i] = abs->person[i+1];
}
// 更新通讯录中的人数
abs->m_Size--;
cout << "删除成功!" << endl;
}
else
{
cout << "你想要删除的联系人不存在!" << endl;
}
system("pause");
system("cls");
}
// 根据姓名查找指定的联系人信息
void findPersonByName(Addressbooks* abs) {
string search_Name;
cout << "请输入想要查找的人的姓名:";
cin >> search_Name;
// 想要查找的人是否存在
int search_Result = isExitByName(abs, search_Name);
if (search_Result != -1) {
printPerson(abs, search_Result);
}
else
{
cout << "你想要查找的联系人不存在!" << endl;
}
system("pause");
system("cls");
}
// 根据姓名查找指定联系人并修改信息
void modifyPersonByName(Addressbooks* abs) {
string search_Name;
cout << "请输入想要修改的人的姓名:";
cin >> search_Name;
// 想要查找的人是否存在
int search_Result = isExitByName(abs, search_Name);
if (search_Result != -1) {
// 显示修改前的联系人信息
printPerson(abs, search_Result);
// 修改联系人信息
updatePersonInfo(abs, search_Result);
cout << "联系人信息修改成功" << endl;
}
else
{
cout << "你想要修改的联系人不存在!" << endl;
}
system("pause");
system("cls");
}
// 清空联系人信息
void clearPersonInfo(Addressbooks* abs) {
abs->m_Size = 0;
cout << "联系人已清空!" << endl;
// cout << abs->person->m_Address; // 可以通过这条语句继续访问存放的联系人数据,但程序端不能再获取该信息
system("pause");
system("cls");
}
int main() {
// 在 main 中初始化一个通讯录
Addressbooks abs;
abs.m_Size = 0;
int select = 0;
while (true)
{
// 菜单展示
showMenu();
cout << "请选择你想使用功能:";
cin >> select;
switch (select)
{
case 1: // 1. 添加联系人
addPerson(&abs); // 利用地址传值可以修改实参的数据
break;
case 2: // 2. 显示联系人
printAllPerson(&abs);
break;
case 3: // 3. 删除联系人
delectPerson(&abs);
break;
case 4: // 4. 查找联系人
findPersonByName(&abs);
break;
case 5: // 5. 修改联系人
modifyPersonByName(&abs);
break;
case 6: // 6. 清空联系人
clearPersonInfo(&abs);
break;
case 0: // 0. 退出通讯录
cout << "欢迎下次使用!" << endl;
system("pause");
return 0;
break;
default:
system("cls");
cout << "## 没有 " << select << " 这个选项,请重新选择。"<<endl;
break;
}
}
system("pause");
return 0;
}
通讯录管理系统(C++) 源代码
5星 · 超过95%的资源 需积分: 5 122 浏览量
2023-02-24
23:39:06
上传
评论 1
收藏 13.04MB ZIP 举报
Curiosity_HHJ
- 粉丝: 6
- 资源: 10
最新资源
- 5.23-Java概述,JDK安装及注释、关键字、标识符、数据类型、变量、常量的介绍
- 《Python基础》实验三指导书(1).doc
- TensorFlow 深度学习、机器学习-任何能够用计算流图形来表达的计算,都可以使用TensorFlow
- 一个基于springboot+sureness的面向REST API资源无状态认证权限管理系统
- 王博外文文献.pdf
- python毕业设计基于社区检测的多任务聚类联邦学习项目源码+使用说明(高分项目).zip
- Javaweb项目源码-编程爱好者博客地带.zip
- java各个技术栈相关知识点
- PYthon代码 pdf合并
- 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、 Redis
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页