1.总思想:制作三个文件text.c、contact.c、contact.h分别用来放置主程序逻辑,每个函数功能的实现以及头文件的声明
2.text.c的实现:用传统的do while循环来答应菜单的形式0退出程序,非零可以重复进入程序,这个功能也可以使用转移表函数指针数组的形式来实现,后面可以尝试一下
3.contact.c的实现
(1).该函数包括增加,删除,找到。替换,修改,显示功能罗列出框架
(2).我们使用结构体变量来存放通讯录的信息,结构体变量中应该存在两个元素,一个是存放信息的元素,另外一个用来存放通讯录中含有的信息的个数,存放信息的元素又可以使用一个结构。类型体变量
(3).InitContact函数,传递地址。首先应该初始化,初始化也就是给结构体变量初始化为0,也就是吧count和另外一个结构体初始化为0,可以使用memset函数来对结构体类型变量初始化
(4).AddContact函数的实现,也就是录入数据信息用scanf函数给他们一个一个录入。增加的过程中需要进行一个判断,如果通讯录是满的,那么就无法增加。注意录入一个信息count记录数量的变量加加一次。
(5).ShowContact函数其实就是打印函数,可以使用for循环来逐个打印结结构体变量,中间可以使用%ns %nd这种方式是的排版更好看。
(6).DelContact函数首先分为两步。想要删除首先的查找,如果存在则可以删除,如果不存在就不能删除,可以写一个FindName函数来进行查找如果找到则返回下标,如果没找到就返回-1(可以自己设计),第二种情况,入如果通讯录为空也不能进行删除,删除操作就是把后面的变量依次赋值给前面的变量(从要删除的该变量起),最后count减减,即删除成功。
(7).ShowContact函数,他是利用上面的FindName函数,如果找到了则打印它,如果没找到则进行说明。
(8).ModContact函数分为两步,首先查找,找不到则无法修改,找到了则进行修改,所谓修改就是重新赋值
(9).sortcontact函数也就是排序函数可以参考之前的qsort排序使用qsort函数进行排序
Tips:1.qsort(地址,元素个数,元素所占字节数,cmp自定义排序函数名(也就是函数地址))
qsort默认是升序,在qsort默认的情况下,cmp函数要求大于返回值大于0,则前面大于后面,相等返回0,前面小于后面返回小于0的数字
2.FindaName函数主要是遍历用strcmp函数来进行比较
scanf("%s",name); 在%s后面不能随便加上\n,\n相当于自己多了一个换行