博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程-CSDN博客
文末下方有源码获取地址
第4章 系统设计
本章详细的介绍了本系统的总体设计以及系统数据库设计。
4.1 系统架构设计
本助农系统的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
系统架构如下图所示。
图4-1 系统架构
4.2功能模块设计
农产品销售系统在设计与实施时,采取了模块性的设计理念,把相似的系统的功能整合到一个模组中,以增强内部的功能,减少各组件之间的联系,从而达到减少相互影响的目的。系统总体功能结构如图4-2所示。
图4-2 系统总体功能结构图
4.3系统数据库设计
4.3.1 数据库系统
本系统采用MySQL来进行数据库的管理。MySQL数据库具有体积小、速度快、成本低等优点。具备同时处理数千万条记录,实现大型数据库的高并发读写和高效读写需求。
4.3.2 数据库概念设计
概念模型用于对信息世界进行建模,并与指定的数据库管理系统分离。它有助于将真实世界的事物抽象为适合数据库管理系统的数据库模型。人们倾向于将现实世界抽象成信息世界,进而将信息世界转化为机器世界。这个过程包括将现实世界的目标抽象为独立于专业计算机软件和专业数据库管理系统的信息结构的数据模型,然后将该物理模型转换为适合电子计算机的数据库管理系统。事实上,数据模型充当了现实世界到机器世界的中间层。
4.3.3 概念模型设计
E-R图,也被称为实体-联系图 (Entity Relationship Diagram),是一种提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它由三个主要元素组成:实体、属性和联系。在系统中将 “用户、助农脱贫、农技学堂、订单、购物车、公告资讯”等作为实体,它们的局部E-R如图4-3所示。
图4-3局部E-R图
4.3.4物理逻辑设计
表4-1:助农脱贫评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 0 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 0 | 评论内容 | ||
reply | longtext | 0 | 回复内容 |
表4-2:农产品评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 0 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 0 | 评论内容 | ||
reply | longtext | 0 | 回复内容 |
表4-3:农技学堂评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 0 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 0 | 评论内容 | ||
reply | longtext | 0 | 回复内容 |
表4-4:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 | ||
url | varchar | 500 | url |
表4-5:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
image | varchar | 200 | 头像 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | Date |
表4-6:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
userid | bigint | 用户id | |||
refid | bigint | 商品id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 名称 | ||
picture | longtext | 0 | 图片 | ||
type | varchar | 200 | 类型 | 1 | |
inteltype | varchar | 200 | 推荐类型 | ||
remark | varchar | 200 | 备注 |
表4-7:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | Date | ||
expiratedtime | timestamp | 过期时间 | Date |
表4-8:系统简介
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
title | varchar | 200 | 标题 | ||
subtitle | varchar | 200 | 副标题 | ||
content | longtext | 0 | 内容 | ||
picture1 | longtext | 0 | 图片1 | ||
picture2 | longtext | 0 | 图片2 | ||
picture3 | longtext | 0 | 图片3 |
表4-9:关于我们
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
title | varchar | 200 | 标题 | ||
subtitle | varchar | 200 | 副标题 | ||
content | longtext | 0 | 内容 | ||
picture1 | longtext | 0 | 图片1 | ||
picture2 | longtext | 0 | 图片2 | ||
picture3 | longtext | 0 | 图片3 |
表4-10:公告资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 0 | 简介 | ||
typename | varchar | 200 | 分类名称 | ||
name | varchar | 200 | 发布人 | ||
headportrait | longtext | 0 | 头像 | ||
clicknum | int | 点击次数 | 0 | ||
clicktime | datetime | 最近点击时间 | |||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 | ||
storeupnum | int | 收藏数 | 0 | ||
picture | longtext | 0 | 图片 | ||
content | longtext | 0 | 内容 |
表4-11:助农脱贫
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
wenzhangbianhao | varchar | 200 | 文章编号 | ||
wenzhangbiaoti | varchar | 200 | 文章标题 | ||
wenzhangfenlei | varchar | 200 | 文章分类 | ||
wenzhangzhaopian | longtext | 0 | 文章照片 | ||
fabushijian | date | 发布时间 | |||
wenzhangjianjie | longtext | 0 | 文章简介 | ||
wenzhangxiangqing | longtext | 0 | 文章详情 | ||
discussnum | int | 评论数 | 0 | ||
storeupnum | int | 收藏数 | 0 |
表4-12:农产品
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
chanpinbianhao | varchar | 200 | 产品编号 | ||
chanpinmingcheng | varchar | 200 | 产品名称 | ||
chanpinfenlei | varchar | 200 | 产品分类 | ||
tupian | longtext | 0 | 图片 | ||
faburiqi | date | 发布日期 | |||
baozhiqi | varchar | 200 | 保质期 | ||
shengchandi | varchar | 200 | 生产地 | ||
guige | varchar | 200 | 规格 | ||
chanpinxiangqing | longtext | 0 | 产品详情 | ||
nonghuzhanghao | varchar | 200 | 农户账号 | ||
nonghuxingming | varchar | 200 | 农户姓名 | ||
onelimittimes | int | 单限 | |||
alllimittimes | int | 库存 | |||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 | ||
discussnum | int | 评论数 | 0 | ||
price | double | 价格 | |||
vipprice | double | 会员价 | -1 | ||
storeupnum | int | 收藏数 | 0 |
表4-13:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
mima | varchar | 200 | 密码 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
xingbie | varchar | 200 | 性别 | ||
yonghudianhua | varchar | 200 | 用户电话 | ||
touxiang | longtext | 0 | 头像 | ||
money | double | 余额 | 0 | ||
vip | varchar | 200 | 是否会员 | 否 |
表4-14:文章分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
wenzhangfenlei | varchar | 200 | 文章分类 |
表4-15:产品分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
chanpinfenlei | varchar | 200 | 产品分类 | ||
image | longtext | 0 | image |
表4-16:购物车表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
tablename | varchar | 200 | 商品表名 | zhunongshangpin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | longtext | 0 | 图片 | ||
buynumber | int | 购买数量 | |||
price | double | 单价 | |||
discountprice | double | 会员价 | |||
nonghuzhanghao | varchar | 200 | 商户名称 |
表4-17:订单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
orderid | varchar | 200 | 订单编号 | ||
tablename | varchar | 200 | 商品表名 | zhunongshangpin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | longtext | 0 | 商品图片 | ||
buynumber | int | 购买数量 | |||
price | double | 价格 | 0 | ||
total | double | 总价格 | 0 | ||
discountprice | double | 折扣价格 | 0 | ||
discounttotal | double | 折扣总价格 | 0 | ||
type | int | 支付类型 | 1 | ||
status | varchar | 200 | 状态 | ||
address | varchar | 200 | 地址 | ||
tel | varchar | 200 | 电话 | ||
consignee | varchar | 200 | 收货人 | ||
logistics | longtext | 0 | 物流 | ||
remark | varchar | 200 | 备注 | ||
nonghuzhanghao | varchar | 200 | 商户名称 | ||
sfsh | varchar | 200 | 是否审核 | ||
shhf | longtext | 0 | 审核回复 | ||
role | varchar | 200 | 用户角色 |
表4-18:地址
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
userid | bigint | 用户id | |||
address | varchar | 200 | 地址 | ||
name | varchar | 200 | 收货人 | ||
phone | varchar | 200 | 电话 | ||
isdefault | varchar | 200 | 是否默认地址[是/否] |
表4-19:农技学堂
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
kechengbiaoti | varchar | 200 | 课程标题 | ||
kechengfenlei | varchar | 200 | 课程分类 | ||
kechengzhaopian | longtext | 0 | 课程照片 | ||
kechengshipin | longtext | 0 | 课程视频 | ||
wendangziliao | longtext | 0 | 文档资料 | ||
kechengjianjie | longtext | 0 | 课程简介 | ||
kechengxiangqing | longtext | 0 | 课程详情 | ||
discussnum | int | 评论数 | 0 | ||
storeupnum | int | 收藏数 | 0 |
表4-20:农商
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
nonghuzhanghao | varchar | 200 | 农户账号 | ||
mima | varchar | 200 | 密码 | ||
nonghuxingming | varchar | 200 | 农户姓名 | ||
xingbie | varchar | 200 | 性别 | ||
nonghudianhua | varchar | 200 | 农户电话 | ||
touxiang | longtext | 0 | 头像 | ||
money | double | 余额 | 0 |
表4-21:公告资讯分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | Date | ||
typename | varchar | 200 | 分类名称 |
第5章 系统实现
本章主要展示了本系统的实现情况,包括管理员、农商和用户的实现情况。
5.1系统功能实现
5.1.1系统首页功能实现
当人们打开系统的网址后,首先看到的就是首页界面。在这里,通过导航条进入各功能进行详细操作。系统首页界面如图5-1所示:
图5-1 系统首页界面
在注册流程中,用户在Vue前端填写必要信息(如用户名、密码等)并提交。前端将这些信息通过HTTP请求发送到Java后端。后端处理这些信息,检查用户名是否唯一,并将新用户数据存入MySQL数据库。完成后,后端向前端发送注册成功的确认,前端随后通知用户完成注册。这个过程实现了新用户的数据收集、验证和存储。系统注册页面如图5-2所示:
图5-2系统注册页面
农产品:在农产品页面的输入栏中输入产品名称、价格进行查询,可以查看到农产品详细信息,如图5-3所示:
图5-3农产品详细页面
农技学堂:在农技学堂页面的输入栏中输入课程名称进行查询,可以查看到农技学堂详细信息,并根据需要进行下载、评论或收藏操作;农技学堂页面如图5-4所示:
图5-4农技学堂详细页面
5.1.2个人中心页面实现
个人中心:在个人中心页面可以对个人中心、修改密码、我的订单、我的地址、我的收藏等进行详细操作;如图5-5所示:
图5-5个人中心界面
5.2后台模块实现
在登录流程中,用户首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Java后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许用户访问系统。这个过程涵盖了从用户输入到系统验证和响应的全过程。如图5-6所示。
图5-6 后台登录界面
5.2.1管理员模块实现
管理员进入主页面,主要功能包括对农商管理、用户管理、产品分类管理、文章分类管理、农产品管理、助农脱贫管理、农技学堂管理、系统管理、订单管理、个人中心等进行操作,并且可以看到系统的详细报表。管理员主页面如图5-7所示:
图5-7 管理员主界面
该功能的具体实现过程如下:前端使用echarts组件,绘制出图表,然后调用后端的接口获取数据,接着再显示到页面之上。
关键代码如下:
@RequestMapping("/value/{xColumnName}/{yColumnName}")
public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
EntityWrapper<ZhunongshangpinEntity> ew = new EntityWrapper<ZhunongshangpinEntity>();
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("nonghu")) {
ew.eq("nonghuzhanghao", (String)request.getSession().getAttribute("username"));
}
List<Map<String, Object>> result = zhunongshangpinService.selectValue(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
return R.ok().put("data", result);
}
农商管理功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写农商管理表单。这些农商管理表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除农商信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便农商管理功能可以看到最新的信息或相应的操作反馈。如图5-8所示:
图5-8农商管理界面
文章分类功能在视图层(view层)进行交互,比如点击“添加或删除”按钮或填写文章分类表单。这些文章分类表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如修改或删除文章分类信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便文章分类功能可以看到最新的信息或相应的操作反馈。如图5-9所示:
图5-9文章分类界面
助农脱贫管理功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写助农脱贫管理表单。这些助农脱贫管理表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改、查看评论或删除助农脱贫信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便助农脱贫管理功能可以看到最新的信息或相应的操作反馈。如图5-10所示:
图5-10助农脱贫管理界面
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者