- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi专业试题库的设计与实现
?
? 刘东玉
?
?
摘? 要 ?本文主要叙述了含公式、图片的专业试题库的总体设计、系统功能以及实现方法,并给出了用Ole Automation技术并结合Word VBA实现对公式及图片等专业题目的处理。该试题库在Windows环境下,用Delphi5.0+SQL Server2000+Office2000实现。
关键字? 试题库? 客户服务器? Delphi? Word VBA? SQL语句?
1 引言
传统试题库管理系统,都是基于文本型的关系数据库来组织信息和设计开发的。理工类专业试题可能以公式、表格、图形、图像等形式表现,因此用传统的方式开发此类专业试题库在存贮、显示试题时有很大的局限性。本文以笔者开发的某专业试题库系统为例介绍了如何开发含公式、图片的专业试题库。
某专业试题库系统是一套用于对《某专业考核试题库》丛书的试题进行计算机管理的应用软件。该系统主要实现丛书文档的批量数据录入、逐个数据录入、修改、检索;手工出题和自动出题;实现了网络化,使得用户可以在客户端进行远程训练、考试;能够跟Word兼容,处理公式和图片类试题;对系统用户统一管理,因人授予其使用功能和访问现有数据库的范围和权限。系统有如下功能模块:数据服务器、试题管理系统、远程训练考试系统。
2 技术指标
某专业试题库系统运用Delphi5.0作为前台开发工具,采用SQL Server97作为后台数据库,通过在Delphi程序中嵌入Word,实现对试题的编写。开发本课题的核心是试题管理系统的开发,重点是智能抽题部分,难点是实现与Word的结合处理含公式图片的试题、批量录入的实现和三层结构的实现。
? 软件的实现主要有以下技术指标:
⑴ 建立后台数据库.
⑵ 运用Delphi5.0动态生成SQL语句。
⑶ 通过跟Word 结合实现对试题的录入、显示。
⑷ 运用智能算法进行抽题。
⑸ 运用Midas技术实现网络功能。
⑹ 运用Word VBA技术实现批量试题录入
3 功能设计与实现
某专业试题库系统分为数据服务器、管理系统和远程训练考试系统三层。如图1所示。
图1? 总体设计
数据服务器:数据服务器是为客户端存放数据的服务器,为管理系统和客户端提供服务。
管理系统:管理系统是对《某专业考核试题库》丛书的试题进行管理的系统。主要完成系统设置、试题管理、抽题管理和权限设置。
远程训练考试系统:远程训练考试系统(即客户端)主要用于远程计算机调用服务器抽出的试题以及用户在远程进行训练。
3.1数据服务器的实现
数据交换服务器的关键部件是远程数据模块,它提供了IAppServer接口。客户机数据库应用程序通过IAppServer的AS_GetProviderNames以及ClientDataSet的ProviderName属性指定数据交换服务器上的DataSetProvider或Provider组件。
3.2管理系统的实现
管理系统是某专业试题库系统的核心,以下重点介绍批量数据录入、Word文档入库和智能抽题算法的设计与实现。
3.2.1? 批量数据录入
批量数据录入是指将规定格式的Word文档录入到数据库中。在每个试题编号前加一个@符号,在每一个答案前加一#作为标志。在文档的最后加一$,表示结束。
批量录入是系统实现的难点之一,它是应用Delphi5.0调用Word VBA来实现的,其流程如下图所示:
?
图2? 批量录入流程
其部分代码及其分析如下:
//循环开始,如果不是$继续循环
? while s[1]$ do
?? begin
??? j:=j+1;
??? pa:=wd1.Paragraphs.Item(j);
??? s:=pa.Range.Get_Text;
//判断是否@
??? if s[1]=@ then
??? begin
???? if j1 then
?????? begin???????
filename:=ExtractFileDir(Application.Exename)+\temp\tempa.doc;
??????? wd2.SaveAs(filename);
??????? wd2.Close;
??????? wd2.Disconnect;
//提取试题编号
???? stbh:=;
???? for i:=2 to 22 do
????? stbh:=stbh+s[i];
??? ??j:=j+1;
????? pa:=wd1.Paragraphs.Item(j);
????? pa.Range.Copy;
?????? quebool:=true;
????? //新建Word文档 并将跟内容粘贴
??????? wa1.Documents.Add(template,ne
原创力文档


文档评论(0)