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

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

测试效果如图:

清空通讯录
在这里插入图片描述
再次查看信息,显示记录为空在这里插入图片描述
至此,通讯录管理系统完成!

文件结构

在这里插入图片描述

单个文件版本

相关文章:

  • 【闲谈】对于c++未来的看法
  • JAVA集合篇--深入理解ConcurrentHashMap图解版
  • git安装使用详细教程
  • MySQL之索引结构和分类深度详解
  • 零基础学习Redis(13) -- Java使用Redis命令
  • Java基础 6.22
  • 【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化
  • 系列一、windows中安装RabbitMQ
  • 硬件面经-具身机器人通用技术要求
  • 逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
  • 信息安全管理与评估2025湖北卷路由部分答案
  • pyhton基础【14】函数四
  • 爬虫001----介绍以及可能需要使用的技术栈
  • multiprocessing.pool和multiprocessing.Process
  • DeepSeek:中国AI开源先锋的技术突破与行业革新
  • Unity中的Mathf.Clamp
  • 嵌入式软件面经(一)Q: 什么是Modbus协议?它有哪些特点?
  • C++ unordered_map基础概念、对象创建、赋值操作、大小操作、数据插入、数据删除、数据修改、代码练习 1 2
  • 面试150 加油站
  • 【已解决】 数据库INSERT操作时,Column count doesn’t match value count at row 1
  • 青岛自助建站软件/下载百度官方网站
  • 临海做网站的公司/广州百度推广优化
  • 医疗网站建设管理/网站推广公司黄页
  • 百度如何把网站做链接地址/网络营销公司名称
  • 个人网站建设课程介绍/青岛 google seo
  • 网站建设企业官网体验版是什么/怎样宣传自己的产品