日本真人做爰直播网站/seo资源网站 排名
前言:我是在B站上看黑马的视频来学习的c++,看着这个项目还不错,就整理下来分享给大家了。所以说,原作者是黑马的老师。B站链接为:https://www.bilibili.com/video/BV1et411b73Z?t=6&p=82
通讯录管理系统
- 1、系统需求
- 2、创建项目
- 3、菜单显示(功能)
- 4、设计联系人和通讯录结构体
- 5、设计主函数
- 5-1.创建通讯录结构体变量(abs)
- 5-2.通过switch语句,搭建整体框架
- 5-3.实现退出功能(case 0)
- 6、添加联系人
- 7、显示联系人
- 8、删除联系人
- 8-1.检测联系人是否存在
- 8-2.删除指定联系人
- 9、查找联系人
- 10、修改联系人
- 11、清空联系人
- **整体代码**
1、系统需求
通讯录是一个可以记录亲人、好友信息的工具。
本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:
添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
显示联系人:显示通讯录中所有联系人信息
删除联系人:按照姓名进行删除指定联系人
查找联系人:按照姓名查看指定联系人信息
修改联系人:按照姓名重新修改指定联系人
清空联系人:清空通讯录中所有信息
退出通讯录:退出当前使用的通讯录
2、创建项目
我相信大家都会创建一个c++项目,并且为他添加.cpp文件
3、菜单显示(功能)
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;
}
4、设计联系人和通讯录结构体
//设计联系人结构体
struct Person
{//姓名string m_name;//性别 1.男 2.女int m_sex;//年龄int m_age;//手机号string m_phone;//家庭住址string m_add;
};
//设计通讯录结构体
struct Addressbooks
{//保存联系人的数组struct Person personArry[MAX];//通讯录中当前记录联系人个数int m_size;
};
5、设计主函数
5-1.创建通讯录结构体变量(abs)
5-2.通过switch语句,搭建整体框架
5-3.实现退出功能(case 0)
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
int main()
{//创建通讯录结构体变量struct Addressbooks abs;//初始化通讯录中当前人员个数abs.m_size=0;int select=0;while(true){//菜单调用showMenu();cin >>select;switch(select){case 1://1.添加联系人break;case 2://2.显示联系人break;case 3://3.删除联系人break;case 4://4.查找联系人break;case 5://5.修改联系人break;case 6://6.清空联系人break;case 0://0.退出通讯录cout<<"欢迎下次使用"<<endl;return 0;break;default:break;}}system("pause");return 0;
}
6、添加联系人
//1、添加联系人(函数实现)
void addPerson(struct Addressbooks *abs)
{//判断通讯录是否已满,如果满了就不再添加if(abs->m_size==MAX){cout<<"通讯录已满,无法添加"<<endl;return;}else{//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personArry[abs->m_size].m_name=name;//性别cout<<"请输入性别:"<<endl;cout<<"1---男"<<endl;cout<<"2---女"<<endl;int sex=0;while(true){cin>>sex;if(sex==1||sex==2){abs->personArry[abs->m_size].m_sex=sex;break;}cout<<"输入错误,请重新输入"<<endl;}//年龄cout<<"请输入年龄:"<<endl;int age=0;cin>>age;abs->personArry[abs->m_size].m_age=age;//电话cout<<"请输入联系电话:"<<endl;string phone;cin>>phone;abs->personArry[abs->m_size].m_phone=phone;//住址cout <<"请输入家庭住址:"<<endl;string add;cin>>add;abs->personArry[abs->m_size].m_add=add;//更新通讯录人数abs->m_size++;cout<<"添加成功"<<endl;system("pause");//请按任意键继续system("cls");//清屏操作}
}
同时在main函数中调用该函数
case 1://1.添加联系人addPerson(&abs);//利用地址传递,可以修饰实参break;
7、显示联系人
//2、显示所有联系人(函数实现)
void showPerson(struct Addressbooks *abs)
{if(abs->m_size==0){cout<<"当前记录为空"<<endl;}else{for(int i=0;i<abs->m_size;i++){cout<<"姓名:"<<abs->personArry[i].m_name<<"\t";cout<<"性别:"<<(abs->personArry[i].m_sex==1?"男":"女")<<"\t";cout<<"年龄:"<<abs->personArry[i].m_age<<"\t";cout<<"联系方式:"<<abs->personArry[i].m_phone<<"\t";cout<<"家庭地址:"<<abs->personArry[i].m_add<<endl;}}system("pause");system("cls");
}
同时在main函数中调用该函数
case 2://2.显示联系人showPerson(&abs);break;
8、删除联系人
8-1.检测联系人是否存在
//3-1、检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
//参数1 通讯录 参数2 对比姓名
int isExist(struct Addressbooks *abs,string name)
{for(int i=0;i<abs->m_size;i++){//找到用户输入的姓名了if(abs->personArry[i].m_name==name){return i;//找到了,返回这个人在数组中的下标编号}}return -1;//如果遍历结束都没有找到,返回-1
}
在这里我们测试该函数是否正确,在main函数中调用该函数,因为代码比较多,用{}
括起来,以免出错。
case 3://3.删除联系人{cout<<"请输入删除联系人的姓名:"<<endl;string name;cin>>name;if(isExist(&abs,name)==-1){cout<<"查无此人"<<endl;}else{cout<<"找到此人"<<endl;}}break;
测试完直接注释掉或者删除这个代码就可以,只做测试用。
8-2.删除指定联系人
void deletePerson(struct Addressbooks *abs)
{cout<<"请输入您要删除的联系人"<<endl;string name;cin>>name;//ret==-1 未查到//ret!=-1 查到了int ret=isExist(abs,name);//调用检验联系人是否存在函数,如果找到联系人就删除if(ret!=-1){for(int i=ret;i<abs->m_size;i++){//数据前移abs->personArry[i]=abs->personArry[i+1];}abs->m_size--;//更新通讯录中的人员数cout<<"删除成功"<<endl;//提示联系人删除成功}else{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
同时在main函数中调用该函数
case 3://3.删除联系人deletePerson(&abs);break;
9、查找联系人
//4、查找联系人
void findPerson(struct Addressbooks *abs)
{cout<<"请输入您要查找的联系人"<<endl;string name;cin>>name;int ret=isExist(abs,name);if(ret!=-1)//找到联系人{cout<<"姓名:"<<abs->personArry[ret].m_name<<"\t";cout<<"性别:"<<(abs->personArry[ret].m_sex==1?"男":"女")<<"\t";cout<<"年龄:"<<abs->personArry[ret].m_age<<"\t";cout<<"联系方式:"<<abs->personArry[ret].m_phone<<"\t";cout<<"家庭地址:"<<abs->personArry[ret].m_add<<endl;}else//未找到{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
同时在main函数中调用该函数
case 4://4.查找联系人findPerson(&abs);break;
10、修改联系人
//5、修改指定联系人信息
void modifyPerson(struct Addressbooks *abs)
{cout<<"请输入您要修改的联系人"<<endl;string name;cin>>name;int ret=isExist(abs,name);if(ret!=-1)//找到指定联系人{//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personArry[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->personArry[ret].m_sex=sex;break;}else{cout<<"输入有误,请重新输入"<<endl;}}//年龄cout<<"请输入年龄"<<endl;int age=0;cin>>age;abs->personArry[ret].m_age=age;//电话cout<<"请输入联系电话"<<endl;string phone;cin>>phone;abs->personArry[ret].m_phone=phone;//家庭住址cout<<"请输入家庭住址"<<endl;string add;cin>>add;abs->personArry[ret].m_add=add;cout<<"修改成功!"<<endl;}else//未找到联系人{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
同时在main函数中调用该函数
case 5://5.修改联系人modifyPerson(&abs);break;
11、清空联系人
//6、清空所有的联系人
void cleanPerson(struct Addressbooks *abs)
{abs->m_size=0;//将当前记录联系人数量置为0,做逻辑清空操作cout<<"通讯录已清空!"<<endl;system("pause");system("cls");
}
同时在main函数中调用该函数,并做一个提示功能
case 6://6.清空联系人{cout<<"是否清空所有联系人"<<endl;//做一个提示功能cout<<"1---是"<<endl;cout<<"2---否"<<endl;int a;cin>>a;if(a==1)//确认删除cleanPerson(&abs);else//不删除,做清屏操作{system("pause");system("cls");}}break;
到这里,我们的通讯录管理系统的所有功能已经全部完成
整体代码
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
//设计联系人结构体
struct Person
{//姓名string m_name;//性别 1.男 2.女int m_sex;int m_age;string m_phone;string m_add;
};
//设计通讯录结构体
struct Addressbooks
{//保存联系人的数组struct Person personArry[MAX];//通讯录中当前记录联系人个数int m_size;
};
//1、添加联系人(函数实现)
void addPerson(struct Addressbooks *abs)
{//判断通讯录是否已满,如果满了就不再添加if(abs->m_size==MAX){cout<<"通讯录已满,无法添加"<<endl;return;}else{//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personArry[abs->m_size].m_name=name;//性别cout<<"请输入性别:"<<endl;cout<<"1---男"<<endl;cout<<"2---女"<<endl;int sex=0;while(true){cin>>sex;if(sex==1||sex==2){abs->personArry[abs->m_size].m_sex=sex;break;}cout<<"输入错误,请重新输入"<<endl;}//年龄cout<<"请输入年龄:"<<endl;int age=0;cin>>age;abs->personArry[abs->m_size].m_age=age;//电话cout<<"请输入联系电话:"<<endl;string phone;cin>>phone;abs->personArry[abs->m_size].m_phone=phone;//住址cout <<"请输入家庭住址:"<<endl;string add;cin>>add;abs->personArry[abs->m_size].m_add=add;//更新通讯录人数abs->m_size++;cout<<"添加成功"<<endl;system("pause");//请按任意键继续system("cls");//清屏操作}
}
//2、显示所有联系人(函数实现)
void showPerson(struct Addressbooks *abs)
{if(abs->m_size==0){cout<<"当前记录为空"<<endl;}else{for(int i=0;i<abs->m_size;i++){cout<<"姓名:"<<abs->personArry[i].m_name<<"\t";cout<<"性别:"<<(abs->personArry[i].m_sex==1?"男":"女")<<"\t";cout<<"年龄:"<<abs->personArry[i].m_age<<"\t";cout<<"联系方式:"<<abs->personArry[i].m_phone<<"\t";cout<<"家庭地址:"<<abs->personArry[i].m_add<<endl;}}system("pause");system("cls");
}
//3-1、检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
//参数1 通讯录 参数2 对比姓名
int isExist(struct Addressbooks *abs,string name)
{for(int i=0;i<abs->m_size;i++){//找到用户输入的姓名了if(abs->personArry[i].m_name==name){return i;//找到了,返回这个人在数组中的下标编号}}return -1;//如果遍历结束都没有找到,返回-1
}
//3-2、删除指定联系人
void deletePerson(struct Addressbooks *abs)
{cout<<"请输入您要删除的联系人"<<endl;string name;cin>>name;//ret==-1 未查到//ret!=-1 查到了int ret=isExist(abs,name);if(ret!=-1){for(int i=ret;i<abs->m_size;i++){//数据前移abs->personArry[i]=abs->personArry[i+1];}abs->m_size--;//更新通讯录中的人员数cout<<"删除成功"<<endl;}else{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
//4、查找联系人
void findPerson(struct Addressbooks *abs)
{cout<<"请输入您要查找的联系人"<<endl;string name;cin>>name;int ret=isExist(abs,name);if(ret!=-1)//找到联系人{cout<<"姓名:"<<abs->personArry[ret].m_name<<"\t";cout<<"性别:"<<(abs->personArry[ret].m_sex==1?"男":"女")<<"\t";cout<<"年龄:"<<abs->personArry[ret].m_age<<"\t";cout<<"联系方式:"<<abs->personArry[ret].m_phone<<"\t";cout<<"家庭地址:"<<abs->personArry[ret].m_add<<endl;}else//未找到{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
//5、修改指定联系人信息
void modifyPerson(struct Addressbooks *abs)
{cout<<"请输入您要修改的联系人"<<endl;string name;cin>>name;int ret=isExist(abs,name);if(ret!=-1)//找到指定联系人{//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personArry[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->personArry[ret].m_sex=sex;break;}else{cout<<"输入有误,请重新输入"<<endl;}}//年龄cout<<"请输入年龄"<<endl;int age=0;cin>>age;abs->personArry[ret].m_age=age;//电话cout<<"请输入联系电话"<<endl;string phone;cin>>phone;abs->personArry[ret].m_phone=phone;//家庭住址cout<<"请输入家庭住址"<<endl;string add;cin>>add;abs->personArry[ret].m_add=add;cout<<"修改成功!"<<endl;}else//未找到联系人{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
//6、清空所有的联系人
void cleanPerson(struct Addressbooks *abs)
{abs->m_size=0;//将当前记录联系人数量置为0,做逻辑清空操作cout<<"通讯录已清空!"<<endl;system("pause");system("cls");
}//菜单界面
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;
}int main()
{//创建通讯录结构体变量struct Addressbooks abs;//初始化通讯录中当前人员个数abs.m_size=0;int select=0;while(true){//菜单调用showMenu();cin >>select;switch(select){case 1://1.添加联系人addPerson(&abs);//利用地址传递,可以修饰实参break;case 2://2.显示联系人showPerson(&abs);break;case 3://3.删除联系人deletePerson(&abs);break;case 4://4.查找联系人findPerson(&abs);break;case 5://5.修改联系人modifyPerson(&abs);break;case 6://6.清空联系人{cout<<"是否清空所有联系人"<<endl;//做一个提示功能cout<<"1---是"<<endl;cout<<"2---否"<<endl;int a;cin>>a;if(a==1)//确认删除cleanPerson(&abs);else//不删除,做清屏操作{system("pause");system("cls");}}break;case 0://0.退出通讯录cout<<"欢迎下次使用"<<endl;return 0;break;default:break;}}system("pause");return 0;
}
如有错误大家积极指正