智能图书馆管理系统
基于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. 克隆项目
git clone <repository-url>
cd library_cs_design
2. 安装依赖
bun install
3. 配置环境变量
复制 .env.example 为 .env.local 并配置:
# 数据库配置
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 的数据库和模式:
CREATE DATABASE library;
\c library;
CREATE SCHEMA library;
运行SQL脚本导入数据库结构和示例数据(参考附件中的SQL文件)。
5. 启动开发服务器
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注入防护(参数化查询)
- 输入验证和清理
- 权限控制和访问限制
📝 待实现功能
- 用户认证和会话管理
- 图书批量导入功能
- 邮件通知系统
- 移动端响应式优化
- 数据导出功能
- 系统日志记录
- 高级统计报表
🤝 贡献指南
- Fork项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
📄 许可证
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
👥 作者
- 开发者 - 智能图书馆系统
🙏 致谢
- Next.js团队提供的优秀框架
- Tailwind CSS的美观样式系统
- Drizzle ORM的类型安全数据库操作
- 所有开源项目贡献者
Description
Languages
TypeScript
94%
PLpgSQL
5.6%
CSS
0.2%
JavaScript
0.2%