一般情况教师想出一份试卷,要么到庞大的题库里一道一道的把题找出来,或是从几本相关的书里把题一道一道挑出来。这样即费时又费力,而且很难保证试题的覆盖面和把握好试卷的难度。正是为了能够帮助教师轻松的出一份高质量的试卷而开发了本软件。为了达到预期的目标我们最终选择了Microsoft Office Word做为本软件的终端输出。本软件是在对现有控件的改进和VBA编程的研究的基础上开发的。本软件实现了以下主要功能:1.手动生成试卷;2.自动生成试卷;3.抽取现有试卷;4.用户管理;5.数据库管理。大量的测试表明本软件在Windows 98/me/2000/XP平台配合Office XP/2003 的环境下程序运行稳定且各项功能运行得都很正确,基本达到了预期的要求!!
结论:经过老师的实际试用本软件在界面上和功能上都有独到之处!!相信完全可以胜任出一份好的试卷任务。
1.1 负责的功能模块
- 设计试题生成功能,试题能分布整个教学内容
- 设计试题的难易程度分析功能
- 具有试题的答案生成功能
- 数据库设计及维护
- 程序的其它选项设置
1.2 软件功能分析
根据我负责的功能模块,主要是在试卷的生成上。
1.要显示书本章节信息以供用户使用。而在数据库里章节的存放是没有规则也即它们的顺序不一定按照真实书本的章节顺序来存储的。但是在显示章节信息的时候必须按照书本的章节顺序来显示。所以特别设置如下的数据类型:
type
ZJ=record
ZJID:double;
ZJName:string;
end;
在这里ZJID是设置成double的类型与相对应的是数据库里表ZhangJie里的ZJ字段此字段的类型为文本弄的。故在添加此数据库结构的时候要把文本型转化为double的类型。而ZJName对应的是数据库里表ZhangJie里的ZJName它们为同一种数据类型。再由于数据库里章节的数量是不定的,故此种数据类型的变量必须是一种长度可变的类型才行,所以我们选择了Delphi里的动态数组类型。变量定义如下 :
Var
TempZJ:ZJ;
HaveZJ:array of ZJ;
接下来的问题就是把这个变量记录的数据按一定顺序显示到TCheckTree的控件里了。由于章节的数量还是比较多的,所以我选择了“改进的选择排序”,具体的排序算法代码实现如下:
for i:=0 to High(HaveZJ) do //对章节号进行排序
begin
k:=i;
for j:=i+1 to MaxNum do
if HaveZJ[k].ZJID>HaveZJ[j].ZJID then k:=j;
if i<>k then
begin
TempZJ.ZJID:=HaveZJ[i].ZJID;
TempZJ.ZJName:=HaveZJ[i].ZJName;
HaveZJ[i].ZJID:=HaveZJ[k].ZJID;
HaveZJ[i].ZJName:=HaveZJ[k].ZJName;
HaveZJ[k].ZJID:=TempZJ.ZJID;
HaveZJ[k].ZJName:=TempZJ.ZJName;
end;
end;
2.手动生成试卷时要不断的将用户选择的题目临时存储起来,由于记录一道题所包含的信息不是很多,再因为这些信息一会儿还要在“保存答案”里使用,所以我设置了4个TStringList的全局变量,定义如下:
以上是一部分介绍,如需要完整的资料或者如不符合您的要求,请联系技术人员qq:242219979咨询