底层顺序表➕具体化的针对通讯录的到位符合补充修改 —> 通讯录
收获
1.独出新文件上包含与补充的实现方式
不在底层顺序表里做符合补充修改来实现,在新的文件上通过文件包含取过来底层顺序表与在其新文件上做补充修改,这样做的针对性的补充修改不在底层顺序表上就不会破坏底层顺序表的通用性,只需要实现用底层顺序表来针对性补充修改来符合通讯录来实现通讯录,我们可以直接使用通用性的底层顺序表功能,这样在顺序表功能下要做的补充修改也更加明确,因为任务仅是完成能针对到的符合性修改,而不是在底层顺序表把顺序表修改成通讯录,那样就没有借助已有的顺序表功能来针对性实现了,那要已有的底层顺序表的通用性来干什么呢?
2.文件运行
程序运行时,所有的.c文件都会运行,.h文件通过执行到而运行,(.h文件通过在.c文件中有被包含,.c里运行到它时运行、.h文件在运行的头文件中有包含被执行也会运行)
3.声明
声明被运行时会在所有运行的文件中(源文件、也包括头文件)查找,声明一般集中放在头文件,但源文件同样可以声明,头文件里也可以不仅只有声明,有别的语句同样也行
.c文件之间联系必须靠声明,只有声明过的内容才可以从一个.c过到另一个.c文件
4.文件关系
运行时实现底层通用顺序表功能的my_SeaList.c和要结合底层顺序表功能加针对补充实现通讯录功能的my_Contact.c都会运行
- my_SeaList.c包含了my_SeaList.h有了顺序表功能函数的声明与顺序表结构体类型的定义,包含的my_SeaList.h里面同时包含有my_Contact.h头文件,里面包含有顺序表数组元素类型的定义,这样就完成了在原通用底层顺序表上的指向实现通讯录的那部分调整(顺序表底层功能都没有改,只是调整好了实现对象)
- my_Contact.c包含了my_SeaList.h,里面有底层顺序表实现功能的函数声明,有了这些声明运行时把实现顺序表底层功能的函数(放到my_SeaList.c里的)都贯到了,同时my_SeaList.h包含了my_Contact.h,也进行了顺序表数组元素对象向通讯录的调整,然后my_Contact.c自身完成了将底层顺序表功能与针对实现通讯录补充的结合的新功能函数的运行
然后程序运行起来后,通讯录的功能就都实现可用了
通讯录的实现
一、通讯录的创建
顺序表数组的元素类型设置为存放联系人信息的结构体类型时,顺序表存储的个个元素单位就成了个个联系人,整个顺序表就是通讯录
二、通讯录的初始化与销毁
通讯录的初始化和销毁可以直接用包含来的底层顺序表方法直接实现,这边通讯录的实现没有额外需要的针对性的补充修改
三、通讯录添加联系人元素
先单独收成顺序表元素的一个量后再对它就可以用底层顺序表方法了(我们这边实现的是默认尾插)
四、通讯录删除联系人元素
要删除通讯录里的某联系人,要用此联系人的姓名电话等信息去遍历得到改联系人元素的下标,因为使用底层顺序表的删除元素就需要元素的下标,多补充修改写的得对应联系人元素下标补充针对好后再结合包含来的已有的底层顺序表删除来实现:
FindByName:
用传来的输入的对应要删除的联系人姓名去遍历通讯录的个个联系人元素,对应他们的姓名,得要找的联系人元素的下标返回:
五、通讯录修改联系人元素信息
包含来的底层顺序表功能没有提供修改元素的一键功能,因为数组和顺序表都一样,已知下标后直接对它修改即可,相比数组顺序表没有可对此功能改进的地方,因为都是一键完成的,所以底层顺序表那边没有提供这一功能,我们也是直接修改即可
六、通讯录查找联系人元素
默认用名字来查找,当然如果要实现可自由选择多种的查找方法来查找也可以实现,这边默认用名字来查找:
七、通讯录展示所有联系人信息
八、通讯录数据的文件操作
1.通讯录历史数据载入
2.通讯录数据保存