下载地址

网盘内附带教程,代码文件完整,可提供远程部署
夸克网盘
百度网盘

系统截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目简介

这是一个基于 Python Flask 框架开发的图书管理系统后端服务,配合 Vue3 前端项目使用。系统支持图书管理、用户管理、角色权限、借阅管理等功能。

技术栈

后端框架

  • Flask: 2.0.2 - Web 框架
  • Flask-SQLAlchemy: 2.5.1 - ORM 数据库操作
  • Flask-JWT-Extended: 4.6.0 - JWT 身份认证
  • Flask-Migrate: 2.6.0 - 数据库迁移
  • Flask-Cors: 3.0.10 - 跨域支持
  • Flask-Session: 0.4.0 - Session 管理
  • flask-redis: 0.4.0 - Redis 集成

数据库与缓存

  • MySQL: 关系型数据库
  • PyMySQL: 1.0.0 - MySQL 驱动
  • SQLAlchemy: 1.4.41 - SQL 工具包
  • Redis: 5.0.2 - 缓存和 Session 存储

其他依赖

  • loguru: 0.7.2 - 日志处理
  • pandas: 2.0.3 - 数据处理
  • cryptography: 42.0.7 - 加密库
  • Werkzeug: 2.3.6 - WSGI 工具库
  • Alembic: 1.9.4 - 数据库迁移工具

Python 版本要求

本项目支持以下 Python 版本:

  • Python 3.7+
  • 推荐使用 Python 3.8 或 3.10

__pycache__ 目录可以看出,项目已在 Python 3.7、3.8、3.10 上成功运行过。

项目结构

flask-book-manage-system/
├── app.py                    # 应用入口文件
├── settings.py               # 全局配置文件
├── requirements.txt          # 依赖包列表
├── apps/                     # 应用模块
│   ├── __init__.py          # 应用工厂
│   ├── User/                # 用户模块
│   ├── book/                # 图书模块
│   ├── author/              # 作者模块
│   ├── publish/             # 出版社模块
│   ├── classification/      # 图书分类模块
│   ├── role/                # 角色权限模块
│   ├── permission/          # 权限模块
│   ├── audit/               # 借阅审核模块
│   └── notice/              # 公告模块
├── exts/                     # 扩展模块
│   ├── db.py                # 数据库初始化
│   ├── auth.py              # 认证相关
│   ├── common.py            # 公共函数
│   ├── logHandler.py        # 日志处理
│   └── sendmail.py          # 邮件发送
├── static/images/            # 图片上传目录
└── logs/                     # 日志目录

主要功能模块

1. 用户管理 (User)

  • 用户注册、登录
  • 用户信息管理
  • 头像上传
  • 图书收藏功能

2. 角色权限管理 (Role & Permission)

  • 角色管理
  • 权限管理
  • 角色权限分配

3. 图书管理 (Book)

  • 图书信息增删改查
  • 图书状态管理(入库/已借出/丢失)
  • 图书图片上传
  • Excel 批量导入
  • 图书评分
  • 借阅统计

4. 作者管理 (Author)

  • 作者信息管理

5. 出版社管理 (Publish)

  • 出版社信息管理

6. 图书分类管理 (Classification)

  • 图书分类管理

7. 借阅管理 (Audit)

  • 图书借阅申请
  • 借阅审批
  • 归还管理
  • 借阅记录

8. 公告管理 (Notice)

  • 公告发布与管理

环境要求

必需软件

  1. Python: 3.7 或更高版本
  2. MySQL: 5.7 或更高版本
  3. Redis: 5.0 或更高版本

环境配置

  1. MySQL 数据库配置

    • 创建数据库: book_manage

    • settings.py 中修改数据库连接信息:

      HOST = '127.0.0.1'
      PORT = '3306'
      DATABASE = 'book_manage'
      USERNAME = 'root'
      PASSWORD = 'your_password'
      
  2. Redis 配置

    • 确保 Redis 服务已启动
    • 默认配置: 127.0.0.1:6379
  3. 前端地址配置

    • settings.py 中修改前端地址:

      VUE_ADDR = 'http://127.0.0.1:5173'  # 开发环境
      

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 配置数据库

确保 MySQL 和 Redis 服务已启动,并根据需要修改 settings.py 中的配置。

3. 数据库迁移

# 初始化迁移(首次运行)
flask db init

# 创建迁移脚本
flask db migrate -m "initial migration"

# 执行迁移
flask db upgrade

4. 启动服务

python app.py

服务将在 http://127.0.0.1:8888 启动(可在 settings.py 中修改端口)。

配置说明

settings.py 主要配置项

配置项 说明 默认值
SERVER_IP 服务监听 IP 127.0.0.1
SERVER_PORT 服务端口 8888
SECRET_KEY Session 加密密钥 *(%#4sxcz(^(#$#8423
JWT_SECRET_KEY JWT 密钥 *(%#4sxcz(^(#$#11223
JWT_ACCESS_TOKEN_EXPIRES Token 有效期 24小时
JWT_REFRESH_TOKEN_EXPIRES 刷新 Token 有效期 7天
UPLOAD_FOLDER 图片上传目录 ./static/images/
EMAIL_SERVER_ADDR 邮件服务器 smtp.qq.com
NOTICE_TYPE 通知类型 0 (关闭)

API 认证

系统使用 JWT (JSON Web Token) 进行身份认证:

  • Token 存储位置: HTTP Header
  • Header 名称: X-Access-Token
  • Token 有效期: 24 小时
  • 刷新 Token 有效期: 7 天

开发说明

代码规范

  • 遵循 PEP 8 代码规范
  • 使用中文注释
  • 模型类位于 apps/<module>/model.py
  • 视图函数位于 apps/<module>/views.py

日志

  • 使用 loguru 进行日志记录
  • 日志文件存储在 logs/ 目录
  • 文件命名格式: YYYY-MM-DD-HH-MM-SS-run.log

常见问题

1. 数据库连接失败

  • 检查 MySQL 服务是否启动
  • 确认 settings.py 中的数据库配置正确
  • 确认数据库 book_manage 已创建

2. Redis 连接失败

  • 检查 Redis 服务是否启动
  • 确认 Redis 端口 6379 未被占用

3. 依赖安装失败

  • 建议使用虚拟环境
  • 尝试升级 pip: pip install --upgrade pip

注意事项

  1. 数据库密码: 请务必修改 settings.py 中的数据库密码,不要使用默认密码
  2. 密钥安全: 生产环境请修改 SECRET_KEYJWT_SECRET_KEY
  3. 端口配置: 修改后端端口后,前端也需要相应修改
  4. 文件上传: 确保 static/images/ 目录有写入权限

代码错误检查

经过分析,项目代码结构清晰,没有发现明显的语法错误。项目使用的依赖版本兼容,各模块功能完整。

许可证

本项目仅供学习和研究使用。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐