使用链表设计一个小型通讯录程序
功能设计要求
1、建立文件
(1)如果原来没有文件,可以给输入的记录以固定文件名保存,也可不保存输入的记录;
(2)如果已经有文件,只能在其后追加;
(3)新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容。
2、文件的存取和显示
(1)可以单独存取文件;
(2)可以随时显示内存中记录的全部内容。
3、删除记录
(1)可以按“姓名”或“号码”方式删除记录并更新文件;
(2)能连续删除内存中的指定记录并输出成功删除记录的信息;
(3)如果已经是空表,删除时应给出提示信息并返回主菜单;
(4)如果没有要删除的信息,输出没有找到的信息并继续删除操作;
(5)删除操作仅限于内存,只有执行存记录时,才能覆盖原纪录;
(6)可以随时删除或增减新纪录,保存或取消新的记录;
(7)使用菜单实现增加、删除、显示和存取等功能的正确选择。
4、头文件
(1)定义ASK宏,用于申请动态内存。
程序函数
1、文件存储操作函数
函数原型:void save(ADDR *)
功能:将记录存入指定文件phonebook
参数:结构指针head
返回值:void
工作方式:从链表头部开始逐个存入文件
要求:报告是否有记录可存、是否能正常建立或打开文件,根据要求执行存入操作并报告存入记录的条数
2、文件读取操作函数
函数原型:ADDR *load(ADDR *)
功能:将文件sname里的记录取入内存
参数:结构指针head
返回值:返回结构指针head
工作方式:在内存里从head开始构造链表并返回head
要求:报告是否有记录可存、是否能正常打开文件及读取记录的条数
3、显示内存动态记录数据函数
函数原型:void display(ADDR *)
功能:显示内存里的记录
参数:结构指针head
返回值:返回结构指针head
工作方式:从头部开始逐个显示记录内容
要求:报告是否有记录及记录条数和内容
4、输入信息函数
函数原型:ADDR *add(ADDR *)
功能:添加新记录并将其存入指定文件phonebook
参数:结构指针head
返回值:返回结构指针head
工作方式:从尾部开始逐个追加记录
要求:报告文件phonebook是否已经存在,如果存在,则将其取入并将新纪录追加在记录尾部。如果还没有建立phonebook文件,则提醒用户在退出时不要忘记保存添加的记录
5、删除记录函数
函数原型:ADDR *del(ADDR *)
功能:删除内存链表中的指定结点
参数:结构指针head
返回值:返回结构指针head
工作方式:根据给定的关键字,查找符合的节点并删除
要求:给出相关信息
6、菜单处理函数
函数原型:void handleMenu(ADDR *)
功能:处理选择的菜单命令
参数:结构指针head
返回值:void
工作方式:根据命令,调用相应函数
要求:给出结束信息
7、菜单选择函数
函数原型:int menuSelect(void)
功能:接收用户选择的命令代码
参数:void
返回值:int
工作方式:返回命令代码的整数值
要求:只允许选择规定键,如果输入不合要求,则提醒用户重新输入
8、主函数
函数原型:void main(void)
功能:控制程序
参数:void
返回值:void
要求:管理菜单命令并完成初始化
9、头文件
文件名称:record.h
功能:声明函数原型,包含文件及自定义宏和数据结构
要求:报告是否能正常打开文件执行存入操作及存入记录的条数