文章目录

  • 项目需求
  • 系统建模
    • 活动图
    • 用例图
    • 类图
    • 顺序图
    • 状态图
  • 系统部署说明
    • Requirements
    • 启动系统
  • 展示后修改和优化说明
  • 源码下载

项目需求

系统建模

活动图

普通用户注册后通过前台页面登录,进行浏览、查询、借书、还书等操作。

图书馆管理员通过后台管理界面登录,可直接对数据库进行增删改查操作。

用例图

  1. 首页

    用户可以选择登录或注册。

  2. 个人中心

    用户可以浏览借阅列表,对列表中的书籍进行还书操作。如果逾期,则还需要缴纳罚金。

  3. 借书页面

    用户首先通过输入关键字查询相关书籍,然后对返回列表中的书籍进行借书操作。

  4. 后台管理

    管理员登录后台后可以查看数据库和日志信息,必要时进行增删改查操作。

类图

在 Django 框架下,所有数据库表模型均继承于 Model 类,所有视图逻辑均继承于 View 类。控制器与用户进行交互,并提供模型数据至视图,实现数据与逻辑的解耦。

模型 描述
User 用户表,保存所有的用户信息,包括用户名、姓名、密码(摘要)字段,与 Book 存在多对多关系。
Book 书目表,保存所有的书籍信息,包括书号、书名、作者、出版社、是否可借字段。
Borrow 借阅关系表,保存所有的借阅信息,包括序号、借阅者、所借书籍、借出时间、归还期限字段,其中借阅者和所借书籍分别是参照 User 和 Book 的外键。
Log 日志表,保存所有注册、登录、登出、借书、还书的记录,包括序号、时间、用户、相关书籍、操作字段,其中用户和相关书籍分别是参照 User 和 Book 的外键。
视图 描述
RegisterView 注册视图,获取新用户的信息进行注册。
LoginView 登录视图,获取用户名和密码进行登录,并将当前用户状态存入 Session。
LogoutView 登出视图,清空 Session,登出。
HomeView 个人中心视图,显示用户的借阅列表,并提供还书按钮。
SearchView 查询视图,通过输入关键字进行查询,返回相关的书籍列表,并提供借书按钮。
BorrowView 借书视图,完成借书逻辑。
ReturnView 还书视图,完成还书逻辑,若逾期则给出缴纳罚金提示。

顺序图

  1. 注册

    用户打开注册页面,输入个人信息,RegisterView 获得后向 User 查询该用户是否不存在,若是则在 User 中增添该用户,并将本次注册操作写入 Log,然后返回注册成功信息。

  2. 登录

    用户打开登录页面,输入用户名和密码,LoginView 获得后向 User 查询该用户是否存在,若是则将本次登录操作写入 Log,然后跳转页面到用户的个人中心。HomeView 向 Borrow 查询该用户的借阅信息,并返回借阅列表。

  3. 借书

    用户打开查询界面,输入想要借的书籍的关键字,SearchView 获得后向 Book 查询相关书籍,并返回书籍列表。用户点击列表项目的借书按钮,BorrowView 向 Borrow 中增添一条该用户的借书记录,然后在 Book 中将该书籍设置为不可借,并将本次借书操作写入 Log,最后返回借书成功信息。

  4. 还书

    用户打开个人中心页面,HomeView 向 Borrow 查询该用户的借阅信息,并返回借阅列表。用户点击列表项目的还书按钮,ReturnView 从 Borrow 中删除这条借书记录,然后在 Book 中将该书籍设置为可借,并将本次还书操作写入 Log,最后返回还书成功信息。如果还书逾期,则还将返回缴纳罚金的提示信息。

状态图

系统部署说明

Requirements

  • Python 3.6
  • Django 3
  • Bootstrap 3
  • jQuery 3
  • MySQL 8

启动系统

  1. 在 MySQL 中新建一个名为 library 的数据库,字符集选择 UTF-8

  2. 安装 MySQL 驱动 mysqlclient

    pip install mysqlclient
    
  3. library/library/settings.py 中配置数据库的 USERPASSWORD

    DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'library','USER': '****','PASSWORD': '************','HOST': '127.0.0.1','PORT': '3306',}
    }
    
  4. 进入项目目录下。

    cd ./library
    
  5. 迁移数据库。

    python manage.py makemigrations
    python manage.py migrate
    
  6. 启动系统。

    python manage.py runserver
    
  7. 访问 127.0.0.1:8000 。

展示后修改和优化说明

  1. 增加注册时的合法性检验:学号必须为 8 位(多于 8 位的部分无法输入),密码不能少于 6 位,否则将给出提示。

  2. 实现对书名、作者、出版社三个字段的模糊查询。此外,将有馆藏记录但当前已借出的书籍也显示出来(没有借书按钮),而不是仅展示当前能借的书籍。这样能告诉用户这本书是有的,只是当前已经被别人借走了,可以过一段时间再来查询。

源码下载

源码下载地址:https://download.csdn.net/download/gdutxiaoxu/87631097

基于 Python 的图书借阅管理系统(附报告源码)相关推荐

  1. python图书馆图书借阅管理系统django项目源码含文档ppt

    图书馆图书借阅管理系统能做到的不仅是大大简化管理员的信息管理工作,在提高图书馆管理效率的同时还能缩减开支,更能在数字化的平面网络上将图书馆管理最好的一面展示给客户和潜在客户,而这个系统在带给图书馆管理 ...

  2. 基于java图书借阅管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java图书借阅管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java图书借阅管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 开发语言:Jav ...

  3. 基于Python的二次元头像生成器 课程报告+源码

    资源下载地址:https://download.csdn.net/download/sheziqiong/85718980 目录 二次元头像生成器 2 选题背景 2 实验流程 2 算法简介 2 环境搭 ...

  4. (附源码)计算机毕业设计SSM基于web的图书借阅管理系统

    (附源码)计算机毕业设计SSM基于web的图书借阅管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...

  5. 【基于C#的图书借阅管理系统(ASP.NET)】

    基于C#的图书借阅管理系统 目录 基于C#的图书借阅管理系统 一.数据库设计 数据库代码(SQL Sever) 链接数据库 二.Vs 2022后台代码 1.登录界面代码 2.图书信息界面代码 3.图书 ...

  6. 基于python的图书信息管理系统

    基于python的图书信息管理系统 实验任务和要求 设计并实现一个图书信息管理系统.根据实验要求设计该系统的菜单和交互逻辑,并编码实现增删改查的各项功能. 该系统至少包含以下功能: (1) 根据指定图 ...

  7. 基于ssm的图书借阅管理系统

    开发环境 idea+mysql8.0+jdk1.8 系统简介 本系统实现的是一个图书管理系统,系统分为管理员和读者登录,管理员登录可以管理整个系统,包括公告管理,借阅管理.图书管理.读者管理.类型管理 ...

  8. 基于java汽车4S服务管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java汽车4S服务管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java汽车4S服务管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技 ...

  9. 基于JAVA老年人健康饮食管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA老年人健康饮食管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA老年人健康饮食管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈 ...

最新文章

  1. /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第十次落地时,共经过多少米?第十次反弹多高? */
  2. linux 系统监控和进程管理
  3. 迷你DVD管理器项目
  4. wxWidgets:wxMemoryInputStream类用法
  5. 单片机开发与Linux开发有何不同?
  6. 唏嘘!2019榜单出炉:铁打的Python连续3年第一,它居然跌出前十?
  7. jni c 传递对象到java_JNI将二进制数据从C传递到Java
  8. 【A】超全!深度学习在计算机视觉领域的应用一览
  9. ★LeetCode(784)——字母大小写全排列(JavaScript)
  10. Spring Batch流程介绍
  11. gstreamer插件指南
  12. lbj学习日记 07 函数基础
  13. 微信公众号申请开通微信支付
  14. constant api app
  15. 台风怎么看内存颗粒_普条居然采用南亚A-DIE HR颗粒,光威TYPEα内存条稳超3200MHZ...
  16. 想晋升Android架构师——学习这些核心技术够用吗?
  17. 一个新手学着重装系统之路
  18. Ultra Librarian 的安装和使用
  19. soj 3172 Fisherman (01背包的装满)
  20. Symfony Vue 教程

热门文章

  1. 【Energy Reports期刊发表】2022年能源与环境工程国际会议(CFEEE 2022)
  2. Android动画之逐帧动画FrameAnimation
  3. 算法竞赛入门【码蹄集进阶塔335题】(MT2051-2075)
  4. 为什么说抄代码是学编程的正确打开方式?
  5. 铁路运输系统服务器,铁路运输管理系统
  6. 选择 UTF-8,结束纷争(转载) - 秋阳的软件测试专栏 - IT博客
  7. 基于蒙特卡洛概率潮流计算 在IEEE33节点系统中,由于风光出力的不确定性,利用蒙特卡洛生成风速和光照强度得到出力
  8. 转载:中国电子工程师的悲哀
  9. 我为什么不再玩手机游戏了
  10. 运放-2-放大器的电阻的选择