随着社会经济的发展,人们的生活水平不断提高,宠物产业逐渐兴起。越来越多的人选择领养宠物,宠物已成为人们生活中的重要组成部分。然而,宠物领养及健康管理方面的问题日益凸显。为此,本文提出并实现了一种基于Java的宠物领养及健康管理系统。本系统采用Spring Boot框架进行开发。Spring Boot作为Java开发领域的先进框架,具有简洁的配置、快速的开发等特点,使用Spring Boot开发可以提高系统的可维护性和可扩展性,满足宠物领养及健康管理系统的需求。
本系统主要包括普通用户和管理员这两大模块。用户功能模块主要包括注册登录、系统公告、宠物信息、宠物用户和感谢信息等功能;管理员功能主要包括系统用户、充值记录管理、宠物信息管理、领养申请管理、宠物寄养管理、订单配送管理、宠物上报管理、感谢信息管理、系统管理、系统公告管理等功能。研究此系统旨在为宠物主人和宠物提供更加便捷、高效的服务。
关键词:宠物领养;健康管理;Java;Spring Boot
Abstract
With the development of social economy, people's living standards are constantly improving, and the pet industry is gradually emerging. More and more people are choosing to adopt pets, which have become an important part of people's lives. However, issues related to pet adoption and health management are becoming increasingly prominent. Therefore, this article proposes and implements a Java based pet adoption and health management system. This system is developed using the Spring Boot framework. As an advanced framework in the Java development field, Spring Boot has the characteristics of simple configuration and fast development. Using Spring Boot for development can improve the maintainability and scalability of the system, meeting the needs of pet adoption and health management systems.
This system mainly includes two modules: ordinary users and administrators. The user function module mainly includes functions such as registration and login, system announcements, pet information, pet users, and thank-you messages; The administrator functions mainly include system users, recharge record management, pet information management, adoption application management, pet foster management, order delivery management, pet reporting management, thank you information management, system management, system announcement management, and other functions. The research on this system aims to provide more convenient and efficient services for pet owners and pets.
Keywords: Pet adoption; Health management; Java; Spring Boot
第一章 项目概述
1.1 项目背景
随着社会发展和人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。宠物的健康问题也日益受到关注,但很多宠物主人在面对宠物健康问题时往往缺乏专业的指导和建议。如何更好地领养和照顾宠物,提高宠物的生活质量,成为当下亟待解决的问题。随着信息技术的不断发展,越来越多的技术被应用于宠物行业。
Java作为一种成熟、稳定、易于扩展的编程语言,已被广泛应用于各个领域。利用Java开发宠物领养及健康管理系统,可以实现系统的可维护性、可扩展性和可重用性,从而满足不断变化的用户需求和技术发展。此外,Spring Boot作为一种轻量级、易于上手的Java开发框架,具有快速构建Web应用的能力。同时,随着移动互联网和大数据技术的发展,为开发宠物领养及健康管理系统提供了强大的技术支持。
1.2项目适用范围
基于Java的宠物领养及健康管理系统的适用范围主要包括以下几个方面:
1.宠物服务机构:如宠物店、宠物医院、宠物救助站等,这些机构需要对大量的宠物
信息进行管理,包括宠物的领养信息、健康记录、疫苗接种情况等。使用该系统可以大大提高工作效率,减少人力成本,并更好地为宠物提供服务。
2.个人宠物主人:宠物主人可以通过该系统方便地管理自己宠物的信息,包括宠物的健康状况、饮食情况、疫苗接种提醒等。此外,该系统还可以提供宠物寄养、宠物用品购买等功能,帮助宠物主人更好地照顾自己的宠物。
3.政府部门和动物保护组织:这些机构需要对流浪动物进行管理和救助,使用该系统
可以方便地记录动物的领养情况、健康状况、救助历程等,有助于更好地管理和保护流浪动物。
总之,基于Java的宠物领养及健康管理系统适用于所有需要管理宠物信息、关注宠物健康的场景,无论是宠物服务机构、个人宠物主人还是政府部门和动物保护组织,都可以从中受益。
操作系统:Windows 11、Windows 10、Windows 8、Windows 7
开发语言:Java
使用框架:spring boot
开发工具:IDEA(2020版)/MyEclipse(2017)/Eclipse、vs code
数据库:MySQL 5.6以上
数据库管理工具: Navicat
JDK版本:Java sdk 1.8
Maven:apache-maven 3.6.1-bin
第二章 系统分析
2.1 可行性分析
2.1.1技术可行性
Java 是一种成熟、稳定、安全的语言,已经被广泛用于构建各种复杂的应用系统。Java 的强大功能、跨平台性以及广泛的支持,使其非常适合用于开发宠物领养及健康管理系统。此外,Spring Boot 是一个简化了 Spring 应用开发的框架,它提供了许多开箱即用的功能和工具,如自动配置、内嵌服务器、无代码生成和XML配置等。这使得开发者可以更加快速地构建和部署应用。
Spring Boot 的快速开发能力意味着项目可以在较短的时间内完成,从而降低开发成本。Spring Boot 简化了配置和管理,减少了不必要的资源消耗,如服务器硬件和运维人力成本。此外,采用Spring Boot框架开发的系统通常具有更好的性能和稳定性,这有助于提高用户满意度,进而实现长期的经济效益。
随着社会的发展,越来越多的人开始养宠物,对宠物领养和健康管理系统的需求也在不断增加。同时一些地方政府可能会提供政策支持,鼓励开发这样的系统,以提高社会的宠物管理和服务水平。
2.2 功能性需求
2.2.1 用例概述
用例概述是一种软件工程的技术,主要用于描述系统应具有的功能或行为。用例(Use Case)通常包括三个主要部分:参与者、用例描述和用例关系。用例描述提供了一种描述系统的需求或目标的方法,这通常以成功交互序列的形式给出,即用例中的主角(参与者)执行的操作序列。在编写用例概述时,需要考虑以下几个方面:
1.参与者:识别与系统交互的人或其他系统,并确定他们的角色和目标。
2.用例描述:描述参与者与系统之间的交互,包括输入、输出和系统响应。使用简短、明确的语句描述预期结果。
3.约束和假设:说明实现该用例的约束条件和任何假设。这有助于在开发过程中考虑潜在的问题和限制。
2.2.2 用例描述
按照基于Java的宠物领养及健康管理系统的角色,主要包括普通用户和管理员这两大功能模块。
- 普通用户功能主要包括注册登录、首页、系统公告、宠物信息、宠物用品、感谢信息、我的(我的账户、个人中心、退出),其中个人中心包括个人首页、余额信息、充值记录、领养申请、领养信息、宠物寄养、房间分配、购买信息、取消购买、订单配送、签收状态、宠物上报和收藏信息。其用例图如下图2-1所示:

图2-1 普通用户用例图
- 管理员功能主要包括后台首页、系统用户、余额信息管理、充值记录管理、宠物品种管理、宠物信息管理、领养申请管理、领养信息管理、宠物房间管理、宠物寄养管理、房间分配管理、物品分类管理、购买信息管理、取消购买管理、订单配送管理、签收状态管理、宠物上报管理、感谢信息管理、系统管理、系统公告管理。其用例图如下图2-2所示:
图2-2 管理员用例图
- 系统相关用例描述如下所示:
表2-1 系统公告浏览用例描述
描述项 | 说明 |
用例名称 | 系统公告浏览 |
用例描述 | 用户可以查看公告的详情 |
参与者 | 用户 |
前置条件 | 使用者是普通用户类型并成功进入该系统 |
后置条件 | 浏览成功 |
主事件流 | (1)用户可以浏览系统公告的模块、公告的内容 (2)用户点击公告可以对公告进行详情阅读 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表2-2 宠物领养申请用例描述
描述项 | 说明 |
用例名称 | 宠物领养申请 |
用例描述 | 用户可以查看宠物信息列表中某个宠物的详情并可以申请领养 |
参与者 | 用户 |
前置条件 | 用户是普通用户并成功进入该系统 |
后置条件 | 申请信息提交成功且显示在个人中心中的领养申请列表中 |
主事件流 | 系统检查是否是系统用户 未注册的用户可以查看宠物信息 已注册的用户的可以提交申请领养宠物信息 |
异常事件流 | e1.报500错误 e2.数据库连接异常 e3.申请领养信息不显示 |
表2-3个人信息管理用例描述
用例名称 | 用户修改个人信息 |
参与者 | 用户 |
描述 | 用户查看、修改个人信息 |
前置条件 | 用户已登录到系统中 |
后置条件 | 无 |
事件流 | (1)用户查看个人信息 (2)用户修改个人信息 |
补充说明 | (a)用户可修改密码 (b)用户可修改个人资料,例如姓名,头像等 |
表2-4系统公告管理用例描述
用例名称 | 系统公告管理 |
参与者 | 管理者 |
描述 | 管理者提供新增、修改、删除、查阅等功能 |
前置条件 |
|
后置条件 | 无 |
事件流 | (1)管理者查看修改公告 (2)管理者添加公告 (3)管理者删除公告 |
补充说明 | (a)新添加的公告不符合要求时会添加失败 (b)修改的公告不符合要求时会修改失败 |
表2-5 收藏用例描述
用例名称 | 收藏 |
参与者 | 用户 |
描述 | 用户将内容加入收藏夹 |
前置条件 | 用户已登录 |
后置条件 | 无 |
事件流 | (1)在收藏页加入收藏 (2)更新并显示收藏夹 |
补充说明 | 无 |
基于Java的宠物领养及健康管理系统的非功能性需求比如系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1基于Java的宠物领养及健康管理系统非功能需求表
安全性 | 主要指基于Java的宠物领养及健康管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指基于Java的宠物领养及健康管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响基于Java的宠物领养及健康管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着基于Java的宠物领养及健康管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 基于Java的宠物领养及健康管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4开发流程分析
软件开发设计的思想始终贯穿本系统,前期需要进行功能分析,功能设计,还有对系统后台支持数据库的设计,利用编码技术对设计的系统进行实现,然后检测和完善。其开发流程如下图2-3所示。
图2-3 开发流程图
本章主要讨论的内容包括基于Java的宠物领养及健康管理系统的技术路线、体系结构设计、数据库系统设计。
3.1 技术路线
本系统采用B/S结构,前端框架拟采用渐进式JavaScript框架VUE.JS。使用Vue-Router和VUEX实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型;后端采用基于Java语言的Spring Boot作为开发框架进行系统开发。同时集成MyBatis、Redis等相关技术;采用MySQL数据库对系统数据的存储和管理。首先完成系统需求分析,确定系统功能,然后完成系统数据库、系统架构设计,接着对系统进行测试和完善,最后完成毕业论文的撰写。技术路线图如下图所示:

图3-1 系统技术路线图
3.2.1功能结构
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本基于Java的宠物领养及健康管理系统中的用例。根据前面章节的需求分析得出系统的整体功能结构,其总体设计模块图如图3-2所示。

图3-2 系统功能结构图
本系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。

图3-3系统架构设计图
表现层(UI):又称UI层,主要完成本系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本系统时的舒适度。UI的界面设计也要适应不同版本的系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本系统的数据是放在服务端的MySQL数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本系统的数据存储和管理功能。
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个基于Java的宠物领养及健康管理系统中主要的数据库表总E-R实体关系图。

图3-4 系统总E-R关系图
通过上一小节中基于Java的宠物领养及健康管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此主要罗列几个主要的数据库表结构设计。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表adoption_application (领养申请)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | adoption_application_id | int | 10 | 0 | N | Y | 领养申请ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
6 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
7 | application_time | date | 10 | 0 | Y | N | 申请时间 | |
8 | reason_for_application | text | 65535 | 0 | Y | N | 申请原因 | |
9 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
10 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表adoption_information (领养信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | adoption_information_id | int | 10 | 0 | N | Y | 领养信息ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
6 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
7 | adoption_time | date | 10 | 0 | Y | N | 领养时间 | |
8 | adoption_details | text | 65535 | 0 | Y | N | 领养详情 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表balance_information (余额信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | balance_information_id | int | 10 | 0 | N | Y | 余额信息ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | account_balance | int | 10 | 0 | Y | N | 0 | 账户余额 |
6 | remarks | text | 65535 | 0 | Y | N | 备注信息 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表cancel_purchase (取消购买)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | cancel_purchase_id | int | 10 | 0 | N | Y | 取消购买ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
6 | item_price | int | 10 | 0 | Y | N | 0 | 物品价格 |
7 | purchase_time | datetime | 19 | 0 | Y | N | 购买时间 | |
8 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 购买数量 |
9 | purchase_amount | varchar | 64 | 0 | Y | N | 购买金额 | |
10 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
11 | receiving_address | text | 65535 | 0 | Y | N | 收货地址 | |
12 | cancel_time | datetime | 19 | 0 | Y | N | 取消时间 | |
13 | reason_for_cancellation | text | 65535 | 0 | Y | N | 取消原因 | |
14 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
15 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表item_classification (物品分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | item_classification_id | int | 10 | 0 | N | Y | 物品分类ID | |
2 | item_classification | varchar | 64 | 0 | Y | N | 物品分类 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表order_delivery (订单配送)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | order_delivery_id | int | 10 | 0 | N | Y | 订单配送ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
6 | item_price | int | 10 | 0 | Y | N | 0 | 物品价格 |
7 | purchase_time | datetime | 19 | 0 | Y | N | 购买时间 | |
8 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 购买数量 |
9 | purchase_amount | varchar | 64 | 0 | Y | N | 购买金额 | |
10 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
11 | receiving_address | text | 65535 | 0 | Y | N | 收货地址 | |
12 | delivery_time | datetime | 19 | 0 | Y | N | 发货时间 | |
13 | shipment_status | varchar | 64 | 0 | Y | N | 发货状态 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表pet_breeds (宠物品种)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_breeds_id | int | 10 | 0 | N | Y | 宠物品种ID | |
2 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表pet_foster_care (宠物寄养)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_foster_care_id | int | 10 | 0 | N | Y | 宠物寄养ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
6 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
7 | foster_care_period | datetime | 19 | 0 | Y | N | 寄养时间 | |
8 | end_time | datetime | 19 | 0 | Y | N | 结束时间 | |
9 | reason_for_foster_care | text | 65535 | 0 | Y | N | 寄养原因 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表pet_information (宠物信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_information_id | int | 10 | 0 | N | Y | 宠物信息ID | |
2 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
3 | pet_photos | varchar | 255 | 0 | Y | N | 宠物照片 | |
4 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
5 | pet_age | varchar | 64 | 0 | Y | N | 宠物年龄 | |
6 | pet_gender | varchar | 64 | 0 | Y | N | 宠物性别 | |
7 | vaccine_situation | varchar | 64 | 0 | Y | N | 疫苗情况 | |
8 | number_of_injections | int | 10 | 0 | Y | N | 0 | 注射针数 |
9 | sterilization_or_not | varchar | 64 | 0 | Y | N | 是否绝育 | |
10 | whether_to_conceive_or_not | varchar | 64 | 0 | Y | N | 是否生育 | |
11 | pet_preferences | varchar | 64 | 0 | Y | N | 宠物喜好 | |
12 | genetic_diseases | varchar | 64 | 0 | Y | N | 遗传病 | |
13 | etiological_notes | text | 65535 | 0 | Y | N | 病因备注 | |
14 | pet_details | text | 65535 | 0 | Y | N | 宠物详情 | |
15 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
16 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表pet_reporting (宠物上报)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_reporting_id | int | 10 | 0 | N | Y | 宠物上报ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
6 | pet_photos | varchar | 255 | 0 | Y | N | 宠物照片 | |
7 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
8 | reporting_time | date | 10 | 0 | Y | N | 上报时间 | |
9 | report_details | text | 65535 | 0 | Y | N | 上报详情 | |
10 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
11 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表pet_room (宠物房间)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_room_id | int | 10 | 0 | N | Y | 宠物房间ID | |
2 | room_name | varchar | 64 | 0 | Y | N | 房间名称 | |
3 | room_number | varchar | 64 | 0 | N | N | 房间编号 | |
4 | usage_status | varchar | 64 | 0 | Y | N | 使用状态 | |
5 | room_facilities | varchar | 64 | 0 | Y | N | 房间设施 | |
6 | room_details | text | 65535 | 0 | Y | N | 房间详情 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表pet_supplies (宠物用品)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_supplies_id | int | 10 | 0 | N | Y | 宠物用品ID | |
2 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
3 | item_images | varchar | 255 | 0 | Y | N | 物品图片 | |
4 | item_classification | varchar | 64 | 0 | Y | N | 物品分类 | |
5 | serial_number | varchar | 64 | 0 | Y | N | 物品编号 | |
6 | item_price | int | 10 | 0 | Y | N | 0 | 物品价格 |
7 | item_details | text | 65535 | 0 | Y | N | 物品详情 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表purchase_information (购买信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | purchase_information_id | int | 10 | 0 | N | Y | 购买信息ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
6 | item_price | int | 10 | 0 | Y | N | 0 | 物品价格 |
7 | purchase_time | datetime | 19 | 0 | Y | N | 购买时间 | |
8 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 购买数量 |
9 | purchase_amount | varchar | 64 | 0 | Y | N | 购买金额 | |
10 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
11 | receiving_address | text | 65535 | 0 | Y | N | 收货地址 | |
12 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
13 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表recharge_records (充值记录)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | recharge_records_id | int | 10 | 0 | N | Y | 充值记录ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | recharge_time | date | 10 | 0 | Y | N | 充值时间 | |
6 | recharge_amount | int | 10 | 0 | Y | N | 0 | 充值金额 |
7 | recharge_details | text | 65535 | 0 | Y | N | 充值详情 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表regular_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_phone_number | varchar | 16 | 0 | Y | N | 用户电话 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表room_allocation (房间分配)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | room_allocation_id | int | 10 | 0 | N | Y | 房间分配ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
6 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
7 | foster_care_period | datetime | 19 | 0 | Y | N | 寄养时间 | |
8 | end_time | datetime | 19 | 0 | Y | N | 结束时间 | |
9 | reason_for_foster_care | text | 65535 | 0 | Y | N | 寄养原因 | |
10 | room_name | varchar | 64 | 0 | Y | N | 房间名称 | |
11 | room_number | varchar | 64 | 0 | Y | N | 房间编号 | |
12 | room_facilities | varchar | 64 | 0 | Y | N | 房间设施 | |
13 | foster_care_details | text | 65535 | 0 | Y | N | 寄养详情 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表signing_status (签收状态)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | signing_status_id | int | 10 | 0 | N | Y | 签收状态ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
6 | item_price | int | 10 | 0 | Y | N | 0 | 物品价格 |
7 | purchase_time | datetime | 19 | 0 | Y | N | 购买时间 | |
8 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 购买数量 |
9 | purchase_amount | varchar | 64 | 0 | Y | N | 购买金额 | |
10 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
11 | receiving_address | text | 65535 | 0 | Y | N | 收货地址 | |
12 | delivery_time | datetime | 19 | 0 | Y | N | 发货时间 | |
13 | shipment_status | varchar | 64 | 0 | Y | N | 发货状态 | |
14 | signing_status | varchar | 64 | 0 | Y | N | 签收状态 | |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表thank_you_for_your_message (感谢信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | thank_you_for_your_message_id | int | 10 | 0 | N | Y | 感谢信息ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | thank_you_for_your_name | varchar | 64 | 0 | Y | N | 感谢名称 | |
6 | thank_you_for_the_pictures | varchar | 255 | 0 | Y | N | 感谢图片 | |
7 | release_time | date | 10 | 0 | Y | N | 发布时间 | |
8 | thank_you_for_the_reason | varchar | 64 | 0 | Y | N | 感谢原因 | |
9 | thank_you_for_the_details | text | 65535 | 0 | Y | N | 感谢详情 | |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第4章系统实现
基于Java的宠物领养及健康管理系统的详细设计与实现主要是根据前面的需求分析和总体设计来设计页面并实现业务逻辑。主要从系统界面实现、业务逻辑实现这两部分进行介绍。
4.1普通用户功能模块
用户点击首页导航栏左上方的“注册”进入注册页面填写账号、密码、确认密码、昵称、邮箱、身份等信息后点击“注册”按钮,系统会对输入的信息进行验证,验证通过后即可完成注册。其界面展示如下图4-1所示。

图4-1用户注册界面图
注册代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
4.1.2用户登录界面
用户注册后通过后可以通过自己的账户名和密码进行登录,用户点击首页导航栏左上方的“登录”进入页面填写用户名、密码和验证信息后点击“登录”,系统会对输入的信息进行验证,验证通过后即可完成登录。其界面如下图4-2所示。
图4-2用户登录界面图
登录的代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
4.1.3首页界面
首页界面是用户访问系统的入口页面,系统首页以上中下的布局进行展示。用户可以查看首页展示的轮播图、网站公告等信息。其界面展示如下图4-3所示。

图4-3 首页界面图
4.1.4 系统公告界面
用户可以查看系统发布的网站公告、关于我们、联系方式、网站介绍等信息。点击网站公告进入页面可以查看该公告的详细信息。其界面如下图4-4所示。

图4-4 系统公告界面图
用户可以查看宠物信息列表中所有的宠物信息,点击某个宠物进入页面可以查看该宠物的详细信息并可以申请、点赞、收藏和评论。点击详情下方的“申请”进入页面填写申请原因后点击“提交”即可完成宠物领养申请。其界面如下图4-5所示。

图4-5 宠物信息界面图
用户可以查看宠物用品列表中所有的宠物用品信息,点击某个宠物用品进入页面可以查看该用品的详细信息并可以购买、点赞、收藏和评论。点击详情下方的“购买”进入页面填写购买数量、收货地址等信息后点击“提交”即可完成该宠物用品的购买。其界面如下图4-6所示。

图4-6 宠物用品界面图
用户可以查看感谢信息列表中所有用户发表的感谢信息,点击某个感谢信息进入页面可以查看该信息的详情并可以点赞、收藏和评论。其界面如下图4-7所示。

图4-7 感谢信息界面图
用户点击我的头像的下拉菜单“个人中心”进入页面可以查看和管理个人首页、余额信息、充值记录、领养申请、领养信息、宠物寄养、房间分配、购买信息、取消购买、订单配送、签收状态、宠物上报和收藏信息。可以查询和重置余额信息、领养信息、房间分配、订单配送;可以查询、重置、添加和删除充值记录、宠物寄养、取消购买、签收状态、宠物上报信息;可以查询、重置和删除领养申请、购买信息;可以查看或删除收藏列表信息。其界面如下图4-8所示。

图4-8 个人中心界面图
管理员可以查看系统用户(管理员、普通用户)列表中某个用户的详情,可以查询、重置、添加或删除系统用户信息。其界面如下图4-9所示:

4-9 系统用户界面图
添加的代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
管理员可以添加充值记录信息,可以对已有的用户充值记录信息进行查询、重置和删除操作。其界面如下图4-10所示:

4-10 充值记录管理界面图
删除的代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
@Transactional
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
管理员点击“宠物信息列表”可以查看已有宠物信息中某个宠物信息的详情和评论;点击“宠物信息添加”进入页面可以输入宠物名称、宠物品种、宠物年龄等信息后点击“提交”即可完成宠物信息的添加,可以对宠物信息进行增删改查操作。其界面如下图4-11所示:

4-11 宠物信息管理界面图
管理员可以查看领养申请列表中某个用户的领养申请的详情并进行审核和回复,审核通过后可以发送领养通知信息,可以对列表信息进行查询、重置和删除操作。其界面如下图4-12所示:

4-12 领养申请管理界面图
管理员可以查看宠物寄养列表中某个用户的寄养详情并提交房间分配信息,可以对列表信息进行查询、重置和删除操作。其界面如下图4-13所示:

4-13 宠物寄养管理界面图
管理员点击“宠物用品列表”可以查看已有的宠物用品中某个用户的详情和评论;点击“宠物用品添加”进入页面可以输入物品名称、物品分类、物品价格等信息后点击“提交”即可完成宠物用品的添加,可以对宠物用品信息进行增删改查操作。其界面如下图4-14所示:

4-14 宠物用品管理界面图
在系统管理界面,管理员可以查看所有轮播图信息,可以添加新的轮播图信息,对已有的轮播图信息可以进行查询、重置和删除操作。其界面如下图4-15所示:

4-15 系统管理界面图
图片上传的代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
第5章 系统测试
5.1测试目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中难以避免,这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果 如系统崩溃,安全信息,系统无法正常启动,导致安装用户手机屏幕等,为了避免这些问题,我们需要测试程序,并发现这些问题,并纠正它们 ,并使系统更长时间稳定成熟,本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但长期非常重要和必要系统的开发。
软件测试与开发过程是一样的,都必须按照软件工程的正规原理进行,遵守管理学理论。不过,目前国内的软件测试已经积累了大量经验和方法,步骤相对成熟,软件测试的效率也越来越高。
基于Java的宠物领养及健康管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在基于Java的宠物领养及健康管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
1、功能测试
从用户的角度来看,测试时不了解新开发软件的内部结构,因此可以将系统与黑匣子进行比较,盲目输入后可以查看系统给出的反馈。这种测试属于黑盒测试,在测试中如果输入错误信息系统会报错。
2、性能测试
测试软件程序的整体状况(称为性能测试)通常使用自动化测试工具来检测系统的整体功能,在负载测试和压力测试之间进行分配,在某些情况下,将这两种情况结合起来。虽然压力测试可以检测到系统可以提供的最高级别的服务,但负载测试可以测试系统如何响应增加的负载。
测试评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。
软件测试应遵循以下原则:
(1)软件测试应尽快进行,整个测试部分应在软件开发和设计的整个过程中进行。如发现错误,立即处理,将大大减少软件开发的时间,并提高软件的质量。
(2)在软件的各种测试中,测试过程中使用的计划、报告等应妥善处理和存储。其主要目的是为了便于以后系统的维护。
(3)软件测试整个过程中的聚类现象应优先考虑。
(4)对于软件测试,我们应该尽量不去和自己设计的系统进行参考,而是要测试对方的程序,以确保软件测试结果的客观性和公平性。
(5)整个测试计划严格按照软件测试的具体实施细则进行。
(6)对整个测试结果进行综合检查,尽量避免重复错误。
基于Java的宠物领养及健康管理系统满足用户的要求和需求,本系统的使用能够有效的提高用户的使用率。
测试后得到的性能和用例,系统具有足够的正确性、可靠性、稳定性,并且可以对输入数据进行准确的点击操作处理和响应测试用户的体验也得到了很好的反馈和响应时间。合理的范围,可以兼容所有主流浏览器,设计所需的效果。
6 总结
本文描述了基于Java的宠物领养及健康管理系统开发过程,该系统是通过采用现下比较流程的Java语言,采用Spring Boot框架进行开发,采用MySQL数据库存储和管理系统数据。在文中主要通过对系统进行可行性、功能、用例等方面进行分析,确定了本系统的具体功能,功能确定后就是对系统的设计以及功能的实现,最终完成系统的开发,对系统进行测试,确保系统运行的可靠性和稳定性。
在开发本系统的过程中我成长了很多,学习到了很多书本上没有的知识,目前系统虽然已经完成。由于自己专业知识有限,系统做的并不是十分完美,还有许多地方需要改进,比如界面布局方面,代码的编写方面,都可以进一步完善。以后本人将继续进行努力学习,对系统进行完善,同时希望此系统以后有机会能够投入到实际的使用当中,为用户提供便利的宠物领养和健康管理服务。
[1]粟梁.基于Java的汽车租赁管理系统[J].电脑编程技巧与维护,2024,(01):43-45+52.
[2]马绍阳,王伟东,韩斌倩等.基于Spring Boot+Vue的智能远程医疗平台的设计与实现[J].网络安全技术与应用,2024,(01):55-57.
[3]吴伶琳.基于SpringBoot的客户关系管理系统设计与实现[J].无线互联科技,2023,20(24):60-62.
[4]姜一波.基于SpringBoot+Vue的在线考试系统设计与实现[J].无线互联科技,2023,20(23):68-71.
[5]张豪,朱石磊,胡建华等.基于B/S架构的校园论坛系统的设计与实现[J].电脑知识与技术,2023,19(33):32-35.
[6]李鹏,张海燕.基于Java技术的图书馆预约座位管理系统的设计[J].电脑知识与技术,2021,17(08):71-73.
[7]何泫臻,范志聪,李孜,等.宠物健康智能监测发展现状[J].广东饲料,2023,32(10):8-14.
[8]吕秀萍,王瑞欣.“保险+健康管理”——犬等宠物保险发展新路径研究[J].中国工作犬业,2023,(08):10-12.
[9]费天乐,刘君.宠物领养一站式服务平台可行性及运行模式研究[J].国际公关,2023,(12):170-172.
[10]赵亚洲,杨晓冬.动物领养管理系统的设计与实现[J].无线互联科技,2022,19(18):61-65+72.
[11]许亦卿.一种云领养宠物创业模式[J].合作经济与科技,2022,(01):116-118.
[12]叶欣若,肖松鸿,杨妍.“爱宠e+”宠物综合服务平台开发模式研究[J].电脑知识与技术,2021,17(28):79-80.
[13]金馨.基于SSM的宠物店线上运营系统的设计与实现[D].首都经济贸易大学,2021.
[14]周粉妹,吴仁平,钱荣华,等.基于SSM的宠物领养网站设计[J].扬州职业大学学报,2021,25(01):32-35.
[15]Liang C .School Vehicle Management System Based on JAVA Language[J].Academic Journal of Computing Information Science,2023,6(9):
[16]Yang Y .Design and Implementation of Student Information Management System Based on Springboot[J].Advances in Computer, Signals and Systems,2022,6(6):
[17]Hejing W .Commerce Middle Office Management System Based on Springboot[J].International Journal of Advanced Network, Monitoring and Controls,2022,7(2):32-45.
[18]张文.基于SpringBoot的国有企业固定资产信息管理系统的设计与实现[D].华东师范大学,2023.
[19]任浩然,刘丹,景永强.JAVA在计算机软件开发中的应用研究[J].信息记录材料,2022,23(11):83-85.
[20]赵停停.基于MySQL数据库技术的Web动态网页设计研究[J].信息与电脑(理论版),2023,35(17):174-176.
致谢
首先,我要向我的论文指导老师献上最深的敬意和感谢。在整个论文创作的过程中,老师的指导是我前行道路上的明灯。他耐心地指导我,用他深厚的学识和敏锐的洞察力,提出了许多具有深远意义的建议。他的严谨治学态度、敬业务实的精神和高超的教学艺术,都为我树立了追求卓越的榜样,对我未来的人生道路和学业成就产生了深远的影响。
同时,我要向我班的同学们表达我的诚挚感谢。你们既是我的亲密战友,也是我生活中的良师。正是你们的鼓励和支持,使我在大学期间的学习和生活变得丰富多彩。我要对那些在我求学路上给予我帮助的所有老师和同学们表示衷心的感谢,是你们给了我继续前进的力量。
最后,我还要感谢我的父母,是他们用无私的爱抚养我成人,你们的养育之恩我永远不会忘记。在成长的道路上,我会不断努力,不负众望,用实际行动来回报你们对我的期望。
总之,在这篇论文中,我要感谢所有给予我帮助的人,包括指导老师、同学们、家人和朋友们。是你们的支持与关爱,让我在学术和个人生活中取得了优异的成绩。我会珍惜这份感恩之情,将这份力量用于学习和未来的生活中,不断追求卓越,成为一个更加优秀的人。