Dwzun头像
基于SpringBoot3+Vue3的油莎豆种植管理系统封面图

基于SpringBoot3+Vue3的油莎豆种植管理系统

这个系统是做给油莎豆种植场景的:种植户录档案、报数据,农技员给指导,管理员统筹区域和知识库。技术上用 SpringBoot 3.3 + Vue 3 做前后端分离,推荐模块接的是 Weka 的随机森林。下面把从选题到落地的过程复盘一遍,背景、选型、模块设计、测试都写到了。

一、选题背景

油莎豆这东西,接到题目之前我完全没听过。

查了才知道它名字不少:油莎草、铁荸荠、地下核桃、洋地栗,说的都是同一个东西——莎草科的草本植物,吃的部分长在地下,是块茎不是种子。我第一次看到"地下核桃"这个叫法,还以为是核桃的某个品种,翻了半天资料才确认是两码事。

它的特点说白了就俩字:耐折腾。耐旱、耐涝、耐瘠薄,沙地盐碱地都能活,种下去管理粗放,杆叶还能喂牲口。块茎含油率大概 20%~30%,能榨油,也能直接煮着吃、酿酒、做饲料。国内六十年代引种过一轮,后来因为食用油料供给的问题又被翻出来推广,内蒙古、新疆、河北、山东这些地方现在都有种植。

但"能种"和"种得好"是两件事。

查资料的过程中我记下几个比较典型的场景:种植户大多凭经验,啥时候下种、施多少肥、啥时候收,靠的是上一季的记忆和邻里之间互相打听;农技员一个人管好几个乡镇,根本跑不过来,只能靠电话和微信群零散应付;收完之后产量多少、哪个品种表现好、哪块地掉了产,这些数据基本都没留下来,第二年还是从头摸。

细想下来,信息断在三个地方:地块和种植过程没绑定、技术指导没留痕、产量数据没沉淀。这三件事恰好都是信息系统该干的活。

也有人会问,市面上没有现成的吗?我专门搜过一圈"种植管理系统",找到的东西大致两类:一类是农产品商城,把油莎豆做成商品挂上去卖,本质是电商,跟"怎么种"一点关系没有;另一类是论文里的框架图,模块画得挺齐,但没有一块地、一份档案是真数据。真正围绕种植过程做的——档案、地块、产量预估、农技指导——几乎没有能直接参考的。

所以这个系统最后收敛成四件事:把地块和种植过程绑起来,把农技指导的过程留痕,把产量数据沉淀下来做横向对比,把知识整理成能查的库。后面讲技术选型和模块设计,基本都是围着这四件事转的。

二、技术选型

整个项目用到的技术如下:

技术

版本

用途

JDK

17

运行环境

Spring Boot

3.3.0

后端框架

MyBatis-Plus

3.5.5

ORM 持久层

MySQL

8.0

数据库

Vue

3.5.13

前端框架

Element Plus

2.11.3

UI 组件库

Vue Router

4.5.1

前端路由

Axios

1.9.0

HTTP 请求

Weka

3.8.5

随机森林推荐模型

三、系统功能一览

这个系统包含前台种植户模块、后台模块(管理员、农技员)三部分,具体功能如下:

1. 前台种植户模块

  • 基础功能模块:系统首页、农技员介绍、知识库、公告资讯、论坛交流、站内咨询(与农技员在线沟通);
  • 个人中心功能:修改密码、个人信息维护、我的地块、种植档案管理(含档案完善、产量预测)、种植指导查看、我的收藏。

2. 后台管理员模块

  • 全流程管理功能:系统首页、种植户管理、农技员管理、区域管理、地块管理、种植档案管理、种植指导管理、产量预测管理、知识库管理、档案完善管理、使用报告管理、公告资讯管理、论坛交流管理、系统管理(智能AI、轮播图管理)、个人中心。

3. 后台农技员模块

  • 业务功能:系统首页、种植档案管理、种植指导管理、产量预测管理、档案完善管理、个人中心。

该系统聚焦农业种植服务场景:种植户在前台自助填报档案、获取知识和指导,农技员在后台执行指导业务,管理员统筹区域地块与知识资源,实现种植过程的数据化、规范化管理,提升农技服务效率。

四、项目截图

五、亮点模块:Weka 随机森林做混合推荐

这个项目里我自己最满意的模块是推荐部分。没有用毕设烂大街的"基于用户的协同过滤+自己手写相似度",而是接了 Weka:

// 推荐工厂:支持两种协同过滤 + 随机森林模型混合
@Component
public class RecommendAlgorithmFactory {
    // 用户-物品矩阵推荐(用协)
    private static final Map<Long, Map<Long, Double>> userItemMatrix
            = new ConcurrentHashMap<>();
    // 物品-用户矩阵推荐(物协)
    private static final Map<Long, Map<Long, Double>> itemUserMatrix
            = new ConcurrentHashMap<>();
​
    // Weka RandomForest 训练模型,持久化到 models/ 目录,带缓存
}

设计思路是三层:先构建用户-物品矩阵做协同过滤,再用 Weka 的 RandomForest 训练分类模型,最后混合推荐——冷启动阶段靠协同过滤兜底,数据量上来之后机器学习模型的权重逐渐加大。模型持久化到 algorithm/recommend/models/ 目录,加了 ConcurrentHashMap 缓存避免每次请求都重新加载。

六、系统功能测试

按黑盒方式把主流程过了一遍:

序号

测试功能

操作

预期

结果

1

种植档案录入

填写地块、作物、生长周期信息

保存成功,列表可见

通过

2

区域与地块管理

新增区域并下挂地块

两级层级展示正确

通过

3

产量预测填报

录入预测数据

保存并可查看详情

通过

4

农技指导与站内聊天

农技员发指导,种植户提问

消息收发正常

通过

5

知识库与论坛

发帖并收藏

收藏列表实时更新

通过

6

个性化推荐

登录后进推荐页

返回混合推荐结果

通过

再补一组边界用例,验证录入的校验逻辑:

序号

测试功能

操作

预期

结果

1

档案录入

必填项地块留空提交

提示地块必填,不入库

通过

2

区域管理

新增重名区域

提示区域已存在

通过

3

用户登录

密码错误

提示账号或密码错误

通过

4

用户登录

普通用户选管理员角色登录

角色校验拦截

通过

5

知识库

删除已被收藏的帖子

级联校验,不允许直接删除

通过

七、写在最后

这个项目给我最大的收获是想清楚了一件事:农业信息化的难点不在技术,在数据从哪来。系统里档案填报的完整率是整个平台价值的地基,而让种植户愿意填、填得对,比写一个随机森林难多了——这个问题的答案在产品交互里,不在代码里。

后面会继续写这个系列的其他项目,下一篇讲图书馆座位预约系统的优化,核心是预约超卖问题怎么用原子扣减解决。感兴趣的可以关注。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_44209743/article/details/169564922

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--