Java基于springboot+vue的化学实验室预约管理系统设计与实现

188 篇文章 6 订阅

文末获取资源,收藏关注不迷路

前言

随着学校办学规模的扩大,现代教育对学生操作动手能力的要求不断增强,我校开设中药实验课教学的课程越来越多,这给中药实验室的管理提出了新的挑战,同时也加重了中药实验室管理人员的负担。为了解决中药实验室管理人员的日常工作繁重问题,提高工作效率,开发一个中药实验管理系统就显得非常有必要。
计算机技术的发展以及高校校园网建设的成熟,为运用先进的管理信息系统和软件开发平台对高校实验室进行科学、规范管理,实现实验室管理的信息化和数字化提供了强有力的支持。
通过对本校实验室的管理业务进行分析,提出采用基于J2EE平台设计实现了一个实用型中药实验室管理系统。本文应用面向对象方法和统一建模语言进行系统设计,按照J2EE三层框架结构分别描述了表示层、业务层和数据层的实现过程。

一、研究背景

中药是以中国传统医药理论指导采集、炮制、制剂,说明作用机理,指导临床应用的药物。中药主要来源于天然药及其加工品,包括植物药、动物药、矿物药及部分化学、生物制品类药物。由于中药以植物药居多,故有“诸药以草为本”的说法。
中药实验教学是高等院校中药教学的重要组成部分, 它在培养学生综合素质和创新能力方面有着不可替代的重要作用。搞好实验教学的改革与管理对于培养学生综合素质有着十分重要的意义。本系统是一个网上教学管理系统。系统采用模块式设计, 分模块对系统的功能进行分工和设计。本文以大学为例, 对系统三个模块的设计和功能进行了较为详细的阐述。其中以学生模块为重点。在开放式教学模式中, 学生是主体。本文强调学生的主体地位, 凸显学生在中药实验教学管理工作中的主动性。

二、研究意义

化学实验室是进行化学实验和研究的重要场所,是学生和研究人员进行实验和探索的地方。然而,由于实验室设备和场地的有限性,以及实验操作的安全性和有效性的考量,实验室的资源需要进行合理的管理和分配。

传统上,学生和研究人员需要亲自到实验室进行预约,但这种方式存在一些问题。首先,实验室管理员需要花费大量时间和精力来处理预约请求,包括协调不同实验室的使用和避免冲突。其次,由于实验室资源有限,有时候可能会出现实验室被多个人同时预约的情况,导致资源浪费和实验效果的下降。此外,实验室管理员还需要考虑实验操作的安全性和合规性,以及实验室设备的维护和管理。

为了解决这些问题,化学实验室预约管理系统应运而生。该系统通过在线平台提供了便捷的预约服务,学生和研究人员可以根据自己的需求和时间选择合适的实验室和设备进行预约。系统会自动检查实验室的可用性,并避免冲突的预约。同时,系统还可以提供实验操作的指导和安全提示,确保实验的安全性和有效性。此外,系统还可以帮助实验室管理员进行资源管理和设备维护,提高实验室的利用率和效率。

化学实验室预约管理系统的实施将有效提高实验室资源的利用率,减少实验冲突和资源浪费,提高实验效果和安全性。同时,该系统还可以提供数据分析和统计功能,帮助实验室管理员了解实验室的使用情况和趋势,为实验室资源的规划和管理提供参考。总之,化学实验室预约管理系统将为化学实验室的管理和运营提供便利和支持,促进科学研究和教学的发展。

三、主要使用技术

环境需要
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项目:是;
技术栈 127
后端:Spring+SpringMVC+Mybatis+Springboot
前端:vue+CSS+JavaScript+jQuery+elementui

使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名

四、研究内容

1 系统功能概述 高校中药实验教学管理系统, 具备五个方面的功能: ①学生网上注册、登录功能; ②学生进行实验预约功能; ③学生在利用电脑进行在线学习的功能; ④生成、提交实验报告的功能; ⑤教师对学生的实验报告进 行评分、学生查询实验成绩的功能。
2 系统模块设计 系统设计中将中药实验教学管理分成三个模块: 教师模块、学生模块、实验员模块。如图 1 所示, 每个模块都有详细的功能设计, 在形式上是相互独立的,而在功能上相互依存。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、核心代码


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

通过完成中药实验管理系统的设计与实现课题,可以加强理论水平,提高实践能力。通过一系列的实践,加深对面向对象编程的理解,熟悉软件体系架构设计的基本方法和步骤;学会独立用软件工程的方法分析问题和解决问题。于此同时,在完成过程中,培养查阅文献,阅读相关论文的能力,将遇到的问题逐个解决,培养自己独立分析思考问题的能力和良好的沟通能力。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wqq6310855

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值