据统计自2010年至今养宠物的人员越来越多,宠物诊所每天的顾客流量也越来越大,传统的宠物诊所保存顾客信息的方式为用纸笔保存顾客信息,但面临越来越多的顾客,这种保存顾客信息的方式在保存和查询信息方面越来越繁杂,会给诊所带来不便。
因此为了大幅度方便宠物诊所对顾客信息的保存和查询,本次设计了宠物诊所管理系统。店家可通过该管理系统快速对顾客的信息作出增删改查的操作,并且顾客信息也会同步保存在文件之中。
2.程序所能达到的功能(1)用户可以通过键盘输入顾客名字为关键字建表。
(2)从键盘输入要插入的的记录,以链地址法来解决冲突。
(3)用户通过输入顾客名字查找,可以给出该顾客的所有信息。
(4)展示表中所有的顾客信息。
(5)通过顾客姓名删除管理系统中的顾客信息
(6)通过顾客姓名修改管理系统中的顾客信息
(7)将我们管理系统中所有的顾客详细信心保存到文件中
(8)将文件中保存的顾客信息加载到Hash表
(9)销毁保存顾客信息的文件
本系统旨在通过建立哈希表实现顾客信息录入、查询顾客、展示所有顾客信息等功能,帮助用户方便地处理顾客信息。
简单思路:
图 1 概要总体设计
图 2 概要功能设计
将每个顾客的信息作为一条记录,包括顾客名,电话号码,宠物类型,日期,然后哈希表由记录数组、表中现存量、表容量组成,具体数据类型见下:
图 3 hash表存储结构
图 4 枚举类型
FOPEN_ERROR:代表文件打开失败。
UPDATEFALSE:代表数据更新失败。
DELETEFALSE:代表数据删除失败。
HASHNOEXIST:代表未找到hash表。
DATAEXIST:代表数据已经存在。
MALERR:代表通过malloc创建空间失败。
OK:代表功能正常执行。
功能:通过菜单函数,显示可进行的操作,提示用户输入对应的操作数进入对应的功能其中,所有操作数所对应的功能如下:
1——插入顾客数据功能。
2——显示所有顾客信息功能。
3——删除指定顾客信息功能。
4——更新指定顾客信息功能。
5——查找指定顾客信息功能。
6——将所有顾客信息保存在文件中。
7——读取信息文件,加载文件中所有的顾客信息。
-1——退出系统。
参数:无
返回值:无
代码实现:
图 5 菜单函数
功能:输入字符串,获得其在hash表的所在位置。
参数:1.代表顾客姓名的字符串
返回值:该字符串在hash表的所在位置。
代码实现:
图 6 hash函数
功能:创建一个hash表并进行初始化。
参数:1.hash的大小
返回值:返回hash表的首地址
代码实现:
图 7 创建hash表函数
功能:用户输入要查找的姓名,通过hash存储获得姓名的hash值,然后进入hash表进行查询,若查询成功,则显示该顾客的所有信息。
参数:1.hash表的首地址 2.您要查找的姓名
返回值:返回结点的首地址 失败返回NULL
代码实现:
图 8 查询数据函数
功能:向系统中插入顾客信息,用户输入顾客的姓名,电话,宠物类型,日期,通过hash存储方式将该信息作为一个节点存储在hash表中,如果系统中已经有该顾客的信息,则显示该顾客已存在
参数:1.hash表的首地址 参数2:要插入的数据
返回值:int 成功返回OK,失败返回失败原因
代码实现:
图 9 插入数据函数
功能:通过遍历hash表中的每一个节点,将每一个节点的数据域(顾客所有信息)打印出来。
参数:1.hash表首地址 2.hash表长
返回值:int 成功返回OK,失败返回失败原因。
代码实现:
图 10 显示数据函数
功能:用户输入需要删除的顾客姓名,若找到则将该顾客所在的节点在hash表内删除,然后将被删除的顾客信息保存并输出。
参数:1.hash表的首地址 2.你要删除的顾客姓名 3.保存被删除的顾客信息
返回值:int 成功返回OK,失败返回失败原因
代码实现:
图 11 删除数据函数
功能:用户输入顾客姓名,在hash表内查找对应的结点,先显示顾客原来的所有信息,再提示用户输入新的信息,在用户输入完新的顾客信息后(顾客电话,宠物类型,日期)保存在原来的hash表内节点中。
参数:1.hash表的首地址 2.用于查询的顾客姓名 3.新的顾客信息
返回值:int 成功返回OK,失败返回失败原因
代码实现:
图 12 更新数据函数
功能:通过循环遍历hash表内的所有节点,将里面的数据域(顾客所有信息)一一保存在一个文件中。
参数:1.hash表的首地址 2.hash表长
返回值:int 成功返回OK,失败返回失败原因
代码实现:
图 13 保存数据函数
功能:从信息文件中,循环读取所有的顾客所有信息直到文件末尾,将每一次读取到的顾客信息插入到hash表中,直到所有顾客信息插入完毕。
参数:1.hash表的首地址
返回值:int 成功返回OK,失败返回失败原因
代码实现:
图 14读取数据函数
代码实现:
图 15-1 main.c
图 15-2 main.c
测试插入顾客信息并查询,输入1,输入 feng 1566666666 jinmao 2022/2/2,并输入5查询feng顾客的信息,显示顾客姓名:feng,顾客电话:156666666,宠物类型:jinmao,日期:2022/2/2,结果正确。
测试插入姓名相同的数据,输入1,输入feng 199999999 haha 2077/7/7,显示表中已经存在该顾客的数据,插入失败,结果正确。
图 16测试插入
测试保存文件信息并读取,输入6,显示保存成功,结果正确,退出系统,再次进入输入7,显示读取成功,结果正确,输入2,显示所有的顾客信息,结果正确
图 17-1测试保存读取
图 17-2测试保存读取
测试销毁文件,输入8,数据文件被删除,结果正确
图 18-1测试销毁
图 18-2测试销毁
图 18-3测试销毁
图 19-1运行结果
图 19-2运行结果
图 19-3运行结果
图 19-4运行结果
本系统未实现排序功能,比如hash表实现从a到z姓名的大小依次进行排序,但因为排序会进行很复杂的插入删除操作,需要考虑到的因素十分的多,因此排序功能未能实现,未来若能力以及技术达到实现的要求,将进行hash表排序的实现。
相关知识
一种面向嵌入式平台的宠物睡眠识别方法
智能宠物喂食器方案开发 18
北美宠物险市场报告发布:保费规模超35亿美元,嵌入式健康宠物保险最受欢迎
app产品开发奖励案例
中国科学院动物研究所鸟类行为功能与进化研究组2021年招聘博士后
「上海阿猫阿狗宠物招聘信息」
如何开发宠物社交APP软件? app开发
「重庆德宠宠物俱乐部招聘信息」
「洛阳刘欢欢宠物店招聘信息」
「北京六加壹宠物科技招聘信息」
网址: 嵌入式开发 https://m.mcbbbk.com/newsview91412.html
上一篇: 生物学家正在研究“宠物翻译器”, |
下一篇: AI智能语音宠物语言识别APP下 |