收藏关注不迷路!!
🌟文末获取源码+数据库🌟
感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
前言
💗博主介绍:✨全网拥有20W+粉丝、CSDN作者、博客专家、全栈领域优质创作者、平台优质Java创作者、专注于Java、小程序、python、安卓技术领域和毕业项目实战✌💟!✨💗
👇🏻 精彩专栏 推荐订阅👇🏻
计算机毕业设计设计精品实战案例✅
感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,博主免费解答、希望可以帮助更多人
详细视频演示
文章底部名片,获取项目的完整演示视频,免费解答技术疑问
项目介绍
本文所设计的生鲜农产品保鲜及溯源管理系统的设计与实现拥有前端和后端,前端使用Vue.js框架和创建,后端使用Springboot框架创建,开发语言采用Java,使用Mysql数据库对后台数据进行存储。将IDEA作为主要的开发工具。接着进行系统的需求分析、功能设计、数据库设计,最后进行编码实现。
实现了一个完整的生鲜农产品保鲜及溯源管理系统,其中主要有用户模块、用户表模块、token表模块、系统简介模块、收藏表模块、入库信息模块、品牌模块、订单模块、新闻资讯分类模块、新闻资讯模块、友情链接模块、产品信息评论表模块、配置文件模块、出库信息模块、产品信息模块、产品分类模块、购物车表模块、采购登记模块、地址模块、账户的注册与登录等功能模块。本文详细介绍了该生鲜农产品保鲜及溯源管理系统的设计过程,并通过全面测试,完善了预期的功能。研究表明采用B/S架构,通过Vue.js框架、Springboot框架以及Mysql数据库可以构建一个完整生鲜农产品保鲜及溯源管理系统。最后,整个论文从系统分析、设计、实现以及最后的测试做了一个合理的安排。通过最终的研讨做出一个可行性的方案,在完成以后我们做了详细的介绍并找出系统的不足之处,从而来弥补系统的完善,最终打到符合毕业答辩要求的标准。。
因此生鲜农产品销售需要网络化、透明化,商家可以通过本系统来对生鲜农产品数据库中的生鲜农产品信息,生鲜农产品样式,生鲜农产品价格等等一系列信息进行有效的管理。而用户可以通过生鲜农产品销售系统页面来查询生鲜农产品的价格,生鲜农产品的品种等生鲜农产品信息,并且可以通过系统来进行下单,从而购买生鲜农产品。这样整个系统便可以做到对商家销售的简单管理化,也方便用户购买生鲜农产品。
本系统采用的是Html+Css+Vue作为系统的前台实现技术,采用MySQL数据库作为系统数据库、Model2开发模型作为系统的开发模型。
在经过大量的需求分析之后,本系统分为前台用户模块以及后台管理员模块,前台用户模块主要负责生鲜农产品的浏览、购物车、订单等功能。而后台管理员模块则主要负责生鲜农产品信息及其类别的管理,订单管理,用户管理的功能。
技术介绍
开发语言:Java
框架:springboot
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven
功能介绍
本系统可分为两个大的模块,即前台用户模块和后台管理员模块,前台用户模块用户可以进行浏览查询生鲜农产品的各种信息,添加购物车,下订单等各种操作。后台管理员模块管理员可以进行生鲜农产品的上架以及下架处理,还有处理订单,生鲜农产品分类等功能。
3.3.1前端模块
前台用户模块应具有以下功能:
1.用户注册和登录功能:用户通过注册并激活之后可以登录访问本系统。登录成功的用户,可以查看系统内的信息。
2.生鲜农产品展示功能:登录用户或者非登录用户(游客)都可以查看本生鲜农产品订购系统发布的所有生鲜农产品信息。
3.生鲜农产品按类查询功能:登录用户或者游客,可以通过生鲜农产品的不同类别来查询生鲜农产品。
4.购物车功能:只有登录后的会员才可以使用购物车,可以向购物车中添加生鲜农产品,也可以删除购物车中的生鲜农产品。
5.订单管理功能:只有登录的会员才可以使用该功能,用户可以在该模块中查看订单的详细信息,也可进行付款,以及确认收货的操作。
6.用户信息修改模块:只有登录后才可以使用该模块功能,在该模块中用户可以修改自己的用户名,密码信息。
3.3.2 后台模块
后台管理员操作模块应具有以下功能:
1.用户信息管理:后台管理员可以查询用户信息,也可以删除用户和恢复用户。
2.生鲜农产品及类别管理:后台管理员可以添加新的生鲜农产品类别,也可以删除旧类别。
3.订单管理:后台管理员可以根据订单的状态来查询订单信息,还可以进行发货。
4.生鲜农产品详细信息管理:后台管理员可以对生鲜农产品进行下架和新品生鲜农产品上架的处理,还可以修改生鲜农产品的价格、生鲜农产品名等。
用户登录界面
首页
生鲜产品:水果、蔬菜、海鲜、肉类、蛋奶类等,可以自由发挥,也可以就这几种,对应种类里面的每个商品详情(属性必有新鲜度)有一个固定二维码(扫描后可以出现对应商品的图片、名称、科目、产地信息、种植时间、种植过程、种植周期、采摘时间、运输时间、运输方式、保质期等信息)
新闻公告:展示最近降价优惠的产品信息
个人中心
后台管理:个人信息、修改密码、注销登录等操作
购物车
管理员登录界面
个人中心
用户管理:对用户的信息进行增删查改
仓库管理:
1. 生鲜管理,能够对产品进行出入库、详情、删除、修改等操作
2. 入库管理,增查改,详情
3. 出库管理,增查改,详情
4. 采购单登记管理,增删查改,详情
产品管理:
1. 分类管理,能够对用户界面能看到的生鲜产品的种类进行增添查改
2. 生鲜管理,能够对生鲜产品进行增添查改,查看评论(对评论进行增删改)
系统管理:
1. 新闻公告,能够对用户界面看到的产品信息进行增添查改
2.轮播图管理
3. 保鲜管理
4. 订单管理
其结构图如图3-1所示:
图3–1系统结构图
核心代码
package com.example.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.Caiwu;
import com.example.exception.CustomException;
import com.example.service.CaiwuService;
import com.example.utils.MapWrapperUtils;
import com.example.utils.jwt.JwtUtil;
import com.example.vo.CaiwuVo;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/caiwu")
public class CaiwuController {
@Resource
private CaiwuService caiwuService;
@PostMapping
public Result<Caiwu> add(@RequestBody CaiwuVo caiwu) {
caiwuService.add(caiwu);
return Result.success(caiwu);
}
@PostMapping("/deleteList")
public Result<Caiwu> deleteList(@RequestBody CaiwuVo caiwu) {
caiwuService.deleteList(caiwu.getList());
return Result.success();
}
@DeleteMapping("/{id}")
public Result delete(@PathVariable Long id) {
caiwuService.delete(id);
return Result.success();
}
@PutMapping
public Result update(@RequestBody CaiwuVo caiwu) {
caiwuService.update(caiwu);
return Result.success();
}
@GetMapping("/{id}")
public Result<Caiwu> detail(@PathVariable Integer id) {
Caiwu caiwu = caiwuService.findById(id);
return Result.success(caiwu);
}
@GetMapping
public Result<List<Caiwu>> all() {
return Result.success(caiwuService.list());
}
@PostMapping("/page")
public Result<CaiwuVo> page(@RequestBody CaiwuVo caiwuVo) {
return Result.success(caiwuService.findPage(caiwuVo));
}
@PostMapping("/login")
public Result login(@RequestBody Caiwu caiwu, HttpServletRequest request) {
if (StrUtil.isBlank(caiwu.getZhanghao()) || StrUtil.isBlank(caiwu.getMima())) {
throw new CustomException(ResultCode.PARAM_LOST_ERROR);
}
Caiwu login = caiwuService.login(caiwu);
// if(!login.getStatus()){
// return Result.error("1001","状态限制,无法登录系统");
// }
if(login != null) {
HashMap hashMap = new HashMap();
hashMap.put("user", login);
Map<String, Object> map = MapWrapperUtils.builder(MapWrapperUtils.KEY_USER_ID,caiwu.getId());
String token = JwtUtil.creatToken(map);
hashMap.put("token", token);
return Result.success(hashMap);
}else {
return Result.error();
}
}
@PutMapping("/updatePassword")
public Result updatePassword(@RequestBody Caiwu info, HttpServletRequest request) {
Caiwu caiwu = caiwuService.findById(info.getId());
String oldPassword = SecureUtil.md5(info.getMima());
if (!oldPassword.equals(caiwu.getMima())) {
return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
}
info.setMima(SecureUtil.md5(info.getNewPassword()));
Caiwu caiwu1 = new Caiwu();
BeanUtils.copyProperties(info, caiwu1);
caiwuService.update(caiwu1);
return Result.success();
}
}
数据库参考
--
-- Current Database: `springboot2a094e1l`
--
/*!40000 DROP DATABASE IF EXISTS `springboot2a094e1l`*/;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `springboot2a094e1l` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `springboot2a094e1l`;
--
-- Table structure for table `address`
--
DROP TABLE IF EXISTS `address`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `address` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`userid` bigint(20) NOT NULL COMMENT '用户id',
`address` varchar(200) NOT NULL COMMENT '地址',
`name` varchar(200) NOT NULL COMMENT '收货人',
`phone` varchar(200) NOT NULL COMMENT '电话',
`isdefault` varchar(200) NOT NULL COMMENT '是否默认地址[是/否]',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='地址';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `address`
--
LOCK TABLES `address` WRITE;
/*!40000 ALTER TABLE `address` DISABLE KEYS */;
INSERT INTO `address` VALUES (1,'2024-03-11 06:18:17',11,'宇宙银河系金星1号','金某','13823888881','是'),(2,'2024-03-11 06:18:17',12,'宇宙银河系木星1号','木某','13823888882','是'),(3,'2024-03-11 06:18:17',13,'宇宙银河系水星1号','水某','13823888883','是'),(4,'2024-03-11 06:18:17',14,'宇宙银河系火星1号','火某','13823888884','是'),(5,'2024-03-11 06:18:17',15,'宇宙银河系土星1号','土某','13823888885','是'),(6,'2024-03-11 06:18:17',16,'宇宙银河系月球1号','月某','13823888886','是'),(7,'2024-03-11 06:18:17',17,'宇宙银河系黑洞1号','黑某','13823888887','是'),(8,'2024-03-11 06:18:17',18,'宇宙银河系地球1号','地某','13823888888','是'),(9,'2024-03-11 06:22:08',1710138112988,'上海市阳光小区A栋502','王莉','15251214121','是');
/*!40000 ALTER TABLE `address` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `caigoudengji`
--
DROP TABLE IF EXISTS `caigoudengji`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `caigoudengji` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`caigoubianhao` varchar(200) DEFAULT NULL COMMENT '采购编号',
`chanpinmingcheng` varchar(200) NOT NULL COMMENT '产品名称',
`chanpinfenlei` varchar(200) NOT NULL COMMENT '产品分类',
`gongyingshang` varchar(200) DEFAULT NULL COMMENT '供应商',
`caigoujiage` double NOT NULL COMMENT '采购价格',
`caigoushuliang` int(11) NOT NULL COMMENT '采购数量',
`caigouzonge` double DEFAULT NULL COMMENT '采购总额',
`caigoushijian` datetime DEFAULT NULL COMMENT '采购时间',
`caigoushuoming` longtext COMMENT '采购说明',
PRIMARY KEY (`id`),
UNIQUE KEY `caigoubianhao` (`caigoubianhao`)
) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8 COMMENT='采购登记';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `caigoudengji`
--
LOCK TABLES `caigoudengji` WRITE;
/*!40000 ALTER TABLE `caigoudengji` DISABLE KEYS */;
INSERT INTO `caigoudengji` VALUES (71,'2024-03-11 06:18:17','1111111111','产品名称1','产品分类1','供应商1',1,1,1,'2024-03-11 14:18:17','采购说明1'),(72,'2024-03-11 06:18:17','2222222222','产品名称2','产品分类2','供应商2',2,2,2,'2024-03-11 14:18:17','采购说明2'),(73,'2024-03-11 06:18:17','3333333333','产品名称3','产品分类3','供应商3',3,3,3,'2024-03-11 14:18:17','采购说明3'),(74,'2024-03-11 06:18:17','4444444444','产品名称4','产品分类4','供应商4',4,4,4,'2024-03-11 14:18:17','采购说明4'),(75,'2024-03-11 06:18:17','5555555555','产品名称5','产品分类5','供应商5',5,5,5,'2024-03-11 14:18:17','采购说明5'),(76,'2024-03-11 06:18:17','6666666666','产品名称6','产品分类6','供应商6',6,6,6,'2024-03-11 14:18:17','采购说明6'),(77,'2024-03-11 06:18:17','7777777777','产品名称7','产品分类7','供应商7',7,7,7,'2024-03-11 14:18:17','采购说明7'),(78,'2024-03-11 06:18:17','8888888888','产品名称8','产品分类8','供应商8',8,8,8,'2024-03-11 14:18:17','采购说明8'),(79,'2024-03-11 06:25:25','1710138331222','橘子','水果','111',10,100,1000,'2024-03-11 14:25:31','111');
/*!40000 ALTER TABLE `caigoudengji` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `cart`
--
DROP TABLE IF EXISTS `cart`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `cart` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`tablename` varchar(200) DEFAULT 'chanpinxinxi' COMMENT '商品表名',
`userid` bigint(20) NOT NULL COMMENT '用户id',
`goodid` bigint(20) NOT NULL COMMENT '商品id',
`goodname` varchar(200) DEFAULT NULL COMMENT '商品名称',
`picture` longtext COMMENT '图片',
`buynumber` int(11) NOT NULL COMMENT '购买数量',
`price` double DEFAULT NULL COMMENT '单价',
`goodtype` varchar(200) DEFAULT NULL COMMENT '商品类型',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='购物车表';
/*!40101 SET character_set_client = @saved_cs_client */;
系统效果图
源码获取
下方名片联系我即可!!
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻