详解C语言之实现通讯录

时间:2022-06-01 18:37:15

基本思路和代码实现

为了代码清晰易读,我们创建一个Main.c源文件用来实现代码的基本逻辑。创建一个Contact.h源文件用于封装实现功能的函数,创建Contact.h头文件用于函数的声明。

首先就是构架代码基本框架,在主函数中实现打印菜单和循环的功能(这里为了好截图switch里的语句缩进得比较紧凑)

详解C语言之实现通讯录

基本逻辑实现后开始考虑创建通讯录,通讯录里会记录人的信息。所以要先能够描述人的信息:创建表达人的信息的结构体类型,在Contact.h中定义:

详解C语言之实现通讯录

而通讯录里记录的是多人的信息,所以创建通讯录实际上就是创建上述结构体的数组。这里需要思考一个问题,在之后实现函数的功能比如增删时,怎么才能得知从哪里增加或者在什么范围内查找并删除。这就需要用到一个能表达当前通讯录有多少个人的变量。而这个变量也能够用来描述通讯录,与其把他独立定义在主函数里不如创建一个通讯录的结构体,将其定义在里面。这样一来此变量的意义更加明确,也不用每次调用函数时都要额外传递他的参数,只需传结构体就行了。创建通讯录的结构体类型,在Contact.h中定义:

详解C语言之实现通讯录

创建完了之后接着进行通讯录初始化,封装一个初始化函数InitContact,再设计好其他函数名写在相应位置处:​​​​​​

详解C语言之实现通讯录

然后开始具体实现函数的功能。

初始化函数InitContact:

详解C语言之实现通讯录

增加函数AddContact:

详解C语言之实现通讯录

删除函数DelContact(这里封装了一个FindName函数,其功能是找到名字相同的结构体数组元素则返回其下标,未找到则返回-1):

详解C语言之实现通讯录

查找函数SeachContact:

详解C语言之实现通讯录

修改函数ModifyContact:

详解C语言之实现通讯录

打印函数ShowContact:

详解C语言之实现通讯录

FindName函数:

详解C语言之实现通讯录

SortContact排列函数可以有多种不同的排列方式,这可以由自己设计。还可用qsort函数加上自己的比较函数来实现更多类型的排列,这里就不实现此函数了。再做好函数声明引好头文件,到这里通讯录的实现就完成了。

 

其他探讨

在设计如名字和电话住址等数组的大小时,可以使用#define定义

详解C语言之实现通讯录

当之后需要修改这些数组的大小时,不用再去一个一个找到每个使用这些数组的地方进行修改,直接修改全局变量的值即可,非常方便。

在判断数字时,可以使用枚举常量将数字替换成有实际意义的词

详解C语言之实现通讯录

详解C语言之实现通讯录

有了枚举常量,即使代码过长,也不用在反复翻阅寻找数字所代表的意义,直接从词语含义上就能得知。增加了代码的可读性。

 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!

原文链接:https://blog.csdn.net/iEucliwood/article/details/121058644