C++入门实战--通讯录管理系统
通讯录管理系统
- 系统要求
- 创建项目
- 创建项目
- 菜单功能
- 退出功能
- 添加联系人
- 设计联系人结构体
- main函数中创建通讯录
- 封装添加联系人函数
- 测试添加联系人功能
- 显示联系人
- 封装显示联系人函数
- 测试显示联系人功能
- 查找联系人
- 封装查找联系人函数
- 测试查找指定联系人
- 删除联系人
- 封装删除联系人函数
- 测试删除联系人功能
- 修改联系人
- 封装修改联系人函数
- 测试修改联系人功能
- 清空联系人
- 封装清空联系人函数
- 测试清空联系人
- 文件结构
系统要求
通讯录是一个可以记录亲人、好友信息的工具。
本教程主要利用C++来实现一个通讯录管理系统
系统中需要实现的功能如下:
- 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
- 显示联系人:显示通讯录中所有联系人信息
- 删除联系人:按照姓名进行删除指定联系人
- 查找联系人:按照姓名查看指定联系人信息
- 修改联系人:按照姓名重新修改指定联系人
- 清空联系人:清空通讯录中所有信息
- 退出通讯录:退出当前使用的通讯录
- 为了便于查看功能选择分文件编写
- 源自黑马程序员项目复刻,参考
创建项目
创建项目步骤如下:
- 创建新项目
- 添加文件
创建项目
打开vs后,点击创建新项目,创建新的C++项目
填写项目名称,选择项目路径
添加文件
添加成功后,效果如下:
到此为止,项目创建完成
菜单功能
功能描述: 用户选择功能的界面
菜单界面效果如下图:
实现方法:
- 封装函数显示该界面 如
void showMenu()
- 在main函数中调用封装好的函数
代码:(通讯录管理系统.cpp文件)
#include <iostream>
#include <string>
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}
int main() {showMenu();system("pause");return 0;
}
退出功能
**功能描述:**退出通讯录系统
思路:根据用户不同的选择,进入不同的功能,可以选择switch分支结构,将整个架构进行搭建
当用户选择0时候,执行退出,选择其他先不做操作,也不会退出程序
代码:(通讯录管理系统.cpp文件)
#include <iostream>
#include <string>
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";break;}case 2: {cout << "2、显示联系人\n";break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";break;}case 5: {cout << "5、修改联系人\n";break;}case 6: {cout << "6、清空联系人\n";break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
效果图:
添加联系人
**功能描述:**实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)
添加联系人实现步骤:
- 设计联系人结构体
- 设计通讯录结构体
- main函数中创建通讯录
- 封装添加联系人函数
- 测试添加联系人功能
设计联系人结构体
**联系人信息包括:**姓名、性别、年龄、联系电话、家庭住址
设计如下(新建my_struct.h文件):
#ifndef MY_STRUCT_H
#define MY_STRUCT_H
#include <iostream>
#include <string>
using namespace std;#define MAX 101 //最大联系人数量
// 联系人结构体
struct contact {string name; //姓名string gender; //性别int age; //年龄string phone; //手机号string address; //家庭住址
};#endif
main函数中创建通讯录
添加联系人函数封装好后,在main函数中创建一个通讯录变量,这个就是我们需要一直维护的通讯录
代码
#include <iostream>
#include "my_struct.h"
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;struct contact my_contact[101];int len = 0;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";break;}case 2: {cout << "2、显示联系人\n";break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";break;}case 5: {cout << "5、修改联系人\n";break;}case 6: {cout << "6、清空联系人\n";break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
封装添加联系人函数
思路:添加联系人前先判断通讯录是否已满,如果满了就不再添加,未满情况将新联系人信息逐个加入到通讯录
添加联系人代码(新建add.h文件):
#ifndef ADD_H
#define ADD_H
#include <iostream>
#include <string>
#include "my_struct.h"
using namespace std;
void add_data(struct contact* my_contact, int *len);
void my_data(struct contact* my_contact, int place);#endif
新建add.cpp文件
#include "add.h"void my_data(struct contact* my_contact, int place) {int flag = 1;int choice = 0;cout << "请输入相关信息:" << endl;cout << "请输入姓名:" << endl;cin >> my_contact[place].name;cout << "请输入性别:" << endl;cout << "1 -- 男" << endl;cout << "2 -- 女" << endl;cin >> my_contact[place].gender;cout << "请输入年龄:" << endl;cin >> my_contact[place].age;cout << "请输入手机号:" << endl;cin >> my_contact[place].phone;cout << "请输入家庭住址:" << endl;cin >> my_contact[place].address;cout << "请核对信息" << endl;cout << "姓名:" << my_contact[place].name<< " 性别:" << my_contact[place].gender<< " 年龄:" << my_contact[place].age<< " 手机号:" << my_contact[place].phone<< " 家庭地址:" << my_contact[place].address << endl;while (flag) {cout << "请输入需要修改的信息选项:1、姓名 2、性别 3、年龄 4、手机号 5、家庭地址 6、确定"<< endl;cin >> choice;switch (choice) {case 1: {cout << "请输入修改的姓名" << endl;cin >> my_contact[place].name;break;}case 2: {cout << "请输入修改的性别" << endl;cout << "1 -- 男" << endl;cout << "2 -- 女" << endl;cin >> my_contact[place].name;break;}case 3: {cout << "请输入修改的年龄" << endl;cin >> my_contact[place].name;break;}case 4: {cout << "请输入修改的手机号" << endl;cin >> my_contact[place].name;break;}case 5: {cout << "请输入修改的家庭地址" << endl;cin >> my_contact[place].name;break;}case 6: {flag = 0;break;}default: cout << "请重新输入" << endl;}}
}void add_data(struct contact *my_contact, int *len) {my_data(my_contact,* len);(* len)++;
}
测试添加联系人功能
选择界面中,如果玩家选择了1,代表添加联系人,我们可以测试下该功能
在switch case 语句中,case1里添加(整体代码如下,通讯录管理系统.cpp):
#include <iostream>
#include "add.h"
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;struct contact my_contact[101];int len = 0;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";add_data(my_contact, &len);break;}case 2: {cout << "2、显示联系人\n";break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";break;}case 5: {cout << "5、修改联系人\n";break;}case 6: {cout << "6、清空联系人\n";break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
测试效果如图:
显示联系人
功能描述: 显示通讯录中已有的联系人信息
显示联系人实现步骤:
- 封装显示联系人函数
- 测试显示联系人功能
封装显示联系人函数
思路:判断如果当前通讯录中没有人员,就提示记录为空,人数大于0,显示通讯录中信息
显示联系人代码:(新建show.h文件)
#ifndef SHOW_H
#define SHOW_H#include <iostream>
#include <string>
#include"my_struct.h"
using namespace std;void show_data(const struct contact* p, int len);#endif
新建show.cpp文件
#include "show.h"void show_data(const struct contact* p,int len) {cout << "总计:" << len << "人" << endl;for (int i = 0; i < len; i++) {cout << "姓名:" << p[i].name << " 性别:" << p[i].gender<< " 年龄:" << p[i].age << " 手机号:" << p[i].phone<< " 家庭住址:" << p[i].address << endl;}}
测试显示联系人功能
在switch case 语句中,case2里添加(整体代码如下,通讯录管理系统.cpp):
#include <iostream>
#include "show.h"
#include "add.h"
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;struct contact my_contact[101];int len = 0;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";add_data(my_contact, &len);break;}case 2: {cout << "2、显示联系人\n";show_data(my_contact, len);break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";break;}case 5: {cout << "5、修改联系人\n";break;}case 6: {cout << "6、清空联系人\n";break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
测试效果如图:
查找联系人
功能描述:按照电话查看指定联系人信息
查找联系人实现步骤
- 封装查找联系人函数
- 测试查找指定联系人
封装查找联系人函数
实现思路:判断用户指定的联系人是否存在,如果存在显示信息,不存在则提示查无此人。(输入为电话号码)
查找联系人代码:(新建find.h文件)
#ifndef FIND_H
#define FIND_H#include <iostream>
#include <string>
#include"my_struct.h"
using namespace std;
void print_contact(const struct contact* my_contact, int len);
int my_find(const struct contact* my_contact, int len, string find_phone);#endif
新建find.cpp文件
#include "find.h"int my_find(const struct contact* my_contact, int len,string find_phone) {int i = 0;for (i = 0; i < len; i++) {if (find_phone == my_contact[i].phone) {break;}}return i;
}void print_contact(const struct contact* my_contact, int len) {string find_phone;cout << "请输入您要查找的联系人电话号码:" << endl;cin >> find_phone;int place = my_find(my_contact, len, find_phone);if (place == len) {cout << "没有您要查找的联系人" << endl;return;}cout << "姓名:" << my_contact[place].name<< " 性别:" << my_contact[place].gender<< " 年龄:" << my_contact[place].age<< " 电话:" << my_contact[place].phone<< " 地址:" << my_contact[place].address << endl;}
测试查找指定联系人
在switch case 语句中,case4里添加(整体代码如下,通讯录管理系统.cpp):
#include <iostream>
#include "show.h"
#include "add.h"
#include "find.h"
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;struct contact my_contact[101];int len = 0;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";add_data(my_contact, &len);break;}case 2: {cout << "2、显示联系人\n";show_data(my_contact, len);break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";print_contact(my_contact, len);break;}case 5: {cout << "5、修改联系人\n";break;}case 6: {cout << "6、清空联系人\n";break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
测试效果如图
存在情况:
不存在情况:
删除联系人
功能描述:按照电话进行删除指定联系人
删除联系人实现步骤:
- 封装删除联系人函数
- 测试删除联系人功能
封装删除联系人函数
设计思路:
1、检查联系人是否存在
删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有要删除的联系人
因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,如果不存在则返回的位置等于通讯录长度。
根据用户输入的联系人电话号码判断该通讯录中是否有此人
查找到进行删除,并提示删除成功
查不到提示查无此人。
删除联系人代码:(新建delete.h文件)
#ifndef DELETE_H
#define DELETE_H#include <iostream>
#include <string>
#include"my_struct.h"
using namespace std;void delete_contact(struct contact* my_contact, int* len);#endif
新建delete.cpp文件
#include "delete.h"
#include "find.h"
void delete_contact(struct contact* my_contact, int* len)
{string delet_phone;int i = 0;cout << "请输入您要删除的联系人电话号码:" << endl;cin >> delet_phone;i = my_find(my_contact, *len, delet_phone);if (i == * len) {cout << "没有您要删除的联系人" << endl;}for (int j = i; j < *len - 1; j++) {my_contact[j] = my_contact[j + 1];}if ((*len) != 0) {(*len)--;}else {cout << "删除失败,整个联系册是空的" << endl;}}
测试删除联系人功能
在switch case 语句中,case3里添加(整体代码如下,通讯录管理系统.cpp):
#include <iostream>
#include "show.h"
#include "add.h"
#include "delete.h"
#include "find.h"
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;struct contact my_contact[101];int len = 0;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";add_data(my_contact, &len);break;}case 2: {cout << "2、显示联系人\n";show_data(my_contact, len);break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";delete_contact(my_contact,&len);break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";print_contact(my_contact, len);break;}case 5: {cout << "5、修改联系人\n";break;}case 6: {cout << "6、清空联系人\n";break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
测试效果如图:
存在情况:
不存在情况:
整个通讯录为空
不存在但是整个通讯录不为空
修改联系人
功能描述:按照电话重新修改指定联系人
修改联系人实现步骤
- 封装修改联系人函数
- 测试修改联系人功能
封装修改联系人函数
实现思路:查找用户输入的联系人电话,如果查找成功进行修改操作,查找失败提示查无此人
修改联系人代码:(新建alter.h文件)
#ifndef ALTER_H
#define ALTER_H#include <iostream>
#include <string>
#include"my_struct.h"
#include "find.h"
#include "add.h"
using namespace std;void alter_data(struct contact* my_contact, int len);#endif
(新建alter.cpp文件)
#include "alter.h"
void alter_data(struct contact* my_contact, int len) {string phone;int alter_contact = 0;cout << "请输入您要修改的联系人电话:" << endl;cin >> phone;alter_contact = my_find(my_contact, len, phone);if (alter_contact == len) {cout << "没有找到该联系人,请检查输入的电话号码是否正确!" << endl;return;}my_data(my_contact,alter_contact);}
测试修改联系人功能
在switch case 语句中,case5里添加(整体代码如下,通讯录管理系统.cpp):
#include <iostream>
#include "show.h"
#include "add.h"
#include "delete.h"
#include "find.h"
#include "alter.h"
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;struct contact my_contact[101];int len = 0;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";add_data(my_contact, &len);break;}case 2: {cout << "2、显示联系人\n";show_data(my_contact, len);break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";delete_contact(my_contact,&len);break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";print_contact(my_contact, len);break;}case 5: {cout << "5、修改联系人\n";alter_data(my_contact,len);break;}case 6: {cout << "6、清空联系人\n";break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
测试效果如图:
查不到指定联系人情况:
查找到联系人,并修改成功:
再次查看通讯录,确认修改完毕
清空联系人
功能描述:清空通讯录中所有信息
清空联系人实现步骤
- 封装清空联系人函数
- 测试清空联系人
封装清空联系人函数
实现思路: 将通讯录所有联系人信息清除掉,只要将通讯录记录的联系人数量置为0,做逻辑清空即可。
清空联系人代码:(新建clear.h文件)
#ifndef CLEAR_H
#define CLEAR_H#include <iostream>
#include <string>
#include"my_struct.h"
using namespace std;
void clear_all(struct contact* my_contact, int* len);#endif
新建clear.cpp文件
#include "clear.h"void clear_all(struct contact* my_contact, int* len) {int flag = 0;cout << "您确定删除所有联系人?确定请输入1,取消请输入0" << endl;cin >> flag;if (flag) {*len = 0;}}
测试清空联系人
在switch case 语句中,case6里添加(整体代码如下,通讯录管理系统.cpp):
#include <iostream>
#include "show.h"
#include "add.h"
#include "clear.h"
#include "delete.h"
#include "find.h"
#include "alter.h"
using namespace std;
/*
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录
*/int menu() {cout << "请选择你的操作(1-7)" << endl;cout << "1、添加联系人\n"<< "2、显示联系人\n"<< "3、删除联系人(依据电话号码删除)\n"<< "4、查找联系人(依据电话号码查找)\n"<< "5、修改联系人\n"<< "6、清空联系人\n"<< "7、退出通讯录\n" << "最多存储100人\n" << endl;int choice=0;cin >> choice;return choice;}int main() {bool flag = 1;struct contact my_contact[101];int len = 0;while (flag) {int choice = menu();switch (choice) {case 1: {cout << "1、添加联系人\n";add_data(my_contact, &len);break;}case 2: {cout << "2、显示联系人\n";show_data(my_contact, len);break;}case 3: {cout << "3、删除联系人(依据电话号码删除)\n";delete_contact(my_contact,&len);break;}case 4: {cout << "4、查找联系人(依据电话号码查找)\n";print_contact(my_contact, len);break;}case 5: {cout << "5、修改联系人\n";alter_data(my_contact,len);break;}case 6: {cout << "6、清空联系人\n";clear_all(my_contact,&len);break;}case 7: {cout << "——————退出通讯录——————\n";flag = 0;return 0;}default:cout << "您没有选择正确的操作请重新选择" << endl;}system("pause");system("cls");}return 0;
}
测试效果如图:
清空通讯录
再次查看信息,显示记录为空
至此,通讯录管理系统完成!
文件结构
单个文件版本