news 2026/4/23 13:27:49

实验室预约管理系统(开源 FastAPI + Vue )

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实验室预约管理系统(开源 FastAPI + Vue )

源码下载:

「28-实验室预约系统」
链接:https://pan.quark.cn/s/46e6d24d4ff6

实验室预约管理系统

一个基于 FastAPI + SQLite + HTML/JS 的实验室预约管理系统,支持学生预约、教师审核、管理员管理的完整流程。

项目简介

本系统旨在解决学校实验室预约管理难题,提供便捷的在线预约服务。学生可以随时随地查看实验室空闲情况并提交预约申请,教师可以审核预约请求,管理员可以管理用户和实验室资源。

功能特性

学生端

  • 浏览实验室列表及详细信息(位置、容量、设备等)

  • 选择日期和标准时间段进行预约

  • 查看个人预约记录和状态

  • 实验室使用签到/签退功能

  • 取消预约功能

  • 个人信息管理

教师端

  • 查看管理的实验室概览

  • 审核学生预约申请(通过/拒绝)

  • 查看实验室使用统计

  • 查看今日预约、本周预约统计

  • 个人信息管理

管理员端

  • 系统数据仪表盘(用户数、实验室数、预约数等统计)

  • 用户管理(添加、编辑、删除用户,重置密码)

  • 实验室管理(创建、编辑、删除实验室)

  • 预约记录查看(支持筛选、分页)

  • 个人信息管理

技术栈

后端

  • FastAPI- 现代化的 Python Web 框架

  • SQLAlchemy- Python ORM 工具

  • Pydantic- 数据验证和序列化

  • SQLite- 轻量级数据库

  • JWT- 用户认证

  • bcrypt- 密码加密

前端

  • 纯 JavaScript- 无框架依赖

  • Element UI CSS- UI 样式框架

  • 原生 HTML5/CSS3- 页面结构和样式

项目结构

E:\aaa-lab\ ├── backend\ # 后端代码 │ ├── main.py # FastAPI 应用入口 │ ├── database.py # 数据库连接配置 │ ├── models.py # SQLAlchemy ORM 模型 │ ├── schemas.py # Pydantic 验证模型 │ ├── auth.py # JWT 认证中间件 │ ├── config.py # 配置文件 │ ├── utils.py # 工具函数 │ ├── seed_data.py # 初始化测试数据 │ └── routers\ # 路由模块 │ ├── auth.py # 认证接口 │ ├── admin.py # 管理员接口 │ ├── teacher.py # 教师接口 │ ├── student.py # 学生接口 │ ├── laboratory.py # 实验室接口 │ └── booking.py # 预约接口 ├── frontend\ # 前端代码 │ ├── index.html # 登录页面 │ ├── admin.html # 管理员端 │ ├── teacher.html # 教师端 │ └── student.html # 学生端 ├── uploads\ # 文件上传目录 ├── lab.db # SQLite 数据库文件 ├── requirements.txt # Python 依赖 └── README.md # 项目说明文档

安装部署

环境要求

  • Python 3.9+

  • pip 包管理器

安装步骤

  1. 克隆或下载项目

cd E:\aaa-lab
  1. 安装 Python 依赖

cd backend pip install -r requirements.txt
  1. 初始化数据库

python seed_data.py

这会创建 SQLite 数据库并插入测试数据。

  1. 启动后端服务

python -m uvicorn main:app --host 0.0.0.0 --port 8888 --reload

服务将在 http://localhost:8888 启动

  1. 访问前端

  • 打开浏览器访问:http://localhost:8888/login

  • 或直接访问:http://localhost:8888

默认测试账号

角色用户名密码说明
管理员adminadmin123系统管理员
教师teacher001teacher123计算机学院教授
学生student001student123计科2101班学生

API 接口文档

启动服务后访问以下地址查看完整 API 文档:

  • Swagger UI: http://localhost:8888/api/docs

  • ReDoc: http://localhost:8888/api/redoc

主要接口

认证接口
POST /api/auth/login # 用户登录 GET /api/auth/me # 获取当前用户信息 PUT /api/auth/me # 更新个人信息 POST /api/auth/change-password # 修改密码
实验室接口
GET /api/laboratories # 获取实验室列表 GET /api/laboratories/{id} # 获取实验室详情 POST /api/laboratories # 创建实验室(管理员) PUT /api/laboratories/{id} # 更新实验室(管理员) DELETE /api/laboratories/{id} # 删除实验室(管理员) GET /api/laboratories/{id}/slots # 获取可用时间段
预约接口
POST /api/bookings # 创建预约 GET /api/bookings # 获取预约列表 GET /api/bookings/{id} # 获取预约详情 PUT /api/bookings/{id}/cancel # 取消预约 PUT /api/bookings/{id}/approve # 审核通过(教师) PUT /api/bookings/{id}/reject # 审核拒绝(教师) POST /api/bookings/{id}/check-in # 签到 POST /api/bookings/{id}/check-out # 签退
管理员接口
GET /api/admin/dashboard # 仪表盘统计数据 GET /api/admin/users # 用户列表(支持分页) POST /api/admin/users # 添加用户 PUT /api/admin/users/{id} # 更新用户 DELETE /api/admin/users/{id} # 删除用户 POST /api/admin/users/{id}/reset-password # 重置密码

核心功能说明

1. 标准时间段

系统提供5个标准时间段,学生可直接选择预约:

  • 上午:08:00-10:00、10:00-12:00

  • 下午:14:00-16:00、16:00-18:00

  • 晚上:19:00-21:00

无需管理员预先配置时间段,简化预约流程。

2. 预约状态流转

pending(待审核)→ approved(已通过)→ completed(已完成) ↓ rejected(已拒绝) cancelled(已取消)

3. 权限控制

  • 学生:只能查看和管理自己的预约

  • 教师:只能审核所管理实验室的预约

  • 管理员:拥有所有权限

4. 签到签退

  • 学生在预约开始后可签到

  • 签退后会自动标记预约为"已完成"状态

  • 已签到的预约无法取消

数据库设计

系统包含6张核心数据表:

users(用户表)

存储所有用户的基本信息和认证凭据。

teachers(教师扩展表)

存储教师的扩展信息(职称、所属院系)。

students(学生扩展表)

存储学生的扩展信息(学号、班级、专业)。

laboratories(实验室表)

存储实验室的基本信息(名称、位置、容量、设备、管理员等)。

time_slots(时间段表)

存储实验室的时间段配置(当前未使用,保留用于扩展)。

bookings(预约表)

存储所有的预约记录,包含预约状态、签到签退时间等。

开发说明

添加新的 API 接口

  1. backend/routers/对应模块中添加路由函数

  2. backend/schemas.py中定义请求/响应模型

  3. 更新前端页面调用新接口

修改前端样式

  • 所有页面使用 Element UI CSS 框架

  • 图标使用 Element UI 图标类名(如el-icon-user

  • 自定义样式在各页面的<style>标签中

数据库迁移

如果修改了数据模型:

# 删除旧数据库 rm lab.db ​ # 重新初始化 python seed_data.py

常见问题

Q: 忘记管理员密码怎么办?

A: 运行python seed_data.py会重置所有测试账号密码。

Q: 如何修改端口?

A: 修改启动命令中的--port参数,如:--port 8000

Q: 前端页面无法加载?

A: 检查后端服务是否正常启动,访问 http://localhost:8888/api/docs 验证

Q: 预约时间段为什么不显示?

A: 确保后端服务已重启,新版本API返回标准时间段

技术支持

如有问题,请查看:

  1. 后端日志:控制台输出

  2. 浏览器控制台:F12 查看前端错误

  3. API 文档:http://localhost:8888/api/docs

更新日志

v1.0.0 (2026-02-02)

  • 初始版本发布

  • 实现用户认证和权限管理

  • 实现学生预约功能

  • 实现教师审核功能

  • 实现管理员管理功能

  • 实现签到签退功能

  • 实现标准时间段预约

  • 实现分页功能

  • 修复按钮显示问题

许可证

MIT License

作者

AAA Lab Team


感谢使用实验室预约管理系统!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 1:27:06

企业级人事管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着企业规模的扩大和信息化建设的深入&#xff0c;传统的人事管理模式已无法满足现代企业对高效、精准、智能化管理的需求。企业人事管理涉及员工信息、考勤、薪资、绩效等多维度数据&#xff0c;传统手工操作或单机版管理系统存在数据孤岛、效率低下、易出错等问题。因…

作者头像 李华
网站建设 2026/4/12 19:36:14

【毕业设计】SpringBoot+Vue+MySQL 小区团购管理平台源码+数据库+论文+部署文档

摘要 随着互联网技术的快速发展和社区经济的兴起&#xff0c;小区团购模式逐渐成为居民日常生活中不可或缺的一部分。传统的团购方式存在信息不透明、管理效率低下、沟通成本高等问题&#xff0c;难以满足现代社区居民对便捷、高效购物体验的需求。基于此&#xff0c;开发一款小…

作者头像 李华
网站建设 2026/4/23 12:26:13

主题生成AI PPT工具横评:ChatPPT何以成为公认第一?

主题生成AI PPT工具横评&#xff1a;ChatPPT何以成为公认第一&#xff1f; 输入一句话&#xff0c;3分钟内一份专业精美的PPT即刻生成。AI正在重新定义演示文稿的制作方式。 在快节奏的职场与学术环境中&#xff0c;PPT制作已成为一项基本且耗时的工作。传统PPT制作流程涉及内容…

作者头像 李华
网站建设 2026/4/23 9:39:03

<span class=“js_title_inner“>真正的AI手机永远不会有了吗?</span>

文 / 明道云创始人 任向晖 今天收到了中兴与豆包合作的 AI 手机&#xff08;努比亚 M 系列的一款&#xff0c;以下简称“豆包手机”&#xff09;。尽管早就知道微信等主流 App 已经全面封杀跨 App 操作&#xff0c;我还是想亲眼看看微信的冷酷与豆包的无奈。 当年 ChatGPT 4.0 …

作者头像 李华
网站建设 2026/4/23 11:14:14

最后一天。

第十一章&#xff1a;图论part11 Floyd 算法精讲 Floyd 算法代码很简单&#xff0c;但真正理解起原理 还是需要花点功夫&#xff0c;大家在看代码的时候&#xff0c;会发现 Floyd 的代码很简单&#xff0c;甚至看一眼就背下来了&#xff0c;但我为了讲清楚原理&#xff0c;本篇…

作者头像 李华