首页 [电脑基础知识]第2章 数据结构和算法

[电脑基础知识]第2章 数据结构和算法

举报
开通vip

[电脑基础知识]第2章 数据结构和算法[电脑基础知识]第2章 数据结构和算法 第2章 数据结构和算法 本章主要考察的内容是: 1 .算法的基本概念 (1) 算法的定义 (2) 算法的特点 (3) 算法的复杂度 2(数据结构的基本概念 3. 线性结构与非线性结构 (1) 线性表及其顺序存储结构 (2) 栈及其基本运算 (3) 队列及其基本运算 (4) 线性链表 4. 树的基本概念和特征 (1) 二叉树的基本概念及其特性 (2) 二叉树的遍历 5. 查找技术 (1) 顺序查找 (2) 二分法查找 6. 排序技术 (1...

[电脑基础知识]第2章  数据结构和算法
[电脑基础知识]第2章 数据结构和算法 第2章 数据结构和算法 本章主要考察的内容是: 1 .算法的基本概念 (1) 算法的定义 (2) 算法的特点 (3) 算法的复杂度 2(数据结构的基本概念 3. 线性结构与非线性结构 (1) 线性表及其顺序存储结构 (2) 栈及其基本运算 (3) 队列及其基本运算 (4) 线性链表 4. 树的基本概念和特征 (1) 二叉树的基本概念及其特性 (2) 二叉树的遍历 5. 查找技术 (1) 顺序查找 (2) 二分法查找 6. 排序技术 (1)交换类排序法 (2)插入类排序法 (3)选择类排序法 历年的全国计算机等级考试的笔试中,数据结构和算法部分的分值约占10-15%,本章 历年的考题分布情况如表2-1所示: 表2-1 程序设计基础部分历年考题分数分布表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 2 2 算法的定义 2 2 算法的特点 2 4 2 2 10 算法复杂度 2 2 4 2 10 栈、队列 2 2 2 2 8 数据结构 2 2 2 2 8 树的基本概念和特征 4 2 4 4 14 查找技术 2 2 2 6 排序技术 合计 10 14 12 10 14 60 由表2-1可知,在历年的笔试考试中,考试的关键点主要是算法、数据的存储结构、 树和排序。 2.1.1算法 考点1:算法的基本概念 所谓算法是指对解题方案准确而完整的 描述。 在2005年4月的考试中以选择题的形式如果一个问题可以通过一个计算机程序,考查了该考点内容。今年针对该考点出在有限的存储空间内运行有限长的时间而得题的几率较高,题型可能是选择题也可到正确的结构,则称这个算法是可解的。算法能是填空题,考生应重点掌握该考点的既不是程序,也不是解题方法。程序可以作为相关概念。 算法的一种描述,由于在编写程序时要受到计 算机系统运行环境的限制,因而,程序的编制 一般不会优于算法的设计。 ? 算法的基本特征包括以下几点。 ? 可行性。 ?确定性。算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性。 ? 有穷性。算法必须能在有限的时间内做完,能在执行有限个步骤后终止,这包括合理的执行时间的含义。 ? 足够的情报。 以下两个基本要素。(2) ?对数据的运算和操作。算法实际上是按照解题要求从环境能进行的所有操作中选择合适的操作所组成的一组指令序列。一个计算机系统能执行的所有指令的集合称为该计算机系统的指令系统。在一般的计算机系统中,基本操作包括算术运算、逻辑运算、关系运算和数据传输。 ?算法的控制结构。算法中各操作之间的执行顺序称为算法的控制结构。算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。一个算法一般都可以及顺序、选择、循环3种基本控制结构组合而成。算法设计的基本方法包括列举法、归纳法、递推、递归、递推技术、回溯法。 例2.1 (2005年4月填空题第5题) 问题处理方案的正确而完整的描述称为_______。 【解析】 所谓算法是指对解题方案的准确而完整的描述。 【答案】 算法 例2.2 在计算机中,算法是指_______。 (A)查询方法 (B)加工方法 (C)对解题方案的准确而完整的描述(D)排序方法 【解析】请参照配音“考点破解1” 说明。 【答案】C 例2.3 算法一般都可以用哪几种控制结构组合而成_______。 (A)循环、分支、递归 (B)顺序、循环、嵌套 (C)循环、递归、选择 (D)顺序、选择、循环 【解析】请参照本章“考点破解1”的说明。 【答案】D 例2.4 在下列选项中,哪个不是一个算法应该具有的酝酿特征_______。 (A)确定性 (B)可行性 (C)无穷性 (D)拥有足够的情报 【解析】算法的基本特性能般包括了确定性、可行性、有穷性和拥有足够的情报。 【答案】C 例2.5 下面关于递推和递推算法描述正确的是_______。 (A) 不会出现既可以归纳为递推算法,又可以归纳为递归算法的实 际问题 (B) 递归算法和递推算法基本相同 (C) 递归算法执行效率比递推算法低 (D) 递推算法分为直接递推算法与间接递推算法 【解析】从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果的算法称为递推算法,递推算法实际上属于归纳法。人们为了降低问题的复杂度,一般总是将问题逐层分解,最后归纳为一些简单的问题,这个过程一直做下去,直到出现最简单的问题为止。有些实际问题,既可以归纳为递推算法,也可以归纳为递归算法,但递推和递归实现的方法大不一样。递推是从初始条件开始,逐次推出所要求的结果,而递归则是算法本身到达递归边界的。递归算法比递推简单,但递归算法执行效率较低。 【答案】C 自测题 可用“2.2过知精练”中的选择题第1,2题以及填空题1,2题进行自测。 考点2 :算法复杂度 算法的复杂度主要包括时间复杂度和窨复杂度。 1. 算法的时间复杂 所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 算法的工作量用算法所执行的基本运算次 数来试题,而算法所执行的基本运算次数是问题 该考点的命题重点是“算法复杂度”的规模的函数,即 概念,出题类型以填空题居多。在2004算法的工作量=ƒ (n) 年9月、2005年4月和2005年9月的其中n是问题的规模。 考点中都考核了本考点的相关知识。考在同一问题规模下,如果算法执行所需的基 生必须掌握该考点的相关概念。 本运算次数取决于某一特定输入时,可以用以下 两面三刀种方法来分析算法的工作量。 ? 平均性态分析(Average Behavior)这是 指用各种特定输入的基本运算次数的带权平均 值来度量算法的工作量。 设χ是所有可能输入中的某个特定输入,p(χ)是χ出现的概率(即输入为χ的概率), t(χ)是算法在输入为χ时所所的酝酿运算次数则算法的平均性态定义为: A(N)=?p(χ)t(χ) X?Dn 其中,D表示当规模为n时,算法执行时所有可能输入的集合。 n 其中,D表示当规模为n时,算法执行时所有可能输入的集合。 n ? 最坏情况复杂性(Worst-Case Complexity)。这是指在规模为n时,算法所执行的基本运算的最大次数。它定义为: W(n)=max{t(χ)} χ?D n 显然,W(n)的计算要比A(n)的计算方便得多。由于W(n)实际上是给出了算法工作量后个上界,因此,它比A(n)更且有实用价值。 2(算法的空间复杂度 一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。 一个算法所占用的存储空间包括算法程序所上的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序势利过和中的工作单元以及某种数结绝民需要的附加存储窨。如果客外空间量相寻于问题规模来说是常数,则称该算法是原地(In Place)工作的,在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。 例题精解 例2.6(2005年9月填空题第2题) 算法复杂度主要包括时间复杂度和,,,复杂度。 【解析】请详见“考点破解2。” 【答案】空间 例2.7(2004年9月填空题第1题) 如果一个算法的额外空间量相对于问题规模来说是常娄,刚称该算法是,,,工作的。 【解析】请详见本章“考点破解2。” 【答案】原地 自测题 可用“2.2过关精练”中的选择题第3,4题、填空题第3,4题进行自测。 2.1.2数据结构的基本概念 考点3:数据结构的基本概念 数据结构是指相互有关联的数据据元素的集合。‘ 数据结构是一门研究在非数值计算的程序设 计问题中,计算机的数据元素以及它们之间的关系 该考点的相关试题在2005年9月和和运算的学科。数据结构作为计算机的一门学科, 2005年4月的考试中均有出现,考生 需要重点掌握。 主要研究以下3个方面的问题: 1( 数据的逻辑结构 所谓数据的逻辑结构,是指所是非曲直数据元素之间逻辑关系的数据结构。它包括两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了D 中各数据元素之间的前后 件关系,通常记为R。于是,一个数据结构可以表示成B=(D,R),其中B表示数据结构。 数据的逻辑结构包含: ?表示数据元素的信息; ?表示各数据元素之间的前后件关系。 2( 数据的存储(数据的物理结构) 所谓数据的存储结构,是指数据的逻辑结构在计算机存储空间中的存放形式(也称数据的物理结构)。 一般来说,一种数据的逻辑结构根据需要可以表示为多种存储结构,常用 的存储结构有顺序、链接下来索引等存储结构。采用不同的存储结构,其数据处理的效率是不同的。 3( 各种数据结构的运算 对各种数据结构进行的运算有检索、排序、插入、删除等。 例题精解 例2.8(2005年4月选择题第1题) 数据的存储结构是指,,,。 (A)存储在外存中的数据 (B)数据所占的存储空间 (C)数据在计算机中的顺序存储方式 (D)数据的逻辑结构在计算机中的表示 【解析】请详见本章“考点破解3” 【答案】D 例2.9(2004年9月填空题第2题) 数据的逻辑结构在计算机存储控件中的存放形式称为数据的,,,。 【解析】请参照“考点破解2”中关于存储结构的定义解答本题。 【答案】存储结构 或 物理结构 或 物理存储结构 例2.10(2004年9月选择题第1题) 下面叙述正确的是,,,。 (A) 算法的执行效率与数据的存储结构无关 (B) 算法的窨复杂度是指算法程序中指令(或语句)的条数据 (C) 算法的有穷性是指算法必须能执行有限个步骤之后终止 (D) 以上三种描述都不对 【解析】采用不同的数据存储结构,数据昝的效率是不同的。 【答案】C 例2.11数据的逻辑结构包含了表示数据元素的信息和,,,。 【解析】请详见本章“考点破解3” 【答案】表示各数据元素之间的前后关系 例2.12数据的结构包数据的,,,结构和数据的存储结构。 【解析】请参照本章“考点破解2”相应说明解答本题。 【答案】逻辑 自测题 可用“2.2过关精练”中的选择题第5,9题、填空题第5,7题进行自测。 考点4 :线性结构与非线性结构 根据数据结构中各元素之间前后件关第的复杂性 程度,一般将数据结构分为线性表和非线性表。 该考点命题重点是线性结构和线如果一非空的数据结构满足下列两个条件,则称 性表的概念,试题类型以选择为该数据结构为线性结构(线性结构又称为线性表)。 主。在2005年9月和2004年9? 有且只有一个根结点。 月的考试中都考查过该考点,因? 每一个结点最多有一个前件,也最多有一个后 而考生应重点掌握该考点的相关件。 概念。 在一个线性结构中插入或删除任何一个结点后还 就是线性结构。 如果一个数据结构不是线性结构,刚称之为非线 性结构。 例题精解 例2.13(2005年9月选择题第4题) 下列叙述中正确的是,,,。 (A)一个逻辑数据结构只能是一种存储结构 (B)数据的逻辑结构属于线性结构,存储结构属于非线怀结构 (C)一个逻辑数据结构可以有多个存储结构,且各种存储结构不影响数据处理的效率 (D)一个逻辑数据结构可以有多个存储结构,且各种存储结构影响数据昝的效率 【解析】请详见本章“考点破解3” 和“考点破解4” 【答案】D 例2.14(2004年9月选择题第2题) 以下数据结构中不属于线性数据结构的是,,,。 (A)队列 (B)线性表 (C)二叉树 (D)栈 【解析】二叉树可以有多个后件,所以二叉树不是线性表。 【答案】C 自测题 可用“2.2过关精练”中的选择题第10题进行自测。 2.1.3 线性表及其顺序存储结构 考点5 :线性表的基本概念 线性表由一组数据元素构成,数据元素在线性天中的位置只取决于它们自己的序与,即数据元素之间的相对位置是线性 的。 该考点的命题重点是线性表的基 本结构特征,近几次考试中还没 有考查过该考点。 ?非空线性表具有如下 一些结构特征: ?有且只有一个根结点a ,它无前件; 1 ?有且只有一个终端结点a,它无后件; n 除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。 线性表中结点的数n称为线性表的长度。当n=0时,称为空表。 例题精解 例2.15下列关于线性表的叙述不正确的是,,,。 (A)矩形是一个线怀表 (B)在稍微复杂的线性表中,一个数据元素还可以由若干个数据项组成 (C)在线性表中,除了第一个元素外,其他元素有且只有一个前件 (D)线性表中所有元素有且只有一个后件 【解析】在线性表,终点是没有后件的,D选项叙述错误。 【答案】D 自测题 可用“2.2过关精练”中的选择题第11题以及填空题第8题进行自测。 考点6:线性表顺序存储的特点及远处 在计算机中存放线性表,一种最简单的方法是顺序存储,也称为顺序分配。 线性表的顺序存储结构具有以下两个基本特点: ?线性表中所有元素所占的存储空间是 连续的; 该考点至今没有考查过,但不排除针对 ?线性表中各数据元素在存储空间中是此考题出题的可能。请着重掌握线性表按逻辑顺序依次存放的。在线性表的线性存储顺序存储的两个基本特点。 结构下,可以对线性表进行插入、删除、查找 、 排序、分解、合并、复制和逆转等操作。 例题精解 例2.16 在下面关于线性表的叙述中,选出正确的一项,,,。 (A) 线性表的每个元素都有一个直接前趋和直接后继 (B) 线性表中至少有一个元素 (C) 线性表中的元素必须按递增或递减的顺序排列 (D) 除第一个元素和最后的个元素外,每个元素都有一个直接前趋和直接后继 【解析】线性表的头结点没有前趋结点,尾结点没有后继结点,所以选项A错误,选项D正确。没有元素的线性表称为空表,所以选项B错误。根据线性表的定义可在线性表中的元素不一定是有序排列的,所以先项C也错误。 【答案】D 例2.17 若某线性表中最常用的操作是取第n 个元素的前趋元素,则采用,,,存储方式最节省时间。 (A) 顺序表(B)单链表 (C)双链表 (D)单环链表 【解析】在线性表的顺序存储结构中,其前后件两个元素在存储空间中最紧邻的,且前件元素一定存储在后件元素的前面。在第I个元素的前趋元素定位上,采用顺序表的存储方式最节省时间。 【答案】A 自测题 可用“2.2过关精练”中的选择题第12题以及填空题第9题进行自测。 2.1.4 栈及其基本运算 考点7 :栈 栈(stack)是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的一端称为栈底。栈顶元素总 是最后被插入的元素,也是最先能被删除的元素;栈底元素 总是星先被插入的元素,也是最后能被删除的元素即栈是按该考点的命题重点是栈的概念与栈的基照“先进后出”(FILO-First In Last Out)或“后进先出”本运算,出题类型以选择题主为。在2005(LIFO-Last In First Out)的原则组织数据的,因此,栈也被年的两次考试中都考核了该考点,考生称为“先进后出”表或“后进先出”表。由此可以看出,栈需要重点掌握。 具有记忆作用。 栈有以下3种基本运算。 ?栈运算:插入元素。 ?栈运算:删除元素。 ?栈顶元素:将栈顶元素赋给一个指定的变量,些时指针无变化。 例题精解 例2.18(2005年9月选择题第3题) 下列关于栈的描述正确的是,,,。 (A) 在栈中只能插入元素而不能删除元素 (B) 在栈中只能删除元素而不能插入元素 (C) 栈是特殊的线性表,只能在一端插入或删除元素 (D) 栈是特殊的线性表,只能在一端插入元素,而不能在另一端删除元素 【解析】栈是限定在一端进行插入与删除的本性表,因此只有选项C的说法是正确的。 【答案】C 例2.19(2005年4月选择题第2题) 下列关于栈的描述错误的是,,,。 (A)栈是先进后出的线性表 (B)栈只能顺序存储 (C)栈具有记忆作用 (D)对栈的持入与删除操作中,不需要改变栈底指针 【解析】顺序存储是线性表的一种最简单的存储方法,并不是惟一的存储方法。 【答案】B 例2.20 栈底至栈顶依次存放元素A、B、C、D,在第5个元素E入栈前,栈中元素可以出栈,刚出栈序列可能是,,,。 (A)ABCED (B)DBCEA (C)CDABE (D)DCBEA 【解析】栈(Stack)是限定在一端进行插入与删除的本性表,出栈操作只能是“先进后出”。本题中,如果没有E进栈,栈原来元素的出栈面序只能是D、C、B、A。这样包括第5个元素E在内的出栈顺序可以为EDCBA、DECBA、DCEBA、DCBEA、DCBAE共5种出栈序列。 【答案】D 自测题 可用“2.2过关精练”中的选择题第13,18题以及填空题第12,14题进行自测。 考点8 :队列 队列(queue)是指允许在一端(队尾)进行插入,而在另一端(队 头或排头)进行删除的线性表。通常,指向队尾的指针称为队尾指针 (rear),指向排头的指针称为排头指针(front)。 该考点的命题重点是队列与循环队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。 队列的概念,以及队列的基本运在实际应用中,队列的顺序存储结构一般采用循环队列的形式,算。出题类型以选择题或填空题。所谓盾环队列,就是将队列存储空间最后一个位置绕到第一个位置,在2005年9月的考试中以填空题形成逻辑上的环状空间,供队列循环使用。 考核了该考点。 循环队列运算有以下两类: ?人队运算:从队尾插入一个元素; ?退队运算:从队头删除一个元素。 例题精解 例2.21(2005年9月填空题第5题) 数据结构分为逻辑结构和存储结构,循环队列属于,,,结构。 【解析】循环队列是从其存储结构上来说的。从其定义上可知,循环队列属于存储结构。 【答案】存储 或 物理 例2.22 下列关于队列的叙述中正确的是,,,。 (A)在队列中只能插入数据 (B)在队列中只能删除数据 (C)队列是先进先出的线性表 (D)栈是先进先出的线性表 【解析】队列是先进先出的线性表,栈是先进后出的线性表,栈和队列是两个不同的存储结构。 【答案】C 例2.23 栈和队列的共同点是,,,。 (A)都是先进后出 (B)都是无进先出 (C)只允许在端点处插入和删除元素 (D)没有共同点 【解析】栈为先进后出,队列为先进先出,因此选项A、B都错误。根据本章“考点破解7”和“考点破解8”关于栈和队列的定义可知,C选项正确。 【答案】C 例2.24 对于队列只能在,,,分别插入和删除元素。 【解析】队列(queue)是指允许在一端进行插入,而在另一端进行删除的线性表。允许插入的一端称为队尾,。通常有一个称为队尾指针(rear)的指针指向队尾元素即尾指针决是指向最后被插入的元素;允许删除的一端称为排头(也称为队头),通常也用一个排头指针(front)指向排头元素的前一个位置。 【答案】队尾和队尾 例2.25 一个队列的入列序列是1,2,3,4,则队列的输出系列是,,,。 (A)4,3,2,1 (B)1,2,3,4 (C)1,4,3,2 (D)3,2, 4,1 【解析】队列中允许在一端(队尾)进行插入,而在另一端(队头或排头)进行删除。在队列的这种结构中,最先插入的元素将最先能够疲删除,反之,最后插入的元素将最后 才能被删除。也就是说在队列中要“先进先出”,所以本题中队列的输出序列是1,2,3,4。 【答案】B 自测题 可用“2.2过关精练”中的选择题第19,22题、填空题第14,18题进行自测。 2.1.5 线性链表 考点破解9 线性链珍基本概念 1( 线性链表 线性表的链式存储结构称为线性链表。 为了适应线性表的链式存储结构,计算机存储空间被 划分为一个一个小块,每一个小块占若干字节,通常称这 该考点的命题重点是线性链些小块为存储结点。 表的存储特点,在2005年4为了存储线性表中的每一个元素,一方面要存储数据 月的考试中考查了线性表的元素的值,另一方面要存储各数据元素之间的前后件关 基本特点。该考点是本章重系,需要将存储空间中的每一个存储结点分为两部分:一 点,请掌握相关概念。 部分用于存储数据元素的值,称为数据域;另一部分用于 存放下一个数据元素的存储序号(即存储结点的地址), 即指向后件结点,称为指针域。一般来说在线性表的链式 存储结构中,各数据结点的存储序号是不边续的,并且各 结点在存储空间中的位置关系与逻辑关系也不一致。 当线性链表每一个结点只有一个指针哉时,由这个指针只能找到后件结点,但不能找到前件结点。对应的线性链表中的每个结点都设置两个指针,一个称为左指针(Llink)用以指向其前件结点,另一个称国右指针(Rlink),用以指向后件结点。这样的线性表称为双向链表。 2( 带栈的队列 与栈类似,队列也是线性表,也可以采用链式存储结构。 例题精解 例2.26(2005年4月选择题第5题) 下列对线性链表描述正确的是,,,。 (A) 存储空间不一定连续,且各元素的存储顺序是任意的 (B) 存储空间不一定连续,且前件元素一定存储在后件元素的前面 (C) 存储空间必须连续,且前件元素一定存储在后件元素的前面 (D) 存储空间必须连续,且各元素的存储顺序是任意的 【解析】一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系也不一致,各元素之间的前后关系是由各结点的指针来指示的。 【答案】A 例2.27 在下面关于线性表的叙述中,选取出正确的一项,,,。 (A) 采用链接存储的线性表,必须占用一片连续的存储单元 (B) 采用顺序存储的线性表,便于进行插入和删除操作 (C) 采用链接存储的线性表,不必占用一片连续的存储单元 (D) 链接和顺序存储线性表,都便于进行插入和删除操作 【解析】一般来说在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,所以选项A叙述错误。采用顺序存储的线性表不便于进行插入和删除操作。这是链接与顺序存储器的不同,链接便于插入、删除。 【答案】C 自测题 可用“2.2过关精练”中的选择题第23,27题以及填空题第19,22题进行自测。 考点10: 线性链表基本运算 线性链表的基本运算主要有:插入、删除、合并、分解、逆转、复制、排序和查找。 例题精解 该考点至今未考查过,其内容难度较例2.28 单链表的每个结点中包括一个指针link,它指向该大,读者了解相关的概念即可。 结点的后继结点。现要将如图2.2所示的指针q指向的新结点插入到 指针p指向的单链表结点之后,下面的操作序列中正确的是,,,。 (A)q:=p^.link;p^.link=q^.link; (B)p^.link:=q^.link;q:=p^.link; (C)q^.link:=p^.link;p^.link:=q; (D)p^.link:=q;q^.link:=p^.link; p head info info Info o „ „ info q 图2.2 例2.28图 【解析】根据题意需要从指针p指向的结点的link 指针外断开,把p处的link指针指向q指针指向的 结点,而q指针指向的结眯的link 指针指向的是原p指针指向的结点link 指针指向的结点。在操作过程中要注意赋值的先后顺序,否则某些值会丢失。选项A,语句q:=p^.link错误,该语句导致q指针指向的结点数据丢失,并且使指针q指向了p指针指向结点的下一个结点,不符合题意。选项C,正确。选项D,语句p^.link:= q^.link将一空指针值赋值给了p指针指向的结点的link指针,错误。选项C,正确。选项D,语句p^.link:=q导致p指针指向结点的link指针中的值丢失,虽然使该结点指向了q,但在第2条语句q^.link:=p^.link 中两个值已经相同,无法满足题意的要求。 【答案】C 考点11: 循环链表及其基本计算 循环链表的结构具有以下两个特点: ?在循环链表中增加了一个表头结点, 其数据域为任意或者可根据需要来设置,指该考点的命题重点是循环链表的概念,试针域指向线性表的第一个元素的结点,循环题类型可能是选择题主为或者填空题,近链表 头指针指向表头结点。 几次考试中都没有考到该考点的相应内 ?循环链表中最后一个结点的指针域容。 不为空,而是指向表头结点。即在循环链表 中,所有结点的掼针构成了一个环状状链。 例题精解 例2.29循环链表的主要优点是,,,。 A) 不再需要头指针了 (B) 已知某个结点的位置后,能够容易找到它的直接前趋 (C) 在进行插入、删除运算时,能更好地保证链表不断开 (D) 从表中任一结点出发都能扫描到整个链表 【解析】 循环链表中,所有结点的指针构成了一个环状链,这种结构的主要优点是从表中任一结点出发都能扫描到整个链表。 【答案】D 自测题 可用“2.2过关精练”中的选择题第28题以及填空题第23,24题进行自测。 考点12: 树的基本概念和特征 树(tree)是种简单的非线性结构,所有元素之间 具有明显的层次特性.在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根.每一个结点可以有多个后件,称为该结点的子结点.没有后件的结点称为叶子结点。 在树结构中,一个结点所拥有的后件的个数 称为该结点的度,所有结点中最大的度称为树的 度。树是一种层次结构,根结点在第1层,同一该考点的命题重点在于树的基本概念层上民有结点的子结点都有下一层。树的最大层和如何在计算机中使用树结构表示算次称为树的深度。 术表达式。出题类型可以为选择题或填 空题,该考点还没有考核过。 在计算机中,可以用树结构来表示算术表达式。用树来表示算术表达式的原则如下: ?表达式中的每一个运算符在树中对应一个结点,称为运算符结点; ?运算符的每一个运算对象在树中为该运算符结点的子树(在树中的喘序为从左到右); ?运算对象中的单变量均为叶子结点。 例题精解 例2.30树最适合用来表示,,,。 (A)有序数组元素 (B)无序数组元素 (C)元素之间具有分支层次关系的数据 (D)元素之间无联第的数据 【解析】树是一种简单的非线性结构,在树的数据结构中,所有数据元素之间的关系具 有明显的层次特性,是一种层模型。层次模型是最早发展起来的数据库模型。 【答案】C 自测题 可用“2.2过关精练”中的选择题第29题以及填空题第25,27题进行自测。 考点13 : 二叉树的基本概念及其特 性 该考点的命题重点是二叉树的结点计二叉树的定义是一个递归的定义,其根的左子树 算。命题类型可为选择题或者填空题。和右子树又是二叉树。最简单的二叉树是空二叉树。 在2005年的两次考试中以及2004年的?二叉树有以下两个特点: 考试中都考核了该考点,考生需要重点?非空二叉树只有一个根结点; 掌握。 ?每一个结点最多有两棵子树,且分别称为该结 点的左子树与右子树 ?二叉树有以下基本性质。 k-1?在二叉树的第k 层上,最多有2(k?1)个结点; m?深度为m的二叉树最多有2-1个结点; ?在任意一个二叉树中,度为0的结点(即叶子结点)总是比度为2的结点一个; ?具有n 个结点的二叉树,其深度至少为[logn]+1,其中[logn]表示取logn的整数部222 分。 ?完全二叉树和满二叉树。 完全二叉树是指除最后一层外,每一屋上的结点数均达到阳大值,在最后一层上只缺少 右边的若干结点。 完全二叉树还具有以下两个性质: ?具有n个结点的完全二叉树的深度为[logn]+1; 2 ?设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然 数1,2,„„n给结点进行编号(k=1,2„„n),有以下结论: , 若k=1,则编号为根结点,它没有父结点;若k>1,则该结点的父结点编号为INT(k/2); , 若2k?n则编号为k的结点的右子结点编号为2k;否则该结点无子结点(也无右子结点); , 若2k+1?n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结 点。 k-1满二叉树是指除最后一层外,每一层上的所有结点有两个结点,则在第k层上有2, m深度为m满二叉树有2-1个结点。 二叉树存储结构采用链式存储结构,对于满二叉树与完全二叉树可以按层序进行顺序存 储。 例题精解 例2.31(2005年9月填空题第4题) 一棵二叉树第6层(根结点为第1层)的结点数最多为,,,个。 【解析】一棵二叉树的根结点为第1层,那么这棵二叉树第n层上的结眯数最多为n-152,也就是说它的第6层上的结点数量最多为2,即32。 【答案】32 例2.32(2005年4月填空题第1题) 某二叉树中度为2的结点有18个,则该二叉树中有,,,个叶子结点。 【解析】任一棵二叉树中,度为0的结点(即地子结点)总是比度为2的结点多一个 【答案】19 例2.33(2005年9月选择题第3题) 在一棵二叉树上第5层的结点数最多是,,,。 (A)8 (B)16 (C)32 (D)15 k-1【解析】二叉树性质已经明确说明“在二叉树的第k 层上,最多有2(k?1)个结点”, 4在二叉树的第5层上的最多结点数为2=16 【答案】B 自测题 可用“2.2过关精练”中的选择题第30,35题以及填空题第28,34题进行自测。 考点破解14 二叉树的遍历 二叉树的遍历是指不重复地访问二叉树的所有结点。 二叉树的遍历分为下面三种: ?前序遍历(DLR),首先访问根结点,然后遍历左目前为止还没有针对该考点 子树,最后遍历右子树; 的试题材。请考生适当了解?中序遍历(LDR),首先遍历左子树,然后访问根结该考点的内容。 点,最后遍历右子树; ?后序遍历(LRD)首先遍历左子树,然后访问遍历 右子树,最后访问根结点。 例题精解 例2.34 在一棵二叉树的前序遍历、中序遍历、后序遍历所产生的序列中,所有 叶子结点的先后顺序,,,。 (A)都不相同 (B)完全相同 (C)先序和中序相同,而与后序不同 (D)中序和后序相同,而与先序不同 【解析】根据本章“考点破解14”关于三种遍历的定义可知,不管使用哪种遍历方法,所有叶子结点的遍历顺序相同。例如图2.3所示的二叉树木前序序列、中序序列和后序序列分别为: F,C,A,D,B,E,G,H,P A,C,B,D,F,E,H,G,P A,B,D,C,H,P,G,E,F 通过3种遍历,叶子结点的顺序都是A,B,H,P。 【答案】B F E C G ADH H H HP H H B H 图2.3 二叉树 例2.35 某二叉树结点的前序序列为E、A、C、B、D、G、F,中序序列为A、B、C、D、E、F、G。该二叉树的结点的后序序列为,,,。 (A)B、D、C、A、F、G、E (B)D、B、C、F、A、G、E (C)D、C、E、G、F、A、B (D)D、E、G、A、C、F、B 【解析】前序序列中以E开始,则可以确定E为根结点,则参考中序序列中E的位置可以判断A、B、C、D属于E的左子树,F、G属于E的右子树。再根据前序序列中F、G的顺序与中序序列中F、G的顺序很容易判断出G为E的在子树,F为G的左子树。 再来看A、B、C、D的关系,在前序序列中A、C、B、D属于新世界子树,在此前序序列中A排在第一个位置,则A的位置应为新子树的根,C、B、D就为工的左子树成员,同时在中序序列中A排在第一位,则可判断A没有左子树,只有右子树。于是,A为E的左子树。] 再来看B、C、D的关第,在前序序列中C、B、D属于新的妇树,在些前序序列中C排在第一个位置,则C的位置应为新子村的根,B、D就为C的左右子树成员;同时在中序序列中以B、C、D顺序排我,则可判断出B为C的左子树,D为C的右子树。 那么整个二叉树的结构应如图所示2.4所示。 E H AG H H F H C H BD H H 图2.4 例2.35图 根据此图可得出该二叉树结点的后序序列为B、D、C、A、F、G、E。 【答案】A ,自测题 可用“2.2过关精练”中的选择题第36,39题以及填空题第35,36题进行自测。 2.1.7 查找技术 考点15: 顺序查找 顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找 指定的元素,其基本方法如下: 从线性表的第一个元素开始,集资将线性表中的元素与被 查元素进行比较,相等则表示找到(即查找成功);若线性表中该考点的命题重点是顺序查找的技所有的元素都与被查元素进行了比较但都不相等,则表示线性术指标,试题类型以填空题为主。在表中没有要找的元素(即查找失败)。 2005年4月曾对该考点进行了考查。 在最坏情况下,顺序查找需要比较n次。 在下列情况下只能使用顺序查找: ? 如果线性表为无序表(即表中元素的排列是无序的), 则不管是顺充存储结构还是链式存储结构,都只能使用顺序查找。 ? 即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。 例题精解 例2.36 (2005年4月选择题第4题) 对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为,,,。 (A)logn (B)n/2 (C)n (D)n+1 2 【解析】对长度为n的线性表,在最坏情况下,需要查找的元素不在线性表中或者是线性表的最后一个元素,些时需发的比较次数为n. 【答案】C ,自测题 可用“2.2过关精练”中的选择题第40题以及填空题第37题进行自测。 考点 16 : 二分法查找 二分法查找只适用于顺序存储的有序表。在些所说的有序表是指 线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相该考点的命题重点是二分法的查找等)。 方法,出题类型可能是选择题也可能 是填空题。在2005年9月的考试中 有一道相关试题。 对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较logn 次,而顺序查2找需要比较n次。 例题精解 例2.37 (2005年9月选择题第2题) 下列数据结构中,能用二分法进行查找的是,,,。 (A)顺序存储的有序线性表 (B)线性链表 (C)二叉链表 (D)有序性链表 【解析】二分法查找只适用于顺序存储的有序表,这是二分法查找的一个局限性。 【答案】A 例2.38 二分查找法适用于存储结构为,,,且按关键字排好离的线性表。 (A)顺序存储 (B)链式存储 (C)顺序存储或链式存储 (D)索引存储 【解析】二分法查找只适用于顺序存储的有序表。 【答案】A 自测题 可用“2.2过关精练”中的选择题第41,43题以及填空题第38,39题进行自测。 2.1.8 排序技术 考点17: 交换类排序法 所谓交换类排序法是指借助数据元素之间岳母相交换 进行排序的一种方法。冒泡排序和快速成排序都是交该考点的命题重点在交换类排序换类排序方法。 的种类及其排序原理。该考点在冒泡排序 2005年4月的考试中出现过,是冒泡排序法是一种是简单的交换类排序方法。它是通本章必须掌握的内空。 过相邻数据元素交换逐步将线性表变成有序的。 假设线性表的长度为n,则在最坏情况下,冒泡排序需 要经过n/2遍的从前往捕捞扫描和n/2遍的从后往前扫 2描,需要的比较次数为n(n-1)/2,其数量级为n。 交换类排序 这是快速排序的基本方法。在待排序的序列中任取一个记录,以它为基准用交换的方法将所有的记录发成两个部分(关键码比它小的一个部分和关键码比它大的另一个部分),再分别对两个部分 实施上述过程,一直重复到排序完成为止。 例题精解 例2.39(2005年4月选择题第3题) 对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_______。 (A)冒泡排序为 n/2 (B)冒泡排序为 n (C)快速排序为n (D)快速排序为n(n-1)/2 【解析】对长度为n的线性表,在最坏情况下,冒泡排序法的比较次数为n(n-1)/2,快速排序的比较次数也是n(n-1)/2。 【答案】D 自测题 可用“2.2过关精练”中的选择题第44,51题、填空题第40,42题进行自测。 考点18 : 插入类排序法 插入排序,就是指将无序序列中的各元素依次插入到已经有序的线性表中。 简单插入排序 在简单插入排序中,每一次比较后最多移掉一个 目前还未针对该考点出过题,若出题,逆序,因此,这种排序方法的效率与冒泡排序法 则命题重点是简单插入排序法和希尔相同。在最坏情况下,简单插入排序需要n(n-1)/2 排序法的使用,试题类型可能为选择题次比较。 也可能是填空题。 希尔排序 希尔排序(Shell Sort)虽然也是插入类排序,但 它对简单插入排序任职较大的改进。希尔排序的 基本思想如下: 将整个无序序列分割成若干小的子序开分别进行插入排序。 子序列的分割方法是:将相隔某个增量h的元素构成一个子序列。在排序过程中,逐逐次减少这个增量,最后当h减到1时,进行一次插入排序,排序就完成。 tk希尔排序的效率与所选取的增量序列有关。增量序列一般取h=n/2(k=1,2,„,[logn]),其2中n为排序序列的长度。 例题精解 例2.40 希尔排序法属于哪一种类型的排序法_______。 (A)交换类排序法 (B)插入类排序法 (C)选择类排序法 (D)建堆排序法 【解析】请详见本章“考点破解18”。 【答案】B 自测题 可用“2.2过关精练”中的填空题第43,44题进行自测。 考点19 : 选择类排序法 简单选择排序法 选择排序法的基本思想为:扫描整个线性表, 从中选出最小的元素,将它交换到表的最前 该考点至今未考查过,若针对此考点出面;然后对剩下的子表采取同平的方法,上到 题,命题重点是选择类排序法原理,或子表空为止。 者要求考生判断哪些排序方法属于选择简单选择排序法在最坏情况下需要比较 类排序法。 n(n-1)/2次。 堆排序 堆排序:是选择排序的改进,其方法如下。 将一个无序序列建成堆。 将堆顶元素(序列中的最大项)与堆中最后一个无互交换(最大项应该在序列的最后)。不考虑已经换到最后的那个元素,只考虑前n-1个元素构成的子序列,显然,该子序列已不是堆,但左右子树仍为堆,可以将该子序列调整为堆。如此反复,直到剩下的子序列为空止。 堆排序的方法对于规模较小的线性表并不适合,但对于较大规模的线性表却很有效的。在最坏情况下,堆排序需要比较的次数为O(nlogn)。 2 常见排序方法的排序性能情况如表2.2所示。 表2.2 常用排序方法排序性能比较表 方法 平均时间 最坏情况时间 辅助存储 冒泡排序、简单排序、22O(n) O(n) O(1) 插入排序(shell) 2快速排序 O(nlogn) O(n) O(nlogn) 22 堆排序 O(nlogn) O(nlogn) O(1) 22 归并排序 O(nlogn) O(nlogn) O(n) 22 例题精解 例2.41 在最坏情况下,堆排序需要比较的次数为_______。 【解析】请详见本章“考点破解19”。 【答案】O(nlogn) 2 例2.42 设表中元素的初始状态是按键值递增的,分别用堆排序、快速排序和冒泡排序对其进行排序(按递增顺序),冒泡排序最省时间,_______最费时间。 【解析】快速排序的基本方法:在待排序的序列中任取一个记录,以它为基准用交换的方法将所有的记录分成两个部分(关键码比它小的部分和关键码比它吕产部分),再分别对这两个部分实施上述过程,一直重复到排序完成为止。运用快速排离法进行排序时,最坏的情况 2指的是对已经排好序的记录进行完全相反的排序,所需进间为O(n)(这称为大O表示法,也数量级衡量复杂度,是时间复杂度和空间复杂度衡量中常用的工具)。 【答案】快速排序 自测题 可用“2.2过关精练”中的填空题第45,48题进行自测。 所谓算法是指对解题方案准确而完整的描述。 如果一个问题可以通过一个计算机程序,在有限的存储空间内运行有限长的时间而得到正确的结构,则称这个算法是可解的。算法既不是程序,也不是解题方法。程序可以作为算法的一种描述,由于在编写程序时要受到计算机系统运行环境的限制,因而,程序的编制一般不会优于算法的设计。 ? 算法的基本特征包括以下几点。 ? 可行性。 ?确定性。算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性。 ? 有穷性。算法必须能在有限的时间内做完,能在执行有限个步骤后终止,这包括合理的执行时间的含义。 ? 足够的情报。 以下两个基本要素。(2) ?对数据的运算和操作。算法实际上是按照解题要求从环境能进行的所有操作中选择合适的操作所组成的一组指令序列。一个计算机系统能执行的所有指令的集合称为该计算机系统的指令系统。在一般的计算机系统中,基本操作包括算术运算、逻辑运算、关系运算和数据传输。 ?算法的控制结构。算法中各操作之间的执行顺序称为算法的控制结构。算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。一个算法一般都可以及顺序、选择、循环3种基本控制结构组合而成。算法设计的基本方法包括列举法、归纳法、递推、递归、递推技术、回溯法。 2.2过关精 2.2.1过关练习题 一、 选择题 下列关于计算机算法设计方法的描述,错误的是_______。 (A)计算机算法和人工处理的方法相同,是人工算法的计算机解题过程 (B)列举法的特点是算法比较简单,但是当列举的可能情况较多时,执行列举算法的工作量会很大工业 (C)从本质上讲,归纳就是通过观察一些简单而特殊的情况,最后总结出一般性的强论 (D)递归的基础是归纳 关于算法,下列描述正确的是_______。 (A)通常,程序的编写不可能优于计算机算法的设计 (B)程序也可以作为算法的一种描述,所以程序等于算法 (C)归纳法的基本思想是,通过列举所有可能的情况,经过分析,最后找出一般的关系 (D)使用归纳法得到的是正确的结论 算法的时间复杂度是指_______。 (A)执行算法程序所需要的时间 (B)算法程序的长度 (C)算法执行过程中所需要的基本运算次数 (D)算法程序中的指令条数 算法的空间复杂度是指_______。 (A)算法程序的长度 (B)算法程序中的指令条数 (C)算法程序所占用的存储空间 (D)算法执行过程中所需要的存储空间 数据结构_______。 (A)用于描述系统的动态特性 (B)描述系统的静态特性 (C)是一组规则 (D)描述数据之间的联系 以下关于数据的存储结构的叙述中正确的是_______。 (A)数据的存储结构是数据间关系的的抽象描述 (B)数据的存储结构是逻辑结构在计算机存储器中的实现 (C)数据的存储结构分为线性结构的非线性结构 (D)数据的存储结构对数据运算的具体实现没有影响 以下关于数据的逻辑结构的叙述中,不正确的是 _______。 (A)数据的逻辑结构是数据间关系的描述 (B)数据的逻辑结构抽象地所映数据元素间的逻辑关系 (C)数据的逻辑结构具体地反映数据在计算机中的存储方式 (D)数据的逻辑结构分为线性结构和非线性结构 与数据元素本身的形式、内容、相对位置、个数无知的是数据的_______。 (A)存储结构 (B)存储实现 (C)逻辑结构 (D)运算实现 下列选项中叙述错误的是_______。 (A)数据结构是指相互关联的数据元素的集合 (B)数据结构就是指带有结构的数据元素的集合 (C)数据的逻辑结构与它们的计算机中的存储位置无关 (D)研究数据结构的主要目的是如何更好地对数据进行排序 下列叙述中正确的是______。 (A)线性表是线性结构 (B)栈与队列是非线性结构 (C)线性表是非线性结构 (D)二叉树是线性结构 下面不是非空线性表的结构特征的是______。 (A)有且只有一个根结点,它无前件 (B)有且只有一个终端结点,它无后件 (C)除根结点和终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件 (D)线性表中结点的个数n称为线性表的度 顺序存储结构______。 (A)仅适合于静态查找表的存储 (B)仅适合于动态查找表的存储 (C)既适合于静态又适合于动态查找表的存储 (D)既不适合于静态又不适合于动态查找表的存储 13(下列关于栈的叙述中正确的是_____。 (A)在栈中只能插入数据 (B)在栈中只能删除数据 (C)栈是先进先出的线性表 (D)栈是先进后出的线性表 14(若进栈序列为1,2,3,4,假定进栈和出栈可以穿插进地,则可能的出栈序列是______。 (A)2,4,1,3 (B)3,1,4,2 (C)3,4,1,2 (D)1,2,3,4 15(设计一个判断表达式中左右括号是否配对的算法,采用_____数据结构最佳。 (A)队列 (B)堆栈 (C)二叉树 (D)链一 16(设在栈中,由顶向下已存放元素c,b,a,在第4个元素d入栈之前,栈中元素可以出栈, 试问d入栈前后,不可能的出栈序列是______。 (A)d c b a (B)c b d a (C)c a d b (D)c d b a 17(如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是______。 (A)e3 e1 e4 e2 (B)e4 e2 e3 e1 (C)e3 e2 e1e4 (D)e3 e4 e1 e2 18(若进栈序列为3,5,7,9,进本过程中可以出栈,则______不可能是一个出栈序列。 (A)7,5,3,9 (B)9,5,7,3 (C)9,7,5,3 (D)7,5,9,3 19(数组Q[0„n-1]作为一个环形队列,f为当前队头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数总小于n,队列中元素的个数是______。 (A)r-f (B)n+r-r (C)n+r-f (D)(n+r-f)mod n 20(设有栈S和队列Q,其状态为空,元素a1,a2,a3,a4,a5,a6依次入栈,出栈的元素则进入队列Q,若6个元素出列的顺序是a2,a3,a4,a6,a5,a1,则栈的容量到少是______。 (A)6f (B)4 (C)3 (D)2 21(以下关于队列的叙述中______是不正确的, (A)队列的特点是先进先出 (B)队列既能用顺离方式存储,也能用链接方式存储 (C)队列适用于二叉数对称序周游算法的实现 (D)队列适用于树的层次次周游算法的实现 22(以下______不是队列的基本运算。 (A)从队尾插入一个新元素 (B)从队列中删除第I个元素 (C)判断一个队列是否为空 (D)读取队头元素的值 23(用链表表示线怀表的优点是_____。 (A)便于插入和删除操作 (B)数据元素的物理顺序与逻辑顺序相同 (C)花费的存储空间较顺序存储少 (D)便于随机存取 24(在单链表中,增加头结点的目的是_____。 (A)方便运算的实现 (B)使单链表至少有一个结点 (C)标识表结点中首结点的位置 (D)说明单链表是线性表的链式存储实现 25(线性表若采用链表存储结构时,要求内存中可用存储单元的地址_____。 (A)必须是连续的 (B)部分地址必须是连续的 (C)一定是不连续的 (D)连续不连续都可以 26(以下关于链式存储结构的叙述中,_____是不正确的。 (A)结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构 (B)逻辑上相邻的结点物理上不必相邻 (C)可以通过计算直接确定第I个结点的存储地址 (D)插入、删除运算操作方便,不移动结点 27(线性表的顺序存储结构和线性表的链式存储结构分别是_____。 (A)顺序存取的存储结构 、顺序存取的存储结构 (B)随机存取的存储结构 、顺序存取的存储结构 (C)随机存取的存储结构 、随机存取的存储结构 (D)任意存取的存储结构、任意存取的存储结构 28(关于线性链表,下面描述错误的是_____。 (A)为了克服线性链表中,空表和非空表的运算统一,可以采取循环链表的结构 (B)循环链表从任意一个结点都能扫描到整个链表 (C)在循规蹈矩环链表中最后一个结点的指针域不为空 (D)循环链表订解决了线性链一的最后一个结点的指针域为空的问题。 29(下列属于非线性表结构的是_____。 (A)树 (B)队列 (C)栈(D)线性表 30(二叉树属于_____结构。 (A)非线性 (B)线性表 (C)线性(D)网状 31(设二叉树根结点的层次为0,在深度为5的满二叉树中,叶子结点的个数为_____。 (A)32 (B)31 (C)16(D)15 p[32(设一棵二叉树中,度为1的结点数为9,则该二叉树木叶结点的数目为_____。 (A)10 (B)11 (C)12(D)不确定 33(在下列关于二叉树的叙述中,正确的是_____。 (A)在二叉树中,任何一个结点的度都是2 (B)二叉树的度为2 (C)在二叉树中至少有一个结点的度是2(D)一棵二叉树的度可以小于2 34(设一棵完全二叉树共有500个结点,则在该二叉树中有_____个叶子结点。 (A)248 (B)249 (C)250(D)251 35(设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为_____。 (A)349 (B)350 (C)511(D)351 36(二叉树的前序遍历和中序遍历如下。 前序遍历:ABDFHCEGI 中序遍历:BFHDAEIGC 该二叉树根的右子树的根是_____。 (A)N (B)F (C)E(D)C 37(在先左后右的原则下,桶据访问桶结点的次序,二叉树的遍历可以分为三种:前序遍历、_____遍历和后序遍历。 (A)左序 (B)中序 (C)右序(D)上序 38(下列二叉树的中序遍历结果为_____。 A C B D E F (A)ABCDEF(B)DBEAFC (C)ABDECF(D)DEBFCA 39(已知二叉树的后序遍历是dabec,中序遍历序列是debac,它的前序遍历序列是_____。 (A)acbed(B)decab(C)deabc(D)cedba 40.列不必使用顺序查找技术的是____。 (A)无序线性表 (B)顺序存储的有序线性表(C)采有了链式存储结构的有序线性表(D)二叉树 41(设有100个结点的顺序存储有序线性表,有二分法查找时,最大比校次数是____。 (A)25 (B)50(C)10(D)7 42(已知一个有序表(13,20,25,37,48,58,61,78,83,90,101),当二分查找值为48的元素时,____次比较后查找成功。 (A)1 (B)2(C)3(D)4 43(设有一个已按各元素的值排好序的顺序表(长度大于2),现分别用顺序查找法和二分查找法查找与给定值k相等的元素,比较次数分别是s和b,在查找不成功的情况下,s和b的关系是_____。 (A) s=b(B)s>b(C)s=b 44(设待排序关键码序列为(25,18,9,33,67,82,53,95,12,70),要按关键码值递增的顺序,采取以第一个关键码为分界元素的快素排序法,第一趟完成后关键码95被放到了第_____个位置。 (A)7 (B)8(C)9(D)10 45(排序的重要目的是为了以后对已排离的数据元素进行_____。 (A)打印输出 (B)分类(C)查找(D)合并 46(对以下序列{22,86,49,12,30,65,35,18}进行排序,排序过程如下: ?{22,86,49,12,30,65,35,18} ?{18,12,22,49,30,65,35,86} ?{12,18,22,35,30,49,65,86} ?{12,18,22,30,35,49,65,86} 则可以认为使用了_____排序方法。 (A)选择排序(B)冒泡排序(C)快速排序(D)插入排序 47(在最坏的情况下,假设线性表的长度为n,则冒泡排序的时间复杂度为_____。 (A)n (B)n/2(C)n(n+1)/2(D)n(n-1)/2 48(用冒泡排序算法对数据:2,37,42,19,27,35,56,44,10进行从小到大排序。在将最大的数“沉”到最后时,数的顺序是_____。 (A)2,37,42,27,19,35,44,10,56 (B)2,37,42,19,27,35,10, 44,56(C)2,37,19,27,35,42, 44,10,56(D)2,10,19,27,35,37,42, 44, 56 49(用快速排序法对下列关键字序列进行排序,速度最慢的是_____。 (A){7,11,19,23,25,27,32} (B){27,25,32,19,23,7, 11, } (C){3,11,19, 32, 27,25,7}(D){123,27,7, 19,11, 25, 32} 50(对下面4个序列用快速排序的方法进排序,以序列的第一个元素为基础进行划分。在第一趟划分过程中,元素移动次数最多的序列是_____。 (A)827,75,70,16,10,90,68,23(B)23,10,16,70,82,75, 68,90 (C)70,75,68,23,10,16,90,82(D)70,75,82,90,23,16,10, 68 51(快速排序方法在_____情况下最不利于发挥其长处。 (A)被排序的数据量太大 (B)被排序数据中含有多个相同值 (C)被排序数据已基本有序 (D)被排序数据的数目为奇数 二、 填空题 1( 算法基本特征是可行性、确定性、_____和拥有足够的情报。 2( 在工程中,有些实际问题很难归纳出一组简单的递推公式或直观的求解步骤,并且 也不能进行无限的列举。对于这类问题,一种有效的方法就是通过对问题分析,找 出解决问题的线索,然后沿着这个线索试探,如果不成功,就逐步回退,换别的路 线再进行试探。这种方法称为________。 3( 算法的________是指执行算法所需要的计算工作量。 4( 算法的________是指执行这个算法所需要的内存空间。 5( 在算法的基本特征中,算法的________是指算法中的每一个步骤都必须是有明确定 义的,不允许有模棱两可的解释,也不允许有多义性。 6( 数据结构是相互之间存在的一种或多种特定的关系的数据元素的集合,它包括3个 方面的内容,分别是________、________和算法。 7( 数据结构是一门研究非数值计算的程序设计问题中计算机的________以及它们之 间的关系和运算等的学科。 8( 线性表中结点的个数n称为线性表的________。 9( 线性表中所有元素的所占的存储空间是________的。 10(字符a、b、c、d依次通过一个栈,按出栈的先后次序组成它符串,至多可以组成 ________个不同的字符串。 11(组O[n]表示一个环形队列,设f的值为队列中第一个元素的位置,r 的值为队列中 实际队尾元素的位置加1,并假定队列中至多只有n-1个元素,则计算队列中有元素个 数的公式为________。 12(对于栈只能在________插入和删除元素。 13(向栈中压入元素的操作是________。 14(对栈进行退栈时操作是________。 15(在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列 中共有________个元素。 16(在一个循环队列中,队首指针指向队首元素的________。 17(从特环队列中删除一个元素时,其操作是________。 18(在具有n个单元的循环队列中,队满时共有________个元素。 19(在线性表的顺序存储中,元素之间的逻辑关系是通过相邻位置决定的;在线性表的 链接存储中,元素之间的逻辑关系是通过________决定的。 20(当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用顺序存 储结构为宜;相反 ,当经常进行插入和删除操作时,则采用________存储结构为宜。 21(用线性表表示线性表的优点是________。 22(在线性链表中删除一个元素后,不需要移动表的数据元素,只需改变被删除元素所在结点的前一个结点的________即可。 23(循环链表的头指针指向________结点。 24(循环链表中至少有________个结点存在。 25(在计算机中使用树来表示臬术运算符时,运算对象中的单变量均为________结点。 26(树最适保用来表示元素之间具有________关系的数据。 27(在一棵二叉树中,只有度为0的结点和度为2的结点。度为0的结点的个数为n,度为2的结点的个数为m,则有n=________(用m表示)。 28(设一棵完全二叉树共700个结点,则在该二叉树中________有个叶子结点。 29(设只包含根结点的二叉树的高度为0,则高度为k的二叉树的最少结点数为________。 30(在完全二叉公款喘序存储中,若结点I有左子树,则其左子树是结点________。 31(设树T的度为4,其中度为3和4的结点个数为1,则T中叶子结点的个数是________。 32(高要结点的层数为1,深度为h的一棵二叉树上只有度为0的和度为2的结点,则此类二叉树中所包含的结点数至少为________。 33(按照二叉树的定义,具有3个结点的二叉树有________种。 34(深度为5的二叉树最多有________个结点。 35(设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为________。 36(如果一棵二叉树中任一结点的值都大于其左子树中所有结点的值,且小于其右子树中所有结点的值,那么这棵树叫做二叉排序树。在一棵二叉排序树中,按________周游得到的结点序列是一个有序序列。 37(顺序查找法的平均查找长度为________。 38(设一线形表中有a1,a2,„„a500,500个元素按递增顺序排序列,则用二分法杳找给定值K ,最多需要比较________次。 39(设有一个已按各元素的值排好序的线性表,长度为125,对给定的k值,用二分法查找与k相等的元素,若查找成功,则至少需要比较________次。 40用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时, 元素序列的变化情况如下: 25,84,21,47,15,27,68,35,20 20,15,21,25,47,27,68,35,84 15,20,21,25,35,27,47,68,8 15,20,21,25,27,35,47,68,84 则所采用的排序方法是________。 41(在最坏情况下,冒泡排序的时间复杂度为________。 42(对n个记录的文件进行快速排序,执行的时间复杂度为________。 43(设有关键码序列(17,8,3,25,16,1,13,19,18,4,6,21),要按关键码值递增 次序排序,用初始增量为4的希尔排序法,一趟扫描的结果是________。 44(在排序方法中,从末排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入排序序列的正确位置的方法,称为________。 45(在堆排序和快速排序中,若原始记录接近正序或反序,则选用________。 46(在堆排序和快速排序中,若原始记录无序,则选用________。 47(在插入和选择排序中,若初始数据基本正序,则选用________。 48(排序方法中,人未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为________。 2.2.2 过关练习题解析与答案 一、选择题 1(【解析】计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法,计算机算法不同于人工处理的方法。例如对数值进行计算时,计算机就受到运算精度的限制,又例如在解快实际问题时的数学公式是正确的,而按照此数学公式设计的计算过程在计算系统上不一定能执行。 【答案】A 2(【解析】程序可能作为算法的一种描述,但算法不等于程序,也不是计算方法,所以选项B描述错误。归纳法的基本思想是,通过列举少量的特殊情况,经过分析,最后找出一般的关系。归纳是一种抽象,即从特殊现象中找出一般关系,但由于在归纳的过程中不可能对的有的情况进行例举,因此,最后由归纳得到的结论还只是一种猜测,还需要对这种猜测加以必要的证明人,所以选项C、D描述都错误。 【答案】A 3(【解析】请详见本章“考点破解2”。 【答案】C 4(【解析】请详见本章“考点破解2”。 【答案】D 5(【解析】数据结构设计了数据元素的逻辑结构和与之相应的存储结构,它描述系统的静态特性。 【答案】B 6(【解析】数据的存储结构的定义是数据的存储结构是逻辑结构在计算机存储器里的实现 ,因而先项B正确。 选项A中的“数据间关系的抽象描述”是对数据的逻辑结构的定义。数据的存储结构应分为顺序存储和链式存储,所以C选项描述错误。数据的存储结构与数据运算是紧密结合的,不同的存储结构对数据运算会产生较大影响,所以选项D描述错误。 【答案】B 8(【解析】所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构。数据的逻辑 结构与它们的存储位置无关。 【答案】C 9(【解析】研究数据结构的主要目的是提高数据处理的效率。所谓提高数据处理的效率,主要包括两个方面:一是提高数据处理的速度,二是尽量节省在数据处理过程中所占用的计算机存储空间。由此可知,D选项叙述错误。 【答案】D 10(【解析】线性表、栈、队列都是线性结构,树是非线性结构。 【答案】A 11(【解析】线性表中结点的个数称为线性表的长度。 【答案】D 12(【解析】在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面,因此顺序存储结构既适合静态又适合动态查找表的存储。 【答案】C 13(【解析】在栈中可以进行插入和删除操作,只是限定在一端进行插入与删除。栈是先进后出的线性表。 【答案】D 14(【解析】栈遵循“先进后出”的运算原则,因此,除D选项的出栈序列外,其他3个选项的出栈序列均不可能出现。D项中对栈的操作序列为:1入栈?1出栈?2入栈?2出栈?3入栈?3出栈?4入栈?4出栈 【答案】D 15. 【解析】表达式计算需要向后查看,才知前面是否先做,所以采用栈的数据结构最佳。 【答案】B 16(【解析】根据堆栈先进后出的原则,出栈的前后顺序一定是c,b,a,d只能改变其顺序,因此出栈序列c,a,b,d是不可能的。 【答案】C 17(【解析】根据堆栈先进后出的原则,选项A、B、D都不可能是本题答案。C选项中的出栈序列可以操作为:e1入栈?e2入栈?e3入栈?e3出栈?e2出栈?e1出栈?e4入栈?e4出栈,可能出本序列是e3e2e1e4。 【答案】C 18(解析】A项中,对栈的操作依次为:3入栈?5入栈?7入栈?7出栈?5出栈?3出栈?9入栈?9出栈,出栈序列是7,5,3,9。C项中,对栈的操作依次为:3入栈?5入栈?7入栈?9入栈?9出栈?7出栈?5出栈?3出栈,出栈序列是9,7,5,3。D项中,对栈的操作依次为:3入栈?5入栈?7入栈?7出栈?5出栈?9入栈?9出栈?3出栈,出栈序列是7,5,9,3。 经分析可知B选项的出栈序列是不可能的。 【答案】B 19(【解析】通过数组长度及头尾指针即可计算出循环链表的元素个数为(n+r-f)mod n。 【答案】D 20(【解析】队列遵循先进先出的规则,所以本题中元素出栈顺序也是a2,a3,a4,a6,a5,a1。考虑到一个元素在入栈之前,另一个元素可能出栈的情况,可知栈进行的操作依次为:a1入栈?a2入栈?a2出栈?a3入栈?a3出栈?a4入栈?a4出栈?a5a入栈?6a入栈?6a5出栈?a1出栈.根据出栈情况来判断,栈中至少要有3个单元,存放最后出栈的a6、a5和a1元素。 【答案】C 21(【解析】根据对队列的定义,所有的删除操作都在线性表的一端进行,所有的插入都在另一端进行,这样就形成了先进先出的操作原则,又称为FIFO。选项A描述正确。 队列是一种特殊的线性表,作为线性表本身可以有多种存储结构:顺序存储、链式存储、散列存储。选项B描述正确。 二叉树对称序周洲算法的基本顺序是左、中、右,即先访问结点的左子树,然后访问结点本身,最后访问右子树。在访问各个左右树时依然采用此方法直到遍历所有结点。二叉树对称周游算法的非递归调用算法适用的数据存储结构是栈,基本顺序是:先周游左子树,如果发现右子树不为空,则将根推入材中,待周游完同层的左子树后再周游右子树;进入任何结点的左子树时都如此处理,于是栈中保存的是一些右子树根结点,且先推入栈中的在栈的下屋,后推入栈中的在栈的上层。周游二叉树具有后进先出的特点。栈作为二叉数对称序周游算法适合,队列不适合二叉数对称序周游算法,选项C描述错误。 树的层次序周游算法指的是首先依次访问层数为0的结点,然后依次访问层数为1的结点,直到访问完最下一层的所有结点的周游树方法,因而又称为周游(遍历)树的广度优先方式。此种算法按线性顺序访问结点,并且访问的结点可以采用先进先出的存储方式,队列适合些算法。选项D 描述正确。 【答案】C 22(【解析】队列要求所有的插入都在表的一端完成,所有的删除都在表的另一端进行。选项B要求在队列中删除第I个元素,这种操作不符合要求,队列的基本运算有5种:插入、删除、读队头元素值、判断是否为空、置队列为空。 【答案】B 23(【解析】在链式存储结构中,存储数据结构的存储窨是可以不连续的,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确守的。这样的结构便于插入和删除操作。 【答案】A 24(【解析】为了方便运算的实现,需要在单链表中增加头结点。 【答案】A 25(【解析】一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点存储空间中的位置关系与逻辑关系也不一致。 【答案】D 26(【解析】链式存储结构由于有指针域的存在,要比顺序存储结构的存储密度小,即相同存储空间下存的数据少。选项A中的叙述是正确的。 链式存储结构可通过指针访问下一个结点,但此结点可能与上一结点相邻,也可能不相邻,选项B中的叙述是正确的。链式存储结构如果要计算第I个结点的存储地址,不能直接从首结点直接计算,而必须通过指针域来顺序查找,最后再定位。选项C中的叙述是错误的。 链式存储结构在插入、删除结点时,可通过修改指针域的值来完成,而不必移动其他结点,操作方便。选项D中的叙述是正确的。 【答案】C 27(【解析】顺序存储结构中,数据元素存放在一组地址边续的存储单元中,第个数据元素地址可通过公式LOC(a)=LOC(a+(I-1)L(其中,a是喘序表的第一个元素,a是第i个元i1)1i素,L是每个元素的长度)计算得到,从而实现了随机存取。对于链式存储结构而言,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。 【答案】B 28(【解析】循环链表主要解决了空表和非空表的运算不统一问题,在循环链表中,最后一 个结点的指针域指向第1个元素的结点。 【答案】D 29(【解析】树属于层次结构,不是线性结构。 【答案】A 30(【解析】一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 【答案】A 31(【解析】深度为m的满二叉树有2m-1个结点,因此深度为5的满二叉树结点的个数为32-1=31个。 注意:在本章“考点破解13”中所说的二叉树的特点和性质的前提条件是将二叉树根结点所在的层看作第1层。如果将二叉树根结点的层次设置为0,则在本章“考点破解13”中二叉树性质的某些公式应做一些调整。在本题中给出其不意二叉树的深度,在满二叉树中计算叶子数量只与深度有关系。对于本题来说,根结点所在的层为0或者1没有影响。 【答案】B 32(【解析】一个结点的子树的个数称为结点的度。根据题意分析某二叉树有9个结点的度为1,即有9个结点的子树的个数为1,这9个结点可以是树根,也可以是树枝,只要满足度为1即可,但仅桶据此条亻无法确定该二叉树的叶结点的数目。 下面以两种请况为例说明潢足此条件的二叉树。 ? 第一种情况如下: A B C D „ I 此二叉树结点为A、B、C、D、E、F、G、H、I,共9个结点均满足度为1,但此二叉树只有1个叶子结点。 ? 第二种情况如下: A B C D E F I G J H 此二叉树结点为A、B、C、E、F、G、H、I、J,共有9个结点均满足度为1,但此二叉树只有2个叶子结点. 【答案】D 33. 【解析】在二叉树中,允许结点的度为0(例如叶子结点),所以选项A叙述错误。 在树中所有结点中的最大的度乐为树的度,二叉树的度可以为2,也可以为0或者1,例如下面几种二叉树。 类型1,下面的二叉树只有根结点,因而二叉树的度为0。 A 类型2,下面的二叉树的结点最大的度为1,则二叉树的度为1。 A B 因此,选项B、C叙述错误,选项D叙述正确。 【答案】D 34(【解析】根据完全二叉树的性质“具有n个结点的完全二叉树的深度为[logn]+1”,可知2一颗具有500个结点的完全二叉树深度为[log500]+1=9,因为深度为8的满二叉树结点个数28为2-1=256-1=255,则最后一层结点的个数有500-255=245。第8层有27个结点,也就是128个结点。因为在第9层上有245个结点,也就是说在第8层上有123个(完全二叉树在最后一层只缺少右边若干结点,而最后一层结点数目是245个,这些结点是第8层上[l245/2]+1=123个结点)结点不是叶子结点,所以在第8层上也有128=123=5个叶子结点。因此,叶子结点的合计为250个。 【答案】C 35(【解析】根据完全二叉树的预处理质“具有n个结点的完全二叉树的深度为[logn]+1”29可知,具有699个结点的二叉树深度m=[log69]+1=10,前9层结点数目为2-1=512-1=511,2 8则第10层共有699-511=188个叶子结点。在第9层上有叶子结点2-188/2=162个,该二叉树的叶子结点全计为350个。 【答案】B 36(【解析】由该二叉树的前序序列列和中序序列顺序可知上二叉树的根结点是A,左子树的所有结点为BDFH,右子树的所有结点为CEGI,又因为前序遍历时,右子树的第一个补遍历到的结点是C,所以右子树的根结点是以。 【答案】D 37(【解析】二叉树的遍历分为前序遍历、中序遍历和后序遍历。 【答案】B 38(【解析】二叉树中序遍历是指中序遍历左子树,访问根,按中序遍历右子树,即LNR。 【答案】B 39(【解析】根据二叉树后序遍历时最后遍历根结点,中序遍历是先遍历左子树,然后访问根结点,最后才是右子树的特点,又根据二叉树的后序序列是dabec,可知该二叉树根结点为C,由中序遍历为debac可知,该二叉树没有右子树。 下面恢复这棵树: c e d b a 然后,按前序遍历,可得序列ecdba。 【答案】D 40(【解析】对于顺序存储的有序线性表可以使用二分法查找。 【答案】B 41(【解析】设有序线性表的长度为n,被查元素为x,则二分查找的方法如下: 将x与线性表的中间项进行比较: 若中间面的值等于x,则说明查到,查找结束; 若x 小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找; 若x 小于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找; 这个过程一址进行到查找成功或了表长度为0(说明线性表中没有这个元素)为止。 显然,当有序线性表为顺序存储进才能采用二分查找,在最坏情况下,二分查找需要比较logn次。 2 因此本题中,二分查找法最大比较次数是[log100](取整数),即为7,本题的正2 确答案为D。 【答案】D 42(【解析】二分法查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。二分查找的方法请详见本节选 择题第41题的“解析”。 对于本题,只比较如下元素58,25,37,48。 【答案】D 43(【解析】对于长度为n有有序线性表,在最坏情况下,二分查找只需要比较logn产供2销,而顺序查找需要比较n次。 【答案】B 44(【解析】快速排序的基本方法:在待排序序列中任取一个记录,以它为基准用交换的方法将所有的纪录分成两部分,关键码值比它小的一部分和关键码值比它大一个部分,然后分别对两个部分实施上述过程,一直重复到排序完成。 按快速排序的方法25作为基准,按从小到大排序,移动时按从两端向中间夹入的方式: 25和70比较,比70小,70不动;(25,18,9,33,67,82,53,95,12,70) 25和12比较,比12大,交换;(12,18,9,33,67,82,53,95,25,70) 25和18比较,比18大,不动;(12,18,9,33,67,82,53,95,25,70) 25和9比较,比9大,不动;(12,18,9,33,67,82,53,95,25,70) 25和33比较,比33小,交换;(12,18,9,25,67,82,53,95,33,70) 25和95比较,比95小,不动;(12,18,9,25,67,82,53,95,33,70) 25和53比较,比53小,不动;(12,18,9,25,67,82,53,95,33,70) 25和82比较,比82小,不动;(12,18,9,25,67,82,53,95,33,70) 25和67比较,比67小,不动;(12,18,9,25,67,82,53,95,33,70) 第一趟完成。此时95位置为8。 注意:比较进从最后一个关键码开始比较,如果出现交换则比较斩方向改变,如果没有 交换,则继续比较,直到比较完所有关键码。 【答案】B 45(【解析】排序也是数据处理的重要内容。所谓排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。排序的重要目的是为了以后对已排序的数据元素进行查找。排离的方法有很多,根据待排序序列的规模以及对数据处理的要求,可以采用不同的排序方法。 【答案】C 46(【解析】请参考本章“考点破解17” 【答案】C 47(【解析】在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前扫描,需要的比较次数为n(n-1)/2。 【答案】D 48(【解析】冒泡排序法是一种最简单的交换类排序方法,是通过相邻数据元素的交换逐步将线性表变成有序。冒泡排序法的基本过程如下。 首先,从表头开始往后扫描线性表,在扫描赤程中逐次比较相邻两个元素的大小。若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序。显然,在扫描过程中,不断地将两相邻邦元素中的大者往后移动,最后就将剩下线性表中的最大者换到了表的最后,这也是线性表中最大元素应有的位置。 然后,从后到前扫描剩下的线性表,同样,在扫描过程中逐次比较相邻两个元素的大小。若相邻两个元素中,后面的元素小于前面的元素,则将它们互换,这样就又消去了一个逆序。显然,在扫描过程中,不断地将两相邻邦元素中的小者往前移,最后就将剩下线性表中的最中的最小者换到了表的最前面,这也是线性表中最小元素应有的位置。 对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时的线性表已经变为有序。 本题中,第一趟比较所作的交换是42与19,42与27,42与35,56与44,56与10,因此可得序列:2,37,19,27,35,42,44,10,56。 【答案】C 49(【解析】快速排序的基本方法:在待排序的序列中作取一个记录,以它为基准用交换的方法将所有的记录分成两个部分,关键码比它小的一个部分和关键码比它大的另一个部分,再分别对两个部分实施上述过程,一直重复到排序完成为止。最坏的情况指的是对已经排好序的记录进行完全相反的排序,如将7、6、5、4、3、2、1排成1、2、3、4、5、6、7。 【答案】A 50(【解析】在本题中,因为D选项中比70大的元素在前,比70小的元素在后,所以元素移动的次数最多。本题的正确答案为D。” 【答案】D 51(【解析】运用快速排序最坏的情况指的是对已经排好序的记录进行完全相反的排序,最好的情况是被排序的数据已基本有序。 【答案】C 二、填空题 1(【解析】算法的基本特征包括可行性、确定性、有穷性和拥有足够的情报。 【答案】有穷性 2(【解析】请参考本章“考点破解1” 【答案】回溯法 3(【解析】请参考本章“考点破解2” 【答案】时间复杂度 4(【解析】请参考本章“考点破解2” 【答案】空间复杂度 5(【解析】请参考本章“考点破解1” 【答案】确定性 6(【解析】数据结构是相互之间存在的一种或多种特定的关系的数据元素的集合,它包括3个方面的内容,分别是逻辑结构、物理结构和算法。这两种结构的对应是数据库要解快的关键问题。 【答案】逻辑结构、物理结构 7(【解析】数据结构是相互有关联的数据元素的集合,数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的关系和运算等的学科。 【答案】数据元素 8(【解析】请参考本章“考点破解5” 【答案】长度 9(【解析】请参考本章“考点破解6” 【答案】连续 10(【解析】根据栈的先进后出原则,字符a、b、c、d依次通过一个栈,按出栈的先后次序组成字符串,至多可以组成14个不同的字符串,它们分别是:abcd、abdc、adcb、acdb、bacd、bdca、acbd、bcad、bcda、badc、cbad、cdba、cbda、dcba。 【答案】14 11(【解析】计算环形队列中元素个数的公式为(n+r-f)mon n。取mod是为了使链表能够循环起来,克服假溢出。 【答案】(n+r-f)mon n 12(【解析】栈(stack)是限定在一端进行插入与删除的线性表。在材中,允许插入与删除 的一端称为栈顶,而不允许插入与删除的别一端称为栈底。酌顶元素总是最后补插入的元素从而也是最先能被删除的元素;栈底元素总是最先补插入的元素,从而也是最后能补删除的元素。 【答案】栈顶 13(【解析】向栈中压入元素的操作是先移动栈顶指针,后存入元素。 【答案】先移动栈顶指针,后存入元素 14(【解析】对栈进行退栈时的操作是先取出元素,后移动栈顶指针。 【答案】先取出元素,后移动栈顶指针 15(【解析】循环队列中元素个数的计算公式为:n+(r-f) mod n。通过此人式计算得该循环队列中构有3个元素。 【答案】3 16(解析】循环链表的结构具有以下两个特点: (1) 在循环链表中增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域 指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。 (2) 循环链表中最后一个结点的指针域是空,而是指向表头结点,即在循环链表中,所 有结点的指针构成了一个环状链。在一个循环队列中,队首指针指向队首元素的前 一个位置。 【答案】前一个位置 17(【解析】从循环队列中删除一个元素时,其操作是先移动队首指针,后取出元素。 【答案】先移动队首指针,后取出元素 18(【解析】根据循环链表结构的特点,在具有n个单元的循环队列中,队满时共有n-1个元素,因为队首指针指向队首元素的前一个位置。 【答案】n-1 19(【解析】在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,具前件元素一定存储在后件元素的前面。而在线性表的链接存储结构中,由于其前后件两个元素在存储空间中的位置是随机的,所以根据前件元素的位置并不能直接找到后件元素,因此它的每一个结点分为两部分,一部分存储数据元素的值,称为数据域,另一部分存放下一个结点的存储地址,即链接指针,这样就可以根据链接指针确定元素之间的逻辑关系。 【答案】链接指针 20(【解析】在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,具前件元素一定存储在后件元素的前面。一般来说在线性表的链接存储结构中,各数据结点的存储序号是不连续的,交具各结点在存储窨中的位置关系与逻辑关系也不一致。 由此可见,在链表中进行插入和删除操作时,只需修结点的指针域即可。顺序结构不宜插入和删除元素,否则要有大量元素需移动。 【答案】链式 21(【解析】线性表链式存储结构称为线性链表。用线性链表表示线性表的优点是便于插入和删除操作,这是链表的又一个优点,另一个是可动态分配。这是顺序存储方式所不具备的。 【答案】便于插入和删除操作 22(【解析】在线性链表中删除一个元素后,不需要移动表的数据元素,只需改变补删除元素所在结点的前一个结点的指针域即可。 【答案】指针域 23(【解析】循环链表的头指针指向表头结点。 【答案】表头 24(【解析】循环链表中至少有1个结点存在,因为队首指针指向队首元素的前一个位置。 【答案】1或一 25(【解析】请参阅本章“考点破解12”解答本题。 【答案】叶子 26(【解析】树(tree)是一种简单的非线性结构。在树这种数据结构中,所有数据元素之间的关系具有明显的层次特性。 【答案】分支层次 27(【解析】在一棵二叉树中,只有度为0的结点和度为2的结点。度为0的结点的个数为n,度为2的结点的个数为m,则这棵树共有2*m+1个结点。又因度为2的结点个数据为m,则度为0的结点个数为2*m+1-m,即m+1个。 【答案】m+1 28(【解析】完全二叉树提指除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。完全二叉树具有的特点是:具有n个结点的完全二叉树的深度为[log2n]+1。对于本题,此二叉树的沈度为10。前9层的结点的个数与第9层的满二叉树的结点个数等。深度为m的满二叉树有2的m次幂减1个结点。因此这棵完全二叉树前9层的结点个数为2的9次幂减1,即511个叶子结点。因此,这棵完全二叉树的叶子结点个娄为700-511=189。 【答案】189 A 29(【解析】同步题意可得这棵二叉树是: B C „ M 即每层只有一个结点,树的最大层数即为高度。 【答案】k+1 30(【解析】二叉树的顺序存储是指按层顺序存储二叉树的结点。因此,根据完全二叉树的定义,若结点I有左子女,则其左子女是结点2I,右子女是结点2I+1。完全二叉树可存放于数级中,通过下标可知其左右子结点。 【答案】2I 31(【解析】书籍树中度为1、2、3、4的结点个数分别为4、2、1、1,则树中结点总数为1*4+2*2+3*1+4*1+1=16个,度不为0的结点即非叶子结点个数为4+2+1+1=8个,所以度为0的结点即叶子节点数为16-8=8个。 【答案】8 32(【解析】深度为h的一棵二叉树上只有度为0和度为2的结点,该类二叉树除第一层外,其他的结点数目最少为2个,因此该类二叉村中所包含的结点数至少为2h-1。例如下面这棵二叉树: A C B D E F G 该二叉树的深度为4,至少有2×4-1个结点。 【答案】2h-1 33(【解析】具有3个结点的二叉树有5种,分别如下。 第1种 A B C 第2种 第3种 A A B B C C 第4种 第5种 A A B B C C 【答案】5 34(【解析】深度为5的二叉树结点最多的情况是满二叉树的情况。深度为m的满二叉树有2m-1个结点。此题中二叉树深度为5,则结点个数为:2*2*2*2*2-1=31。 【答案】31 35(【解析】恢复这棵树为: A B C D E F 由此可知此二叉树的后序遍历的结果为DEBFCA。 【答案】DEBFCA 36(【解析】如果一棵叉树中任一结点的值都大于其左子树中所有结点的值,且小于其右子树中所有结点的值,那么这棵树叫做二叉排序树。二叉树的后序遍历是按后序遍历左子树,按后续遍历右子树,再访问根,因此二叉排序的中序遍历直接有序。 【答案】中序 37(【解析】顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法如下: 从线性表的第一个元素开始,依次将线性表中的元素与被杜元素进行比较,若相等则表圾找到(即查找成功);若线性表中所有的元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。 顺序查找法的平均查找长度为(n+1)/2。 【答案】(n+1)/2 38(【解析】在最坏情况下,二分查找需要比较logn次。 2 【答案】9 39(【解析】设有序线性表的长度为n,被查元素为x,则二分查找 的方法如下所述。 将x与线性表的中间项进行比较: 若中间项的值等于x则说明查到,查找结束; 若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找; 若x大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找; 这个过程一直进行到查找成功或子表长度为0(说明线性表中没有这个元素)为止。 所查k值正好在中间时,只需比较一次便查找成功。 【答案】1或一 40(【解析】快速排序的基本方法:在待排序的序列中任取一个记录,以它为蕨用交换的方法将所有的记录分成两个部分,关键码比它小的一个部分和关键码比它大的另一个部分,再分别对这两个部分实施上述过程,一直重复到排序完成为止。 【答案】快速排序 41(【解析】请参考本章“考点破解19”中的表2.2. 2【答案】O(n) 42. 【解析】请参考本章“考点破解19”中的表2.2. 2【答案】O(n) 43. 【解析】希尔排序(Shell Sort)属于插入类排序,但它对简单插入排序做了较大的改进。希乐排序的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 子序列的分割方法是;将相隔某个增量h的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序,排序就完成。 由于本题中的初始增量为4,则可分为四组,其中17、16、18为一组,8、1、4为一组,3、13、6为一组,25、19、21为一组,一趟排序后,组内有序,其结果为16,,1,3,19,17,4,6,21,18,8,13,25。 【答案】(16,,1,3,19,17,4,6,21,18,8,13,25) 44(【解析】所谓插入排序,是指将无序序列中的各元素依次插入到已经有序的线性表中。 【答案】插入排序 45(【解析】请参考本章“考点破解17”和“考点破解19”。 【答案】堆排序 46(【解析】堆排序的方法请参照“考点破解19”。快速排序的基本方法请参照“考点破解17”。 【答案】快速排序 47(【解析】请参考本章“考点破解18”和“考点破解19”。 【答案】插入排序 48(【解析】选择排序法的基本功思想是;扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到子表为空为止。 【答案】选择排序 第3章 程序设计基础 本章主要考察的内容是: 1( 程序设计方法与风格; 2( 结构化程序设计: (1)结构化程序设计的原则; (2)结构化程序的基本结果与特点; (3)结构化程序设计原则和方法的应用; 3( 面向对象的程序设计: (1)关于面向对象方法; (2)面向对象方法的基本概念; 历年的全国计算机等级考试的笔试中,窗体部分的分值约占2-4%,本章历年的考题分 布情况如表3-1所示: 表3-1 程序设计基础部分历年考题分数分布表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 程序设计基础—结构化程序2 2 设计 程序设计基础—面向对象的2 2 程序设计 程序设计基础—面向对象程 2 2 序设计 合计 4 2 0 0 0 6 由表3-1可知,在历年的笔试考试中,考试的关键点主要是程序设计基础—结构化程序设计和面向对象的程序设计。 3.1.1程序设计方法与风格 考点1 :程序设计风格 程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序是由人来编写的,程序员为了测试和维护程序,往往还要阅读和跟踪程序,因此程序设计的风格总体上诮该强调简单和清晰,程序必须是可以理解的。当前主导的程序设计风格为“清晰第一,效率第二”。 形成良好和程序设计风格,主要应注重和考虑以下因素。 1. 源程序文档化 源程序文档化应考虑以下几点。 ? 符号的命名:符号的命名应具有一定的实际含义,以便于理解程序功能。 ? 程序注释:正确的注释能够帮助他人理解程序。注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明,主要描述内容可以包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。功能性注释的二般嵌在源程序体中,主要描述其后的语句或程序的功能。 ? 视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行和缩进等技巧使程序层次清晰。 2. 数据说明的方法 在编写程序时,需要注意数据说明的风格,以便使程序中的数据说明更易于理解和维护。一般应注意以下几点。 ? 数据说明的次序规范化。鉴于程序理解、阅读和维护的需要,使数据说明次序固定,可以使数据的属性容易查找,这样有利于测试、排错和维护。 ? 说明语句中变量安排有序化。当一个说明语句用以说明多个变量时,变量按照字母顺序排列为好。 ? 使用注释语句来说明复杂数据的结构。 3. 语句结构 程序应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。一般应注意以下几点: ? 在一行只写一条语句; ? 在编写程序时首先考虑清晰性; ? 除非对效率有特殊要求,否则编写程序时,要做到清晰第一,效率第二; ? 首先保证程序正确,其次提高速度; ? 避免使用大量的临时变量而使程序的可读性下降; ? 避免使用无条件转移语句; ? 尽可能使用库函数; ? 避免使用复杂的条件嵌套语句; ? 模块功能尽可能单一,即一个模块完成一个功能; ? 不要对不良的程序修修补补,不良的程序要重新编写避免因修改带来新的问题。 4. 输入和输出 输入/输出是用户最关心的问题,输入/输出的方式和格式应尽可能方便用户的使用,因为系统能否被用户接受,往往取快于输入/输出的风格。无论是批处理的输入/输出方式,还是交互式的输入/输出方式,在设计和编程时都应考虑如下原则: ? 对所有的输入数据都要检验其合法性; ? 检查输入项之间的合理性; ? 输入数据尽可能少,操作尽可能简单; ? 在以交互输入/输出方式暑输入时,要采用人——机会话的方式给出明确的提示信息和运行的状态信息; ? 设计输出报表格式。 例题精解 例3.1 下列选项中不符合良好的程序设计风格的是_______。 (A) 除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二 (B) 首先要保证程序正确,然后才要求提高速度 (C) 避免不发票的转移 (D) 尽可能不使用库函数 【解析】详见本章“考点1”。 【答案】D 自测题 请用“3.2过关精练”中的选择题第1,3题进行自测。 3.1.2结构化程序设计 考点2 :结构化程序设计的原则、基本结构和特点 结构化程序设计方法的4条原则是: ? 自顶向下; ? 逐步求精; ? 模快化; ? 限制使用GOTO语句。 结构化程序的基本结构和特点: ? 顺序结构:一各简单的程序设计,最基本、最常用的结构; ? 选择结构:又称循环结构,包括简单选择和多分支选择结构,可根据条件凌晨断应该选择哪一条分支来执行相应的语句序列; ? 重复结构:又称循环结构,可根据给定条件判断是否需要重复执行某一相同程序段。 程序设计语言仅仅使用顺序、选择和重复3种基本控制结构就足以表达出其它形式结构的程序设计方法 例题精解 例3.2 下列关于结构化设计原则的描述中,错误的是_______。 (A) 在快和进程的非政党出口处往往需要调用GOTO语句,使用GOTO语句使程序执行 效率提高,但是滥用GOTO语句确实有害,应该避免使用GOTO语句。 (B) 在设计程序时应该自顶向下,逐步求精。 (C) 在设计程序时,应该将复杂问题进行模块化,就是将程序设计的总目标分解为若干 个分目标,再进一步分解为具体的小目标。 (D) 在进行程序设计时,应该昼在一行书写一条语句,昼做到效率第一,清晰第二。 【解析】在进行程序设计时,为了使程序简单容易理解,语句构造应该简单直接,不应该为了担高效率而将语句复杂批,因此D选项描述错误。 【答案】D 自测题 可用“3.2过关精练”中的选择题第4题、填空题第1题进行自测。 考点3:结构化程序设计原则和方法的应用 在结构化程序设计的具体实施中,要注意把握以下要素: 使用顺序、选择和循环等有限的控制结构表示程序的控制逻辑; 选用的控制结构只许有一个入口和一个出口; 程序语句组成要容易识别的快,每快只有一个入口和一个出口; 使用基本控制结构进行嵌套与组合来实现复杂结构; 用前后一致辞的方法来模拟3种基本结构以外的控制结构; 严格控制GOTO语句的使用。 例题精解 例3.3(2004年9月选择题第4题) 下面描述中,符合结构化程序设计风格的是_______。 (A) 使用顺序、选择和重复(循环)3种基本控制结构表示程序的控制结构 (B) 模块只有一个入口,可以有多个出口 (C) 注重提高等程序的执行效率 (D) 不使用GOTO语句 【解析】由本章“考点3”的相关说明可知选项B、D的描述不符合结构化程序设计风格。在结构化和序设计中除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二,所以选项C也不是本题答案。 【答案】A 自测题 可用“3.2过关精练”中的选择题第5,6题进行自测。 3.1.3面向对象的程序设计 考点 4:面向对象方法的优点 面向对象(00)方法软件开发的一种主要方法。它是一种支持模块化设计和软件重用的编程方法,它把程充设计的主要活动集中在建立对名胜之间的联系上。 面向对象方法的本质,就是主张从客观世界固有的事务出发构造系统,提倡用人类在现实生活中常用的思维方式来认识、理解发和描述客观事物,强调最终建立的系统能映射问题域,也就是说,系统中的对名胜以及对名胜这间的关系能够如实地反映总是域中的固有事物及其关系。 面向对象方法有以下优点: 与人类习惯的思维方法一致,面向对象的核心是对象; 稳定性好; 可重用性好,可继承父类的所有属性和方法; 易于开发大型软件产品; 可维护性好。 运用面向对象方法开发的软件可维护性好的原因有以下几点: 稳不定期性好; 容易修改; 容易理解; 易于测试和调试; 例题精解 例3.4在面向对象数据模型中,子类不但可以从其超类中继承所有的属性的方法,而且还可以定义自己的属性和方法,这有利于实现_______。 (A)可移植性 (B)可扩展性 (C)安全性 (D)可靠性 【解析】面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个褓,是构成系统的一个基本单位,它由一组表示其静态属性和可执行的一组操作组成。对象是面向对象方法中最基本的概念。面向对象的继承可以方便地扩展子类具有的属性的方法,而不必重新定义。这样有利于实现可扩展性。 【答案】B 自测题 可用“3.2过关精练”中的选择题第7题进行自测。 考点5:面向对象方法的基本 在面向对象方法中,应了解如下概念。 1. 对象(object) 在计算机系统中,对象有指一组属性以及这组属性上的专用操作的封装体,属性可以是一些 数据,也可以是另外一个对象,每个对象都有自己的属性值,用以表示该对象的状态,对象中的 属性只能通过该对象提供的操作来存取或修改,一个对象通常由对象名、属性和操作这3个部分 组成。 对象的基本特点如下: ? 标识惟一性; ? 分类性; ? 多态性; ? 封装性; ? 模块独立性好。 2. 封装 封装是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者到生产者分离,使对象的定义与实现分开。 3(属性 属性就是对象的特征,是对象外观及行为的特征。对象的属性可以在建立对象时由其所属的类(或子类)集成,也可以在对象创建或运行时进行设置与修改。 4(类和实例 类:指具有共同属性、方法的对象的集合。 实例:类的一个具体应用于是一个实例。 5(消息 实例之间相互传递的信息叫消息,传送的消息实质上是接受对象所具有的操作/方法名称,有时还包括相应参数。消息的组成包括。 ? 接收消息的对象的名称; ? 消息标识符,也称消息名; ? 零个或多个参数。 6(继承 继承是在已有的类定义的基础上建立新类的定义技术,是面向对象的方法的一个主要特征。继承分为单继承与多重继承。 单继承:指一个类只允许有一个父类。 多重继承:指一个类允许有多个父类。 7(多态性和动态绑定 多态性是指同一个操作作用不同的对象可以有不同的解释,产生不同的执行结果。 与多态性密切相关的一个概念就是动态绑定。传统的程序设计语言把过程调用与目标代码的连接放在程序运行前进行,称为静态绑定。而动态绑定则是把这种连接推迟到运行时才进行。 在运行过程中,当一个对象发送消息请求服务时,根据接收对象的具体情况将请求的操作与实现的方法连接,就是动态绑定。 例题业余解 例3.5(2005年4月 填空题第2题) 在面向对象的方法中,类的实例称为_______。 【解析】对象的面向对象方法中最基本的概念。类是具有共同属性、共同方法的对象的集合。所以类是对象的抽象,它描术了属于对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。 【答案】对象 例3.6(2004年9月 选择题第5题) 下面概念中,不属于面向对象方法的是_______。 (A)对象 (B)继承 (C)类 (D)过程调用 【解析】请参照本章“考点5”的相应说明书解答本题。 【答案】D 自测题 可用“3.2过关精练”中的选择题第8,10题以及填空题2,6题进行自测。 3.2.1过关练习题 一、 选择题 1.建立良好的程序设计风格,下面描述正确的是_______。 (A)程序应简单、清晰、可读性好 (B)符号名的命名只要符合语法 (C)充分考虑程序的执行效率 (D)程序的注释可有可无 2(下列不符合良好程序设计风格的作法是_______。 (A)在程序中利用空格、空行、缩进等技巧使程序层次清晰 (B)对所有的输入数据都要检查数据的合法性 (C)使模块功能尽可能的单一化 (D)应该修补不好的程序,昼不要重新编写 3(源程序文档化要求程序应加注释。注释一般分为序言性注释和_______注释。 (A)功能性 (B)行注释 (C)程序性 (D)多行注释 4(下列关于结构化程序设计描述正确的是_______。 (A)结构化程序应设计原则要求在程序中不能使用GOTO语句 (B)使用顺序、选择和重复3种控制结构能满足大多数程序设计方法 (C)结构化程序设计的目标为啬程序执行的效率 (D)语言中所没有的控制结构,应该彩前后一致的方法来模拟 5(下面描述下符合良好的程序设计风格的是_______。 (A)使用顺序、选择和循环等有限的控制结构来表示程序的控制逻辑 (B)选用的控制结构只许有一个入口和一个出口 (C)程序语句组成的块只有一个入口和一个出口 (D)复杂结构应该使用基本控制结构以外的结构来实现 6(为避免程序难以理解,对GOTO语句的使用应注意一些基本原则,以下不属于基本原则的是_______。 (A) 避免不必要的GOTO语句 (B)尽量少用语句标号 (C)不要使用GOTO语句相互交叉 (D)GOTO语句与其转向的标号必须在同一函数体中 7.下列对面向对象开发方法描述错误的是_______。 (A)运用面向对象方法开发的软件稳定性好 (B)运用面向对象方法开发的软件可维护性好 (B) 运用面向对象方法开发的软件可重用性好 (D)运用面向对象方法开发的软件能适合所有平台,可移植性好 8(在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送_______。 (A)调用语句 (B)命令 (C)口令 (D)消息 9(下面对对象概念描述错误的是_______。 (A)任何对象都必须有继承性 (B)对象是属性和方法的封装体 (C)对象间的通讯靠消息传递 (D)操作是对象的动态属性 10(面向对象的概念方法是_______。 (A)用来请求对象执行某些操作。 (B)描述对象动态特征的一个操作序列 (C)描述对象静态特性的一个数据项。 (D)描述对象动态或者表态特征的某个项目。 二、 填空题 1(结构化程序设计方法中所指的三种基本数据控制结构包括顺序结构、选择结构、_______。 2(在面向对象方法中,住处隐蔽是通过对象的_______性来实现的。 3(类是一个支持集成的帛象数据类型 ,而对象是类的_______。 4(在面向对象方法中,类之间共享属性和操作的机制称为_______。 5(继承性是通过子类与其超类有相同_______实现的。 6(对象根据所接受的消息而作出动作,同样的消息被不同的对象接收时可导致完全不同的行动,该现象称为_______。 3.2.2 过关练习题解析与答案 一、 选择题 1.【解析】请参见本章“考点1”。 【答案】A 2.【解析】不好的程序可能存在各种问题,修补往往只能解决部分问题,同时可能会引发新 的问题。因此,最好要要修补不好的程序,应重新编写。 【答案】D 3.【解析】正确的注释能够帮助读者理解程序。注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分 ,它给出程序的整体说明,主要描述内容可以包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期和修改日期等。功能性注释的位置一般嵌在源程序体中,主要描述其后的语句或程序的功能。 【答案】A 4.【解析】可用排除法解答本题。在进行程序设计时,滥用GOTO语句确实有害,但在某些情况下使用GOTO语句可以使程序流程更清果、效率更高。因此, 在结构化程序设计中虽然限制使用GOTO语句,但并不禁止使用GOTO语句,所以选项A描述错误。1966年,Boehm 和 Jacopini 证明了程序设计语言仅仅使用顺序、选择和重复3种基本控制结构就足以表达出各种其他形式结构的程序设计方法,所以选项B描述也错误。结构化程序设计目标是使程序结构良好、易读、易理解、易维护,所以选项C的描述也错误。这样只有D选项的描述正确(关于D选项的内容可详见本章“考点3”)。 【答案】D 5.【解析】在结构化程序设计中,复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现。 【答案】D 6. 【解析】“GOTO语句与其转向的标号必须在同一函数体中”公是程序设计时对编写代码的要求,并不是使用GOTO语句的基本原则 【答案】D 7.【解析】请参见本章“考点4”。 【答案】D 8.【解析】面向对象的世界是通过对象与对象之间的相互合作来推动的。对象间的这种引互合作需要一个机制协助进得,这样的机投影称为“消息”,消息是一个实例与另一个实例之间的传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。 【答案】D 9.【解析】对象是可以用来表示客观世界中的任何实体,并不是所有的对象都有继承性,A选项描述错误。由本章“考点5”可知,B、C、D选项描述都正确。 【答案】A 10.【解析】面向对象有程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组表示其静态性的属性和它可执行的一组成。这样才可以描述复杂的对象和复杂的行为。 【答案】B 二、填空题 1. 【解析】请参见本章“考点2”。 【答案】 重复结构 2. 【解析】信息隐蔽是指,在一个模块内饮食的信息(过程或数据)不能被不需要这些信息的其他模块访问。信息隐蔽是通过对象的封装性来实现的。 【答案】封装 3.【解析】将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以类是对象的抽象,它描述了属于该对象类理的所有对象的性质,而一个对象 则是其对应类的一个实例。 【答案】 实例 4. 【解析】面向对象继承可以方便地扩展子类具有的属性和方法,而不必重新定义。因此,类之间共享属性和操作的机制称为继承。 【答案】 继承 5. 【解析】继承性是通过子类与其超类有桢标识符实现的是面向对象的性质之一。。 【答案】 标识符 6. 【解析】请参见本章“考点5”。 【答案】 多态性 第5章 数据库设计基础 本章主要考察的内容是: 1(数据库系统的基本概念: (1)数据、数据库、数据库管理系统; (2)数据库系统的发展; (3)数据库系统的基本特点; (4)数据库系统的三级模式和两级映射主/子窗体 2(数据模型: (1) 数据模型的基本概念; (2)E-R模型; (3)层次模型; (4)网状模型; (5)关系的数据结构; (6)关系的数据约束; 3(关系代数 (1)关系模型的基本操作; (2)关系模型的运算; 4(数据库设计与管理 (1)数据库设计概述; (2)数据库设计需求分析; (3)数据库概念设计; (4)数据库的逻辑设计和物理设计; (5)数据库管理; 历年的全国计算机等级考试的笔试中,数据库设计基础部分的分值约占6-10%,属于重点的考察内容。本章历年的考题分布情况如表5-1所示: 表5-1 数据库设计基础部分历年考题分数分布表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 数据库系统的基本概念 6 6 数据模型——E-R模型 2 2 数据模型——关系模型 2 2 4 数据库系统的基本概念—数据库 2 2 2 系统的基本特点 数据模型——层次模型 2 2 数据、数据库、数据库管理系统 2 2 关系代数 2 2 数据、数据库、数据库管理系统 2 2 数据库系统的基本概念—数据库 2 2 系统的发展 合计 10 6 10 24 由表6-1可知,在历年的笔试考试中,考试的关键点主要是数据库系统的基本概念和数据模型—关系模型,而且,本章相关试题的考查点比较分散,这就要求读者在复习时不要遗漏任何内容。 5.1.1 数据库系统的基本概念 考点1 数据、数据库、数据库管理系统 信息是指对现实世界中事物的存在方式或运动状态的反映。数据是描述现实世界事物的符号的记录,是指用物理符号记录下来的可以鉴别的信息。 数据是信息的符号表示,也是信息的载体;信息是数据的内涵,是数据的语义解释。 信息是有价值的,其价值与它的准确性、及时性、完整性和可靠性有关。因为信息的价值必须通过使用信息的决策者的行为结果体现,所以为了提高信息的价值,就要采用科学方法来管理信息。这种科学的方法就是数据库技术。 数据库、数据库管理系统和数据库系统是与数据库技术密切相关的基本概念。 数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可被一定范围内的各种用户定义和使用;系统数据是数据库系统定义和使用的数据,称为数据字典(Data Dictionary, DD)。 数据库管理系统(Database Management System,DBMS)是位于用户和操作系统之间的一层数据管理软件。它的主要功能如下所述。 ? 数据定义。DBMS提供数据定义语言(Data Definition Language, DDL),用户可以用它对数据库中的数据对象进行定义。 ? 数据操纵。DBMS还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用DML操纵数据实现对数据库的基本操作,如查询、插入、删除和修改。 ? 数据库的运行管理。数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性。完整性、多用户对数据的并发使用及发生故障后的系统恢复。 ? 数据库的建立和维护。包括数据库初始数据的输入、转换功能,数据库的转存、恢复功能,数据库的重组功能和性能监视、分析功能,等等。 数据库系统(Database System,DBS)由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统硬件平台、系统软件平台(软件)组成。其中的数据库管理系统是数据库系统的核心。 数据库系统中的人员包括数据库管理员,系统分析员、数据库设计人员、应用程序员和最终用户。 数据库管理员(Database Administrator, DBA)的职责是设计数据库、维护数据库以及改善系统性能。 数据库应用系统(Database Application System, DBAS)由数据库系统、应用软件及应用界面3部分组成。 例题精解 例5.1(2005年9月选择题第10题) 数据库系统的核心是 (A)数据模型 (B)数据库管理系统 (C)数据库 (D)数据库管理员 【解析】该考题在2004年9月考试中也出现过,属于考核重点。数据库管理系统是数据库系统的核心部分,它提供了对数据库中的数据资源进行统一管理控制的功能, 是用户程序和数据库接口,由一系列软件组成。 【答案】B 例5.2 下列关于数据库系统的叙述正确的是 (A)数据库系统减少了数据冗余 (B)数据库系统避免了一切冗余 (C)数据系统中数据的一致性是指数据类型一致 (D)数据库系统比文件系统能管理更多的数据 【解析】请参看本章“考点1”对数据库系统的描述。 【答案】A 例5.3 是位于用户和数据库之间的一个数据管理软件 【解析】请参看本章“考点1”对数据库管理系统的描述。 【答案】 数据库管理系统或DBMS 自测题 可用“5.2过关精练”中的选择题第1,10题、填空题进行自测。 考点2 数据库系统的发展 数据管理发展至今经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段是在20世纪50年代中期以前,主要用于科学计算,硬件无磁盘,直接存取,软件没有 操作系统。20世纪50年代后期到20世纪60年代中期,进入文件系统阶段。文件系统阶段是数据库系统发展的的初级阶段它提供了简单的数据共享与数据管理能力,但是无法提供完整的、统一的管理能力以及数据共享的能力。目前一般将其看成是数据库系统的雏形,而不是 真正的数据库系统。20世纪60年代之后,数据管理系统进入真正的数据库系统阶段。随着计算机应用领域的不断扩大,数据库系统的功能和应用范围也愈来愈广,目前已成为计算机系统的基本及主要的支撑软件。下面介绍几种数据库系统。 1. 层次数据库与网状数据库是真正的数据库系统, 层次数据库与网状数据库是真正的数据库系统,它们为统一管理与共享数据提供有 力支撑,这两个数据库系统脱胎于文件系统,受到文件系统的物理影响较大,给数据库使用带来诸多不便。同时此类系统的数据模式构造繁琐,不宜于推广使用。 2(关于数据库系统 关于数据库出现在20世纪60年代末期,当前已经取代前两种数据库系统。随着关系数据库系统的发展,形成了与应用技术相结合的各种专用数据库。 未来的数据库系统应支持数据管理、对象管理和知识管理,应该具有面向对象的基本特征。在数据库的新技术中,以 下三种技术是比较重要的。 (1) 面向对象数据库系统。 (2) 知识库系统 (3) 关系数据库系统的扩充。 例题精解 例5.4 (2005年9月填空题第1题) 数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是____。 【解析】在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统三个阶段,其中数据独立性最高的阶段是数据库系统阶段。 【答案】数据库系统阶段 例5.5 数据库系统与文件系统的本质区别在于____ 【解析】数据系统的基本特点是数据集成性、数据的高工享性和低冗余性、数据独立性、数据的统一管理与控制。 数据库系统与文件系统的本质区别在于数据库系统实现了整体数据的结构化。 【答案】数据库系统实现了整体数据的结构化 自测题 可用“5.2过关精练”中填空题第8题进行自测。 考点3 数据库系统的基本特点 数据库系统有如下4个基本特点。 (1) 数据的集成性 ?用统一的数据结构方式; ?照多个应用的需要组织全局的、统一的数据结构; ?数据模式是多个应用共同的、全局的数据结构。 (2) 数据的高共享性与低冗余性 数据的一致性是指在系统中同一数据的不同拷贝处出现应保持相同的值,而数据不一致是指在系统中同一数据的不同拷贝处有不同的值。减少冗余性以避免数据的不同值的出现是保证统一性的基础。 ?数据独立性 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序。也就是说,数据的逻辑结构、存储结构与存取形式的改变不会影响应用程序。 数据独立性一般分为物理独立性和逻辑独立性两级。 ? 物理独立性是指即使数据的物理结构的改变,也不致引起应用程序的变化。 ? 逻辑独立性是指数据库总体逻辑结构的改变,不需要相应修改应用程序。 ?数据统一管理与控制 ? 数据的完整性检查。 ? 数据的安全性检查。 ? 并发控制。 例题精解 例5.6(2005年4月选择题第9题) 数据独立性是数据技术的重点特点之一。所谓数据独立性是指_____。 (A)数据与程序独立存放 (B)不同的数据被存放在不同的文件中 (C)不同的数据只能被对应的应用的应用程序所使用 (D)以上三种说法都不对 【解析】参看本章“考点3”中对数据独立性的描述,可知A、B、C选项的说发都不对。 【答案】D 自测题 可用“5.2过关精练”中的选择题第11,13题、填空题9,10进行自测。 考点4 数据库系统的三级模式和两级映射 数据库系统的三级模式结构由外模式、概念模式和内模式组成,数据模式给出来了数据库的数据框架结构,数据是数据库中真正的实体,但这些数据必须按框架所描述的结构的结构组织。 概念模式(Conceptual Schema)是数据库中对全局数据的逻辑结构和特征的描述,是所有用户的公共数据视图。外模式是概念模式的一部分。一个数据库只有一个概念模式。概念。概念模式主要描述数据的概念模式的一部分。一个数据库只包括一些数据间的语义约束。DBMS 提供模式数据定义语言(DDL)来描述概念模式,既严格地定义数据的名称、特征、相互关系、元素等。概念模式是一种抽象的描述,它不涉及具体的硬件环境与平台,也与具体的软件环境无关。以概念模式为框架所组成的数据库叫概念数据库(Conceptual Database)。 内模式(Internal Schema),又称为子模式(Subschema)或用户模式(User Schema),是指数据用户(包括应用程序员和最终用户)能够看见和使用的、局部的逻辑结构和特征的模式。一个数据库可以有多个外模式。以外模式为框架所组成的数据库叫用户数据库(User’s Database). 内模式(Internal Schema),又成为存储模式(Storage Schema)或物理模式(Physical Schema),是指数据在数据库系统内的存储介绍介质上的表示,即对数据的物理结构和存取方式的描述。以内模式为框架组成的数据库叫物理数据库(Physical Database) 概念模式的是数据全局的逻辑结构,决定了DBMS的功能。外模式涉及的仅是局部的逻辑结构,是模式的子集,是对概念模式的调用。 数据库系统的三级模式是对数据进行3个层次抽象的工具。在这三级模式中,内模式处于最底层,反映了数据在计算机物理结构中的实际存储形式,概念模式处于中层,它反映了设计者的数据全局逻辑要求。而外模式处于最外层,它反映了用户对数据的要求。 DBMS通过三级模式完成对数据的具体组织,使用户能在高层次上处理数据的逻辑结构,而不必关心数据的物理结构。为了实现这3个层次之间的联系,DBMS在沟通三级模式中提供了两个映射:外模式/模式映射与模式/内模式映射。 (1)外模式到概念模式的映射。对于同一个模式,可以有任意多个模式。该映射定义了某个外模式到概念模式之间的对应关系。这些映射的定义通常包含在各自的外模式中。当概念模式改变时,该映像要做相应的改变,以保证外模式的不变性。这是数据库管理员(DBA)的责任。 (2)概念模式到内模式映射。该影射定义了数据逻辑结构和存储结构之间的对应关系。例如,字段的内部表示等。当数据库的存储结构改变时,该映射也必须做相应的修改,以使模式保持不变性。 正是由于上述两层映射功能的自动实现,使得数据库系统中的数据具体有较高的逻辑独立性和物理独立性,从而大大地方便了用户的使用。 例题精解 例5.7(2004年9月选择题第10题) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是 (A)内模式 (B)外模式 (C)概念模式 (D)逻辑模式 【解析】数据库系统的三级模式结构由外模式、概念模式和内模式组成。其中内模式(Internal Schema)是指数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。 例5.8(2004年9月选择题第10题) 下列模式中,能够给出数据库物理存储结构与物理存取方法是_____。 【解析】数据库系统的三级模式结构由外模式、概念模式和内模式组成。其中内模式(Internal Schema)是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取的描述。 【答案】A 例5.8 数据库设计中,按照统一观点构造全局逻辑结构,这称为数据库的______。 (A)内模式 (B)概念模式 (C)外模式 (D)用户模式 【解析】请参看本整章“考点4”的相关描述。 【答案】B 自测题 可用“5.2过关精练”中的选择题14,21、填空题第11,15题进行自测。 5.1.2 数据模型 考点5 数据模型的基本概念 现实世界(Real World): 用户为了某种需要,需将现实世界中的部分需求用数据库现实,这样,我们所见到的是客观世界中规定边界的一个部分环境,它称为现实世界。 数据是现实世界符号的抽象,而数据模型(Data Model)则是数据特征的抽象,它从抽象层次上描述子系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有3个部分,它们分别是数据结构、数据操作与数据约束。 数据模型按不同的应用层次分成3种类型,它们是概念数据模型(Conceptual Data Model)、逻辑数据模型(Logic Data Model)、物理数据模型(Physical Data Model)。 概念数据模型简称概念模型,它是一种面向客观世界、面向用户的模型。它与数据库管理系统无关,与具体的计算机平台无关。概念模型是整个数据模型的基础。目前较为有名的概念模型有E-R模型、扩充的E-R模型、面向对象模型及谓词模型等。 逻辑数据模型又称数据模型,它是一种面向数据库的模型,该模型着重于在数据库系统一级的实现。被人们大量用较为成熟的模型有层次模型、网壮模型、关系模型、面向对象模型等。物理数据模型又称为物理模型,它是一种面向计算机物理表示的模型,此模型给出了数据模型在计算机上物理结构的表示。 例题精解 例5.9 不同的数据库管理系统不同的数据模型,下列_____下属于常用的数据模型。 (A)关系模型 (B)网壮模型 (C)层次模型 (D)链表模型 【解析】常用的数据模型有层次模型、网壮模型、关系模型等。链表模型不属于常用的数据模型。 【答案】D 例5.10 概念模型是______。 (A)硬件独立,软件独立 (B)硬件独立,软件依赖 (C)硬件依赖,软件独立 (D)硬件依赖,软件依赖 【解析】概念模型是面向现实世界的,它的出发点是有效和自然地模拟现实世界,给出数据的概念化结构。概念设计与计算机无关,所以说概念模型是硬件独立,软件独立。 【答案】A 自测题 可用“5.2过关精练”中的选择题第22,24题、填空题第18,23题进行自测。 考点6 E-R模型 E-R模型(Entity-Relationship Model),也称为实体联系模型,是概念模型中被广泛使用一种数据模型。 1(E-R模型是基本概念 (1)实体:现实世界中的事物;实体是概念世界中的基本单位,它们是客观存在的且又能相互区别的事物。凡是有共性的实体可组成一个集合,称为实体集。 (2)属性:事物的特性;一个属性的取植范围可以称为该属性的值域(Value Domain)或值集(Value Set)。 (3) 联系:现实世界中事物间的关系。 2(实体集的关系 (1) 一对一(One to One),简记为1:1。 (2) 一对多(One to Many)或多对一(Many to One)联系。简记为1:1M(1:m)或者M:1(m:1)。 (3) 多对多的联系(Many to Many)联系,简记为M:N或m:n。 E-R模型3个基本概念之间的联系关系:实体是概念时间中的基本单位,属性有属 性域,每个实体可取属性域内的值。一个实体的所有属性值叫元组。 3(E-R模型的图表法 (1) 实体集表示法,在E-R图中用矩形表示实体集。 (2) 属性表示法,在E-R图中用椭圆形(内写上属性名)表示属性。 (3) 联系表示法,在E-R图中用菱形(内写上联系名)表示联系。 (4) 实体集(联系)与属性间的联接关系。属性依附于实体集,因此,它们之间 有联接关系。在E-R图中这种关系可用联接这两个图形间的无向线段表示。属性也附于联系,它们之间也有联接关系,因此也可以用无向线段表示。 (5)实体集与联系间的联接关系。在E-R图中实体集与联系间的联接这两个图形间的无向线段表示。矩形、椭圆形、菱形以及按一定要求相互间联接的线段构成了一 个完整的E-R图。 例题精解 例5.11(2004年9月填空题第4题) 如果一 个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在_____的关系。 【解析】观察题面,“一个工人可管理多个设备,而一个设备只被一 个工人管理”,很显然,应当为一对多的关系。 【答案】一对多 例5.12 如果两个实体之间的联系是m:n,则____引入第三个交叉关系。 (A)需要 (B)不需要 (C)可有可无 (D)合并两个实体 【解析】多对多联系,简记为M:N或m:n.这是一种较为复杂的函数关系。多对多的联系需要引入第三个交叉关系。 【答案】A 自测题 可用“5.2过关精练”中的选择题第25,26题、填空题第24题进行自测。 考点7 层次模型 层次模型(Hierarchical Model)是最早发展起来的数据库模型。层次模型的基本结构是树性结构,它具有以下特点: (1) 每棵树有且仅有个无双亲结点,称为根; (2) 树中除根外所有结点所有结点有仅有一个双亲。 层次模型支持的操作主要有查询、插入、删除和更新。在对层次模型进行插入、删除、更新操作时,要满足层次模型的完整性约束条件:进行插入操作时,如果没有相应的双亲结点值就不能插入子女结点值;进行删除操作时,如果删除双亲结点值,则相应的子女结点值也同时被删除;进行更新操作时,应更新所有的记录,以保证数据的移植性。层次模型不适合表示非层次性的联系。 例题精解 例5.13(2005年4月选择题第10题) 用树形结构表示实体之间联系的模型是_____。 (A)关系模型 (B)网状模型 (C)层次模型 (D)以上三个都是 【解析】层次模型的基本结构是树形结构。网状模型是一个不加任何条件限制的无向图。关系模型采用而维表来表示。 【答案】C 自测题 可用“5.2过关精练”中的填空题第25,28题进行自测。 考点8 网状模型 网状模型(Network Mode)的出现略晚于层次模型。从图论上看,网状模型是一个加任何条件限制的无向图。 网状模型将通用的网络拓扑结构分为一些基本结构。一般采用的分解方法是将一个网络分成若干个二级树,即只有两个层次的树。在网络模型的DBTG(Data Base Task Group) 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 中,基本结构简单而级树性叫系(Set),系的基本数据单位是记录(Record), 它相当于E-R模型中的实体(集);记录又可由若干数据项(Data Item)组成,它相当于E-R模型中的属性。 例题精解 例5.14 从图论上看,网状模型是一个不加任何条件限制的_____。 【解析】请参考本章“考点8”相应说明。 【答案】无向图 自测题 可用“5.2过关精练”中的选择题第27题进行自测。 考点9 关系的数据结构 关系模型采用而维表来表示,简称表,二维表由表框架(Frame)及表的元组(Tuple)组成。表框架由n个命名的属性(Attribute)组成,n称为属性元数(Arity)每一个属性有一个取值范围称为值域(Domain)。表框架对应关系的模式,即类型的概念。 以上是关系模型中的一些重要概念。 (1) 关系。一个关系对应一个而维表,二维表名就是关系名。 (2) 属性和值域。在二维表中的列(字段)称为属性;属性的个数称为关系的元数。 列的值称为属性值;属性值的取值范围称为值域。 (3) 关系模式。在二维表中的行定义,即对关系是描述,称为关系模型。 (4) 元组。在二维表中的一行(记录的值),称为一个元组。关系模式和元组的集 合通称为关系。 (5) 分量。元组中的一 个属性值。 (6) 后选码(侯选键)。如果在一个关系中,存在多个属性(或属性组合),都能惟 一标识该关系的元组,这些属性(或属性组合)都称为该关系的后选码(侯选键)。 (7)主码(主键)。在一 个关系的若干个侯选码中指定一个用来惟一标识该关系的元组,这个被指定的侯选码称为关系的主码(主键)。 (8)主属性和非主属性。关系中包含在任何一个侯选码中为主属性(码属性),不包含在任何一个侯选码中的属性为非主属性(非码属性)。 (9)外码(外键)。当关系中的某个属性(或属性组)虽然不是该关系的主码或只是主码的一部分,但却是另一个关系的主码时,称该属性(或属性组)为这个关系的外码。 二维表一般满足下面7个性质。 (1) 元组个数有线性。二维表中元组个数是有限的。 (2) 元组的维一性。二维表中元组均不相同。 (3) 元组次序无关性。二维表中元组的次序可以任意交换。 (4) 元组分量的原子性。二维表中元组的分量是不可分割的基本数据项。 (5) 属性名惟一性。二维表中属性名各不相同。 (6) 属性次序无关性。二维表中属性与次序无关,可任意交换。 (7) 分量值域同一性。二维表属性的分量有与该属性相同的值域。 满足以上7个性质的二维表称为关系(Relation),以二维表为基本结构建立的模型。 例题精解 例 5.15(2005年4月填空题第4题) 在关系数据库中,把数据表示二维表,每一个二维表称为______。 【解析】在关系数据库中,把数据表示成二维表,每一个二维表称为关系。 【答案】关系 或 关系表 例 5.16 下面对于关系的叙述中,不正确是_____。 (A) 关系中的每个属性是不可分解的 (B) 在关系中元字的顺序是无关紧要的 (C) 任意的一个二维表都是一个关系 (D) 每一个关系只有一种记录类型 【解析】请参考本章“考点9”的相关描述。 【答案】C 自测题 可用“5.2过关精练”中的选择题第28,31题、填空题29,31题进行自测。 考点10 关系的数据约束 数据完整性由完整性规则定义,关系模型的完整性规则是对关系的某种约束。关 系模型中可以有3类完整性约束:实体完整性、参照完整性和用户定义完整性。其中实体完整性和参照完整习惯内是关系模式必须满足的完整性约束,由DBMS自动支持;而用户定义的完整性是应用领域需要遵循的约束,体现了具体领域中的语义约束力,一般由DBMS或工具提供编写手段,由DBMS完整性检查机制负责检查。 (1)实体完整性规则(Entity Integrity Rule)。关系中的元组在组成主键的属性上不能有空值。 (2)参照完整性规则(Reference Integrity Rule)。外键的值不允许参照不存在的相应表的主键的值,或者为空值。 (3)用户定义的完整性规则。用户定义的完整性规是用户根据具体应用的语义要求,利用DBMS提供的定义和检验这类完整性规则的机制,自己定义的完整性规定。 例题精解 例 5.17 关系模型有3类完整性约束:实体完整性、参照完整性和用户定义的完整性。定义外键实现的是_____。 (A)实体完整性 (B)参照完整性 (C)用户定义的完整性 (D)实体完整性、参照完整性和用户定义的完整性 例 5.18 数据库的_____是指数据的正确性和相容性。 (A)安全性 (B)完整性 (C)并发控制 (D)恢复 【解析】数据库的完整性是指数据的正确性和相容。 【答案】B 自测题 可用“5.2过关精练”中的填空题32,33题进行自测。 5.1.3 关系代数 考点11 关系模型的基本操作 关系模型的数据操纵,即建立在关系上的数据操纵,一般有查询、增加、删除和修改4种操作。这4种操作的对象都是关系,而操作结果也是关系,因此都是建立在关系上的操作,这4种操作也可以分解以下6种关系模型的基本操作。 (1)关系的属性指定。制定一个关系内的某些属性,用它确定关系这个二维表中的列,它主要用于检索或定位。 (2)关系的元组选择。用一个逻辑表达式给出关系中满足此表达式的元组,用它来确定关系二维表的行,它主要用于检索或定位。 (3)关系的合并,将两个关系合并成一个关系。用此操作可以不断合并,从而可以将若干个关系合并成一个关系,以建立多个关系间的检索与定位。 (4)一个或多个关系的查询。在一个或多个关系间做查询,查询的结果也必然为关系。 (5)关系中元组的插入。在关系中增添一些元组,用它完成插入与修改。 (6)关系中元组的删除。在关系中删除一些元组,用它完成删除与修改。 例题精解 例 5.19 关系代数是一种关系操纵语言,它的操作对象和操作结果均为_____。 【解析】关系代数是一种抽象的查询语言,它通过对关系的运算来表达查询。关系从数据结构的角度看就是一张二维表。其运算对象和运算结果均为关系。 【答案】关系 自测题 可用“5.2过关精练”中的选择题第32题、填空题第34题进行自测。 考点12 关系模型的运算 关系模型的运算可分为基本运算和扩充运算。 1( 基本运算 关系模型的基本运算包括以下几类。 (1)插入。 设有关系R需要插入若干元组,要插入的元组组成关系R‘,则插入可用集和运算表示为:RUR’。 (2)删除。 设有关系R需删除若干元组,要删除的元组组成关系R‘,则删除可用集合运算表示为:R-R‘。 (3)修改。 修改关系R内的元组内容可用下面的方法实现。 ? 设需修改的元组构成关系R‘,则先做删除得:R-R’。 ? 设修改后的元组构成关系R“,此时将其插入即得到结果:(R-R‘)UR“。 (4)查询。 用于查询的操作无法用传统的集合运算表示,需要引入一些新的运算。引入的新运算有:投影(Projection)运算、选择(Selection)运算和笛卡尔积(Cartesian Product)运算。 2( 扩充运算 关系模型的扩充运算有:交(Intersection)运算、除(Division)运算、连接(Join)与自然连接(Natural join)运算。 其运算符包括4类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。 传统的集合运算是二目运算,包括并(U)、差(-)交(?)、广义笛卡尔积(×)4种运算。专门的关系运算包括:选择(о)、投影(?)、连接(?)。 比较运算符包括:大于(,)、大于等于(?)、小于(<)、小于等于(?)、等于(,)、不等于(?)。 逻辑运算符包括:非(?)、与(?)、或(?)。 例题精解 例5.20 (2005年9月选择题第9题) 设有如下操作中正确的是_____。 R S T A B C A B C A B C 1 1 2 3 1 3 1 1 2 2 2 3 2 2 3 3 1 3 (A)T=R?S (B)T=R?S (C)T=R×S (D)T=R,S 【解析】本题中表R中的所有关系和表S中的所有关系,都包含在表T中,可以推断T=R?S。 【答案】B 例5.21 (2004年9月填空题第5题) 关系数据库管理系统能实现的专门关系运算包括选择、连接和______。 【解析】关系数据库管理系统能实现的专门关系运算包括选择、连接和投影。 【答案】投影 例5.22 设有关系R,S和T如下。关系T是由关系R和S经过_____操作得到的。 R S T A B C B D E A B C D E 1 2 3 4 1 6 1 2 3 7 1 4 1 6 2 7 1 3 2 4 7 1 3 2 4 (A)R?S (B)R,S (C)R×S (D)R?S 【解析】注意到关系R和S不具有相同的属性(R的属性是A、B、C;S的属性是B、D、E),所以并、差、交均不可行,选项A、B被排除;选项C是广义笛卡尔积,T的元组数不满足广义笛卡尔积的运算结果。 【答案】D 自测题 可用“5.2过关精练”中的选择题第33,40题、填空题第35,40题进行自测。 5.1.4 数据库设计与管理 考点13 数据库设计概述 数据库设计(Database Design)就是设计一个满足用户要求、性能良好的数据库。数据库设计以数据应 用为核心。 数据库设计的两种方法如下所述。 (1) 面向数据:以信息需求为主,兼顾处理需求。 (2) 面向过程:以处理需求为主,兼顾信息需求。 目前数据库设计一般采用生命周期(Life Cycle)发,即将整个数据库应用系统的开发分解成需求分 析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段和进一步修改阶段。 例题精解 例 5.23 (2005年9月选择题第8题) 数据库设计的根本目标是要解决_______。 (A)数据共享问题 (B)数据安全问题 (C)大量数据存储问题 (D)简化数据问题 【解析】数据设计是在一定平台制约下,根据信息需求与处理需求设计出性能良好的数据模式,其 根本目标是要解决数据共享问题。 【答案】A 例 5.24(2004年9月选择题第9题) 下列叙述正确的是______。 (A) 数据库系统是一个独立的系统,不需要操作系统的支持 (B) 数据库设计是指设计数据库管理系统 (C) 数据库技术的根本目标是要解决数据共享的问题 (D) 数据库系统中,数据的物理结构必须与逻辑结构一致 【解析】观察题面,选项A中指出数据库系统不需要操作系统的支持,显然是错误的,数据库系统 是由数据库、数据库管理系统、数据库管理员、硬件平台和软件平台等5个部分组成的,其中软件平台中最基础的部分就是操作系统;数据库设计的基本任务是根据用户对象的信息需求、处理需求和数据库的支持环境(包括硬件、操作系统与数据库管理系统)设计出数据模式,可见选项B中的描述并不完整;数据库系统的特点之一是数据独立性,即数据和程序间的互不依赖,可分为物理独立想和逻辑独立性,由此可见,选项D也不正确。 【答案】 C 自测题 可用“5.2过关精练”中的选择题第41,42题、填空题第41题进行自测。 考点14 数据库设计需求分析 需求收集和分析是数据库设计的第一阶段,这一阶段收集到的基础数据和一组数据流图是下一步设计概念结构的基础,概念结构是整个组织中所有用户关心的信息结构,对整个数据库设计具有深刻影响。 需求分析常用结构化分析方法和面向对象的方法。结构化分析(简称SA)方法用自顶向下、逐层分解的方式系统,用数据流图表达数据和处理过程的关系面向对象的方法是面向对象以数据为中心的开发方法。 数据字典是进行数据收集和数据分析所获得的主要结果。数据字典包括5个部分:数据项、数据结构、数据流(可以是数据项,也可以是数据结构)、数据存储、处理过程。 例题精解 例5.25 数据库设计的需求分析阶段主要设计______。 (A)程序流程图 (B)程序结构图 (C)框图 (D)数据流程图 【解析】需求分析阶段的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分 了解原系统的工作概况,明确用户和各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅按当前应用需求来设计数据库。数据库设计的需求分析阶段主要设计用于描述信息世界的流程的数据流程图。 【答案】D 例 5.26 数据库设计中,把数据需求写成文挡,它是各类数据描述的集合,包括数据项、数据结构、数据流、数据存储和数据加工过程等的描述,通常称为______。 【解析】参看“考点15”中对数据字典的描述。 【答案】数据字典 例5.27 数据字典中,描述数据的数据也称为______。 【解析】数据字典中,描述数据的数据也称为元数据或定义。 【答案】元数据 自测题 可用“5.2过关精练”中的选择题第43题、填空题第42题进行自测。 考点 15 数据库概念设计 1( 据库概念设计概述 数据库概念设计的目的是分析数据内在语义关系。设计的方法有两种:集中式模式设计法(适用于小型或并不复杂的单位或部门)和视图集成设计法。 2(数据概念设计过程 使用E-R模型与视图集成法进行设计时,需要按如下步骤进行。 (1) 现在局部应用 根据系统的具体情况,在多层的数据流图中选择一个层次适当的数据流图,让这组图中每个部分对应一个局部应用,以这一层的数据流图为出发点,设计出E-R图。 (2) 视图设计 视图设计一般有3种设计次序,即自顶向下、由底向上、由内向外。 (3) 视图集成 视图集成的实质是将所有的局部视图统一合并成一个完整数据模式。在进行视图集成时,最重要的工作是解决局部设计中的冲突。常见的冲突有命名冲突、概念冲突、域冲突、约束冲突。 例题精解 例 5.28 将E-R图转换成关系模式时,实体的属性就是关系的属性,实体的码就是关系的码,实体与联系都可以表示成关系。 【答案】B 自测题 可用“5.2过关精练”中的填空体第43题进行自测。 考点16 数据库的逻辑设计和物理设计 1(数据库的逻辑设计 (1) 从E-R图向关系模式转换。 数据库的逻辑设计主要工作是将E-R图转换成指定的RDBMS 中的关系模式。从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示为关系,E-R图中属性也可以转换为关系的属性,实体集也可以转换成关系。 (2) 逻辑规范化调整、实现。 ? 规范化:在逻辑设计中还需要对关系做模范化验证。 ? 调整逻辑模式;对逻辑模式进行调整是为了满足RDBMS 的性能、存储空间等要求,同时对模式 , 做适应RDBMS限制条件的修改。调整的内容有: , 调整性能以减少连接运算; , 调整关系大小,使每个关系数量保持在合理水平,从而可以提高存取效率; , 尽量采用快照(Snapshot). (3)关系视图设计 逻辑设计的另一个重要内容是关系视图的设计,它又称外模式设计。关系视图是在关系模式基础上设计的直接面向操作作用用户的视图,它可以根据用户需求随时创建,一般RDBMS均提供关系视图的功能。 关系视图的主要作用包括: ? 提供数据逻辑独立性; ? 能适应用户对数据的不同需求; ? 有一定数据保密功能。 2( 数据库的物理设计 数据库物理设计的主要目标是对数据库内部物理结构作调整,并选择合理的存取路径,也提高数据库访问速度及有效利用存储空间。一般的RDBMS中留给用户参与的物理设计内容大致有:索引设计、集簇设计和分区设计。 例题精解 例 5.29 把E-R图转换成关系模型的过程,属于数据库设计的______。 (A)概念设计 (B)逻辑设计 (C)需求分析 (D)物理设计 【解析】参看本张“考点16”的相关描述。 【答案】B 自测题 可用“5.2过关精练”中的选择题第44题、填空题第44题进行自测。 考点17 数据库管理 数据库是一种共享资源,它需要要维护与管理,这种工作称为数据库管理(Database Administration),实施此项管理的人称为数据库管理员(Database Administrator)简称DBA。 数据库管理的内容包括: (1) 数据库的建立; (2) 数据库的调整; (3) 数据库的重组; (4) 数据库安全性与完整性控制; (5) 数据库监控。 例题精解 例 5.30 下列选项中,_____不是DBA的工作职责。 (A) 建立数据模式 (B) 完成数据库设计分析 (C) 数据加载 (D) 随时观察数据库的动态变化,并在发生错误、故障或产生不适应情况时随 时采取措施 【解析】请参考本章“考点17”中的“数据库管理的内容”。 【答案】B 自测题 可用“5.2过关精练”中的填空题第45,46题进行自测。 5.2 过关精练 5.2.1 过关练习题 一、选择题 1(目前数据库市场上广泛使用的Oracle 是一种_______。 (A)应用数据库 (B)数据库系统 (C)主题数据库 (D)数据库管理系统 2(在数据库技术中,反映现实世界中事物的存在方式或运动状态的是_____。 (A)信息 (B)消息 (C)数据 (D)命令 3(数据库系统统一一般由_____构成。 ?.数据库 ?.数据库管理员 ?.数据库管理系统及其工具 ?.用户 ?.操作系统 ?.应用系统 (A)I、II和III (B)?、?、?和? (C)?、?、?、?和? (D)全部 4(下面所列各项,_____属于数据库技术的研究领域。 I(数据库管理系统软件的研制 II.数据库设计 ?.数据库理论 ?.操作系统 (A)I和II (B)I和III (C)I、II和III (D)全部 5(数据库管理系统的工作不包括______。 (A)管理操作系统 (B)保护数据库 (C)应用数据库 (D)修改数据库 6(DDL是数据库管理系统中的______。 (A)操作DB语言 (B)定义DB的语言 (C)自含语言 (D)宿主语言 7(在以下所列的条目中,_____是数据库管理员(DBA)的职责。 ?.负责管理企业的数据库资源 ?.收集和确定有关用户的需求 ?.设计和现实数据,并按需要修改和转换数据 ?.为用户提供资料和培训方面的帮助 (A)1和2 (B)2和3 (4)1和4 (D)都是 8(在数据库中存储的是_____。 (A)数据 (B)数据模型 (C)数据以及数据之间的联系 (D)信息 9(下面关于数据库中数据的说法错误的是______。 (A)数据库中的数据可分为用户数据和系统数据。 (B)数据库中的数据具有较小的冗余度 (C)数据库中的数据具有较高的数据独立性和易扩展性 (D)数据库中的数据可被所有用户共享 10(数据库管理系统的数据操纵语言(DML)所实现的操作一般包括_______。 (A)建立、授权、修改 (B)建立、授权、删除 (C)建立、插入、修改、排序 (D)查询、插入、修改、删除 11(下列条目中,_____是DBMSD基本功能。 ?.提供多用户对数据库结构的描述功能 ?.提供用户对数据的操作功能 ?. 提供多用户环境下的事物管理 ?. 分类组织、存储和管理各种数据 (A)I、II和III (B)II、III和IV (C)I、II、III和IV (D)都是 12(数据结构的描述和定义是DBMS运行的基本依据,它们存储于______。 (A)封锁表 (B)数据字典 (C)索引 (D)日志 13(数据库的特点之一是数据的共享,严格地讲,这里的数据共享是指______。 (A)用一个应用的多个程序享一个数据集合 (B)多个用户使用同一种语言共享数据 (C)多个用户共享一个数据文件 (D)多种应用、多种语言、多个用户相互覆盖地使用数据集合 14(在关系数据库中,索引(Index)是三级模式结构中的______。 (A)概念模式 (B)内模式 (C)模式 (D)外模式 15(下述关于数据库系统的叙述中正确的是_____。 (A) 数据库数据可以为经DBA认可的各用户共享 (B) 数据库系统避免了一切冗余 (C) 数据库系统的存储模式有如有改变,则概念模式应予以调整,否则用户会在执行中出错 (D) 数据库系统与文件系统相比能管理更多的数据 16(下列关于数据库三级模式结构的说法中,不正确的是______。 (A) 数据库三级模式结构由内模式、模式和外模式组成 (B) DBMS在数据库三级模式之间提供外模式/概念模式映射和概念模式/内模式映射 (C) 外模式/模式映射实现数据的逻辑独立性 (D) 一 个数据库可以有多个模式 17(下列关于关系数据库视图的说法中,正确的是_____.。 ?.视图是关系数据库三级模式中的内模式 ?.视图能够对机密数据提供一定的安全保护 ?.视图对重构数据库提供了一定程度的逻辑独立性 ?.对视图的一切操作最终都要转换为对基本包的操作 ?.所有的视图都是可以更新的 (A)I、II和III (B)II、III和IV (C)II、III、IV和V (D)都正确 18.DBMS________。 (A)依赖于概念模型 (B)独立于结构模型 (C)依赖开结构模型 (D)以上三个都不对 19(在关系数据库中,视图(View)是三级模型中的________。 (A)内模式 (B)模式 (C)存储模式 (D)外模式 20(在数据库三级模式中,描述数据库中全体逻辑结构的特性的是________。 (A)外模式 (B)内模式 (C)存储模式 (D)概念模式 21(数据库的要领模型独立于________。 (A)具体的机器和DBMS (B)E-R图 (C)信息世界 (D)现实世界 22(下列关于数据库数据模型的廉洁中,不正确的是________。 (A)任何一张二维表都表示一个关系 (B)层次模型的数据结构是有向飘树结构 (C)在网状模型中,一个子结点可以有多个父结点 (D)在面向对象模型中每一个对象都有一个惟一的标识 23(数据库管理系统常用的数据模型有________三种。 (A)网状模型、链状模型和层次模型 (B)层次模型、环状模型和关系模型 (C)层次模型、网状模型和关系模型 (D)层次模型、网状模型和语义模型 24(在关系数据库系统中,当关系的模型改变时,用户程序也可以不变,这是________。 (A)数据的物理独立性(B)数据的逻辑独立性 (C)数据的位置独立性 (D)数据的存储独立性 25(E-R模型用于数据库设计的________阶段。 (A)需求分析 (B)概念结构设计 (C)逻辑结构设计 (D)物理结构设计 26(E-R图是数据库设计的工具之一,它一般适用于建立数据库的________。 (A)概念模型 (B)结构模型 (C)物理模型 (D)逻辑模型 27(网状模型将通用的网络拓相扑结构分析为一些基本结构。一般采用的分解方法是将一个网络分成若干个________。 (A)二叉树 (B)二级树 (C)控制结构 (D)数据项 28(关系表中的每一横行称为一个________。 (A)元组 (B)字段 (C)属性 (D)码 29(在关系数据库中,用来表示实体之间联系的是________。 (A)树结构 (B)网状结构 (C)线性表 (D)二维表 30(关系数据模型通常由3部分组成,它们是________。 (A)数据结构、数据通信、关系操作 (B)数据结构、关系操作、完善性约束 (C)数据通信、关系操作、完善性约束 (D)数据结构、数据通信、完善性约束 31(对关系模型叙述错误的是________。 (A)建立在严格的数学理论、集合论和谓词演算公式的基础之上 (B)微机DBMS绝大部分采取关系数据型 (C)用二维表表示是关系模型的一大特点 (D)不具有连接操作的DBMS也可以是关系数据库系统 32(下面关于关系模型的叙述错误的是________。 (A)关系模型的数据操纵是建立在关系上的数据操纵 (B)关系模型中不可以将多个关系合成一个关系 (C)关系模型的数据操纵对象是关系 (D)在一个或多个关系间做查询,查询的结果也必然为关系 33(关系数据库管理系统能实现的专门关系运算包括________。 (A)排序、索引、统计 (B)选择、投影、连接 (C)关联、更新、排序 (D)显示、打印、制表 34(基于“学生-选课-课程”数据库中如下三个关系: S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER) 查找学生号为“200301188”的学生的“数据库”课程的成绩,至少将使用关系________。 (A)S和SC (B)SC和C (C)S和C (D)S、SC和C 35(由于关系模式设计不当所引起的问题是________。 (A)丢失修改 (B)更新异常 (C)读数据 (D)数据被非法读取 36(设关系R和S的元组个数分别为100和300,关系T是R 与S的笛卡积,则T的元组个数是________。 (A)400 (B)10000 (C)30000 (D)90000 37(设关系R与关系S具有相同的目(或称度),且相对应的属性的值取自同一个域, 则R,(R,S)等于________。 (A)R?S (B)R?S (C)R×S (D)R,S 38(在关系代数中,从两个关系的笛卡积中,选取它们属性间满足一定条件的元组的操 作,称为________。 (A)投影 (B)选择 (C)自然连接 (D)0连接 39(按条件f对关系R进行选择,其关系代数表达式是________。 (A)R?×?R (B)R?×?R (C)Óƒ(R) (D)f (R) 40(设关系R、S和T 分别如下所示,则有________。 R S T RSA B C B E A C E .B .B abbabb5 3 5 7 1 1 1 1 1 2 abbabb16 7 5 1 2 2 1 1 3 0 abb1abb8 6 7 2 3 3 0 1 2 2 ab1babb12 6 2 4 2 3 1 2 3 0 babb1 2 8 5 2 3 3 0 (A)T=R连接S(C,E, (B)T=R连接S(R.B=S.B) (C)T=R连接S (D)T=R×S 41.数据库设计包括两个方面的设计内容,它们是________。 (A)概念设计和逻辑设计 (B)模式设计和内模式设计 (C)内模式设计和物理设计 (D)结构特性设计和行为特性设计 42.下列说法中________是不正确的。 (A)数据库减少了数据冗余 (B)数据库避免了一切数据重复 (C)数据库中的数据可以共享 (D)如果冗余是系统可控制的,则系统可 确保更新时的一致性 43(下列关于数据库设计的描述正确的是________。 (A)需求分析常用面向过程和面向对象的方法(B)SA方法用自下向顶,逐层分析的 方式分析系统 (C)数据字典是进行详细的数据收集和数据分析所获得的主要结果 (D)SA方法中,使用表来表达数据和处理过程的关系 44(RDBMS的层次结构按照处理对象有不同,依最高级到最低级的次序来划分,它们 是________。 (A)应用层、语言翻译处理层、数据存取层、数据存储层、操作系统层 (B)应用层、数据存储层、语言翻译处理层、数据存储层、操作系统层 (C)应用层、语言翻译处理层、数据存储层、数据存取层、操作系统层 (D)应用层、数据存取层、数据存储层、语言翻译处理层、操作系统层 二、填空题 1( 数据库中的数据可分为两类:用户数据和________。 2( 数据库系统中实现各种数据管理功能的核心软件称为________。 3( 数据库技术的研究领域十分广泛,概括的讲可以包括三个主要领域:DBMS软件的研制、数据库设计和________。 4( 数据库管理系统是位于用户和________系统之间的一个数据管理软件。 5( 数据库应用系统的设计应该具有对于数据进行收集、存储、加工、抽取和传播等功能,即包括数据设计和处理设计,而________是系统设计的基础和核心。 6( 数据库系统中把所有相关的数据,按统一的模型(层次、网状、关系)存储在一起,由相应的________软件来管理;数据库的数据面向整个系统,实现了数据共享,减少了数据冗余。 7( DBMS的DML实现对数据库中的数据操作,其基本的数据操作可分为两类:________和更新(包括插入、删除、修改)。 8( 数据管理技术的发展经历了人工管理阶段、文件系统阶段和________阶段。 9( 数据独立是指________独立于存储在外存上的数据库中的数据。 10(数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为________。 11(处模式面向用户,故称处模式为________模式或子模式。 12(三级模式中,只有________才真正存储数据,而模式和处模式均不存储数据。 13(模式DDL定义________,子模式DDL定义用户数据库,存储模式DDL定义存储数据库。 14(在数据模型中,________是数据库中全体数据的逻辑结构和特征的描述。 15(外模式是________的子集。 16(数据库中,数据的物理独立性是指________。 17(数据模型所描述数据的静态特征、动态特征的数据的完整性约束。对数据结构的数据间联系的描述,这是描述数据的________。 18(数据模型所描述的内容包括三个部分,它们是数据结构、数据操作与________。 19(联系是指________之间的相互联系。 20(________模式不涉及数据的物理存储模式,对应于总体概念级数据库,故称为DBA视图。 21(对实际问题总是先设计一个________模型,然后再把它转换成计算机能实现的逻辑模型。 22(数据模型可分为两个级别,一个是独立于计算机系统的模型,称为概念模型;另一个是直接面向数据库的逻辑结构,称为________模型。 23(数据结构的概念模型抽象级别________,它独立于软件与硬件。 24(假设班级和班长之间的联系是一对一联系,则班级和学生之间的联系是________的联系。 25(在层次模型中,无双亲的结点称为________。 26(数据模型可分为概念数据模型和结构数据模型,层次模型是________数据模型。 27(层次模型的缺点是不能直接表示________联系。 28(用树型结构表示实体类型及实体间联系的数据模型称为________。 29(在关系模型中,把数据看成一个二维表,每一个二维表称为一个________。 30(在二维表中能惟一标识元组的最小属性集称为该表的________。 31(在二维表中的一行(记录的值),称为一个________。 32(实体完整性规则要求主属性________。 33(关系模型的完整性规则是对关系的某种约束条件,包括实何等完整性、________和自定义完整性。 34(关系模型的数据操纵一般有查询、________、删除和修改四种操作。 35(用值域的概念来定义关系,关系是属性值域笛卡尔的一个________。 36(关系代数运算中,传统的集合运算有________、并、交和差。 37(传统的集合“并、交差”运算施加于两个关系时,这两个关系的________必须相等,相对应的属性值必须取自同一个域。 38(设有关系R和S,关系代数表达式R,(R,S)表示的是________。 39(连接操作是从两个关系的笛卡尔积中选取属性间满足一定条件的________。 40(关系代数运算中,专门的关系运算有________、投影和连接。 41(数据库设计的步骤是需求分析,概念分析,逻辑设计,物理设计和________。 42(对数据库设计来讲,________是进行详细的数据收集和数据分析所获得的主要结果。 43(E-R图关系模型转化要解决的问题是如何将实体和实体之间的联系转换成关系模式,如何确定这些关系模式的________。 44(________是在关系模式基础上所设计的直接面向操作用户的视图。 45(数据库是一种共享资源,它需要维护与管理,这种工作称为________。 46(数据库管理员(Database Administrator)简称为________。 5.2.2 过关练习题解析与答案 一、选择题 1(【解析】Oracle是目前广泛使用的一种大型数据库管理系统,它是美国Oracle公司的产品,Oracle最初被设计成一个关系数据库管理系统(RDBMS),自Oracle 8 之后,逐渐定位成一个对象-关系数据库管理系统(ORDBMS)。 【答案】D 2(【解析】请参阅本章“考点1”。 【答案】A 3(【解析】请参阅本章“考点1”。 【答案】D 4(【解析】数据库技术的研究领域包括以下3个方面: ? 数据库管理系统软件的研制; ? 数据库设计; ? 数据库理论。 【答案】C 5(【解析】操作系统是一个管理软件,是其他应用的基础。因此,数据库管理系统的工作不包括管理操作系统。 【答案】A 6(【解析】请看本章考点1中的描述。 【答案】B 7(【解析】数据库管理员(Database Administrator 简称DBA)的主要工作包括:管理企业的数据库资源、收集和确定有关用户的需求、设计和实现数据库并按需要修改的转换数据、为用户提供资料和培训方面的帮助。 【答案】D 8(【解析】数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存 放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,即数据库是存储在计算机内有结构的数据的集合。 【答案】C 9(【解析】请参阅本章“考点1”。 【答案】D 10(【解析】DBMS的DML实现对数据库数据的查询、插入、修改和删除功能。 【答案】D 11(【解析】DBMS的基本功能有如下几种。 ? 数据库定义功能:库结构描述,完整性定义,安全保密定义,存取路径定义等。 ? 数据库取功能:提供用户对数据的操作功能,实现数据库数据的查询、插入、修改和删除。 ? 数据库运行管理:多用户环境下的事务管理以及自动恢复、并发控制和死锁 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 、安全性查和存取控? 制等。数据组织、存储和管理功能:分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等。 ? 数据库的建立和维护:初始建立数据、数据转换、数据库的转存和恢复、数据库的重组织和重构造等。 ? 其他功能。 【答案】D 12(【解析】对数据库结构的各种描述的定义均存储在数据字典(又中系统目录)中。 数据字典(DD-Data Dictionary)是结构化分析方法的核心。数据字典是所有与系统相关的数据元素的一个有组织的列表,以及对数据元素的精确的、严格的定义,使得用户和系统分析员对输入、输出、存储成分和中间计算结果有共同的理解。 【答案】B 13(【解析】由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。 这里的数据共享是指多种应用、多种语言、多个用户相互覆盖地使用数据集合,这种共享数据库可为多个用户服务。 【答案】D 14(【解析】数据库系统的三级模式包括模式(概念模式)、外模式、内模式。 概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。 外模式,也称用户模式,是数据用户能够看见和使用的局部的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 内模式:也称物理模式和存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据库内部表示方法。如记录存储方式是怎样的;索引按照什么方式组织;数据是否压缩存储等。 【答案】B 15(【解析】数据库系统的基本特点是数据的集成性、数据的高共享性和低冗余性、数据独立性、数据统一管理与控制。但数据不能避免一切冗余。所以B选项叙述错误。 概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。此描述是一种抽象的描述,它年涉及具体的硬件环境与平台,也与具体的软件环境无关。所以数据库系统的存储模式如有改变,概念模式不必改变。所以C选项叙述错误。 数据库系统比文件系统的管理数据的性能更好,但不能说数据库系统比文件系统管理的数据更多。所以D选项叙述错误。 【答案】B 16、【解析】请参考本章考点4中的相关描述。 【答案】D 17、【解析】 ?:视图是关系数据库中的外模式,索引是内模式,此项描述是错误的。 ?:视图可以针对不同的用户进行定义,使机密数据不出现在不应看到数据的用户视图中,从而保护机密数据,此项描述是正确的。 ?:当数据库重新构造时,有时可以通过修改视图的方式来查找数据,而用户程序不用改变,此项描述是正确的。 ?:由于视图是虚表,所以对视图的操作是最终都会转化成对基本表的操作,此项描述是正确的; ?:关系数据库中,并不是所有的视图都是可更新的,因为有些视图的更新不能惟一地有意义地转换成对相应基本表的更新,此项描述是错误的。 【答案】B 18(【解析】DBMS的设计与结构模型密不可分,它是结构模型的体现。 【答案】C 19(【解析】请参考本章考点4中对概念的相关描述。 【答案】D 20(【解析】请参考本章考点4中的相关描述。 【答案】D。 21(【解析】请参考本章考点4中对概念的相关描述。 【答案】A 22(【解析】4个选项分别对数据库4种常用的数据库结构模型进行了描述。 关系模型的层次结构是一棵有向树,树的结点是记录类型,只有一个根结点,根结点以外的结点有且只有一个父结点,选项B的描述是正确的。 网状模型中一个子结点可以有多个父结点,在两个结点之间可以有一种或多种联系,选项C的描述是正确的。 面向对象模型中的每个对象都有惟一标识,称为OID,它是独立于值的,在全系统中惟一的,选项D的描述是正确的。 【答案】A 23(【解析】请参看本章“考点5”中对数据模型的概述。 【答案】C 24(【解析】数据的逻辑独立性:当模式改变时,数据库管理员对各个外模式/模式映射做相应改变,可以使外模式保持不变。应用程序是依据外模式的编写的,因此也不必修改,这样保证了数据与程序的逻辑独立性。 数据的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映射做相应改变,可以使外模式保持不变,从而应用程序也不改变,这样保证了数据与应用程序的物理独立性。 参考以上两个定义可知,本题的正确答案为B 【答案】B 25(【解析】数据库设计分为:需求分析、概念结构设计、逻辑结构设计的物理设计几个阶段。 E-R模型用于概念结构设计阶段,它将现实世界的信息结构统一用实体、属性以及实体之间的联系描述。 【答案】B 26(【解析】长期以来被广泛使用的概念模型是E-R模型(Entity-Relationship Model)(或实体联系模型)。E-R模型可以用一种非常直观的图的开式表示,这种图称为E-R图(Entity-Relationship Diagram)。因此本题的正确答案为A。 【答案】A 27(【解析】请参阅本章“考点8”。 【答案】B 28(【解析】请参阅本章“考点9”中对元组的描述。 【答案】A 29(【解析】请参阅本章“考点9”。 【答案】D 30(【解析】这是关系模型的理论基础,关系数据模型通常由3部分组成,它们是数据结构、关系操作、完善性约束。是在关系R中选择满足给定条件的诸元组。 【答案】B 31(【解析】连接又称为限制,是在关系R中选择满足给定条件的诸元组。 关系模型采用二维表来表示,简称表或关系表。二维表由表框架(Frame)及表的元组(Trple)组成。在表框架中按行可以存放数据,每行数据称为元组。 对于关系模型来说,连接操作必不可少。因此选项D中的描述是错误的。 【答案】D 32(【解析】请参阅本章“考点12”。 【答案】B 33(【解析】关系模型的基本运算包括插入、删除、修改、查询。引入的新的运算有投影(Projection)运算、选择(selection)运算、笛卡尔积(Cartesian Product)运算。关系代数中的扩充运算有交(intersection)运算、除(division)运算。 【答案】B 34(【解析】根据韪要求分析得出关键属性包括:学号、课程名称、成绩。学号在S和SC中都有,课程名称在C中,成绩在SC中,所以只使用SC和C即可完成查找。 【答案】B 35(【解析】关系模式设计不当会引起数据冗余、更新异常(不一致)、插入异常、删除异常问题。 【答案】B 36(【解析】笛卡尔积(Cartesian Product)运算:对于两个关系的合并操作可以用笛卡尔积表示。设有n元关系R及m元关系S,它们分别有p、q两个元组,则关系R与S经笛卡尔积记为R×S,该关系是一个n,m元关系,元组个数是p×q,由R与S的有序组组合而成。 根据笛卡尔积的定义关系T的元组个数应是关系R和关系S元组个数的乘积,即100×300=30000 【答案】C 37(【解析】R,S表示属于R但不属于S的元组,假定用S1表示,则R,(R,S)可以表示为R-S1,表示为属于R但不属于S1的元组,由于S1表示为属于R但不属于S的元组,则用S表示为属于R且属于S的元组。这样R,(R,S)就是属于S的元组,应是R与S的交。 【答案】B 38(【解析】 设影:对关系R的投影是从R 中选择出若干属性列组成亲的关系。 选择:又称为取胜制,是在关系R中选择满足给定条件的诸元组。 Q连接:又叫连接,是从两个关系的笛卡尔积中选取它们的属性间满足一定条件的元组。 【答案】D 39(【解析】按条件f对关系R进行选择,其关系代数表过式是Óƒ(R)。 【答案】C 40(【解析】分析关系T发现:从元组数量上看答案不会是选项D,又发现R.B和S.B不一定相等,又排除选项B和选项C,剩下选项A,分析A的条件发现符合要求,所有C的值都小于E。 【答案】A 41(【解析】数据库设计包括设计和逻辑设计两个方面的设计内空。 数据库概念设计的目的是分析数据间内在语义关联,在其基础下建立一个数据的抽象模型。 数据库的逻辑设计主要工作是将E-R图转换在指定RDBMS中的关系模式。 【答案】A 42(【解析】数据库系统的基本特点包括数据的集成性、数据的高共享性和低冗余性、数据独立性、数据统一管理与控制。数据库只能减少数据冗余,但不能彻底解快数据重复。 【答案】B 43(【解析】请参阅本章“考点14”相关说明。 【答案】C 44(【解析】 RDBMS分层体系如下(由上到下)。 第一层:应用层。 第二层:语言翻译处理层。 第三层:数据存取层。 第四层:数据存储层。 第五层:操作系统层。 【答案】A 二、填空题 1(【解析】请参阅本章“考点1”。 【答案】系统数据 2(【解析】请参阅本章“考点1”。 【答案】数据库管理系统 3(【解析】本题考查数据库系统的基本要领数据库技术的研究理论有3个领域:数据库管理系统软件的研制(DBMS的研制)、数据库设计、数据库理论。 【答案】数据库理论 4(【解析】请参阅本章“考点1”。 【答案】操作 5(【解析】请参阅本章“考点1”。 【答案】数据设计 6(【解析】数据库管理系统(DBMS)是操纵和管理数据库的软件系统,它由一组计算机程序构成,管理并控制数据资源的使用。数据库系统中把所有相关的数据,按统一的模型(层次、网状、关系)存储在一起,由相应的数据库管理系统软件来管理;数据库的数据面向整个系统,实现了数据共享,减少了数据冗余。 【答案】DBMS或数据库管理系统 7(【解析】DDL是数据库的定义语言,DML是数据库的操纵语言,DCL是数据库的控制语言。 DBMS的DML实现对数据库的查询、插入、删除、修改功能。 【答案】查询 8(【解析】请参阅本章“考点2”。 【答案】数据库系统 9(【解析】请参阅本章“考点3”中对数据独立性的描述。 【答案】用户的应用程序 10(【解析】请参阅本章“考点3”中对数据独立性的描述。 【答案】逻辑独立性 11(【解析】请参阅本章“考点4”中对外模式的描述。 【答案】用户 12(【解析】请参阅本章“考点4”中的相关描述。 【答案】内模式 13(【解析】DDL是数据库的定义语言,DML是数据库的操纵语言,DCL是数据库的控制语言。模式DDL定义概念数据库,子模式DDL定义用户数据库,存储模式DDL定义存储数据库。] 【答案】概念数据库 14(【解析】概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,也指划分方式。 【答案】概念模式 15(【解析】请参阅本章“考点4”中的相关描述。 【答案】概念模式 16(【解析】数据库中,数据的物理独立性是指数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式 改变等都不影响数据库的逻辑结构,从而不致辞引起应用程序的变化。 【答案】用户的应用程序与存储在磁盘上数据库中的数据库是相互独立的 17(【解析】数据模型是数据库系统的数学形式框架,其中: ? 数据的静态特征包括对数据结构和数据间联系的描述; ? 数据动态特征指的是一组定义在数据上的操作,包括操作的含义、操作符、运算规则及语言; ? 数据的守整性约束指的是一组规则,数据库中的数据必须满足这组规则。 【答案】静态特征 18(【解析】本题考查数据模型的基础知识。数据模型所描述的内容包括三个部分,它们是数据结构、数据操作与数据约束。 【答案】数据约束 19(【解析】本题考查数据模型的基础知识。联系是指实体之间的相互联系,即具作事务。 【答案】实体 20(【解析】概念模型是面向现实世界的,它的出发点是有效和自然地模拟现实世界,给出数据的概念化结构,与挂牌机的实现无关。 【答案】概念 21(【解析】概念模型是面向现实世界的,它的出发点是有效和自然地模拟现实世界,给出数据的概念化结构,对实际问题总是先设计一下概念模型,然后把它转换成计算机能实 现的逻辑模型。 【答案】概念 22(【解析】数据模型可分为两个级别,一个是独立于计算机系统的模型,称为概念模型;另一个是直接面向数据库的逻辑结构,称为结构模型。结构模型可由概念模型直接转换而来。 【答案】概念 23(【解析】由本节第21道填空题的“解析”可知,概念模型的级别最高。 【答案】最高 24(【解析】实体集间联系的个数可以是一个也可以是多个。两个褓集间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种; 一对一(one to one)的联系,简记为1:1。这种函数关系是常见的函数关系之一。 一对多(one to many)或多对一(many to one)联系,简记为1:M(1:m)或M:1(m:1)。这两种函数关系实际上是一种函数关系。 多对多(many to many)联系,简记为M:N或m:n。这是一种较为复杂的函数关系。 【答案】1:M或者一对多 25(【解析】层次模型是最早发展起业的数据库模型。层次模型(Hierarchical Model)的基本结构是树形结构。 树(Tree)是一种简单的非线性结构。在树这种数据结构中,所有数据元素之间的关系具有明显的层次特性。 在树结构中,无双亲的结点称为根结点。 【答案】根结点 26(【解析】数据模型扬E-R模型、层次模型、网状模型、关系模型。不同的数据库管理系统支持不同的数据模型。数据模型可分为两个级别,一个是独立于计算机系统的模型,称为概念模型;另一个是直接面向数据库的逻辑结构,称为结构模型。 层次模型是最早发展起业的数据库模型。层次模型(Hierarchical Model)的基本结构是树形结构。 层次模型是数据模型 【答案】结构 27(【解析】层次模型(Hierarchical Model)的基本结构是树形结构,只能表示一对多的联系。多对多的联系,一般靠网状模型来实现。 【答案】M:N或m:n 28(【解析】请参阅本节第25道填空题的解析。 【答案】层次模型 29(【解析】请参阅本章“考点9”。 【答案】关系 30(【解析】请参阅本章“考点9”中关于“主码(主键)”的定义。 【答案】主码或主键 31(【解析】请参阅本章“考点9”中关于“元组”的定义。 【答案】元组 32(【解析】请参阅本章“考点10”。 【答案】非空 33(【解析】请参阅本章“考点10”。 【答案】参照完整性 34(【解析】请参阅本章“考点12”。 【答案】增加 35(【解析】从数学和观点定义关系称为关系的形式定义,有两种定义方法。 用集合论的观点定义关系:关系是一个元素的K的元组集合,即这个关系有若干个元组,每个元组有K个属性值。 用值域的概念来定义关系:关系是属性值域笛卡尔积的一个子集。 【答案】子集 36(【解析】请参阅本章“考点12”。 【答案】笛卡尔积 37(【解析】因为,传统的集合“并、交、差”运算要对相同的关系实施。当这些运算施加于两个关系时,这两个关系的属性个数必须相等,相对应的属性值必须取自同一个域。 【答案】属性个数 38(【解析】交运算可由基本运算推导得:R?S =R,(R,S) 【答案】R?S 39(【解析】连接:又叫Q连接,是从两个关系的笛卡尔积中选取它们的属性间满足一定条件的元组。也称为行、横向操作。 【答案】元组 40(【解析】请参阅本章“考点12”。 【答案】选择 41(【解析】数据库设计的步骤是需求分析,概念分析,逻辑设计,物理设计以及编码和调试。这是整个设计过程的最后一步,设计后还会维护。 【答案】编码和调试 42(【解析】请参阅本章“考点14”。 【答案】数据字典 43(【解析】本题考查数据库逻辑设计的基础知识。E-R图向关系模型转化要解决的问题是如何将实体之间的联系转换成关系模式,如何确定这些关系模式的属性的命名,以便在转换中使用。 【答案】属性的命名 44(【解析】请参阅本章“考点16”。 【答案】关系视图 45(【解析】请参阅本章“考点17”。 【答案】数据库管理 46(【解析】请参阅本章“考点17”。 【答案】DBA 第4章 软件工程基础 本章主要考察的内容是: , 软件定义与特点 , 软件开发过程的过程化原则 , 结构化分析方法 , 结构化设计方法 , 结构化测试技术与方法 , 程序调试基本概念 在近3次考试中涉及本章内容的相关试是数量如图4.1所示。 考试时间 试题类型 题号 考核点 6 软件工程基础——结构化分析方法综合 选择题 2004年9月 7 软件工程基础——结构化设计方法 填空题 3 软件测试——软件测试技术与方法综述 6 软件测试——软件测试的目的 选择题 7 结构化设计方法——软件设计基本概念 2005年4月 8 软件工程基础——软件定义与软件特点 3 软件工程基础——软件调试基本概念 填空题 5 软件工程基础——结构化分析方法 1 软件工程基础——软件设计和软件测试 5 软件工程基本概念——软件危机与软件工程 选择题 2005年9月 6 结构化设计方法——详细设计 7 软件工程基本概念——软件工程与软件生命周期 填空题 3 软件工程基础——软件测试——软件测试的实施 可见,本章相关试题基本在5道题左右(选择题居多),合计10分,占二级公共基础知识相关试题总量的33%左右。因而,本章是考生需要重点掌握的。 4.1 软件工程基本概念 考点1:软件定义与软件特点 计算机软件(Software)是包括程序、数据及相关文档的完整指令。它与硬件相互依存,构成计算机系统。 计算机软件包括如下特点。 ? 软件是一种逻辑实体。 ? 软件的生产与硬件不同,它没有明显的制作过程。 ? 软件在运行、使用期间不存在磨损、老化问题。 ? 软件的开发、运行具有领带计算机系统的特性,受计算机系统的限制,这使软件移植时可能会出现问题。 ? 软件复杂性高,成本昂贵。 ? 软件开发涉及诸多社会因素。 软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件,还包括辅助管理人员控制开发进程和项目管理的式具软件。 例4.1 下列描述中正确的是______。(2005年4月赞扬题第8题) (A)程序就是软件 (B)软件开发不受计算机系统的限制 (C)软件既是逻辑实体,又是物理实体 (D)软件是程序、数据与相关文档的集合 【解析】参照本章“考点破解1”的相关叙述。 【答案】D 例4.2 下列关于计算机软件特点的描述,错误的是______。 (A)软件是物理实体,不过其具有抽象性 (B)软件没有明显的制作过程 (C)软件开发复杂性高,成本昂贵 (D)软件在运行、使用期间不存在磨损 和老化的问题 【解析】参照本章“考点破解1”中对计算机软件特点的描述。 【答案】A 自测题 可用“4.2过关精练”中的选择题第1题以及填空题第1、2题进行自测。 考点2:软件定义与软件工程 软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题,包括成本、质量、生产率等问题。 软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档实践标准和工序。 软件工程的核心思想是把软件产品作为一个工程产品处理。 软件工程包括3个要素,妈方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理的文档生成;过程支持对软件开发的各个环节控制和管理。 例4.3 下列描述中正确的是______。(2005年9月选择题第5题) (A)软件工程只解快软件项目的管理问题 (B)软件工程主要解决软件产品的生产问题 (C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 (D)软件工程只解决软件开发中的技术问题 【解析】软件工程应用计算机科学、数学及管理科学等原理采用工程化原则和方法开发软件系统。它不仅解决软件开发中的技术问题,还解决软件项目的管理问题和软件产品的生产问题。 【答案】C 例4.4 下面不属于软件工程的3个要素的是______。 (A)工具 (B)过程 (C)方法 (D)环境 【解析】参照本章“考点破解2”可甜酸题选项中,只有环境不是软件工程的要素。 【答案】D 自测题 可用“4.2过关精练”中的选择题第2、3题以及填空题第3,6题进行自测。 考点3:软件工程过程与软件生命周期 软件工程过程是指为获得软件产品,在办件工具运行中由软件工程师完成的一系列软件工程活动,包括4种基本活动:软件规格说明、软件开发、软件确认、软件演讲。 从软件开发的观点看,软件工程过程是使用适当的资源为开发软件进行的一组开发活动,在过程结束时将输入转化为输出。 通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期可以粗略划分为软件定义、软件开发和软件运行维护三个阶段。 软件生命周期包括以下几个主要活动。 ? 可行性研究与 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 制定。确定开发目标总的要求,给出可行方案,制定开发计划。 ? 需求分析。根据用户的需求进行分析并给出详细定义,即确定软件系统的功能。 ? 软件设计。在反复理解软件需求的基础上给出软件结构、模块划分、功能分配及处理流程。 ? 软件实现。把软件设计转换成计算机可以接受的程序代码,即守成源程序的编码和 相关用户文档,编写单元测试计划。 ? 软件测试,检验软件的各个组成部分,编写测试分析报告。 ? 运行的维护。交会使用,并不断进行维护,根据新需求进行扩充和删改。 例4.5 下列描述中正确的是______。(2005年9月选择题第7题) (A)软件交付使用后还需要进行维护 (B)软件一旦交付命脉就不需要再进行维护 (C)软件交付使用后生命周期就结束了 (D)软件维护是指修复程序中被破坏的指令 【解析】通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件交付使用后还需要在运行、使用过程中不断维护,根据新提出的需求进行必要而且可能的扩充和删改。 【答案】A 例4.6 在软件生命周期中,软件实现阶段的主要任务是______。 (A)把软件设计转换成计算机可以接受的程序代码 (B)确定开发目标总的要求 (C)给出详细定义,即确定软件系统的功能 (D)检验软件的各个组成部分 【解析】详见本章“考点破解3”。 【答案】A 例4.7 与早期的软件开发方式相比较,结构化周期法最重要的指导原则应该是______。 (A)自顶向下设计 (B)分阶段开发 (C)逐步求精 (D)用户需求至上 【解析】结构化生命周期法中产生的系统需求说明书应当是对需求完备的、一致辞的和正确的说明,即用户需求至上。而传统的开发方法中需求分析一般是由软件专业人员完成的,用户无法介入。 【答案】D 自测题 可用“4.2过关精练”中的选择题第4,6题以及填空题第7题进行自测。 考点4:软件工程的目标与原则 软件工程的目标是在给定成本、进度的前提下,开发具有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操性和可互操作性具满足用户需求的产品。 软件工程需要达到的基本目标是:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用。 软件工程的理论和技术研究的主要包括软件开发技术和软件工程管理。 软件工程的原则包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。这些也是软件设计所必须遵循的原则。 例4.8 下列关于软件工程与原则的描述错误的是______。 (A)软件工程的目标是在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操性和可互操作性具满足用户需求的产品 (B)软件工程的理论和技术研究的主要包括软件开发技术和软件工程管理 (C)保证模块间具有松散的耦合关系,模块内由较强的内聚性 (D)要求采用开放技术,将程序模块的实现细节显现出来,方便以后的维护 【解析】在软件工程原则中,要求住处隐蔽,即采用封装技术,将程序模块的实现细节隐蔽起来,使模块接口尽量简单。 【答案】D 自测题 可用“4.2过关精练”中的填空题第8题进行自测。 考点5:软件开发工程与软件开发环境 1( 件开发工具 软件开发工具为软件工程方法提供销了自动的或半自动的软件支撑环境。同时,软件开发方法的有效应用工具的支持,否则将难以有效地实施。 2( 件开发环境 软件开发环境,又称软件工程环境,是全面支持软件开发全过程的软件工具集合。这些软件工具按照一定的方法或模式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。 计算机辅助软件工程(CASE,Computer Aided Software Engineering)是当前软件开发环境中富有特色的研究方向和发展方向。CASE将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组合起来,开成软件工程环境。CASE的成功产品将最大限度地降底软件开发的技术难度,并保证软件开发的质量。 例4.9 在软件研究过程中,CASE是______。 (A)指计算机辅助系统工程 (B)指CAD和CAM技术发展动力 (C)指正在实验室用的工具 (D)指计算机辅助软件工程 【解析】请参照“本章考点破解5” 【答案】D 自测题 可用“4.2过关精练”中的填空题第9、10题进行自测。 4.2 结构化分析方法 考点6:需求分析与需求分析方法 1( 需求分析 软件需求是指用户对目标软件系统的功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求。需求分析将创建数据模型、功能模型和控制模型。 ? 需求分析的定义 1997年IEEE软件工程标准词汇表对需求分析定义如下所述。 ? 用户解决问题或达到目标所需的条件或权能; ? 系统或系统部件要满足 合同 劳动合同范本免费下载装修合同范本免费下载租赁合同免费下载房屋买卖合同下载劳务合同范本下载 、标准、规范或其他正式规定文档所需具有的条件或权 能: ? 一种反映?或?所描述的条件或权能的文档说明。 由需求分析的定义可知,需求分析的内容包括:提练、分析和仔细审查已收集到的需求;确保所有利益相关者都明白其含义并找出其中的错误、遗漏或其他不足的地方;从用户最初的非形式化需求到满足用户对软件产品的要求的映射;对用户意图不断进行提示和判断。 ? 需求分析阶段的工作。 需求分析阶段的工作,可以概括为以下4个方面: ? 需求获取; ? 需求分析; ? 编写需求规格说明书; ? 需求评审。 2. 需求分析方法 常见的需求分析方法有结构化分析方法和面向对象的分析方法。 ? 结构化分析方法。主要包括面向数据流的结构化分析方法(SA—Strucrured analysis)、面向数据结构的Jackson方法(JSD—Jackson system development method)和面向数据结构的结构化数据系统开发方法(DSSD—Data structured system development method)。 ? 面向对象的分析方法(OOA—object—oriented method)。 从需求分析建立的模型的特性来分,需求分析方法又分为静态分析方法和动态分析方法。 例4.10 Jackson方法是一种面向______的结构化方法。 【解析】请参照“本章考点破解6”中对需求分析方法的描述。 【答案】数据结构 自测题 可用“4.2过关精练”中的选择题第7题进行自测。 考点7:结构化分析方法 结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。它是20世纪70年代中期倡导的基于功能分解的分析方法,其目的是帮助弄清用户对软件的需求。 面向数据流的结构化分析方法按照DeMarco的定义就是“结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,建立一种新的、称为结构化规格说明的目标文档。” 结构化分析方法的实质是着眼于数据流、自顶向下、逐层分解、建立系统的处理流程,以数据流图和数据定典为主要工具建立系统的逻辑模型。 下面介绍结构化分析的常用工具。 ? 数据流图(DFD,Data Flow Diagram) 数据流图是描述数据处理过程工具是需求理解的逻辑模型的图形表示,安直接支持系统的功能建模。 数据流图从数所传递和加工的角度,刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素与说明如表4.2所示。 表4.2 数据流图中的主要图形元素与说明 加工(转换)。输入数据经加工变换产生输出 数据流。沿箭头方向传送数据,一般在旁边标注数据流名 存储文件(数据源)。表示处理过程中存放各种数据的文件 源,潭。表示系统和环境的接口,属系统之外的实体 ? 数据字典(DD,Data Dictionary) 数据字典是结构化分析方法的核心。数据字典是描述数据内容的概念模式,用表格的开式列出所有与系统相关的数据的基本忏悔是相互关系,以及精确的、严格的定义,可使用户和系统分析员对输入,输出,存储成分和中间的数据的基本属性和相互关系,以及精确的、严格的定义,可使用户和系统分析员对输入、输出、存储成分和中间计算结果产生共同的理解。概括地说,数据字典的作用是对DFD中出现的被命名的图形元素的确切解释。数据字典定义式中出现的符号的含义如表4.3所示 表4.3 数据字典定义式中出现的符号的含义 符号 含义 , 表示“等于”、“定义为”、“由什么构成” [„?„] 表示“或”,即选择括号中用“?”号分隔的各项中的某一项 , 表示“与”、“和” 表示“重复”,即括号中的项要重复若干次,n,m是重复次数的上限和下N{ }m 限 („) 表示“可选”,即括号中的项可以没有 ** 表示“注释” .. 连接符 ? 判定树 使用判定树进行描述时,应先从总是定义的文字描述中分清哪些是判定的备件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树 ? 判定表 单数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由某一组条件取值的组合引发的,使用判定表描述比较适宜。 判定表的组成如图4.2所示。 基本条件 条件项 基本动作 动作项 图4.2 判定表组成 例4.11 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是 ______。(2004年9月选择题第6题) (A)可行性分析 (B)需求分析 (C)详细设计 (D)程序编码 【解析】数据流程图也称为Bubble Chart或Data Flow Graph,是描述处理过程的工 具。数据流程图是结构化分析方法中常用的工具,结构化分析方法则是结构化程序设计 理论在软件需求分析阶段的运用。 【答案】B 自测题 可用“4.2过关精练”中的选择题第8,16题和填空题第11,14题进行自测。 考点8:软件需求规则说明书 软件需求规则说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,最软件开发中的重要文档之一。 1( 软件需求规则说明书的作用 ? 便于用户、开发人员进行理解和交流。 反映出用户问题的结构,可以作为软件开发工作的基础和依据。 ? ? 作为确认测试和验收和依据。 2( 软件需求规则说明书的内容 软件需求规则说明书是作为需求分析的一部分而制定的可交佬的文档。该说明把在软件计划中确定的软件范围展开,制定出完整的信息描述、详细的功能说明书、恰当的检验标准以及其他与要求有关的数据。 3( 软件需求规则说明书的特点 衡量一个软件需求规则说明书质量好坏的标准、标准的优先级和标准的内涵有正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性。 软件需求规格说明书在开发早期就为尚诞生的软件系统建立了一个可见的逻辑模型。 作为设计的基础和验收的依据,软件需求规格说明书应该是精确而无二义性的。 例4.12 软件需求分析一般应确定的是用户对软件的______。 (A)功能需求 (B)非功能需求 (C)性能需求 (D)功能需求和非功能需求 【解析】软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能 与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求与 非功能需求。 【答案】D 自测题 可用“4.2过关精练”中的选择题第17题和填空题第15,17题进行自测。 4.3 结构化设计方法 考点9:软件设计的基本概念 软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件高计的基本目标是用比较抽象、概括的方式确定目标系统如何完成预定的任务,即软件设计确定了系统的物理模型。 从技术观点来看,软件设计包括以下几部分。 ? 软件结构设计:定义软件系统各主要部件之间的关系; ? 数据设计:将分析时创建的模型转化为数据结构的定义; ? 接口设计:描述软件内部、软件和操作系统之间及软件与人之间如何通信; ? 过程设计:把系统结构部件转换成软件的过程性描述。 常用的软件设计工具是结构图(Structure Chart,SC),也称程序结构图。结构图用来描述软件系统的层次和分块结构关系,它反映了整个系统的功能实现以及模块与模块之间的联系与通信,是未来程序中的控制层次体系。常用的结构图有4种模块类型;插入模块、传出模块、变换模块和协调模块。 从工程管理角度来看,软件设计分为以下几部分。 ? 概要设计(结构设计):确定软件总体结构、子系统和模块的划分,并确定模块间的接口,评价模块划分质量,以及进行数据分析。 ? 详细设计:确定每一模块实现的定义,包括数据结构、算法和接口。 例4.13 在软件开发中,下面任务不属于设计阶段的是______。(2004年9月选择题第9题) (A)数据结构设计 (B)给出系统模块结构 (C)定义模块算法 (D)定义需求并建立系统模型 【解析】结构化设计方法由概要设计和详细设计组成。其中,概要设计的主要任务是设 计软件系统结构(包括划分模块以及模块的层次结构)、数据结构及数据库设计。详细 设计的任务是为软件结构图中的每一个模块确定所采用的算法和数据结构。 【答案】D 自测题 可用“4.2过关精练”中的选择题第18,20题和填空题第18题进行自测。 考点10:软件模块的独立性指标 模块的独立性是指,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。 衡量模块独立程序的度量标准有两个:耦合和内聚。耦合是指模块之间联系的紧密程度。耦合度越高则模块的独立性越差。内聚是指模块内部各元素之间联系的紧密程度。例如一个完成多个功能 的模块的内聚度就比完成单一功能的模块的内聚度低。内聚度越低,模块的独立性越差。因此模块独立就是希望每个模块都是高内聚低耦合的。 ? 耦合。 两个模块之间的耦合方式通常有如下7种,下面按它们耦合度从低到高的次序依次介绍。 ? 非直接耦合:是指两个模块没有直接的联系,它们中的任何一个都能不领带于对方而独立地工作,独立性最强。 ? 数据耦合:是指两个模块借助于参数表传递简单数据。 ? 标记耦合:当一个数据结构的一部分(如记录的一部分)借助于模块接口被传递时就发生标记耦合。 ? 控制耦合:是指两个模块间传递的信息中包含用于控制模块内部逻辑控制信息。 ? 外部耦合:当模块与软件以外的环境有关时就发生外部耦合。例如,输入 /输出把一个模块与特定的设备、格式、通信协议耦合在一起。 ? 公共耦合:多个模块引用同一全局数据区的模块称为公共耦合。例如FORTRAN语言中的COMMON语句、C语言中的external数据类型、一个磁盘文件等都是全局数据区。 ?内容耦合:内容耦合指两个模块之间出现了下列情况之一。 , 一个模块访问另一个模块的内部数据; , 一个模块不通过正常入口转到别一模块的内部,两个模块有一部分程序代码重叠; , 一个模块有多个入口。 ? 内聚 模块的内聚种类通常可分成7种,下面按内聚度从弱到强的次序依次介绍。 ? 偶然内聚:如果一个模块完成一组任务,这组任务彼此间即使关系,其关系也是很松散的,这个模块属于偶然内聚。 ? 逻辑内聚:如果一个模块完成逻辑上相关的一组任务,这个模块是逻辑内聚的。例如,产生与类型无关的全部输出的模块。 ? 时间内聚:如果一个模块所包含的任务必须在同一时间间隔内执行,这个模块属于时间内聚。例如初始化模块。 ? 过程内聚:如果一个模块的处理元素是相关的,而且必须按特定的次序执行,这个模块属于过程内聚。 ? 通信内聚:如果一个模块的所有处理元素集中在一个数据结构的区域上,该模块属于通信内聚。例如,一个模块中的所有处理元素使用同一输入数据。 ? 顺序内聚;如果一个模块的确良处理元素是相关的,而且必须顺序执行,这个模块属于顺序内聚。 ? 功能内聚:如果一个模块完成一个单一的功能,模块中的各部分在此目标下协同工作,而且都是为完成这一功能而不可缺少的,那么这个模块是功能内聚的。 例4.14 为了使模块尽可能独立,要求______。(2004年4月选择题第7题) (A)模块的内聚程序要尽量高,且各模块间的耦合程序要尽量强 (B)模块的内聚程序要尽量高,且各模块间的耦合程序要尽量弱 (C)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱 (D)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强 【解析】耦合性与内聚性是模块独立性的两个定性示准,耦合与内聚是相互关联的。在 程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做 到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内聚性,有利于提高模块的独 立性。 【答案】B 自测题 可用“4.2过关精练”中的选择题第21、22题和填空题第19,21题进行自测。 考点11:概要设计的准则 概要设计又称为总体设计或结构设计。 在概要设计中,设计者从实践中积累的经验可作为设计的指导,这些准则如下: ? 提高模块独立性 在行到软件结构之后,应首先着眼于改善模块的独立性,考虑是否应该的把一些模块提取或合并,力求降低耦合度,提高内聚。 ? 模块规模适度 经验表明,当模块过大时,模块的可理解性迅速下降。 ? 深度、宽度、扇出和扇入适当 如果深度过大,说明有的控制模块可能简单了。如果宽度过大,说明系统的控制过于集中。而扇出过大则意味着模块过于复杂。扇出太小则可以把下级模块进一步分解成若干个子功能模块,或者合并到上级模块中去。一个模块的扇入表明有多少个上级模块调用它,扇 入越大,共享该模块的上级模块数据越多,这是有好处的。 观察大量的软件系统发现,设计良好的软件结构,通常顶层扇出比较大,中间扇出较少,底层模块有大扇入。 ? 使模块的作用域在该模块的控制域内。 ? 应减少模块的接口、单出口的模块。 ? 设计成单入口,单出口的模块。 ? 设计功能可预测的模块,也就是不考虑模块内部结构和处理过程。 例4.15 在软件结构化设计中,好的软件结构设计应该力求做到______。 (A)顶层扇出较少,中间扇出较高,底层模块低扇入 (B)顶层扇出较高,中间扇出较少,底层模块高扇入 (C)顶层扇出较少,中间扇出较高,底层模块高扇入 (D)顶层扇出较少,中间扇出较高,底层模块低扇入 【解析】结构化设计中,设计得很好的软件结构通常顶层扇出较高,中层扇出较少,底层扇入到公共的实用模块中去,即底层模块高扇入。 【答案】B 自测题 可用“4.2过关精练”中的选择题第23题和填空题第22,24题进行自测。 考点12:数据流类型 在需求分析阶段,主要是分析信息在系统中加工和流动的情况。面向数据流的设计方法定义了一些不同的映射方法,利用这些映射方法可以把数据流图变换在软件结构。 一般把信息流分为两种;变换流和事务流。同样将数据流类型也分为交换流类型和事务流类型。 变换流是信息沿输入通路进入系统,同时由处部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成处部形式离开软件系统。 当信息沿输入通路到达一个处理,这个处理根据输入数据的类型从若干个动作序列中选出一个来执行,这类数据流归为特殊的一类,称为事务流。在一个事务流中,事务中心接收数据,分析每个事务以确定它的类型,根据事务类型选取一条活动通路。 例4.16 面向数据流设计方法,一般把信息流分为两种,一种称为______,另一种称为事务流。 【解析】请参考本章“考点破解12”。 【答案】变换流 自测题 可用“4.2过关精练”中的选择题第24题进行自测。 考点13:详细设计 详细设计的任务是为软件结构图中的每一个模块确定所采用的算法和数据结构,用某种选定的表达工具给出清晰的描述。表达工具可以由设计人员自由选择,但它应该具有描述过程细节的能力,而且能够使程序员在编程时便于直接翻译成程序设计语言的源程序。 在详细设计阶段将产生详细设计说明书,设计人员应当: ? 为每个模块确定彩的算法; ? 确定每个模块使用的数据结构; ? 确定模块的接口细节。 在详细设计结束时,应该把上述结果写入详细说明书,并且通过复审形成正式文档,作为下一阶段的工作数据。处理功能、数据组织以及其他方面的实现细节,从而在编码阶段就能把所描述的详细处理过程直接翻译成程序代码。 常用的详细设计工具如下。 图开工具;程序流程图、N-S图、PAD图、HIPO图。 表格工具;判定表。 语言工具;PDL(伪码)。 下面详细介绍各种设计工具。 ? 程序流程图。 程序流程图又称为框图,它是软件开发者最熟悉的一种算法表达式具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。因此,至今仍是软件开发者最普遍采用的一种工具。 程序流程图用方框表示一个处理步骤,菱形代表一个逻辑条件,箭头表示控制流向。程序流程图的主要优点是对控制流程的描绘直观,便于初学者掌握。 ? 方框图(N-S图)。 方框图是一种符合结构化程序设计原则的图形描述工具,又称之为N-S图中,定义了5种基本的控制结构,包括顺序结构、条件结构、循环结构(其中又分为DoWhile循环结构„和RepeatUntil循环结构)与选择结构。 „ 使用方框作为详细设计的描述手段时,常需要用两个盒子——数据盒和过程盒。数据盒描述有关的数据,包括全程数据、局部数据和模块界面上的参数等;过程盒描述执行过程。 ? PAD图(问题分析图) PAD图是问题分析图(Problem Analysis Diagram)的英文缩写。与方框图一样,PAD图也只能描述结构化程序允许使用的几种基本结构,其中包括顺序结构、选择结构、CASE型多分支结构、While型循环、Until型循环、语句标号的定义。 ? HIPO图是美国IBM公司的软件设计中使用的主要表达工具。 ? 请参阅本章“考点破解7”中关于“判定树”介绍。 ? PDL(伪码) 伪码(Pseudo-Code)又称过程设计语言(PDL),它是一个非形式化的比较灵活的语言,实际上PDL 是对伪码的一种补充。任何一个设计人员,均可以利用其掌握的程序设计语言的控制语句结构写出伪码程序,这种伪码程序在写的时候可依赖于某种程序设计语言,但在实现时可以用任何一种语言来实现。 例4.17 在软件结构化设计中,不属于过程设计工具的是______。(2005年9月选择题第6题) (A)PDL(过程设计语言) (B)PAD图 (C)N-S图 (D)DFD图 【解析】常见的过程设计工具有程序流程图、N-S图、PAD图 、HIPO图、判定表、PDL(过程设计语言)。DFD图(数据流图)是描述数据处理过程的工具,是结构化分析的常用工具。 【答案】D 例4.18 程序流程图(PED)中的?代表的是______。 (A)数据流 (B)控制流 (C)调用关系 (D)组成关系 【解析】程序流程图(PED)是一种传统的、应用广泛的软件过程设计表示工个,通常也称为程序框图。程序流程图表达直观、清晰,易于学习掌握,且独立于任何一种程序设计语言。构成程序流程图的最基本图符及含义如下所述。 ?或?:控制流。 ?:加工步骤。 ?:逻辑条件。 【答案】 B 例4.19 程序流程图是一种传统的、应用广泛的、且有争议的软件设计工具。以下______是程序流程的主要优点。 (A)支持逐步求精 (B)易于表示数据结构 (C)可以用箭头随意转移控制 (D) 直观便于掌握 【解析】程序流程图的主要优点是对控制流程的描述很直观,便于初学者掌握。其主要缺点是从本质上不支持逐步求精;用箭头都是控制流,可以完全不顾结构化设计的原则 ,随意转移控制;不易表示数据结构;每个符号对应一个行代码,对提高大型系统的可理解性作用甚微。 【答案】D 例4.20 详细设计的工具优缺点,而PAD图的优点是______。 (A)便于利用走树规则编写程序 (B)不受结构化设计的约束 (C)易于表达嵌套结构 (D)易于确定数据的作用域 【解析】PAD图的一个刎行之处在于,以PAD图为基础,遵循一个机械的规则就能方便 地编写出程序,这个规则称为走树(Tree Walk)。在走树上只要顺着PAD所呈现的树形 结构移动,对照PAD成份同PASCAL结构的对应关系,就可依次将遇到的PAD成分翻译 成PASCAL程序,有利于提高软件的生产率。 【答案】A 例4.21 以下不属于系统详细设计阶段使用的工具的是______。 (A)PAD (B)N-S图 (C)程序流程图 (D) HIPO图 【解析】选项中只有HIPO图是系统总体设计阶段可能会使用的图形工具,PAD图、N-S 图、程序流程图都是系统详细设计阶段使用的工具。 【答案】D 自测题 可用“4.2过关精练”中的选择题第25行自测。 考点14:软件设计的基本原理 软件设计遵循软件工程的基本目标和原则。软件设计的基本原理如下所述。 ? 抽象:把事务本质共同特性提取出来而不考虑其他细节。 ? 模块化:指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块过程。 ? 信息隐蔽:在一个模块内包含信息,对于不需要这些信息的其他模块来说是不能访问的。 ? 模块独立性:每个模块只完成系统要求的独立的功能,并且与其他模块的联系最少且接口简单。模块独立性是评价设计好坏的重要度量标准。 例4.22 关于软件设计的基本原理,下列选项中描述错误的是______。 (A)在软件设计时,应尽量考虑事务的细节问题,只有这样才能保证软件符合所有的 操作的要求 (B)要将一个复杂的问题划分成若干模块 (C)在一个模块内包含的信息,对于不需要这些信息的其他模块来说不能访问 (D)每个模块只完成系统要求的独立的功能,并且与其他模块的联系最少且接口简单 【解析】请参考本章“考点破解14”。 【答案】A 自测题 可用“4.2过关精练”中的填空题第25题进行自测。 4.4 软件测试 考点15:软件测试的目的和准则 在软件开发的一列活动中,为了保证软件的可靠性,人们研究并使用了很多方法进行分析、设计及编码实现。但是,由于软件产品本身无形态,是复杂的、知识高度密集的逻辑产品,其中不可能没有错误。物理产品在出厂前都要进行严格的检验,软件产品也不例外,软件开发总伴随着软件质量保证的活动,而软件测试是主要活动之一。软件测试代表达了需求分析、设计、编码的最终复审。 测试是一项很艰苦的工作,其工作量约占软件开发总工作量的40%以上,特别对一些关系到人的生命安全的软件,测试成本可能相当于开发阶段总成本的35倍。 软件测试的目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。测试是为了发现程序中的错误而执行的过程。成功的测试则是发现至今尚未发现的错误。 “测度只能证明错误的存在,但不能证明错误的不存在”。所以,测试并不能保证程序是完全正确的,成功的测试也不应是没有发现错误的测试。 软件测试具有以下基本准则: ? 所肿测试都应追溯到需求; ? 严格执行测试计划,排除测试的随意性; ? 充分注意测试中的群集现象; ? 程序员应避免检查自己的程序; ? 穷举测试不可能; ? 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。 例4.23 下列叙述中正确的是______。(2005年9月选择题第1题) (A)程序设计就是编制程序 (B)程序的测试必须由程序员自己去完成 (C)程序经调试改错后还应进行再测试 (D)程序经调试改错后不必进行再测试 【解析】程序设计包括程序结构设计、数据设计、接口设计、过程设计,并不是只有编制程序这么简单,所以选项A叙述错误。 在软件测试准则中明确说明程序员应尽量避免检查自己的程序,所以选项B叙述错误。 程序调试的任务是诊断和改正程序中的错误,它与软件测试不同,软件测试是尺可能多地发现软件中的错误,然后借助于一一的调试工具去执行找出软件错误的具体位置。软件测试贯穿整个软件生命周期,调试主要在开发阶段。所以选项D错误。 程序经过调试改错后可能存在错误没有改正,或者修改了一个错误引起其他错误的现象,程序将调试改错后必须进行再测试。 【答案】C 自测题 可用“4.2过关精练”中的选择题第26,29题和填空题第26,27题进行自测。 考点16:软件设测试技术与方法综述 软件测试方法的技术,可以从不同的角度加以分类。如果从是否需要执行被测试软件的角度,可以分为静态测试和动态测试。如果按照功能划分可以分为白盒测试、黑盒测试。 ? 静态测试和动态测试。 ? 静态测试:包括代码检查、静态结构分析、代码质量度量等。 ? 动态测试:基于计算机的测试,是为了发错误而执行程序的过程。 ? 白盒测试和黑盒测试。 ? 白盒测试。 白盒测试需要了解程序内部的结构,此时的测试用例是根据程序的内部逻辑来设计的,它将涉及程序设计风格、控制方法、源语句、数据库设计、编码细节等。 白盒测试包括语句测试、分支测试与路径测试等。 白盒测试根据程序的内部逻辑来设计测试用例,常用的技术是逻辑覆盖,即考查用测试数据运行被测程序时对程序逻辑的覆盖程度。主要的覆盖标准有5种(覆盖程度从低到高):语句本科生、判定覆盖、条件覆盖、判定/条件覆盖与条件组合覆盖。 ? 黑盒测试 黑盒测试只是根据程序的功能说明来设计测试用例,检查程序的功能是否符合规格说明的要求。常用的黑盒测试技术不等价分类法、边缘值分析法、因果图法和错误推测法等。 例4.25 (2004年9月填空题第4题) 若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。 【解析】请参考本章“考点破解16”。 【答案】黑盒 自测题 可用“4.2过关精练”中的选择题第30题和填空题第28,30题进行自测。 考点17:软件测试的实施 软件系统的开发过程是一个自顶向下逐步细化的过程,而测试过程是以相反顺序进行的集成过程。软件测试过程一般按4个步骤进行,即单元测试(模块测试)、集成测试、系统测试和验收测试。 ? 单元测试 单元测试对软件包的最小设计单元——模块进行正确性检验的测试,单元测试的目的是发现各模块内部可能存在的各种错误。单元测试的依据是详细设计说明书和源程序。单元测试的技术可以采用静态分析和动戊测试。对动态测试通常以白盒动态测试为主,辅之以黑盒测试。白盒测试主要针对模块的5个基本特征进行,这5个特征包括接口测试、局部数据结构测试、重要的执行路径的测试、出错处理测试、影响以上各点及其他相关点的边界条件测试。 单元测试针对某个模块,在测试过程中常使用模拟环境测试,也就是用一些辅助模块去模拟与被测模块的相互联系的其他模块,即为补测模块设计盒搭建驱动(Driver)模块和桩(Stub)模块。其中,驱动模块相当于被测模块的主程序,桩模块通常用于代替被测模块调用的其他模,它模拟一个子程序。 ? 集成测试 集成测试是测试和组装软件的测试,目的是发现与接口有关的错误。集成测试的依据是概要设计说明书。集成测试所涉及的内容包括软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。 集成测试时将模块组装成程序通常采用的两种方式:非增量方式组装与增量方式组装。 非增量方式组装也称为一次性组成方式,即将测试好的每一个软件单元组装在一起再进行整体测试。 增量方式是将已经测试好听模块逐步组装成较大系统,在组装过程中边连接边测试,以 以现连接过程中出现的问题。最后通过增殖,逐步组装到反要求的软件系统。 增量方式包括自顶向下、自底向上、自顶向下与自底向上相结合是混合增量方法。 ? 验收测试。 验收测试即确认测试,是验证软件的功能、性能,及其他特性是否满足需求规格说明中确定的各种需求,以及软件配置是否完全,正确。 ? 系统测试。 系统测试是将通过测试确认的软件加入的整个计算机系统中进行测试,目的是在真实的系统工作环境下栓验软件是否能与系统正确连接,发现软件与系统需求不一致辞的地方。 例4.26 在进行模块测试时,要为每个被测试的模块另处设计两类模块:驱动模板和承接模块(桩模块)。其中______的作用是将测试数据传送给补测试的模块,并显示被测试模块所产生的结果。(2005年9月填空题第3题) 【解析】驱动模块相当于被测模块,并显示被测试数据,并传给被测模块,输出实际测试结果。桩模块通常用于代替被测模块调用的其他模块,仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。 【答案】驱动模块 例4.27 软件测试的内容包括: ?.集成测试 ?.验收测试 ?.系统测试 ?.单元测试 正确的测试顺序是______。 (A)?、?、?、? (B)?、?、?、? (C)?、?、?、? (D)?、?、?、? 【解析】请详见本章“考点破解17” 【答案】D 例4.28 验收测试是对软件进行______测试。 (A)可靠性 (B)有效性 (C)可维护性 (D)可用性 【解析】确认测试,又称验收测试,它的任务是验证软件的功能和性能及其他特性时否满足了需求规格说中确定的各种需求,以及软件配置是否完全、正确,也就是对软件的可用性进行测试。 【答案】D 自测题 可用“4.2过关精练”中的选择题第31、32题和填空题第31题进行自测。 4.5 程序的调试 考点18:程序调试的基本概念 在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即排错)。程序高度的任务是诊断和改正程序中的错误。 程序的调试主要在开发阶段,程序调试幅度两部分组成:其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二是对程序进行修改,排除这个错误。 ? 程序调试的基本步骤。 ? 错误定位; ? 修改设计和代码,以排除错误。 ? 进行回归测试,防止引进新的错误。 ? 程序调试原则。 ? 确定错误的性质和位置时注意事项。 ? 分析思考与错误征兆有关的信息。 ? 避开死胡同。 ? 只把高度工具当作辅助手段来使用。 ? 避免及试控法,最后只能把它当作最后手段。 ? 修改错误的原则。 ? 在出错的地方,很可能有别的错误。 ? 修改错误的一个常见失误只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。 ? 注意修正一个错误可能引入新的错误。 ? 修正错误的过程迫使人们暂时回到程序设计阶段。 ? 修改源代码程序,不要改变目标代码。 例4.29 (2005年4月填空题第3题) 诊断和改正程序中错误的工作通常称为______。 【解析】请参考本章“考点破解18”。 【答案】调试或程序调试或软件调试或Debug或DEBUG或debug或调试程序或调试软件 自测题 可用“4.2过关精练”中的填空题第32题进行自测。 考点19:软件调试方法 调试的关键在于推断程序内部的错误位置及原因。软件调试分为静态调试和动态调试。静态调试主要指通过人的思维来分析源程序代码的排错,是主要的调试手段,而动态调试是辅助静态调试的。 主要的调试方式有以下几种。 ? 强行排错法。 作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。这是目前使用较多、效率较低的调试方法。设计的调试技术主要是设置断点和监视表达式。 ? 回溯法。 该方法适合于小规模程序的排错。回溯法对于小程序很有效,往往能把错误范围缩小到程序的一小段代码,仔细分析这段代码不难确定出错的准确位置。当源代码代码行数较多时,潜在的回溯路径数据目很多,回溯会变得很困难,而且实现这种回溯的开销大。 ? 原因排除法。 原因排除法是通过演绎和归纳,以及二分法来实现的。 演绎法是一种从一般原理或前提出发,经过排除和精化的过程推导出结论的思考方法。 二分法实现的基本思想是,如果已知某个变量赋正确值,然后运行程序并检查程序的输出 。如果输出结果正确的,则错误原因在程序的前半部分;反之,错误原因在程序后半部分。对错误原因所在的部分重复使用这种方法,直到将出错范围缩小到容易判断的程序为止。 在实际问题中,调试的结果是排错。为了修改程序中的错误,往往会采用“补丁程序”来实现,而这种做法会引起整个程序质量的下降,但是从目前程序设计发展的状况看,对大规模的程序的修改又不失为一种可行的方法。 例4.30 下列关于软件调试的叙述错误的是______。 (A)调试的关键在于推断程序内部的错误位置及原因 (B)从是否跟踪和执行程序的角度来说,软件调试类似于软件测试 (C)在软件调试时,以动态调试为主,静态调试只是作为动态调试的辅助 (D)主要调试方法有强行排错法、回溯法、原因排除法 【解析】请参考本章“考点破解19”。 【答案】C 自测题 可用“4.2过关精练”中的选择题第33题和填空题第33题进行自测。 过关精练 4.2.1过关练习题 一、 选择题 1.下列关于计算机软件的描述,正确的是______。 (A)软件的开发受具体的开发人员限制,和计算机系统无关 (B)软件按功能分为应用软件和系统软件两种,支撑软件包括在应用软件中。 (C)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件 (D)计算机软件由机器可执行的程序和数据组成 2.软件工程方法的提出起源于软件危机,而其目的应该是最终解快软件的______。 (A)产生危机 (B)质量保证 (C)开发效率 (D)生产工程化 3.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作______。 (A)软件投机 (B)软件危机 (C)软件工程 (D)软件产生 4.软件开发的结构生命周期法(SA)的基本假定是认为软件需求能做到______。 (A)严格定义 (B)初步定义 (C)早期冻结 (D)动态改变 5.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。 (A)概要设计 (B)详细设计 (C)可行性分析 (D)需求分析 6.在软件生命周期中,______阶段的工作量最大,约占70%。 (A)分析 (B)编码 (C)测试 (D)维护 7.软件工程的需求分析阶段,其主要任务是要明确系统的______。 (A)运行平台 (B)业务流程 (C)软件结构 (D)数据结 8.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。 (A)- (B)? (C), (D)? 9.下列工具中为需求分析常用工具的是______。 (A)PAD (B)PED (C)N-S (D)DFD 10.下面不属于软件设计原则的是______。 (A)抽象 (B)模块化 (C)自底向上 (D)信息隐蔽 11.软件需求分析阶段的工作,可以分为4个方面,需求获取、需求分析、编写需求规格说明书,以及______。 (A)阶段性报告 (B)需求评审 (C)总结 (D)以上都不正确 12.描述数据内容的概念模式是______。 (A)E-R图 (B)DFD (C)结构图 (D)数据字典 13.数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功甬______。 (A)数据库设计 (B)数据通信 (C)数据定义 (D)数据维护 14.数据流图(DFD)是用于描述结构化方法中______阶段的工具。 (A)可行性分析 (B)详细设计 (C)需求分析 (D)程序编码 15.数据字典是对数据定义信息的集合,它所定义的对象都包含于______。 (A)数据流图 (B)程序框图 (C)软件结构 (D)方框图 16.软件一发的结构化析(SA)方法,常用的描述软件功能需求的工具是______。 (A)业务流程图、处理说明 (B)软伯流程图、模块说明 (C)数据流程图、数据字典 (D)系统流程图、程序编码 17.下列选项中对软件需求规格说明书作用描述最准确的是______。 (A)便于用户、开发人员进行理解和交流 (B)作为确认测试和验收的依据 (C)反映出用户问题的结构,可以作为软件开发工作的基础和依据 (D)上述三个选项描述都是软件需求规格说明书的作用 18.概要设计的结果是提价一份______。 (A)模块说明书 (B)框图 (C)程序 (D)数据结构 19.软件的______设计又称为总体结构设计,其主要任务是建立软件系统的总体结构。 (A)概要 (B)抽象 (C)逻辑 (D)规划 20.在软件的结构化设计(SD)方法中,一般分为总体设计和详细设计两个联合体。其中总体设计主要是建立______。 (A)软件结构 (B)软件流程 (C)软件模型 (D)软件模块 21.信息隐蔽的概念与______直接相关。 (A)软件结构定义 (B)模块独立性 (C)模块类型划分 (D)模块耦合度 22.软件开发的结构化设计(SD)方法,全面指导模块划分的最重要原则应该是______。 (A)模块高内聚 (B)模块低耦合 (C)模块独立性 (D)程序模块化 23.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。 (A)详细设计 (B)需求分析 (C)总体设计 (D)编程调试 24.面向数据流的软件设计方法,一般是把数据据流图中的数据流划分为______,再将数据流图映射为软件结构。 (A)数据流与事务流 (B)变换流与事务流 (C)信息流与控制流 (D)变换流与数据流 25.软件详细设计主要采用的方法是______。 (A)结构化程序设计 (B)模块设计 (C)结构化设计 (D)PDL语言 26.软件调试的目的是______。 (A)发现错误 (B)改正错误 (C)改善软件的性能 (D)挖掘软件的潜能 27.测试是软件开发的重要内容,应从以下______阶段开始制订测试计划。 (A)测试 (B)编码 (C) 总体设计 (D)需求分析 28.成功的测试是指______。 (A)运行测试实例后未发现错误(B)发现程序错误(C)证明程序正确(D)软件产生 29.下列选项中,关于软件测试的描述错误的是______。 (A)测试只能证明错误和存在,但不通证明错误的不存在 (B)测试的主要目的是排错 (C)成功的测试是发现至今没未发现的错误 (D)在测试时程序员尽量避免测试自己的程序 30.软件测试一般是通过设计测试实例来实现,它又分为黑盒法和白盒法两类,经验表,在黑盒测试可先的多种方法中,往往首先使用的是______。 (A)等价分类法 (B)边蚧值分析法 (C)因果图法 (D)错误推断法 31.软件测试过程是软件开发过程的逆过程,其最基础性的测试应是______。 (A)集成测试 (B)单元测试 (C)有效性测试 (D)系统测试 32.检查软件产品是否符合需求定义的过程称为______。 (A)确认测试 (B)集成测试 (C)验证测试 (D)验收测试 33.目前使用最多,效率较低的调试方法是______。 (A)强行排错法 (B)回溯法 (C)演绎法 (D)归纳法 二、填空题 1.软件是程序、数据和______的集合。 2.软件按功能分为应用软件、系统软件、______。 3.软件危机3要素是方法,______和工具。 4.工程的核心思想是把软件产品看作是一个______来处理。 5.工程研究的内空主要包括:______技术和软件工程管理。 6.工程概念的出现源自______。 7.____是把输入转化为输出的一组彼此相关的资源和活动。 8.工程的理论和技术研究的主要内容包括软件开发技术和______。 9.开发环境是全面支持软件开发全过程的______集合。 10(软件______为软件工程方法提供了自动的或半自动的软件支撑环境。 11(数据流图的类型有______和事务型。 12(结构第分析的常用工具有:数据流图、数据字典、判定树和______。 13(SA方法采用______和分解两个基本手段。 14(在软件的分析阶段,常用______来描述业务处理系统的信息来源、存储、处理和去向。 15(需求分析阶段的最后成果是______,是软件开发中的重要文档之一。 16(软件需求规格说明书在开发时期就为尚未诞生的软件系统建立了一个可见的______。 17(软件工程的结构化设计中______作为设计的基础和验收的依据。 18(软件设计是软件工程的重要阶段,是一个把软件需求转换为______的过程。 19(______是从功能角度来度量模快内的联系。 20(______是模块间互相连接的紧密程度的度量。 21(软件模块独立性的两个定性度量标准是______。 22(软件的面向数据流的设计方法,利用其定义的映射方法可以把数据流图变换成软件结构,在映射中,一般将数据流分为______和事务流两种。 23(问题分析图简称______。 24(软件的详细设计,也称为模块设计,它要求设计人员为每一个程序模块确定所使用和算法、______、接口细节的输入、输出数据等。 25(软件设计原理中,______是指在一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问。 26(软件测试是为了检出并忙改正尽可能多的错误,不断提高软件的______。 27______是为了发现错误而执行程序的过程。黑盒测试不考虑程序内部细节、结构和实现方式,只是根据程序的______说明来设计测试用例。 28(单元测试又称模块测试,一般采用______测试。 29(软件调试的方法主要有:强行排错法、______、原因排错法。 30(软件测试的过程一般按4个步骤进行,即______、集成测试、验收测试(确认测试)和系统测试。 31(程序调试的主要任务是______。 32(当对小程序进行调试时,应当使用______调试方法。 4.2.2 过关练习题解析与答案 一、选择题 1(【解析】请参考本章“考点破解1”说明。 【答案】C 2(【解析】软件工程是解决软件问题的工程,其目的是最终解决软件的生产工程化问题。它应用计算机科学、数学及管理科学等原理采用工程化原则和方法开发软件系统。 【答案】D 3(【解析】开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作软件危机。 【答案】B 4(【解析】软件需求经过分析阶段后,通过软件需求说明书表示出来,后面的开发工作以此为基础进行,在面向数据流的结构化方法(SA)中假定软件需求确定后一般不再改变,即“早期冻结”。 【答案】D 5(【解析】请详见“考点破解3”。 【答案】D 6(【解析】运行与维护阶段是指:将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。在软件生命周期中,维护阶段的工作量最大,约占70%。 【答案】D 7(【解析】需求分析阶段的基本任务是用户与分析人员双方共同来理解系统的需求,分析阶段是面向“问题”的,它主要对用户的业务活动分析,明确在用户的业务环境中系统应做什么。 【答案】B 8(【解析】数据流图中主要图形元素中不包括A选项所示的图符。 【答案】A 9(【解析】数据流图(DFD)是需求分析常用工具。 PAD图是问题分析图(Problem Analysis Diagram)的英文缩写。这是继程序流图和方框图之后,提出的又一种主要用于描述软件详细设计的图形表示工具。 程序流程图(PED)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图。主要用于软件详细设计阶段。 N-S图又叫方框图,被人们用来代替传统的程序流程图。同程序流程图一样,N-S图也是主要用于软件详细设计阶段。 【答案】D 10(【解析】软件设计的基本原则有抽象、模块化、信息隐蔽、模块独立性。自底向上不属于软件设计原则。 【答案】C 11(【解析】需求分析分阶段的任务是通过详细调查现实世界处理的对象(组织、部门、企 业等),充分了解原系统的工作概况,明确用户和各种需求,然后在此基础上确定新系统的功能。背后系统必须充分考虑今后可能的扩充和改变,不能仅按当前应用需求来设计数据库。软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书,以及需求评审。 【答案】B 12(【解析】详见本章“考点破解7”。 【答案】D 13(【解析】详见本章“考点破解7”。 【答案】C 14(【解析】数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。需求分析常用数据据流图。。 【答案】C 15(【解析】在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来构成了数据字典。 【答案】A 16(【解析】本题考查软件工程的基础知识。SA方法中描述软件功能需求的工具是数据流图与数据字典。 【答案】C 17(【解析】请参阅本章 “考点破解8”。 【答案】D 18(【解析】概要设计的目标是建立最佳方案设计软件结构,因此概要设计的结果的提供一份模块说明书。 【答案】A 19(【解析】软件的概要设计又称为总体结构设计,其主要任务是建立软件系统的总体结构。 【答案】A 20(【解析】总体设计的目标是建立归佳方案设计软件结构。。 【答案】A 21(【解析】信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这此信息的其他模块来说是不能访问的。因此信息隐蔽的概念与模块的独立性直接相关。 【答案】B 22(【解析】SD方法的基本思想是模块化,模块的划分主要是依据模块的独立性,内聚性与聚合性是度量模块独立性的两个定性指标。 【答案】C 23(【解析】在需求分析阶段,已经把系统分解成层次结构,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构。 【答案】C 24(【解析】面向数据流的设计方法把数据流转换成软件结构,数据流的类型决定了转换的方法。有两种类开的数据流,即变换流和事务流。 【答案】B 25(【解析】软件详细设计主要采用的方法是结构化程序设计方法。 【答案】A 26(【解析】在对程序进行了成功的测试之后,将进入程序调试(通常称Debug,即排错)。程序调试的任务是诊断和改正程序中的错误码。它与软件测试不同,软件测试是尽可能多的发现软件中的错误,然后借助于一定的调试工具去执行错误码的具体位置。软件测试贯穿整 个软件生命周期,调试主要在开发阶段。 【答案】B 27(【解析】测试计划应从需要分析阶段开始制订,因为及早制定测试计划有利于系统开发时把测试的设计和实现所做的思考和分析穿插在软件开发的各个阶段,从而较早地预防和排除错误。 【答案】D 28(【解析】软件测试是尽可能多地发现软件中的错误,然后借助于一定的调试工具去找出软件错误的具体位置。成功的测试是指发现了至今尚未发现的错误的测试。。 【答案】B 29(【解析】测试的主要目的是尽可能多地发现软件产品中的错误和缺陷。 【答案】B 30(【解析】在黑盒测试中,应首先使用边界值分析方法,经验表明,用这种方法设计出的测试实例暴露错误的能力最强,应该既包括输入数据的边界情况又包括输出数据边界情况,必要时使用等价分类法和错误推测补充测试。然后对照程序的逻辑,根据程序可靠性要求采用不同的逻辑覆盖标准。 【答案】B 31(【解析】单元测试是通过测试发现该模块的子程序或过程的实际功能与该模块的功能和接口的描述是否相符,以及是否有编码错误存在,单元测试是最基础性的测试。 【答案】B 32(【解析】确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。 【答案】A 33(【解析】请详见“考点破解19”。 【答案】A 二、填空题 1(【解析】计算机软件(Software)是计算机系统中与硬件相互依存的另一部分是包括程序、数据及相关文档的完整集合。其中,程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。数据是使程序能正常操作信息的数据结构。文档是与程序开发、维护和使用有关的图文资料。可见软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行维护、使用等有关的文档。 【答案】文档 2(【解析】请参阅本章“考点破解1” 【答案】支撑软件或工具软件 3(【解析】请参阅本章“考点破解2” 【答案】工程 4(【解析】请参阅本章“考点破解2” 【答案】工程产品 5(【解析】软件工程是觖软件问题的工程。它应用计算机科学、数学及管理科学等原理采用工程化原则和方法开发软件系统。软件工程研究的内容主要包括软件开发技术和软件工程管理。 【答案】软件开发 6(【解析】开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作软件危机。软件工程概念的出出源自软件危机。 【答案】软件危机 7(【解析】软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。。 【答案】软件工程过程 8(【解析】请参阅本章“考点破解4” 【答案】软件工程管理 9(【解析】请参阅本章“考点破解5” 【答案】软件工具 10(【解析】请参阅本章“考点破解5” 【答案】开始工具 11(【解析】请参阅本章“考点破解5” 【答案】变换型 12(【解析】结构化分析方法。主要包括面向数据流的结构化分析方法(Strustured Analysis,SA)面向数据结构的Jackson方法(JSD—Jackson system development method)和面向数据结构的结构化数据系统开发方法(DSSD—Data structured system development method)。 结构化分析的常用工具有数据流图、数据字典、判定树和判定表。 【答案】判定表 13(【解析】面向数据流的设计方法(SA)把数据流转换成软件结构,数据流的类型决定了转换的方法。有两种类型的数据流,即变换流和事务流。SA方法采用抽象和分解两个基本手段。 【答案】抽象 14(【解析】数据流图是描述数据处理过程工具是需求理解的逻辑模型的图形表示,安直接支持系统的功能建模。 数据流图从数所传递和加工的角度,刻画数据流从输入到输出的移动变换过程。数据流图由一此特定的图符构成。 在软件的分析阶段,常用DFD来描述业务处理系统的信息来源、存储、处理和去向。 【答案】DFD 或 数据流图 15(【解析】需求分析阶段的工作,可以概括为4个方面:需求获取、需求获取、需求分析、编写需求规格说明书、需求评审。需求分析阶段的最后成果是软件需求规格说明书,是软件开发中的重要文档之一。 【答案】软件需求规格说明书 16(【解析】请参阅本章“考点破解8” 【答案】逻辑模型 17(【解析】软件需求规格说明书在开发早期就为尚未诞生的软件系统建立了一个可见的逻辑模型,是设计的基础和验收的依据。 【答案】软件需求规格说明书 18(【解析】软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。 【答案】软件表示 19(【解析】内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。内聚从功能角度来试题模块内的联系。 【答案】内聚 20(【解析】耦合性是模快间互相连接的紧密程度的试题。耦合性取快于各个模块之间接口的复杂度、调用方式以及哪此信息通过接口。 【答案】耦合性 21(【解析】软件模块独立性的两个定性度量标准是内聚性和耦合性。 【答案】内聚性和耦合性 22(【解析】面向数据流的设计方法把数据流转换成软件结构,数据流的类型决定了转换的方法。有两种类型的数据流,即变换流和事务流。 【答案】变换流 23(【解析】PAD图是问题分析图(Problem Analysis Diagram)的英文缩写。这是继程序流程图和方框图之后,提出的又一种主要用于描述软件详细设计的图形表示工具。 【答案】PAD 24(【解析】软件设计分为软件的概要设计和软件的详细设计。 软件的详细设计,也称为模块设计,它要求设计人员为每一个程序模块确定所使用的算法、数据结构、接口细节的输入、输出数据等。 【答案】数据结构 25(【解析】请参阅本章“考点破解14” 【答案】隐蔽性 26(【解析】请参阅本章“考点破解14” 【答案】质量和可靠性 27(【解析】请参阅本章“考点破解14” 【答案】软件测试 28(【解析】黑盒测试即功能测试,测试时完全不考虑程序内部细节、结构和实现方式,仅检查程序结果与说明书的一致性。只是根据程序的功能说明来设计测试用例。 【答案】功能 29(【解析】软件测试是尽可能多地发现软件中错误,然后借助于一定的调试工具去执行找出软件错误的具体位置。单元测试的测试用例是根据程序的内部逻辑来设计的,一般采用白盒测试。 【答案】白盒测试 30(【解析】软件调试的方法主要有强行排错法、回溯法、原因排错法。 【答案】回溯法 31(【解析】软件测试的过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。 【答案】单元测试 32(【解析】请参阅本章“考点破解18” 【答案】诊断和改正程序中的错误 33(【解析】请参阅本章“考点破解19” 【答案】回溯法 第3章 数据库基础知识 本章主要考察的内容是: 1、 基本概念:数据库,数据模型,数据库管理系统,类和对象,事件 2、 关系数据库基本概念:关系模型(实体的完整性,参昭的完整性,用户定义的完整 性),关系模型式,关系,元组,属性,字段,域,值,主关键字等 3、 关系运算基本要领:选择运算,投影运算,连接运算 4、 SQL基本基本命令:查询命令,操作命令 5、 Access系统简介: 历年的全国计算机等级考试的笔试中,本章历年的考题分布情况如表3-1所示: 表3-1 历年考题分数分布表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 基本概念 4 2 2 2 关系数据库 2 2 关系运算的基本概念 2 Access系统简介 2 2 4 合计 6 6 6 6 由表6-1可知,近几届考试分值分布如图3-1所示。本章涉及的试题分数非常固定,都为6分,考试的关键点主要是数据库基本概念、数据模型的定义以及种类、关系运算的分类。 3.1 数据库基础知识 考点1:数据库的发展和基本知识 数据库技术的主要目的是有效地管理和存取大量的数据资源。随着计算机科学和技术的发展,数据库技与网络技术结合产生了分布式数据库系统。分布式数据库系统又分为物理上分布、逻辑上集中的分布式数据库结构和物理上分布、逻辑上分布式数据库结构两种。目前使用的比较广泛的是客户/服务器(Open Data Base Connectivity,ODBC)标准协议通过网络访问远程的数据库。数据库技术与面向对象程序设计结合产生面向对象数据库系统。 例3.1(2004年9月选择题第12题) ODBC的中文含义是,,,。 [解析] ODBC是Open Data Base Connectivity的简写,其中文含义是开放数据库连接。Microsoft Access中,可以从其他数据库、电子表格及文本文件格式中导入、导出或链接。Microsoft Access使用内置驱动程序或ODBC驱动程序完成这项工作。 [答案] C 自测题 可用“3.2笔试过关精练”中的选择题第1—2题检验自己掌握本考点的情况。 考点2: 数据库系统相关概念 1、 数据库相关概念 (1)数据(Data):数据是数据库中存储找基本对象 虽然二级Access考试大(2)数据库(DB,DataBase):存储在计算机存储容器上 纲中包括本考点,但相关结构化的相关数据集合。 考核内容在二级公共基(3)数据库应用系统:利用数据库系统资源开发的,面 础中已经考核。在这里只向某一类实际应用的软件系统。 需了解本考点的内容即(4)数据库管理系统(DBMS,Data Base Management 可。 System):指使用户可以定义、创建和维护数据库以及提供对数据库有限制操作的访问系统。 (5)数据库系统(DBS,DatabaseSystem):指带有数据库的计算机应用系统。数据库系统由5个部分组成:硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员和用户。数据库系统的核心为数据库管理系统。 2、 数据库系统的特点 (1)实现数据共享,减少数据冗余。 (2)采用特定的数据模型。 (3)具有较高的数据独立性。 (4)有统一的数据控制功能。 例3.2(2005年9月选择题第10题) 数据系统的核心,,,。 (A)数据模型(B)数据库管理系统(C)数据库(D)数据库管理员 [解析] 请参照本章考点破解2中对数据库 系统的描述。 误区警示 [答案] B 有些考生认为数据库系统的核心是数 据库,这个理解是错误的。数据只是数 自测题 据的集合。而数据库管理系统(,Data 可用“3.2 笔试过关精练”中的选择题3—4Base Management System,DBMS)是题进行自测。 一个专门负责数据库管理和维护的计 算机软件系统。它是数据库系统的核 考点3: 数据模型 心,对数据系统的功能和性能有着决定 1、 实体相关概念 性的影响。 客观存在并且相互区别的事物称为实体,描 述实体的特性称为属性。属性值的集合表示一种实体的类型,称为实体型。同类型的实体的集合称为实体集。 在Access中一个表存放一个实体集,表中的字本考点命题重点是数据模型的相段是实体的属性,记录代表一个具体的实体。 关概念和实体之间联系的种类,常 2、 实体联系的种类 见命题方式为给出实体联系,让考 实体之间的对应关系称为联系。实体间联系的生判断联系的种类。本考点试题出种类是指一个实体型中可能出现的每一个实体与另现几率很高,考生要重点掌握。 一个实体型中多少个实体存在联系。两个实体间的 联系有一对一联系、一对多联系和多对多联系3种。 在Access中,一对一联系表现为主表中每一条记录只与相关表中的一条记录相关联。一对多联系表现为主表中的每条记录与相关表中的多条记录相关联。多对多的联系表现为一个表中的多条记录在相关表中同样可以有多条记录与之对应。 3、 数据模型的种类 数据模型是数据库管理系统用来表示实体及实体联系的方法,一个具体的实体模型应当正确地反映出数据之间存在的整个逻辑关系。数据库管理系统都是基于某种数据模型的不同,数据库管理系统开发出来的应用系统称为层次数据库系统、网状数据库系统和关系数据库系统。 在关系数据库模型中,使用二维表结构表示实体以及实体之间的联系。在关系模型中二维表就是关系。 例3.3(2004年9月 选择题第13题) 数据模型反映的是,,,。 (A) 事物本身的数据和相关事物之间的联系 (B) 事物本身所包含的数据 (C) 记录中所包含的全部数据 (D) 记录本身的数据和相关关系 [解析] 数据模型反映了事情本身的数据以及事物之间的各种联系。 [答案] A 例3.4(2005年4月 选择题第12题) 假设数据中表A和表B建立了“一对多”关系,表B为“多”的一方,则下述说法中 正确的是,,,。 (A) 表A中的一个记录能与表B中的多个记录匹配 (B) 表B中的一个记录能与表A中的多个记录匹配 (C) 表A中的一个字段能与表B中的多个字段匹配 (D) 表B中的一个字段能与表A中的多个字段匹配 [解析] 假设表A和表B存在“一对多”的关系,且表B为“多”的一方,则表A中 的一条记录与表B中的多条记录相匹配,且表B中的一条记录只与表A的一条记录相匹配。 [答案] A 例3.5(2005年9月 选择题第12题) 如果表A中的一条记录与表B中的多条记录相匹配,且表B中的一条记录与表A中的 多条记录相匹配,则表A与表B存在的关系是,,,。 (A)一对一(B)一对多(C)多对一(D)多对多 [解析] 参照本章考点破解3的相关说明可知本题表A和表B的关系是“多对多” [答案] D 例3.6(2006年4月 选择题第11题) 常见的数据模型有3种,它们是,,,。 (A) 网状、关系和语义 (B) 层次、关系和网状 (C) 环状、层次和关系 (D) 字段名、字段类型和记录 [解析] 参照本章考点破解3中对数据模型的描述。 [答案] B 自测题 可用“3.2笔试过关精练”中选择题第5—7题、填空题第1—2题进行自测。 3.2关系数据库与关系运算 考点4 关系数据库 关系模型中对关系有一定的要求,关系必须具有如下5个特点。 (1)关系必须规范化。对Access 来说,最基本的要求就是表中不能包含表。 (2)在同一个关系中不能出现相同的属性名。对Access来说,即不允许同一个表中有相同的字段名。 (3)关系中不允许有完全相同的元组。在Access中不允 许两个记录完全相同。 本考点内容和二级公共基础 (4)在同一个关系中元组的次序无关紧要。在Access中知识的相关内容有重叠,一记录的先后顺序无关紧要。 般会在二级公共基础知识试 (5)在同一个关系中列的次序无关紧要。在Access中字题中出现,考核几率较高。段的次序也无关紧要。 该考点试题在近几届笔试 在Access中,一个“表”就是一个关系,表的名称就是Access专业试题中分值走势关系名。表中的字段对应二维表属性(列方向),记录对应二如图3.2所示。 维表的元组(行方向)。字段的取值范围称为域,能够惟一地 标识一个元组的属性和属性组合的值称为关键字。 在Access中将相互之间存在联系的表放在一个数据库中统一管理。 例 3.7(2004年9月选择题第11题) 在Access数据库中,表就是,,,。 (A)关系(B)记录(C)索引(D)数据库 [解析] 用二维表结构表示实体以及实体之间联系的模型称为关系数据模型,一个二维表就是一个关系。在Access中,一个表就是一个关系,关系名就是表名,记录对应二维表的行,字段对应二维表的列。 [答案] A 例3.8(2005年4月选择题第13题) 数据表中的“行”称为,,,。 (A)字段(B)数据(C)记录(D)数据视图 [解析] 在数据表中列称为字段,行称为记录。 [答案] C 自测题 可用“3.2笔试过关精练”中的选择题第8—9题、填空题第3题进行自测。 考点5 关系运算 关系运算分为传统的集合运算和专门的关系运算两类。 1、 传统的集合运算 本考点命题几率很高。笔试传统的集合运算要求元组有相同的结构,传统的集 中这些试题可能出现在二级合运算包括并差、交和集合运算。在Access中可实现了 Access的公共基础考核部前3种运算,Access 中没有直接提供传统的集合运算, 分,也可能会出现在二级可以通过其他操作或都编制程序实现。 Access专业试题考核部分。 2、 专门的关系运算 专门的关系运算包括选择、投影、联接。 (1)选择。选择操作是对关系的水平分解,即从关系中选择部分满足条件的元组,组成新关系。 (2)投影。投影操作是对关系的垂直分解,即从关系的属性集中选择属性子集,由关系的部分列构的元组组成一个新关系。 (3)联接。联接是对关系的横向结合。联接操作是从两个关系的广义笛卡尔积中选择属性间满足一定条件的元组。在联接运算中,按照字段值对应相等为条件进行的联接操作称为等值联接,去掉重复属性的等值联接称为自然联接。 例3.9(2005年9月 选择题第11题) 将两个关系拼接成一个新的关系,生成的新关系中包含满足条件的元组,这种操作称为,,,。 误区警示 (A)选择(B)投影(C)联接(D)并 请注意传统集合运算和专门的关系运[解析] 参照本章考点破解5中的“联接” 算的区别。二级Access考试中常考核的描述 考门的关系运算。要牢记选择是对行的[答案] C 运算、投影是对列的运算、联接是对多 个关系的运算,不要将三者混淆。 自测题 可用“3.2笔试过关精练”中的选择题第10 题、填空题第4题进行自测,检测自己掌握此考点的情况。 3.3 Access 系统简介 考点6 Access 系统简介 1、 Access的主要特点和功能 Microsoft Access是微软公司开发的第一个面向本考点主要考核Access的主要Windows平台的桌面数据库管理系统,它充分利用了功能特点和Access 的系统结Windows平台的优越性,如图形界面和Windows的事件构。本考点考核几率较高,需驱动机制等。 要重点掌握。该考点在近几届 对于大多数关系型数据库管理系统,如FoxPro而言,考试中分值走势如图3.3所示。 其管理者需要具有程序设计能力,才能建立和管理一个有 效的应用程序。而Access数据库系统不用考虑构成PC数据库的多个单独文件,可以利用各种图例快速获得数据,可以利用报表工具方便快捷地生成需要的数据报表,可以处理多种数据类型,且采用了OLE技术,能方便地创建和编辑多媒体库,支持ODBC标准的SQL数据库的数据,设计自动化且具有较好的集成开发功能。Access把数据库应用程序的建立移到了用户环境中,数据库的管理者不再需要具有程序设计能力,除非要执行复杂的操作。利用系统提供的向导或生成器,再利用几个简单的宏或VBA语句,就可以迅速建立简单的应用程序。 2、 Access数据库的系统结构 Access通过各种数据库对象管理信息。Access数据库由数据库对象和组两大部分组成,数据库对象包括表、查询、窗体、报表、数据访问页、宏和模块,共七种,这些对象都存放在同一个数据库文件(扩展名为.mdb)中。 例:3.10(2005年4月 选择题第11题) Access中表和数据库的关系是,,,。 A( 一个数据库可以包含多个表 B( 一个表包含两个数据库 C( 一个表可以包含多个数据库 D( 一个数据只能包含一个表 [解析] Access数据库由数据库对象和组两部分组成,表是数据库中用来存储数据的对象,是整个数据库系统的基础。Access允许一个数据库包含多个表,用户可以在不同的表中存储不同类型的数据。 [答案] A 例3.11(2005年9月 选择题第13题) 利用Access创建的数据库文件,其扩展名为,,,。 A( ADP B( DBF C( FRM D( MDB [解析] Access中数据库文件的MDB。 [答案] D 例3.2(2006年4月 选择题第12题) 在以下叙述中,正确的是,,,。 E( ccess只能使用系统菜单创建数据库应用系统 F( Access不具备程序设计能力 G( Access只具备了模块化程序设计能力 H( Access具有面向对象的程序设计能力,并能创建复杂的数据库应用 系统 [解析] Access数据库系统既是一个关系数据库系统,也可以作为Windows图形用户界面的应用程序生成器。Access既可以方便地使用各种图例获得数据、使用报表生成器生成合适的报表;也支持SQL数据库数据,且具有集成开发功能。由此可知本题D选项叙述正确。 [答案] D 例:3.13(2006年4月 选择题第13题) 不属于Access对象的是,,,。 A( 表 B( 文件夹 C( 窗体 D( 查询 [解析] 参照本章考点破解6中对Access对象的描述可知“文件夹”不属于Access对象。 [答案] , 自测题 可用“3.2笔试过关精练”中的选择题第11,14题进行自测。 第4章 数据库和表的基本操作 本章主要考察的内容是: 1、 创建数据库 (2) 创建空数据库 (3) 使用向导创建数据库 2、 表的建立 (1) 建立表结构:使用向导,使用表设计器,使用数据表 (2) 设置字段属性 (3) 输入数据:直接输入数据,获取外部数据 3、 表间关系的建立与修改 (1) 表间关系的概念:一对一,一对多 (2) 建立表间关系 (3) 设置参照完整性 4、 表的维护 (1) 修改表结构:添加字段,修改字段,删除字段,重新设置主关键字 (2) 编辑表内容:添加记录,修改记录,删除记录,复制记录 (3) 调整表外观 5、 表的其他操作 (1) 查找数据 (2) 替换数据 (3) 排序记录 (4 ) 筛选记录 历年的全国计算机等级考试的笔试中,本章历年的考题分布情况如表4-1所示: 表4-1 历年考题分数分布表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 表的建立 6 4 数据库的建立 6 4 表间关系的建立和修改 2 2 表的维护 4 表的其他操作 2 合计 8 8 8 8 新大纲调整后,本章试题出题方式主要为选择题,分数比较稳定,分数分布如图4.1所示。本章试题分数基本稳定在8分。考试的关键点主要是表的建立、有效性规则、掩码设置、表的维护 4.1 数据库和表的建立 考点 1 数据库的建立和设计 本考点命题几率很小,至今为止该数据库设计的步骤包括:分析建立数据库的目的;确定数考点未考核相应内容,了解该考点 相应知识即可。 据库中的表;确定表中的字段;确定主关键字;确定表之间的关系。 例4.1下列选择中,数据库设计的正确步骤是,,,。 1( 确定表之间的关系 2( 确定数据库中的表 3( 确定表中的字段 4( 分析建立数据库的目的 5( 确定主关键字 A(1 2 3 4 5 B(2 1 3 4 5 C(4 2 3 5 1 D(4 2 1 3 5 [解析] 请参照本章考点破解1中对数据库设计的描述。 [答案] C 考点 2 表的建立 本考点考核重点是表的字段命名Access数据库管理系统中的数据库通常是多个表组成的规则和字段属性设置。字段的有效集合。表用来存储同一类或同一主题的相关数据。设计数据库性规则设置和输入掩码的考核几的关键是如何划分多个表来表示数据关系,以及如何将这些相率极高,应作为重点掌握。试题类关的表组合成一个数据库。 型以选择题为主,填空题出现几率确定了表的组织结构后,就可以创建每一个表,Access不高。该考点几届笔试分值走势如提供了多种创建表的方法,最简单的方法是使用表向导创建图4.2 所示。 表。 创建表的过程就是定义一个表结构,包括定义字段名、字 段类型、字段长度及完整性控制。 1、Access中表的字段命名规则 (,)字段名长度为,,,,个字符。 (,)字段名可以包含字母、汉字、数字、空格和其他字符。, (,)字段名不能包含。(句号)、~(惊叹号)、,,(方括号)、′(重音符号)。 ,、Access中字段的数据类型 Access常用的字段类型及其说明如表4.2所示。 类型 大小 用法 默认文本大小为文本或文本与数字的组合,例如地址;也可以文本 50个字符,最多255个是不需要计算的数字,例如电话号码、零件编号或 字符 邮编 备注 最多64000个字符 长文本及数字,例如备注或说明 特定的数字数据类在数字数据类型中,各数字类型字段长度分别 型长度不同 为: 数字字段数据字段 类型 长度 类型 长度 字节 1字单精4字 节 度数 节 数字 整数 2字双精8字 节 度数 节 长整4字 数 节 当用于“同步复制ID时”,长度为16字节 日期/时8字节 日期和时间 间 8字节 货币值。货币数据类型可以避免计算时四舍五货币 入。精确到小数点左方15位数及右方4位数 自动编4字节 添加记录时自动插入的惟一顺序(每次递增1) 号 或随机编号 1字符 字段只包含两个值中的一个,例如:“是/否”、是/否 “真/假”、“开/关” 最大为1G 其他程序中使用OLE协议创建的对象(例如 Microsoft Word 文档、Microsoft Excel电子表格、OLE对图像、声音或其他二进制数据),可以链接或嵌入 象 Microsoft Access表中。必须在窗体或报表中使用绑 定对象框显示OLE对象 超级链最多64000个字符 存储超级链接的字段。超级链接可以是UNC 接 路径或URL 与主键字段的长度创建允许用记使用组合框选择来自其他表或 查阅向相同,且该字段也是“查来自值列表中的值的字段。在数据类型列表中选择 导 阅”字段;通常为4字此选项,定义启动向导行 节 3、字段属性设置 在表结构设计结束后,可以在表设计器字段的属性区域设置字段的属性值,如图 4.3所示。 (1)字段大小。用来表示字段的大小,该属性“文本”或“数字”字段有效。 (2)格式。用来决定数据的打印方式和屏幕显示方式,字段数据类型不同,格式也不同。“格式”属性只影响值如何显示,不影响值在表中如何保存。显示格式只有在输入数据被保存后才有效,它不会控制数据的输入格式。如果需要控制数据的输入格式,可使用输入掩码来代替数据显示格式。如果要让数据按输入时的格式显示,则不要设置“格式”属性。 (3)输入掩码。 Access通过输入掩码的设置使输入格式标准保持一致可在输入时检查错误。 在所有数据类型中,输入掩码只为“文本”和“日期/时间”型字段提供向导。如果同时定义了字段的显示格式和输入掩码,则在添加或编辑数据时,Microsoft Access将使用输入掩码,而“格式”设置则在保存记录时决定数据如何显示。同时使用“格式”和“输入掩码”属性时,要注意它们的设置不能互相冲突。 使用输入掩码属性时,可以使用一串代码作为预留区来制作一个输入掩码。定义输入掩码属性所使用的字符如表4.3所示。 表4.3 输入掩码属性所使用字符的含义 字说明 符 0 必须输入数字(0—9) 9 可以选择输入数据或空格 可选择输入数据或空格(在“编辑”模式下空格以空显示,但是在保存数据时# 将空白删除,允许输入加号和减号) L 必须输入字母(A—Z) , 可以选择输入字母(A—Z) A 必须输入字母或数字 a 可以选择输入字母或数字 & 必须输入任何字符或一个空格 C 可以选择输入任何字符或一个空格 . :小数点占位符及千位、日期与时间的分隔符(实际的字符将根据“Windows ; - / 控制面板”中“区域设置属性”中的设置而定) < 将所有的字符转换为小写 > 将所有的字符转换为大写 使输入掩码从右到左显示,而不是从左到右显示。输入掩码中的字符始终都是! 从左到右。可以在输入掩码中的任何地方输入感叹号 \ 使接下来的字符以原义字符显示(例如,\A只显示为A) 4、默认值 当输入字段值时,希望某些字段有固定的值,作为该字段的默认值,此时可以设置字段 的默认值属性。可以使用文本值或者表达式来定义默认值,当表达式被用来定义默认值,就 不能被同一表中的其他字段所使用。 5、有效性规则 该属性可以防止非法数据输入到表中。根据字段数据类型的不同,有效性规则的形式和 设置目的也不同。 例4.2(2004年4月 选择题第14题) 误区警示 能够使用“输入掩码向导”创建输入掩码的字 大多数的数据类型都可以定义一个输入掩段类型是,,,。 码。但是能够使用“输入掩码向导”创建A( 数字和日期/时间 输入掩码的字段类型只有“文本”和“日B( 文本和货币 期/时间”。 C( 文本和日期/时间 D( 数字和文本 [解析] 请参照本章考点破解2对输入掩码的描述 [答案] C 例4.3(2004年9月 选择题第17题) Access数据库表中的字段可以定义有效性规则,有效性规则是,,,。 A(控制符 B(文本 C(条件 D(前三种说法都不对 [解析] 有效性规则是对一个或多个字段中能输入何 误区警示 种内容的设置限制或条件规则。当输入数据违反了有效性规 字段有效性规则属性就是一个则的设置时,有效性文本属性将指定显示给用户的提示消 表达式,是输入时需要满足的条息。因此有效性规则实际就是一个限制用户输入的条件。 件。 [答案] C 例4.4(2005年4月 选择题第14题) 在关于输入掩码的叙述中,错误的是,,,。 A(在定义字段的输入掩码时,既可以使用输入掩码 误区警示 向导,也可以直接使用字符 字段的输入掩码属性是为了规定字B(定义字段的输入掩码,是为了设置密码 段中数据输入的格式,当将字段的输 入掩码属性设置为“密码”时,可以 避免在屏幕上显示键入的字符所以 输入掩码并不是为了设置密码。 C(输入掩码中的字段“0”表示可以选择输入数字0到9之间的一个数 D(直接使用字符定义输入掩码时,可以根据需要将字符组合起来 [解析] 请参照本章考点破解2对输入掩码的描述。 [答案] B 例4.5(2005年4月 选择题第16题) 误区警示 Access 提供的数据类型中不包括,,,。 “文本”和“文字”是两个不同的,(备注 ,(文字 ,(货币 ,(日期, 概念,Access有“文本”数据类型,时间 没有“文字”数据类型。 [解析] Access数据类型有:文本、备注、数字、时 期,时间、货币、自动编号、是,否、,,,对象、超级 链接、查阅向导等。但没有文字类型。 [答案] , 例4.6和例4.7使用已建立的“tEmployee”表,表结构及表内容如表4.4和表4.5所示。 表4.4 “tEmployee”表结构 字段名称 字段结构 字段大小(单位) 雇员ID 文本 10 姓名 文本 10 性别 文本 1 出生日期 时期/时间 职务 文本 14 简历 备注 联系电话 文本 8 表4.5 “tEmployee”表记录的内容 雇姓性出生职简历 联系 员ID 名 别 日期 务 电话 1 王女 1960经1984年大学毕业,曾是销3597 宁 -1-1 理 售员 6450 2 李男 1962职1986年大学毕业,现为销3597 清 -7-1 员 售员 6451 雇姓性出生职简历 联系 员ID 名 别 日期 务 电话 3 王男 1970职1993年专科毕业,现为销3597 创 -1-1 员 售员 6452 4 郑女 1978职1999年大学毕业,现为销3597 炎 -6-1 员 售员 6453 5 魏女 1934职1956年专科毕业,现为销3597 小红 -11-1 员 售员 6454 例4.6(2005年9月 选择题第16题) 在“tEmployee”表中,“姓名”字段的字段大小为10,在此列输入数据时,最多可输入 的汉字数和英文字符数分别是,,,。 A(5 5 B(5 10 C(10 10 D(10 20 [解析] Microsoft Office基于UNICODE文字编码标准。UNICODE是双字节文字字编码标准,包括NCHAR、NVARCHAR与NTEXT三种。在Access中,汉字和数字、字母、符号都看作字符存储,因此本题答案为C。 [答案] C 例4.7(2005年9月 选择题第17题) 若要确保输入的联系电话值只能为八位数字,误区警示 应将该字段的输入掩码设置为,,,。 实际上,在输入掩码属性中使用字符“0”、 A(00000000 B(99999999 C(######## “9”、“#”,字段值都可以输入数字,但是D(???????? 只有当输入掩码属性字符“0”时,要求字 [解析] 由表4.3可知,当输入掩码设置为0时,段值只能输入数字0—9。 字段值只能输入数字。 [答案] A 例4.8(2006年4月 选择题第14题) 表的组成内容包括,,,。 A(查询和字段 B(字段和记录 C(记录和窗体 D(报表和字段 [解析] 在关系数据库中,表对应一个关系,一个关系就是一个二维表。二维表的内容就是行和列,对应于表来说,也就是字段和记录以及相关的一些信息。 在Access中,查询、窗体、报表作为单独对象存在,并不是表的内容。 [答案] B 例4.9(2006年4月 选择题第16题) 数据类型是,,,。 A(字段的另一种说法 B(决定字段能包含哪类数据的设置 C(一类数据库应用程序 D(一类用来描述Access表向导允许从选择的字段名称 [解析] 计算机数据有两种特征:类型和长度,数据类型是以数据的表现方法和存储方式来划分的数据种类。 [答案] B 自测题 可用“4.2笔试过关精练”中的选择题第1—10题检验自己掌握此考点的情况。 4.2表之间的关系的建立和修改 考点3 表之间关系的建立和修改 本考点考核重点是表间关系的概念和建 立,一般该考点和其他内容合并,考核 试题类型以选择题为主。本考点试题分 值走势如图4.4所示。 表在数据库中单独存在,在有些情况下,要想有效地管理数据,必须将不同表的相关数据关联起来,表的关系建立可以分一对一、一对多、多对多三种。一对一关系不常用,多对多关系可以拆分为一对多关系,因此一般将表和表之间的关系定义为一对多关系,并将一端的表称为主表,将多端的表称为相关表。 为了使不同的表中的数据产生联系,Access利用主关键字标识数据库中每一个表的每条记录。主关键字可以为一个字段或一组字段。为了确保主关键字字段值的惟一性,不允许在主关键字字段中存入重复值和空值。 在使用数据库向导创建数据库时,向导自动定义各个表之间的关系,使用表向导创建表的同时,也将定义该表和数据库中其他表之间关系。也可以自己定义表之间的关系。定义表的关系之前,应当把要定义关系的所有表关闭,然后再进行定义。关系的定义是通过该联系来建立两个表之间一对多关系。 参照完整性是输入或删除记录时,为维持表之间的定义的关系而必须遵循的规则。如果实施了参照完整性,则当主表中没有关联的记录时,Access不允许将记录添加到相关表,或更改主表值以致造成相关表中的记录没有对应项,也不允许相关表中有相关记录与主表匹配时删除主表记录。 例4.10(2005年4月 选择题第15题) 下面说法中,错误的是,,,。 A( 文本型字段,最长为255个字符 B( 要得到一个计算字段的结果,仅能运用总计查询来完成 C( 在创建一对一关系时,要求两个表的相关字段都是主关键字 D( 创建表之间的关系时,正确的操作是关闭所有打开的表 [解析] 选择A正确。文本数据类型所有使用的对象为文本或文本与数字的组合文本型字段的取值最多可达到255个字符。取值范围大于255个可以使用备注类型。选择C正确。在创建一对一关系时,如果两个表具有相同的实体,可以在两个表中使用同样的主关键字字段。如果两个表中有不同的实体及主关键字,可以选择其中一个表,将它的主关键字字段放到另一个表中作为外部关键字字段,以此建立一对一联系。选项D正确,创建表之间的关系时,应把要定义关系的所有表关闭,开状态下是不能建立关系的。 在Access中,可以通过交叉表查询、分组总计查、总计查询等得到一个计算字段的结果。(在第5章中会详细介绍)因此B选项说法错误。 [答案] B 例4.11(2005年9月 选择题第14题) 下面关于Access表的叙述中,错误的是,,,。 A( 在Access表中,可以对备注型字段进行“格式”属性设置 B( 若删除表中含有自动编号型字段的一条记录后,Access不会对表中自动 编号型字段重新编号 C( 创建表之间的关系时,应关闭所有打开的表 D( 可在Access表的设计视图“说明”列中,对字段进行具体的说明 [解析] 本题为综合性概念试题。 选项A叙述正确。参照本章考点破解2中对格工兵描述。 选项B叙述正确。当字段类型设置为自动编号后,每次向表中输入记录,Access会自动输入惟一顺序号。自动编号数据类型一旦被指定,将会永久地与记录连接,即使删除了表 中的若干记录,Access也不会对表中自动编号类型字段重新编号,当添加新记录时,Access按递增的规律重新赋值,不会使用被删除的自动编号类型字段的数值。 选项,叙述错误。在Access中,当要为两个表建立关系时,需要关闭要建立关系的表,不需要关闭所有的表。 选项,叙述正确。在Access表的设计视图“说明”列说明字段的数据类型。 [答案] , 自测题 可用“,.2笔试过关精练”中的选择题第,,题、填空题第,题进行自测,检验自己掌握此考点的情况。 4. 3 表的维护 考点, 维护表 维护表主要是对已经建立的表进行维护包括表的结 本考点考核重点是表外观的调整,主构、记录内容、表格调整以及其他操作。 要在上机试题中考核,本书的上机部,、 修改表结构 分有详细说明,笔试考核的内容并不修改表结构只能在“设计”视图中完成,可以进行 是特别多。本考点分值走势如图4.5的操作有:增加字段、删除字段、设置主关键字、设置 所示。 修改字段属性等。 ,、表内容编辑 表内容编辑可以在“数据表”视图下完成,包括表记录的定位、选择、添加、删除、修改、复制等,在该视图下也可以进行表字段更名、字段宽度修改等操作。 ,、表外观调整 可以调整表的字段次序、字段显示高度和宽度、数据字体、表中网格线和背景、隐藏列、冻结列等。 例4.12(,,,,年,月 选择题第,,题) 在已经建立的数据表中,若在显示表中内容时使某些字段不能移动显示位置,可以使用的方法是,,,。 ,(排序 ,(筛选 ,(隐藏 ,(冻结 [解析] 在通常的操作中,常常需要建立比较大的数据库表,当表过宽时,“数据表”视图中有些关键的字段值因为水平滚动后无法看到,影响了数据查看。解决这一问题的最好方法就利用Access提供的冻结列功能。 [答案] , 例:4.13(,,,,年,月 选择题第,,题) 在数据表视中,不能,,,。 ,(修改字段的类型 ,(修改字段名称 ,(删除一个字段 ,(删除一条记录 [解析] 参照本章考点破解,维护中的描述。 [答案] , 自测题 可用“,.2笔试过关精练”中的选择题第,,—,,题、填空题第,题检验自己掌握此考点的情况。 4..4 表的其他操作 考点, 数据查找、替换以及排序和筛选 本考点在历届笔试中考核次数较少,但作为Access最基本的操作,在今后的考核中出题几 率很大,应该重点掌握。本考点最可能考核的内容为查找替换中通配符的使用、排序的规则 和筛选的方法。本考点分值走势如图4.6所示。 ,、 查找替换 在,ccess的数据查找操作中,如果需要按照特定要求查找或都替换数据,可以使用通配符作为其他字符的占位符。通配符的用法如表4.6所示。 表4.6 查找中通符的使用说明表 字用法 符 , 与任何个数的字符匹配,它可以在字符串中作为第一个或最后一个字符使用 , 与任何单个字母的字符匹配 ,与方括号内任何单个字符匹配 , ~ 匹配任何不在括号之内的字符 与范围内的任何一个字符匹配。必须以递增排序次序来指定区域(,,,,而, 不是,,,) , 与任何单个数字字符匹配 使用通配符时应注意: 通配符专门用在文本数据类型中(有时也可以应用在其他数据类型中)。在使用通配符搜索星号(,)、问号(,)、数字号码(,)、左方括号(,,或减号(,)时,必须将搜索的项目放在方括号内。例如:搜索问号,需要在“查找”对话框中输入,,,符号。如果同时搜索减号和其他单词时,需要在方括号内将减号放置在所有字符之前或之后(但是,如果有惊叹号(~),需要在方括号内将减号放置在惊叹号之后)。在搜索惊叹号(~)或右方括号())时,不需要将其放在方括号内。必须将左、右方括号放在下一层方括号中(,,,,),才能同时搜索一对左、右方括号(,,)否则Access会将这种组合作为一个空字符串处理。 在Access中,空值和空字符串含义不同,空值表示缺省或还没有值,字段中允许使用,ull值来说明字段里的信息无法得到。空字符串是使用双引号括起来的空字符串(::)。在查找时,需要选择字段,并在“查找内容”框中键主,ull来查找,ull值,或键入不带空格的双引号(::)来查找空字符串,在:匹配:框中选择:整个字段:,并确保已清除“按格式搜索字段”复选框。将未存储数据的字段值赋为空值。 替换数据比较简单,就是在“查找和替换”对话框中的“替换值”输入框中输入要替换的值。当要查找,ull或空字符串时必须使用“查找替换”对话框来查找这些内容,并一一替换它们。 2、记录排序 在Access中,可以根据一个或者多个字段组合对所有记录进行升序或者降序排列。排序的具体规则如下: (1) 英文按字母顺序排序,不区分大小写。升序时按照A—Z排列,降序时相 反。 (2) 中文按拼音字母的顺序排序,升序时按A—Z排列,降序时相反。 (3) 数字按照数字的大小排序,升序从小到大排列,降序相反。 (4) 日期和时间字段,按日期的先后顺序排列,升序时按照从前到后排列,降 序时按照从后到前排列。 排序时应该注意如下事项: (1)当“文本”字段中有数字时,将作为字符串而不是数值来排序。因此,如果要以数值的顺序来排序,必须在较短的数字前面加上零,使全部的文本字符串具有相同的长度。例如:要以升序来排列文本字符串“2”、“6”、“11”和“22”,其结果将是“11”、“2”|“22”、“6”。在仅有一位数的字符串前面加上零,才能按照数值正确地排序:“2”、“06”、“11”、“22”。对于不包含Null值的字段,也可以使用Val函数来排列字符串的数值。 (2)以升序来排序字段时,任何含有空字段(包含Null值)的记录将列在列表中的第一条。如果字段中同时包含Null值和空字符串,包含Null值的字段将在第一条显示,紧接着是空字符串。 (3)不能排序数据类型为OLE对象和备注、超级链接的字段。 (4)排序后,排序次序与表一起存储,但这并没有真正改变表中记录的存储顺序。 当表按照多个字段进行排序时,Access将根据第一个字段指定的顺序进行排序,当第一个字段具有相同的值时,会按照第二个字段对具有第一个字段相同值的记录进行排序,依此类推,直到按照全部指定的字段排序完成为止。 3、记录筛选 使用数据表时,可以通过查找来选择和定位需要的记录,但是当选择的条件复杂时,筛选记录的功能更加有用。Access提供了4种筛选方法:按选定内容筛选、按窗体筛选、输入筛选目标选以及高级筛选。 “按选定内容筛选”、“按窗体筛选”、“输入筛选目标”筛选是筛选记录最容易的方法。使用“按选定内容筛选”可以很容易找到包含某字段值的记录。如果要从列表中选择所需的值,而不想浏览数据或窗体中的所有记录,或者要一次指定多个准则,可使用“按窗体筛选”。如果焦点正位于窗体或数据表的字段中,而恰好需要在其中输入所搜索的值或要将其结果作为准则的表达式,可使用“输入筛选目标”。如果是更复杂的筛选,则可使用“高级筛选/排序”。 经过筛选后的表只显示满足条件的记录,不满足条件的记录被隐藏起来。 例4.14(2006年4月 选择题第21题) A( 按设定的优先次序依次进行排序 B( 按最右边的列开始排序 C( 按从左向右优先次序依次排序 D( 无法进行排序 [解析] 请参阅本章考点破解5记录排序的描述。 [答案] A 自测题 可用“4.2笔试过关精练”中的选择题第15—22题进行自测。 第5章 查询 本章主要的内容是: (查询的创建: 1 (1)使用向导创建查询。 (2)使用设计视图创建查询。 (3)在查询中计算。 2(查询的分类: (1)选择查询(即简单查询); (2)参数查询 (3)交叉表查询 (4)操作查询:具体是删除、更新、追加与生成表查询 (5)SQL查询 3. 查询准则: (1) 运算符。 (2) 函数。 (3) 表达式。 4、 操作已创建的查询。 (1) 运行己创建的查询。 (2) 编辑查询中的字段。 (3) 编辑查询中的数据源。 (4) 排序查询的结果。 历年的全国计算机等级考试的笔试中,查询部分的分值约占6-12%,属于重点的考察内 容。本章历年的考题分布情况如表5-1所示: 表5-1 窗体部分历年考题分数分布表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 查询概念 2 2 4 查询准则 2 4 4 4 14 交叉表查询 2 2 2 6 操作查询 2 4 6 12 SQL查询 2 2 4 8 合计 8 8 10 6 12 44 由表5-1可知,在历年的笔试考试中,笔试的关键点主要是查询的准则和操作查询, SQL查询语句的考查比重在逐渐加大。 5.1 认识查询 考点1 查询的功能 查询是根据用户给定的一组条件,从数据库的一个或多个表或已有查询中抽取符合条件 的记录,形成一个数据集合(即表)。查询的结果是由若干记录组成的集合(即生成一张新 表)。在Access中可以方便地创建查询,在创建查询的过程中定义要查询的内容和准则,Access根据定义的内容和准则在数据库表中搜索符合条件的记录。查询建立后,可使用不同的方法来查看、更改以及分析数据,也可以将查询作为窗体、报表以及其他查询的数据来源。 考点2 查询的分类 Access数据库管理系统将查询分为选择查询(即简单查询)、参数查询、交叉表查询、操作查询、SQL查询,共五种。 1(选择查询 选择查询是最常用的查询类型,顾名思义,它是根据指定的查询准则,从一个或多个表中获取数据并显示结果。可以使用选择查询对记录进行分组,作求和、计数、平均值以及其他类型的统计计算。 2(参数查询 参数查询是一种利用对话框来提示用户输入准则的查询。这种查询可以根据用户输入的准则来检索符合相应条件的记录。 3(交叉表查询 交叉表查询把来源于某个表中的字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,然后在数据表行与列的交叉处显示表中某个字段的统计值。交叉表查询就是利用表中的行和列来统计数据的。 4(操作查询 操作查询与选择查询相似,都是由用户指定查找记录的条件,但选择查询是检索符合特定条件的一组记录,而操作查询是在一次查询操作中对所得结果进行编辑等操作。操作查询是仅在一个操作中更改许多记录的查询,操作查询共有四种类型:删除、更新、追加与生成表。 5(SQL查询 SQL查询是用户使用SQL语句创建的查询。 SQL语言是结构化查询语言(Structured Query Language),它是一个综合的、通用的、功能极强的数据库语言,目前已成为关系数据库的标准语言。Access数据库支持SQL语言,它使Access数据库的功能得到了很大的加强,并使Access与大型数据(如果SQL server)的数据传递成为可能。 例5.1(2004年9月 填空题第6题) 操作查询共有四种类型,分别是删除查询、 、追加查询和生成查询。 [解析]参照本章考点1中对操作查询的描述。 [答案]更新查询 例5.2(2006年9月 选择题第13题) SQL 的含义是________。 A)结构化查询语言 B)数据定义语言 C)数据库查询语言 D)数据库操纵与控制语言 [答案]结构化查询语言 5.2 查询准则 考点3 查询准则 查询可以依据一定的条件限制,从表或已有查询中提取满足条件的结果,这个条件就是查询的准则。准则可以是运算符、常量、字段值、函数以及字段名和属性的任意组合,查询准则应能够计算出一个结果。 1(运算符 运算符是特定的符号或单词,用来标识一个或多个元素执行的操作。Access有多种类别的运算符,包括算术(数学)运算符、关系(比较)运算符,连接运算符和逻辑运算符。 )算术运算符。 (1 算术运算符包括加、减、乘、除等操作,表5.2所示为算术运算符及含义。 表5.2 算术运算符及其含义 算术运算符含义示例 +(加号) 加法 3+3 -(减号) 减法、负数 3-3 *(星号) 乘法 3*3 /(斜线) 除法 3/3 MOD(百分号) 求模(除法取余数,结果符号20 mod -6,结果是-4。 要与除数相同) ^(脱字符) 指数,次方 3^2(即3*3,3的2次方) (2)关系运算符及说明。 比较两个值,可使用如表5.3所示运算符。其结果将是一个逻辑值,即TRUE或FALSE。 表5.3 关系运算符及说明 关系运算符 含义 =(等号) 相等 >(大于号) 大于 <(小于号) 小于 >=(大于等于号) 大于或等于 <=(小于等于号) 小于或等于 <>(不等号) 不相等 (3)逻辑运算符。 对多个条件进行判断,可使用如表5.4所示的逻辑运算符。使用该运算符对值进行连接,结果为逻辑值,即TRUE或FALSE。 表5.4 逻辑运算符及其含义 逻辑运算符 含义 说明 非(不) 当与Not连接的表达式为真时,整个表达式为假 Not 与(并且) 当与And连接的表达式都为真时,整个表达式为真,否And 则为假 或(或者) 当与Or连接的表达式有一个为真时,整个表达式为真,Or 否则为假 (4)其他运算符 表5.5列出了一些其他运算符,这些运算符根据字段中的值是否符合这个运算符指定条件返回TRUE或者FALSE。TRUE值使记录包含在查询内;FALSE值拒绝此记录。表5.6列出Like运算符的匹配条件实例。 表5.5 其他特殊运算符及其含义 特殊运算符 含义 说明 在列表中 用于指定一个字段值的列表,列表中的任意一个值可与查In 询的字段相匹配 Between。。。And。。。 在范围中 用于指定一个字段值的范围,指定的范围之间用And连接 象 用于指定文本字段的字符象什么样。用“,”、“*”、“#”Like 和方括号配合使用 为空 用于指定一个字段为空 Is Null 不为空 用于指定一个字段不为空 Is Not Null 表5.6 Like运算符的匹配条件 通配符 含义 例子 与包含任意多个字符计算* 可以是计算机、计算机系、计算机系统、计算* 的字符串匹配 器等 wh* 可以是what、who、where、when等 与任意一个字符(包计算, 可以是计算机、计算尺、计算器等 ? 括汉字和数字)匹配 Wh, 是who 与任意一个数字字符1#3 可以是103、113、123、193等 # 匹配 与方括号内任意一个B[ae]ll 只能是Ball或者Bell [ ] 字符匹配 [白灰黑]衣服 只能是白衣服、灰衣服或者黑衣服 ! 与不在方括号内的任B[~ae]ll 不能是Ball或者Bell,可以是Bill等 意一个字符匹配(必[~白灰黑]衣服 不能是白衣服、灰衣服、黑衣服,可 须于[ ]一起用) 以是红衣服、蓝衣服等 2.准则中的函数 查询的准则可以利用Access提供的标准函数来构造。常用的函数包括数值函数、字符函数、日期时间函数和统计函数。 (1)数值函数。 数值函数用于数值的计算,常用的数值函数如表5.7所示。 表5.7 准则中常用的数值函数 函数 含义 功能 Abs(数值表达式) 绝对值函数 返回数值表达式值的绝对值 Int(数值表达式) 取整函数 返回数值表达式值整数部分的值 Sqr(数值表达式) 平方根函数 返回数值表达式值的平方根值 Sgn(数值表达式) 符号函数 返回数值表达式值的符号值。当数值表达式的值大 于0,返回值为1;当数值表达式的值等于0,返回值 为0当数值表达式的值小于0,返回值为-1 (2)字符函数 字符函数又称为文本处理函数,用于处理字符串。常用的字符函数如表5.8所示。 表5.8 准则中常用字符函数 函数 含义 功能 Space(数值表达式) 生成空格函数 空字符串中空格的个数由数值表达式确定 String(数值表达式,生成字符串函生成指定长度的重复字符串,重复的个数由数值 字符表达式) 数 表达式确定,重复字符是字符表达式的第一个字 符 Left(字符表达式,数取左子串函数 取从字符串左侧算起的指定数量的字符。当字符 值表达式) 表达式为Null时返回Null;当数值表达式为0时返 回空串;当数值表达式的值大于等于字符表达式 的字符个数时,返回字符表达式 Right(字符表达式,取右子串函数 类似Left,只是从右取子串 数值表达式) Mid(字符表达式,数取子串函数 从字符串中数值表达式1指定的位置开始取子串,值表达式1[,数值表达取数值表达式2指定的个数,如果数值表达式2缺 式2]) 省,则取到最后一个字符。 Len(字符表达式) 取字符的个数返回字符的个数,当字符表达式为Null时返回Null (字符串的长 度) Ltrim(字符表达式) 去前导(左)空返回删除了前面的空格的字符串 格 Rtrim(字符表达式) 去尾(右)空格 返回删除了后面的空格的字符串 Rrim(字符表达式) 去前后(左右)返回删除了前后面的空格的字符串 空格 (3)准则中常用的日期和时间函数 日期和时间函数常用来处理字段中的日期/时间值,可以通过日期和时间函数抽取日期的一部分及时间的一部分。常用日期和时间函数及说明如表5.9所示。 表5.9 常用日期时间函数 函数 含义 功能 Day(date) 取天 返回date中天的值(1-31) Month(date) 取月 返回date中月的值(1-12) Year(date) 取年 返回date中年的值(100-9999) Weekday(date) 取星期几 返回date中星期的值(1-7) Hour(date) 取小时 返回date中的钟点值(0-23) Date() 取日期 返回当前系统日期 说明:上表中的Date为日期/时间格式的常量或变量。 例5.3(2004年9月 选择题第18题) 在课程表中要查找课程名称中包含“计算机”的课程,对“课程名称”字段的正确准则表达式是_____。 A("计算机" B("*计算机*" C(Like “*计算机*” D(Like “计算机” [解析]本题使用文本文字值作为查询的准则,可包括任意可打印字符,也可以使用相应的函 数和运算符。 查询准则中的特殊运算符“Like”用于指定查找文本字段的字符模式。所定义的字符模式中,用“,”表示该位置可匹配任何一个字符;用“*”表示该位置可匹配零或都多个字符;用“#”表示该位置可匹配个数字;用方括号描述一个范围,用于可匹配的字符范围。 本题要求查找课程名称(文本数据类型)中包含“计算机”的课程,则可以使用Like运算符,并使用“*”通配符来匹配“计算机”前后文字,因此本题答案为C选项。 [答案]C 例5.4(2004年9月 选择题第20题) 建立一个基于“学生”表的查询,要查找“出生日期”(数据类型为日期/时间型)在1980-06-06和1980-07-06间的学生,在“出生日期”对应列的“准则”行中输入的表达式是______。 A(Between 1980-06-06 and 1980-07-06 ,(Between #1980-06-06# and # 1980-07-06# ,(Between 1980-06-06 or 1980-07-06 ,(Between #1980-06-06# or #1980-07-06# 解析:查询准则中的特殊运算符"Between"用于指定一个字段值的范围,指定的范围之间用AND连接.由此可知C、D选项表达式不符合语法要求。 本题以处理日期结果作为准则,日期值需要使用半角的“#”括起来。表5.10中列举了常用的处理日期结果作为准则的示例。 表5.10 以计算或处理日期结果作为准则的说明 字段 表达式 说明 出生日期 Between #1980-06-06# and #1980-07-06# 使用Between„and运算 符和相应的日期来查询在 1980年6月6日和1980 年7月6日之间出生的学 生 出生日期 Year([出生日期])=1980 使用Year函数查询1980 年出生的学生 出生日期 Year([出生日期])=1980 And Month([出生使用Year和Month函数 日期])=6 以及And运算符查询1980 年6月份出生的学生 出生日期 =80 AND 成绩表( B.成绩表(综合成绩>80 AND 成绩表(综合成绩<90 C.80<=成绩表(综合成绩=<90 D.80<成绩表(综合成绩<90 [解析]在Access中,使用Between 80 and 90作为字段的准则时,当字段值为80至90(包括80和90)时将显示该字段值。 在本题的四个选项中,C、D选项表达式不符合语法要求,B选项中表达式没有包括80 和90两个值。因此B、C、D选项都不是本题的答案。 [答案]A 例5.10(2006年9月 选择题第19题) 下面显示的是查询设计视图的“设计网格”部分: 从所显示的内容中可以判断出该查询要查找的是________。 A)性别为“女”并且1980 年以前参加工作的记录 B)性别为“女”并且1980 年以后参加工作的记录 ”或者1980 年以前参加工作的记录 C)性别为“女 D)性别为“女”或者1980 年以后参加工作的记录 [解析]在查询设计视图的“设计网格”中,条件行有多个内容同处于一行时,是“并且”关系。 在本题的四个选项中,C、D选项表达式不符合语法要求,把工作时间的年份取出要小于1980,是1980年以前。因此B、C、D选项都不是本题的答案。 [答案]A 例5.11(2006年9月 选择题第20题) 若要查询某字段的值为“JSJ”的记录,在查询设计视图对应字段的准则中,错误的表达式是________。 A)JSJ B):JSJ: C):*JSJ*: D)Like :JSJ: [解析]在查询设计视图的“设计网格”中,条件行输入的字符常量会自动加引号,所以A、B都正确。也可使用Like短语,如D。对答案C,因为引号中的*号可被当作任意个任意字符处理,与题意不符。 [答案]C 5.3 创建查询 考点4 选择查询 选择查询从一个或者多个表取出数据,并以表格的形式显示,选择查询不修改原来表中的数据。可以通过向导和“设计”视图两种方式来建立选择查询。 1.使用“查询向导”建立查询时,根据向导的说明选择表和表中字段即可。需要说明的是;在“数据表”视图显示查询结果时,字段的排列顺序与用户在向导的对话框中选定字段的次序相同。 通过“查询向导”创建查询。如果需要,向导也可以对记录组或全部记录进行总计、计数以及平均值的计算,并且可以计算字段中的最小值或最大值,但不能通过设置准则来限制检索的记录。“查询向导”建立步骤: (1)在“数据库”窗口中,单击“对象”下的“查询” ,然后单击“数据库”窗口工具栏上的“新 建”按钮。 (2)在“新建查询”对话框中,单击“简单查询向导”。 (3)单击“确定”按钮。 (4)单击查询基于的表或查询的名称,然后选择要检索数据的字段。 (5)如果需要,请单击附加的表或查询,然后选择要使用的字段。重复此步骤直到拥有所需的所有字段。 (6)按照向导对话框中的指示进行操作。在最后一个对话框中,可以选择执行查询或在“设计”视图中查看查询结构 2.选择查询的设计视图如图5.2所示。 图5.2 查询设计视图 在设计视图中,“字段”用来输入字段名称;“表”用来说明字段所在的表或者查询的名称;“总计”用于确定字段在查询中的运算方法;“排序”用于选择查询所采用的排序方法;“显示”利用复选框来决定字段是否在查询结果数据表中显示;“准则”用于输入一个准则来限定记录的选择;“或”用于输入一个准则或条件来限定记录的选择。 5.4 查询中的计算 考点5 查询计算功能 在查询中可执行许多类型的计算。例如,可以计算一个字段值的总和或平均值,再乘上两个字段的值,或者计算从当前日期算起3个月后的日期。 在字段中显示计算结果时,结果实际并不存储在基准窗体中。相反,Access在每次执行查询时都将重新进行计算,以使计算结果永远都以数据库中最新的数据为准。因此,不能入工更新计算结果。 如果要在字段中显示计算的结果,可以使用Access所提供的预定义计算或自定义的计算。使用所谓“总计”的预定义计算,可计算出记录组或全部记录的下列量值:总和、平均值、数量、最小值、最大值、标准偏差或方差可以对每个字段选择要进行的总计计算。 在分组和计算查询时,常常会用到统计函数。常用统计函数如表5.14所示。 表5.14 常用统计函数 函数 含义 功能 Sum(字符表达式) 求和 字符表达式可以是一个字段名,也可以是含字段名的 表达式,但所含字段必须是数值类型的字段 Avg(字符表达式) 求平均 同上 Count(字符表达式) 计(个)数 字符表达式可以是一个字段名,也可以是含字段名的 表达式,还可以是“*”星号通配符,Count 会计算 出包括包含 Null 字段在内的所有记录的数目 Max(字符表达式) 求最大 字符表达式可以是一个字段名,也可以是含字段名的 表达式,但所含字段必须是能比较大小的数值型或字 符型字段 Min(字符表达式) 求最小 同上 考点6 总计查询建立步骤 (l)在“设计”视图中,创建选择查询,并添加计算中要使用其中记录的表,然后添加要执行计算的字段,并指定准则。 (2)请单击工具栏上的“合计”按钮。Access将显示设计网格中的“总计”行。 (3)对设计网格中的每个字段,请单击它在“总计”行中的单元格,然后再单击下列合计函数之一:Sum、Avg、Min、Max、Count、StDev或Var。 (4)如果需要,请输入影响计算结果的准则。 (5)如果需要,请排序结果。 (6)单击工具栏中的“视图’,按钮查看结果。 考点7 分组总计查询建立步骤: (1)在“设计”视图中创建选择查询,并添加在计算中要使用其中记录的表,然后添加要执行计算、定义分组和指定准则的字段。 (2)在工具栏上单击“合计”按钮。 Microsoft Access将显示设计网格中的“总计”行。 (3)在要进行分组的字段的“总计”单元格中选定“Group By”。 (4)对要计算的每个字段,请单击它在“总计”行中的单元格,然后单击以下合计函数之一:Sum、Avg、Min、Max、Count、StDev或Var。 (5)如果需要,请输入影响计算结果的准则。 (6)如果需要,请排序结果。 (7)在工具栏上,单击“视图”按钮查看结果。 考点8 添加计算字段 在查询中,当需要统计的数据在表中没有相应的字段,或者用于计算的数据值来源于多个字段时,这时就应该在“设计网格”中添加一个计算字段。计算字段是指根据一个或多个表中的一个或多个字段并使用表达式建立的新字段。 例5.12(2005年9月 选择题第21题) 已经存在表tEmployee,表结构如表5.15所示,表记录如表5.16所示。 表5.15 “tEmployee”表结构 字段名称 字段类型 字段大小 雇员ID 文本 10 姓名 文本 10 性别 文本 1 出生日期 日期/时间 职务 文本 14 简历 备注 联系电话 文本 8 表5.16 “tEmployee”表记录内容 雇员ID 姓名 性别 出生日期 职务 简历 联系电话 1 王宁 女 1960-1-1 经理 1984年大学毕业,曾是35976450 销售员 2 李清 男 1962-7-1 职员 1986年大学毕业,现为35976451 销售员 3 王创 男 1970-1-1 职员 1993年专科毕业,现为35976452 销售员 4 郑炎 女 1978-6-1 职员 1999年大学毕业,现为35976453 销售员 5 魏小红 女 1934-11-1 职员 1956年专科毕业,现为35976454 管理员 若以“tEmployee”表为数据源,计算每个职工的年龄(取整),结果如图5-3,那么正确设计准则是______。 图5-3 查询的结果 A. 年龄:date()-[出生年月]/365 B. 年龄:(date()-[出生年月])/365 C. 年龄:year(date())-year([出生年月]) D. 年龄:year([出生年月])/365 [解析]本题的表没有“年龄字段,因此该字段为新添加的计算字段。计算字段的格式为字段名:表达式。 本题解答的关键在于计算字段中表达式的使用。在Access中,函数Date()返回当前系统日期,函数Year()返回参数的年份。在本题给定的表中,出生日期字段数据类型为日期/时间型,则不能使用表达式[出生日期]/365来进行计算。由此可知本题答案为C选项。 [答案]C 例5.13(2005年9月 选择题第20题) 图5.4显示的是查询设计视图,从设计视图所示的内容中判断此查询将显示______。 图5.4 设计视图 A. 出生日期字段值 B. 所有字段值 C. 除出生日期以外的所有字段值 D.雇员ID字段值 [解析]当字段选择表名称.*时,查询显示的为所有字段值。本题在查询设计网格中的字段选择为tEmployee.*,且没有对其他字段准则进行设置,则查询运行后,显示表tEmployee中的所有字段值。 [答案]B 例5.14(2006年4月 选择题第20题) 图5.5所示的查询返回的记录是______。 图5.5 查询条件 A. 不包含80分和90分 B. 不包含80至90分数段 C. 包含80至90分数段 D. 所有的记录 [解析]条件来自两行,是or(或者)的关系,所以是不包含80的和不包含90分的。注意中文“和”的含义有时为and(并且),有时为or(或者)。 [答案]A 5.5 交叉表查询 考点9 认识交叉表查询 交叉表查询计算数据的总和、平均值、计数或其他类型的总计值,这种数据分为两类 信息:一类在数据表左方的下面,另一类在数据表的顶端。 建立交叉表查询的方法有利用“查询向导”和查询“设计”视图两种方式。 使用“交叉表查询向导”建立交叉表查询,创建交叉表查询的数据源必须来自于一个表或查询。如果数据源来自多个表,可以先建立一个查询,然后再以此查询为数据源。 可以使用窗体中的数据透视表向导,或者通过创建在数据访问页中的数据透视表列表来显示交叉表数据,而无需在数据库中创建单独的查询。使用数据透视表窗体或数据透视表列表,可以根据分析数据的不同方法来更改行标题和列标题。 考点10 创建交叉表查询步骤: 1使用向导创建交叉表查询 (1)在“数据库”窗口中,请单击“对象”下的“查询”,然后单击“数据库”,窗口工具栏上的“新建”按扭。 (2)在“新建查询”对话框中,单击“交叉表查询向导”选项 (3)单击“确定”按钮。 (4)按照向导对话框中的指示进行操作。在最后一个对话框中,可以选择执行查询或在“设计”视图中查看查询的结构。 2不使用向导创建交叉表查询 (1)在“数据库”窗口中,单击“对象”下的“查询”,然后单击“数据库”窗口工具栏上的“新建”按钮。 (2)在“新建查询”对话框中,单击“设计视图”选项,然后单击“确定”按钮。 (3)在“显示表”对话框中,单击列出了所需的表或查询数据的选项卡。 (4)双击要添加到查询的每个对象的名字,然后单击“关闭”按钮。 (5)在设计网格中将字段添加到“字段”行并指定准则。 (6)在下具栏中,单击“查询类型”按钮,然后单击“交叉表查询”选项。 (7)如果要将字段的值按行显示,请单击“交叉表”行,然后单击“行标题”选项。必须在这些字段的“总计”行保留默认的Group By。 (8)如果要将字段的值显示为列标题,请单击“交叉表”行,然后单击“列标题”选项。可以只选择一个字段的“列标题”,且必须为这个字段的“总计”行保留默认的Group By 。 列标题默认为按字母或数字顺序排序。如果希望以其他方式排序,或者要限制显示的列标题,请设置查询的“列标题”属性。 (9)对于要将其值用于交叉表的字段,请单击“交叉表”行,然后单击“值”选项。只有一个字段可以设置为“值”。 例5.15(2004年9月 选择题第22题) 创建交叉表查询,在“交叉表”行上有且只能有一个的是______。 A.行标题和列标题 B.行标题和值 C.行标题、列标题和值 D.列标题和值 [解析]交叉表查询将来源于某个表中的字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,然后在数据表行与列的交叉处显示表中某个字段统计值。交叉表查询就是利用表中的行和列来统计数据的。在创建交叉表查询时,最多可设置3个行标题、1个列标题和值。因此在交叉表设计视图窗口的设计网格中,“交叉表”行上至多可设置3个行标题,有且只能有1个列标题和值。 [答案]D 例5.16(2005年9月 填空题第6题) 创建交叉表查询时,必须对行标题和______进行分组(Group By)操作。 [解析]交叉表查询就是将来源于某个表中的字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,然后在数据表行与列的交叉处显示表中某个字段的各种计算值。因此在进行交叉表查询必须先对行标题或列标题进行分组。 [答案]列标题 或 列 例5.17(2006年9月 选择题第21题) 已经建立了包含“姓名”、“性别”、“系别”、“职称”等字段的“tEmployee”表。若以 此表为数据源创建查询,计算各系不同性别的总人数和各类职称人数,并显示如图5-6所示的结果。 图5-6 查询的结果 正确的设计是________。 A B C D [解析]结果视图中列标题“副教授”、“讲师”、“教授”同属于职称字段,所以列标题是职称,并要分组,排除选项A。同理,行标题应该有系别和性别,排除D选项。总人数只出现了一列,对应不同的值,应属行标题。 [答案]B 5.6 参数查询 参数查询是这样一种查询,它在执行时显示自己的对话框以提示用户输入信息。例如准则,它检索要插入到字段中的记录或值。可以设计此查询来提示更多的内容。例如,可以 设计它来提示输入两个日期,然后Microsoft Access检索在这两个日期之间的所有记录。 将参数查询作为窗体、报表和数据访问页的基础也是很方便的。例如,可以以参数查询为基础来创建月盈利报表。在打印报表时,Access显示对话框来询问所需报表的月份。在输入月份后,Access便打印相应的报表。 考点11 建立参数查询步骤: 参数查询可以显示一个或多个提示参数值(准则)的预定义对话框。 (1)创建选择查询或者是交叉表查询。 (2)在查询“设计”视图中,将字段列表中的字段拖曳到查询设计网格。 (3)在要作为参数使用的每一字段下的“准则”单元格中,在方括号内键入相应的提示。此查询运行时,Access将显示该提示。尽管提示的文本可以包含字段名,但是必须和字段名不同。 (4)如果要查看结果,请在工具栏上单击“视图”按钮,然后键入一个参数值。如果要回到查询“设计”视图,请在工具栏上再次单击“视图”按钮。 5.7 操作查询 考点12 操作查询 操作查询可以更改记录,分为生成表查询、删除查询、更新查询和追加查询。不同的操作查询设计网格显示也不同。 生成表查询是根据一个或者多个表生成一个新表。选择生成表查询时,系统会提示生成表的名称,查询设计视图标题会“生成查询”的文字提示。如图5-7所示。 图5-7生成表查询对话框 追加表查询从一个或多个表将一组记录追加到一个或多个表的尾部。设计视图网格如图5-8所示运行警告如图5-9所示。 图5-8 追加查询的设计视图 图5-9 运行追加查询时的警告 更新查询对一个或多个表中的一组记录作全局的更改。设计视图网格如图5-10所示。 图5-10 更新查询的设计视图,多了“更新到”行 删除查询从一个或多个表中删除一组记录。设计视图网格如图5-11所示。 图5-11 删除查询的设计视图,多了“删除行” 考点13 生成表查询 生成表查询根据一个或多个表中的全部或部分数据新建表。生成表查询可应用在以下方面: (1)创建用于导出到其他Access数据库的表。 (2)创建从特定时间点显示数据的数据访问页 (3)创建表的备份副本。 (4)创建包含旧记录的历史表。 (5)提高基于表查询或SQL语句的窗体、报表和数据访问页的性能。 考点14 删除查询 从一个或多个表中删除一组记录。例如,可以使用删除查询来删除不连续或没有订单的产品,使用删除查询,将删除整个记录,而不只是记录中所选择的字段。 考点15 更新查询 对一个或多个表中的一组记录作全局的更改。使用更新查询,可以更改已存在表中的数据。 考点16 追加查询 从一个或多个表将一组记录追加到一个或多个表的尾部。例如,假设获得了某些新客户和包含这些客户信息表的数据库。为了避免键入所有这些内容,最好将它追加到“客户”表。在以下方面追加查询也十分有用。 (1)基于准则追加字段。 (2)当表中的某些字段在其他表中不存在时才追加记录。 例5.18(2005年4月 选择题第18题) 将表A的记录复制到表B中,且不删除表B听记录,可以使用的查询是______。 A.删除查询 B.生成表查询 C.追加查询 D.交叉表查询 [解析]参照本章操作查询的描述。 [答案]C 例5.19(2005年4月 选择题第20题) 图5-12显示的是查询设计视图的设计网格部分,从图5-12所示的内容中,可以判断出要创建的查询是______。 图5-12 查询设计网格 A.删除查询 B.追加查询 C.生成表查询 D更新查询 [解析]既可从标题看出,亦可从“追加到”行看出。 [答案]B 例5.20(2005年9月 选择题第19题) 使用已建立的“tEmployee”表建立查询。图5-13显示的是查询设计视图的“设计网格”部分,从此部分所示的内容中可以判断出要创建的查询是______。 图5-13 查询设计网格 A.删除查询 B.生成表查询 C.选择查询 D更新查询 [解析]因为此查询设计视图网格部分存在“更新到:”行,因此可以判断该查询是一个更新查询。 [答案], 例5.21(2005年9月 选择题第26题) 下列不属于操作查询的是______。 A.参数查询 B.生成表查询 C.更新查询 D.删除查询 [解析]操作查询包括:生成表查询、删除查询、更新查询、追加查询,因此答案为A [答案]A 5.8 SQL查询 考点17 SQL查询 SQL查询就是使用SQL语句创造的查询。在Access中,所有的查询都是由SQL语句实现的,因此可以认为所有的Access查询都是一个SQL查询。 在查询设计视图中,右键单击查询设计视图的标题栏处,选择“SQL视图”命令,可以将视图转换到SQL视图,此时可以在SQL视图的命令编辑窗中中查看和编辑SQL命令。 SQL查询的可以分为联合查询、传递查询、数据定义查询和子查询。 联合查询将来自一个或多个表查询的字段(列)组合为查询结果中一个字段或列。联合查询由SQL SELECT语句组成。 传递查询使用服务器能接受的命令,直接将命令发送到ODBC数据库,可以使用传递查询来检索记录或更改数据。传递查询也由SQL SELECT语句组成。 数据定义查询可以创建、删除、更改表或创建数据库中的索引。每个数据定义查询只能由一个数据定义语句组成。Access中的SQL语句数据定义语句有: (1)CREATE TABLE创建表。 (2)ALTER TABLE在已有表中添加新字段或约束。 (3)DROP从数据库中删除表,或者从字段或字段中删除索引。 (4)CREATE INDEX为字段或字段组创建索引。 子查询包含另一个选择查询或操作查询中的SQL SELECT语句。可以在查询设计网格的“字段”行输入这些语句来定义新字段,或在“准则”行来定义字段的准则。以下情况可以使用子查 询: (1)测试子查询的某些结果是否存在(使用EXISTS或NOT EXISTS保留字)。 (2)在主查询中查询任何等于、大于或小于由子查询返回的值(使用ANY、IN 或ALL保留字)。 (3)在子查询中创建子查询(嵌套子查询)。 例5.22(2006年4月 选择题第18题) 图5-14是使用查询设计器完成的查询,与该查询等价的SQL语句是______。 图5-14 查询设计网格 A.select学号,数学from sc where数学>(select avg(数学) from sc) B.select学号where数学>(select avg(数学) from sc) C.select 数学from sc where数学( select avg (数学)from sc ) D.select 数学>(select avg (数学)from sc) [解析]从题面的查询设计视图可知,查询显示的字段内容是学号和数学。select语句的格式为select字段名称列表from表名称列表,在本题选项中,只有A选项的select语句能同时查询出学号和数字字段。 答案;A 例5.23(2006年9月 选择题第15题) 在SQL 的SELECT 语句中,用于实现选择运算的是________。 A)FOR B)WHILE C)IF D)WHERE [解析] select语句对记录的选择操作,通过WHERE子句;而传统的命令List和Browse可通过FOR子句或WHILE子句。 [答案]D 5.9 操作已创建的查询 考点18 操作已创建的查询 查询建立后,根据实际需要,可以在查询“设计”视图中编辑已经建立的查询。可以在查询的“设计”窗口中为查询添加、删除、移动字段、更改字段名称,也可以编辑查询的数据源和修改查询设计窗格中列的宽度。为了使查询运行后能有序地显示数据,可以在查询“设计网格” 中字段的“排序”行对查询进行排序设置。查询和高级筛选/排序的一些排序准则相同: (1)排队序次序同查询一块保存。 (2)在Access中,可以对多达255个字符的一个或多个字段排序。 (3)排序次序取决于创建数据库时“选项”对话框中的语言设置。 (4)如果查询或筛选的设计网格包含了字段列表中的星号、则不能在设计网格中指定排序次序,除非在设计网格中也添加了要排序的字段。 (5)使用升序排序时期和时间,是指由较前的时间到较后的时间;使用降序排序时,是指由较后的时间到较前的时间。 (6)在“文本”字段中保存的数字将作为字符串而不是数值来排序。 (7)在以升序来排序字段时,任何含有空字段(包含Null值)的记录将列在列表中的第一条。如果字段中同时包含Null值和空字符串,包含Null值的字段将在第一条显示,紧接着是空字符串。 (8)OLE对象的字段为不能排序数据类型。 考点19 编辑查询中的字段 1添加字段 在查询中,可以只添加要查看其数据、对其设置准则、分组、更新或排序的字段。 (l)在“设计”视图中打开查询,或打开窗体或数据表,并显示“高级筛选,排序”窗口中。 (2)在查询中,对于包含要添加的字段的表或查询,请确保其字段列表显示在窗口的顶部如果需要的字段列表不在查询中,可以添加一个表或查询。 (3)从字段列表中选定一个或多个字段,并将其拖曳到网格的列中。 2删除字段 (1)在“设计”视图中打开查询,或打开窗体或数据表并显示“高级筛选,排序”窗口。 (2)单击列选定器选定相应的字段,然后按[Del]键。 将一个字段从设计网格中删除后,只是将其从查询或筛选的设计中删除,并没有从基础窗体中删除字段及其数据;于筛选的情况,也不是从筛选结果中删除字段。 3移动字段 (l)在查询“设计”视图中打开查询,或打开窗体或数据表并显示“高级筛选,排序”窗口。 (2)选定要移动的列。可以单击列选定器来选择一列,也可以拖过相应的列选定器来选定相邻的数列。 (3)再次单击选定字段中任何一个选定器,然后将字段拖曳到新位置移走的字段及其右边的字段将一起向右移动。 考点20 编辑查询中的数据源 1. 添加表或查询 (1)在查询“设计”视图中打开查询 (2)在工具栏上单击“显示表”按钮。 (3)在“显示表”对话框中,单击包含要对其数据进行操作的对象的选项卡。如果需要的表在其他数据库或应用程序中,请先将表链接到活动的数据库。 (4)单击要添加到查询的对象名。如果要同时选定多个对象,请在单击每个对象名时按住Ctrl键。如果要选定一块对象,请先单击此块的第一个对象名,按住Shift键,然后再单击最后一个对象名。 (5)单击“添加”按钮,然后单击“关闭”按钮。从“数据库”窗口中将表或查询名拖曳到查询“设 计”视图的上部,也可以将表或查询添加到查询中。如果查询中有多个表或查询,需要将其联接在一起。 2.删除表或查询 (l)在查询“设计”视图中打开查询。 (2)在查询“设计”视图的上部,单击要删除的表或查询的字段列表,从而选定表或查询,然后按Del键。 从字段列表中拖曳到设计网格的字段也将从查询中删除,但是表或查询并不会从数据库中删除。 考点21 调整查询的列宽 (l)在查询“设计”视图中,将指针移到要更改列的列选定器的右边框,直到指针变为双向箭头。 (2)将边框向左拖曳使列变窄,或向右拖曳使列变宽(或双击鼠标将其调整为设计网格中可见输入项的最大宽度) 如果一次要调整几列的列宽,请拖过这几列的列选定器来选定这些列,然后再进行上述过程。在查询“设计”视图或“高级筛选,排序”窗口中调整列宽,并不影响在查询或筛选数据表中的列宽。 考点22 排序查询的结果 (1)对表、查询或窗体,必须在“设计”视图中打开查询。 (2)在对多个字段排序时,首先在设计网格上安排要执行排序时的字段顺序。 Access首先排序最左边的字段,然后排序右边的下一个字段,以此类推。 (3)在要排序的每个字段的“排序”单元格中,单击所需的选项。 例5.24(2004年9月 选择题第15题) 在查询中,默认的字段显示顺序是______。 A.在表的“数据表视图” B.添加时的顺序 C.按照字母顺序 D.按照文字笔画顺序 [解析]在查询中,默认的字段显示顺序是添加时的顺序。 [答案]B 5.10 同步练习 一、选择题 1.以下说法正确的是______。 A.查询和筛选都是查找满足条件的记录,它们之间没有区别 B.可以通过筛选和查询生成新表 C.可以通过筛选和查询更改表的记录内容 D.可以使用查询更改表的内容,而筛选不能 2.查询的数据源为______。 A.表和视图 B.数据库 C.视图、表、查询 D.表和查询 3.以下关于查询的叙述正确的是______。 A.操作查询有三种类型:SQL查询、删除查询、更新查询 B.Access中查询为单独文件存在 C.查询不能对多表操作 D.利用查询可以建立计算字段,利用计算字段保存计算的结果 4.以下关于Access查询,叙述错误的是______。 A.在Access中,有选择查询、交叉表查询、操作查询、SQL查询、参数查询 B.操作查询是Access查询的一种类型,操作查询又可以分为选择查询、更新查询、删除查询和追加查询 C.通过查询可以修改表的记录内容 D.查询是对数据表中的数据进行查找,同时产生一个类似于表的结果 第5题-第7题基于表tNom,表结构和表记录内容如表5.17和表5.18所示。 表5.17 表结构 字段名称 字段类型 字段大小 产品代码 文本 6 单位 文本 2 规格 文本 15 出厂价 数字 最高储备 数字 最低储备 数字 备注 文本 255 表5.18 表内容 产品代码 单位 规格 出厂价 最高储备 最低储备 备注 101001 只 220V-15W 8 6000 600 101002 只 220V-45W 1 60000 600 101003 只 220V-60W 1.2 60000 600 101004 只 220V-100W 1.5 40000 400 101005 只 220V-150W 1.8 40000 400 201001 只 220V-4W 6 10000 100 201002 只 220V-8W 8 10000 100 201003 只 220V-16W 12 10000 100 301001 只 220V-8W 6 10000 100 301002 只 220V-20W 7 10000 100 301003 只 220V-30W 8 10000 100 301004 只 220V-40W 10 10000 100 5.若在表tNom中查询规格字段值中包括20W文字的记录,可以在查询设计视图的准则 行中输入______。 A."*20W" B.Like "*20W" C.Like "?20W?" D.Like *20W* 6.若在表tNom中查询出厂价大于8的记录,可以在查询设计视图的准则行中输入______。 A. <8 B.>8 C."<8" D.">8" 7.若在表tNom中查询最高储备介于10000到20000的记录,可以在查询设计视图的准则 行中输入______。 A. Between 10000 To 20000 B. Between 10000 And 20000 C. in(10000-20000) D. >10000 And <20000 8.若数据库中存在表“学生成绩”,要查询该表中所有小于60分和大于85分的记录,应该在 成绩字段的有效性规则中输入______。 A. Between 60 And 85 B. Between 60 Or 85 C.>85 And <60 D. <60 Or >85 9.教师表的结构如表5.19所示。 表5.19 教师表结构 字段名 字段类型 宽度 编号 文本 6 姓名 文本 50 性别 文本 1 年龄 数字 3 建立一个查询运行后,查询结果显示所有姓“王”的教师,如图5-14所示,那么正确的查 询设计是______。 图5-14 查询所有姓“王”的教师的输出结果 A. B. C. D. 10.存在教师表,该表中有姓名、性别等字段。______设计的查询不能使查询结果如图5-15 所示。 图5-15 指定年龄条件的查询 A. B. C. D. 11.下面关于交叉表查询说法不正确的是______。 A.如果要在启动查询后中止运行,可按CTRL+BREAK键 B.如果通过向导建立基于多个表中字段的交叉表查询,则需要创建含有所有需要字段的查询或者表,然后利用新创建的查询成者表生成交叉表查询 C.可以通过交叉表向导,同时在多表中选择字段内容,生成交叉表查询 D.在交叉表创建向导中,最多可选择3个字段作为行标题 12.要求查询运行后,通过输入编号中的任意字符来显示记录的查询设计是______。 A. B. C. D. 13.如果运行某参数查询后,提示信息先后为“请输入低分:”和“请输入高分:”,并根据输入的分数来查询数学成绩在低分和高分的分数区域内(包括“低分”和“高分”)的所有学生记录,正确的查询设计视图是______。 A. B. C. D. 14.图5-16显示的是查询设计视图的设计网格部分,从图5-16所示的内容中,可以判断出要创建的查询是______。 图5-16 查询设计器 A.删除查询 B.追加查询 C.更新查询 D.交叉表查询 15.图5-17显示的是查询设计视图的设计网格部分,从图5-17所示的内容中,可以判断出要创建的查询的功能的是______。 图5-17 查询设计视图的设计网格 A.删除成绩表中所有数学或计算机成绩小于60分的记录 B.删除成绩表中所有数学和计算机成绩小于60分的记录 C.显示数学或计算机成绩小于60分的所有记录 D.显示成绩表中所有数学和计算机成绩小于60分的记录 16.在Access中,SQL查询就是使用SQL语句创造的查询。SQL查询包括______。 A.联合查询、子查询、交叉表查询、传递查询 B.联合查询、传递查询、数据定义查询、子查询 C.选择查询、交叉表查询、操作查询、按准则查询 D.传递查询、子查询、嵌套查询、数据定义查询 17.数据库中存在学生表,要在查询结果中根据年龄降序显示所有学生记录信息,不正确的查询设计视图是______。 A. B. C. D. 18.以下关于查询设计,正确的说法是______。 A.查询的数据源可以是数据表或者其他查询、视图 B.在查询时,如果设置了排序,则排序单独存在于数据库中 C.在查询中,设置某字段排序,该字段值中为汉字时,根据汉字拼音进排序 D.在查询中,默认的字段显示顺序是查询设计时添加字段的顺序 二、填空题 1.______查询是显示来源于表中某个字段的汇总值(如求和、平均值、记数等),并将它们分组,一组列在数据表的左侧,一组列在数据表的上部。 2.______是一种利用对话框提示用户输入参数的查询过程,数据库系统根据用户输入的参数检索符合条件的记录信息,并根据指定的形式将结果显示出来。 3.操作查询共有四种类型,分别是______、更新查询、追加查询和生成表查询。 4.Access中,查询分为选择查询、______、参数查询、操作查询和______。 5.在表TEXT的最低储备字段(数字数据类型)中,要查询最低储备字段低于100的记录,应该在查询设计图的准则中输入______。 6.查询中可以凭据一定的条件限制从表或者查询中提取满足条件的结果,这个条件就是查询是______。 7.若要查找20天之前参加工作的职工记录,查询准则为______。 8.Access______查询可直接将命令发送到ODBC数据库服务器。 9.在Access中,SQL查询的______查询可以为一个存在的表添加新的字段。 10.在查询时,OLE字段______进行排序。 5(11 解析与答案 一、选择题答案 1([解析] 筛选仅临时作用于显示的视图,只是一个方便显示的过滤器,可应用或取消筛选,不能修改原始表或生成新表。而查询可以有输出,也可以用更新查询修改原始表。 [答案] D 2([解析] 参照本章考点1的相关说明。 [答案] D 3([解析] 参照本章考点2中的相关说明,查询以.qpr文件形式存在,保存的是相应的SQL语句。查询能保存计算的公式,使用操作查询才能有效地保存计算的结果。 [答案] B 4([解析] 参考本章考点2的相应说明可知。 [答案] B 5([解析] 参照本章考点3的相关说明,标准表达式是Like *20W*,可以只输入Like *20W*, 回车后系统系统自动加引号,变成Like *20W*。 [答案] D 6([解析] 请参照本章考点3的相应说明。 [答案] B 7([解析] 请参考本章考点3的相应说明。 [答案] B 8([解析] 参照本章考点3中的相关说明。 [答案] D 9([解析] 参照本章考点3中的相关说明。 [答案] C 10([解析] 条件同一行间的关系是AND,不同行间的关系是OR。 [答案] B 11([解析] 参照本章考点9中的相关说明。 [答案] C 12([解析] 参照本章考点3和11中的相关说明,方括号内的内容是参数查询的提示信息。 [任意编号]非固定常量,是一临时变量,要形成包括通配符的字符串,前后要用字符串连接 运算“+”,即“*”+[任意编号]+“*”。 [答案] D 13([解析]结参照本章考点3和11中的相关说明。此题是低分到高分的一个取值范围,使 用Between,参数查询的方括号外不用引号。 [答案] C 14([解析]参看考点12。 [答案] A 15([解析] 参看考点12。 [答案] A 16([解析] 参看考点17。 [答案] B 17([解析] 参照本章考点3中的相关说明。“*”代表所有字段是不能排序的,注意B的用 法是正确的。 [答案] A 二、填空题答案 1([解析] 参照本章考点2和9中的相关说明。 [答案] 交叉表查询 2([解析] 参照本章考点2和11中的相关说明。 [答案] 参数查询 3([解析] 参照本章考点2、12和14中的相关说明。 [答案] 删除查询 4([解析] 参照本章考点2中的相关说明。 [答案] 交叉表查询、SQL查询 5([解析] 参照本章考点3中的相关说明。 [答案] <100。 6([解析] 参照本章考点3中的相关说明。 [答案]准则 7([解析] 参照本章考点3中的相关说明。 [答案] date()-20 8([解析] 传递查询:该查询向ODBC(开放式数据库联接)数据服务器发送命令,查询服务器上表中数据。 [答案] 传递 9([解析] 数据定义查询:该查询用来创建、删除或更改表,还可以创建索引。 [答案] 数据定义 10([解析] 参照本章考点18中的相关说明。 [答案] 不能 第6章 窗体 本章主要考察的内容是: 1(窗体的创建: 1)使用向导创建窗体。 ( (2)使用设计器创建窗体:包括控件的含义和种类,在窗体中添加和修改控件,设置控件的常见属性。 2(窗体的分类: (1)纵栏式窗体; (2)表格式窗体 (3)数据表窗体 (4)主/子窗体 (5)图表窗体 (6)数据透视表窗体 历年的全国计算机等级考试的笔试中,窗体部分的分值约占6-12%,属于重点的考察内容。本章历年的考题分布情况如表6-1所示: 表6-1 窗体部分历年考题分数分布表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 窗体的组成和结构 2 2 窗体的类型 2 2 窗体视图 4 4 窗体中的控件 2 2 2 6 控件的使用 2 2 4 窗体和控件的属性 4 8 2 2 16 窗体和控件的事件 2 2 2 6 设置窗体的“格式”属性 2 2 4 合计 6 8 12 8 10 44 由表6-1可知,在历年的笔试考试中,考试的关键点主要是窗体和控件常见的属性以及窗体视图, 6.1 窗体初步 考点1:窗体基本知识 窗体是Access的一种数据库对象,可以由多个部分组成,每个部分称为一个“节”。窗体中可以有窗体页眉、页面页眉、主题、页面页脚及窗体页脚等部分。 窗体主体:通常用于显示记录数据,可以根据屏幕和页面大小显示一条或多条记录。 窗体页眉:位于窗体的顶部,用于显示窗体的标题和使用说明。在“窗体”视图中,窗体页眉出现在屏幕的顶部,而在打印的窗体中,窗体页眉出现在第一页的顶部。 窗体页脚:位于窗体底部,一般用于显示对所有记录都要显示的内容,其中包括命令按钮或窗体的使用说明等。 页面页眉:用于在每页的顶部显示诸如标题或者列标头的信息,但页面页眉只出现在打印的窗体中。 页面页脚:用于在每张打印页的底部显示诸如日期或页号等信息。 在窗体中可以添加控件,用于执行操作,或者在字段中输入、显示、编辑数据。既可以利用控件在窗体的信息和数据源之间建立链接,也可以根据具体需要完成不同的功能,窗体中可以添加的控件有文本框、标签、复选框、命令按钮、组合框、图像等。 而窗体的记录源可以是表、查询、SQL语句。但窗体和数据表不同,窗体本身并不存储数据。窗体中的信息主要分为两类:一类是设计者在设计窗体时附加的一些提示信息;一类是外理表或查询的记录。 例6. 1 可以作为窗体记录源的是 。(2004年9月 选择题第21题) A)表 B)查询 C)Select 语句 D)表、查询或Select语句 [解析] 可以作为窗体记录源的是表、查询或SQL的Select语句。 [答案] D 例6. 2 在窗体中,用来设置窗体标题的区域一般是 。 A)窗体页眉 B)主体节 C)页面页眉 D)窗体页脚 [解析] 窗体页眉位于窗体的顶部,它显示的信息对每个记录都是一样的。用于显示窗体的标题和使用说明 [答案] A 考点2:窗体的分类及视图 1(窗体的分类 Access共提供了6种类型的窗体。 (1)纵栏式窗体 纵栏式窗体通常用于输入数据,在窗体界面中每次只显示表或查询中的一条记录,可以占一个或多个屏幕页,显示记录时按列分隔,每列的左边显示字段名,右边显示字段内容。 (2)表格式窗体 表格式窗体是在一个窗体中显示多条记录,记录中的字段名横向排列,都放在窗体顶部,而记录纵向排列,可以通过滚动条来查看和维护其他记录。 (3)数据表窗体 数据表窗体表面看起来与数据表和界面基本相同,其主要作用是作为一个窗体的子窗体。 (4)主/子窗体 窗体中可以包含窗体,被包含的窗体称为子窗体,包含子窗体的基本窗体称为主窗体。在这类窗体中,主窗体和子窗体彼此链接,子窗体只显示与主窗体当前记录相关的记录。 主窗体和子窗体通常用于显示多个表或查询的数据,这些表或查询中的数据具有一对多的关系,但主窗体只能显示为纵栏式的窗体,而子窗体既可以显示为数据表窗体,也可以显示为表格式窗体。 (5)图表窗体 图表窗体可以利用Microsoft Graph的图表方式来显示数据,既可以单独使用图表窗体,也可以将它嵌入到其他窗体中作为子窗体。而图表窗体的数据源可以为数据表或者查询。 (6)数据透视表窗体 以指定的数据表或者查询为数据源,生成一个Excel.的 分析表 客服数据分析表室内设计客户需求分析表借款分析表格员工占比分析表工作年限数据分析表 建立的窗体。 例6. 3 在表格式窗体、纵栏式窗体和数据表窗体中,将窗体最大化后显示记录最多的窗体是_______。 [解析] 在Access中,纵栏式窗体在同一时刻一般只能显示一条记录的数据;表格式窗体可以在一个窗体中显示多条记录;而数据表窗体的记录都是按照行的形式显示,和其他视图比较起来,它显示的记录最多。 [答案] 数据表窗体 例6. 4 在创建主/子窗体之前,必须设置_________之间的关系(2006年4月 填空题第7题) [解析] 主窗体和子窗体通常用于显示多个表或查询的数据,这些表或查询中的数据具有一对多的关系。 [答案] 表 2(窗体的视图 在Access中,窗体有“设计”视图、“窗体”视图和“数据表”视图。 “设计”视图主要用于创建和修改窗体,而“窗体”视图和“数据表”视图是用于查看记录的窗体。但“数据表”视图是按照行和列的格式查看记录,一次可以查看多条记录,该视图中可以编辑、添加、修改、查找或者删除数据;而“窗体”视图通常一次只能查看一条记录。 例6. 5 下列不属于Access窗体的视图是_______。(2005年4月 选择题第21题) A)设计视图 B)窗体视图 C)版面视图 D)数据表视图 [解析] Access共提供了3种类型的窗体视图,分别是:设计视图、窗体视图和数据表视图 [答案] C 例6. 6 在设计窗体时使用标签控件创建的是单独标签,它在窗体的 视图中不能显示。(2005年4月 填空题第7题) [解析] “数据表”视图是按照行和列的格式查看记录,一次可以查看多条记录,如下图所示。 [答案] 数据表 6.2 创建窗体 考点3:使用“自动创建窗体” “自动创建窗体”创建的窗体显示的是基础表或查询中的所有字段和记录,如果选定的记录源有相关的表或查询,窗体还将包含来自这些记录源的所有字段和记录。自动创建窗体常见的操作步骤如下: (1)在“数据库”窗口中,单击“对象”下的“窗体”按钮。 (2)单击“数据库”窗口工具栏上的“新建”按钮。 (3)在打开的“新建窗体”对话框中,单击下列向导之一: ? 自动创建窗体:纵栏式(每个记录都显示在一个独立的行上,并且左边带有一个标签) ? 自动创建窗体:表格式(每个记录的所有字段显示在一个独立的行上,标签显 示在窗体的顶端) ? 自动创建窗体:数据表(每个记录显示为一行,每个字段显示为一列,字段的 名称显示在每一列的顶端) (4)在该对话框的下方,选择作为该窗体数据源的表或查询后,单击“确定”。 考点4:使用“窗体向导” 使用“窗体向导”来创建窗体,用户可以对各个字段进行选择,具体的操作步骤如下: (1)在“数据库”窗口中,单击“对象”下的“窗体”按钮。 (2)单击“数据库”窗口工具栏上的“新建”按钮。 (3)在打开的“新建窗体”对话框中,单击“窗体向导”。 (4)在该对话框的下方,选择作为该窗体数据源的表或查询后,单击“确定”。 (5)在打开的“窗体向导”对话框中,根据向导中的提示或要求进行相应的操作即可。 考点5:使用向导创建“数据透视表” 数据透视表是一种交互式的表,它可以实现用户选定的计算,所进行的计算与数据在数据透视表中的排序有关,一般情况下,使用“数据透视表向导”创建数据透视表窗体,具体操作步骤如下: (1)在“数据库”窗口中,单击“对象”下的“窗体”按钮。 (2)单击“数据库”窗口工具栏上的“新建”按钮。 (3)在打开的“新建窗体”对话框中,单击“自动窗体:数据透视图”。 (4)在该对话框的下方,选择作为该窗体数据源的表或查询后,单击“确定”。 (5)在打开的“数据透视图”窗体的“设计”视图中分别选择相应的字段拖到“数据字段”、“分类字段”和“系列字段”即可。 考点6:使用图表向导 使用图表窗体能够更直观地显示表或查询中的数据,建立图表窗体的具体操作步骤如下: (1)在“数据库”窗口中,单击“对象”下的“窗体”按钮。 (2)单击“数据库”窗口工具栏上的“新建”按钮。 (3)在打开的“新建窗体”对话框中,单击“图表向导”。 (4)在该对话框的下方,选择作为该窗体数据源的表或查询后,单击“确定”。 (5)选择用于图表的字段,单击“下一步”。 (6)选择图表的类型,单击“下一步”。 (7)将相应的字段拖放到图表中相应的位置,单击“下一步”。 (8)指定图表的标题,单击“完成”。 考点7:使用设计器创建窗体 使用设计器创建窗体的具体操作步骤如下: (1)在“数据库”窗口中,单击“对象”下的“窗体”按钮。 (2)单击“数据库”窗口工具栏上的“新建”按钮。 (3)在打开的“新建窗体”对话框中,单击“设计视图”。 (4)在该对话框的下方,选择作为该窗体数据源的表或查询后,单击“确定”。 (5)将数据源中的字段拖放到新建的窗体的适当位置后即可。 6.3 自定义窗体 考点8:工具箱的使用 Access提供了一个可视化的窗体设计工具— 窗体设计工具箱。利用窗体设计工具箱,用户可以创建自定义窗体。窗体设计工具箱有强大的功能,它提供了一些常用控件,能够结合控件和对象构造一个窗体设计的可视化模型,如图6-1所示。 图6-1 工具箱 在窗体“设计”视图下,单击“窗体设计”工具栏上的工具箱按钮或者选择“视图”菜单下“工具栏”下的“工具箱”命令按钮即可打开工具箱。关闭“工具箱”,单击“工具箱”中的关闭按钮。 表6-2 工具箱的功能按钮名称及功能 按 钮 名 称 功 能 选择对象 用于选取控件、节或窗体。单击该窗体可以释放以前锁定的工具栏按钮 用于打开或关闭控件“向导”。要使用控件向导创建列表框、组合框、选控件向导 项组、命令按钮、图表、子窗体或子报表时,必须单击“控件向导”按钮 标签 用于插入显示说明文本的控件,如,窗体上的标题或指示文字 用于显示、输入或编辑窗体的基础记录源数据,显示计算结果或接受用户文本框 输入的数据 选项组 与复选框、选项按钮或切换按钮搭配使用,可以显示一组可选值 切换按钮 插入可切换状态的开关按钮 在一组(两个或两个以上)有互斥性(即只能选中其一)的选项的每项旁选项按钮 插入选项按钮 在要选中或清除的独立选项旁插入复选框;或在一组在一组没有互斥性复选框 (即可以选择多个)的选项的每一项旁插入一个复选框 该控件组合了列表框和文本框的特性,即可以在文本框中键入文字或在列组合框 表框中选择输入项,然后将值填加到基础字段中 显示可滚动的数值列表。在“窗体”视图中,可以从列表中选择值输入到列表框 新记录中,或更改现有记录中的值 命令按钮 用于完成各种操作,如查找记录、删除记录、打印等等 图像 用于在窗体中插入或显示静态图片或图形 用于在窗体中显示非结合OLE对象,例如Excel电子表格。当在记录间移非绑定对象框 动时,该对象将保持不变 用于在窗体或报表上显示OLE对象,例如,一系列的图片。该控件针对的绑定对象框 是保存在窗体或报表基础记录源字段中的对象。当在记录间移动时,不同 的对象将显示在窗体或报表上 分页符 用于在窗体上开始一个新的屏幕,或在打印窗体上开始一个新页 用于创建一个多页的选项卡窗体或选项卡对话框。可以在选项卡控件上复选项卡控件 制或添加其他控件 子窗体/子报表 用于显示来自多个表的数据 直线 用于突出相关的或特别重要的信息 矩形 显示图形效果,例如在窗体中将一组相关的控件组织在一起 其他控件 单击将弹出一个列表,可以从中选择所需要的控件源加到当前窗体内 考点9:窗体的控件 控件是窗体上用于显示数据、执行操作、装饰窗体的对象。在窗体中添加的每一个对 象都是控件。Access包含的控件有:文本框、标签、选项组、复选框、切换按钮、组合框、 列表框、命令按钮、图像按钮、绑定对象框、非绑定对象框、子窗体/子报表、分页符、线条和矩形等,各自控件都可以在窗体“设计”视图窗口中的工具箱中看到。 控件的类型按照使用来源和属性的不同,可分为“绑定控件”、“非绑定控件”和“计算控件”3种类型。 绑定控件:也叫结合控件,主要用于显示、输入、更新数据库中的字段。 非绑定控件:也叫非结合控件,没有数据来源,主要用于显示提示信息,以及线条、矩形和图像等。 计算控件:以表达式作为数据来源,表达式可以利用窗体或报表所引用的表或查询字段中的数据,也可以是窗体或报表上的其他控件中的数据。 1(标签控件 标签控件主要用于窗体或报表上显示说明性文本。例如标题或简短的提示。标签并不显示字段或表达式的数值,它总是非绑定控件,没有数据来源。单独的标签在数据表视图中并不显示。 2(文本框控件 文本框用来输入或者编辑数据。它是一种交互式控件,可以有数据来源,用于显示、输入或编辑窗体的基础记录源数据,显示计算结果或接受用户输入的数据。 3(复选框、切换按钮和选项按钮控件 窗体上可以使用复选框、切换按钮和选项按钮作为单独控件来显示基础表、查询或SQL语句中“是”或“否”值,选中设置为“是”,按下按钮其值为“否”。 4(命令按钮控件 命令按钮执行某项或某些指定的操作。 5(列表框和组合框控件 当需要从列表中选择一个值时,可以使用列表框和组合框。列表框可以显示一列或多列数据,而从列表中选择的值可以来自表、查询或某固定内容的数据。 在列表框中只能选择数据,不能进行编辑,即不能由用户自己输入新值。组合框由多行数据组成,使用组合框时,既可以输入文本,也可以进行选择,这正是组合框与列表框的区别。 6(选项卡与图像控件 当窗体中的内容较多且无法在一页全部显示,可以使用选项卡进行分页。在窗体中使用图像对象可以显示图形。图像控件包括图片、图片类型、超链接地址、可见性、位置大小等属性。 7(选项组控件 选项组用来显示一组限制性的选项值,每次只能选择一个选项。在窗体中,选项组由一个组合框、一组复选框、选项按钮及切换按钮组成。 使用选项组应注意下列事项: (1)选项组的值只能是数字,不能是文本。 (2)如果选项组绑定到某个字段,则只有组框架本身而不是组框架内的复选框、选项 按钮或切换按钮绑定到此字段。在窗体中,可以为每个复选框、选项按钮或切换按钮的“选项值”属性设置相应的数字。 (3)在窗体或报表中,选项组可以设置为表达式,也可以是未绑定的。可以在自定义对话框中使用未绑定选项组来接受用户的输入,然后根据输入的内容来执行相应的操作。 例6. 7 Access窗体中的文本框控件分为_______。(2004年9月 选择题第23题) 计算型和非计算型 B)结合型和非结合型 A) C)控制型和非控制型 D)记录型和非记录型 [解析] 文本框有3种类型:结合型、非结合型和计算型。 [答案] B 例6. 8 既可以直接输入文字,又可以从列表中选择输入项的控件是_______。(2004年9月选择题第16题) A)选项框 B)文本框 C)组合框 D)列表框 [解析] 在本题给定的4上选项中,组合框和列表框都可以直接从列表中选择一个值,但列表框不能输入,组合框可以输入。 [答案] C 例6. 9 结合型文本框可以从表、查询或_____中获得所需的内容。(2006年4月 填空题第6题) [解析] 结合型文本框可以从表、查询或SQL语言中获得所需的内容;非结合型文本框并没有链接到某一字段,一般用来显示提示信息或接受用户输入数据等;在计算型文本框中,可以显示表达式的结构,当结果发生变化时,数值就会被重新计算。 [答案] SQL语句 或SQL命令 考点10:控件的使用 在窗体“设计”视图中,用户可以直接将一个或多个字段拖放到主体节区域中,Access可以自动地为该字段结合适当的控件或结合用户指定的控件。结合适当的控件的操作方法是:单击窗体设计工具栏中的“字段列表”按钮后,就会显示窗体数据源的字段列表,然后从字段列表中拖拽到主体节区域中。创建控件的方式取决于是要创建结合控件、非结合控件还是计算控件。 例6. 10 要改变窗体上文本框控件的数据源,应设置的属性是_____。(2006年4月选择题第23题) A)记录源 B)控件来源 C)筛选查询 D)默认值 [解析] 在文本框控件的属性中,“控件来源”属性告诉系统如何检索或保存在窗体中要显示的数据,如果控件来源中包含一个字段名,那么在控件中显示的就是数据表中该字段值,对窗体中的数据所进行的任何修改都将被写入字段中,即窗体上文本框的“控件来源”属性决定了该控件的数据源。而“记录源”属性是窗体的属性项。 [答案] B 考点11:窗体和控件的属性 Access中,属性用于决定表、查询、字段、窗体及报表的特性。窗体中的每一个控件都具有各自的属性,而窗体本身也有相应的属性。属性决定了控件及窗体的结构和外观,包括它所包含的文本或数据的特性。 窗体和控件的属性对话框一般由“格式”选项卡、“数据”选项卡、“事件”选项卡、“其 他”选项卡和“全部”选项卡五部分组成,其中“全部”选项卡中包含了“格式”、“数据”、“事件”和“其他”中的全部属性项。 在属性表中,单击要设置的属性,在属性框中输入一个设置值或表达式可以设置该属性。如果属性框中显示有箭头,也可以单击该箭头,从列表中选择一个数值。如果属性框的旁边显示“生成器”按钮,单击该按钮可以显示一个生成器或显示一个可以选择生成器的对话框,通过生成器可以设置对话框。 (常用的格式属性 1 格式属性主要是对控件的外观或窗体的显示格式。窗体的常见格式属性有以下几种: (1)标题:属性值为字符串。在窗体视图中,该字符串显示的的内容是窗口的标题栏的标题。 (2)默认视图:属性值有“连续窗体”、“单一窗体”或“数据表”三项,它决定了窗体的显示形式。 (3)滚动条:属性值有“两者均无”、“水平”、“垂直”或“水平或垂直”四项,它决定了窗体显示时是否具有窗体滚动条。 (4)记录选定器:属性值有“是”和“否”两项,它决定了窗体显示时是否具有记录选定器。 (5)浏览按钮:属性值有“是”和“否”两项,它决定了窗体运行时是否具有浏览按钮。 (6)分隔线:属性值有“是”和“否”两项,它决定了窗体显示时是否显示窗体各节间的分隔线。 (7)自动居中:属性值有“是”和“否”两项,它决定窗体显示时是否自动居中于桌面中间。 (8)最大化最小化按钮:其属性决定使用Windows标准的最大化和最小化按钮。 控件的格式属性包括:标题、字体名称、字体大小、字体粗细、前景颜色、背景颜色、特殊效果等。控件的标题的属性值是控件中显示的文字信息。控件中“特殊效果”的属性值用于设定控件中显示的文字信息。 2(常用的数据属性 数据属性决定了一个控件或窗体中的数据来源,以及操作数据的规则。 窗体的数据属性包括记录源、排序依据、允许编辑、输入入口等。 控件的数据属性包括控件来源、输入掩码、有效性文本、默认值、是否有效、是否锁定等。 3(常用的其他属性 其他属性表示了控件的附加特征。窗体的其他属性包括独占方式、弹出方式、循环等。控件的其他属性包括名称、状态栏文字、自动Tab键、控制提示文本等。 例6(11 假设已在Access中建立了包含“书名”、“单价”和“数量”等三个字段的“tOfg”表,以该表为数据源创建的窗体中,有一个计算定购总金额的文本框,其控件来源为________。(2005年9月 选择题第24题) A) [单价]*[数量] B)=[单价]*[数量] C)[图书订单表]~[单价]*[图书订单表]~[数量] D)=[图书订单表]~[单价]*[图书订单表]~[数量] [解析] 控件来源属性可以指定控件中显示的是什么数据,可以对绑定到表中的字段、 查询或者SQL语句的数据进行显示和编辑,也可以显示表达式的结果。本题中计算总金额的文本框控件来源为表达式,根据题面说明,总金额应该单价和数量的乘积。 在计算控件的“控件来源”属性中,以“=”符号开始。由此可知A、C选项不是本题答案。 计算总金额在文本框所引用的“单价”和数量都在当前窗体上,因此B选项中的表达式是正确的,D选项中表达式的引用方式不对。 [答案] B 例6(12 确定一个控件在窗体或报表上的位置的属性是 。(2005年4月 选择题第31题) A)Width 或Height B)Width 和Height C)Top 或Left D)Top 和Left [解析] 在上述的属性中,Width用来设置宽度,Height用来设置高度,Top用来设置上边距,Left用来设置左边距,故确定窗体位置的属性是Top和Left。 [答案] D 例6(13 假设窗体的名称为FrmTest,则把窗体的标题设置为“Access Test”的语句是 。(2005年4月 选择题第32题) A)Me,“Access Test” ,)Me.Caption=“Access Test” C)Me.Text=“Access Test” D)Me.Name=“Access Test” [解析] 在窗体的属性中,Caption用来设置标题。 [答案] B 例6(14 若将窗体的标题设置为“改变文字显示颜色”,应使用的语句是 。(2005年9月 选择题第23题) A)Me,“改变文字显示颜色” ,)Me.Caption=“改变文字显示颜色” C)Me.Text=“改变文字显示颜色” D)Me.Name=“改变文字显示颜色” [解析] 在窗体的属性中,Caption用来设置控件的标题。 [答案] B 例6(15 在“窗体视图”中显示窗体时,窗体中没有记录选定器,应将窗体的“记录选定器”属性值设置为 。(2005年9月 选择题第24题) A)是 B)否 C)有 D)否 [解析] 窗体中的“记录选定器”是决定数据表中的最左端是否有标志块,若有则为“是”,若无则为“否”。 [答案] B 例6(16为窗体或报表上的控件设置属性值的正确宏操作命令是 。(2005年9月 选择题第25题) A)Set B)SetData C)SetWarmings D)SetValue [解析] 常用的宏操作中,打开窗体是OpenForm,打开报表是OpenReport,打开查询是OpenQuery,关闭数据库对象是Close,退出Access是Quit;设置属性值是SetValue;运行指定的SQL语句是RunSQL;刷新控件数据是Requery;指定当前记录是GoToRecord;显示消息框是MsgBox。 [答案] D 例6(17 若要求在文本框中输入文本时达到密码“*”号的显示效果,则应设置的属性是______。(2005年9月 选择题第32题) A)“默认值”属性 B)“标题”属性 C)“密码”属性 D)“输入掩码”属性 [解析] “输入掩码”属性用于设定控件的输入格式,仅对文本型或日期型数据有效。 [答案] D 例6(18 某窗体中有一命令按钮,名称为C1。要求在窗体视图中单击此命令按钮后, 。命令按钮上的文字颜色变为棕色(棕色代码为128),实现该操作的VBA 语句是 (2006年9月填空题第9题) [解析] forecolor用来更改命令控件中的文字颜色。 [答案] C1.forecolor=128 考点12:窗体和控件的使用 事件是指当控件被单击、双击或内容发生变化的动作。例如,单击窗体显示“你好”,双击窗体取消显示等。在Access中,不同的对象可以触发不同的事件。但总体来看,Access中的事件主要有以下几种: (1)键盘事件 键盘事件是操作键盘所引发的事件。键盘事件主要有“键按下”、“键释放”和“击键”等。 (2)鼠标事件 鼠标事件是操作鼠标所引发的事件。鼠标事件有“单击”、“双击”、“鼠标按下”、“鼠标释放”和“鼠标移动”。 (3)对象事件 常用的对象事件有“获得焦点”、“失去焦点”、“更新前”、“更新后”和“更改”等。 (4)窗口事件 窗口事件是指操作窗口时所引发的事件。常用的窗口事件有“打开”、“关闭”和“加载”等。 (5)操作事件 操作事件是指与操作数据有关的事件。常用的操作事件有“删除”、“插入前”、“插入后”、“成为当前”、“不在列表中”、“确认删除前”和“确认删除后”等。 例6(19 窗体上添加有3个命令按钮,分别是Command1、Command2和Command3。编写Command1的单击事件过程,完成的功能为:单击Command1时,按纽Command2可用,按钮Command3不可见。以下正确的是 。(2005年9月 选择题第34题) A)Private Sub Command1_Click() B)Private Sub Command1_Click() Command2.Visible=True Command2.Enabled=True Command3.Visible=False Command3. Enabled =False C)Private Sub Command1_Click() D)Private Sub Command1_Click() Command2. Enabled =True Command2. Visible =True Command3.Visible=False Command3. Enabled =False [解析] Visible是设置可见属性的,而Enabled是设置可用属性的;True 为真值,False为假值。 [答案] C 例6(20 为窗体中的命令按钮设置单击鼠标时发生的动作,应选择设置其属性对话框 的______。(2006年4月 选择题第22题) A)格式选项卡 B)事件选项卡 C)方法选项卡 D)数据选项卡 [解析] 格式选项卡中的属性主要是针对控件的外观而设置的;数据选项卡中的属性决定了一个控件的数据来源以及操作数据的规则;事件选项卡的属性是主要针对键盘和鼠标的各项操作; [答案] B 例6(21 在窗体中添加了一个文本框和一个命令按钮(名称分别为tText 和bCommand),并编写了相应的事件过程。运行此窗体后,在文本框中输入一个字符,则命 。(2006令按钮上的标题变为“计算机等级考试”。以下能实现上述操作的事件过程是年9月 选择题第28题) A) Private Sub bCommand_Click() B)Private Sub tText_Click() Caption,:计算机等级考试: bCommand.Caption,:计算机等级考试: End Sub End Sub C) Private Sub bCommand_Change() D)Private Sub tText_ Change() Caption,:计算机等级考试: bCommand.Caption,:计算机等级考试: End Sub End Sub [解析] Caption是用来设置标题属性。 [答案] B 6.4 美化窗体 考点13:使用自动套用格式 在使用向导创建窗体时,用户可以从系统提供的固定样式中选择窗体格式,这些样式就是窗体的自动套用格式,用户通过选择可以快速设置窗体的字体、颜色和边框等。选取“自动套用格式”的具体操作步骤: (1)在“数据库”窗口中,单击“窗体”对象,选择要套用格式的窗体,单击“设计”按钮。 (2)选择“格式”菜单下“自动套用格式”命令或单击工具栏“自动套用格式”按钮。 (3)在显示的“自动套用格式”对话框的列表框中单击所需要的样式,同时可以在预览框内查看样式效果,而“选项”按钮用来设置“字体”、“颜色”和“边框”。 (4)设置完成后单击“确定”按钮。 考点14:设置窗体的“格式”属性 除了可以利用“自动套用格式”对话框对窗体进行美化外,还可以根据需要对窗体的格式、窗体的显示元素等进行美化设置。具体操作步骤是: (1)在“数据库”窗口中,选择要设置美化的窗体,并单击“设计”按钮。 (2)单击窗体左上角的“窗体选择器”,在打开的“窗口”属性对话框中选择“格式”选项卡,即可进行各种设置。 例6(26 在“窗体视图”显示该窗体时,要求在单击命令按钮后标签上显示的文字颜色变为红色,以下能实现该操作的语句是 。 A)Label.ForeColor=255 B)bChange.ForeColor=255 C)Label.BackColor=255 B)bChange. BackColor=255 [解析] forecolor用来更改标签控件中的文字颜色。 [答案] A 考点15:添加当前日期和时间 将当前日期和时间插入到窗体中的具体操作步骤是: (1)在“数据库”窗口中单击“窗体”对象。 (2)单击要选择的窗体,单击“设计”按钮。 (3)单击“插入”菜单的“日期和时间”命令,显示“日期和时间”对话框,即可进行设置。 注意:若当前窗体没有页眉,则日期和时间将被插入到主体节中;如果要删除日期和时间,可以先旋中它们,然后再按Del键。 考点16:窗体中控件的对齐 美化窗体时,用户除了可以对控件进行选中、移动、改变大小等操作外,还可以对齐窗体中的控件。对齐多个控件的方法是选择“格式”菜单中的“对齐”命令,该命令包括:靠左、靠右、靠上、靠下和对齐网格5种方式。 前4种方式都是用最靠边的控件边缘作为对齐其他控件的基准线,而对齐网格则是将控件的上边缘和左边缘与最近的网格点或线对齐。 对齐控件的具体操作步骤是: (1)在“数据库”窗口中单击“窗体”对象后,选择要对齐控件的窗体,单击“设计”按钮。 (2)用鼠标选择要调整的控件,选择“格式”菜单下“对齐”命令的下级联菜单中5种对齐方式中的一种即可。 注意:若要同时对多个控件进行对齐,可将多个控件组合在一起进行整体的操作。组合的方法是:选择要组合的一组控件,然后选择“格式”菜单中的“组合”命令,即可将选择的控件组合在一个组中。 例6(5(2005年4月 选择题第23题) 假定已设计好了一个窗体,窗体视图中的显示如图6.5所示。 在设计视图中设置此窗体的“格式”属性,正确的是______。 A B C D [解析] 对于这样的试题,需要详细观察题面中给定的图形,来判断窗体格式设置。根据图6.6的分析,参照本章考点3中关于窗体属性设置的相应说明可知本题答案为C选项。 [答案] C 6(5 同步练习 一、选择题 1(窗体中_____在页的顶部显示诸如标题或者列标头的信息. A 主题节 B 页面页眉 C 页面页脚 D 窗体页眉 2(下面说法正确的是_____。 A 可以通过窗体更新数据表中的数据,和窗体的各种设置无关 B Access提供了2种类型的窗体,分别为“设计”窗体和“数据表”窗体 C Access提供了6种类型的窗体,并为窗体提供了3种视图 D Access提供了3种类型的窗体,并为窗体提供了6种视图 3(在Access的窗体,____从外观上看与数据表和查询显示数据的界面相同。 A 数据表窗体 B 表格式窗体 C 数据透视表窗体 D 纵栏式窗体 4(下面关于窗体叙述正确的是_____。 A 可以通过窗体的属性表设置窗体的属性,从而影响窗体结构和外观 B 窗体的属性只能影响窗体的结构和外观,不能设置相应的数据源 C 窗体的名称属性用来标识窗体的标题文字显示 D 窗体的“滚动条”属性可以取值“是”或者“否” 5(下面说法错误的是_____。 A 在Access中,可以通过向导建立窗体 B 窗体的基础记录源可以为表、查询、视图、窗体 C 创建基于多个表的窗体时,需要先将数据源的表或查询建立关系 D Access共提供了6种创建窗体向导 6(下面说法正确的是______。 A 组合框可以绑定记录源,而列表框不可以 B 组合框和列表框都可以从列表中选取一个值,它们没有区别 C 列表框中只能选择一行数据,而组合框可以选择多行数据 D 组合框可以选择也可以输入文本,而列表框只能选择文本、不能输入文本 7(窗体上可以使用_____作为单独控件来显示基础表、查询或SQL语句中的“是/否”值。 A 复选框、切换按钮和选项按钮 B 文本框、复选框和选项按钮 C 选项按钮组和选项按钮 D 复选框、标签、选项按钮 8(下面关于选项的叙述,正确的是_____。 A 当选项组能包含多个复选框时,可以同时选择多个值 B 如果选项组绑定到表中的某个字段,则组框架内的所有复选框、选项按钮或者切换按钮都绑定了这个字段 C 选项组的值只能是数字,不能是文本 D 选项组只能是绑定的 9(下面对于窗体中控件属性的叙述,正确的是_____。 A 是否有效属性指定“窗体”视图中的控件是否可以被编辑 B 前景颜色属性可以指定一个控件被按下时显示的颜色 C 可以使用标题属性为标签或命令按钮指定访问键 D 在“窗体”视图中,隐藏或无效的控件不在Tab键次序中 10(文本框的滚动条属性包括_____。 A “无”和“垂直” B “两者均无”、“只垂直”、“只水平” C “没有”和“只垂直” D “是”和“否” 11(窗体的信息不包括 。 A)设计者在设计窗体时附加的一些提示信息 B)设计者在设计窗体时输入的一些重要信息 C)所处理表的记录 D)所处理查询的记录 12(主窗体只能显示为 ,子窗体可以显示为 ,也可以显示为 。 A)纵栏式窗体、图表窗体、数据表窗体 B)纵栏式窗体、表格式窗体、主/子窗体 C)纵栏式窗体、数据透视表窗体、图表窗体 D)纵栏式窗体、数据表窗体、表格式窗体 13(主要用于显示、输入、更新数据库中的字段的控件的类型是 。 A)结合型 B)非结合型 C)计算型 D)非计算型 14(下列事件不属于Access中的事件是 。 A)键盘事件 ,)窗口事件 ,)鼠标事件 D)控件事件 15(键盘事件主要是操作键盘所引发的事件,下列不属于键盘事件的是 A)击键 ,)键锁定 ,)键释放 D)键按下 16(当窗体中的内容太多无法放在一页中全部显示时,可以用 控件来分页。 A)命令按钮 ,)选项卡 ,)选项组 D)组合框 17(如果在窗体上输入的数据总是取自查询或取自某个固定内容的数据,或者某一个表中记录的数据,可以使用 控件来完成。 A)文本框控件 ,)选项卡 ,)选项组控件 D)列表框或组合框控件 二、填空题 1(窗体的数据来源主要包括___________和查询。 2(窗体可以分为若干节,显示记录源应在________节。 3(在Access中,可以使用_______窗体以图表的方式显示用户的数据。 4(要修改窗体中的某个控件属性,必须在________视图下进行。 5(对于窗体来说,可以对属性表中的________属性设置,来控制是否可以在窗体中筛选。 6(选项按钮组的值是_______类型。 7(________属性来显示或隐藏窗体的控件。 6(5 解析与答案 一、选择题答案 1([解析] 请参阅本章考点1的相应说明。[答案] B 2([解析] 参照本章考点2的相关说明。[答案] C 3([解析] 参照本章考点3中的相关说明。[答案] A 4([解析] 参考本章考点3的相应说明可知,选项A叙述正确。[答案] A 5([解析] 参照本章考点3的相关说明。[答案] B 6([解析] 请参照本章考点4的相应说明。[答案] D 7([解析] 请参考本章考点4的相应说明。[答案] A 8([解析] 参照本章考点4中的相关说明。[答案] C 9([解析] 参照本章考点5中的相关说明。[答案] C 10([解析] 滚动条属性可以指定是否在窗体或文本框控件上显示滚动条。该属性说明如表6.5所示。[答案] A 11([解析]窗体的信息主要有两类:一类是设计者在设计窗体时附加的一些提示信息;另一类是所处理的表或查询的记录。[答案] B 12([解析]主窗体只能显示为纵栏式窗体,子窗体可以显示数据表窗体和表格式窗体;图表窗体是利用Microsoft Graph以图表方式显示用户数据的窗体;数据透视表窗体是用以指定的数据表,或查询为数据源产生一个Excel的分析表而建立的一种窗体。 13([解析]结合型控件主要用于显示、输入、更新数据库中的字段;非结合型控件没有数据来源,可以显示信息、线条、矩形或图像;计算型控件用表达式作为数据源,表达式可以利用窗体或报表所引起的表或查询字段中的数据,也可以是窗体或报表上其他控件中的数据。[答案] A 14([解析]参看考点12。[答案] D 15([解析] 参看考点12的键盘事件。[答案] B 16([解析] 选项卡是用来分页的,而选项组是选择列表工具。[答案] B 17([解析] 选项卡是用来分页的,选项组是选择列表工具,文本框控件是用来输入或编辑字段数据。[答案] D 二、填空题答案 1([解析] 窗体的数据源主要包括表、查询和SQL语句。[答案] 表、SQL语句 2([解析] 在窗体上,主体节显示窗体记录源的记录。此节通常包含和记录源中的字段绑字的控件,但是也可以包含没有绑定的控件,例如用于识别字段内容的标签。[答案] 主体 3([解析] 在Access提供的6种视图中,图表窗体是利用Microsoft Graph以表格方式显示用户的数据。[答案] 图表 4([解析] 只有在“设计”视图下才可以对视图进行设计。[答案] 设计 5([解析] 窗体的“允许筛选”属性可以控制是否可以在窗体中筛选。[答案] 允许筛选。 6([解析] 选项按钮组的值只能是数字,不能是文本,更不会是其他数据类型。[答案] 数字 7([解析] 控件的可见性属性决定了控件在窗体上是否可见。[答案] 可见性或Visible 第7章 报表的基本操作 本章主要考察的内容是: 1:报表的定义与组成; (1)报表的视图;设计视图、打印预览视图、版面预览 (2)报表的组成:包括报表页眉、页面页眉、主体、页面页脚、组页脚、组页眉 2(报表的分类: (1)纵栏式报表; (2)表格式报表 (3)标签包表 (4)图表报表 3、报表的创建 (1) 自动报表功能创建 (2) 使用向导功能创建 (3) 设计视图创建 4 报表的编辑 (1) 报表格式设置。 报表格式设置包括了对各控件位置的确定、报表中广西格式的修改等等。报表中可以使 用预定义的报表格式,使报表的总体格式符合一定的规则。 (2) 添加背景图案。 在报表中添加背景图案以增加显示。 (3) 添加日期和时间。 在报表“设计”视图下为报表插入日期和时间,也可以在报表上添加文本框,然后通过 设置“控件源”,使文本框显示日期和时间。 (4) 插入分页符和页码。 可以插入分页符和页码。在插入分页符时,如果要将报表中的每个记录或一记录组都另 起一页,可以通过设置组标头、组注脚或主体节的“强制分页”属性来实现。 (5) 报表的节的操作。 对报表的节或者控件定义颜色,改变节的大小,添加或者删除报表页眉、报表页脚和页 面页眉、页面页脚。 (6) 绘制线条和矩形。 使用线条或者矩形来修饰版面。添加线条时,如果要微调线条的长度或者角度,可选择 线条,然后同时按下Shift键和方向键中的任意一个即可;如果要微调线条的位置,同 时按下Ctrl键或方向键中的一个即可。 3、 表和控件的属性 报表和控件也都有自己的忏悔,报表的“设计”视图中,可以在属性对话框中完成对属 性的设置。属性设置对话框有“格式”、“数据”、“事件”、“其他”、“全部”5个选项卡。 4、报表排序和分组 在报表设计时,可以通过“排序与分组”对话框设置排序和分组。 报表中最多可以按10个字段或表达式进行排序,第1行的字段或表达式具有最高排序优先级(最大的设置),第2行则具有次高的排充优先级,依此类推。 分组是指报表设计时按照一个或者几个字段值是否相等而将记录分成组的过程。在一个报表中,可以在10个字段或表达式上进行分组。在多个字段或者表达式进行分组时,Access按照组级别对组进行嵌套。对其进行分组的第1个字段或表达式是第1个或最高级别;第2个字段或表达式是下一个级别;依次类推。在报表分组操作设置字段的“分组形式”属性时,属性值的选择是由分组字段的数据类型决定的。 历年的全国计算机等级考试的笔试中,“报表的基本操作部分的分值约占10-15%,本章历年的考题分布情况如表7-1所示: “报表的基本操作”考题分析表表 考点内容 小计 2004.09 2005.04 2005.09 2006.04 2006.09 报表结构 2 2 4 报表数据源 2 2 报表结构 2 2 4 报表修饰 4 4 8 报表分组 4 2 6 计算 4 2 6 合计 14 4 6 4 2 30 关键考点 ? 报表的定义与组成 ? 报表编辑 ? 报表的分组 7.1关键考点破解与真题演练 7.1.1 报表分类 考点破解 1 报表定义与组成 报表是以打印的格式显示数据的有效方式。用户可以控制报表上每个对象的大小和外观,所以报表可以按照所需的方式显示及查看信息。 报表中大多数信息来自基础的表、查询或SQL语句(它们是报表数据的来源)。其他信息存储在报表的设计中。 Access为报表操作提供了“设计”视图、“打印预览”视图、“版面预览”视图3种视图形式。 视图将报表中的住处颁在不同的节中,每个节在页面上和报表中具有特定的并按照预期次序打印。 2、 带区 在“设计”视图中,节表现为带区形式,并且报表包含的每个节只体现一次。在已 打印的报表中,某些节可以重复多次打印。通过放置控件(如标签和文本框)可以确定 每个节中住处的显示位置,报表的各节说明如下。 报表页眉:在一个报表中,报表页眉只出现一次,报表页眉打印在报表第一页页面 页眉的前面。一般使用标签控件在报表页面中显示报表标题。 页面页眉:出现在每页报表的顶部,主要显示列标题。一般使用标签控件作为页面 页眉中的列标题。 主体节:包含了报表数据的主体部分,对于报表基础记录来源的每条记录来说,本 节是重复出现的。主体节中可以使用广西杠或者其他控件来显示数据。 页面页脚:在报表每页的底部出现,用来显示本页的汇总说明。数据一般在广西杠或者其他控件中显示。 报表页脚:只在报表结尾处出现一次。用来显示整份报表的汇总说明。一般使用文 本框或者其他类型控件显示分组字段等数据信息。 组页脚:组页脚用来在记录组的结尾放置信息,例如组名称或组总计数。组页脚步 节内可以使用文本框或者其他控件显示分组统计数据。 2.报表的分数 报表可以分为如下四类:纵栏式\表格式\图表报表和标签报表4类 真题演练 例7.1(2004年9月 选择题第25题) 在报表每一页的底部都输出信息,需要设置的区域是 。 (A)报表页眉 (B)报表页脚 (C)页面页眉 (D)页面页脚 【解析】参照本章考点破解1中的相关信息。 【答案】D 例7.2(2005年4月 选择题第26题) 要实现报表的分组统计,其操作区域是_______。 (A) 报表页眉或报表页脚区域 (B) 页面页眉或页面页脚区域 (C) 主题区域 (D) 组页眉或页脚区域 【解析】在Access中,对报表进行分组统计并输出,则统计计算控件应该布置在“组 页眉/组页脚”节区内相应位置,然后使用统计函数设置控件源。 【答案】D 例7.3(2005年9月 选择题第29题) 在关于报表数据源设置的叙述中,以下正确的是______。 (A) 可以是任意对象 (B) 只能是表对象 (C) 只能是查询对象 (D) 可以是表对象或查询对象 【解析】对照本章考点破解1中的相关信息 【答案】D 例7.4(2006年4月 选择题第24题) 在使用报表设计器设计报表时,如果要统计报表中某个字段的全部数据,应将计算表达 式放在______。 (A) 组页眉/组页脚 (B) 页面页眉/页面页脚 (C) 报表页眉/报表面页脚 (D) 主体 【答案】B 自测题 可用“7.2笔试过关精练”中的选择题第1-8题进行自测。 7(1(2报表的创建和编辑 考点破解2 报表的创建和编辑 1( 报表的创建 在Access中,可以使用以下3种方式创建报表。 (1) 使用“自动报表”功能。使用“自动报表”可以选择记录源和纵栏式版面 或表格式版面;“自动报表”使用了来自记录源中的所有字段并应用用户最 近使用报表的自动格式。 (2) 使用向导创建报表。向导将提示输入有关记录源、字段、版面以及所需格 式,并根据用户的回答来创建报表。 (3) 自定义报表。使用报表的“设计”视图自定义报表。 3、 报表的编辑 (1) 报表格式设置。 报表格式设置包括了对各控件位置的确定、报表中广西格式的修改等等。报表中可以使 用预定义的报表格式,使报表的总体格式符合一定的规则。 (2) 添加背景图案。 在报表中添加背景图案以增加显示。 (3) 添加日期和时间。 在报表“设计”视图下为报表插入日期和时间,也可以在报表上添加文本框,然后通过 设置“控件源”,使文本框显示日期和时间。 (4) 插入分页符和页码。 可以插入分页符和页码。在插入分页符时,如果要将报表中的每个记录或一记录组都另 起一页,可以通过设置组标头、组注脚或主体节的“强制分页”属性来实现。 (5) 报表的节的操作。 对报表的节或者控件定义颜色,改变节的大小,添加或者删除报表页眉、报表页脚和页 面页眉、页面页脚。 (6) 绘制线条和矩形。 使用线条或者矩形来修饰版面。添加线条时,如果要微调线条的长度或者角度,可选择 线条,然后同时按下Shift键和方向键中的任意一个即可;如果要微调线条的位置,同 时按下Ctrl键或方向键中的一个即可。 4、 报表和控件的属性 报表和控件也都有自己的忏悔,报表的“设计”视图中,可以在属性对话框中完成对属 性的设置。属性设置对话框有“格式”、“数据”、“事件”、“其他”、“全部”5个选项卡。 真题演练 例7(5(2005年9月 选择题第30题) 在报表设计的的栏中,用于修饰版面以达到更好显示效果的控件是______。 (A) 直线和矩形 (B) 直线和圆形 (C) 直线和多边形 (D) 矩形和圆形 【解析】在报表设计中,可以通过报表设计的工具栏添加相应的控件,如图7.4所示。 根据7.4 可知,在报表设计的工具栏中,修饰版面添加的显示效果的控件中没有多边 形、圆形。 【答案】A 例7.6(2005年9月 填空题第10题) 在报表设计中,可以通过添加______控件来控制另起一页输出显示。 【解析】在报表中,可以在某一节中使用分页控制符来樗要另起一页的位置。 【参考答案】分页控制符或分页符 自测题 可用“7.2笔试过关精练“中的选择题第9-14题、填空题第1题进行自测。 7(1(3 在报表中计算和汇总 考点破解3 报表排序和分组 在报表设计时,可以通过“排序与分组”对话框设置排序和分组。 报表中最多可以按10个字段或表达式进行排序,第1行的字段或表达式具有最高排序优先级(最大的设置),第2行则具有次高的排充优先级,依此类推。 分组是指报表设计时按照一个或者几个字段值是否相等而将记录分成组的过程。在一个报表中,可以在10个字段或表达式上进行分组。在多个字段或者表达式进行分组时,Access按照组级别对组进行嵌套。对其进行分组的第1个字段或表达式是第1个或最高级别;第2个字段或表达式是下一个级别;依次类推。在报表分组操作设置字段的“分组形式”属性时,属性值的选择是由分组字段的数据类型决定的。具体如表7.2所示。 表7.2 分组字段说明 分组字段数据类型 选项 记录分组形式 每一个值 包含字段或表达式中相同的文本 值 间隔 包含与字段或表达式中前n 个字符相同的记录 每一个值 字段或表达式中的相同值 数字、货币和Yes/No 间隔 指定间隔值内的记录 每一个值 字段或表达式中的相同值 年 同一历法年中的日期 季 同一历法季度中的日期 月 同一月份中的日期 时期/时间 周 同一周中的日期 日 同一天的日期 时 同一小时中的时间 分 同一分钟中的时间 真题演练 例7.7(2005年4月 选择题第25题) 图7.6是某个报表的设计视图。根据视图内容,可以断出分组字段是______。 (A) 编号和姓名 (B) 编号 (C) 姓名 (D) 无分组字段 【解析】在图7.6中,组页眉和组页脚分别使用“编号页眉”和“编号页脚”来标识,因此可以肯定该报表使用“编号”字段作为分组字段。 【答案】B 例7.8(2005年4月 填空题第8题) 报表设计中,可以通过在组页眉和组页脚中创建______来显示记录的分组汇总数据。 【解析】报表设计中,可以通过在组页眉和组页脚中创建文本框或计算控件来显示记录的分组汇总数据。 【答案】文本框或计算控件 自测题 可用“7.2笔试过关精练中的选择题第15题、填空题第3-4题进行自测”。 考点破解4 报表统计计算和计算控件 计算控件是窗体、报表或数据访问页上的一个控件,它显示一个表达式的结果而不显示所存储的数据。每当表达式中的某个值更改时,该值都重新计算。 在报表中设计页码输出、分组统计数据输出、插入页码等都需要使用计算控件完成。文本框是最常用的计算控件。当使用文本框作为计算控件时,通过设置该控件的“控件源”来决定具体的显示信息。当使用计算控件对记录的字段值进行求和或者求平均计算时,只要设置控件的控件源为包含字段的计算表达式即可。 在报表设计时,可以根据不同的要求将计算控件放在不同的区域,一般遵循下列规则。 (1) 对报表所有记录作为整体进行计算时,应该将计算控件添加到报表页眉或 报表页脚中。 (2) 对报表中每条记录的若干字段值进行求和或者求平均值的计算时,可在主 体节添加计算控件。 (3) 对某些字段的一组记录进行统计计算时,可将计算控件放在页组眉/页组脚 中。 (4) 计算控件的控件来源表达式常常会用到的函数有sum、count、avg等。 真题演练 例7.9(2004年9月 选择题第24题) 要显示格式为“页码/总页数”的页码,应当设置文本杠控件的控件来源属性为______。 (A)[page]/[pages] (B)=[page]/[pages] (C)[page]&[pages] (D)=[page]&”/”&[pages] 【解析】在窗体“设计”视图或报表“设计”视图中可以使用页码表达式,页码表达式使用[page]表示当前页码,使用[pages]表示总页数。常用的页码表达式示例心脏在其他视图中可以见到的结果如表7.3所示。 表达式 结果 =[page] 页码,例如1、2、3 =”共“&page第page” “共n页,第n页”(例如:共5页,第1 页;共5页,第2页) =[country]&”-”&”pages” UK-1、US-2、UK-3 =[page]&”/”[pages]&”pages” 1/3Pages、2\3Pages、3\3Pages =[Format]([page],”000”) 使用固定格式的页码,例如001、002、003 【答案】D 例7.10(2004年9月 选择题第26题) 如果设置报表上某个文本框的控件来源属性为“=7 Mod 4”,则打印预览视图中,该文本框显示的信息为______。 (A)未绑定 (B)3 (C)7Mod4 (D)出错 【解析】文本框内以“=”开头,表示此文本框用作计算控件。表达式中Mod为求余函数,因此输出应为表达式7Mod4的值,即3。 自测题 可用“7.2笔试过关精练”中的选择题第18-22题、填空题第4-6题进行自测。 7.2.1 笔试过关精练 一、选择题 1.为了使打印时报表标题仅在第一页的开始位置出现,应该将报表的标题放到__节中。 (A)报表页眉 (B)报表页面 (C)页面页眉 (D)组页眉 2.在报表中,如果要想在每页底部显示页码,应将页码放在 节中。 (A)页面页眉 (B)报表页脚 (C)报表页眉 (D)页面页脚 3.在下列的 中,报表记录数据的字段信息与字段记录数据一起被安排在每页的主体 节区显示。 (A)纵栏式报表 (B)标签报表 (C)表格式报表 (D)图表报表 4.在报表中,要打印表中的记录信息,应当在 节中处理。 (A)组页脚节 (B)报表页面 (C)主体 (D)记录 5.下面关于报表功能的叙述中,错误的是 。 (A)可以呈现格式化数据 (B)可以进行计数、统计 (C)可以修改数据表中的信息 (D)可以通过嵌入图像等来修饰报表 6.要在报表页中主体节区显示一条或多条记录,而且以垂直方式显示,应选择 。 (A)纵栏式报表类型 (B)表格式报表类型 (C)图表报表类型 (D)标签报表类型 7.要设置在报表第一页的顶部都输出的信息,需要设置 。 (A)页面页脚 (B)报表页脚 (C)页面页眉 (D)报表页眉 8.要设置在报表每一页的顶部都输出的信息,需要设置 。 (A)报表页眉 (B)报表页脚 (C)页面页眉 (D)页面页脚 9.对报表背景图片进行属性设置时,下列选项说法正确的是 。 (A)“图片类型”属性中包含嵌入和悬浮 (B)“图片缩放模式”属性不包括拉伸 (C)“图片对齐方式”属性包括了6个选项 (D)“图片出现的页”属性不包括“偶数页”项 10.在报表中可以设置“调色板来源”属性,该属性位于属性对话框的 选项卡中。 (A)格式 (B)图片 (C)数据 (D)其它 11.在Accecc中提供了 种创建报表的方式。 (A)3 (B)4 (C)5 (D)6 12.在报表添加线条的过程中,如果需要微调线条的长度,可以选择线条,然后 。 (A)同时按下Shift键和方向键 (B)同时按下Ctrl键或方向键 (C)直接按方向键 (D)直接使用鼠标托动线条 13.在报表添加线条的过程中,如果需要微调线条的位置,可以选择线条,然后 。 (A)同时按下Shift键和方向键 (B)同时按下Ctrl键或方向键 (C)直接按方向键 (D)直接使用鼠标托动线条 14.在报表设计视图中设置分页符时,分页符将 。 (A)在页面中以虚直线显示 (B)在页面中以实直线显示 (C)以短虚线形式标志在报表的左边界上 (D)以短虚线形式标志在报表的右边界上 15.报表中可以按 个字段或表达式进行排序。 (A)10 (B)6 (C)8 (D)5 排序 16.要显示格式为“ page页码of总页数”的页码,应设置文本框的属性来源为 。 (A)=”page”&[page] (B)[page]&”/”&[pages]&”pages” (C)=[page]&”of”&[pages]&”pages” (D)=”page”&[page]&”of”&[pages] 17.要计算报表中所有学生“数学”课程的平均成绩,在报表页脚节内对应“数学”字段列的位置添加一个文本框计算控件,应该设置其控件来源属性为 。 (A)=Avg([数学]) (B)Avg([数学]) (C)=Sum([数学]) (D)Sum([数学]) 18.计算控件的控件源必须以 开关的一个计算表达式。 (A)= (B)& (C)! (D)” 19.下列叙述错误的是 。 (A)在报表中,可以使用文本框作为绑定控件显示数据 (B)在报表中最多可以对10个字段进行分组 (C)在报表中分组的主要目的在于使具有相同属性的记录连续显示 (D)报表中,既可以根据字段分组,也可以根据表达式分组 20.报表中不能通过计算控件完成的工作是 。 (A)输出页码 (B)对字段值进行统计 (C)显示图形 (D)显示当前日期 二、填空题 1.在报表设计视图中,可以设置记录源属性,该属性位于 选项卡中。 2.在默认情况下,报表中的记录是按照 排序的。 3.在报表中,对于文本类型的分组字段,如果要分组字段上值相同的记录,则应该选择 的选择是 。 4.在报表中,对于文本类型的分组字段,要分组字段前面某干字符相同的记录,则应该 选择的选项是 。 5.计算控件的控件源是 。 6.如果设置报表上某个文本框的控件来源属性为“=3*2-2”,则在报表浏览视图中,该 文本框显示的信息为 。 一、选择题答案 1.【解析】报表页眉中的内容在打印报表时,只在第一页打印一次。【A】 2.【解析】参照本章考点破解1中的相关说明。【D】 3.【解析】本题四个选项中的报表类型为Accecc中报表常用的四种类型,其中纵栏式报表的字段标题信息与字段记录数据一块被安排在每页的主体区显示。【A】 4.【解析】在报表中,主体节用来处理每条信息。【C】 5.【解析】参照本章考点破解1中的相关说明。【C】 6.【解析】纵栏式报表(也称为窗体报表)一般是在一页中主体节区内显示一条或多条记录,而且以垂直方式显示。纵栏式报表记录数据的字段标题信息与字段记录数据一起被安排在每页的主体节区内显示。 表格式报表是以整齐的行、列形式显示记录数据,通常一行显示一条记录、一页显示多行记录。 图表报表是指包含图表显示的报表类型。 标签报表是一种特殊类型的报表。【A】 7.【解析】参照本章考点破解1中的相关说明。【D】 8.【解析】参照本章考点破解1中的相关说明。【C】 9.【解析】报表背景图片可设置的属性以及相关说明如下表所示。【D】 属性名称 属性说明 取值说明 图片 用作报表背景的图片名称 图片类型 确定图片是嵌入还是链接 嵌入、链接 图片绽放模式 控制对象框或图形内容的显示方式 剪裁、拉伸、缩放 图片对齐方式 控制框中图片的对齐方式 左上、右上、中心、左下、右下 图片平铺 选择图片是否为平铺 是、否 图片出现的页 确定那些页使用背景图片 所有页、第一页、无 10.【解析】报表的属性对话框共有5个选项卡,分别为格式、数据、事件、其它、全部。报 表的调色板来源属性在格式卡中。【A】 11.【解析】参照本章考点破解2中的相关说明。【A】 12.【解析】参照本章考点破解2中的相关说明。【A】 13.【解析】参照本章考点破解2中的相关说明。【B】 14.【解析】分页符用来报表的某一节中标志要另起一页的位置,在报表设计视图中,分页符会以短虚线标志在报表的左边界上。【C】 15.【解析】参照本章考点破解3中的相关说明。【A】 16.【解析】参照本章考点破解4中的相关说明。【D】 17.【解析】Accecc提供的内置统计函数中,Count函数完成计数,Sum函数完成求和,Avg 函数完成求平均。【A】 18.【解析】Accecc规定,计算控件源必须是以“,”开头的表达式。【A】 19.【解析】在报表设计时,主要利用分组的手段来完成对同组数据的汇总和显示输出。【C】 20.【解析】在报表中设计页码输出,分组统计数据输出、插入页码等都需要使用计算控件来 完成,要显示图形时,可以使用图像控件。【C】 二、填空题答案 1.【解析】报表的属性设置对话框共有5个选项卡,在“数据”和“全部”选项卡中,都可以 对记录源属性进行设置。【全部或数据】 2.【解析】在默认的情况下,报表中的记录是按照自然顺序来排列显示的,也就是说按照输入的先后顺序来排列显示的。【自然或数据的输入先后】 3.【解析】参照本章考点破解3中的相关说明。【每一个值】 4.【解析】参照本章考点破解3中的相关说明。【前缀字符】 5.【解析】参照本章考点破解4中的相关说明。【表达式】 6.【解析】文本框作为计算控件时,可以直接在控件中键入表达式,报表浏览时,实际上显示的信息为表达式的值。3*2-2的值为4。【4】 第10章 模 块 本章主要考查的内容包括如下. 1 模块的基本概念. (1) 类模块 (2) 标准模块 (3) 将宏转换为模块 2 创建模块 (1) 创建VBA 模块:在模块中加入过程,在模块中执行宏 (2) 编写事件过程:键盘事件,鼠标事件,窗口事件,操作事件和其他事件. (3) 调用和参数传递 (4) VBA程序基础 3 面向对象程序设计的基本概念 (1) VBA编程环境:;进入VBE,VBE界面 (2) VBA编程基础:常量,变量,表达式 (3) VBA编程流程控制:顺序控制,选择控制,循环控制 (4) VBA程序的调试:设置断点,单步跟踪,设置监视点 历年的全国计算机等级考试的笔试中,模块部分的分值约占18-12%,属于重点的考察对象。本章历年的考题分布情况如表10-1所示: 表6-1 模块部分历年考题分数分布表 考点内容 2004.09 2005.04 2005.09 2006.04 2006.09 小计 在模块中执行宏 2 2 面向对象程序设计 2 6 2 10 VBA编程环境;VBE界面 2 2 4 VBA编程基础 10 8 4 4 12 40 VBA程序流程控制语句 6 8 6 8 6 34 过程调用和参数传递 2 8 4 2 16 合计 18 18 20 24 24 106 由表10-1可知,本章的关键考点是在对于模块的基本操作内容的考察。模块内容的考查一直是二级Access等级考试的重点,近两年更是有所增加,因此考生应该特别注意对本部分内容的学习。 10.1 模块的基本概念 模块有两个基本类型:类模块和标准模块.模块中的每个过程都可以是一个Function过程或一个Sub过程. 而且它们各自与某一窗体或报表关联.在窗体或报表的设计视窗体和报表都属于类模块, 图环境下可以用两种方法进行相应的模块代码设计区域:一是用鼠标单击工具栏上的”代码”按钮进入;第二种是为窗体或报表创建事件过程时,系统会自动进入相应代码设计区域. 窗体和报表模块通常都含有事件过程,该过程用于响应窗体或报表中的事件.可以使用事件过程来控制窗体或报表的行为及它们用户操作的响应,如果单击某个命令按钮. 标准模块一般用于存放供其他Access数据库对象使用的公共过程.在Access系统中可以通过创建新的模块对象而进入其代码设计环境.标准模块通常安排一些公共变量或过程供类模块里的过程调用.在各个标准模块内部也可以私有变量和私有过程仅供本模块内部使用. 标准模块中的公共变量和公共过程具有全局特性,其作用范围在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束. 在Access中,系统能够自动将宏转换为VBA 模块,具体操作步骤如下: (1) 打开要转换为模块的窗体或报表设计视图 (2) 选择”工具”菜单中的”宏”子菜单中的”将窗体的宏转换为Visual Basic 代码”命令或”将 报表的宏转换为Visual Basic代码”命令,将弹出”转换窗体宏” 对话框或”转换报表宏”对 话框. (3) 在”转换窗体宏”对话框或”转换报表宏”对话框中,单击”转换”按钮.将弹出”将宏转换到 Visual Basic“对话框,单击”确定”按钮即可. 10.2 创建模块 直接创建新的模块的步骤如下: (1) 打开”数据库”窗口,选择”模块”对象. (2) 单击窗口上部的”新建”按钮”,或选择”插入”菜单中的 “模块”命令,将弹出”模 块”窗口.如果需要创建类模块,则选择”插入”菜单中的”类模块”命令. (3) 将所需要的声明、语句和过程添加到模块中. (4) 选择”文件”菜单中的”保存”命令,或单击工具拦上的”保存”按钮将其保存 在窗体模块或报表中创建过程的具体操作步骤如下: (1) 打开窗体或报表的设计视图,单击工具拦的代码按钮,弹出”模块”编辑窗口. (2) 在”模块”编辑窗口中,在”对象”下拉列表框中选择要创建的对象,在”过程”下拉 列表框中选择触发该过程的事件.将在”代码”窗口出现一个空的私有的Sub过程.在 该框架输入所需要的Visual Basic程序代码. (3) 单击”保存”按钮,保存该模块. 考点1:在模块中执行宏 在模块的过程定义中,使用Docmd对象的RunMacro 方法,可以执行设计好的宏.其调用格式为:DocMmd.RunMaCro MacroName[,RepeatCount] [,RepeAtCount] 其中MacroName表示当前数据库宏的有效名称: Repeatcount可选项,用于计算宏运算次数的整数值;RepeatExpression可选项,为数值表达式,在每一次运行宏时进行计算,结果为False(0)时,停止运行宏. 例 10.1 VBA的自动运行宏必须命名为( ).(2005年4月填空题第10题) 答案 :AutoExeC 例 10.2 Access的控件对象可以设置某个属性来控制对象是否可用(不可用时显示为灰色状态)。需要设置的属性是( ). (2006年4月选择题第32题) A)Default B)Cancel C)Enabled D)Visible 解析: Enabled 属性来控制对象是否可用(不可用时显示为灰色状态)。Visible 属性来控 制对象是否可见,是较容易混淆的干扰项 答案:C) 10.3 VBA程序设计基础 考点2:面向对象程序设计的基本概念 Access内的VBA ,功能强大 ,采用目前主流的面向对象机制和可视化编程环境.VBA与传统语言的重要区别之一就是它是面向对象的.对象是Visual Basic程序设计的核心. 1.对象 在VBA中, 对象是将数据和代码封装起来的实体,它是代码和数据的组合. 2属性和方法 属性和方法描述了对象的性质和行为.其引用方式为:对象.属性或对象.行为.属性是对象的特性,方法是对象可执行的行为. 3.事件和事件过程 事件是Access窗体或报表及其上的控件等对象可以”辨识”的动作,如单击命令按钮、鼠标或打开报表等. 在Access数据库系统里,可以通过两种方式来处理窗体、报表或控件的事件响应.一是使用宏对象来设置事件属性;二是为某个事件编写VBA代码过程,完成指定动作,这样的代码过程称为事件过程或时间响应代码. 事件与事件过程的区别是:事件是由系统确定好的,用户只能从中选择,而事件过程可以由用户编写. 例10.3 如果加载一个窗体,先被触发的事件是( )(2006年4月选择题第25题) A)Load 事件 B)Open 事件 C) Click事件 D) DbClick事件 解析: 如果加载一个窗体,先被触发的事件是Load事件;Open事件在Load事件后执行,窗 体打开时,才会被触发;Click事件是单击鼠标后,触发的事件:DdClick事件是双击 鼠标后,触发的事件。因此,选项A是正确选项。 答案:A) 考点3:VBA编程环境——VBE界面 Access提供了一个编程界面:VBE 1( 进入VBE编程环境 Access模块分成类模块和标准模块两种,它们进入VBE编程环境的方式有所不同。 对于类模块,可以直接定位到窗体或报表上,然后单击工具拦上的“代码”工具按钮进入:或定位到窗体、报表和控制上的通过指定对象事件过程进入,标准,模块进入VBE编程环境的情况有三种:一是对于已存在的标准模块,只需要从“数据库”窗口对象列表上选择“模块”,双击要查看的模块对象即可进入。二是要创建新的标准模块,需从“数据库”窗口对象列表上选择“模块”,单击工具栏上“新建”按钮即可进入。三是在数据库对象窗体中,选择“工具”菜单中的“宏”子菜单中的“Visual Basic编辑器”选项即可启动VBA编辑器。 2(VBA编辑器界面 VBA编辑器截面由标准工具栏、工程窗口、属性窗口和代码窗口、“对象”下拉列表框、“事件”下拉列表框和“立即”窗口组成。 3( 在VBE环境中编写VBA代码 Access的VBE编辑环境提供了完整的开发和调试工具。其中的代码窗口顶部包含两个组合框,左侧为对象列表,右侧为过程列表。操作时,从左侧组合框选定一个对象后,右侧过程组合框中会列出该对象的所有事件过程,然后从该对象事件过程列表选项中选择某个事件名称,系统会自动生成相应的事件过程摸板,用户添加代码即可。 例10.4 VBA程序的多条语句可以写在一行中,其分隔符必须使用符号( )。(2006年4月 选择题第29题) A) : B) ‘ C) ; D) , 解析: VBA 程序的多条语句可以写在一行中,必须使用符号“:”作为分隔符。因此,选项 A是正确选项。 答案:A) 例 10.5 窗体中有两个命令按钮:“显示”(控件名为cmdDisplay)和“测试”(控件名为cmdTest)。以下事件过程的功能是:单击“测试”按钮时,窗体上弹出一个消息框。如果单击消息框的“确定”按钮,隐藏窗体上的“显示”命令按钮;单击“取消”按钮关闭窗体。按照功能要求,将程序补充完整。(2006年4月 填空题第14题) Private Sub cmdTest_Click() Answer=( ) (“隐藏按钮”,vbOKCancel) If Answer=vbOK Then cmdDisplay.Visible= ( ) Else Docmd.Close End If End Sub 解析: 根据题意:“单击‘测试’按钮时,窗体上弹出一个消息框”。因此在Answer=( ) 处, 应该填写消息框命令MsgBox;由题目:“如果单击消息框的‘确定’按钮,隐藏窗体 上的‘显示’按钮;”,可知cmdDisplay.Visible=( ) 处,应该填写False,窗体上 的“显示”按钮变为不可见。 答案:Msgbox,False 考点4:VBA编程基础——常量、变量、运算符和表达式 1(VBA的数据类型 详细见下表10-2 表10-2 基本数据类型 类型名 声明符 字节 Byte(单字节型) 1 Integer(整型) % 2 Long(长整型) & 4 Single(单精度型) ! 4 Double(双精度型) # 8 Currency(货币型) @ 8 String(字符型) $ n*1 Boolean(布尔型) 2 Date(日期型) 8 Variant(变体型) X Object(对象型) 4 1.数据类型的书写格式: (1) Date(日期型) 日期型数据用8个字节来存储,日期范围从公元100年1月1日到9999年12月31日,可 括起来放置日期和时间,允许用各种表示日期和时间的格式。 以用# 日期可以用“/”、“,”、“-”分隔开,可以是年、月、日,也可以是月、日、年的顺序。时间必须用“:”分隔,顺序是:时、分、秒。 如: #1999-08-11 10:25:00 pm# 、#08/23/99# 、#03-25-75 20:30:00# 、#98,7,18#等都是有效的日期型数据。在VB)中会自动转换成mm/DD/yy(月/日/年)的形式。 (2) Boolean(布尔型) 逻辑型数据只有两个:逻辑真True和逻辑假False,用2个字节存储。当把逻辑值转化为数值型时,False为0,True为-1。 (3) 字符串型(String) 字符串包括除双引号和回车以外可打印的所有字符,双引号作为字符串的定界符号。 如: "1234"和"张 三"都是字符型。注意字符串中空格是有效字符。 2.变量 在程序执行过程中,其值可以改变的量称为变量。 格式:说明符 变量名 [As 类型] 说明符是说明语句的关键字,它可以是Dim,Private,Public,Static。 例10.6在窗体中添加一个命令按钮(名称为Command1),然后编写如下代码: Private Sub Command1_Click() Static b As integer b,b,1 End Sub 窗体打开运行后,三次单击命令按钮后,变量b 的值是 ( )(2006年9月 填空题第11题) 解析:如果在Sub或Fuction 语句前家Static,则此过程中所以级别的变量值自在调用期间 有所保留 答案:3 例10.6 在窗体中添加一个命令按钮(名称为Command1),然后编写如下代码: Private Sub Command1_Click() a,0:b,0:c,6 MsgBox a,b,c End Sub 窗体打开运行后,如果单击命令按钮,则消息框的输出结果为_( )。(2006年9月 选择题第30题) A)11 B)a,11 C)0 D)False 解析: ”MsgBox a=b+c”是在消息框的输出a和b+c比较的结果,因为a=0,b+c=11,a<>b+c, 所以输出结果为False。 答案:D) 3.常量 在程序执行的过程中保持不变的数据称为常量。在VB中,常量分为两种,文字常量和符号常量。符号常量又分为用户自定义和系统定义两种。 考点5:数组的使用 4.数组 数组中的每一个数据称为数组元素,用数组名和该数据在数组中的序号来标识。序号又称为下标,数组元素又称为下标变量。例如,S(2)是一个数组元素,其中的S称为数组名,2是下标。在使用数组元素时,必须把下标放在一对紧跟在数组名之后的括号中。S(3)是一个数组元素,而S3是一个简单变量。 如果只用一个下标就能确定某个数组元素在数组中的位置,这样的数组称为一维数组。如果用两个或多个下标才能确定某个数组元素在数组中的位置,则数组分别称为二维数组或多维数组。 (1) 一维数组的定义 数组应当先定义后使用,数组的定义又称为数组的声明或说明,对于固定大小的一维数组,用如下格式进行定义: 说明符 数组名(下标)[As 类型] 如: Dim y(5)As Integer 定义了一个一维数组,该数组的名字为y,类型为Integer,占据6个(0,5)整型变量的空间 (2) 二维数组的定义 对于固定大小的二维数组,可以用如下格式进行定义: 说明符 数组名([下界to]上界,[下界to]上界)[As 类型] 如:Dim T(2,3)As Integer定义了一个二维数组,名字为T,类型为Integer,该数组有3行(0,2)4列(0,3),占据12(3×4)个整型变量的空间,如图7-3所示。 例10.7 在使用Dim语句定义数组时,在默认情况下数组下标的下限为( )。(2006年4月 填空第10题) 解析: 在使用Dim语句定义数组时,在缺省情况下数组下标的下限为0。 答案:0 例10.8 在窗体中添加一个名称为Command1 的命令按钮,然后编写如下事件代码: Private Sub Command1_Click() Dim a(10,10) For m,2 To 4 For n,4 To 5 a(m,n)=m*n Next n Next m MsgBox a(2,5),a(3,4),a(4,5) End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果是________。(2006年9月 选择题第31题) A)22 B)32 C)42 D)52 解析: 由a(2,5)=10,a(3,4)=12,a(4,5)=20,可知a(2,5)+a(3,4)+a(4,5)=42 答案:C) 5.运算符 在VBA编程语言中,根据运算不同,可以将运算符分成以下4种类型。 (1)数学运算符:用于算术运算,组成数学表达式,包括加、减、乘、除等。主要有乘(^)、乘法(*)、除法(/)、求模(MoD))等七个运算符。 (2)比较运算符:用来表示两个或多个值或表达式之间的大小关系,有相等(=)、不等(<>)、小于(<)、大于(>)、小于等于(<=)、大于等于(<=)等6个运算符。 (3)连接运算符:具有连接字符串的功能。有“&”和“+”两个运算符,但应尽量使用“&”,如: A1=#7/1/97# A2=“香港回归祖国” A3=A1&A2 则变量A3的值为“97-97-1香港回归祖国” 注意:字符串只有连接运算,在VB中可以用“+”或“&”。建议尽量使用“&”,使程序看起来更明了。使用“&”运算符时应注意前后加空格,否则VB)会当作长整数型的类型符来处理。 注意“+”和“&”的区别。当两个被连接的数据都是字符型时,它们的作用相同。当数字型和字符型连接时,“&”把数据都转化成字符型然后连接;“+”把数据都转化成数字型然后连接 (4)逻辑运算符:用于逻辑运算,主要有与(AND))、或(OR)和非(NOT)3个运算符。逻辑运算的结果是True(真)或False(假)。 例10.9 VBA表达式3*3\3/3的输出结果是_____。(2006年4月 选择第30题) A)(0 B)(1 C)(3 D)(9 解析: 当一个表达式由多个运算符连接在一起时,运算进行的先后顺序是由运算符的优先级 决定的。优先级高的运算先进行,优先级相同的运算依照从左向右的顺序进行。运算 符的优先级顺序为:算术运算、连接运算、比较运算、逻辑运算。因此,VBA 表达式 3*3\3/3的输出结果是1。 答案:B) 6.表达式和优先级 (1) 将常量和变量用运算符连接在一起所构成的式子就是表达式。当一个表达式由多个运 算符连接在一起时,运算进行的先后顺序是由运算符的优先级决定的。优先级高的运 算先进行,优先级相同的运算依照从左向右的顺序进行。 (2) 运算符的优先级顺序为:圆括号>算术运算符>关系运算符>逻辑运算符。 7.标准函数 (1) 数学函数见表10-3 表10-3 数学函数 函 数 功 能 Sin(N) 返回自变量N的正弦函数值,如sin (0)=0,N为弧度。 Cos(N) 返回自变量N的余弦函数值,如Cos (0)=1,N为弧度。 TAn(N) 返回自变量N的正切函数值,如tan (0)=0,N为弧度。 Atn(N) 返回自变量N的反正切值,如Atn (0)=0,函数值为弧度。 Sng(N) 返回自变量N的符号。N<0返回-1;N=0,返回0;N>0,返回1。如Sng(35)=1, Sng(0)=0,Sng(-5.34)= -1。 ABs(N) 返回自变量N的绝对值,如Asb(-345)=345,Asb(345)=345。 Sqr(N) 返回自变量N的平方根,N.>0,如Sqr(81)=9。 Exp(N) 返回e的N次幂值,n>=0。如Exp(3)=20.086。 Log (N) 返回N的自然对数,N>0,如Log(10)=2.3。 Int (N) 返回不大于N的最大整数。如Int(3.6)=3。 Cint(N) 四舍五入整数。Cint(3.6)=4。 RnD(N) 返回0~1之间的随机小数。 注意:三角函数的自变量以弧度表。 (2) 转换函数 函 数 功 能 AsC (C)) 返回字符串C首字符的ASCII码值,如AsC(” A)” =65。 Chr(N) 返回ASCII码值为N的字符,Chr (65) =”65”。 VAl (C) 把数字组成的字符串型数据转换成数值型。VAl (”456”) =456。 Str(N) 把数值N转换成字符型,Str (357) =”357”。 (,) 字符串函数 函 数 功 能 Trim (C) 去掉字符串C两端的空格,Trim (”AB”) =”AB” 。 截取C最左边的n个字符,Left (” Command),,”) =” Left (C,n) Com” 。 截取C最右边的n个字符,Right (” Command,,”) =” Right (C,n) and)” 。 截取C中第m个字符开始的n个字符,Mid (” Command),Mid (C,m,n) ,,,”)=”mm”。 Len (C) 返回C包含的字符数,汉字空格都算一个字符。Len (”中”) =1。 例 10.10 函数Right(“计算机等级考试”,4)的执行结果是( )。(2006年4月 填空题第8题) 解析: 函数Right(“计算机等级考试”,4)表示去字符串“计算机等级考试”最右边的4 位字符,因此,答案为“等级考试”。 答案:等级考试 例10.11在窗体上添加一个命令按钮(名为Command1)和一个文本框(名为Text1),并在命 令按钮中编写如下事件代码: Private Sub Command1_Click() m,2.17 n,Len(Str$(m),Space(5)) Me!Text1=n End Sub 打开窗体运行后,单击命令按钮,在文本框中显示( )。(2006年9月 选择题第32题) A)5 B)8 C)9 D)10 解析: 当一数字转成字符串时,总会在前头保留一空位来表示正负。如果number为正,返 回的字符串包含一前导空格暗示有一正号。 答案:D) 例10.12 在窗体中添加一个名称为Command1 的命令按钮,然后编写如下事件代码: Private Sub Command1_Click() s,:ABBACDDCAB: 2 For i,6 To 2 Step , x,Mid(s,i,i) y,Left(s,i) z,Right(s,i) z,x&y,z Next i MsgBox z End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果是( )。(2006年9月 选择题第34题) A)AABAAB B)ABBABA C)BABBA D)BBABBA 解析: 循环变量i从,到,,步长为,,所以当循环变量i等于,时,x=Mid(s,2,2)=BB, Y=Left(s,2)=AB,z=Riht(s,2)=BA,z=x&y&z=BBABBA。 答案:D) (,) 日期与时间函数 函 数 功 能 Time[$][()] 返回系统当前时间; Date[$][()] 返回系统当前日期; Now[()] 返回系统当前日期和时间; Day(C/n) 返回数据中当月第几天; Month(C/n) 返回数据中当年第几月; WeekDay(C/n) 返回数据当天是星期几。 例10.13 函数Now()返回值的含义的( )。(2005年9月 填空第8题) 答案:返回系统日期和时间 考点6:VBA程序流程控制语句 1 控制流程 计算机程序的执行控制流程,有三种基本结构:顺序结构、分支结构、循环结构。顺 序结构中的语句按排列的顺序依次执行。条件判断结构按照给定的条件进行判断,再按判断 的结果分别执行程序中不同部分的代码。循环结构按照条件反复执行一系列语句。根据循环 的条件,可以把循环结构分为两类,“当”型循环结构:当条件成立时,反复执行语句;“直 到”型循环结构:反复执行语句直到条件成立为止。 考点7:条件语句(If语句和IIf语句) 2 根据条件表达式的值来选择程序运行语句。 VBA支持以下4种条件判断语句。 (1) 块If的格式: If 条件 then 语句块1 [ Else 语句块2] End If (2) 行If的格式: If 条件 then 语句1 [Else 语句2] (3) If 条件1 then 语句块1 ElseIf 条件2 then 语句块2 „„ [Else 语句块n+1] End If (4) IIf 函数的格式如下: Resutl=IIf(条件,表达式1,表达式2) 说明:如果条件为True,执行表达式1,否则执行表达式2 考点8:Select Case 语句 (4) Select Case 当条件表达式仅有一个测试变量时,使用Select case结构更有效。其语法如下: Select case<测试条件> case<结果值1> <程序代码1> case <结果值2> <程序代码2>] „„ case<结果值N>] Ens Select 3 循环语句 可以实现重复执行一行或几行程序代码。 考点8:Do„„Loop 语句 (1)Do„„Loop 通过D)o循环来执行循环,有如下2种格式。其中While是条件为真时循环,Until是 条件为假时循环。 格式一: Do While/until<条件表达式> <循环代码> Loop 格式二: Do <循环代码> Loop While/until<条件表达式> 考点9:For„„Next 语句 (2)For„„Next 格式: For 变量=初值 To 终值学者[Step 步长] <循环体> Next [变量] 考点10:While„„Wend 语句 (3)While„„Wend 格式: While<条件表达式> <循环体> Wend 例 10.14 以下程序段运行结束后,变量x的值为( ). (2006年4月 选择题第33题) x=2 y=4 Do x=x*y y=y+1 Loop While y<4 A)2 B)4 C)8 D)20 解析: 循环条件Loop While y=4表示,在y=4的时候结束循环,因为y=4,所以x=x*y=2*4=8 只执行一次,因此,选项C正确。 答案:C) 例 10.15 在窗体上添加一个命令按钮(名为Command1),然后编写如下事件过程: Private Sub Command1_Click() For i=1 To 4 x=4 For j=1 To 3 x=3 For k=1 To2 x=x+6 Next k Next j Next i MsgBox x End Sub 打开窗体后2006年4月 选择题第34题) ,单击命令按钮,消息框的输出结果是( ).( A)7 B)15 C)157 D)538 解析:在循环k执行前,因为对x重新付了值,所以最后执行两次x=x+6前,x=3,所以 x=3+6+6=15,选项B正确。 答案:B) 例 10.16 在窗体中添加一个命令按钮,名称为Command1,然后编写如下程序: Private Sub Command1_Click() Dim s,i For i=1 To 10 s=s+i Next i MsgBox s End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果为( ).( 2006年4月 填空题第11题) 解析: 因为i=1 To 10,所以s=s+i=1+2+3+4+5+6+7+8+9+10=55。 答案:55 例 10.17 设有如下代码: x=1 do x=x+2 loop until( ) 运行程序,要求循环体执行3次后结束循环,在空白处填入适当语句。(2006年4月 填空题第13题) 解析: 题目要求运行程序后,循环体执行3次后结束循环,循环体执行1次后,X=3;因循 环体执行2次后,x=5;循环体执行3次后,X=7;这时按照题意不再执行循环体,所以 循环语句应该是loop until X=7。 答案:X=7 例 10.18在窗体上有一个文本框控件,名称为Text1。同时,窗体加载时设置其计时器间隔为 1 秒、计时器触发事件过程则实现在Text1 文本框中动态显示当前日期和时间。请补充 完整。(2006年9月 填空题第12题) Private Sub From_Load() Me.Timerinterval,1000 End Sub Private Sub () Me.text1,Now() End Sub 解析: Form_Timer()事件可以根据Me.Timerinterval设置的计时器间隔,执行刷新操作。 答案: form_timer() 例 10.19下面VBA 程序段运行时,内层循环的循环总次数是 ( ) 。(2006年9月 填空第14题) For m,0 To 7 step 3 For n,m-1 To m,1 Next n Next m 解析: 当外层循环变量m等于0时,内层循环为For n=-1 To 1,循环次数是3次;因为外层 循环,步长是3。 当外层循环变量m等于3时,内层循环为For n=2 To 4,循环次数是3次; 当外层循环变量m等于6时,内层循环为For n=5 To 7,循环次数是3次; 因此内层循环的循环总次数是9次。 答案:9 例 10.20在窗体上添加一个命令按钮(名为Command1),然后编写如下事件过程: Private Sub Command1_Click Dim b,k For k,1 to 6 b,23,k Next k MsgBox b,k End Sub 打开窗体后,单击命令按钮,消息框的输出结果是 () 。(2006年9月 填空题第15题) 解析:当循环变量k等于1时,b=23+1=24; 当循环变量k等于2时,b=23+2=25; 当循环变量k等于3时,b=23+3=26; 当循环变量k等于4时,b=23+4=27; 当循环变量k等于5时,b=23+5=25; 当循环变量k等于6时,b=23+6=29; 执行Next k 后 k=6+1=7时,循环结束,循环变量k 等于7,变量b等于29,所以 b+k==29+7=36,消息框的输出结果是36。 答案:36(很多同学在此题上丢分,正确答案是36,而不是35) 在窗体中添加一个名称为Command1 的命令按钮,然后编写如下事件代码: 例 10.21 Private Sub Command1_Click() A,75 if A>60 Then i,1 if A>70 Then i,2 if A>80 Then i,3 if A>90 Then i,4 MsgBox i End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果是________。(2006年9月 选择题第33题) A)1 B)2 C)3 D)4 解析: 当A>70时i,,,由于A=75,所以输出框的输出结果为2 答案: B) 例10.22 在窗体上添加一个命令按钮(名为Command1),然后编写如下事件过程: Private Sub Command1_Click() For i=1 to 4 x=4 For j=1 to 3 x=3 For k=1 to 2 x=x+6 Next k Next j Next i MsgBox x End Sub 打开窗体后,单击命令按钮,消息框的输出结果是( ).[2006年4月 选择题第34题] A).7 B).15 C).157 D).538 解析: 在循环k执行前,因为对x重新付了值,所以最后执行两次x=x+6前,x=3,所以 x=3+6+6=15,选项B正确。 答案:B) 考点11: 过程调用和参数传递 在创建Function或Sub过程时,如果想在调用它们时为过程提供信息,可声明参数.参数为程序、语句 或方法提供附加的信息.参数指定紧跟在过程、语句或方法的名称之后.对于返回数值的Function过程 的方法,应该用括号括上参数. 1.过程调用 子过程的调用形式有两种: Call 子过程名([<实数>]) 或 子过程名([<参数>]) Sub或Function过程中的语句可以利用命名参数来传递给调用的过程. 2.参数传递 在调用过程时,一般主调过程与被调过程之间有数据传递,即将主调过程的实参传递给被调过程的形参,完成实参与形参的结合,然后执行被调过程体。在VB中,实参与形参的结合有两种方法:传址和传值。传址是默认的方法。两种结合方法的区分标志是“ByVal”,形参前加“ByVal”关键字时是传值,否则为传址。 例 10.24假定有如下的Sub过程: Sub sfun(x As Single,y As Single) t=x x=t/y y=t Mod y End Sub 在窗体上添加一个命令按钮(名为Command1),然后编写如下事件过程: Private Sub Command1_Click() Dim a as single Dim b as single a=5 b=4 sfun a,b MsgBox a & chr(10)+chr(13)& b End Sub 打开窗体运行后,单击命令按钮,消息框的两行输出内容分别为( ) .(2006年4月 选择题第35题) A)1和1 B)1.25和1 C)1.25和4 D)5和4转 解析: 因为a=5、b=4,所以执行sfun a,b后,x=1.25,y=1,因此,选项B正确。 答案:B) 例 10.25 Sub 过程与Function 过程最根本的区别是( )。(2006年9月 选择题第29题) A)Sub 过程的过程名不能返回值,而Function 过程能通过过程名返回值 B)Sub 过程可以使用Call 语句或直接使用过程名调用,而Function 过程不可以 C)两种过程参数的传递方式不同 D)Function 过程可以有参数,Sub 过程不可以 (30)在窗体中添加一个命令按钮(名称为Command1),然后编写如下代码: 解析: Sub过程是语句级调用,可以使用Call或直接使用过程名,而Function过程是在表达 式中调用。 答案:B) 例 10.28 在窗体中添加一个名称为Command1 的命令按钮,然后编写如下程序: Public x As integer Private Sub Command1_Click() x,10 Call s1 Call s2 MsgBox x End Sub Private Sub s1() x,x,20 End Sub Private Sub s2() Dim x As integer x,x+20 End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果为( )。(2006年9月 选择题题第35题) A)10 B)30 C)40 D)50 解析: 当x=10,运行s1,x=x+20=30,运行s2时,由于Dim x As integer,重新声明一个sub s2 中的内部变量x,这时内部变量x=0,内部变量x=x+20=20,外部变量x 仍然等于,,。 答案:B) 例10.30在窗体上添加一个名称为C)ommand1的命令按钮,然后编写如下程序: Private Sub (ByVAl p As Integer) p=p*2 End Sub Private Sub Command1_Click() Dim i as Integer i=3 Call s(i) If i>4 Then i=i^2 MsgBox i 窗体打开运行后,单击命令按钮,则消息框的输出结果为_( ).(2006年4月 填空题第12题) 解析: 当i=3时,执行Call s(i)后,i=6,因此i=i^2被执行,所以i=6*6=36。 答案:36 10.4 同步训练 一 选择题 1 在VBA中,如果没有显示声明或用符号来定义变量的数据类型,变量的默认数据类型为( )。 ,(Boolean ,(Int C)(String D)(Variant 2 定义了二维数组,(, to 5,5),该数组的元数个数为( ) 。 A) 20 B) 24 C) 25 D) 36 3下列逻辑表达式中,能正确表示条件“x和y都是奇数”的是( )。A)(x Mod 2=1 Or y Mod 2=1 B)(x Mod 2=0 Or y Mod 2=0 C)(x Mod 2=1 and y Mod 2=1 D)(x Mod 2=0 and y Mod 2=0 4 以下可以得到 ”2*5=10” 结果的VBA表达式为( )。 A)(”2*5”&”=”&2*5 ,)”2*5”+”=”+2*5 ,)2*5&”=”&2*5 ,)2*5+”=”+2*5 5 以下关于VBA运算符优先级比较,正确的是( )。 A) 算术运算符>逻辑运算符>比较运算符 B) 逻辑运算符>比较运算符>算术运算符 C) 算术运算符>比较运算符>逻辑运算符 D). 以上均是错误的 6 以下程序段运行后,消息框的输出结果是_( )。,A=sqr(3); B=sqr(2); C=A>B; MsgBox C+2 A) ,1 B) , C) , D) 出错 7 用于获取字符串Str从第2个字符开始的3个字符的函数是( )。 A).Mid(Str,2,3) B).Middle(Str,2,3) C).Right(Str,2,3) D).Left(Str,2,3) 8 假定有以下循环结构 Do Until 条件 循环体 Loop 则正确的叙述是( ).[2005年9月 选择题第33题] A).如果"条件"值为0,则一次循环体也不执行 B).如果"条件"值为0,则至少执行一次循环体 C).如果"条件"值不为0,则至少执行一次循环体 D).无论"条件"是否为0,则至少执行一次循环体 9 假定有以下程序段 n=0 for i=0 to 3 for j=-4 to -1 n=n+1 next j next i 运行完毕后,n的值是(). A).0 B).3 C).4 D).12 二、 填空题 1某个窗体以编写以下事件过程。打开窗体运行后,单击窗体,消息框的输出结果为_( )。 Pirvate Sub Form_Click() Dim k As Integer,n As Integer,m As Integer N=10:m=1:k=1 Do While k<=n m=m*2 k=k+1 Loop MsgBox m End Sub 2 在窗体上添加一个命令按钮(名为Command1),然后编写如下程序: Function m(x As Integer,y As Integer) As Integer M=Iif(x>y,x,y) End Function Private Sub Command1_Click() Dim a As Integer, b As Integer a=1 b=2 MsgBox m(a,b) End Sub 打开窗体运行后,单击命令按钮,消息框中输出结果为( )。 3 以下是一个竞赛评分程序。8位评委,去掉一个最高分和一个最低分,计算平均分(设满分为10分)。请填空补充完整。 Private Sub Form_Click() Dim Max As Integer,Min As Integer Dim I As Integer,x As Integer,s As Integer Dim p As Single Max=0 Min=10 For I =1 To 8 x=Val(InputBox(“请输入分数:”)) If( )Then Max=x If( )Then Min=x S=s+x Next I s=( ) p= s / 6 MsgBox “最后得分:”& p End Sub 4 设有以下窗体单击事件过程: Private Sub Form_Click() a=1 For I=1 to 3 Select Case I Case 1,3 a=a+1 Case2,4 a=a+2 End Select Next I Msgbox a End Sub 打开窗体运行后,单击窗体则消息框的输出内容【( )。 5 在窗体中添加一个命令按钮(名为Command1)和一个文本框(名为Text1),然后编写如 下事件过程: Private Sub Command1_Click() Dim x As Integer,z As Integer X=5:y=7:z=0 Me!Text1=”” Call p l(x,y,z) Me!text1=z End Sub Sub p l(a As Integer, b As Ingeter, c As Integer) C=a+b End Sub 打开窗体运行后,单击命令按钮,文本框中显示的内容是( ) 6 有一个VBA计算程序的功能如下,该程序用户界面由4个文本框和3个按钮组成。4个文本框的名称分别为:Text1、Text2、Text3和Text4。3个按钮分别为:清楚(名为Command1)、计算(名为Command2)和退出(名为Command3)。窗体打开运行后,单击清除所有文本框中显示的内容;单击计算机按钮,则计算在Text1、Text2和Text3三个文本框中输入的3科成绩的平均成绩并将结果存放在Text4文本框中;单击退出按钮则退出。请将下列程序填空补充完整。 Private Sub Command1_Click() Me!Text1=”” Me!Text2=”” Me!Text3=”” Me!Text4=”” End Sub Private Sub Command2_Click() If Me!Text1=””Or Me!Text2=””Or Me!Text3=”then MsgBox “成绩输入不全” Else Me!Text4=(( )+Val(Me!Text2)+Val(Me!Text3)/3( ) Een Sub Private Sub Command3_Click() Docmd. ( ) End Sub 7 执行下面的程序,消息框里显示的结果是( ) Option Base 1 Private Sub Command1_Click() Dim A(10),p(3) As Integer k=5 For i=1 to 10 A(i)=i Next i For i=1 to 3 p(i)=A(i*i) Next i For i=1 to 3 k=k+p(i)*2 Next i MsgBox k End Sub 8 执行下面的程序,消息框里显示的结果是( ) Private Sub From_Click() Dim Str As String,k As Integer Str="AB" For K=Len(Str) to 1 step -1 Str=Str&C)hr(AsC)(Str,k,l))+k) Next k MsgBox Str End Sub 10.5 解析与答案 一 选择题 1答案:D) 2答案:B) 3解析: 要使x和y除以2的余数都是必须是1。 答案:C) 4解析: VBA中字符串要用引号("")引起来,而算术表达式不需要引号。VBA中有两个字 符串连接符:“&”和“+”。“&”用来强制两个表达式作字符串连接,“+”运算符 是当两个表达式均为字符串数据时,才将两个字符串连接成一个新字符串。 答案: A) 5答案:,) 6解析: 题中a>b返回True,即c=True,而在算术表达式中,True作为-1来处理,故消息框 中输出的结果为1。 答案:,) 7解析: 函数Mid的语法为:Mid(string,start[,length]),string表示操作的字符串,start 表示所取字符的开始位置,length表示所取字符的长度。本题中要求从Str的第2 个字符开始取3个字符,故语为Mid(Str2,3)。而Right和Left语句都只有两个 参数,Middle函数不存在。 答案:A) 8解析: Do…Until…Loop循环结构中,当条件值为假时,重复执行循环体,直至条件为真, 结束循环。所以,如果条件值为0,则至少执行一次循环体。 答案:B) 9解析: 本题中,外层循环从1到3,要执行3次,而内层循环从-4到-1,执行4次,所以4 次,所以一共执行了4*3=12次循环,而每执行一次循环n就加1,所以最后通n的 值为12。 答案:D) 二 填空题 1解析: Do While语句是先判断条件,如果条件为True,则执行循环体。本题中的条件表 达式是k<=n,而刚开始k=1,n=10,而循环依次k就加1,故一共要执行10次循环。 而m每执行一次就乘2,故一共乘10次2,最后m的值为1024。 答案:1024 2解析: IIf函数是根据第一个表达工的值来取值,如果第一个表达工为True,则返回第二 个参数,如果为False,则返回第三个参数。本题中表达式为1>2,结果为False, 故返回2。 答案:2 3解析: 本题中先给最大值变量赋值为0,最小值变量赋值为10。然后把输入的分数X与最 大值和最小值比较,如果x比最大值大,则把赋值给Max;如果x比最小值小,则 把x赋值给Min,故第二空填xMAx x
本文档为【[电脑基础知识]第2章 数据结构和算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_083599
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:336
分类:互联网
上传时间:2017-10-06
浏览量:76