毕业设计(论文)
博主可接毕设!!!
基于SpringBoot+Vue的“乐锄”农产品销售网站的设计与实现
摘 要
传统的农资采购销售模式,造成农业生产的效率和质量低,人们对食品安全问题关注不断增加,无法带动农业现代化进程。目前农产品销售仍然存在着信息不对称、流程繁琐、效率低下等问题,亟需一个更加高效和智能的系统来进行改进。随着互联网时代的发展,农产品销售行业也迈进数字化时代,农产品销售网站会起到连接卖家与消费者的作用。
为了解决以上问题,本论文基于 Spring Boot框架,进行了一种基于 Spring Boot架构的农产品市场营销网站的设计与实现。该系统使用了 B/S体系结构,并使用了 Idea。然后,根据 MVC的设计思路,在 BootStrap体系结构的基础上,实现了一个分布式数据库的管理。这个系统能够对商品进行管理、对用户进行管理、对农产品进行管理、对商品进行管理、进行订单管理、对农产品进行浏览、对商品进行收藏、对商品进行收藏、对商品进行网上订购、对商品进行管理、登录等功能,通过对它的系统设计和执行,使农资的采购和销售都实现了数字化和自动化,简化了工作程序,消除了不必要的步骤和错误,提高了农资的采购和销售的效率和准确性。更加便利、更加透明、更加多样化、更加吸引人。
本系统的实现可以促进农资市场的信息交流和资源整合,提高市场透明度和竞争力,为农民提供更多的选择和优质的农资产品销售渠道。此外,系统还可以实现对农资供应链的有效管理实用性强,运行稳定,可以基本达成农产品销售网站的运营和管理的需求。通过网站信息发布、线上支付、物流配送等功能,实现农产品线上销售和流通,大大提高农产品市场覆盖率并拓宽销售渠道。
关键词:农产品销售,农产品管理,BootStrap,Spring Boot
Design and Implementation of "Le Hoe" Agricultural Products Sales Website
Abstract
The traditional mode of agricultural procurement and sales has resulted in low efficiency and quality of agricultural production, and is unable to drive the process of agricultural modernization. At present, the sale of agricultural products still exists problems such as information asymmetry, cumbersome processes, low efficiency, etc. A more efficient and intelligent system is urgently needed for improvement.
A Spring Boot framework-based set of agricultural products sales websites was designed and developed to address the current issues. This system utilizes a B/S structure, with an Idea integrated development environment. using BootStrap framework and Spring Boot framework technology to realize, and use MVC ideas.Users can employ the system to manage agricultural products, user management, category management, order management, browse agricultural products, collect them, and place online orders for agricultural items. Furthermore, ordinary users are able to control their own shopping carts, post comments, log in, and so on. Through the systematic design and implementation, it digitizes and automates the process of purchasing and sales of agricultural products, simplifies the process, reduces redundant links and human errors, and improves the efficiency and accuracy of the purchasing and sales of agricultural products. Efficiency and Accuracy of Agricultural Purchasing and Sales.
The realization of this system can promote the information exchange and resource integration in the agricultural market, improve market transparency and competitiveness, and provide farmers with more choices and high-quality sales channels for agricultural products.Furthermore, the system is capable of effectively managing the agricultural supply chain in a practical and stable manner, meeting the operational and management requirements of agricultural product sales websites.
Key words: Agricultural products sales, Agricultural products management, BootStrap, Spring Boot
摘 要
Abstract
第1章 绪 论
1.1 课题背景
1.2 目的与意义
1.3 论文研究主要内容
1.4 国内外研究现状
第2章 关键技术介绍
2.1 ECHARTS 可视化图表库
2.2 SPRING BOOT框架
2.3 BOOTSTRAP框架
2.4MYBATIS框架
2.5 MYSQL数据库
2.6MAVEN项目构建方式
第3章 需求分析
3.1 功能性需求分析
3.1.3 农产品订单管理用例
3.1.4 农产品类别管理用例
3.2 系统原型
3.2.1 管理农产品订单评论列表页原型图
3.2.1 个人中心原型图
3.3 系统开发环境
3.4 系统可行性分析
3.4.1 技术可行性分析
3.4.2 安全可行性分析
第4章 系统设计
4.1 体系结构设计
4.2 数据库设计
4.3 后台功能模块设计
4.3.1 农产品管理功能模块设计
4.3.2 用户管理功能模块设计
4.3.3 订单管理功能模块设计
4.4 前台功能模块设计
4.4.1 查看农产品功能模块设计
4.4.2 购物车功能模块设计 19
4.4.3 购买农产品功能模块设计
第5章 系统实现
5.1 后台功能模块实现
5.1.1 添加农产品功能模块实现
5.1.2 修改用户功能模块实现
5.1.3 查看农产品订单功能模块实现
5.2 前台功能模块实现
5.2.1 收藏农产品功能模块实现
5.2.2 购物车功能模块实现 25
5.2.3 购买农产品功能模块实现 27
第6章 系统测试
6.1 功能测试
6.1.1后台部分模块测试 29
6.1.2前台部分模块测试 31
6.2 性能测试
6.3 测试结论
第7章 结 论
参考文献
致 谢
第1章 绪 论
1.1 课题背景
1.2 目的与意义
本网站研发设计的出发点是通过特定的小而专的特定农产品品类进行信息化管理,提高农资采购销售的效率和准确性。首先,通过系统化的规划和执行,将农资购买和销售流程数字化和自动化,简化操作流程、减少多余步骤和人为失误,从而提升农资交易的效率。其次,通过系统的落地应用,可以促进农资市场的信息交流和资源整合,提高市场透明度和竞争力,为农民提供更多的选择和优质的农资产品销售渠道。此外,系统还可以实现对农产品物流状态的有效管理,提高物流供应链的可追溯性和可控性,减少资源的浪费和成本的增加[2]。
1.3 论文研究主要内容
本系统服务器端采用Spring Boot和MyBatis框架搭建,使用MySQL数据库存储数据系统前端页面采用B/S架构的Bootstrap技术,分为三个模块:前端客户端和厂商模块客户端和后端管理员模块。 [3]
(1)系统的前端模块包括用户注册、用户访问网站、更新个人信息、输入详细信息查看农场信息养殖、用户可以将一些农产品添加到购物车(或者喜欢打工)、并且可以在我的商店中查看添加到购物车(或类似)的购物车(或我的收藏)中的农产品,并且可以从购物车中删除农产品(或删除收藏)。在购物时,用户可以对选定的农产品或购物车中的农产品进行下单(输入发货信息和付款)。用户可以在“我的订单”中查看已购买的农场订单信息,并为用户对已购买产品的评论提供建议。
(2)系统的供应商包括订单管理和用户反馈管理两个模块。其中,订单信息可以在订单管理模块中进行管理(添加、删除、修改)。在客户反馈管理模块中,销售人员可以查看客户反馈信息并排除非法反馈。
(3)主管部分包含了四个主要功能:管理客户、处理农作物和控制产品类别。在这个"管理客户"的部分中,主管能够执行各种操作如添加或移除客户数据,暂停某位特定客户的使用权限或者更改他们的个人信息(例如恢复其初始密码)等等。同样地,他们也可以通过这个"管理农作物"的功能来更新或删减农作物的相关资料。最后,在"管理产品类别"这一环节,主管能完成产品的分类信息的增补、删除或是调整工作。
1.4 国内外研究现状
通过查询资料,相对与相似产品的分析[4]。
第一个是淘宝,分为两个版本,一个是针对大众的,一个是针对卖家的专业版,大众版是针对没有经验的普通用户的,专业版是针对卖家的。淘宝店沟通采用的经验是,大众版系统设置了各种农业信息。但是内容分类过多,粗糙,需要浏览很久才能找到需要的信息,界面操作对于只想购买农产品的用户来说相对不友好。卖家专业版本时不适合农产品卖家用户去了解的,普通用户可能会出现看不懂的情况。
然后是京东网,这个网站中京东自营的商品内容方面是比较全面的,其中品质控制也是相对来说保真,京东物流仓储还提供快速物流交付服务,但是依然是内容分类很杂乱,对只想专注购买农产品的用户不够友好。
综合这些系统的参考查询,加上上面的成果,首先,工作要做得足够好,分类必须足够清晰和精确,搜索时应该更容易操作,界面应该有自己的用户交互应该更快、更轻松。
第2章 关键技术介绍
系统的服务器端采用Spring Boot框架和MyBatis技术,客户端采用Bootstrap框架,支持可扩展性和层次结构,并进行客户端和服务器之间的协调[5]。用户通过按网站页面上的各种操作按钮向 Java 服务器发送请求 [6]。后端使用Spring Boot框架与前端共享数据,遵循Http协议[7],并通过从MySQL数据库检索数据[8]来显示。该系统具有界面简单、操作方便、运行稳定、维护方便等特点[9]。
2.1 ECharts 可视化图表库
百度ECharts是一款基于JavaScript且为开源性质的视觉化绘制工具包,其具备多样的图形种类并且包含了大量的设置参数与互动元素,能够生成直接明了、富有活力、具有互动性和个性化的数据可视化图像。ECharts采用的是增量式的数据呈现方式,处理大量实时变化的数据,借助一系列附加组件如柱状图、折线图等方式能更高效地展现农产品交易活动的动态信息[9]。
2.2 Spring Boot框架
Spring Boot是VMWare提供的Java应用程序开发框架,是目前主要的Java后端开发架构。相比Springboot2,Springboot3使用Java 17进行了重构,支持新的Java特性,并且在组件依赖管理上更加严格。系统使用Spring Boot框架构建服务器可执行文件,可以帮助我们快速构建和维护Spring。应用程序还可以响应用户的http request请求,执行相关任务,并根据请求连接数据库,从而捕获最新数据并将其放在后台,为敏捷网站开发提供更真实的体验[10]。
2.3 Bootstrap框架
Bootstrap是一个高级框架,带有网格系统、表单、功能组件以及主要前端框架所需的其他功能。 Bootstrap 使用 Sass 和 JavaScript 构建,开发人员可以轻松扩展它。执行页面布局和构建[11]。
-
- MyBatis框架
2.5 MySQL数据库
MySQL是专为瑞典企业设计的高性能关系数据库。它采用MySQL AB技术,高效接入多个行业,支持企业规模,高效接入多个领域。行业支持企业的可扩展性,也支持企业的可扩展性[14]。
2.6 Maven项目构建方式
maven是一款用于项目建设的工具,它提供了一致的项目构造、项目管理以及依赖管理等功能。通过pom,maven项目得以实施。xml文件来管理依赖方便项目开发和管理,而Spring Boot项目则内置了很多常用的依赖,并且提供了一些方便的依赖管理功能,如自动版本管理、自动依赖引入等[15]。
第3章 需求分析
3.1 功能性需求分析
根据需求分析和研究,整个系统基本上有两端:管理员和最终用户。管理员对系统的高级后台用例图如图3.1 系统使用图所示。
图3.1 后台用例图
管理农产品的部分涵盖了添加、修改、删除和查询等步骤,具体内容以添加农产品为例进行详细说明,如表3. 1所展示。
表3.1 添加农产品用例描述
用例名称 | 添加农产品 | |
参与者 | 管理员 | |
用例概述 | 管理员使用该用例完成添加农产品的功能 | |
前置条件 | 管理员已经登录,并且进入管理农产品页面 | |
后置条件 | 系统中添加一条农产品记录 | |
基本事件流 | 参与者动作 | 系统响应 |
续表3.1 添加农产品用例描述
基本事件流 | 参与者动作 | 系统响应 |
1.管理员在农产品管理主页面上选择“添加农产品”。 4.管理员填写农产品信息,点击“提交”按钮。 | 2.系统从数据库中获取书籍分类列表。 3.系统打开添加农产品页面。 5.系统检查管理员输入的信息是正确有效的。 6.系统将农产品添加到数据库中。 7.系统提示“添加农产品成功”。 8.系统跳转到农产品列表界面 | |
备选事件流 | 5a.系统验证管理员没有选择农产品分类、没有输入农产品名称、出版社、作者、价格、购买日期等字段,则提示“信息不能为空,请重新输入”。 5b.系统验证管理员输入的农产品名称、出版社、作者等字段的长度超长,则提示“输入信息格式超长,请重新输入”。 5c.系统验证管理员输入的农产品价格不是一个整数,则提示“请输入一个整数值”。 7a.系统录入过程发生错误,未完成操作,则提示“添加农产品失败”。 |
下面以删除农产品用例为主详细介绍如表3.2所示。
表3.2 添加农产品用例描述
用例名称 | 删除农产品 | |
参与者 | 管理员 | |
用例概述 | 管理员使用该用例完成删除农产品的功能 | |
前置条件 | 管理员已经登录,并且进入管理农产品页面 | |
后置条件 | 系统中添加一条农产品记录 | |
基本事件流 | 参与者动作 | 系统响应 |
1.管理员在农产品管理主页面上点击“删除农产品”。 4.管理员删除农产品信息,点击“提交”按钮。 | 2.系统从数据库中获取删除农产品列表。 3.系统打开删除农产品页面。 5. 管理员输入的信息系统会检查是无误的。 6. 系统提示管理员“删除农产品成功!”。 7. 系统会从数据库中移除已被删除的条目对应的农产品记录。 8.系统跳转到农产品列表界面 | |
备选事件流 | 7a.系统录入过程发生错误,未完成操作,则提示“添加农产品失败”。 |
3.1.3 农产品订单管理用例
农产品订单模块包括添加农产品订单、修改农产品订单、删除农产品订单、查询农产品订单,下面以添加农产品订单用例为主详细介绍如表3.3所示。
表3.3农产品订单管理用例
用例名称 | 查看农产品订单 |
续表3.3农产品订单管理用例
参与者 | 管理员 | ||
用例概述 | 管理员使用该用例完成查看农产品订单的功能 | ||
用例名称 | 查看农产品订单 | ||
参与者 | 管理员 | ||
用例概述 | 管理员使用该用例完成查看农产品订单的功能 | ||
前置条件 | 管理员已经登录,并且进入管理农产品订单页面 | ||
后置条件 | 系统中查看到一条农产品订单记录 | ||
基本事件流 | 参与者动作 | 系统响应 | |
1.管理员在农产品订单管理主页面上选择“查看农产品订单”。 4.管理员填写农产品查看农产品订单信息,点击“提交”按钮。 | 2.系统从数据库中获取农产品订单列表。 3.系统打开查看农产品订单页面。 5. 管理员输入的信息系统会检查是无误的。 6. 系统提示“查看农产品订单成功”。 7. 系统将从数据库中获取农产品订单记录。 8.系统跳转到农产品订单列表界面 |
3.1.4 农产品类别管理用例
管理员能由农产品类别管理用例对农产品类别信息运作维护。农产品类别管理用例描述如表3.4所示。
表3.4 农产品类别管理用例
用例名称 | 修改农产品类别 | ||
参与者 | 管理员 | ||
用例概述 | 管理员使用该用例完成修改农产品类别的功能 | ||
前置条件 | 管理员已经登录,并且进入管理农产品类别页面 | ||
后置条件 | 系统中查看到修改的一条农产品类别记录 | ||
基本事件流 | 参与者动作 | 系统响应 | |
1.管理员在农产品订单管理主页面上选择“修改农产品类别”。 4.管理员填写修改农产品类别信息,点击“提交”按钮。 | 2.系统从数据库中获取修改农产品类别列表。 3.系统打开查看修改农产品类别页面。 5. 管理员输入的信息系统会检查是无误的。 6. 系统提示“修改农产品类别成功”。 7. 系统将从数据库中获取修改农产品类别录。 8.系统跳转到修改农产品类别界面 |
系统的普通用户角色以及对应的功能借下面的用户端高层用例图通过展示来描述系统,系统用户端高层用例图如图3.2所示,
图3.2用户端高层用例图
本课题中,普通用户可以在前台浏览相关的农产品,例如用户可以通过不同的分类选择自己感兴趣的农产品或者通过搜索寻找相关的农产品,用户在查看不同农产品的同时可以查看评论内容,在用户登录的情况下,还可以收藏农产品阐述自身观点,在个人中心页修改个人信息等。
(1)查看农产品
用户进入网站后的主要功能是可以查看农产品,普通用户可以根据自身需求选择合适的农产品分类进行选购,同时支持在线输入关键词进行搜索,用户查看农产品如表 3.5所示。
表3.5 查看农产品用例描述
用例名称 | 查看农产品 |
参与者 | 用户 |
用例概述 | 用户使用该用例完成查看农产品的功能 |
前置条件 | 用户已经登录,并且进入查询农产品页面 |
续表3.5 查看农产品用例描述
后置条件 | 系统中查询到一条或者多条农产品记录 | |
基本事件流 | 参与者动作 | 系统响应 |
1. 用户在农产品主页面上选择“查看农产品”。 4. 用户填写农产品信息,点击“提交”按钮。 | 2.该系统从数据库中获取农产品分类列表。 3.开启系统,进行农产品的浏览。 5.该系统检验用户所输入的信息是否正确、是否有效。 6.该系统会对该数据库中的农产品信息进行检索。 7.系统出现了“农产品检查成功”的信息。 8.系统跳转到农产品列表界面。 | |
备选事件流 | 5a.系统验证用户没有选择农产品分类、没有输入农产品名称、类别等字段,则提示“信息不能为空,请重新输入”。 5b.系统验证用户输入的农产品名称属于非法字符,则提示“查看农产品失败”。 7a.系统录入过程发生错误,未完成操作,则提示“查看农产品失败”。 |
(2)收藏农产品
用户可以在农产品的详情页面收藏农产品,首先要满足的前提条件是用户注册并登录本网站,用户在登录后,在任意一个农产品简介详情页面都可以查看该农产品简介内容,并且可以收藏农产品,如表 3.6 所示。
表3.6 收藏农产品用例描述
用例名称 | 查看农产品 | |
参与者 | 用户 | |
用例概述 | 用户使用该用例完成查看农产品的功能 | |
前置条件 | 用户已经登录,并且进入农产品简介内容显示的页面 | |
后置条件 | 系统中添加一条评论记录 | |
基本事件流 | 参与者动作 | 系统响应 |
1. 用户在农产品管理主页面上选择“查看农产品简介”。 4. 用户输入农产品信息,点击“收藏”按钮。 | 2.系统从数据库中获取农产品简介内容显示。 3.系统打开查看农产品简介内容显示页面。 5.系统检查用户输入的信息是正确有效的。 6.系统将添加一条收藏记录到数据库中的收藏信息表。 7.系统提示“收藏农产品成功”。 |
续表3.6 收藏农产品用例描述
备选事件流 | 7a.系统录入过程发生错误,未完成操作,则提示“添加评论失败”。 |
(3)支付下单结算
顾客在查看农产品详情时,可以选择想要的农产品加入购物车,并在点击结算后进行支付。前提是顾客必须先在网站注册并登录,然后在登录后将所需商品加入购物车。详见表3.7。
表3.7 支付下单结算用例描述
用例名称 | 支付下单结算 | |
参与者 | 用户 | |
用例概述 | 用户使用该用例完成查看农产品的功能 | |
前置条件 | 用户已经登录,并且进入查询农产品页面支付下单结算并完成支付 | |
后置条件 | 系统中添加到一条农产品支付下单结算记录 | |
基本事件流 | 参与者动作 | 系统响应 |
1. 用户在某部农产品页面上选择“支付下单结算”。 4. 用户点击“支付下单”按钮。 7. 用户点击支付,点击“确认支付”按钮。 | 2.系统从数据库中获取该农产品的库存、价格等信息。 3.系统打开查看农产品支付下单结算页面。 5.系统检查用户输入的信息是正确有效。 6.系统将从数据库中查询到农产品的座位价格并将计算结果返回到页面 8.系统将添加一条订单记录到数据库中的订单信息表。 9.系统界面提示“已完成支付”。 | |
备选事件流 | 7a.系统录入过程发生错误,未完成操作,则提示“支付失败”。 |
3.2 系统原型
3.2.1 管理农产品订单评论列表页原型图
管理员可在农产品订单管理列表页查看农产品订单列表中的评论信息,原型图如图3.3所示。
图3.3 管理员删除不良订单评论原型图
3.2.1 个人中心原型图
管理员与用户两种用户均可在个人中心浏览信息,原型图如图3.3所示。
图3.4个人中心原型图
3.3 系统开发环境
电脑系统:Windows10
硬件环境:Intel Core(TM)i5-8250U CPU, with a frequency of 1.60GHz to 1.80GHz, is available for purchase.
开发工具:IntelliJ IDEA 2021.3.1
数据库工具:Navicat Premium 15
数据库:MySQL 8.0.23
JDK:Java 1.8.0_231
3.4 系统可行性分析
3.4.1 技术可行性分析
该系统前端采用BootStrap、HTML5、CSS、JavaScript技术,后端采用Spring Boot技术,配合MySQL数据库,前后端在应用层面采用Http协议进行数据交互。 Java服务器(后端)通过接口从MySQL进行调用。前端通过JSON格式的数据或者模型对象来实现前后端的交互,从而以特定的表单框架将数据展示给用户。整体界面简洁美观,注重用户体验。
3.4.2 安全可行性分析
在本系统的构建阶段,我们采取了可靠的编码策略与架构,以此来规避一些普遍的安全缺陷,例如跨站脚本攻击 (XSS) 和 SQL 注入等问题。此外,我们也对用户提供的数据进行了严密的检查和筛选,旨在预防恶意的输入及潜在的攻击行为,并进一步抵御 SQL 注入和跨站脚本等威胁。系统还引用了Spring Security安全控制模块,采用多因素身份验证,如用户名/密码结合手机短信验证码。确保用户只能访问其授权的资源,并限制管理员和用户的权限。
第4章 系统设计
4.1 体系结构设计
系统的数据库MySQL用于储存系统中所有涉及到的数据信息,对于系统的管理员端与普通用户端安装不同的权限进行系统展示,系统体系结构如图4.1所示。
图4.1 系统体系结构
4.2 数据库设计
系统主要有用户表、农产品分类表、购物车表、评论表、收藏农产品表、农产品表、农产品科普表,普通用户可以通过购物车查看添加到自己订单中的农产品。用户可以查看各种订单的发货和物流状态。例如,管理员可以查看不同用户的评论并删除不良评论等。在需求分析的基础上,识别各个对象之间的关系,对各个模块之间的关系进行排序,绘制ER图,如图4.2所示。
图4.2 系统E-R图
用户表的主要功能是储存用户相关的个人数据,其构造可参见表4. 1。
表4.1 用户表
字段名 | 名称 | 数据类型 | 约束 |
id | 用户ID | int | PK,AUTO_INCREMENT |
nickname | 用户昵称 | varchar(255) | not null |
age | 用户年龄 | int | not null |
phone | 用户电话 | varchar(255) | not null |
sex | 用户性别 | varchar(255) | not null |
address | 用户地址 | varchar(255) | not null |
avatar | 用户头像 | varchar(255) | not null |
createtime | 创建时间 | varchar(255) | not null |
password | 登录密码 | varchar(255) | not null |
userName | 登录账号 | varchar(255) | not null |
role | 权限角色 | varchar(255) | not null |
产品分类表主要用于存放农产品不同类别的信息,结构如表4.2所示。
表4.2 农产品分类表
字段名 | 名称 | 数据类型 | 约束 |
cateId | 分类ID | in | PK,AUTO_INCREMENT |
cateName | 分类名称 | varchar(255) | not null |
createtime | 创建时间 | datetime | not null |
购物车表主要用于存放每个用户在自己的购物车中添加的不同农产品的信息,结构如表4.3所示。
表4.3 购物车表
字段名 | 名称 | 数据类型 | 约束 |
cartId | 购物车ID | int | PK,AUTO_INCREMENT |
createtime | 创建时间 | datetime | not null |
userId | 所属用户 | int | not null |
count | 数量 | int | not null |
money | 小计金额 | double | not null |
评论表主要用于存放每个农产品详情页面上不同用户发布的评论内容,结构如表4.4所示。
表4.4 评论表
字段名 | 名称 | 数据类型 | 约束 |
commentId | 评论ID | int | PK,AUTO_INCREMENT |
commentContent | 评论内容 | varchar(500) | not null |
goodId | 评论农产品ID | int | not null |
userId | 所属用户ID | int | not null |
createtime | 创建时间 | datetime | not null |
view | 查看次数 | int | not null |
收藏农产品表主要用于存放每个用户收藏的不同农产品内容,结构如表4.5所示。
表4.5 收藏农产品表
字段名 | 名称 | 数据类型 | 约束 |
favorId | 收藏农产品ID | int | PK,AUTO_INCREMENT |
userId | 所属用户ID | int | not null |
createtime | 创建时间 | datetime | not null |
goodId | 收藏农产品ID | int | not null |
产品表主要用于存放不同的农产品信息,结构如表4.6所示。
表4.6 农产品表
字段名 | 名称 | 数据类型 | 约束 |
goodId | 农产品ID | int | PK,AUTO_INCREMENT |
goodName | 农产品名称 | varchar(50) | not null |
createtime | 创建时间 | datetime | not null |
userId | 所属用户ID | int | not null |
cateId | 农产品分类ID | int | not null |
goodPic | 农产品图片 | varchar | not null |
goodPrice | 农产品价格 | double | not null |
goodDetail | 农产品详情 | longtext | not null |
view | 查看 | int | not null |
产品表主要用于存放不同的农产品科普信息,结构如表4.7所示。
表4.7 农产品科普表
字段名 | 名称 | 数据类型 | 约束 |
newsId | 农产品科普文章ID | int | PK,AUTO_INCREMENT |
content | 内容 | varchar(255) | not null |
title | 标题 | varchar(255) | not null |
续表4.7 农产品科普表
字段名 | 名称 | 数据类型 | 约束 |
createtime | 创建时间 | datetime | not null |
订单表主要用于存放不同的用户对应购买的农产品订单信息,结构如表4.8所示。
表4.8 订单表
字段名 | 名称 | 数据类型 | 约束 |
id | 订单ID | int | PK,AUTO_INCREMENT |
createtime | 创建时间 | datetime | not null |
userId | 所属用户ID | int | not null |
goodId | 农产品ID | int | not null |
status | 状态 | varchar(255) | not null |
money | 金额 | varchar | not null |
num | 数量 | int | not null |
address | 地址 | varchar(255) | not null |
phone | 手机 | varchar(255) | not null |
name | 姓名 | varchar(255) | not null |
优惠劵表主要用于存放不同的农产品优惠折扣抵值劵信息,结构如表4.8所示。
字段名 | 名称 | 数据类型 | 约束 |
id | 优惠券ID | int | PK,AUTO_INCREMENT |
name | 优惠券名称 | varchar | not null |
money | 优惠价格 | varchar | not null |
createtime | 创建时间 | datetime | not null |
4.3 后台功能模块设计
本系统后台功能主要由农产品、人员和系统管理员进行管理。在人员方面,管理员可以对用户进行管理。
4.3.1 农产品管理功能模块设计
本系统的管理员进入到管理界面,点击添加农产品信息按钮,发送到Java服务端的控请求到控制层,通过@RequestMapping注解到控制层的GoodsController文件中的addGoods方法进行处理,控制层中的addGoods方法实现细节是调用了GoodsService层中的方法addGoods方法处理,GoodsService层中的方法addGoods方法通过传递给GoodsMapper层的addGoods文件中进行与数据库表Goods农产品表中添加农产品数据进行查询交互,最后将添加的农产品用户数据结果状态依次先后返回GoodsService层与GoodsController层,最终通过遵循Http协议将具体的ResponseBody数据集返回到网站页面GoodsList.html页面上进行渲染数据,设计顺序图,添加农产品功能的顺序图如图4.4所示
图4.4添加农产品功能顺序图
4.3.2 用户管理功能模块设计
本系统管理员登录系统后在系统主页面点击修改用户按钮,发送到Java服务端的控请求到控制层,通过@RequestMapping注解到控制层的UseController文件中的updateUser方法进行处理,用户控制层中的updateUser方法实现细节是调用了用户UseServic层中的方法updateUser方法处理,UserService层中的方法updateUser方法通过传递给用户Mapper层的UserMapper文件中进行与数据库表User用户表中的数据进行查询交互,最后将修改用户数据结果状态依次先后返回UserService层与UserController层,最终通过遵循Http协议将具体的修改用户的状态返回到网站页面UserList.html页面上进行渲染数据,修改用户用例的实现顺序图如图4.5所示。
图4.5修改用户用例顺序图
4.3.3 订单管理功能模块设计
本系统的管理员进入到管理界面,点击查询订单发送Request URL请求,发送到Java服务端的请求到控制层,通过@RequestMapping注解到控制层的OrderController文件中的selectOrder方法进行处理,订单控制层中的selectOrder方法实现细节是调用了订单OrderService层中的方法selectOrder方法处理,OrderService层中的方法selectOrder方法通过传递给订单Mapper层的OrderMapper文件中进行与数据库表Order 农产品订单表中的数据进行查询交互,最后将查询到的农产品订单数据集依次先后返回OrderService层与OrderController层,最终通过遵循Http协议将具体的ResponseBody数据集返回到网站页面OrderList.html页面上进行渲染数据,查询订单用例实现将如图4.6所示。
图4.6查询订单用例顺序图
4.4 前台功能模块设计
用户可以通过注册账号得到账号密码登录系统后,用户可以查看不同的类别的农产品进行按需添加到购物车中下单支付购买、并且可以发布评论。
4.4.1 查看农产品功能模块设计
用户可以登录系统后,在网站首页可以根据类型或关键词搜索农产品可以查看农产品,在农产品列表页面可以点击查看农产品简介以及农产品评论,以查看农产品顺序图如图4.8 所示。
图4.8查看农产品顺序图
4.4.2 购物车功能模块设计
用户在进入系统后,可以选择将商品加入购物车。一旦加入购物车,用户就能调整商品的数量、移除不需要的商品、计算总价格以及查看商品清单。详细的排序图请参考图4. 9。
图4.9 调整购物车商品顺序图
4.4.3 购买农产品功能模块设计
用户可以登录系统后,点击进入购物车中选择下单支付购买农产品,顺序图如图 4.10所示。
图4.10 购买农产品顺序图
第5章 系统实现
5.1 后台功能模块实现
5.1.1 添加农产品功能模块实现
管理员进入系统后,点击系统主页面的添加农产品按钮,页面向农产品控制层的添加农产品方法发送请求,然后继续调用该函数。农产品服务层最底层为农产品Mapper层的添加农产品方法与数据库中的农产品信息表进行交互,存储网站页面管理员操作的添加农产品信息。农产品报告及退货成功状态添加农产品操作如图5.1所示。
图5.1添加农产品图
网站前端界面使用Ajax异步请求添加农产品发送的核心代码如下:
$.ajax({
url: '/addGoods',
contentType: 'application/json',
type: 'POST',
data: JSON.stringify(data),
success: function(data, status) {
$('#addGoodsDlg').modal('hide');
CateTable.ajax.reload();
},
error: function(data, status) {
alert(data.responseJSON.message);
}
});
Java服务端控制层的核心代码如下:
@RequestMapping(value = "/addGoods", method = RequestMethod.POST)
@ResponseBody
void addCate(@RequestBody User user) {
user.setRole("用户");
userDao.insert(user);
}
5.1.2 修改用户功能模块实现
当管理人员对用户资料进行更改时,他们需要先登陆该系统的主页,然后通过单击"修改用户信息"按钮来触发这个过程。接下来,系统会接收到他们的请求并对它进行处理。具体的步骤如下:首先,管理者会在修改用户信息的网页上发出处理请求,接着,这些请求会被传送到修改用户的方法所在的用户控制器(Controller)层;随后,它们被进一步转交给位于用户服务层(Service layer)的相应处理方法,最后到达用户映射层(Mapper layer)的修改用户方法,这一步骤涉及到和数据库里的用户信息表格的数据交换。一旦完成这一系列动作,新的用户信息就会被保存在数据库里并且显示出成功的消息。同时,修改用户的信息也会以更新过的形式出现在网页上,并在用户执行完相关操作之后给出相应的提醒,就像图5.2展示的那样。
图5.2 修改用户图
网站前端界面使用Ajax异步请求修改用户角色权限的核心代码如下:
$.ajax({
url: "/editUser",
contentType: "application/json",
type: "POST",
data: JSON.stringify(data),
success: function(data, status) {
$('#editUserDlg').modal('hide');
GoodsTable.ajax.reload();
},
error: function(data, status) {
alert(data.responseJSON.message);
}
});
Java服务端控制层的核心代码如下:
@RequestMapping(value = "/editUser", method = RequestMethod.POST)
@ResponseBody
void editUser(@RequestBody User user) {
UserDao.updateByPrimaryKeySelective(user);
}
5.1.3 查看农产品订单功能模块实现
本系统管理员熟悉查询农产品的操作 进入主界面后,系统管理员可以看到查询农产品订单和发送市场外产品请求的按钮 此流程是一个基于特殊流程的流程在匹配描述上,如果管理员在问题农产品订单页面的农产品决策流程中发送消息询问农产品订单的工作流程,然后继续调用下面设定的农产品标准处理服务层将有关农业的问题传递到产品订单Mapper层订单数据库中与产品订单相关的订单信息,返回信息集网站农场订单页面上管理者查询的结果更新安全装置页面的功能,以及将农产品查询结果返回农产品查询,如图4.3所示。
图5.3查询订单图
网站前端界面使用Ajax异步请求查询农产品订单的核心代码如下:
$.ajax({
url: "/editOrder",
contentType: "application/json",
type: "POST",
data: JSON.stringify(data),
success: function(data, status) {
$('#edit OrderDlg').modal('hide');
GoodsTable.ajax.reload();
},
error: function(data, status) {
alert(data.responseJSON.message);
}
});
Java服务端控制层的核心代码如下:
@RequestMapping(value = "/editOrder", method = RequestMethod.POST)
@ResponseBody
void edit Order (@RequestBody Order order) {
OrderDao.updateByPrimaryKeySelective(order);
}
5.2 前台功能模块实现
5.2.1 收藏农产品功能模块实现
普通用户进入系统后,点击系统主页农产品列表页面的采集按钮,系统服务器端控制层根据标注请求匹配农产品采集的方法,具体是在该方法内部向底层调用业务逻辑层的收藏农产品方法的逻辑继续向底层调用接口层的收藏农产品方法与MyBatis框架绑定对xml文件中id定义同名接口方法使用SQL收藏农产品语句将数据库中的收藏农产品信息表的数据集作为处理结果,返回到主页页面进行渲染,收藏农产品功能的实现如图5.4所示
图5.4收藏农产品图
Java服务端控制层的核心代码如下:
@PostMapping("/addFavor")
public HashMap addFavor (@RequestBody Favor favor) {
favor Service.insert(goods);
HashMap model = new HashMap();
model.put("msg", 200);
return model;
}
5.2.2 购物车功能模块实现
普通用户在登陆系统后,在系统主页面点击购物车按钮,控制层的请求匹配、业务逻辑层的处理、接口层与MyBatis框架的集成以及页面的数据渲染。购物车功能的实现如图5.5所示。
图5.5购物车图
Java服务端控制层的核心代码如下:
@PostMapping("/addCart")
public HashMap addCart(@RequestBody Cart Cart) {
HashMap model = new HashMap();
if(CartService.check(Cart.getGoodId(), Cart.getUserId()) == 0) {
CartService.insert(Cart);
} else {
int cartId = CartService.getCartIdByUserIdAndGoodId(Cart.getGoodId(), Cart.getUserId());
CartService.addCountByCartId(cartId);
}
model.put("msg", 200);
return model;
}
@PostMapping("/deleteCart")
public HashMap deleteCarts(@RequestBody Cart Cart) {
HashMap model = new HashMap();
if(CartService.getCountByCartId(Cart.getCartId()) == 1) {
CartService.deleteById(Cart.getCartId());
} else {
CartService.subCountByCartId(Cart.getCartId());
}
model.put("msg", 200);
return model;
}
@PostMapping("/getCartByUserId")
public ArrayList<HashMap> getCartById(long id) {
return CartService.selectByUserId(id);
}
@PostMapping("/getAllCart")
public ArrayList<HashMap> getAllCart(HttpServletRequest request) {
HttpSession session = request.getSession();
User u = (User)session.getAttribute("user");
return CartService.selectByUserId(u.getId());
}
}
5.2.3 购买农产品功能模块实现
普通用户在登录系统后,在系统主页面添加农产品到我的购物车按钮,本系统的服务端的控制层根据注解的请求匹配添加农产品到我的购物车方法处理,具体是在该方法内部向底层调用业务逻辑层的添加农产品到我的购物车方法的逻辑继续向底层调用接口层的添加农产品到我的购物车方法与MyBatis框架绑定对的xml文件中id定义同名接口方法使用SQL查询语句将数据库中的我的购物车信息表的数据集作为处理结果,返回到用户查看的我的购物车页面进行渲染,添加农产品到我的购物车功能的实现如图5.6所示。
图5.6添加农产品到我的购物车图
网站前端界面的核心代码如下:
$.ajax({
url: '/ addGoods,
contentType: 'application/json',
type: 'POST',
data: JSON.stringify(data),
success: function(data, status) {
$('# addGoods Dlg').modal('hide');
CateTable.ajax.reload();
},
error: function(data, status) {
alert(data.responseJSON.message);
}
});
Java服务端控制层的核心代码如下:
@PostMapping("/addGoods")
public HashMap addGoods(@RequestBody Goods goods) {
goodsService.insert(goods);
HashMap model = new HashMap();
model.put("msg", 200);
return model;
}
第6章 系统测试
6.1 功能测试
6.1.1 后台部分模块测试
对农产品管理模块进行了测试,具有添加农产品信息、添加农产品、编辑农产品、搜索农产品、删除农产品等测试功能。测试用例的设计如表6.1-6.4所示。
表6.1 添加农产品功能测试用例
用例编号 | 用例描述 | 操作过程及数据 | 预期结果 | 实际结果 |
addBook_01 | 正确填写农产品信息 | 按照系统要求选择农产品分类、输入农产品名称、内容、作者、农产品类别、日期等信息点击“提交” | 系统提示添加成功 | 正确 |
addBook _02 | 输入的信息长度超长 | 输入的农产品名称、作者等字段的长度超长,其中农产品名称和出版社超过50个字,作者超过10个字 | 系统提示“输入信息格式超长,请重新输入” | 正确 |
addBook _03 | 没有按要求填写必填项 | 必填项用户没有填写所要求的全部 | 用户会收到系统提醒必填项信息不能为空,请填重新输入 | 正确 |
addBook _04 | 输入的农产品农产品类别数量不符合 | 输入的农产品农产品类别数量不是一个整数 | 系统提示“请输入一个整数值” | 正确 |
表6.2 修改农产品信息功能测试用例
用例编号 | 测试用例描述 | 操作过程及数据 | 预期结果 |
updateBook_01 | 输入已存在的农产品名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品名字‘农产品土鸡蛋’,回车提交请求 | 系统提示查找成功 |
updateBook_02 | 输入已存在的农产品名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品名字‘农产品土鸡蛋’, 回车提交请求 | 系统提示查找失败 |
表6.3 删除农产品信息功能测试用例
用例编号 | 测试用例描述 | 操作过程及数据 | 预期结果 |
delBook_01 | 输入已存在的农产品名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品名字‘农产品土鸡蛋’,回车提交请求 | 系统提示查找成功 |
delBook_02 | 输入已存在的农产品名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品名字‘农产品土鸡蛋’, 回车提交请求 | 系统提示查找失败 |
表6.4 查看农产品信息功能测试用例
用例编号 | 测试用例描述 | 操作过程及数据 | 预期结果 |
viewTBook_01 | 输入已存在的农产品类别名字‘农产品绿色地瓜’ | 在搜索框输入已存在的农产品类别名字‘农产品绿色地瓜’,回车提交请求 | 系统提示查找成功 |
viewBook_02 | 输入已存在的农产品类别名字‘11’ | 在搜索框输入已存在的农产品类别名字‘农产品绿色地瓜’, 回车提交请求 | 系统提示查找失败 |
农产品类别管理模块测试有通过增删改查来更改农产品类别信息。测试用例设计如表6.5-6.8所示。
表6.5 添加农产品类别信息功能测试用例
用例编号 | 测试用例描述 | 操作过程及数据 | 预期结果 |
addTag_01 | 正确添加农产品类别名称 | 在增加农产品类别弹出框正确添加农产品类别名称,提交请求 | 系统提示添加成功 |
addTag _02 | 正确添加农产品类别名称 | 在增加农产品类别弹出框正确添加农产品类别名称,提交请求 | 系统提示在地点数量输入框“请填写此字段” |
表6.6 修改农产品类别信息功能测试用例
用例编号 | 测试用例描述 | 操作过程及数据 | 预期结果 |
updateTag_01 | 输入已存在的农产品类别名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品类别名字‘农产品土鸡蛋’,回车提交请求 | 系统提示查找成功 |
updateTag_02 | 输入已存在的农产品类别名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品类别名字‘农产品土鸡蛋’, 回车提交请求 | 系统提示查找失败 |
表6.7 删除农产品类别信息功能测试用例
用例编号 | 测试用例描述 | 操作过程及数据 | 预期结果 |
viewTag_01 | 输入已存在的农产品类别名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品类别名字‘农产品土鸡蛋’,回车提交请求 | 系统提示查找成功 |
viewTag_02 | 输入已存在的农产品类别名字‘农产品土鸡蛋’ | 在搜索框输入已存在的农产品类别名字‘农产品土鸡蛋’, 回车提交请求 | 系统提示查找失败 |
表6.8 查看农产品类别信息功能测试用例
用例编号 | 测试用例描述 | 操作过程及数据 | 预期结果 |
viewTag_01 | 输入已存在的农产品类别名字‘农产品绿色地瓜’ | 在搜索框输入已存在的农产品类别名字‘农产品绿色地瓜’,回车提交请求 | 系统提示查找成功 |
viewTag_02 | 输入已存在的农产品类别名字‘11’ | 在搜索框输入已存在的农产品类别名字‘农产品绿色地瓜’, 回车提交请求 | 系统提示查找失败 |
6.1.2 前台部分模块测试
用户购买农产品时,浏览前端展示信息的农产品列表模块,点击加入购物车后,点击下单并支付即可完成农产品购买功能。如表6.9所示。
表6.9 购买农产品功能测试
缺陷编号 | 用例描述 | 操作流程 | 预期结果 | 实际结果 |
kepu_01 | 添加信息(成功) | 1、点击农产品购物车操作页面 2、点击下单支付按钮 3、填写正确的信息 4、点击确认按钮 | 1、成功进入农产品购物车操作页面 2、进入农产品购买的弹框 3、农产品购买成功刷新 | 通过 |
kepu _02 | 必填项校验 | 1、下单支付必须购买农产品的信息必填项不输入,点击提交 | 1、表单提示为空,不能成功提交 | 通过 |
订单视图是前端普通用户可见的主要模块,它显示了一些订单信息来评估运行的稳定性,订单视图和声明在6.10中进行检测,声明在6.11使用测试数据中显示。
表6.10 查看订单的功能测试
缺陷编号 | 用例描述 | 操作流程 | 预期结果 | 实际结果 |
detail_01 | 查看订单(成功) | 1、 选择一条农产品订单信息,点击查看订单明细 | 1、成功进入查看订单明细页面 | 通过 |
detail_02 | 查看订单(失败) | 1、选择一条订单信息,点击查看订单明细请求,此时系统服务中断 | 1、界面提示没有相关订单 | 通过 |
表6.11 评论发布的功能测试
缺陷编号 | 用例描述 | 操作流程 | 预期结果 | 实际结果 |
commen_01 | 发布评论 | 1、选择信息,输入评论,点击发布 | 1、评论区新增一条评论信息 | 通过 |
续表6.11 评论发布的功能测试
cmmen_02 | 回复评论 | 1、选择评论,点击回复,输入评论,点击发布 | 1、评论下面新增一条回复信息 | 通过 |
6.2 性能测试
兼容性测试用例如表6.12所示。
表6.12 兼容性测试用例
场景 | 并发数量 | 测试点 |
登录 | 5 | 登录的响应时间 |
10 | ||
15 | ||
20 | ||
查找农产品 | 5 | 查找的响应时间 |
10 | ||
15 | 查找的响应时间 | |
20 | ||
收藏农产品通过 | 5 | 5人集合收藏农产品的负载情况 |
10 | 10人集合收藏农产品的负载情况 | |
结算购买农产品 | 5 | 5人同一时间点结算购买农产品的负载情况 |
10 | 10人同一时间点结算购买农产品的负载情况 |
6.3 测试结论
本系统共准备了93个测试用例,已完成93个,0个处于其他状态。在软件编码阶段,添加了适当的操作信息页面,并测试了一个相当全面的系统。
通过对农产品销售网站各项功能进行单元测试,修复了业务逻辑中的错误,显着提高了系统的可用性和可扩展性。
第7章 结 论
本期研发设计的“乐锄”农产品销售网站实现的功能按照用户角色种类拆分两个端,分别是管理员端与普通用户端。
该系统的问题是未来无法进入真正的支付系统,我们可以根据目前的流程快速开发和拓展这些领域的新业务。总而言之,目前农产品销售网站的设计和使用仍然需要在实体功能上不断更新和更新,以吸引用户,许多商家在产品销售网站上发布特价销售等内容。
本系统的对所得结果与已有结果的比较是设计了网站提供了丰富的功能,包括查看农产品、收藏、购物车、订单管理等,满足了用户的多样化需求。其次界面设计采用了Bootstrap,具有良好的用户体验,操作简单直观,易于上手。为管理员端提供了对农产品、评论、订单等多个模块的管理功能,方便管理员对网站进行维护和管理。
在接下来的阶段,我们计划提升安全措施,采用防火墙、入侵检测系统(IDS)和入侵防御系统(IPS)来监控和防止未经授权的访问和恶意攻击。定期更新系统和相关软件的补丁,以修复已知的漏洞并提高系统的安全性。
参考文献
- 王萱.生鲜农产品电子商务发展中的困境及对策分析[J],全国流通经济,2022(02):127-129.
- 丁敏.基于网络直播的农产品品牌建设研究[J],南方农机,2022(04):73-75
- 李琴,崔名扬,钱奕文等.基于Spring Boot的研究生学术档案管理系统开发[J].电脑农产品科普文章与技术,2023,19(18):46-48+51.
- 马艳夕.基于Spring Boot与BootStrap技术的企业电商平台的设计与实现[J].信息与电脑(理论版),2021,33(03):99-100.
- 杨晟, 罗奇. 基于Spring Boot的在线商城系统设计[J],科技创新与应用,2022(19):33-36.
- 刘升华. Java从入门到实践[M], 北京, 清华大学出版社, 2021.1:128-129.
- 张仁美. Web开发中的常见错误及处理研究[J],电子技术与软件工程,2020(24):147-150.
- 李艳杰.基于MySQL数据库的数据安全应用设计[J].现代信息科技,2023,7(12):151-154.
- 哈奔,包乌云毕力格.基于Bootstrap和Echarts的资产数据可视化实现[J].电脑编程技巧与维护,2022(05):107-109
- 赵俊, 石春.敏捷思想在软件开发中的应用与实践研究[J], 电脑农产品科普文章与技术, 2020.(9):21-25.
- 刘光瑞. Tomcat架构解析.人民邮电出版社,2020.(4):73-76.
- Li Y Z, Gao S, Pan J, et al. Research and application of template engine for web back-end based on MyBatis-Plus[J]. Procedia Computer Science, 2020, 166: 206-212.
- Jiang Zijian; Zhong Hao; Meng NaMeng .NaInvestigating and recommending co-changed entities for JavaScript programs[J],Journal of Systems and SoftwareVolume 180,2022:07-18.
- 豆利. 基于MySQL的查询优化技术[J]. 电脑农产品科普文章与技术:学术版, 2021, 17(15):35-36.
- Musib S. Spring Boot in practice[M]. Simon and Schuster, 2022.