文末获取资源,收藏关注不迷路
随着信息技术的发展,管理系统越来越成熟,各种企事业单位使用各种类型的管理系统来提高工作效率,从而降低手工劳动的弊端。林业局一直以来都非常重视林业信息化的发展,近几年来随着林业数据规模扩大,林业局对林业业务的管理也愈发的困难。因此,林业局提出通过开发林业信息管理系统来优化管理方案,对林业信息进行全方位的在线管理,通过系统跟踪林业信息的各项信息,并提高了林业管理者的工作效率,其他个人也可以通过系统查询各项计划的审批情况。
林业信息管理系统利用Java框架开发的一款管理系统,数据存储到MySQL中,客户端前台使用Vue技术对界面进行设计和实现。本文先充分调查林业信息管理系统的需求分析,深入剖析系统应该具有的功能,并设计完善的数据库。利用成熟的开发技术完成编码工作,最后进行投入前的测试工作。最终,完成前台和后台的林业信息管理系统的功能,主要包括森林资源的数量和质量、森林类型和各地类的空间配置、林龄和径级的分布、生长、枯损等动态信息,育苗管理,造林、营林、采伐、加工的各项计划的申请和批准等业务流程管理,报表管理等,通过前后台实现数据的传递。
当前我国林业科技信息现代化建设也不断在发展,尤其是在计算机和网络技术的应用和发展起了很大的促进作用,全国各林业科研院所、林业院校都将科技信息现代化建设提上了日程。随着林业局规模的发展,林业业务越来越多,林业信息和人员的管理也变得越来越困难。在传统的林业信息管理中,林业往往通过大量的人力和物力进行管理,通过手工记录林业信息,统计林业信息。这种传统的管理方法容易出错,而且不能适应现代化、信息化的发展过程。因此,本林业信息管理系统应运而生。在Java编程语言的基础上,开发林业信息管理系统[1]。
计算机信息化的普及也推动了管理系统的发展,各林业有条件开发并推广林业业务管理系统,从而提高管理手段,推动信息化进程的发展。无论是林业领导者还是客户,都希望通过有效的技术手段改变效率低下的经营手段,通过管理系统进行全面的业务管理。林业领导可以通过林业信息管理系统,全面掌握林业的业务信息。而林业客户,通过系统可以查看所有的业务介绍,并可以从网上申请,通过管理系统可以查询审核结果[2]。
在技术方面,后台使用Java语言进行开发,前端采用Vue。这些技术可以处理林业信息管理系统的业务逻辑,并方便用户操作,部署简单。所以适应本项目的开发。数据库方面,选择关系型MySQL数据库,比较成熟稳定,并且开源免费,具有高效、简洁的特点[3]。
当前移动互联网广泛发展,通过智能手机可以方便的参与到系统中来,并借助Vue的强大优势,构建林业信息管理系统,更符合当前的信息化水平,无论是哪种用户,都可以通过Vue端进行登录,从而进行信息查询或者管理,使得用户角色获得了更好的体验[4]。
本文研发的林业信息管理系统,结合林业局的现状,开发符合林业局业务工作的管理系统,改变了以前落后的现状。并将林业信息,各项计划管理等进行融合,发出通用的管理系统,广泛引用于林业。林业信息管理系统的使用,对于林业的可持续发展具有不可替代的作用。
在国内,林业业务管理系统发展迅速,从最初的单片机处理时代发展到数据综合处理时期,到目前的数据系统处理时期。信息技术的快速发展带来了管理系统的质的变化,在单片机处理时期,数据存储有限,系统效率较低。在第二时期的数据综合处理时期中,因为计算机软硬件水平较低而且价格昂贵,虽然林业业务管理系统得到了一定的发展,但是受限于昂贵的设备,不能全面普及开来[5]。目前的综合数据系统时代,分布式开发技术、微服务技术,数据库技术逐渐完善,软件设备价格低廉,带动了全面的发展,为林业业务管理系统的普及提供了基础。相比单片机管理系统和客户端服务器模式的系统,目前的轻客户端模式大大降低了开发成本,提高了数据管理的效率。每一台客户端不需要单独安装,通过浏览器即可访问[6]。
一直以来,林业信息管理都是林业局管理工作的重点,林业信息是林业的主体,只有提高林业信息的管理效率,才能为林业创造更好的可持续发展的条件。而林业信息管理不单单是基本的信息介绍,还需要加入一些交互性功能,通过和用户的交互来提高林业管理手段,所以管理系统可以更加全面的对林业信息相关的信息进行综合管理,并提供高效的查询服务[7]。
在国外,管理系统发展较早,各种技术比较成熟,对于林业业务管理系统也具有更好的兼容性和安全性。在信息化标准规范基础上,各种管理系统也可以满足客户要求,而且对于发达的欧美国家,他们通过利用技术手段,结合先进的林业管理模式,开发出符合林业发展的管理系统[8]。同时,他们经过多年的摸索,形成了规范成熟的林业业务管理平台,在美国有着超过85%的客户通过在线查看林业业务信息,并积极的参与到线上计划申请中[9]。
环境需要
1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。
2.IDE环境:IDEA,Eclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat7/Tomcat8/Tomcat9版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
后端:Spring+SpringMVC+Mybatis+Springboot
前端:vue+CSS+JavaScript+jQuery+elementui
使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名
林业信息管理系统可以为林业局领导提供业务管理功能,林业局领导也就是系统的管理员,具有会员管理、系统管理、森林资源信息管理、空间配置管理、林龄动态管理、育苗信息管理、计划审核管理的权限,添加或者删除用户基本信息,发布通知公告,对历史通知公告信息进行删除操作,
客户主要是查看个人信息,查看计划信息,计划申请,并提交计划到系统中。在反馈模块还可以参与讨论、发表问题。查看管理员发布的通知公告。
会员管理、系统管理、森林资源信息管理、空间配置管理、林龄动态管理、育苗信息管理、计划审核、统计林业资源管理(比如松树,杨树等占的比例等)。
管理员需要先进行登录,获得操作的权限后才能进行信息管理。在本系统中,管理员可以登录服务器端对用户进行管理,管理员添加林业信息,对会员的基本信息进行管理,还可以管理系统内的计划审核信息。管理员发布通知公告,制定相关的制度,添加系统使用手册,都可以在通知栏目中进行录入,最终添加的通知信息保存到数据库中。
会员用户功能包括用户登录、查看个人信息、查看森林资源信息查看、空间配置信息查看、林龄动态、育苗信息、计划申请、反馈交流、查看公告、个人中心。
会员用户登录后,在Vue的首页,查看操作菜单,可以修改个人信息和修改个人密码,修改个人信息和密码的功能流程一致,都是通过先获取到个人信息后,然后进行修改,通过数据库修改语句更新信息。
首页包括注册登录、资讯信息、林业信息推荐。
林业信息包括森林资源信息查看、空间配置信息查看、林龄动态、育苗信息。
资讯信息(查看资讯信息)。
在线评论交流,查看回复内容。
个人中心包括我的申请、个人信息维护等内容。
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.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<UserEntity>().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<UserEntity>().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<UserEntity>().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<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
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<UserEntity> ew = new EntityWrapper<UserEntity>();
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<UserEntity>().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<UserEntity>().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();
}
}
1系统概述 1
1.1 研究背景 1
1.2研究目的 1
1.3系统设计思想 1
2相关技术 3
2.1 MYSQL数据库 3
2.2 B/S结构 3
2.3 Spring Boot框架简介 4
2.4 VUE框架 4
3系统分析 5
3.1可行性分析 5
3.1.1技术可行性 5
3.1.2经济可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1 系统安全性 6
3.2.2 数据完整性 6
3.3系统界面分析 6
3.4系统流程和逻辑 8
4系统概要设计 9
4.1概述 9
4.2系统结构 10
4.3.数据库设计 11
4.3.1数据库实体 11
4.3.2数据库设计表 13
5系统详细实现 17
5.1 管理员模块的实现 17
5.2用户模块的实现 19
6系统测试 21
6.1概念和意义 21
6.2特性 22
6.3重要性 22
6.4测试方法 23
6.5 功能测试 23
6.6可用性测试 24
6.7性能测试 24
6.8测试分析 24
6.9测试结果分析 25
结论 25
致谢语 26
参考文献 26