ssm实验中心管理系统的设计与实现

news2024/11/23 16:42:27

ssm实验中心管理系统的设计与实现040
 开发工具:idea 
 数据库mysql5.7+
 数据库链接工具:navcat,小海豚等
  技术:ssm

研究目的与意义:

     随着高校硬件水平的提高和教学改革的深入,实验教学所占的地位越来越重要,实验室管理工作水平高低,已经成为了高校管理能力,管理质量和科研评价的一个重要的方式,在以往的实验室教学中,通常需要很多人员对实验室进行有效的维护。实验当中所使用的场所和仪器设备水平等都存在着一定的落后现象,这样一来对实验教学的资源配置和时间分配的优化就起到了很大的阻碍作用,在这样的情况下,信息化管理是当前高校实验室管理当中非常关键的一个环节,同时他也成为了联系实验室各种管理工作的一道桥梁。

实验室管理目标的达成,一方面要依靠先进的管理思想,同时也需要有一个相对科学的方法作为支撑。在高校建设的过程中,建立实验室管理系统已经成为了一个首选,在这一过程中,建立起实验教学和管理的计算机信息系统,可以十分有效的实现信息化管理,这样一来可以很好地提高工作的效率和质量,同时还能减少成本的投入。所以实验中心管理系统很好的满足了现如今高校的需求。

国内外研究现状:

近几年,国内高校发展和改革的步伐日趋加快,办学规模的不断扩大,实验室建设的投入逐年增加。面对规模庞大、事务繁杂的实验室管理工作,许多管理上的问题也逐渐暴露出来。传统的实验室管理大多通过人工进行,易造成实验室使用混乱、实验设备安排不当等诸多问题,既降低了实验室的使用效率,又耗费了人力物力。 因此,人们越来越意识到对实验室进行现代化管理非常重要。现在许多高校经过长期的探索与研究,已经完成了实验室管理系统的现代化建设,研发了基于计算机网络技术的实验室管理系统,实现了实验室管理的网络化。  

随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,计算机成为各行各业必不可少的工具。运用计算机技术,特别是现代网络技术,对高校实验室实行现代化管理势在必行。 实验室管理系统是基于网络环境的,只需要通过互联网,就可以实现教师信息管理、实验室信息管理、预约管理、设备管理等功能,为老师和学生们更加合理的安排实验时间,提供实验设备的使用,实现实验室管理的科学化,提高实验室的使用效率。

package com.controller;

import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.http.HttpServletRequest;

import com.annotation.IgnoreAuth;
import com.service.TokenService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;

import com.entity.XueshengxinxiEntity;

import com.service.XueshengxinxiService;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 
 * 后端接口
 * @author
 * @email
 * @date 2023-02-22
*/
@RestController
@Controller
@RequestMapping("/xueshengxinxi")
public class XueshengxinxiController {
    private static final Logger logger = LoggerFactory.getLogger(XueshengxinxiController.class);

    @Autowired
    private XueshengxinxiService xueshengxinxiService;

    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        XueshengxinxiEntity user = xueshengxinxiService.selectOne(new EntityWrapper<XueshengxinxiEntity>().eq("account", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            if(user==null || !user.getPassword().equals(password)) {
                return R.error("账号或密码不正确");
            }
            String token = tokenService.generateToken(user.getId(),user.getName(), "users", user.getRole());
            return R.ok().put("token", token);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }

    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody XueshengxinxiEntity user){
        if(xueshengxinxiService.selectOne(new EntityWrapper<XueshengxinxiEntity>().eq("account", user.getAccount())) !=null) {
            return R.error("学生已存在");
        }
        user.setRole("学生");
        xueshengxinxiService.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){
        XueshengxinxiEntity user = xueshengxinxiService.selectOne(new EntityWrapper<XueshengxinxiEntity>().eq("username", username));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        xueshengxinxiService.update(user,null);
        return R.ok("密码已重置为:123456");
    }

    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        XueshengxinxiEntity user = xueshengxinxiService.selectById(id);
        return R.ok().put("data", user);
    }
    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",page方法");
        Object role = request.getSession().getAttribute("role");
        PageUtils page = null;
        if(role.equals("学生")){
            params.put("yh",request.getSession().getAttribute("userId"));
            page = xueshengxinxiService.queryPage(params);
        }else{
            page = xueshengxinxiService.queryPage(params);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("Controller:"+this.getClass().getName()+",info方法");
        XueshengxinxiEntity xueshengxinxi = xueshengxinxiService.selectById(id);
        if(xueshengxinxi!=null){
            return R.ok().put("data", xueshengxinxi);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @IgnoreAuth
    @RequestMapping("/save")
    public R save(@RequestBody XueshengxinxiEntity xueshengxinxi, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",save");
        Wrapper<XueshengxinxiEntity> queryWrapper = new EntityWrapper<XueshengxinxiEntity>()
            .eq("name", xueshengxinxi.getName())
            .eq("account", xueshengxinxi.getAccount())
            .eq("password", xueshengxinxi.getPassword())
            .eq("sex_types", xueshengxinxi.getSexTypes())
            .eq("role", xueshengxinxi.getRole())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        XueshengxinxiEntity xueshengxinxiEntity = xueshengxinxiService.selectOne(queryWrapper);
        if("".equals(xueshengxinxi.getImgPhoto()) || "null".equals(xueshengxinxi.getImgPhoto())){
            xueshengxinxi.setImgPhoto(null);
        }
        xueshengxinxi.setRole("学生");
        if(xueshengxinxiEntity==null){
            xueshengxinxiService.insert(xueshengxinxi);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody XueshengxinxiEntity xueshengxinxi, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",update");
        //根据字段查询是否有相同数据
        Wrapper<XueshengxinxiEntity> queryWrapper = new EntityWrapper<XueshengxinxiEntity>()
            .notIn("id",xueshengxinxi.getId())
            .eq("name", xueshengxinxi.getName())
            .eq("account", xueshengxinxi.getAccount())
            .eq("password", xueshengxinxi.getPassword())
            .eq("sex_types", xueshengxinxi.getSexTypes())
            .eq("role", xueshengxinxi.getRole())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        XueshengxinxiEntity xueshengxinxiEntity = xueshengxinxiService.selectOne(queryWrapper);
        if("".equals(xueshengxinxi.getImgPhoto()) || "null".equals(xueshengxinxi.getImgPhoto())){
                xueshengxinxi.setImgPhoto(null);
        }
        if(xueshengxinxiEntity==null){
            xueshengxinxiService.updateById(xueshengxinxi);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        logger.debug("Controller:"+this.getClass().getName()+",delete");
        xueshengxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

 

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

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

相关文章

【PHP】PHP常见语法

文章目录 PHP简介前置知识了解静态网站的特点动态网站特点 PHP基础语法代码标记注释语句分隔(结束)符变量变量的基本概念变量的使用变量命名规则预定义变量可变变量变量传值内存分区 常量基本概念常量定义形式命名规则使用形式系统常量魔术常量 数据类型简单&#xff08;基本&a…

Qt应用开发(基础篇)——富文本浏览器 QTextBrowser

一、前言 QTextBrowser类继承于QTextEdit&#xff0c;是一个具有超文本导航的富文本浏览器。 框架类 QFramehttps://blog.csdn.net/u014491932/article/details/132188655 滚屏区域基类 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486 文…

智慧化工地SaaS平台源码,PC端+APP端+智慧数据可视化大屏端,源码完全开源不封装,自主研发,支持二开,项目使用,微服务+Java++vue+mysql

智慧工地管理平台充分运用数字化技术&#xff0c;聚焦施工现场岗位一线&#xff0c;依托物联网、互联网、AI等技术&#xff0c;围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三大体系为基础应用&#xff0c;实现全面高效的工程…

js使用for of遍历map

//使用for of遍历map console.log("---") console.log(odata.studentDetails) let obj odata.studentDetails[0].answerSituation for(let [key,value] of Object.entries(obj)){console.log(value) }

vscode远程调试

安装ssh 在vscode扩展插件搜索remote-ssh安装 如果连接失败&#xff0c;出现 Resolver error: Error: XHR failedscode 报错&#xff0c;可以看这篇帖子vscode ssh: Resolver error: Error: XHR failedscode错误_阿伟跑呀的博客-CSDN博客 添加好后点击左上角的加号&#xff0…

【HCIP】12.BGP基础

AS之间传递路由&#xff08;不产生路由&#xff0c;只传递路由&#xff09;BGP属于应用层&#xff0c;采用TLV价格。AS号&#xff0c;16bit与32bit。运行BGP的路由器成为BGP发言者&#xff0c;或者BGP路由器 概述 采用目的端口179&#xff0c;触发式更新能承载大量路由信息13…

美创科技荣获“2023年网络安全优秀创新成果大赛—杭州分站赛”两项优胜奖

近日&#xff0c;由浙江省互联网信息办公室指导、中国网络安全产业联盟&#xff08;CCIA&#xff09;主办&#xff0c;浙江省网络空间安全协会承办的“2023年网络安全优秀创新成果大赛-杭州分站赛”正式公布评选结果。 经专家评审&#xff0c;美创科技报名参赛的解决方案—“医…

万界星空科技/免费MES系统/免费质量检测系统

质量管理也是万界星空科技免费MES中的一个重要组成部分&#xff0c;旨在帮助制造企业实现全面的质量管理。该系统涵盖了供应商来料、生产过程、质量检验、数据分析等各个环节&#xff0c;为企业提供了一站式的质量管理解决方案。 1. 实时质量监控 质量管理能够实时监控生产过程…

【附安装包】Inventor2024安装教程 机械制图|三维制图

软件下载 软件&#xff1a;Inventor版本&#xff1a;2024语言&#xff1a;简体中文大小&#xff1a;5.61G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存8G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baidu…

15. Canvas制作汽车油耗仪表盘

1. 说明 本篇文章在14. 利用Canvas组件制作时钟的基础上进行一些更改&#xff0c;想查看全面的代码可以点击链接查看即可。 效果展示&#xff1a; 2. 整体代码 import QtQuick 2.15 import QtQuick.Controls 2.15Item{id:rootimplicitWidth: 400implicitHeight: implicitWi…

ASCII码-shellcode的技巧

网上已经有成熟的工具了&#xff0c;所以就简单记录一下工具怎么用吧 https://github.com/TaQini/alpha3 https://github.com/veritas501/ae64.git https://github.com/rcx/shellcode_encoder 结合题目来看吧&#xff0c;没有开启NX保护&#xff0c;基本这类型题目九成九都…

十年IT老炮都说不清的云计算,一文让你看懂

今天老陈想跟大家聊一聊云计算这个东西究竟是啥&#xff0c;为啥那么多企业都对云计算趋之若鹜、情有独钟&#xff0c;但是却没人知道云计算究竟能做什么&#xff1f; 一句话总结&#xff1a;云计算就是一个大号的虚拟旅行社。 最近老陈想要蹭个热度去淄博吃烧烤&#xff0c;…

【849. 到最近的人的最大距离】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个数组 seats 表示一排座位&#xff0c;其中 seats[i] 1 代表有人坐在第 i 个座位上&#xff0c;seats[i] 0 代表座位 i 上是空的&#xff08;下标从 0 开始&#xff09;。 至少有一个空座位…

3招教你释放储存空间:iPhone手机内存不足怎样清理最彻底

无论是什么手机&#xff0c;一旦使用时间长了&#xff0c;手机就会产生大量不必要的文件&#xff0c;从而导致手机内存不足&#xff0c;运行缓慢、卡顿。想要删除没用的文件该怎么做&#xff1f;iPhone手机内存不足怎样清理最彻底&#xff1f;今天就让小编来给大家分享一下&…

Apache BeanUtils工具介绍

beanutils&#xff0c;顾名思义&#xff0c;是java bean的一个工具类&#xff0c;可以帮助我们方便的读取(get)和设置(set)bean属性值、动态定义和访问bean属性&#xff1b;细心的话&#xff0c;会发现其实JDK已经提供了一个java.beans包&#xff0c;同样可以实现以上功能&…

MyBatis的核心技术掌握,简单易懂

目录 一.MyBatis中的动态SQL 二.MyBatis中的模糊查询 1. # 符号 2. $ 符号 ---问题 ---所以大家知道 # 和 $ 在MyBatis中的模糊查询中的区别了嘛&#xff1f;&#xff1f; 三.MyBatis 中的结果映射 1. resultType&#xff1a; 2. resultMap&#xff1a; ---问题 ---…

grpc整合Springboot

一、grpc的依赖 <dependencies><dependency><groupId>net.devh</groupId><artifactId>grpc-server-spring-boot-starter</artifactId><version>2.9.0.RELEASE</version></dependency></dependencies><build>…

技术未来论:为何校对将是AI时代的新前沿

随着信息时代的逐步深化&#xff0c;AI技术已成为全球进程中的核心动力。其深远的影响已经触及了社会的各个领域。而在这充满机器智慧的时代&#xff0c;一个古老的领域——校对&#xff0c;却意外地与AI结合&#xff0c;成为了新的技术前沿。这是为何&#xff1f; 1.信息的尊…

YOLO目标检测算法调试过程学习记录

先前已经完成过YOLO系列目标检测算法的调试过程&#xff0c;今天主要是将所有的调试加以总结 这里的conda环境就不再赘述了&#xff0c;直接使用requirement.txt文件的即可&#xff0c;也可以参考YOLOX的配置过程5 数据集处理 YOLOv5有自己的数据集格式&#xff0c;博主的数据…

面试热题(二叉树的最大路径)

路径 被定义为一条从树中任意节点出发&#xff0c;沿父节点-子节点连接&#xff0c;达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给定一个二叉树的根节点 root…