【网学提醒】:本文主要为网上学习者提供《电路与磁路》试题库系统设计,希望对需要《电路与磁路》试题库系统设计网友有所帮助,学习一下吧!
资料包括: 论文(58页23215字)
说明:摘 要
考试是检查最终教学成果的一种重要手段,而出考卷的成功与否与考试是否能达到预计目标有密不可分的关系,一套功能强大的试题库不仅可以使老师出题的工作得以减轻,同时也更具有客观性。
为了实现上述愿望,本文介绍的是《电路与磁路》试题库的设计,并在开发过程中介绍使用Delphi中的ADO(ActiveX Data Object)技术结合Sql Server 2000作为后台数据库开发试题库系统的流程,并着重介绍运用VBA(Visual Basic for Applications)技术开发出卷功能的方法。
本文为了使设计的思路更加清晰,易于理解,将通过结构化设计方法,按照可行性分析、需求分析、概要设计、详细设计、编写程序、测试的步骤进行开发,除了文字的叙述外,文中还绘有部分图形说明,如:数据流图、E-R图、系统流程图、
程序流程图等,并列举了制作过程的部分实例。
本文的可行性分析将根据题库系统的背景、开发技术和局限性分析来展开;需求分析阶段将阐述本系统能达到和要实现的要求,包括功能、界面和性能上的要求;概要设计阶段将会涉及到数据结构的具体设计;详细设计阶段会根据需求分析和概要设计两阶段所做的工作,来具体描述编码和处理流程;调试阶段将是描述开发本系统所遇到的
问题和具体解决办法;文章的结论部分叙述了本次设计的收获;文章的附录内容包括部分
程序及系统的使用说明。
关键词:题库系统;Delphi;ADO;VBA;结构化设计;
Abstract
Examination is a tape of important method that examine teaching harvest ultimately.Whether or not reaching to the scheduled target has got impartible relation with creating examination paper success in or not.One set of acid question bank not only could help teacher set question work succeed in relieve,but also present objectivity.
For realizing above desire,this article emphatically introduced the question bank’s exploitation of process and exploitation of critical technology throught Delphi ’s ADO (ActiveX Data Object) technology incorporation sql server 2000 by way of background database.And emphasizely introducing the VBA(Visual Basic for Applications)technology,which develop the creating paper of means.
In order to make the design of thinking clearly and understand it easily, this article will,according to feasibility analysis, demand analysis, scenario design, detailing, writer and test of step to design and develop this system. Besides the narration of the characters, this article still including some figures , for instance: Data Flow Diagram, E-R Diagram, system flow chart , procedure flow chart ,etc,and enumerate some examples of the facture’process.
The feasibility analysis of this article will according to background of question bank system、development technique and limitation unfold and depict.The require of system, including function, interface and ability could and should realizing,which will expound in demand analysis phase. The scenario design phase shouldst came down to the detailed design of data structure.According to both demand analysis and scenario design of phase, detailed design stage specifically describe encoding and treatment scheme. Bebug phase will be to describe develop these system that meet with problem and resolvent. In the section of the conclusion,it recounts the gain of the design,and this article’s appendix includes a little procedure and the explanation of the use.
Key words: question bank system; Delphi;ADO;VBA;structured design
引言
开发本软件之前,笔者在以前的学习当中接触过Delphi。借着本次毕业设计的机会,正好进一步提高自己的Delphi开发水平。而且在数据库的使用方面,鉴于笔者学习使用过Sql Server 2000,因此笔者选择了Delphi做为前台开发工具,Sql Server 2000作为后台数据库。笔者在借阅了大量关于这两种工具的书籍,之后又参考了一些现有的成品系统,比较其界面和功能,吸取其中精华的部分,在自己能力范围内,尽最大的努力来开发《电路与磁路》试题库系统。
本次开发《电路与磁路》试题库(以下都简称题库系统)的重点和难点在于自动出卷和打印试卷这两个功能的实现。自动出卷涉及到一个相对复杂的抽题算法。该抽题算法包括对试题的难度、范围、题型的控制以及分布。打印试卷的功能笔者起初想用报表的形式打印,但是在反复研究和学习后发现,发现报表输出的形式过于生硬,对打印机的型号参数有着一定的不兼容性隐患,且无法对其内容修改,所以笔者想到了对文字、图象格式处理功能及强的Microsoft Office Word。然而Borland Delphi和Microsoft Office Word又是两个不同公司的产品。因而,刚开始笔者特别担心这个技术指标能否得到比较圆满的解决。在开发的过程中笔者不断的对Borland Delphi与Microsoft Office Word结合技术进行研究,比较好的解决了Microsoft Office Word的接口编程问题,最终确定以Microsoft Office Word做为这次的软件开发试卷输出终端。
鉴于传统的试题库管理系统,都是基于文本型的关系数据库来组织信息和设计开发的。然而理工类专业试题可能以公式、表格、图形、图像等形式表现,因此用传统的方式开发此类专业试题库在存贮、显示试题时有很大的局限性。针对此问题,所以笔者使用Borland Delphi结合Windows画图
程序来解决含
图片的专业电路与磁路试题录入维护功能。
为此,本文将会分析Borland Delphi+Microsoft Sql Server 2000+Microsoft Office Word之间的融合技术和各自特点以及详细介绍本软件的开发流程。整个设计过程将遵循软件工程的可行性分析、需求分析、概要设计、详细设计、编码、测试、等步骤来进行,使得开发能够在一个思路十分清晰的条件下进行。
下面先简要介绍一下各章所述内容:第一章为绪论,介绍开发工具及开发技术;第2章为可行性分析,说明为什么会产生
计算机题库系统,及其产生的可行性,并说明了本次开发的软硬件配置及开发的系统环境;第3章进行系统需求分析,对整个系统进行了分析,并对数据库应用结构化分析方法进行了分析,且绘有相应的图形;第4章对系统进行概要设计,设计出系统的各个模块,并对各模块的功能进行简要介绍;第5章进行详细设计与程序实现,对整个系统和数据库分别作详细设计,即详细设计每个模块,并详述每一模块的功能,绘制数据库的相关图形及表格;第6章测试;第7章是对本次毕业设计的结论,包括收获及感想。附录内容是本系统的使用说明及部分
程序。
1 绪论
1.1 应用系统开发工具介绍
1.1.1 Delphi概述
Delphi是Borland公司研制的新一代可视化开发工具,可在Windows3.x、Windows95、WindowsNT等环境下使用。它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Delphi它提供了100多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。主要特点如下:
(1)直接编译生成可执行代码,编译速度快。由于Delphi编译器采用了条件编译和选择
链接技术,使用它生成的执行文件更加精炼,运行速度更快。在处理速度和存取服务器方面,Delphi的性能远远高于其他同类产品。
(2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。这样,大大减少了对服务器的请求和网络上的数据传输量,提高了应用处理的速度。
(3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。利用项目
模板和专家生成器可以很快建立项目的构架,然后根据用户的实际需要逐步完善。
(4)具有可重用性和可扩展性。开发人员不必再对诸如标签、按钮及对话框等Windows的常见部件进行编程。Delphi包含许多可以重复使用的部件,允许用户控制Windows的开发效果。
(5)具有强大的数据存取功能。它的数据处理工具BDE(Borland Database Engine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如xBase、Paradox等,也可以通过BDE的SQLLink直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。Delphi既可用于开发系统软件,也适合于应用软件的开发。
1.1.2 Delphi7.0VCL组件的体系结构
Delphi类可以粗略地分成两部分:一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对象通常出现在
程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。在Delphi中,每一个类的祖先都是Tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为Tobject类。这样,按照面向对象编程的基本思想,就使得用户可用Tobject类这个类型代替任何其它类的数据类型。实际上在Delphi的类库中,Tobject类派生出了为数相当众多的子类,它们形成了一个庞大的体系,通常情况下,如果不自行开发组件,就不必了解整个类的体系结构,只用到类层次树的叶结点就足够了。
这一小节简略介绍一下Delphi 7.0中VCL(可视化组件库)组件的体系结构。凡是做过程序开发的人都知道从来没有单纯的数据应用程序,也就是说,数据库应用程序必须和用户界面(可以是图形界面,也可以是命令接口)元素相结合,只讲界面或只讲数据库本身都构不成数据库应用程序,因而用Delphi 7.0开发数据库应用
程序就隐含着界面开发。
组件在Delphi程序的开发中是最显眼的角色。大家知道,在编写程序时一般都开始于在组件面板上选择组件并定义组件间的相互作用。但也有一些组件不在组件面板上,例如Tform和Tapplication(典型的非可视组件)。组件是Tcomponents派生出来的子类,可以流的形式存放在DFM文件中,具有事件和Publish属性。窗口组件类是窗口化的可视化组件类,在Delphi的类库中占有最大的份额。在实际编程中,窗口组件类的对象都有句柄,可以接受输入焦点和包含其它组件。图形组件与窗口组件并列,是另一大类组件。图形组件不是基于窗口的,因而不能有窗口句柄,不能接受输入焦点和包含其它组件。图形组件的基类是TgraphicControl,在实际编程中,它们必须寄生于它们的宿主——窗口组件类的对象,由它们的拥有者负责其显示,而且它们还能触发一些和鼠标活动相关的事件。图形控件最典型的例子是Tlabel和TspeedButton。由此可以看出图形组件的功能很弱,图形组件的用处何在呢?其实使用图形组件的最大好处在于节省资源,正是因为它们的功能较弱,所以使用的系统资源就要少。在一个应用程序中,如果能在不影响其功能的前提下合理大量地使用图形组件,将会大减少
程序对系统资源的消耗。
非可视组件是与可视组件相并列的另一类组件,非可视组件在
程序运行中是不可见的(除各种对话框组件之外,事实上有人认为对话框组件不能归入非可视组件,应该是另一种介于可视与非可视之间的组件)。
最后要说明一下,常说的控件实际上是一种组件。也就是说组件这个概念要大于控件,控件在内涵上包含于组件中。控件由Windows系列操作系统提出并使用,而组件是Borland和其它厂商在对Windows控件做了必要的扩展之后提出来的概念,它们是在不同时期由不同的厂商提出的概念。
1.1.3 Delphi7.0数据库组件介绍
用Delphi7开发数据库应用,重点是和各种数据库组件打交道,能和数据库挂钩的组件对象有5种,它们是:Session(数据库会话)、Database(数据库)、Dataset(数据集)、DataSource(数据源)、Data control(数据控制组件,也叫data-controls即数据感知组件)。其中前面4种统称为数据访问(Data Access)组件。
ADO组件 Delphi7.0包含了可以用来访问Microsoft公司的ActiveX Data Objects(ADO)格式数据库的组件。ADO是Micrsoft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完整解决办法。ADO的对象模型是所有数据访问接口对象模型中最简单的一种。Microsoft公司用来访问ADO数据的应用
程序界面技术是OLE DB。OLE DB是一种底层编程接口,用来访问许多不同类型的数据源,其中包括消息、文件系统以及其他一些非传统的数据源。OLE DB是一个由Component Object Model(COM)接口组成的集合,用来隐藏创建数据访问服务过程中的细节。OLEDB提供了访问任何数据资源的方法,包括相互关联的数据库和相互不关联的数据库、Email和文件系统、文本和图形以及用户定义的数据对象。
Delphi的ADO组件无需依靠BDE而是使用ADO技术,提供了可以通过数据控制组件访问数据的新方法。唯一的要求是在使用ADO组件时必须运行ADO/OLE-DB。ADO组件的使用使得DELPHI在访问数据的类型和采用的技术方面都有了很大的突破。
数据模块设计窗口 数据模块设计窗口是用来设计和维护数据模块的。数据模块设计窗口中包含了所有以.DTI作为文件扩展名的Data Diagram文件的信息。DTI文件在编译时不起任何作用。
1.1.4 MS SQL Server简述
SQL Server 是一个后台数据库管理系统,它功能强大操作简便,日益为广大数据库用户所喜爱。越来越多的开发工具提供了与SQL Server的接口。SQL Server 是一个关系数据库管理系统,它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的。于1988 年推出了第一个OS/2 版本,在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。
SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能、具有使用方便、可伸缩性好与相关软件集成程度高等优点。可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。MSSQL Server不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。事实上,SQL Server数据库处理的基本结构,采取关系型数据库模式,尽管如此,相信大家都可以轻易的发现,在SQL Server的数据库处理方式,则是使用面向对象的操作方式与精神,也就是说,SQL Server的所有功能,都可以基于系统已经建立好的一些对象来达成,是相当OO(面向对象)的一个系统结构。
SQL Server 企业管理器是 SQL Server 的主要管理工具,它提供了一个遵从 MMC 标准的用户界面,使用户得以:
定义 SQL Server 实例组;将个别服务器注册到组中;为每个已注册的服务器配置所有 SQL Server 选项;在每个已注册的服务器中创建并管理所有 SQL Server 数据库、对象、登录、用户和权限;在每个已
注册的服务器上定义并执行所有 SQL Server 管理任务;通过唤醒调用 SQL
查询分析器,交互地设计并测试 SQL 语句、批处理和脚本;唤醒调用为 SQL Server 定义的各种向导。
1.2 开发技术分析与融合实现
1.2.1 SQL语言介绍
SQL(Structured Query Language,结构
查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、Microsoft SQL Server、Access、 Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成绝大多数数据库的操作。MS SQL Server 就是用的Transact-SQL。
SQL语言有着非常突出的优点,主要是:非过程化语言;统一的语言;是所有关系数据库的公共语言
非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。
SQL不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,
查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。
统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用
程序员、决策支持系统人员及许多其它类型的终端用户。
SQL为许多任务提供了命令,其中包括:
查询数据;在表中插入、修改和删除记录;建立、修改和删除数据对象;控制对数据和数据对象的存取;保证数据库一致性和完整性。
以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。
所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。
1.2.2 数据库连接方式
Delphi连接数据库的主要方式有两种:一是:BDE ,二是ADO 。现在我们来大致比较一下这两种技术的优缺点:
BDE(Borland Database Engine)是Delphi颇具特色的数据库连接管理技术。凭借窗体和报表,BDE可以访问诸如Paradox,dBASE,本地InterBase服务器的数据库,也可访问远程数据库服务器上的数据库,如Oracle,SyBase,Informix等C/S数据库中的数据库,也可访问经ODBC可访问的数据库管理系统中的数据库。
ADO(ActiveX Data Objects)是微软提供的一项技术。通过ADO,可以方便的访问各种类型的数据库,特别是OLEDB数据库。ADO已成为访问数据库的新的标准接口。从Delphi 6.0开始Delphi添加了对ADO的支持,以便让用户能迅速实现对终端用户用来做商业决策的数据库的一致性访问,结合Delphi本身的开发式数据组件结构,程序员可以很快地建立应用程序,用来把自己的商业数据库通过Internet发送给客户,最终用户以及整个销售环节。通过ADO,Delphi 7.0也能让用户快速访问关系或非关系数据库以及E-Mail和商务文件系统。
这两者提供了几乎相同的功能,在进行产品开发时,势必要做一个精心的比较。虽然ADO技术提出的时间不长,并被定位为工业标准的,而且其在性能上由于当前没有良好的数据库引擎支持,其性能还不够完美,但是,我们应该要注意到Borland公司已经宣布停止发展BDE了,其性能被ADO超越也是迟早的事,因此,在开发长期应用的产品时,推荐采用ADO技术。这样还有另一个好处是,在进行产品分发时,可以避开大量BDE的链接库DLL的分发。
下面就具体地说说如何用ADO存取数据:
在实际编程过程中使用ADO的一个典型的存取数据的步骤为:
(1)连接数据源;(2)打开记录集对象;(3)使用记录集;(4)断开连接。
ADO定义了一个可编程的对象集合ADO对象模型如图1-1所示:
目录:引言 1
1 绪论 2
1.1 应用系统开发工具介绍 2
1.1.1 DELPHI概述 2
1.1.2 DELPHI7.0VCL组件的体系结构 2
1.1.3 DELPHI7.0数据库组件介绍 3
1.1.4 MS SQL SERVER简述 4
1.2 开发技术分析与融合实现 5
1.2.1 SQL语言介绍 5
1.2.2 数据库连接方式 5
1.2.3 DELPHI与WORD之间的融合技术 7
2 系统设计可行性分析及开发条件 10
2.1 开发试题库系统必要性 10
2.2 题库系统的可行性分析 11
2.3 硬件设备配置及系统开发环境 12
3 系统需求分析 12
3.1 需求分析 12
3.1.1 功能需求分析 12
3.1.2 系统界面要求 13
3.1.3 系统性能要求 14
3.1.4 数据需求分析 14
4 系统概要设计 15
4.1 数据合理性设计 15
4.2 程序流程图 15
4.3 数据库结构设计 17
4.3.1 数据字典 17
4.3.2 数据库表格 17
4.3.3 数据E-R图 18
5 系统详细设计与程序实现 19
5.1 功能模块实现过程 19
5.1.1 主窗体实现 19
5.1.2 试题维护的实现 19
5.1.3 指定选题的实现 21
5.1.4 自动选题的实现 23
5.1.5 试卷打印预览的实现 26
5.1.6 试卷分析的实现 28
5.1.7 数据库备份与还原的实现 29
6 调试与测试 29
6.1 程序调试 29
6.1.1程序出现的问题与解决方法 30
6.2 测试目的、环境及注意事项 31
6.3 测试 31
6.4 测试结果 32
7 结论 32
谢 辞 34
参考文献 35
附 录1 36
附 录2 41
参考文献: 唱江华.Delphi面向对象程序设计教程.北京:航空航天大学出版社,2003.
邱利芳.Delphi数据库编程自学教程.清华大学出版社,西蒙与舒斯特国际出版公司,1997.
魏志强.Delphi 5.0程序设计——数据库应用实务篇.中国铁道出版社,2000.
雷颖杰.精通Delphi6数据库程序设计.中国铁道出版社,2002.
清宏
计算机工作室.Delphi数据库开发.机械工业出版社,2000.
清宏
计算机工作室.Delphi编程技巧.机械工业出版社,2001.
李之明.Delphi组件经典解析.中国铁道出版社,2003.
李长云.Delphi 6分布式软件开发应用实例.国防科技大学出版社,2002.
邓良松.软件工程.西安电子科技大学出版社,2000.
(美)C.J.Date. An introduction to database systems.机械工业出版社,2002.
SQL Server2000数据库设计与实现[M]. 北京:清华大学出版社,2001
作者点评: 经过三个多月的紧张工作和学习,毕业设计已经告一段落。顺利得完成了《电路与磁路》试题库设计开发这一课题。该软件达到了界面简洁大方、操作方便、功能稳定的要求,并且在试卷打印功能和自动抽题的功能方面做得较好,真正达到实用的预期效果。
笔者在设计和开发的过程中不仅较好地掌握了Delphi基于数据库方面的应用、巩固了笔者对SQL Server数据库的掌握,提高了笔者的自学能力和解决问题的能力,更为重要的是学会了在实践中学习的方法。
在毕业设计之前,总觉得自己大学四年就只学了一堆理论,只会纸上谈兵,这次设计对笔者来说是一次很好的实践和锻炼。从设计一开始,笔者就从软件工程的角度出发,按其开发过程来展开;由于是第一次做比较大的系统,加上笔者在开发工具方面知识欠缺,调查研究后仍是很迷茫,不知如何下手;在老师和同学的指导下,选定了开发工具、明确了设计内容;经过这个过程,笔者深刻得体会到在实践中去学习、摸索,联系实际来学习新知识是最有效的学习方法。
有了目标,在实际的设计和开发过程中仍会遇到的这样那样的困难。在一步步把困难抛到身后时,笔者体会到:
第一:要有信心,问题总会得到解决的。遇到问题时不要心急,要有正确的处理态度和方法,应认真翻阅相关书籍、上网查阅相关
资料、向老师同学请教。遇到问题并能解决问题,这样自己的能力才会不断得到提高。
第二:对系统的开发而言,之前的计划是十分重要的。千万不可以边做边想。那样做不仅节省不了时间反而浪费了更多的时间。一个好的计划是必不可少的。这样做往往更能提高效率。
第三:不要被工作进行中的小收获冲昏了头脑,从而导致由于疏忽大意而毁掉整个工程的结果,所以在整个工程完工前必须保持冷静与清醒。
第四:编程遇到的困难往往不在程序设计思想本身,要仔细。在编码的时候,经常并不是想错了,多半是打错了。碰到这种情况时错误还很难找到。这时就要仔细的多看看,不要一下就否决了刚刚想到的思路,没准恰恰这个思路是对的,而只是别的地方出了问题。
第五:在一个模块实现后,要赶快选取不同的数据对其进行测试,尽快地发现问题解决问题;几个模块实现后就把它们连接起来测试,这样对以后的开发更有帮助。
经过这几个月的时间,笔者了解到一个系统从计划、设计到实现,是一个完整的体系,每一环都是必不可少的。要做好一个系统,关键不是在编码过程,而是在前期的计划和设计。只有计划和调研搞好了,才不会在开发的过程中经常性地返工,从而更大地提高工作的效率。
经过这次对《电路与磁路》试题库系统的设计和开发,笔者了解了如何用Delphi和SQL Server开发系统,最为重要的是积累了使用软件工程的思想来开发软件的经验,这对于笔者以后的学习和工作来说将是一笔宝贵的财富。