首页 > 分享 > Springboot宠物寄存管理系统

Springboot宠物寄存管理系统

摘 要

    宠物寄存管理系统是一个基于计算机技术的应用系统,旨在为宠物店提供一种便捷、高效的方式来管理宠物寄存服务。本研究通过使用现代化的软件开发技术和数据库管理方法,设计和实现了一个全面的宠物寄存管理系统。该系统具有以下主要功能:宠物房间、预约寄存、宠物美容、美容预约和宠物医疗等。经过实际测试和用户反馈,该系统在提供高效的宠物寄存管理服务方面取得了良好的效果,为宠物行业的运营和发展提供了一种创新的解决方案。宠物寄存管理系统是基于浏览器与服务器架构平台,采用跨平台的JAVA语言开发,利用Springboot框架进行逻辑控制,MySQL数据库存储数据,最后Tomcat服务器完成发布,系统可在多个环境下运行。

关键词:宠物寄存,Springboot框架,MySQL数据库

Abstract

The Pet Storage Management System is a computer technology based application system aimed at providing a convenient and efficient way for pet shops to manage pet storage services. This study designed and implemented a comprehensive pet storage management system using modern software development techniques and database management methods. The system has the following main functions: pet room, appointment storage, pet grooming, beauty appointment, and pet medical care. After practical testing and user feedback, the system has achieved good results in providing efficient pet storage management services, providing an innovative solution for the operation and development of the pet industry. The pet storage management system is based on a browser and server architecture platform, developed using cross platform Java language, using the Springboot framework for logical control, storing data in a MySQL database, and finally being published on a Tomcat server. The system can run in multiple environments.

Key words:Pet storage, Springboot framework, MySQL database

目  录

第1章 绪论

1.1 研究背景

1.2 研究现状

1.3 本文的组织结构

第2章 相关技术介绍

2.1 MySQL数据库

2.2 B/S结构

2.3 Springboot框架介绍

第3章 系统分析

3.1 可行性分析

3.1.1 法律可行性分析

3.1.2 技术可行性分析

3.1.3 经济可行性分析

3.2 功能需求分析

3.3 非功能需求分析 7

3.4 用例分析 7

3.5 业务流程分析

3.6 数据流程分析

第4章 系统设计

4.1 系统架构设计

4.2 系统功能结构 12

4.3 功能模块设计

4.4 数据库设计

4.4.1 E-R图

4.4.2 表结构设计

第5章 系统实现

5.1 开发工具

5.2 注册模块

5.3 登录/注销模块

5.4 用户功能模块

5.5 管理员功能模块

第6章 系统测试 35

6.1 测试概述 35

6.2 测试过程 35

6.2.1 登录测试 35

6.2.2 信息录入测试 35

6.2.3 信息更新测试 36

6.2.4 信息删除测试 36

6.3 测试结果 36

第7章 总结与展望

7.1 总结

7.2 展望

参考文献

致谢 41

第一章  绪论

1.1 研究背景与意义 随着人们对宠物关爱意识的提升和宠物行业的快速发展,越来越多的人选择将自己的宠物寄存在宠物店或宠物旅馆中,以满足工作、旅行等需要。然而,传统的宠物寄存管理方式存在许多问题,如手动登记、费用计算繁琐、信息不便查找等,无法满足日益增长的宠物寄存需求。为了提升宠物寄存服务的质量和效率,提供更好的用户体验,开发一个科技化、智能化的宠物寄存管理系统具有重要的研究意义。该系统将通过应用计算机技术和数据库管理方法,实现对宠物寄存全过程的信息管理,包括宠物、预宠物房间、预约寄存、宠物美容、美容预约等功能。这将大大简化和加速宠物寄存业务流程,减少人为错误和遗漏,提高工作效率和客户满意度。通过深入研究和应用现代软件开发技术,可以为宠物行业的运营和管理带来创新和改进,推动宠物寄存服务向智能、便捷、高效的方向发展。 1.2 国内外研究现状

国内研究现状:

在国内,宠物寄存管理系统的研究主要集中在大型宠物店、宠物旅馆等行业。许多宠物企业开始意识到科技化管理的重要性,积极引入信息技术来改进宠物寄存服务。国内的宠物寄存管理系统通常具备宠物信息管理、预约和登记、费用计算和结算、寄存记录查询和统计报表等核心功能。国内的宠物寄存管理系统常使用Java、C#等开发语言,并结合MySQL、SQLServer等数据库进行数据存储和管理。同时,部分系统会利用云计算和移动互联网技术,提供远程操作和在线支付等功能。

国外研究现状:

在国外,宠物寄存管理系统也受到了一定的研究和应用。一些宠物店和宠物旅馆开始采用先进的技术来改善宠物寄存服务。国外的宠物寄存管理系统通常具备类似的核心功能,如宠物信息管理、预约和登记、费用计算和结算等。同时,一些系统还加入了在线聊天、社交媒体分享等社交化功能,增强用户交互和体验。国外的宠物寄存管理系统普遍使用Java、Python、PHP等开发语言,并结合关系型数据库(如MySQL)或非关系型数据库(如MongoDB)进行数据管理。

。​​​​1.3 本文的组织结构

六个章节共同组成了本文研究及设计内容,包括:

第一章:绪论。本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。

第二章:相关技术介绍。主要介绍Springboot框架、Java嵌入式脚本语言、B/S模式等。

第三章:系统分析。包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。

第四章:系统设计。本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。

第五章:系统实现。将本系统分为前提的开发工具介绍和后期的功能代码实现。

第六章:系统测试。系统完成后,根据各个模块的测试用例才对各个模块进行功能测试。

第二章   相关技术介绍

2.1 MySQL数据库

科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的养老院信息管理系统也需要这项技术的支持。

用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。

2.2 B/S结构

B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。

2.3 Springboot框架介绍

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。

第三章  系统分析

3.1 可行性分析 3.1.1 法律可行性分析

开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。

3.1.2 技术可行性分析

软件产业经过多年的发展,现在已经达到了很大的规模,从事软件开发的专业人员不计其数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心地位。本系统基于的架构,目前技术已经非常的成熟,是不存在技术上面难以实现的麻烦。

3.1.3 经济可行性分析

开发软件所需的时间、人力和物力成本,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等进行深入的考虑,都符合实际的要求。所以宠物寄存管理系统具有经济可行性和实用性,可以节约管理成本。

3.2 功能需求分析

宠物寄存管理系统主要是为了更加地完善宠物领养的服务情况,对用户的信息、宠物房间、预约寄存、宠物美容、美容预约、商城管理以及宠物医疗等提供了方便的机制。本系统有多类使用者,分别是管理员和用户注册。以下是从这两种用户的角度分别介绍本系统所要实现的功能。

系统用户:

注册:首先检查用户名和邮箱是否存在,如不存在即可进行注册,并将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户信息保存到数据库中。

登录:使用宠物寄存管理系统前是需要用户登录个人账号。

宠物资讯:用户可以在线进行宠物资讯浏览等。

宠物用品:用户可以点击宠物用品进行商品浏览,搜索某个宠物用品,可以下单购买。

宠物房间:用户可以在线浏览宠物房间信息,查看房间类型、寄存费用、价格等。

预约寄存:在宠物房间界面可以点击预约寄存按钮,进行房间的预约操作。

宠物美容:浏览宠物美容项目列表。

美容预约:用户可以在线进行美容项目的预约。

管理员:

用户管理:对用户进行管理,用户的注册,包括用户昵称、用户名、用户的账号信息:

宠物资讯管理:对宠物秀资讯进行发布管理。

宠物用品管理:对宠物用品信息进行维护管理。

宠物美容管理:发布宠物美容项目信息。

宠物房间管理:对宠物房间信息进行增删改查。

房间预约管理:对用户提交的预约信息进行处理。

美容预约管理:处理用户的宠物美容项目的预约。

3.3 非功能需求分析

系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。

3.4 用例分析 1.普通用户主要使用系统进行宠物领养申请,下图所示为普通用户的用例图

图3-1 普通用户用例图

2.管理员主要负责用户管理、房间类型管理、宠物房间管理、预约寄存管理、宠物美容管理、美容预约管理、宠物医疗管理、留言板、商城管理,下图所示描述管理员的用例图。

图3-2 管理员用例图

3.5 业务流程分析

系统业务流程图如下所示。

图3-3 系统业务流程图

业务流程图(TFD)通过一些特定的符号描述业务的处理过程,它重点强调业务过程中每一项处理活动和具体业务部门的关系,选择部分模块进行具体描述。重点对本系统整体业务中最为主要的宠物商城、预约寄存、美容预约进行描述,用户进入宠物寄存管理系统后进行各种模块信息的浏览,另外,管理人员进入后端管理,以执行宠物领养模块的相关管理方法,并在解决后向客户提供反馈机制。

3.6 数据流程分析

如下为系统的顶层数据流图,外部实体有用户和管理员,分别对系统输入数据,从而得到要输出的数据。

图3-4系统顶层数据流图

如下图所示为系统底层数据流图。

图3-5系统底层数据流图

宠物寄存管理系统底层数据流图主要描述系统底层模块的数据流、数据载体、数据处理、外部实体的具体交互。本系统就是管理员和普通用户在宠物资讯、宠物房间、预约寄存、宠物商城、宠物医疗、宠物美容等模块上的数据交互。

第四章   系统设计

4.1 系统架构设计

本系统架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。

图4-1系统架构图

4.2 系统功能结构

为了将系统从“做什么”落实到“怎么做”,基于系统设计原则,对系统功能进行更适合编码实现的功能划分。根据上图的系统架构设计,整理出规范的系统功能结构图,为系统的实现编码做好准备。

如下图所示为系统功能结构图。

图4-2系统功能结构图

4.3 功能模块设计

用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户信息,得到自定义生成账号后,注册完成。未注册用户注册的活动图如下图所示。

图4-3未注册用户注册活动图

用户可进行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码信息进行核对验证,验证成功则页面直接显示登录用户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。

图4-4用户登录活动图

用户登录后,进入功能页面,进行宠物秀浏览,宠物信息搜索、宠物领养、宠物转让。用户使用功能活动图如下图所示。

图4-5用户使用功能活动图

用户功能界面可对自己的密码进行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。

图4-6修改密码活动图

4.4 数据库设计

宠物寄存管理系统采用的数据库是MySQL,该部分将根据系统需求和设计,设计合理的数据库。本系统考虑到之后系统的扩展集群,数据库将不使用外键。此外,不用外键时数据管理也较为简单,操作更加方便,性能更高。

4.4.1 E-R图

E-R图,更加直观的告诉开发人员系统的各个数据的属性,各个数据之间的联系,各个数据的类型。能通过该模型更直观地了解数据库的设计,并根据对其逐渐改善。

本系统图设计,如下图所示。

图4-7系统E-R图

4.4.2 表结构设计

本系统根据第三范式的思想设计数据库,减少最大程度的冗余,总共建立有多个表,用户注册表、宠物房间表、预约寄存表、宠物医疗表、宠物商城表、宠物美容表等。

表结构如下所示。

4.5 表appointment_storage (预约寄存)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

appointment_storage_id

int

10

0

N

Y

预约寄存ID

2

regular_users

int

10

0

Y

N

0

普通用户

3

user_name

varchar

64

0

Y

N

用户姓名

4

pet_name

varchar

64

0

Y

N

宠物名称

5

pet_photos

varchar

255

0

Y

N

宠物照片

6

pet_species

varchar

64

0

Y

N

宠物种类

7

pet_personality

varchar

64

0

Y

N

宠物性格

8

appointment_time

datetime

19

0

Y

N

预约时间

9

storage_fees

varchar

64

0

Y

N

寄存费用

10

pay_state

varchar

16

0

N

N

未支付

支付状态

11

pay_type

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

更新时间

表beauty_appointment (美容预约)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

beauty_appointment_id

int

10

0

N

Y

美容预约ID

2

regular_users

int

10

0

Y

N

0

普通用户

3

user_name

varchar

64

0

Y

N

用户姓名

4

pet_name

varchar

64

0

Y

N

宠物名称

5

appointment_time

datetime

19

0

Y

N

预约时间

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表cart (购物车)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cart_id

int

10

0

N

Y

购物车ID:

2

title

varchar

64

0

Y

N

标题:

3

img

varchar

255

0

N

N

0

图片:

4

user_id

int

10

0

N

N

0

用户ID:

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

state

int

10

0

N

N

0

状态:使用中,已失效

8

price

double

9

2

N

N

0.00

单价:

9

price_ago

double

9

2

N

N

0.00

原价:

10

price_count

double

11

2

N

N

0.00

总价:

11

num

int

10

0

N

N

1

数量:

12

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

13

type

varchar

64

0

N

N

未分类

商品分类:

14

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

表goods (商品信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

goods_id

mediumint

8

0

N

Y

产品id:[0,8388607]

2

title

varchar

125

0

Y

N

标题:[0,125]用于产品和html的<title>标签中

3

img

text

65535

0

Y

N

封面图:用于显示于产品列表页

4

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

5

price_ago

double

8

2

N

N

0.00

原价:[1]

6

price

double

8

2

N

N

0.00

卖价:[1]

7

sales

int

10

0

N

N

0

销量:[0,1000000000]

8

inventory

int

10

0

N

N

0

商品库存

9

type

varchar

64

0

N

N

商品分类:

10

hits

int

10

0

N

N

0

点击量:[0,1000000000]访问这篇产品的人次

11

content

longtext

2147483647

0

Y

N

正文:产品的主体内容

12

img_1

text

65535

0

Y

N

主图1:

13

img_2

text

65535

0

Y

N

主图2:

14

img_3

text

65535

0

Y

N

主图3:

15

img_4

text

65535

0

Y

N

主图4:

16

img_5

text

65535

0

Y

N

主图5:

17

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

19

customize_field

text

65535

0

Y

N

自定义字段

20

source_table

varchar

255

0

Y

N

来源表:

21

source_field

varchar

255

0

Y

N

来源字段:

22

source_id

int

10

0

N

N

0

来源ID:

23

user_id

int

10

0

Y

N

0

添加人

表goods_type (商品类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

int

10

0

N

Y

商品分类ID:

2

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

3

name

varchar

255

0

Y

N

商品名称:

4

desc

varchar

255

0

Y

N

描述:

5

icon

varchar

255

0

Y

N

图标:

6

source_table

varchar

255

0

Y

N

来源表:

7

source_field

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

更新时间:

表order (订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

order_id

int

10

0

N

Y

订单ID:

2

order_number

varchar

64

0

Y

N

订单号:

3

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

4

title

varchar

32

0

Y

N

商品标题:

5

img

varchar

255

0

Y

N

商品图片:

6

price

double

10

2

N

N

0.00

价格:

7

price_ago

double

10

2

N

N

0.00

原价:

8

num

int

10

0

N

N

1

数量:

9

price_count

double

8

2

N

N

0.00

总价:

10

norms

varchar

255

0

Y

N

规格:

11

type

varchar

64

0

N

N

未分类

商品分类:

12

contact_name

varchar

32

0

Y

N

联系人姓名:

13

contact_email

varchar

125

0

Y

N

联系人邮箱:

14

contact_phone

varchar

11

0

Y

N

联系人手机:

15

contact_address

varchar

255

0

Y

N

收件地址:

16

postal_code

varchar

9

0

Y

N

邮政编码:

17

user_id

int

10

0

N

N

0

买家ID:

18

merchant_id

mediumint

8

0

N

N

0

商家ID:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

21

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

22

state

varchar

16

0

N

N

待付款

订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成

23

remark

text

65535

0

Y

N

订单备注

24

delivery_state

varchar

16

0

Y

N

未配送

发货状态:未配送,已配送

表pet_grooming (宠物美容)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

pet_grooming_id

int

10

0

N

Y

宠物美容ID

2

beauticians_name

varchar

64

0

Y

N

美容师名称

3

beauticians_surname

varchar

64

0

Y

N

美容师姓别

4

introduction_to_beauticians

varchar

64

0

Y

N

美容师介绍

5

beauticians_photo

varchar

255

0

Y

N

美容师照片

6

professional_experience

text

65535

0

Y

N

从业经验

7

hits

int

10

0

N

N

0

点击数

8

praise_len

int

10

0

N

N

0

点赞数

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表pet_healthcare (宠物医疗)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

pet_healthcare_id

int

10

0

N

Y

宠物医疗ID

2

regular_users

int

10

0

Y

N

0

普通用户

3

user_name

varchar

64

0

Y

N

用户姓名

4

pet_name

varchar

64

0

Y

N

宠物名称

5

pet_photos

varchar

255

0

Y

N

宠物照片

6

pet_species

varchar

64

0

Y

N

宠物种类

7

pet_personality

varchar

64

0

Y

N

宠物性格

8

introduction_to_the_condition

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

更新时间

表pet_room (宠物房间)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

pet_room_id

int

10

0

N

Y

宠物房间ID

2

room_name

varchar

64

0

Y

N

房间名称

3

storage_fees

int

10

0

Y

N

0

寄存费用

4

room_type

varchar

64

0

Y

N

房间类型

5

room_pictures

varchar

255

0

Y

N

房间图片

6

room_characteristics

varchar

64

0

Y

N

房间特点

7

room_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

更新时间

表pet_supplies (宠物用品)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

pet_supplies_id

int

10

0

N

Y

宠物用品ID

2

pet_supplies

varchar

64

0

Y

N

宠物用品

3

cart_title

varchar

125

0

Y

N

标题:[0,125]用于产品html的标签中

4

cart_img

text

65535

0

Y

N

封面图:用于显示于产品列表页

5

cart_description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

6

cart_price_ago

double

8

2

N

N

0.00

原价:[1]

7

cart_price

double

8

2

N

N

0.00

卖价:[1]

8

cart_inventory

int

10

0

N

N

0

商品库存

9

cart_type

varchar

64

0

N

N

未分类

商品分类:

10

cart_content

longtext

2147483647

0

Y

N

正文:产品的主体内容

11

cart_img_1

text

65535

0

Y

N

主图1:

12

cart_img_2

text

65535

0

Y

N

主图2:

13

cart_img_3

text

65535

0

Y

N

主图3:

14

cart_img_4

text

65535

0

Y

N

主图4:

15

cart_img_5

text

65535

0

Y

N

主图5:

16

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

17

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

第五章    系统实现

5.1 开发工具

系统中应用的开发工具总结如下表所示。

表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

5.2 注册模块

未注册用户在用户注册界面uerRegister.jsp,输入新用户信息,点击注册后,新用户信息由界面传入控制层userAction,调用addUser(user)方法,通过userDAOImp向数据库用户表插入用户信息,由于用户账号是自动生成的,若成功则反馈注册成功,并提示新用户的用户账号;若失败则回到登录界面,并显示登录失败。

注册界面如下所示。

图5-1注册界面

用户注册关键代码如下所示。

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

5.3 登录/注销模块

用户在首页点击登录,进入用户登录界面uerLogin.jsp,输入用户账号和密码,点击登录,用户账号和密码信息由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜索该用户账号与密码,将最终结果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。

用户点击注销,清空浏览器session值,然后返回登录页或者首页。

登录界面如下所示。

图5-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.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }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.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            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());

            tokenService.save(accessToken);

            // 返回用户信息

            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, "账号或密码不正确");

        }

}

5.4 用户模块 5.4.1 个人资料模块

登录用户在首页点击进入用户中心userCenter.jsp,再点击修改个人信息按钮进入userChangeInfo.jsp界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户信息,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户信息并将用户信息以对象的形式层层返回到userChangeInfo.jsp界面,显示出当前用户的个人信息。

若用户要对个人信息进行修改,则通过修改当前信息之后点击确认,向控制层userAction发送更改后的用户信息,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户信息,若成功则反馈注册成功,则返回的userChangeInfo.jsp界面被更改成功;若失败则显示修改失败。

5.4.2 宠物资讯模块

用户在登录状态下浏览宠物资讯时,点击加入宠物资讯信息后前台发起请求,将对应的宠物shuliang、id参数信息从前台传递GoumaiController类里,匹配到add()方法,add()方法调用GoumaiServiceImpl类的add()方法。

宠物资讯界面如下所示。

图5-3宠物资讯界面

5.4.3 预约寄存模块

用户在登录状态下点击宠物房间页面进行预约寄存申请提交,从session中取出该预约寄存的信息,点击预约寄存,发起请求,将对应的预约寄存信息yuyuejicun、id参数信息从前台传递linyangController类里,匹配到add()方法,add()方法调用jicunServiceImpl类的add()方法。

预约寄存信息界面如下所示。

图5-4预约寄存界面

预约寄存的关键代码如下。

@PostMapping("/add")

    @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();

    }

5.5 管理员模块 5.5.1 宠物美容管理模块

管理员对宠物美容项目进行增删改查。通过添加某个“宠物美容”信息,输入美容师名称、美容师性别、美容师介绍、美容师图片、从业经验等,点击提高按钮,新增一项美容项目信息,管理员还可以对用户发起的美容预约进行处理。

宠物美容管理界面图如下所示。

图5-5宠物美容管理界面

美容预约管理界面如下所示。

图5-6美容预约管理界面

5.5.2 宠物房间管理模块

根据需求,需要对宠物房间进行添加、删除或修改详情信息。例如添加宠物房间时,会给出数据填写的页面,该页面根据填写好的宠物房间同样会事先发送Ajax请求查询是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。

宠物房间页面设计效果如下图所示。

图5-7宠物房间管理界面

宠物房间管理界面逻辑代码如下:

 @RequestMapping(value = {"/avg_group", "/avg"})

public Map<String, Object> avg(HttpServletRequest request) {

        Query count = service.avg(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

5.5.3 预约寄存管理模块

预约寄存功能整体流程:用户浏览宠物房间时,同时会显示房间的状态,若房间状态为可进行预约寄存操作,则会显示预约寄存的链接按钮。在用户点击此按钮时,会先通过拦截器判断用户是否登录,若未登录,会跳转至登录页面,提示用户先登录,若为登录用户就会跳转至填写预约寄存信息的页面,填写好信息之后,点击提交按钮。

预约寄存管理界面如下图所示。

图5-9预约寄存管理界面

预约寄存管理关键代码如下。

@RestController

@RequestMapping("auth")

public class AuthController extends BaseController<Auth, AuthService> {

    /**

     * 服务对象

     */

    @Autowired

    public AuthController(AuthService service) {

        setService(service);

    }

}

5.5.4 宠物医疗管理模块

管理员点击此界面可以查看用户提交的关于宠物病情具体信息,可以对此进行审核回复处理。

宠物医疗管理界面如下图所示。

图5-10宠物医疗管理界面图

宠物医疗管理的关键代码如下。

@RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

}

第六章  系统测试

6.1 测试概述

软件测试是软件开发完成后必须经过的一道程序,它在软件开发过程中地位十分重要,需要由专业的测试工程师来对软件进行各方面的测试,大到功能模块测试,小到代码的单元测试,这对测试工程师来说需要有足够的耐心和专业的测试方案,软件测试归根结底就是对软件的结构和功能的综合测评,需要做到结构稳定和功能正确,二者兼顾。软件测试也叫寻找系统bug的过程,世界上没有完美无缺、不存在bug的软件,只能将软件的bug降到最低最小,来追求极致。

6.2 测试过程 6.2.1 登录测试

登录测试是系统最开始就要进行,测试用户能否登录,才能完成后续的功能操作。

登录测试用例表如下所示。

表6-1登录测试

用例编号

YL001

程序版本

1.00

功能名称

使用者登录测试

编制人

李铁蛋

功能描述

根据用户的登录情况测试

用例目的

测试用户登录情况是否正确

测试项

测试数据

测试结果

预期结果

用户名

为空

请输入用户名

请输入用户名

密码

为空

请输入密码

请输入密码

用户密码组合

用户名:klouse 密码 klouses

用户与密码不匹配

用户与密码不匹配

用户密码组合

用户名 : klouse 密码

klouse

进入系统

正确的用户名和密码

登录系统

6.2.2 信息录入测试

管理员在发布信息页面,通过按照预先格式发布信息,如果因为输入时候缺少相关内容,就不能发布成功,且有相应错误提示

信息录入发布测试用例表如下所示。

表6-1信息录入发布测试

用例编号

YL002

程序版本

1.00

功能名称

信息发布测试

编制人

李铁蛋

功能描述

对使用者发布或者录入信息进行测试,判断其功能是否达到预期的要求

用例目的

对系统使用者录入发布信息进行原型测试。

测试项

测试数据

测试结果

预期结果

属性1

为空

请输入属性1对应的数据

请输入属性1对应的数据

属性2

为空

请输入属性2对应的数据

请输入属性2对应的数据

属性3

为空

请输入属性3对应的数据

请输入属性3对应的数据

全部输入

数据均填入

录入发布成功

录入发布成功

6.2.3 信息更新测试

管理员在更新信息页面,通过按照预先格式更新信息,如果因为输入时候缺少相关内容或者更新的数据不符合当前规范的话,就不能更新成功,且有相应错误提示

信息更新测试用例表如下所示。

表6-1信息更新测试

用例编号

YL003

程序版本

1.00

功能名称

信息更新测试

编制人

李铁蛋

功能描述

对使用者更新信息进行测试,判断其功能是否达到预期的要求

用例目的

对系统使用者更新信息进行原型测试。

测试项

测试数据

测试结果

预期结果

属性1

编号:321

编号更新成功

编号更新成功

属性2

名称:名称1

名称更新成功

名称更新成功

属性3

内容:内容1234内容

内容更新成功

内容更新成功

全部输入

数据均未更改

更新成功

更新成功

6.2.4 信息删除测试

管理员在信息页面,通过点击数据删除按钮来删除该条数据,如果该数据和其他数据有关联,则提示是否确定删除。

信息删除测试用例表如下所示。

表6-1信息删除测试

用例编号

YL004

程序版本

1.00

功能名称

信息删除测试

编制人

李铁蛋

功能描述

对使用者删除信息进行测试,判断其功能是否达到预期的要求

用例目的

对系统使用者删除信息进行原型测试。

测试项

测试数据

测试结果

预期结果

数据1

无任何关联的数据1

数据删除成功

数据删除成功

数据2

和其他数据有关联的数据2

请确认是否删除

请确认是否删除

6.3 测试结果

在经过之前的所有的工作之后,通过对软件的测试方法、测试原则还有典型的测试用例进行全面的、深入的介绍。经过对系统的全面测试,系统目前所具有的所有功能均成功的实现并且通过了测试,整个系统实现了基于 Java 开发的期望。

第七章   总结与展望

7.1 总结

宠物寄存管理系统采用Springboot框架开发,该系统非常完美的集优点于一身,成熟、强大、易理解易使用,通过使用这个结构,降低了开发的难度。本系统实现了基于Springboot的宠物寄存管理系统,将数据操作维护的过程转化成电脑操作流程,具体实现了对系统人员管理、宠物房间数据维护、预约寄存数据维护、宠物商城维护、宠物医疗数据维护等,让使用者能更清晰的掌握运营情况,帮助使用者进行数据操作维护,简化工作流程,提高工作效率和盈利。

7.2 展望

目前完成的宠物寄存管理系统,还有许多有待改进的地方。一个是功能上的改进,用户理应可以修改自己的相关信息,故应增设个人中心功能;另外,系统如果能提供更多的功能就会使得系统更加丰富和多样化,比如数据当前分析和未来预测等。第二个是技术上的改进,由于对开发框架不太熟悉,权限管理这部分,本系统采用一个Java页面来规定好导航栏,即跳转的页面,这相对比较不灵活,如果将URL路径记录到数据库并实现增删查改会比较好;另外就是对EasyUI的使用还不够熟练,视觉效果和界面观感有待提升,希望日后能对这个系统有所改进。

参考文献

[1]袁琳琳. 计算机软件Java编程特点及技术分析 [J]. 数字通信世界, 2023, (12): 87-89.

[2]陈蓓蕾,洪年松. 基于SpringBoot的数据库接口设计 [J]. 信息与电脑(理论版), 2023, 35 (16): 181-183.

[3]杨美. ZL宠物店服务营销策略研究[D]. 云南财经大学, 2023.

[4]贾润梅. 宠物寄养服务应逐渐标准化规范化[N]. 中国质量报, 2023-05-23 (008).

[5]王莹莹. 共享经济下的社区宠物寄养服务及产品设计研究[D]. 华东师范大学, 2023.

[6]王志亮,纪松波. 基于SpringBoot的Web前端与数据库的接口设计 [J]. 工业控制计算机, 2023, 36 (03): 51-53.

[7]银莉,杜啸楠. 基于SpringBoot和Vue的社区服务平台设计与实现 [J]. 电子技术, 2022, 51 (12): 182-183.

[8]包春兰,喻曦. 基于数字化的宠物寄养服务研究 [J]. 信息系统工程, 2022, (11): 143-147.

[9]张洁,何红斌,刘钰鑫. 互联网背景下宠物管理新思路——以“宠物线上服务管家”微信小程序创新训练项目为例 [J]. 甘肃畜牧兽医, 2022, 52 (04): 52-56.

[10]叶欣若,肖松鸿,杨妍. “爱宠e+”宠物综合服务平台开发模式研究 [J]. 电脑知识与技术, 2021, 17 (28): 79-80.

[11]李乐天,宁芳,蒋浩. 宠物寄养产品服务系统设计 [J]. 机电产品开发与创新, 2021, 34 (05): 60-63.

[12]Cheng F . Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework [J]. Advances in Educational Technology and Psychology, 2021, 5 (2):

[13]李悦,张丽娟,史忠超等. 移动互联网背景下宠物管家平台服务设计研究 [J]. 工业设计研究, 2019, (00): 77-81.

[14]Chen G ,Xu J . Design and implementation of efficient Learning platform based on SpringBoot Framework [J]. Journal of Electronics and Information Science, 2020, 6 (1):

[15]Chen J ,Jian C ,Hailan P . Design of Man Hour Management Information System on SpringBoot Framework [J]. Journal of Physics: Conference Series, 2020, 1646 (1):012136.

[16]张湄. 以哈尔滨为例分析宠物寄养的问题与出路 [J]. 现代营销(下旬刊), 2020, (04): 151-152.

致谢

在老师的教导和帮助下,本人完成了本篇论文,老师对论文的内容、格式都有非常严格的要求,在我写毕业论文的过程中,他多次给出了建议,并定期检查,对我们严格要求,帮助我们在文档的编写上写到极致和正确,他这种教学和工作态度,让我对他产生无限的敬佩感和尊敬感。写毕业论文的同时,作为应届生,我也忙着找工作中,遇到了很多选择,感到困惑迷茫的时候,老师给了我很多意见,感谢老师的耐心开导,跟她的聊天我明白了许多。

我还要感谢我的父母,一直以来都非常支持和相信我,在精神和经济上给了我很多力量,如今我将毕业走上工作之路,终于能报答父母的养育教导之恩。还有我大学期间所有老师和全体同学,遇到问题时,这些老师同学总是无私地帮助我,真的非常感谢,我也会加油努力成长为一个有用的人。

​​​​​​​点赞+收藏+关注  →私信领取本源代码、数据库

相关知识

Springboot宠物寄存管理系统
【开题报告】基于SpringBoot的宠物寄存商店管理系统的设计与实现
计算机毕业设计nodejs宠物寄存管理系统
宠物寄存管理系统
ASP.NET宠物寄存管理系统
SpringBoot 宠物医院管理系统180923
宠物寄存管理系统毕设源码
jsp宠物寄存管理系统29j84
Springboot宠物管理系统nt169
基于宠物寄存管理系统(源码+开题)

网址: Springboot宠物寄存管理系统 https://m.mcbbbk.com/newsview490022.html

所属分类:萌宠日常
上一篇: 校徽/毕业章
下一篇: 宠物在寄养期间死亡,责任和损失该