【毕业设计】 基于Django的图书管理系统

川长思鸟来 2024-03-30 11:21 192阅读 0赞

文章目录

  • 1 前言
  • 2 背景意义
  • 3 功能需求
  • 4 技术栈
  • 5 实现效果
  • 6 项目架构
  • 7 数据库表设计
    • 7.1 出版社信息表
    • 7.2 图书信息表
    • 7.3 作者信息表
    • 7.4 用户信息表
  • 8 部分代码实现讲解
    • 8.1 出版社新增
    • 8.2 作者管理功能实现
  • 9 最后

1 前言

Hi,大家好,学长今天向大家介绍 一个python web项目

基于Django的图书管理系统

大家可用于 毕业设计

2 背景意义

根据各图书销售门店的调查可知,随着销售规模的不断壮大,经营的图书品种、数量也逐渐增多。在图书销售不断发展的同时,其常年采用的传统的人工方式管理暴露了一些问题。例如,查找读者借阅的某本图书的具体详细信息需要靠人工记忆在书海中苦苦查找,由于图书储存量大,很难准确定位图书的具体位置,因此每天都要浪费大量宝贵的时间资源。为提高工作效率,同时摆脱图书管理人员在工作中出现的种种弊端,现委托某单位开发一个图书管理系统。

3 功能需求

系统主要是管理员对图书信息和出版社进行管理。本系统需要有出版社管理、图书管理、作者管理、统计等功能,能将相关信息从数据库中添加修改删除并且利用查询将相关信息显示出来。数据要求有自动更新功能,能显示最新的结果。根据学校图书馆管理系统的特点,可以将其分为图书信息管理,出版社管理,作者管理,系统管理等4个部分,其中各个部分及其包括的具体功能模块如图所示。

在这里插入图片描述

4 技术栈

  • 服务端:Python 3.8
  • Web框架:Django 3.2
  • 数据库:MySQL mysql-8.0.13-winx64
  • 前端: Bootstrap4
  • IDE: Pycharm

5 实现效果

各模块功能页面

出版社管理, 列表显示
在这里插入图片描述
新增出版社

在这里插入图片描述

编辑出版社:

在这里插入图片描述

作者管理, 列表显示:
在这里插入图片描述

新增作者:
在这里插入图片描述

登录页面:
在这里插入图片描述

注册页面:
在这里插入图片描述

6 项目架构

在这里插入图片描述

7 数据库表设计

结合实际情况及对用户需求的分析,图书管理系统bms数据库主要包含如下表所示的4个数据表。

7.1 出版社信息表

在这里插入图片描述

7.2 图书信息表

在这里插入图片描述

7.3 作者信息表

在这里插入图片描述

7.4 用户信息表

在这里插入图片描述

8 部分代码实现讲解

8.1 出版社新增

创建新增出版社视图函数

  1. # 添加出版社
  2. def add_publisher(request):
  3. if request.method == 'POST':
  4. new_publisher_name = request.POST.get('name')
  5. new_publisher_addr = request.POST.get('addr')
  6. models.Publisher.objects.create(name=new_publisher_name, addr=new_publisher_addr)
  7. return redirect('/pub_list/')
  8. return render(request, 'pub_add.html')

修改ulrs.py 映射关系

  1. urlpatterns = [
  2. path('admin/', admin.site.urls),
  3. url(r'^pub_list/', views.publisher_list), # 出版社列表
  4. url(r'^add_pub/', views.add_publisher), # 新增出版社
  5. ]

新建pub_add.html页面用于新增出版社

  1. <div class="col-md-10">
  2. <div class="content-box-large">
  3. <div class="panel-heading">
  4. <div class="panel-title">新增出版社</div>
  5. </div>
  6. <div class="panel-body">
  7. <form class="form-horizontal" role="form" action="/add_pub/" method="post">
  8. {
  9. % csrf_token %}
  10. <div class="form-group">
  11. <label for="inputEmail3" class="col-sm-2 control-label">出版社名称</label>
  12. <div class="col-sm-10">
  13. <input class="form-control" id="inputEmail3" placeholder="出版社名称" name="name">
  14. </div>
  15. </div>
  16. <div class="form-group">
  17. <label class="col-sm-2 control-label">出版社地址</label>
  18. <div class="col-sm-10">
  19. <textarea class="form-control" placeholder="出版社地址" rows="3" name="addr"></textarea>
  20. </div>
  21. </div>
  22. <div class="form-group">
  23. <div class="col-sm-offset-2 col-sm-10">
  24. <button type="submit" class="btn btn-primary">保存</button>
  25. <button type="submit" formmethod="get" formaction="/pub_list" class="btn btn-default">返回</button>
  26. </div>
  27. </div>
  28. </form>
  29. </div>
  30. </div>
  31. </div>

8.2 作者管理功能实现

参照出版社管理最终实现代码和页面展示如下:

创建新增,展示,修改,删除作者视图函数

  1. # 作者的列表
  2. def author_list(request):
  3. author = models.Author.objects.all()
  4. return render(request, 'auth_list.html', {'author_list': author})
  5. # 添加作者
  6. def add_author(request):
  7. if request.method == 'POST':
  8. new_author_name = request.POST.get('name')
  9. new_author_sex = request.POST.get('sex')
  10. new_author_age = request.POST.get('age')
  11. new_author_tel = request.POST.get('tel')
  12. models.Author.objects.create(name=new_author_name, sex=new_author_sex, age=new_author_age, tel=new_author_tel)
  13. return redirect('/author_list/')
  14. return render(request, 'author_add.html')
  15. # 删除作者
  16. def drop_author(request):
  17. drop_id = request.GET.get('id')
  18. drop_obj = models.Author.objects.get(id=drop_id)
  19. drop_obj.delete()
  20. return redirect('/author_list/')
  21. # 修改作者
  22. def edit_author(request):
  23. if request.method == 'POST':
  24. edit_id = request.GET.get('id')
  25. edit_obj = models.Author.objects.get(id=edit_id)
  26. new_author_name = request.POST.get('edit_name')
  27. new_author_sex = request.POST.get('edit_sex')
  28. new_author_age = request.POST.get('edit_age')
  29. new_author_tel = request.POST.get('edit_tel')
  30. new_book_id = request.POST.getlist('book_id')
  31. edit_obj.name = new_author_name
  32. edit_obj.sex = new_author_sex
  33. edit_obj.age = new_author_age
  34. edit_obj.tel= new_author_tel
  35. edit_obj.book.set(new_book_id)
  36. edit_obj.save()
  37. return redirect('/author_list/')
  38. edit_id = request.GET.get('id')
  39. edit_obj = models.Author.objects.get(id=edit_id)
  40. all_book = models.Book.objects.all()
  41. return render(request, 'auth_edit.html', {
  42. 'author': edit_obj,
  43. 'book_list': all_book
  44. })

修改ulrs.py 映射关系

  1. urlpatterns = [
  2. path('admin/', admin.site.urls),
  3. url(r'^$', views.publisher_list),
  4. url(r'^pub_list/', views.publisher_list), # 出版社列表
  5. url(r'^add_pub/', views.add_publisher), # 新增出版社
  6. url(r'^edit_pub/', views.edit_publisher), # 编辑出版社
  7. url(r'^drop_pub/', views.drop_publisher), # 删除出版社
  8. url(r'^author_list/', views.author_list), # 作者列表
  9. url(r'^add_author/', views.add_author), # 新增作者
  10. url(r'^drop_author/', views.drop_author), # 删除作者
  11. url(r'^edit_author/', views.edit_author), # 编辑作者
  12. ]

9 最后

发表评论

表情:
评论列表 (有 0 条评论,192人围观)

还没有评论,来说两句吧...

相关阅读

    相关 基于Django图书交易系统

    摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,图书交易系统也不例外,但目前国内的有些公司仍然都使用人工管理,图书销量越来越大,同时信息量也越来越庞大,人工管理