一、项目简介
基于微信小程序的图书馆自习室座位预约系统
图书馆自习室座位预约系统采用微信小程序、Node.js、Express 和 MySQL 构建,包含学生小程序端、浏览器管理端与服务端三部分。系统通过自习室、座位、预约、公告和用户等业务数据,实现图书馆座位资源的集中查询、预约与管理。
系统的小程序页面包括预约、自习室座位和个人中心;后台管理页面用于维护自习室、座位、预约记录、用户与公告,适用于高校图书馆或自习空间预约场景。
二、系统功能
1.1 小程序端功能
自习室与座位查询
学生可浏览自习室列表,查看自习室基本信息及实时座位情况。进入具体自习室后,系统通过座位图展示座位状态和位置,帮助学生选择可用座位。
在线选座与预约管理
学生选择日期、时段和座位后提交预约。系统保存预约记录,学生可在预约页面查看个人预约信息,并对未使用的预约执行取消操作。
个人中心与公告通知
学生可维护个人资料、查看个人预约或学习统计,并阅读管理员发布的系统公告和重要通知。
1.2 管理端功能
自习室与座位资源管理
管理员可新增、编辑、删除自习室,维护座位编号、位置和靠窗、电源等属性。座位资源更新后会同步影响小程序端的可预约展示。
预约记录管理
管理员可查询全部预约记录,按自习室、日期和预约状态筛选,必要时可取消异常或不符合规定的预约。
用户、公告与数据统计
管理员可查看用户列表和账号状态,发布、修改或删除公告;管理端首页展示预约、自习室和用户等关键数据,便于了解系统运行情况。
三、技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 小程序端 | 微信小程序、WXML、WXSS、JavaScript | 学生端预约与个人中心 |
| 后端 | Node.js、Express | RESTful 业务接口 |
| 数据库 | MySQL | 自习室、座位、预约、用户与公告数据存储 |
| 身份认证 | JWT、中间件鉴权 | 学生与管理员访问控制 |
| 管理端 | HTML、CSS、JavaScript | 浏览器后台页面 |
四、项目结构
c62/
├── pages/
│ ├── booking/ # 预约相关页面
│ ├── seat/ # 座位选择页面
│ ├── profile/ # 个人中心页面
│ └── index/ # 首页
├── admin/ # 管理端静态页面
├── server/
│ ├── app.js # Express 服务入口
│ ├── config/database.js # 数据库连接配置
│ ├── middleware/auth.js # 用户鉴权
│ ├── middleware/adminAuth.js # 管理员鉴权
│ └── database/schema.sql # 建表与初始化脚本
├── app.js、app.json、app.wxss # 小程序全局配置
└── README.md
五、环境要求
- 微信开发者工具
- Node.js 14+
- MySQL 5.7+
- npm
六、数据库初始化
数据库脚本位于 server/database/schema.sql。创建数据库并导入脚本后,在 server/.env 或 server/config/database.js 中配置本机数据库连接信息,建议使用 utf8mb4 字符集。
mysql -u root -p --default-character-set=utf8mb4 < server/database/schema.sql
七、后端启动
cd server
npm install
npm start
八、小程序与管理端启动
使用微信开发者工具导入项目根目录,配置本机服务地址后编译预览。管理端位于 admin 目录,可通过浏览器打开后台页面并配置相同的后端接口地址。
九、默认账号
项目未提供可确认的默认账号,请以 schema.sql 中的初始化数据为准。
十、业务流程说明
9.1 座位预约流程
学生登录后浏览自习室,进入座位图选择可用座位,并填写预约时段后提交。服务端校验座位与时段的可用性,成功后生成预约记录并更新学生端展示状态。
学生可在个人预约页面查看或取消预约;管理员在后台查看全部预约,并在异常预约或资源调整时进行处理。
9.2 座位资源维护流程
管理员先创建自习室,再根据实际布局维护座位和座位属性。资源维护完成后,学生端根据后台数据展示实时可预约座位,从而避免手工登记造成的信息不一致。
十一、交付内容
- 微信小程序、Node.js 服务端和后台管理端完整源码。
- 数据库脚本文件
server/database/schema.sql。 - 项目说明文档,包含功能、环境、初始化与启动步骤。
本项目为个人原创,结构清晰,功能完整,适合课程设计、毕业设计和个人学习使用。如需购买项目成品或定制化需求可以联系作者。