当前位置: 首页 > ai >正文

c++通讯录管理系统

通讯录是一个可以记录亲人,好友的信息工具。

功能包括:

1,添加联系人:向通讯录添加新人,包括(姓名,性别年龄,联系电话,家庭住址)

2,显示联系人:显示通讯录中所有联系人的信息

3,删除联系人:按照姓名进行删除指定联系人

4,查找联系人:按照姓名查看指定联系人的信息

5,修改联系人:按照姓名重新修改联系人的信息

6,清空联系人:清空通讯录中所有的信息

7,退出通讯录:退出当前使用的通讯录

菜单界面:

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;
}

1,添加联系人:

(1)设计联系人结构体

#include<string>
struct person{string m_name;//姓名 int m_sex;//性别:1:男2:女int m_age;//年龄 string m_phone;//电话string m_addr;// 住址
}; 

(2)设计通讯录结构体

#define MAX 1000 //最大人数 
struct addressbooks{struct person personarr[MAX];//通讯录中保存的联系人的数组 int m_size//通讯录中人员的个数 
};

(3)main函数中创建通讯录

	//创建通讯录结构体变量addressbooks abs;//初始化通讯录中当前人员的个数abs.m_size=0;

(4)封装添加联系人函数

void addperson(addressbooks *abs)
{//判断通讯录是否已满,如果满了就不进行添加if(abs->m_size==MAX){cout<<"通讯录已满,无法添加!"<<endl;} else{//添加具体联系人string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personarr[abs->m_size].m_name=name; //性别cout<<"请输入性别:"<<endl;cout<<"1----男"<<endl;cout<<"2----女"<<endl;int sex=0;while(true){cin>>sex;if(sex==1||sez==2){abs->personarr[abs->m_size].m_sex=sex;break;} cout>>"输入有误,请重新输入"; }//年龄cout<<"请输入年龄:"<<endl;int age=0;cin>>age;abs->personarr[abs->m_size].m_age=age;///电话cout<<"请输入联系电话:"<<endl;string phone;cin>>phone;abs->personarr[abs->m_size].m_phone=phone;//住址cout<<"请输入家庭住址:"<<endl;string address;cin>>address;abs->personarr[abs->m_size].m_addr=address;//更新通讯录人数abs->m_size++;cout<<"添加成功"<<endl;system("pause");//请安任意键继续system("cls");//清屏操作 }} 

(5)测试添加联系人功能

case 1://1,添加联系人addperson(&abs);//利用地址传递可以修改 break;

2,显示联系人

(1)封装显示联系人

如果当时没有人,就标记记录为空,人数大于0就显示

 //2,显示所有联系人void showperson(addressbooks *abs){if(abs->m_size==0){cout<<"当前记录为空"<<endl; }else{for(int i=0;i<abs->m_size;i++){cout<<"姓名:"<<abs->personarr[i].m_name<<"\t";cout<<"性别:"<<(abs->personarr[i].m_sex==1?"男":"女")<<"\t";cout<<"年龄:"<<abs->personarr[i].m_age<<"\t";cout<<"电话:"<<abs->personarr[i].m_phone<<"\t";cout<<"住址:"<<abs->personarr[i].m_addr<<"\t";}}system("pause");system("cls");}

(2)   测试显示联系人

	case 2://2,显示联系人showperson(&abs);break;

3,删除联系人

(1)封装检测联系人是否存在

//检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1int isexist(addressbooks *abs,string name){for(int i=0;i<abs->m_size;i++){if(abs->personarr[i].m_name==name){return 1;}}} 

(2)封装删除联系人函数(将要删除的人做一个前移,依次前移)

   //删除联系人void deleteperson(addressbooks *abs){cout<<"请输入您要删除的联系人"<<endl;string name;cin>>name;int ret=isexist(abs,name);if(ret!=-1){for(int i=ret;i<abs->m_szie;i++){abs->personarr[i]=abs->personarr[i+1];}abs->m_size--;cout<<"删除成功"<<endl; } else{cout<<"查无此人";}}

(3)测试删除联系人功能

	case 3://3,删除联系人{cout<<"请输入删除联系人姓名:"<<endl;string name;cin>>name; if(isexist(&abs,name)==-1){cout<<"查无此人"<<endl; }else{cout<<"找到此人"<<endl; deleteperson(&abs)}}break;

4,查找联系人

判断联系人是否存在,如果存在显示联系人,不存在则提示查无此人

(1)封装查找联系人

//4,查找联系人 void findperson(addressbooks *abs){cout<<"请输入您要查找的联系人"<<endl; string name;cin>>name;int ret=isexist(abs,name);if(ret!=-1)//找到联系人{cout <<"姓名:"<<abs->personarr[ret].m_name<<"\t";cout <<"性别:"<<abs->personarr[ret].m_sex<<"\t";cout <<"年龄:"<<abs->personarr[ret].m_age<<"\t";cout <<"电话:"<<abs->personarr[ret].m_phone<<"\t";cout <<"住址:"<<abs->personarr[ret].m_addr<<"\t";}else{cout<<"查无此人"<<endl; }system("pause");system("cls");} 

(2)测试查找指定的联系人

case 4://4,查找联系人findperson( &abs);break;

5,修改联系人

(1)封装修改联系人的函数

	 //5,修改联系人 void modifyperson(addressbooks *abs){cout<<"请输入要修改的联系人"<<endl;string name;cin>>name;int ret=isexist(abs,name);if(ret!=-1){//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personarr[ret].m_name=name;//性别cout<<"请输入性别:"<<endl;cout<<"1---男"<<endl;cout<<"2---女"<<endl;int sex=0;while(true){cin>>sex;if (sex==1||sex==2){abs->personarr[ret].m_sex=sex;break;}cout<<"输入有误,请重新输入"<<endl;}//年龄cout<<"请输入年龄:"<<endl;int age;cin>>age;abs->personarr[ret].m_age=age;//电话cout<<"请输入电话:"<<endl;string phone;cin>>phone;abs->personarr[ret].m_phone=phone;//住址cout<<"请输入家庭住址:"<<endl;string address;cin>>address;abs->personarr[ret].m_addr=address;cout<<"修改成功!"<<endl; }else{cout<<"查无此人"<<endl;}system("pause");system("cls");} 

(2) 测试修改联系人的函数

	case 5://5,修改联系人modifyperson(&abs);break;

6,清空联系人

(1)封装联系人的函数

将通讯录所有联系人的信息清除掉,值要将通讯录记录的联系人数量置为0,做逻辑清空即可

	  //6,清空联系人void cleanperson(addressbooks *abs){abs->m_size=0;//将当期人数置为0,做逻辑清空操作 cout<<"通讯录已经清空"<<endl;system("pause");system("cls"); } 

(2)测试清空联系人

	case 6://6,清空联系人cleanperson(&abs); break;

http://www.xdnf.cn/news/679.html

相关文章:

  • 运筹学之引力搜索
  • Mac上Cursor无法安装插件解决方法
  • 【KWDB 创作者计划】_上位机知识篇---ESP32-S3Arduino
  • Aerich实战指南:零基础掌握异步ORM数据库迁移工具
  • Linux `init 6` 相关命令的完整使用指南
  • Android Gradle多渠道打包
  • 【自然语言处理与大模型】Linux环境下Ollama下载太慢了该怎么处理?
  • AIStarter新版本发布:模型、插件与工作流的高效管理工具
  • 【C++初阶】第15课—模版进阶
  • 多模态大语言模型arxiv论文略读(三十)
  • 设计心得——函数参数的封装
  • Redis缓存降级的4种策略
  • QT实现串口透传的功能
  • OSPF综合实验——企业边界路由器、LSA收敛
  • 车载测试用例开发-如何平衡用例覆盖度和测试效率的方法论
  • VSCode 扩展离线下载方法
  • 如何编写JavaScript插件
  • 5、openfeign
  • 初识javascript
  • C++11特性补充
  • 【Ollama:本地LLM工具】
  • JavaScript 位掩码常量教程
  • MySQL 视图
  • Python内存管理之隔代回收机制详解
  • Redis 缓存—处理高并发问题
  • 宝塔面板部署 Dify-latest 最新版本
  • 第38讲|AI + 农业病虫害预测建模
  • Nacos配置中心客户端加载配置文件源码解析
  • 密码学数据加密标准DES
  • 使用Python可视化洛伦兹变换