C语言通讯录的实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、C语言通讯录实现的思想

要用C语言实现通讯录首先要思考通讯录都有什么样的功能,每个功能都要与之对应起来,比如我们需要先用do while循环完成菜单的打印和功能的选择,然后通讯录里每一个人都是一个结构体,整个通讯录又是一个结构体数组,完成这个通讯录我们需要实现的几个简单的功能有1.个人信息的添加2.删除一个人的信息3.查询一个人的信息4.修改一个人的信息5.打印这些人的信息并且排布整齐6.排序这些人,可以选择用名字排序或者用年龄排序。7.清空整个通讯录。当然,我们现在实现的通讯录一旦重新调用程序之前的信息就销毁了,所以后面还会有动态增加内存版本的通讯录以及可以直接存入文件的通讯录,后面这些都是由基础通讯录修改单得来。完成后如图:

C语言通讯录的实现_第1张图片

 

二、代码步骤

首先我们创建一个项目,然后将这个项目分为头文件  源文件 函数实现文件三个文件,然后我们在源文件中进行整个项目的大致步骤,首先在main函数里用do while循环实现先打印菜单在由输入值去控制相对应的功能,控制相对应的功能我们可以用if语句也可以用enum枚举类型还可以用switch函数,在这里我使用的switch函数。代码如下图所示:

C语言通讯录的实现_第2张图片


在这里需要讲解一下创建通讯录,刚刚我们说过,通讯录实际上是一个结构体数组,里面每一个都是一个结构体,那么创建数组之前我们肯定是先创建每一个人的结构体类型,那么人的信息有什么呢,人的信息有姓名,性别,年龄,地址,至于大家还想设计什么信息添加到结构体即可,而创建完人的结构体类型就可以创建通讯录类型了,通讯录里我们需要创建一个int类型来记录每次加一个人后的位置,比如添加一个人那么这个int类型的数+1指针指向的这个位置就是添加的那个人的位置,所以通讯录结构体里只需要一个代表人的结构体数组和一个整形变量,如下图所示:

C语言通讯录的实现_第3张图片

创建完通讯录结构体我们就需要初始化这个通讯录了,我们将通讯录里的各个元素初始化为0,初始化结构体数组最简单的办法就是用memset函数了,用memset函数记得引头文件string.h。下面是初始化结构体的图:

C语言通讯录的实现_第4张图片 

MAX_DATA是我宏定义的最大数组元素,用宏定义是为了方便修改该通讯录的值,比如姓名要用char类型数组那么都可以定义一个值以后修改的时候会更加方便,如下图:

C语言通讯录的实现_第5张图片

将数组初始化后我们就可以实现第一个功能添加一个人的信息了,要添加信息很简单只需要将对应的信息放在数组内对应的位置,这时候定义的int类型就起到了寻找位置的作用,在添加人之前首先要判断是否将通讯录加满,如果通讯录满了就退出当前功能让用户选取其他功能比如清空通讯录,添加用户的代码如下图所示:

C语言通讯录的实现_第6张图片 

实现完添加我们一点要让int类型sz加1这样才能找到下一个空位置。接下来我们实现删除功能,要删除我们可以让用户输入要删除的姓名或者年龄或者地址或者三者都需要输入,这里我们就实现的简单点通过名字去查找要删除的人就可以了,在这里我们要考虑此查找函数是否会重复使用 ,比如在寻找功能和修改功能中都需要先找到那个人名才能修改其信息。所以我们直接将查找写成一个函数供其他功能使用,此函数我们必须要设置返回值,因为要通过返回值得知此名字对应的位置,如果找到了相应的名字则返回相应的位置整形,如果找不到则返回-1,。找到后我们只需将从返回值开始的后面的元素往前放,将要删除的元素位置覆盖也就删除成功,如下图所示:

C语言通讯录的实现_第7张图片

在判断字符串是否相等的时候要用strcmp函数如果返回值为0则两个字符串相等。大家会发现有些函数里指针前面加了const,这是为了指针指向的内容不被修改,删除后一定要将位置变量减减这样才能正确记录通讯录里一个添加了几个人。 删除功能实现完我们就实现查找功能,此功能与删除大概相似只不过将删除的思想变成了打印这个人的信息,如下图所示:

C语言通讯录的实现_第8张图片

此功能打印的时候只需要将数组位置下标改为查找函数的返回值即可。下一步我们来实现修改功能,修改功能与查找不同的地方在于需要将返回的位置直接重新录入然后覆盖原来的信息来达到修改,如下图所示:

C语言通讯录的实现_第9张图片 

实现完修改函数就该实现打印函数了,打印函数只需要将通讯录里的元素遍历打印出来即可,需要注意的是一定要用printf函数的位宽和对齐符号来控制打印出来的内容,这样打印出来才会更加整齐。如下图所示:

C语言通讯录的实现_第10张图片 

下一步就是排序了,排序我们直接用qsort函数排序就可,不知道或者不会用qsort函数的可以看我以前的文章讲解了qsort函数的使用和模拟。直接放图:

C语言通讯录的实现_第11张图片 

需要注意的是排序大小一定是里面有多少个人就排序多少个人,切记不能传整个数组的大小,而单个要排序的元素大小则是一个人结构体类型大小。讲完排序我们最后就剩下清空了,清空通讯录很简单直接将通讯录重新初始化一下就行,记得将位置变量初始化为0即可。如下图所示:

C语言通讯录的实现_第12张图片 

此为基础通讯录的实现思想,下一篇我讲解一下如何将基础数组版修改为 动态增长版本,要学会动态增长版本要会C语言几个动态内存开辟 初始化 的函数。这些函数我将另写一篇博客重点讲解如何使用。

你可能感兴趣的:(C语言,c语言,开发语言)