本文主要为广大网友提供“Delphi自动出卷管理系统的设计与实现”,希望对需要Delphi自动出卷管理系统的设计与实现网友有所帮助,学习一下!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
目 录 摘 要 1
1 需求分析 1.1 负责的功能模块 n 设计试题生成功能,试题能分布整个教学内容 n 设计试题的难易程度分析功能 n 具有试题的答案生成功能 n 数据库设计及维护 n 程序的其它选项设置 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的全局变量,定义如下: var STTypeID,STBH,STND:TStringList; 每选一道题保存时的算法代码如下: 首先保证要添加入的试题与现有的试题不能重复。 LX:=ST_DBG.Fields[1].AsInteger; BH:=ST_DBG.Fields[0].AsInteger; for i:=0 to STTypeID.Count-1 do begin if (StrToInt(STTypeID.Strings[i])=LX)and(StrToInt(STBH.Strings[i])=BH) then begin MessageBox(handle,''要加入的试题已经存在了!'',''加入错误'',MB_OK or MB_ICONERROR); exit; end; end; 如果不重复的话则把试题添加进来!! STTypeID.Add(IntToStr(LX)); //记下试题类型 STBH.Add(IntToStr(BH)); //记下试题编号 STND.Add(ST_DBG.Fields[4].AsString); //记下试题难度 3.在自动生成试卷里最主要的一点就是如何生成一个覆盖知道点广且试题不重复的试卷。其中的关键算法在于如何生成一个不重复的随机数序列。在Delphi里随机数的产生函数是Random,然而如果用这个函数来生成一定范围内的随机数重复的机率太大了。其中变量定义如下: var XTH:array of integer; //存放随机选题号 以下是产生不重复随机数的算法: num:=MaxBH-MinBH+1; if num>0 then //开始初始化 begin SetLength(XTH,num); for i:=0 to num-1 do XTH[i]:=MinBH+i; //给动态数组设初值 Randomize; //初始化随机数生成器 for i:=0 to num-1 do begin j:=random(num); temp:=XTH[i]; XTH[i]:=XTH[j]; XTH[j]:=temp; end; end;
在以上的软件主界面的左边是各个功能模块的调用接口!! 如: 抽取现有试卷:点击后进入抽取现有试卷的功能界面。 自动生成试卷:点击后进入自动生成试卷的功能界面。 手动生成试卷:点击后进入手动生成试卷。 题库录入:在这里可以往数据库里添加试题。 题库维护:在这里可以对数据库里已有试题进行维护。 选项设置:在这里可以对软件的其它选项进行设置。 软件的右上角有“帮助”和“关于”按钮!!在这里可以得到软件的使用帮助,和有关此软件的一些开发信息!! 下图是自动生成试卷的界面: 上图中标为“第一部分”的树形控件是用来设置要生成的试卷的试题的抽取范围。 上图中标为“第二部分”的是用来设置各种题型的量及其分数。 上图中标为“第三部分”的是功能按钮,其中“生成试卷”用来根据“第二部分”的设置自动生成一份试卷。“预览试卷”是用来预览刚生成的试卷。“试卷答案”是用来查看刚生成的试卷的答案。“保存试卷”是用来保存刚生成的试卷的信息。 下图是手动生成试卷的界面图: 上图中标为“第一部分”的树形控件是用来设置要生成的试卷的试题的抽取范围。 上图中标为“第二部分”的是用来设置各种题型的量及其分数。 上图中标为“第三部分”的是用来设置试卷的部分。 上图中标为“第五部分”的是用来选择要加入试卷的试题。 上图中标为“第四部分”的是功能按钮,其中“加入试卷”用来把在“第五部分”的选择试题加入到要生成的试卷中。“保存试卷”是用来保存刚生成的试卷的信息。 下图是用户管理的界面: 上图中标为“第一部分”显示当前系统已有的用户。 上图中标为“第二部分”选择要进行的操作。 上图中标为“第三部分”设置相应的信息。 上图中标为“第四部分”。可以删除用户或是提交对用户信息的修改。
|
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |