基于SpringBoot的闲置教室预约与智能推荐系统
项目简介
本系统是一套面向高校的教室资源管理平台,旨在解决校园闲置教室利用率低、预约流程繁琐、教室选择缺乏依据等问题。系统通过多因素匹配算法对教室进行智能评分与推荐,帮助用户快速找到最合适的教室,同时提供完整的预约申请与审批流程,实现教室资源的合理分配与高效利用。
核心功能介绍
用户端功能
| 功能模块 | 说明 |
|---|---|
| 用户认证 | 支持注册、登录,区分学生、教师、管理员三种角色 |
| 教室查询 | 按楼栋、最小容量、设备需求等条件筛选可用教室 |
| 智能推荐 | 基于容量适配、设备匹配、距离偏好、拥挤度等多因素综合评分,推荐 Top-K 最优教室 |
| 预约申请 | 选择日期、时段、人数、用途等信息提交预约,系统自动校验时间冲突 |
| 我的预约 | 查看个人预约记录及审批状态(待审/通过/驳回) |
管理端功能
| 功能模块 | 说明 |
|---|---|
| 楼栋管理 | 维护教学楼信息(名称、位置等) |
| 教室管理 | 维护教室信息(所属楼栋、容量、设备等) |
| 预约审批 | 审核用户预约申请,支持通过或驳回并填写驳回原因 |
智能推荐算法
推荐服务采用加权多因素评分模型,综合以下四个维度计算教室适配度:
-
容量适配(30%):教室容量与需求人数的匹配程度
-
设备匹配(25%):教室设备与用户需求设备的满足程度
-
距离偏好(25%):用户常用楼栋与教室所在楼栋的距离
-
拥挤度(20%):教室历史使用频率(预留扩展)
系统自动排除与课程表、已有预约冲突的教室,并按综合得分排序返回 Top-K 推荐结果。
技术栈介绍
后端
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | 1.8 | 开发语言 |
| Spring Boot | 2.7.18 | Web 框架 |
| MyBatis | 2.3.1 | ORM 持久层 |
| MySQL | 8.x | 关系型数据库 |
| Lombok | - | 简化实体类编写 |
| FastJSON2 | 2.0.43 | JSON 序列化 |
前端
| 技术 | 版本 | 说明 |
|---|---|---|
| Vue | 3.3.4 | 前端框架 |
| Vue Router | 4.2.4 | 路由管理 |
| Axios | 1.5.0 | HTTP 请求 |
| Vite | 4.4.9 | 构建工具 |
项目结构
c72(毕设)/ ├── classroom-booking/ # 后端 Spring Boot 项目 │ ├── src/main/java/com/campus/classroom/ │ │ ├── config/ # 配置类(跨域等) │ │ ├── controller/ # 控制器 │ │ │ ├── admin/ # 管理端接口 │ │ │ ├── user/ # 用户端接口 │ │ │ └── common/ # 公共接口 │ │ ├── entity/ # 实体类 │ │ ├── mapper/ # MyBatis Mapper │ │ ├── service/ # 业务逻辑层 │ │ ├── common/ # 通用类(Result 等) │ │ └── ClassroomApplication.java │ ├── src/main/resources/ │ │ ├── mapper/ # MyBatis XML 映射 │ │ ├── db/schema.sql # 数据库建表脚本 │ │ └── application.yml # 应用配置 │ └── pom.xml │ ├── classroom-web/ # 前端 Vue 项目 │ ├── src/ │ │ ├── api/ # 请求封装 │ │ ├── router/ # 路由配置 │ │ ├── views/ # 页面组件 │ │ │ ├── admin/ # 管理端页面 │ │ │ ├── user/ # 用户端页面 │ │ │ ├── Login.vue │ │ │ └── Register.vue │ │ ├── App.vue │ │ └── main.js │ ├── index.html │ ├── vite.config.js │ └── package.json │ └── README.md
数据库设计
数据库名:classroom_booking,字符集:utf8mb4。
表结构说明
| 表名 | 说明 |
|---|---|
| user | 用户表,存储用户名、密码、角色(1学生/2教师/3管理员)、常用楼栋等 |
| building | 楼栋表,存储教学楼名称、位置 |
| building_distance | 楼栋距离表,存储楼栋间距离(米),用于推荐算法中的距离评分 |
| room | 教室表,存储所属楼栋、名称、容量、设备(JSON) |
| course_schedule | 课程占用表,存储教室的固定课程安排(星期、时段) |
| reservation | 预约表,存储用户预约信息及审批状态(0待审/1通过/2驳回) |
建表脚本
建表脚本位于 classroom-booking/src/main/resources/db/schema.sql,首次部署时执行该脚本即可完成数据库初始化。
运行说明
环境要求
-
JDK 1.8+
-
Node.js 16+
-
MySQL 8.x
数据库初始化
-
创建数据库并执行
classroom-booking/src/main/resources/db/schema.sql -
修改
classroom-booking/src/main/resources/application.yml中的数据库连接信息(用户名、密码等)
启动后端
cd classroom-booking mvn spring-boot:run
后端默认运行在 http://localhost:8080。
启动前端
cd classroom-web npm install npm run dev
前端默认运行在 http://localhost:5173,开发模式下已配置代理,API 请求会转发至后端。
默认说明
-
管理员角色:
role = 3,登录后自动跳转至管理端 -
学生/教师角色:
role = 1或2,登录后进入用户端
开发作者
| 项目 | 信息 |
|---|---|
| 作者 | Jay |
| 定制联系 | 微信:Jay8059 |
| 开发日期 | 2026年 |
本系统为毕业设计项目,融合多因素匹配算法实现校园闲置教室的智能预约与推荐。









更多推荐
所有评论(0)