C++通讯录管理系统简易系统

编程入门 行业动态 更新时间:2024-10-11 11:17:32

C++通讯录<a href=https://www.elefans.com/category/jswz/34/1769858.html style=管理系统简易系统"/>

C++通讯录管理系统简易系统

C++联系人通讯管理系统的实现

*@感谢某站众多程序教程的技术教学和经验分享*

在学习过程中,各知识点都是比较了解和清楚的,但是在实际项目中的应用却没有什么头绪,可能是缺少更多的学习研究和实战训练!需要更多方法思路和典型案例搜索才得以完成!学习之路任重而道远,加油!

简洁介绍通讯管理系统

  • C++联系人通讯管理系统的实现
  • 一、基本功能的实现
  • 二、管理系统设计图
  • 三、各项功能实现
    • 显示功能
    • 添加功能
    • 删除功能
    • 查找功能
    • 修改功能
    • 清空功能
    • 排序功能
    • 其他代码(判断联系人是否存在功能)
  • 四、项目代码
  • 总结

一、基本功能的实现

基本的增删改查含排序

二、管理系统设计图

三、各项功能实现

显示功能

void showPerson(AderssBooks*abs)	//1.显示联系人
{if (abs->m_Size == 0) { cout << "通讯录暂无联系人!" << endl; }//判断通讯录中人数是否为0else {	for (int i = 0; i < abs->m_Size; i++){cout << "姓名: " << abs->personArray[i].m_Name << "\t";cout << "性别: " << (abs->personArray[i].m_Sex == 1 ? "男": "女") << "\t";cout << "年龄: " << abs->personArray[i].m_Age << "\t";cout << "电话: " << abs->personArray[i].m_Phone << "\t";cout << "地址: " << abs->personArray[i].m_Adress << "\t";cout << endl;}}system("pause");	//按任意键继续system("cls");	//清屏
}

添加功能

void addPerson(AderssBooks*abs) //2.添加联系人
{//首先判断是否满人,是则不再添加	if (abs->m_Size==MAX) {cout << "通讯录已满!不可再继续添加!"<<endl;return;}else {//添加具体的联系人信息string name;cout << "输你的名字: " << endl;cin >> name;abs->personArray[abs->m_Size].m_Name = name; //利用当前的人员个数往数组添加即可,添加的是名字int sex = 0;cout << "输你的性别(1男/2女): " << endl;cout << "1---男" << endl;cout << "2---女" << endl;while (true){//输入 1 或 2   可以通过if的break退出while循环//如果输入有误,则进入while循环的elsecin >> sex;if (sex == 1||sex == 2){if(sex==1)abs->personArray[abs->m_Size].m_Sex = sex;break; //退出循环}cout << "搞错了!请重新输入!" << endl;}	int age;cout << "输你的年龄: " << endl;cin >> age;abs->personArray[abs->m_Size].m_Age = age;int phone;cout << "输你的号码: " << endl;cin >> phone;abs->personArray[abs->m_Size].m_Phone = phone;string adress;cout << "输你的地址: " << endl;cin >> adress;abs->personArray[abs->m_Size].m_Adress = adress;	abs->m_Size++;cout << "添加成功!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}
}

删除功能

void delPerson(AderssBooks*abs)	//3.删除指定联系人
{cout << "请输入要删除的联系人: ";string name;cin >> name;int ret = isExist(abs, name); //接收查询的信息//ret == -1 ,未查询到;  ret != -1查询到联系人if (ret != -1){//查询到联系人for (int i = ret; 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 findPeson(AderssBooks*abs)	//4.查找联系人
{cout << "请输入要查找的联系人姓名: " << endl;string name;cin >> name;int ret = isExist(abs, name);		//判断人是否存在if (ret != -1)	//查找到联系人{cout << "姓名: " << abs->personArray->m_Name<< "\t";cout << "性别: " << (abs->personArray->m_Sex == 1 ? "男" : "女") << "\t";cout << "年龄: " << abs->personArray->m_Age << "\t";cout << "电话: " << abs->personArray->m_Phone << "\t";cout << "地址: " << abs->personArray->m_Adress << "\t";}else{cout << "无法找到联系人!" << endl;}system("pause");	//按任意键继续system("cls");	//清屏
}

修改功能

void modifyPerson(AderssBooks*abs)  //5.修改联系人
{cout << "请输入要修改的联系人姓名: " << endl;string name;cin >> name;int ret = isExist(abs, name);		//判断人是否存在if (ret != -1)	//查找到联系人{cout << "查到的联系人为以下---> " << endl;cout << "姓名: " << abs->personArray->m_Name << "\t";cout << "性别: " << (abs->personArray->m_Sex == 1 ? "男" : "女") << "\t";cout << "年龄: " << abs->personArray->m_Age << "\t";cout << "电话: " << abs->personArray->m_Phone << "\t";cout << "地址: " << abs->personArray->m_Adress << "\t";	cout << "\n" << endl;cout << "是否进行修改?  (Y or N) " << endl;string x = "Y";cin >> x;if (x == "Y"){//此函数是 abs->personArray[ret].m_Name = name;  //利用已经接受的ret, 赋新值改变覆盖他cout << "输你的名字: " << endl;cin >> name;abs->personArray[ret].m_Name = name; //利用当前的人员个数往数组添加即可,添加的是名字int sex = 0;cout << "输你的性别(1男/2女): " << endl;cout << "1---男" << endl;cout << "2---女" << endl;while (true){//输入 1 或 2   可以通过if的break退出while循环//如果输入有误,则进入while循环的elsecin >> sex;if (sex == 1 || sex == 2){if (sex == 1)abs->personArray[ret].m_Sex = sex;break; //退出循环}cout << "搞错了!请重新输入!" << endl;}int age;cout << "输你的年龄: " << endl;cin >> age;abs->personArray[ret].m_Age = age;int phone;cout << "输你的号码: " << endl;cin >> phone;abs->personArray[ret].m_Phone = phone;string adress;cout << "输你的地址: " << endl;cin >> adress;abs->personArray[ret].m_Adress = adress;cout << "修改完毕!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}else{cout << "成功取消修改! " << endl;system("pause");	//按任意键继续system("cls");	//清屏}}else{cout << "无法找到联系人!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}}

清空功能

void cleanPerson(AderssBooks* abs)  //6.清空通讯录
{abs->m_Size = 0;cout << "通讯录已经完成清空!" << endl;system("pause");	//按任意键继续system("cls");	//清屏
}

排序功能

void findInNum(AderssBooks*abs)	//按年龄排序
{cout << "已有联系人列表如下: " << endl;showpPerson(abs);cout << "是否根据年龄将其排序?(Y or N)" << endl;string x = "Y";cin >> x;if (x == "Y") {for (int i = 0; i < abs->m_Size - 1; i++){for (int j = 0; j < abs->m_Size - i - 1; j++) {if (abs->personArray[i].m_Age > abs->personArray[i + 1].m_Age){int temp = abs->personArray[j].m_Age;abs->personArray[j].m_Age = abs->personArray[j + 1].m_Age;abs->personArray[j + 1].m_Age = temp;abs->m_Size++;showPerson(abs);cout << "已经成功完成排序!" << endl;break;system("pause");	//按任意键继续system("cls");	//清屏}}}}else {cout << "已成功取消按年龄排序!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}
}

其他代码(判断联系人是否存在功能)

int isExist(AderssBooks*abs,string name)  //检测即为遍历查找
{for (int i = 0; i < abs->m_Size; i++){if (abs->personArray->m_Name == name) {return i;	//找到后返回原来的下标编号}}return -1;	//遍历后查找不到,返回-1
}

四、项目代码

#include<iostream>
#include<string>
using namespace std;
#define MAX 1000	//方便后期维护,可以改为2K	;//设计联系人结构体(添加)
//设计通讯录结构体(添加)
//在main函数内创建通讯录(添加)
//封装联系人函数//
//struct Person //设计联系人结构体(添加)
{string m_Name {};int m_Sex{}; //输入 1.男 /2.女int m_Age {};int m_Phone{};string m_Adress {};
};
struct AderssBooks	//设计通讯录结构体(添加)
{struct Person personArray[MAX];	//通讯录保存的联系人数组 int m_Size{}; //通讯录当前记录人数
};void showMenu() 
{cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;cout << "^^please Enter your choice!^^" << endl;cout << "^^^^ 1.显示通讯系统联系人^^^^" << endl;cout << "^^^^ 2.添加通讯系统联系人^^^^" << endl;cout << "^^^^ 3.删除通讯系统联系人^^^^" << endl;cout << "^^^^ 4.查找通讯系统联系人^^^^" << endl;cout << "^^^^ 5.修改通讯系统联系人^^^^" << endl;cout << "^^^^ 6.清空通讯系统联系人^^^^" << endl;cout << "^^^^ 7.退出通讯系统(按0退出)^" << endl;cout << "^^^^ 8.按年龄排序联系人^^^^^^" << endl;cout << "^^^^ 9.******************^^^^" << endl;
}void showPerson(AderssBooks*abs)	//1.显示联系人{if (abs->m_Size == 0) { cout << "通讯录暂无联系人!" << endl; }//判断通讯录中人数是否为0else {	for (int i = 0; i < abs->m_Size; i++){cout << "姓名: " << abs->personArray[i].m_Name << "\t";cout << "性别: " << (abs->personArray[i].m_Sex == 1 ? "男": "女") << "\t";cout << "年龄: " << abs->personArray[i].m_Age << "\t";cout << "电话: " << abs->personArray[i].m_Phone << "\t";cout << "地址: " << abs->personArray[i].m_Adress << "\t";cout << endl;}}system("pause");	//按任意键继续system("cls");	//清屏}void addPerson(AderssBooks*abs) //2.添加联系人
{//首先判断是否满人,是则不再添加	if (abs->m_Size==MAX) {cout << "通讯录已满!不可再继续添加!"<<endl;return;}else {//添加具体的联系人信息string name;cout << "输你的名字: " << endl;cin >> name;abs->personArray[abs->m_Size].m_Name = name; //利用当前的人员个数往数组添加即可,添加的是名字int sex = 0;cout << "输你的性别(1男/2女): " << endl;cout << "1---男" << endl;cout << "2---女" << endl;while (true){//输入 1 或 2   可以通过if的break退出while循环//如果输入有误,则进入while循环的elsecin >> sex;if (sex == 1||sex == 2){if(sex==1)abs->personArray[abs->m_Size].m_Sex = sex;break; //退出循环}cout << "搞错了!请重新输入!" << endl;}	int age;cout << "输你的年龄: " << endl;cin >> age;abs->personArray[abs->m_Size].m_Age = age;int phone;cout << "输你的号码: " << endl;cin >> phone;abs->personArray[abs->m_Size].m_Phone = phone;string adress;cout << "输你的地址: " << endl;cin >> adress;abs->personArray[abs->m_Size].m_Adress = adress;	abs->m_Size++;cout << "添加成功!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}
}//检测联系人是否存在,若存在则返回联系人在数组中的位置,否则返回-1 
//参数1 通讯录	参数2  对比姓名
int isExist(AderssBooks*abs,string name)  //检测即为遍历查找
{for (int i = 0; i < abs->m_Size; i++){if (abs->personArray->m_Name == name) {return i;	//找到后返回原来的下标编号}}return -1;	//遍历后查找不到,返回-1
}void delPerson(AderssBooks*abs)	//3.删除指定联系人
{cout << "请输入要删除的联系人: ";string name;cin >> name;int ret = isExist(abs, name); //接收查询的信息//ret == -1 ,未查询到;  ret != -1查询到联系人if (ret != -1){//查询到联系人for (int i = ret; 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 findPeson(AderssBooks*abs)	//4.查找联系人
{cout << "请输入要查找的联系人姓名: " << endl;string name;cin >> name;int ret = isExist(abs, name);		//判断人是否存在if (ret != -1)	//查找到联系人{cout << "姓名: " << abs->personArray->m_Name<< "\t";cout << "性别: " << (abs->personArray->m_Sex == 1 ? "男" : "女") << "\t";cout << "年龄: " << abs->personArray->m_Age << "\t";cout << "电话: " << abs->personArray->m_Phone << "\t";cout << "地址: " << abs->personArray->m_Adress << "\t";}else{cout << "无法找到联系人!" << endl;}system("pause");	//按任意键继续system("cls");	//清屏
}void modifyPerson(AderssBooks*abs)  //5.修改联系人
{cout << "请输入要修改的联系人姓名: " << endl;string name;cin >> name;int ret = isExist(abs, name);		//判断人是否存在if (ret != -1)	//查找到联系人{cout << "查到的联系人为以下---> " << endl;cout << "姓名: " << abs->personArray->m_Name << "\t";cout << "性别: " << (abs->personArray->m_Sex == 1 ? "男" : "女") << "\t";cout << "年龄: " << abs->personArray->m_Age << "\t";cout << "电话: " << abs->personArray->m_Phone << "\t";cout << "地址: " << abs->personArray->m_Adress << "\t";	cout << "\n" << endl;cout << "是否进行修改?  (Y or N) " << endl;string x = "Y";cin >> x;if (x == "Y"){//此函数是 abs->personArray[ret].m_Name = name;  //利用已经接受的ret, 赋新值改变覆盖他cout << "输你的名字: " << endl;cin >> name;abs->personArray[ret].m_Name = name; //利用当前的人员个数往数组添加即可,添加的是名字int sex = 0;cout << "输你的性别(1男/2女): " << endl;cout << "1---男" << endl;cout << "2---女" << endl;while (true){//输入 1 或 2   可以通过if的break退出while循环//如果输入有误,则进入while循环的elsecin >> sex;if (sex == 1 || sex == 2){if (sex == 1)abs->personArray[ret].m_Sex = sex;break; //退出循环}cout << "搞错了!请重新输入!" << endl;}int age;cout << "输你的年龄: " << endl;cin >> age;abs->personArray[ret].m_Age = age;int phone;cout << "输你的号码: " << endl;cin >> phone;abs->personArray[ret].m_Phone = phone;string adress;cout << "输你的地址: " << endl;cin >> adress;abs->personArray[ret].m_Adress = adress;cout << "修改完毕!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}else{cout << "成功取消修改! " << endl;system("pause");	//按任意键继续system("cls");	//清屏}}else{cout << "无法找到联系人!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}}void cleanPerson(AderssBooks* abs)  //6.清空通讯录{abs->m_Size = 0;cout << "通讯录已经完成清空!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}void showpPerson(AderssBooks* abs)	//复用显示联系人的代码
{if (abs->m_Size == 0) { cout << "通讯录暂无联系人!" << endl; }//判断通讯录中人数是否为0else{for (int i = 0; i < abs->m_Size; i++){cout << "姓名: " << abs->personArray[i].m_Name << "\t";cout << "性别: " << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";cout << "年龄: " << abs->personArray[i].m_Age << "\t";cout << "电话: " << abs->personArray[i].m_Phone << "\t";cout << "地址: " << abs->personArray[i].m_Adress << "\t";cout << endl;}}}void findInNum(AderssBooks*abs)	//按年龄排序
{cout << "已有联系人列表如下: " << endl;showpPerson(abs);cout << "是否根据年龄将其排序?(Y or N)" << endl;string x = "Y";cin >> x;if (x == "Y") {for (int i = 0; i < abs->m_Size - 1; i++){for (int j = 0; j < abs->m_Size - i - 1; j++) {if (abs->personArray[i].m_Age > abs->personArray[i + 1].m_Age){int temp = abs->personArray[j].m_Age;abs->personArray[j].m_Age = abs->personArray[j + 1].m_Age;abs->personArray[j + 1].m_Age = temp;abs->m_Size++;showPerson(abs);cout << "已经成功完成排序!" << endl;break;system("pause");	//按任意键继续system("cls");	//清屏}}}}else {cout << "已成功取消按年龄排序!" << endl;system("pause");	//按任意键继续system("cls");	//清屏}
}int main() 
{//创建通讯录结构体变量(添加)AderssBooks abs;//初始化通讯录当前人员个数abs.m_Size = 0;int select = 0;while (1)	//保证循环跳转入系统中,除非输入0或者7 {showMenu();	//实行地址传递,而非值传递,即可修改实参cin >> select;switch (select){case 1:	//显示showPerson(&abs);break;case 2:	//添加addPerson(&abs);break;case 3:	//删除{cout << "请输入需要删除的联系人姓名: " << endl;string name;cin >> name;if (isExist(&abs, name) == -1){cout << "无法查找到该姓名!" << endl;}else{cout << "已经查找完成!" << endl;}}delPerson(&abs);break;case 4:	//查找findPeson(&abs);break;	case 5:	//修改modifyPerson(&abs);break;case 6:	//清空cleanPerson(&abs);break;case 7:	//退出cout << "欢迎再次使用本系统!" << endl;system("pause");  //必须加入,否则无法退出系统break;case 8:	//按年龄联系人排序findInNum(&abs);break;case 9:	//暂无break;case 0:	//退出cout << "欢迎再次使用本系统!" << endl;system("pause");	//必须加入,否则无法退出系统break;default:break;}}return 0;system("pause");
}

总结

通过某站视频教程学习的结果分享给大家!在编程当中有时也会迷糊,程序也经过反复的调试运行,虽然过程可能比较坎坷,通讯系统也存在需要提高和优化之处,但还是相对比较好的完善了系统的功能!技术有限,程序有不足的地方,恳请各位谅解!共好!

更多推荐

C++通讯录管理系统简易系统

本文发布于:2024-02-07 03:35:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753177.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管理系统   简易   通讯录   系统

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!