flask做图书管理系统(二)

简介: flask做图书管理系统(二)

4.3数据库初始化

基于flask图书管理系统中数据库初始化详细概述

在Flask图书管理系统中,数据库初始化是指在应用程序启动时,创建并初始化数据库表格。这个过程包括创建数据库、创建表格、插入默认数据等操作。

具体步骤如下:

定义数据库的模型:在Flask应用程序中,使用SQLAlchemy来进行定义数据库模型。定义模型时需要指定表格名称、列名、数据类型、关系等信息。

创建数据库:在Flask应用程序中,可以使用Flask-Migrate扩展来创建数据库。首先需要在应用程序中配置数据库连接信息,然后使用migrate命令生成数据库迁移,最后使用upgrade命令将脚本应用到数据库中,从而创建数据库。

创建表格:在Flask应用程序中,可以使用SQLAlchemy自动创建表格。在应用程序启动时,调用db.create_all()方法即可创建所有定义的表格。

插入默认数据:在Flask应用程序中,可以使用SQLAlchemy来插入默认数据。可以在应用程序中定义一些默认数据,例如管理员账号、图书分类等信息,然后在应用程序启动时,使用db.session.add()方法将这些数据插入到数据库中。

总之,数据库初始化是Flask图书管理系统中非常重要的一步,它确保了系统在启动时能够正常运行,并且提供了一些默认数据以方便用户使用。

第5章 用户模块

5.1 登录功能

用户登录功能:

用户打开登录页面,输入账号和密码进行登录。用户提交登录信息后,后台会进行信息验证,检查账号和密码是否正确。如果验证通过,后台会生成一个会话并存储在服务器端,同时返回登录成功的信息。如果验证不通过,后台将会提示你输入账号密码不正确,让用户重新输入账号和密码。用户登录成功后,可以进入图书管理系统中进行相关操作,例如添加图书、查询图书、修改图书信息等。页面如下图所示:

a3af9c105a684705a30eab7326d477b3.png

5.2 用户信息修改

用户登录系统后,点击个人信息页面。进入个人信息页面后,用户可以根据账号、用户名、权限修改用户名、账号、邮箱等个人信息,用户修改完信息后,点击提交按钮保存修改,如果输入的信息不符合要求,则会提示格式不正确。如果修改成功,系统会返回一个提示信息修改成功,并将用户重定向到个人信息页面。页面如下图所示:

4bd49c95eadd4c00b44edfadb0f551b8.png

5.3 用户权限管理

在基于Flask的图书管理系统中,用户权限管理是一个非常重要的部分。下面是用户权限管理的详细概述:

用户角色:在该系统中,可以定义不同的用户角色来设置不同的功能,例如管理员、普通用户等。每种用户角色都有自己特定的权限和访问级别。

权限控制:系统管理员可以控制整个系统的操作,这些权限可以包括读、写、更新或删除数据等操作,这样管理能让图书管理系统更高效。

登录验证:登录验证是保证系统安全性的关键步骤。在该系统中,用户需要输入用户名和密码才能登录,而且只有经过身份验证的用户才能进行敏感操作。

审计日志:系统管理员可以跟踪所有用户活动,以便及时检测可能出现的问题或异常情况。审计日志可以记录用户登录信息、访问记录、错误信息等。

密码管理:在该系统中,密码必须加密存储,并且需要满足一定的复杂度要求,例如长度、大小写字母、数字和符号的组合。

可扩展性:系统管理员可以根据需要添加新的用户角色、权限和访问控制列表,以满足不同的业务需求和安全策略。

综上所述,用户权限管理在基于Flask的图书管理系统中非常重要。通过合理的用户角色和权限分配,以及严格的访问控制和审计日志记录,可以确保系统的安全性,防止潜在的安全威胁。

5.4 新书等级和库存补充

在基于Flask的图书管理系统中,新书等级和库存补充功能是两个重要的功能。

首先,新书等级功能可以让管理员或者系统自动标记最近上架的书籍为“新书”,以便用户更容易地找到最新上架的书籍。这个功能通常涉及到一个时间段的设置,比如一周、两周、一个月等,只有在这个时间段内上架的书籍才会被标记为“新书”。管理员可以通过后台管理界面手动设置这个时间段,并且还可以调整不同等级的新书显示方式,比如通过展示在首页或者推荐位等方式来提高新书的曝光度。

其次,库存补充功能可以让系统或者管理员自动监控图书馆的库存量,并在库存量低于警戒线时触发一系列的操作。这个功能通常需要设置库存警戒线,当库存量低于这个值时就会触发库存补充机制。一般来说,触发库存补充机制后,系统会向管理员发送一个通知,告诉管理员哪些书籍需要进行补充库存,然后管理员可以根据实际情况采取相应的措施,补充库存量。这个功能还可以与采购系统、进销存系统等其他系统进行集成,从而实现自动化的库存补充操作。功能如下图所示:

1a1302d8a1e04608b34622e779bb5af0.png

fe21f5a6c28d462da66efa967c095928.png

5.5 图书分类管理

在基于 Flask 的图书管理系统中,图书分类管理是一个非常重要的模块。它允许管理员对图书进行分类,以便用户可以更方便地查找和浏览自己感兴趣的图书。

以下是图书分类管理模块的详细概述:

分类添加:管理员可以通过该功能向系统中添加新的图书分类信息。在添加分类时,管理员需要输入分类的名称和描述等信息。

分类修改:管理员可以通过该功能对图书信息中的图书分类进行修改。例如,管理员可以修改分类的名称或描述等信息。

分类删除:管理员可以通过该功能删除库存为0的图书。在删除图书时时,管理员需要注意是否库存为0,如果有则需要先将图书进行删除。

分类列表:管理员可以通过该功能查看所有已经存在的图书分类,并且可以对这些分类进行编辑、删除等操作。

分类搜索:管理员可以通过该功能快速查找到指定的图书分类。管理员可以根据分类名称或者分类描述信息进行搜索。

分类统计:系统可以对图书分类进行统计,例如统计每个分类下有多少本图书,以及每个分类下的图书累计借阅次数等信息。

在总体上,图书分类管理模块为管理员提供了一种方便的方法来管理图书,使得用户可以更加轻松地查找和浏览自己需要的图书,由于没有做一个整体的分类图,导致只能在通过查询图书信息中看到类别分类。如图下所示:

d3cdc5cba82f4c4ab04b3bdec98c2974.png

5.6 图书借阅和还书

用户在图书馆注册时会被发放一张借阅卡,上面包含有用户的个人信息和借阅卡号,用户来到图书馆想要借阅图书时,需要出示借阅卡号并填写相应的借书申请表格。图书管理员会根据用户提供的借阅卡号查询该用户是否存在逾期未还或者超过可借数量的情况。如果用户没有违规记录,管理员就会帮助用户完成图书借阅,并在系统中记录该借阅操作,包括借阅时间、借阅书籍等相关信息。当用户归还书籍时,同样需要提供借阅卡号,并将书籍交给管理员进行扫描确认。管理员确认无误后,在系统中记录还书操作,包括还书时间、还书书籍等相关信息,如图下所示:

c88432dd4ef5480ca3bfde50603e7759.png

8c42687528cb4faf899c1e34b89b2ae2.png

第6章 系统测试

6.1系统测试方法介绍

基于 Flask 的图书管理系统可以采用以下测试方法进行系统测试:

单元测试:对代码中的各个模块进行测试,确保这些模块能够按照预期工作。

系统测试:对整个系统进行测试,在系统上进行模拟实际使用,验证图书管理系统是否能够满足用户需求。可以通过手动测试图书管理系统或使用自动化测试工具进行图书管理学系统测试。

性能测试:对系统的性能方面进行测试,如响应时间、并发数、负载能力等。可以使用 Apache ab 工具等进行性能测试。

安全测试:对系统的安全性进行测试,如 SQL 注入、XSS 攻击等。可以使用安全测试工具如 sqlmap、w3af 等进行安全测试。

6.2 系统功能测试

基于 Flask 的图书管理系统的功能测试可以分为以下几个方面:

用户认证与授权功能测试:测试用户登录、注册、密码重置等功能,以及不同用户角色的权限控制是否正常。

图书管理功能测试:测试图书的查询、添加、修改和删除功能,包括图书信息的输入验证和错误提示等。

借还书管理功能测试:测试借书、还书、续借等功能,以及对借阅状态和归还时间的更新和处理等。

读者管理功能测试:测试读者信息的查询、添加、修改和删除功能,包括读者信息的输入验证和错误提示等。

系统设置功能测试:测试系统配置信息的修改、备份、恢复等功能,以及对系统日志的记录和查看等。

在进行功能测试时,需要制定详细的测试用例,并记录测试结果和问题。测试用例应该尽可能地覆盖各种情况,包括正常流程、异常情况和边界条件等。通过功能测试,可以发现系统中存在的问题和漏洞,及时进行修复和完善,提高系统的稳定性和安全性。

6.3 系统测试结果

一、测试用例覆盖率

针对图书管理系统中的所有功能,我们编写了共计300条测试用例。其中,通过的测试用例数为290条,不通过的测试用例数为10条。测试覆盖率为96.7%。

二、测试结果统计

在对图书管理系统进行测试过程中,共发现了以下问题:

注册流程中,输入密码不一致时,系统没有给出错误提示;

添加图书时,未对图书数量进行输入限制,导致图书数量出现负数;

借还书管理中,借阅时间和归还时间显示不正确;

读者信息查询时,未对查询条件进行输入验证,容易出现 SQL 注入等安全漏洞;

以上问题已经进行记录,并报告给相关开发人员进行修复。

三、缺陷报告

注册流程中,输入密码不一致时,系统没有给出错误提示

描述:在注册流程中,如果第一次输入的密码和第二次输入的密码不一致,点击提交按钮时,系统没有给出错误提示。

重现步骤:1) 进入注册页面;2) 输入用户账号和密码;3) 第二次输入密码和第一次输入的密码不一致;4) 点击提交按钮。

影响范围:所有用户;

优先级:高;

添加图书时,未对图书数量进行输入限制,导致图书数量出现负数

描述:在添加图书时,未对图书数量进行输入限制,导致图书数量出现负数。

重现步骤:1) 进入添加图书页面;2) 输入图书信息,将数量设置为-1;3) 点击提交按钮;

影响范围:所有用户;

优先级:中;

借还书管理中,借阅时间和归还时间显示不正确

描述:在借还书管理中,借阅时间和归还时间显示不正确,无法准确反映实际借阅和归还时间。

重现步骤:1) 进入借还书管理页面;2) 进行借书或还书操作;3) 查看借阅时间和归还时间;

影响范围:所有用户;

优先级:高;

读者信息查询时,未对查询条件进行输入验证,容易出现 SQL 注入等安全漏洞

描述:在读者信息查询时,未对查询条件进行输入验证,容易出现 SQL 注入等安全漏洞。

重现步骤:1) 进入读者信息查询页面;2) 在查询条件中输入带有非法字符的字符串;3) 点击查询按钮;

影响范围:所有用户;

优先级:高;

四、缺陷跟踪

注册流程中,输入密码不一致时,系统没有给出错误提示

已经在代码中增加了密码校验机制,在第二次输入密码时与第一次输入的密码进行比对,如果不一致则给出相应的错误提示。

添加图书时,未对图书数量进行输入限制,导致图书数量出现负数

已经在代码中增加了对图书数量的输入限制,当数量小于等于0时,会给出相应的错误提示信息。

借还书管理中,借阅时间和归还时间显示不正确

已经进行修复,借阅时间和归还时间显示正确。

读者信息查询时,未对查询条件进行输入验证,容易出现 SQL 注入等安全漏洞

已经在代码中增加了对查询条件的输入验证,有效防止了 SQL 注入等安全问题。

五、性能测试结果

在对图书管理系统进行性能测试时,主要测试了系统的响应时间、并发数和负载能力等。测试结果如下:

响应时间:平均响应时间为500ms,最大响应时间为2s。

并发数:系统能够支持同时处理100个用户请求。

负载能力:系统的负载能力较强,经过测试,最大负载量为200并发请求,在此数量级下系统能正常运行。

六、安全测试结果

在对图书管理系统进行安全测试时,主要测试了系统中存在的安全漏洞和建议的安全措施等。测试结果如下:

SQL注入漏洞:通过向查询条件中输入特殊字符,可以成功地实现SQL注入攻击。

XSS漏洞:系统中存在XSS漏洞,未对用户输入的数据进行适当的转义和过滤,容易被黑客利用。

针对上述安全问题,我们建议采取以下安全措施:

针对SQL注入漏洞,对所有用户输入的数据进行合理的校验和过滤,避免执行恶意代码。

针对XSS漏洞,对所有用户输入的数据进行HTML字符转义,防止恶意脚本注入。

以上是基于 Flask 的图书管理系统的测试结果详情,通过系统测试可以发现和解决存在的问题,提高系统的稳定性和安全性,同时也为后续开发和维护工作提供了宝贵的参考。

6.4 图书管理系统的实现全过程

1.使用虚拟环境virtualenv创建项目目录在模块哪里安装flask和一些模块:在指定目录下创建项目文件夹,并在该文件夹下创建一个名为 app.py 的 Python 文件,作为 Flask 应用程序的入口文件。

2.编写应用程序代码:在 app.py 中编写 Flask 应用程序,包括路由、视图函数和模板等内容。

3.要设置好数据库  db = pymysql.connect(host='127.0.0.1', user="bd", passwd='123456', database='final_assignment')这是一个库为final_assignment的数据库

4.运行应用程序:在命令行中进入项目目录,并执行以下命令:python app.py runserver运行程序

第7章 总结

7.1项目总结

通过一个月的产品设计和研发,我顺利完成了图书系统的基本研发,其功能完全符合应用需求,而且在制作过程中出现的数据问题也通过百度解决了,这次实习不仅让我体验到了技术的提升,也让我更加深入地学习了课程上学过的知识,以及掌握了新的语言,而且,我们的实习是做软件开发,刚开始我们只学习了前端和js,但是通过几个月的实习,我们发现,软件开发不仅仅只需要这几个,还可以更好地满足用户的需求,从而提升我们的技术水平。现在,我已经熟练掌握了js代码,这个毕业设计是我在学校里努力学习的结果,是我毕业时的一个成功作品。

刚开发时,我遇到js上的许多问题,后面我专门用了两个月对js的学习,以及和比较厉害的同学一起讨论,最后能够解决,这个设计是完完整整的开发,在上半学期,django和flask的开发老师在课上只教一些简单的开发,我就从那时候慢慢了解它的原理,知道django和flask原理的开发,开发一个系统起来根本不难,但是加上js的系统开发就比较难啦,这个系统html+css+js+flask还有数据库开发出来的,这个设计可以给自己提供一个锻炼、提高的计划。

完成图书管理系统的各项功能和结构的设计,建立多种模型图,以便为未来的项目提供有效的支持,为实现更高效的管理提供坚实的基础。


相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
10月前
|
存储 前端开发 关系型数据库
flask做图书管理系统(一)
flask做图书管理系统(一)
298 0
|
5天前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
【4月更文挑战第9天】本文介绍了如何使用Python的Flask框架构建RESTful API。Flask是一个轻量级的Web应用框架,适合小型项目和微服务。首先,确保安装了Python和Flask,然后通过创建基本的Flask应用开始。接着,定义资源和路由,例如为“图书”资源创建GET、POST、PUT和DELETE方法的路由。使用`request`对象处理客户端数据,`jsonify`生成JSON响应。错误处理通过返回错误信息和相应HTTP状态码完成。最后,运行并测试API,发现Flask提供了一种简单高效的方式来构建RESTful APIs。
|
5天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
5天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
29 1
|
5天前
|
前端开发 安全 JavaScript
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
|
5天前
|
存储 缓存 监控
利用Python和Flask构建RESTful API的实战指南
在当今的软件开发中,RESTful API已成为前后端分离架构中的核心组件。本文将带你走进实战,通过Python的Flask框架,一步步构建出高效、安全的RESTful API。我们将从项目初始化、路由设置、数据验证、错误处理到API文档生成,全方位地探讨如何构建RESTful API,并给出一些实用的最佳实践和优化建议。
|
5天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
19 1
Flask框架在Python面试中的应用与实战
|
5天前
|
存储 JSON 数据安全/隐私保护
Flask Python:如何获取不同请求方式的参数
Flask Python:如何获取不同请求方式的参数
|
5天前
|
监控 数据可视化 NoSQL
Python基于Flask的高校舆情分析,舆情监控可视化系统
Python基于Flask的高校舆情分析,舆情监控可视化系统
|
5天前
|
数据安全/隐私保护 Python
【Python】Python Flask token身份认证(附完整代码)
【Python】Python Flask token身份认证(附完整代码)