基于java,SpringBoot和HTML实验室预约管理系统设计

摘要

本研究旨在设计并实现一个基于Java, Spring Boot和HTML的实验室预约管理系统,以解决实验室资源分配不均、管理混乱和预约流程繁琐等问题。系统采用B/S架构设计,后端使用Spring Boot框架进行开发,前端使用HTML进行页面设计,实现了用户登录、实验室预约、查看预约状态以及管理员对实验室的管理等功能。

首先,系统通过Spring Boot实现了快速开发和部署,简化了项目的配置和管理。同时,利用Spring Boot的自动装配特性,方便地集成了MyBatis、MySQL数据库等技术,实现了数据持久化存储。

其次,系统前端采用HTML进行页面设计,结合CSS和JavaScript实现了友好的用户界面。用户可以通过网页进行实验室预约,查看预约状态,取消预约等操作。同时,系统提供了管理员角色,管理员可以对实验室进行管理,如添加、修改实验室信息,查看所有预约记录等。

最后,系统采用了分层架构设计,将业务逻辑层、数据访问层和表示层分离,降低了模块间的耦合度,提高了代码的可维护性和可扩展性。此外,系统还实现了权限控制和异常处理机制,保证了系统的安全性和稳定性。

总之,本研究设计的基于Java, Spring Boot和HTML的实验室预约管理系统,不仅解决了实验室资源分配和管理的问题,还为用户提供了便捷的预约服务,具有较高的实用价值和推广前景。

实现的功能

管理员、教师、学生三种角色;

管理员:用户管理(学生管理、教师管理)、实验室管理、教务管理(班级管理、课程管理)、预约(个人预约、教师预约、预约列表、审核列表);

学生:实验室列表、预约(我的预约、个人预约);

教师:班级管理、实验室列表、预约(教师预约、我的预约)。

用户在预约的时候可以看到实验室的预约人数状态是否满了,也可以在实验室列表查看预约状态。

使用的技术

后端:JAVA开发语言,SpringBoot框架,MySql数据库,Maven;

前端:layUI框架、HTML页面。

部分代码展示

java 复制代码
public String toTeacherIndexHtml(Model model) {

        Map weeks = ConstantUtils.initWeeks();
        Map days = ConstantUtils.initDays();
        Map parts = ConstantUtils.initParts();

        model.addAttribute("weeks", weeks);
        model.addAttribute("days", days);
        model.addAttribute("parts", parts);


        return "/reservation/teacher/index.html";
    }

    @GetMapping("/individual/index.html")
    public String toIndividualIndexHtml(Model model) {
        Map weeks = ConstantUtils.initWeeks();
        Map days = ConstantUtils.initDays();
        Map parts = ConstantUtils.initParts();

        model.addAttribute("weeks", weeks);
        model.addAttribute("days", days);
        model.addAttribute("parts", parts);
        return "/reservation/individual/index.html";
    }

    @GetMapping("/index.html")
    public String toReservationIndexHtml() {

        return "/reservation/index.html";
    }

    @GetMapping("/lib")
    @ResponseBody
    public ResultVO getLibList(int startWeek, int day, int part) {
        List<Lib> labList = libService.getCurrentlyUnusedLabList(startWeek, day, part);
        return ResultVO.SUCCESS(labList);
    }

    @GetMapping("/libNum")
    @ResponseBody
    public ResultVO getLibList() {
        List<Lib> labList = libService.getCurrentlyLabUsedNumList();
        return ResultVO.SUCCESS(labList);
    }

    @GetMapping("/grade")
    @ResponseBody
    public ResultVO getGradeList(int teacherId,int startWeek, int day, int part) {
        List<Grade> gradeList = gradeService.getCurrentGradeOfTeacher(teacherId, startWeek, day, part);
        return ResultVO.SUCCESS(gradeList);
    }


    /**
     * 添加预约
     * */
    @PostMapping("/teacher")
    @ResponseBody
    public ResultVO addReservation(Reservation reservation, HttpSession session) {
        long userId = (long)session.getAttribute("userInfo");
        reservation.setUserId(userId);
        reservationService.save(reservation);
        return ResultVO.SUCCESS();
    }

    /**
     * 获取所有预约单
     * */
    @GetMapping
    @ResponseBody
    public ResultVO getReservationList(@RequestParam(value = "page", defaultValue = "1") Integer page,
                                 @RequestParam(value = "limit", defaultValue = "10") Integer limit) {
        page -= 1;
        long total = reservationService.count();
        List<Reservation> reservationList = reservationService.getReservationList(page,limit);
        HashMap<String,Object> data = new HashMap<>();
        data.put("total",total);
        data.put("reservationList",reservationList);

        return ResultVO.SUCCESS(0,data);
    }

    /**
     * 获取个人预约单
     * */
    @GetMapping("/individual/mine")
    @ResponseBody
    public ResultVO getStudentReservationList(@RequestParam(value = "page", defaultValue = "1") Integer page,
                                       @RequestParam(value = "limit", defaultValue = "10") Integer limit,
                                              HttpSession session) {
        page -= 1;
        long userId = (long)session.getAttribute("userInfo");
        long total = reservationService.studentCount(userId);

        List<Reservation> reservationList = reservationService.getStudentReservationList(page,limit,userId);
        HashMap<String,Object> data = new HashMap<>();
        data.put("total",total);
        data.put("reservationList",reservationList);

        return ResultVO.SUCCESS(0,data);
    }

    /**
     * 获取教师预约单
     * */
    @GetMapping("/teacher/mine")
    @ResponseBody
    public ResultVO getTeacherReservationList(@RequestParam(value = "page", defaultValue = "1") Integer page,
                                              @RequestParam(value = "limit", defaultValue = "10") Integer limit,
                                              HttpSession session) {
        page -= 1;
        long userId = (long)session.getAttribute("userInfo");
        long total = reservationService.teacherCount(userId);

        List<Reservation> reservationList = reservationService.getTeacherReservationList(page,limit,userId);
        HashMap<String,Object> data = new HashMap<>();
        data.put("total",total);
        data.put("reservationList",reservationList);

        return ResultVO.SUCCESS(0,data);
    }

    /**
     * 学生预约列表
     * individual/mine.html
     * */
    @GetMapping("/individual/mine.html")
    public String toIndividualMineHtml() {

        return "/reservation/individual/mine.html";
    }

    /**
     * 教师预约列表
     * teacher/mine.html
     * */
    @GetMapping("/teacher/mine.html")
    public String toTeacherMineHtml() {

        return "/reservation/teacher/mine.html";
    }

    /**
     * 获取未深刻预约单
     * */
    @GetMapping("/audit")
    @ResponseBody
    public ResultVO getNoneAuditReservationList(@RequestParam(value = "page", defaultValue = "1") Integer page,
                                       @RequestParam(value = "limit", defaultValue = "10") Integer limit) {
        page -= 1;
        long total = reservationService.noneAuditCount();
        List<Reservation> reservationList = reservationService.getNoneAuditReservationList(page,limit);
        HashMap<String,Object> data = new HashMap<>();
        data.put("total",total);
        data.put("reservationList",reservationList);

        return ResultVO.SUCCESS(0,data);
    }

    @GetMapping("/Audit.html")
    public String toAuditReservationIndexHtml() {

        return "/reservation/Audit.html";
    }

    @GetMapping("update/audit")
    @ResponseBody
    public ResultVO UpdateReservation(long reservationId) {
        Reservation reservation = reservationService.getReservationId(reservationId);
        reservation.setStatus(1);
        reservationService.save(reservation);
        System.out.println(reservationId);
        return ResultVO.SUCCESS(200);
    }

    @PostMapping("/delete")
    @ResponseBody
    public ResultVO deleteReservation(Reservation reservation) {
        reservationService.delete(reservation);
        return ResultVO.SUCCESS(200);
    }

演示视频

基于JAVA,SpringBoot和HTML实验室预约管理系

相关推荐
代码方舟10 分钟前
零信任架构实战:基于天远人企关联构建自动化供应链核心企业关联穿透与利益冲突审查网关
java·人工智能·架构·自动化
多弗朗皮卡丘40 分钟前
C++的IO流
开发语言·c++·io流·文件io流
liyi_hz20081 小时前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
骑着蜗牛撵大象3271 小时前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
itmigrate1 小时前
Rust 里的所有权误区:不是不写 clone 就叫高性能
开发语言·后端·rust
Brilliantwxx1 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
鬼手点金1 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
摇滚侠2 小时前
《On Java 中文版 基础卷》阅读笔记 初始化和清理 08
java·开发语言·笔记
xiangyun612 小时前
C++ 手撕 shared_ptr:引用计数与控制块到底长什么样?
开发语言·c++·算法·面试·stl
海鸥-w2 小时前
Redis 配置与排错说明
java·数据库·redis·bootstrap