C++通讯录管理系统实战:结构体与数组基础

雨后青山
雨后青山
发布时间:2026-10-15| 4人浏览过
原创

本文详解如何利用 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++基础教程的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。