目录
技术栈:c++ 指针&结构体
须知:
1.需要有一定的c++基础
2.需要知道github是什么
3.需要知道怎么从github上下载源码并运行
如果本文章对您有所帮助,麻烦您点赞、收藏加评论三连走起哦!
前言
最近,在学习的过程中。上手跟做了一个通讯录管理系统,后来自己又复现了一遍。加了一点自己的内容。完成这个项目之后,想把自己对于这个项目的理解和设计分享出来。供大家做个参考,也希望能对大家有所帮助!
项目需求
设计一个通讯录管理系统,主要实现以下功能:
- 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
- 显示联系人:显示通讯录中所有联系人的信息
- 删除联系人:按照姓名进行删除指定联系人
- 查找联系人:按照姓名查看指定联系人信息
- 修改联系人:按照姓名重新修改指定联系人
- 清空联系人:清空通讯录中所有信息
- 退出通讯录:退出当前通讯录
需求分析
整体分析
该项目的主要的功能就是使用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);
为什么是传址?
因为传地址调用更节省内存空间而且可以通过形参修饰实参。
函数设计
此处主要讲解主要的增删改查的函数,其余函数我会在源代码中给出。因为这个项目中最核心的部分就是对数据的增删改查。具体指针部分不做过多讲解,如果不理解基础的内容。