酷文首页  
站内搜索:
网站地图 | RSS订阅 | 收藏本站
经济论文
证券金融
工商管理
会计审计
法学论文
医药论文
社会论文
教育论文
计算机论文
艺术论文
哲学论文
财政税收
财务管理
公共管理
理学论文
政治论文
文学论文
工学论文
文化论文
实用文档
应用文
自考成考
演讲稿
法律文书
子栏目导行↓
网站赞助商↓
本类热点↓
本类更新↓
热门标签↓
网摘收藏↓

基于Delphi的试卷生成系统的开发与实现

作者:朱耀武
来源:本站原创
点击:
载入中...
加入时间:2008-06-25
字体大小:[  ]

4.6 题库维护模块
题库维护模块主要实现对题库中试题的管理以及章节设置的维护功能,主要是提供对题库中试题的修改和删除操作,对试题所在章节设置的添加,修改和删除操作,同时实现对试题信息和章节设置信息的浏览和查询功能。题库维护模块功能树如图4.9所示。

 
(1)题库维护模块实现5个主要功能:选择题维护,填空题维护,简答题维护,程序设计维护和章节表维护。
(2)题库维护模块的窗体设计效果如图4.10所示。

 A.整个窗体的初始化处理。处理过程:首先设置数据库的连接,然后对各题型界面的初始化,最后完成对界面各个控件的初始化。
     B.各题型的属性页的初始化处理。处理过程:读取题库中的试题记录,将记录信息显示到界面的数据网格中供用户浏览,当用户选择其中某条记录时,在数据的编辑区域中显示数据的详细内容,供用户查看以及修改和删除。
4.6.1 选择题的操作
选择题的修改操作。处理过程:检查用户输入数据的合法性,确认无误后,将数据更新到数据库的选择题信息表中,并提示用户更新成功,否则提示用户更新失败。
选择题的删除操作。处理过程:将用户选择的选择题目从数据库中删除。
选择题的查询操作。过程处理:根据用户输入的查询条件,从数据库的选择题表中查询符合条件的选择题,并显示到界面上。
4.6.2 填空题的操作
填空题的修改操作。处理过程:检查用户输入数据的合法性,确认无误后,将数据更新到数据库的填空题信息表中,并提示用户更新成功,否则提示用户更新失败。
填空题的删除操作。处理过程:将用户选择的填空题目从数据库中删除。
填空题的查询操作。处理过程:根据用户输入的查询条件,从数据库的填空题表中查询符合条件的填空题,并显示在界面上。


4.6.3 简答题的操作
简答题的修改操作。处理过程:检查用户输入数据的合法性,确认无误后,将数据更新到数据库的简答题信息表中,并提示用户更新成功,否则提示用户更新失败。
简答题的删除操作。处理过程:将用户选择的简答题目从数据库中删除。
简答题的查询操作。处理过程:根据用户输入的查询条件,从数据库的简答题表中查询符合条件的填空题,并显示在界面上。
 
4.6.4 程序设计题的操作
程序设计题的修改操作。处理过程:检查用户输入数据的合法性,确认无误后将数据更新到数据库的程序设计题信息表中,并提示用户更新成功,否则提示用户更新失败。
程序设计题的删除操作。处理过程:将用户选择的程序设计题目从数据库中删除。
程序设计题的查询操作。处理过程:根据用户输入的查询条件,从数据库的程序设计题表中查询符合条件的填空题,并显示在界面上。
4.6.5 章节表的操作
章节表的添加操作。处理过程:检查用户输入数据的合法性,确认无误后将数据添加到数据库的章节设置表中,然后提示用户添加成功,并更新界面显示,否则提示输入错误。
章节表信息的修改操作。处理过程:检查用户输入数据的合法性,确认无误后将数据更新到章节设置表中,然后提示用户修改成功,并更新界面显示,否则提示用户更新失败。 


章节表信息的删除操作。处理过程:将用户选择的章节记录从数据库中删除,并提示用户。
章节表信息的查询操作。处理过程:根据用户输入的查询条件,从数据库中查找匹配的数据,并将结果显示到界面上。
4.7 试卷生成模块
试卷生成模块负责为用户提供组成试卷试题的浏览选择界面,并将用户最终选择的所有试题组成试卷,保存在数据中。试卷生成模块功能树如图4.12所示。

 

(1)试卷生成模块实现两个主要功能:将用户选择的试题加入到试卷中,以及最后形成完整的试卷,并保存到数据库中。
(2)试卷生成模块的窗体设计效果如图4.13所示。
(3)试卷生成。
功能:从试题库中读取所有有效试题,并按章节,题型显示到界面中,供用户选择,用户选择需要的题目后,生成试卷。
输入试题编号,分值。
处理
A.生成窗体启动。
B.从试题库中读取全部试题,并按章节,题型显示。
C.待用户选择试题,并为试题设置分值后,将试题加入试卷表。
D.将试卷入库。
输出试卷信息表。

 
4.8 试卷抽取模块
试卷抽取模块负责在试卷生成模块的试卷库中抽取试题,并以Word形式输出试卷以及试卷答案,同时也负责删除试卷库中已废除的试卷记录。试卷抽取模块功能树如4.14所示。

 
(1)取模块实现4个主要功能:浏览试卷题型比例,预览并输出试卷,预览并
输出试卷答案和删除试卷。
(2)试卷抽取模块的窗体设计效果如图4.15所示。

 
(3)试卷抽取模块。
功能:从试卷库中抽取试卷,并将试卷和答案输出到Word文档中,同时也负责
从试卷库中删除试卷。
输入试卷代号。
A.试卷抽取窗体。
B.显示试卷中各种类型题的分值比例。
C.输出用户选择的试卷到Word文档中供用户预览。
D.输出试卷相应的答案到Word文档中供用户预览。
E.如果用户选择删除试卷,则将用户指定的试卷从试卷库中删除。
输出试卷和试卷答案。
(4)抽取模块的主要代码(uDep.pas)
A.该单元使用的其他单元文件udata。
B.窗体创建时的一些初始化操作。处理过程:首先设置数据库连接,然后初始化界面显示内容,主要是从试卷库中查出所有试卷,显示在试卷网格中。
//抽取试卷模块 初始化工作
Procedure TfrmSJCQ.FormCreate(Sender: TObject);
Begin
SJ_ADOQ.Connection := dmPer.acPer ;
SJT_ADOQ.Connection := dmPer.acPer ;
SJTXX_ADOQ.Connection := dmPer.acPer;
XT_ADOQ.Connection := dmPer.acPer;
init;
end;
Procedure TfrmSJCQ.init;
Begin
SJ_ADOQ.Close;                         //查出现有的试卷


SJ_ADOQ.SQL.Clear;
SJ_ADOQ.SQL.Add('SELECT SJDH AS 试卷代号,CJLS AS 试卷创建者,ND AS 试卷难度 FROM SJ');
SJ_ADOQ.Open;
if not SJ_DBG.Fields[0].IsNull then
SJDH:=SJ_DBG.Fields[0].AsString;
if SJDH<>'' then
Begin
SJT_ADOQ.Close;
SJT_ADOQ.SQL.Clear;
SJT_ADOQ.SQL.Add('SELECT SJDH AS 试卷代号,b.TypeName AS 题型,');
SJT_ADOQ.SQL.Add('BH AS 试题编号,FZ AS 试题分值 FROM SJT a,TiXingFen b ');
SJT_ADOQ.SQL.Add('WHERE SJDH=:SJDH AND a.TypeID=b.TypeID');
SJT_ADOQ.Parameters.ParamByName('SJDH').Value:=SJDH;
SJT_ADOQ.Open;
end;
if (SJDA<>nil)and(SJDA.Count>0) then SJDA.Clear;     //清掉试卷答案
end;
C.试卷中试题类型比例的处理。处理过程:根据用户选择的试卷代号,从试卷中将该试卷的试题类型比例信息显示在相应的数据网格中。
D.预览并输出试卷的处理。处理过程:首先创建Word文档,并建立与之的连接,然后设置Word文档的排版格式,并从试卷库读取试卷信息,根据试卷中保存的试题编号,从试题库中读取试题,按照试题类型到Word文档中,与此同时显示
进度条。
//建立WordDocument连接
SJ_WD.ConnectTo(NewDocument);
SJ_WD.Windows.Item(ItemIndex).Caption:='FoxPro数据库程序设计试卷';
RateProcess_F.Rate_Gauge.Progress:=RateProcess_F.Rate_Gauge.Progress+5;
RateProcess_F.Repaint;
SJ_WA.Options.CheckSpellingAsYouType := False;
SJ_WA.Options.CheckGrammarAsYouType := False;//设置Word的字体
SetFont(1,0,0,22);//设置段落对齐方式
SJ_WA.Documents.Item(ItemIndex).Paragraphs.Alignment :=wdAlignParagraphCenter;
SJ_WD.Range.InsertAfter('FoxPro数据库程序设计试卷'+#13);
RateProcess_F.Rate_Gauge.Progress:=RateProcess_F.Rate_Gauge.Progress+5;
RateProcess_F.Repaint;
//SJ_WA.Documents.Item(ItemIndex).Paragraphs.Alignment:=wdAlignParagraphLeft;
SJ_WD.Range.InsertAfter('学校___________ 班级________  姓名___________ 得分_____ ' +#13);
SetFont(0,0,0,14);
RateProcess_F.CZ_P.Caption:='正在输出选择题......';  //试卷题信息-----选择题部分
RateProcess_F.Repaint;
SJTXX_ADOQ.Close;
SJTXX_ADOQ.SQL.Clear;

SJTXX_ADOQ.SQL.Add('SELECT * FROM SJT WHERE SJDH=:DH AND TypeID=1');
SJTXX_ADOQ.Parameters.ParamByName('DH').Value:=SJDH;
SJTXX_ADOQ.Open;
SJ_WD.Range.InsertAfter(' '+#13);
SetFont(0,0,0,10);
BF:=1;                     //题型在试卷中属于哪一部分
STH:=1;                    //每种题型开始的题号
TL:=SJTXX_ADOQ.RecordCount;
if TL>0 then
Begin
SJTXX_ADOQ.First;
FZ:=SJTXX_ADOQ.FieldValues['FZ'];
temp:=Format('%s单选题( 共%d小题每题%d分, 小计%d分 )',[BF_Name[BF],TL,FZ,TL*FZ]);
SJ_WD.Range.InsertAfter(temp+#13+#13);
SJDA.Add('#'+temp);                //为答案记下部分说明
SJTXX_ADOQ.First;
while not SJTXX_ADOQ.Eof do
Begin
XT_ADOQ.Close;
XT_ADOQ.SQL.Clear;

XT_ADOQ.SQL.Add('SELECT * FROM TXuanZe WHERE BH=:BH');
XT_ADOQ.Parameters.ParamByName('BH').Value:=SJTXX_ADOQ.FieldValues['BH'];
XT_ADOQ.Open;
temp:=Format('%d. %s',[STH,XT_ADOQ.FieldValues['TM']]);   //输出选择题题目
SJ_WD.Range.InsertAfter(temp+#13+#13);
temp:=Format('%sA. %s',[JG,XT_ADOQ.FieldValues['A']]);   //依次输出四个选项
SJ_WD.Range.InsertAfter(temp+#13);
temp:=Format('%sB. %s',[JG,XT_ADOQ.FieldValues['B']]);   //依次输出四个选项
SJ_WD.Range.InsertAfter(temp+#13);
temp:=XT_ADOQ.FieldValues['C'];     //有的题没有C,D选项
if trim(temp)<>'' then
Begin
temp:=Format('%sC. %s',[JG,temp]);   //依次输出四个选项
SJ_WD.Range.InsertAfter(temp+#13);
end;
temp:=XT_ADOQ.FieldValues['D'];     //有的题没有C,D选项
if trim(temp)<>'' then
Begin
temp:=Format('%sD. %s',[JG,temp]);   //依次输出四个选项
SJ_WD.Range.InsertAfter(temp+#13);
end;

预览试卷后自动生成的Word文档。
E.预览并输出试卷答案。处理过程:首先检查是否生成试卷,若没有生成,则提示用户在生成后才能预览/输出试卷答案;在确认试卷生成后,建立与Word 文档的连接并设置Word文档的输出格式,然后根据此前抽取的试卷,从试题库中读取相应的试题答案,按照试题的类型输出到Word文档中。
F.删除试卷的处理,处理过程:首先提示用户删除操作不可恢复,在用户确认删除后,根据用户选择的试卷代号,将该试卷以及相关的试题从试题库中删除,并提示试卷删除成功。

4.9调试分析
4.9.1 测试目的
为保证软件的质量和可靠性,测试验证“试卷生成系统”是否达到了设计指标。
4.9.2 测试项目表

 4.9.3 测试结论
通过对系统的所有模块进行测试,系统运行正常,达到预期需求和设计目的。但系统不够安全,代码的处理也不是很精简,有待进一步的完善。
 
5 关键技术
5.1 数据库连接
本系统采用ADO技术动态连接数据库。ADO(ActiveX Data Objects)是微软提供的一种对多种数据格式的高层接口,该接口已经逐渐成为了一种访问数据库的新标准,许多高级编程语言都提供了对ADO接口的支持。Delphi中提供了ADO组件用于通过ADO接口访问数据库。
一个基于ADO的数据库应用程序通常由以下几个部分组成:
A.用户界面:用户主要通过用户界面对数据源进行访问,其主要部件是数据敏感控件,例如TDBGrid和TDBEdit等。也可以通过程序实现所有数据的访问,此时数据敏感控减是可选的。
B.连接构件:连接构件用于连接到ADO数据库,在数据集构件和数据库之间提供通道。可以使用数据集控件的ConnectionString属性设置连接,也可以直接设置TADOConnection组件,然后通过数据集控件的Connection属性和TADOConnection控件相连接。
C.数据集构件:数据集构件可以是一个或多个,它用于从数据库引入数据,例如使用TADOTable控件从ADO数据表中读取数据。
D.TdataSource:一个或几个TdataSource构件,用于连接数据集与数据控件。
正是因为ADO的众多优点,近几年来通过ADO连接的数据库应用程序成为了开发热点和主流,而BDE正在逐渐退出主流。
5.2 Delphi与Word之间的融合技术
Delphi程序启动Word采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:
首先使用GetActiveOleObject(''Word.Application'')判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使CreateOleObject(''Word.Application'')启动Word。
Delphi程序新建Word文稿
格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)
Template: 使用模板的名称,
NewTemplate: 新建文档的类型,True表示为模板,False表示为文档
DocumentType: 文档类型,默认为空白文档
Visible: 打捞的窗口是否可见
Delphi程序打开Word文稿
格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,Format,Encoding,Visible)
FileName: 文档名(包含路径)
Confirmconversions: 是否显示文件转换对话框
ReadOnly: 是否以只读方式打开文档
AddToRecentFiles: 是否将文件添加到"文件"菜单底部的最近使用文件列表中
PassWordDocument: 打开此文档时所需要的密码
PasswordTemplate: 打开此模板时所需要的密码
Revert: 如果文档已经,是否重新打开文档
WritePasswordDocument: 保存对文档更改时所需要的密码
WritePasswordTemplate: 保存对模板进行更改时所需要的密码
Format: 打开文档时所需使用的文件转换器
Encoding: 所使用的文档代码页
Visible: 打开文档的窗口是否可见
转贴于 酷文网-论文下载中心 http://www.coolwen.net


共6页: 上一页 [1] [2] [3] [4] 5 [6] 下一页

网摘收藏:
免责声明 | 关于我们 | 广告联系 | 友情链接 | 网站地图 | 共同合作
免费论文 毕业论文 毕业论文范文 酷文网(www.coolwen.net) 版权所有 coolwen.net 2007,All Rights Reserved
E-mail:hui_love#tom.com(为防止垃圾邮件请把#换成@) 点击这里给我发消息 点击这里给我发消息
湘ICP备07003917号