news 2026/4/15 12:47:41

基于Java+MySQL实现的(Web)花卉后台管理系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Java+MySQL实现的(Web)花卉后台管理系统

花卉后台管理系统

1.实习目的

1.1 使学生全面了解软件项目实施的过程,理解软件企业对于程序员的基本素质和技术能力要求。

1.2 学习掌握 html+css+js 前端开发的设计和编码。

1.3 使学生掌握 JSP 及 Servlet 基本的 JavaEE 编程技术,能够综合运用 MySQL 数据库及 MyEclipse 开发环境进行小型项目的开发。

1.4 重点培养学生的团队精神和协作意识,提高其口头和书面的沟通能力。

1.5 使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决问题的能力

1.6 重点提高学生的编程能力,使学生建立正确的编程理念,养成规范的编程习惯。

2.实习过程

2.1 技术准备

1.bootstrap-3.3.6:CSS 前端框架

2.jquery-2.2.1:js 框架

3.Maven3.3.3:项目构建工具

4.SpringMVC+Spring+Mybatis:项目后台架构设计

5.三层架构:项目分层次模块划分

6.MVC:按照 MVC 规范设计

7.RESTful 风格:超链接网址,请求地址按照 RESTFul 风格设计

8.DTO:MVC 中使用数据传输对象传递数据,按照面向对象的设计方式设计

9.数据校验:用户提交表单数据校验

10.哈希文件打散:用户上传文件按照文件名哈希码在服务端文件夹中打散

11.filter:浏览器缓存控制、中文编码处理、登陆拦截、数据压缩

12.代码重用、可维护性:使用大量配置文件配置项目模块,后期维护方便

13.单元测试、集成测试:三层架构开发过程中分层次单元测试并系统集成测试

14.MD5 加密:用户密码 MD5 加密

15.ajax 网页异步刷新:网页异步刷新,减少全网页刷新导致的性能开销

16.多条件搜索:未填写的条件选项自动忽略,都未填写的查询全表)

17.开发环境:开发环境 IntelliJIDEA15.0.2+JDK1.8+mysql50611+Tomcat8

2.2 项目实施

2.2.1 功能需求
2.2.1.1 需求分析

根据需求,要求系统具有以下功能:

由于该系统针对对象较少,是针对后台管理的操作,具有权限、订购、管理、维护功能。

在相应的权限下,具有删除或修改数据。

方便的全方位的数据查询。

2.2.1.2 可行性分析

随着科技的发展,竞争也越发激烈、残酷,商家传统的经营方式对于现今社会的竞争已明显感觉到力不从心。顾客作为市场的最大资源,已成为网络电子商务的核心,谁在管理上争先,谁就取的了最大的成功,对管理的把握将最终决定商家的命运。

网上订花管理系统正是在这种需求下经过深入的市场调研和网络系统化的指导应运而生。系统具有完善的商品查询和管理功能,基本能够中小型网店的需要。

2.2.1.3 各功能模块详细功能

分析网上花店后台管理系统是一个非常有特点的管理系统,系统由系统管理、商品管理、客户关系、订单管理、基本设置和退出系统 6 功能模块组成,规划系统功能模块如下:

系统管理:系统管理主要包括数据库备份和数据库还原。

商品管理:商品管理主要包括新到商品添加、商品查询、商品修改、商品删除,商品查看和分页。

客户关系:客户关系主要显示客户关系图和订花时间,以及查询和维护客户关系。

订单管理:订单管理模块主要包括订单添加、订单修改、订单删除、订单多条件查询、分页功能。

基本设置:基本设置主要是管理员列表设置和员工列表增删改查。

退出系统:退出系统管理员的登录 session 清空,防止停留的网页被不法分子利用。

2.2.2 总体设计

2.2.2.1 设计目标

本系统是根据中小网店的实际需求而开发的,完全能够实现商家对网店的管理,通过本系统可以达到以下目标:

系统运行稳定,安全可靠。

界面设计美观,人机交互界面友好。

信息查询灵活、方便、快捷、准确,数据存储安全可靠。

采用多种方式查询数据。

管理员随时可以修改自己的登录。

对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。

数据保密性强。

2.2.2.2 开发及运行环境

系统开发平台:IntelliJIDEA15.0.2+JDK1.8+Tomcat8+mysql5.06.11

运行平台:JDK1.8+Tomcat8+mysql5.06.11 分辨率:最佳效果 1366*768 浏览器:Chrome、Firefox

CPU:i32.4GHz;内存:512MB 以上

2.2.2.3 数据库设计

本系统采用 MySQL 数据库,系统数据库名为 flower,数据库中包括 5 个数据表。下面分别给出数据库概要说明和数据表的结构。

1.数据库概要说明

如图 2 所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图包含系统所有数据表。可以清晰地反应数据库信息。

图 2 数据库概要说明

2.数据表结构

由于篇幅所限,关于数据库中的数据表请参见附录二 2.2.2.4.系统总界面如图:

2.2.2.5 系统结构图:

2.2.2.6 代码总系统结构:

严格按照三层架构和 MVC 的设计思想进行设计,主要模块如下:Dao+Service+Model+WebController+JSP 整个系统采用面向接口编程,方便后期系统维护,其中 Dao 只定义了接口,实现由 MyBatis 自动完成,Service 和 WebController 交由 SpringIoC 容器管理,实现依赖注入、控制反转,各个模块实例初始化由 Spring 自动维护,提高系统整体性。

2.2.3 详细设计与编码

由于篇幅原因,并且严格遵循三层架构设计,因此只贴出核心的数据库操纵

的 MyBatis 配置文件。

2.2.3.1 商品管理模块设计

(1)商品添加:商品管理模块采用手动录入,在本模块中的主要功能是,首先添加花种,这是系统的入口点,添加花种主要有:花的名称、花的价格、备注、图片这四个字段,单用户点击添加花种会出现表单输入页面,在输入中会有字段的验证,包括字符和价格的验证,如果输入的不是数字,系统会进行提示,并拒绝提交。

(2)图片上传和服务器图片处理:添加图片会弹出图片文件选择框进行选择,添加到数据库中的是图片的地址,而不是二进制数据,这样方便减轻系统的压力,保证系统的运行速度,真正的图片文件以普通文件上传的形式使用 commons-fileupload 组件上传到服务器进行保存,并且在服务器中用 UUID 算法为图片生成唯一文件名,并按照该文件名进行哈希打散,将图片文件分散到 256 个不同的文件夹中,在一定程度上避免了服务器文件夹中文件数量过多导致的效率问题。

(3)商品查询:在商品管理的上方会有按商品查询的输入框,当输入产品名称时,点击查询会在下面显示商品的具体信息,并支持模糊查询。

(4)商品修改和删除:在显示页面会有修改和删除的操作,当用户点击修改时,会弹出修改页面,同样的包括名称、价格、备注和图片四个选项,然后点击提交信息,会更新到数据库中,但点击删除的,系统会进行逻辑删除数据库的数据,同时在显示页面会有分页的功能,每页会显示 10 中商品,在下方会用相应的提示。

商品管理 SQL 核心代码部分:

<mapper namespace="cn.coselding.flowerms.dao.FlowerDao"> <!-- 目的:为 dao 接口方法提供配置 --> <insert id="insert" parameterType="Flower"> insert into flowers(flowerName,price,images,remarks,number) VALUES (#{flowerName},#{price},#{images},#{remarks},#{number}); </insert> <delete id="delete"> delete from flowers where flowerID=#{flowerID}; </delete> <update id="update" parameterType="FLower"> update flowers set flowerName = #{flowerName}, price=#{price}, images=#{images}, remarks=#{remarks}, number=#{number} where flowerID=#{flowerID}; </update> <select id="queryById" resultType="Flower" parameterType="int"> select * from flowers where flowerID=#{flowerID}; </select> <select id="queryAll" resultType="Flower"> select * from flowers; </select> <select id="queryCount" resultType="int"> select count(*) from flowers; </select> <select id="queryPage" resultType="Flower"> select * from flowers limit #{startindex},#{pagesize}; </select> <select id="queryCountByName" resultType="int"> select count(*) from flowers where flowerName LIKE '%${flowerName}%'; </select> <select id="queryPageByName" resultType="Flower"> select * from flowers where flowerName LIKE '%${flowerName}%' limit #{startindex},#{pagesize}; </select> </mapper>
2.2.3.2 客户关系设计模块

客户关系管理模块是相对于系统中比较简单切相对比较好理解的模块,他的主要功能就是协助管理员进行用户的分析,进行对不同客户信息的收集和展示,对潜在的客户进行挖掘。客户查询:同样的在显示页面中有客户名称查询,当输入客户名称时,会在显示页面进行客户项目信息的显示,显示的是客户名称、订货时间、备注、删除链接。

客户来源:通过订单进行显示的,提取订单表中的所有不同用户形成一个列表供管理员查看。

客户删除:当进行对客户关系进行删除时,订单中的信息同样的会一同删除,删除同样的是进行逻辑删除。

客户关系 SQL 核心代码:

<select id="queryCustomerCountByName" resultType="int"> select count(*) from `orders` where sendName LIKE '%${customerName}%' group by sendName; </select> <select id="queryCustomerPageByName" resultType="Order"> select * from `orders` where sendName LIKE '%${customerName}%' group by sendName limit #{startindex},#{pagesize}; </select> <select id="queryCustomerCount" resultType="int"> select count(*) from `orders` group by sendName; </select> <select id="queryCustomerPage" resultType="Order"> select * from `orders` group by sendName limit # {startindex},#{pagesize}; </select> <select id="queryCustomerAll" resultType="Order"> select * from `orders` group by sendName; </select> <delete id="deleteCustomer"> delete from `orders` where sendName=#{sendName}; </delete>
2.2.3.3 订单管理设计模块

订单管理设计模块是系统中最具核心的功能模块,所有的功能都是围绕订单管理进行展开的,首先他具体的功能是:按订单号查询、订单日期查询、定花人查询、业务员查询这四大查询条件,在对使用日期进行查询的同时,使用了 HTML5 最新的日期控件。

在显示页面中订单的显示非常灵活和丰富,显示的字段主要包括:订单号、订单日期、发送时间、送花人和收花人信息、订单状态、业务员等等,并支持多搜索条件同时作用或部分条件搜索,随用户选择。

订单添加:当用户点击添加订单会弹出添加表单页面,花名和业务员都是从数据库中进行读取的供用户选择的,付款状态是分为两种:未付款、已付款,订单状态有三种:正在进行中、已取消、已完成,发送状态有两种:已发送、未发送,当用户点击生成订单的时候,会进行对数据库的插入。

同样的在显示页面中有修改和删除功能,修改的功能如果添加订单的实现页面大同小异,页面显示同样实现分页。

订单管理 SQL 核心代码:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.coselding.flowerms.dao.OrderDao"> <!-- 目的:为 dao 接口方法提供配置 --> <insert id="insert" parameterType="Order"> insert into `orders`(orderDate,sendTime,receiveName,receiveTel,receiveAdd,payStat e,salesman,sendState,remarks,status,flowerID,quantity,sendName) VALUES (#{orderDate},#{sendTime},#{receiveName},#{receiveTel},#{receiveAdd}, # {payState},#{salesman},#{sendState},#{remarks},#{status},#{flowerID} ,#{quantity},#{sendName}); </insert> <delete id="delete"> delete from `orders` where orderID=#{orderID}; </delete> <update id="update" parameterType="Order"> update `orders` SET orderDate=#{orderDate}, sendTime=#{sendTime}, receiveName=#{receiveName}, receiveTel=#{receiveTel}, receiveAdd=#{receiveAdd}, payState=#{payState}, salesman=#{salesman}, sendState=#{sendState}, remarks=#{remarks}, status=#{status}, flowerID=#{flowerID}, quantity=#{quantity}, sendName=#{sendName} where orderID=#{orderID}; </update> <select id="queryById" resultType="Order"> select * from `orders` where orderID=#{orderID}; </select> <select id="queryCount" resultType="int"> select count(*) from `orders`; </select> <select id="queryPage" resultType="Order"> select * from `orders` o,`worker` w where o.salesman=w.workerID limit #{startindex},#{pagesize}; </select> <select id="searchOrdersCount" resultType="int"> select count(*) from `orders` where (#{orderID}=-1 or orderID=#{orderID}) and (#{sendMan}='' or sendName LIKE '%${sendMan}%') and (#{saleman}=-1 or salesman=#{saleman}) and (orderDate > #{startTime}) and (orderDate <![CDATA[<]]> #{endTime}); </select> <select id="searchOrdersPage" resultType="Order"> select * from `orders` where (#{orderID}=-1 or orderID=#{orderID}) and (#{sendMan}='' or sendName LIKE '%${sendMan}%') and (#{saleman}=-1 or salesman=#{saleman}) and (orderDate > #{startTime}) and (orderDate <![CDATA[<]]> #{endTime}) limit #{startindex},#{pagesize}; </select> </mapper>
2.2.3.4 基本设置模块设计

基本设置模块分为管理员管理和职工管理,因为本系统是针对用户后台管理员进行开发的,所以在设置模块中管理是具有最高权限的,他可以添加删除修改员工的信息,但是管理员是不能删除的。

在管理员中有添加管理员功能,进行添加,用户点击添加管理员的时候会弹出添加页面进行显示,然后提交信息。

职工管理功能:当用户点击员工管理的时候会弹出员工的界面,会有按职工编号和职工姓名进行查询,同样的在显示页面会有删除和修改的链接,都是进行对员工管理进行操作,在下面会有添加员工的按钮,进行对员工的添加。

MD5 加密:对管理员密码使用 MD5 加密进行存储的,在本系统中使用的登录是 admin,密码是 123456,在数据库中存储的密码是“e10adc3949ba59abbe56e057f20f883e”这样是为了方便对管理密码的管理并减少密码泄露的风险。

管理员账号管理核心 SQL 代码:

<mapper namespace="cn.coselding.flowerms.dao.UserDao"> <!-- 目的:为 dao 接口方法提供配置 --> <insert id="addUser" parameterType="User"> <!-- 具体的 sql --> insert into `user` (username,password,name,cardID,tel,address,email) VALUES (#{username},#{password},#{name},#{cardID},#{tel},#{address},#{email} ); </insert> <select id="query4Login" resultType="User"> select * from `user` where username = #{username} and password=#{password}; </select> <select id="queryAdmins" resultType="User"> select * from `user`; </select> <select id="queryById" resultType="User"> select * from `user` where userID=#{userID}; </select> </mapper>

职工信息管理核心 SQL 代码:

<mapper namespace="cn.coselding.flowerms.dao.WorkerDao"> <insert id="insert" parameterType="Worker"> insert into worker(workername,status) VALUES (#{workername},#{status}); </insert> <update id="update" parameterType="Worker"> update worker set workername=#{workername}, status=#{status} where workerID=#{workerID}; </update> <delete id="delete"> delete from worker where workerID=#{workerID}; </delete> <select id="queryAll" resultType="Worker"> select * from worker; </select> <select id="searchWorker" resultType="Worker"> select * from worker where (#{workerID}=-1 or workerID=#{workerID}) and (#{workername}='' or workername like '%${workername}%'); </select> <select id="queryById" resultType="Worker"> select * from worker where workerID=#{workerID}; </select> </mapper>

2.2.3.5 退出系统模块

当用户点击退出管理系统的时候,系统会删除服务器 session,并退回到登录页面,防止登录的页面 session 被不法分子利用,从而泄露用户信息。

退出系统的 SpringMVCController 核心代码:

@RequestMapping(value = "/logout", method = RequestMethod.GET) public String logout(HttpSession session, Model model) { if (session != null && session.getAttribute("user") != null) { session.removeAttribute("user"); } if (session != null) { session.invalidate(); } return "redirect:/login.jsp"; }

2.2.4 测试

2.2.4.1 主页:

2.2.4.2 系统管理:

2.2.4.3 商品管理:

2.2.4.4 商品查看

2.2.4.5 添加花种

2.2.4.6 订单管理

2.2.47 订单添加

2.2.48 基本设置

2.2.4.9 管理员资料管理

2.2.4.10 职工资料管理

2.2.4.11 添加职工

2.2.4.12 退出系统后登录页面

3.实习体会

通过这次的实习,我主要通过完成一个完整的项目,把之前学习的 SpringMVC+Spring+Mybatis 框架在实际项目中得到使用和练习,并使用 Maven 构建项目和维护项目依赖,把学习到的理论知识在实践当中得以使用,对这些框架的使用变得娴熟,也在开发过程中遇到了一些问题,不过也都在参考书和网上博客的参考中使问题得到了解决。

对于我的薄弱部分——前端,也在这次的项目开发中,学会了 bootstrap、jQuery、AJAX 网页异步刷新的入门使用,并通过这些前端框架作出了还算好看的页面,也消除了我对前端设计的恐惧心理,这算是这次开发中收获最大的东西了,而网址的设计,也遵循了 RESTFul 风格,让网址的显示显得更加有意义,这次的作品简单来说算是比较合格的一个作品,通过这次的作品,我对整个 JavaWeb 的项目开发过程和整项目使用技术有了一个较为深入的理解和认识,对我之后的就业帮助很大。

4.总结与建议

在两个星期的实训过程中,大体了解了整个实训的内容和课程安排,体会较深的一点是,同学们之间的水平差异较大,安排的课程对学过的人来说太过简单,但是对于没学过的同学来说,一次性在两星期内教了 html+css+js、Servlet、JSP、Filter、JDBC、MySQL、MVC 模式,学习压力较大,根据很多同学的反映就是短时间内消化不了这么多知识点,导致在做最后作品的过程中不知所措,遇到 bug 不会解决的问题,希望以后要是还有这类的实训,可以根据同学们的不同水平安排相应的培训,这样有利于同学们更好地学习,也不会抹杀基础不好的同学们的学习编程的兴趣。

注:该系统作品已部署到外网服务器中,测试帐号 admin,密码 123456,域名为本人所有,整个作品除数据表建表为老师提供外,均为本人独立完成,本人未同意任何人参考代码,作品如有雷同,纯属他人未经本人许可盗用,特此声明!

附录一 参考文献

(1)菜 鸟 教 程 Bootstrap 教 程 文 档 :http://www.runoob.com/bootstrap/bootstrap-tutorial.html

(2)菜 鸟 教 程 jQuery 教 程 文 档 :http://www.runoob.com/jquery/jquery-tutorial.html

(3)Spring 官方文档:https://spring.io/docs

(4)菜 鸟 教 程 AJAX 教 程 :http://www.runoob.com/ajax/ajax-tutorial.html

(5)JQuery-Ajax 教 程 :http://www.runoob.com/jquery/jquery-ajax-intro.html

(6)MyBatis 官方文档:http://www.mybatis.org/mybatis-3/zh/

(7)SpringMVC 官方文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html

附录二 数据表

(1)admins(管理员表)管理员信息:

表 B.1 管理员表表(admins)

字段名

数据类型

长度

主键

描述

adminId

int

11

id

admin

varchar

20

用户名

status

tinyint

4

逻辑删除状态

password

varchar

80

密码(MD5)

email

varchar

40

找回密码邮箱

(2)flowers(商品信息表)

表 B.2 商品信息表(flowers)

字段名

数据类型

长度

描述

flowerID

int

11

主键

flowerName

varchar

50

花名

price

decimal

12

价格

images

varchar

100

图片地址

remarks

text

2

备注

number

int

11

商品库存量

(3)orders(订单信息主表)订单信息主表结构如表 B.3 所示

表 B.3 订单信息主表表(orders)

字段名

数据类型

主键

描述

orderID

int

商品订单编号

orderDate

Datatime

订单日期

sendTime

Datatime

发货日期

reciveName

Varchar(40)

接收人姓名

reciveTel

varchar(40)

接收人电话

reciveAdd

varchar(100)

接收人地址

payState

tinyint

付款状态

sendState

tunyint

发送状态

salesman

int

业务员 id

remarks

text

备注信息

status

tinyint

订单状态

sendName

Varchar(40)

送花人姓名

flowerID

Int

花种 id

quantity

Int

订单花的数量

(4)user(user 细表)订单明细表结构如表 B.4 所示。

表 B.4 用户明细表(user)

字段名

数据类型

主键

描述

userID

int

用户 id

username

Varchar(40)

用户名

password

Varchar(40)

密码 MD5

name

Varchar(40)

用户姓名

email

Varchar(50)

用户 email

cardID

Varchar(20)

证件号

tel

Varchar(20)

电话

address

Varchar(100)

地址

(5)worker 表(worker)

表 B.5 员工(worker)

字段名

数据类型

主键

描述

workerID

int

职工 id

workername

Varchar(40)

职工姓名

status

tinyint

职工状态

♻️ 资源

大小:26.5MB

➡️资源下载:https://download.csdn.net/download/s1t16/87404239

注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 1:23:53

Qwen3-4B功能测评:40亿参数模型真实表现如何

Qwen3-4B功能测评&#xff1a;40亿参数模型真实表现如何 1. 背景与选型动因&#xff1a;轻量级大模型的崛起 2025年&#xff0c;AI行业正经历一场深刻的“效率革命”。随着企业对大模型部署成本的敏感度持续上升&#xff0c;Gartner数据显示&#xff0c;超过60%的企业因高昂的…

作者头像 李华
网站建设 2026/4/4 14:23:17

HunyuanVideo-Foley效果对比:AI生成 vs 人工配音的差距有多大?

HunyuanVideo-Foley效果对比&#xff1a;AI生成 vs 人工配音的差距有多大&#xff1f; 1. 背景与问题提出 随着短视频、影视制作和内容创作的爆发式增长&#xff0c;音效设计已成为提升作品沉浸感的关键环节。传统音效制作依赖专业音频工程师在 Foley 录音棚中手动模拟动作声…

作者头像 李华
网站建设 2026/4/15 11:51:41

MediaPipe vs传统打码工具:AI隐私卫士性能全方位评测教程

MediaPipe vs传统打码工具&#xff1a;AI隐私卫士性能全方位评测教程 1. 引言&#xff1a;为何需要智能人脸隐私保护&#xff1f; 随着社交媒体和数字影像的普及&#xff0c;个人隐私泄露风险日益加剧。在发布合照、街拍或监控截图时&#xff0c;未经处理的人脸信息极易造成隐…

作者头像 李华
网站建设 2026/4/13 20:51:26

HunyuanVideo-Foley水下镜头:潜水、气泡声效真实性评估

HunyuanVideo-Foley水下镜头&#xff1a;潜水、气泡声效真实性评估 1. 技术背景与问题提出 随着短视频、影视制作和虚拟现实内容的爆发式增长&#xff0c;音效在提升沉浸感和真实感方面的重要性日益凸显。传统音效制作依赖专业音频工程师手动匹配动作与声音&#xff0c;耗时耗…

作者头像 李华
网站建设 2026/3/26 1:27:39

隐私保护系统安全加固:防范数据泄露的5层防护

隐私保护系统安全加固&#xff1a;防范数据泄露的5层防护 1. 引言&#xff1a;AI驱动下的隐私保护新范式 随着人工智能技术在图像识别、人脸识别等领域的广泛应用&#xff0c;个人隐私泄露风险日益加剧。尤其是在社交媒体、公共监控、企业协作等场景中&#xff0c;未经脱敏处…

作者头像 李华
网站建设 2026/4/10 14:50:59

高效智能系统清理:全面性能优化终极指南

高效智能系统清理&#xff1a;全面性能优化终极指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 在数字时代&#xff0c;电脑性能直接影响工作效率和使用体验。…

作者头像 李华