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