基于Python Web的学生成绩管理系统–文档

分享一个基于Python web的学生成绩管理系统文档,方便各位毕业学子参考。

项目简介

在学校中,教学是学校的重大职能之一,教学管理也是非常重要的管理活动,而成绩管理作为教育管理的核心之一是尤为重要的。随着时代的变化、科技的日益发展,教学工作逐步信息、科技化,学生成绩管理系统成为了一个教育单位不可缺少的平台,以计算机为工具的学生成绩管理系统也进而取代了传统的成绩管理方式,它的内容对于学校教学的决策者和管理者是至关重要的,它为用户提供充足的信息和快捷的查询手段,课题具有一定的专业综合性和典型性,符合计算机网络技术专业培养目标。

课题目标

课题主要完成的任务是一个基于web网页版的学生成绩管理系统,利用了SQL小型数据库,结合了SQL存储数据、查询数据。本系统分为学生模块和老师模块,学生模块可以查看学生选课信息以及成绩,老师模块可以管理学生成绩的录入与删除,本课题可以培养学生web,flask,SQLite,HTML,CSS,JavaScript等方面的专业知识,可以大幅度的提升学生的开发能力[1,3,4]。

设计思路

开发环境与工具

系统开发主要框架及环境如下:

后端开发语言:Python

后端框架:Flask

数据库交互:Flask_SQLAlchemy

数据库:SQLite

网页显示:HTML,CSS,JavaScript

表2-1 版本选择

环境

版本

Flask

1.1.4

Flask-SQLAlchemy

2.5.1

Flask-WTF

0.15.1

Jinja2

2.11.3

SQLAlchemy

1.4.25

WTForms

2.3.3

Python

3.6.0

Visual Studio Code

1.60.1

SQLite 属于一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 并且其源代码不受版权限制。

Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python 支持程序编程和面向对象编程。在程序编程中重用代码,在面向对象的编程中基于数据和函数使用对象,支持大规模软件开发[2]。

Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站[5]。

Flask-SQLAlchemy是一个Flask扩展,简化了在Flask程序中使用SQLAlchemy的操作。SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy提供了高层ORM,也提供了使用数据库原生SQL的低层功能。

Visual Studio Code(以下简称vscode)是一个轻量且强大的跨平台开源代码编辑器(IDE),支持Windows,OS X和Linux。内置JavaScript、TypeScript和Node.js支持,而且拥有丰富的插件生态系统,可通过安装插件来支持C++、C#、Python、PHP等其他语言。

Jinja2为Flask作者开发的一个Flask模板系统,起初是模仿django模板的一个模板引擎,为Flask提供模板支撑,因为Jinja2模板比较灵活、快速和安全等优点,所以很快就被广泛使用。

Flask-WTF是一个关于表单的扩展库,可以自动生成表单的HTML代码和验证提交的表单数据[7],并且提供跨站请求伪造(Cross-Site Request Forgery)保护的功能,使用起来非常方便[6]。

在Flask内部并没有提供全面的表单验证,所以当我们不借助第三方插件来处理代码的时候代码会显得很混乱,而官方推荐的一个表单验证插件就是WTForms。WTForms是一个支持多种web框架的form组件,主要用于对用户请求数据的进行验证,其验证流程与django中的form表单验证有些许类似。

技术架构

学生成绩管理系统是采用前后端分离的技术实现,其中包括前端模块,后端模块,其中通过页面的点击后端接收到命令进行一系列的渲染,其中通过成绩录入将学生成绩信息保存到SQLite数据库中。后端模块采用Flask的MVT模式,所谓的MVT也就是Model-Template-View,也可以理解为模型、模板、视图。通常是用户通过web浏览器点击某一处向后端服务器发起请求,然后再由这个请求去访问视图函数,视图函数再去调用模型,模型去数据库中查找数据,然后逐级返回,视图函数把返回的数据填充到模板中,最后返回页面上。前端数据的展示是通过flask的Jinja2模板来实现的,具体如下:

数据库操作:

使用SQLAlchemy进行与SQLite数据库的连接,通过页面的查看课程、选课、修改密码、查看成绩等操作,后端程序接收命令进行SQLite数据库的操作。

前端页面显示:

后端Flask定义路由由render_template传输数据到前端代码,前端使用jinja2模板进行接收并渲染页面。

数据请求:

后端使用Flask_ SQLAlchemy的方式进行数据库数据的交互,通过前端页面的点击,接收请求,进入数据库进行数据提取,列如:教师模块中点击界面浏览课程按钮,会进行展示该教师所教课程下的学生信息。

需求分析

系统目标

该系统主要是一个用于学校的的学生成绩管理系统,其中包括管理员老师用户模块和普通学生用户模块,管理员老师用户可使用新增学生、新增课题、登记学生成绩、修改成绩、浏览课程、成绩以及修改密码功能,普通学生用户可使用查看选课信息、退课、查看成绩功能。

功能需求

(1)学生用户:普通学生用户登入自己的账号密码后,可以通过顶端导航的切换功能进行查看该学生的选课信息、还可以进行课程的退课操作,以及查看该学生的成绩。

(2)教师用户:管理员教师用户在登入自己的账号密码后,也是通过顶端导航的切换功能,进行新增学生、新增课题、登记学生成绩、修改成绩、浏览课程、成绩以及修改密码。

系统功能结构图如下图3-1、图3-2:

基于Python Web的学生成绩管理系统--文档

图3-1学生模块结构图

基于Python Web的学生成绩管理系统--文档

图3-2老师模块结构图

性能需求

(1)页面渲染:使用Jinja2模板进行页面的渲染,相对Template来说,Jinja2更加灵活,因为它提供了控制结构,表达式和继承等。相对Mako来说,Jinja2有控制结构,不允许在模板中编写太多的业务逻辑,相对Django模板来说,Jinja2性能更好,页面的DOM元素在五秒内容即可全部加载完毕,并且正常所有浏览器。

(2)数据库:使用SQLite3,因为SQLite3不需要安装,不需要配置,不需要启动、关闭也不需要配置数据库实例,当系统崩溃后无需做任何恢复操作,下次使用数据库时自动恢复。

(3))数据传输:使用Flask_SQLAlchemy进行数据传输,因为SQLALchemy 实际上是对数据库的抽象,可以让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来进行操作数据库,从而在舍弃一些性能开销的同时,换来的是开发效率的较大提升SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作[8]。

(4)页面流畅:在页面进行操作跳转的时候不会出现卡顿现象,当进行管理员或普通用户登入等容易操作的时候,系统都会及时的做出反应。

由于篇幅受限,详细Word文档,如下:

https://download.csdn.net/download/yw1990128/86954004

Original: https://blog.csdn.net/yw1990128/article/details/127805995
Author: zhimajiazu
Title: 基于Python Web的学生成绩管理系统–文档

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/744342/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球