C++通讯录管理系统实战:结构体与数组基础
本文详解如何利用 C++ 的结构体 struct 与数组管理数据,从零搭建一个具备联系人添加、显示、删除、查找、修改及清空功能的通讯录系统。代码结合菜单交互与循环控制,是掌握 C++ 基础语法与逻辑控制的典型实战案例。
1、功能模块设计
本系统的核心目标是管理用户通讯录信息,每条记录包含姓名、性别、年龄、联系电话和家庭住址。考虑到初学者环境,系统设定最大容纳人数为 3 人(实际应用中可根据需求调整),并提供以下交互式功能:
- 添加联系人:录入新成员,自动增加当前人数计数器。
- 显示联系人:遍历并格式化输出所有存储的通讯录数据。
- 删除联系人:根据输入姓名查找目标,若存在则将其后的人员向前移动以填补空缺。
- 查找联系人:精准检索指定姓名的详细资料。
- 修改联系人:定位目标后,重新录入各项基本信息进行覆盖更新。
- 清空联系人:重置系统计数器并清理数组内容。
- 退出系统:结束程序运行。
2、核心逻辑与代码实现
在开始编码前,首先需要定义数据结构。我们将单个联系人的属性抽象为一个结构体,将整个通讯录抽象为另一个结构体,其中包含指向多个联系人的数组以及当前的实际人数。
第1步:定义数据结构
利用 struct 关键字定义 Person 用于存储个人详情,定义 addressbook 作为容器。引入 <iostream> 和 <string> 以支持标准输入输出和字符串处理。
// 引入C++标准包
#include <iostream>
#include <string>
using namespace std;
// 定义常量通讯录最大值
constexpr auto MAX = 3;
// 定义联系人结构体
struct Person
{
string name;
int sex;
int age;
string phoneNamer;
string address;
};
// 定义通讯录容器结构体
struct addressbook
{
struct Person perArray[MAX];
int person_size;
};
第2步:构建主菜单与查找辅助
编写 showMenu() 打印功能选项,并创建一个通用的 isExist() 辅助函数。该函数接收通讯录指针和姓名参数,返回找到的索引位置;若未找到则返回 -1,这将在后续删除和修改操作中重复使用,以减少代码冗余。
第3步:实现添加 (add) 功能
在 addPerson 中,首先检查是否已满(person_size < MAX)。未满时引导用户依次输入信息,针对性别字段加入了 while(true) 循环校验输入合法性(仅接受 1 或 2),最终将数据写入数组并将 person_size 加 1。
第4步:实现显示 (display) 功能
showPerson 负责遍历 perArray,判断 person_size 是否为空后,逐条打印姓名、性别等字段信息。
第5步:实现删除 (delete) 功能
这是最核心的操作之一。调用 isExist 获取要删除人的索引 i。如果存在,利用 for 循环从 i+1 开始,将后面的人逐个赋给前面的人(即“搬移”数据),从而将最后一个人的信息覆盖掉被删除者的位置,随后将 person_size-- 完成删除操作。
第6步:实现查找 (find) 与修改 (modify) 功能
findPerson 复用查找逻辑,找到则直接输出对应下标的数据。
modifyPerson 同样先通过姓名定位到目标索引,然后进入更新流程,提示用户重新输入各项属性来覆盖原有内容。
第7步:实现清空 (clear) 功能
clearPersonAddress 增加了二次确认机制(要求输入“我同意”以防误触)。确认后,直接将 personSize 设为 0,即可在后续视图中表现为通讯录为空,达到清理目的。
第8步:整合 main 函数与交互循环
在 main 函数中实例化通讯录对象,初始化人数为 0。使用 while(true) 开启无限循环,每次读取用户的按键选择(switch-case),分发调用对应的功能函数。
int main()
{
struct addressbook address;
address.person_size = 0;
int userSelect = -1;
while (true)
{
showMenu();
cout << "请在下方输入您向选择的功能(输入下面数字即可)" << endl;
cin >> userSelect;
switch (userSelect)
{
case 1: addPerson(&address); break;
case 2: showPerson(address); break;
case 3: deletePerson(&address); break;
case 4: findPerson(&address); break;
case 5: modifyPerson(&address); break;
case 6: clearPersonAddress(&address); break;
case 0: cout << "退出系统成功,欢迎您下次使用!" << endl; return 0;
default: system("pause"); break;
}
}
}
3、运行结果参考
执行编译后的程序,您将看到控制台呈现清晰的文本菜单。按照提示输入数字键进行选择,系统将依次展示各个状态下的界面反馈,包括成功插入人员时的提示、清空前的警告等。
以上就是 C++实现通讯录管理系统项目的详细内容,更多关于 C++基础教程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









