基于Python+Flask 的在线考试系统设计与实现

作者: 杨硕 史亚平

基于Python+Flask 的在线考试系统设计与实现0

摘要:随着互联网技术的不断发展与迭代,万物互联的时代逐步开启。学校教育体系和设备正朝着更加便捷和智能的方向发展,在线考试也必将成学校未来的主流的考核方式。在线考试系统是一种智能化、网络化的考核模式,它可以节省更多的人力、物力以及提高考试的效率。该系统以Python语言为基础,通过Flask框架的MTV(Model View Template)模式,结合前端框架Bootstrap和Jquery技术实现,实现了注册、登录、密码修改、题库管理、管理员管理、主观题自动阅卷以及学生成绩的分析与可视化,使得教师和学生本人能够直观地观测到学习情况,以便做出更好的调整,同时对预防作弊等问题提出解决方案。

关键词:教育;在线考试系统;Python;Flask;自动阅卷

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2025)02-0047-03 开放科学(资源服务) 标识码(OSID) :

0 引言

考试作为检测学生学习成果的重要方式之一。线上考试系统能够代替传统的纸质考核方式,不仅能够节省大量的人力和物力而且能够更加客观公正地阅卷。相对于纸质试卷的批阅,机器评阅的速度更快且出错率极小,能够减少大量重复且烦琐的工作[1]。

本次研究以Python语言为基础,通过Flask框架的MTV(Model View Template) 模式,结合前端框架Bootstrap 和Jquery技术设计的一套在线考试系统[2]。系统整体架构如图1所示。

研究内容:在线考试系统的角色有老师和学生。主要实现功能为:1)账号管理包括但不限于登录、注册、密码修改;2)设计及上传题目和参考答案,题型包括选择、简答、论文等;3)限时答题;4)客观题自动阅卷,主观题人工阅卷;5)查看并下载批阅后的试卷及参考答案;6)成绩可视化分析。

1 技术概述

1.1 Flask 框架

Flask是一个轻量级的Python Web框架,它提供了简单而灵活的方式来构建Web应用程序。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎能够快速构建Web应用程序。Flask框架采用MTV的模式,即Model(模型) 、View(视图) 、Template(模板) 来构建系统[3](图2) 。使用该模式能将数据、业务逻辑和界面展示分离,使得各部分可以独立进行修改和优化,提高了开发效率。由于三者之间职责明确,当需要进行修改或升级时,开发者可以更加聚焦于特定的模块,从而降低了维护的难度和成本。模型、模板和视图都被视为独立的组件,可以在多个项目中重复使用,提高代码的复用[4]。由于数据、网页和后台逻辑之间的互相解耦,某一部分的错误不容易影响到其他部分,从而降低了整体的错误风险。

1.2 Bootstrap 框架

Bootstrap是一个流行的前端框架,它提供了一套用于构建网站和Web应用界面的HTML、CSS和JavaS⁃cript 组件[5]。Bootstrap 提供了响应式的网页设计框架,可以确保网站在不同设备上(如桌面电脑、平板电脑、智能手机) 都能够良好地展示和使用。它同样包含了大量常用的界面组件,如导航栏、按钮、表单、模态框、轮播图等,开发者可以直接使用这些组件来构建网页[6]。这样能够提高开发者的开发效率。

2 需求分析与数据库总体设计

2.1 功能需求分析

此系统分为五大主要的功能模块,系统功能结构如图3所示。

2.1.1 账号管理

此模块的功能包括学生账号管理和教师账号管理。教师和学生能够对自己的账号信息进行修改操作且教师能查看及修改学生的账号信息。

2.1.2 题库管理

此模块的功能包括上传、修改、删除、查看试题及参考答案,管理试题。学生无此权限。

2.1.3 考试管理

此模块的功能包括智能组卷、发布考试信息、修改考试时间、发布试卷等。

2.1.4 成绩管理

此模块的功能包括学生可查看个人历次考试成绩且教师能查看及修改所属学生的成绩,并对考试成绩进行可视化分析与汇总。

2.1.5 试卷管理

此模块的功能包括学生和教师能够下载和查看某一次的答题情况(包括参考答案) 。

2.2 数据库整体设计

2.2.1 数据库设计

在线考试系统数据库的概念结构主要分为7个实体,包括学生、教师、选择题、简答题、论文题、试卷、成绩。学生实体的属性有学号、姓名、性别、学院、专业、班级、密码、联系方式;教师实体的属性有工号、姓名、性别、学院、密码、联系方式;选择题实体的属性有章节、题号、科目、题目、ABCD选项、参考答案;论文题实体的属性有章节、题号、科目、题目、参考答案;试卷实体的属性有试卷编号、组卷教师工号、考试科目、考试时间;成绩实体的属性有学号、姓名、试卷编号、科目、分数。

2.2.2 表关系

上述七个实体中表与表之间的关系:对于教师表(表1) 和学生表,在一个班级中有多个教师且有多个学生,因此教师表和学生表为n∶m;对于学生表和成绩表,一个学生可以参加多门考试,会有多个成绩,因此学生表和成绩表为1∶n;对于教师表和试卷表,一个老师可以发布多一套试卷,因此教师表和试卷表为1∶n;对于试卷表和题库表,一套试卷包含多道题,题库里的每道题也可出现在多个试卷中,因此试卷表和题库表为n∶m。

3 系统功能实现

3.1 学生端

3.1.1 账号注册及登录

在账号的注册及登录界面,学生可根据已经注册的账号及密码进行登录[7];如若账号或密码输入错误则会进行相应提示;如若未进行注册,可通过点击注册按钮进入账号注册界面填写相关信息进行注册;如若忘记密码,学生可通过点击忘记密码按钮跳转至账号密码修改界面进行密码的修改,注册及修改成功后会自动跳转到账号登录界面进行账号的登录[8]。重置密码功能能够解决部分学生记不住密码的问题,使得整个系统更加便捷。

3.1.2 个人信息

学生可查看和修改个人的基本信息,例如学生的姓名、性别、学院、专业、班级、密码、联系方式以及注销账号。可以通过直接修改输入框中的信息对学生的个人信息进行修改。能够灵活地变更学生信息,便于学生对自己基本信息的管理。

3.1.3 在线考试

学生可通过教师发布的考试入口开始考试。考试界面,如图4所示。

在考试界面的左下角,添加有考试倒计时,当倒计时结束时,系统自动提交试卷。左侧部分是题目序号,右侧部分是对应的每道题目,可通过点击左侧题目的序号使得右侧显示相应的题目。如若存在未作答的题目,提交按钮不生效,在作答完所有题目后点击提交按钮或者倒计时结束之后将自动提交结束考试。自动提交,避免了学生忘记提交的情况发生。

3.1.4 试卷查看

学生可通过试卷查看界面,点击查看所有已作答的试卷信息,包括试卷的参考答案、解析,以及学生书写的答案和考试成绩。可以通过导出功能,将试卷信息以pdf文件的方式导出。在已考试卷的列表清单中,每一条信息后面有查看和下载按钮,通过此按钮,可以查看学生已考试卷的答题情况,通过下载按钮,可以将已考试卷通过pdf文件下载到本地中。

3.2 教师端

3.2.1 账号注册及登录

在账号登录界面,教师可通过工号和密码进行登录,根据已经注册的账号及密码进行登录;如若账号或密码输入错误则会进行相应提示;如若未进行注册,可通过点击注册按钮进入账号注册界面填写相关信息进行注册;如若忘记密码,教师可通过点击忘记密码按钮跳转至账号密码修改界面进行密码的修改,注册及修改后会自动跳转到账号登录界面进行账号的登录。

3.2.2 信息管理

信息管理可分为教师信息管理和学生信息管理。教师信息管理主要是教师管理个人信息,如工号、密码、姓名、性别、手机号码等信息。学生信息管理主要是管理学生的个人信息,例如删除某个学生信息、修改某个学生的信息等。

3.2.3 题库构建

教师可以通过题库构建界面分类的、有选择性地向题库加入不同类型的试题,教师同样可以检索题库中的信息以及以pdf文件的方式导出筛选过后的题目或者题库中所有的题目信息。

3.2.4 智能组卷

教师能够通过此界面进行智能组卷,提前选择各个章节题目所占的比重,以及题目的类型,随机从试题库中抽取一定数量的题目组成试卷,并将生成的试卷分发到学生端,学生可通过接口加载试卷并进行考试。

3.2.5 成绩中心

成绩中心汇总了所有学生所有考试的成绩,以不同场次的考试分类展示。学生的考试成绩,能够以Excel文件从成绩中心保存到本地。可对学生的学习情况有一个全面的了解,能够提升教师的关注效率,帮助教师,更快更准确地了解到学生成绩的基本情况[9]。

在成绩中心,根据学生考试的成绩,生成学生的单科成绩波动的折线图,通过折线图,能准确了解学生个人的学习情况。也可通过饼图的方式展示出整个班级不同分数段的学生人数,通过不同的颜色来区分不同分数段的学生及占比,教师能通过学生个人成绩的折线图和全班成绩的分布图,了解和分析学生个人及班级整体的掌握情况,以便教师做出教学调整。更加高效地教导学生。

3.2.5 阅卷

教师可通过阅卷界面对某一次考试的主观题进行批阅。教通过查看学生已考试卷列表选择出要批阅的试卷,然后再对学生所答的题目进行批阅并给出得分[10]。

4 结束语

本系统以Flask框架构建的在线考试系统,在一定的程度上学生能够在不限制场地,不限制时间实现在线考试、查看考卷和打印考卷。对于教师,该系统可以通过系统进行考卷发布、在线批改试卷、发布成绩、查看学生成绩、导入试题和自动化阅卷等功能。此系统能够极大地减少教师的工作量以及更好地管理学生以及对学生的作业进行考核。提高教师的工作效率[11]。同时能极大地抑制和减少作弊等情况的出现,能极大程度地保证公平公正的原则。

参考文献:

[1] 范路桥,段班祥,高洁,等.基于Python+Flask+MySQL的知宝问答系统[J].现代计算机,2022,28(22):93-98.

[2] 翟惠良,张晓艺.基于MVC结构的油罐容量计算系统设计[J].信息技术与信息化,2016(7):29-33.

[3] 高思洋,孙秋灼,牛盼盼.基于Python的在线考试系统设计与实现[J].信息与电脑,2023,35(5):124-127.

[4] 范路桥,高洁,段班祥.基于Python+Flask+ECharts的国内热门旅游景点数据可视化系统[J].现代电子技术,2023,46(9):126-130.

[5] 何佳颖,熊峰,潘永平,等.基于程序题的自动批改系统设计[J].信息技术与信息化,2022(4):54-57.

[6] 董付国.Python程序设计实用教程[M].北京:北京邮电大学出版社,2020.

[7] 牛作东,李捍东.基于Python与flask工具搭建可高效开发的实用型MVC框架[J].计算机应用与软件,2019,36(7):21-25.

[8] 刘晓光.基于MySQL的分布式SQL数据库的设计与实现[D].北京:中国科学院大学,2016.

[9] 田宗军,王桂峰.基于B/S模式的在线考试系统[J].计算机与信息技术,2009(3):90-91.

[10] 肖洋,王骁,刘凤新.在线考试组卷算法研究[J].北京化工大学学报(自然科学版),2006,33(4):44-47.

[11] 陈荟慧,张新颜.在线考试系统的分析与设计[J].计算机技术与发展,2009,19(10):214-217,221.

【通联编辑:朱宝贵】

基金项目:本课题得到郑州地方高校急(特) 需专业数据科学与大数据技术项目:ZZLG202301;黄河科技学院校级教改项目,编号:kg233xm009

上一篇 点击页面呼出菜单 下一篇