news 2026/4/16 13:38:53

实验室预约管理系统(开源 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/16 5:43:04

<span class=“js_title_inner“>让 AI 也能当“反洗钱专家“——一个通俗易懂的模型训练故事</span>

故事的开端&#xff1a;为什么要做这件事?想象一下,你是一家银行的合规专员。每天要面对厚厚的反洗钱法规文件,还要分析各种复杂的可疑交易案例。有些问题特别棘手:法律条文晦涩难懂,一个条款套着另一个条款真实的洗钱案例千奇百怪,要从蛛丝马迹中发现问题有时候一个问题涉及好…

作者头像 李华
网站建设 2026/4/15 8:19:20

堪比图吧工具箱!入梦工具箱 近百种硬件检测工具

下载链接https://pan.freedw.com/s/aHdahn给需要硬件检测的小伙伴推荐一款实用工具 —— 入梦工具箱&#xff0c;它和热门的图吧工具箱功能几乎一模一样&#xff0c;同样收集了近百种各类硬件检测工具&#xff0c;不管是检测电脑配置、排查硬件故障&#xff0c;还是性能测试&am…

作者头像 李华
网站建设 2026/4/16 5:41:02

梦笔记20260103

回家遇到侄女&#xff0c;说她是老奶抱大的&#xff0c;应该感恩。老姐在一个沙岛上&#xff0c;上班要坐飞机&#xff0c;先到陆地&#xff1f;出差到科大&#xff0c;交流工作。对方是个女的&#xff0c;问验收杀毒软件。我一愣&#xff1a;周总没说啊。回答呆会问问。问住宿…

作者头像 李华
网站建设 2026/4/16 5:40:40

<span class=“js_title_inner“>科技企业家 | 驭势科技吴甘沙:自动驾驶领域的“长跑者”</span>

当今科技创新已成为决定经济社会发展质量的关键。然而从“书斋”到“车间”&#xff0c;从“论文”到“产品”&#xff0c;创新之路绝非坦途。破局之道&#xff0c;则在于“人”。在“十五五”开局的关键节点&#xff0c;我们推出“科技企业家”系列报道&#xff0c;不为讲述个…

作者头像 李华
网站建设 2026/4/16 7:16:44

2026第26届立嘉国际智能装备展览会关注度高吗?参展能带来商机吗?

这一次的国际智能装备展览会&#xff0c;本身就是一个代表性的展会&#xff0c;现在早就已经成为行业内受到大家关注的盛会。那么这一次的关注度是不是很高呢&#xff1f;如果大家参会&#xff0c;又有什么样的商机&#xff1f;这一次的关注度还是比较高的&#xff0c;例如展会…

作者头像 李华