植物养护系统的设计与实现
摘 要
随着城市化进程的不断加快,植物养护成为了提升城市生态环境和居民生活品质的重要环节。传统的植物养护管理方式面临着信息化程度低、管理效率低下等问题。为了解决这些挑战,本研究旨在设计并实现一个基于Spring Boot的植物养护系统,以提高植物养护工作的科学性和高效性。通过对普通用户和管理员角色的合理划分,系统提供了多样化的功能模块,包括数据分析、角色管理、植物类型管理、植物养护管理、养护建议管理、系统提醒管理、系统管理、网站公告管理和新闻管理等核心功能,有效实现了高效、便捷的植物养护管理,降低用户在养护过程中的时间成本和信息获取成本,为用户提供了个性化的养护建议和及时的养护提醒,提高植物养护效率与质量。本研究的成果不仅为城市植物养护管理提供了技术支持,也为后续相关研究提供了可借鉴的理论与技框架。
关键词:植物养护系统;Spring Boot框架;Java语言;智能养护;绿植养护
Abstract
With the continuous acceleration of urbanization, plant maintenance has become an important link in improving urban ecological environment and residents' quality of life. The traditional plant maintenance and management methods face problems such as low level of informatization and low management efficiency. To address these challenges, this study aims to design and implement a plant care system based on Spring Boot to improve the scientific and efficient nature of plant care work. By reasonably dividing the roles of ordinary users and administrators, the system provides diversified functional modules, including data analysis, role management, plant type management, plant maintenance management, maintenance suggestion management, system reminder management, system management, website announcement management, and news management. It effectively realizes efficient and convenient plant maintenance management, reduces the time and information acquisition costs of users in the maintenance process, provides personalized maintenance suggestions and timely maintenance reminders for users, and improves the efficiency and quality of plant maintenance. The results of this study not only provide technical support for urban plant maintenance and management, but also provide a theoretical and technical framework that can be referenced for subsequent related research.
Keywords: plant maintenance system; Spring Boot framework; Java language; Intelligent maintenance; Green plant maintenance
1 前 言
1.1 研究背景
1.2 研究意义
1.3 国内外研究现状
1.3.1 国内研究现状
1.3.2 国外研究现状
1.4 论文结构与章节安排
2 关键技术
2.1 Java语言
2.2 MySQL数据库
2.3 Spring Boot框架
2.4 B/S模式
3 系统分析
3.1 可行性分析
3.1.1 技术可行性
3.1.2 经济可行性
3.1.3 操作可行性
3.1.4 运行可行性
3.2 功能需求分析
3.3 系统性能分析
3.4 系统流程分析
3.4.1 程序操作流程
3.4.2 登录流程
3.4.3 注册流程
4 系统设计
4.1 总体设计
4.1.1 系统架构设计
4.1.2 功能模块设计
4.2 数据库设计
4.2.1 数据库E-R图设计
4.2.1 数据库表结构设计
5 系统实现
5.1 系统环境分析
5.2 系统前台功能模块实现
5.2.1 用户登录模块
5.2.2 用户注册模块
5.2.3 首页模块
5.2.4 新闻资讯模块
5.2.5 植物养护模块
5.2.6 个人中心模块
5.3 后台管理功能模块实现
5.3.1 数据分析模块
5.3.2 角色管理模块
5.3.3 植物养护管理模块
5.3.4 养护建议管理模块
5.3.5 系统管理模块
5.3.6 新闻管理模块
6 系统测试
6.1 测试意义
6.2 测试用例
6.3 测试分析
7 结论
参考文献
随着城市化进程的加速和人们生活水平的提高,植物的养护与管理逐渐受到广泛关注。植物不仅在城市绿化中发挥着重要作用,改善空气质量和生态环境,还为人们提供了美化居住空间的功能。然而,传统的植物养护方法往往依赖经验,缺乏有效的数据支持和管理工具,往往依靠人工经验进行操作,这不仅容易导致养护效果不佳,也造成了资源的浪费。在这种背景下,开发一款高效便捷的植物养护管理系统显得尤为重要。通过现代信息技术手段,整合植物养护的各类信息,可以实现科学化、系统化、智能化的管理,从而提升养护效率,改善植物生长状况,并为个人养护植物和城市生态环境的可持续发展提供保障。
本研究旨在构建一个基于Spring Boot技术的植物养护系统,以提升植物养护管理的科学性,提高整体管理效率,提供个性化服务,改善用户体验,实现实时数据分析,为植物养护提供决策支持。
本植物养护系统的设计与实现具有重要的理论与实践意义。通过引入现代化先进技术,开发一个功能完备、操作简便且用户友好的植物养护系统,不仅可以通过信息化手段整合养护信息和管理过程,优化用户养护体验,使用户可以更方便快捷地获取养护知识和建议,使得植物养护变得更加简单和有效,提升植物养护管理的科学性;而且可以通过更科学有效的植物养护管理,增强城市绿化覆盖率,从而改善城市环境,促进生态环境保护,提升居民的生活品质,有助于实现可持续发展的目标。同时,建立数据支持的决策依据,实现实时数据统计分析,通过系统的养护记录和植物数据,为植物养护提供决策支持。此外,本系统的设计与实施成果为城市生态管理、智能园艺等相关领域提供了技术支持与理论参考,促进后续研究与开发的开展。
在国内,植物养护管理的研究起步较晚,但随着信息技术和智能化设备的发展,相关研究逐渐增多。许多研究专注于通过传感器和智能硬件监测植物的生长环境,如土壤湿度、空气湿度等,并基于数据自动调节灌溉系统。例如,北京大学与企业合作开发了智能温室,通过实时监测和反馈,提升植物养护效果。随着互联网的普及,各种植物养护知识平台踊跃出现,像林业部门和商业公司联合推出的网上数据库与知识共享平台,为用户提供种植技巧及病虫害防治指南,以“中国植物园网”和“植物百科”等为例的植物在线养护知识平台,用户可以在中国植物园网站中查询和获取不同植物的养护知识。一些高校的研究团队开始探索应用大数据与人工智能技术分析植物生长数据,以实现对植物养护的智能预测与决策。如滁州技术学院开发的基于机器学习的植物养护与病虫害预警信息管理平台,可以根据养护记录和植物的病虫害识别内容,提供个性化的养护建议。
在国外,植物养护管理系统的研究相对成熟且多样化,研究应用广泛涉及不同的养护方式和管理工具。在欧美地区,尤其是在荷兰和美国,智能园艺系统已成为一种趋势。通过使用互联网连接的传感器与系统,用户能够实时监控植物生长情况。以“Grobo”为例的一种家庭园艺产品,具有全自动的种植环境控制功能,并通过手机应用控制环境数据,提供个性化的养护方案。同时,国外的一些研究机构开发的植物健康预测模型,利用计算机视觉技术分析植物叶片的图像,以识别病害或生长问题。例如,美国的“Plantix”应用,用户仅需拍摄植物的照片,系统即可识别出潜在问题并提出解决方案另外,在英国和加拿大,很多城市推出社区植物养护合作平台,鼓励居民共同参与城市绿化与养护。例如,伦敦有社区园艺项目,让居民参与共同负责绿地的维护,通过技术平台协同管理,以改善生态环境的同时提高社区居民的环保意识和参与感。
综上所述,国内外在植物养护管理系统方面的研究与应用均展现出积极的发展态势,但在智能化和系统化方面仍有进一步提升的空间。本研究拟在此基础上,结合Spring Boot等现代技术,为植物养护管理提供一种新的解决方案。
本文共分为七章,章节内容安排如下:
第一章:引言,主要介绍植物养护系统领域研究的背景和意义,概述研究的现状和系统特点。
第二章:关键技术,主要探讨和说明实现植物养护系统的关键技术。
第三章:系统分析,主要从植物养护系统的可行性、功能、性能等方面进行分析,为后续系统设计提供理论支持。
第四章:系统设计,主要对植物养护系统功能模块、数据库进行功能设计。
第五章:系统实现,主要介绍了植物养护系统各个用户的功能、系统界面的实现。
第六章:系统测试,主要对植物养护系统进行测试,验证功能完整性、稳定性和安全性,评估系统在实际运行中的性能表现。
第七章:结束语。总结全文研究内容,提出对植物养护系统领域未来发展的展望和建议,指出研究的不足和可优化之处,为相关领域的进一步探索提供参考。
Java是一种跨平台的编程语言,广泛用于开发各种类型的应用程序,包括Web应用、移动应用和大型软件系统。在植物养护系统中,Java通常用于后端开发,提供强大的处理能力和稳定性。同时Java是一种面向对象的编程语言,支持封装、继承和多态等特性,使代码更易于维护和重用。还拥有丰富的标准库和第三方框架,如Spring、Hibernate等,可以大大提高开发效率。
MySQL是一种流行的开源关系型数据库管理系统,用于存储和管理数据。在植物养护系统中,MySQL可以用于数据存储、数据查询和数据管理等方面,用户可以免费使用和修改源代码,为平台提供可靠和高性能的数据库支持。MySQL支持多种存储引擎,如InnoDB和MyISAM,可以根据不同的应用场景选择合适的存储引擎,以提高性能;提供了多种数据安全机制,如用户权限管理、数据加密和备份恢复等,确保数据的安全性。
Spring Boot是一个用于构建微服务的Java框架,简化了Spring应用程序的开发和部署过程。Spring Boot通过自动配置和约定优于配置的理念,简化了Spring应用程序的开发过程,使开发者可以更快地构建和部署应用程序;拥有丰富的生态系统,如Spring Cloud、Spring Security等,可以满足各种企业级应用的需求。在植物养护系统中,Spring Boot可以帮助开发团队快速搭建后端服务,并实现各种功能模块的集成和管理。
B/S模式(Browser/Server模式)是一种网络应用架构,其中浏览器(Browser)作为客户端与服务器(Server)进行通信。这种模式使用户可以通过普通的Web浏览器访问应用程序,而无需安装额外的客户端软件。用户通过浏览器发送请求,服务器接收并处理这些请求,然后将结果返回给浏览器显示给用户。在植物养护系统中,Spring Boot结合B/S模式的优势包括跨平台的兼容性,用户可以在不同操作系统和设备上访问应用程序。此外,维护和部署也更为简便,并且能够实现较高的安全性,因为服务器端控制了应用程序和数据的访问权限。
从技术角度来看,Spring Boot作为一种轻量级、快速构建的Java框架,能够提高开发效率,降低系统的复杂程度,易于维护和升级。同时,MySQL作为关系型数据库,能够支持平台数据的存储与管理,保障系统的稳定性和高效性。因此,本系统具有技术可行性。
从经济角度来看,基于Spring Boot搭建植物养护系统的投入成本相对较低,因为Spring Boot本身是一个免费、开源的框架,可以节省开发成本。同时,使用MySQL作为数据库也具有成本效益高的优势。因此,本系统具有经济可行性。
从操作角度来看,Spring Boot的简洁性和高度集成的特点使得系统的部署和运行相对简单,容易维护和管理的同时,能够提供一个界面直观友好和操作简单高效的系统,能满足用户的各项要求,方便用户快速上手使用。因此,本系统具有操作可行性。
从运行角度来看,正因为本系统是在服务器的基础上开发的,系统开发成功以后,用户无需导航指导便可自己上手进行操作。系统一经开发测试后,在计算机移动客户端能上网的情况下,只需在浏览器里完成所有可用操作,也无需配置复杂的使用和运行环境,只需一个网址便可进入系统。因此,本系统具有运行可行性。
本植物养护系统设计分为两个主要用户角色:普通用户和管理员。以下是对每个角色的功能需求的详细描述。
普通用户角色用例如下图所示。

-
-
-
-
-
- 普通用户用例图
-
-
-
-
系统前台普通用户具体功能说明如下所示。
- 注册登录:提供注册和登录系统的功能,普通用户可以通过注册拥有系统账户,注册成功后可使用账号+密码登录系统前台。
- 首页:提供系统搜索功能和系统功能导航栏,展示平台的轮播图、最新动态、热门信息、推荐信息等内容。
- 网站公告:提供系统相关的网站公告信息,保证普通用户及时了解平台动态。
- 新闻资讯:提供植物相关的新闻、文章展示和热门资讯推荐,让普通用户快速获取最新资讯,支持点赞、收藏、评论植物资讯。
- 植物养护:提供植物养护展示,支持关键字、排序搜索,普通用户可以浏览植物养护详细内容,并点赞、收藏和评论植物养护。
- 我的账户:提供管理个人资料功能,普通用户可修改自己的账户信息和密码信息。
- 个人中心:提供个人首页、植物养护、养护建议、系统提醒、收藏、评论管理等子菜单功能链接,普通用户可根据需求对其进行管理。
管理员角色用例如下图所示。

-
-
-
-
-
- 管理员用例图
-
-
-
-
系统后台管理管理员具体功能说明如下所示。
- 登录:管理员可直接使用账号密码登录系统后台,进行管理,可对自己的个人信息和密码信息进行修改。
- 数据分析:管理员可查看所有数据分析,包括收藏数、总访问数、用户总数、用户状态、评论数、访问数、养护建议等统计图表;并展示管理员基本信息及日历,提供功能管理入口。
- 角色管理:管理员可管理系统的所有系统用户信息,包括普通用户、管理员账号等,支持用户权限管理和角色设置和冻结,可增改删查系统用户信息。
- 植物类型管理:管理员可管理植物类型信息,包括新增、编辑、删除、查询植物类型。
- 植物养护管理:管理员可管理所有植物养护的发布、下架、更新等操作,提供搜索功能,支持查看和管控评论内容,提供养护建议操作。
- 养护建议管理:管理员可管理所有养护建议信息,包括查询、删除养护建议,提供提醒操作。
- 系统提醒管理:管理员可管理所有系统提醒信息,包括查询、删除系统提醒。
- 系统管理:管理员可管理系统的轮播图信息,包括新增、编辑、删除轮播图,提供搜索功能。
- 网站公告管理:管理员可管理平台发布的网站公告信息,包括新增、编辑、删除网站公告,提供搜索功能。
- 新闻管理:管理员可管理植物资讯和资讯分类的新增、编辑、删除等操作,提供搜索功能,支持对植物资讯的评论管控和查看。
性能需求分析是系统设计的重要组成部分,其目标是确保系统在各种负载条件下的高效、稳定和可靠。对于植物养护系统的设计与实现,下面是系统性能分析表:
-
-
-
-
- 性能需求表
-
-
-
|
项目 |
内容 |
|
响应时间 |
系统对用户请求的响应时间需在500ms以内 |
|
并发用户数 |
系统需要支持多个并发用户同时访问 |
|
吞吐量 |
系统每秒需要处理大量请求 |
|
可用性 |
系统需要保证一定的可用性 |
|
数据安全 |
用户敏感数据需要加密存储,并支持数据库备份和恢复 |
|
数据一致性 |
系统中的数据操作需保证ACID特性,确保数据一致性 |
|
扩展性 |
系统需要支持水平扩展,能够方便地增加服务器节点以应对高请求量 |
|
可维护性 |
系统代码需要清晰易懂、结构良好,方便团队成员维护和修改 |
|
日志记录 |
系统需要记录用户操作日志、异常日志以及系统运行日志 |
|
监控报警 |
系统需要实时监控运行状态,当系统异常时能够及时发送警报通知相关人员 |
|
缓存设置 |
针对频繁使用的数据,系统需要进行合适的缓存 |
用户访问平台网站,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如下图所示。

用户访问平台的网站,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如下图所示。

未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如下图所示。

-
-
-
-
-
- 注册流程图
-
-
-
-
B/S架构,即浏览器/服务器架构,是一种基于Web的分布式计算范式。在此架构中,应用程序的逻辑被巧妙地区分为客户端和服务器两部分。具体而言,客户端借助广泛使用的浏览器界面,进行应用访问与操作;而服务器端则肩负起业务逻辑处理、数据存储及管理的核心职责。值得一提的是,客户端无需安装特定的软件,用户仅需通过浏览器输入相应的URL地址,即可轻松访问应用程序,这一特性极大地提升了用户的使用便捷性和系统的维护效率。服务器端通常采用高性能的计算机和数据库系统,能够处理大量并发请求和复杂的业务逻辑。B/S架构的优势在于其跨平台性和易于维护性,开发者可以通过更新服务器端的代码来实现整个系统的升级和维护,而无需逐一更新客户端。

功能模块设计是系统开发过程中的重要阶段,它旨在将系统划分为不同的模块,每个模块负责完成特定的功能或任务。植物养护系统由多个功能模块组成,每个模块下又包含具体的功能操作。根据前文功能需求分析,可以得出功能模块图如下图所示。

E-R图有助于理清系统中的数据结构和关系,为后续的数据库表结构设计提供指导。在进行数据库设计之前,首先需要先绘制实体-关系(E-R)图。E-R图将帮助理清业务中的实体(Entity)及它们之间的关系(Relationship),从而为后续的数据库表设计提供基础。根据前文可以得出本植物养护系统拥有多个实体,在此列举主要实体,各个实体之间联系总E-R图如下图所示。

在E-R图确定后,接下来可以根据实体和关系的属性设计数据库表结构。在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 |
用户编号: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
article_id |
mediumint |
8 |
0 |
N |
Y |
文章id:[0,8388607] | |
|
2 |
title |
varchar |
125 |
0 |
N |
Y |
标题:[0,125]用于文章和html的title标签中 | |
|
3 |
type |
varchar |
64 |
0 |
N |
N |
0 |
文章分类:[0,1000]用来搜索指定类型的文章 |
|
4 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数:[0,1000000000]访问这篇文章的人次 |
|
5 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
|
6 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
7 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
8 |
source |
varchar |
255 |
0 |
Y |
N |
来源:[0,255]文章的出处 | |
|
9 |
url |
varchar |
255 |
0 |
Y |
N |
来源地址:[0,255]用于跳转到发布该文章的网站 | |
|
10 |
tag |
varchar |
255 |
0 |
Y |
N |
标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
|
11 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文:文章的主体内容 | |
|
12 |
img |
varchar |
255 |
0 |
Y |
N |
封面图 | |
|
13 |
description |
text |
65535 |
0 |
Y |
N |
文章描述 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
type_id |
smallint |
5 |
0 |
N |
Y |
分类ID:[0,10000] | |
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
显示顺序:[0,1000]决定分类显示的先后顺序 |
|
3 |
name |
varchar |
16 |
0 |
N |
N |
分类名称:[2,16] | |
|
4 |
father_id |
smallint |
5 |
0 |
N |
N |
0 |
上级分类ID:[0,32767] |
|
5 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该分类的作用 | |
|
6 |
icon |
text |
65535 |
0 |
Y |
N |
分类图标: | |
|
7 |
url |
varchar |
255 |
0 |
Y |
N |
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
|
8 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
9 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
parent |
varchar |
64 |
0 |
Y |
N |
父级菜单 | |
|
8 |
parent_sort |
int |
10 |
0 |
N |
N |
0 |
父级菜单排序 |
|
9 |
position |
varchar |
32 |
0 |
Y |
N |
位置: | |
|
10 |
mode |
varchar |
32 |
0 |
N |
N |
_blank |
跳转方式: |
|
11 |
add |
tinyint |
3 |
0 |
N |
N |
1 |
是否可增加: |
|
12 |
del |
tinyint |
3 |
0 |
N |
N |
1 |
是否可删除: |
|
13 |
set |
tinyint |
3 |
0 |
N |
N |
1 |
是否可修改: |
|
14 |
get |
tinyint |
3 |
0 |
N |
N |
1 |
是否可查看: |
|
15 |
field_add |
text |
65535 |
0 |
Y |
N |
添加字段: | |
|
16 |
field_set |
text |
65535 |
0 |
Y |
N |
修改字段: | |
|
17 |
field_get |
text |
65535 |
0 |
Y |
N |
查询字段: | |
|
18 |
table_nav_name |
varchar |
500 |
0 |
Y |
N |
跨表导航名称: | |
|
19 |
table_nav |
varchar |
500 |
0 |
Y |
N |
跨表导航: | |
|
20 |
option |
text |
65535 |
0 |
Y |
N |
配置: | |
|
21 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
22 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
code_token_id |
int |
10 |
0 |
N |
Y | ||
|
2 |
token |
varchar |
255 |
0 |
Y |
N | ||
|
3 |
code |
varchar |
255 |
0 |
Y |
N |
验证码 | |
|
4 |
expire_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
失效时间 |
|
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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: |
表maintenance_suggestions (养护建议)
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
maintenance_suggestions_id |
int |
10 |
0 |
N |
Y |
养护建议ID | |
|
2 |
ordinary_users |
int |
10 |
0 |
Y |
N |
0 |
普通用户 |
|
3 |
plant_name |
varchar |
64 |
0 |
Y |
N |
植物名称 | |
|
4 |
plant_type |
varchar |
64 |
0 |
Y |
N |
植物类型 | |
|
5 |
number_of_plants |
double |
9 |
2 |
Y |
N |
0.00 |
植物数量 |
|
6 |
growing_environment |
varchar |
64 |
0 |
Y |
N |
生长环境 | |
|
7 |
suitable_temperature |
varchar |
64 |
0 |
Y |
N |
适宜温度 | |
|
8 |
suitable_fertilizer |
varchar |
64 |
0 |
Y |
N |
适宜肥料 | |
|
9 |
pruning_suggestions |
varchar |
64 |
0 |
Y |
N |
修剪建议 | |
|
10 |
record_time |
datetime |
19 |
0 |
Y |
N |
记录时间 | |
|
11 |
remarks_details |
text |
65535 |
0 |
Y |
N |
备注详情 | |
|
12 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
13 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
14 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表 | |
|
15 |
source_id |
int |
10 |
0 |
Y |
N |
来源ID | |
|
16 |
source_user_id |
int |
10 |
0 |
Y |
N |
来源用户 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
ordinary_users_id |
int |
10 |
0 |
N |
Y |
普通用户ID | |
|
2 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 | |
|
3 |
user_age |
varchar |
64 |
0 |
Y |
N |
用户年龄 | |
|
4 |
user_gender |
varchar |
64 |
0 |
Y |
N |
用户性别 | |
|
5 |
examine_state |
varchar |
16 |
0 |
N |
N |
已通过 |
审核状态 |
|
6 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户ID |
|
7 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
plant_classification_id |
int |
10 |
0 |
N |
Y |
植物分类ID | |
|
2 |
plant_name |
varchar |
64 |
0 |
Y |
N |
植物名称 | |
|
3 |
plant_alias |
varchar |
64 |
0 |
Y |
N |
植物别名 | |
|
4 |
plant_classification |
varchar |
64 |
0 |
Y |
N |
植物分类 | |
|
5 |
cover_photo |
varchar |
255 |
0 |
Y |
N |
封面图片 | |
|
6 |
plant_illumination |
varchar |
64 |
0 |
Y |
N |
植物光照 | |
|
7 |
suitable_temperature |
varchar |
64 |
0 |
Y |
N |
适宜温度 | |
|
8 |
growing_environment |
varchar |
64 |
0 |
Y |
N |
生长环境 | |
|
9 |
remarks_information |
longtext |
2147483647 |
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 |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
plant_maintenance_id |
int |
10 |
0 |
N |
Y |
植物养护ID | |
|
2 |
ordinary_users |
int |
10 |
0 |
Y |
N |
0 |
普通用户 |
|
3 |
plant_name |
varchar |
64 |
0 |
Y |
N |
植物名称 | |
|
4 |
plant_type |
varchar |
64 |
0 |
Y |
N |
植物类型 | |
|
5 |
scientific_name |
varchar |
64 |
0 |
Y |
N |
植物学名 | |
|
6 |
cover_photo |
varchar |
255 |
0 |
Y |
N |
封面图片 | |
|
7 |
number_of_plants |
double |
9 |
2 |
Y |
N |
0.00 |
植物数量 |
|
8 |
plant_details |
longtext |
2147483647 |
0 |
Y |
N |
植物详情 | |
|
9 |
maintenance_suggestions_limit_times |
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 |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
plant_type_id |
int |
10 |
0 |
N |
Y |
植物类型ID | |
|
2 |
plant_type |
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 |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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已取消 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
schedule_id |
smallint |
5 |
0 |
N |
Y |
日程ID:[0,32767] | |
|
2 |
content |
varchar |
255 |
0 |
Y |
N |
日程内容 | |
|
3 |
scheduled_time |
datetime |
19 |
0 |
Y |
N |
计划时间 | |
|
4 |
user_id |
int |
10 |
0 |
N |
N |
用户id | |
|
5 |
create_time |
datetime |
19 |
0 |
Y |
N |
创建时间 | |
|
6 |
update_time |
datetime |
19 |
0 |
Y |
N |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
score_id |
int |
10 |
0 |
N |
Y |
评分ID: | |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
评分人: |
|
3 |
nickname |
varchar |
64 |
0 |
Y |
N |
昵称: | |
|
4 |
score_num |
double |
5 |
2 |
N |
N |
0.00 |
评分: |
|
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
7 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: | |
|
8 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: | |
|
9 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
set_reminder_id |
int |
10 |
0 |
N |
Y |
设置提醒ID | |
|
2 |
ordinary_users |
int |
10 |
0 |
Y |
N |
0 |
普通用户 |
|
3 |
set_time |
datetime |
19 |
0 |
Y |
N |
设置时间 | |
|
4 |
reminder_content |
text |
65535 |
0 |
Y |
N |
提醒内容 | |
|
5 |
system_reminder_limit_times |
int |
10 |
0 |
N |
N |
0 |
提醒限制次数 |
|
6 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
7 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
system_reminder_id |
int |
10 |
0 |
N |
Y |
系统提醒ID | |
|
2 |
ordinary_users |
int |
10 |
0 |
Y |
N |
0 |
普通用户 |
|
3 |
set_time |
datetime |
19 |
0 |
Y |
N |
设置时间 | |
|
4 |
reminder_content |
varchar |
64 |
0 |
Y |
N |
提醒内容 | |
|
5 |
reminder_time |
datetime |
19 |
0 |
Y |
N |
提醒时间 | |
|
6 |
system_reminder |
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 |
更新时间 |
|
9 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表 | |
|
10 |
source_id |
int |
10 |
0 |
Y |
N |
来源ID | |
|
11 |
source_user_id |
int |
10 |
0 |
Y |
N |
来源用户 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
文件类型 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
user_id |
int |
10 |
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 |
创建时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
考虑到植物养护系统主要面对部分人群,网站的访问量不大。系统处理、统计分析工作简单,Tomcat服务器能够满足中小型网络用户的数据处理,通过互联网Internet 接入及MySQL 5.6以上的数据库应用的需求点。系统具体开发环境如下表所示:
-
-
-
-
- 系统环境表
-
-
-
|
项目 |
开发环境 |
|
操作系统 |
Windows 11、Windows 10、Windows 8、Windows 7 |
|
开发语言 |
Java |
|
使用框架 |
Spring Boot |
|
体系结构 |
三层B/S体系结构 |
|
开发工具 |
IDEA(2020版)/MyEclipse(2017)/Eclipse、Vs Code |
|
数据库 |
MySQL 5.6以上 |
|
数据库管理工具 |
Navicat |
|
JDK版本 |
Java 1.8 |
|
Maven |
apache-maven 3.6.1-bin |
|
Tomcat |
apache-tomcat-7.0.88 |
用户输入用户名和密码后,系统首先对这些输入进行基本的格式验证,确保用户名和密码符合系统设定的格式要求(如长度、特殊字符要求等)。系统接收到用户输入后,会根据用户名查找系统中存储的用户信息数据库或者其他持久化存储方式。系统需要验证密码的正确性,验证成功即可成功登录。界面设计如下图所示。

-
-
-
-
-
- 用户登录界面设计
-
-
-
-
登录关键代码如下:
/**
* 登录
* @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, "账号或密码不正确");
}
}
用户注册时,系统要求用户提供必要的信息,例如用户名、密码、电子邮件地址等。这些信息通常由用户在注册表单中输入,并通过前端验证确保格式的正确性。注册过程完成后,系统会为新用户创建一个账户。这包括分配一个唯一的用户ID和设置初始的权限或者角色。界面设计如下图所示。

-
-
-
-
-
- 用户注册界面设计
-
-
-
-
注册关键代码如下:
/**
* 注册
* @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);
}
普通用户登录系统前台后,首先进入前台首页界面,该界面主要展示网站的主要信息和功能入口,包括系统导航栏、轮播图、热门信息推荐等。界面设计如下图所示。

提供植物相关的新闻、文章展示和热门资讯推荐,让普通用户快速获取最新资讯,支持点赞、收藏、评论植物资讯。界面设计如下图所示。

提供植物养护展示,支持关键字、排序搜索,普通用户可以浏览植物养护详细内容,并点赞、收藏和评论植物养护。界面设计如下图所示。

个人中心主要为用户提供个人首页、植物养护、养护建议、系统提醒、收藏、评论管理等子菜单功能链接,普通用户可根据需求对其进行管理。
具体包括可查看个人信息展示,可增改删查植物养护;可查阅自己的养护建议和接收的系统提醒信息;可查看和删除已收藏的系统信息;可管控和跟踪已发表的评论内容界面设计如下图所示。

管理员登录系统后台的起始界面,该界面主要提供系统数据分析图表和重要信息概览,包括收藏数、总访问数、用户总数、用户状态、评论数、访问数、养护建议等统计图表;并展示管理员基本信息及日历,提供功能管理入口。界面设计如下图所示。

管理员可管理系统的所有系统用户信息,包括普通用户、管理员账号等,支持用户权限管理和角色设置和冻结,可增改删查系统用户信息。界面设计如下图所示。

-
-
-
-
-
- 角色管理界面设计
-
-
-
-
角色管理关键代码:
@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);
}
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
管理员可管理所有植物养护的发布、下架、更新等操作,提供搜索功能,支持查看和管控评论内容,提供养护建议操作。界面设计如下图所示。

-
-
-
-
-
- 植物养护管理界面设计
-
-
-
-
发布植物养护信息关键代码如下:
@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);
}
当管理员在植物养护管理,点击“养护建议”操作,可根据该植物养护的基本信息编辑更新养护建议信息发送给用户。界面设计如下图所示。

-
-
-
-
-
- 编辑更新养护建议界面设计
-
-
-
-
编辑更新养护建议信息代码如下:
@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);
}
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
管理员可管理所有养护建议信息,包括查询、删除养护建议;提供提醒操作,支持根据该植物养护建议向用户发送系统提醒内容。界面设计如下图所示。

-
-
-
-
-
- 养护建议管理界面设计
-
-
-
-
养护建议管理关键代码如下:
@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);
}
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
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());
}
管理员可管理系统的轮播图信息,包括新增、编辑、删除轮播图,提供搜索功能。界面设计如下图所示。

-
-
-
-
-
- 系统管理界面设计
-
-
-
-
上传轮播图关键代码如下:
@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, "上传失败");
}
管理员可管理植物资讯和资讯分类的新增、编辑、删除等操作,提供搜索功能,支持对植物资讯的评论管控和查看。界面设计如下图所示。

-
-
-
-
-
- 新闻管理界面设计
-
-
-
-
新闻管理关键代码如下:
@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);
}
@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);
}
在软件开发生命周期中,系统测试占据着举足轻重的地位。通过进行全面而系统的测试,能够确保软件在实际使用环境中具备稳定运行的能力,从而满足用户的多样化需求,并显著提升软件的整体质量与可靠性。这一过程不仅有助于识别并修复潜在问题,还能为软件的持续优化提供有力支撑。
随着现代信息的快速发展,在社会各大领域中已经都开始应用网络信息技术,在应用网络技术的同时人们也开始把软件的质量问题作为了一个重要焦点来关注,因为一个软件的好与坏它决定着这个系统在市场上的生存,所以必须要把软件质量来做好,这样才有一定的生存能力。对于用户来说它们首先选用的都是保证这个系统软件的质量问题,因为一个系统的软件质量决定着用户在后期上成本经济的问题。图6.1就是纠错测试流程。

测试与纠错信息流程
在系统的功能验证阶段,将对全部的功能界面进行全面测试。具体而言,将模拟用户行为,输入各类数据并进行提交操作,随后仔细观察和分析每个页面的响应反馈。这一过程旨在验证系统的功能完整性,确保页面所呈现的功能与预期相符,并能够完全实现预设的交互逻辑。通过这种全面细致的测试方法,将确保系统在实际应用中能够稳定、准确地响应用户需求。
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
-
-
-
-
- 系统登录功能测试用例
-
-
-
|
功能描述 |
用于系统登录 | |
|
测试目的 |
检测登录时的合法性检查 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
输入的用户名和密码带有非法字符 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入的用户名或者密码为空 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入的用户名和密码不存在 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入正确的用户名和密码 |
登录成功 |
与预期结果一致 |
下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
-
-
-
-
- 注册功能测试用例
-
-
-
|
功能描述 |
用于用户注册 | |
|
测试目的 |
检测用户注册时的合法性检查 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
输入的手机号不合法 |
提示请输入正确的手机号码 |
与预期结果一致 |
|
输入的字段为空 |
提示必填项不能为空 |
与预期结果一致 |
|
输入的密码少于6位 |
提示密码必须为6-12位 |
与预期结果一致 |
|
输入的密码大于12位 |
提示密码必须为6-12位 |
与预期结果一致 |
下表是植物养护管理功能的测试用例,检测了植物养护中对植物养护的增加,删除,修改,查询等操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员登录系统。
-
-
-
-
- 植物养护管理的测试用例
-
-
-
|
功能描述 |
用于植物养护管理 | |
|
测试目的 |
检测植物养护时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加植物养护,必填项合法输入,点击提交 |
提示添加成功 |
与预期结果一致 |
|
点击添加植物养护,必填项输入为空或不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
进入植物养护详情页修改,必填项合法输入,点击提交 |
提示提交成功 |
与预期结果一致 |
|
进入植物养护详情页修改,必填项修改为空或不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除植物养护,选择植物养护删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索植物养护,输入存在的植物养护名 |
查找出相应植物养护信息 |
与预期结果一致 |
|
点击搜索植物养护,输入不存在的植物养护名 |
不显示植物养护信息 |
与预期结果一致 |
下表养护建议管理功能的测试用例,检测了养护建议中对养护建议的增加,删除,修改,查询操作等是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员登录系统。
-
-
-
-
- 养护建议管理的测试用例
-
-
-
|
功能描述 |
用于养护建议管理 | |
|
测试目的 |
检测养护建议时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加养护建议,必填项合法输入,点击提交 |
提示添加成功 |
与预期结果一致 |
|
点击添加养护建议,必填项输入不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
进入养护建议详情页修改,必填项合法输入,点击提交 |
提示提交成功 |
与预期结果一致 |
|
点击修改养护建议,必填项输入不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除养护建议,选择养护建议删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索养护建议,输入存在的养护建议名 |
查找出相应养护建议信息 |
与预期结果一致 |
|
点击搜索养护建议,输入不存在的养护建议名 |
不显示养护建议信息 |
与预期结果一致 |
下表是系统提醒管理功能的测试用例,检测了系统提醒中对系统提醒的增加,删除,修改,查询操作等是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员登录系统。
-
-
-
-
- 系统提醒管理的测试用例
-
-
-
|
功能描述 |
用于系统提醒 | |
|
测试目的 |
检测系统提醒时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加系统提醒,必填项合法输入,点击提交 |
提示添加成功 |
与预期结果一致 |
|
点击添加系统提醒,必填项输入不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
进入系统提醒详情页修改,必填项合法输入,点击提交 |
提示提交成功 |
与预期结果一致 |
|
点击修改系统提醒,必填项输入不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除系统提醒,选择系统提醒删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索系统提醒,输入存在的系统提醒名 |
查找出相应系统提醒信息 |
与预期结果一致 |
|
点击搜索系统提醒,输入不存在的系统提醒名 |
不显示系统提醒信息 |
与预期结果一致 |
下表是植物资讯管理功能的测试用例,检测了植物资讯中对植物资讯的增加,删除,修改,查询操作等是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员登录系统。
-
-
-
-
- 植物资讯管理的测试用例
-
-
-
|
功能描述 |
用于植物资讯 | |
|
测试目的 |
检测植物资讯时的各种操作的运行情况 | |
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加植物资讯,必填项合法输入,点击提交 |
提示添加成功 |
与预期结果一致 |
|
点击添加植物资讯,必填项输入不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
进入植物资讯详情页修改,必填项合法输入,点击提交 |
提示提交成功 |
与预期结果一致 |
|
点击修改植物资讯,必填项输入不合法,点击提交 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除植物资讯,选择植物资讯删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索植物资讯,输入存在的植物资讯名 |
查找出相应植物资讯信息 |
与预期结果一致 |
|
点击搜索植物资讯,输入不存在的植物资讯名 |
不显示植物资讯信息 |
与预期结果一致 |
本植物养护系统开发与设计满足相关信息的管理需求,在设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了管理员以及用户能够方便操作。系统的主要特点和优点归纳如下:
(1)本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给用户带来了极大的方便。
(2)该植物养护系统开发与设计内容全面,管理方便可以及时的全面的处理各种错误,异常,这样避免了很多因用户的马虎操作而出现的失误,其操作方便,用户界面友好,能够上网的人都可以很好的进行操作。
经过对上述的测试结果分析,所有基本功能齐全,操作简单,系统运行性能良好,系统安全可靠,能促进植物养护系统的发展,发展前景广阔。
本论文围绕基于Spring Boot的植物养护系统的设计与实现进行了全面的研究与探讨,旨在为用户提供一个高效、直观的植物养护管理平台。通过对系统架构、功能模块和技术实现的深入分析,系统最终实现了普通用户与管理员的多角色管理,具备了数据分析、角色管理、植物类型管理、植物养护管理、养护建议管理、系统提醒管理、系统管理、网站公告管理、新闻管理等诸多实用功能。该系统的构建与实施不仅能够极大地方便了用户在植物养护过程中的信息获取和管理,同时也为管理员提供了强大的数据分析和管理工具。通过科学的角色划分和功能设计,该系统有效地提升了用户体验,促进了植物养护知识的传播与应用,提高了植物养护的管理效率与质量。
虽然该系统在功能上基本满足了用户的需求,但仍有许多需要改进的地方。在接下来的开发阶段,可以在功能完整的基础上,开发手机应用程序,方便用户随时随地获取植物养护信息,并进行养护记录,满足用户的多样性需求,提高系统的可达性与实用性。同时可以增加社交与社区功能,搭建用户交流平台,允许用户分享养护经验和成果,增进植物养护爱好者之间的互动,提高系统的活跃度和用户粘性。
总之,本植物养护系统不仅是一个单纯的管理工具,更是推动植物养护知识普及、提升园艺爱好者技能的平台。在未来的发展中,期待系统能不断迭代优化,满足更广泛用户的需求,为用户带来更好的服务体验。
[1]陆向艳,柳明洲.基于SpringBoot的农产品溯源系统的设计与实现[J].电脑知识与技术,2024,20(26):35-36+39.DOI:10.14004/j.cnki.ckt.2024.1351.
[2]刘东林,毛环,刘红杏.基于微信小程序构建中医药知识科普平台[J].健康必读,2024,(21):9.
[3]林芷菁.自然教育视角下的植物科普小程序界面视觉设计[J].玩具世界,2024,(05):163-165.
[4]韩小龙,司珍,吕晓峰,等.基于面向对象编程的Java语言程序设计方法分析[J].集成电路应用,2024,41(01):228-229.DOI:10.19339/j.issn.1674-2583.2024.01.103.
[5]左悦,林宁.基于SpringBoot的古建筑数字化信息管理系统设计与实现[C]//全国高等学校计算机教育研究会新科技与继续教育分会,广西电子学会.第31届全国计算机新科技与教育学术会议论文集.南宁学院土木与建筑工程学院;南宁学院信息工程学院;,2023:6.DOI:10.26914/c.cnkihy.2023.109404.
[6]刘杰.基于Web服务的植物养护与病虫害预警信息管理平台[J].佳木斯大学学报(自然科学版),2023,41(05):128-130.
[7]袁琳琳.浅析Java语言在计算机软件开发中的应用[J].信息记录材料,2023,24(09):81-83.DOI:10.16009/j.cnki.cn13-1295/tq.2023.09.006.
[8]陈蓓蕾,洪年松.基于SpringBoot的数据库接口设计[J].信息与电脑(理论版),2023,35(16):181-183.
[9]瑞睿,高俊虹.用户认知视角下网站界面轻量化设计研究——以植物科普网站为例[J].美与时代(上),2023,(06):27-30.DOI:10.16129/j.cnki.mysds.2023.06.023.
[10]王颢毅,何兴,吕承昊,等.基于人工智能的云花卉养护系统设计[J].电子设计工程,2023,31(10):29-33.DOI:10.14022/j.issn1674-6236.2023.10.007.
[11]王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
[12]何怀文,蔡显华,杨毅红.基于深度学习的园林植物病虫害智能识别系统[J].现代计算机,2022,28(15):112-116.
[13]Stephanie P ,Timothy F ,M. E R .Strategies for Long-Term Monitoring of Riverscour Plant Communities to Inform Science-Based Management[J].Natural Areas Journal,2022,42(3):177-184.
[14]顾涵文.基于UML的知识分享系统设计与实现[J].科学技术创新,2022,(07):81-84.
[15]方钇霖,王兆伟.西藏野生动植物信息化管理系统的研究与设计[J].中国科技投资,2021,(21):33-34.
[16]聂思怿.基于物联网的室内立体化绿植养护系统的设计与实现[D].北京邮电大学,2021.DOI:10.26969/d.cnki.gbydu.2021.000506.
[17]陈有英.基于SpringBoot的古村落科普平台的设计与实现[J].科技视界,2021,(06):19-20.DOI:10.19694/j.cnki.issn2095-2457.2021.06.07.
[18]韦云飞,黄威顺,王丽家,等.园林植物主题网站的设计与开发研究[J].种子科技,2020,38(08):39-40.
[19]沈广爽,刘姣,李双,等.校园植物信息系统构建与应用[J].实验技术与管理,2020,37(02):205-208+211.DOI:10.16791/j.cnki.sjg.2020.02.049.
[20]Shaowei C ,Jing L ,Jian W , et al.Design of plant growth information acquisition and management system based on WIFI[J].MATEC Web of Conferences,2017,13900213-00213.
这次毕业设计能够完成,最重要的就是来自指导老师的帮助,是导师不厌其烦的对我的论文及毕业设计提出非常有建设性的建议,我的毕设施能够完成离不开导师的帮助。在此,我对导师由衷的表示感谢,
其次要感谢大学四年里学院里所有的任课老师的教导,老师们在我整个大学四年里给予了我丰富的知识,让我能够在大学中不虚度光阴,踏踏实实的学习,没有这些老师不辞辛劳的教诲,我无法完成这四年的学业。
最后,我要感谢我的家人和同学们。感谢父母在物质与精神上给予我无限的支持和鼓励。感谢我的同学们,在论文写作期间,你们给予了我许多宝贵的建议和帮助,让我在学术研究的道路上不再孤单。
再次感谢所有在我大学生活中给予我帮助和支持的人们。您们的关怀和鼓励将永远铭刻在我的心中,成为我未来前行的动力。
由于自己的水平有限,毕设仍然存在着很大的缺陷,各位老师若提出意见,我会努力改正。


被折叠的 条评论
为什么被折叠?



