免费分享一套SpringBoot+Vue实验室(预约)管理系统,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue实验室(预约)管理系统 ,分享下哈。

项目视频演示

【免费】SpringBoot+Vue实验室(预约)管理系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBoot+Vue实验室(预约)管理系统 Java毕业设计项目来自互联网,免费开源分享,严禁商业。更多毕业设源码:http://www.java1234.com/a/bysj/javaweb/, 视频播放量 161、弹幕量 0、点赞数 3、投硬币枚数 2、收藏人数 4、转发人数 1, 视频作者 java1234官方, 作者简介 公众号:java1234 微信:java9266,相关视频:【免费】javaweb实验室管理系统毕业设计,【免费】javaweb大学生就业管理系统毕业设计,【免费】javaweb超市管理系统高级版毕业设计,【免费】SpringBoot+Vue药店(药房)管理系统 Java毕业设计,【免费】javaweb企业人事管理系统毕业设计,【免费】javaweb物业管理系统毕业设计,【免费】javaweb员工工资管理系统毕业设计,【免费】javaweb超市管理系统毕业设计,【免费】基于springboot的进销存(仓库)管理系统 Java毕业设计,【免费】javaweb高校教务管理系统毕业设计icon-default.png?t=N7T8https://www.bilibili.com/video/BV14S421N7GL/

项目介绍

国家对高校实验教学的重视程度不断提高,正在不断的探索高校教学改革的方法。其中,建设教学示范中心是推动高校教学发展的方法之一。高校教学示范中心是组织高水平教学,培养创新型、应用型人才的重要基地;是提高教学质量,整合、共享教学资源,深化实验教学改革的重要途径。我校紧跟时代发展的步伐,申请并成立了多个教学示范中心。此前,我校计算机科学与技术实验教学示范中心在信息化建设方面投入的精力较少,信息化管理程度不足。为加强教学示范中心信息化建设,本人选择信息化管理中预约管理方向进行探究,设计一款实验室预约管理系统,来填补教学示范中心在实验室预约管理方向的空缺,推动本校教学示范中心的发展。

按照预期要求,本预约管理系统可以实现对实验室预约的网络化、信息化管理,能够将学生和教师从繁琐的过程中解放出来。学生可以随时随地查看实验室信息,按自己需求预约。管理人员可以通过网络审批,大幅度加快了审核的速度,减少了管理人员的工作量,提高了实验室资源的利用率。因此在教学方面,本课题是有实践意义的

系统展示

部分代码

package com.li.lrms.controller;import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.li.lrms.common.result.Result;
import com.li.lrms.model.user.User;
import com.li.lrms.service.UserService;
import com.li.lrms.util.JwtUtils;
import com.li.lrms.util.MD5;
import com.li.lrms.vo.login.EditVo;
import com.li.lrms.vo.user.UserQueryVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.util.List;@CrossOrigin
@RestController
@RequestMapping("/admin/users/user")
public class UserController {@Autowiredprivate UserService userService;//1.查询所有用户@GetMapping("findAll")public Result findAllUser() {List<User> list = userService.list();return Result.ok(list);}//2.增加@PostMapping("addUser")public Result addUser(@RequestBody User users) {//        String password = users.getPassword();String encrypt = MD5.encrypt("123456");users.setPassword(encrypt);boolean b = userService.save(users);if (b) return Result.ok();else return Result.fail();}//3.删除@DeleteMapping("{id}")public Result removeUser(@PathVariable String id) {boolean b = userService.removeById(id);if (b) return Result.ok();else return Result.fail();}//4.条件查询分页/*** 1.创建vo类,封装条件值* 2.编写controller* 获取当前页面current和每页对象值limit* 获取条件语句 hospitalSetQueryVo*/@PostMapping("findpage/{current}/{limit}")public Result findPageUser(@PathVariable long current, @PathVariable long limit,@RequestBody(required = false) UserQueryVo usersQueryVo) {//创建page对象,传递当前页,每页记录数Page<User> page = new Page<>(current, limit);//构建查询条件QueryWrapper<User> queryWrapper = new QueryWrapper<>();String name = usersQueryVo.getUserName();String role = usersQueryVo.getRole();if (!StringUtils.isEmpty(role)) {     //输入非空queryWrapper.eq("role", role);  //获取用户id}if (!StringUtils.isEmpty(name)) {queryWrapper.like("user_name", usersQueryVo.getUserName()); //获取用户id}//调用方法实现分页查询IPage<User> usersPage = userService.page(page, queryWrapper);//返回结果return Result.ok(usersPage);}//按id查询@GetMapping("getUsers/{id}")public Result getUsers(@PathVariable String id) {User users = userService.getById(id);return Result.ok(users);}//修改用户信息@PostMapping("updateUsers")public Result updateUsers(@RequestBody User users) {String password = users.getPassword();String encrypt = MD5.encrypt(password);users.setPassword(encrypt);boolean update = userService.updateById(users);if (update) return Result.ok();else return Result.fail();}//批量删除@DeleteMapping("batchRemove")public Result batchRemoveUsers(@RequestBody List<String> list) {userService.removeByIds(list);return Result.ok();}//修改状态@PutMapping("updateStatus/{id}/{status}")public Result setStatus(@PathVariable String id, @PathVariable Integer status) {//根据id查询User users = userService.getById(id);//修改信息users.setStatus(status);//调用函数更新userService.updateById(users);return Result.ok();}//4.修改个人信息//1.电话号码 2.密码  3.邮箱  4.@PostMapping("editInfo")public Result editInfo(@RequestBody(required = false) EditVo editVo, HttpServletRequest request) {String userId = JwtUtils.getMemberIdByJwtToken(request);User user = userService.getByUserId(userId);   //获得该用户信息userService.updateInfo(editVo, user);return Result.ok();}}
<template><div class="login-container"><el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on"label-position="left"><div class="title-container"><h3 class="title">实验室信息管理系统</h3></div><el-form-item prop="username"><span class="svg-container"><svg-icon icon-class="user"/></span><el-inputref="username"v-model="loginForm.username"placeholder="Username"name="username"type="text"tabindex="1"auto-complete="on"/></el-form-item><el-form-item prop="password"><span class="svg-container"><svg-icon icon-class="password"/></span><el-input:key="passwordType"ref="password"v-model="loginForm.password":type="passwordType"placeholder="Password"name="password"tabindex="2"auto-complete="on"@keyup.enter.native="handleLogin"/><span class="show-pwd" @click="showPwd"><svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'"/></span></el-form-item><el-button :loading="loading" type="primary" style="width:48%;margin-bottom:30px;"@click.native.prevent="handleLogin">登录</el-button><el-button type="primary" style="width:48%;margin-bottom:30px;" @click="dialogFormVisible = true">注册</el-button><div style="text-align: center"><el-radio v-model="loginForm.role" label="user">学生  </el-radio><el-radio v-model="loginForm.role" label="teacher">教师   </el-radio><el-radio v-model="loginForm.role" label="admin">管理员    </el-radio></div><el-dialog title="" :visible.sync="dialogFormVisible"><div class="register"><h1>注册</h1><el-form ref="registerForm" :model="user" label-width="100px"><el-form-item label="姓名"><el-input v-model="user.userName" placeholder="Enter your username"></el-input></el-form-item><el-form-item label="账号"><el-input v-model="user.userId" placeholder="Enter your username"></el-input></el-form-item><el-form-item label="密码"><el-input v-model="user.password" type="password" placeholder="Enter your password"></el-input></el-form-item><el-form-item label="电话"><el-input v-model="user.phone" placeholder="Enter your phone number"></el-input></el-form-item><el-form-item label="邮箱"><el-input v-model="user.email" placeholder="Enter your email"></el-input></el-form-item><el-form-item><el-button type="primary" @click="register()">注册</el-button><el-button @click="dialogFormVisible = false">返回</el-button></el-form-item></el-form></div></el-dialog><div class="tips"><span style="margin-right:20px;"></span><span> </span></div></el-form><div align="center"><a href="http://www.java1234.com/a/bysj/javaweb/" target="_blank"><font color="red">Java1234收藏整理</font></a></div></div>
</template><script>
import {validUsername} from '@/utils/validate'
import axios from "axios";export default {name: 'Login',data() {const validateUsername = (rule, value, callback) => {if (!validUsername(value)) {callback(new Error('请输入正确的用户名'))} else {callback()}}const validatePassword = (rule, value, callback) => {if (value.length < 6) {callback(new Error('密码不小于6位'))} else {callback()}}return {user: {userName: '',userId: '',password: '',phone: '',email: '',role: 'user'},dialogFormVisible: false,loginForm: {username: '20171506001',password: '123456',role: ''},loginRules: {username: [{required: true, trigger: 'blur', validator: validateUsername}],password: [{required: true, trigger: 'blur', validator: validatePassword}]},loading: false,passwordType: 'password',redirect: undefined}},watch: {$route: {handler: function (route) {this.redirect = route.query && route.query.redirect},immediate: true}},methods: {register() {this.$refs.registerForm.validate(valid => {if (valid) {axios.post('http://localhost:8200/admin/member/stuRegister', this.user).then(response => {console.log(response.data);this.$message.success('注册成功')// handle response}).catch(error => {console.log(error);// handle error});} else {console.log('Validation failed');}});},resetForm() {this.$refs.registerForm.resetFields();},showPwd() {if (this.passwordType === 'password') {this.passwordType = ''} else {this.passwordType = 'password'}this.$nextTick(() => {this.$refs.password.focus()})},handleLogin() {this.$refs.loginForm.validate(valid => {if (valid) {this.loading = truethis.$store.dispatch('user/login', this.loginForm).then(() => {this.$router.push({path: this.redirect || '/'})this.loading = false}).catch(() => {this.loading = falsethis.$message({type: "error",message: "用户名或密码输入有误!",})})} else {console.log('error submit!!')return false}})},}
}
</script><style lang="scss">
/* 修复input 背景不协调 和光标变色 */
/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */$bg: #283443;
$light_gray: #232222;
$cursor: #fff;@supports (-webkit-mask: none) and (not (cater-color: $cursor)) {.login-container .el-input input {color: $cursor;}
}/* reset element-ui css */
.login-container {.el-input {display: inline-block;height: 47px;width: 85%;input {background: transparent;border: 0px;-webkit-appearance: none;border-radius: 0px;padding: 12px 5px 12px 15px;color: $light_gray;height: 47px;caret-color: $cursor;&:-webkit-autofill {box-shadow: 0 0 0px 1000px $bg inset !important;-webkit-text-fill-color: $cursor !important;}}}.el-form-item {border: 1px solid rgba(255, 255, 255, 0.1);background: rgba(0, 0, 0, 0.1);border-radius: 5px;color: #454545;}
}
</style><style lang="scss" scoped>
.register {width: 500px;margin: 0 auto;padding: 50px 0;
}$bg: #2d3a4b;
$dark_gray: #889aa4;
$light_gray: #eee;.login-container {min-height: 100%;width: 100%;background-color: $bg;overflow: hidden;.login-form {position: relative;width: 520px;max-width: 100%;padding: 160px 35px 0;margin: 0 auto;overflow: hidden;}.tips {font-size: 14px;color: #fff;margin-bottom: 10px;span {&:first-of-type {margin-right: 16px;}}}.svg-container {padding: 6px 5px 6px 15px;color: $dark_gray;vertical-align: middle;width: 30px;display: inline-block;}.title-container {position: relative;.title {font-size: 26px;color: $light_gray;margin: 0px auto 40px auto;text-align: center;font-weight: bold;}}.show-pwd {position: absolute;right: 10px;top: 7px;font-size: 16px;color: $dark_gray;cursor: pointer;user-select: none;}
}
</style>

源码下载

CSDN 1积分下载:https://download.csdn.net/download/caofeng891102/88865898

或者免费领取加小锋老师wx:java9266

热门推荐

免费分享一套SpringBoot+Vue药店(药房)管理系统,帅呆了~~-CSDN博客

免费分享一套微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~_微信小程序扫码点餐 java vue-CSDN博客

免费分享一套微信小程序外卖跑腿点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~_跑腿或点餐的uniapp前端模版-CSDN博客

免费分享一套Springboot+Vue前后端分离的在线教育平台系统,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的停车场管理系统,挺漂亮的-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 wxs内联与外联的写法

内联写法 <!-- 内联wxs --> <view>大写字母{{m1.toUpper("xmly")}}</view> <wxs module"m1">module.exports.toUpperfunction(str){return str.toUpperCase()} </wxs> 外联写法 新建一个wxs文件 写一个函数&#xff0c;将…

争取用一张图说清楚什么是编译器(Compiler)

抽完一颗烟&#xff0c;回来&#xff0c;突然看到了德州仪器的各个DSP芯片的编译器&#xff0c;想到了给编译器做个说明&#xff0c;争取对编译器概念有点糊涂的小朋友能突然一下明白&#xff0c; ┗|&#xff40;O′|┛ 嗷~~ 编译器就是 人机间 语言 的 翻译官&#xff08;Tra…

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

论文地址&#xff1a;https://arxiv.org/pdf/2402.13616.pdf 代码地址&#xff1a;GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information yolov7的作者更新了yolov9 摘要 当今的深度学习方…

TypeScript基础知识点

TypeScript 简介和发展 TypeScript 是一种由微软开发的开源编程语言&#xff0c;其设计目标是为了解决 JavaScript 在大规模应用开发时所面临的类型安全和可维护性问题。TypeScript 的诞生背景可以追溯到2012年&#xff0c;当时随着Web应用程序复杂度的日益增长&#xff0c;J…

PCIe 5.0 Layout Guide笔记

一、松耦合和紧耦合 松耦合优点是相同走线宽度下电介质更薄,同时对线间距的变化不敏感,提供了更好的阻抗控制;松耦合缺点是需要更大的区域进行绕线;紧耦合优点是更高的布线密度,相同阻抗下走线可以更细,同时具有更好的共模噪声抑制;紧耦合缺点是阻抗随线间距的变化大;【…

一个模板项目复制多个时候报错

复制的项目虽然用新idea打开&#xff0c;但是用的parent版本号&#xff0c;或者名字还是一个&#xff0c;这块要改&#xff0c;改版本号就行&#xff0c;子项目也改 循环依赖解决 pom中引入了循环依赖&#xff0c;pom已经最新&#xff0c;但是启动还是报错&#xff0c;idea缓…

基于Java的艺培管理解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

cmake构建在Visual stdio 2019 和Xcode的Qt的程序

概述&#xff1a;用CMake可以方便地构建Qt的应用程序&#xff0c;前提是你已经配置好用Visual Stdio 开发的Qt的环境或者Xcode的Qt开发环境。 1、编写CMakeLists.txt cmake_minimum_required(VERSION 3.6)set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STR…

介绍 Gradio 与 Hugging Face

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 我们可以使用 Gradio 库为我们的模型构建演示。Gradio 允许您完全使用 Python 为任何机器学习模型构建、自定义和共享基于 Web 的演示。使机器学习模型变得可交互和易于使用。 为什么首先要为您的机器…

Parade Series - NVR Stat

获取文件夹占用空间信息 DIR %NVRHOME% /W /SDIR %NVRHOME% /s | tail -n2 | sed s/,//g | awk {if(NR1){key"Used";}else{key"Free";};sum$3/(1024*1024);unit"MB";if(sum^>1024){sumsum/1024;unit"GB";}printf("{\"Ty…

Ansible group模块 该模块主要用于添加或删除组。

目录 创建组验证删除组验证删除一个不存在的组 常用的选项如下&#xff1a; gid  #设置组的GID号 name  #指定组的名称 state  #指定组的状态&#xff0c;默认为创建&#xff0c;设置值为absent为删除 system  #设置值为yes&#xff0c;表示创建为系统组 创建组 ansib…

【Leetcode】938. 二叉搜索树的范围和

文章目录 题目思路代码结论 题目 题目链接 给定二叉搜索树的根结点 root&#xff0c;返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1&#xff1a; 输入&#xff1a;root [10,5,15,3,7,null,18], low 7, high 15 输出&#xff1a;32 示例 2&#xff1a; 输入…

linux+fortify

系统版本:Ubuntu22.04桌面版 一:登录root用户关闭防火墙 sudo passwd root systemctl stop ufw.service systemctl disable ufw.service 二:开启ssh服务 sudo apt update sudo apt install openssh-server sudo systemctl start ssh sudo systemctl status ssh连接上WinS…

笔记本如何录屏?很简单,我来告诉你

“最近遇到了一些工作上的问题&#xff0c;需要录制一些会议和讨论的内容&#xff0c;以便于后续的整理和回顾。但是&#xff0c;我没有使用过笔记本进行录屏&#xff0c;不知道该如何操作。大家有没有简单易懂的笔记本录屏指南&#xff0c;教教我&#xff01;” 在当今数字化…

vue3(vite)+electron打包踩坑记录(1)

vue3(vite)electron打包踩坑记录 - 打包vue 第一步 编译vue 使用vite构建vue&#xff0c;package.json如下 {"name": "central-manager","private": true,"version": "0.0.0","type": "commonjs",&q…

2D目标检测正负样本分配集合

一&#xff1a;CenterNet Center point based正负样本分配方式&#xff1a;中心像素分配为当前目标。 如果同类的两个高斯核具有交叠的情况&#xff0c;我们逐元素【像素】的选取最大值。Center point based 正样本分配方式的缺点&#xff1a;如果两个不同的物体完美匹配&…

CFS的覆灭,Linux新调度器EEVDF详解

本文主要总结了EEVDF论文和Linux内核实现中关键逻辑的推导&#xff0c;着重强调代码逻辑和论文公式之间的关系&#xff0c;它又长又全&#xff0c;像今天的汤圆又大又圆:D Warn&#xff1a;多行的公式编号渲染有点问题&#xff0c;当存在多行公式时&#xff0c;仅对最后一条式…

什么是媒体发稿?发稿媒体分类及发稿流程

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体发稿是一种企业推广和宣传的手段&#xff0c;通过媒体渠道传递企业信息和形象。 媒体发稿的含义在于&#xff0c;当企业有新闻、事件或其他消息需要对外公布时&#xff0c;可以选择…

第三节:Vben Admin登录对接后端login接口

系列文章目录 第一节&#xff1a;Vben Admin介绍和初次运行 第二节&#xff1a;Vben Admin 登录逻辑梳理和对接后端准备 文章目录 系列文章目录前言一、Flask项目介绍二、使用步骤1.User模型创建2.迁移模型3. Token创建4. 编写蓝图5. 注册蓝图 三. 测试登录总结 前言 上一节&…

【基于Ubuntu20.04的Autoware.universe安装过程】方案一:虚拟机 | 详细记录 | Vmware | 全过程图文 by.Akaxi

目录 一、Autoware.universe背景 二、虚拟机配置 三、Ubuntu20.04安装 四、GPU显卡安装 五、ROS2-Galactic安装 六、ROS2-dev-tools安装 七、rmw-implementation安装 八、pacmod安装 九、autoware-core安装 十、autoware universe dependencies安装 十一、安装pre-c…