# 智能图书馆管理系统

基于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的类型安全数据库操作
- 所有开源项目贡献者
