一、通讯录的介绍:
1.通讯录的内容:
1.保存联系人的信息
2.记录通讯中已经保存的联系人个数
3.记录通讯录当前的最大容量
2.通讯录的功能:
1.增加联系人
2.删除联系人
3.修改联系人
4.查找联系人
5.打印联系人
6.排序联系人
3.通讯录中联系人的信息:
姓名 性别 年龄 电话 地址
二、通讯录的创建:
通讯录由3个文件实现,分别是 contact.h、contact.c、test.c
(一)、在contact.h文件中
1.将4个头文件放在contact.h中,包括<stdio.h>、<string.h>、<assert.h>、<stdlib.h>。
2.定义所需要的全局变量,包括NAME_MAX、SEX_MAX、TELE_MAX、ADDR_MAX等等。
3.为了增加代码的可读性和可维护性,使用枚举,对命名进行封装,防止污染。
4.创建结构体,用来存放联系人的信息类型
5.创建嵌套结构体,用来存放联系人的信息。为了节省内存空间,用动态方式开辟内存。
6. 进行相应的函数的声明
(二)、在contact.c文件中
1.首先引用contact.h头文件,再执行下面的函数操作。
2.用InitContact()函数,初始化通讯录中联系人的信息。用assert()函数避免空指针,将sz(人数)和capacity(容量)进行初始化。为了节省内存空间,用malloc()函数开辟动态内存。如果开辟内存失败,则用pepper()函数进行报错。如果开辟内存成功,则用memset()函数将data进行初始化。
3.用AddContact()函数,增加通讯录中联系人的信息。用assert()函数避免空指针。如果容量满了,则用CheckCapacity()函数进行扩容。如果容量未满,就依次录入联系人的信息。
补充:CheckCapacity()函数用来对内存进行扩容。当人数达到容量时,则用realloc()函数开辟内存。如果开辟内存失败,则用pepper()函数进行报错。
4.用PrintContact()函数,打印通讯录中联系人的信息。用assert()函数避免空指针。用for循环对联系人的信息依次进行打印。
5.用DelContact()函数,删除通讯录中指定联系人的信息。用assert()函数避免空指针。如果sz(人数)为0,则删除失败。先输入要删除的人的姓名,再用FindByName()函数找到这个人位置,然后用for循环进行删除。
补充:FindByName()函数用来找到删除人的位置。首先对data进行for循环,再用strcmp进行比较,如果相同就意味着找到了,然后返回下标。若未找到则返回 -1 。
6.用SearchContact()函数,查找通讯录中指定联系人的信息。用assert()函数避免空指针。 用FindByName()函数寻找要查找的人的位置,若能找到,则将下标存储在pos中,并在printf()函数中进行打印。
7.用ModifyContact()函数,修改通讯录中指定联系人的信息。先输入要修改的人的姓名,再用FindByName()函数找到这个人位置,然后输入要修改的人的信息,接着进行修改。
8.用SortContact()函数,排序通讯录中联系人的信息。输入要排序的内容,对内容进行判断,然后用冒泡排序法进行排序。
9.用DestroyContact()函数,销毁通讯录中所有联系人的信息。用free()函数对data开辟的内存进行回收,并将data置成空指针。再将capacity和sz设置成 0,就销毁成功了。
(三)、在test.c文件中
1.首先引用contact.h头文件,再执行下面的函数操作。
2.创建menu()函数,用来生成通讯录的功能菜单。
3.创建test()函数,在test()函数中按顺序对通讯录进行相应功能的操作。先创建通讯录,再初始化通讯录的信息,接着进入do while循环,打印功能菜单,输入信息,用switch语句判断你要执行的功能。
4.创建主函数。