C++入门项目——通讯管理系统
生活随笔
收集整理的这篇文章主要介绍了
C++入门项目——通讯管理系统
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
通讯管理系统
文章目录
- 通讯管理系统
- 1、系统需求
- 2、菜单功能
- 3、退出功能
- 4、添加联系人
- 4.1 设计联系人结构体
- 4.2 设计通讯录结构体
- 4.3 main函数创建通讯录
- 4.4 封装添加联系人函数
- 5、显示联系人
- 6、删除联系人
- 6.1 检测联系人是否存在
- 6.2 封装删除联系人函数
- 7、查找联系人
- 8、修改联系人
- 9 清空通讯录
- 10 全部代码
1、系统需求
说明:通讯录是一个可以记录亲人、好友信息的工具
系统所需要的功能:
- (1)添加联系人:向通讯录添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址).
- (2)显示联系人:显示通讯录中记录联系人信息
- (3)删除联系人:按照姓名进行删除指定联系人
- (4)查找联系人:按照姓名查看指定联系人信息
- (5)修改联系人:按照姓名重新修改指定联系人
- (6)清空联系人:清空通讯录所有信息
- (7)退出通讯录:退出当前使用的通讯录
2、菜单功能
作用:用户选择功能界面
步骤:
-
封装函数显示该界面:showMenu()
-
在main函数中调用
3、退出功能
作用:退出通讯录系统
//退出通讯录case 0: cout << "欢迎下次再来,拜拜!!!" << endl;system("pause");return 0;break;4、添加联系人
作用:实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)
添加联系人步骤:
- (1)设计联系人结构体
- (2)设计通讯录结构体
- (3)main函数创建通讯录
- (4)封装添加联系人函数
- (5)测试添加联系人功能
4.1 设计联系人结构体
//联系人结构体 struct Person {string m_Name;//姓名//1、男;2、女int m_Sex;//性别int m_Age;//年龄string m_phone;//电话string m_Addr;//住址 };4.2 设计通讯录结构体
//通讯录结构体 struct Addressbooks {struct Person person[Max];int m_size;//通讯成员个数 };4.3 main函数创建通讯录
case 1: addPerson(&abs);//地址传递,修改形参break;4.4 封装添加联系人函数
//1、添加联系人 void addPerson(struct Addressbooks *abs)//利用指针接收地址 {//判断通讯录是否已满,如果满了就不要添加if (abs->m_size == Max){cout << "通讯录已满,添加失败!" << endl;}else{//姓名string name;cout << "请输入姓名:" << endl;cin >> name;abs->person[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->person[abs->m_size].m_Sex = sex;if (sex == 1)cout << "你输入通讯录联系人的性别是-男" << endl;else if(sex==2)cout << "你输入通讯录联系人的性别是-女" << endl;break;}else{cout << "性别输入有误,请重新输入!!" << endl;}}//年龄cout << "请输入年龄:" << endl;int age;while (true){cin >> age;if (age > 0 && age < 100){abs->person[abs->m_size].m_Age = age;break;} elsecout << "你输入的年龄有误,请重新输入:" << endl;}//电话cout << "请输入电话:" << endl;string phone;while (true){cin >> phone;if (phone[0] != '1'){cout << "你输入的电话号码不是1开头,请重新输入!" << endl;continue;}abs->person[abs->m_size].m_phone = phone;break;}//地址cout << "请输入地址:" << endl;string add;cin >> add;abs->person[abs->m_size].m_Addr = add;//更新通讯录人数abs->m_size++;cout << "通讯录联系人添加成功!!";system("pause");//按任意键继续system("cls");//清屏操作} }5、显示联系人
作用:显示通讯录已有的联系人信息
显示联系人步骤:
- 封装显示联系人函数
- 测试显示联系人功能
6、删除联系人
作用:按照姓名删除联系人
步骤:
- (1)封装检测联系人是否存在
- (2)封装删除联系人函数
- (3)测试删除联系人功能
6.1 检测联系人是否存在
说明:检测联系人是否存在,如果存在,返回联系人所在数组具体位置,不存在返-1
int isExist(Addressbooks *abs, string name) {for (int i = 0; i < abs->m_size; i++){//找到用户的姓名if (abs->person[i].m_Name == name){return i;}}return -1; }6.2 封装删除联系人函数
void deletePerson(Addressbooks * abs) {cout << "请输入要删除联系人的姓名:" << endl;string name;cin >> name;int ret=isExist(abs, name);if (ret == -1){cout << "通讯录无该联系人记录!!" << endl;}else{for (int i = ret; i < abs->m_size; i++){//数据前移abs->person[i] = abs->person[i + 1];}abs->m_size--;cout << "删除成功!!!" << endl;}system("pause");system("cls"); }7、查找联系人
作用:按照姓名查找指定联系人信息
void findPerson(Addressbooks *abs) {cout << "请输入你要查找的联系人:" << endl;string name;cin >> name;//判断联系人是否存在通讯录int ret = isExist(abs, name);if (ret == -1){cout << "对不起,通讯录无此人!!" << endl;}else{cout << "姓名: " << abs->person[ret].m_Name << "\t";cout << "性别: " << (abs->person[ret].m_Sex==1?"男":"女") << "\t";cout << "年龄: " << abs->person[ret].m_Age << "\t";cout << "电话: " << abs->person[ret].m_phone << "\t";cout << "住址: " << abs->person[ret].m_Addr << endl;}system("pause");system("cls"); }8、修改联系人
作用:按照姓名重新修改指定联系人
void modifyPerson(Addressbooks * abs) {cout << "请输入要修改联系人的姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "对不起,你所要修改的联系人并不在此通讯录!!" << endl;}else{string name;cout << "请重新输入要修改的姓名:" << endl;cin >> name;abs->person[ret].m_Name = name;int sex;cout << "请重新输入要修改的性别:" << endl;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->person[ret].m_Sex = sex;break;}else{cout << "你输入的有误,请重新输入:" << endl;}}int age;cout << "请重新输入要修改的年龄:" << endl;cin >> age;abs->person[ret].m_Age = age;string phone;cout << "请重新输入要修改的电话:" << endl;cin >> phone;abs->person[ret].m_phone = phone;string addre;cout << "请重新输入要修改的地址:" << endl;cin >> addre;abs->person[ret].m_Addr = addre;cout << "修改成功了!!" << endl;}system("pause");system("cls"); }添加信息:
修改联系人:
修改之后联系人:
9 清空通讯录
void cleanPerson(Addressbooks * abs) {cout << "你是否一定要清空:是输入:Y/y,否输入:N/n" << endl;char ch;while (true){cin >> ch;if (ch == 'Y' || ch == 'y'){//将当期记录联系人数量置为0,做逻辑清空操作abs->m_size = 0;cout << "通讯录已经清空!" << endl;break;}else if (ch == 'N' || ch == 'n'){cout << "请重新操作:" << endl;break;}else{cout << "输入错误,请重新输入:" << endl;}}system("pause");system("cls"); }10 全部代码
#include<iostream> #include<string> #define Max 10000 using namespace std; //联系人结构体 struct Person {string m_Name;//姓名//1、男;2、女int m_Sex;//性别int m_Age;//年龄string m_phone;//电话string m_Addr;//住址 }; //通讯录结构体 struct Addressbooks {struct Person person[Max];int m_size;//通讯成员个数 }; //1、添加联系人 void addPerson(struct Addressbooks *abs)//利用指针接收地址 {//判断通讯录是否已满,如果满了就不要添加if (abs->m_size == Max){cout << "通讯录已满,添加失败!" << endl;}else{//姓名string name;cout << "请输入姓名:" << endl;cin >> name;abs->person[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->person[abs->m_size].m_Sex = sex;if (sex == 1)cout << "你输入通讯录联系人的性别是-男" << endl;else if(sex==2)cout << "你输入通讯录联系人的性别是-女" << endl;break;}else{cout << "性别输入有误,请重新输入!!" << endl;}}//年龄cout << "请输入年龄:" << endl;int age;while (true){cin >> age;if (age > 0 && age < 100){abs->person[abs->m_size].m_Age = age;break;} elsecout << "你输入的年龄有误,请重新输入:" << endl;}//电话cout << "请输入电话:" << endl;string phone;while (true){cin >> phone;if (phone[0] != '1'){cout << "你输入的电话号码不是1开头,请重新输入!" << endl;continue;}abs->person[abs->m_size].m_phone = phone;break;}//地址cout << "请输入地址:" << endl;string add;cin >> add;abs->person[abs->m_size].m_Addr = add;//更新通讯录人数abs->m_size++;cout << "通讯录联系人添加成功!!";system("pause");//按任意键继续system("cls");//清屏操作} } // 2、显示联系人 void showPerson(Addressbooks *abs) {//判断通讯录人数是否为0,如果是0,提示为空//如果不为0显示联系人cout <<"编号\t"<< "姓名\t" << "性别\t" << "年龄\t" << "电话\t" << "住址\t" << endl << endl;if (abs->m_size == 0){cout << "当前记录为空!!" << endl;}else{for (int i = 0; i < abs->m_size; i++){cout << i+1<<"\t"<<abs->person[i].m_Name << "\t" << (abs->person[i].m_Sex == 1 ? "男" : "女") << "\t" << abs->person[i].m_Age << "\t" << abs->person[i].m_phone << "\t" << abs->person[i].m_Addr << endl;}}system("pause");system("cls"); } //菜单界面 void showMenu() {cout << "\t\t||-------------------------||"<< endl;cout << "\t\t|| 通讯录管理系统 ||" << endl;cout << "\t\t||-------------------------||" << endl;cout << "\t\t*****************************" << endl;cout << "\t\t***** 1、添加联系人 *****"<< endl;cout << "\t\t***** 2、显示联系人 *****" << endl;cout << "\t\t***** 3、删除联系人 *****" << endl;cout << "\t\t***** 4、查找联系人 *****" << endl;cout << "\t\t***** 5、修改联系人 *****" << endl;cout << "\t\t***** 6、清空联系人 *****" << endl;cout << "\t\t***** 0、退出通讯录 *****" << endl;cout << "\t\t*****************************" << endl; } //检测联系人是否存在,如果存在,返回联系人所在数组具体位置,不存在返-1 int isExist(Addressbooks *abs, string name) {for (int i = 0; i < abs->m_size; i++){//找到用户的姓名if (abs->person[i].m_Name == name){return i;}}return -1; } //删除指定联系人 void deletePerson(Addressbooks * abs) {cout << "请输入要删除联系人的姓名:" << endl;string name;cin >> name;int ret=isExist(abs, name);if (ret == -1){cout << "通讯录无该联系人记录!!" << endl;}else{for (int i = ret; i < abs->m_size; i++){//数据前移abs->person[i] = abs->person[i + 1];}abs->m_size--;cout << "删除成功!!!" << endl;}system("pause");system("cls"); } //查找指定联系人 void findPerson(Addressbooks *abs) {cout << "请输入你要查找的联系人:" << endl;string name;cin >> name;//判断联系人是否存在通讯录int ret = isExist(abs, name);if (ret == -1){cout << "对不起,通讯录无此人!!" << endl;}else{cout << "姓名: " << abs->person[ret].m_Name << "\t";cout << "性别: " << (abs->person[ret].m_Sex==1?"男":"女") << "\t";cout << "年龄: " << abs->person[ret].m_Age << "\t";cout << "电话: " << abs->person[ret].m_phone << "\t";cout << "住址: " << abs->person[ret].m_Addr << endl;}system("pause");system("cls"); } //修改指定的联系人的信息 void modifyPerson(Addressbooks * abs) {cout << "请输入要修改联系人的姓名:" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret == -1){cout << "对不起,你所要修改的联系人并不在此通讯录!!" << endl;}else{string name;cout << "请重新输入要修改的姓名:" << endl;cin >> name;abs->person[ret].m_Name = name;int sex;cout << "请重新输入要修改的性别:" << endl;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->person[ret].m_Sex = sex;break;}else{cout << "你输入的有误,请重新输入:" << endl;}}int age;cout << "请重新输入要修改的年龄:" << endl;cin >> age;abs->person[ret].m_Age = age;string phone;cout << "请重新输入要修改的电话:" << endl;cin >> phone;abs->person[ret].m_phone = phone;string addre;cout << "请重新输入要修改的地址:" << endl;cin >> addre;abs->person[ret].m_Addr = addre;cout << "修改成功了!!" << endl;}system("pause");system("cls"); } //清空所有联系人 void cleanPerson(Addressbooks * abs) {cout << "你是否一定要清空:是输入:Y/y,否输入:N/n" << endl;char ch;while (true){cin >> ch;if (ch == 'Y' || ch == 'y'){//将当期记录联系人数量置为0,做逻辑清空操作abs->m_size = 0;cout << "通讯录已经清空!" << endl;break;}else if (ch == 'N' || ch == 'n'){cout << "请重新操作:" << endl;break;}else{cout << "输入错误,请重新输入:" << endl;}}system("pause");system("cls"); } int main() {system("color 5E");int select;//创建通讯录结构体变量Addressbooks abs;//初始化通讯录中的个数abs.m_size = 0;cout << "我是贾维斯,欢迎来到通讯管理系统!" << endl;while (true){//显示菜单showMenu();//输入需要选择的功能cout << "请输入你要选择的操作:" << endl;cin >> select;switch (select){//添加联系人case 1: addPerson(&abs);//地址传递,修改形参break;//显示联系人case 2: showPerson(&abs);break;//删除联系人case 3: deletePerson(&abs);break;//查找联系人case 4: findPerson(&abs);break;//修改联系人case 5: modifyPerson(&abs);break;//清空联系人case 6: cleanPerson(&abs);break;//退出通讯录case 0: cout << "欢迎下次再来,拜拜!!!" << endl;system("pause");return 0;break;default: cout << "你输入的不规范,请重新输入" << endl;break;}}system("pause");return 0; }总结
以上是生活随笔为你收集整理的C++入门项目——通讯管理系统的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: GitHub 上最火的开源项目 —— J
- 下一篇: 解决速达软件提示将numeric转换为数