栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】通讯录

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】通讯录

在我们学习了指针、结构体、动态内存管理、文件操作,这里我们可以做一个小项目来巩固所学的知识点——通讯录。

源代码链接:

【C语言】通讯录——源代码_Brant_zero的博客-CSDN博客

目录

一、通讯录中变量的创建

二、通讯录功能函数的实现

2.1 通讯录的初始化

2.2 添加联系人信息

2.3 扩容检查并扩容​

2.4 查找联系人

2.5 删除联系人

2.6 修改联系人信息

2.7 联系人排序

2.8 打印通讯录:

2.9 销毁通讯录:

2.10 保存通讯录信息

2.11 加载通讯录信息

三、主函数、菜单的实现


一、通讯录中变量的创建

为了实现这个通讯录,首先我们要创建一个结构体变量用来存放联系人的信息。为了方便后期调整,我们可以使用#define定义这些常量。

这时我们思考,我们创建的这个通讯录不可能只存放一个人的信息,所以我们可以创建一个结构体数组来存放多个人的数据,数组中每一个元素就是一个人的信息,即一个结构体变量。

与此同时,我们还需要知道当前通讯录存放了多少了人的信息,即(sz)——通讯录中已存放的个数。

这时我们可以再创建一个结构体变量将结构体数组和结构体大小(sz)放入其中,来更好的管理数据。

但是我们再想,我们根本不知道通讯录会存放多少人,每次直接开辟一个固定大小的结构体数组会十分尴尬:①数组开辟的太大,没有那么多人需要存放。②数组开辟的太小,程序放不下信息。

这时我们就要使用所学过的知识——动态内存开辟,定义一个max,表示当前数组开辟的大小,如果sz等于了max,表示当前开辟的空间不够了,我们就再开辟10个空间(这个空间可以随意)

接下来我们就可以创建一个通讯录Text_Contact。


二、通讯录功能函数的实现

2.1 通讯录的初始化

2.2 添加联系人信息

在录入信息之前我们要进行判断,判断当前sz是否等于Max,判断是否需要扩容 

2.3 扩容检查并扩容

2.4 查找联系人

2.5 删除联系人

删除联系人的前提是通讯录中有此人的信息,并且能找到该联系人在通讯录数组中的下标,所以我们在实现删除联系人之前要调用SEARCH_PeoInfo函数。

 

2.6 修改联系人信息

实现修改信息的作用也是要先找到此人的下标,所以我们可以再次调用我们的SEARCH_PeoInfo函数。

2.7 联系人排序

这里我们使用两种方式排序:1.年龄排序。2.首字母排序

这里我们可以使用qsort进行排序。

 qsort的使用主要就是compare函数的编写。

我们对通讯录进行排序,其实就是对通讯录数组进行排序,第一个参数我们将通讯录数组传入就可以了,数组名表示首元素的地址嘛。

第二个参数表示排序的数目,我们可以直接使用总结构体中的sz,存放了多少个数据就排序多少 个人。

第三个参数就是单个元素的大小,我们使用sizeof来计算一个元素的大小,即sizeof(p1->arr[0])

第四个参数,比较函数的书写。

按年龄排序

我们直数组中第r1个元素中的年龄与第r2个元素中年龄进行比较就可以了。

因为我们比较的是通讯录中的元素,所以要先进行强制类型转换,转为单个通讯录指针类型(PeoInfo*),然后使用成员访问操作符即可访问到成员的age。

按姓名排序

按姓名排序与上面的方法类似,只不过还要使用一层strcmp函数用来比较字符串的大小。代码如下,还是比较简单的。

2.8 打印通讯录:

2.9 销毁通讯录:

2.10 保存通讯录信息

2.11 加载通讯录信息


三、主函数、菜单的实现


希望大家能留下一个赞哦,你的三连就是我写博客的动力!!!

谢谢各位,我们下次再见。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号