论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > DELPHI >

A400107题库

2 .  需求分析

2.1 负责的功能模块

内容来自www.paper51.com

n        设计试题生成功能,试题能分布整个教学内容 内容来自论文无忧网 www.paper51.com

n        设计试题的难易程度分析功能

http://www.paper51.com

n        具有试题的答案生成功能 内容来自www.paper51.com

n        数据库设计及维护

copyright paper51.com

n        程序的其它选项设置 http://www.paper51.com

2.2 软件功能分析 paper51.com

根据我负责的功能模块,主要是在试卷的生成上。 内容来自论文无忧网 www.paper51.com

1.要显示书本章节信息以供用户使用。而在数据库里章节的存放是没有规则也即它们的顺序不一定按照真实书本的章节顺序来存储的。但是在显示章节信息的时候必须按照书本的章节顺序来显示。所以特别设置如下的数据类型: 内容来自论文无忧网 www.paper51.com

type

copyright paper51.com

  ZJ=record

http://www.paper51.com

   ZJID:double; copyright paper51.com

   ZJName:string; http://www.paper51.com

  end;

内容来自论文无忧网 www.paper51.com

在这里ZJID是设置成double的类型与相对应的是数据库里表ZhangJie里的ZJ字段此字段的类型为文本弄的。故在添加此数据库结构的时候要把文本型转化为double的类型。而ZJName对应的是数据库里表ZhangJie里的ZJName它们为同一种数据类型。再由于数据库里章节的数量是不定的,故此种数据类型的变量必须是一种长度可变的类型才行,所以我们选择了Delphi里的动态数组类型。变量定义如下 : 内容来自www.paper51.com

Var copyright paper51.com

  TempZJ:ZJ;

http://www.paper51.com

HaveZJ:arrayof ZJ;

copyright paper51.com

接下来的问题就是把这个变量记录的数据按一定顺序显示到TCheckTree的控件里了。由于章节的数量还是比较多的,所以我选择了“改进的选择排序”,具体的排序算法代码实现如下:

内容来自www.paper51.com

 for i:=0 to High(HaveZJ) do //对章节号进行排序

paper51.com

    begin

http://www.paper51.com

      k:=i; http://www.paper51.com

      for j:=i+1 toMaxNum do

内容来自www.paper51.com

        ifHaveZJ[k].ZJID>HaveZJ[j].ZJID then k:=j; 内容来自论文无忧网 www.paper51.com

      if i<>kthen

内容来自论文无忧网 www.paper51.com

       begin 内容来自论文无忧网 www.paper51.com

         TempZJ.ZJID:=HaveZJ[i].ZJID;

内容来自论文无忧网 www.paper51.com

         TempZJ.ZJName:=HaveZJ[i].ZJName;

http://www.paper51.com

         HaveZJ[i].ZJID:=HaveZJ[k].ZJID; http://www.paper51.com

         HaveZJ[i].ZJName:=HaveZJ[k].ZJName; 内容来自论文无忧网 www.paper51.com

         HaveZJ[k].ZJID:=TempZJ.ZJID; 内容来自论文无忧网 www.paper51.com

         HaveZJ[k].ZJName:=TempZJ.ZJName;

copyright paper51.com

        end;

paper51.com

    end; 内容来自论文无忧网 www.paper51.com

    2.手动生成试卷时要不断的将用户选择的题目临时存储起来,由于记录一道题所包含的信息不是很多,再因为这些信息一会儿还要在“保存答案”里使用,所以我设置了4个TStringList的全局变量,定义如下:

内容来自论文无忧网 www.paper51.com

    var

内容来自www.paper51.com

      STTypeID,STBH,STND:TStringList; http://www.paper51.com

每选一道题保存时的算法代码如下:

http://www.paper51.com

首先保证要添加入的试题与现有的试题不能重复。

内容来自www.paper51.com

LX:=ST_DBG.Fields[1].AsInteger;

内容来自论文无忧网 www.paper51.com

BH:=ST_DBG.Fields[0].AsInteger;

paper51.com

for i:=0 to STTypeID.Count-1 do

paper51.com

  begin

paper51.com

if (StrToInt(STTypeID.Strings[i])=LX)and(StrToInt(STBH.Strings[i])=BH)then begin copyright paper51.com

         MessageBox(handle,'要加入的试题已经存在了!','加入错误',MB_OK or MB_ICONERROR);

http://www.paper51.com

         exit;

内容来自www.paper51.com

        end;

内容来自www.paper51.com

  end;

内容来自www.paper51.com

如果不重复的话则把试题添加进来!!

内容来自www.paper51.com

STTypeID.Add(IntToStr(LX));   //记下试题类型 copyright paper51.com

STBH.Add(IntToStr(BH));       //记下试题编号 http://www.paper51.com

STND.Add(ST_DBG.Fields[4].AsString);   //记下试题难度 http://www.paper51.com

    3.在自动生成试卷里最主要的一点就是如何生成一个覆盖知道点广且试题不重复的试卷。其中的关键算法在于如何生成一个不重复的随机数序列。在Delphi里随机数的产生函数是Random,然而如果用这个函数来生成一定范围内的随机数重复的机率太大了。其中变量定义如下: paper51.com

      var 内容来自www.paper51.com

         XTH:array of integer;           //存放随机选题号 内容来自论文无忧网 www.paper51.com

以下是产生不重复随机数的算法: 内容来自论文无忧网 www.paper51.com

      num:=MaxBH-MinBH+1;

http://www.paper51.com

      if num>0then         //开始初始化

内容来自www.paper51.com

       begin paper51.com

         SetLength(XTH,num);

http://www.paper51.com

         for i:=0 to num-1 do http://www.paper51.com

           XTH[i]:=MinBH+i;   //给动态数组设初值 内容来自论文无忧网 www.paper51.com

         Randomize;   //初始化随机数生成器 内容来自www.paper51.com

         for i:=0 to num-1 do http://www.paper51.com

           begin 内容来自论文无忧网 www.paper51.com

             j:=random(num);

copyright paper51.com

             temp:=XTH[i]; http://www.paper51.com

             XTH[i]:=XTH[j];

copyright paper51.com

             XTH[j]:=temp; http://www.paper51.com

           end; 内容来自www.paper51.com

     end; copyright paper51.com

------分隔线----------------------------
联系方式