# Library Management System **Repository Path**: dqdcy/tushuguanli ## Basic Information - **Project Name**: Library Management System - **Description**: 图书管理系统是一个专为图书馆设计的现代化管理平台,旨在提高图书馆的运营效率和服务质量。系统通过整合前后端技术,实现了图书管理、读者管理、借阅管理等核心功能,为图书馆工作人员和读者提供了便捷的数字化服务。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-25 - **Last Updated**: 2026-01-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Library Management System (图书管理系统) ## 项目概述 图书管理系统是一个功能完整的现代化图书馆管理平台,旨在提高图书馆的运营效率和服务质量。系统采用前后端分离架构,结合了 Spring Boot 3、Vue 3、MyBatis-Plus 和 MySQL 等先进技术,实现了图书管理、读者管理、借阅管理等核心功能,为图书馆工作人员和读者提供了便捷的数字化服务。 ## 技术架构 ### 后端技术栈 - **Spring Boot 3**: 轻量级 Java 企业级应用开发框架,提供自动配置和快速开发能力 - **MyBatis-Plus**: MyBatis 的增强工具,简化数据库操作,提供代码生成器 - **MySQL 8.0+**: 关系型数据库,存储系统数据 - **Spring Security**: 认证和授权框架,保障系统安全 - **Lombok**: 简化 Java 代码,减少样板代码 - **Swagger UI**: API 文档生成工具,方便前端开发和接口测试 ### 前端技术栈 - **Vue 3**: 轻量级前端框架,提供响应式数据绑定和组件化开发 - **Element Plus**: 基于 Vue 3 的 UI 组件库,提供丰富的桌面端组件 - **Vite**: 现代化前端构建工具,提供快速的开发体验 - **Axios**: 基于 Promise 的 HTTP 客户端,用于与后端 API 交互 - **Vue Router**: Vue 3 的官方路由管理器,实现单页应用的路由控制 - **Pinia**: Vue 3 的官方状态管理库,替代 Vuex,提供更简洁的 API ## 项目结构 ``` tushuguanli/ ├── backend/ # 后端 Spring Boot 应用 │ ├── src/ # 源代码目录 │ │ ├── main/ # 主代码 │ │ └── test/ # 测试代码 │ ├── pom.xml # Maven 配置文件 │ └── README.md # 后端项目说明 ├── frontend/ # 前端 Vue 3 应用 │ ├── src/ # 源代码目录 │ │ ├── assets/ # 静态资源 │ │ ├── components/ # 组件 │ │ ├── views/ # 页面 │ │ ├── router/ # 路由 │ │ ├── store/ # 状态管理 │ │ ├── utils/ # 工具类 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── public/ # 公共资源 │ ├── package.json # 项目配置和依赖 │ ├── vite.config.js # Vite 配置 │ └── README.md # 前端项目说明 ├── sql/ # 数据库脚本 │ ├── schema.sql # 数据库表结构和初始数据 │ └── README.md # 数据库说明 ├── tools/ # 工具文件 ├── README.md # 项目根目录说明文件 ├── .gitignore # Git 忽略文件配置 ├── run_backend.ps1 # 后端启动脚本(Windows) └── run_frontend.ps1 # 前端启动脚本(Windows) ``` ## 环境要求 ### 后端环境 - **JDK**: 17+(推荐 JDK 17) - **Maven**: 3.8+(用于构建和依赖管理) - **MySQL**: 8.0+(用于数据存储) ### 前端环境 - **Node.js**: 16+(推荐 Node.js 18) - **npm**: 8+(Node.js 包管理器) ## 系统配置与运行 ### 1. 数据库配置 1. **创建数据库**(可选,脚本会自动处理) - 打开 MySQL 客户端,执行以下命令: ```sql CREATE DATABASE IF NOT EXISTS library_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. **执行 SQL 脚本** - 导航到 `sql/` 目录 - 执行 `schema.sql` 脚本创建表结构和插入初始数据: ```bash mysql -u username -p library_db < schema.sql ``` 或者在 MySQL Workbench 等工具中直接执行脚本 **初始用户信息**: - 管理员账户:`admin` / `123456` - 普通用户账户:`user` / `123456` ### 2. 后端配置与运行 1. **配置数据库连接** - 导航到 `backend/src/main/resources/` 目录 - 编辑 `application.yml` 文件,更新 MySQL 连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/library_db?useSSL=false&serverTimezone=UTC&characterEncoding=utf8 username: your_mysql_username password: your_mysql_password ``` 2. **运行后端服务** - 方法一:使用 Maven 命令 ```bash cd backend mvn spring-boot:run ``` - 方法二:使用启动脚本(Windows) ```bash .\run_backend.ps1 ``` - 方法三:在 IDE 中运行 `BackendApplication.java` 类 后端服务将在 `http://localhost:9090` 启动 ### 3. 前端配置与运行 1. **安装依赖** ```bash cd frontend npm install ``` 2. **配置后端 API 地址**(可选) - 编辑 `frontend/src/utils/request.js` 文件,更新后端 API 基础 URL: ```javascript const service = axios.create({ baseURL: 'http://localhost:9090/api', // 后端 API 地址 timeout: 10000 }); ``` 3. **运行前端服务** - 方法一:使用 npm 命令 ```bash npm run dev ``` - 方法二:使用启动脚本(Windows) ```bash .\run_frontend.ps1 ``` 前端应用将在 `http://localhost:5173` 启动(具体端口可能会根据系统情况有所不同) ### 4. 访问系统 1. 打开浏览器,访问前端应用地址:`http://localhost:5173` 2. 使用初始用户账户登录系统: - 管理员账户:`admin` / `123456` - 普通用户账户:`user` / `123456` ## 核心功能模块 ### 1. 图书管理 - **图书信息管理**:添加、修改、删除、查询图书信息,包括书名、作者、ISBN、分类、出版社、出版日期、价格等 - **图书分类管理**:创建、编辑、删除图书分类,支持多级分类 - **图书状态管理**:跟踪图书的当前状态(可借、借出、预约、维修等) - **图书统计**:生成图书库存、借阅情况等统计报表 ### 2. 读者管理 - **读者信息管理**:添加、修改、删除、查询读者信息,包括姓名、学号/工号、性别、联系方式等 - **读者类型管理**:设置不同类型读者的借阅权限和期限 - **读者状态管理**:监控读者借阅状态,处理违规情况(如逾期未还) ### 3. 借阅管理 - **图书借阅**:处理读者借阅图书的流程,包括借阅期限设置 - **图书归还**:处理读者归还图书的流程,包括逾期处理和罚款计算 - **借阅记录**:查询和管理借阅历史记录 - **预约管理**:支持图书预约功能,提高图书利用率 ### 4. 系统管理 - **用户权限管理**:设置不同角色的系统访问权限(管理员、普通用户) - **系统配置**:管理系统基本参数和设置,如借阅期限、罚款规则等 - **操作日志**:记录系统操作历史,确保系统安全 - **数据备份**:定期备份系统数据,防止数据丢失 ### 5. 其他功能 - **搜索功能**:支持多条件组合搜索图书和读者信息 - **报表功能**:生成各种统计报表,如借阅排行榜、图书分类统计等 - **通知功能**:系统通知和消息提醒 ## 数据库设计 ### 主要数据表 1. **user**:用户表,存储系统用户信息 2. **role**:角色表,存储用户角色信息 3. **permission**:权限表,存储系统权限信息 4. **book**:图书表,存储图书基本信息 5. **category**:分类表,存储图书分类信息 6. **borrow_record**:借阅记录表,存储图书借阅信息 7. **return_record**:归还记录表,存储图书归还信息 8. **reservation**:预约表,存储图书预约信息 ### 数据表关系 - 用户与角色:多对多关系 - 角色与权限:多对多关系 - 图书与分类:多对一关系 - 用户与借阅记录:一对多关系 - 图书与借阅记录:一对多关系 - 借阅记录与归还记录:一对一关系 - 用户与预约:一对多关系 - 图书与预约:一对多关系 ## 开发指南 ### 后端开发 1. **代码结构** - `controller`:处理 HTTP 请求,返回响应 - `service`:业务逻辑层,实现核心业务功能 - `dao`/`mapper`:数据访问层,与数据库交互 - `entity`:实体类,对应数据库表结构 - `dto`:数据传输对象,用于前后端数据交换 - `config`:系统配置类 - `utils`:工具类 2. **添加新功能** - 在 `entity` 包中创建实体类 - 在 `mapper` 包中创建映射接口 - 在 `service` 包中实现业务逻辑 - 在 `controller` 包中添加接口方法 - 配置路由和权限 ### 前端开发 1. **代码结构** - `views`:页面组件,对应系统的各个功能页面 - `components`:通用组件,可在多个页面中复用 - `router`:路由配置,定义页面导航结构 - `store`:状态管理,存储全局状态 - `utils`:工具类,如 HTTP 请求封装 - `assets`:静态资源,如图片、样式文件 2. **添加新页面** - 在 `views` 目录中创建新的页面组件 - 在 `router` 中配置路由信息 - 在 `store` 中添加相关状态管理(如果需要) - 在组件中实现页面逻辑和 UI ## 部署指南 ### 开发环境部署 按照前面的「系统配置与运行」步骤操作即可。 ### 生产环境部署 #### 后端部署 1. **构建可执行 JAR 文件** ```bash cd backend mvn clean package -DskipTests ``` 2. **运行 JAR 文件** ```bash java -jar target/library-management-system-1.0.0.jar ``` 3. **使用容器部署**(可选) - 创建 Dockerfile - 构建 Docker 镜像 - 运行 Docker 容器 #### 前端部署 1. **构建生产版本** ```bash cd frontend npm run build ``` 2. **部署构建结果** - 将 `dist` 目录中的文件部署到 Nginx、Apache 等 Web 服务器 - 配置 Web 服务器的反向代理,将 API 请求转发到后端服务 ### 配置生产环境 1. **数据库配置** - 使用生产环境的 MySQL 数据库 - 配置强密码和适当的权限 2. **后端配置** - 更新 `application.yml` 中的数据库连接信息 - 配置生产环境的日志级别 - 启用 HTTPS(可选) 3. **前端配置** - 更新 `request.js` 中的 API 基础 URL - 配置生产环境的构建选项 ## 故障排查 ### 常见问题及解决方案 1. **数据库连接失败** - 检查 MySQL 服务是否启动 - 验证数据库连接信息是否正确 - 确认数据库用户是否有足够的权限 2. **后端服务启动失败** - 检查端口是否被占用(默认端口:9090) - 查看日志文件中的错误信息 - 验证依赖是否正确安装 3. **前端服务启动失败** - 检查端口是否被占用(默认端口:5173) - 验证依赖是否正确安装(运行 `npm install`) - 查看控制台中的错误信息 4. **前后端通信失败** - 检查后端服务是否正常运行 - 验证前端配置的 API 地址是否正确 - 检查网络连接和防火墙设置 5. **登录失败** - 验证用户名和密码是否正确 - 检查用户账户是否被禁用 - 查看后端日志中的认证错误信息 ## 安全注意事项 1. **密码安全** - 使用强密码策略 - 密码加密存储 - 定期更换密码 2. **权限控制** - 严格的角色权限管理 - 最小权限原则 - 定期审查权限设置 3. **数据安全** - 定期数据备份 - 防止 SQL 注入攻击 - 保护敏感数据 4. **网络安全** - 使用 HTTPS 协议 - 配置适当的防火墙规则 - 防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF) ## 性能优化 1. **数据库优化** - 合理设计数据库表结构 - 创建适当的索引 - 使用连接池管理数据库连接 2. **后端优化** - 缓存常用数据 - 优化 SQL 查询 - 使用异步处理提高并发性能 3. **前端优化** - 组件懒加载 - 图片优化 - 减少 HTTP 请求 ## 贡献指南 欢迎对项目进行贡献!如果您想为项目添加新功能、修复 bug 或改进文档,请按照以下步骤操作: 1. **Fork 项目仓库** 2. **创建分支**:`git checkout -b feature/your-feature-name` 3. **提交更改**:`git commit -m "Add some feature"` 4. **推送到分支**:`git push origin feature/your-feature-name` 5. **创建 Pull Request** ## 许可证 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。 ## 联系方式 如果您对项目有任何问题或建议,欢迎通过以下方式联系我们: - 邮箱:[3181375055@qq.com] - Gitee:[https://gitee.com/dqdcy/library-management-system] ## 鸣谢 感谢所有为项目做出贡献的开发者和支持者! --- **更新日期**:2026-01-25