1. 引言
随着网络应用的普及以及疫情时期线上教学的发展,网络教学已经成为时代的热点之一。网络教学中如何进行学生考核是影响网络教学的难题之一,既要保持公平公正,又要自动高效。要解决这一难题就要有完善的题库系统支撑,而题库如何生成和管理就成了另外的难题。尤其是数据结构与算法类的题目,它既要求有图形支持,又有一定的结构要求。在之前的数据结构与算法类题库建设时,大多数是教师来手动生成一类基础题目,然后通过题目数据的手动变换,得到新的一组题目。这就大大加大了教师的工作量,而且还要判断题目是否合理,是否会发生重复等,这都不利于题库的丰富完善。本文针对这一缺点,研究了自动组题系统来生成题目,如此可以自动生成不同的题目,既能满足不同人、不同学科和不同难度的个性化考试,又能做到一人一题,增强考试的公平性和可靠性。
对于自动组题的研究,已有很多学者进行了研究。但多数集中在如何利用深度学习对文本进行分析,自动生成问题,如文献[1]-[5]。或者是如何生成选择题或者客观题,如文献[6]-[9]。或者研究如何进行自动答题,如文献[10]。还有一些学者研究的是如何组卷,如文献[11]-[13]。但学者们对于主观题如何自动生成很少有研究,这方面的文献也很少。本文针对数据结构与算法的题目特点,结构化地分块生成题目,然后组合各块自动组成题目,最终达到自动生成带图形的应用题的目标。
2. 数据结构与算法组题系统的需求分析
组题系统可以适用多种课程,多种场合,但不同的课程又有不同的需求。以数据结构与算法课程为例,组题系统的需求用例图如图1所示。
Figure 1. Data structure and algorithm problem system use case diagram
图1. 数据结构与算法组题系统用例图
2.1. 组题功能
组题功能是系统的核心的功能,数据结构与算法的题目可以分为客观题和主观题,客观题比较容易实现自动组题,主要通过题目不同的数据设置,不同的答案选择,来实现选择题及填空题等客观题。而主观题则较难实现自动组题。但数据结构与算法的主观题是有一定的结构的,一部分数据结构与算法的应用题目是包含图形(树、图)及问题两部分,或者是一组数据(查找、排序)及问题两部分,那么就可以从题目的结构特点来实现自动构造题目。因此组题功能主要包括两部分,首先是设定组题规则,规则定好后就可以生成需要的题目。
1) 设定题目规则
由于数据结构与算法课程中的题目经常需要针对某个树或者图来进行,因此组题时要先生成不同的图片。教师用户选择需要生成图片的类型,根据提示输入必要的规则信息。如生成图需要输入图的顶点数与边数,系统接收数据后生成图片,并显示出来。
2) 生成题目
教师用户请求生成题目,选择已经生成图片的类型,系统接收信息,将对应的题干列出供选择,并根据选择计算相应的答案,最后将题目完整信息(试题问题、答案、图片、知识点等)存入数据库。题目生成后若教师用户想要查看刚存入的题目,可以点击下方查看试题按钮,将刚生成题目显示到列表中。
2.2. 试题库管理功能
试题库管理功能允许教师用户对现有的试题进行增加、删除、修改、查看的操作,各操作相互独立,顺序不分先后。
除此之外,数据结构与算法组题系统需要具备可靠性、可扩展性、可维护性、灵活性、易用性、安全性等多个方面的非功能性需求,帮助教师高效地管理和组织教学资源,提升教学质量和效率。
3. 数据结构与算法组题系统的设计
3.1. 系统数据库设计
数据结构与算法组题系统中需要存储图片、题目、答案等数据,系统数据库E-R如图2所示。
Figure 2. E-R diagram of data structure and algorithm question generation system
图2. 数据结构与算法组题系统E-R图
3.2. 系统模块设计
1) 组题模块的设计
组题模块能够根据给定的数据和题干进行自动组题。
a) 设定组题规则
设定组题规则主要是为了方便用户快速生成不同类型的图形,同时确保生成的图形满足基本要求。通过用户输入的生成规则,系统可以自动按照该规则生成二叉树、哈夫曼树、无向图、有向图、无向网、有向网等不同类型的图片。
以二叉树为例,输入或随机生成二叉树的层次序列,根据该字符串构建成一棵二叉树。注意序列中包括虚结点即空结点,表示该结点不存在。接着将这个二叉树可视化,画出对应二叉树并保存到本地。
b) 生成题目
Figure 3. Generate question flow chart
图3. 生成题目流程图
首先选择生成的题目类型,根据不同类型将对应的题干显示在页面上。然后前端会将题目需要的图片类型传递给后端,后端会根据图片类型找到对应的图片位置,并将图片上传到云对象存储oss文件中,最后将上传后的图片的url返回到前端,前端就可以通过url显示出图片。
在图片显示后,就可以开始生成题目了。前端会将问题、知识点章节、科目以及题干id等信息传递给后端。后端将问题求解得到相应题的答案,并将完整的题目信息存入数据库中。之后在访问这道题目时,便可以从数据库中读取这些信息,并在页面上显示出来。组题流程图如图3所示。
系统可以生成的题干包括二叉树的各种遍历、Haffman树的生成、图的深度/广度优先遍历、最小生成树生成、图的最短路径、图的拓扑排序等。
查看题目是根据刚生成题目的类型将对应题目的问题、答案、以及图片以列表的形式显示出来。
2) 题库管理模块的设计
在试题管理中,教师需要进行试题添加、试题删除、试题修改以及试题查询等操作。
a) 添加题目
添加题目模块可以快速、方便地向试题库中添加新的题目。为保证题目的规范性,输入时采用正则表达式来校验用户输入的题目数据格式是否正确,避免了不必要的数据错误。
b) 删除题目
当试题数据表中存在大量无用的数据时,需要对无用的题目进行删除,以便于减少系统数据库的压力和占用。教师在显示的题目列表中可以根据题目ID删除题目,删除后列表中不再显示。
c) 修改题目
当试题数据表的题目描述、答案、知识点或图片出现错误时,需要对题目数据进行修改。教师在显示的题目列表中根据题目ID修改题目,类似添加题目过程。
d) 查询题目
查询题目功能可以帮助教师用户查看试题库中的题目信息,方便教师用户了解试题库。查询题目实现按照知识点章节分页查询,显示到结果列表中,包括问题描述、问题答案、问题图片、知识点等。
4. 数据结构与算法组题系统展示
Figure 4. System homepage
图4. 系统首页页面
本系统主要是组题以及对试题库的管理功能。登录成功后首先进入到系统首页,如图4所示。点击菜单栏的设定组题规则,进入组题功能主界面,如图5所示。
Figure 5. Set question combination rules page
图5. 设定组题规则页面
1) 组题功能界面展示
若选择生成一颗二叉树,点击二叉树按钮,输入二叉树序列,“1234567”后点击确定,生成二叉树如图6所示。
Figure 6. Binary tree image display page
图6. 二叉树图片显示页面
若选择生成哈夫曼树,无向图、有向图、带权无向图、带权有向图,生成的图片如图7所示。
Figure 7. Display page of other generated graphics
图7. 生成的其他图形显示情况
Figure 8. Generated question of binary tree
图8. 二叉树生成题目页面
接着选择图片类型为二叉树,点击显示图片后,点击生成题目,如图8所示。将图片与对应的题干存入数据库,并计算出试题答案,作为题库素材。
可以点击下方的查看试题按钮,将刚生成的试题信息显示在最上方,如图9所示。
Figure 9. The questions list page
图9. 查看试题页面
2) 试题库管理功能界面展示
Figure 10. Question add page
图10. 添加试题页面
主要有添加试题、修改试题、删除试题、按知识点查看试题。当点击搜索栏最右侧的添加按钮时,弹出对话框,根据提示输入题目相关信息后,点击确定按钮,即可添加试题。如图10所示。
若想修改某道试题,点击对应试题后的修改按钮,将显示试题的问题描述、答案、知识点等信息,根据实际需要进行对信息的修改,修改完成后,点击确定按钮即可提交修改。如图11所示。
Figure 11. Question edit page
图11. 修改试题页面
5. 总结与展望
自动组题系统实现了数据结构中图形的自动生成,并将生成的图形和题干组合形成同类不同题,存入试题库,方便在线考试系统选题。该组题系统自动生成题目丰富了题库,提高了教学效率和质量。同时,组题系统为教师提供了丰富的资源,使得教学内容不再受到时间、地点等限制,并且有效地节省了组卷时间,提高了教学效率。总之,数据结构与算法组题系统是一种具有广泛应用前景的教学组题系统,对提高学校的教学水平、促进师生共同进步具有十分重要的意义。
资助信息
北京信息科技大学2023年度高教研究课题(2023GJYB05)资助;北京信息科技大学课程思政项目(2024JGSZ12)支持。