试题库管理系统毕业论文.docx
- 文档编号:549106
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:20
- 大小:184.36KB
试题库管理系统毕业论文.docx
《试题库管理系统毕业论文.docx》由会员分享,可在线阅读,更多相关《试题库管理系统毕业论文.docx(20页珍藏版)》请在冰点文库上搜索。
试题库管理系统毕业论文
试题库管理系统
(伊犁师学院计算机系,新疆伊宁835000)
摘要:
随着计算机办公自动化程度的不断提高,开发各种数据库管理应用软件用于各种工作中能有效地提高工作效率,节省时间,能使学校的教学工作上一个新的台阶。
传统的人工命题形成试卷,往往会出现大量的重复劳动,并且形成的试卷因出卷人的不同其质量会差距很大,这样一来会直接导致考试结果波动很大,使考试的科学考评效果大幅度降低,这也往往引起学生和教师的广泛议论和关注,解决这一早就出现的问题一直是许多人的迫切愿望,由于各种考试名目繁多,试卷容广杂,使出卷难度加大,要出一份好试卷更是难上加难;另外,许多基础学科容长期不变或基本不变,这就使建立试题库成为非常必要和可能。
通过筛选、总结、修正,使以往大量优秀的试题进入试题库,继承了前人辛勤的劳动和智慧的结晶,也顺应了标准化命题的要求。
本系统是在WINDOWS98平台上,以VisualBasic6.0为工具,利用OLE等技术设计实现了一个试题库管理系统。
系统设有特权用户(Supervisor),对系统的所有资源实施管理;一般用户只可选择访问已经授权可访问的资源。
为试卷选题可通过人工进行,也可给出各种具体的条件,然后由程序自动来选定完成。
试卷容是文本文档处理的各种数据。
关键词:
OLE;试题库;试卷生成;试卷管理
中图分类号:
TP311
应用VisualBasic6.0可视化编成工具开发软件速度快,界面实现简单方便,具有高可靠性、便于维护调试和高效率等突出优点。
在深入学习和研究了VisualBasic6.0这一可视化继承开发环境的基础上和在参阅了大量文献资料的基础上,同时了解到我国大、中学校录取新学生、考察学生学习情况的手段主要还是通过考试,而每次考试,都要花费老师大量的心血去筛选试题、组织试卷、整理试题答案等。
根据这些情况,我们开发设计了该《试题库管理系统》应用软件,以实现课程的试题库管理和处理,相信它必将在教学中发挥积极的作用。
1.概述
1.1研究背景
1.随着计算机办公自动化程度的不断提高,开发各种数据库管理应用软件用于各种工作中能有效地提高工作效率,节省时间,能使学校的教学工作上一个新的台阶。
传统的人工命题形成试卷,往往会出现大量的重复劳动,并且形成的试卷因出卷人的不同其质量会差距很大,这样一来会直接导致考试结果波动很大,使考试的科学考评效果大幅度降低,这也往往引起学生和教师的广泛议论和关注,解决这一早就出现的问题一直是许多人的迫切愿望,由于各种考试名目繁多,试卷容广杂,使出卷难度加大,要出一份好试卷更是难上加难;另外,许多基础学科容长期不变或基本不变,这就使建立试题库成为非常必要和可能。
通过筛选、总结、修正,使以往大量优秀的试题进入试题库,继承了前人辛勤的劳动和智慧的结晶,也顺应了标准化命题的要求。
2.该试题库管理系统由本人和司秀华同学共同开发完成。
所有的源代码都调试运行通过,达到了所有的预期目标。
优秀的试题可进入试题库直接参与以后的试题而生成新的试卷。
可直接从中抽取试卷(必要时可稍作修改)用于考试。
1.2本论文所做的工作
该试题库系统是一个文史类试题库管理系统,即:
该系统可由特权用户(supervisor)为课程创建其试题库。
系统设有特权用户(supervisor)对系统的所有资源实施管理,同时管理用户群:
向系统添加用户、撤销用户、分配向系统注册进入的口令和用户名。
而一般用户只可选择访问已经授权可访问的资源。
以一般用户身份向系统注册进入后,“用户管理”菜单项为不可见项。
为试卷选题可通过人工进行,也可给出各种具体的条件,然后由程序自动来选定完成。
选题完成后可对所有试题进行预览并可再次决定各题的去留,然后在此基础上再次进行管理,直到满意为止。
能为多门课程创建试题库,并对其试题库进行维护管理。
试题容可以是文本文档所能处理接受的文字、数字、字母等数据。
试卷最后生成于文本文档中。
自动保存历史试卷而逐渐形成试卷库,为直接抽取试卷(必要时可稍作修改)用于考试提供了可能。
本系统的一级主功能菜单有:
试题管理试卷管理用户管理帮助退出系统。
二级主功能菜单有:
添加试题浏览试题取消选中标记输入选题条件自动选题试卷预览生成试卷添加用户删除用户。
单个试题有它的单个的价值和意义,而试卷有它的整体价值和意义;根据需要可以人工选定试题,然后生成试卷。
本系统主要有以下几个突出的特点:
1.能自动为课程创建试题库,并进行维护管理。
2.系统是开放的。
用户可向系统添加试题,可对其中的试题进行修改,也可对其中的试题进行删除操作。
3.选题可手工进行,也可根据给定的条件由程序自动完成。
4.利用试题库中试题自动生成试卷。
在试题容输入后,自动生成文本文档。
1.3开发本系统的软件和硬件环境
硬件环境:
兼容机Pentium4/256MRAM/40G/17’
软件环境:
操作系统:
MicrosoftWindowsXP
开发工作:
VisualBasic6.0
2.通用试题库系统需求分析
按照软件工程基本理论要求,软件开发以前必须向用户反复进行需求调查并形成需求规格说明书,在软件开发中仍要继续进行,并对已经形成的需求规格说明进行修改和补充,直到软件产品开发完成为止。
下面是本系统已经形成的最终的需求规格说明书。
2.1需求规格说明
1.为有效规管理考试及试卷命题需开发该系统。
2.设定特权用户(supervisor)来统一管理用户群,给他们分配使用权限和口令,
通过对使用权限的控制来限制某些用户使用课程的试题库。
若用户口令丢失可由特权用户解锁并重新分配口令;用户在合法进入系统后能修改自己的口令。
特权用户(supervisor)可从系统中撤销其他用户,也可向系统中添加用户;特权用户(supervisor)若以其他用户名进入系统“用户管理”主菜单项不可见。
3.根据需要能为课程创建试题库。
每试题均有大题号、难度系数、知识点。
4.每题及其相应属性按题型由手工输入来完成。
5.试题容可以是多样化的各种文字、字母、数字以及各种符号等等。
6.能浏览、修改、删除系统任一所有试题。
7.试题选题分两种:
a).所有试题均有人工选定。
b).在人工选定试题的基础上,由系统按用户给出的选题条件自动随机补足剩余试题。
试题条件包括题型、知识点、难度系数。
其中题型和题数必须给出,知识点或难度系数可给出也可不给出,若不给出,则程序认定该项不受限制和约束,即任意数据皆可。
8.在人工选定试题的过程中,随时可获知已选定试题的数量等汇总情况。
9.试题选定后可进行预览(对所有已经选定的试题),预览过程中可取消任意题
的选中标记,经调整后最后结束选题。
10.试题选定按给定的难度比以及知识点覆盖面要求进行。
在由程序自动按用户给出的选题条自动随机补足剩余试题该情况中,可通过对难度系数和知识点的输入的控制来实现这一要求。
该系统完全按照以上形成的需求规格说明书开发设计完成,并达到了所有预期的目标。
2.2建立UML模型
试题库系统用例图
特权用户
普通用户
(特权用户)
2.3功能级数据流图
3.试题库系统功能及试题库的设计
3.1系统总体结构
数据库
功能实现层
第一层是数据库,即试题库的底层,由知识点库、用户名库、试题库组成。
其中知识点库主要为用户输入数据或查询提供基础帮助数据,它存储的主要容是课程卡是的知识要点,知识点代码的划分由章到节再到具体的节的点。
它由6位数构成;第一个两位代表章,第二个两位代表节,最后两位落实到具体的节的点。
试题库用来存放试题的属性及容。
第二层是功能实现层。
系统的所有功能都以模块的形式在第二层中实现。
功能模块包括用户管理模块、添加试题模块、题库维护模块、自动抽取试题模块、生成试卷模块、试卷的编辑模块。
第三层是面向用户的人机交互界面,主要由主菜单系统构成。
除此之外,系统还设计了比较完善的帮助信息系统。
3.2系统的功能结构
试题库管理系统各功能以菜单的形式呈现给用户:
试题管理试卷管理用户管理帮助退出系统
各功能模块的简介:
1.添加试题向选定的试题库试题表添加试题。
在“添加试题”中,将数据输入足够大的空白方块,用户在输入试题容后,点击确定容最后保存在文档中。
[图示1]
2.浏览试题顺序上下翻阅每一道试题,进入浏览界面以前,先要给出试题过滤条件。
[图示2]
图1.添加试题界面
图2.进入“浏览试题”状态前首先看到以下界面:
3.取消选中标记取消所有人工或程序加在试题上的选中标记。
4.添加用户由特权用户向系统中添加新注册用户名,并分配口令。
5.撤销用户由特权用户从系统中撤销某一注册用户名,以后系统将拒绝以该用户名向系统注册进入。
6.选题条件:
在人工选定选题的基础上由系统按要求自动随机补足剩余试题而要求系统自动选题时要给出各项具体数据要求,其中知识点和难度系数可不给出外,其余各项必须给出,未给出的项即认为任意数据皆可(程序将按无法任何限制处理);知识点上限是用来限制出题围的,主要是为了适应期中考试和期末考试(知识点上限不输入即可)不同的需要,上限知识点不包括在出题知识点围之。
输入所有要求后,点击“结束”命令结束输入,然后点击“自动选题”即可开始自动选题,自动选题将严格按照如上输入的要求数据进行,若没有符合条件的题则不选,最后等待进行人工调整。
[图示3]
图3.输入选题条件界面
7.自动选题按“输入选题条件”中给出的条件随机地抽取试题。
8.生成试卷将选定的试题自动生成文本文档。
9.将已选定的试题按成卷的顺序显示出来供用户翻阅浏览,并可再次决定各题的去留。
10.退出系统退出试题库系统,回到操作系统环境。
3.3试题由人工选定
人工选定试题在“浏览试题”功能中进行,该功能的操作界面是所有操作界面中比较复杂的一个,该功能也是本试题库系统所有功能中使用较为频繁的一个功能。
删除试题这一功能就在该界面中进行,这样一来就不必再另外创建一个窗体来实现它。
点击“上一题”、“下一题”命令按钮即可上下翻阅每一题,点击“选中”即可选中当前题、左上角小方框即出现“+”符号,表现当前题已经加上选中标记“+”;再点击“选中”一次则取消当前题已经加上的选中标记“+”。
3.4数据库设计
试题库采用ACCESS数据库系统。
1.试题库结构:
xishu难度系数integer
tag选题状态text1
tag=“+”时,说明该题处于选中状态,否则处于非选中状态
zhishidian知识点代号text50
datihao大题号text50
题型代码,选题型后由程序自动给出相应的代码
haointeger2
在随机选题开始前,由程序自动填写所有符合条件试题的序号,用以和随机数生成函数Rnd挂钩
2.知识点表
知识点表结构:
zhishidiantext50
其容为:
知识点代码+知识点简单描述语
知识点的编码:
知识点编码采用6位数编码,前两位表示第几章,中间两位表示第几节,
最后两位表示该节中考试知识的出处。
例如:
110521,它表示该题出自11章
5节的21知识容处,这样编码使题库程序控制选题章节便于实现。
并可按
试题进行排序。
在输入自动选题条件时,可由给出知识点来控制试题的具体出处,
同时可由给出知识点上限来控制试题选择的连续围。
期中考试试题围依此法
设定。
3.自动选题条件表
表结构:
datihaotext50所属大题题号
tishuinteger选题个数
zhishidiantext50知识点要求
xishutext50难度系数
4.关键技术、难点及解决方案
1.本系统在不同盘符下,它的路径也发生变化,因此程序读取数据的来源也要同步
变化,这就要求DATA控件对数据库、表的绑定必须动态实现,从而保证数据的来
源与课程保持一致。
如可采用如下代码实现:
PrivateSubForm_Activate()
Data1.DatabaseName=App.Path&"\tiku.mdb"
Data1.Refresh
EndSub
2.按用户给出的条件,由程序自动选题功能的实现
算法描述:
首先按试题条件表中第一个选题条件从试题表中按该条件过滤出符合条件的试题
子集。
若过滤出的符合条件的试题数少于或等于条件中要求的题数,则全部选中过滤出的试题;
若过滤出的符合条件的试题数多于条件中要求的题数,则调用随机函数Rnd随机地选出该选题条件中题数值所要求的试题数;然后按选题条件表中第二条件从试题表中过滤出符合该条件同时未加选中标记的试题子集,从中选出该试题条件中题数值所要求的试题数;然后按选题条件表中第三个条件……。
依次进行,直到按选题条件表中的所有条件选出所有的符合条件的试题为止,最后结束自动选题。
算法的代码实现如下:
LoadForm11
Form11.Show
DimsAsString
s=Module1.s
Data1.DatabaseName=App.Path&"\tiku.mdb"
Data1.Refresh
Data2.DatabaseName=App.Path&"\tiku.mdb"
Data2.Refresh
Dimi,jAsInteger
DoWhileNotData1.Recordset.EOF
IfLen(Trim(s))=0Then
IfIsNull(Data1.Recordset.xishu)Then
IfIsNull(Data1.Recordset.zhishidian)Then
Data2.RecordSource="select*frombiao1where(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'"
Else
Data2.RecordSource="select*frombiao1where(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'andtrim(zhishidian)='"&Left(Trim(Data1.Recordset.zhishidian),6)&"'"
EndIf
Else
IfIsNull(Data1.Recordset.zhishidian)Then
Data2.RecordSource="select*frombiao1where(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'andxishu='"&Trim(Data1.Recordset.xishu)&"'"
Else
Data2.RecordSource="select*frombiao1where(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'andtrim(zhishidian)='"&Left(Trim(Data1.Recordset.zhishidian),6)&"'andxishu='"&Trim(Data1.Recordset.xishu)&"'"
EndIf
EndIf
Else
IfIsNull(Data1.Recordset.xishu)Then
IfIsNull(Data1.Recordset.zhishidian)Then
Data2.RecordSource="select*frombiao1wheretrim(zhishidian)<'"&Trim(s)&"'and(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'"
Else
Data2.RecordSource="select*frombiao1wheretrim(zhishidian)<'"&Trim(s)&"'and(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'andtrim(zhishidian)='"&Left(Trim(Data1.Recordset.zhishidian),6)&"'"
EndIf
Else
IfIsNull(Data1.Recordset.zhishidian)Then
Data2.RecordSource="select*frombiao1wheretrim(zhishidian)<'"&Trim(s)&"'and(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'andxishu='"&Trim(Data1.Recordset.xishu)&"'"
Else
Data2.RecordSource="select*frombiao1wheretrim(zhishidian)<'"&Trim(s)&"'and(tag<>'+'orisnull(tag))"&"andtrim(datihao)='"&Trim(Data1.Recordset.datihao)&"'andtrim(zhishidian)='"&Left(Trim(Data1.Recordset.zhishidian),6)&"'andxishu='"&Trim(Data1.Recordset.xishu)&"'"
EndIf
EndIf
EndIf
Data2.Refresh
IfData2.Recordset.BOFThen
Data1.Recordset.MoveNext
Else
i=11’
DoWhileNotData2.Recordset.EOF
Data2.Recordset.Edit
Data2.Recordset.hao=i
Data2.Recordset.Update
Data2.Recordset.MoveNext
i=i+1
Loop2’
Ifi-1<=Data1.Recordset.tishuThen3’
Data2.Recordset.MoveFirst
DoWhileNotData2.Recordset.EOF
Data2.Recordset.Edit
Data2.Recordset.Tag="+"
Data2.Recordset.Update
Data2.Recordset.MoveNext
Loop4’
Data1.Recordset.Edit
Data1.Recordset.tishu=0
Data1.Recordset.Update
Data1.Recordset.MoveNext
Else
DoWhileData1.Recordset.tishu>0
j=Int(Rnd*100)5’
Ifj=i-1Orj=1Or(j
Data2.Recordset.FindFirst("Trim(hao)="&Trim(Str(j)))
IfData2.Recordset.Tag<>"+"OrIsNull(Data2.Recordset.Tag)Then
Data2.Recordset.Edit
Data2.Recordset.Tag="+"
Data2.Recordset.Update
Data1.Recordset.Edit
Data1.Recordset.tishu=Data1.Recordset.tishu-1
Data1.Recordset.Update
EndIf
EndIf
Loop6’
Data1.Recordset.MoveNext
EndIf
EndIf
Loop
j=MsgBox("自动选题已经结束!
!
!
",vbOKOnly,"")
UnloadForm10
LoadForm1
Form1.Show
1’-2’:
为所有过滤出的符合条件试题记录按顺序添入序号1,2,3,……
3’-4’:
若过滤出的符合条件的试题数少于或等于条件中要求的题数,则全部选中
过滤出的试题
5’-6’:
若过滤出的符合条件的试题数多于条件中要求的题数,则调用随机函数Rnd,当Int(Rnd
*100)等于符合条件的某试题的记录序号且该题未被选中过,则选中它,否则再由Int
(Rnd*100)生成随机整数然后与符合条件的试题的记录序号比较且查看它的选中标
记,依次类推,直到所需要的试题数全部选出为止。
每选中一题,选题条件中的题数值
减一,直到题数值减到零为止,然后如上步骤按下一个要求条件进行选题,直到选出
所有符合各个条件试题为止。
3.生成试卷[图示4]
算法描述:
采用OLE自动化技术(该技术比对象更进了一步),利用记事本提供的OLE自动化对象已经选择好并按成卷合并写入一个试卷记事本中。
首先为存储试卷创建一个可编辑的空记事本并打开它,然后打开第一试题对应的记事本,全选其容并复制到剪贴板上,激活试卷记事本文档,将剪贴板上的容粘贴进来;然后打开第二试题对应的记事本,全选其容并复制到剪贴板上,激活试卷记事本;……。
依此继续,直到所有试题容都粘贴进来为止。
PrivateSubForm_Activate()
Data1.DatabaseName=App.Path&"\tiku.mdb"
Data1.Refresh
DimfsoAsNewFileSystemObject
DimtsAsTextStream
Dimts1AsTextStream
DimflAsFile
Dimfl1AsFile
Setts=fso.CreateTextFile(App.Path&"\tikupaper.txt",True)
ts.Close
Setts=fso.OpenTextFile(App.Path&"\tikupaper.txt",ForAppending,True)
DoWhileNotData
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试题库 管理 系统 毕业论文