214 lines
5.4 KiB
Markdown
214 lines
5.4 KiB
Markdown
# 智能图书馆管理系统
|
||
|
||
基于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的类型安全数据库操作
|
||
- 所有开源项目贡献者
|