2024基于SSM的农业信息智能化种植系统

  博主介绍:全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

千套JAVA项目实战持续更新中~

百套小程序APP项目实战持续更新中~

百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

 2024基于SSM的农业信息智能化种植系统_第1张图片

4系统设计

4.1系统功能设计

本系统主要通过使用Java语言编码设计系统功能,MySQL数据库管理数据,AJAX技术设计简洁的、友好的网址页面,然后在IDEA开发平台中,编写相关的Java代码文件,接着通过连接语言完成与数据库的搭建工作,再通过平台提供的Tomcat插件完成信息的交互,最后在浏览器中打开系统网址便可使用本系统。本系统的使用角色可以被分为用户和管理员,用户具有注册、查看信息、留言信息等功能,管理员具有修改用户信息,发布新闻等功能,系统总体功能设计图如图4-1所示。

2024基于SSM的农业信息智能化种植系统_第2张图片

图4-1系统总体功能设计图

4.2数据库设计

4.2.1概念设计

在数据库设计过程中,概念设计阶段是逻辑设计阶段得以实现的基础,也是根据用户参与情况确定对数据的处理要求,从而使得数据库设计成功的关键。概念设计的主要任务是将现实世界的所收集到的使用需求转化为抽象的信息世界结构的过程,能够真实的反映现实生活中实体与实体之间的联系,数据库的相关语法和代码比较容易理解和修改,方便相关人员将相关的数据信息存储到数据库中,并对其进行修改和使用[18]。

通过将现实世界中的实体、属性、联系等内容进行概念设计,建立比较抽象的概念数据模型,即E-R图。通过E-R图可将现实世界抽象到的概念设计转变成数据库的实体设计,并且能够明显的看见各个实体之间,数据的流动情况,具体较强的表达能力,更加方便于开发人员寻找与发现用户具体的需求[19]。因此,E-R的建立,在整个数据库的设计过程中,起着至关重要的作用。本系统主要的实体有管理员、用户、留言等。在E-R图中,矩形表示实体集,椭圆形表示属性,菱形表示联系。其中,联系的类型包括1:1(一对一)、1:n(一对多)、n:m(多对多)关系。

4.2.2逻辑设计

本系统使用MySQL数据库管理与系统相关的数据信息。逻辑设计阶段是将上一个阶段中的概念数据模型,转换为方便数据库进行存储的关系模型,即基本表的形式,方便开发人员后期对数据模型进行优化和管理[20]。逻辑设计阶段是整个数据库设计设计的关键,与系统有关的信息将会在这一阶段中被存储在数据库中,当用户使用本系统进行相关的功能操作时,与之有关的数据信息所在的基本表会发生相应的更新变化。数据库的逻辑设计阶段主要任务是将与系统相关的数据信息,设计成为方便数据库存储和管理的基本表格的形式,具体内容如下。

表4.1畜禽养殖表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

chuqinyangzhi_name

String

畜禽养殖标题

3

chuqinyangzhi_uuid_number

String

畜禽养殖编号

4

chuqinyangzhi_photo

String

畜禽养殖照片

5

chuqinyangzhi_types

Integer

畜禽养殖类型

6

chuqinyangzhi_clicknum

Integer

畜禽养殖热度

7

chuqinyangzhi_content

String

畜禽养殖详细介绍

8

shangxia_types

Integer

是否上架

9

chuqinyangzhi_delete

Integer

逻辑删除

10

insert_time

Date

录入时间

11

create_time

Date

创建时间

表4.2畜禽养殖收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

chuqinyangzhi_id

Integer

畜禽养殖

3

yonghu_id

Integer

用户

4

chuqinyangzhi_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.3畜禽养殖留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

chuqinyangzhi_id

Integer

畜禽养殖

3

yonghu_id

Integer

用户

4

chuqinyangzhi_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.4字典表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

dic_code

String

字段

3

dic_name

String

字段名

4

code_index

Integer

编码

5

index_name

String

编码名字

6

super_id

Integer

父字段id

7

beizhu

String

备注

8

create_time

Date

创建时间

表4.5论坛表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

forum_name

String

帖子标题

3

yonghu_id

Integer

用户

4

users_id

Integer

管理员

5

forum_content

String

发布内容

6

super_ids

Integer

父id

7

forum_types

Integer

帖子类型

8

forum_state_types

Integer

帖子状态

9

insert_time

Date

发帖时间

10

update_time

Date

修改时间

11

create_time

Date

创建时间

表4.6公告表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

gonggao_name

String

公告名称

3

gonggao_photo

String

公告图片

4

gonggao_types

Integer

公告类型

5

insert_time

Date

公告发布时间

6

gonggao_content

String

公告详情

7

create_time

Date

创建时间

表4.7瓜果蔬菜表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

guaguoshucai_name

String

瓜果蔬菜标题

3

guaguoshucai_uuid_number

String

瓜果蔬菜编号

4

guaguoshucai_photo

String

瓜果蔬菜照片

5

guaguoshucai_types

Integer

瓜果蔬菜类型

6

guaguoshucai_clicknum

Integer

瓜果蔬菜热度

7

guaguoshucai_content

String

瓜果蔬菜详细介绍

8

shangxia_types

Integer

是否上架

9

guaguoshucai_delete

Integer

逻辑删除

10

insert_time

Date

录入时间

11

create_time

Date

创建时间

表4.8瓜果蔬菜收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

guaguoshucai_id

Integer

瓜果蔬菜

3

yonghu_id

Integer

用户

4

guaguoshucai_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.9瓜果蔬菜留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

guaguoshucai_id

Integer

瓜果蔬菜

3

yonghu_id

Integer

用户

4

guaguoshucai_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.10留言板表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

用户

3

liuyan_name

String

留言标题

4

liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.11农业科技表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

nongyekeji_name

String

农业科技标题

3

nongyekeji_uuid_number

String

农业科技编号

4

nongyekeji_photo

String

农业科技照片

5

nongyekeji_types

Integer

农业科技类型

6

yanfa_time

Date

科技研发时间

7

nongyekeji_clicknum

Integer

农业科技热度

8

nongyekeji_gongxiao

String

农业科技功效

9

nongyekeji_content

String

农业科技详细介绍

10

shangxia_types

Integer

是否上架

11

nongyekeji_delete

Integer

逻辑删除

12

insert_time

Date

录入时间

13

create_time

Date

创建时间

表4.12农业科技收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

nongyekeji_id

Integer

农业科技

3

yonghu_id

Integer

用户

4

nongyekeji_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.13农业科技留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

nongyekeji_id

Integer

农业科技

3

yonghu_id

Integer

用户

4

nongyekeji_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.14水产养殖表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

shuichanyangzhi_name

String

水产养殖标题

3

shuichanyangzhi_uuid_number

String

水产养殖编号

4

shuichanyangzhi_photo

String

水产养殖照片

5

shuichanyangzhi_types

Integer

水产养殖类型

6

shuichanyangzhi_clicknum

Integer

水产养殖热度

7

shuichanyangzhi_content

String

水产养殖详细介绍

8

shangxia_types

Integer

是否上架

9

shuichanyangzhi_delete

Integer

逻辑删除

10

insert_time

Date

录入时间

11

create_time

Date

创建时间

表4.15水产养殖收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

shuichanyangzhi_id

Integer

水产养殖

3

yonghu_id

Integer

用户

4

shuichanyangzhi_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.16水产养殖留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

shuichanyangzhi_id

Integer

水产养殖

3

yonghu_id

Integer

用户

4

shuichanyangzhi_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.17土壤肥料表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

turangfeiliao_name

String

土壤肥料标题

3

turangfeiliao_uuid_number

String

土壤肥料编号

4

turangfeiliao_photo

String

土壤肥料照片

5

turangfeiliao_types

Integer

土壤肥料类型

6

turangfeiliao_clicknum

Integer

土壤肥料热度

7

turangfeiliao_content

String

土壤肥料详细介绍

8

shangxia_types

Integer

是否上架

9

turangfeiliao_delete

Integer

逻辑删除

10

insert_time

Date

录入时间

11

create_time

Date

创建时间

表4.18土壤肥料收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

turangfeiliao_id

Integer

土壤肥料

3

yonghu_id

Integer

用户

4

turangfeiliao_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.19土壤肥料留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

turangfeiliao_id

Integer

土壤肥料

3

yonghu_id

Integer

用户

4

turangfeiliao_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.20用户表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_name

String

用户姓名

3

yonghu_phone

String

用户手机号

4

yonghu_id_number

String

用户身份证号

5

yonghu_photo

String

用户头像

6

yonghu_email

String

用户邮箱

7

create_time

Date

创建时间

表4.21管理员表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

username

String

学生名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间

4.3本章小结

本章主要介绍了系统功能设计、数据库设计等内容。通过设计系统的总体功能框架,确定系统的功能设计主要包括瓜果蔬菜等模块。数据库设计主要分为概念设计阶段和逻辑设计阶段,其中,概念设计是将现实世界中的数据转变为信息世界中的概念模型,逻辑设计是将概念设计中的概念模型转变成可以被数据库存储的数据表格。系统功能设计好坏是系统得以被编码实现的重要依据。数据库设计是否符合规范,是系统能够成功运行的基本保障,也是用户和系统实现交互处理的重要前提。

5系统实现

5.1管理员功能模块实现

5.1.1管理员登录

管理员可以选择任一浏览器打开网址,输入信息无误后,以管理员的身份行使相关的管理权限,管理员登录界面设计如图5-1所示。

图5-1管理员登录界面

5.1.2瓜果蔬菜管理

管理员可以通过选择瓜果蔬菜管理,管理相关的瓜果蔬菜信息记录,比如进行查看瓜果蔬菜信息标题,修改瓜果蔬菜信息来源等操作,瓜果蔬菜管理界面设计如图5-2所示。

2024基于SSM的农业信息智能化种植系统_第3张图片

图5-2瓜果蔬菜管理界面

5.1.3公告管理

管理员可以通过选择公告管理,管理相关的公告信息记录,比如进行查看公告详情,删除错误的公告信息,发布公告等操作,公告管理界面如图5-3所示。

2024基于SSM的农业信息智能化种植系统_第4张图片

图5-3 公告管理界面

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map params,UserEntity user){
        EntityWrapper ew = new EntityWrapper();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper ew = new EntityWrapper();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 千套JAVA项目实战持续更新中~

百套小程序APP项目实战持续更新中~

百套Python实战项目持续更新中~

下方有我的微信名片

你可能感兴趣的:(Java实战项目,java,spring,boot,后端,vue.js)