# library **Repository Path**: LiSiBen/library ## Basic Information - **Project Name**: library - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 📚 图书管理系统 一个功能完整的全栈图书管理系统,采用前后端分离架构。 ## 系统特性 ### 核心功能 - ✅ **用户认证**: 注册、登录、JWT Token 验证 - ✅ **图书管理**: 完整的 CRUD 操作(创建、读取、更新、删除) - ✅ **文件上传**: 图书封面图片上传和展示 - ✅ **搜索功能**: 按书名或作者搜索图书 - ✅ **权限控制**: 基于 JWT 的认证和授权 ### 技术亮点 - 🎨 现代化深色主题 UI 设计 - 📱 完全响应式布局 - ⚡ 基于 Vite 的快速开发体验 - 🔐 安全的密码加密和 Token 认证 - 📝 完整的 API 文档(Swagger UI) - 🎯 RESTful API 设计 ## 技术栈 ### 后端 - **语言**: Python 3.12 - **框架**: FastAPI - **数据库**: MySQL 5.7 - **ORM**: SQLAlchemy - **认证**: JWT (python-jose) - **密码加密**: passlib + bcrypt - **依赖管理**: uv ### 前端 - **构建工具**: Vite - **语言**: 原生 HTML、CSS、JavaScript - **UI 设计**: 现代化深色主题、渐变色、卡片效果 ## 项目结构 ``` library/ ├── backend/ # 后端目录 │ ├── app/ │ │ ├── main.py # FastAPI应用入口 │ │ ├── database.py # 数据库配置 │ │ ├── models.py # 数据模型 │ │ ├── schemas.py # Pydantic schemas │ │ ├── auth.py # 认证模块 │ │ └── routers/ # API路由 │ ├── uploads/ # 上传文件存储 │ ├── .env # 环境配置 │ ├── init_db.py # 数据库初始化脚本 │ ├── pyproject.toml # Python项目配置 │ └── README.md # 后端文档 │ ├── frontend/ # 前端目录 │ ├── src/ │ │ ├── css/ │ │ │ └── style.css # 全局样式 │ │ └── js/ │ │ ├── api.js # API请求封装 │ │ ├── auth.js # 认证逻辑 │ │ └── books.js # 图书管理逻辑 │ ├── index.html # 登录/注册页面 │ ├── books.html # 图书管理页面 │ ├── package.json │ └── README.md # 前端文档 │ └── README.md # 项目总览(本文件) ``` ## 数据库设计 ### 用户表 (users) | 字段 | 类型 | 说明 | | ------------- | ------------ | -------------- | | id | INT | 主键 | | username | VARCHAR(50) | 用户名(唯一) | | password_hash | VARCHAR(255) | 密码哈希 | | created_at | DATETIME | 创建时间 | ### 图书表 (books) | 字段 | 类型 | 说明 | | ------------ | ------------- | ----------------- | | id | INT | 主键 | | title | VARCHAR(200) | 书名 | | author | VARCHAR(100) | 作者 | | isbn | VARCHAR(20) | ISBN 编号(唯一) | | publisher | VARCHAR(100) | 出版社 | | publish_date | DATE | 出版日期 | | price | DECIMAL(10,2) | 价格 | | description | TEXT | 简介 | | cover_image | VARCHAR(255) | 封面图片路径 | | created_at | DATETIME | 创建时间 | | updated_at | DATETIME | 更新时间 | ## 快速开始 ### 环境要求 - Python 3.12 - Node.js 16+ - MySQL 5.7 - uv (Python 包管理工具) ### 1. 准备数据库 启动 MySQL 服务并创建数据库: ```sql CREATE DATABASE library_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 2. 后端设置 ```bash # 进入后端目录 cd backend # 安装依赖 uv sync # 配置环境变量 cp .env.example .env # 编辑 .env 文件,填写数据库密码等信息 # 初始化数据库 uv run python init_db.py # 启动后端服务 uv run fastapi dev app/main.py ``` 后端将运行在 `http://localhost:8000` ### 3. 前端设置 ```bash # 打开新终端,进入前端目录 cd frontend # 安装依赖 npm install # 启动开发服务器 npm run dev ``` 前端将运行在 `http://localhost:5173` ### 4. 访问系统 1. 打开浏览器访问 `http://localhost:5173` 2. 注册新用户账号 3. 登录后即可管理图书 ## API 文档 启动后端服务后,可访问交互式 API 文档: - **Swagger UI**: http://localhost:8000/docs - **ReDoc**: http://localhost:8000/redoc ## 主要 API 端点 ### 认证接口 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 ### 图书管理接口 - `GET /api/books` - 获取图书列表(支持搜索、分页) - `GET /api/books/{book_id}` - 获取图书详情 - `POST /api/books` - 创建图书(需认证) - `PUT /api/books/{book_id}` - 更新图书(需认证) - `DELETE /api/books/{book_id}` - 删除图书(需认证) ### 文件上传接口 - `POST /api/books/upload/cover` - 上传封面图片(需认证) ## 功能演示 ### 用户界面 - **登录/注册页面**: 深色主题、渐变按钮、表单验证 - **图书列表**: 卡片式布局、悬停动画、搜索功能 - **添加/编辑图书**: 模态框表单、图片上传预览 - **图书详情**: 完整信息展示、图片查看 ### 核心流程 1. **用户注册登录** → 获取 JWT Token 2. **浏览图书列表** → 搜索查询图书 3. **添加新图书** → 上传封面、填写信息 4. **编辑图书** → 修改信息、更换封面 5. **删除图书** → 确认删除 ## 常见问题 ### 1. 数据库连接失败 确保: - MySQL 服务已启动 - 数据库已创建 - `.env` 文件配置正确 ### 2. 依赖安装失败 ```bash # 后端 uv sync --reinstall # 前端 rm -rf node_modules package-lock.json npm install ``` ### 3. CORS 错误 后端已配置允许所有来源的 CORS,如果仍有问题: - 检查前端 API 地址配置(`src/js/api.js`) - 确认后端服务已启动 - 查看浏览器控制台详细错误 ### 4. 图片上传失败 - 确保 `backend/uploads/` 目录有写权限 - 检查文件格式(支持 jpg、png、gif、webp) - 文件大小建议小于 5MB ## 开发建议 ### 后端开发 - 使用 `fastapi dev` 命令启动开发服务器(自动重载) - 访问 `/docs` 测试 API 接口 - 查看终端日志调试问题 ### 前端开发 - 使用 `npm run dev` 启动开发服务器(热重载) - 打开浏览器开发者工具查看网络请求 - 修改 `src/css/style.css` 自定义样式 ## 安全建议 - 🔒 生产环境务必修改 `SECRET_KEY` - 🔒 使用 HTTPS 保护 API 通信 - 🔒 配置适当的 CORS 策略 - 🔒 定期备份数据库 - 🔒 限制文件上传大小和类型 ## 后续改进方向 - [ ] 添加用户角色和权限管理 - [ ] 实现图书分类和标签 - [ ] 添加图书评论和评分功能 - [ ] 实现图书借阅管理 - [ ] 添加数据统计和图表 - [ ] 实现导出导入功能(Excel、CSV) - [ ] 添加图书库存管理 - [ ] 实现多语言支持 ## 许可证 MIT License ## 联系方式 如有问题或建议,欢迎提 issue 或 PR。