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

相关推荐
程序媛小果2 分钟前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot
追风林7 分钟前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
芒果披萨21 分钟前
El表达式和JSTL
java·el
q5673152322 分钟前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
许野平1 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
也无晴也无风雨1 小时前
在JS中, 0 == [0] 吗
开发语言·javascript
狂奔solar1 小时前
yelp数据集上识别潜在的热门商家
开发语言·python
duration~1 小时前
Maven随笔
java·maven
zmgst1 小时前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql
跃ZHD1 小时前
前后端分离,Jackson,Long精度丢失
java