目 录
摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 Ajax 3
1.2 MVC设计模式 3
1.3 BootStrap 3
1.4 SSM框架 4
1.5 本章小结 4
2 系统分析 5
2.1 需求分析 5
2.1.1 用户需求分析 5
2.1.2 医生需求分析 6
2.1.3 管理员需求分析 7
2.2 用例分析 8
2.3 非功能需求 10
2.4 本章小结 10
3 系统设计 11
3.1 系统总体设计 11
3.1.1 体系结构设计 11
3.1.2 功能结构设计 12
3.2 系统详细设计 15
3.3 本章小结 22
4 系统实现 23
4.1 开发环境 23
4.2 系统设计实现 23
4.2.1 数据库实现 23
4.2.2 设计实现 24
4.3 本章小结 28
5 系统测试 29
5.1 测试计划 29
5.2 测试结果 29
5.2.1 单元测试 29
5.2.2 压力测试 30
5.3 本章小结 32
结 论 33
致 谢 34
参考文献 35
摘 要
随着我国社会经济的发展,城市化进程的加快,饲养宠物开始受到越来越多居民的喜爱,直接加快了宠物医疗行业的发展。由此带来的宠物医疗问题也日益增多。在这种情况下,传统的宠物医疗服务已经无法满足市场的客观需求。针对现在宠物市场的现状和医疗服务的问题,本文开发了基于SSM框架的动物医疗平台。
通过对动物医疗平台业务流程的调研,并且充分考虑到未来行业的发展趋势,本文运用SSM框架技术,系统框架采用B/S体系架构,后台数据库采用MySQL数据库,应用服务器采用idea开发实现了动物医疗平台。所设计开发的动物医疗平台包含管理员,用户,医生等三大模块。本平台的突出之处在于,平台提供全国各地的宠物医院和宠物医生,用户可以通过此平台进行预订。通过使用本文平台进行预订动物医疗服务,可大大提高业务的操作性和实用性。它具有操作方便、简单等优点,大大降低了运营成本,提高了宠物医疗市场的透明度。
本平台采用SSM框架技术,平台具有可操作性、便捷性和易用性的特点。该技术使平台具有良好的跨平台性和较强的可扩展性。经过具体的编码和系统测试,动物医疗平台的所有模块都已成功实现并投入使用。实际应用表明,本文设计的B/S系统总体运行稳定,能够满足动物医疗方面的需要。
关键词:SSM框架; B/S架构; 动物医疗平台; 市场的透明度
Abstract
With the development of China’s social economy and the acceleration of urbanization, more and more residents begin to keep pets, which directly accelerates the development of the pet medical industry. Medical problems for pets are also on the rise. In this case, traditional pet medical services have been unable to meet the objective needs of the market. Aiming at the current situation of the pet market and the problems of medical services, this paper develops an animal medical platform based on SSM framework.
Based on the investigation of the business process of animal medical platform, and fully considering the development trend of the industry in the future, this paper adopts SSM framework technology, B/S system architecture is adopted as the system framework, MySQL database is adopted as the background database, and idea is adopted as the application server to develop and realize the animal medical platform. The animal medical platform includes three modules: administrator, user and doctor. What stands out about this platform is that it provides pet hospitals and pet doctors all over the country, and users can book through this platform. Through the use of this platform to book animal medical services, can greatly improve the operational and practical business. It has the advantages of easy operation and simplicity, greatly reducing the operating cost and improving the transparency of the pet medical market.
This platform adopts SSM framework technology, which is characterized by operability, convenience and ease of use. This technology makes the system have good cross-platform and strong expansibility. After specific coding and system testing, all the modules of the animal medical system have been successfully implemented and put into use. The practical application shows that the B/S system designed in this paper runs stably on the whole and can meet the needs of animal medical treatment.
Keywords: SSM framework; B/S architecture; Animal medical system; Market transparency
引 言
从古至今,人类与动物以及大自然都是相辅相成的。动物是人类生存环境的一个组成部分,是维持人类生存的基础。离开了动物人类不能生存。随着我国社会经济的发展,城市化进程不断加速。城市生活的封闭性、个性化和人口老龄化等问题不断凸显出来。饲养宠物成为了广大居民生活的一部分,宠物产业的发展速度越来越快[1]。随之而来,各种宠物诊疗机构如雨后春笋般因运而生。由此带来的宠物医疗问题也日益增多。面对如今宠物市场供不应求的现状以及医疗服务诸多问题,所以打造一个"宠物医疗"平台具有较好的应用前景。
在国内,宠物医疗行业的发展正处在非常火热的状态。但该行业的线下服务存在着很多的问题。一方面由于信息的不透明,导致养宠人士看病不方便,因为国内宠物医院90% 都是中小个体宠物诊所,线下宠物医院的收费普遍较贵,存在乱收费的现象。许多宠物医院挂号和药品销售价格都是医生定价,没有明码标价,许多项目医疗费用都极其昂贵。此外,宠物医院销售的宠物用品和药品的价格也远高于宠物店销售的用品、药品等。另一方面是优秀的宠物医生和宠物医院缺乏高效的宣传推广渠道,虽然拥有较好的医术和业绩,但却有很少的养宠人士知道这样的信息。
国外的宠物医院制度较为成熟。和国内不同的是国外的宠物医院大致分为两大部分,一部分是医疗,另一部分是负责给宠物美容、训练和寄养。它们拥有比国内更高超的医疗技术,医生和医院都很专业。但是在进行医疗和护理时,会需要一些贵重的医疗器械。这样以来,给宠物看病的价钱也就上涨了不少。对于普通家庭的人士来说,昂贵的医疗费显然是无法承担的。所以在国外,还需要通过降低医疗成本来解决宠物看病难的问题[2]。
通过国内外的调研情况来看,不管是在国内还是国外,宠物医疗行业都还存在着大大小小的问题。随着互联网时代的到来,线上服务也越来越流行。在这种情况下,动物医疗平台的发行必定会受到国内外养宠人士的喜爱。通过该平台宠物医生可以推广自己和自己的医院,使信息变得透明化。用户通过平台可以了解到医生和医院的信息,并且可以提前预订医生。可以完美解决宠物医疗行业现有的问题。因此该平台的发行必定引起一波热潮。
本文的主要内容是对动物医疗平台进行诠释,并从相关技术、系统分析、系统设计、系统实现、系统测试等方面对动物医疗平台的设计进行全面展示。本系统主要有三个模块的功能。它们分别是用户模块、动物医生模块和管理员模块[3]。
本文第1章主要介绍动物医疗平台设计中的MVC主体设计模式,采用的SSM框架,连接的MySQL数据库以及Tomcat应用服务器。第2章主要介绍动物医疗平台的需求分析,包括动物医疗平台功能需求分析、动物医疗平台的用例分析和动物医疗平台的非功能需求分析。第3章主要介绍动物医疗平台的系统设计,包括动物医疗平台的总体设计和详细设计。动物医疗平台的设计以系统的数据流图、平台的功能结构图、平台的E-R图、表的关系视图和核心功能描述为中心进行描述。第4章主要介绍动物医疗平台的开发环境以及功能模块的实现。包括软件环境和硬件环境、平台功能实现效果截图和实现功能的核心代码。第5章主要介绍动物医疗平台测试所使用的测试工具,测试过程和测试结果,测试过程主要对平台功能进行单元测试和压力测试。
1 相关技术
动物医疗平台使用idea作为开发工具。该平台的后端模块使用的是SSM框架技术,前端模块使用Bootstrap和Ajax技术。服务器选用的是目前最新版本的Tomcat 9.0,数据库使用的是一个小型的轻量级数据库MySQL数据库。动物医疗平台采用的设计模式是MVC设计模式[4]。
1.1 Ajax
Ajax是一种异步刷新页面并且基于JavaScript和XML的技术。它结合了很多种的传统技术,是一种使用现有标准的新方法。该技术最大的优点是与服务器交换数据时,在不重新加载整个页面的情况下可以更新局部页面的内容。该技术的原理就是在客户端和服务器之间假设出了一个Ajax层[5],用户发送指令之后,对服务器端和网页端进行分批次调动,从而提升了网页的响应速度[6]。XmlHttpRequest是Ajax的核心,它保证了服务器和客户端的缓存数据交换的能力,服务器返回数据后用户无需频繁刷新整个网页,就能够更新网页的局部。
1.2 MVC设计模式
MVC是一种设计模式,是Model、View和Controller的缩写。其中Model层是一个抽象的对象模型[7],该层主要负责代码的业务逻辑,里面不仅封装了数据也封装了对数据的操作,是实际进行数据处理的地方,也可以叫做业务逻辑层。View层是负责将应用渲染并显示给用户,也就是常说的前端页面,系统里主要通过JSP层来体现。Controller层是控制器,主要负责视图和模型之间的交互[8],也就是web中的Servlet层,SpringMVC框架将该层的控制器替换成Controller控制器,主要负责两方面的工作,第一个方面就是接收用户的请求,并将该请求分发到相应的模型上,第二个方面是将后台处理过得数据再及时地反映到前端视图上。该平台为什么要选择MVC设计模式?因为它具有以下独特的优点:该设计模式大大降低了程序代码的耦合性,提高了代码重用,并且这种设计模式简化了开发和维护用户接口的技术含量,有效的缩短了整个系统的开发时间。该设计模式可以使平台更容易维护和修改,提高了系统的可维护性[9]。
1.3 BootStrap
BootStrap 框架是目前非常受欢迎的前端开发框架,它使页面显得直观、简洁,功能十分的强悍。它主要包含 HTML、CSS 和 JS的 基础框架,具有优秀的响应式布局,可以兼容现代所有的浏览器,无论在台式机、平板设备还是手机上都可以获得最佳的体验[10]。使用该框架可以加快项目的开发速度,提升系统开发的效率。该框架提供了一套响应式的栅格系统。不管用户如何调整页面的尺寸,该框架都可以将页面按照合适的尺寸展现出来。
1.4 SSM框架
SSM框架是Spring,SpringMVC和MyBatis三个技术的简称,里面封装了已经写好的规则和代码,帮助开发人员实现了很多的基础功能。其中MyBatis是一个支持高级映射的持久层框架。传统的SQL语句写在数据访问层,不利于统一管理和优化。MyBatis框架通过在XML文件中编写SQL语句,解除了SQL语句和程序代码之间的耦合。在进行查询,添加,删除,修改操作时,有很多冗余的SQL语句冗余,该框架提供了xml标签,支持编写动态SQL,极大方便了开发工作[11]。Spring是apche开发的一种轻型开源框架,它没有替代某个层,而是对所有的层都进行管理。该框架有两个核心分别是IOC和AOP。其中IOC将类放到工厂里面进行管理,开发时变得方便解耦,大大简化了开发工作[12]。AOP是Spring的另一个核心,是为类提供动态代理类,当相应的类加上动态代理类之后,很容易实现事务,日志和权限的控制。SpringMVC使用了MVC设计思想的轻量级框架,它拥有单例的controller控制器,可以对web层解耦合,它还可以与Spring框架无缝集成,使开发变的简单,易操作[13]。
1.5 本章小结
本章主要介绍了动物医疗平台开发中涉及到的关键技术,说明开发用到的环境,包括idea开发工具、MySQL数据库、Tomcat服务器。详细介绍了开发用到的相关技术,包括MVC设计模式、Bootstrap前端框架、Ajax技术以及SSM框架技术。
2 系统分析
本章从功能需求,用例分析,非功能需求三个方面来介绍该动物医疗平台的需求分析和系统设计思路。通过社会调研,国内外现状分析平台的应有的功能需求,通过用例图说明该平台角色应有的用例,并通过文字说明详细介绍了平台的非功能需求。
2.1 需求分析
在以前,宠物的价值还没有提升,大多数养宠人士都没有去医院给宠物看病的习惯。如果家里或者朋友有懂医术的,就随便应付一下[14]。如果没有,最多也就是去附近的兽医店就医。随着社会生活水平的提高,越来越多的人开始有了宠物寄养,宠物医疗,宠物美容一系列的消费需求[15]。因此根据现在的社会趋势,对动物医疗平台的发展来说,是个很好的机会。
通过调研国内和国外的现状,都没有一个比较成熟的平台供用户使用。在国内,根据数据统计,未来的几年里,养宠人数必定呈剧增的趋势[16]。随着互联网时代的来临,各种行业开始通过网上平台进行服务。但是目前还没有以动物医疗为主题的平台[17]。在国外,虽然互联网的发展比国内发达,在市场上的动物医疗平台也出现了不少,但是国外的平台没有涉及到医疗知识和动物商品等方面。面对现在的市场需求,现有平台的内容显得不够丰富,模块不够全面,功能不够健全。总之没有一个很成熟的平台[18]。
为了解决动物医疗行业现存在的问题,推动动物医疗行业的发展,为了满足现在用户所必需的服务要求,使该平台的发行能够赢得更多用户的信赖和支持[19]。因此该平台设计分为三个角色,分别是用户角色,医生角色,管理员角色。根据分析每个角色都应该具有不同的权限和功能。用户具有了22个功能需求,医生具有13个功能需求,管理员具有16个功能需求。下面分别对三个角色的功能需求进行详细的介绍。
2.1.1 用户需求分析
(1) 用户登录:用户名、密码;
(2) 用户退出登录;
(3) 修改用户密码:用户名、原密码、新密码、确认密码;
(4) 注册、修改用户信息:用户姓名、用户性别、用户手机号码、用户电子邮箱、用户微信号码、用户密码、确认密码、用户所在城市;
(5) 查看动物医院信息:医院名称,医院照片;
(6) 查看动物医院详细信息:动物医院名称,动物医院简介,动物医院电话,动物医院邮箱,动物医院所在地;
(7) 查询指定地区的动物医院;
(8) 查看动物医生信息:动物医生姓名、动物医生的预订数量、预约价格、医生照片;
(9) 查看动物医生详细信息:店家名称、预约价格、动物医生所在医院、动物医生工作经历;
(10) 预约动物医生服务:在医生照片点击立即预约进入到该医生的预约界面,在此界面中填写预约动物姓名、动物年龄、动物所属品种、预约时间之后可进行预订;
(11) 查看预约动物医生订单信息列表;
(12) 查看平台最新公告信息;
(13) 查看平台医疗小知识信息;
(14) 查看平台关于我们信息;
(15) 提交反馈:为管理员添加反馈信息;
(16) 查看动物食品信息:商品名称,商品照片,商品价格;
(17) 查看动物食品详细信息:动物食品名称,动物食品照片,动物食品价格,动物食品简介,动物食品质量,动物食品生产日期,动物食品保质期,动物食品销量;
(18) 查看动物食品评价信息:评价人姓名,评价时间,评价信息;
(19) 添加动物食品评价;
(20) 添加购物车:食品名称,商品数量,商品价格,商品总价;
(21) 生成订单:食品序号,商品名称,商品单价,商品数量,商品小计,商品总价;
(22) 选择、添加食品发货地址;
2.1.2 医生需求分析
(1) 医生登录:医生姓名,医生密码;
(2) 注册、修改医生信息:医生姓名,上传医生照片,手机号码,电子邮箱,医生密码,确认医生密码,医生预订价格,预订市场价格,医生所在城市,医生姓名,医生所属医院,医生简介;
(3) 医院注册:医院名称,上传医院照片,医院电话,医院电子邮箱,医院地址,医院详细信息;
(4) 查看用户订单:用户名,用户电话,用户微信,所在城市,下单时间,查看详情,订单状态;
(5) 修改用户订单状态;
(6) 查看用户订单详细:动物名,动物年龄,动物品种,预约时间;
(7) 查看医生详细信息,查看医院详细信息;
(8) 添加反馈,为管理员添加反馈信息;
(9) 查看平台关于我们信息;
(10) 查看平台医疗小知识信息;
(11) 查看平台公告信息;
(12) 医生退出登录;
2.1.3 管理员需求分析
(1) 管理员登录:后台管理员姓名,密码;
(2) 管理员退出登录;
(3) 用户管理:用户信息展示,用户状态的修改(激活和冻结);
(4) 动物统计图:查看用户注册猫类,犬类数量的柱状统计图;
(5) 食品和类别管理:动物食品和类别的添加,删除,修改,展示;
(6) 食品订单管理:用户订单信息的展示,指定订单的订单项信息;
(7) 医生管理:医生信息展示,医生状态的修改(激活和冻结);
(8) 医院管理:医院信息展示;
(9) 动物科室管理:动物科室信息的添加,删除,修改,展示;
(10) 反馈管理:用户反馈信息展示;
(11) 关于我们管理:关于我们信息展示,添加,删除,修改;
(12) 日志管理:管理员操作日志信息展示;
(13) 用户医生登录日志管理:用户医生登录日志信息展示;
(14) 修改密码日志管理:用户与医生修改密码日志信息展示;
(15) 公告管理:动物医疗平台公告的添加,修改,删除,展示;
(16) 医疗知识管理:医疗知识的添加,修改,删除,展示;
2.2 用例分析
动物医疗平台的第一个功能是用户功能,根据动物医疗平台的用户用例图可以看出有用户为参与者,该参与者拥有10个用例,包括:登录,修改密码,注册,预约服务信息,公告信息,医疗知识信息,关于我们信息,反馈信息,购买宠物食品,修改账户信息。详情可见“动物医疗平台”的用例图如图2.1。
图2.1 “动物医疗平台”的用例图
动物医疗平台的第二个功能是医生功能,根据动物医疗平台的医生用例图可以看出有医生为参与者,9个用例,包括:登录,修改密码,注册,修改账户信息,用户订单信息,反馈信息,公告信息,医疗知识信息,关于我们信息。详情可见“动物医疗平台”的用例图如图2.2。
图2.2 “动物医疗平台”的用例图
动物医疗平台的第三个功能是管理员功能,根据管理员用例图可以看出管理员为参与者,拥有10个用例,包括:登录,操作用户信息,操作食品信息,操作医生信息,操作医院信息,查看反馈信息,操作关于我们信息,查看日志信息,操作公告信息,操作医疗知识信息。详情可见“动物医疗平台”的用例图如图2.3。
图2.3 “动物医疗平台”的用例图
动物医疗平台的数据流图,说明了该平台的请求走向,其中用户对动物医疗平台的请求访问,医生对动物医疗平台的请求访问和管理员对动物医疗平台的请求访问。 “动物医疗平台”系统的数据流图如图2.4。
图2.4 “动物医疗平台”的数据流图
2.3 非功能需求
以上功能需求指的是动物医疗平台中需要具备的功能,除了这些功能需求之外,还需满足一些非功能性的需求分析。前端界面需求是为了给用户更好的体验,需要对界面的控件进行规范,对控件的使用范围进行一个限制。比如:确认按钮设计在右边,取消按钮设计在左边,用户在进行删除操作时,需要有删除提示。性能需求包括平台的响应时间和吞吐量、用户数量等几个方面,需要对平台进行压力测试,以此来对这些方面进行监控[20]。
2.4 本章小结
本章主要介绍了动物医疗平台的需求分析和用例分析,通过国内外调研进行三个角色的需求分析,包括用户需求用例分析、医生用例需求分析和管理员用例需求分析。除此之外,还对平台进行了非功能需求的分析。
3 系统设计
3.1 系统总体设计
3.1.1 体系结构设计
系统的主体设计思想是MVC设计模式,分别是model层,view层,controller层,model层也叫做数据层,该层负责处理数据。view层也叫做视图层,负责处理图像,将图像返回给用户。controller层也叫做控制层,负责接收前台数据和返回后台数据。动物医疗平台体系结构如图3.1。
图3.1 “动物医疗平台”系统的体系结构
图3.2 “动物医疗平台”的模型
从需求中可以得出系统的关键抽象包括:登录、用户、医生、管理员、预约服务、商城服务、医疗知识服务。用户、医生和管理员可以统称为对象。每个对象拥有一个登录,每个登录对应一个对象;一个对象可以操作一个平台,平台可以被多个对象操作;一个平台有多个服务,一个服务在一个平台只能有一个。动物医疗平台软件结构如图3.2,该图描述了系统的模型。
动物医疗平台软件结构是:JSP层显示视图,将数据传给controller层,controller层接受到数据,将数据传给service层,service层处理业务逻辑,通过调用dao层来获取数据库中的数据。dao层获取到指定数据之后,会将数据返回给service层,service层再返回给controller层,controller最后再返回给JSP层,这时获取的数据会在视图上显示出来。动物医疗平台软件结构如图3.3。
图3.3 “动物医疗平台”的软件结构图
3.1.2 功能结构设计
动物医疗平台共有三个主要角色,分别是用户角色,医生角色和管理员角色,用户角色功能包括登录,修改密码,注册,预约服务信息,公告信息,医疗知识信息,关于我们信息,反馈信息,购买宠物食品,修改账户信息。医生角色功能包括登录,注册,修改账户信息,用户订单信息,反馈信息,公告信息,医疗知识信息,关于我们信息。管理员角色功能包括登录,用户信息,食品信息,医生信息,医院信息,反馈信息,关于我们信息,日志信息,公告信息,医疗知识信息。“动物医疗平台”的功能结构如图3.4。
图3.4 “动物医疗平台”的功能结构图
动物医疗平台的用户功能包括:登录,修改密码,注册,查看宠物医院信息,查看宠物医生信息,预约医生,查看预约订单信息,查看公告信息,查看医疗知识信息,查看关于我们信息,提交反馈,查看宠物食品信息,添加购物车,生成订单,添加订单地址,添加宠物食品评价,修改用户账户信息, “动物医疗平台”的用户结构如图3.5。
图3.5 “动物医疗平台”的用户结构图
动物医疗平台的医生功能包括:医生登录,医生注册,修改医生账户信息,查看用户订单信息,查看用户订单详细,接单服务,提交反馈,查看公告信息,查看医疗知识信息,查看关于我们信息。 “动物医疗平台”的医生结构如图3.6。
图3.6 “动物医疗平台”的医生结构图
动物医疗平台的管理员功能包括:登录,操作用户信息,操作食品信息,操作食品分类信息,操作医生信息,操作医院信息,查看反馈信息,操作关于我们信息,查看登录日志信息,查看管理员操作日志信息,查看修改密码日志信息,操作公告信息,操作医疗知识信息。 “动物医疗平台”的管理员结构如图3.7。
图3.7 “动物医疗平台”的管理员结构图
3.2 系统详细设计
图3.8 “动物医疗平台”的E-R图
该动物医疗平台共有20个数据库表,通过PowerDesigner工具画E-R图描述了库表关系。表与表之间共有15个关系,其中有13个一对多关系,有2个多对多关系。动物医疗平台的E-R图如图3.8[21]。
3.2.1 表设计
表3.1 “动物医疗平台”的总表名
表名 功能说明
user 用户表
reservation 预订表
password_log 密码日志表
notice 公告表
manual 医疗知识表
login_log 登录日志表
hospital 医院表
food_order 食品订单表
food_item 订单项表
food_category 食品类别表
food_address 发货地址表
food 食品表
feedback 反馈表
department 科室表
doctor 医生表
comment 评论表
animal 动物表
admin_log 管理员日志表
admin 管理员表
about 关于我们表
动物医疗平台共20个数据库表,详情可见表3.1动物医疗平台总表名。该表详细介绍了平台所用所有库表的表名以及相应的功能描述。下面通过数据库表的字段,数据类型数据长度,约束条件等字段对一些核心数据库表进行详细的分析。
动物医疗平台用户表共有11个字段分别是用户ID、用户名、用户电话、账号状态、邮箱、性别、用户微信、盐密、盐、所在城市、用户注册日期,其中将用户ID设为该表的主键。详情可见动物医疗用户表3.2。
表3.2 “动物医疗平台”的用户表user
列名 数据类型 长度(小数) 约束条件 其它说明
Id varchar 40(0) PRIMARY KEY 用户ID
loginname varchar 40(0) 用户名
phone varchar 40(0) 用户电话
status int 1(0) 账号状态
wechat varchar 20(0) 用户微信
create_date timestamp 0 注册日期
sex varchar 10(0) 性别
city varchar 10(0) 城市
salt varchar 40(0) 盐
salt_key varchar 40(0) 盐密
email varchar 40(0) 邮箱
动物医疗平台医生表有14个字段分别是医生ID、医生姓名、医生照片、盐、盐密、状态、医生简介、预订数量、性别、所在城市、手机号码、预约价格、预约原价。其中将医生ID设为该表的主键,医院ID设为该表的外键,通过该字段与医院表建立相应的关系。详情可见动物医疗平台医生表3.3。
表3.3“动物医疗平台”的医生表doctor
列名 数据类型 长度(小数) 约束条件 其它说明
Id varchar 40(0) PRIMARY KEY 医生ID
doctor_name varchar 40(0) 医生姓名
doctor_img varchar 100(0) 医生照片
salt varchar 40(0) 盐
salt_key varchar 40(0) 盐密
status int 1(0) 账号状态
biref varchar 500(0) 医生简介
book_count int 10(0) 预约数量
sex varchar 10(0) 医生性别
city varchar 10(0) 所在城市
phone varchar 40(0) 手机号码
nprice double 10(2) 预约价格
oprice double 10(2) 预约原价
hospital_id varchar 40(0) FOREIGN KEY 医院ID
动物医疗平台预订表有6个字段分别是预约ID、预约状态、预约时间、用户ID、医生ID、动物ID。其中将预约ID设为该表的主键,将用户ID、医生ID、动物ID设为外键。通过该字段与用户表、医生表、动物表建立相应的关系。详情可见动物医疗平台预约表3.4。
表3.4 “动物医疗平台”的预订表reservation
列名 数据类型 长度(小数) 约束条件 其它说明
Id varchar 40(0) PRIMARY KEY 预约ID
book_status int 10(0) 预约状态
book_time timestamp 0 预约时间
user_id varchar 40(0) FOREIGN KEY 用户ID
doctor_id varchar 40(0) FOREIGN KEY 医生ID
animal_id varchar 40(0) FOREIGN KEY 动物ID
动物医疗平台食品表有11个字段分别是食品ID,食品名,食品图片,食品介绍,原价格,新价格,重量,销量,保质期,生产日期,类别ID。其中将食品ID设为该表的主键,将类别ID设为外键。通过该字段与类别表建立相应的关系。详情可见动物医疗平台食品表3.5。
表3.5 “动物医疗平台”系统的食品表food
列名 数据类型 长度(小数) 约束条件 其它说明
Id varchar 40(0) PRIMARY KEY 食品ID
food_name varchar 40(0) 食品名
food_img varchar 500(0) 食品图片
introduction varchar 500(0) 食品介绍
old_price double 10(2) 原价格
new_price double 10(2) 新价格
weight double 10(2) 重量
salt_count int 20(0) 销量
quality_time
create_date
cate_id timestamp
timestamp
varchar 0(0)
0(0)
40(0)
FOREIGN KEY 保质期
生产日期
类别ID
动物医疗平台订单表有8个字段分别是订单ID,订单编号名,订单时间,发货人姓名,发货地址,总价,地址ID,用户ID。其中将食品订单ID设为该表的主键,将地址ID和用户ID设为该表外键。通过该字段与地址表、用户表建立相应的关系。详情可见动物医疗平台食品表3.6。
表3.6 “动物医疗平台”系统的用户表food_order
列名 数据类型 长度(小数) 约束条件 其它说明
Id varchar 40(0) PRIMARY KEY 食品订单ID
order_number varchar 40(0) 订单编号名
order_times timestamp 0(0) 生成时间
addr_user varchar 40(0) 发货人姓名
addr_name varchar 40(0) 发货地址
total_price double 10(2) 总价
addr_id varchar 40(0) FOREIGN KEY 地址ID
user_id varchar 40(0) FOREIGN KEY 用户ID
3.2.2 系统功能设计
下面将会介绍平台的4个核心功能的设计。分别是用户预约医生功能,医生接单功能,管理员查看用户反馈功能,用户修改密码日志功能。首先介绍功能的时序图,然后描述功能的运行流程,最后通过列表形式介绍实现该功能使用到的类以及使用的原因。
(1) 用户预约医生功能
该动物医疗平台设计的初衷就是为了方便养宠人士到动物医院给宠物看病。用户预约医生功能可以实现用户在线上预约动物医生,成功解决了线下看病难,看病麻烦,看病不方便以及不快捷等问题。通过该功能的实现,用户可以提前在该平台进行预约,不用再为到动物医院排队挂号的问题而担忧。因此该功能是本平台所必需的,也是最核心的一个功能。预约医生时序图如图3.9。
图3.9 “动物医疗平台”的预约医生时序图
预约医生是平台的核心功能之一。首先用户可以在book-doctor-list.jsp页面看到医生的详细信息,可以在该页面进行预订,输入必填的预约信息之后,该界面会将数据传给ReservationController页面,进行数据的验证之后,将数据传给ReservationServiceImpl层,该层负责处理功能的业务,通过调用dao层来获取数据库中的数据。最后将逐层返回到book-doctor-list.jsp界面,将最后的视图显示给用户。详情可见表“动物医疗平台”的预约医生表3.7。
表3.7 “动物医疗平台”的预约医生表
编号 类名或方法名 功能描述
1 book-doctor-list.jsp 显示医生预订界面,输入预约信息之后,以POST请求方式提交给ReservationController。
2 ReservationController 判断用户是否登录,没有登录跳转到登录界面,如果登录将数据传给ReservationServiceImpl。
3 ReservationService ReservationServiceImpl的接口。
4 ReservationServiceImpl 处理预订医生业务,调用Dao层的方法并将数据传给Dao层
5 ReservationDao ReservationDaoMapper.xml的接口。
6 ReservationDaoMapper.xml 存放sql语句,通过sql语句获取数据库中的数据,之后逐层返回到jsp页面显示。
(2) 医生接单功能
用户在预订宠物医生之后,该宠物医生会接受到预订用户的相关信息,包括用户的姓名,预约时间,宠物的品种等等。获取到这些信息之后,宠物医生才方便进行用户到店之前的准备工作。医生接单时序图如图3.10。
图3.10 “动物医疗平台”的医生接单时序图
医生接单功能是平台的核心功能之一,用户预订医生之后,用户有必要知道自己的订单信息。医生接单功能,首先doctor-books.jsp获取到修改订单状态的数据,将该数据通过get方式提交给ReservationController,进行信息的验证。接着通过调用ReservationServiceImpl层的方法,处理修改订单状态的业务逻辑,在该层将数据传给Dao层,通过Dao层连接数据库,修改数据库中的数据,最后逐层返回给doctor-books.jsp页面进行显示。详情可见表“动物医疗平台”的查看医生接单表3.8。
表3.8 “动物医疗平台”的医生接单表
编号 类名或方法名 功能描述
1 doctor-books.jsp 显示用户预订单界面,可以查看已预订的所有用户信息,以get请求方式提交给ReservationController。
2 ReservationController 获取到数据,将数据传给ReservationServiceImpl。
3 ReservationService ReservationServiceImpl的接口。
4 ReservationServiceImpl 处理修改用户预订单状态业务,调用Dao层的方法并将数据传给Dao层
5 ReservationDao ReservationDaoMapper.xml的接口。
6 ReservationDaoMapper.xml 存放sql语句,通过sql语句获取数据库中的数据,之后逐层返回到doctor-books.jsp页面显示。
(3) 管理员查看用户反馈信息功能
用户在使用平台的时候,网页卡顿、服务器崩溃等问题在所难免。因此需要提交反馈功能。用户在前台提交反馈信息给管理员之后,管理员需要获取到用户的反馈信息,才可进一步对平台进行完善。查看用户反馈信息时序图如图3.11。
图3.11 “动物医疗平台”的查看反馈信息时序图
管理员查看用户反馈信息功能,是查看前台用户所提交的反馈信息。首先在feedback.jsp页面,通过ajax技术获取FeedbackController所传递的数据,在FeedbackController对信息进行验证,通过调用FeedbackServiceImpl中的方法,处理查看所有用户反馈信息的业务逻辑,在该层通过调用Dao层与数据库进行连接,从数据库中获取所有用户反馈的信息,最好逐层反馈给feedback.jsp页面进行展示。详情可见表“动物医疗平台”的查看用户反馈信息表3.9。
表3.9 “动物医疗平台”的查看反馈信息表
编号 类名或方法名 功能描述
1 feedback.jsp 显示查看用户反馈信息界面,可以查看所有用户的反馈信息,以ajax方式获取FeedbackController传递的数据。
2 FeedbackController 将数据传给FeedbackServiceImpl。
3 FeedbackService FeedbackServiceImpl的接口。
4 FeedbackServiceImpl 处理获取所有用户反馈信息业务,调用Dao层的方法并将数据传给Dao层。
5 FeedbackDao FeedbackDaoMapper.xml的接口。
6 FeedbackDaoMapper.xml 存放sql语句,通过sql语句获取数据库中的数据,之后逐层返回到feedback.jsp页面显示。
(4)用户修改密码日志功能
用户和医生在注册之后,为了提高用户和医生账号的安全性,防止恶意修改密码,管理员需要对这两个角色修改密码的信息进行记录和查看。因此以用户为例,添加用户修改密码日志时序图如图3.12。
图3.12 “动物医疗平台”的添加用户修改密码日志时序图
添加用户修改密码日志功能,对用户修改密码操作的日志进行保存。该功能涉及到Spring的aop技术首先在PasswordLogAspect中进行日志对象的封装,在该层将封装好的数据传给PasswordLogServiceImpl,需要提前在mybatis+spring.xml配置文件中配置切面和切点,将设置好的动态代理类加在PasswordLogServiceImpl上。PasswordLogServiceImpl接受到数据,将数据传给dao层,通过dao层连接数据库,将数据添加到数据库中,最后逐层
返回。详情可见表“动物医疗平台”的添加用户修改密码日志表3.10。
表3.10 “动物医疗平台”的添加用户修改密码日志表
编号 类名或方法名 功能描述
1 PasswordLogAspect 动态代理类,用户在进行修改密码操作时,执行该类,进行添加日志操作,将封装好的对象,传给PasswordLogServiceImpl。
2 UserServiceImpl 主体类,用户修改密码的业务逻辑层。
3 mybatis+spring.xml spring和mybatis的配置文件,在里面配置切面和切点,将动态代理类加在主体类上。
4 PasswordLogService PasswordLogServiceImpl的接口。
5 PasswordLogServiceImpl 接收到数据,调用dao层的方法,将数据传给dao层。
6 PasswordLogDao PasswordLogMapper.xml的接口。
7 PasswordLogMapper.xml 存放sql语句,通过sql语句将数据添加到数据库,之后逐层返回。
3.3 本章小结
本章介绍了动物医疗平台的系统设计,总体包括动物医疗平台的总体设计和详细设计,系统的总体设计主要介绍该平台的大体功能,先是通过体系结构介绍了平台的设计模式,随后介绍了平台整体软件结构,最后介绍了平台整体功能的结构。系统的详细设计主要展示了平台的E-R图,平台所拥有的数据库表、并通过时序图介绍了平台核心功能的详细设计。
4 系统实现
4.1 开发环境
动物医疗平台的开发环境可分为硬件环境和软件工具,详情可见表4.1动物医疗平台的硬件环境和表4.2动物医疗平台的软件工具。根据动物医疗平台的功能需求,这些软硬件开发环境能够满足项目的运行需求,可以进行动物医疗平台的开发。
表4.1 “动物医疗平台”的硬件环境
硬件 使用环境
终端硬件处理器 i7
运行内存 8G
硬件内存 1T
操作系统 Window10
表4.2 “动物医疗平台”的软件工具
软件 使用工具
IDE IDEA 2019
Web服务器 Tomcat 9.0
数据库 MySQL
4.2 系统设计实现
4.2.1 数据库实现
根据需求分析,动物医疗平台一共设计了20个数据库表,并分析了表与表之间的关系。因此按照需求分析,通过使用Navicat Premium工具与MySQL数据库进行连接,实现了20个数据库表[22]。动物医疗数据库实现图如图4.1。
图4.1 “动物医疗平台”的数据库实现图
4.2.2 设计实现
动物医疗平台的设计和实现,根据需求分析和总体功能设计,最终实现了该平台所设计的功能。下面通过该平台的实现界面,具体工作流程和部分核心代码具体展示平台的部分核心功能的实现效果。具体介绍的包括用户预约医生功能,医生接单功能,管理员查看用户反馈功能,添加用户修改密码日志功能4个核心功能。首先介绍用户预约医生功能的实现。预约医生界面图如图4.2。
图4.2“动物医疗平台”的预约医生界面
首先,用户在医生预约界面可以看到该医生的详细信息,需要输入预约时间,动物姓名,动物年龄,选择科室之后,点击立即预约即可预约成功。该JSP页面会将用户输入的数据通过post请求传递给controll层,该层会判断用户是否登录。如果没有登录,就会直接强制返回到登录页面。如果用户已经登录,将会将数据传给service层,该层将处理该功能的业务逻辑,并将数据传递给dao层。该层会与数据库建立连接,将用户的预约数据添加至数据库,最后再一步步逐层返回到JSP页面进行显示[23]。核心代码展示如下:
ReservationServiceImpl:
public void addReservationByUser(String doctorId, String userId,String animalId) {
Reservation reservation = new Reservation();
String uuid = UUIDUtil.getUUID();
reservation.setId(uuid);
reservation.setBookStatus(0);
reservation.setUserId(userId);
reservation.setDoctorId(doctorId);
Date date = new Date();
reservation.setBookTime(date);
reservation.setAnimalId(animalId);
reservationDao.insert(reservation);
}
医生登录之后,将会在主页面的菜单栏上看到首页,用户订单,医疗知识,反馈中心,关于我们等几个选项。点击用户订单选项,即可成功进入到用户预订单页面。医生接单界面如图4.3与图4.4。
图4.3“动物医疗平台”的医生接单界面
图4.4“动物医疗平台”的医生接单界面
首先,医生在查看用户订单界面可以看到用户预订单的详细信息,其中包括用户名,用户电话,用户微信,用户所在城市,用户下单时间。该界面有两个操作按钮,一个是查看详情,一个是接单。查看详情可以查看用户宠物的详细信息。医生在确认信息接单时,需要点击接单按钮。该JSP页面会将该用户的订单数据通过get请求传递给controller层,该层会进行数据验证,将会将数据传给service层,该层将处理该功能的业务逻辑,将修改用户的订单状态。并将修改后的数据传递给dao层。该层会与数据库建立连接,将数据库的中数据进行修改,最后再一步步返回到JSP页面进行显示。医生接单之后,JSP界面的接单按钮将变为已接单,并且该按钮变为不可点击状态。核心代码展示如下:
ReservationServiceImpl:
@Override
public void changeBookStatus(String id) {
Reservation reservation = new Reservation();
reservation.setId(id);
Reservation reservation1 = reservationDao.selectOne(reservation);
reservation1.setBookStatus(1);
reservationDao.updateBookStatus(reservation1);
}
后台管理员登录之后,将会进入动物医疗平台后台的主页面。在主页面左侧的菜单栏中点击反馈按钮,即可成功进入反馈信息页面。在该页面可以看到反馈信息列表,该列表内容包括反馈标题,反馈内容和反馈时间等信息。查看用户反馈信息界面如图4.5。
图4.5“动物医疗平台”的查看用户反馈信息界面
后台管理员登录后,在主页面点击用户反馈菜单按钮之后,即可查看到用户反馈信息列表。在该列表中可以看到用户反馈的详细信息,其中包括反馈ID,标题,内容,反馈时间,用户ID。管理员在点击用户反馈按钮时。主页面将会通过超链接跳转到feedback.jsp页面。该JSP会通过ajax请求获取controller层的数据,该层会进行数据验证,将会将数据传给service层,该层将处理该功能的业务逻辑。并将数据传递给dao层。该层会与数据库建立连接,将从数据库中获取用户反馈的所有信息,最后再一步步返
回到JSP页面进行显示。前端页面通过jqGrid技术和ajax将数据异步显示
出来。核心代码展示如下:
FeedbackServiceImpl:
@Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
public HashMap<String,Object> queryFeedbackByPage(int curPage, int pageSize) {
HashMap<String, Object> map = new HashMap();
//总条数 records
int records = feedbackDao.selectCount(null);
map.put(“records”,records);
//当前页 page
map.put(“page”,curPage);
//总页数 total 总条数/每页展示条数
int totals = records%pageSize==0? records/pageSize : records/pageSize+1;
map.put(“total”,totals);
//数据 rows 分页
RowBounds rowBounds = new RowBounds((curPage - 1) * pageSize, pageSize);
List rows = feedbackDao.selectByRowBounds(new Feedback(), rowBounds);
map.put(“rows”,rows);
//返回map集合
return map;
}
用户在登录之后,在主页面的右上角将会看到修改密码选项。点击该选项,用户就会成功跳转到修改密码的界面。在该页面可以进行用户密码的修改。用户修改密码日志如图4.6与图4.7。
图4.6“动物医疗平台”系统的用户修改密码界面
图4.7“动物医疗平台”系统的用户修改密码界面
用户在修改密码界面,需要输入原密码,新密码,和确认密码等信息,点击确认按钮即可修改密码成功。点击确认按钮时,将用户所输入的数据以post方式请求到controller层,在该层将会判断用户是否登录,如果没有登录将会强制返回到登录界面。如果已经登录,会将数据传递给service层。在执行业务层方法之后,会立即执行已经配置在该方法上的动态代理类。在该类中,将会完成修改密码日志对象的封装,将数据传递给日志的service层,该层会将数据传递给dao层,该层会与数据库建立连接,将修改密码的日志信息添加到数据库,最后再一步步返回到JSP页面进行显示。核心代码展示如下:
PasswordLogAspect:
Object proceed = mi.proceed();
User myUser = (User)request.getSession().getAttribute(“myUser”);
String oldPassword = (String)request.getSession().getAttribute(“oldPassword”);
String newPassword = (String)request.getSession().getAttribute(“newPassword”);
if(oldPassword!=null&&newPassword!=null){
Date date = new Date();
PasswordLog log = new PasswordLog(UUID.randomUUID().toString(),
myUser.getUsername(),oldPassword,newPassword,date);
passwordLogService.addPasswordLog(log);
request.getSession().removeAttribute(“oldPassword”);
request.getSession().removeAttribute(“newPassword”);
request.getSession().removeAttribute(“myUser”);
}
request.getSession().removeAttribute(“pwdFlag”);
return proceed;
4.3 本章小结
本章主要介绍了该动物医疗平台功能的具体实现,先是详细介绍了平台的软硬件开发环境,然后通过数据库实现图说明了数据库表的实现,通过相应功能的页面截图,详细运行流程和核心代码说明了核心模块功能的实现效果。
5 系统测试
动物医疗平台的实现过程中,需求分析,系统的设计,系统的实现都是不可缺少的一部分[24]。当然,功能测试也是极其重要的一部分。测试主要包括单元测试、功能测试、系统测试和交付测试等等,测试涉及到平台的开发的各个阶段的功能[25]。本次主要测试平台代码,测试代码是否存在问题,以及该问题是否影响整个项目的正常运行。在测试的过程中,如果发现功能运行报错,平台中存在bug,就可以对该问题进行修复,随后再进行测试,直到该功能能够正常运行。在测试的过程中,还需要在保证质量的情况下,尽可能减少测试的时间和精力。利用测试工具来减少时间和精力,测试本身是必不可少的。
5.1 测试计划
本次测试计划对动物医疗系统设计中介绍的4个核心功能以及相关功能进行测试。用户,医生,管理员三个角色的功能都进行了测试。包括
用户预约医生功能,医生查看用户预订单功能,管理员查看用户反馈功能以及用户修改密码功能。
本动物医疗平台的服务端测试使用了单元测试和压力测试。为了保证测试质量,减少测试时间。测试选用Apache jmeter。该软件可以进行接口的测试;性能的测试,主要是对程序算法进行测试;压力的测试,主要测试平台功能的高并发也就是负载量; Web自动化测试;数据库的测试和java测试。该测试软件不仅功能强大,效率高,而且还支持多协议。并且该软件是开源免费的,不需要在这个过程花费大量金钱。该软件从安装到使用都特别容易上手。因此选用该软件进行平台功能的测试[26]。
这样,通过以上几种功能的选择加上强大的测试工具进行测试。为测试工作带来了方便和快捷。也增加了动物医疗平台的安全性、可用性、稳定性。对于使用者来说,将会有一种更好的体验。
5.2 测试结果
5.2.1 单元测试
单元测试就是测试一个单元或组件的最小部分,确认这些部分是否适合使用。测试的对象包括函数,过程,类和接口等等。该测试不仅可以实现需求而且可以提高代码的质量,通过降低功能的成本来提高平台的可维护性。在单元测试中,可以说测试用例的选择是非常重要的,在本系统中更完美的使用了单元测试。下面对医生查看用户订单功能进行了测试,查看用户预订单单元测试图如图5.1和请求成功界面图如图5.2。
图5.1“动物医疗平台”的查看用户预订单单元测试图
图5.2“动物医疗平台”的请求成功界面图
5.2.2 压力测试
压力测试又称负载测试, 不断给软件加压,迫使其在极限的条件下进行操作,从而找到性能缺陷。可以运行在同一时间或一段时间内,通过系统发送交易请求的预期数量, 在不同压力条件测试系统的效率以及系统能承受的压力。
下面对用户预约时需要对医生信息进行查看,当平台真正上架之后,用户的数量会不断增加。在1秒之中,可能会有几千人在同时浏览医生的信息。因此选择对该功能的进行了压力测试。动物医疗平台请求成功图如图5.3,表格结果图如图5.4,聚合报告图如图5.5,图形结果图如图5.6。
图5.3“动物医疗平台”的请求成功图
图5.4“动物医疗平台”的表格结果图
图5.5“动物医疗平台”的聚合报告图
图5.6“动物医疗平台”的图形结果图
5.3 本章小结
本章主要通过单元测试和压力测试对动物医疗平台进行综合测试,测试出了该平台的实现情况,以及该平台所存在的问题,并对出现的问题及时进行了修复。测试过程选用了测试工具Apache jmeter,提高了测试工作的效率和严谨性。
结 论
动物医生的预约是动物医疗行业不可缺少的一部分,其准确、快速的实施对该行业具有重要意义。因此,本文针对动物医疗市场的迫切需求,设计并实现了动物医疗平台。本文首先分析了动物医学平台开发的背景和意义,然后分析了平台建设中需要解决的一些问题,最后对平台的设计和实现进行了详细的说明和探讨。本文开发的动物医学平台已经具备了基本的功能,基本能够满足动物医疗市场对动物医生预约的业务需求。
本文在平台设计和实现过程中充分考虑了可扩展性、可维护性等要求,具有代码重用性强、系统可扩展性好、安全性高的特点。采用SSM框架技术,Bootstrap框架技术,MVC作为平台设计思想的主体,采用Tomcat作为应用服务器, MySQL作为后台数据库,开发并实现了动物医疗平台。该平台具有操作简单、方便快捷等优点。实际应用的结果表明,该平台的设计是合理和有效的。
本平台的设计与实现有效的提高了对市场上动物医生和动物医院的管理,使得动物医院和医生信息变得透明化,推动了动物医疗市场的发展,对于其他的社会行业具有广泛的借鉴意义和参考价值。由于经济和时间等问题,本文平台还存在一定的不足,比如商品模块在购买人数较多时可能会存在高并发问题,还需要将来进一步的完善。
致 谢
本次论文能够顺利完成,是所有给过我意见的指导老师,以及一直在技术上给我帮助的企业经理的结果。在这次论文写作的过程中,让我收获到了很多的知识。也遇到了很多的困难和坎坷,都在老师和经理无私的帮助下度过了。在此,我要感谢我的论文导师-黄志宇老师以及合作导师-苏畅老师。没有选题、中期修改、最终完成的指导和帮助,没有无私帮我对论文的修改和改进,就没有我这篇论文的顺利完成。
其次,我要感谢我的朋友和同学们,在我写论文的过程中,他们给了我很多资料,也在论文的排版上给予了我很大的帮助。至此,我要感谢沈阳城市学院智能工程学院的所有老师,是他们赋予了我知识。他们不仅教会了我很多知识,也教会了我对生活的态度。感谢在大学四年中对我的关心和教育。在这里向所有的老师表示衷心的感谢!
参考文献
[1]王海棚,刘燕,朱金凤.宠物行业现状及发展趋势[J].河南农业,2019(06):50-51
[2]王家乐,王卓,李会文,邓攀.宠物经济“躺赢”[J].中国企业家,2019(11):8-15
[3]彭勇,陈俞强.基于SSM的实验室管理系统的研究与设计[J].微型电脑应用,2020,36(03):81-83
[4]赵永杰,马宝龙,包国强.基于SSM书香驿站平台的设计与实现[J].农家参谋,2020(06):188
[5]刘志洋.ajax技术在web程序开发中的运用探讨[J].轻纺工业与技术,2020,49(02):169-170
[6]祁晓鹏,吉陈力.基于AJAX的班组信息化系统的设计[J].信息系统工程,2020(02):66-68+70
[7]丁浩.基于MVC模式的购物网站设计研究与实现[J].电脑知识与技术,2019,15(33):27-29
[8]谢清钟,陈雪梅.基于J2EE MVC模式的教育学习平台的关键技术研究[J].广东技术师范学院学报,2019,40(06):89-93
[9]冉启武,皇金锋,董锋斌,蒋军.基于MVC模式的教学管理电子信息系统设计[J].现代电子技术,2020,43(04):54-57
[10]曹利.基于Bootstrap旅游网站设计与实现[J].太原师范学院学报(自然科学版),2019,18(04):65-67
[11]Gustavo Gonçalves Coelho, Eric Henrique Moretti, João Paulo Coelho. Development of an IoT Solution for Detergent Supervision in Industrial Washing Machines. 2019, 12(2):21-27
[12]郭玉芝,周太宇.基于SSM框架的高校学生平时成绩管理系统的设计与实现[J].现代信息科技,2019,3(23):17-19
[13]Kabo Fresh Dog Food; Kabo Launches Kabo Health, A Free Virtual Vet Clinic for Canadian Pet Parents[J]. Veterinary Week,2020
[14]武希志,相亦飞.以齐河县为例浅析宠物医疗行业的现状[J].云南畜牧兽医,2020(02):39-41
[15]黄赛.宠物医疗搭上互联网顺风车成为下一个被颠覆的行业[J].中国工作犬业,2015(10):66-67
[16]黄可权,贺思裴.产业链视角下宠物经济发展路径研究[J].牡丹江师范学院学报(社会科学版),2019(06):35-44
[17]林振国,孙海涛,刘策,陈雪梅,高淑霞,白莉雅.资本市场对宠物行业的影响[J].当代畜牧,2018(30):75-76
[18]王璇,甘国君,王冠铮,罗宇航.新零售时代下的“宠爱一生”宠物医疗服务平台打造分析[J].品牌研究,2020(02):67-68
[19]宗禾.“萌宠经济”:千亿级大市场正悄然崛起[J].农村新技术,2018(10):45
[20]Courtney Bir, Mario Ortez, Nicole J. Olynk Widmar, et al. Familiarity and Use of Veterinary Services by US Resident Dog and Cat Owners. 2020,10(3)
[21]胡强.MySQL数据库常见问题分析与研究[J].电脑编程技巧与维护,2019(12):91-92
[22]杨琳,昌明权.基于MySQL的高校党支部信息管理系统数据库设计[J].电脑知识与技术,2020,16(05):276-277+284
[23]王菲露,李军,宋杨,胡勇,陈玉峰.基于Ajax技术的ECharts实时图形报表实现[J].黑龙江工业学院学报(综合版),2019,19(12):79-83
[24]VCA Animal Hospitals; VCA Animal Hospitals Offers Free Boarding for Pets Displaced by Tennessee Tornadoes[J]. Veterinary Week,2020
[25]郑智方,李彬,刘世坤,李鹏.探究mysql的运用实例-对数据库的宏观把握[J].科技风,2020(06):129
[26]Mario Ortez, Courtney Bir, Nicole Olynk Widmar, et al. Perceptions of Prominent Animal Welfare and Veterinary Care Organizations in the United States. 2020,10(3)