基于Java的题库与试卷生成管理系统开发

2017-10-31 07:21尤晟任俊帆王舟
电脑知识与技术 2017年23期

尤晟 任俊帆 王舟

摘要:目前计算机技术已广泛应用于信息管理、辅助教学领域,该文介绍了一种基于Java语言,C/S结构的题库与试卷生成管理系统,不仅能提供录入、查找、编辑题目的功能,而且能在题库中按照要求抽取试题,自动生成试卷,实现题库平台与自动化试卷生成平台的一体化。同时,系统能为试卷的难度、范围做到精细化控制,便捷可靠。

关键词:Java;题库系统;试卷生成;软件开发

1項目研究背景

当今,考试是大多数教育部门衡量学生水平的方法,而考试就需要试题。当计算机并未普及时,试题都是用纸张来保存,维护或抽题时非常费时费力,同时,有些科目的难度难以把控,且没有衡量的统一规范与标准,无法做到相对的公平。如今计算机普及,就可以利用软件来实现题库的维护,试题的抽取,节约人力物力的同时,保证不同区域的试卷比以往更加公平。

2项目研究目标

本项目的主要目的是使用Java语言,完成一个C/S架构的题库与试卷生成管理系统,并且能够按照自定义的条件筛选题目,自动生成试卷,并且能用图形化的界面来快速便捷地维护题库。

3主要功能与创新点

主要有三个模块,第一个模块是注册登录模块,包含了学生、老师、管理员三种账号类型。第二个模块是题库模块,包含了查询、录入、编辑等等功能。第三个模块是试卷生成(组装)模块,选择不同的题型、范围、难度、分值等等自动生成试卷。

本系统也有独到的创新点,不仅能提供录入、查找、编辑题目的功能,而且能在题库中按照要求抽取试题,自动生成试卷,实现题库平台与自动化试卷生成平台的一体化。鉴于目前试卷难度无法量化的现状,我们将每题在录入之时就给定一个难度系数,从而在生成试卷的时候就可以在量化难度的题目之中抽选出不同难度的题目,组成一套难度均衡的试卷,避免了试卷难度过难或过易的问题。我们相信通过这套量化标准,能够解决不同学校,甚至不同区域因为试卷难度不均衡而引发争议的问题。

4系统的实现

4.1架构简介

本系统采用MVC框架,构建一个GUI界面负责视图(view)与控制(control),由业务逻辑和数据组成模型(model)。概念层、逻辑层、业务实现层分别如下图1所示,各个部分耦合度相对较低。

数据库采用开源的MySQL,以免产生版权问题,同时MySQL适合作为中小型的系统开发的数据库选择。其次,由于我们决定的是C/S架构,视图方面使用Java配套的GUI控件,为了兼容性与美观,用Swing作为Awt的替代品是一个很好的选择。

4.2登陆注册模块的实现

如图2,弹出界面后,我们可以根据自己的身份选择登陆的接口,根据身份的不同,可以使用的功能也不相同。在这个功能里我们主要用到使用idbc进行数据库的连接、SQL语言的使用以及GUI界面的设计。其中,我们加入了次数统计,账号密码错误次数不得超过3次,否则将无法登陆。

如图3,注册界面也人性化的使用了输入两次一样的密码的校验措施,并且在存人数据库前对密码进行了MD5加密,确保数据隐私信息的安全,哪怕数据库数据泄露,密码也无法被得知,因为MD5算法是单向加密不可逆。

4.3题库模块的实现

在主界面点击‘录入后,弹出窗口,如图4,选择不同题型,界面跟随变化。在每个界面填写好完整题目信息后,点击‘录入,系统会将所填写的信息提取出来存入变量,并且使用sql语言中的insert语句拼接后插人数据。在对应程序代码中,根据选择的题型的不同,界面跟随变化的主要方法是通过.setVisibleO方法实现,比setEnable0方法兼容性更佳。

在主界面点题库查询后,弹出查询窗口,如图5,可选择A、B、C三种查询类型,分别为全局查询、题号查询和按条件查找。系统会使用sql语言中的select语句拼接查询数据。按条件查找较为复杂,需要在判断CheckBox是否选中的情况下,在select语句中拼接相关的搜索条件,同时还要注意判断若未勾选CheckBox的特殊情况。

修改功能比较简单,主要用到以下两个sql语句。第一个是调用数据库中的查询select语句,显示题目的信息;第二个update语句,更新数据库,即把修改的内容替代原来内容。这两个语句都需要DBConnection连接到数据库,然后在通过MYSQL语音进行相应的操作。

4.4试卷生成模块

在主界面点击试卷生成按钮后,将打开试题信息设置窗口,如图6。对于如何随机不重复抽出有范围条件的题目是个难点,我们决定在questions表中添加一列ran(默认初始值为0)作为标志列,通过changeRan方法将符合条件的题目的ran列的属性值设为‘1,之后调用insertRan方法,通过写sql语句,在符合ran=1条件的题目中抽出所需数量的题目插入到exquestions表中。exquesfions表作为一个临时表而存在,在每次生成试卷之前都提前被清除内容。生成完毕后,要将questions表中的ran标识列全部重置回‘0。

最后,点击试卷生成后能显示出我们的试卷,试卷信息由exquestions临时表中的题目信息组成,并且加入部分标志位符号进行排版。为了提高内存利用率,不使用final类的String而使用StringBuilder类连接所有信息,之后显示在屏幕上。生成完毕后,可以复制到word中修改并且打印,如图7。

5结束语

生成试卷不失为一个颇为棘手的功能,但是在了解了随机题目抽出的方法,并且想到了如何给最后的输出文字排版之后,主要问题就迎刃而解了,剩下的就仅仅是补全代码以及维护统一性。此系统初步实现了题库平台与自动化试卷生成平台的一体化整合,但是仍有改进之处,尤其是在代码的复用与封装性上。希望这款系统能够对辅助教学领域有一定帮助,并且在试卷难度判别领域,对提高准确性和公平性上有帮助。endprint