Springboot农产品信息溯源管理小程序 计算机毕设源码58356

摘  要

由于农产品在种植、管理、采摘、贮运和销售等各环节均存在各种潜在的风险,食品的的质量和安全性受到各方面因素的威胁。因此本文旨在建立一个农产品溯源管控机制,提出了一个完整的农产品信息溯源管理小程序的解决方案,消费者可在系统对农产品进行信息追溯,确保农产品在整个供应链中都能实现溯源跟踪和质量管控。

农产品信息溯源管理小程序主要是采用小程序开发技术、Springboot框架、Mysql数据库作为开发平台,系统采用B/S结构进行开发完成。目标是实现一个以销售农产品以及可以对农产品进行溯源信息为中心的平台,构建用户信息与账号,产品溯源与订单信息有机结合的业务系统。

关键词:农产品信息溯源管理;Springboot;Mysql数据库

Due to various potential risks in the cultivation, management, picking, storage, transportation, and sales of agricultural products, the quality and safety of food are threatened by various factors. Therefore, this article aims to establish an agricultural product traceability control mechanism and propose a complete solution for the agricultural product information traceability management mini program. Consumers can trace the information of agricultural products in the system, ensuring that agricultural products can achieve traceability tracking and quality control throughout the entire supply chain.

The agricultural product information traceability management mini program mainly adopts mini program development technology, Springboot framework, and MySQL database as the development platform, and the system is developed using B/S structure. The goal is to achieve a platform centered on the sale of agricultural products and the traceability of agricultural product information, and to build a business system that organically combines user information and account information, product traceability, and order information

Key words:Agricultural product information traceability management; Springboot; MySQL database

目    录

  

ABSTRACT

第1章 绪论

1.1 农产品信息溯源管理小程序开发背景 1

1.2 农产品信息溯源管理小程序研究目的与意义 3

1.3 农产品信息溯源管理小程序内容安排 3

第2章 相关技术

2.1开发环境介绍

2.2统一建模语言

2.3 开发技术

2.3.1J2EE技术 3

2.3.2MySQL数据库 3

2.3.3 B/S结构 4

2.3.4Springboot框架 4

2.5 本章小结 4

第3章 系统需求分析

3.1 业务需求分析 9

3.2 功能需求分析 9

3.2.1系统用户功能 10

3.2.2 商品管理 10

3.2.3 溯源案例管理 10

3.2.4 订单信息管理 11

3.3 本章小结 12

第4章 系统功能与数据库设计

4.1 系统功能总体设计 13

4.2 系统功能详细设计 13

4.2.1 系统登录设计 14

4.2.2 商品浏览设计 14

4.2.3 订单管理设计 15

4.3 数据库设计 16

4.3.1 数据库概念设计 17

4.3.2 数据库逻辑设计 19

4.4 本章小结 22

第5章 系统实现

5.1登录模块

5.2商品信息模块

5.3溯源案例模块

5.4购买商品模块

5.5系统用户管理模块

5.6商品管理模块

5.7订单管理模块

5.8 本章小结 30

第6章 系统测试

6.1 测试概述 35

6.2 测试配置 36

6.3 测试用例 36

6.4 测试结果分析 37

第7章 总结与展望

参考文献

 

                                                                 绪论

1.1农产品信息溯源管理小程序开发背景

近几年,国际和国发生了很多食品安全问题,我国的三聚氰胺事件,以及国际上的新西兰恒天然公司的奶粉问题,这些问题使人们对所购买的农产品等心存疑虑。目前在发达国家,已经形成较为成熟的质量安全追溯机制,如澳大利亚的国家牲畜标识计划,可以迅速查找肉牛从出生到屠宰的各个环节,以及日本的肉牛可溯源机制等。我国的农产品溯源体系还正处于起步阶段,当前的许多溯源系统在实际应用中存在不少的问题,如溯源过程常以企业为责任主体,而没有精确到企业中具体的种植、加工、运输等环节,溯源的精度有待提高。

农产品从生产到消费的整个过程涉及种植、管理、采摘、加工、包装、运输、仓储、货架展示和消费等环节﹐每个环节都有可能带来不安全因素﹐主要包括:种植过程中使用有残留的农药;加工、包装环节操作不规、技术水平不达标等带来的污染;运输、仓储过程中可能与其他货物混装、混放带来的污染等。因此,急需一个农产品溯源方案,对农产品的供应链进行全程监测追踪管理,保障农产品的质量安全。

1.2农产品信息溯源管理小程序研究目的与意义

本系统充分考虑了我国的农产品生产和质量安全管理之间的相互关系,以及互联网络的现代化应用,在互联网络中,搭建一个类似网上商城一样的销售网站内,其中会用到 MyEclipse、MySQL、JSP等之类的网络工程技术。

本系统分为前端和后端,小程序前端,为用户提供:注册登录、商品中心、商品展示、商品购买、溯源案例、我的订单等主要功能。小程序后端,为管理员提供:网站公告管理、溯源案例管理、溯源分类、商品分类、商品中心管理、订单中心管理等优质服务。

1.3农产品信息溯源管理小程序内容安排

本文具体内容包括:绪论、系统采用的关键技术、系统分析、系统设计、系统实现和系统测试。本文着重描述了系统的组成与结构,阐述了系统的设计方案、实现方法以及所采用的开发工具和相关技术,另外,重点剖析了部分环节的开发过程。本系统在一定的环境下对系统的重要模块进行了模拟测试,证实了系统的可用性、可靠性。

                                                                  相关技术

2.1开发环境介绍

1.软件体系结构方案:采用B/S模式,B/S代表的是服务器端由web服务器发放,客户端由浏览器接收的系统,它的前台是html语言,由浏览器解释。B/S结构可以由web服务器能够解释的脚本语言如jsp、php、asp、JavaScript。

2.操作系统方案:Windows 7(旗舰版)操作系统,该系统可以兼容需要的软件,并且具有良好的运行速度,界面良好。

3.后台数据库:选用Mysql。Mysql旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。

4.开发工具:选用Myeclipse10

5.开发语言:Java语言。

6.开发技术:JavaEE+html+css+js技术

2.2统一建模语言

统一建模语言(Unified  Modeling  Language ,UML)是一种可视化建模语言,通俗上讲就是系统开发者利用UML可以清楚地表达出自己对系统是如何设计,是一种设计思想的体现,然而UML就是作为辅助工具,就如汽车轴承的轮滑油。UML包括了一些可以相互组合图表的图形元素。由于UML是一种语言,所以UML具有组合这些元素的法规。UML提供了多种图来设计设计系统,如设计系统前期常用的用例图,行为图等,这些图需要用多个视图来展示一个系统,这组视图被称为一个模型(Model)。一个UML模型描述了一个系统需要做什么。同时,UML提供了组织和扩展这些图的方法。

2.3 框架技术 

2.3.1J2EE技术

人可以掌握多门外语,而一个计算机科学家精通的大多是编程语言,它不是人类的自然语言,比如C语言、Java、Perl等等。由于不同的公司开发出的“中间件”不够规范,所以Sun公司推出J2EE,用这个标准来解决弊病。它提供了良好的机制,让每个层次允许与之相对的服务器、组件运行,使得系统的搭建稳定可用、开发高效、维护方便。

2.3.2MySQL数据库

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

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

2.3.3B/S结构

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

2.3.4Springboot框架

Springboot即VUE+Springboot+Mybatis,这三个框架有各自最独有的优势,那么将它们组合在一起能够碰撞出很强的火花。设计者在不需消耗大量功夫,能做出Web应用程序,而且这个程序还具有层次清晰、升级更新操作不影响正常使用的、允许多次使用的特点。这个复合框架形成一个有着结构完整、功能强大和结构良好的体系:VUE使各板块分离,Springboot使开发更灵活方便,使用Mybatis让开发者直接对对象进行操纵,各层次分工明细,并实现各个层次间的解耦,让代码更加的灵活精简。这个框架使程序员能够规避在开发时期避免个别错误导致整体被破坏,也能在后期应对客户对产品提出的新需求。

2.5 本章小结

本章主要描述了在农产品信息溯源管理小程序的构建过程中用到的技术路线。主要有系统采用的架构、系统用到的核心技术和在系统搭建过程中用的数据存储技术,对系统的后期搭建提供有力的技术支撑

 系统需求分析

3.1业务需求分析

针对农产品销售以及产品质量现存的问题和需要,通过系统需求的分析,特建立了数字化、信息化的农产品信息溯源管理小程序。

本系统主要包含了:网站公告管理、溯源案例管理、溯源分类、商品分类、商品中心管理、订单中心管理等多个功能模块。下面分别简单阐述一下这几个功能模块需求。不同的权限对应相应的功能模块的需求,管理员权限的级别是最高的,所以所对应的需求是最多的,根据不同的权限分别简单阐述一下各个权限的需求。

主要业务流程:以用户的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,进行商品搜索浏览、溯源案例查看以及商品购买等功能操作。

                 

3-1主要业务流程图

3.2功能需求分析

根据条件需要,系统结构主要由四大用户组成。一是用户,二是企业用户,三是监管者,四是管理员。

1用户登录及身份要求

验证用户的信息

2本系统销售功能需求(面向注册用户)

允许用户进行注册。

允许用户评论商品。

允许用户查询商品的信息以及商品搜索等。

允许用户查看溯源案例信息。

允许用户对购买商品。

自动生成订单。

用户在线支付订单费用。

选择商品,进行购买,填写发货地址、联系电话等信息。

3本系统管理功能需求(面向管理员)

用户管理(对用户信息维护管理)

商品管理(发布的商品信息等)

对订单列表的管理(对用户的商品购买订单进行管理)。

对商品分类管理(添加、删除、修改商品类别)。

对溯源案例管理(增删改查案例信息)。

3.2.1系统用户功能

系统用户功能主要有用户可以进行系统的注册,进行系统登录,可以完成个人资料的修改以及登录密码的重置等几个基本的功能。具体功能用例如图3-2所示。

(1)系统用户用例图

图3-2系统用户用例图

(2)系统用户用例描述

用例描述如下表所示。

表3-1 用例描述

用例名称

系统用户

参与者

用户

描述

提供注册登录、更改密码、更改个人资料等功能

前置条件

  1. 用户成功进行系统的注册以及登录
  2. 用户只能对个人资料进行修改和删除

后置条件

事件流

(1)用户进行账户注册

(2)用户进行账户登录

(3)修改个人资料以及登录密码重置

补充说明

(a)新添加的资料不符合要求时会添加失败

(b)修改的密码不符合要求时会修改失败

3.2.2商品管理功能

商品管理的功能主要有修改商品信息、添加商品信息、删除商品信息等几个基本的功能。具体功能用例如图3-3所示。

(1)商品管理用例图

图3-3商品管理用例图

(2)商品管理用例描述

商品用例描述如下表所示。

表3-2 商品用例描述

用例名称

商品管理

参与者

管理员

描述

管理员提供添加、修改、删除商品等功能

前置条件

  1. 管理员成功登录系统
  2. 管理员只能对已存在的商品进行修改和删除

后置条件

事件流

(1)管理员查看修改商品

(2)管理员添加商品

(3)管理员删除商品

补充说明

(a)新添加的商品不符合要求时会添加失败

(b)修改的商品不符合要求时会修改失败

3.2.3溯源案例管理

溯源案例管理的功能主要有溯源案例发布、管理溯源案例等基本的功能。具体功能用例如图3-4所示。

(1)溯源案例管理用例图

图3-4溯源案例管理用例图

(3)溯源案例用例描述如下表所示。

表3-3 溯源案例用例描述

用例名称

溯源案例管理

参与者

管理员

描述

管理员提供发布管理溯源案例等功能

前置条件

  1. 管理员成功登录系统
  2. 管理员只能对产品的溯源案例进行新增以及发布

后置条件

事件流

(1)管理员新增溯源案例

(2)管理员发布溯源案例

补充说明

(a)溯源案例不符合要求时会显示新增失败

(b)回复的内容不符合要求时会显示发布失败

3.2.4订单信息管理

订单信息管理的功能主要有添加订单、修改订单、审核订单、查看订单等几个基本的功能。具体功能用例如图3-5所示。

(1)订单信息管理用例图

图3-5订单信息管理用例图

(4)订单信息管理用例描述如下表所示。

表3-4 订单信息管理用例描述

用例名称

订单管理

参与者

用户以及管理员

描述

用户可以进行订单添加以及修改,管理员可以进行订单查看以及审核等功能

  1. 前置条件
  1. 用户成功登录系统
  2. 用户能对订单进行添加以及修改订单资料
  3. 管理员可以查看用户提交的订单信息
  4. 管理员对用户订单进行审核

后置条件

事件流

(1)用户修改订单

(2)用户添加订单

(3)管理员审核订单

(4)管理员查看订单

补充说明

(a)新添加的订单不符合要求时会添加失败

(b)审核的订单不符合要求时会审核失败

3.3 本章小结

本章通过对农产品信息溯源管理小程序的业务需求进行认真分析的基础上,画出了系统的主要业务流程图,然后对农产品信息溯源管理小程序的功能进行了需求分析并给出了各个功能构件的用例图和用例描述,为后期系统的设计与实现打下坚实基础

系统功能与数据库设计

根据需求分析的结果,需要对系统进行功能结构设计。本章主要是在系统需求分析的基础上实现了农产品信息溯源管理小程序的功能性结构设计和后台数据库设计

4.1系统功能总体设计

本系统功能总体设计是基于Java技术+Mysql数据库+Tomcat服务器的方式设计,以Myeclipse10为开发工具,并运用Photoshop CS6技术美化网页,辅之以CSS技术。本系统使用的角色主要有系统管理员、注册用户、企业用户、监管者等,系统分为前台和后台,前台主要用于商品的展示、溯源案例查看和商品的购买,后台用于商品信息、溯源案例和订单管理。

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

图 4-1 系统总体结构包图

4.2 系统功能详细设计

根据系统的总体结构图对本系统的功能进行了详细设计,下面以一些典型的具体功能为例进行详细的描述。

4.2.1 系统登录设计

系统用户在使用系统的时候需要输入用户的账号和密码进行登录,当用户输入账号和密码以后点击登录,这时系统会自动的将用户所输入的信息和后台的数据库中存储的数据进行对比,如果用户输入的数据经过数据的验证是合法的,则用户可以登录系统。登录后的页面主要是由系统的主界面所构成,在这里用户可以对系统的各种功能根据自己的权限进行有效的操作。而对于自己权限不足的功能则不能够进行操作。如果用户输入的信息和后台的数据库对比后不一致,在该用户则无权对系统进行操作,系统会提示用户重新输入账号和密码,如果输入的次数达到一定时,系统则会自动退出。

如下图4-2所示为用户登录活动图。

图4-2用户登录活动图

4.2.2 商品浏览设计

用户登录系统前台可以进行商品浏览,用户可以查看商品的详细信息和选择相应的商品类别进行该类别下的商品查看,用户还可以通过商品名称的关键字进行搜索。

如下图4-3所示为商品浏览活动图。

图4-3商品浏览活动图

4.2.3 订单管理设计

用户购买商品后,填写收货地址、收货人、电话等信息,生成订单信息,管理员可以审核订单,删除、修改订单,对订单信息进行相应的商品发货。 

如下图4-4所示为订单管理活动图。

图4-4订单管理活动图

4.3数据库设计

4.3.1数据库概念设计

数据库是用来存放系统运行的数据信息的,本系统的数据库是通过对农产品信息溯源管理小程序的需求分析与功能流程分析的基础上,设计出本系统数据库的主要实体有:个人信息、用户管理、商品信息、溯源案例等基本实体,他们彼此之间相互联系。其对应的实体分别为:

(1)商品信息的实体图如下图所示。

图4-5商品信息实体图

(2)商品分类实体图如下图所示。

图4-6商品分类实体图

(3)用户信息实体图如下图所示。

图4-7用户信息实体图

(4)订单信息的实体图如下图所示。

图4-8订单信息实体图

溯源案例的实体图如下图所示。

图4-9溯源案例实体图

以上各个实体之间存在的关系如图4-10所示

图4-10系统E-R图

4.3.2数据库逻辑设计

经过前期的需求分析、可执行分析、数据流分析等各个流程分析,结合软件工程的高内聚、低耦合规则,并考虑到以后的程序功能扩展,设计如下几张表

表commodity_center (商品中心)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

commodity_center_id

int

10

0

N

Y

商品中心ID

2

item_no

varchar

64

0

Y

N

商品编号

3

trade_name

varchar

64

0

Y

N

商品名称

4

commodity_category

varchar

64

0

Y

N

商品类别

5

picture

varchar

255

0

Y

N

图片

6

enterprise

int

10

0

Y

N

0

企业

7

place_of_origin

varchar

64

0

Y

N

产地

8

stock

int

10

0

Y

N

0

库存

9

price

int

10

0

Y

N

0

价格

10

product_details

text

65535

0

Y

N

商品详情

11

hits

int

10

0

N

N

0

点击数

12

praise_len

int

10

0

N

N

0

点赞数

13

examine_state

varchar

16

0

N

N

未审核

审核状态

14

examine_reply

varchar

16

0

Y

N

审核回复

15

recommend

int

10

0

N

N

0

智能推荐

16

qrcode_img

varchar

255

0

N

N

二维码图片

17

qrcode_title

varchar

64

0

N

N

二维码标题

18

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

19

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表commodity_classification (商品分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

commodity_classification_id

int

10

0

N

Y

商品分类ID

2

commodity_category

varchar

64

0

Y

N

商品类别

3

recommend

int

10

0

N

N

0

智能推荐

4

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表enterprise_users (企业用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

enterprise_users_id

int

10

0

N

Y

企业用户ID

2

enterprise_no

varchar

64

0

Y

N

企业编号

3

enterprise_name

varchar

64

0

Y

N

企业名称

4

person_in_charge

varchar

64

0

Y

N

负责人

5

examine_state

varchar

16

0

N

N

未审核

审核状态

6

recommend

int

10

0

N

N

0

智能推荐

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表order_center (订单中心)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

order_center_id

int

10

0

N

Y

订单中心ID

2

order_number

varchar

64

0

Y

N

订单号

3

item_no

varchar

64

0

Y

N

商品编号

4

trade_name

varchar

64

0

Y

N

商品名称

5

enterprise

int

10

0

Y

N

0

企业

6

price

int

10

0

Y

N

0

价格

7

user

int

10

0

Y

N

0

用户

8

picture

varchar

255

0

Y

N

图片

9

purchase_quantity

int

10

0

Y

N

0

购买数量

10

total_price

varchar

64

0

Y

N

总价格

11

contact_number

varchar

64

0

Y

N

联系电话

12

shipping_address

varchar

64

0

Y

N

收货地址

13

consignee

varchar

64

0

Y

N

收货人

14

pay_state

varchar

16

0

N

N

未支付

支付状态

15

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

16

recommend

int

10

0

N

N

0

智能推荐

17

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表regulator (监管者)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

regulator_id

int

10

0

N

Y

监管者ID

2

full_name

varchar

64

0

Y

N

姓名

3

examine_state

varchar

16

0

N

N

已通过

审核状态

4

recommend

int

10

0

N

N

0

智能推荐

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

4.4本章小结

本章在前述业务流程的基础上对系统的功能进行了详细设计,并给出了部分功能的活动图,同时根据系统数据存储的要求对系统的数据库进行了详细的逻辑设计和物理设计,为系统的具体实现打下坚实的基础


  1. 系统实现

5.1登录模块

本系统主要的用户有系统管理员、用户,一个系统最基本的功能就是登录功能,本系统可以进行系统登录的角色有用户、管理员,用户对应前台登录界面,管理员对应后台登录界面,首先进入登录页,输入用户名和密码,然后提交至服务端进行数据库数据验证,通过JavaEE逻辑代码判断数据库是否存在用户输入的这一个记录,如果存在,则判断用户身份,如果是用户,则进入用户前台,如果是管理员用户,则进入系统主页,并把用户对象存放在session中,如果不存在这样一条记录,则返回登录界面。

登录界面如下所示。

图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.2商品信息模块

系统为用户提供商品信息推荐,方便用户浏览商品。在shangpinlist.jsp实现商品列表的展示,用户点击浏览,通过推荐id传递值,找到数据表对应的商品信息。

如下图所示为商品信息界面。

图5-2商品信息界面

商品信息关键代码如下:

    @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.3溯源案例模块

系统提供溯源案例功能,用户可以进行溯源案例浏览内容的浏览查看等。

如下图所示为溯源案例的部分界面。

图5-3溯源案例界面

溯源案例关键代码如下:

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

}

5.4购买商品模块

用户在浏览商品后,登录系统前台,进行商品购买,确定商品之后可以生成订单,然后支付。

如下图所示为购买商品的部分界面。

图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系统用户管理界面

系统用户管理关键代码如下:

@RequestMapping("/get_obj")

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

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

如下图所示为企业用户管理界面。

图5-6企业用户管理界面

5.6商品管理模块

管理人员可以对商品进行增删查改的操作,这些操作将在商品管理界面进行。

如下图所示为商品管理界面。

图5-7商品管理界面

商品管理关键代码如下:

public Map<String, Object> error(Integer code, String message) {

        Map<String, Object> map = new HashMap<>();

        map.put("error", new HashMap<String, Object>(4) {{

            put("code", code);

            put("message", message);

        }});

        return map;

}

5.7订单管理模块

管理人员可以对订单进行增删查改的操作,这些操作将在订单管理界面进行。

如下图为订单管理界面。

图5-8订单管理界面

订单管理关键代码如下:

public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

5.8本章小结

在本章中主要对农产品信息溯源管理小程序的功能实现进行了效果展示,该系统的主要功能有用户管理、商品管理、商品购买、溯源案例管理、订单管理个基本功能。在功能展示的基础上并采用Springboot+VUE+mybaits+html技术对系统进行了实现,达到了设计的效果

 

  1.  系统测试

6.1测试概述

该系统能够完成商品选购,商品信息浏览、商品管理,溯源案例管理,订单管理,用户管理等功能,做到所开发的系统操作简单,尽量使系统操作不受用户对电脑知识水平的限制,符合系统可维护性,由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,系统可以对系统数据及一些简单的功能进行独立的维护及调整;符合系统开放性要求,该系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接。

6.2测试配置

(1)测试环境

系统一旦开发完成以后就要对系统进行测试,在本测试过程中对系统的运行环境平台环境如表6-1所示.

表6-1 系统测试环境

环  境

配  置

备  注

Web服务器(硬件)

联想 CPU:2.0*2

内存:8G

硬盘:300GB

100/1000M局域网卡

数据库服务器(硬件)

联想 CPU:2.0*2

内存:16G

硬盘:500GB

100/1000M局域网卡

操作系统(软件)

Windows XP或Windows 7及以上操作系统

Web服务器(软件)

JDK 7.0

Tomcat 8.0

数据库服务器(软件)

SQL Server 2008 数据库

客户机若干

联想家用电脑常规配置

满足基本的网络运行条件即可

(2)测试工具

在对本农产品信息溯源管理小程序进行功能测试时采用了当前流行的测试工具WinRunner;对系统进行性能测试时采用用户信息管理软件dRunner。这两款软件性能优越,操作简单,是进行测试的必备工具软件。

(3)测试流程

本系统在进行功能测试的时候采取黑盒测试的方法,在系统进行测试时根据第三章的系统需求分析进行测试,用以检验系统的功能是否能够满足用户的基本需求,测试流程如图6-1所示。

6.3 测试用例

(1)注册测试

表6-2注册测试用例

字段名称

描述

测试项

首页注册功能测试

输入数据

1、输入正确的邮箱、用户名、密码、确认密码、以及验证码之后点击“注册”按钮

2、输入错误的用户名或密码、邮箱、验证码等,单击“注册”按钮

3、不输入邮箱、用户名、密码、确认密码、以及验证码之后点击“注册”按钮

预计输出数据

1、用户能正确注册账号,成功插入数据库用户的账户资料,提示注册成功。

2、无法注册用户信息,注册失败。

3、无法注册用户信息,注册失败。

使用上述测试用例对前台首页注册界面进行测试,当在输入正确的邮箱、用户名、密码、确认密码、以及验证码之后,系统将弹出注册成功信息提示对话框。

使用上述测试用例对前台首页注册界面进行测试,当在输入错误的用户名或密码、邮箱、验证码之后,系统将提示错误。

使用上述测试用例对前台首页注册界面进行测试,当在不输入用户名、密码、邮箱、验证码之后,点击注册按钮。

(2)登录界面进行测试 

表6-3登录测试用例

测试项

首页登录功能测试

输入数据

1、输入正确的用户名和密码,单击“登录”按钮

2、输入错误的用户名和密码,单击“登录”按钮

3、不输入用户名和密码,单击“登录”按钮

预计输出数据

1、数据库中存在的用户能正确登录,。结果弹出主界面。

2、错误的或者无效用户登录,登录系统失败。

3、输入用户名或密码信息为空,登录系统失败。

3)商品管理进行测试 

名称:用户管理测试        目的:测试商品管理界面 

内容:口令的输入,合法性检查,合理性检查,界面的显示控制。 

下表描述了商品表中目前所存在的记录。

表6-4商品表预存数据

    商品名

商品类别

商品价格

商品状态

A

A

389

上架

B

B

249

上架

C

C

322

下架

D

D

168

上架

添加时应注意事项:

管理员添加商品时必须添加已存在的商品类别,若该商品不属于现有的所有类别,则应该先添加商品类别。

下表描述了添加商品进行测试的用例,主要是为了防止添加商品时出现异常和存在的漏洞。

表6-5添加商品测试用例

输入

输出

商品名

商品价格

商品图片

   空

参数错误

参数错误

请选择上传图片

A

1

a.jpg

添加成功

4)购买商品测试 

名称:购买商品测试        目的:测试购买商品界面 

内容:口令的输入,合法性检查,合理性检查,界面的显示控制。 

下表描述了购买商品的测试用例,防止购买时出错。

表6-6购买商品测试用例

输入

输出

用户ID

商品ID

商品数量

11

1

1

购买商品成功

22

电视

请填写商品数量

33

电视

a

购买失败

用户购买商品时,首先判断商品数量是否小于库存,若超出库存数量,则提示商品数量不足。

6.4测试结果分析

通过对农产品信息溯源管理小程序的测试,测试结果表明本系统能够完全的完成之前对系统的的功能需求分析,并能够实现农产品交易以及农产品质量溯源。同时,本系统良好的操作界面和菜单功能设计能够给操作者提供良好的视觉效果,具备了简单、美观的界面设计效果,达到了系统设计的目的。

                                                           总结与展望

经过这几个月的设计和开发,“基于Springboot的农产品信息溯源管理小程序”已经完成了,其功能符合设计需求,能够完成用户的注册、在线购买、商品查询和管理员的商品分类管理、订单审核、用户管理、溯源案例维护、查询等功能。经过最后的使用,证明系统完全具有可行性与可扩充性。

在系统的分析阶段,主要是分析系统的需求,理解系统要完成的基本功能,找出系统的用例(Use Case)和角色(Actor),画出系统的用例模型图,用例模型是此后系统建模的基础。在用例的基础上分析顺序图和协作图,得到系统的所有对象,然后建立对象模型。抽象出系统的类,并将系统中联系紧密的类划分为若干个包,画出包图。有了这些基础,就可以将系统划分为小单元功能模块。

整个过程中,我必须认可UML统一建模语言,它让我很清晰的知道自己想做什么,想实现什么,对系统后面的代码编写起到决定性的帮助,同时经过本次系统的设计与实现,让我积累了很多经验,提高了编写程序的能力,为以后的学习和工作打下了坚实的基础。

由于时间有限,本系统还有待继续完善和改进,因此需要进一步进行分析和修改,以使其更加完善! 

                                                参考文献

[1]杨荣荣.大力发展休闲农业对保障与提高农产品质量安全的作用[J].智慧农业导刊,2023,3(05):62-65.

[2]高艳,王鑫,赵建欣.线上销售生鲜农产品质量安全的精准管控研究[J].现代食品,2023,29(03):137-139.

[3]陶柳秀.电子商务环境下农产品质量安全问题研究[J].现代食品,2023,29(02):179-181.

[4]潘多.农产品质量安全现状、问题与对策[J].现代食品,2022,28(24):162-164.

[5]魏文彦. 基于区块链的农产品安全溯源平台系统设计与实现[D].武汉轻工大学,2022.

[6]邵伟玮,何青松.农产品溯源管理系统的分析与应用[J].电脑编程技巧与维护,2022(03):106-109+146.

[7]刘祥宇. 农产品溯源管理系统的设计与开发[D].大连海洋大学,2022.

[8]张鹏. 区块链农产品溯源下共识算法的改进与研究[D].石家庄铁道大学,2021.

[9]徐鸿卓.粤港澳大湾区“菜篮子”农产品质量安全溯源管理系统建设探讨[J].现代农业装备,2020,41(04):55-58.

[10]李军. “雍贝”金果梨智能化溯源管理体系构建与应用[D].天津农学院,2019.

[11]赵根,陈丽萍,吴伟丽,钱伟红,韩明丽.农产品安全溯源管理系统的功能和意义[J].现代农业科技,2018(20):256-257.

[12]徐杰,张俊,王秀徽,周正,杨宝祝.基于国产基础软件的农产品质量安全溯源管理系统的设计与实现(英文)[J].Agricultural Science & Technology,2018,13(08):1811-1816..

                                                               致 谢

大学的学习生活总是感觉短暂的,总感到知识还没有学够,但大学毕业就在我们面前,即毕业设计即将的结束,意味着我们的大学生涯即将结束。毕业设计是我们在大学所学知识的一次总结,更是对我们过去所学知识的提炼和升华,通过毕业设计,我们认识到大学学习过程中还有那些知识没有掌握,那些知识需要我们进入深入研究。这次毕业设计让我学到了很多新的知识,研究了一些新的以前自己不熟悉的领域,使我处理问题的能力得到了一定的提升,同时也为今后的继续深造或踏入社会大门提供了很好的锻炼机会。

我也曾经沮丧过,失落过,想放弃过,可是因为你们这不厌其烦的鼓励和支持才使得我坚持了下来,这里我要对我的老师和同学们说句“谢谢你们”。因为我们的知识是有限的,所以本文将不可避免的会出现一些错误和不足之处,还请老师指正。

                                       免费领取源码,请点赞关注私信博主

  • 42
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SpringBoot是一种基于Java的开发框架,可以用于快速构建和开发各种应用程序,包括农产品溯源系统。 农产品溯源是指通过追溯农产品的生产、流通和销售过程,以确保农产品质量和安全。使用SpringBoot开发农产品溯源系统有以下几个优势: 1. 快速开发:SpringBoot提供了很多开箱即用的组件和功能,可以大大加快系统开发的速度。开发者只需要配置一些必要的信息,就可以快速搭建起一个运行良好的农产品溯源系统。 2. 健壮性:SpringBoot框架有很好的错误处理和异常处理机制,可以帮助开发者有效地处理系统中可能出现的各种异常情况,保证系统的健壮性和稳定性。 3. 微服务架构:使用SpringBoot开发农产品溯源系统可以采用微服务架构,将不同功能模块独立开发、独立部署,可以提高系统的可伸缩性和可维护性。 4. 数据库操作:SpringBoot集成了许多数据库操作的工具,可以方便地与数据库进行交互,存储和查询农产品信息。同时,SpringBoot也支持事务管理,可以确保数据的一致性和完整性。 5. 安全性和权限控制:SpringBoot框架提供了一些安全和权限相关的组件和机制,可以帮助开发者实现数据安全和权限控制,保护农产品溯源系统中的数据和系统资源。 总之,使用SpringBoot开发农产品溯源系统可以快速、高效地构建一个安全可靠的系统,实现对农产品生产、流通和销售过程的全程追溯,并保证农产品的质量和安全。 ### 回答2: Spring Boot是一个开源的Java框架,可用于构建独立的、基于微服务的应用程序。农产品溯源是指追踪农产品的生产过程和流通路径,以确保产品的质量和安全性。下面是使用Spring Boot进行农产品溯源的一些方法和特点: 1.数据采集:使用传感器、RFID等技术,收集农产品种植、养殖过程中的各种数据,如温度、湿度、用药情况等。 2.区块链技术:利用Spring Boot与区块链技术集成,将农产品的生产数据等信息记录在区块链上,确保数据的可信性和不可篡改性。 3.溯源查询:通过Spring Boot构建的Web接口,提供用户查询农产品溯源信息,并展示产品的生产地、生产时间、供应商等相关信息。 4.数据分析:利用Spring Boot集成的数据分析工具,对农产品溯源数据进行分析和挖掘,发现潜在的问题和风险。 5.供应链管理:通过Spring Boot构建的供应链管理系统,对农产品的流通路径进行管理和监控,确保产品在流通环节中的安全性和可追溯性。 总之,使用Spring Boot构建农产品溯源系统可以帮助用户了解农产品的生产过程,提高用户对产品质量和安全性的信任度,同时也为农产品的质量监管和风险防控提供了有效的工具和手段。 ### 回答3: Spring Boot是一个开源的Java框架,可以帮助我们快速构建基于Java的应用程序。而农产品溯源是指通过技术手段追溯农产品从种植、生产到销售的全过程,保障农产品的质量和安全。 在使用Spring Boot进行农产品溯源时,我们可以借助其提供的诸多功能和特性,来构建一个高效可靠的溯源系统。首先,我们可以使用Spring Boot的Web组件来搭建一个直观友好的前后端交互界面,供农民、生产商和消费者使用,实现信息的共享和追溯。 其次,Spring Boot的数据访问组件可帮助我们连接数据库,存储和管理农产品相关的信息,如农产品的生长环境、生产过程、产品质量等。利用Spring Boot的ORM框架,我们可以更加方便地进行数据的增删改查,确保信息的准确性和一致性。 此外,Spring Boot还提供了安全性和身份验证的支持,我们可以通过集成Spring Security实现对农产品溯源系统的访问权限控制,保护系统的安全性,防止信息被篡改或滥用。 最后,Spring Boot的日志管理和跟踪功能可以帮助我们记录和监控农产品溯源系统的运行情况,及时发现和解决问题,提高系统的稳定性和可靠性。 综上所述,使用Spring Boot来开发农产品溯源系统是一种高效、可靠的选择。它可以帮助我们快速构建一个功能完善的系统,确保农产品的质量和安全,保护消费者的权益,促进农产品的可持续发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值