2025-06-24 10:56:21 +08:00

214 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 智能图书馆管理系统
基于Next.js、TypeScript和PostgreSQL构建的现代化图书馆管理系统支持管理员和学生双界面操作。
## 🚀 功能特性
### 管理员功能
- 📚 **图书管理**: 添加、编辑、删除图书,支持批量导入
- 👥 **学生管理**: 学生账户管理,权限控制
- 📊 **借阅管理**: 处理借阅、归还、续借操作
- 💰 **罚款管理**: 自动计算逾期罚款,处理缴费
- 📈 **数据统计**: 实时统计和图表展示
- ⚙️ **系统设置**: 灵活的系统参数配置
### 学生功能
- 🔍 **图书检索**: 按书名、作者、ISBN等多维度搜索
- 📖 **借阅管理**: 查看当前借阅、续借操作
- 📅 **预约系统**: 预约已借出的热门图书
-**图书评价**: 对借阅图书进行评分和评论
- 📋 **借阅历史**: 查看完整的借阅记录
- 💳 **账户状态**: 实时查看借阅额度和罚款信息
## 🛠️ 技术栈
- **前端**: Next.js 15, React 19, TypeScript
- **样式**: Tailwind CSS
- **数据库**: PostgreSQL
- **ORM**: Drizzle ORM
- **状态管理**: TanStack Query (React Query)
- **表单处理**: React Hook Form + Zod
- **包管理**: Bun
- **图标**: Lucide React
## 📋 系统要求
- Node.js 18.18+ 或 20+
- Bun 1.0+
- PostgreSQL 12+
## 🚀 快速开始
### 1. 克隆项目
```bash
git clone <repository-url>
cd library_cs_design
```
### 2. 安装依赖
```bash
bun install
```
### 3. 配置环境变量
复制 `.env.example``.env.local` 并配置:
```env
# 数据库配置
DATABASE_URL="postgresql://feie9454@127.0.0.1:5432/library"
DB_HOST="127.0.0.1"
DB_PORT="5432"
DB_USER="feie9454"
DB_PASSWORD=""
DB_NAME="library"
# NextAuth配置
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key-here"
```
### 4. 设置数据库
确保PostgreSQL服务运行并创建名为 `library` 的数据库和模式:
```sql
CREATE DATABASE library;
\c library;
CREATE SCHEMA library;
```
运行SQL脚本导入数据库结构和示例数据参考附件中的SQL文件
### 5. 启动开发服务器
```bash
bun dev
```
应用将在 http://localhost:3000 启动。
## 📁 项目结构
```
src/
├── app/ # Next.js App Router页面
│ ├── admin/ # 管理员界面
│ ├── student/ # 学生界面
│ ├── books/ # 图书相关页面
│ └── api/ # API路由
├── components/ # 可复用组件
├── lib/ # 工具库
│ ├── db/ # 数据库配置和模式
│ ├── types/ # TypeScript类型定义
│ └── utils/ # 工具函数
└── hooks/ # 自定义React Hooks
```
## 🗄️ 数据库设计
### 核心表结构
- `books` - 图书信息表
- `students` - 学生信息表
- `admins` - 管理员信息表
- `borrow_records` - 借阅记录表
- `reservations` - 预约记录表
- `fines` - 罚款记录表
- `reviews` - 图书评价表
- `system_settings` - 系统设置表
### 主要特性
- 支持图书多作者存储(数组类型)
- 自动触发器处理库存数量
- 完善的索引设计优化查询性能
- 支持软删除和状态管理
## 🔗 API接口
### 图书相关
- `GET /api/books` - 获取图书列表(支持分页和搜索)
- `POST /api/books` - 添加新图书
- `GET /api/books/[id]` - 获取图书详情
- `PUT /api/books/[id]` - 更新图书信息
- `DELETE /api/books/[id]` - 删除图书(软删除)
### 借阅相关
- `POST /api/borrow` - 借阅图书
- `POST /api/borrow/return` - 归还图书
- `POST /api/borrow/renew` - 续借图书
- `GET /api/borrow` - 获取借阅记录
### 学生相关
- `GET /api/students` - 获取学生列表
- `POST /api/students` - 添加新学生
## 🎨 界面截图
### 主页
- 现代化设计的欢迎页面
- 清晰的功能模块展示
- 快速访问入口
### 管理员控制台
- 实时数据统计面板
- 快速操作按钮
- 最近活动展示
### 学生门户
- 个人借阅状态概览
- 当前借阅和预约管理
- 便捷的操作界面
## 🧪 开发说明
### 代码规范
- 使用TypeScript严格模式
- ESLint + Prettier代码格式化
- 组件使用函数式风格
- API使用RESTful设计
### 数据库操作
- 使用Drizzle ORM进行类型安全的数据库操作
- 支持事务处理确保数据一致性
- 合理使用索引优化查询性能
### 状态管理
- 使用React Query管理服务器状态
- 自动缓存和后台更新
- 乐观更新提升用户体验
## 🔒 安全特性
- 密码哈希存储bcrypt
- SQL注入防护参数化查询
- 输入验证和清理
- 权限控制和访问限制
## 📝 待实现功能
- [ ] 用户认证和会话管理
- [ ] 图书批量导入功能
- [ ] 邮件通知系统
- [ ] 移动端响应式优化
- [ ] 数据导出功能
- [ ] 系统日志记录
- [ ] 高级统计报表
## 🤝 贡献指南
1. Fork项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启Pull Request
## 📄 许可证
本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 👥 作者
- **开发者** - 智能图书馆系统
## 🙏 致谢
- Next.js团队提供的优秀框架
- Tailwind CSS的美观样式系统
- Drizzle ORM的类型安全数据库操作
- 所有开源项目贡献者