离散数学题库管理系统论文 联系客服

发布时间 : 星期六 文章离散数学题库管理系统论文更新完毕开始阅读bc565246a5e9856a561260cf

(2) 模块内主要算法的描述

开始找出往年中雷同度最高的试卷统计 今年,去年,和前年的试卷 中包含的题目题号(不能用于这次抽取)雷同度超过设定值,并且仍有试题可抽取?是否根据上步的结果、课程、题型和章节选项执行查询,先按照章节排序,再按照题型排序去掉一道与雷同度最高试卷中的雷同试题,另外抽取一道雷同度最高试卷中没有的题目(且与去掉的题目题型相同)计算已生成试卷的平均难度否难度超过设定值,并且仍有试题可抽取?是去掉一道难度超过平均值的题目,抽取另一道同类型题目否抽取试题的总分<=设定的总分,并且仍有题目可抽取?是根据查询结果的数量,生成一个随机数,抽取一道题将该试题的分数累加到抽取试题的总分上,标注为已抽取否试卷雷同度是否增加 且 仍有试题可抽取?是取消上步操作,抽取另外一道试题试卷生成结束

图4.9 自动生成试卷算法流程图

该模块为系统的核心业务模块,考虑了三年内不能出现重复的题目,与往年试卷的雷同度和试卷的平均难度。首先,统计今年,去年,和前年的试卷中包含的题目题号,这些题目号将不能用于这次的试题抽取(三年内不能出现重复的题目)。然后根据上步的结果、选中的课程名、设置的题型和章节选项执行查询,先按照章节排序,再按照题型排序,查询出的试题可以用于此次试卷的生成。

然后按照设定的试卷总分进行循环,当抽取试题的总分不大于设定的总分,并且仍有题目可抽取时,根据查询结果的数量,生成一个随机数,抽取一道题目

加到已抽取试题列表中,将该试题的分数累加到抽取试题的总分上,将该试题从待抽取列表中去掉。这样循环下去,当退出循环的时候,已抽取试题列表中已经包含了一些题目,满足了试卷总分设定要求。

然后按照设定的最大雷同度进行循环,首先将已抽取试题列表中的试题题号与往年试卷中的题号相比较,计算出雷同度,找出往年试卷中雷同度最高的试卷。判断雷同度是否超过设定值,若超过设定值,并且仍有试题可抽取,则去掉一道与雷同度最高试卷中的雷同试题,另外抽取一道与去掉的题目题型相同并且在雷同度最高试卷中没有的题目。这样循环下去,当退出循环的时候,已抽取试题列表中的题目即会满足试卷最大雷同度设定要求,或者由于题库中试题有限,待抽取试题列表已经没有试题了。

然后按照设定的最大平均难度系数进行循环,首先计算已生成试卷的平均难度,若难度超过设定值,并且仍有试题可抽取,则去掉一道难度超过平均值的题目,抽取另一道同类型题目。这样循环下去,当退出循环的时候,已抽取试题列表中的题目即会满足试卷最大平均难度系数设定要求,或者由于题库中试题有限,待抽取试题列表已经没有试题了。

开始查出往年所有的试卷编号根据试卷编号查询出包含的试题的题号与已抽取的试题相比较,计算出雷同度所有已有试卷都计算雷同度后,按照雷同度排序结束 图4.10 找出与往年雷同度最高的试卷的算法流程图

(3) 该模块的JAVA类设计

实现该模块的JAVA类为:ui.GeneratePaperDialog类,app. MsWordHandler类和app. TestPaperHandler类

ui.GeneratePaperDialog类:

该类用于实现自动生成试卷功能,并且负责显示自动生成试卷对话框。 主要方法介绍:

initUnitTree(Connection connection):该方法用于初始化表示章节的树(查询出题库表的所有章节,按照章节顺序显示),在自动生成试卷对话框初始化的时候会调用该方法,将界面中的章节树初始化(填充章节的信息)。

addUnitButton_actionPerformed(ActionEvent e):该方法用于将左侧章节树中选择的章节添加到界面右侧的章节选择列表中。右侧的章节选择列表是指最后生成的试卷涵盖的章节列表。

deleteUnitButton_actionPerformed(ActionEvent e):该方法用于将用户在右侧的章节选择列表中选择的项删除。

genPaperButton_actionPerformed(ActionEvent e):该方法用于根据界面上输入的生成试卷条件和试卷基本信息,自动生成试卷,并且将试题和参考答案输出到WORD文件中。

app. MsWordHandler类:

该类是操作WORD文件的类,包含WORD文件的基本操作方法。 主要方法介绍:

MsWordHandler():构造函数。初始化 WORD应用程序,新建一个WORD文档。 insertParagraph(...):向WORD中添加一个新的段落。该方法有5个参数,分别为aParagraph,表示段落的内容;fontName表示段落的字体;isBold表示是否设定为黑体;isItalic表示是否设定为斜体;fontSize表示字体的大小。

该类还有其他一些方法,比如添加试卷的标题,添加一道大题,添加一道题目等方法,这些方法都通过调用insertParagraph(...)方法实现。在这里就不仔细讲解了。

app. TestPaperHandler类:

该类将已抽取的试题列表生成WORD文档。 主要方法介绍:

genWordPaper(...):根据抽取的试题,生成WORD文件。该方法共有4个参数,selectedTestItems表示已抽取的试题列表;paperTitle表示试卷标题;courseName表示课程名称;testStyle表示测试类型。该方法的具体实现:首先弹出保存文件框,让用户选择保存位置;然后计算出已抽取的试题的总分,用于WORD文件输出;然后利用循环,将选择的题目输出到WORD文件中。

addSpecifiedTestToWord(...):将指定的题型的题目添加到 WORD 文件中。调用MsWordHandler类具体实现。

addSpecifiedAnswerToWord(...):将指定的题型的题目答案添加到 WORD文件中。调用MsWordHandler类具体实现。

4.2.5 手工改动现有试卷模块

(1) 界面设计

此界面是手工改动现有试卷界面,在该界面中可以对试卷的基本信息进行修改,同时也可以打开试题查询界面,将试题手动添加到选中的试卷中。

图4.11 手工改动现有试卷界面