基于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实验室预约管理系

相关推荐
卷毛的技术笔记36 分钟前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥37 分钟前
匿名函数 lambda + 高阶函数
java·python·算法
isyangli_blog39 分钟前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008111 小时前
FastAPI APIRouter
开发语言·python
Benszen1 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆1 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木1 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
adrninistrat0r1 小时前
Java调用链MCP分析工具
java·python·ai编程
杨充1 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~1 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言