# library_reserve **Repository Path**: ww-yycc/library_reserve ## Basic Information - **Project Name**: library_reserve - **Description**: vibe coding 系统用户为读者和系统管理员。不同的用户拥有不同的权限,各自完成各自的管理功能,不同的用户看到不同的系统功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-06 - **Last Updated**: 2026-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图书馆座位预约管理信息系统 一个基于前后端分离架构的图书馆座位预约管理系统,支持读者在线预约座位、管理员进行座位管理等功能。 ## 项目架构 ``` library_reserve/ ├── backend/ # 后端服务 (Node.js + TypeScript) │ ├── prisma/ │ │ ├── schema.prisma # 数据库模型定义 │ │ └── seed.ts # 数据库种子数据 │ ├── src/ │ │ ├── config/ │ │ │ └── database.ts # 数据库配置 │ │ ├── middleware/ │ │ │ └── auth.ts # 认证中间件 │ │ ├── routes/ │ │ │ ├── auth.ts # 认证路由 │ │ │ ├── seats.ts # 座位管理路由 │ │ │ ├── reservations.ts # 预约管理路由 │ │ │ ├── users.ts # 用户管理路由 │ │ │ ├── violations.ts # 违规记录路由 │ │ │ ├── messages.ts # 消息管理路由 │ │ │ └── statistics.ts # 统计数据路由 │ │ └── index.ts # 服务入口 │ ├── package.json │ └── .env # 环境变量配置 │ └── frontend/ # 前端应用 (Vue 3 + TypeScript) ├── src/ │ ├── api/ # API 接口封装 │ │ ├── auth.ts │ │ ├── seats.ts │ │ ├── reservations.ts │ │ ├── users.ts │ │ ├── violations.ts │ │ ├── messages.ts │ │ └── statistics.ts │ ├── components/ # 公共组件 │ ├── layouts/ # 布局组件 │ │ ├── MainLayout.vue # 用户端布局 │ │ └── AdminLayout.vue # 管理端布局 │ ├── router/ # 路由配置 │ │ └── index.ts │ ├── stores/ # Pinia 状态管理 │ │ └── auth.ts │ ├── types/ # TypeScript 类型定义 │ │ └── index.ts │ ├── utils/ # 工具函数 │ │ └── request.ts # Axios 请求封装 │ ├── views/ # 页面视图 │ │ ├── Login.vue # 登录页 │ │ ├── Register.vue # 注册页 │ │ ├── Seats.vue # 座位预约 │ │ ├── Reservations.vue # 我的预约 │ │ ├── Profile.vue # 个人中心 │ │ ├── Violations.vue # 违规记录 │ │ ├── Messages.vue # 留言板 │ │ └── admin/ # 管理后台 │ │ ├── Dashboard.vue # 数据看板 │ │ ├── Users.vue # 用户管理 │ │ ├── Seats.vue # 座位管理 │ │ ├── Reservations.vue # 预约管理 │ │ ├── Violations.vue # 违规管理 │ │ └── Messages.vue # 消息管理 │ ├── App.vue │ └── main.ts ├── package.json └── vite.config.ts ``` ## 技术栈 ### 后端技术栈 - **Node.js** + **TypeScript** - 服务端运行环境 - **Express** - Web 应用框架 - **Prisma** - ORM 数据库工具 - **SQLite** - 轻量级数据库 - **bcryptjs** - 密码加密 - **jsonwebtoken** - JWT 认证 - **cors** - 跨域处理 ### 前端技术栈 - **Vue 3** + **TypeScript** - 前端框架 - **Element Plus** - UI 组件库 - **Vue Router** - 路由管理 - **Pinia** - 状态管理 - **Axios** - HTTP 请求 - **Dayjs** - 日期处理 - **ECharts** - 数据可视化 ## 功能模块 ### 读者端功能 - ✅ 用户注册/登录 - ✅ 个人信息管理 - ✅ 座位状态查询(按楼层、区域筛选) - ✅ 座位预约(选择日期和时间段) - ✅ 取消预约 - ✅ 预约历史查询 - ✅ 违规记录查询 - ✅ 留言板功能 ### 管理员端功能 - ✅ 读者信息管理(查看、编辑、重置密码) - ✅ 座位信息维护(增删改查) - ✅ 预约管理(查看所有预约) - ✅ 违规记录处理 - ✅ 消息/公告管理 - ✅ 数据统计可视化(ECharts 图表) ## 数据库模型 ``` User (用户) ├── id, username, password, email, phone ├── realName, studentId, role, status ├── createdAt, updatedAt └── 关联: reservations, violations, messages Seat (座位) ├── id, seatNumber, floor, area ├── seatType, status, hasPower, hasWindow ├── description, createdAt, updatedAt └── 关联: reservations Reservation (预约) ├── id, userId, seatId, date ├── startTime, endTime, status ├── checkInTime, checkOutTime, cancelReason ├── createdAt, updatedAt └── 关联: user, seat Violation (违规记录) ├── id, userId, type, description, date ├── processed, processedBy, processedAt, note ├── createdAt └── 关联: user Message (消息/公告) ├── id, userId, title, content, type ├── replyTo, isRead, createdAt, updatedAt └── 关联: user Setting (系统设置) ├── id, key, value, description, updatedAt ``` ## 快速启动 ### 环境要求 - Node.js >= 18.0.0 - npm >= 9.0.0 ### 1. 克隆项目 ```bash cd library_reserve ``` ### 2. 启动后端服务 ```bash cd backend npm install # 首次运行需要安装依赖 npm run db:migrate # 初始化数据库(首次) npm run db:seed # 添加测试数据(可选) npm run dev # 启动开发服务器 ``` 后端服务运行在: http://localhost:3000 ### 3. 启动前端服务 ```bash cd frontend npm install # 首次运行需要安装依赖 npm run dev # 启动开发服务器 ``` 前端服务运行在: http://localhost:5173 ## 默认账号 | 角色 | 用户名 | 密码 | |------|--------|------| | 管理员 | admin | admin123 | | 读者 | student1 | 123456 | | 读者 | student2 | 123456 | | 读者 | student3 | 123456 | ## API 接口文档 ### 认证接口 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 - `GET /api/auth/me` - 获取当前用户信息 ### 座位接口 - `GET /api/seats` - 获取座位列表 - `GET /api/seats/:id` - 获取座位详情 - `POST /api/seats` - 创建座位(管理员) - `PUT /api/seats/:id` - 更新座位(管理员) - `DELETE /api/seats/:id` - 删除座位(管理员) ### 预约接口 - `GET /api/reservations` - 获取所有预约(管理员) - `GET /api/reservations/my` - 获取我的预约 - `POST /api/reservations` - 创建预约 - `PUT /api/reservations/:id/cancel` - 取消预约 - `PUT /api/reservations/:id/checkin` - 签到 - `PUT /api/reservations/:id/checkout` - 签退 ### 用户接口 - `GET /api/users` - 获取用户列表(管理员) - `GET /api/users/:id` - 获取用户详情(管理员) - `PUT /api/users/:id` - 更新用户(管理员) - `PUT /api/users/:id/reset-password` - 重置密码(管理员) ### 违规记录接口 - `GET /api/violations` - 获取违规记录列表(管理员) - `POST /api/violations` - 创建违规记录(管理员) - `PUT /api/violations/:id/process` - 处理违规记录(管理员) - `DELETE /api/violations/:id` - 删除违规记录(管理员) ### 消息接口 - `GET /api/messages` - 获取消息列表(管理员) - `GET /api/messages/my` - 获取我的消息 - `POST /api/messages` - 创建留言 - `POST /api/messages/announcement` - 发布公告(管理员) - `POST /api/messages/:id/reply` - 回复留言(管理员) - `PUT /api/messages/:id/read` - 标记已读 - `DELETE /api/messages/:id` - 删除消息(管理员) ### 统计接口 - `GET /api/statistics/dashboard` - 获取仪表盘统计数据(管理员) - `GET /api/statistics/seats` - 获取座位使用统计(管理员) - `GET /api/statistics/reservations` - 获取预约统计(管理员) ## 项目特点 1. **前后端分离** - 清晰的架构分层,便于维护和扩展 2. **TypeScript 全栈** - 类型安全,开发体验好 3. **JWT 认证** - 无状态的认证机制 4. **RESTful API** - 规范的接口设计 5. **响应式设计** - 适配不同屏幕尺寸 6. **数据可视化** - 使用 ECharts 展示统计数据 ## 开发计划 - [ ] 添加预约提醒功能(邮件/短信) - [ ] 实现座位实时状态更新(WebSocket) - [ ] 添加预约信用积分系统 - [ ] 支持更多座位类型和预约规则 - [ ] 移动端适配优化 ## 许可证 MIT License