基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】

 博主介绍:专注于Java技术领域和毕业项目实战

文末获取源码联系

 精彩专栏推荐订阅 不然下次找不到哟

Java项目精品实战案例(200套)

目录

一、前言介绍

二、主要技术

三、系统设计(部分)

主要功能模块设计         

四、数据库设计(部分)

五、运行截图

5.1、用户后台功能模块

5.1.1、用户登录、用户注册

5.1.2、个人中心

5.1.3、实验室、设备界面

5.1.4、消耗品

5.2、用户后台功能模块

5.2.1、实验室申请管理

5.2.2、设备报备管理

5.2.3、消耗品领取管理

5.3、管理员功能模块

5.3.1、管理员登录

5.3.2、个人信息

5.3.3、实验室管理

5.3.4、实验室申请管理

5.3.5、设备报备管理

5.3.6、设备申请管理

5.3.7、消耗品管理

5.3.8、消耗品领取管理

5.3.9、论坛管理

六、代码参考

七、源码获取


一、前言介绍

社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。互联网具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。

本文从用户的功能要求出发,建立了实验室管理系统,系统中的功能模块主要是实现管理员;首页、个人中心、实验室管理、用户管理、实验室申请管理、设备管理、设备报备管理、设备申请管理、消耗品管理、消耗品领取管理、论坛管理、系统管理,用户前台;首页、实验室、设备、消耗品、论坛信息、新闻资讯、我的、跳转到后台,用户后台;首页、个人中心、实验室申请管理、设备报备管理、设备申请管理、消耗品领取管理,等功能部分;经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与实验室管理系统实现的实际需求相结合,讨论了JSP开发实验室管理系统的使用。

二、主要技术

技术名 作用
SpringBoot、jsp 后端框架
Vue 前端框架
MySQL 数据库

三、系统设计(部分)

主要功能模块设计         

实验室管理系统,主要包括管理员、用户二个用户角色,对于用户角色不同,所使用的功能模块相应不同。

管理员、用户的功能,根据需求可以对系统已有的管理员;首页、个人中心、实验室管理、用户管理、实验室申请管理、设备管理、设备报备管理、设备申请管理、消耗品管理、消耗品领取管理、论坛管理、系统管理,用户前台;首页、实验室、设备、消耗品、论坛信息、新闻资讯、我的、跳转到后台,用户后台;首页、个人中心、实验室申请管理、设备报备管理、设备申请管理、消耗品领取管理等功能模块的管理维护等操作。

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第1张图片

四、数据库设计(部分)

数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。实验室管理系统使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。

管理员信息实体属性图如图4-2所示。

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第2张图片

图4-2管理员信息实体属性图

设备报备管理实体属性图如图4-3所示。

 基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第3张图片

 图4-3设备报备管理实体属性图

五、运行截图

5.1、用户后台功能模块

5.1.1、用户登录、用户注册

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第4张图片

图5-1登录界面 

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第5张图片

图5-2注册界面

5.1.2、个人中心

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第6张图片

图5-3个人中心界面

5.1.3、实验室、设备界面

用户通过点击实验室可以进行查看实验室编号、位置、用户名、用户姓名、身份等信息,进行查看等操作,如图5-4所示。用户点击设备页面,可以进行填写设备编号、设备名称、数量、用户名、用户姓名、身份等信息,进行提交设备操作,如图5-5所示。

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第7张图片

图5-4 实验室界面 

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第8张图片

图5-5设备界面图

5.1.4、消耗品

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第9张图片

图5-6消耗品界面

5.2、用户后台功能模块

用户通过点击后台管理,进入页面可以进行首页、个人中心、实验室申请管理、设备报备管理、设备申请管理、消耗品领取管理等功能模块,进行相对应操作,如图5-7所示。

图5-7用户后台管理界面

5.2.1、实验室申请管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第10张图片

图5-8实验室申请管理界面

5.2.2、设备报备管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第11张图片

图5-9设备报备管理界面

5.2.3、消耗品领取管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第12张图片

图5-10消耗品领取管理界面

5.3、管理员功能模块

5.3.1、管理员登录

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第13张图片

图5-11管理员登录界面

5.3.2、个人信息

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第14张图片

图5-12个人信息界面

5.3.3、实验室管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第15张图片

图5-13实验室管理界面

5.3.4、实验室申请管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第16张图片

图5-14实验室申请管理界面

5.3.5、设备报备管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第17张图片

图5-15设备报备管理界面图

5.3.6、设备申请管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第18张图片

图5-16设备申请管理界面图

5.3.7、消耗品管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第19张图片

图5-17消耗品管理界面图

5.3.8、消耗品领取管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第20张图片

图5-18消耗品领取管理界面图

5.3.9、论坛管理

基于Java+jsp+SpringBoot+vue的实验室管理系统设计与实现【源码(完整源码请私聊)+论文+包运行成功】_第21张图片

图5-19论坛管理界面图 

六、代码参考

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;

import com.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ConfigEntity;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;

/**
 * 通用接口
 */
@RestController
public class CommonController{
	@Autowired
	private CommonService commonService;
	
	@Autowired
	private ConfigService configService;
	
	private static AipFace client = null;
	
	private static String BAIDU_DITU_AK = null;
	
	@RequestMapping("/location")
	public R location(String lng,String lat) {
		if(BAIDU_DITU_AK==null) {
			BAIDU_DITU_AK = configService.selectOne(new EntityWrapper().eq("name", "baidu_ditu_ak")).getValue();
			if(BAIDU_DITU_AK==null) {
				return R.error("请在配置管理中正确配置baidu_ditu_ak");
			}
		}
		Map map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);
		return R.ok().put("data", map);
	}
	
	/**
	 * 人脸比对
	 * 
	 * @param face1 人脸1
	 * @param face2 人脸2
	 * @return
	 */
	@RequestMapping("/matchFace")
	public R matchFace(String face1, String face2) {
		if(client==null) {
			/*String AppID = configService.selectOne(new EntityWrapper().eq("name", "AppID")).getValue();*/
			String APIKey = configService.selectOne(new EntityWrapper().eq("name", "APIKey")).getValue();
			String SecretKey = configService.selectOne(new EntityWrapper().eq("name", "SecretKey")).getValue();
			String token = BaiduUtil.getAuth(APIKey, SecretKey);
			if(token==null) {
				return R.error("请在配置管理中正确配置APIKey和SecretKey");
			}
			client = new AipFace(null, APIKey, SecretKey);
			client.setConnectionTimeoutInMillis(2000);
			client.setSocketTimeoutInMillis(60000);
		}
		JSONObject res = null;
		try {
			File file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);
			File file2 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face2);
			String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
			String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
			MatchRequest req1 = new MatchRequest(img1, "BASE64");
			MatchRequest req2 = new MatchRequest(img2, "BASE64");
			ArrayList requests = new ArrayList();
			requests.add(req1);
			requests.add(req2);
			res = client.match(requests);
			System.out.println(res.get("result"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return R.error("文件不存在");
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));
	}
    
	/**
	 * 获取table表中的column列表(联动接口)
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/option/{tableName}/{columnName}")
	public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		if(StringUtils.isNotBlank(level)) {
			params.put("level", level);
		}
		if(StringUtils.isNotBlank(parent)) {
			params.put("parent", parent);
		}
		List data = commonService.getOption(params);
		return R.ok().put("data", data);
	}
	
	/**
	 * 根据table中的column获取单条记录
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/follow/{tableName}/{columnName}")
	public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		params.put("columnValue", columnValue);
		Map result = commonService.getFollowByOption(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 修改table表的sfsh状态
	 * @param table
	 * @param map
	 * @return
	 */
	@RequestMapping("/sh/{tableName}")
	public R sh(@PathVariable("tableName") String tableName, @RequestBody Map map) {
		map.put("table", tableName);
		commonService.sh(map);
		return R.ok();
	}
	
	/**
	 * 获取需要提醒的记录数
	 * @param tableName
	 * @param columnName
	 * @param type 1:数字 2:日期
	 * @param map
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/remind/{tableName}/{columnName}/{type}")
	public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, 
						 @PathVariable("type") String type,@RequestParam Map map) {
		map.put("table", tableName);
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		int count = commonService.remindCount(map);
		return R.ok().put("count", count);
	}
	
	/**
	 * 单列求和
	 */
	@IgnoreAuth
	@RequestMapping("/cal/{tableName}/{columnName}")
	public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		Map result = commonService.selectCal(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 分组统计
	 */
	@IgnoreAuth
	@RequestMapping("/group/{tableName}/{columnName}")
	public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("column", columnName);
		List> result = commonService.selectGroup(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * (按值统计)
	 */
	@IgnoreAuth
	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
	public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {
		Map params = new HashMap();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		List> result = commonService.selectValue(params);
		return R.ok().put("data", result);
	}
	
}

七、源码获取

大家点赞、收藏、关注、评论啦 、查看文章结尾获取联系方式

精彩专栏推荐订阅:下方专栏

Java项目精品实战案例(200套)

私信我即可打包获取300多个项目源码+论文+演示视频~

​​​​

你可能感兴趣的:(java毕业设计,java,spring,boot,vue.js,java毕业设计项目实战,实验室管理系统)