宠物医疗服务网站的设计与实现
摘 要
在信息飞速发展的今天,网络已成为人们重要的信息交流平台。宠物服务公司每天都有大量的信息需要通过网络发布,为此,本人开发了一个基于B/S(浏览器/服务器)模式的宠物医疗服务平台。
该系统以JSP、Java编程语言、MySQL和Springboot框架等为开发技术,实现了添加、修改、查看、删除系统数据。本系统采取组件化的方式对系统进行拆分,并对数据库中各个表的增删查改、表与表之间的约束关系进行分析与设计,最终实现符合用户需求功能的商业级应用。
系统界面简洁大方,布局合理,易操作易上手。对应用户的每一步操作,系统都能高响应地做出反馈。系统具体包含了用户管理、宠物信息管理、商品管理、宠物医生管理、服务订单管理、宠物疫苗管理、疫苗接种、宠物就诊记录、养宠资讯管理等功能,为宠物医疗提供一个服务平台,实现对数据的高效、安全管理。
关键词:宠物医疗服务,Springboot框架,MySQL数据库
Design and implementation of pet medical service website
Abstract
With the rapid development of information today, the network has become an important information exchange platform for people. Pet service companies every day have a lot of information needs to be released through the network, for this, I developed a B/S (browser/server) model based on the pet service platform.
The system takes JSP, JAVA programming language, MYSQL and Springboot framework as the development technology, and realizes adding, modifying, viewing and deleting system data. This system adopts componentization to split the system, and analyzes and designs the addition, deletion, checking and modification of each table in the database, and the constraint relationship between tables, and finally realizes the commercial application that meets the user's requirements.
The system interface is simple and generous, the layout is reasonable, easy to operate and start. The system can respond to each step of the user's operation with high response. The system specifically includes user management, pet information management, commodity management, pet doctor management, service order management, pet vaccine management, vaccination, pet medical records, pet care information management and other functions. It provides a service platform for pet medical treatment and realizes the efficient and safe management of data.
Key words:Pet medical services, Springboot framework, MySQLdatabase
目 录
针对居民饲养宠物数量日益增多而产生的医疗服务问题增多这一现象,对居民宠物的医疗服务模式和在此服务过程中的需求加以分析和研究。因此设计出满足宠物主人对宠物医疗服务的新模式。
目前很多国内宠物医疗信息管理一般采用纯手工管理。这种方法的弊端在于参与管理的人员文化水平不一,字迹不一,互相之间会导致信息传达不便,而且纸质信息传载媒体有着一个很大的弱点就是容易损坏,造成信息丢失。在当前的信息化时代中,任何宠物医疗机构,都需要一个实用的宠物医疗服务系统来规范宠物医疗信息的管理,这将会大大提高宠物医疗机构的服务水平,优化资源,实现效益的最大化。现在国内也有一些宠物医疗服务管理的软件,采用的技术也是多种多样,但大多数宠物医疗服务系统主要用于大型宠物医院的关键部门。至于小型宠物医院或者医疗机构等,可以服务日常业务的并不多。宠物医疗服务中心,宠物医院等宠物的服务机构纷纷的出现,服务质量和档次也是参差不齐。另有专家预测,未来五年中国宠物经济的市场至少能达到150亿,面对这个庞大的数字的不断增长,宠物医疗服务的需求也将越来越大。针对如此巨大的需要,建立一个完善的宠物医疗服务网站,必须功能齐全,操作简便,向用户展示简单明了的操作界面。在完善功能的同时又必须兼顾系统的灵活性,安全性。
在国外,宠物医疗服务的运营模式也发生了不小得变化,美国宠物协会(American Boarding Kennels Association)的一位负责人表示,对消费者而言这种发展的一个结果就是,随着附加服务层出不穷,未来两年宠物医疗服务成本将增长15%~20%。根据该组织提供的数据,去年美国人花在宠物身上的支出为324亿美元,较前年上升近10%。而在我国,宠物正在成为不少家庭里的新成员。随着养宠物的家庭不断增多,宠物经济也越来越受人关注。目前从养宠物的数量和消费能力上看,北京、上海、广州、重庆和武汉已经成为我国五大“宠物城市”,在这些城市。而天津、南京、杭州、深圳、成都等城市,宠物普及程度也相当高。不少业内人士表示,随着日前颁布的《宠物条例》中免去每年宠物健康年检费用的政策出台后,可能会有更多人加入养宠物的行列,中国宠物医疗服务市场的潜力仍待挖掘,而建立一套完善的针对宠物医疗服务的系统,也是非常重要的。
六个章节共同组成了本文研究及设计内容,包括:
第一章:绪论。本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章:相关技术介绍。主要介绍Springboot框架、JSP嵌入式脚本语言、B/S模式等。
第三章:系统分析。包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章:系统设计。本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章:系统实现。将本系统分为前提的开发工具介绍和后期的功能代码实现。
第六章:系统测试。系统完成后,根据各个模块的测试用例才对各个模块进行功能测试。
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的springboot框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
-
- B/S体系工作原理
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
-
- spring boot框架介绍
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
MySQL是一个开放的、快速的、多线程的SQL关系型数据库服务器。由于其体积小、免费、运行速度快以及可以通过相关免费的软件来对MySql数据库中的相关数据结构信息等等优点。受广大中等、小型企业所喜爱并占据了很大地位。本系统在数据库方面选用MySQL,并通过Nacivat来进行MySql数据库的管理。在Mysql的安装过程中,最需要注意的就是数据库的编码问题,所以在安装数据库时需要设置数据库的编码为Utf-8,与前台页面和服务器的编码相一致。
-
- JavaScript 运行模式
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
1.8.1是一种解释性脚本语言(代码不进行预编译)。
1.8.2主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
1.8.3可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
1.8.4跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
1.8.5 JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
- 系统分析
开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。
软件产业经过多年的发展,现在已经达到了很大的规模,从事软件开发的专业人员不计其数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心地位。本系统基于的架构,目前技术已经非常的成熟,是不存在技术上面难以实现的麻烦。
开发软件所需的时间、人力和物力成本,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等进行深入的考虑,都符合实际的要求。所以宠物医疗服务平台具有经济可行性和实用性,可以节约管理成本
宠物医疗服务平台主要是为了更加地完善宠物医疗的服务情况,对用户的信息、宠物信息和用户管理、医疗服务管理、宠物商品管理、宠物疫苗接种管理、商品订单管理、宠物医生管理、宠物接种情况、宠物就诊记录、宠物领养申请等提供了方便的机制。本系统有多类使用者,分别是管理员和宠物医生以及普通用户。以下是从这三种用户的角度分别介绍本系统所要实现的功能。
用户:
注册:首先检查用户名和邮箱是否存在,如不存在即可进行注册,并将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户信息保存到数据库中。
登录:使用宠物医疗服务系统前是需要用户登录个人账号。
养宠资讯:用户登录宠物医疗服务系统首页时,可以浏览养宠资讯信息,根据不同地宠物可以查看每个不同宠物饲养地方式等,还可以将自己感兴趣的资讯点赞以及加入收藏列表中。
宠物信息:用户可以在系统中的宠物信息栏内搜索宠物信息,具体包括:宠物名称、宠物类别、年龄、性别、编号,查看宠物图片等。
宠物商品中心:用户可以浏览宠物商品,可以自行搜索某样宠物相关商品的详情功能。具体功能需求如下:(1)宠物商品搜索:前台用户可以直接在前台输入框内输入关键词进行搜索,页面弹跳出对应商品(2)查看商品详情:用户可点击对应商品,从而查看该商品的商品详情。具体信息包括:商品编码、商品名称、价格、商品保质期、库存数量、具体用途等。
商品订单:商品已存在的前提下,提供商品的购买功能,商品添加购物车成功后,可以查看到个人已经购买的具体商品,以及商品价格总计。
宠物就诊:用户可以提交宠物就诊申请,比如疫苗接种,接种时间,就诊问题等。
宠物领养:用户可以查看宠物信息表的宠物状态,可以根据状态发起领养申请:包括填写宠物编号、宠物名称、性别、类别、用户账号,提交领养申请。
管理员:
用户管理:对用户进行管理,用户的注册,包括用户昵称、用户名、用户的宠物信息(宠物类别、宠物性别、年龄等)用户的账号信息:
宠物商品列表:增加与宠物相关的商品,对商品进行列表,列表信息包括:商品编号、名称、单价、库存、商品用途、商品保质期,商品图片上传。
(1)商品的增加删除:可以增加宠物商品的同时可以删除商品。
(2)商品图片上传:给商品添加商品图片。
(5)商品更新信息:更新商品的信息,如商品编号、商品名称、商品类别、价格、库存、商品用途、商品图片等。
(6)商品上下架:对宠物商品进行上架。
宠物医疗服务管理:
(1)科室医生;
(2)宠物疫苗接种;
(3)就诊记录;
宠物领养管理:
宠物信息;
宠物状态;
领养审核;
商品订单管理:
(1)按购买订单编号查询购买订单;
(2)查看购买订单详情;
(3)支付情况;
系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。
1.普通用户主要使用系统的商品购买和宠物医疗服务业务,下图所示为普通用户的用例图。
图3-1 普通用户用例图
2.管理员主要负责用户管理、宠物医疗管理、商品管理、商品订单管理、宠物领养,下图所示描述管理员的用例图。
图3-2 管理员用例图
- 医生主要负责宠物就诊、就诊问题、宠物疫苗的接种安排,下图所示描述医生的用例图。
系统业务流程图如下所示。
图3-3 系统业务流程图
业务流程图(TFD)通过一些特定的符号描述业务的处理过程,它重点强调业务过程中每一项处理活动和具体业务部门的关系,选择部分模块进行具体描述。重点对本系统整体业务中最为主要的商品交易及订单业务进行描述,用户进入宠物医疗服务平台后进行各种模块信息的浏览,选择想要购买的宠物商品添加到宠物商品购买订单,对宠物疫苗接种申请,用户确认购买、填写订单信息,另外,管理人员进入后端管理,以执行该订单信息控制模块的相关管理方法,对宠物疫苗接种进行管理,医生信息管理,用户订单在解决后向客户提供反馈机制。
如下为系统的顶层数据流图,外部实体有用户和管理员,分别对系统输入数据,从而得到要输出的数据。
图3-4系统顶层数据流图
如下图所示为系统底层数据流图。
宠物医疗服务平台底层数据流图主要描述系统底层模块的数据流、数据载体、数据处理、外部实体的具体交互。本系统就是管理员和普通用户在用户管理、医生管理、宠物商品管理、商品订单管理、疫苗信息管理、疫苗接种管理、宠物领养等模块上的数据交互。
本系统架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
图4-1系统架构图
为了将系统从“做什么”落实到“怎么做”,基于系统设计原则,对系统功能进行更适合编码实现的功能划分。根据上图的系统架构设计,整理出规范的系统功能结构图,为系统的实现编码做好准备。
如下图所示为系统功能结构图。
图4-2系统功能结构图
用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户信息,得到自定义生成账号后,注册完成。未注册用户注册的活动图如下图所示。
图4-3未注册用户注册活动图
用户可进行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码信息进行核对验证,验证成功则页面直接显示登录用户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。
图4-4用户登录活动图
用户登录后,进入功能页面,可对自己的信息进行管理,包括个人信息,用户管理、宠物医疗服务管理、宠物商品管理、订单管理、商品订单管理、宠物领养。用户使用功能活动图如下图所示。
图4-5用户使用功能活动图
用户功能界面可对自己的密码进行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。
图4-6修改密码活动图
宠物服务平台采用的数据库是MySQL,该部分将根据系统需求和设计,设计合理的数据库。本系统考虑到之后系统的扩展集群,数据库将不使用外键。此外,不用外键时数据管理也较为简单,操作更加方便,性能更高。
E-R图,更加直观的告诉开发人员系统的各个数据的属性,各个数据之间的联系,各个数据的类型。能通过该模型更直观地了解数据库的设计,并根据对其逐渐改善。
本系统图设计,如下图所示。
图4-7系统E-R图
本系统根据第三范式的思想设计数据库,减少最大程度的冗余,总共建立有多个表,用户表、管理员表、养宠资讯表、宠物商品信息表、科室信息表、医生信息表、疫苗信息表、疫苗接种表、宠物领养表等。
表结构如下所示。
user_registration表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
user_registration_id | int | 11 | 是 | 是 | 用户注册ID |
category | varchar | 64 | 否 | 否 | 类别 |
gender | varchar | 64 | 否 | 否 | 性别 |
age | varchar | 64 | 否 | 否 | 年龄 |
user_account | varchar | 64 | 否 | 否 | 用户账号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
pet_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
pet_information_id | int | 11 | 是 | 是 | 宠物信息ID |
pet_number | varchar | 64 | 否 | 否 | 宠物编号 |
age | varchar | 64 | 否 | 否 | 年龄 |
pet_name | varchar | 64 | 否 | 否 | 宠物名称 |
gender | varchar | 64 | 否 | 否 | 性别 |
category | varchar | 64 | 否 | 否 | 类别 |
picture | varchar | 255 | 否 | 否 | 图片 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
commodity_center表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
commodity_center_id | int | 11 | 是 | 是 | 商品中心ID |
commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
unit_price | int | 11 | 否 | 否 | 单价 |
stock | int | 11 | 否 | 否 | 库存 |
quality_guarantee_period | varchar | 64 | 否 | 否 | 保质期 |
purpose | text | 0 | 否 | 否 | 用途 |
picture | varchar | 255 | 否 | 否 | 图片 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
doctor表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
doctor_id | int | 11 | 是 | 是 | 医生ID |
doctor_job_number | varchar | 64 | 否 | 否 | 医生工号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
shangpinxinxi表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
department_id | int | 11 | 是 | 是 | 科室ID |
building | varchar | 64 | 否 | 否 | 楼栋 |
floor | varchar | 64 | 否 | 否 | 楼层 |
room_number | varchar | 64 | 否 | 否 | 房号 |
department_name | varchar | 64 | 否 | 否 | 科室名称 |
doctor_job_number | int | 11 | 否 | 否 | 医生工号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
vaccines表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
vaccines_id | int | 11 | 是 | 是 | 疫苗ID |
vaccine_number | varchar | 64 | 否 | 否 | 疫苗编号 |
quality_guarantee_period | varchar | 64 | 否 | 否 | 保质期 |
purpose | text | 0 | 否 | 否 | 用途 |
vaccine_name | varchar | 64 | 否 | 否 | 疫苗名称 |
picture | varchar | 255 | 否 | 否 | 图片 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
vaccination表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
vaccination_id | int | 11 | 是 | 是 | 疫苗接种ID |
user_account | int | 11 | 否 | 否 | 用户账号 |
gender | varchar | 64 | 否 | 否 | 性别 |
age | varchar | 64 | 否 | 否 | 年龄 |
category | varchar | 64 | 否 | 否 | 类别 |
vaccine_number | varchar | 64 | 否 | 否 | 疫苗编号 |
injection_time | date | 0 | 否 | 否 | 打针时间 |
vaccine_name | varchar | 64 | 否 | 否 | 疫苗名称 |
matters_needing_attention | text | 0 | 否 | 否 | 注意事项 |
doctor_job_number | int | 11 | 否 | 否 | 医生工号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
visit_record表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
visit_record_id | int | 11 | 是 | 是 | 就诊记录ID |
building | varchar | 64 | 否 | 否 | 楼栋 |
floor | varchar | 64 | 否 | 否 | 楼层 |
room_number | varchar | 64 | 否 | 否 | 房号 |
doctor_job_number | int | 11 | 否 | 否 | 医生工号 |
department_name | varchar | 64 | 否 | 否 | 科室名称 |
visiting_time | datetime | 0 | 否 | 否 | 看诊时间 |
problem_description | text | 0 | 否 | 否 | 问题说明 |
user_account | int | 11 | 否 | 否 | 用户账号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
系统中应用的开发工具总结如下表所示。
表5-1开发工具
名称 | 工具 | 版本 |
操作系统 IDE(Integrated Development Environment) | Windows Eclipse | 7/8/10 2017 |
服务器 | Tomcat | 9.10.7 |
JDK(Java Development Kit) | JDK | Java SE 8.0 (1.8.0) |
数据库 浏览器 界面工具 | MySQL 谷歌 Photoshop | 5.7 6.0 2016 |
未注册用户在用户注册界面uerRegister.jsp,输入新用户信息,点击注册后,新用户信息由界面传入控制层userAction,调用addUser(user)方法,通过userDAOImp向数据库用户表插入用户信息,由于用户账号是自动生成的,若成功则反馈注册成功,并提示新用户的用户账号;若失败则回到登录界面,并显示登录失败。
注册界面如下所示。
图5-1注册界面
用户在首页点击登录,进入用户登录界面uerLogin.jsp,输入用户账号和密码,点击登录,用户账号和密码信息由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜索该用户账号与密码,将最终结果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。
用户点击注销,清空浏览器session值,然后返回登录页或者首页。
登录界面如下所示。
图5-2登录界面
登录用户在首页点击进入用户中心userCenter.jsp,再点击修改个人信息按钮进入userChangeInfo.jsp界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户信息,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户信息并将用户信息以对象的形式层层返回到userChangeInfo.jsp界面,显示出当前用户的个人信息。
若用户要对个人信息进行修改,则通过修改当前信息之后点击确认,向控制层userAction发送更改后的用户信息,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户信息,若成功则反馈注册成功,则返回的userChangeInfo.jsp界面被更改成功;若失败则显示修改失败。
用户可以在首页进行宠物商品搜索,在搜索框输入关键词后,前台发起请求,将传递的keyword参数信息从前台传递ShangpinController类里,匹配到list()方法,list()方法调用ShangpinServiceImpl类的getShangpinByKeywordCategory()方法,如果没有该关键词,则返回空的结果集。
宠物商品搜索界面如下。
图5-3商品搜索界面
用户在登录状态下浏览宠物商品时可将该宠物商品加入宠物商品购买订单,从session中取出该用户的信息,点击加入宠物商品购买订单后前台发起请求,将对应的商品数量shuliang、id参数信息从前台传递GoumaiController类里,匹配到add()方法,add()方法调用GoumaiServiceImpl类的add()方法。
宠物商品购买界面如下所示。
图5-4宠物商品购买界面
用户在登录状态下浏览宠物信息时可将该宠物信息加入收藏记录,从session中取出该用户的信息,点击加入宠物信息收藏前台发起请求,将对应的宠物信息shichang、id参数信息从前台传递XiadanController类里,匹配到add()方法,add()方法调用XiadanServiceImpl类的add()方法。
宠物信息界面如下所示。
图5-5宠物信息界面
管理员选择个人中心的修改本人密码。通过密码框输入现密码和2次新密码,如果现密码错误,则提示修改失败。如果2次新密码不一致,则提示修改失败。都没问题的话,系统提示修改成功,并返回登录界面。
密码修改界面如下所示。
图5-6密码修改界面
管理员在后台管理界面点击到所有宠物商品界面shangpinxinxi_list.jsp,向控制层shangpinxinxiAction发送请求,搜索当前所有宠物商品信息,shangpinxinxiAction向shangpinxinxiDAOImp调用搜索全部宠物商品的请求,向数据库的宠物商品表搜索当前所有商品并将宠物商品信息以对象的形式层层返回到shangpinxinxi_list.jsp界面,显示出当前所有宠物商品信息。若要对宠物商品信息进行修改和删除,则分别进入shangpinxinxi_updt.jsp或shangpinxinxi_delete.jsp,通过shangpinxinxiAction向shangpinxinxiDAOImp调用对应的修改或删除方法,向数据库的商品表做相应的持久层操作。
宠物商品中心界面如下所示。
图5-7宠物商品中心界面
管理员在后台管理界面点击到所有宠物疫苗界面chongwufuwuxinxi_list.jsp,向控制层chongwufuwuxinxiAction发送请求,搜索当前所有宠物疫苗信息,chongwufuwuxinxiAction向chongwufuwuxinxiDAOImp调用搜索全部宠物疫苗的请求,向数据库的宠物疫苗表搜索当前所有宠物疫苗并将宠物疫苗信息以对象的形式层层返回到chongwufuwuxinxi_list.jsp界面,显示出当前所有宠物疫苗信息。
宠物疫苗管理界面如下所示。
图5-8宠物疫苗管理界面
根据需求,需要对科室医生进行添加、删除或修改详情信息。删除或修改科室医生时,系统根据科室医生的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询科室医生状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
添加科室医生时,会给出数据填写的页面,该页面根据填写好的科室医生编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
科室医生页面设计效果如下图所示。
图5-9科室医生流程图
科室医生管理的关键代码如下。
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
软件测试是软件开发完成后必须经过的一道程序,它在软件开发过程中地位十分重要,需要由专业的测试工程师来对软件进行各方面的测试,大到功能模块测试,小到代码的单元测试,这对测试工程师来说需要有足够的耐心和专业的测试方案,软件测试归根结底就是对软件的结构和功能的综合测评,需要做到结构稳定和功能正确,二者兼顾。软件测试也叫寻找系统bug的过程,世界上没有完美无缺、不存在bug的软件,只能将软件的bug降到最低最小,来追求极致。
登录测试是系统最开始就要进行,测试用户能否登录,才能完成后续的功能操作。
登录测试用例表如下所示。
表6-1登录测试
用例编号 | YL001 | 程序版本 | 1.00 |
功能名称 | 使用者登录测试 | 编制人 | 李铁蛋 |
功能描述 | 根据用户的登录情况测试 | ||
用例目的 | 测试用户登录情况是否正确 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
用户名 | 为空 | 请输入用户名 | 请输入用户名 |
密码 | 为空 | 请输入密码 | 请输入密码 |
用户密码组合 | 用户名:klouse 密码 klouses | 用户与密码不匹配 | 用户与密码不匹配 |
用户密码组合 | 用户名 : klouse 密码 klouse | 进入系统 | 正确的用户名和密码 登录系统 |
管理员在发布信息页面,通过按照预先格式发布信息,如果因为输入时候缺少相关内容,就不能发布成功,且有相应错误提示
信息录入发布测试用例表如下所示。
表6-1信息录入发布测试
用例编号 | YL002 | 程序版本 | 1.00 |
功能名称 | 信息发布测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者发布或者录入信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者录入发布信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 为空 | 请输入属性1对应的数据 | 请输入属性1对应的数据 |
属性2 | 为空 | 请输入属性2对应的数据 | 请输入属性2对应的数据 |
属性3 | 为空 | 请输入属性3对应的数据 | 请输入属性3对应的数据 |
全部输入 | 数据均填入 | 录入发布成功 | 录入发布成功 |
管理员在更新信息页面,通过按照预先格式更新信息,如果因为输入时候缺少相关内容或者更新的数据不符合当前规范的话,就不能更新成功,且有相应错误提示
信息更新测试用例表如下所示。
表6-1信息更新测试
用例编号 | YL003 | 程序版本 | 1.00 |
功能名称 | 信息更新测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者更新信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者更新信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 编号:321 | 编号更新成功 | 编号更新成功 |
属性2 | 名称:名称1 | 名称更新成功 | 名称更新成功 |
属性3 | 内容:内容1234内容 | 内容更新成功 | 内容更新成功 |
全部输入 | 数据均未更改 | 更新成功 | 更新成功 |
管理员在信息页面,通过点击数据删除按钮来删除该条数据,如果该数据和其他数据有关联,则提示是否确定删除。
信息删除测试用例表如下所示。
表6-1信息删除测试
用例编号 | YL004 | 程序版本 | 1.00 |
功能名称 | 信息删除测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者删除信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者删除信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
数据1 | 无任何关联的数据1 | 数据删除成功 | 数据删除成功 |
数据2 | 和其他数据有关联的数据2 | 请确认是否删除 | 请确认是否删除 |
在经过之前的所有的工作之后,通过对软件的测试方法、测试原则还有典型的测试用例进行全面的、深入的介绍。经过对系统的全面测试,系统目前所具有的所有功能均成功的实现并且通过了测试,整个系统实现了基于 Java 开发的期望。
宠物医疗服务平台采用Springboot框架开发,该系统非常完美的集优点于一身,成熟、强大、易理解易使用,通过使用这个结构,降低了开发的难度。本系统实现了基于Springboot的宠物服务平台,将数据操作维护的过程转化成电脑操作流程,具体实现了对系统人员管理、商品数据维护、订单数据维护、宠物医疗服务数据维护、科室医生管理数据维护,并提供查询统计功能来对宠物商品和购买的相关数据进行统计分析,让使用者能更清晰的掌握运营情况,帮助使用者进行数据操作维护,简化工作流程,提高工作效率和盈利。
目前完成的宠物医疗服务平台,还有许多有待改进的地方。一个是功能上的改进,用户理应可以修改自己的相关信息,故应增设个人中心功能;另外,系统如果能提供更多的功能就会使得系统更加丰富和多样化,比如数据当前分析和未来预测等。第二个是技术上的改进,由于对开发框架不太熟悉,权限管理这部分,本系统采用一个JSP页面来规定好导航栏,即跳转的页面,这相对比较不灵活,如果将URL路径记录到数据库并实现增删查改会比较好;另外就是对EasyUI的使用还不够熟练,视觉效果和界面观感有待提升,希望日后能对这个系统有所改进。
参考文献
[1]严超,申屠湘洁,金珊珊,潘玥.宠物医疗发展现状、存在的问题与对策研究[J].产业与科技论坛,2021,20(21):68-69.
[2]张玉香. 进一步加强宠物医院管理[N]. 华兴时报,2021-10-29(003).DOI:10.28386/n.cnki.nhxbs.2021.002733.
[3]单树倩,任佳勋.基于SpringBoot和Vue框架的数据库原理网站设计与实现[J].电脑知识与技术,2021,17(30):40-41+50.DOI:10.14004/j.cnki.ckt.2021.2868.
[4]吴铎思,马安妮. 宠物医疗业亟待走向规范化[N]. 工人日报,2021-08-03(007).DOI:10.28277/n.cnki.ngrrb.2021.003664.
[5] Walmart Rolls Out New Pet Care Services[J]. Wireless News,2020:
[6] Pet Care Stores Brings Extensive Range of Pet Supplies with Guides and Reviews[J]. M2 Presswire,2020:
[7]刘嘉琪.宠物医疗发展现状及存在问题与对策[J].中国动物保健,2020,22(10):6+18.
[8]田甜.李雪:把宠物医院开得风生水起[J].恋爱婚姻家庭(下半月),2020(08):56-57.
[9]戴嘉玮. 基于人机工程学理念的宠物医疗台研究与设计[D].山东建筑大学,2020.DOI:10.27273/d.cnki.gsajc.2020.000289.
[10]王璇,甘国君,王冠铮,罗宇航.新零售时代下的“宠爱一生”宠物医疗服务平台打造分析[J].品牌研究,2020(02):67-68.DOI:10.19373/j.cnki.14-1384/f.2020.02.026.
[11]黄可权,贺思裴.产业链视角下宠物经济发展路径研究[J].牡丹江师范学院学报(社会科学版),2019(06):35-44.DOI:10.13815/j.cnki.jmtc(pss).2019.06.004.
[12]南茜.宠物经济的未来发展情况探究[J].全国流通经济,2019(27):133-135.DOI:10.16834/j.cnki.issn1009-5292.2019.27.059.
[13]李毅,柳鑫.宠物医疗发展现状及存在问题与对策[J].中国畜禽种业,2019,15(07):10-11.
[14]杨怡清,谢娇,陈佳荟,胡颖川,刘丛丹.宠物医疗APP市场可行性分析[J].江西畜牧兽医杂志,2018(06):1-3.
[15]杨怡青,刘丛丹,谢娇,陈佳荟,胡颖川.“爱萌宠”APP的可行性分析[J].中国工作犬业,2018(11):68-70.
[16]邹茂东.宠物医院的现状和发展趋势[J].农家参谋,2018(06):137.
致谢
在老师的教导和帮助下,本人完成了本篇论文,老师对论文的内容、格式都有非常严格的要求,在我写毕业论文的过程中,他多次给出了建议,并定期检查,对我们严格要求,帮助我们在文档的编写上写到极致和正确,他这种教学和工作态度,让我对他产生无限的敬佩感和尊敬感。写毕业论文的同时,作为应届生,我也忙着找工作中,遇到了很多选择,感到困惑迷茫的时候,老师给了我很多意见,感谢老师的耐心开导,跟她的聊天我明白了许多。
我还要感谢我的父母,一直以来都非常支持和相信我,在精神和经济上给了我很多力量,如今我将毕业走上工作之路,终于能报答父母的养育教导之恩。还有我大学期间所有老师和全体同学,遇到问题时,这些老师同学总是无私地帮助我,真的非常感谢,我也会加油努力成长为一个有用的人。
免费领取本源代码、数据库,请私信