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

5.4 KiB
Raw Permalink Blame History

智能图书馆管理系统

基于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注入防护参数化查询
  • 输入验证和清理
  • 权限控制和访问限制

📝 待实现功能

  • 用户认证和会话管理
  • 图书批量导入功能
  • 邮件通知系统
  • 移动端响应式优化
  • 数据导出功能
  • 系统日志记录
  • 高级统计报表

🤝 贡献指南

  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 文件了解详情。

👥 作者

  • 开发者 - 智能图书馆系统

🙏 致谢

  • Next.js团队提供的优秀框架
  • Tailwind CSS的美观样式系统
  • Drizzle ORM的类型安全数据库操作
  • 所有开源项目贡献者