C++ | 通讯录管理系统

本文介绍了使用C++开发一个通讯录管理系统的过程,包括需求分析、设计思路和关键函数的实现,如添加、查询、删除、修改和清空联系人等功能。通过结构体和指针管理数据,并提供源码地址供读者参考学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

 项目需求

需求分析

整体分析

设计思路

数据类型

实现框架

函数设计

增加函数addPerson()

设计思路

函数实现

查询函数ifExit()

设计思路

函数实现

删除函数deletePerson()

设计思路

函数实现

修改函数modifyPerson()

设计思路

函数实现

查找函数findPerson()

设计思路

函数实现

清空函数

设计思路

函数实现

源码地址

结语


技术栈:c++ 指针&结构体

须知:

1.需要有一定的c++基础

2.需要知道github是什么

3.需要知道怎么从github上下载源码并运行

如果本文章对您有所帮助,麻烦您点赞、收藏加评论三连走起哦!

前言

  最近,在学习的过程中。上手跟做了一个通讯录管理系统,后来自己又复现了一遍。加了一点自己的内容。完成这个项目之后,想把自己对于这个项目的理解和设计分享出来。供大家做个参考,也希望能对大家有所帮助!

 项目需求

  设计一个通讯录管理系统,主要实现以下功能:

  1. 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000
  2. 显示联系人:显示通讯录中所有联系人的信息
  3. 删除联系人:按照姓名进行删除指定联系人
  4. 查找联系人:按照姓名查看指定联系人信息
  5. 修改联系人:按照姓名重新修改指定联系人
  6. 清空联系人:清空通讯录中所有信息
  7. 退出通讯录:退出当前通讯录

需求分析

整体分析

  该项目的主要的功能就是使用c++实现对数据简单的增删改查,还有基础的输入与输出功能即可完成该项目的功能需求。

设计思路

数据类型

  首先,需要保存数据。不能通过单个的int、string这样的数据类型。操作太过繁杂且不好管理。所以就需要使用到结构体来保存。由于通讯录和联系人直接时包含关系,所以只需要在使用系统的时候就新建一个通讯录的结构体,然后在通讯录结构体内再定义一个新的结构体数据,用于保存联系人的信息和一个整型变量存储通讯录的人数。如下图所示:

  另外,项目还要求该通讯录限制联系人个数为1000。那么,联系人结构体数组的长度就已知了。之后也不需要改变长度。就直接在源码头部定义一个宏常量MAX_SIZE来代替总人数,方便后续维护。通过以上的两步,就可以先初步设计出我们所需要的数据类型了。代码部分如下所示:

#define MAX_SIZE 1000 //设置最大人数

// 定义联系人结构体
struct people {
    string name;//姓名
    string sex;//性别
    int age;//年龄
    string telephoneNumber;//联系电话
    string address;//家庭住宅
};

// 定义通讯录结构体
struct addressBook {
    int id;// 联系人编号
    people peopleArray[MAX_SIZE];// 联系人数组
};

实现框架

  选择完所需要数据类型,就可以进行对自己代码的整体框架进行一个设计。首先,主函数部分我们通过一个 while 循环和 switch 语句分别进行不同功能的实现。其中,修改函数的部分我们同样可以参照主函数使用一个二级菜单界面让用户选择。其它的函数只需要实现对应的功能并完成封装和调用即可。大概的逻辑示意图如下所示:

 根据示意图,自定义函数名。就完成了一个大概的需求分析。

//显示界面函数
void showMenu();

// 增加函数
void addPerson(addressBook *p);

// 显示函数
// 只读不写 加const防止误操作
void showPerson(const addressBook *p);

// 查找函数
int ifExit(addressBook *p,string name);

// 删除函数
void deletePerson(addressBook *p);

// 查找函数
void findPerson(addressBook *p);

// 修改联系人
void modifyPerson(addressBook *p);

// 修改的界面显示函数
void showSmallMenu();

// 清空通讯录
void cleanAll(addressBook *p);

为什么是传址?

因为传地址调用更节省内存空间而且可以通过形参修饰实参。

函数设计

  此处主要讲解主要的增删改查的函数,其余函数我会在源代码中给出。因为这个项目中最核心的部分就是对数据的增删改查。具体指针部分不做过多讲解,如果不理解基础的内容。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

valiant小东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值