一、产品描述
实现一个通讯录完整产品
功能:
1、添加一个人员
2、删除一个人员
3、查找一个人员
4、打印所有人员
5、保存文件
6、加载文件
二、需求分析
逻辑存储方式:看数据如何存储,用什么数据结构,
并实现对应数据结构的操作
物理存储格式:看文件数据存储的格式,实现读写文件,提取数据
用链表的方式对人员数据进行存储
文件数据存储的格式 name: xxx , phone: xxx
架构层次:支持层,接口层,服务层
1、支持层用来实现链表相关操作和文件的读写
2、接口层实现数据的解报和打包,基于链表操作实现add,del, search,traveral操作
3、业务层调用接口层API实现业务功能函数
接口层作用实现了支持层和业务层分离,这个中间层使得当支持层改变时,业务层不需要发生太大的变化。这是中间层的一大作用,有点和数据库里的三级模式相似哈哈~~
三、代码实现
代码此github链接,欢迎指正
https://github.com/ZSFsmile/contacts/blob/master/contacts.c
四、代码分析
人员对应一个person结构体,并且person结构体是一个链表节点,
支持层:宏函数实现API 包括LIST_INSERT,LIST_REMOVE
接口层:实现person_insert(); person_delete(); person_search(); person_search(); save_file(); parser_token(); load_file();
业务层:实现功能insert_entry(); print_entry(); delete_entry(); search_entry(); save_entry(); load_entry();
代码中出现的文件操作函数也值得学习
fopen();fprintf();fflush();fclose();feof();fgets();fseek();fread();fwrite();ftell()