逻辑三层结构 2.2.3 Delphi 7.0 的一些控件 (1) 数据控制类DataControl
(2) 数据访问类DataAccess 2.3 在Delphi中通过BDE连接数据库 2.3.1 BDE 概述 2.3.2 BDE原生对象 2.3.3 BDE 组件概要介绍 。。。。。。 (
很
多
个
组
件
的
介
绍
与
功
能
Table.query.stro,dateset,connrct,command等)
2.4 SQL 语言在Delphi中的运用
在Delphi中使用SQL语言非常方便,一般来说,都是通过Tquery组件来使用SQL语言的。可以在TQuery组件的SQL属性中设置SQL语句。设计程序时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以打开String List Editor对话框,然后我们就可以在对话框中添加SQL语句。还可以使用Delphi的SQL Builder来自动生成SQL语句,这样可以避免手工编写SQL而可能造成的语法错误。
静态SQL语句在程序设计时便已固定下来,它不包含任何参数和变量。
动态SQL语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态SQL语句:
Select * From Students Where StudentCode =: StudentCode;
其中的变量StudentCode便是一个参数变量,它由一个冒号引导,在程序运行过程中,必须要为该参数赋值,该条SQL语句才能正确执行,每次运行应用程序时可以为该参数变量赋
予不同的值。为参数赋值有三种方法:
①根据参数在SQL语句中出现的顺序,设置TQuery部件的Params属性值为参数赋值。 ②直接根据SQL语句中各参数的名字,调用ParamByName方法来为各参数赋值。 ③将TQuery部件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TQuery部件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。利用这种方法也能实现所谓的连接查询,创建主要—明细型数据库应用。
在程序运行过程中,要想设置TQuery部件的SQL属性,必须首先调用Close方法,关闭TQuery部件,然后再调用Clear方法清除SQL属性中现存的SQL命令语句, 最后再调用Add方法为SQL属性设置新的SQL命令语句。例如: Query1.Close {关闭Query1)
Query1.SQL.Clear {清除SQL属性中的SQL命令语句} Query1.SQL.Add('Select * From Students'); Query1.SQL.Add(' Where Name =\
在为TQuery部件设置SQL属性时调用Close方法总是很安全的,如果TQuery部件已经被关闭了,调用Close方法时不会产生任何影响。在应用程序中为SQL属性设置新的SQL 命令语句时,必须要调用Clear方法以清除SQL属性中现存的SQL命令语句,如果不调用Clear方法,便调用Add方法向SQL属性中设置SQL命令语句,那么新设置的SQL命令语句会追加在现存SQL命令语句后面, 在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。
在这里要特别注意的,一般情况下TQuery部件的SQL属性只能包含一条完整的SQL语句,它不允许被设置成多条SQL语句。当然有些数据库服务器也支持在TQuery部件的SQL属性中设置多条SQL语句,只要数据库服务器允许这样,我们在编程时可以为 SQL 属性设置多条SQL语句。
在为TQuery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后,可以有多种方式来执行SQL程序。
在设计过程中,设置完TQuery部件的SQL属性之后将其Active属性的值置为True, 这样便可以执行SQL属性中的SQL程序,如果应用中有与TQuery部件相连的数据浏览部件( 如TDDGrid TDBEdit等)那么在这些数据浏览部件中会显示SQL程序的执行结果。
在应用程序运行过程中,通过程序调用TQuery部件的Open方法或ExecSQL 方法可以执行其SQL属性中的SQL程序。Open方法和ExecSQL方法是不一样的。Open方法只能用来执行SQL语言的查询语句(Select命令), 并返回一个查询结果集,而ExecSQL方法还可以用来执行其它常用的SQL语句(如INSERT, UPDATE, DELETE等命令),例如: Query1.Open (这样会返回一个查询结果集)
如果调用Open方法,而没有查询结果时,会出错。此时应该调用ExecSQL 方法来代替Open方法。如:
Query1.ExecSQL (没有返回结果)
当然在设计应用程序时,程序设计人员是无法确定TQuery部件中的SQL 语句是否会返回一个查询结果的。对于这种情况应当用Try?Except模块来设计程序。在 Try 部分调用Open方法,而在Except部分调用ExceSQL方法,这样才能保证程序的正确运行。
Delphi中用ADOQuery来使用SQL语句同样十分方便。在ADOQuery组件中首先通过ConnectionString属性值来联接数据源,然后就通过双击SQL?属性值来写入SQL语句。在Delphi中调用数据库,就可以调用ADOQuery组件,通过修改其中的SQL?属性中的SQL语句来实现对数据库的各项操作。
值得注意的是,ADOQuery组件只有在激活的情况下才可以被正确地使用,这样就提出了一个问题,也就是说,在每次修改ADOQuery组件的SQL?属性时都必须先行进行关闭,待清除掉SQL?中所有的SQL语句后才可以添加新的SQL语句。而且,在每一次修改完成以后,还应该记得重新将ADOQuery激活。其它的使用方法与TTQuery有许多的相似之处。
2.5 本章小节
本章主要介绍了数据库的理论基础、数据库的开发工具Delphi和SQL语句在Delphi中的使用方法,数据库理论基础分析了数据库的设计过程中要遵守的规则和设计方法。数据库开发工具主要介绍了Delphi的特点和Delphi的DBE控件组,另外还简要介绍了SQL 在Delphi中的运用。
3 通用试卷生成系统的定义 3.1 问题的定义
随着教育教学改革的不断深入,/教考分离!试卷规范化! 标准化的呼声越来越高\如何实现之是许多教育工作者潜心 探讨的问题\而伴随着国家对教育发展投入的力度不断加大 和全社会信息化水平的不断提高,各级各类学校基本具备了实 现现代化信息管理的物质基础\因此,采用计算机信息管理系 统来解决/教考分离!试卷规范化!标准化的问题是一种行之 有效的方法\它不仅可以减轻人员的重复劳动,提高工作效 率,更是各学校实现考务自动化,管理数字化!信息化的标志\基于上述原因,本文给出了一个通用试卷生成系统的设计 方案\
其系统应包含以下特点与功能:
1、用SQL Server数据库,NT4.0或者Windows98操作系统以上。题
库可以自由维护、扩充,题库大小只受物理限制的存储容量。
2、限分明的管理操作系统,支持按操作者及题库权限进行操作,确
保题库的公共性与私有性。
3、题支持单项选择题,判断题,填空题,编程题等题型,用户可以
自由设置题型,试题内容包括内容,标准答案等属性,提供可以自由设置的试卷分类;多种试卷生成方式,可以设定参数自动生成或者手工选择试题,题库中自动抽取指定数量的试题或手工选取试题,也可以从某题库中每个题型各抽取多少分的试题,或者从多个题库中分别抽取指定数量的试题合成试卷,试卷生成的方式可以带答案、解答。
4、 义的试卷可以重新编辑、排序、删除、调整,可以自动生成一份
文档,也可以把现有的文档资料存到系统里,内容不受限制。
3.2 可行性分析
通用试卷生成系统是一个具有题库管理功能和出卷功能系统。可以将该系统分为题库管理系统和出卷系统两个模块来做,其中出卷系统又分为手工出卷和自动出卷两个子模块。题库管理模块应具有:查看题库,修改题库、新增题目、删除题目、章节管理、题型管理的功能。手工出卷让用户自己选择试题,当用户选择的试题存在重复(例如,同一道题选择了两次)或者有内容冲突(例如,同一知识点,在选择题中出现,又在填空题中出现)时,要能提示用户。自动出卷则是通过用户选择的生成试卷的条件,随机地选择试题,自动完成试卷的生成。
这种试题库系统的基本思想是按照“知识点”来构建试卷,主要是思路是依据教学大纲的要求,以课程的主干内容为主线,先把教学内容细致分解为一个个知识点,然后按大纲对各个知识点的要求掌握的层次,与题型、题量、难易度及各知识点间的馆包容性结合起来,作为该试题库系统构建试题的基本原则,以便计算机自动生成每份试卷、在考查点的分布上具有较强的科学性。
要实现基于知识点的试题库系统的试卷建构,首先必须研究从知识点角度对试题如何进行分类,并结合试题的类型赋予各种特征参数,使试题库编程符合科学化与规范化的要求。因此,参数的设置是否合理,对能否体现基于知识点建构试卷的思想.所建构试卷的质量,编程的工作量及运行效率都是直观重要的。
试卷生成模块是整个题库管理系统的核心。本系统的组卷是采用交互方式,即用户在输入各种要求后,系统会自动生成一份符合要求的试卷。组卷过程中系统会向用户依次询问以下信息:
(1) 要生成的试卷满分分数
(2) 是否考所有章的内容,若只是考部分章内容,还应输入所考章
的章号;