数据结构之顺序表的应用----------通讯录

本文介绍了如何在C++中基于顺序表实现通讯录,包括通讯录的初始化、增加、删除、查找修改数据以及数据的保存和销毁。通过前置声明和文件操作技术,展示了通讯录项目的完整实现过程。
摘要由CSDN通过智能技术生成

一、什么是通讯录

        上文我们讲过顺序表底层是数组,而通讯录项目又是基于顺序表得以实现,那么本篇我们主要讲通讯录是如何实现的。

        通讯录在我们日常生活中是必不可少的,其功能主要是对联系人数据的存储,添加,删除,修改和查找(昨天我们已经实现了顺序表的增删查改)。

        下面我们进行通讯录的实现。

二、通讯录的初始化

        由于通讯录是在顺序表的基础上实现的,故我们因包含各自的头文件。但是头文件不能相互包含,因此我们引出一个定义:前置声明。

        前置声明是C++中的一种技术,目的是为了告诉编译器某个实体的存在,以便在稍后的代码中引用它,而不必在声明的地方提供完整的定义,这样有利于提高编译速度并且减少代码的依赖性。

        我们仍然需要使用typedef重定义一个结构体名称PerInfo(PersonInformation),给定联系人的相关信息:姓名(name),性别(gender),年龄(age),电话(tel)和住址(addr)。创建5个数组存放相关信息,用#define预处理指令指定每个数组空间的大小(方便后续的修改)。创建通讯录变量Contact con(此处con就是顺序表中的sl)。

        补充:age的类型是整形。

三、通讯录功能的实现

1.增加数据

        以下通讯录所有功能的实现都借于顺序表函数。

        这里我们创建通讯录变量PerInfo info,打印提示信息。需要注意的是age是整形,scanf时要加取地址(&)符号。

2.删除数据

        定义一个新联系人姓名char name[NAME_MAX];

        在删除数据时我们需要创建一个查找函数(这里我们通过名字来查找)FindByName(),然后通过循环遍历原数组姓名。用strcmp判断两字符串name是否相等(结果返回0)。找到了返回一个>0的数(这里我们返回原数组姓名下标),否则返回一个<0的数(无效的数 -1(下标>0))。

3.查找修改数据

        和删除数据类似同样需要调用FindByName()函数,这里不再做过多解释。

4.销毁及保存数据

        我们肯定不想每次添加联系人都从头开始,这里我们借用文件操作的知识来创建一个ContactSave()函数来保存数据。

        创建FILE*的指针pf保存文件地址。调用fopen函数以二进制"wb"形式写入"contact.txt"文件当中,再判断pf的有效性。而后通过循环调用fwrite函数将联系人信息保存到文件当中即可。

        最后进行通讯录销毁操作。

        上述所使用的文件操作函数及参数可在CPlusPlus官网查询。

        cplusplus.com

四、通讯录菜单打印

        各位先尝试自己来写,这部分会在后续讲到。

        有兴趣可以自己实现一个测试函数。

        建议大家每完成一个功能就进行测试,这样有利于减少程序后续错误并且节省时间,是一个良好的编程习惯。

        到此为止顺序表及应用以全部完成,感谢各位铁铁耐心看完,创作不易,多谢各位点赞和关注了。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值