计算机数据库原理与应用

上传人:人*** 文档编号:578710010 上传时间:2024-08-24 格式:PPT 页数:763 大小:3.83MB
返回 下载 相关 举报
计算机数据库原理与应用_第1页
第1页 / 共763页
计算机数据库原理与应用_第2页
第2页 / 共763页
计算机数据库原理与应用_第3页
第3页 / 共763页
计算机数据库原理与应用_第4页
第4页 / 共763页
计算机数据库原理与应用_第5页
第5页 / 共763页
点击查看更多>>
资源描述

《计算机数据库原理与应用》由会员分享,可在线阅读,更多相关《计算机数据库原理与应用(763页珍藏版)》请在金锄头文库上搜索。

1、高职高专计算机系列规划教材 中国计算机学会高职高专教育学组推荐 数据库原理与应用(第3版)靳学辉 龙冬云 杜威 编著电子工业出版社http:/数据库原理与应用l第1章 数据库基础l第2章 关系数据库的基本理论l第3章 关系数据库标准语言SQLl第4章 关系的规范理论l第5章 数据库设计数据库原理与应用l第6章 Visual FoxPro 6.0简介l第7章 使用项目管理器创建表l第8章 数据库与数据库表l第9章 结构化程序设计简介l第10章 视图与查询数据库原理与应用l第11章 面向对象的程序设计l第12章 表单l第13章 报表与标签l第14章 菜单l第15章 综合实例l附录A、B第第1章章数

2、据库基础数据库基础学习要点学习要点1、数据库系统的概念、特点、组成及分类、数据库系统的概念、特点、组成及分类2、信息的三个领域、信息的三个领域3、实体联系模型、数据模型、实体联系模型、数据模型4、层次、网状、关系模型、层次、网状、关系模型5、数据库管理系统的功能、数据库管理系统的功能、现状及发展方向现状及发展方向第第1章章数据库基础数据库基础1.1数据库基础数据库基础1.2数据库系统方法数据库系统方法1.3现实世界的数据描述现实世界的数据描述1.4三种主要的数据模型三种主要的数据模型1.5数据库管理系统数据库管理系统习题及参考答案习题及参考答案1.1数据管理技术的发展数据管理技术的发展 数据处

3、理是指对各种形式的数据进行收集、组织、加工、数据处理是指对各种形式的数据进行收集、组织、加工、存储、抽取、传播等工作。其基本目的是从大量的、杂乱无章存储、抽取、传播等工作。其基本目的是从大量的、杂乱无章的甚至是难以理解的数据中抽取并推导出对于某些特定的人们的甚至是难以理解的数据中抽取并推导出对于某些特定的人们来说是有价值的、有意义的数据,为进一步的活动提供决策的来说是有价值的、有意义的数据,为进一步的活动提供决策的依据。数据管理是指对数据的组织、存储、检索和维护等工作。依据。数据管理是指对数据的组织、存储、检索和维护等工作。所以数据管理是数据处理的基本环节。随着所以数据管理是数据处理的基本环节

4、。随着2020世纪世纪4040年代末电年代末电子计算机的广泛使用,特别是高效率存储设备的出现,使数据子计算机的广泛使用,特别是高效率存储设备的出现,使数据处理工作发生了革命性的改变,不仅加快了处理速度,而且扩处理工作发生了革命性的改变,不仅加快了处理速度,而且扩大了数据处理的规模和范围。这时把电子计算机进行的数据处大了数据处理的规模和范围。这时把电子计算机进行的数据处理称为电子数据处理,简称为理称为电子数据处理,简称为EDPEDP(Electronic Data Electronic Data ProcessingProcessing)。)。1.1.1EDP技术的发展阶段技术的发展阶段随着计算

5、机软件和硬件的发展,随着计算机软件和硬件的发展,EDP技术的发展技术的发展大体上经历了三个阶段。大体上经历了三个阶段。1程序管理方式阶段程序管理方式阶段电子数据处理技术发展的第一阶段(大约在电子数据处理技术发展的第一阶段(大约在1960年以前)为程序管理方式阶段。年以前)为程序管理方式阶段。该阶段数据处理的主要特点是:该阶段数据处理的主要特点是:(1)数据不保存。)数据不保存。(2)数据不能独立,它是程序的组成部分,即数)数据不能独立,它是程序的组成部分,即数据和程序完全结合成一个不可分割的整体。据和程序完全结合成一个不可分割的整体。(3)数据是面向应用的,不同应用的数据之间是)数据是面向应用

6、的,不同应用的数据之间是相互独立、彼此无关的。相互独立、彼此无关的。1.1.1EDP技术的发展阶段技术的发展阶段2文件系统阶段文件系统阶段文件系统阶段的背景是计算机不仅用于科学计算,文件系统阶段的背景是计算机不仅用于科学计算,还大量用于经济管理。还大量用于经济管理。这一阶段的主要特点是:这一阶段的主要特点是:(1)文件的组织方式既可以是顺序的,也可以是)文件的组织方式既可以是顺序的,也可以是随机的。随机的。(2)数据的物理结构不再等同于数据的逻辑结构。)数据的物理结构不再等同于数据的逻辑结构。(3)计算机的文件管理系统提供了数据的存取方)计算机的文件管理系统提供了数据的存取方法。法。(4)数据

7、可以共享,但数据仍存在相当程度的冗)数据可以共享,但数据仍存在相当程度的冗余。余。1.1.1EDP技术的发展阶段技术的发展阶段3数据库系统阶段数据库系统阶段利用数据库系统方式实现数据处理是在文件系统的基础上利用数据库系统方式实现数据处理是在文件系统的基础上发展起来的先进技术。它克服了文件系统的弱点,提供了一个发展起来的先进技术。它克服了文件系统的弱点,提供了一个完美的、高级的数据处理技术,以实现对数据集中统一的独立完美的、高级的数据处理技术,以实现对数据集中统一的独立管理,使数据的存储和维护不受任何用户的影响。管理,使数据的存储和维护不受任何用户的影响。数据库系统的目标是:解决数据冗余问题,实

8、现独立性,数据库系统的目标是:解决数据冗余问题,实现独立性,实现数据共享并解决由于数据共享而带来的数据完整性、安全实现数据共享并解决由于数据共享而带来的数据完整性、安全性及并发控制等一系列问题。为实现这一目标,数据库的运行性及并发控制等一系列问题。为实现这一目标,数据库的运行必须由一个软件系统来控制,这个软件系统称为数据库管理系必须由一个软件系统来控制,这个软件系统称为数据库管理系统(统(DatabaseManagementSystem,简称简称DBMS)。)。1.1.2数据库技术的发展数据库技术的发展数据库技术是计算机科学技术中发展最快的数据库技术是计算机科学技术中发展最快的分支。分支。20

9、世纪世纪70年代以来,数据库系统从第一年代以来,数据库系统从第一代的网状和层次数据库系统发展到第二代的关代的网状和层次数据库系统发展到第二代的关系数据库系统。目前现代数据库系统正向着面系数据库系统。目前现代数据库系统正向着面向对象数据库系统发展,并与网络技术、分布向对象数据库系统发展,并与网络技术、分布式计算、面向对象程序设计技术相结合。式计算、面向对象程序设计技术相结合。第一代数据库系统为网状和层次数据库系统。第一代数据库系统为网状和层次数据库系统。1.1.2数据库技术的发展数据库技术的发展第二代数据库系统为关系数据库系统(第二代数据库系统为关系数据库系统(RelationalDatabas

10、eSystem,简称简称RDBS)。)。1970年年IBM公司研公司研究员究员E.F.Codd发表的关于关系模型的论文推动了关系发表的关于关系模型的论文推动了关系数据库系统的研究和开发。尤其关系数据库标准语言数据库系统的研究和开发。尤其关系数据库标准语言结构化查询语言结构化查询语言SQL的提出使关系数据库系统得的提出使关系数据库系统得到了广泛的应用。到了广泛的应用。目前市场上的主流数据库产品包括目前市场上的主流数据库产品包括Oracle、DB2UDB、Sybase、SQLServer、FoxPro等,这些产品都等,这些产品都基于关系数据模型。基于关系数据模型。1.1.2数据库技术的发展数据库技

11、术的发展根据第三代数据库系统宣言提出的原则,第三代数根据第三代数据库系统宣言提出的原则,第三代数据库系统除应包含第二代数据库系统的功能外,还应据库系统除应包含第二代数据库系统的功能外,还应支持正文、图像、声音等新的数据类型,支持类、继支持正文、图像、声音等新的数据类型,支持类、继承、函数承、函数/服务器应用的用户接口。数据挖掘和知识发服务器应用的用户接口。数据挖掘和知识发现技术也应运而生。现技术也应运而生。数据库技术的研究范围是十分广泛的,可以概括数据库技术的研究范围是十分广泛的,可以概括为三个主要领域。为三个主要领域。(1)数据库管理系统软件的研制)数据库管理系统软件的研制(2)数据库设计)

12、数据库设计(3)数据库理论)数据库理论1.2数据库系统方法数据库系统方法1.2.1数据库系统的概念数据库系统的概念数据、数据库、数据库系统、数据库管理系统是数据库技数据、数据库、数据库系统、数据库管理系统是数据库技术中常用的术语。术中常用的术语。1数据(数据(Data)数据实际上就是描述事物的符号记录,如文字、图形图像、数据实际上就是描述事物的符号记录,如文字、图形图像、声音、学生的档案记录声音、学生的档案记录都是数据。数据的形式本身并不能都是数据。数据的形式本身并不能完全表达其内容,需要经过语义解释。数据与其语义是不可分完全表达其内容,需要经过语义解释。数据与其语义是不可分的。的。2数据库(

13、数据库(Database,简称简称DB)数据库是长期存储在计算机内有结构的大量的共享的数据数据库是长期存储在计算机内有结构的大量的共享的数据集合。它可以供各种用户共享、具有最小冗余度和较高的数据集合。它可以供各种用户共享、具有最小冗余度和较高的数据独立性。独立性。1.2.1数据库系统的概念数据库系统的概念3数据库管理系统(数据库管理系统(DatabaseManagementSystem,简称简称DBMS)数据库管理系统是位于用户与操作系统之间的一数据库管理系统是位于用户与操作系统之间的一个以统一的方式管理、维护数据库中数据的一系列软个以统一的方式管理、维护数据库中数据的一系列软件的集合。件的集

14、合。DBMS在操作系统的支持与控制下运行,在操作系统的支持与控制下运行,按功能按功能DBMS可分为三大部分。可分为三大部分。(1)语言处理部分)语言处理部分(2)系统运行控制部分)系统运行控制部分(3)系统维护部分)系统维护部分1.2.1数据库系统的概念数据库系统的概念4数据库系统(数据库系统(DatabaseSystem,简称简称DBS)数据库系统是指在计算机系统中引进数据库后的数据库系统是指在计算机系统中引进数据库后的系统构成。一般由数据库、数据库管理系统(及其开系统构成。一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。发工具)、应用系统、数据库管理员和用户

15、构成。5数据库管理员(数据库管理员(DatabaseAdministrator,简称简称DBA)数据库管理员是负责数据库的建立、使用和维护数据库管理员是负责数据库的建立、使用和维护的专门人员。的专门人员。1.2.2数据库系统的特点数据库系统的特点1数据结构化数据结构化2数据的共享性数据的共享性3可控数据冗余度可控数据冗余度4数据的一致性数据的一致性5物理独立性物理独立性1.2.2数据库系统的特点数据库系统的特点6逻辑独立性逻辑独立性7数据的安全性数据的安全性8数据的完整性数据的完整性9并发控制并发控制10数据库恢复数据库恢复1.2.3数据库系统的组成与结构数据库系统的组成与结构1组成成分组成成

16、分一个数据库系统一般应包含四个部分:一个数据库系统一般应包含四个部分:(1)数据和应用程序。)数据和应用程序。(2)数据库管理系统。)数据库管理系统。(3)支持数据库系统的硬件和软件。)支持数据库系统的硬件和软件。(4)系统人员和用户。)系统人员和用户。1.2.3数据库系统的组成与结构数据库系统的组成与结构图图1-1带有数据库的计算机系统的构成带有数据库的计算机系统的构成1.2.3数据库系统的组成与结构数据库系统的组成与结构数据库管理员主要任务是:数据库管理员主要任务是:决定数据库的信息内容。决定数据库的信息内容。充当数据库系统与用户的联络员。充当数据库系统与用户的联络员。决定数据存储结构和访

17、问策略。决定数据存储结构和访问策略。决定数据库的保护策略。决定数据库的保护策略。监视系统的工作,响应系统的某些变化,监视系统的工作,响应系统的某些变化,改善系统的改善系统的“时空时空”性能,提高系统的效率。性能,提高系统的效率。1.2.3数据库系统的组成与结构数据库系统的组成与结构2数据库系统的分级结构数据库系统的分级结构ANSI(美国国家标准学会)所属标准计划和要求美国国家标准学会)所属标准计划和要求委员会(委员会(StandardsPlanningAndRequirementsCommittee,简称简称SPARC)在在1975年公布的研究报告年公布的研究报告InterimReport中,

18、把数据库分为三级:外模式中,把数据库分为三级:外模式(ExternalSchema)、)、概念模式(概念模式(ConceptualSchema)、)、内模式(内模式(InternalSchema)。)。不管实际的不管实际的数据库系统有多大差异,它们的基本结构大体上是一数据库系统有多大差异,它们的基本结构大体上是一致的,都可用这一分级结构来表示。致的,都可用这一分级结构来表示。1.2.3数据库系统的组成与结构数据库系统的组成与结构图图1-2数据库系统三级结构的相互关系数据库系统三级结构的相互关系1.2.3数据库系统的组成与结构数据库系统的组成与结构用户级数据库对应于外模式,是用户看到和使用的用户

19、级数据库对应于外模式,是用户看到和使用的数据库,因此也称为用户视图数据库,因此也称为用户视图(View)。概念级数据库对应于概念模式,简称模式,是对数概念级数据库对应于概念模式,简称模式,是对数据库的整体逻辑描述(故称数据库的整体逻辑结构),据库的整体逻辑描述(故称数据库的整体逻辑结构),通常又称通常又称DBA视图。即数据库管理员看到的数据库,视图。即数据库管理员看到的数据库,是所有用户视图的一个最少并集。是所有用户视图的一个最少并集。物理级数据库对应于内模式,又称存储模式。它包物理级数据库对应于内模式,又称存储模式。它包含数据库的全部存储数据,这些被存储在内、外介质含数据库的全部存储数据,这

20、些被存储在内、外介质上的数据也称为原料(上的数据也称为原料(Raw)数据,是用户加工(或数据,是用户加工(或操作)的对象。操作)的对象。1.2.3数据库系统的组成与结构数据库系统的组成与结构3模式(模式(Schema)模式又称概念模式(模式又称概念模式(ConceptualSchema)或数据或数据库模式(库模式(DatabaseSchema)。)。它是数据库数据的总体它是数据库数据的总体逻辑描述,用于对数据库逻辑结构和内容所进行的描逻辑描述,用于对数据库逻辑结构和内容所进行的描述。由此可知,模式的主体是数据库的数据模型。述。由此可知,模式的主体是数据库的数据模型。4子模式(子模式(Subsc

21、hema)子模式又叫局部模式。它描述局部或用户的逻辑子模式又叫局部模式。它描述局部或用户的逻辑数据结构。子模式是模式的一个子集,并允许在一定数据结构。子模式是模式的一个子集,并允许在一定范围内有所变化。范围内有所变化。1.2.4数据库系统的分类数据库系统的分类1987年,著名的美国数据库专家厄尔曼年,著名的美国数据库专家厄尔曼(J.D.Ullman)教授在一篇题为数据库理论的过去教授在一篇题为数据库理论的过去和未来的论文中,把数据库理论概括为和未来的论文中,把数据库理论概括为4个分支:关个分支:关系数据库理论、分布式数据库理论、演绎数据库和面系数据库理论、分布式数据库理论、演绎数据库和面向对象

22、数据库。今天,关系数据库理论已日趋成熟,向对象数据库。今天,关系数据库理论已日趋成熟,在微机数据库系统中获得普遍的应用;在微机数据库系统中获得普遍的应用;ORDBS已发展已发展为第三代数据库系统的主流。其余两个分支为第三代数据库系统的主流。其余两个分支分布分布式数据库和智能数据库也在过去式数据库和智能数据库也在过去10年间取得了不小的年间取得了不小的进展,扩大了应用范围。进展,扩大了应用范围。1.2.4数据库系统的分类数据库系统的分类1单用户数据库和多用户数据库单用户数据库和多用户数据库2集中式数据库和分布式数据库集中式数据库和分布式数据库3传统数据库和智能数据库传统数据库和智能数据库1.3现

23、实世界的数据描述现实世界的数据描述1.3.1信息的三个领域信息的三个领域作为客观世界的一切真知的信息从客观事作为客观世界的一切真知的信息从客观事物出发,经过筛选流经数据库,通过控制决策物出发,经过筛选流经数据库,通过控制决策机构又回到客观事物。信息的这一循环经历了机构又回到客观事物。信息的这一循环经历了三个领域:三个领域:1现实世界(现实世界(RealWorld)2观念世界(观念世界(ConceptionWorld)3数据世界(数据世界(DataWorld)1.3.2常用术语常用术语1实体(实体(Entity)2个体(个体(Individual)和总体和总体(Ensemble)3属性(属性(A

24、ttribute)4实体集(实体集(EntirySet)5域(域(Domain)1.3.2常用术语常用术语6键(键(Key)7联系(联系(Relationship)8实体型(实体型(EntityType)9实体联系方法(实体联系方法(EntityRelationshipApproach)10实体联系图(实体联系图(EntityRelationshipDiagram)1.3.3实体联系模型实体联系模型两个实体集之间的联系可分为三类。两个实体集之间的联系可分为三类。1一对一联系(一对一联系(One-to-one)1.3.3实体联系模型实体联系模型2一对多联系(一对多联系(One-to-many)1

25、.3.3实体联系模型实体联系模型3多对多联系(多对多联系(Many-to-many)1.3.3实体联系模型实体联系模型图图1-6教学情况的实体联系模型教学情况的实体联系模型1.3.4数据模型数据模型数据模型是对客观事物及其联系的数据描述,数据模型是对客观事物及其联系的数据描述,是实体联系模型的数据化。数据库设计的核心是实体联系模型的数据化。数据库设计的核心问题之一就是要设计一个好的数据模型。因此,问题之一就是要设计一个好的数据模型。因此,应了解以下与数据模型设计有关的问题。应了解以下与数据模型设计有关的问题。1记录与数据项记录与数据项2型与值型与值3记录与文件记录与文件1.3.4数据模型数据模

26、型图图1-7信息的三个领域中有关术语及其对应关系信息的三个领域中有关术语及其对应关系1.3.4数据模型数据模型4数据模型数据模型数据模型是一种形式化描述数据、数据之间联系数据模型是一种形式化描述数据、数据之间联系以及有关语义约束的方法,是数据库系统中用以提供以及有关语义约束的方法,是数据库系统中用以提供信息表示和操作手段的形式框架。它包括能精确描述信息表示和操作手段的形式框架。它包括能精确描述系统的静态结构(数据结构)、动态结构(数据操作)系统的静态结构(数据结构)、动态结构(数据操作)和完整性约束条件三部分。和完整性约束条件三部分。(1)数据结构)数据结构(2)数据操作)数据操作(3)完整性

27、约束条件)完整性约束条件1.4三种主要的数据模型三种主要的数据模型1.4.1层次模型层次模型层次模型是数据库系统中最常用的数据模型之一。它属于层次模型是数据库系统中最常用的数据模型之一。它属于格式化数据模型。这种模型的特征是:格式化数据模型。这种模型的特征是:(1)有且仅有一个节点无双亲,这个节点称为根节点。)有且仅有一个节点无双亲,这个节点称为根节点。(2)其他节点有且仅有一个双亲。)其他节点有且仅有一个双亲。1.4.2网状模型网状模型网状模型又叫网络模型,它也属于格式化数网状模型又叫网络模型,它也属于格式化数据模型。广义讲,任意一个连通的基本层次联据模型。广义讲,任意一个连通的基本层次联系

28、的集合就是一个网状模型。这种广义的提法系的集合就是一个网状模型。这种广义的提法把树也包含在网状模型之中。为了与树相区别,把树也包含在网状模型之中。为了与树相区别,将满足下列条件的基本层次联系的集合称为网将满足下列条件的基本层次联系的集合称为网状模型:状模型:(1)可以有一个以上的节点无双亲。)可以有一个以上的节点无双亲。(2)至少有一个节点有多于一个的双亲。)至少有一个节点有多于一个的双亲。1.4.2网状模型网状模型层次模型与网状模型不同之处主要有三点:层次模型与网状模型不同之处主要有三点:(1)层次模型中从子女到双亲的联系是惟一的,)层次模型中从子女到双亲的联系是惟一的,而网状模型则可以不惟

29、一。而网状模型则可以不惟一。1.4.2网状模型网状模型(2)网状模型中允许使用复合链,层次模型则不可以。即)网状模型中允许使用复合链,层次模型则不可以。即两个记录型之间可以有两种以上的联系,两个记录型之间可以有两种以上的联系,(3)寻找记录时,层次模型必须从根找起,网状模型允许)寻找记录时,层次模型必须从根找起,网状模型允许从任一节点找起,经过指定的系名,就能在整个网内找到所需从任一节点找起,经过指定的系名,就能在整个网内找到所需的记录。的记录。1.4.3关系模型关系模型关系模型有不同于格式化模型的风格和理论关系模型有不同于格式化模型的风格和理论基础。总的来说,它是一种数学化的模型。基础。总的

30、来说,它是一种数学化的模型。关系模型的基本组成是关系。它把记录集合定关系模型的基本组成是关系。它把记录集合定义为一张二维表,即关系。表的每一行是一个义为一张二维表,即关系。表的每一行是一个记录,表示一个实体,也称为一个元组。每一记录,表示一个实体,也称为一个元组。每一列是记录中的一个数据项,表示实体的一个属列是记录中的一个数据项,表示实体的一个属性。性。1.5数据库管理系统数据库管理系统数据库管理系统(数据库管理系统(DBMS)是一个非常复杂是一个非常复杂的系统软件,是为数据库的建立、使用和维护的系统软件,是为数据库的建立、使用和维护而配置的。它把用户程序的数据操作语句转换而配置的。它把用户程

31、序的数据操作语句转换成对系统存储文件的操作;它又像一个向导,成对系统存储文件的操作;它又像一个向导,把用户对数据库的一次访问,从用户级带到概把用户对数据库的一次访问,从用户级带到概念级,再导向物理级。念级,再导向物理级。1.5.1数据库管理系统的功能数据库管理系统的功能DBMS是指创建、管理和使用数据库的软件系统。是指创建、管理和使用数据库的软件系统。DBMS是是数据库系统的核心,是位于操作系统和用户之间的数据库管理数据库系统的核心,是位于操作系统和用户之间的数据库管理软件。软件。不同的不同的DBMS所要求的硬件资源和软件环境各不相同,在功所要求的硬件资源和软件环境各不相同,在功能和性能上也存

32、在一定的差异,但都包括以下功能。能和性能上也存在一定的差异,但都包括以下功能。1定义功能定义功能2操纵功能操纵功能3保护功能保护功能4维护功能维护功能5数据字典功能数据字典功能1.5.2数据库管理系统现状和发展方向数据库管理系统现状和发展方向数据库管理系统经历了数据库管理系统经历了30多年的发展演变,已经多年的发展演变,已经取得了辉煌的成就,发展成了一门内容丰富的学科,取得了辉煌的成就,发展成了一门内容丰富的学科,形成了总量达数百亿美元的一个软件产业。根据形成了总量达数百亿美元的一个软件产业。根据GartnerDataquest公司的调查,公司的调查,2000年国际数据库市年国际数据库市场销售

33、总额达场销售总额达88亿美元,比亿美元,比1999年增长年增长10%。根据。根据CCID的报告,的报告,2000年的中国数据库管理系统市场销售年的中国数据库管理系统市场销售总额达总额达24.8亿元,比亿元,比1999年增长了年增长了41.7%,占软件市场,占软件市场总销售额的总销售额的10.8%。可见,数据库已经发展成为一个。可见,数据库已经发展成为一个规模巨大、增长迅速的市场。规模巨大、增长迅速的市场。1.5.2数据库管理系统现状和发展方向数据库管理系统现状和发展方向目前,市场上具有代表性的数据库产品包括目前,市场上具有代表性的数据库产品包括Oracle公司的公司的Oracle、IBM公司的

34、公司的DB2以及微软的以及微软的SQLServer、VisualFoxPro等。在一定意义上,这些产品等。在一定意义上,这些产品的特征反映了当前数据库产业界的最高水平和发展趋的特征反映了当前数据库产业界的最高水平和发展趋势。势。1关系数据库技术仍然是主流关系数据库技术仍然是主流2产品形成系列化产品形成系列化3支持各种互联网应用支持各种互联网应用4向智能化、集成化方向扩展向智能化、集成化方向扩展习习题题1选择题选择题(1)现实世界中客观存在并可相互区别的)现实世界中客观存在并可相互区别的“事物事物”被称为被称为_。A.属性属性B.实体实体C.数据数据D.键键(2)属性所取的值的变化范围,即同一实

35、体集中各实体同一属性具有的值)属性所取的值的变化范围,即同一实体集中各实体同一属性具有的值在一定范畴之间,这一范畴称为该属性的在一定范畴之间,这一范畴称为该属性的_。A.键键B.域(或称值域)域(或称值域)C.实体实体D.项项(3)一个属性值或一组属性值如能惟一标识该实体集中的各实体,则称为)一个属性值或一组属性值如能惟一标识该实体集中的各实体,则称为该实体的该实体的_。A.实体实体B.项项C.键键D.数据数据(4)实体相互之间关系的抽象表示被称为)实体相互之间关系的抽象表示被称为_,即现实世界中事物之,即现实世界中事物之间的语义关系。间的语义关系。A.项项B.键键C.数据数据D.联系联系(5

36、)_是表示实体固有特性的若干属性的集合。是表示实体固有特性的若干属性的集合。A.实体型实体型B.键键C.实体实体D.表表习习题题2填空题填空题(1)用户级数据库对应于)用户级数据库对应于_,是用户看到和使用的数据库,因此也,是用户看到和使用的数据库,因此也称为用户视图。称为用户视图。(2)_是实体中的一级,指单个的能相互区别的特定实体。是实体中的一级,指单个的能相互区别的特定实体。(3)同一类型的实体集合被称为)同一类型的实体集合被称为_,即具有同一类属性的客观存在,即具有同一类属性的客观存在的事物的集合。的事物的集合。(4)两个实体之间的联系一般可分为三类,它们分别是)两个实体之间的联系一般

37、可分为三类,它们分别是_、_、_。(5)由于实体分为总体与个体两级,所以它的数据也分为)由于实体分为总体与个体两级,所以它的数据也分为_与与_两级。两级。(6)实际的数据库系统所支持的主要数据模型有)实际的数据库系统所支持的主要数据模型有_、_、_。参考答案参考答案1、(、(1)B(2)B(3)C(4)D(5)A2、(、(1)外模式(外模式(2)个体()个体(3)实体集)实体集(4)一对一联系、一对多联系、多对多联系)一对一联系、一对多联系、多对多联系(5)型、值)型、值(6)层次模型、网状模型、关系模型)层次模型、网状模型、关系模型第第2章章关系数据库的基本理论关系数据库的基本理论学习要点学

38、习要点1、关系数据结构、关系操作和完整性约束、关系数据结构、关系操作和完整性约束2、关系数据结构的数学定义、关系数据结构的数学定义3、关系的性质、关系系统、关系的性质、关系系统4、实体完整性、参照完整性、实体完整性、参照完整性5、用户定义的完整性、用户定义的完整性6、关系代数、关系代数第第2章章关系数据库的基本理论关系数据库的基本理论2.1关系模型概述关系模型概述2.2关系数据结构关系数据结构2.3关系的完整性关系的完整性2.4关系代数关系代数第第2章章关系数据库的基本理论关系数据库的基本理论关关系系数数据据库库系系统统具具有有独独特特的的风风格格,概概括括起起来来有以下五个特点。有以下五个特

39、点。(1)简单明了的数据模型。)简单明了的数据模型。(2)具有严谨的理论基础。)具有严谨的理论基础。(3)实实体体表表示示方方法法和和实实体体之之间间联联系系的的表表示示方法一致。方法一致。(4)处理多对多的联系方便。)处理多对多的联系方便。(5)使用的关系数据语言功能强大。)使用的关系数据语言功能强大。2.1关系模型概述关系模型概述关关系系模模型型是是关关系系数数据据库库的的基基础础。关关系系模模型型由由数数据据结结构、关系操作集合和完整性约束三部分组成。构、关系操作集合和完整性约束三部分组成。2.1.1关系数据结构关系数据结构关关系系模模型型的的数数据据结结构构非非常常单单一一,在在用用户

40、户看看来来,关关系系模模型型中中数数据据的的逻逻辑辑结结构构是是一一张张二二维维表表。但但关关系系模模型型的的这这种种简简单单的的数数据据结结构构能能够够表表达达丰丰富富的的语语义义,描描述述出出现现实世界的实体以及实体间的各种联系。实世界的实体以及实体间的各种联系。2.1.2关系操作关系操作关关系系操操作作采采用用集集合合操操作作方方式式,即即操操作作的的对对象象和和结结果果都都是是集集合合。这这种种操操作作方方式式也也称称为为一一次次一一个集合的方式。个集合的方式。关关系系模模型型中中常常用用的的关关系系操操作作有有两两类类,一一是是查查询询操操作作,包包括括选选择择、投投影影、连连接接、

41、除除、并并、交交、差等;二是增、删、改操作。差等;二是增、删、改操作。表达(或描述)关系操作的关系数据语言可表达(或描述)关系操作的关系数据语言可以分为三类,具体分类情况如下:以分为三类,具体分类情况如下:2.1.2关系操作关系操作(1)关系代数)关系代数关关系系代代数数是是用用对对关关系系的的运运算算来来表表达达查查询询要要求的方式。求的方式。(2)关系演算)关系演算关系演算是用谓词来表达查询要求的方式。关系演算是用谓词来表达查询要求的方式。(3)介介于于关关系系代代数数和和关关系系演演算算之之间间的的语语言言SQL(StandardQueryLanguage)2.1.3完整性约束完整性约束

42、关关系系模模型型提提供供了了丰丰富富的的完完整整性性控控制制机机制制,允允许许定定义义三三类类完完整整性性:实实体体完完整整性性、参参照照完完整整性性和和用用户户定定义义的的完完整整性性。其其中中实实体体完完整整性性和和参参照照完完整整性性是是关关系系模模型型必必须须满满足足的的完完整整性性约约束束条条件件,应该由关系系统自动支持。应该由关系系统自动支持。2.2关系数据结构关系数据结构因因为为关关系系模模型型是是建建立立在在集集合合代代数数的的基基础础上上的的,所所以以本本节节从从集集合合论论角角度度给给出出关关系系数数据据结结构构的的形形式化定义。式化定义。2.2.1数学定义数学定义关关系系

43、的的理理论论基基础础是是集集合合代代数数理理论论。关关系系通通常常用用二二维维表表来来表表示示,现现用用集集合合代代数数给给出出关关系系的的定定义。义。2.2.1数学定义数学定义【定义定义2-1】域(域(Domain)是值的集合。是值的集合。例例如如,整整数数、实实数数、A,B,C、长长度度小小于于15个个字字节节的的字字符符的集合、大于的集合、大于0且小于且小于100的正整数等等都可以是域。的正整数等等都可以是域。在关系数据库中,域可以命名。例如:在关系数据库中,域可以命名。例如:姓名张力,李红,王芳,刘吉姓名张力,李红,王芳,刘吉职称高工,工程师,助工,技术员职称高工,工程师,助工,技术员

44、X男,女男,女其其中中,姓姓名名、职职称称、X称称为为域域名名,姓姓名名域域和和职职称称域域各各有有4个个值值,X域有域有2个值,一般称它们的基数分别为个值,一般称它们的基数分别为4、4、2。2.2.1数学定义数学定义【 定定 义义 2-2】 给给 定定 一一 组组 域域 D1,D2,Dn, 则则 D1D2Dn(d1,d2,dn)d1Di,i1,2,n称称为为D1,D2,Dn的的笛笛卡卡尔尔积积。其其中中每每个个(d1,d2,dn)叫叫做做一一个个n元元组组,元元组组中中的的每每个个di是是Di域中的一个值,称为一个分量。域中的一个值,称为一个分量。若若Di(i=1,2,n)为为有有限限集集,

45、其其基基数数(CardinalNumber)为为mi(i=1,2,n),则,则D1D2Dn的基数为:的基数为:m=mi其中,其中,m笛卡尔积的基数;笛卡尔积的基数;mi第第i个域的基数;个域的基数;n域的个数。域的个数。2.2.1数学定义数学定义【 定定 义义 2-3】 给给 定定 一一 组组 域域 D1,D2,Dn, 则则D1D2D3的的子子集集称称为为在在D1D2Dn上上的的关关系系(Relation),记记做做R(D1,D2,Dn),其其中中,R为为关系名关系名,n为关系为关系R的度的度(Degree)或目。或目。2.2.2关系的性质关系的性质数据库中的关系具有下列性质:数据库中的关系具

46、有下列性质:(1)任意两个元组(即两行)不能完全相同。)任意两个元组(即两行)不能完全相同。(2)关关系系中中元元组组(行行)的的次次序序是是不不重重要要的的,可可以以任意交换。任意交换。(3)属属性性(列列)的的次次序序也也是是不不重重要要的的,可可以以任任意意交换。交换。(4)同同一一列列中中的的分分量量必必须须来来自自同同一一个个域域,是是同同类类型的数据。型的数据。(5)属属性性必必须须有有不不同同的的名名称称,但但不不同同的的属属性性可可以以出自相同的域,即它们的分量可以取值于同一个域。出自相同的域,即它们的分量可以取值于同一个域。2.2.3单一的数据结构单一的数据结构关系关系在在关

47、关系系模模型型中中,无无论论是是实实体体还还是是实实体体之之间间的的联联系系均均由由单单一一的的结结构构类类型型即即关关系系来来表表示示。前前面面已已经经给给出出了了域域的的数数学学定定义义,介介绍绍了了n目目关关系系、元元组组、属属性性等等概概念念,下下面介绍键、关系模式、关系数据库等基本概念。面介绍键、关系模式、关系数据库等基本概念。1键键关关系系中中的的某某一一属属性性组组,若若它它的的值值惟惟一一地地标标识识一一个个元元组,则称该属性组为候选键(组,则称该属性组为候选键(CandidateKey)。)。若若一一个个关关系系有有多多个个候候选选键键,则则选选定定其其中中一一个个为为主主键

48、键(PrimaryKey)。)。主键的诸属性称为主属性。主键的诸属性称为主属性。2.2.3单一的数据结构单一的数据结构关系关系2关系模式关系模式关关系系的的描描述述称称为为关关系系模模式式,它它包包括括关关系系名名、组组成成该该关关系系的的诸诸属属性性名名、属属性性向向域域的的映映像像、属属性性间间的的数数据据依依赖赖关关系系等等。本本节节讨讨论论的的关关系系模模式式仅仅由由关关系系名名、诸诸属属性性名名和和属属性性向向域域的的映映像像三三部部分分组组成成。通通常常记记为为R(D1,D2,Dn)。R为为关关系系名名,D1,D2,Dn为为属属性性名名。属属性性向向域域的的映映像像常常用用属属性的

49、类型、长度来说明。性的类型、长度来说明。2.2.3单一的数据结构单一的数据结构关系关系3关系数据库关系数据库对对于于关关系系数数据据库库要要分分清清型型和和值值的的概概念念。关关系系数数据据库库的的型型即即数数据据库库描描述述,它它包包括括若若干干域域的的定定义义以以及及在在这这些些域域上上定定义义的的若若干干关关系系模模式式;数数据据库库的的值值是是这这些些关关系系模模式式在在某某一一时时刻刻对对应应的的关关系系的的集集合合。数数据据库库的的型型亦亦称称为为数数据据库库的的内内涵涵(Intention),数数据据库库的的值值亦亦称称为为数数据据库的外延(库的外延(Extention)。)。关

50、关系系模模式式是是稳稳定定的的,而而关关系系是是随随时时间间不不断断变变化化的的,因为数据库中的数据在不断更新。因为数据库中的数据在不断更新。2.2.4关系系统关系系统关关系系系系统统和和关关系系模模型型是是两两个个密密切切相相关关而而又又不不同同的的概概念念。支支持持关关系系模模型型的的数数据据库库管管理理系系统统称称为为关关系系系系统统。但但是是关关系系模模型型中中并并非非每每一一部部分分都都是是同同等等重重要要的的,所所以以不不苛苛求求完完全全支支持持关关系系模模型型的的系系统统才才能能称称为为关关系系系系统统。因因此此,下下面面给给出出一一个关系系统的最小要求以及分类的定义。个关系系统

51、的最小要求以及分类的定义。2.2.4关系系统关系系统1关系系统的定义关系系统的定义一一个个系系统统可可定定义义为为关关系系系系统统,当当且且仅仅当当它它满满足足以以下两个条件:下两个条件:(1)支持关系数据库(关系数据结构)。)支持关系数据库(关系数据结构)。(2)支支持持选选择择、投投影影和和(自自然然)连连接接运运算算,对对这这些些运运算算不不必必要要求求定定义义任任何何物物理理存存取取路路径径,不不要要求求关关系系系系统统的的选选择择、投投影影、连连接接运运算算和和关关系系代代数数的的相相应应运运算算完全一样,而只要求有等价的这三种运算功能。完全一样,而只要求有等价的这三种运算功能。2.

52、2.4关系系统关系系统2关系系统的分类关系系统的分类按按照照E.F.Codd的的思思想想,可可以以把把关关系系系系统统分分类如下:类如下:(1)最小关系系统)最小关系系统(2)关系上完备的系统)关系上完备的系统(3)全关系系统)全关系系统2.2.4关系系统关系系统3全关系系统的全关系系统的12条基本准则条基本准则【准准则则2-0】一一个个关关系系型型的的DBMS必必须须能能完完全全通通过过它它的关系能力来管理数据库。的关系能力来管理数据库。【准则准则2-1】信息准则。信息准则。【准则准则2-2】保证访问准则。保证访问准则。【准则准则2-3】空值的系统化处理。空值的系统化处理。【准则准则2-4】

53、基于关系模型的动态的联机数据字典。基于关系模型的动态的联机数据字典。【准则准则2-5】统一的数据子语言准则。统一的数据子语言准则。2.2.4关系系统关系系统【准则准则2-6】视图更新准则。视图更新准则。【准则准则2-7】高级的插入、修改和删除操作。高级的插入、修改和删除操作。【准则准则2-8】数据物理独立性。数据物理独立性。【准则准则2-9】数据逻辑独立性。数据逻辑独立性。【准则准则2-10】数据完整性的独立性。数据完整性的独立性。【准则准则2-11】分布独立性。分布独立性。【准则准则2-12】无破坏准则。无破坏准则。2.3关系的完整性关系的完整性关关系系模模型型的的完完整整性性规规则则是是对

54、对关关系系的的某某种种约约束束条条件件。关关系系模模型型中中可可以以有有三三类类完完整整性性约约束束:实实体体完完整整性性、参参照照完完整整性性和和用用户户定定义的完整性。义的完整性。2.3.1实体完整性(实体完整性(EntityIntegrity)一一个个基基本本关关系系通通常常对对应应现现实实世世界界的的一一个个实实体体集集。例例如如学学生生关关系系对对应应于于学学生生的的集集合合。现现实实世世界界中中的的实实体体是是可可区区分分的的,即即它它们们具具有有某某种种惟惟一一性性标标识识。相相应应地地,关关系系模模型型中中以以主主键键作作为为惟惟一一性性标识。主键中的属性即主属性不能取空值。标

55、识。主键中的属性即主属性不能取空值。【规规则则2-1】实实体体完完整整性性规规则则:若若属属性性A是是基基本本关关系系R的的主主属属性,则属性性,则属性A不能取空值。不能取空值。2.3.22.3.2参照完整性参照完整性参照完整性参照完整性(ReferentialIntegrityReferentialIntegrity)现现实实世世界界中中的的实实体体之之间间往往往往存存在在某某种种联联系系,在在关关系系模模型型中中实实体体与与实实体体间间的的联联系系都都是是用用关关系系来来描描述述的的。这这样样就就自自然然存存在在着着关关系与关系间的引用。系与关系间的引用。【定定义义2-4】设设F是是基基本

56、本关关系系R的的一一个个或或一一组组属属性性,但但不不是是关关系系R的的键键,如如果果F与与基基本本关关系系S的的主主键键KS相相对对应应,则则称称F是是基基本本关关系系R的的 外外 键键 ( Foreign Key) , 并并 称称 基基 本本 关关 系系 R为为 参参 照照 关关 系系( Referencing Relation) , 基基 本本 关关 系系 S为为 被被 参参 照照 关关 系系(ReferencedRelation)或或目目标标关关系系(TargetRelation)。关关系系R和和S不一定是不同的关系。不一定是不同的关系。参照完整性规则就是定义外键与主键之间的引用规则。

57、参照完整性规则就是定义外键与主键之间的引用规则。2.3.22.3.2参照完整性(参照完整性(参照完整性(参照完整性(ReferentialIntegrityReferentialIntegrity)【规规则则2-2】参参照照完完整整性性规规则则:若若属属性性(或或属属性性组组)F是是基基本本关关系系R的的外外键键,它它与与基基本本关关系系S的的主主键键KS相相对对应应(基基本本关关系系R和和S不不一一定定是是不不同同的的关关系系),则则对对于于R中中每每个个元元组组在在F上上的的值值必必须须为为:或或者者取取空空值值(F的的每每个个属属性性值值均均为为空空值值),或者等于或者等于S中某个元组的

58、主键值。中某个元组的主键值。2.3.32.3.3用户定义的完整性(用户定义的完整性(用户定义的完整性(用户定义的完整性(User-definedIntegrityUser-definedIntegrity)实实体体完完整整性性和和参参照照完完整整性性适适用用于于任任何何关关系系数数据据库库系系统统。除除此此之之外外,不不同同的的关关系系数数据据库库系系统统根根据据其其应应用用环环境境的的不不同同,往往往往还还需需要要一一些些特特殊殊的的约约束束条条件件,用用户户定定义义的的完完整整性性就就是是针针对对某某一一具具体体关关系系数数据据库库的的约约束束条条件件,它它反反映映某某一一具具体体应应用用

59、所所涉涉及及的的数数据据必必须须满满足足的的语语义义要要求求。关关系系模模型型应应提提供供定定义义和和检检验验这这类类完完整整性性的的机机制制,以以便便用用统统一一的的系系统统的的方方法法处处理理它它们们,而而不不要要由由应应用程序承担这一功能。用程序承担这一功能。2.4关系代数关系代数关关系系运运算算是是用用来来表表达达查查询询的的语语言言,根根据据所所依依据据的的理理论论基基础础的的不不同同分分为为两两类类,分分别别称称为为关关系系代代数数语语言言和和关关系系演演算算语语言言。关关系系代代数数语语言言是是以以集集合合运运算算为为基基础础的的语语言言,关关系系演演算算语语言言是是以以谓谓词词

60、演算为基础的语言。演算为基础的语言。(1)并()并(Union)设设R和和S为为n元元关关系系(“n元元”指指关关系系模模式式中中属属性性的的数数目目为为n),并且两者对应属性的数据类型也相同。则并且两者对应属性的数据类型也相同。则R和和S的并记为:的并记为:RS=t tRtS结果由属于结果由属于R和属于和属于S的元组组成,的元组组成,仍为仍为n元关系。元关系。2.4关系代数关系代数(2)交()交(Intersection)设设R和和S为为n元元关关系系,并并且且两两者者对对应应属属性性的的数数据据类类型型也也相相同同。则则R和和S的交记为:的交记为:RS=t tRtS结果由既属于结果由既属于

61、R又属于又属于S的元组组成,仍为的元组组成,仍为n元关系。元关系。(3)差()差(Difference)设设R和和S为为n元元关关系系,并并且且两两者者对对应应属属性性的的数数据据类类型型也也相相同同。则则R和和S的差记为:的差记为:R-S=t tRtS结果由属于结果由属于R而不属于而不属于S的元组组成,仍为的元组组成,仍为n元关系。元关系。2.4关系代数关系代数(4)笛卡尔积()笛卡尔积(Product)设设R为为n元元关关系系,S为为m元元关关系系,R和和S的的笛笛卡卡尔尔积积是是一一个个n+m列列的的元元组组的的集集合合。其其中中,任任意意一一个个元元组组的的前前n列列是是关关系系R的的

62、一一个个元元组组,后后m列列是是关关系系S的的一一个个元元组组。并并且且,若若R中中由由k1个个元元组组组组成成,S由由k2个个元元组组组组成成,则则R和和S的的笛笛卡卡尔尔积积由由k1k2个个元元组组组组成成。R和和S的的笛笛卡卡尔尔积记为:积记为:RS=(r1,rn,s1,sm) (r1,rn)R(s1,sm)S)2.4关系代数关系代数(5)选择选择(Selection)选选择择操操作作的的含含义义是是在在关关系系上上选选择择满满足足某某种种条条件件的的元元组组。设设关关系系R为为n元元关关系系,用用F来来表表示示选选择择条条件件,F形形如如riC(其其中中为为算算术术运运算算符符=、,。

63、2.4关系代数关系代数(8)除()除(Division)为为了了更更清清楚楚地地描描述述“除除”,首首先先介介绍绍“象象集集”的的概概念。念。象象集集:设设关关系系R(X,Z),X和和Z为为属属性性组组,当当tX=x时时,x在在R中的象集为:中的象集为:Zx=tZR,tX=x除除:设设关关系系R(X,Y)和和S(Y,Z),其其中中X,Y,Z为为属属性性组组。R中中的的Y与与S中中Y可可以以有有不不同同的的属属性性名名,但但必必须须出出自自相相同同的的集集合合。R与与S的的除除运运算算得得到到一一个个新新的的关关系系,新新关关系系为为R中满足下列条件的元组在属性列中满足下列条件的元组在属性列X上

64、的投影。上的投影。2.4关系代数关系代数元元组组在在X上上的的分分量量值值x的的象象集集Yx包包含含S在在Y上上的投影的集合。记为:的投影的集合。记为:RS=trX|trR y(S) Yx其中其中,Yx为为x在在R中的象集,中的象集,x=trX。习习题题1选择题选择题(1)关系代数是用对)关系代数是用对_的运算来表达查询要求的方式。的运算来表达查询要求的方式。A.实体实体B.域域C.属性属性D.关系关系(2)关系演算是用)关系演算是用_来表达查询要求的方式。来表达查询要求的方式。A.关系关系B.谓词谓词C.代数代数D.属性属性(3)域是一组具有相同数据类型的)域是一组具有相同数据类型的_的集合

65、。的集合。A.值值B.实体实体C.属性属性D.关系关系(4)基本关系中,任意两个元组值)基本关系中,任意两个元组值_。A.可以相同可以相同B.必须完全相同必须完全相同C.必须全不同必须全不同D.不能完全相同不能完全相同( 5) 实实 体体 完完 整整 性性 规规 则则 为为 : 若若 属属 性性 A是是 基基 本本 关关 系系 R的的 主主 属属 性性 , 则则 属属 性性A_。A.可取空值可取空值B.不能取空值不能取空值C.可取某定值可取某定值D.都不对都不对习习题题2填空题填空题(1)关关系系模模型型由由_、_和和_三三部部分分组组成。成。(2)关关系系操操作作采采用用_操操作作方方式式,

66、即即操操作作的的对对象象和和结结果果都都是是_。(3)关关系系模模型型中中常常用用的的关关系系操操作作包包括括_和和_两两类。类。(4)关系代数、元组关系演算和域关系演算是抽象的)关系代数、元组关系演算和域关系演算是抽象的_。(5)SQL不不仅仅具具有有丰丰富富的的查查询询功功能能,而而且且具具有有_和和_功能,是功能,是_的标准语言。的标准语言。习习题题(6)关关系系模模型型允允许许定定义义_、_和和_三类完整性。三类完整性。(7)关系是)关系是_的子集,所以关系也是一个的子集,所以关系也是一个_。(8)关关系系模模型型是是静静态态的的稳稳定定的的,而而关关系系是是_,因因为为关关系操作在不

67、断地更新着数据库的数据。系操作在不断地更新着数据库的数据。(9)关关系系系系统统可可分分为为_、_和和_三三类。类。(10)一个基本关系通常对应现实世界的一个)一个基本关系通常对应现实世界的一个_。参考答案参考答案1、(、(1)D(2)B(3)A(4)C(5)B2、(、(1)数据结构、关系操作、完整性约束条件数据结构、关系操作、完整性约束条件(2)集合、集合)集合、集合(3)查询操作、增删改操作)查询操作、增删改操作(4)查询语言)查询语言(5)数据定义、数据控制、关系数据库)数据定义、数据控制、关系数据库(6)实体完整性、参照完)实体完整性、参照完整性、用户定义的完整性整性、用户定义的完整性

68、(7)笛卡儿积、二维表)笛卡儿积、二维表(8)动态的、随时间变化不断的)动态的、随时间变化不断的(9)最小关系系统、关系上完备的系统、全关系系统)最小关系系统、关系上完备的系统、全关系系统(10)实体集)实体集第第3章章关系数据库标准语言关系数据库标准语言SQL学习要点学习要点1、SQL语言的基本概念及特点语言的基本概念及特点2、定义表、修改、删除基本表、定义表、修改、删除基本表3、建立索引、删除索引、建立索引、删除索引4、单表、连接、嵌套、集合查询、单表、连接、嵌套、集合查询5、插入、修改、删除数据、插入、修改、删除数据6、定义、查询、更新视图、定义、查询、更新视图7、数据控制、数据控制第第

69、3章章关系数据库标准语言关系数据库标准语言SQL3.1 SQL3.1 SQL语言的基本概念及特点语言的基本概念及特点3.2 3.2 数据定义数据定义3.3 3.3 查询查询3.4 3.4 数据更新数据更新3.5 3.5 视图视图3.6 SQL3.6 SQL的数据控制功能的数据控制功能习题及参考答案习题及参考答案第第3章章关系数据库标准语言关系数据库标准语言SQL3.1SQL语言的基本概念及特点语言的基本概念及特点3.1.1SQL语言的基本概念语言的基本概念SQL语语言言支支持持关关系系数数据据库库三三级级模模式式结结构构。其其中中外外模模 式式 对对 应应 于于 视视 图图 ( View) 和

70、和 部部 分分 基基 本本 表表 ( BaseTable),),模式对应于基本表,内模式对应于存储文件。模式对应于基本表,内模式对应于存储文件。基基本本表表是是本本身身独独立立存存在在的的表表,在在SQL中中一一个个关关系系就就对对应应一一个个表表。一一些些基基本本表表对对应应一一个个存存储储文文件件,一一个个表可以带若干索引,索引也存放在存储文件中。表可以带若干索引,索引也存放在存储文件中。3.1.1SQL语言的基本概念语言的基本概念存存储储文文件件的的逻逻辑辑结结构构组组成成了了关关系系数数据据库库的的内内模式。存储文件的物理文件结构是任意的。模式。存储文件的物理文件结构是任意的。视视图图

71、是是从从基基本本表表或或其其他他视视图图中中导导出出的的表表,它它本本身身不不独独立立存存储储在在数数据据库库中中,也也就就是是说说数数据据库库中中只只存存放放视视图图的的定定义义,而而不不存存放放视视图图对对应应的的数数据据,这这些些数数据据仍仍存存放放在在导导出出视视图图的的基基本本表表中中,因因此此视视图图是是一一个个虚虚表表。用用户户可可以以用用SQL语语言言对对视图和基本表进行查询。视图和基本表进行查询。3.1.2SQL语言的特点语言的特点SQL语语言言之之所所以以能能够够为为用用户户和和业业界界所所接接受受并并成成为为国国际际标标准准,是是因因为为它它是是一一个个综综合合的的、通通

72、用用的的、功功能能极极强强同同时时又又简简洁洁易易学学的的语语言言。SQL语语言言集集数数据据查查询询(Data Query)、数数据据操操纵纵( Data Manipulation) 、 数数 据据 定定 义义 ( DataDefinition)和和数数据据控控制制(DataControl)功功能能于于一一体体,充充分分体体现现了了关关系系数数据据语语言言的的特特点点和和优优点。点。3.1.2SQL语言的特点语言的特点特点如下:特点如下:1综合统一综合统一2高度非过程化高度非过程化3面向集合的操作方式面向集合的操作方式4以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式5语言简

73、洁,易学易用语言简洁,易学易用3.2数据定义数据定义3.2.1定义基本表定义基本表定义基本表命令的格式为:定义基本表命令的格式为:CREATETABLE(列列级级完完整整性性约约束束条件条件,列级完整性约束条件列级完整性约束条件,;其其中中是是所所要要定定义义的的基基本本表表的的名名字字,它它可可以以由由一一个个或或多多个个属属性性(列列)组组成成。建建表表的的同同时时通通常常还还可可以以定定义义与与该该表表有有关关的的完完整整性性约约束束条条件件,这这些些完完整整性性约约束束条条件件被被存存入入系系统统的的数数据据字字典典中中,当当用用户户操操作作表表中中数数据据时时由由DBMS自自动动检检

74、查查该该操操作作是是否否违违背这些完整性约束条件。背这些完整性约束条件。3.2.1定义基本表定义基本表下下面面以以一一个个“学学生生-课课程程”数数据据库库为为例例说说明明SELECT语语句句的的各种用法。各种用法。“学生学生-课程课程”数据库中包括三个表:数据库中包括三个表:(1)“学学生生”表表Student由由学学号号(Sno)、姓姓名名(Sname)、性性别别(Ssex)、年年龄龄(Sage)、所所在在系系(Sdept)五五个个属属性性组组成成,可记为:可记为:Student(Sno,Sname,Ssex,Sage,Sdept)Sno。( 2) “课课 程程 ”表表 Course由由

75、课课 程程 号号 ( Cno) 、 课课 程程 名名(Cname)、先先修修课课号号(Pcno)、学学分分(Ccredit)四四个个属属性性组组成,可记为:成,可记为:Course(Cno,Cname,Pcno,Ccredit)Cno。(3)“学学生生选选课课”表表SC由由学学号号(Sno)、课课程程号号(Cno)、成成绩绩(Grade)三三个个属属性性组组成成,可可记记为为:SC(Sno,Cno,Grade)(Sno,Cno)。3.2.1定义基本表定义基本表【例例3-1】建建立立一一个个“学学生生”表表Student,它它由由学学号号Sno、姓姓名名Sname、性性别别Ssex、年年龄龄Sa

76、ge、所所在在系系Sdept五五个个属属性性组组成成,其中学号属性不能为空,并且其值是惟一的。其中学号属性不能为空,并且其值是惟一的。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20),SsexCHAR(1),SageINT,SdeptCHAR(15);3.2.2修改基本表修改基本表修改基本表命令的格式为:修改基本表命令的格式为:ALTERTABLEADD完整性约束完整性约束DROPMODIFY;其其中中指指定定需需要要修修改改的的基基本本表表,ADD子子句句用用于于增增加加新新列列和和新新的的完完整整性性约约束束条条件件,DROP

77、子子句句用用于于删删除除指指定定的的完完整整性性约约束束条条件件,MODIFY子子句句用用于于修修改原有的列定义。改原有的列定义。3.2.3删除基本表删除基本表删除基本表命令的格式为:删除基本表命令的格式为:DROPTABLE;3.2.4建立索引建立索引建立索引命令的格式为:建立索引命令的格式为:CREATEUNIQUECLUSTERINDEXON(,);其其中中,指指定定要要建建索索引引的的基基本本表表的的名名字字。索索引引可可以以建建在在该该表表的的一一列列或或多多列列上上,各各列列名名之之间间用用逗逗号号分分隔隔。每每个个后后面面还还可可以以用用指指定定索索引引值值的的排排列列次次序序,

78、包包括括ASC(升升序序)和和DESC(降降序序)两两种,缺省值为种,缺省值为ASC。3.2.5删除索引删除索引删除索引命令的格式为:删除索引命令的格式为:DROPINDEX;【例例3-5】删除删除Student表的表的Stusname索引。索引。DROPINDEXStusname;说说明明:索索引引一一经经建建立立,就就由由系系统统使使用用和和维维护护它它,不不需需用用户户干干预预。建建立立索索引引是是为为了了减减少少查查询询操操作作的的时时间间,但但如如果果数数据据增增删删改改频频繁繁,系系统统会会花花费费许许多多时时间间来来维维护护索索引引。这这时时,可可以以删删除除一一些些不不必必要要

79、的的索索引引。删删除除索索引引时,系统会同时从数据字典中删去有关该索引的描述。时,系统会同时从数据字典中删去有关该索引的描述。3.3查询查询查询命令的一般格式为:查询命令的一般格式为:SELECT ALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;3.3查询查询SELECT语语句句的的含含义义是是:根根据据WHERE子子句句的的条条件件表表达达式式,从从FROM子子句句指指定定的的基基本本表表或或视视图图中中找找出出满满足足条条件件的的元元组组,再再按按SELECT子子句句中中的的目目标标列列表表达达式式,选选出出元元组组中中的的属属性性值

80、值形形成成结结果果表表。如如果果有有GROUP子子句句,则则将将结结果果按按的的值值进进行行分分组组,该该属属性性值值相相等等的的元元组组为为一一个个组组,每每个个组组产产生生结结果果表表中中的的一一条条记记录录。如如果果GROUP子子句句带带HAVING短短语语,则则只只有有满满足足指指定定条条件件的的组组才才予予以以输输出出。如如果果有有ORDER子子句句,则则结结果果表表还还要要按按的的值值的的升升序序或或降降序序排排列。列。3.3.1单表查询单表查询1选择表中的若干列选择表中的若干列(1)查询指定列)查询指定列【例例3-6】查询全体学生的学号与姓名。查询全体学生的学号与姓名。SELEC

81、TSno,SnameFROMStudent;中中各各个个列列的的先先后后顺顺序序可可以以与与表表中中的的顺顺序序不不一一致致。也也就就是是说说,用用户户在在查查询询时时可可以以根根据需要改变列的显示顺序。据需要改变列的显示顺序。(2)查询全部列)查询全部列3.3.1单表查询单表查询【例例3-8】查询全体学生的详细记录。查询全体学生的详细记录。SELECT*FROMStudent;该该SELECT语语句句实实际际上上是是无无条条件件地地把把Student表表的的全全部部信信息息都都查查询询出出来来,所所以以也也称称为为全全表表查查询询,这这是是最最简单的一种查询。简单的一种查询。(3)查询经过计

82、算的值)查询经过计算的值SELECT子子句句的的不不仅仅可可以以是是表表中中的的属属性性列列,也也可可以以是是有有关关表表达达式式,即即可可以以将将查查询询出出来来的属性列经过一定的计算后列出结果。的属性列经过一定的计算后列出结果。3.3.1单表查询单表查询2选择表中的若干元组选择表中的若干元组(1)消除取值重复的行)消除取值重复的行【例例3-10】查所有选修过课的学生的学号。查所有选修过课的学生的学号。SELECTSnoFROMSC;假设假设SC表中有下列数据:表中有下列数据:SnoCnoGrade-95001192950012859500138895002290950023803.3.1单

83、表查询单表查询执行上面执行上面的的SELECT语句后,结果为:语句后,结果为:Sno-95001950019500195002950023.3.1单表查询单表查询该该查查询询结结果果里里包包含含了了许许多多重重复复的的行行。如如果果想想去去掉掉结果表中的重复行,必须指定结果表中的重复行,必须指定DISTINCT短语:短语:SELECTDISTINCTSnoFROMSC;执行结果为:执行结果为:Sno-95001950023.3.1单表查询单表查询(2)查询满足条件的元组查询满足条件的元组查查询询满满足足指指定定条条件件的的元元组组可可以以通通过过WHERE子子句句实现。实现。比较。比较。【例例

84、3-11】查计算机系全体学生的名单。查计算机系全体学生的名单。SELECTSnameFROMStudentWHERESdept=CS;确定范围。确定范围。3.3.1单表查询单表查询【例例3-13】查查询询年年龄龄在在2023岁岁之之间间的的学学生生的的姓名、系别和年龄。姓名、系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;确定集合。确定集合。3.3.1单表查询单表查询【例例3-14】查查信信息息系系(IS)、数数学学系系(MA)和计算机科学系(和计算机科学系(CS)的学生的姓名和性别。的学生的姓名和性别。SELECT

85、Sname,SsexFROMStudentWHERESdeptIN(IS,MA,CS)与与IN相相对对的的谓谓词词是是NOTIN,用用于于查查找找属属性值不属于指定集合的元组。性值不属于指定集合的元组。3.3.1单表查询单表查询字字符符匹匹配配。谓谓词词LIKE可可以以用用来来进进行行字字符符串串的的匹配。其一般语法格式如下:匹配。其一般语法格式如下:NOTLIKEESCAPE其其含含义义是是查查找找指指定定的的属属性性列列值值与与相相匹匹配配的的元元组组。可可以以是是一一个个完完整整的的字字符符串串,也也可可以含有通配符以含有通配符%和和_。%(百百分分号号)代代表表任任意意长长度度(长长度

86、度可可以以为为0)的的字符串。字符串。_(下横线)代表任意单个字符。(下横线)代表任意单个字符。3.3.1单表查询单表查询【例例3-15】查查所所有有姓姓刘刘的的学学生生的的姓姓名名、学学号号和和性别。性别。SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE刘刘%;3.3.1单表查询单表查询3对查询结果排序对查询结果排序如如果果没没有有指指定定查查询询结结果果的的显显示示顺顺序序,DBMS将将按按其其最最方方便便的的顺顺序序(通通常常是是元元组组在在表表中中的的先先后后顺顺序序)输输出出查查询询结结果果。用用户户也也可可以以用用ORDERBY子子句句指指

87、定定按按照照一一个个或或多多个个属属性性列列的的升升序序(ASC)或或降降序序(DESC)重重新新排排列列查查询结果,其中升序询结果,其中升序ASC为默认值。为默认值。3.3.1单表查询单表查询【例例3-16】查查询询选选修修了了3号号课课程程的的学学生生的的学学号号及其成绩,查询结果按分数的降序排列。及其成绩,查询结果按分数的降序排列。SELECTSno,GradeFROMSCWHERE Cno=3 GROUP BY GradeDESC;3.3.1单表查询单表查询4对查询结果分组对查询结果分组GROUPBY子子句句可可以以将将查查询询结结果果表表的的各各行行按一列或多列取值相等的原则进行分组

88、。按一列或多列取值相等的原则进行分组。对对查查询询结结果果分分组组的的目目的的是是为为了了细细化化集集函函数数的的作作用用对对象象。如如果果未未对对查查询询结结果果分分组组,集集函函数数将将作作用用于于整整个个查查询询结结果果,即即整整个个查查询询结结果果只只有有一一个个函函数数值值。否否则则,集集函函数数将将作作用用于于每每一一个个组组,即每一组都有一个函数值。即每一组都有一个函数值。3.3.1单表查询单表查询【例例3-18】查询各个课程号与相应的选课人数。查询各个课程号与相应的选课人数。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;该该SELECT语语句句对对S

89、C表表按按Cno的的取取值值进进行行分分组组,所所有有具具有有相相同同Cno值值的的元元组组为为一一组组,然然后后对对每每一一组组作作用用集函数集函数COUNT以求得该组的学生人数。查询结果为:以求得该组的学生人数。查询结果为:3.3.1单表查询单表查询CnoCOUNT(Sno)-122234344433548如如果果分分组组后后还还要要求求按按一一定定的的条条件件对对这这些些组组进进行行筛筛选选,最最终终只只输输出出满满足足指指定定条条件件的的组组,则则可可以以使使用用HAVING短语指定筛选条件。短语指定筛选条件。3.3.2连接查询连接查询一一个个数数据据库库中中的的多多个个表表之之间间一

90、一般般都都存存在在某某种种内内在在联联系系。前前面面的的查查询询都都是是针针对对一一个个表表进进行行的的。若若一一个个查查询询同同时时涉涉及及两两个个以以上上的的表表,则则称称之之为为连连接接查查询询。连连接接查查询询主主要要包包括括等等值值连连接接查查询询、非非等等值值连连接接查查询询、自自身身连连接接查查询询和和复复合合条条件件连连接查询等。接查询等。1等值与非等值连接查询等值与非等值连接查询3.3.2连接查询连接查询2自身连接查询自身连接查询连连接接操操作作不不仅仅可可以以在在两两个个表表之之间间进进行行,也也可可以以是是一一个表与其自己进行连接,这种连接称为表的自身连接。个表与其自己进

91、行连接,这种连接称为表的自身连接。3复合条件连接查询复合条件连接查询上上面面各各个个连连接接查查询询中中,WHERE子子句句中中只只有有一一个个条条件件,即即用用于于连连接接两两个个表表的的谓谓词词。WHERE子子句句中中有有多多个条件的连接操作,称为复合条件连接。个条件的连接操作,称为复合条件连接。3.3.3嵌套查询嵌套查询在在SQL语语言言中中,一一个个SELECT-FROM-WHERE语语句句称称为为一一个个查查询询块块。将将一一个个查查询询块块嵌嵌套套在在另另一一个个查查询询块块的的WHERE子子句句或或HAVING短短语语的的条条件件中中的的查查询询称称为嵌套查询或子查询。例如:为嵌

92、套查询或子查询。例如:SELECTSnameFROMStudentWHERESnoINSELECTSnoFROMSCWHERECno=2;3.3.3嵌套查询嵌套查询1带有带有IN谓词的子查询谓词的子查询2带有比较运算符的子查询带有比较运算符的子查询3带有带有EXISTS谓词的子查询谓词的子查询3.3.4集合查询集合查询每每一一个个SELECT语语句句都都能能获获得得一一个个或或一一组组元元组组。若若要要把把多多个个SELECT语语句句的的结结果果合合并并为为一一个个结结果果,可可用用集集合合操操作作来来完完成成。集集合合操操作作主主要要包包括括并并操操作作、交交操操作作和差操作。和差操作。使使

93、用用并并操操作作将将多多个个查查询询结结果果合合并并起起来来,形形成成一一个个完完整整的的查查询询结结果果时时,系系统统会会自自动动去去掉掉重重复复的的元元组组。需需要要注注意意的的是是,参参加加并并操操作作的的各各数数据据项项数数目目必必须须相相同同,对应项的数据类型也必须相同。对应项的数据类型也必须相同。3.4数据更新数据更新3.4.1插入数据插入数据1插入单个元组插入单个元组插入单个插入单个元组的元组的INSERT命令的格式为:命令的格式为:INSERTINTO(,)VALUES(,)3.4.1插入数据插入数据2插入子查询结果插入子查询结果子子查查询询不不仅仅可可以以嵌嵌套套在在SELE

94、CT语语句句中中,用用以以构构造造父父查查询询的的条条件件,也也可可以以嵌嵌套套在在INSERT语语句句中中,用用以以生生成要插入的数据。成要插入的数据。插入子查询结果插入子查询结果的的INSERT语句的格式为:语句的格式为:INSERTINTO(,)其其功功能能是是以以批批量量插插入入,一一次次将将子子查查询询的的结结果果全全部部插插入指定表中。入指定表中。3.4.2修改数据修改数据修改操作又称为更新操作,其命令的一般格式为:修改操作又称为更新操作,其命令的一般格式为:UPDATESET=,=WHERE;其其功功能能是是修修改改指指定定表表中中满满足足WHERE子子句句条条件件的的元元组组。

95、其其中中SET子子句句用用于于指指定定修修改改方方法法,即即用用的的值值取取代代相相应应的的属属性性列列值值。如如果果省省略略WHERE子子句句,则表示要修改表中的所有元组。则表示要修改表中的所有元组。3.4.2修改数据修改数据1修改某一个元组的值修改某一个元组的值2修改多个元组的值修改多个元组的值3带子查询的修改语句带子查询的修改语句4修改操作与数据库的一致性修改操作与数据库的一致性3.4.3删除数据删除数据删除命令的一般格式为:删除命令的一般格式为:DELETEFROMWHERE;DELETE命命 令令 的的 功功 能能 是是 从从 指指 定定 表表 中中 删删 除除 满满 足足WHERE

96、子子句句条条件件的的所所有有元元组组。如如果果省省略略WHERE子子句句,表表示示删删除除表表中中全全部部元元组组,但但表表的的定定义义仍仍在在字字典典中中。也也就就是是说说,DELETE语语句句删删除除的的是是表表中中的的数数据据,而而不不是是关于表的定义。关于表的定义。3.4.3删除数据删除数据1删除某一个元组的值删除某一个元组的值2删除多个元组的值删除多个元组的值3带子查询的删除语句带子查询的删除语句3.5视图视图3.5.1定义视图定义视图1创建视图创建视图SQL语言用语言用CREATEVIEW命令建立视图,其一般格式为:命令建立视图,其一般格式为:CREATEVIEW(,)ASWITH

97、CHECKOPTION;其其中中子子查查询询可可以以是是任任意意复复杂杂的的SELECT语语句句,但但通通常常不不允允许含有许含有ORDERBY子句子句和和DISTINCT短语。短语。WITH CHECK OPTION表表 示示 对对 视视 图图 进进 行行 UPDATE、INSERT和和DELETE操操作作时时要要保保证证更更新新、插插入入或或删删除除的的行行满满足足视图定义中的谓词条件(即子查询中的条件表达式)。视图定义中的谓词条件(即子查询中的条件表达式)。3.5.1定义视图定义视图2删除视图删除视图删除视图的命令格式为:删除视图的命令格式为:DROPVIEW;一一个个视视图图被被删删除

98、除后后,由由此此视视图图导导出出的的其其他他视视图图也也将将失失效效,用用户户应应该该使使用用DROPVIEW命命令令将它们一一删除。将它们一一删除。3.5.2查询视图查询视图视视图图定定义义后后,用用户户就就可可以以像像对对基基本本表表进进行行查查询询一一样样对视图进行查询了。对视图进行查询了。DBMS执执行行对对视视图图的的查查询询时时,首首先先进进行行有有效效性性检检查查,检检查查查查询询涉涉及及的的表表、视视图图等等是是否否在在数数据据库库中中存存在在,如如果果存存在在,则则从从数数据据字字典典中中取取出出查查询询涉涉及及的的视视图图的的定定义义,把把定定义义中中的的子子查查询询和和用

99、用户户对对视视图图的的查查询询结结合合起起来来,转转换换成成对对基基本本表表的的查查询询,然然后后再再执执行行这这个个经经过过修修正正的的查查询询。将将对对视视图图的的查查询询转转换换为为对对基基本本表表的的查查询询的的过过程程称称为视图的消解(为视图的消解(ViewResolution)。)。3.5.3更新视图更新视图更更 新新 视视 图图 包包 括括 插插 入入 ( INSERT) 、 删删 除除(DELETE)和修改(和修改(UPDATE)三类操作。三类操作。由由于于视视图图是是不不实实际际存存储储数数据据的的虚虚表表,因因此此对对视视图图的的更新,最终要转换为对基本表的更新。更新,最终

100、要转换为对基本表的更新。为为防防止止用用户户通通过过视视图图对对数数据据进进行行增增删删改改时时,无无意意或或故故意意操操作作不不属属于于视视图图范范围围内内的的基基本本表表数数据据,可可在在定定义义视视图图时时加加上上WITHCHECKOPTION子子句句,这这样样在在视视图图上上增增删删改改数数据据时时,DBMS会会进进一一步步检检查查视视图图定定义义中中的条件,若不满足条件,则拒绝执行该操作。的条件,若不满足条件,则拒绝执行该操作。3.5.4视图的特点视图的特点视视图图最最终终是是定定义义在在基基本本表表之之上上的的,对对视视图图的的一一切切操操作作最最终终也也要要转转换换为为对对基基本

101、本表表的的操操作作。而而且且对对于于非非行行列列子子集集视视图图进进行行查查询询或或更更新新时时还还有有可可能能出出现现问问题题。既既然然如如此此,为为什什么么还还要要定定义义视视图图呢呢?这这是是因因为为合合理理使使用用视视图能够带来许多好处。图能够带来许多好处。1视图能够简化用户的操作视图能够简化用户的操作2视图使用户能以多种角度看待同一数据视图使用户能以多种角度看待同一数据3视视图图对对重重构构数数据据库库提提供供了了一一定定程程度度的的逻逻辑辑独独立立性性4视图能够对机密数据提供安全保护视图能够对机密数据提供安全保护3.6SQL的数据控制功能的数据控制功能3.6.1数据控制简介数据控制

102、简介由由DBMS提提供供统统一一的的数数据据控控制制功功能能是是数数据据库库系系统统的的特特点点之之一一。数数据据控控制制亦亦称称为为数数据据保保护护,包包括括数数据据的的安安全全性性控控制制、完完整整性性控控制制、并并发发控控制和恢复。制和恢复。3.6.2授权命令授权命令SQL语语言言用用GRANT命命令令向向用用户户授授予予操操作作权权限限,GRANT命令的一般格式为:命令的一般格式为:GRANT,ONTO,WITHGRANTOPTION;其其功功能能为为:将将对对指指定定操操作作对对象象的的指指定定操操作作权权限授予指定的用户。限授予指定的用户。3.6.3收权命令收权命令授授予予的的权权

103、限限可可以以由由DBA或或其其他他授授权权者者用用REVOKE命令收回,命令收回,REVOKE命令的一般格式为:命令的一般格式为:REVOKE,ONFROM,;【例例3-43】把用户把用户U4修改学生学号的权限收回。修改学生学号的权限收回。REVOKE UPDATE(Sno) ON TABLE StudentFROMU4;3.6.3收权命令收权命令【例例3-44】收回所有用户对收回所有用户对表表SC的查询权限。的查询权限。REVOKESELECTONTABLESCFROMPUBLIC;可可见见,SQL提提供供了了非非常常灵灵活活的的授授权权机机制制。用用户户对对自自己己建建立立的的基基本本表表

104、和和视视图图拥拥有有全全部部的的操操作作权权限限,并并且且可可以以用用GRANT语语句句把把其其中中某某些些权权限限授授予予其其他他用用户户。被被授授权权的的用用户户如如果果有有“继继续续授授权权”的的许许可可,还还可可以以把把获获得得的的权权限限再再授授予予其其他他用用户户。DBA拥拥有有对对数数据据库库中中所所有有对对象象的的所所有有权权限限,并并可可以以根根据据应应用用的的需需要要将将不不同同的的权权限限授授予予不不同同的的用用户户。而而所所有有授授予予出出去去的的权权力力在在必必要要时时又又都可以用都可以用REVOKE语句收回。语句收回。习习题题1选择题选择题(1)SQL语言具有语言具

105、有_的功能。的功能。A.关系规范化、数据操作、数据控制关系规范化、数据操作、数据控制B.数据定义、数据操作、数据控制数据定义、数据操作、数据控制C.数据定义、关系规范化、数据控制数据定义、关系规范化、数据控制D.数据定义、关系规范化、数据操作数据定义、关系规范化、数据操作( 2) SQL语语 言言 的的 数数 据据 操操 作作 语语 句句 包包 括括 SELECT、 INSERT、UPDATE和和DELETE。其其中中最最重重要要的的,也也是是使使用用最最频频繁繁的的语语句是句是_。A.SELECTB.INSERTC.UPDATED.DELETE习习题题(3)检检索索所所有有比比“王王平平”年

106、年龄龄大大的的学学生生姓姓名名、年年龄龄和和性性别。正确的别。正确的SQL语句是语句是_。(4)检检索索学学生生姓姓名名及及其其所所选选修修课课程程的的课课程程号号和和成成绩绩。正正确的语句是确的语句是_。(5)检检索索选选修修了了四四门门以以上上课课程程的的学学生生总总成成绩绩(不不统统计计不不及及格格的的课课程程),并并要要求求总总成成绩绩按按降降序序排排列列。正正确确的的语语句是句是_。习习题题2填空填空(1)结结构构化化查查询询语语言言SQL是是一一种种介介于于_与与_之之间间的的语语言言,其其功功能能包包括括_、_、_和和_四个方面,是关系数据库的标准语言。四个方面,是关系数据库的标

107、准语言。(2)SQL语语言言支支持持关关系系数数据据库库三三级级模模式式结结构构。其其中中外外模模式式对对应应于于_和和_,模模式式对对应应于于_,内内模模式式对对应于应于_。(3)若若一一个个查查询询同同时时涉涉及及两两个个以以上上的的表表,则则称称之之为为_,_主主要要包包括括_、_、_、_和和_。习习题题(4)连连接接操操作作不不仅仅可可以以在在两两个个表表之之间间进进行行,也也可可以以是是一一个个表表与与其自己进行连接,这种连接称为表的其自己进行连接,这种连接称为表的_。(5)定定义义基基本本表表时时,通通常常还还可可以以定定义义与与该该表表有有关关的的完完整整性性约约束束条件,这些完

108、整性约束条件被存入系统的条件,这些完整性约束条件被存入系统的_中。中。参考答案参考答案1(1)B(2)A(3)A(4)C(5)C2(1)关系代数、关系演算、查询、操纵、定义和关系代数、关系演算、查询、操纵、定义和控制控制(2)视图、部分基本表、基本表、存储文件)视图、部分基本表、基本表、存储文件(3)连接查询、连接查询、等值连接、非等值连)连接查询、连接查询、等值连接、非等值连接、自身连接、外连接和复合条件连接查询接、自身连接、外连接和复合条件连接查询(4)自身连接)自身连接(5)数据字典)数据字典第第4章章关系的规范理论关系的规范理论学习要点学习要点1 1、候选键、替代键和外来键、候选键、替

109、代键和外来键2 2、完全函数依赖、部分函数依赖、传递函数、完全函数依赖、部分函数依赖、传递函数依赖依赖3 3、1 1NFNF、2NF2NF和和3NF3NF4 4、关系模式的分解关系模式的分解第第4章章关系的规范理论关系的规范理论4.1关系中的键关系中的键4.2函数依赖函数依赖4.3规范化和范式规范化和范式4.4关系模式的分解关系模式的分解第第4章章关系的规范理论关系的规范理论4.1关系中的键关系中的键在在讨讨论论关关系系的的性性质质时时,曾曾指指出出在在任任何何关关系系中中,不不能能有有两两个个元元组组完完全全相相同同。确确定定了了主主键键的的值值,就就能能惟惟一一地地确确定定一一个个元元组组

110、。例例如如图图4-1中中所示的三个关系:所示的三个关系:P(产品号,产品名,产品型号产品号,产品名,产品型号)GP(零件号,零件名,零件重量,单价零件号,零件名,零件重量,单价)PGP(产品号,零件号,数量产品号,零件号,数量)4.1关系中的键关系中的键关关系系P的的主主键键是是产产品品号号,关关系系GP的的主主键键是是零零件件号号,它它们们均均只只含含一一个个属属性性。关关系系PGP的的主主键键含含有有两两个个属属性性(产产品品号号和和零零件件号号)。因因为为仅仅用用产产品品号号或或零零件件号号都都不不能能确确定定数数量量,即即不不能能惟惟一一地地识识别别一一个个元元组组。由由此此可可知知,

111、主主键键可可为为单单个个属属性性,也也可可为为属属性性组组。在在特特殊殊情情况况下下,主主键键可可以以由由整整个个元元组组组组成成。例例如如在在关关系系R(演演奏奏者者,作作品品,听听众众)中中,假假设设一一个个演演奏奏者者可可以以演演奏奏多多个个作作品品;某某一一作作品品可可以以被被多多个个演演奏奏者者演演奏奏;听听众众也也可可以以欣欣赏赏不不同同演演奏奏者者的的不不同同作作品品,则则该该关关系系的的主主键键就就是是由由整整个个元元组组组成的,称为全键(组成的,称为全键(All-key)。)。4.1.1候选键(候选键(CandidateKey)凡凡在在一一个个关关系系中中具具有有主主键键特特

112、性性的的属属性性或或属属性性组组,均均称称为为候候选选键键。因因为为它它们们都都具具有有被被选选为为主主键键的的条条件件,所所以以一一个个关关系系可可能能有有多多个个候候选选键键,但只能选其中的一个为主键。但只能选其中的一个为主键。候候选选键键中中包包含含的的属属性性称称为为主主属属性性(PrimaryAttribute) , 其其 余余 的的 属属 性性 称称 为为 非非 主主 属属 性性(NonprimaryAttribute)。)。4.1.1候选候选键键【例例4-1】在在职职工工关关系系ZG(姓姓名名,性性别别,年年龄龄)中中,增增加加一一个个属属性性“职职工工号号”,即即得得到到一一个

113、个新新关系:关系:ZG(职工号,姓名,性别,年龄职工号,姓名,性别,年龄)又又假假定定职职工工号号与与职职工工姓姓名名是是一一一一对对应应的的,即即没没有有两两个个职职工工的的姓姓名名相相同同,则则“职职工工号号”和和“姓名姓名”两个属性都是候选键。两个属性都是候选键。4.1.2 替替 代代 键键 ( AlternateKey)对对于于某某一一指指定定的的关关系系可可能能存存在在多多个个候候选选键键,但但只只能能选选其其中中的的一一个个为为主主键键。在在确确定定主主键键后后,其其余余的的候候选选键键都都是是替替代代键键,替替代代键键在在需需要要时时可可代代替替主主键键。在在用用DDL对对关关系

114、系进进行行描描述述时时应应指指明明哪哪个个是是主主键键,哪哪些些是是替替代代键键。如如果果仅仅有有一一个个候候选键,就只指明主键。选键,就只指明主键。4.1.2替代键替代键【例例4-2】用用DDL定义职工关系。定义职工关系。RELATIONZG(职工号,姓名,性别,年龄职工号,姓名,性别,年龄)PRIMARYKEY(职工号职工号)ALTERNATEKEY(姓名姓名)4.1.3外来键(外来键(ForeignKey)当当关关系系中中的的某某(些些)属属性性是是由由另另一一个个关关系系的的主主键键构构成时,则该属性(或属性组)称为外来键。成时,则该属性(或属性组)称为外来键。【例例4-3】PGP(产

115、产品品号号,零零件件号号,数数量量)中中的的“产产品品号号”和和“零零件件号号”分分别别来来自自关关系系P和和GP,它它们们都都是是相相应应关关系系的的主主键键。故故在在PGP关关系系中中,“产产品品号号”和和“零零件件号号”为为外外来来键键。外外来来键键不不直直接接在在关关系系描描述述中中说说明明,但但从从整整个个模模式式描描述述中中可可以以间间接接看看出出。图图4-1中中的的三三个个关关系可描述如下:系可描述如下:4.1.3外来外来键键RELATIONP(产品号,产品名,产品型号产品号,产品名,产品型号)PRIMARYKEY(产品号产品号)RELATIONGP(零零件件号号,零零件件名名,

116、零零件件重重量量,单价单价)PRIMARYKEY(零件号零件号)RELATIONPGP(产品号,零件号,数量产品号,零件号,数量)PRIMARYKEY(产品号,零件号产品号,零件号)4.1.3外来键外来键末行描述的主键显然是外来键。末行描述的主键显然是外来键。在在关关系系描描述述中中指指明明关关系系的的主主键键,目目的的是是让让DBMS对对 送送 入入 主主 键键 的的 值值 做做 出出 必必 要要 的的 约约 束束 。DBMS一一般般都都规规定定输输入入主主键键属属性性组组的的值值不不允允许许包包含含“空空值值”,因因为为不不能能用用空空值值来来识识别别任任何何元元组组。例例如如,在在关关系

117、系PGP中中,当当输输入入一一个个元元组组时时,不不论论产产品品号号还还是是零零件件号号都都禁禁止止为为“空空”。这这一一规定有时被称为规定有时被称为“第一完整性原则第一完整性原则”。4.2函数依赖函数依赖关关系系中中的的元元组组可可以以用用它它的的主主键键来来识识别别,即即有有了了主主键键的的值值,就就能能确确定定元元组组中中其其他他属属性性的的值值。例例如如在在例例4-1中中,职职工工的的“职职工工号号”确确定定了了,其其姓姓名名、性性别别和和年年龄龄也也随随之之确确定定了了。因因而而称称“职职工工号号”为为决决定定因因素素,它它“函函数数决决定定”姓姓名名等等属属性性的的内内容容,而而姓

118、姓名名等等属属性性的的内内容容则则“函数依赖函数依赖”于于“职工号职工号”,可记做:,可记做:职工号职工号(姓名,性别,年龄姓名,性别,年龄)用形式化的方式表示,关系用形式化的方式表示,关系R可以记为:可以记为:R4.2函数依赖函数依赖其其中中U表表示示属属性性组组的的集集合合,F表表示示属属性性组组间间的的函函数数依依赖赖的的集集合合。对对于于上上述述的的职职工工关关系系,可可以写为:以写为:RZGU职工号,姓名,性别,年龄职工号,姓名,性别,年龄F职职工工号号姓姓名名,职职工工号号性性别别,职职工工号号年龄年龄4.2函数依赖函数依赖函函数数依依赖赖可可区区分分为为完完全全依依赖赖、部部分分

119、依依赖赖和和传传递递依依赖赖三三类类。假假设设X、Y均均代代表表元元组组中中的的任任意意属属性性组组,X为为X的的任任意意非非空空子子集集,且且Y不不包包含含在在X中中(记记做做Y X,其其中中 为为集集合合比比较较运运算算符符 之之反反,表表示示“不不包包含含于于”),则则上上述述三三类类依依赖赖关关系可分别定义如下:系可分别定义如下:4.2.1 完完全全函函数数依依赖赖(Full FunctionalDependency)【定义定义4-1】若若XY,XY(表示表示Y不是函数依赖不是函数依赖于于X),),则有则有XfY,即,即Y完全函数依赖于完全函数依赖于X,其中其中f表示完全函数依赖。表示

120、完全函数依赖。F可简写成可简写成。【例例4-4】在在关关系系ZG(职职工工号号,姓姓名名,性性别别,年年龄龄)中中,职职工工号号姓名,职工号姓名,职工号性别,职工号性别,职工号年龄。用图解表示如图年龄。用图解表示如图4-2所示。所示。4.2.2部部分分函函数数依依赖赖(PartialFunctionalDependency)【定定义义4-2】若若XY,XY,则则XpY,即即Y部部分分函函数数依依赖赖于于X,其中其中p表示部分函数依赖。表示部分函数依赖。【例例4-5】在在图图4-1的的关关系系PGP中中增增加加一一个个属属性性“零零件件重重量量”,则则在新关系在新关系PGPNEW(产品号,零件号

121、,零件重量,数量产品号,零件号,零件重量,数量)(产品号,零件号产品号,零件号)数量数量零件号零件号零件重量零件重量(产品号,零件号产品号,零件号)p零件重量零件重量4.2.3传递函数依赖传递函数依赖【定定义义4-3】若若XY,YZ,但但YX,则则有有XtZ,其中其中t表示传递函数依赖。表示传递函数依赖。请请注注意意上上述述定定义义中中的的条条件件YX。如如果果不不加加上上这这一一限限制制,当当XY时时允允许许YX,则则XY。而而在在XY的的条条件件下下,YZ就就等等于于XZ。这这样样X就就直直接接函函数数决决定定Z,而而不不是是通通过过Y传传递递决决定定Z了。了。4.2.3传递函数依赖传递函

122、数依赖【例例4-6】设有下列关系设有下列关系GPD(零件号,零件名,设计人,设计人等级零件号,零件名,设计人,设计人等级)因为因为零件号零件号零件名零件名零件号零件号设计人设计人设计人设计人设计人等级设计人等级故故零件号零件号t设计人等级设计人等级4.3规范化和范式规范化和范式规规范范化化理理论论是是E.F.Codd首首先先提提出出来来的的。他他认认为为,一一个个关关系系数数据据库库的的关关系系都都应应满满足足一一定定的的规规范范,才才能能构构造造好好的的数数据据模模式式。下下面面通通过过一一个个实例介绍设计中可能会出现的问题。实例介绍设计中可能会出现的问题。4.3.1引例引例假设有如下关系模

123、式假设有如下关系模式S(SN,CITY,PART,QTY)其其中中S是是关关系系名名,它它代代表表供供应应商商(Supplier);属属性性名名SN、CITY、PART、QTY依依次次代代表表供供应应商商的的名名字字(SupplierName)、供供应应商商所所在在的的城城市市、供供应应商商所所供供应应的的零零件件和和零零件件的的数数量量。现现假假定定供供应应商商的的名名字字是是互互不不相相同同的的,即即不不具具有有重重名名,各各种种不不同同的的零零件件不不具具有有相相同同的名字。的名字。4.3.1引例引例图图4-5(a)表表示示这这个个关关系系模模式式的的一一个个可可能能的的具具体关系。该关

124、系存在以下问题。体关系。该关系存在以下问题。(1)冗余大)冗余大(2)插入异常)插入异常(3)删除异常)删除异常4.3.21NF、2NF和和3NF【定定义义4-4】如如果果一一个个关关系系R的的每每一一分分量量都都是是不不可可分分的的数据项,则数据项,则称称R是第一范式的,是第一范式的,记做记做R1NF。这这一一限限制制是是在在关关系系的的基基本本性性质质中中提提出出来来的的,任任何何关关系都必须遵守。系都必须遵守。【定定义义4-5】若若R1NF,且且它它的的每每一一非非主主属属性性完完全全依依赖赖于主键,于主键,则则R2NF。【定定义义4-6】若若R2NF,且且每每一一非非主主属属性性不不传

125、传递递依依赖赖于于主键,主键,则则R3NF。4.3.21NF、2NF和和3NF例例4-7求求关关系系S(学学号号,姓姓名名,班班级级,班班主主任任,课课程程号号,成成绩绩)的范式等级。的范式等级。为为了了分分析析方方便便,写写出出关关系系的的表表示示式式后后,可可以以在在主主属属性性下下方方划一横线,并用箭头标出属性之间的依赖关系。划一横线,并用箭头标出属性之间的依赖关系。分析分析S(学号,课程号,姓名,班级,班主任,成绩学号,课程号,姓名,班级,班主任,成绩)(1)各分量都是原子的。各分量都是原子的。(2)存在部分函数依赖存在部分函数依赖(学号,课程号学号,课程号)姓名及传递依赖等。姓名及传

126、递依赖等。结论:结论:S1NF4.3.21NF、2NF和和3NF例例4-8求关系求关系S1的范式等级。的范式等级。分析分析S1(学号,姓名,班级,班主任学号,姓名,班级,班主任)(1)各分量全是原子的。各分量全是原子的。(2)主键为单个属性,不可能存在部分函数依赖。主键为单个属性,不可能存在部分函数依赖。(3)存存在在传传递递函函数数依依赖赖。即即学学号号t班班主主任任(因因为为学学号号班班级,班级级,班级班主任班主任)。结论:结论:S12NF4.3.21NF、2NF和和3NF例例4-9求关系求关系S2、CL与与SC的范式等级。的范式等级。分析分析S2(学号,姓名,班级学号,姓名,班级)CL(

127、班级,班主任班级,班主任)SC(学号,课程号,成绩学号,课程号,成绩)显显然然,上上述述三三个个关关系系都都只只有有完完全全函函数数依依赖赖,不不存存在在部部分分依依赖和传递依赖,故均属于赖和传递依赖,故均属于3NF。4.3.21NF、2NF和和3NF从从第第一一范范式式到到第第三三范范式式,其其过过程程可可以以表表示示为为:1NF2NF3NF在在一一般般情情况况下下,3NF关关系系排排除除了了非非主主属属性性对对于于主主键键的的部部分分函函数数依依赖赖和和传传递递函函数数依依赖赖,把把能能够够分分离离的的属属性性尽尽可可能能分分解解为为单单独独的的关关系系了了,满满足足3NF的的关关系系已已

128、能能够够清清除除数数据据冗冗余余和和各各种种异异常常。但但对对于于具具有有几几个个复复合合候候选选键键、键键内内属属性性有有一一部部分分互互相相覆覆盖盖的的关关系系时时,仅仅满满足足3NF的的条条件件仍仍可可能能发发生生异异常常,应应进进一一步步用用BCNF的的条条件件去限制它。去限制它。4.4关系模式的分解关系模式的分解分解是提高关系范式等级的重要方法。分解是提高关系范式等级的重要方法。综综上上所所述述,可可以以帮帮助助我我们们选选择择正正确确的的分分解解方方案案。对对关关系系模模式式的的分分解解,不不能能仅仅着着眼眼于于提提高高它它的的范范式式等等级级,还还应应遵遵守守无无损损分分解解和和

129、分分解解后后的的新新关关系系相相互互独独立立等等原原则则。只只有有兼兼顾顾到到各各方方面面的的要要求,才能保证分解的质量。求,才能保证分解的质量。4.4关系模式的分解关系模式的分解有有些些模模式式在在理理论论上上存存在在冗冗余余或或异异常常,实实际际应应用用中中不不一一定定有有什什么么影影响响。例例如如有有些些模模式式在在运运行行中中只只有有查查询询操操作作,没没有有插插入入、删删除除等等操操作作,就就不必担心发生不必担心发生“异常异常”。处处理理模模式式分分解解必必须须从从实实际际出出发发,并并不不是是范范式式等等级级越越高高越越好好。分分解解得得过过细细,即即使使对对消消除除更更新新异异常

130、常有有些些好好处处,但但查查询询时时需需要要更更多多的的连连接接操操作作,很可能是得不偿失的。很可能是得不偿失的。习习题题1选择题选择题(1)确定了)确定了_的值,就能惟一地确定一个元组。的值,就能惟一地确定一个元组。A.主键主键B.外来键外来键C.关系关系D.属性属性(2)凡在一个关系中具有主键特性的属性或属性组,均称为)凡在一个关系中具有主键特性的属性或属性组,均称为_。A.关系关系B.候选键候选键C.主键主键D.外来键外来键(3)对对于于某某一一指指定定的的关关系系可可能能存存在在多多个个候候选选键键,但但只只能能选选其其中中的的一一个个为为_。A.替代键替代键B.候选键候选键C.主键主

131、键D.关系关系(4)当关系中的某属性是由另一个关系的主键构成时,则该属性为)当关系中的某属性是由另一个关系的主键构成时,则该属性为_。A.主键主键B.替代键替代键C.候选键候选键D.外来键外来键(5)规范化理论是)规范化理论是_首先提出来的。首先提出来的。A.MicrosoftB.冯冯.诺依曼诺依曼C.IBMD.E.F.Codd习习题题2填空题填空题(1)_可为单个属性,也可为属性组。可为单个属性,也可为属性组。(2)候候选选键键中中包包含含的的属属性性称称为为_,其其余余的的属属性性称称为为_。(3)在在一一个个关关系系中中确确定定主主键键后后,其其余余的的候候选选键键即即是是_,_在需要时

132、可代替主键。在需要时可代替主键。(4)函函数数依依赖赖可可区区分分为为_、_和和_三三类。类。(5)E.F.Codd把把关关系系模模式式中中应应满满足足的的规规范范要要求求分分成成几几级级,每每一一级级称称 为为 一一 个个 _。 实实 际际 的的 数数 据据 库库 系系 统统 一一 般般 都都 使使 用用_以上的关系。以上的关系。(6)满足)满足_的关系已能清除数据冗余和各种异常。的关系已能清除数据冗余和各种异常。参考答案参考答案1(1)A(2)B(3)C(4)D(5)D2(1)主键主键(2)主属性、非主属性)主属性、非主属性(3)替代键、替代键)替代键、替代键(4)完全函数依赖、部分函数依

133、赖、传递函)完全函数依赖、部分函数依赖、传递函数依赖数依赖(5)范式、第三范式)范式、第三范式(6)3NF第第5章章数据库设计数据库设计学习要点学习要点1、数据库设计方法及步骤、数据库设计方法及步骤2、调查、分析用户活动,分析系统数据、调查、分析用户活动,分析系统数据3、建立局部、总体概念结构、建立局部、总体概念结构4、E-R图向关系模型的转换图向关系模型的转换5、物理设计的要求和内容、物理设计的要求和内容6、数据载入、数据库的运行及维护、数据载入、数据库的运行及维护7、安全性、完整性、并发控制和恢复、安全性、完整性、并发控制和恢复第第5章章数据库设计数据库设计5.1设计过程概述设计过程概述5

134、.2需求分析需求分析5.3概念结构设计概念结构设计5.4逻辑结构设计逻辑结构设计5.5数据库物理设计数据库物理设计5.6数据库的实施和维护数据库的实施和维护5.7数据库保护数据库保护习题及参考答案习题及参考答案第第5章章数据库设计数据库设计5.1设计过程概述设计过程概述5.1.1数据库和信息系统数据库和信息系统对对使使用用者者来来说说,信信息息系系统统是是提提供供信信息息,辅辅助助人人们们对对环环境境进进行行控控制制和和决决策策的的系系统统。数数据据库库是是信信息息系系统统的的核核心心和和基基础础,它它把把信信息息系系统统中中大大量量的的数数据据按按一一定定的的模模型型组组织织起起来来,提提供

135、供存存储储、维维护护、检检索索数数据据的的功功能能,使使信信息息系系统统可可以以方方便便、及时、准确地从数据库中获得所需的信息。及时、准确地从数据库中获得所需的信息。5.1.1数据库和信息系统数据库和信息系统一一个个信信息息系系统统的的各各个个部部分分能能否否紧紧密密地地结结合合在在一一起起以以及及如如何何结结合合,关关键键在在数数据据库库。因因此此只只有有对对数数据据库库进进行行合合理理地地逻逻辑辑设设计计和和有有效效地地物物理理设设计计才才能能开开发发出出完完善善而而高高效效的的信信息息系系统统。所所以以数数据据库库设设计计是是信信息息系系统统开开发发和和建建设设的的重重要要组组成成部部分

136、。分。5.1.2数据库设计方法简述数据库设计方法简述人人们们经经过过探探索索提提出出了了各各种种数数据据库库设设计计方方法法,这这些些方方法法运运用用软软件件工工程程的的思思想想和和方方法法,提提出出了了各各种种设设计计准准则则和和规规程程,都都属属于于规规范范设设计计法法。基基于于E-R模模型型的的数数据据库库设设计计方方法法,基基于于3NF(第第三三范范式式)的的设设计计方方法法,基基于于抽抽象象语语法法规规范范的的设设计计方方法法等等等等,是是在在数数据据库库设设计计的的不不同同阶阶段段上上支支持持实现的具体技术和方法,是常用的规范设计法。实现的具体技术和方法,是常用的规范设计法。5.1

137、.3数据库设计步骤数据库设计步骤按规范设计方法可将数据库设计分为以下阶段:按规范设计方法可将数据库设计分为以下阶段:1、需求分析阶段、需求分析阶段2、概念设计阶段、概念设计阶段3、逻辑设计阶段、逻辑设计阶段4、物理设计阶段、物理设计阶段5、数据库实施阶段、数据库实施阶段6、数据库运行、维护阶段、数据库运行、维护阶段5.2需求分析需求分析需需求求收收集集和和分分析析是是数数据据库库设设计计的的第第一一个个阶阶段段。该该阶阶段段收收集集和和分分析析用用户户对对系系统统的的要要求求,确确定定系系统统的的工工作作范范围,并产生围,并产生“用户活动图用户活动图”和和“数据流程图数据流程图”。准准确确而而

138、无无遗遗漏漏地地弄弄清清用用户户需需求求,是是数数据据库库设设计计取取得得成成功功的的重重要要前前提提。从从数数据据库库设设计计的的角角度度考考虑虑,需需求求分分析析阶阶段段的的目目标标是是:对对现现实实世世界界要要处处理理的的对对象象(组组织织、部部门门、企企业业等等)进进行行详详细细调调查查,在在了了解解原原系系统统的的概概况况确确定定新新系系统统功功能能的的过过程程中中,收收集集支支持持系系统统目目标标的的基基础础数据及其处理。数据及其处理。5.2需求分析需求分析调调查查的的重重点点是是“数数据据”和和“处处理理”。通通过过调调查要从中获得每个用户对数据库的如下要求:查要从中获得每个用户

139、对数据库的如下要求:(1)信息要求。)信息要求。(2)处理要求。)处理要求。(3)安全性和完整性的要求。)安全性和完整性的要求。5.2需求分析需求分析获得用户对数据库要求的具体做法是:获得用户对数据库要求的具体做法是:(1)了解组织机构情况。)了解组织机构情况。(2)了解各部门的业务活动情况。)了解各部门的业务活动情况。(3)确定新系统的边界。)确定新系统的边界。5.2.1调查、分析用户活动调查、分析用户活动一一个个大大的的用用户户通通常常包包含含许许多多职职能能部部门门。在在收收集集和和分分析析用用户户的的各各种种业业务务活活动动时时,要要从从数数据据管管理理的的角角度度出出发发,按按部部门

140、门查查清清数数据据的的处处理理过过程程和和流流向向。为为了了便便于于研研究究问问题题,通通常常把把分分析析的的结结果果画成画成“用户活动图用户活动图”。5.2.1调查、分析用户活动调查、分析用户活动5.2.2确定系统边界确定系统边界画画出出用用户户活活动动图图后后,要要区区分分哪哪些些活活动动由由计计算算机机来来完完成成,哪哪些些活活动动仍仍由由人人工工处处理理,确确定定系系统统的的处处理理范范围围。通通常常都都直直接接在在用用户户活活动动图图上上标标出出系系统统的的边边界界。虚虚线线部部分分表表明明,编编制制零零件件生生产产计计划划和和编编制制材材料料订订货货计计划划两两项项工工作作不不属属

141、于于系系统统处处理范围,仍由人工完成。理范围,仍由人工完成。5.2.3分析系统数据分析系统数据按按照照用用户户活活动动图图包包含含的的每每一一种种应应用用,弄弄清清所所涉涉及及数数据据的的性性质质、流流向向和和所所需需的的处处理理。分分析析要要逐逐个个应应用用分分别别进进行行,并并深深入入到到每每一一个个数数据据项项。在在这这一一步步结结束束时时,要要产产生生各各个个应应用用的的“数数据据流流程程图图”和和“数数据据字字典典”,前前者者表表明明数数据据的的流流向向与与数数据据接接受受加加工工的的过过程程,后后者者是是进进行行详详细细的的数数据收集和数据分析所获得的主要结果。据收集和数据分析所获

142、得的主要结果。5.2.3分析系统数据分析系统数据数数据据字字典典是是各各类类数数据据描描述述的的集集合合,它它通通常常包包括以下五个部分:括以下五个部分:数据项,是数据的最小单位。数据项,是数据的最小单位。数据结构,是若干数据项有意义的集合。数据结构,是若干数据项有意义的集合。数数据据流流,可可以以是是数数据据项项,也也可可以以是是数数据据结结构。构。数据存储,处理过程中存取的数据。数据存储,处理过程中存取的数据。处理过程。处理过程。5.2.3分析系统数据分析系统数据图图5-3数据流程图数据流程图5.3概念结构设计概念结构设计概概念念结结构构独独立立于于数数据据库库逻逻辑辑结结构构,独独立立于

143、于支支持持数数据据库库的的DBMS,其主要特点是:其主要特点是:(1)能能充充分分地地反反映映现现实实世世界界,包包括括实实体体和和实实体体之之间间的的联联系系,能能满满足足用用户户对对数数据据处处理理的的要要求求,是是现现实实世世界的一个真实模型。界的一个真实模型。(2)易于理解。)易于理解。(3)易易于于更更改改。当当现现实实世世界界改改变变时时容容易易修修改改和和扩扩充。充。(4)易易于于向向关关系系、网网状状或或层层次次等等各各种种数数据据模模型型转转换。换。5.3.1建立局部概念结构建立局部概念结构按按照照需需求求分分析析阶阶段段得得到到的的部部门门用用户户活活动动图图和和数数据据流

144、流程程图图,就就可可建建立立起起对对应应于于每每一一部部门门(或或应应用用)的的局局部部E-R模型。这里最关键的步骤是确定实体和属性,。模型。这里最关键的步骤是确定实体和属性,。前前者者应应有有“产产品品名名”和和“价价格格”两两个个属属性性,后后者者有有“材材料料名名”、“价价格格”与与“库库存存量量”三三个个属属性性。实实体体确确定定后后,再再确确定定实实体体之之间间的的联联系系。在在本本例例中中,“产产品品”与与“材材料料”是是通通过过“使使用用”互互相相联联系系的的,故故可可把把“使使用用”定定为为联联系系,而而“用用量量”是是它它的的属属性性,把把这这些些用用E-R图来表示,就可得到

145、供应部门的局部图来表示,就可得到供应部门的局部E-R模型。模型。5.3.1建立局部概念结构建立局部概念结构图图5-4供应部门供应部门的的E-R模型模型图图5-5生产部门生产部门的的E-R模型模型5.3.1建立局部概念结构建立局部概念结构图图5-6修改后的供应部门修改后的供应部门的的E-R模型模型5.3.2建立总体概念结构建立总体概念结构 综综合合各各个个部部门门(或或应应用用)的的局局部部概概念念结结构构(亦亦称称为为分分E-RE-R模模型型)就就可可得得到系统的总体概念结构(到系统的总体概念结构(总总E-RE-R模型)。模型)。 图图5-7 5-7 供应供应- -生产综合生产综合E-RE-R

146、模型模型5.3.2建立总体概念结构建立总体概念结构图图5-8改进后的供应改进后的供应-生产综合生产综合E-R模型模型5.4逻辑结构设计逻辑结构设计概概念念结结构构是是独独立立于于任任何何一一种种数数据据模模型型的的信信息息结结构构,而而逻逻辑辑结结构构设设计计的的任任务务是是把把概概念念结结构构转转换换为为与与选选用用的的DBMS所所支支持持的的数数据据模模型型相相符符合合的的过过程程。通通常常,逻逻辑辑结结构构设设计计包包括括初初步步设设计计和和优优化化设设计计两两个个步步骤骤。所所谓谓初初步步设设计计,就就是是按按照照E-R图图向向数数据据模模型型转转换换的的规规则则将将已已经经建建立立的

147、的概概念念结结构构转转换换为为DBMS所所支支持持的的数数据据模模型型。所所谓谓优优化化设设计计,就就是是从从提提高高系系统统效效率率出出发发,对对结结构构进进行修改、调整和改良。行修改、调整和改良。5.4.1E-R图向关系模型的转换图向关系模型的转换关系模型的特点,就是把实体和联系都表示为关系。关系模型的特点,就是把实体和联系都表示为关系。(1)把每一实体转换为一个关系)把每一实体转换为一个关系首首先先要要分分析析实实体体的的属属性性,从从中中找找出出主主键键和和属属性性间间的的依依赖赖关关系系,然然后后将将实实体体用用关关系系RU,F或或其其简简化化形形式式来来表表示示。例例如如图图5-9

148、的的ER模模型型中中有有三三个个实实体,可分别转换成以下三个关系:体,可分别转换成以下三个关系:实体名:产品实体名:产品对应关系:产品(产品名,价格,主要性能)对应关系:产品(产品名,价格,主要性能)实体名:零件实体名:零件对应关系:零件(零件号,零件名)对应关系:零件(零件号,零件名)5.4.1E-R图向关系模型的转换图向关系模型的转换实体名:材料实体名:材料对应关系:材料(材料名,价格,库存量)对应关系:材料(材料名,价格,库存量)以上是用简化的形式表示的,也可以写成标准的形式,例如:以上是用简化的形式表示的,也可以写成标准的形式,例如:实体名:产品实体名:产品对应关系:对应关系:R产品产

149、品U产品名,价格,主要性能产品名,价格,主要性能F产品名产品名价格,产品名价格,产品名主要性能主要性能5.4.1E-R图向关系模型的转换图向关系模型的转换(2)把每一个联系也转换为关系)把每一个联系也转换为关系在在这这类类关关系系的的属属性性集集U中中,一一般般应应包包含含由由它它联联系系的的各各个个实实体体中中的的主主键键,以以及及它它本本身身的的属属性性,以以图图5-9中中的的联系联系“组成组成”为例,其转换步骤为:为例,其转换步骤为:联系名:组成联系名:组成所联系的实体及其主键:所联系的实体及其主键:产品产品(主键为主键为“产品名产品名”)零件零件(主键为主键为“零件号零件号”)5.4.

150、1E-R图向关系模型的转换图向关系模型的转换对应的新关系:对应的新关系:R产品零件一览表产品零件一览表U产品名,零件号,零件数量产品名,零件号,零件数量F(产品名,零件号产品名,零件号)零件数量零件数量用用类类似似的的方方法法,可可将将图图中中另另一一联联系系“消消耗耗”转转换换成成以下对应关系:以下对应关系:零件用料表(零件号,材料号,定额)零件用料表(零件号,材料号,定额)5.4.2不同情况处理示例不同情况处理示例在在实实际际的的E-R图图中中,实实体体与与联联系系有有各各种种不不同同的的情情况况,转转换换时时需要按实际情况灵活处理。需要按实际情况灵活处理。【例例5-1】不带属性的联系。不

151、带属性的联系。5.4.2不同情况处理示例不同情况处理示例【例例5-2】带属性的一对多联系。带属性的一对多联系。5.4.2不同情况处理示例不同情况处理示例【例例5-3】没有对应关系的联系。没有对应关系的联系。【例例5-4】存在于三个实体之间的联系。存在于三个实体之间的联系。【例例5-5】单元关系的处理。单元关系的处理。5.4.3性能预测和优化性能预测和优化初初步步逻逻辑辑设设计计完完成成后后,应应对对所所得得到到的的逻逻辑辑结结构进行优化。构进行优化。优优化化是是在在性性能能预预测测的的基基础础上上进进行行的的。下下面面介介绍绍一一种种常常用用的的预预测测方方法法,即即LRAA(LogicalR

152、ecordAccessApproach)方法。方法。(1)LRAA方法方法LRAA方方法法是是用用LRA、TV和和SS三三项项指指标标作作为衡量数据库性能的标准。为衡量数据库性能的标准。5.4.3性能预测和优化性能预测和优化LRA(LogicalRecordAccess)指指单单位位时时间间内所访问的逻辑记录个数。内所访问的逻辑记录个数。TV(TransportVolume)是是指指单单位位时时间间内内传输的数据量字节数。传输的数据量字节数。SS(StorageSpace)是是指指存存储储空空间间的的占占用用量。量。经经过过计计算算之之后后,如如果果LRA、TV和和SS都都比比较较小,即所谓性

153、能小,即所谓性能“好好”。5.4.3性能预测和优化性能预测和优化由由于于数数据据库库的的逻逻辑辑结结构构与与物物理理结结构构存存在在着着差差别别,LRA、TV和和SS这这三三项项指指标标并并不不能能精精确确地地估估计计数数据据库库的的物物理理性性能能,只只能能用用来来比比较较几几个个逻逻辑辑模模式式的的相相对对性性能能(假假定定这这几几个个模模式式的的存存储储结结构构、存存取取方方法法相相同同)。它它们的值越小,则认为这个模式的性能越好。们的值越小,则认为这个模式的性能越好。在在用用三三项项指指标标预预测测系系统统性性能能时时,首首先先应应注注意意日日平平均均LRA与与TV值值特特别别大大的的

154、那那些些应应用用。因因为为降降低低了了这这些些应应用用的的指指标标,整整个个系系统统的的指指标标才才会会明明显显下下降降。我我们们把把这这样样的的应应用用称称为为“主主应应用用”。结结构构的的优优化化围围绕绕主主应应用用进进行行才能取得较好的效果。才能取得较好的效果。5.4.3性能预测和优化性能预测和优化(2)模式的优化)模式的优化优优化化的的目目标标就就是是尽尽可可能能减减小小系系统统的的上上述述三三项项指标。指标。一一种种最最常常用用、最最重重要要的的优优化化方方法法,就就是是对对记记录录进进行行垂垂直直分分割割(在在关关系系模模式式中中称称为为关关系系分分解解)。规规范范化化理理论论和和

155、关关系系分分解解方方法法为为进进行行垂垂直直分分割割提供了指导原则。提供了指导原则。5.4.3性能预测和优化性能预测和优化例例5-6设有记载职工情况的关系设有记载职工情况的关系EMP(工工号号,姓姓名名,性性别别,年年龄龄,职职务务,工工资资,工工龄龄,住址,电话住址,电话)如如果果经经常常查查询询的的仅仅是是前前六六项项,后后三三项项使使用用较较少少,就就可将该关系分解成两个关系,即可将该关系分解成两个关系,即EMP(工号,姓名,性别,年龄,职务,工资工号,姓名,性别,年龄,职务,工资)EMP(工号,工龄,住址,电话工号,工龄,住址,电话)以便减小单位时间内的以便减小单位时间内的TV,凡在同

156、一记录中,同凡在同一记录中,同时存在经常查询项和非经常查询项,都可采用这种分时存在经常查询项和非经常查询项,都可采用这种分解方法。解方法。5.4.3性能预测和优化性能预测和优化例例5-7现有记载飞行员情况的关系:现有记载飞行员情况的关系:PILOT(工工号号,姓姓名名,性性别别,年年龄龄,技技术术等等级级,可可驾驾机机型型,飞行年数飞行年数)若若每每一一飞飞行行员员都都能能驾驾驶驶多多种种飞飞机机,则则在在关关系系中中每每一一飞飞行行员员将将占占有有多多个个记记录录,分分别别记记载载他他可可驾驾驶驶的的机机型型及及在在该该机机型型上上的的飞飞行行年年数数。在在姓姓名名、性性别别、年年龄龄等等字

157、字段段上上将将出出现现许许多多冗冗余余信信息息。优优化化的的方方法法,是是将将这这一一关关系分解为以下两个关系:系分解为以下两个关系:PILOT1(工号,姓名,性别,年龄,技术等级工号,姓名,性别,年龄,技术等级)PILOT2(工号,可驾机型,飞行年数工号,可驾机型,飞行年数)以减小以减小TV和和SV。5.4.3性能预测和优化性能预测和优化例例5-8某某大大学学记记载载学学生生情情况况的的关关系系,包包括括本本科科生生、硕硕士士生生与与博博士士生生三三类类学学生生。如如果果多多数数查查询询一一次次只只涉涉及及其其中中的的一一类类学学生生,就就应应把把整整个个学学生生关关系系“水水平平分分割割”

158、为为本本科科生生、硕硕士士生生、博博士士生生三三个个关系,以便减小整个系统的关系,以便减小整个系统的LRA。以以上上仅仅举举了了少少量量的的例例子子。读读者者可可举举一一反反三三,在在实实际际应应用用中中灵灵活活处处理理。还还需需指指出出,LRA、TV与与SS三三项项指指标标是是相相互互制制约约的的,有有时时为为了了减减小小TV,可可能能增增大大LRA;减减小小了了LRA,又又可可能能增增大大SS,优化时必须按具体情况权衡,然后作出选择。优化时必须按具体情况权衡,然后作出选择。还还应应指指出出,垂垂直直分分割割和和水水平平分分割割与与本本书书前前面面所所说说的的投投影影和和选选取取貌貌似似相相

159、同同,其其实实这这是是两两回回事事,分分割割是是把把一一个个关关系系分分割割成成数数个个关关系系,借借以以减减小小查查询询时时的的工工作作量量,而而投投影影与与选选取取并并不不改改变变关关系系的的结结构构,当当然然也也不不会会降降低低三三项项指指标标。前前者者说说的的是是优优化化设设计计,后后者说的是关系运算。者说的是关系运算。5.5数据库物理设计数据库物理设计对对一一个个给给定定的的逻逻辑辑数数据据模模型型选选取取一一个个最最适适合合应应用用环环境境的的物物理理结结构构的的过过程程称称为为数数据据库库的的物物理理设设计计。所所谓谓数数据据库库的的物物理理结结构构主主要要指指数数据据库库在在物

160、物理理设设备备上上的的存存储储结结构构和和存存取取方方法法。它它完完全全依赖于给定的计算机系统。依赖于给定的计算机系统。5.5数据库物理设计数据库物理设计物物理理设设计计可可分分两两步步。第第一一步步是是确确定定数数据据库库的的物物理理结结构构,然然后后对对物物理理结结构构进进行行评评价价。评评价价的的重重点点是是时时间间和和空空间间效效率率。如如果果评评价价结结果果满满足足原原设设计计要要求求则则转转向向物物理理实实施施,否否则则,就就重重新新设设计计或或修修改改物物理理结结构构,有有时时甚甚至至要要返返回回逻逻辑辑设设计计阶段修改数据模型。阶段修改数据模型。5.5.1物理设计的要求和内容物

161、理设计的要求和内容为为了了进进行行物物理理设设计计,设设计计人人员员必必须须了了解解以以下下几方面的问题:几方面的问题:(1)全面了解给定的)全面了解给定的DBMS的功能。的功能。(2)了解应用环境。)了解应用环境。(3)了解外存设备的特性。)了解外存设备的特性。5.5.1物理设计的要求和内容物理设计的要求和内容物理设计的内容主要包括:物理设计的内容主要包括:(1)确定数据的存储结构。)确定数据的存储结构。(2)存取路径的选择和调整。)存取路径的选择和调整。(3)确定数据存放位置。)确定数据存放位置。(4)确定存储分布。)确定存储分布。5.5.2评价评价物物理理设设计计过过程程需需要要对对时时

162、间间、空空间间效效率率、维维护护代代价价和和各各种种用用户户要要求求进进行行权权衡衡,其其结结果果可可以以产产生生多多种种方方案案。在在实实施施数数据据库库前前对对这这些些方方案案进进行行细细致致地地评评价价,以以选选择择一一个个较较优优的的方方案案是是十十分分必必要的。要的。5.6数据库的实施和维护数据库的实施和维护对对数数据据库库的的物物理理设设计计初初步步评评价价完完成成后后,就就可可建建立立数数据据库库了了。数数据据库库的的实实施施相相应应于于软软件件工工程程的的编编码码、调调试试阶阶段段。设设计计人人员员运运用用DBMS提提供供的的数数据据定定义义语语言言将将逻逻辑辑设设计计和和物物

163、理理设设计计的的结结果果严严格格地地描描述述出出来来,成成为为DBMS可可接接受受的的源源代代码码。经经过过调调试试产产生生目目标标模模式式,然然后后组组织织数数据据入入库库。组织数据入库是数据库实施阶段最主要的工作。组织数据入库是数据库实施阶段最主要的工作。5.6.1数据库数据的载入数据库数据的载入由由于于需需存存入入数数据据库库的的数数据据量量一一般般都都很很大大,并并且且数数据据来来源源于于该该组组织织的的各各个个部部门门,分分散散在在各各种种数数据据文文件件原原始始凭凭证证中中。数数据据的的结结构构和和格格式式通通常常不不符符合合数数据据库库的的要要求求,必必须须进进行行转转换换。因因

164、此此组组织织数数据据入入库库是是一一件件耗耗费费大大量量人人力、物力的工作。力、物力的工作。目目前前的的DBMS没没有有提提供供通通用用的的软软件件来来完完成成数数据据的的转转换换工工作作。其其困困难难在在于于应应用用环环境境千千差差万万别别,源源数数据据也也各各不相同,因而不存在通用的转换规则。不相同,因而不存在通用的转换规则。5.6.1数据库数据的载入数据库数据的载入数数据据的的转转换换和和组组织织对对于于小小系系统统可可以以用用人人工工方方法法完完成成。但但是是,人人工工转转换换效效率率低低、质质量量差差,一一般般来来说说,应应设设计计一一个个数数据据输输入入子子系系统统让让计计算算机机

165、完完成成这这个个工工作作。输输入入子子系系统统的的主主要要功功能能是是:原原始始数数据据的的输输入入、抽抽取取、校校验验、分分类类、转转换换和和综综合合,最最终终把把数数据据组组织织成成符符合合数数据据库库结结构构的的形形式式,然然后后把把数数据据存存入入数数据据库库中中。数数据据的的转转换换、分分类类和和综综合合常常常常要要经经过过多多次次才才能能完完成成,因因而而输输入入子子系系统统的的设设计计和和实实施施亦亦是是比比较较复复杂杂的的,要要编编写写许许多多应应用用程程序序。输输入入子子系系统统的的设设计计不不能能等等物物理理设设计计完完成成后后才才开开始始,应该和数据库设计工作并行。应该和

166、数据库设计工作并行。5.6.2数据库的试运行数据库的试运行在在完完成成上上述述工工作作之之后后,便便可可进进入入数数据据库库的的试试运运行行阶阶段段,或或者者称称联联合合调调试试阶阶段段。这这阶阶段段的的主主要工作是:要工作是:(1)实实际际运运行行应应用用程程序序,执执行行对对数数据据库库的的各各种操作,测试应用程序的功能。种操作,测试应用程序的功能。5.6.2数据库的试运行数据库的试运行(2)测测量量系系统统的的性性能能指指标标,分分析析是是否否符符合合设设计计目目标标。虽虽然然已已在在物物理理设设计计过过程程中中进进行行了了性性能能预预测测,但但是是仅仅仅仅估估价价是是粗粗糙糙的的并并可

167、可能能失失真真,必必须须在在试试运运行行阶阶段段进进行行实实际际测测量量和和评评价价。有有些些参参数数的的最最佳佳值值往往往往是是经经过过运运行行调调试试后后才才找找到到的的。如如果果实实际际结结果果不不符符合合设设计计目目标标,则则需需返返回回物物理理设设计计阶阶段段,调调整整物物理理结结构构,修修改改参参数数。有有时时,也许还需要返回逻辑设计阶段,调整逻辑结构。也许还需要返回逻辑设计阶段,调整逻辑结构。5.6.3数据库的运行和维护数据库的运行和维护数数据据库库投投入入运运行行标标志志着着开开发发任任务务的的基基本本完完成成和和维维护护工工作作的的开开始始,但但并并不不意意味味着着设设计计过

168、过程程已已经经结结束束。任任何何数数据据库库只只要要它它存存在在一一天天,对对它它的的设设计计就就得得不不断断地地进进行行评评价价、调调整整、修修改改甚甚至至完完全全改改变变。因因此此数数据据库库的的维维护护不不仅仅是是维维护护其其正正常常活动而且是设计工作的继续和提高。活动而且是设计工作的继续和提高。5.6.3数据库的运行和维护数据库的运行和维护维护阶段的主要工作是:维护阶段的主要工作是:(1)数数据据库库的的安安全全性性、完完整整性性控控制制及及系系统统的的转储和恢复。转储和恢复。(2)性能的监督、分析和改进。)性能的监督、分析和改进。(3)数据库的重组织和重构造。)数据库的重组织和重构造

169、。5.7数据库保护数据库保护为为了了保保证证数数据据库库的的安安全全可可靠靠和和正正确确有有效效,DBMS必必须须提提供供统统一一的的数数据据库库保保护护功功能能。数数据据库库保保护护也也称称数数据据控控制制,主主要要包包括括数数据据的的安安全全性性、完整性、并发控制和数据库恢复。完整性、并发控制和数据库恢复。5.7.1安全性安全性安安全全性性是是评评价价数数据据库库系系统统的的一一个个重重要要指指标标,它它标标志志程程序序和和数数据据等等信信息息的的安安全全程程度度。一一个个完完善善的的数数据据库库系系统统应应防防止止非非法法用用户户访访问问或或使使用用数数据据库库系系统统中中的的程程序序和

170、和数数据据。数数据据安安全全性性(DataSecurity)指指数数据据库库的的数数据据不不被被破破坏坏和和泄泄漏漏以以及不被非法修改。及不被非法修改。5.7.1安全性安全性(1)用户标识和鉴定)用户标识和鉴定系系统统提提供供一一定定的的方方式式让让用用户户标标识识自自己己的的名名字字或或身身份,系统进行核实,通过鉴定后才提供机器使用权。份,系统进行核实,通过鉴定后才提供机器使用权。5.7.1安全性安全性常用的方法有:常用的方法有:用一个用户名或者用户标识符来标明用户身份。用一个用户名或者用户标识符来标明用户身份。口口令令(Password)。为为了了进进一一步步核核实实用用户户,系统常常要求

171、用户输入口令。系统常常要求用户输入口令。系系统统提提供供一一个个随随机机数数,用用户户根根据据事事先先约约定定好好的的某某一一过过程程或或者者函函数数进进行行计计算算,系系统统根根据据用用户户计计算算结结果是否正确来进一步确定用户身份。果是否正确来进一步确定用户身份。5.7.1安全性安全性(2)存取控制)存取控制获获得得上上机机权权的的用用户户不不一一定定存存取取数数据据库库中中的的任任何何数数据据。对对用用户户要要分分类类,对对不不同同的的用用户户授授予予不不同同的的存存取取权权限限,系系统统要要执执行行存存取取控控制制。用用户户权权限限是是指指不不同同的的用用户户对对不不同同的的数数据据对

172、对象象允允许许执执行行的的不不同同类类型型操操作作的的权权限限。一一般般地地,对对不不同同的的用用户户提提供供数数据据库库的的不不同同的的子子集集,对对数数据据库库的的操操作作类型也是可以不一样的。类型也是可以不一样的。5.7.1安全性安全性一一般般数数据据库库都都有有子子模模式式一一级级,一一个个用用户户只只能能跟跟自自己己有有关关的的子子模模式式所所描描述述的的数数据据打打交交道道,只只能能存存取跟自己有关的子模式中所描述的数据。取跟自己有关的子模式中所描述的数据。还还要要规规定定允允许许操操作作的的类类型型。对对自自己己子子模模式式中中定定义义的的数数据据,还还要要按按照照规规定定的的操

173、操作作类类型型进进行行操操作作。系系统统只只执执行行合合法法操操作作,拒拒绝绝执执行行非非法法操操作作。操操作作类类型有多种,如检索、插入、删除、修改等。型有多种,如检索、插入、删除、修改等。还还可可以以规规定定数数据据项项值值的的存存取取限限制制,只只允允许许某某用户存取某一范围的值。用户存取某一范围的值。5.7.2完整性完整性完完整整性性是是指指数数据据库库中中的的数数据据的的正正确确性性和和相相容容性性,它它反反映映了了现现实实世世界界中中实实体体的的本本来来面面貌貌。数数据据库库系系统统要要提提供供一一种种功功能能来来保保护护数数据据的的完完整整性性。系系统统用用一一定定的的机机制制来

174、来检检查查数数据据库库中中的的数数据据是是否否满满足足完完整整性性约约束束条条件件。完整性约束条件作为模式的一部分来定义。完整性约束条件作为模式的一部分来定义。数数据据库库管管理理系系统统要要执执行行完完整整性性约约束束,完完整整性性约约束束有数据值的完整性约束、结构上的完整性约束等。有数据值的完整性约束、结构上的完整性约束等。5.7.3并发控制并发控制数数据据库库是是一一个个共共享享资资源源,为为多多用用户户服服务务,可可以以有有多多个个用用户户同同时时操操作作和和使使用用。在在多多用用户户环环境境下下不不止止一一个个程程序序同同时时运运行行。如如果果使使用用户户的的应应用用程程序序一一个个

175、一一个个地地串串行行执执行行,就就使使数数据据库库系系统统大大量量时时间间处处于于闲闲置置状状态态,大大大大降降低低了了数数据据库库系系统统的的效效率率。为为了了充充分分利利用用数数据据库库资资源源,提提高高数数据据库库系系统统效效率率,应应当当把把数数据据库库系系统统设设计计变变成成能能使使多多个个用用户户同同时时运运行行应应用用程程序序并并行行存存取取同同一一个个数数据据的的情情况况。如如果果对对数数据据库库的的并并发发操操作作不不加加控控制制,就就会会产产生生存存取取不不正正确确的的数数据据,破破坏坏数数据据库库的的一一致致性性。因因此此,数数据库应提供并发控制功能。据库应提供并发控制功

176、能。5.7.4恢复恢复在在数数据据库库系系统统中中,不不但但要要有有各各种种各各样样的的检检验验和和控控制制,以以减减少少出出错错的的可可能能性性,还还得得有有相相当当的的措措施施来来实实现现出出错错后后的的恢恢复复。因因为为即即使使有有种种种种检检验验和和控控制制措措施施,出出错错仍仍然然是是难难免免的的。因因此此,系系统必须有恢复功能。统必须有恢复功能。数数据据库库恢恢复复的的基基本本原原理理是是“冗冗余余”方方法法,就就是是说说,根根据据冗冗余余把把存存储储在在系系统统另另外外地地方方的的信信息息来重建数据库中受破坏的不正确部分。来重建数据库中受破坏的不正确部分。5.7.4恢复恢复其方法

177、有:其方法有:(1)周周期期性性地地把把整整个个数数据据库库复复制制(或或转转存存)到到存存档存储器上。档存储器上。(2)每每次次变变更更数数据据库库时时,在在叫叫做做运运行行记记载载(Log)的的特特殊殊的的数数据据集集中中写写入入一一个个记记录录,在在这这个个记记录录中中包包含含变更项目的旧值和新值。变更项目的旧值和新值。(3)如果出现故障,或装入最新的存档备份,或)如果出现故障,或装入最新的存档备份,或利用运行记载撤销所有不可靠的变更到某一正确状态。利用运行记载撤销所有不可靠的变更到某一正确状态。习习题题1选择题选择题(1)_是提供信息,辅助人们对环境进行控制与决策的系统。是提供信息,辅

178、助人们对环境进行控制与决策的系统。A.软件系统软件系统B.关系系统关系系统C.程序系统程序系统D.信息系统信息系统(2)按按照照一一定定的的设设计计规规程程,用用_设设计计数数据据库库是是目目前前技技术术条条件件下下最最实实用用的方法。的方法。A.程序化方法程序化方法B.工程化方法工程化方法C.规范设计法规范设计法D.结构化方法结构化方法(3)_是是评评价价数数据据库库系系统统的的一一个个重重要要指指标标,它它标标志志程程序序和和数数据据等等信信息息的安全程度。的安全程度。A.统一性统一性B.可靠性可靠性C.可维护性可维护性D.安全性安全性习习题题(4)_是是指指数数据据库库中中正正确确性性和

179、和相相容容性性,它它反反映映了了现现实实世世界中实体的本来面貌。界中实体的本来面貌。A.可靠性可靠性B.安全性安全性C.完整性完整性D.可维护性可维护性(5)_是是以以正正确确的的方方式式执执行行并并发发操操作作,避避免免数数据据库库的的不不一致性,使用户事务的执行不受其他事务的干扰。一致性,使用户事务的执行不受其他事务的干扰。A.并发控制并发控制B.恢复恢复C.安全性安全性D.物理设计物理设计习习题题2填空题填空题(1)_是是信信息息系系统统的的核核心心和和基基础础,使使信信息息系系统统可可以以方方便便、及及时时、准准确地获得所需信息。确地获得所需信息。(2)_是信息系统开发和建设的重要组成

180、部分。是信息系统开发和建设的重要组成部分。(3)数数据据库库设设计计的的不不同同阶阶段段,支支持持实实现现的的具具体体规规范范设设计计方方法法有有三三种种,它它们们是是_、_和和_。(4)_的基本思想是过程迭代和逐步求精。的基本思想是过程迭代和逐步求精。(5)按按规规范范化化设设计计方方法法将将数数据据库库设设计计分分为为_、_、_、_、_和和_等六个阶段。等六个阶段。(6)对对于于一一个个给给定定的的逻逻辑辑数数据据模模型型选选取取一一个个最最适适合合应应用用环环境境的的物物理理结结构构的的过过程称为数据库的程称为数据库的_。习习题题(7)调查的重点是)调查的重点是_和和_。( 8) 用用

181、户户 对对 数数 据据 库库 的的 要要 求求 有有 _、 _和和_等三个主要要求。等三个主要要求。(9)概概念念结结构构设设计计通通常常可可分分为为_和和_两两个个步步骤。骤。(10)_的的任任务务是是把把概概念念结结构构转转化化为为可可选选用用的的DBMS所支持的数据模型相符合的过程。所支持的数据模型相符合的过程。(11)关关系系模模型型的的特特点点是是把把_和和_都都表表示示为为关系。关系。(12)预预测测方方法法是是以以_、_和和_等等三项指标作为衡量数据库性能的标准。三项指标作为衡量数据库性能的标准。参考答案参考答案1(1)D(2)B(3)D(4)C(5)A2(1)数据库数据库(2)

182、数据库设计)数据库设计(3)基于)基于E-R模型的数据库设计方法模型的数据库设计方法基于基于3NF的设计方法的设计方法基于抽象语法规范的设计方法基于抽象语法规范的设计方法(4)规范设计法)规范设计法(5)需求分析阶段、概念设计阶段)需求分析阶段、概念设计阶段逻辑设计阶段、物理设计阶段逻辑设计阶段、物理设计阶段数据库实施阶段、数据库运行、维护阶段数据库实施阶段、数据库运行、维护阶段参考答案参考答案(6)需求收集、分析)需求收集、分析(7)“数据数据”“处理处理”(8)信息需求、处理要求、安全性和完整性的)信息需求、处理要求、安全性和完整性的要求要求(9)局部结构设计、总体结构设计)局部结构设计、

183、总体结构设计(10)逻辑结构设计)逻辑结构设计(11)实体、联系()实体、联系(12)LRA、TV、SS第第6章章VisualFoxPro6.0简介简介学习要点学习要点1、VisualFoxPro6.0的的特点特点2、用户界面和工作方式、用户界面和工作方式3、向导、设计器、生成器、向导、设计器、生成器4、数据类型、表达式、函数和命令、数据类型、表达式、函数和命令第第6章章VisualFoxPro6.0简介简介6.1VisualFoxPro6.0的特点的特点6.2VisualFoxPro6.0的用户界面和工作方的用户界面和工作方式式6.3VisualFoxPro6.0的辅助设计工具的辅助设计工具

184、6.4VisualFoxPro6.0的语言成分的语言成分第第6章章VisualFoxPro6.0简介简介6.1VisualFoxPro6.0的特点的特点VisualFoxPro6.0具具有有界界面面友友好好、工工具具丰丰富富速速度度快快等等优优点点,并并在在数数据据库库操操作作、数数据据库库管管理理、可可视视化化开开发发环环境境和和面面向向对对象象程程序序设设计计方方面面都都具具有很强的功能,主要体现在以下有很强的功能,主要体现在以下9个方面。个方面。兼容性好。兼容性好。增强了项目管理以及数据库管理功能。增强了项目管理以及数据库管理功能。应用程序开发更简便。应用程序开发更简便。6.1Visua

185、lFoxPro6.0的特点的特点改进了程序调试工具。改进了程序调试工具。更更加加简简便便的的表表设设计计和和扩扩充充内内容容的的数数据据字字典。典。增强了查询和视图设计功能。增强了查询和视图设计功能。增强了表单设计功能。增强了表单设计功能。更多更好的向导。更多更好的向导。增强了增强了OLE与与ActiveX的集成。的集成。6.2VisualFoxPro6.0用户界面和工用户界面和工作方式作方式6.2.1VisualFoxPro6.0的启动和退出的启动和退出1.启动启动在在 Windows 98/2000中中 文文 版版 环环 境境 下下 安安 装装VisualFoxPro6.0后后,在在“开开

186、始始”菜菜单单的的“程程序序”菜菜单单下下自自动动添添加加一一个个菜菜单单以以及及子子菜菜单单,选选择择它即可启动它即可启动VisualFoxPro6.0。6.2.1VisualFoxPro6.0的的启启动动和和退退出出图图6-1VisualFoxPro6.0启动菜单启动菜单6.2.1VisualFoxPro6.0的启动和退的启动和退出出图图6-2VisualFoxPro6.0主窗口主窗口6.2.1VisualFoxPro6.0的的启启动动和和退退出出2.退出退出退出退出VisualFoxPro6.0的方法有三种:的方法有三种:用鼠标单击用鼠标单击VisualFoxPro窗口的关闭按钮;窗口的

187、关闭按钮;选择选择“文件文件”菜单中菜单中“退出退出”菜单项;菜单项;在在“命命令令”窗窗口口中中键键入入命命令令QUIT,然然后后按按下回车键。下回车键。6.2.2VisualFoxPro6.0的用户界面的用户界面与与所所有有的的Windows应应用用程程序序一一样样,VisualFoxPro6.0也也采采用用图图形形用用户户界界面面,并并在在界界面面中中大大量量使使用用窗窗口口、图图标标、菜菜单单等等技技术术,主主要要通通过过鼠鼠标来操作。标来操作。VisualFoxPro6.0的的界界面面是是典典型型的的Windows界界面面风风格格,由由主主窗窗口口、“命命令令”窗窗口口、系系统统菜菜

188、单、工具栏、状态条等构成。单、工具栏、状态条等构成。6.2.2VisualFoxPro6.0的用户界面的用户界面1.窗口窗口窗窗口口是是从从屏屏幕幕上上划划分分出出来来的的一一个个矩矩形形区区域域,是是图图形形用用户户界界面面提提供供的的一一个运行环境。个运行环境。图图6-3VisualFoxPro6.0窗口的工作状态窗口的工作状态6.2.2VisualFoxPro6.0的用户界面的用户界面2.菜单菜单VisualFoxPro6.0主主要要使使用用两两类类菜菜单单:下下拉拉式菜单和弹出式菜单。式菜单和弹出式菜单。系系统统菜菜单单为为下下拉拉式式菜菜单单。它它通通常常只只显显示示菜菜单单栏栏中中

189、的的若若干干选选项项。如如果果有有某某个个选选项项被被选选中中,该该选选项项下下方方就就会会拉拉伸伸出出一一个个子子菜菜单单。这这也也是是下下拉拉式式菜菜单单名名称称的的由由来来。图图6-4显显示示了了几几个个常常用用子子菜菜单展开后的内容。单展开后的内容。6.2.2VisualFoxPro6.0的用户界面的用户界面图图6-4VisualFoxPro6.0常用系统子菜单常用系统子菜单6.2.2VisualFoxPro6.0的用户界面的用户界面VisualFoxPro6.0菜单的敏感性主要体现在:菜单的敏感性主要体现在:子子菜菜单单的的内内容容可可变变。以以“显显示示”子子菜菜单单为为例例,在在

190、没没有有打打开开任任何何文文件件的的情情况况下下,它它只只有有“工工具具栏栏”一一个菜单项;如果已打开了某个表,其子菜单将改变。个菜单项;如果已打开了某个表,其子菜单将改变。菜菜单单项项的的颜颜色色可可变变。菜菜单单项项有有深深、浅浅两两种种显显示示颜颜色色,随随当当时时的的数数据据环环境境而而变变化化。如如果果某某一一菜菜单单项项当当前为灰色,表示它暂时不可使用。前为灰色,表示它暂时不可使用。6.2.2VisualFoxPro6.0的用户界面的用户界面3.工具栏工具栏利利用用工工具具栏栏能能够够快快速速地地访访问问常常用用的的命命令令,但但工工具具栏栏中中的的按按钮钮只只能能通通过过鼠鼠标标

191、来来使使用用。只只要要用用户户单单击击工工具具栏栏中中的的按按钮钮,VisualFoxPro6.0就就执执行行指指定定给给该该按按钮钮的的命命令令或或过过程程。VisualFoxPro6.0提提供供了了多多种种工工具具栏栏,表表6-1中中列列出出了了部部分分工工具具栏的名称及其完成的功能。栏的名称及其完成的功能。6.2.2VisualFoxPro6.0的用户界面的用户界面表表6-1VisualFoxPro6.0提供的工具栏名称及其完成的功能提供的工具栏名称及其完成的功能工具栏工具栏 功功能能描描述述常用常用提供了在新建、打开、保存或打印各种数据库文件时提供了在新建、打开、保存或打印各种数据库文

192、件时最常用的按钮。最常用的按钮。布局布局在创建表单或报表时,用于对齐和调整控件的位置在创建表单或报表时,用于对齐和调整控件的位置调色板调色板 在创建表单或报表时,用于设定各种控件的颜色在创建表单或报表时,用于设定各种控件的颜色数据库设计器数据库设计器用于创建数据库。只在激活数据库设计器时才显示用于创建数据库。只在激活数据库设计器时才显示查询设计器查询设计器用于建立查询。只有在打开查询设计器之后才显示用于建立查询。只有在打开查询设计器之后才显示该工具栏该工具栏6.2.2VisualFoxPro6.0的用户界面的用户界面视图设计器视图设计器用于建立本地或远程视图。只有在打开视用于建立本地或远程视图

193、。只有在打开视图设计器之后才显示该工具栏图设计器之后才显示该工具栏表单设计器表单设计器用于建立表单。当显示表单设计器时,用于建立表单。当显示表单设计器时,自动显示该工具栏自动显示该工具栏表单控件表单控件用于在表单上创建控件用于在表单上创建控件。在。在VisualFoxPro6.0中,中,当打开表单设计器时,该工具栏不再自动显示当打开表单设计器时,该工具栏不再自动显示报表设计器报表设计器用于建立报表。当显示报表设计器时,用于建立报表。当显示报表设计器时,自动显示该工具栏自动显示该工具栏报表控件报表控件用于在报表上创建控件。当打开报表设计器时,用于在报表上创建控件。当打开报表设计器时,自动显示该工

194、具栏自动显示该工具栏打印预览打印预览用于修改预览的页面并进行放大或缩小用于修改预览的页面并进行放大或缩小6.2.2VisualFoxPro6.0的用户界面的用户界面4.对话框对话框对对话话框框是是以以人人-机机对对话话为为主主要要目目的的的的一一类类窗窗口口,在在VisualFoxPro6.0中中有有着着广广泛泛的的应应用用。用用户户可可以以通通过过对对话话框框选选择择所所需需的的数数据据或或操操作作;借借助助于于对对话话框框引引导导用用户户正正确确地地操操作作,或或者者向向用用户户提提供供警警告告或或提提示示信信息息。VisualFoxPro6.0大大量量使使用用的的向向导导、设设计计器器等

195、等界界面面操操作作工工具具,实实际际上上都都是是由由一一个个个个特特定定的的对对话话框框构构成的。成的。6.2.3VisualFoxPro6.0工作方式工作方式VisualFoxPro6.0和和以以前前的的版版本本一一样样,支支持持两两种种不不同同的的工工作作方方式式,即即交交互互操操作作方方式式与与程程序序执行方式。执行方式。1.交互操作方式交互操作方式2.程序执行方式程序执行方式6.3VisualFoxPro6.0的辅助设计工的辅助设计工具具为为了了加加快快应应用用程程序序的的开开发发,减减轻轻用用户户的的程程序序设设计计工工作作量量,VisualFoxPro6.0提提供供了了3类类支支持

196、持可可视视化化设设计计的的辅辅助助工工具具,现现简单介绍如下。简单介绍如下。6.3.1向导向导(wizard)向向导导是是一一种种快快捷捷设设计计工工具具,通通过过一一组组对对话话框框依依次次与与用用户户对对话话,引引导导用用户户分分步步完完成成VisualFoxPro6.0的的某某项项任任务务,例例如如创创建建一一个个新新表表、建建立立一一项项查查询询或或者者设设置一个报表的格式等。置一个报表的格式等。VisualFoxPro6.0有有20余余种种向向导导工工具具。从从创创建建表表、视视图图、查查询询等等数数据据文文件件,到到建建立立报报表表、标标签签、表表单单、图图表表等等VisualFo

197、xPro6.0文文档档直直至至创创建建VisualFoxPro6.0的的应应用用程程序序、SQL服服务务器器上上的的数数据据库库等等操操作作,均均可使用相应的向导工具来完成。可使用相应的向导工具来完成。6.3.2设计器设计器(designer)设设计计器器一一般般比比向向导导具具有有更更强强的的功功能能,可可用用来来创创建建或或者者修修改改VisualFoxPro6.0应应用用程程序序所所需需要要的的构构件件。例例如如使使用用表表设设计计器器来来创创建建表表,使使用用表表单单设设计计器器来来创创建建表表单单,等等等等。与与向向导导相相似似,设设计计的的对对象象也也包包括括数数据据文文件件与与V

198、isualFoxPro6.0文档两大类。文档两大类。6.3.3生成器生成器(builder)生生成成器器(即即构构造造器器)的的主主要要功功能能是是在在VisualFoxPro6.0应应用用程程序序的的构构件件中中生成并加入某类控件,例如要生成一个组合框,可使用组合框生成器来生成。生成并加入某类控件,例如要生成一个组合框,可使用组合框生成器来生成。6.3.3生成器生成器(builder)图图6-5显显示示了了“表表单单”生生成成器器的的对对话话框框。从从外外观观上上看看,它它是是一一个个选选项项卡卡对对话话框框。通通常常每每个个生生成成器器都都包包括括一叠选项卡,可供用户设置所选定对象的属性。

199、一叠选项卡,可供用户设置所选定对象的属性。以以上上3类类辅辅助助工工具具全全部部使使用用图图形形交交互互界界面面。通通过过直直观观、简简单单的的人人-机机交交互互操操作作,使使用用户户轻轻松松地地完完成成应应用用程程序序的的界界面面设设计计任任务务。不不仅仅如如此此,所所有有上上述述工工具具的的设设计计结结果果,都都能能自自动动生生成成VisualFoxPro6.0的的代代码码,使使用用户户摆摆脱脱繁繁琐琐的的编编码码任任务务,轻轻松松地地建建立立起起自自己己的的VisualFoxPro6.0应用程序。应用程序。6.4VisualFoxPro6.0的语言成分的语言成分作作为为数数据据库库管管理

200、理系系统统,VisualFoxPro6.0具具有有与与其其它它高高级级语语言言相相似似的的语语言言成成分分,包包括括命命令令(或或称称为为语语句句)、函函数数、表表达达式式等等。为为叙叙述述方方便便,先先介介绍绍VisualFoxPro6.0中可以使用的数据类型。中可以使用的数据类型。6.4.1数据类型数据类型数数据据类类型型用用于于决决定定数数据据的的存存储储方方式式和和使使用用方方式式。在在VisualFoxPro6.0中中,每每一一个个数数据据都都有有与与其其对对应应的的数数据据类类型型,如如时时间间(Date)、货货币币(Currency)等等类类型型。在在同同一一类类型型的的数数据据

201、之之间间可可以以做做某某些些运运算算,例例如如,两两个个实实数数之之间间可可以以做做乘乘法法运运算算,但但两两个个字字符符型型数数据据不不能能做做乘乘法法运运算算。VisualFoxPro中中的的数数据据类类型型如如表表6-2所示。所示。6.4.1数据类型数据类型表表6-2VisualFoxPro的数据类型的数据类型类类型型名名称称长长度度Character 字符型字符型(C)每个字符占用一个字节每个字符占用一个字节Numeric数值型数值型(N)8个字节个字节Currency货币型货币型(Y)8个字节个字节Date 日期型日期型(D)8个字节个字节DateTime日期时间型日期时间型(T)8

202、个字节个字节Logical逻辑型逻辑型(L)1个字节个字节6.4.1数据类型数据类型Float浮点型浮点型(F)8个字节个字节Double双精度双精度型型(B)8个字节个字节Integer整型整型(I)4个字节个字节Memo备注型备注型(M)4个字节个字节General通用型通用型(G)4个字节个字节6.4.2表达式表达式表表达达式式是是VisualFoxPro语语言言的的重重要要成成分分。它它具具有有计计算算、判判断断和和数数据据类类型型转转换换等等功功能能,广广泛泛用用于于命命令令、函函数数、对对话话框框、控控件件及及其其属属性性之之中中。下下面面对对构构成成表表达达式式的主要成分加以介绍

203、。的主要成分加以介绍。1.常量常量常常量量是是数数据据的的存存放放形形式式之之一一,是是指指在在命命令令操操作作或或程程序序运运行行过过程程中中不不变变化化的的数数据据。通通常常在在命命令令表表达达式式或或程程序序中中直直接接给给出出。常常量量具具有有数数值值型型、字字符符型型、日日期期型型、日期时间型、逻辑型和货币型等多种数据类型。日期时间型、逻辑型和货币型等多种数据类型。6.4.2表达式表达式数值型常量数值型常量整整数数、小小数数或或科科学学计计数数法法表表达达的的数数都都是是数数值值型型常常量量。例如,例如,100,3.14,8.98E6。字符型常量字符型常量字字符符型型常常量量是是使使

204、用用单单引引号号、双双引引号号或或方方括括号号3种种定定界界符符之之一一括括起起来来的的字字符符串串。例例如如,计计算算机机科科学学,中中华人民共和国华人民共和国,2.71828。VisualFoxPro中字符串最大长度为中字符串最大长度为254个字符。个字符。6.4.2表达式表达式日期型和日期时间型常量日期型和日期时间型常量日日 期期 型型 常常 量量 必必 须须 使使 用用 大大 括括 号号 括括 起起 来来 。 例例 如如12/06/2003、/。还还有有一一种种“严严格格的的日日期期格格式式”为为:yyyy-mm-dd,hh:mm:ssa|p,格格式式中中的的符符号号表表示示该该日日期

205、期格格式式是是严严格格的的,其其中中的的-号号可可用用正正斜斜杠杠代代替替。例例如如09/25/2003。日日期期时时间间型型常常量量表表示示日日期期、时时间间或或者者日日期期与与时时间间,例如例如11:11:11AM、09/25/2003,11:11:11。6.4.2表达式表达式逻辑型常量逻辑型常量逻逻辑辑型型常常量量只只有有真真和和假假两两种种值值,.T.,.t.,.Y.和和.y.都都表表示示真真;.F.,.f.,.N.和和.n.都都表表示假。示假。货币型常量货币型常量货货币币型型常常量量使使用用符符号号加加上上数数值值表表示示。例例如如15.2。6.4.2表达式表达式2.变量变量变变量量

206、是是数数据据的的主主要要存存放放形形式式之之一一,是是指指在在命命令令操操作作或或程程序序执执行行期期间间可可任任意意改改变变其其值值的的量量。VisualFoxPro的变量包括字段变量和内存变量两种。的变量包括字段变量和内存变量两种。字段变量字段变量字字段段变变量量是是依依附附于于表表文文件件而而存存在在的的,VisualFoxPro6.0的的表表文文件件相相当当于于一一个个关关系系即即二二维维表表,字字段段变变量量相相当当于于二二维维表表中中的的数数据据项项,例例如如student表表中中的的“学学号号”、“姓名姓名”、“年龄年龄”等都是字段变量。等都是字段变量。6.4.2表达式表达式内存

207、变量内存变量内内存存变变量量可可用用来来存存储储数数据据,内内存存变变量量建建立立后后存存储储于于内存中。内存中。内存变量的种类内存变量的种类VisualFoxPro的内存变量可分为以下两种:的内存变量可分为以下两种:a.系统内存变量系统内存变量b.用户定义的内存变量用户定义的内存变量内存变量命名原则内存变量命名原则内存变量的赋值内存变量的赋值6.4.2表达式表达式命令格式:命令格式:格式格式1:=格式格式2:STORETO功功能能:计计算算,然然后后将将计计算算结结果果值值赋赋给给。说说明明:这这两两个个命命令令的的区区别别在在于于,前前一一个个命命令令只只能能定定义义单单个个内内存存变变量

208、量,而而后后一一个个命命令令可可同同时时定定义义多多个个内内存变量并赋予同一数据。存变量并赋予同一数据。6.4.2表达式表达式内存变量的显示内存变量的显示可可以以通通过过命命令令来来显显示示、查查看看当当前前已已经经定定义义的内存变量名、作用范围、类型和值。的内存变量名、作用范围、类型和值。命令格式:命令格式:LIST|DISPLAYMEMORYLIKETOPRINTERPROMPT|TOFILE功能:显示内存中的内存变量。功能:显示内存中的内存变量。6.4.2表达式表达式数组数组数组的定义数组的定义数组的赋值数组的赋值在为数组赋值时,应遵循以下规则:在为数组赋值时,应遵循以下规则:Visua

209、lFoxPro中中允允许许同同一一数数组组各各元元素素值值取取不不同同类类型,而且同一个元素的前、后类型也允许改变。型,而且同一个元素的前、后类型也允许改变。可可用用赋赋值值命命令令为为数数组组元元素素单单个个赋赋值值,也也可可以以为为整整个个数数组组的的各各个个元元素素赋赋予予相相同同值值。如如赋赋值值命命令令a=100可可为为上面定义的二维数组上面定义的二维数组a的的6个元素都赋予同样的初值个元素都赋予同样的初值100。6.4.2表达式表达式3.运算符运算符运运算算符符是是表表示示运运算算量量之之间间运运算算方方式式的的符符号号。VisualFoxPro运算符共有运算符共有5种:种:算术、

210、关系、逻辑运算符算术、关系、逻辑运算符算算术术运运算算的的操操作作数数必必须须是是数数值值,运运算算的的结结果果也也是数值。是数值。关关系系运运算算操操作作数数类类型型必必须须一一致致,比比较较的的结结果果是是逻辑值。逻辑值。逻逻辑辑运运算算的的操操作作数数必必须须是是能能得得出出逻逻辑辑值值的的表表达达式,运算结果也是逻辑值。式,运算结果也是逻辑值。6.4.2表达式表达式表6-3 Visual FoxPro 算术、关系、逻辑运算符运算 优先级运 算 符意 义 8 () 圆括号 7 或 * *乘方 6 * 乘算术 / 除 5 % 取模 + 加 - 减6.4.2表达式表达式 小于 大于 4= 大

211、于等于.关系= 相等 = = 完全相等 、# 或 != 不相等 $ 包含:左串是右串子串才为真6.4.2表达式表达式3NOT或或!非非逻辑逻辑 2AND与与1OR 或或字符、日期时间运算符字符、日期时间运算符字符运算符字符运算符日期时间运算符日期时间运算符6.4.2表达式表达式4.表达式表达式表表达达式式是是由由常常量量、变变量量、函函数数、运运算算符符及及括括号号连连接接起起来来的的用用于于描描述述数数据据之之间间运运算算关关系系的的一一种种形形式式。单单个个的的常常量量、变变量量或或函函数数都都是是表表达达式式。表表达达式式的的运运算算结结果果是一个值,其类型由表达式的类型确定。是一个值,

212、其类型由表达式的类型确定。表达式的类型表达式的类型算术表达式算术表达式字符表达式字符表达式逻辑表达式逻辑表达式日期表达式日期表达式6.4.2表达式表达式表达式值显示命令表达式值显示命令当当给给每每个个内内存存变变量量赋赋值值以以后后,即即可可通通过过显显示示表表达达式式值命令值命令“?”来显示内存变量的值。来显示内存变量的值。命令格式:命令格式:?|?功功能能:计计算算表表达达式式的的值值,并并将将其其结结果果显显示示在在屏屏幕幕上上。这这里里“?”表表示示从从屏屏幕幕下下一一行行的的第第一一列列起起显显示示结结果;果;“?”表示从当前行的当前列起显示结果。表示从当前行的当前列起显示结果。6.

213、4.3函数函数函函数数是是用用来来实实现现数数据据处处理理中中特特定定的的运运算算与与操操作作。在在VisualFoxPro中中,函函数数分分为为系系统统提提供供的的函函数数和和用用户户自自定定义义函函数数两两种种类类型型,在在学学习习和和使使用用函函数数时时应应注注意意以以下下几点:几点:函数的调用格式:函数的调用格式:(参数参数)不不同同的的函函数数有有不不同同的的参参数数个个数数,有有的的函函数数没没有有参参数数,称称为为哑哑参参,但但仍仍有有返返回回值值,例例如如函函数数DATE()能能返返回回系统的当前日期。无论有没有参数,括号都不能省略。系统的当前日期。无论有没有参数,括号都不能省

214、略。6.4.3函数函数参数的值和数据类型参数的值和数据类型参参数数可可以以是是一一个个表表达达式式,大大部部分分函函数数对对其其参参数数都都有有数数据据类类型型的的规规定定,应应注注意意避避免免因因类类型型不不匹匹配配而而引引起起的语法错误。的语法错误。函数的值和数据类型函数的值和数据类型函函数数调调用用后后都都会会得得到到一一个个返返回回值值,称称为为函函数数值值。函函数数值值都都有有规规定定的的数数据据类类型型,函函数数值值的的类类型型就就是是函函数数的的类类型型。在在用用函函数数值值组组成成表表达达式式时时要要特特别别注注意意类类型型的的匹配。匹配。6.4.3函数函数1.系统函数系统函数

215、系系统统函函数数(亦亦称称标标准准函函数数或或简简称称函函数数)用用来来实实现现数数据据处处理理中中常常用用的的特特定定运运算算与与操操作作,实实际际上上是是系系统统事事先先编编好好的的实实现现某某种种功功能能的的程程序序段段,供供用用户户调调用用并并产产生生结结果果。VisualFoxPro提提供供了了200余余种种函函数数,大大大大地地方方便便了用户的操作。了用户的操作。VisualFoxPro函函数数按按返返回回值值类类型型可可分分为为:数数值值型型函函数数、字字符符处处理理函函数数、日日期期处处理理函函数数、逻逻辑辑型型函函数数和和其它函数。其它函数。6.4.3函数函数表表6-4数值型

216、函数数值型函数函函数数功功能能ABS()求求的绝对值的绝对值SORT()求求的平方根的平方根EXP()求求e的的次方的值次方的值6.4.3函数函数表表6-5字符处理函数字符处理函数函函数数 功功能能LEN()返回返回的的字符个数字符个数VAL()将将转换成转换成数值型数据数值型数据CHR()从从表示的表示的ASCII码返回字符码返回字符ASC()返回字符的返回字符的ASCII码值码值6.4.3函数函数表表6-6日期处理函数日期处理函数函函数数 功功能能CTOD()将将转换为日期转换为日期DTOC()将将转换为字符串转换为字符串DATE()返回系统的当前日期返回系统的当前日期YEAR()返回年份

217、返回年份6.4.3函数函数表表6-7逻辑型函数逻辑型函数函函数数功功能能BOF()记录指针指向首记录之前时返回记录指针指向首记录之前时返回.T.,否则返回否则返回.F.EOF()记录指针指向末记录之后时返回记录指针指向末记录之后时返回.T.否则返回否则返回.F.FOUND()LOCATE,CONTINUE,SEEK,FIND查到返回查到返回.T.,否则返回否则返回.F.FILE()文件文件存在返回存在返回.T.否则返回否则返回.F.6.4.3函数函数表表6-8其它函数其它函数函函数数 功功能能DBF()返回工作区中打开表的名称返回工作区中打开表的名称RECNO()返回工作区中当前记录的记录号返

218、回工作区中当前记录的记录号TYPE(“”)返回表达式类型,返回表达式类型,6.4.3函数函数2.函数的基本用法函数的基本用法将函数的返回值存入一个内存变量中。例如:将函数的返回值存入一个内存变量中。例如:x=INT(123.45)&用用INT()函数得到数值的整数部分函数得到数值的整数部分?x&x值为值为123使函数直接在一个表达式中参与运算,例如:使函数直接在一个表达式中参与运算,例如:y=ABS(-2.5)*2&用用ABS()函数得到数值的绝对值,再参与运算函数得到数值的绝对值,再参与运算?y&y值为值为5.0用函数进行嵌套运算。例如:用函数进行嵌套运算。例如:s=ABS(INT(-12.

219、8)&先先对对数数值值取取整整,再再对对INT()函函数数的的返返回回值值求求绝绝对对值值?s&s值为值为126.4.4命令命令VisualFoxPro为为命命令令式式语语言言,一一条条命命令令相相当当于于一一般般高高级级语语言言中中的的一一段段程程序序,能能够够完完成成一一项项相相当当复复杂杂的功能。的功能。1.命令格式命令格式VisualFoxPro的的命命令令一一般般由由两两部部分分构构成成,其其格格式为:式为:命命令令动动词词表表明明命命令令要要执执行行的的操操作作。命命令令子子句句通通常常表示命令的操作对象、操作条件和操作结果。表示命令的操作对象、操作条件和操作结果。6.4.4命令命

220、令表表6-9VisualFoxPro命令一般格式与示例命令一般格式与示例命令动词命令动词操作对象操作对象 操作结果操作结果USETeacherSUM 基本工资基本工资TOsREPLACE基本工资基本工资WITH基本工资基本工资*2INDEXON职称职称TOzcidx6.4.4命令命令2.命令特点命令特点使使用用英英文文祈祈使使句句形形式式,命命令令的的各各部部分分简简洁规范。命令接近自然语言形式,易于理解。洁规范。命令接近自然语言形式,易于理解。命命令令中中只只讲讲对对操操作作的的要要求求,不不描描述述具具体体操作过程。操作过程。VisualFoxPro的的命命令令既既可可逐逐条条用用交交互互

221、的的方方式式执执行行,也也可可编编写写成成程程序序,以以“程程序序文文件件”的方式执行。的方式执行。6.4.4命令命令3.命令分类命令分类在在VisualFoxPro中中,系系统统提提供供了了近近500条条命命令令,可可以以将将其其大大致分为以下致分为以下7种类型。种类型。建立和维护数据库的命令。建立和维护数据库的命令。数据查询命令。数据查询命令。程程序序设设计计命命令令,包包括括程程序序控控制制、输输入入/输输出出、打打印印设设计计、运运行环境设置等命令。行环境设置等命令。界界面面命命令令,包包括括菜菜单单设设计计、窗窗口口设设计计、表表单单(及及其其控控件件)设计等命令。设计等命令。文件和

222、程序的管理命令。文件和程序的管理命令。面向对象的设计命令面向对象的设计命令其它命令其它命令6.4.4命令命令4.常用的命令子句常用的命令子句多多数数命命令令带带有有、FOR、WHILE、FIELDS等等4个常用子句。个常用子句。范围子句范围子句ALL全部记录全部记录NEXT从当前记录开始的从当前记录开始的n个记录个记录REST从当前记录开始的所有记录从当前记录开始的所有记录RECORE记录号为记录号为n的一个记录的一个记录6.4.4命令命令条件子句条件子句条条件件子子句句实实现现的的是是关关系系运运算算特特有有的的三三种种基基本本操操作作中中的的选选择择操操作作。FOR和和WHILE均均是是条

223、条件件子子句句,指指出出参参加加操操作作的的记记录录应应满满足足的的条条件件,其其中中一般为关系表达式或逻辑表达式。一般为关系表达式或逻辑表达式。FIELDS子句子句FIELDS指指出出当当前前命命令令操操作作的的字字段段,即即字字段段名名表表中中的的字字段段,实实现现的的是是关关系系运运算算特特有有的的三三种种基基本本操操作作中中的的投投影影操操作作。中中的的字字段段间间用用“,”隔开。隔开。6.4.4命令命令5.命令的书写规则命令的书写规则每个命令必须以命令动词开头,回车结束。每个命令必须以命令动词开头,回车结束。命命令令动动词词与与子子句句、子子句句与与子子句句、子子句句中中的的各各个个

224、部部分分之之间间至少有一个空格,子句顺序可以任意,不影响执行的结果。至少有一个空格,子句顺序可以任意,不影响执行的结果。命命令令动动词词和和子子句句以以及及系系统统函函数数均均可可简简写写为为其其英英文文单单词词的的前前4个个字字母母,并并且且大大小小写写等等效效(为为区区分分系系统统保保留留字字和和用用户户字字,本本书用小写字母表示用户字)。书用小写字母表示用户字)。一一行行只只能能写写一一条条命命令令,命命令令行行最最长长为为8192个个字字符符。如如果果一一条条命命令令分分成成几几个个物物理理行行,除除最最后后一一行行外外,其其余余各各行行应应以以“;”加回车换行。加回车换行。习题习题1

225、.选择题选择题按照数据模型划分按照数据模型划分,VisualFoxPro6.0是是_。A.层次型数据库管理系统层次型数据库管理系统B.网状型数据库管理系统网状型数据库管理系统C.关系型数据库管理系统关系型数据库管理系统D.混合型数据库管理系统混合型数据库管理系统退出退出VisualFoxPro6.0的操作方法是的操作方法是_。A.选择选择“文件文件”菜单的菜单的“退出退出”命令命令B.单击单击“关闭关闭”按钮按钮C.在在“命令窗口命令窗口”中键入中键入QUIT,回车回车D.以上方法都可以以上方法都可以如如在在一一个个运运算算表表达达式式中中,有有逻逻辑辑运运算算、关关系系运运算算、和和算算术术

226、运运算算混混合合在在一一起起,其中不含括号,它们的运算顺序是其中不含括号,它们的运算顺序是。A.逻辑、关系、算术逻辑、关系、算术B.逻辑、算术、关系逻辑、算术、关系C.关系、逻辑、算术关系、逻辑、算术D.算术、关系、逻辑算术、关系、逻辑“数数据据库库”这这三三个个汉汉字字作作为为字字符符串串常常量量,在在VisualFoxPro中中可可表表示示为为。A.数据库数据库B.(数据库)数据库)C.数据库数据库D.“数据库数据库”习题习题如如果果当当前前表表文文件件中中的的一一个个字字段段名名与与一一个个内内存存变变量量名名都都是是x,则则执执行行命命令令“?x”后显示的是后显示的是。A.内存变量的值

227、内存变量的值B.字段变量的值字段变量的值C.随机显示变量值随机显示变量值D.出错出错关于关于VisualFoxPro6.0数组的叙述中,错误的是数组的叙述中,错误的是。A.用用DIMENSION和和DECLARE都可以定义数组都可以定义数组B.VisualFoxPro6.0只支持一维数组和二维数组只支持一维数组和二维数组C.一个数组中各数组元素必须是同一种数据类型一个数组中各数组元素必须是同一种数据类型D.新定义数组的各个数组元素初值为新定义数组的各个数组元素初值为.F.结果为结果为中华人民共和国中华人民共和国的表达式是的表达式是。A.中华人民中华人民共和国共和国B.中华人民中华人民共和国共和

228、国C.中华人民中华人民共和国共和国D.中华人民中华人民共和国共和国表表达达式式VAL(SUBS(奔奔腾腾586, 5, 1)*LEN(Visual FoxPro)的的结结果果是是 。A.63.00B.64.00C.65.00D.66.00习题习题2.填空题填空题VisualFoxPro允允许许命命令令只只用用命命令令字字的的前前个个以上字符表示。以上字符表示。常常量量有有字字符符型型、数数值值型型、逻逻辑辑型型、日日期期型型、 和和六种类型。六种类型。字符常量的定界符是:字符常量的定界符是:、或或。函数函数ROUND(123456.789,-2)的值是的值是。习题习题执执行行命命令令“?AT(

229、科科学学,计计算算机机科科学学与与技技术术)”的显示值是的显示值是。使使用用命命令令DECLAREmm(2,3)定定义义的的数数组组,包包含的数组元素个数为含的数组元素个数为个。个。表达式表达式“北京北京#北大北大”的值是的值是。如如果果想想从从字字符符串串计计算算机机科科学学中中取取出出汉汉字字科科,可以用函数,可以用函数。参考答案参考答案1.选择题选择题C D D D BC C C2.填空题填空题4日期时间型、货币型日期时间型、货币型单引号单引号、双引号、双引号、方括号、方括号12350076.T.SUBSTR(计算机科学计算机科学,7,2)第第7章章使用项目管理器创建表使用项目管理器创建

230、表学习要点学习要点1、项目管理器的功能和使用、项目管理器的功能和使用2、自由表的建立、输入数据和表的显示、自由表的建立、输入数据和表的显示3、表结构、表数据的修改、表结构、表数据的修改4、有关表维护的命令、有关表维护的命令第第7章章使用项目管理器创建表使用项目管理器创建表7.1项目管理器项目管理器7.2表的建立表的建立7.3表的修改表的修改7.4表的维护命令表的维护命令习题及参考答案习题及参考答案第第7章章使用项目管理器创建表使用项目管理器创建表使使用用数数据据库库管管理理系系统统的的目目的的是是解解决决数数据据管管理理问问题题,诸诸如如图图书书管管理理、学学校校教教学学管管理理等等。解解决决

231、问问题题的的方方法法是是为为该该应应用用建建立立数数据据库库,然然后后开开发发一一系系列列应应用用程程序序,最最终终形形成成一一个个数数据据库库应应用用系系统统。在在VisualFoxPro6.0中中,可可以以利利用用项项目目组组织和集成数据库应用系统中的文件。织和集成数据库应用系统中的文件。7.1项目管理器项目管理器在在VisualFoxPro6.0中中创创建建项项目目后后,使使用用项项目目管管理理器器可可以以方方便便地地对对项项目目中中的的数数据据文文档档等等进进行行集集中中的的管管理理,同同时时,借借助助界界面面十十分分友友好好的的集集成成环环境境,用用户户能能够够方方便便地地访访问问V

232、isualFoxPro6.0提供的工具栏、快捷菜单和各种辅助设计工具。提供的工具栏、快捷菜单和各种辅助设计工具。7.1.1项目管理器的功能项目管理器的功能1.采用目录树结构管理项目,使项目的内容一目了然。采用目录树结构管理项目,使项目的内容一目了然。图图7-1项目管理器窗口项目管理器窗口7.1.1项目管理器的功能项目管理器的功能2.设设置置多多种种功功能能按按钮钮,为为项项目目内内容容的的创创建建、修改与增删提供方便修改与增删提供方便3.支支持持项项目目建建立立数数据据字字典典,使使数数据据库库表表在在功能上大大强于自由表功能上大大强于自由表7.1.2项目管理器的使用项目管理器的使用创建项目创

233、建项目使使用用CREATE|MODIFYPROJECT命命令创建项目。令创建项目。命令格式:命令格式:CREATE|MODIFYPROJECT使用菜单方式创建新项目使用菜单方式创建新项目展开或折叠目录树结构展开或折叠目录树结构7.1.2项目管理器的使用项目管理器的使用 图图7-2“新建新建”对话框对话框7.1.2项目管理器的使用项目管理器的使用 图图7-3 输入项目名称输入项目名称7.1.2项目管理器的使用项目管理器的使用改变项目管理器的外观改变项目管理器的外观使用使用“数据数据”选项卡组织数据选项卡组织数据图图7-4使用使用“数据数据”选项卡组织数据选项卡组织数据7.1.2项目管理器的使用项

234、目管理器的使用使用使用“文档文档”选项卡组织文档选项卡组织文档使用快捷菜单使用快捷菜单图图7-5“文档文档”选项卡选项卡7.2表的建立表的建立表表(存存储储时时生生成成表表文文件件,扩扩展展名名为为.dbf)是是VisualFoxPro6.0数数据据库库应应用用程程序序操操作作的的基基本本对对象象,是是通通过过将将现现实实世世界界中中的的二二维维表表经经规规范范化化后后建建立立起起来来的的。本本章章讨讨论论使使用用项项目目管管理理器器和和命命令令方方式式创创建建自自由由表表,后后续续章章节节将将介介绍绍数数据据库库表表以以及二者之间的区别。及二者之间的区别。7.2.1表结构的建立表结构的建立1

235、.设计表的结构设计表的结构表表7-1教师基本情况表教师基本情况表教师代码 姓名 性别 出生日期 婚否 部门 职称 基本工资 简历 照片10011 李永吉 男 69/04/09 T 11 讲师 1500.00 Memo Gen20037 王芳 女 53/03/21 T12 教授 1950.00 Memo gen50001 赵海东 男 70/11/10 F23 讲师 1330.00 memo Gen30001 孙亚茹 女 64/12/09 T21 副教授 1600.00 memo gen10013 张敏 女 50/02/08 T11 教授 2200.00 memo Gen40010 王强 男 75

236、/05/22 F22 助教 960.00 memo Gen50023 李东 男 77/08/20 F23 助教 800.00 memo Gen7.2.1表结构的建立表结构的建立建立表结构就是定义各个字段的属性。建立表结构就是定义各个字段的属性。字段名字段名字段类型字段类型字段宽度字段宽度小数位数小数位数7.2.1表结构的建立表结构的建立表表7-2教师基本情况表的结构教师基本情况表的结构字字段段名名类类型型宽宽度度小数位数小数位数教师代码教师代码C5姓姓名名C6性性别别C2出生日期出生日期D8婚婚否否L1部部门门C2职职称称C8基本工资基本工资N82简简历历M4照照片片G47.2.1表结构的建立

237、表结构的建立2.建立工作目录建立工作目录3.建立表的结构建立表的结构使用项目管理器创建一个名为使用项目管理器创建一个名为teacher.dbf的自由表。的自由表。7.2.1表结构的建立表结构的建立表设计器窗口表设计器窗口7.2.1表结构的建立表结构的建立 记录编辑窗口7.2.1表结构的建立表结构的建立用命令方式创建表用命令方式创建表命令格式:命令格式:CREATETALBE()(,),功功能能:建建立立一一个个由由表表示示的的表表,表表中中含有指定的字段。含有指定的字段。7.2.1表结构的建立表结构的建立例例7-1使用命令建立教师基本情况使用命令建立教师基本情况表表teacher7.2.1表结

238、构的建立表结构的建立4.表设计器作简介表设计器作简介表表设设计计器器包包括括“字字段段”、“索索引引”、“表表”等等3个个选选项项卡卡,可可以以创创建建并并修修改改数数据据库库表表、自自由由表表、字字段段和和索引。索引。下面仅介绍字段选项卡的操作。下面仅介绍字段选项卡的操作。“字段名字段名”列的文本框:供输入字段名。列的文本框:供输入字段名。“类型类型”列的组合框:供选取字段类型。列的组合框:供选取字段类型。“宽宽度度”列列的的微微调调器器:微微调调器器的的文文本本区区可可直直接接输输入数字。入数字。7.2.1表结构的建立表结构的建立“小数位数小数位数”列的微调器:用于输入或微调小数位数。列的

239、微调器:用于输入或微调小数位数。“索引索引”列:关于索引参阅列:关于索引参阅8.4节。节。“NULL”列列的的按按钮钮:NULL值值表表示示无无明明确确的的值值,不不同同于于零、空串或空格。零、空串或空格。移移动动按按钮钮:字字段段名名列列左左方方有有一一列列按按钮钮,其其中中仅仅有有一一个个按钮标有上下箭头,将它向上或向下拖动能改变字段的次序。按钮标有上下箭头,将它向上或向下拖动能改变字段的次序。“插插入入”按按钮钮:要要插插入入一一个个字字段段,可可选选定定某某字字段段后后再再选选插入按钮。插入按钮。“删删除除”按按钮钮:要要删删除除一一个个字字段段,可可选选定定某某字字段段后后再再选选删

240、除按钮。删除按钮。7.2.2输入数据输入数据1.打开和关闭浏览窗口打开和关闭浏览窗口表的数据可通过浏览窗口按记录逐个字段输入。表的数据可通过浏览窗口按记录逐个字段输入。图图7-12输入数据后的浏览窗口输入数据后的浏览窗口7.2.2输入数据输入数据2.打开和关闭表打开和关闭表用用USE命令来打开或关闭表命令来打开或关闭表命令格式:命令格式:USE通过通过“文件文件”|“打开打开”菜单命令打开表。菜单命令打开表。7.2.2输入数据输入数据图图7-13“打开打开”对话框对话框7.2.2输入数据输入数据可可通通过过“窗窗口口”菜菜单单的的“数数据据工工作作期期”选项来打开或关闭表。选项来打开或关闭表。

241、其其它它关关闭闭表表的的命命令令有有:CLEARALL、CLOSEALL、CLOSEDATABASE等。等。通通过过退退出出VisualFoxPro6.0来来关关闭闭表表。选选定定“文文件件”|“退退出出”菜菜单单命命令令,或或在在“命命令令”窗口中键入命令窗口中键入命令QUIT。7.2.2输入数据输入数据3.备注型字段数据的输入备注型字段数据的输入打打开开备备注注字字段段编编辑辑窗窗口口后后即即可可输输入入或或修修改改备备注注信信息。息。4.通用型字段数据的处理通用型字段数据的处理通通用用型型字字段段除除能能处处理理数数字字、文文本本外外,还还能能存存储储图图形形、图图像像、声声音音等等多多

242、媒媒体体数数据据。即即通通用用型型字字段段可可以以处理多媒体数据。处理多媒体数据。 数据的输入数据的输入 数据的修改数据的修改 数据的删除数据的删除7.2.3表的显示表的显示建建立立表表之之后后,有有时时需需要要将将有有关关数数据据显显示示出出来来以以供供浏浏览览,可可以以通通过过前前面面介介绍绍过过的的浏浏览览窗窗口口显显示示,还还可可以以在在“命命令令”窗窗口口中中使使用用LIST|DISPLAY命命令令来来显显示示有有关关数据。数据。显示表结构命令显示表结构命令命令格式命令格式:LIST|DISPLAYSTRUCTURE显示表记录命令显示表记录命令命命令令格格式式:LIST|DISPLA

243、YFIELDSFORWHILEOFFTOPRINTERPROMPT|TOFILE7.3表的修改表的修改表表在在使使用用过过程程中中,通通常常情情况况下下会会随随着着应应用用的的不不断断变变化化而而需需要要对对原原有有的的表表结结构构或或表表中中数数据据进进行行某某些些修修改改,例例如如改改变变字字段段属属性性、增增加加或或删删除除字字段段、改改变变表表中中某某些些数数据据等等。下下面面分分别别介介绍绍表结构的修改和表数据的修改。表结构的修改和表数据的修改。7.3.1表结构的修改表结构的修改表结构的修改可通过界面操作和命令两种方式进行。表结构的修改可通过界面操作和命令两种方式进行。1.界面操作方

244、式界面操作方式打开表设计器来修改表结构打开表设计器来修改表结构利用表向导来修改表结构利用表向导来修改表结构2.命令方式命令方式命令格式:命令格式:ALTERTABLE7.3.1表结构的修改表结构的修改7.3.2表数据的修改表数据的修改浏浏览览窗窗口口不不仅仅可可以以供供用用户户输输入入数数据据、浏浏览览数数据据,而且还可以通过它修改表数据。而且还可以通过它修改表数据。两种记录显示方式两种记录显示方式浏览窗口显示表记录的格式分为编辑和浏览两种。浏览窗口显示表记录的格式分为编辑和浏览两种。2.浏览窗口的操作浏览窗口的操作打开浏览窗口打开浏览窗口可可任任选选界界面面操操作作方方式式和和命命令令方方式

245、式之之一一来来打打开开浏浏览览窗口。窗口。7.3.2表数据的修改表数据的修改界面操作方式:界面操作方式:打打开开要要浏浏览览的的表表(例例如如teacher),然然后后选选择择“显显示示”|“浏览浏览”菜单命令。菜单命令。命令方式命令方式在命令窗口键入以下命令:在命令窗口键入以下命令:USE&例如例如USEteacherBROWSE&浏览命令浏览命令一窗两区一窗两区7.3.2表数据的修改表数据的修改7.4表的维护命令表的维护命令表表中中的的数数据据常常需需维维护护,如如备备份份、插插入入、删删除除、替替换换等等。本本节节讨讨论论以以命命令令方方式式进进行行数数据据维维护护的的方法。方法。7.4

246、.1表与表结构的复制表与表结构的复制对对已已有有的的表表进进行行复复制制以以得得到到它它的的一一个个备备份份,是是保保护护数据安全的措施之一。数据安全的措施之一。1.表文件复制命令表文件复制命令命令格式:命令格式:COPYFILETO2.从表复制出表或其它类型文件的命令从表复制出表或其它类型文件的命令命令格式:命令格式:COPY TO FOR WHILE7.4.1表与表结构的复制表与表结构的复制FIELDS|FIELDSLIKE|FIELDSEXCEPTTYPESDF|XLS|DELIMITEDWITH|WHITHBLANK|WITHTAB3.复制表结构的命令复制表结构的命令命令格式:命令格式

247、:COPYSTRUCTURETOFIELDS7.4.2记录定位命令记录定位命令1.记录绝对定位命令记录绝对定位命令命令格式:命令格式:格式格式1:GOTO格式格式2:GOTOTOP|BOTTOM2.记录相对定位命令记录相对定位命令命令格式:命令格式:SKIP7.4.3记录的插入命令记录的插入命令表表文文件件记记录录是是按按输输入入时时的的顺顺序序进进行行存存放放的的,有有时时需需要要在在指指定定记记录录的的前前面面或或者者后后面面增增加加一一条条记记录录,这这时时可可使使用用记记录录的的插插入入命命令令INSERT来来完完成。成。命令格式:命令格式:INSERTBEFOREBLANK功功能能:

248、在在表表文文件件(或或数数据据库库表表文文件件)当当前前记记录的前面或者后面插入一条新记录。录的前面或者后面插入一条新记录。7.4.4记录的追加命令记录的追加命令1.INSERT命令命令命令格式:命令格式:INSERT INTO ( 字字 段段 名名 1 , 字字 段段 名名 2, ) VALUES(表达式表达式1,表达式,表达式)2.APPEND命令命令命令格式:命令格式:APPENDBLANK3.APPENDFROM命令命令命令格式:命令格式:APPENDFROMFIELDSFOR7.4.5记录的删除与恢复命令记录的删除与恢复命令1.记录逻辑删除命令记录逻辑删除命令命令格式:命令格式:DE

249、LETEFORWHILE2.记录物理删除命令记录物理删除命令命令格式:命令格式:PACK7.4.5记录的删除与恢复命令记录的删除与恢复命令3.记录恢复命令记录恢复命令命令格式:命令格式:RECALLFORWHILE4.记录全部删除命令记录全部删除命令命令格式:命令格式:ZAP习题习题1.选择题选择题可以链接或嵌入可以链接或嵌入OLE对象字段类型是对象字段类型是。A.备注型备注型B.通用型和备注型通用型和备注型C.通用型通用型D.任何类型任何类型测试表记录指针是否指向表末尾所使用的函数为测试表记录指针是否指向表末尾所使用的函数为。A.FILE()B.BOF()C.RECON()D.EOF()在表

250、结构中,逻辑型、日期型、备注型、通用型字段的宽度分别固定为在表结构中,逻辑型、日期型、备注型、通用型字段的宽度分别固定为A.3,8,10,10B.1,6,10,10C.1,8,10,10D.1,8,4,4已已打打开开表表,其其中中出出生生年年月月字字段段为为日日期期型型,年年龄龄字字段段为为数数值值型型。要要计计算算每每个个人今年的年龄并把其值填入年龄字段中,应使用命令人今年的年龄并把其值填入年龄字段中,应使用命令。习题习题在在图图书书表表文文件件中中,书书号号字字段段为为字字符符型型,要要求求将将书书号号以以字字母母D开开头头的的所所有有图图书记录打上删除标记,应使用的命令为书记录打上删除标

251、记,应使用的命令为。ZAP命令可以删除当前文件的命令可以删除当前文件的。A.全部记录全部记录B.满足条件的记录满足条件的记录C.结构结构D.有删除标记的记录有删除标记的记录表表文文件件共共有有20条条记记录录,当当前前记记录录号号是是10,执执行行命命令令LISTNEXT5以以后后,当前记录号为当前记录号为。A.10B.15C.14D.20使使用用“USE”命命令令打打开开表表文文件件时时,能能够够同同时时自自动动打打开开一一个个相相关关的的。A.备注文件备注文件B.文本文件文本文件C.命令文件命令文件D.报表文件报表文件习题习题2.书写命令题书写命令题在在teacher.dbf中中,把把符符

252、合合下下列列要要求求的的记记录录数数据据依依次次显示出来。显示出来。显示第显示第4条记录。条记录。显示从第显示从第2条记录开始的条记录开始的4条记录。条记录。显示第显示第2条记录到第条记录到第5条记录。条记录。显显示示基基本本工工资资小小于于1000的的教教师师的的姓姓名名、职职称称与与基基本工资。本工资。显示未婚的教师或显示未婚的教师或1960年以后出生的已婚教师。年以后出生的已婚教师。习题习题列列出出教教师师代代码码前前三三位位为为“100”的的所所有有教教师师信信息。息。列出所有男教师的姓名、部门与简历。列出所有男教师的姓名、部门与简历。列出教师代码中含有列出教师代码中含有“000”的所

253、有教师信息。的所有教师信息。列出基本工资在列出基本工资在1500到到2000的教师信息。的教师信息。列列出出所所有有教教授授的的姓姓名名、职职称称和和基基本本工工资资,其其中基本工资按中基本工资按110显示。显示。参考答案参考答案1、选择题、选择题C D D A BA14A2、书写命令题书写命令题USEteacherLISTrecord4GO2LISTnext4LISTforRECNO()=2ANDRECNO()=5参考答案参考答案LISTfor基本工资基本工资1960)LISTforLEFT(教师代码教师代码,3)=100LIST姓名姓名,部门部门,简历简历for性别性别=男男LISTfor

254、000$教师代码教师代码LISTfor基本工资基本工资=1500AND基本工资基本工资=2000LIST姓名姓名,职称职称,基本工资基本工资*1.1for职称职称=教授教授第第8章章数据库与数据库表数据库与数据库表学习要点学习要点1、数据库、数据库表的创建数据库、数据库表的创建2、在项目中添加、移去和删除数据库在项目中添加、移去和删除数据库3、索引的建立与使用索引的建立与使用4、多个表的使用多个表的使用5、数据库表间关系数据库表间关系第第8章章数据库与数据库表数据库与数据库表8.1创建数据库创建数据库8.2创建数据库表创建数据库表8.3使用和管理数据库使用和管理数据库8.4索引索引8.5使用多

255、个表使用多个表8.6创建数据库表间的关系创建数据库表间的关系习题与参考答案习题与参考答案第第8章章数据库与数据库表数据库与数据库表在在VisualFoxPro6.0中中,除除使使用用自自由由表表外外,还还大大量量使使用用从从属属于于某某一一数数据据库库的的被被称称之之为为数数据据库库表表的的这这一一数数据据组组织织形形式式。一一个个较较大大的的应应用用项项目目可可以以创创建建若若干干个个数数据据库库,每每个个数数据据库库又又可可定定义义一一组组数数据据库库表表,然然后后用用一一定定的的关关系系将将它它们们相相互联接。互联接。8.1创建数据库创建数据库数数据据库库作作为为管管理理数数据据信信息息

256、的的有有效效容容器器,可可以以组组织织和和建建立立表表与与表表之之间间、表表与与视视图图之之间间的的关关系系。数数据据库库不不但但提提供供了了存存储储数数据据的的结结构构,而而且且可可以以在在表表一一级级进进行行功功能能扩扩展展。例例如如,创创建建字字段段级级规规则则和和记记录录级级规规则则、设设置置默默认认字字段段值值和和触触发发器器等等,还还可可以以创创建建存存储储过过程程和和表表之之间间的的永永久久关关系。系。8.1.1VisualFoxPro中数据库的概念中数据库的概念VisualFoxPro中中的的数数据据库库是是关关系系型型数数据据库库,是是按按照照关关系系模模型型组组织织和和存存

257、储储数数据据而而构构成成的的数数据据集集合合。VisualFoxPro数数据据库库系系统统中中,与与关关系系数数据据库库中中的的关关系系相相对对应应的的是是表表。每每个个数数据据库库都都由由一个或多个表组成,数据库中的数据分类存储在各个表中一个或多个表组成,数据库中的数据分类存储在各个表中。在在VisualFoxPro数数据据库库系系统统中中,除除了了表表之之外外,还还可可包包含含视视图图、连连接接和和存存储储过过程程。视视图图是是建建立立在在一一个个或或多多个个表表之之上上的的虚虚拟拟表表,它它是是引引用用几几个个表表或或其其他他视视图图的的某某些些字字段段而而构构成成的的。在在Visual

258、FoxPro中中对对视视图图可可以以与与表表一一样样进进行行数数据据存存取取,对对视视图图的的数数据据存存取取实实际际就就是是对对视视图图所所引引用用的的表表的的数数据据存存取取。连连接接是是对对远远程程数数据据库库访访问问方方法法的的定定义义,用用于于创创建建远远程程视视图图时时引引用用远远程程数数据据源源。存存储储过过程程是是保保存存在在数数据据库库中中的的过过程程,是是一一段段VisualFoxPro代代码码,主主要要用用于于维维护护数数据据库库的的数数据据完完整整性性和和表表中中数数据据的的有有效效性性规则规则。8.1.2数据库的创建数据库的创建在在进进行行一一项项应应用用系系统统开开

259、发发的的过过程程中中,在在完完成成数数据据库库设设计计之之后后,就就可可着着手手创创建建数数据据库库。创创建建数数据据库库主主要要有有三三种种方方法法:使使用用“数数据据库库向向导导”、 “项项 目目 管管 理理 器器 ”和和 使使 用用 CREATEDATABASE命令。命令。1.使用使用“项目管理器项目管理器”创建数据库创建数据库8.1.2数据库的创建数据库的创建图图8-1“创建创建”对话框对话框8.1.2数据库的创建数据库的创建图图8-2“数据库设计器数据库设计器”窗口窗口8.1.2数据库的创建数据库的创建图图8-3“数据库设计器数据库设计器”工具栏工具栏8.1.2数据库的创建数据库的创

260、建图图8-4展开数据库文件展开数据库文件8.1.2数据库的创建数据库的创建2.使用数据库向导创建数据库使用数据库向导创建数据库3.使用使用CREATEDATABASE命令创建数据库命令创建数据库8.1.3数据字典数据字典VisualFoxPro提提供供数数据据字字典典功功能能。数数据据库库的的各各个个组组成成成成分分都都可可使使用用数数据据字字典典的的各各种种功功能能。数数据据字字典典是是包包含含数数据据库库中中所所有有表表信信息息的的一一个个表表。每每个个数数据据库库维维护护一一个个数数据据字字典典,并并将将数数据据字字典典的的内内容容存存储储在在数数据据库库相相应应的的.dbc文文件件中中

261、。数数据据字字典典中中包包括括可可以在数据库中创建和指定的多种信息,列举如下:以在数据库中创建和指定的多种信息,列举如下:表和字段的长名称表和字段的长名称。各各字字段段的的标标题题,它它们们将将作作为为标标头头显显示示在在浏浏览览窗窗口口或或表表格格列列中中。字段的默认值字段的默认值。表单中使用的默认控件类表单中使用的默认控件类。字段的输入掩码和显示格式字段的输入掩码和显示格式。8.1.3数据字典数据字典字段级规则和记录级规则字段级规则和记录级规则。触发器触发器。存储过程存储过程。主关键字和候选索引关键字主关键字和候选索引关键字。数据库表间的永久关系数据库表间的永久关系。与远程数据源的连接与远

262、程数据源的连接。本地视图和远程视图本地视图和远程视图。对每个字段、表和数据库的注释对每个字段、表和数据库的注释。8.2创建数据库表创建数据库表8.2.1表的基本概念表的基本概念表表是是用用来来存存储储数数据据的的文文件件,其其文文件件扩扩展展名名是是.dbf。在在VisualFoxPro中中,未未加加入入某某个个数数据据库库的的表表称称为为自自由由表表。将将一一个个自自由由表表添添加加到到某某个个数数据据库库中中或或在在数数据据库库设设计计器器中中创创建建的的表表就就成成为为数数据据库库表表。虽虽然然数数据据库库表表和和自自由由表表都都能能够够存存储储数数据据,但但数数据据库库表表更更优优越越

263、。这这是是因因为为VisualFoxPro数数据据库库表表可可以以具具有有自自由由表表所所没没有有的的属属性性,例例如如字字段段级级规规则则、记记录录级级规规则则、触触发发器器和和永永久久关关系系等等。另另外外,只只有有数数据据库库中中的的表表才才可可利利用用VisualFoxPro提提供供的的数数据据库库管管理理功功能能。如如减减少少冗冗余余数数据据存存储储、保保护护数数据据完整性等。因此建议使用数据库表。完整性等。因此建议使用数据库表。8.2.1表的基本概念表的基本概念1.表的命名表的命名数数据据库库表表同同自自由由表表一一样样也也要要求求指指定定表表名名,即即表表对对应应的的dbf文文件

264、件的的文文件件名名。表表名名也也是是由由字字母母、数数字字和和下下划划线线组组成成,但但可可指指定定一一个个长长表表名名。长长表表名名最最多多可可以以包包含含128个个字字符符,不不能能包包含含空空格格,其首字符必须是字母或下划线。其首字符必须是字母或下划线。8.2.1表的基本概念表的基本概念2.字段的命名字段的命名字字段段名名可可用用一一个个VisualFoxPro标标识识符符充充当当。标标识识符符的的命命名名可可以以采采用用1128个个字字符符,这这些些字字符符只只能能是是字字母母、下下划划线线、汉汉字字和和数数字字,而而且且首首字字符符必必须须是是字字母母、汉字或下划线。汉字或下划线。对

265、对一一个个具具体体的的表表的的字字段段命命名名时时,应应注注意意字字段段名名应应简简洁洁、含含义义明明确确,同同一一个个表表中中的的各各字字段段名名不不可可能能相相同同。至于字段的数据类型至于字段的数据类型,等同于自由表的规定。等同于自由表的规定。8.2.2创建数据库表的准备创建数据库表的准备创创建建表表就就是是建建立立新新的的表表文文件件。创创建建表表之之前前需需要要分分析析清清楚楚在在表表中中存存储储那那些些数数据据。例例如如以以教教师师管管理理数数据据库库为为例例,除除前前面面创创建建的的教教师师基基本本情情况况表表teacher.dbf,还还需需要要如如下下所所示示的的部部门门代代码码

266、表表bmdm.dbf、授授课课表表sk.dbf和和导导师师表表ds.dbf等等3个表。个表。8.2.2创建数据库表的准备创建数据库表的准备bmdm.dbf结结 构构 : bmdm( 代代 码码 C( 2) , 名名 称称 C(20)bmdm.dbf记录:记录:记录号记录号代码代码名称名称111计算机学院计算机学院212电子工程学院电子工程学院321管理学院管理学院422外语学院外语学院523文学院文学院8.2.2创建数据库表的准备创建数据库表的准备sk.dbf结结构构:sk(教教师师代代码码C(5),课课程程名名称称C(20),总学时总学时N(3)sk.dbf记录:记录:记录号记录号教师代码教

267、师代码课程名称课程名称总学时总学时110011操作系统操作系统72210011编译原理编译原理68330001会计学原理会计学原理68440010大学英语精读大学英语精读72550001古典文学古典文学568.2.2创建数据库表的准备创建数据库表的准备ds.dbf结结构构:ds(教教师师代代码码C(5),学学生生类类型型C(6),学生人数学生人数N(2)ds.dbf记录:记录:记录号记录号教师代码教师代码学生类型学生类型学生人数学生人数110013硕士硕士4210013博士博士2320037硕士硕士5430001硕士硕士38.2.3创建数据库表的步骤创建数据库表的步骤创建数据库表的方法有:创建

268、数据库表的方法有:在在“项项目目管管理理器器”中中打打开开数数据据库库,然然后后选选定定“表表”,在在单单击击“新新建建”按按钮钮。选选定定数数据据库库后后,创创建建表表还还可可使使用用Create Table (或或Create)命令。命令。使使用用“表表设设计计器器”可可以以创创建建和和修修改改数数据据库表或自由表以及表的索引。库表或自由表以及表的索引。8.2.3创建数据库表的步骤创建数据库表的步骤下下面面以以创创建建teachersj数数据据库库中中的的teacher表表为为例例,说明建立数据库表的步骤。说明建立数据库表的步骤。第第一一步步:选选定定“项项目目管管理理器器”,打打开开数数

269、据据库库teachersj,选选定定“表表”,单单击击“新新建建”按按钮钮;在在创创建建对对话话框框中中输输入入表表名名teacher,单单击击“保保存存”按按钮钮,就就打打开了开了“表设计器表设计器”对话框。对话框。第第二二步步:输输入入每每个个字字段段的的字字段段名名、类类型型、宽宽度度、小数位数,还可对字段作如下的设置:小数位数,还可对字段作如下的设置:是否按该字段建立索引是否按该字段建立索引控制字段的显示格式控制字段的显示格式设置字段的有效性设置字段的有效性8.2.3创建数据库表的步骤创建数据库表的步骤第三步:选择第三步:选择“表表”选项卡。显示表的信息,设置记录有效性。选项卡。显示表

270、的信息,设置记录有效性。图图8-5“表设计器表设计器”对话框中的对话框中的“表表”选项卡选项卡8.2.3创建数据库表的步骤创建数据库表的步骤记记录录有有效效性性:与与记记录录相相关关的的有有效效性性,在在给给出出的的规规则成立时记录才是有效的,也称为则成立时记录才是有效的,也称为“记录级规则记录级规则”。“触触发发器器”:触触发发器器是是绑绑定定在在表表上上的的表表达达式式,当当表表中中的的任任何何记记录录被被指指定定的的操操作作命命令令修修改改时时,触触发发器器将将被被激激活活。当当数数据据修修改改时时,触触发发器器可可执执行行数数据据库库应应用用程程序序要要求求的的任任何何操操作作。例例如

271、如:使使用用触触发发器器可可以以做做如如下下的的工作:工作:记录对数据库的修改。记录对数据库的修改。实施参照完整性。实施参照完整性。自动记录数量低于库存要求的产品。自动记录数量低于库存要求的产品。8.3使用和管理数据库使用和管理数据库一一个个数数据据库库被被创创建建,系系统统会会以以独独占占方方式式打打开开它它,该该文文件件存存储储了了有有关关该该数数据据库库的的所所有有信信息息,包包括括和和它它关关联联的的文文件件名名和和对对象象名名。因因此此,在在使使用用和和管管理理数数据据库库时时,用用户户应应了了解解数数据据库库的的分分层层结结构构、浏浏览览数数据据库库文文件件的的方方法法以以及及如如

272、何何在在项项目目中添加或删除数据库等内容。中添加或删除数据库等内容。8.3.1查看数据库的分层结构查看数据库的分层结构数数据据库库分分层层结结构构是是在在数数据据库库中中所所建建立立的的表表结结构构和和永永久久关关系系的的可可视视化化表示形式。表示形式。图图8-6在在“数据库设计器数据库设计器”窗口中显示数据库的分层结构窗口中显示数据库的分层结构8.3.1查看数据库的分层结构查看数据库的分层结构显显示示数数据据库库分分层层结结构构,还还可可以以使使用用MODEFYDATABASE命命令令。例例如如,要要打打开开teachersj数数据据库库,并并在在“数数据据库库设设计计器器”窗窗口口中中显显

273、示示其其分分层层结结构构,可可输输入入以下命令:以下命令:MODIFYDATABASEteachersj此此外外,在在“数数据据库库设设计计器器”中中,使使用用“数数据据库库”菜菜单单可可以以完完成成修修改改表表以以及及移移去去表表等等操操作作。例例如如,使使用用“添添加加表表”选选项项,可可以以把把已已有有的的自自由由表表添添加加到到数数据据库库中中,使使其其成成为为数数据据库库表表;使使用用“移移去去表表”选选项项,可可以以从从数数据据库库中中移移去去表表,使使其其成成为为自自由由表表;使使用用“修修改改”选项,可以修改表的结构,如图选项,可以修改表的结构,如图8-7所示。所示。8.3.1

274、查看数据库的分层结构查看数据库的分层结构图图8-7使用使用“数据库数据库”菜单菜单8.3.2浏览数据库文件浏览数据库文件“数数据据库库设设计计器器”只只显显示示数数据据库库的的分分层层结结构构,有有时时可可能能需需要要浏浏览览数数据据库库文文件件本本身身的的内内容容,这这时时,可可使使用用USE命命令令来来浏浏览览一一个个处处于于关关闭闭状状态态的的数数据据库库。例例如如,要要打打开开teachersj数数据据库库,并并以以表表的的形形式式显显示示数数据据库库中中的的内内容容,可可输输入入以以下下命令,显示结果如图命令,显示结果如图8-8所示。所示。USEteachersj.dbcBROWSE

275、8.3.2浏览数据库文件浏览数据库文件图图8-8以表的形式显示数据库的内容以表的形式显示数据库的内容8.3.3在项目中添加、移去和删除数据库在项目中添加、移去和删除数据库数数据据库库创创建建后后,若若还还不不是是项项目目的的一一部部分分,用用户户可可以以把把它它加加入入到到项项目目中中。若若使使数数据据库库不不属属于于某某个个项项目目,则则可可将将它它从从项项目目中中移移走走。若若不不再再需需要要此此数数据据库库,也也可可将它从磁盘上删除。将它从磁盘上删除。1.在项目中添加数据库在项目中添加数据库当当使使用用CREATEDATABASE命命令令创创建建数数据据库库时时,即即使使“项项目目管管理

276、理器器”处处于于打打开开状状态态,该该数数据据库库也也不不会会自自动动成成为为项项目目的的一一部部分分。若若把把数数据据库库添添加加到到一一个个项项目目中中,用用户户便便能能通通过过交交互互式式界界面面方方便便地地组组织织、查查看看和和操操作数据库对象,同时还能简化绑定应用程序的过程。作数据库对象,同时还能简化绑定应用程序的过程。8.3.3在项目中添加、移去和删除数据库在项目中添加、移去和删除数据库2.从项目中移去或删除数据库从项目中移去或删除数据库要要从从项项目目中中移移去去数数据据库库,也也只只能能通通过过“项项目目管管理理器器”窗窗口口来来实实现现。在在“项项目目管管理理器器”窗窗口口中

277、中选选定定要要移移去去的的数数据据库库,此此时时弹弹出出一一个个消消息息框框。如如果果单单击击“移移去去”按按钮钮,可可移移去去数数据据库库使使数数据据库库表表变变成成自自由由表表;如如果果单单击击“删删除除”按按钮钮,则则从磁盘上删除数据库。从磁盘上删除数据库。8.3.4关闭数据库关闭数据库如如果果要要关关闭闭一一个个已已经经打打开开的的数数据据库库,可可在在“项项目目管管理理器器”窗窗口口中中选选定定要要关关闭闭的的数数据据库库,然然后后单单击击“关关闭闭”按按钮钮,或或者者使使用用CLOSEDATABASE命命令令。例例如如teachersj数数据据库库处处于于打打开开状状态态,要要关关

278、闭闭它它,可可输输入入以以下命令:下命令:CLOSEDATABASE使使用用上上述述方方法法都都能能关关闭闭数数据据库库。此此外外,如如果果要要关关闭闭数数据据库库及及所所有有其其它它已已打打开开的的对对象象,可可以以使使用用CLOSE命令的命令的ALL子句。子句。8.4索引索引用用户户在在查查询询数数据据时时,经经常常需需要要按按照照一一定定的的顺顺序序来来排排列列数数据据。在在VisualFoxPro6.0中中,使使用用索索引引可可以以按按特特定定的的顺顺序序定定位位、查查看看或或操操作作表表中中的的记记录录。因因此此,使使用用索索引引作作为为排排序序机机制制,为为开开发发应应用用程程序序

279、提提供供了了灵灵活活性性。用用户户可可以以根根据据应应用用程程序序的的要要求求,灵灵活活地地对对同同一一个个表表创创建建和和使使用用不不同同的的索索引引关关键键字字,从从而而按按不不同同的的顺顺序序处处理理或或访访问记录。问记录。8.4.1索引的概念与分类索引的概念与分类1.记录的物理顺序与逻辑顺序记录的物理顺序与逻辑顺序表表文文件件中中的的记记录录一一般般是是按按磁磁盘盘存存储储顺顺序序输输出出的的,这这种种顺顺序序称称为为物物理理顺顺序序。而而在在索索引引文文件件中中包包括括关关键键字字和和记记录录号号两两个个字字段段,并并且且所所有有关关键键字字值值按按升升序序或或降降序序排排列列,每每

280、个个值值对对应应原原文文件件的的一一个个记记录录号号,这这样样便便确确定定了了记记录录的的逻逻辑辑顺顺序序。使使用用索索引引后后,可可按按照照索索引引文文件件中中的的记记录录号号取取出出表表中中的的物物理理记记录录,从从而而达达到到按按关关键键字字值值顺顺序来列出记录的效果。序来列出记录的效果。8.4.1索引的概念与分类索引的概念与分类2.索引的种类索引的种类如如果果按按扩扩展展名名来来划划分分,VisualFoxPro有有复复合合索索引引和和单单索索引引两两种种索索引引文文件件,其其扩扩展展名名分分别别为为.cdx和和.idx。复复合合索索引引文文件件允允许许包包含含多多个个索索引引,每每个

281、个索索引引都都有有一一个个索索引引标标识识,代代表表一一种种记记录录逻逻辑辑顺顺序序,该该索索引引文文件件总总是是以以压压缩缩方方式式存存储储。而而单单索索引引文文件件中中只只有一个索引标识。有一个索引标识。复复合合索索引引文文件件又又有有结结构构化化的的和和非非结结构构化化的的两两种种,若若定定义义复复合合索索引引文文件件时时用用户户为为它它取取了了名名字字,则则其其为为非非结结构构化化的的,否否则则为为结结构构化化的的。结结构构化化复复合合索索引引文文件件的的主主名名与与表表的的主主名名相相同同,它它随随表表的的打打开开而而打打开开,在在添添加加、修修改改和和删删除除记记录录时时还还会会自

282、自动动维维护护。本本书书所讨论的复合索引文件均为结构化复合索引文件。所讨论的复合索引文件均为结构化复合索引文件。8.4.2建立索引建立索引在在VisualFoxPro6.0中中,建建立立索索引引的的方方法法有有两两种种,即即使使用用“表设计器表设计器”和和INDEX命令。命令。1、利用、利用“表设计器表设计器”建立索引建立索引在在VisualFoxPro中中,使使用用“表表设设计计器器”对对话话框框的的“索索引引”选选项项卡卡,可可以以设设置置索索引引关关键键字字信信息息,通通过过“表表设设计计器器”创创建建的的索引为结构化复合索引。方法如下:索引为结构化复合索引。方法如下:在在“项项目目管管

283、理理器器”对对话话框框的的“数数据据”选选项项卡卡中中双双击击表表teacher,打开打开“表设计器表设计器”对话框。对话框。切切换换到到“索索引引”选选项项卡卡,在在“索索引引名名”文文本本框框中中输输入入索索引引名名称称,在在“类类型型”下下拉拉列列表表框框中中选选择择索索引引类类型型,在在“表表达达式式”文本框中输入索引表达式,如图文本框中输入索引表达式,如图8-9所示。所示。8.4.2建立索引建立索引图图8-9设置索引设置索引8.4.2建立索引建立索引重重复复上上述述步步骤骤,设设置置其其他他字字段段的的索索引引类类型。型。单单击击“确确定定”按按钮钮,并并在在弹弹出出的的消消息息框框

284、中单击中单击“是是”按钮,保存索引。按钮,保存索引。2.使用使用INDEX命令建立索引命令建立索引在在VisualFoxPro6.0中中,使使用用INDEX命命令令也也可可以以建建立立一一个个索索引引文文件件,建建立立的的索索引引文文件件可可以以是单索引文件,也可以是复合索引文件。是单索引文件,也可以是复合索引文件。8.4.3使用索引使用索引要要实实现现索索引引查查询询必必须须按按以以下下步步骤骤依依次次执执行行:打打开开表表,打打开开索索引引文文件件,确确定定主主控控索索引引文文件件,对对于于复复合合索索引引文文件件还还需需确确定定主主控控索索引引。其其中中,主主控控索索引引文文件件是是指指

285、当当前前起起作作用用的的索索引引文文件件;主主控索引是指当前起作用的索引标识。控索引是指当前起作用的索引标识。1.打开和关闭索引文件打开和关闭索引文件结结构构化化复复合合索索引引文文件件是是在在打打开开表表文文件件的的同同时时自自动动打打开开的的,所所以以需需要要手手动动打打开开的的索索引引文文件件一一般般为为单单索索引引文文件件。可可通通过过命命令令SETINDEXTO来确定主控索引文件。来确定主控索引文件。2.确定主控索引确定主控索引复复合合索索引引文文件件中中,当当前前建建立立的的索索引引标标识识自自动动成成为为主主控控索索引引。表表重重新新打打开开时时尽尽管管复复合合索索引引文文件件已

286、已自自动动打打开开,但但还还需需确确定定主主控控索引。索引。可可以以用用SETORDERTO命命令令来来确确定定主主控控索索引引,也也能能确确定定主主控索引文件控索引文件。8.4.3使用索引使用索引例例8-5根据例根据例8-2和和8-3建立的索引改变主控索引。建立的索引改变主控索引。USEteacherINDEXxmidx&打开打开xmidx.idx(索引索引号为号为1),LIST&记录按姓名升序排列记录按姓名升序排列SETORDERTOgz&指定指定teacher.cdx的索引标识的索引标识LIST&记录按基本工资降序排列记录按基本工资降序排列SETORDERTO1&指定指定xmidx.id

287、x为主控索引为主控索引LIST&记录按姓名升序排序记录按姓名升序排序SETORDERTO2&指定索引标识指定索引标识gz为主控索引为主控索引LIST&记录按基本工资降序排列记录按基本工资降序排列SETORDERTO&关闭所有单索引文件关闭所有单索引文件LIST&teacher.dbf恢复物理顺序显示恢复物理顺序显示8.4.3使用索引使用索引3.删除索引删除索引单单索索引引文文件件可可以以通通过过命命令令来来删删除除,但但必必须须先先关关闭闭表表文文件件,再再删删除除索索引引文文件件。若若要要删删除除复复合合索索引引文文件件,则要删除索引标识,索引文件会自动删除。则要删除索引标识,索引文件会自动

288、删除。可可打打开开表表设设计计器器来来删删除除索索引引标标识识,也也可可使使用用命命令令DELETETAG来来删删除除。例例如如,要要删删除除索索引引标标识识gz,可可用以下代码。用以下代码。USEteacher&打开打开teacher.dbfDELETETAGgz&删除索引标识删除索引标识gz8.4.4索引文件的更新索引文件的更新当当表表中中的的数数据据发发生生变变化化时时,所所有有当当前前已已打打开开的的索索引引文文件件都都会会随随数数据据的的改改变变自自动动改改变变记记录录的的逻辑顺序,实现索引文件的自动更新。逻辑顺序,实现索引文件的自动更新。若若未未确确定定主主控控索索引引文文件件或或

289、主主控控索索引引,修修改改表表的的记记录录时时索索引引文文件件就就不不会会自自动动更更新新。如如果果仍仍然然要要维维护护记记录录的的逻逻辑辑顺顺序序,可可用用REINDEX命命令令来来更新索引。更新索引。8.5使用多个表使用多个表工工作作区区是是一一个个编编号号的的内内存存区区,它它可可以以存存放放一一个个表表。若若要要使使用用多多个个表表,就就要要使使用用多多个个工工作作区区。在在VisualFoxPro6.0中中,系系统统还还提提供供所所谓谓数数据据工工作作期期的的工工作作环环境境。本本节节就就使使用用多多个个表表而而涉涉及及到到的这两个问题予以讨论。的这两个问题予以讨论。8.5.1引用工

290、作区引用工作区表表打打开开后后才才能能进进行行操操作作,实实际际上上打打开开表表就就是是把把它它从从磁盘调入内存的某一区域,称该区域为一个工作区。磁盘调入内存的某一区域,称该区域为一个工作区。1.工作区号工作区号VisualFoxPro6.0提提供供了了32767个个工工作作区区,编编号号从从1到到32767。每每个个工工作作区区只只允允许许打打开开一一个个表表,在在同同一一工工作作区区打打开开另另一一个个表表时时,先先前前打打开开的的表表就就会会被被关关闭闭。反反之之,一一个个表表只只能能在在一一个个工工作作区区打打开开,在在其其未未关关闭闭时时若若试试图图在在其其它它工工作作区区打打开开它

291、它,VisualFoxPro6.0会会显显示示提提示示出出错信息错信息“文件正在使用文件正在使用.”。8.5.1引用工作区引用工作区2.别名别名前前10个个工工作作区区除除使使用用110为为编编号号以以外外,还还可可依依次次使使用用AJ这这10个个字字母母来来表表示示,后后者者称称为为工工作作区的别名。区的别名。因因表表有有别别名名,在在应应用用程程序序中中通通常常使使用用该该工工作作区中表的别名来表示工作区。区中表的别名来表示工作区。3.选择工作区选择工作区工作区可以通过工作区号或别名来选择。工作区可以通过工作区号或别名来选择。8.5.2使用数据工作期使用数据工作期数数据据工工作作期期是是一

292、一个个用用来来设设置置数数据据工工作作环环境境的的交交互互操操作作窗窗口口。所所设设置置的的环环境境可可以以包包括括在在各各个个工工作作区区中中打打开开的的表表及及索索引引、多多个个表表之之间间的的关关系系等等状状态态。在在数数据据工工作作期期设设置置的的环环境境可可以以作作为为视视图图文文件件保保存存起起来来,需需要要时时将将视视图图文文件件打打开开就就能能恢恢复复它它所所保保存存的的环环境境。若若用用户户建建立立了了多多个个视视图图文文件件,需需要要某某个个环环境境时时只只要要打打开开相相应应的的视视图文件即可。图文件即可。1.数据工作期窗口数据工作期窗口“数数据据工工作作期期”窗窗口口可

293、可用用SET或或SETVIEWON命命令令打打开开,也也可可通通过过选选择择“窗窗口口”|“数数据据工工作作期期”命命令令的菜单操作方式打开,如图的菜单操作方式打开,如图8-10所示。所示。8.5.2使用数据工作期使用数据工作期图图8-10“数据工作期数据工作期”窗口窗口8.5.2使用数据工作期使用数据工作期“数数据据工工作作期期”窗窗口口包包括括3个个部部分分。左左边边的的“别别名名”列列表表框框用用于于显显示示迄迄今今为为止止已已打打开开的的表表,并并可可从从多多个个表表中中选选定定一一个个当当前前表表。右右边边的的“关关系系”列列表表框框用用于于显显示示表表之之间间的的关关联联状状况况。

294、中中间间一列的一列的6个按钮,其功能如下:个按钮,其功能如下:“属属性性”按按钮钮:用用于于打打开开工工作作区区的的属属性性对对话话框框(如如图图8-11所所示示),可可对对工工作作区区中中打打开开的的表进行多种设置。表进行多种设置。8.5.2使用数据工作期使用数据工作期图图8-11工作区属性对话框工作区属性对话框8.5.2使用数据工作期使用数据工作期“浏浏览览”按按钮钮:为为当当前前表表打打开开浏浏览览窗窗口口,供供浏浏览或编辑数据。览或编辑数据。“打打开开”按按钮钮:弹弹出出“打打开开”对对话话框框来来打打开开表表。若数据库已打开,还可以打开数据库表。若数据库已打开,还可以打开数据库表。“

295、关闭关闭”按钮:关闭当前表。按钮:关闭当前表。“关系关系”按钮:以当前表为父表建立关联。按钮:以当前表为父表建立关联。“一一对对多多”按按钮钮:系系统统默默认认表表之之间间以以多多一一关关系系关关联联,若若要要建建立立一一多多关关系系,可可单单击击这这一一按按钮钮,这这与与SETSKIPTO命令等效。命令等效。8.5.2使用数据工作期使用数据工作期2.视图文件视图文件数数据据工工作作期期设设置置的的环环境境可可以以作作为为视视图图文文件件保保存,以便在需要时恢复它所保存的环境。存,以便在需要时恢复它所保存的环境。视图文件的建立视图文件的建立菜单操作菜单操作命令方式命令方式视图文件的打开视图文件

296、的打开8.6创建数据库表间的关系创建数据库表间的关系8.6.1数据库表之间的关系数据库表之间的关系数数据据库库表表之之间间有有3种种关关系系:一一对对多多关关系系、多多对一关系以及多对多关系。对一关系以及多对多关系。1.一对多关系一对多关系2.多对一关系多对一关系3.多对多关系多对多关系8.6.2设置表间的临时关系设置表间的临时关系关联关联1.关联的概念关联的概念2.关联的建立关联的建立在在VisualFoxPro6.0中中,可可以以使使用用“数数据据工工作作期期”窗窗口口或或使使用用SETRELATION命命令令建建立立两两表之间的关联。表之间的关联。在在“数据工作期数据工作期”窗口建立关联

297、窗口建立关联用用SETRELATION命令建立关联命令建立关联8.6.2设置表间的临时关系设置表间的临时关系关联关联 图8-12 “数据工作期”窗口8.6.2设置表间的临时关系设置表间的临时关系关联关联 图8-13 创建关联8.6.2设置表间的临时关系设置表间的临时关系关联关联 图8-14 设置表的索引顺序8.6.2设置表间的临时关系设置表间的临时关系关联关联 图8-15 设置关联表达式 8.6.2设置表间的临时关系设置表间的临时关系关联关联 图8-16 关联后的浏览效果8.6.3设置表间的永久关系设置表间的永久关系1.永久关系的概念永久关系的概念永永久久关关系系是是数数据据库库表表之之间间的

298、的关关系系存存储储在在数数据据库库文文件件(.dbc)中,只要不作删除或变更就一直保留。中,只要不作删除或变更就一直保留。2.永久关系的建立永久关系的建立永永久久关关系系与与临临时时关关系系不不同同,它它不不必必在在每每次次使使用用表表时时重重新新建建立立。在在VisualFoxPro6.0中中可可利利用用“数数据据库库设设计计器器”来来建建立立永永久久关关系系,只只要要在在数数据据库库表表间间进进行行连连线线,而删除永久关系也只需去掉连线。而删除永久关系也只需去掉连线。8.6.3设置表间的永久关系设置表间的永久关系 图8-18 数据库的永久关系8.6.4参照完整性参照完整性前前面面已已经经介

299、介绍绍过过数数据据库库表表的的字字段段级级和和记记录录级级有有效效性规则,这里要介绍的参照完整性属于表间规则。性规则,这里要介绍的参照完整性属于表间规则。对对于于永永久久关关系系的的相相关关表表,在在更更新新、插插入入或或删删除除记记录录时时如如果果只只改改其其一一不不改改其其二二,就就会会影影响响数数据据的的完完整整性性。例例如如修修改改父父表表中中关关键键字字的的值值之之后后,子子表表关关键键字字的的值值未未做做相相应应的的改改变变;删删除除父父表表的的记记录录后后,子子表表的的相相应应记记录录未未删删除除,致致使使这这些些记记录录成成为为孤孤立立记记录录;对对于于子子表表插插入入的的记记

300、录录,父父表表中中没没有有相相应应关关键键字字值值的的记记录录等等等等。对对于于这些涉及表间数据的完整性,统称为参照完整性。这些涉及表间数据的完整性,统称为参照完整性。习题习题1.选择题选择题关于数据库和自由表,正确的叙述是关于数据库和自由表,正确的叙述是。关于索引概念的不正确叙述是关于索引概念的不正确叙述是。 可可以以伴伴随随着着表表的的打打开开而而自自动动打打开开的的索索引引是是 。关于索引的叙述,不正确的是关于索引的叙述,不正确的是。如如果果要要在在字字段段中中控控制制重重复复值值的的输输入入,并并对对记记录排序,则录排序,则。习题习题对对学学生生成成绩绩表表文文件件按按总总分分(N,6

301、,2)降降序序、姓姓名名(C,8)升序索引。应使用命令升序索引。应使用命令。设设表表文文件件已已经经在在当当前前工工作作区区打打开开,有有关关索索引引文文件件已已经经建建立立,要要打打开开表表文文件件的的某某索索引引文文件件,应应该该使使用用命命令令。在在数数据据库库设设计计器器中中,建建立立2个个表表之之间间的的一一对对多多关关系系是通过是通过实现的。实现的。永久关系建立后永久关系建立后。创创建建两两个个具具有有多多对对多多关关系系的的表表之之间间的的关关联联,应应当当。习题习题2.填空题填空题一个数据库表最多只能建一个数据库表最多只能建个触发器。个触发器。单索引文件的扩展名是单索引文件的扩

302、展名是。在同一个数据表中可以有在同一个数据表中可以有个主索引。个主索引。如如果果中中只只有有一一个个关关键键字字段段,其其类类型型可可以以是字符型、数值型、是字符型、数值型、。在在索索引引中中,字字段段默默认认是是按按序序排排列列的的。如如果果想想把把数数值值型型字字段段按降序排列,把按降序排列,把前加前加即可。即可。要要在在项项目目中中添添加加或或移移去去数数据据库库,只只能能通通过过窗窗口口来来实实现。现。从项目中移去数据库时,与数据库有关的表将变成从项目中移去数据库时,与数据库有关的表将变成。参考答案参考答案1、选择题、选择题DD C D CD A ABA2、填空题填空题3.idx1日期

303、型、逻辑型日期型、逻辑型升序、升序、-ProjectManager自由表自由表第第9章章结构化程序设计简介结构化程序设计简介学习要点学习要点1、程序的建立与执行程序的建立与执行2、程序的分支结构与循环结构程序的分支结构与循环结构3、子程序、自定义函数与过程子程序、自定义函数与过程4、变量的作用域变量的作用域第第9章章结构化程序设计简介结构化程序设计简介9.1程序文件程序文件9.2程序的控制结构程序的控制结构9.3多模块程序多模块程序习题与参考答案习题与参考答案第第9章章结构化程序设计简介结构化程序设计简介VisualFoxPro程程序序设设计计包包括括结结构构化化程程序序设设计计和和面面向向对

304、对象象程程序序设设计计。前前者者是是传传统统的的程程序序设设计计方方法法,若若使使用用这这种种方方法法来来设设计计VisualFoxPro程程序序的的用用户户界界面面,不不仅仅难难度度大大,而而且且十十分分麻麻烦烦。后后者者面面向向对对象象,用用户户界界面面可可利利用用系系统统提提供供的的辅辅助助工工具具来来设设计计,应应用用程程序序也也可可自自动动生生成成,但但仍仍需需用用户户编编写写一一些些过过程程代代码码。就就此此而而言言,结结构构化化程序设计仍是面向对象程序设计的基础。程序设计仍是面向对象程序设计的基础。9.1程序文件程序文件VisualFoxPro将将命命令令文文件件(有有顺顺序序要

305、要求求的的命命令令序序列列)称称为为程程序序文文件件或或程程序序,本本节节主主要要介介绍绍程程序序的的建建立立、执执行行以以及及专专用用于于程程序序文文件件中中的的若干命令。若干命令。9.1.1程序文件的建立与执行程序文件的建立与执行1.程序文件的建立与修改程序文件的建立与修改命令格式:命令格式:MODIFYCOMMAND功功能能:打打开开文文本本编编辑辑窗窗口口,用用来来建建立立或或修修改程序文件。改程序文件。说说明明:程程序序文文件件由由VisualFoxPro命命令令组组成成。由由用用户户指指定定,缺缺省省的的扩扩展展名名为为.prg。9.1.1程序文件的建立与执行程序文件的建立与执行关

306、关闭闭编编辑辑窗窗口口的的方方法法有有:按按Ctrl+W键键;按按Esc键键;在编辑窗口双击控制菜单按钮或单击关闭按钮。在编辑窗口双击控制菜单按钮或单击关闭按钮。按按Ctrl+W键可将文件立即存盘并且退出编辑。键可将文件立即存盘并且退出编辑。此此外外还还可可用用文文件件菜菜单单的的“保保存存”、“另另存存为为”、“还原还原”选项来关闭编辑窗口。选项来关闭编辑窗口。文文本本编编辑辑窗窗口口也也可可以以编编辑辑由由ASCII字字符符组组成成的的非非.prg文文件件。.prg文文件件是是程程序序,可可以以运运行行,一一般般的的文文本本文文件则可读而不可运行。件则可读而不可运行。9.1.1程序文件的建

307、立与执行程序文件的建立与执行2.程序的运行程序的运行命令格式:命令格式:DO功能:执行由功能:执行由表示的程序。表示的程序。说明:说明:所所谓谓执执行行程程序序,就就是是依依次次执执行行程程序序中中的的命命令令。例例如如DOjs,其其效效果果和和命命令令窗窗口口中中依依次次键键入入并执行命令一致。并执行命令一致。9.1.1程序文件的建立与执行程序文件的建立与执行DO命命令令默默认认运运行行.prg程程序序,如如果果要要运运行行的的是是.prg程程序序,DO命命令令中中的的只只需需取取文文件件主主名名。要要运运行行其其它它程程序序,中中须须包包括括扩扩展展名名,例例如如执执行行查查询询程程序序的

308、的命命令令为为DOmczz.qpr。VisualFoxPro程程序序可可以以通通过过编编译译获获得得目目标标程程序序,目目标标程程序序是是紧紧凑凑的的非非文文本本文文件件,运运行行速速度快,并可起到对源程序加密的作用。度快,并可起到对源程序加密的作用。9.1.1程序文件的建立与执行程序文件的建立与执行3.程序书写规则程序书写规则命令分行命令分行程程序序中中每每条条命命令令都都以以回回车车键键结结尾尾,一一行行只只能能写写一一条条命命令令。若若命命令令需需分分行行书书写写,应应在在一一行行终终了了时时键键入入续续行符行符“;”,然后按回车键。,然后按回车键。命令注释命令注释程序中可插入注释,以提

309、高程序的可读性。程序中可插入注释,以提高程序的可读性。注注释释行行以以符符号号“*”开开头头,它它是是一一条条非非执执行行命命令令,仅仅在在程程序序中中显显示示。命命令令后后也也可可添添加加注注释释,这这种种注注释释以以符号符号“”开头。开头。9.1.1程序文件的建立与执行程序文件的建立与执行4.求解的基本逻辑与程序通用性求解的基本逻辑与程序通用性求解的基本逻辑求解的基本逻辑VisualFoxPro程程序序多多数数用用于于数数据据处处理理,解解决决问问题题的的基基本本逻逻辑辑是:输入数据是:输入数据处理数据处理数据输出数据。输出数据。程序的通用性程序的通用性程程序序的的通通用用性性指指程程序序

310、对对多多种种场场合合的的适适应应性性,通通用用性性好好的的程程序序的的应应用用范范围围较较广广。只只能能计计算算半半径径为为8的的圆圆面面积积程程序序谈谈不不上上通通用用性性,若若将将程程序序设设计计成成能能对对任任意意半半径径算算出出圆圆面面积积,则则通通用用性性就就大大力力增增强强。要要做做到到这这一一点点并并不不困困难难,只只要要将将程程序序中中原原始始数数据据定定值值改改为为由用户按需输入即可。由用户按需输入即可。9.1.2程序文件中的专用命令程序文件中的专用命令在在程程序序文文件件中中,常常常常要要用用到到一一些些在在交交互互方方式式中中不不需需要要甚甚至至不不能能执执行行的的专专用

311、用命命令令。本本小小节节仅仅介介绍绍其其中中若若干较常使用的命令。干较常使用的命令。1.程序结尾的专用命令程序结尾的专用命令程程序序的的末末尾尾可可放放一一条条RETURN命命令令,它它能能使使程程序序执执行行结结束束,并并返返回回到到调调用用它它的的上上级级程程序序继继续续执执行行,若若无无上上级级程程序序则则返返回回到到命命令令窗窗口口。RETURN命命令令一一般般允允许缺省。许缺省。另另一一条条命命令令为为CANCEL,它它能能使使程程序序运运行行终终止止,清除程序的私有变量,并返回到命令窗口。清除程序的私有变量,并返回到命令窗口。9.1.2程序文件中的专用命令程序文件中的专用命令2.输

312、入输出专用命令输入输出专用命令传传统统的的专专用用数数据据输输入入命命令令有有INPUT,ACCEPT等等多多种种,数数据据输输出出命命令令有有TEXTENDTEXT命命令令,现现均均已很少使用。这里仅介绍定位输入输出命令。已很少使用。这里仅介绍定位输入输出命令。命令基本格式:命令基本格式:SAYGETDEFAULT功功能能:在在屏屏幕幕的的指指定定行行列列输输出出SAY子子句句的的表表达达式式值,并可修改值,并可修改GET子句的变量值。子句的变量值。9.1.2程序文件中的专用命令程序文件中的专用命令说明:说明:表表示示数数据据在在窗窗口口中中显显示示的的位位置置,行行自自顶顶向向下下编编号号

313、,列列自自左左向向右右编编号号,编编号号均均从从0开开始始。行行与与列列都是数值表达式,还可使用十进制小数精确定位。都是数值表达式,还可使用十进制小数精确定位。SAY子子句句用用来来输输出出数数据据,GET子子句句用用来来输输入入及及编编辑辑数数据据。若若缺缺省省SAY子子句句,GET变变量量值值从从指指定定位位置置开开始始显显示示;含含有有SAY子子句句时时先先显显示示其其表表达达式式值值,然然后后空空开开一一格格显显示示GET变变量量的的值值。SAY和和GET子子句句数数据据显显示示时时的的背背景景色色不不一一样样,前前者者以以标标准准型型显显示示,后后者者以以增增强强型显示。型显示。9.

314、1.2程序文件中的专用命令程序文件中的专用命令GET子子 句句 中中 的的 变变 量量 必必 须须 具具 有有 初初 值值 , 或或 用用DEFAULT子子句句的的指指定定初初值值。初初值值一一旦旦指指定定。该该变变量量的的类类型型在在编编辑辑期期间间就就不不能能改改变变,字字符符型型变变量量的的宽度与数值型变量的小数位数也无法再变。宽度与数值型变量的小数位数也无法再变。GET子子句句的的变变量量必必须须用用READ命命令令来来激激活活,也也就就是是说说,在在若若干干带带有有GET子子句句的的定定位位输输入入输输出出命命令令后后,必必须须遇遇到到READ命命令令才才能能编编辑辑GET变变量量。

315、当当光光标标移移出出这些这些GET变量组成的区域时变量组成的区域时READ命令执行结束。命令执行结束。9.1.2程序文件中的专用命令程序文件中的专用命令3.WAIT命令命令命令格式:命令格式:WAITTOWINDOWAT,功功能能:暂暂停停程程序序的的运运行行,直直到到用用户户输输入入一一个个字字符符。也可只用于输出一条提示信息。也可只用于输出一条提示信息。说明:说明:WAIT命命令令使使VisualFoxPro程程序序暂暂停停运运行行,等等用用户按任一键(或回车)后,程序继续运行。户按任一键(或回车)后,程序继续运行。9.1.2程序文件中的专用命令程序文件中的专用命令用用来来保保存存键键入入

316、的的字字符符,如如果果不选不选TO子句,则输入的数据不予保存。子句,则输入的数据不予保存。如如果果缺缺省省,则则执执行行命命令令后后屏屏幕幕显显示示“按按任任意意键键继继续续”,提提示示按按任任一一键键将将继继续运行。续运行。WINDOW子子句句可可使使主主屏屏幕幕上上出出现现一一个个WAIT提提示示窗窗口口,位位置置由由AT选选项项的的,来来指指定定。若若缺缺省省AT选选项项,将将显显示示在在主屏幕右上角。主屏幕右上角。9.2程序的控制结构程序的控制结构与与其其它它高高级级语语言言程程序序相相似似,VisualFoxPro程程序序也也有有3种种基基本本控控制制结结构构,即即:顺顺序序结结构构

317、、分分支支结结构构和和循循环环结结构构。顺顺序序结结构构按按命命令令的的书书写写顺顺序序依依次次执执行行;分分支支结结构构能能根根据据指指定定条条件件的的当当前前值值在在两两条条或或多多条条程程序序路路径径中中选选择择一一条条执执行行;而而循循环环结结构构则则由由指指定定条条件件的的当当前前值值来来控控制制循循环环体体中中的的语语句句(或或命命令令)序序列列是是否否要要重重复复执执行行。下面分别介绍它们在下面分别介绍它们在VisualFoxPro中的描述方式。中的描述方式。9.2.1顺序结构顺序结构顺顺序序结结构构的的程程序序运运行行时时按按照照语语句句排排列列的的先先后后顺顺序序,一一条条接

318、接一一条条地地依依次次执执行行,它它是是程程序序中中最基本的结构。例最基本的结构。例9-1就是一个顺序结构的例子。就是一个顺序结构的例子。9.2.2分支结构分支结构计计算算机机具具有有判判别别功功能能。判判别别是是靠靠程程序序实实现现的的,VisualFoxPro能能用用条条件件语语句句或或多多分分支支语语句句构构成成分分支支结结构构,并并根据条件成立与否来决定程序执行的流向。根据条件成立与否来决定程序执行的流向。条条件件语语句句是是一一个个具具有有两两个个分分支支的的程程序序结结构构,又又可可分成带分成带ELSE与不带与不带ELSE两种格式。两种格式。1.简单的条件语句简单的条件语句语句格式

319、:语句格式:IFENDIF9.2.2分支结构分支结构2.带带ELSE的条件语句的条件语句IFELSEENDIF功功能能:根根据据的的逻逻辑辑值值,选选择择执执行行两两个个语语句句序序列列中中的的一一个个。若若值值为为真真,先先执执行行,然然后后再再执执行行ENDIF后后面面的的语语句句;若若其其值值为为假假,先先执执行行,然后再执行,然后再执行ENDIF后面的语句。后面的语句。9.2.2分支结构分支结构3.多分支语句多分支语句语句格式:语句格式:DOCASECASECASECASEOTHERWISEENDCASE9.2.3循环语句循环语句在在处处理理实实际际问问题题的的过过程程中中,有有时时需

320、需要要重重复复执执行行相相同同的的操操作作,即即对对一一段段程程序序进进行行循循环环操操作作,这这种种被被重重复复的的语句序列称为循环体。语句序列称为循环体。Visual FoxPro具具有有一一般般程程序序设设计计语语言言都都有有的的WHILE条条件件循循环环语语句句和和FOR步步长长循循环环语语句句,此此外外还还有有专专用用于于对对表表进进行行处处理理的的SCAN扫扫描描循循环环语语句句。循循环环执执行行的的次次数数一一般般由由循循环环条条件件决决定定,但但在在循循环环体体中中可可插插入入跳跳出出语语句句EXIT来来结结束束循循环环,也也可可以以用用LOOP语语句句来来继继续循环。续循环。

321、9.2.3循环语句循环语句1.条件循环条件循环语句格式:语句格式:DOWHILEENDDO说说明明:语语句句格格式式中中的的称称为为循循环环条条件件,称称为为循循环环体体。语语句句执执行行时时,若若循循环环条条件件为为假假就就结结束束循循环环,然然后后执执行行ENDDO后后面面的的语语句句;为为真真则则执执行行循循环环体体,一一旦旦遇遇到到ENDDO就就自自动动返返回回到到DOWHILE重重新新判判断断循循环环条条件件是是否否成成立立,以决定是否继续循环。以决定是否继续循环。9.2.3循环语句循环语句例例9-4编编程程显显示示teacher.dbf中中所所有有男男教教师师的的姓姓名。名。*e9

322、-4.prgUSEteacherDOWHILENOTEOF()IF性别性别=“男男”?姓名?姓名ENDIFSKIPENDDOUSE9.2.3循环语句循环语句2.步长循环步长循环语句格式:语句格式:FOR=TOSTEPENDFORNEXT说说明明:语语句句格格式式中中的的称称为为循循环环变变量量,、分分别别称称为为初初值值、终终值值、步步长长。语语句句执执行行时时,通通过过比比较较循循环环变变量量值值与与终终值值来来决决定定是是否否执执行行。步步长长为为正正数数时时,若若循循环环变变量量值值不不大大于于终终值值就就执执行行循循环环体体;步步长长为为负负数数时时,若若循循环环变变量量值值不不小小于

323、于终终值值就就执执行行循循环环体体。执执行行一一旦旦遇遇到到ENDFOR或或NEXT,循循环环变变量量值值加加上上步步长长,然然后返回到后返回到FOR重新与终值比较。重新与终值比较。9.2.3循环语句循环语句例例9-5编写计算编写计算S=1+2+3+100的程序。的程序。*e9-5.prgs=0s为累加器,初值为为累加器,初值为0FORi=1TO100i为计数器,初值为为计数器,初值为1s=s+i累加累加NEXT?“s=”,s9.2.3循环语句循环语句3.扫描循环扫描循环语句格式:语句格式:SCANFORWHILEENDSCAN说说明明:该该语语句句针针对对当当前前表表进进行行循循环环,子子句

324、句表表示示记记录录范范围围,缺缺省省值值为为ALL。语语句句执执行行时时在在中中依依次次寻寻找找满满足足FOR条条件件或或WHILE条条件件的的记记录录,并并对对找找到的记录执行到的记录执行。9.2.3循环语句循环语句例例9-6根据例根据例9-4的要求,用扫描循环语句编程。的要求,用扫描循环语句编程。*e9-6.prgUSEteacherSCANFOR性别性别=“男男”?姓名?姓名ENDSCANUSE9.2.3循环语句循环语句4.循环辅助语句循环辅助语句在在各各种种循循环环语语句句的的循循环环体体中中可可以以插插入入LOOP和和EXIT语语句句,前前者者能能使使执执行行转转向向循循环环语语句句

325、头头部部继继续续循循环环;后后者者则则用用来来立立即即退退出出循循环环,转转去去执执行行ENDDO、ENDFOR或或ENDSCAN后面的语句。后面的语句。例例9-7编编程程计计算算S=1+2+3+100,并并求求1100之间奇数之和。之间奇数之和。9.2.3循环语句循环语句*e9-7.prgSTORE0TOi,s,tDOWHILEi100i=i+1s=s+i累加累加i值值IFINT(i/2)=i/2i为偶数时条件值为为偶数时条件值为.T.LOOPENDIFt=t+i累加奇数累加奇数ENDDO?“1+2+3+100=”,s?“1100奇数和为:奇数和为:”,t9.2.3循环语句循环语句5.多重循

326、环多重循环若若一一个个循循环环语语句句的的循循环环体体内内又又包包含含其其它它循循环环,就就构构成成了了多多重重循循环环,也也称称为为循循环环嵌嵌套套。较较为为复复杂的问题往往要用多重循环来处理。杂的问题往往要用多重循环来处理。例例9-8在在teacher.dbf中中找找出出所所有有未未婚婚教教师师的的姓姓名名、性性别别与与部部门门,并并要要求求在在各各输输出出行行下下显显示示一一行虚线。行虚线。9.2.3循环语句循环语句*e9-8.prgCLEARUSEteacherSCANFORNOT婚否婚否外循环外循环?姓名姓名+SPACE(3)+性别性别+SPACE(3)+部门部门?起换行作用起换行作

327、用FORi=1TO30内循环内循环?“-”内循环的循环体内循环的循环体ENDFOR内循环结束语句内循环结束语句ENDSCAN外循环结束语句外循环结束语句USE程序执行结果如下:程序执行结果如下:赵海东赵海东男男23王王强强男男22李李东东男男239.3多模块程序多模块程序应应用用程程序序一一般般都都是是多多模模块块程程序序,可可包包含含多多个个程程序序模模块块。模模块块是是可可以以命命名名的的一一个个程程序序段段,可可指指主主程程序序、子子程程序序和和自自定定义义函函数数。本本节节介介绍绍模模块块的的构构成成及及调调用用方方法法,多多模模块块程程序序中中变变量量的的作作用域,以及结构化程序设计

328、的概念。用域,以及结构化程序设计的概念。9.3.1子程序子程序1.调用与返回调用与返回对对于于两两个个具具有有调调用用关关系系的的程程序序文文件件,常常称称调调用用程程序序为主程序,被调用程序为子程序。为主程序,被调用程序为子程序。已已知知执执行行DO命命令令能能运运行行VISUALFOXPRO程程序序,其其实实DO命命令令也也可可用用来来执执行行子子程程序序模模块块。主主程程序序执执行行时时遇遇到到DO命命令令,执执行行就就转转向向子子程程序序,称称为为调调用用子子程程序序。子子程程序序执执行行到到RETURN语语句句(或或缺缺省省该该语语句句),就就会会返返回回到到主主程程序序中中转转出出

329、处处的的下下一一语语句句继继续续执执行行程程序序,称称为从子程序返回,或简称返主。为从子程序返回,或简称返主。9.3.1子程序子程序2.带参数子程序的调用与返回带参数子程序的调用与返回DO命令允许带一个命令允许带一个WITH子句,用来进行参数传递。子句,用来进行参数传递。命令格式:命令格式:DO程序名程序名1WITH参数表参数表IN程序名程序名2说明:说明:参参数数表表中中的的参参数数可可以以是是表表达达式式,但但若若为为内内存存变变量量必必须须具有初值。具有初值。当当程程序序名名1是是IN子子句句程程序序名名2中中的的一一个个过过程程时时,DO命令调用该过程。命令调用该过程。9.3.1子程序

330、子程序调调用用子子程程序序时时参参数数表表中中的的参参数数要要传传递递给给子子程程序序,子子程程序序中中也也必必须须设设置置相相应应的的参参数数接接收收语语句句。VISUALFOXPRO的的PARAMETERS命命令令就就具具有有接接收收参参数数和和回回送参数值的作用。送参数值的作用。命令格式:命令格式:PARAMETERS参数表参数表功功能能:指指定定内内存存变变量量以以接接收收DO命命令令发发送送的的参参数数值值,返返主主时时把把内内存存变变量量值值回回送送给给调调用用程程序序中中相相应应的的内内存存变变量。量。9.3.1子程序子程序例例9-9设计一个计算圆面积的子程序,并要求在主程序中带

331、参数调用它。设计一个计算圆面积的子程序,并要求在主程序中带参数调用它。主程序:主程序:*e9-9.prgymj=05,10SAY“请输入半径:请输入半径:”GETbjDEFAULT0READDOjsWITHbj,ymj调用子程序调用子程序?“ymj=”,ymj显示圆面积显示圆面积RETURN子程序:子程序:*js.PRGPARAMETERSr,ss=PI()*r*rVisualFoxPro的的PI()函数返回函数返回值值RETURN返主返主9.3.1子程序子程序3.子程序嵌套子程序嵌套主主程程序序与与子子程程序序的的概概念念是是相相对对的的,子子程程序序还还可可调调用用它它自自己己的的子子程程

332、序序,即即子子程程序序可可以以嵌嵌套套调调用用。VisualFoxPro的的返返回回命命令令包包含了因嵌套而引出的多种返回方式。含了因嵌套而引出的多种返回方式。命令格式:命令格式:RETURNTOMASTER|TO程序文件名程序文件名说说明明:命命令令格格式式中中的的TOMASTER选选项项,使使返返主主时时直直接接返返回回到到最最外外层层主主程程序序;可可选选项项TO程程序序文文件件名名强强制制返返回回到到指指定定的程序文件。的程序文件。顺顺便便指指出出,任任何何时时候候要要退退出出VisualFoxPro,只只要要执执行行命命令令QUIT。9.3.2自定义函数自定义函数1.自定义函数的建立

333、自定义函数的建立自定义函数的定义格式如下:自定义函数的定义格式如下:FUNCTION函数名函数名PARAMETERS参数表参数表语句序列语句序列RETURN表达式表达式9.3.2自定义函数自定义函数说明:说明:若若使使用用FUNCTION语语句句来来指指出出函函数数名名,表表示示该该函函数数包包含含在在调调用用程程序序中中。若若缺缺省省该该语语句句,表表示示此此函函数数是是一一个个独独立立文文件件,函函数数名名将将在在建建立立文文件件时时确确定定,其其扩扩展展名名默默认认为为.prg,并并可可使使用用命命令令MODIFYCOMMAND函函数数名名来来建建立立或或编编辑辑该该自自定定义义函函数数

334、。还还需需注注意意,自自定定义义函函数数的的函函数数名名不不能能和和VisualFoxPro系系统函数同名,也不能和内存变量同名。统函数同名,也不能和内存变量同名。语语句句序序列列组组成成为为函函数数体体,用用于于进进行行各各种种处处理理;简简单单的的函数其函数体也可为空。函数其函数体也可为空。RETURN语语句句用用于于返返回回函函数数值值,其其中中的的表表达达式式值值就就是函数值。若缺省该语句,则返回的函数值为是函数值。若缺省该语句,则返回的函数值为.T.。自定义函数与系统函数调用方法相同,其形式为:自定义函数与系统函数调用方法相同,其形式为:函数名函数名参数表参数表9.3.2自定义函数自

335、定义函数例例9-10 设设计计一一个个自自定定义义函函数数,用用来来求求一一元元一一次次方方程程AX+B=0的根。的根。自定义的求根函数自定义的求根函数root.prg如下:如下:*root.prgPARAMETERSa,bRETURNIIF(a=0,“无解无解”,-b/a)上上述述ROOT函函数数中中的的IIF函函数数是是标标准准函函数数,其其功功能能类类似似于于IF语句语句。若。若A=0,它的值是字符串它的值是字符串“无解无解”;否则返回;否则返回一一B/A的值。的值。现在使用下述命令调用现在使用下述命令调用ROOT函数来解决方程函数来解决方程2X+4=0:?“X:”,ROOT(2,4)显

336、示结果显示结果X=-29.3.2自定义函数自定义函数2.数组参数的传递数组参数的传递在在调调用用自自定定义义函函数数或或过过程程时时,也也可可将将数数组组作作为为参参数数来来传传递递数数据据。此此时时发发送送参参数数与与接接收收参参数数都都使使用用数数组组名名,发发送送参参数数数数组组名名前前要要加加来来标标记,而作为接收参数的数组不需事先定义。记,而作为接收参数的数组不需事先定义。9.3.3过程过程过程的格式如下:过程的格式如下:PROCEDURE过程名过程名PARAMETERS参数表参数表命令序列命令序列RETURN说说明明:从从格格式式可可知知,过过程程是是以以PROCEDURE开开头头

337、,并并标标出出过过程程名名的的程程序序或或程程序序段段序序列列是是过过程程体体。与与程序调用一样,过程也程序调用一样,过程也用用DO命令调用。命令调用。9.3.3过程过程例例9-11调用过程文件中的过程示例。调用过程文件中的过程示例。主程序:主程序:*e9-11.prgymj=05,10SAY“请输入半径:请输入半径:”GETbjDEFAULT0READDOjsWITHbj,ymjINjs1?“ymj=”,ymj过程文件:过程文件:*js1.prgPROCEDUREjsPARAMETERSr,ss=PI()*r*r在过程中也可调用其它程序模块。在过程中也可调用其它程序模块。9.3.4变量的作用

338、域变量的作用域1.公共变量公共变量在在任任何何模模块块中中都都可可使使用用的的变变量量称称为为公公共共变变量量,公公共共变量可用下述命令来建立。变量可用下述命令来建立。命令格式:命令格式:PUBLIC内存变量表内存变量表2.私有变量私有变量VisualFoxPro默默认认程程序序中中定定义义的的变变量量是是私私有有变变量量,私私有有变变量量仅仅在在定定义义它它的的模模块块及及其其下下层层模模块块中中有有效效,而而在定义它的模块运行结束时自动清除。在定义它的模块运行结束时自动清除。9.3.4变量的作用域变量的作用域命令格式:命令格式:PRIVATE内内存存变变量量表表ALLLIKE|EXCEPT

339、通通配符配符3.本地变量本地变量本本地地变变量量只只能能在在建建立立它它的的模模块块中中使使用用,而而且且不不能能在在高高层层或或底底层层模模块块使使用用,该该模模块块运运行行结结束束时时本本地地变变量量就就自动释放。自动释放。命令格式:命令格式:LOCAL内存变量表内存变量表9.3.5结构化程序设计的概念结构化程序设计的概念典典型型的的数数据据库库应应用用系系统统通通常常含含有有输输入入、修修改改、查查询询、统统计计、打打印印报报表表等等功功能能模模块块,它它是是一一个个多多模模块块系系统统,通通常常用用菜菜单单来来管管理理这这些些模模块块。数数据据库库应应用用系系统统通通常常包包含含众众多

340、多模模块块。在在VISUALFOXPRO流流行行前前,开开发发应应用用系统通常遵循结构化程序设计的原则与方法。系统通常遵循结构化程序设计的原则与方法。1.自顶向下,逐步求精自顶向下,逐步求精2.模块化模块化3.层次化层次化习题习题1.填空填空程序运行的命令是程序运行的命令是_。程程序序可可以以通通过过编编译译获获得得目目标标程程序序,目目标标程程序序是是_。计计算算机机解解题题须须遵遵循循求求解解的的_,还还须须适适当当注注意意_。GET子句的变量必须用子句的变量必须用_命令来激活。命令来激活。Visual FoxPro程程 序序 有有 三三 种种 基基 本本 控控 制制 结结 构构 , 即即

341、_、_和和_。习题习题VisualFoxPro能能用用_或或_构构成成分分支支结构,实现判别功能。结构,实现判别功能。Visual FoxPro具具有有三三种种循循环环语语句句,即即_、_和和_。对对于于两两个个具具有有调调用用关关系系的的程程序序文文件件,常常称称调调用用程程序序为为_,被调用程序为,被调用程序为_。DO命令允许带一个命令允许带一个WITH子句,用来进行子句,用来进行_。若若 以以 变变 量量 的的 作作 用用 域域 来来 分分 类类 , 内内 存存 变变 量量 可可 分分 为为_、_和和_三类。三类。参考答案参考答案1、(、(1)DO文件名文件名(2)紧凑的非文本文件)紧凑

342、的非文本文件(3)基本逻辑、程序的通用性)基本逻辑、程序的通用性(4)READ(5)顺序结构、分支结构、循环结构顺序结构、分支结构、循环结构(6)条件语句、多分支语句)条件语句、多分支语句(7)条件循环语句、步长循环语句、扫描循环语句)条件循环语句、步长循环语句、扫描循环语句(8)主程序、子程序)主程序、子程序(9)参数传递)参数传递(10)公共变量、私有变量、本地变量)公共变量、私有变量、本地变量第第10章章视图与查询视图与查询学习要点学习要点1、视图设计器视图设计器2、远程视图远程视图3、视图的更新视图的更新4、视图的定制和使用视图的定制和使用5、查询的创建和运行查询的创建和运行第第10章

343、章视图与查询视图与查询10.1创建本地视图创建本地视图10.2创建远程视图创建远程视图10.3用视图更新数据用视图更新数据10.4定制和使用视图定制和使用视图10.5创建和运行查询创建和运行查询习题及参考答案习题及参考答案第第10章章视图与查询视图与查询在在数数据据库库中中,除除了了保保存存表表之之外外,还还可可保保存存视视图图。视视图图是是引引用用一一个个或或多多个个表表或或其其它它视视图图的的虚虚拟拟表表定定义义。视视图图分分为为本本地地视视图图和和远远程程视视图图。本本地地视视图图访访问问的的是是本本地地数数据据库库中中的的表表或或视视图图,使使用用VisualFoxProSQL语语法法

344、从从视视图图或或表表中中选选择择信信息息;远远程程视视图图访访问问的的是是远远程程数数据据服服务务器器中中的的表表,远远程程视视图图使使用用远远程程服服务务器器的的SQL语语法法从从远远程程数数据据源源表表中中选选择择信信息息。视视图图与与数数据据库库及及表表的的区区别如下:别如下:视视图图和和数数据据库库:视视图图是是数数据据库库的的一一部部分分,访访问问视视图图前前必必须须先打开所在的数据库。先打开所在的数据库。视视图图和和表表:视视图图是是基基于于一一个个或或多多个个基基表表的的虚虚拟拟表表,本本身身不不含数据,其数据是在打开视图时临时从基表中提取的。含数据,其数据是在打开视图时临时从基

345、表中提取的。第第10章章视图与查询视图与查询VisualFoxPro的的查查询询功功能能可可以以检检索索存存储储在在表表和和视视图图中中的的信信息息。查查询询中中可可以以指指定定检检索索的的字字段段和和检检索索记记录录时时的的筛筛选选条条件件,也也可可以以根根据据需需要要对对这这些些记记录录排排序序和和分分组组,查询结果可以有多种输出形式。查询结果可以有多种输出形式。查查询询只只是是从从基基表表中中提提取取数数据据,不不能能对对基基表表中中的的数数据据更更新新;使使用用视视图图则则既既可可以以从从基基表表中中提提取取数数据据,又又可可更新基表中的数据。更新基表中的数据。10.1创建本地视图创建

346、本地视图创建本地视图前,须先打开基表所在的数据库。创建本地视图前,须先打开基表所在的数据库。创建本地视图有以下方法:创建本地视图有以下方法:使用本地视图向导。使用本地视图向导。使用视图设计器。使用视图设计器。采用命令方式。采用命令方式。10.1.1视图设计器视图设计器打开视图设计器可以采用以下方法之一。打开视图设计器可以采用以下方法之一。在在项项目目管管理理器器中中选选择择一一个个数数据据库库,选选择择“本本地地视视图图”,并并单单击击“新新建建”按按钮钮,然然后后单单击击“新新建建视视图图”按钮。按钮。在在数数据据库库打打开开时时,选选择择“文文件件”菜菜单单中中的的“新新建建”选选项项,然

347、然后后选选择择“视视图图”并并且且单单击击“新新建建文文件件”按钮。按钮。在在数数据据库库打打开开时时,使使用用命命令令CreateSQLView或或者者ModifyView。10.1.1视图设计器视图设计器图图10-1“添加表或视图添加表或视图”对话框对话框10.1.1视图设计器视图设计器图图10-2“视图设计器视图设计器”窗口窗口10.1.1视图设计器视图设计器单表视图单表视图当当在在添添加加表表或或视视图图对对话话框框中中选选择择一一个个表表或或视图后,就可基于此表创建一个单表视图。视图后,就可基于此表创建一个单表视图。选选择择字字段段。使使用用视视图图设设计计器器窗窗口口底底部部的的“

348、字字段段”选选项项卡卡,可可以以选选取取需需要要包包含含在在视视图图中中的的字段。字段。10.1.1视图设计器视图设计器10.1.1视图设计器视图设计器10.1.1视图设计器视图设计器设设置置筛筛选选条条件件。使使用用“筛筛选选”选选项项卡卡。可可以以设设定定视视图图从从基基表表中中检检索索记记录时的筛选条件,从而检索需要的记录集合,而不是全部记录。录时的筛选条件,从而检索需要的记录集合,而不是全部记录。10.1.1视图设计器视图设计器设设置置排排序序依依据据。经经过过以以上上两两项项设设置置,此此视视图图能能够够从从基基表表中中检检索索出出满满足足条件的记录集合。对此结果中的记录,还可进一步

349、进行排序和分组。条件的记录集合。对此结果中的记录,还可进一步进行排序和分组。10.1.1视图设计器视图设计器设置分组依据。设置分组依据。所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可完成所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可完成基于一组记录的计算。基于一组记录的计算。10.1.1视图设计器视图设计器 图10-8 “满足条件”对话框10.1.1视图设计器视图设计器设置其他项设置其他项。10.1.1视图设计器视图设计器保保存存视视图图。完完成成以以上上的的设设置置之之后后(或或设设置置过过程程中中),要要对对视视图图进进行行保保存存。单单击击工工具具栏栏中中的的“保保存

350、存”按按钮钮或或选选择择“文文件件”菜菜单单中中的的“保保存存”菜菜单单项项实实现现视视图图保保存,视图未命名时系统会提示用户给视图命名。存,视图未命名时系统会提示用户给视图命名。预预览览视视图图。在在视视图图设设置置过过程程中中,随随时时可可以以预预览览视视图图的的运运行行结结果果。选选择择“查查询询”菜菜单单中中的的“运运行行查查询询”或或单单击击工工具具栏栏中中的的“运运行行”按按钮钮,可可以以看看到到视视图图的的记录集合,如图记录集合,如图10-10所示。所示。10.1.1视图设计视图设计器器查看查看SQL语句。视图是使用语句。视图是使用SQL语句从基表中提取数据的。语句从基表中提取数

351、据的。图图10-10视图预览窗口视图预览窗口图图10-11SQL语句显示窗口语句显示窗口10.1.1视图设计器视图设计器多表视图多表视图当当一一个个视视图图需需要要从从多多个个表表或或视视图图中中获获取取数数据据时时,就就要要创创建建多多表表视视图图。首首先先要要将将所所用用的的表表或或视视图图添添加加到到视视图设计器中。图设计器中。若若“添添加加表表或或视视图图”对对话话框框未未打打开开,则则单单击击“视图设计器视图设计器”工具栏中的工具栏中的“添加表添加表”按钮。按钮。在在“添添加加表表或或视视图图”对对话话框框中中,先先选选择择“表表”或或“视视图图”选选项项,再再选选择择需需要要添添加

352、加的的表表或或视视图图,单单击击“添加添加”按钮。按钮。创建或修改表之间的联接条件。创建或修改表之间的联接条件。单击单击“添加表或视图添加表或视图”对话框的对话框的“关闭关闭”按钮。按钮。10.1.2命令方式创建本地视图命令方式创建本地视图在在数数据据库库打打开开的的情情况况下下,直直接接使使用用带带AS子子句句的的CREATESQLVIEW命命令令就就可可定定义义本本地地视视图图,定义的视图自动加入到打开的数据库中。定义的视图自动加入到打开的数据库中。例例10-1以命令方式建立单表视图以命令方式建立单表视图OPENDATABASEteachersjCREATESQLVIEWteacher1A

353、S;SELECT教师代码教师代码,姓名姓名FROMteacher10.1.2命令方式创建本地视图命令方式创建本地视图例例10-2以命令方式建立多表视图以命令方式建立多表视图OPENDATABASEteachersjCREATESQLVIEWtea_skAS;SELECTteacher.姓名姓名,sk.课程名称课程名称FROMteacher,sk;WHEREteahcer.教师代码教师代码=sk.教师代码教师代码例例10-3将将一一条条SQLSELECT语语句句存存入入temp_sql变变量量,用用它它创建一个新视图。创建一个新视图。temp_sql=SELECT*FROMskWHERE总学时总

354、学时60CREATESQLVIEWtemp_viewAS&temp_sql视视 图图 建建 立立 后后 , 可可 用用 DBGETPROP( ) 函函 数数 查查 看看 其其 属属 性性 , 用用 DBSETPROP()()函数设置其属性。函数设置其属性。10.2创建远程视图创建远程视图使使用用远远程程视视图图,无无须须将将所所有有记记录录下下载载到到本本地地计计算算机机上上即即可可提提取取远远程程ODBC(OpenDataBaseConnectivity)服服务务器器上上的的数数据据子子集集,且且可可以以在在本本地地机机上上操操作作这这些些选选定的记录,然后把更改或添加的值返回远程数据源中。

355、定的记录,然后把更改或添加的值返回远程数据源中。ODBC是是Microsoft公公司司的的数数据据库库接接口口标标准准,应应用用程程序序可可以以通通过过该该接接口口访访问问支支持持此此接接口口标标准准的的数数据据库库。目目前,大多数数据库系统都提供对前,大多数数据库系统都提供对ODBC的支持。的支持。10.2创建远程视图创建远程视图远程视图有两种连接远程数据源的方法。远程视图有两种连接远程数据源的方法。直直接接访访问问在在机机器器上上注注册册的的ODBC数数据据源源。ODBC数数据据源源指指采采用用ODBC标标准准访访问问的的数数据据库库和和访访问问该该数数据据库库所所须须的的信信息息。例例如

356、如,一一个个SQLServer数数据据库库由由SQLServer数数据据库库、数数据据库库所所在在的的服服务务器器以以及及用用以以访访问问服服务务器器的的网网络络组组成成。在在操操作作系系统统中中,控控制面板中的制面板中的ODBC管理器可以用来创建管理器可以用来创建ODBC数据源。数据源。使使用用命命名名连连接接。命命名名连连接接指指存存储储在在数数据据库库中中的的一一个个数数据据源源的的定定义义,可可供供创创建建远远程程视视图图时时按按其其名名称称引引用用。当当激激活活一一个个远远程视图时,此视图的连接成为通向远程数据源的管道。程视图时,此视图的连接成为通向远程数据源的管道。10.2.1创建

357、命名连接创建命名连接如如果果想想为为服服务务器器创创建建定定制制的的连连接接即即命命名名连连接接,可可以以使使用用连连接接设设计计器器,创创建建的的连连接接将将作作为为数数据据库的一部分保存起来。库的一部分保存起来。打开连接设计器打开连接设计器在在“项项目目管管理理器器”中中,从从“数数据据库库”列列表表中中选选择择“连连接接”,然然后后单单击击“新新建建”按按钮钮,如图如图10-14所示。所示。10.2.1创建命名连接创建命名连接图图10-14连接设计器连接设计器10.2.1创建命名连接创建命名连接打打开开数数据据库库,然然后后在在“命命令令”窗窗口口中中输输入入CREATECONNECTI

358、ON连接名连接名命令。命令。设置连接选项设置连接选项指定数据源。指定数据源。指定显示指定显示ODBC登录提示的时刻。登录提示的时刻。设置数据处理方式。设置数据处理方式。设置超时间隔。设置超时间隔。单单击击“验验证证连连接接”按按钮钮,可可对对刚刚输输入入了了内内容容的的连连接接进进行行检查。检查。用用“文件文件”菜单的菜单的“保存保存“选项,对此连接命名保存选项,对此连接命名保存。10.2.2创建远程视图创建远程视图在在建建立立有有效效的的数数据据源源或或命命名名连连接接后后,就就可可使使用用项项目目管管理理器器或或以以编编程程方方式式来来创创建建远远程程视视图图。远远程程视视图图与与本本地地

359、视视图图类类似似,只只是是在在定定义义它它时时需需要要加加入入连连接接名名称称或或数数据据源源名名称称。远远程程视视图图的的SQL语句使用相应服务器上的语法语句使用相应服务器上的语法,而非,而非VisualFoxProSQL语法。语法。远程视图设计器远程视图设计器使用远程视图设计器创建远程视图的步骤有以下使用远程视图设计器创建远程视图的步骤有以下3步。步。在在“项项目目管管理理器器”中中选选择择一一个个数数据据库库,选选择择“远远程程视视图图”命命令令,然然后后单单击击“新新建建”按按钮钮;或或者者在在“命命令令”窗窗口口中中键键入入CREATESQLVIEWREMOTE命命令令,则则打打开开

360、“选选择择连连接接或或数数据源据源”对话框,如图对话框,如图10-15所示。所示。10.2.2创建远程视图创建远程视图图图10-15“选择连接或数据源选择连接或数据源”对话框对话框在在“选选择择连连接接或或数数据据源源”对对话话框框中中,选选择择可可用用的的数数据据源源或或命命名名连连接接并并且单击且单击“确定确定”按钮。按钮。如果需要的话,提示输入用户标识和口令。如果需要的话,提示输入用户标识和口令。一一旦旦连连接接成成功功,将将弹弹出出选选择择远远程程数数据据库库中中表表的的对对话话框框。选选择择表表后后,将将显显示示视视图设计器。使用视图设计器创建远程视图与创建本地视图的其他步骤相同。图

361、设计器。使用视图设计器创建远程视图与创建本地视图的其他步骤相同。10.2.2创建远程视图创建远程视图编程方式创建视图编程方式创建视图创建远程视图的命令格式如下:创建远程视图的命令格式如下:CREATESQLVIEWREMOTECONNECTIONSHARECONNECTIONAS10.3用视图更新数据用视图更新数据本本地地或或远远程程视视图图都都可可用用于于更更新新数数据据。在在“视视图图设设计计器器”中中,选选择择“更更新新条条件件”选选项项卡卡,如如图图10-16所所示示,设设置置可可更更新新的的表表和和字字段段,也也可可控制数据的修改(更新、删除、插入)方式。控制数据的修改(更新、删除、

362、插入)方式。10.3用视图更新数据用视图更新数据图图10-16“更新条件更新条件”选项卡选项卡10.3.1指定更新字段指定更新字段指定可更新表指定可更新表指定关键字段指定关键字段指定可更新字段。指定可更新字段。设置设置“发送发送SQL更新更新”选项选项10.3.2控制更新冲突控制更新冲突若若在在一一个个多多用用户户环环境境中中工工作作,服服务务器器上上的的数数据据可可被被多多个个用用户户同同时时访访问问。为为使使VisualFoxPro能能够够检检查查视视图图操操作作的的数数据据在在更更新新之前是否被别的用户修改过,必须设置合理的冲突控制方式。之前是否被别的用户修改过,必须设置合理的冲突控制方

363、式。“关关键键字字段段”选选项项:当当表表中中的的关关键键字字段段被被改改变变时时,使使更更新新失败。失败。“关关键键字字和和可可更更新新字字段段”选选项项:当当源源表表中中任任何何标标记记为为可可更更新的字段被改变时,使更新失败。新的字段被改变时,使更新失败。“关关键键字字和和已已修修改改字字段段”选选项项:当当在在本本地地改改变变的的任任一一字字段段在源表中已被改变时,使更新失改。在源表中已被改变时,使更新失改。“关关键键字字和和时时间间戳戳”选选项项:当当远远程程表表上上记记录录的的时时间间戳戳在在首首次检索之后被改变时,使更新失败。次检索之后被改变时,使更新失败。10.3.3控制更新方

364、法控制更新方法当当记记录录中中的的关关键键字字更更新新时时,利利用用“使使用用更更新新”区区中中的的选选项项决决定定发发送送到到服服务务器器或或源源表表中中的的更更新新语语句句使使用用什什么么SQL语句。语句。“SQLDELETE然然后后INSERT”选选项项:指指定定先先删删除除记记录录,然然后后使使用用在在视视图图中中输输入入的的新新值值取取代代原原值值(先先发送发送SQLDELETE语句然后发语句然后发INSERT语句)。语句)。“SQLUPDTAE”选选项项:指指定定使使用用服服务务器器支支持持的的SQLUPDATE语句改变服务器上的记录。语句改变服务器上的记录。10.4定制和使用视图

365、定制和使用视图10.4.1控制字段显示和数据输入控制字段显示和数据输入因因为为视视图图是是数数据据库库的的一一部部分分,所所以以可可像像数数据据库库表表中中设设置置字字段段属属性性一一样样,设设置置视视图图中中字字段段的的属属性性,例例如如可可以以分分配配标标题题、输输入入注注释释、设设置置控控制制数数据据输输入入的的有有效效性性规则等。规则等。在在“视视图图设设计计器器”的的“字字段段”选选项项卡卡中中,从从“选选定定字字段段”列列表表中中选选择择一一个个字字段段,并并单单击击“属属性性”按按钮钮,则打开则打开“视图字段属性视图字段属性”对话框,如图对话框,如图10-17所示。所示。10.4

366、.1控制字段显示和数据输入控制字段显示和数据输入图图10-17“视图字段属性视图字段属性”对话框对话框10.4.1控制字段显示和数据输入控制字段显示和数据输入在在“字字段段有有效效性性”框框、“显显示示”框框和和“匹匹配配字字段段到到类类”框框中中,所所设设置置的的内内容容与与方方法法同同数数据据库库表表中中字字段段的定义相同,在此不再重复。的定义相同,在此不再重复。在在“数数据据匹匹配配”框框中中,设设置置远远程程视视图图中中字字段段的的数数据据类类型型与与源源表表中中数数据据类类型型的的对对应应关关系系。数数据据类类型型指指定定此此字字段段可可以以包包含含的的数数据据类类型型;宽宽度度指指

367、定定此此字字段段可可包包含含的的字字符符个个数数;小小数数位位数数(对对于于数数值值型型数数据据类类型型)指指定定此字段可以包括的小数点右侧的小数位数。此字段可以包括的小数点右侧的小数位数。在在“注释注释”框中,设置远程视图中字段注释。框中,设置远程视图中字段注释。10.4.2在视图中添加表达式在视图中添加表达式在在视视图图中中除除可可以以用用函函数数和和表表达达式式作作为为选选定定字字段段外外,也也可可以以在在筛筛选选条条件件中中使使用用表表达达式式。若若要要在在视视图图的的筛筛选选条条件件中中添添加加表表达达式式,先先在在“筛筛选选”选选项项卡卡的的“字字段段名名”框框中中选选择择“表表达

368、达式式”,如如图图10-18所所示示,再再在在弹弹出出的的“表表达达式式生生成成器器”对对话话框框中中创创建建表表达达式式,然然后后输输入入筛选条件中的其他项。筛选条件中的其他项。当当视视图图基基于于远远程程数数据据源源时时,在在“表表达达式式生生成成器器”中中选选用用的的函函数数必必须须是是远远程程服服务务器器所所支支持持的的函函数数。VisualFoxPro不不对对构构造造的的表表达达式式做做语语法法分分析析,而而是是将将它它们们直直接发送到远程服务器上。接发送到远程服务器上。10.4.2在视图中添加表达式在视图中添加表达式图图10-18筛选条件中的表达式筛选条件中的表达式10.4.3创建

369、参数化视图创建参数化视图参参数数化化视视图图就就是是在在视视图图的的SQLSELECT语语句句的的筛筛选选条条件件中中加加入入参参数数,参参数数值值可可在在运运行行时时传传递递,也也可可通通过过编编程程方方式式传传递递。使使用用参参数数化化视视图图可可以以避避免免为为每每取取一一部部分分记记录录都都单单独独创创建建一一个个视视图图的的情情况况,也也可可用用来来限限定定视视图图的的作作用用范范围围。参参数数化化视视图图仅仅下下载载那那些些符符合合WHERE子子句句中中筛筛选选条条件件的的记记录录,其其中中的的筛筛选选条条件件是是根根据所提供的参数值建立的。据所提供的参数值建立的。若若要要创创建建

370、参参数数化化视视图图,首首先先打打开开“视视图图设设计计器器”,然然后后在在“筛筛选选”选选项项卡卡中中添添加加新新的的筛筛选选条条件件或或选选择择已已有有的的筛筛选选条条件件,在在“实实例例”框框中中输输入入一一个个以以“?”开开头头的的变变量量名名作作为为参参数数。图图10-19所所示示创创建建了了一一个个参参数数化化视视图图,这这个个视视图图将将对对教教师师记记录录进进行行筛筛选选,只只有有教教师师代代码码与与参参数数值值(teaID)相相匹匹配配的的记记录录才才能能在在视视图图中出现。中出现。10.4.3创建参数化视图创建参数化视图图图10-19参数化视图参数化视图10.4.4使用视图

371、使用视图视视图图建建立立后后,就就可可用用它它显显示示和和更更新新数数据据。视视图图的的使使用用类类似似于于数数据据库库表表,可可以以使使用用USE视视图图名名命命令令打打开开一一个个视视图图,使使用用USE命命令令关关闭闭视视图图。在在Browse窗窗口口中,可以显示视图记录和修改记录。中,可以显示视图记录和修改记录。下面的代码在浏览窗口中显示下面的代码在浏览窗口中显示tea_view视图。视图。OPENDATABASEteachersjUSEtea_view &打开视图打开视图BROWSE10.4.4使用视图使用视图一一个个视视图图在在使使用用时时,将将作作为为临临时时表表在在自自己己的的

372、工工作作区区中中打打开开。如如果果此此视视图图基基于于本本地地表表,则则在在VisualFoxPro的的另另一一个个工工作作区区中中同同时时打打开开基基表表。视视图图的的基基表表是是指指由由SELECT-SQL语语句句访访问问的的表表。在在前前面面的的示示例例中中,打开视图的同时打开视图的同时,teacher表也自动打开。表也自动打开。视视图图中中的的数数据据是是在在打打开开时时从从基基表表中中提提取取的的。打打开开后后,基基表表中中数数据据的的变变化化不不能能立立即即反反映映到到视视图图中中,但但可可使使用用REQUERY(nWorkArea|cTableAlias)函函数数重重新新提取数据

373、,该函数的参数为视图名或所在的工作区号。提取数据,该函数的参数为视图名或所在的工作区号。10.4.5视图的优点视图的优点1.视图提高了数据库应用的灵活性视图提高了数据库应用的灵活性2.视图减少了用户对数据库物理结构的依赖视图减少了用户对数据库物理结构的依赖3.视图可支持网络应用视图可支持网络应用10.5创建和运行查询创建和运行查询除除了了直直接接使使用用SELECT语语句句检检索索数数据据外外,还还可可创创建建查查询询实实现现数数据据检检索索。一一个个查查询询就就是是一一个个包含包含SELECT语句的文件。语句的文件。10.5.1创建查询创建查询创创建建一一个个新新的的查查询询时时,先先要要打

374、打开开相相应应的的数数据据库库,然然后后使使用用“查查询询向向导导”或或“查查询询设设计计器器”创创建建查查询询。“查查询询向向导导”的的使使用用比比较较简简单单,在在此此不不做做介介绍绍。下下面面介介绍绍“查查询询设设计计器器”的的使使用用方方法。法。“查询设计器查询设计器”建立查询的步骤如下:建立查询的步骤如下:启动启动“查询设计器查询设计器”,添加查询所需要的表或视图。,添加查询所需要的表或视图。选择想要出现在查询结果中的字段。选择想要出现在查询结果中的字段。设置筛选条件,筛选所需要的记录。设置筛选条件,筛选所需要的记录。设置排序或分组选项,组织查询结果。设置排序或分组选项,组织查询结果

375、。选择查询结果的输出类型:表、报表、浏览等。选择查询结果的输出类型:表、报表、浏览等。保存查询,从而生成一个查询文件(扩展名为保存查询,从而生成一个查询文件(扩展名为.qpr)。)。10.5.1创建查询创建查询启动启动“查询设计器查询设计器”有以下三种方法。有以下三种方法。在在“项项目目管管理理器器”的的“数数据据”选选项项卡卡中中选选择择“查查询询”菜菜单单命命令令,并并且且单单击击“新新建建”按按钮钮,然然后后单单击击“新建查询新建查询”按钮。按钮。从从“文文件件”菜菜单单中中选选择择“新新建建”菜菜单单命命令令,在在“新新建建”对对话话框框中中选选“查查询询”单单选选按按钮钮,然然后后单

376、单击击“新建文件新建文件”按钮。按钮。在在“命命令令”窗窗口口中中输输入入CREATEQUERY查查询名询名命令。命令。10.5.1创建查询创建查询图图10-22“查询设计器查询设计器”窗口窗口10.5.2运行查询运行查询在在完完成成了了查查询询设设计计后后,可可以以指指定定查查询询结结果果输输出出目目的的地地,并并可可以以用用“运运行行”按按钮钮启启动动该该查查询询的的执执行行,Visual FoxPro执执 行行 “查查 询询 设设 计计 器器 ”产产 生生 的的 SQLSELECT语语句句,并并把把输输出出结结果果送送到到指指定定的的目目的的地地。若若尚未选定输出目的地,结果将显示在尚未

377、选定输出目的地,结果将显示在“浏览浏览”窗口中。窗口中。运行查询的方法运行查询的方法在在“项项目目管管理理器器”窗窗口口中中选选定定查查询询的的名名称称,然然后单击后单击“运行运行”按钮。按钮。在在“命令命令”窗口中输入命令窗口中输入命令:DO查询名查询名。在在“查查询询设设计计器器”打打开开时时,单单击击工工具具栏栏中中的的“运行运行”按钮。按钮。10.5.2运行查询运行查询指定查询去向指定查询去向图图10-23“查询去向查询去向”对话框对话框10.5.2运行查询运行查询表表10-2查询去向及其用途查询去向及其用途查询去向查询去向用用途途浏览浏览在浏览窗口中显示查询结果在浏览窗口中显示查询结

378、果临时表临时表查询结果储存在一个命名的临时只读表中查询结果储存在一个命名的临时只读表中表表查询结果保存为一个命名的表查询结果保存为一个命名的表屏幕屏幕在在VisualFoxPro主窗口或当前活动输出窗口中主窗口或当前活动输出窗口中显示查询结果显示查询结果图形图形查询结果用于查询结果用于MicrosoftGraph报表报表输出送到一个报表文件输出送到一个报表文件(.frx)标签标签将输出送到一个标签文件将输出送到一个标签文件(.lbx)习题习题1.选择题选择题关于视图的正确说法是关于视图的正确说法是。A.视图是一个虚拟的表视图是一个虚拟的表B.视图是一个不依赖数据库的表视图是一个不依赖数据库的表

379、C.视图是一个真实的表视图是一个真实的表D.视图是一个能修改的表视图是一个能修改的表关于用户创建视图,正确的说法是关于用户创建视图,正确的说法是。A.只能创建本地视图只能创建本地视图B.只能创建远程视图只能创建远程视图C.只能创建单表视图只能创建单表视图D.本地视图和远程视图都能创建本地视图和远程视图都能创建关于查询的正确叙述是关于查询的正确叙述是。A.只能根据自由表建立查询只能根据自由表建立查询B.不能根据自由表建立查询不能根据自由表建立查询C.只能根据数据库建立查询只能根据数据库建立查询D.可以根据数据库和自由表建立查询可以根据数据库和自由表建立查询习题习题查询设计器中包括的选项卡有查询设

380、计器中包括的选项卡有。A.筛选、更新条件、排序依据筛选、更新条件、排序依据B.字段、联接、分组依据字段、联接、分组依据C.联接、条件、分组依据联接、条件、分组依据D.更新条件、字段、分组依据更新条件、字段、分组依据如如果果要要在在屏屏幕幕上上直直接接看看到到查查询询结结果果,“查查询询去去向向”应该选择应该选择。A.屏幕屏幕B.浏览浏览C.临时表或屏幕临时表或屏幕D.浏览或屏幕浏览或屏幕习题习题2.填空题填空题视视图图设设计计器器比比查查询询设设计计器器多多出出的的选选项项卡卡是是。视图不能单独存在,它必须依赖于视图不能单独存在,它必须依赖于。可用视图可用视图功能修改源数据表中的数据。功能修改

381、源数据表中的数据。视图可分为视图可分为和和两种。两种。默认查询的默认查询的输出方式是输出方式是。参考答案参考答案1.选择题选择题A D D B D2.填空题填空题UpdateCriteria数据库数据库更新更新本地视图、远程视图本地视图、远程视图Browse第第11章章面向对象的程序设计面向对象的程序设计学习要点学习要点1、对象、属性事件及方法程序对象、属性事件及方法程序2、对象引用规则对象引用规则3、类与对象、基类、子类、用户定义类、类与对象、基类、子类、用户定义类、容器类和控件类容器类和控件类4、类的定义和编辑类的定义和编辑第第11章章面向对象的程序设计面向对象的程序设计11.1面向对象的

382、基本概念面向对象的基本概念11.2对象引用对象引用11.3类的基本概念类的基本概念11.4定义类定义类习题及参考答案习题及参考答案第第11章章面向对象的程序设计面向对象的程序设计VisualFoxPro6.0在在支支持持传传统统的的结结构构化化程程序序设设计计方方法法的的基基础础上上 , 全全 面面 引引 入入 面面 向向 对对 象象 的的 程程 序序 设设 计计 ( Object-OrientedProgramming,OOP)的的方方法法。用用户户通通过过面面向向对对象象的的方方法法,可可以以设设计计出出更更加加美美观观的的应应用用程程序序界界面面,开开发发出出真真正正的的关关系系数数据据

383、库库应应用用程程序序。面面向向对对象象应应用用程程序序设设计计根根本本地地改改变变了了早早期期FoxPro应应用用程程序序面面向向过过程程的的开开发发方方式式,将将重重点点放放在在了了对对象象之之间间的的联联系系上上,而而不不是是具具体体实实现现的的细细节节。面面向向对对象象程程序序设设计计通通过过代代码码重重用用和和继继承承的的方方式式,使使用用户户在在设设计计程程序序时时不不再再做做大大量量的的重重复复劳劳动动,且且将将对对象象的的细细节节隐隐藏藏起起来来,让让用用户户将将注注意意力力集集中中在在对对象象与与系系统统其其它它部分的联系上,这是结构化程序设计方法所不能做到的。部分的联系上,这

384、是结构化程序设计方法所不能做到的。11.1面向对象的基本概念面向对象的基本概念在在面面向向对对象象的的程程序序设设计计中中,对对象象是是构构成成程程序序的的基基本本单单位位和和运运行行实实体体。本本节节将将介介绍绍对对象象和和它它的的属属性性、事事件件、方方法法程程序序等等概概念念和一些基本操作。和一些基本操作。11.1.1对象对象对对象象(Object)就就是是一一个个实实体体,任任何何对对象象都都具具有有自自己己的的特特征征和和行行为为。在在面面向向对对象象程程序序设设计计中中,所所有有事事物物都都可可以以被被抽抽象象为为对对象象,例例如如表表单单上上的的文文本本框框是是对对象象,表表单单

385、本本身身也也是是一一个个对对象象。在在VisualFoxPro6.0中,又将对象分为控件和容器两种。中,又将对象分为控件和容器两种。控控件件:是是表表单单上上显显示示数数据据和和执执行行操操作作的的基基本本对对象象。在在VisualFoxPro6.0中,控件有标签、文本框、命令按钮等。中,控件有标签、文本框、命令按钮等。 容容器器:是是一一种种可可以以容容纳纳其其它它对对象象的的对对象象。在在VisualFoxPro6.0中中包包含含了了很很多多容容器器对对象象,如如表表单单集集、表表单单、页页框框、命命令按钮组等。令按钮组等。11.1.2属性属性对对象象的的属属性性即即对对象象的的特特征征、

386、性性质质,例例如如当当描描述述一一个个命命令令按按钮钮时时,可可以以用用它它所所在在的的位位置置、尺尺寸寸大大小小、颜颜色色及及它它上上面面显显示示的的文文字字的的字字体体、字字号号等等特特征征来来形形容容,这这些特征都可用属性来表示。些特征都可用属性来表示。常用的对象属性如表常用的对象属性如表11-1。不不同同的的对对象象所所具具有有的的属属性性是是不不相相同同的的,这这也也可可从从属属性的定义中体现出来。但是一些对象会有一些共性。性的定义中体现出来。但是一些对象会有一些共性。11.1.2属性属性表表11-1常用属性介绍常用属性介绍属属性性说说明明应应用用于于Caption设置对象的标题设置

387、对象的标题表单、标签、命令按钮等表单、标签、命令按钮等Name设置对象的名字设置对象的名字任何对象任何对象Value设置控件当前状态设置控件当前状态文本框、列表框等文本框、列表框等ForeColor设置对象中的前景色设置对象中的前景色表单、标签、文本框等表单、标签、文本框等BackColor设置对象内部的背景色设置对象内部的背景色表单、标签、文本框等表单、标签、文本框等BackStyle设置对象背景是否透明设置对象背景是否透明表单、文本框、图像等表单、文本框、图像等AlwaysOnTop是否处于其他窗口之上是否处于其他窗口之上表单表单11.1.2属性属性AutoCenter是否在主窗口内自动居

388、中是否在主窗口内自动居中表单表单ScaleMode用于设置坐标单位用于设置坐标单位表单表单Closable标题栏中关闭按钮是否有效标题栏中关闭按钮是否有效表单表单Controlbox是否取消标题栏所有按钮是否取消标题栏所有按钮表单、工具栏表单、工具栏MaxButton是否有最大化按钮是否有最大化按钮表单表单MinButton是否有最小化按钮是否有最小化按钮表单表单Movable运行时表单能否移动运行时表单能否移动 表单表单WindowState设置运行时是最大化或最小化设置运行时是最大化或最小化 表单表单AutoCloseTables表单释放时是否关闭表或视图,表单释放时是否关闭表或视图,默认

389、为默认为.T.数据环境数据环境AutoOpenTables表单加载时是否打开表或视图,表单加载时是否打开表或视图,默认为默认为.T.数据环境数据环境11.1.3事件事件事事件件(Event)是是指指可可能能会会发发生生在在对对象象上上的的事事情情,也也即即对对对对象象所所做做的的操操作作(或或者者系系统统对对某某个个对对象象的的操操作作),如如按按钮钮被被单单击击,对对象象被被拖拖动动、被被改改变变大大小小、被被双双击击等等。一一个个对对象象可可以以有有多多个个事事件件,但但是是每每个个事事件件都都是是由由系系统统预预先先规规定定的的。一一个个事事件件对对应应于于一一个程序,即事件过程。个程序

390、,即事件过程。1.事件驱动工作方式事件驱动工作方式事事件件一一旦旦被被触触发发(即即操操作作发发生生),系系统统马马上上就就去去执执行行与与该该事事件件对对应应的的过过程程。等等事事件件过过程程执执行行完完毕毕后后,系系统统又又处处于于等等待待某某事事件件发发生生的的状状态态,这这种种程程序序执执行行方方式式明明显显地地不不同同于于面面向向过过程程的的程程序序设设计计,即即应应用用程程序序的的事事件件驱驱动动工工作作方方式式,表表11-2列列出出了了部部分分常见的事件。常见的事件。11.1.3事件事件表表11-2VisualFoxPro6.0系统常见事件系统常见事件事事件件触发时机触发时机事事

391、件件触发时机触发时机Load创建对象前创建对象前MouseUp 释放鼠标键时释放鼠标键时Init创建对象时创建对象时MouseDown按下鼠标键时按下鼠标键时Activate对象激活时对象激活时KeyPress按下并释放某键盘键时按下并释放某键盘键时GotFocus对象获得焦点时对象获得焦点时Valid对象失去焦点前对象失去焦点前Click单击鼠标左键时单击鼠标左键时LostFocus对象失去焦点时对象失去焦点时DblClick双击鼠标左键时双击鼠标左键时Unload释放对象时释放对象时Destroy释放一个对象时释放一个对象时InteractiveChange改变控件的值时改变控件的值时Re

392、size调整对象大小时调整对象大小时Scrolled 在表格中移动滚动条时在表格中移动滚动条时11.1.3事件事件从从表表11-2可可知知,事事件件包包括括事事件件过过程程和和事事件件触触发发方方式式两两个个方方面面。事事件件过过程程的的代代码码应应该该事事先先编编写好。事件触发方式可分为写好。事件触发方式可分为3种:种:用户触发:如单击命令按钮事件。用户触发:如单击命令按钮事件。系系统统触触发发:如如计计时时器器事事件件,将将会会自自动动按按设设定定的时间间隔发生。的时间间隔发生。代码触发:如用代码来调用事件过程。代码触发:如用代码来调用事件过程。11.1.3事件事件为事件编写代码为事件编写

393、代码编编写写代代码码先先要要打打开开代代码码编编辑辑窗窗口口,打打开开某某对对象象代代码码编辑窗口的方法有编辑窗口的方法有3种。种。双击该对象。双击该对象。选择对象的快捷菜单中的选择对象的快捷菜单中的“代码代码”选项。选项。选择显示菜单的选择显示菜单的“代码代码”选项。选项。代代码码编编辑辑窗窗口口中中包包含含两两个个组组合合框框和和一一个个列列表表框框。对对象象组组合合框框用用来来重重新新确确定定对对象象,过过程程组组合合框框用用来来确确定定所要的事件(或方法程序),代码则在列表框中输入。所要的事件(或方法程序),代码则在列表框中输入。11.1.4方法程序方法程序方方法法程程序序又又简简称称

394、为为方方法法,是是指指对对象象所所固固有有完完成成某某种种任务的功能。任务的功能。Cls方法方法功能:清除表单中的图形和文本。功能:清除表单中的图形和文本。语法:语法:Object.Cls说说明明:Cls清清除除运运行行期期间间图图形形和和打打印印语语句句生生成成的的文文本本和和图图形形。Cls方方法法不不影影响响设设计计期期间间放放置置在在表表单单上上的的背背景景位位图图。Cls方方法法将将CurrentX和和CurrentY属属性性重重新新设设置为置为0。11.1.4方法程序方法程序Refresh方法方法功功能能:重重画画表表单单或或控控件件,并并刷刷新新所所有有值值,或或者者刷刷新一个项

395、目的显示。新一个项目的显示。语法:语法:Form.Object.Refresh说说明明:一一般般地地,画画表表单单或或控控件件是是在在没没有有事事件件发发生生时时自自动动处处理理的的。需需要要立立刻刻更更新新表表单单或或控控件件时时可可使使用用Refresh方方法法。若若要要在在加加载载另另一一个个表表单单的的同同时时显显示示某某个个表单,或更新控件的内容时,表单,或更新控件的内容时,Refresh方法有效。方法有效。11.1.4方法程序方法程序SetFocus方法方法功能:为一个控件指定焦点。功能:为一个控件指定焦点。语法语法:Control.SetFocus说说明明:如如果果控控件件的的E

396、nabled或或Visible属属性性设设置置为为.F.,或或者者控控件件的的When事事件件返返回回.F.,则则不不能能给给一一个个控控件件指指定定焦焦点点;如如果果Enabled或或Visible属属性性已已设设置置为为.F.,则则控控件件在在使使用用SetFocus方方法法接接受受焦焦点点之之前前,必必须须首首先先把把它它们设置为们设置为.T.。11.1.4方法程序方法程序Release方法方法功能:从内存中释放表单集或表单。功能:从内存中释放表单集或表单。语法:语法:Object.Release说说明明:当当用用DOFORM命命令令创创建建表表单单集集或或表表单单,并并且且不不存存在在

397、可可引引用用该该表表单单集集或或表表单单的的变变量量时时,Release方方法法很很有有效效。可可以以使使用用Screen对对象象的的Forms集集合合找找到到表表单单集集或或表表单单,并并调调用用其其Release方方法法。可可以以使使用用Screen对对象象的的表表单单集集合合来来查查找找表表单单或或表表单单集集,并并且且调调用用Release方法。应用于表单、表单集、方法。应用于表单、表单集、_SCREEN。11.2对象引用对象引用在在面面向向对对象象的的程程序序设设计计中中要要常常常常引引用用对对象象,或或引引用用对对象象的的属属性性、事事件件与与调调用用方方法法程程序序,本本节节将将

398、介介绍绍对对象象引引用用的的格格式式,并并通通过几个例子来说明。过几个例子来说明。11.2.1对象引用规则对象引用规则在在程程序序设设计计中中,引引用用对对象象时时要要遵遵循循一一定定的的规规则则,主主要要表表现现在在以下以下4个方面。个方面。1.在程序设计中一般用以下关键字开头在程序设计中一般用以下关键字开头ThisFormSet&表示当前表单集表示当前表单集ThisForm&表示当前表单表示当前表单This&表示当前对象表示当前对象11.2.1对象引用规则对象引用规则2.引用格式引用格式一一般般在在引引用用关关键键字字后后跟跟一一个个点点号号,表表示示从从属属关关系系,再再写写出出被被引引

399、用用对对象象或或者者对对象象的的属属性性、事事件或方法程序。例如:件或方法程序。例如:This.Caption=“教师情况一览表教师情况一览表”&为本表单标题属性赋值为本表单标题属性赋值ThisForm.Refresh&调用本表单调用本表单Refresh方法程序方法程序11.2.1对象引用规则对象引用规则3.允许多级引用允许多级引用在在应应用用程程序序中中,多多个个对对象象之之间间有有多多级级的的从从属属关关系系,允允许许多多级级引引用用,但但要要逐逐级级引引用用。下下面面是是几种常用的引用格式。几种常用的引用格式。ThisFormSet.PropertyName | Event | Meth

400、od |ObjectNameThisForm.PropertyName|Event|Method|ObjectName11.2.1对象引用规则对象引用规则This.PropertyName|Event|Method|ObjectNameObjectName.PropertyName|Event|Method其其中中PropertyName表表示示属属性性名名,Event表表示示事事件件,Method表表示示方方法法程程序序,ObjectName表表示示对象名。对象名。11.2.1对象引用规则对象引用规则4.父调用父调用父调用即控件引用包含它的容器控件。父调用即控件引用包含它的容器控件。格式为格

401、式为:Control.Parent其其中中Control表表示示控控件件,Parent表表示示包包含含该该控件的容器。控件的容器。11.2.2编程方式设置属性值编程方式设置属性值属性除可在属性窗口设置外,也可通过编程方式来设置。属性除可在属性窗口设置外,也可通过编程方式来设置。格式为:格式为:ObjectName.Property=Setting其其中中Setting指指要要设设置置的的属属性性值值,例例如如前前面面引引用用格格式式中中所所举举的的例子。例子。此外,用户还可以使用此外,用户还可以使用RGB函数来返回一种颜色。函数来返回一种颜色。格式格式为:为:RGB(nRedValue,nGr

402、eenValue,nBlueValue)其其中中,参参数数nRedValue,nGreenValue,nBlueValue分分别别指指定红、绿、蓝色成份的深度。大小范围是定红、绿、蓝色成份的深度。大小范围是0255。11.2.3方法程序的调用方法程序的调用方方法法程程序序通通常常在在事事件件代代码码中中调调用用,调调用用时时必必须须遵遵循循对对象象引引用用规规则则。例例如如ThisForm.Release,表表示示引引用用本本表表单单的的Release方方法法,从从内内存存释释放放表单。表单。11.3类的基本概念类的基本概念类类在在程程序序设设计计中中被被经经常常用用到到,本本节节将将介介绍绍

403、有有关关类类的的一些基本概念和表现特征。一些基本概念和表现特征。11.3.1类的概念类的概念类类是是面面向向对对象象程程序序设设计计中中一一个个重重要要的的概概念念,包包括括基基类、子类、用户自定义类、容器类、库类等。类、子类、用户自定义类、容器类、库类等。1.类与对象类与对象在在面面向向对对象象程程序序设设计计中中,类类与与对对象象都都是是应应用用程程序序的的组装模块,它和对象既有区别又存在联系。组装模块,它和对象既有区别又存在联系。11.3.1类的概念类的概念类类和和对对象象关关系系密密切切,但但并并不不相相同同。类类包包含含了了有有关关对对象象的的特特征征和和行行为为信信息息,它它是是对

404、对象象的的蓝蓝图图和和框框架架。类类是是定定义义了了对对象象特特征征以以及及对对象象外外观观和和行行为为的的模模板板。例例如如在在表表单单控控件件工工具具栏栏中中,每每个个按按钮钮都都代代表表一一个个类类,用用其其中中某某个个按按钮钮在在表表单单上上创建的一个控件就是一个对象。创建的一个控件就是一个对象。11.3.1类的概念类的概念类和对象具有以下关系:类和对象具有以下关系:类类是是对对象象的的定定义义。类类定定义义并并提提供供了了对对象象具具有有的属性、事件和方法程序。的属性、事件和方法程序。对象通过类而产生。对象通过类而产生。对象是类的一个实例。对象是类的一个实例。11.3.1类的概念类的

405、概念2.基类基类基基类类是是VisualFoxPro6.0预预先先定定义义的的类类,在在“新新建建类类”对对话话框框的的“派派生生于于”下下拉拉列列表表框框中中,包包含含了了全全部部基基类类,如如图图11-1所所示示。如如“表表单单”、“组组合合框框”等等。初初始始的的表表单单控控件件工工具具栏栏中中包包含含的的类类(如如“文文本本框框”、“命命令令按按钮钮”、“标标签签”等等)也也是是基基类类。基基类类可可作作为为用用户户自自定定义义类类的的基基础础。用用户户可可从从基基类类来来创创建建新新类类,并并增添自己需要的新功能。增添自己需要的新功能。11.3.1类的概念类的概念图图11-1“新建类

406、新建类”对话框对话框11.3.1类的概念类的概念3.子类子类子子类类是是指指以以某某个个类类的的定定义义为为基基础础创创建建的的新新类类。子子类类所所基基于于的的类类称称为为父父类类。例例如如若若要要从从基基类类创创建建出出新新类类时时,那那么么基基类类就就是是父父类,新建类就是子类。类,新建类就是子类。子类将继承父类的全部特征,包括对父类所做的任何修改。子类将继承父类的全部特征,包括对父类所做的任何修改。4.用户定义类用户定义类用用户户可可以以从从基基类类派派生生出出子子类类,即即用用户户定定义义类类;VisualFoxPro6.0还还允允许许从从用用户户定定义义类类派派生生出出子子类类。所

407、所以以说说用用户户自自定定义义类可以是子类,也可以是父类。类可以是子类,也可以是父类。可可以以为为用用户户定定义义类类设设置置属属性性、编编写写代代码码与与方方法法程程序序,也也可可创创建建新新的的属属性性和和方方法法程程序序。用用户户也也可可以以将将自自己己定定义义的的类类添添加加到到表单控件工具栏中。表单控件工具栏中。11.3.1类的概念类的概念5.容器类和控件类容器类和控件类类类也也可可以以分分为为容容器器类类和和控控件件类类两两种种,用用户户可可以以从从基基类类派派生生出出容容器器类类,例例如如从从Form类类可可派派生生出表单类。出表单类。6.类库类库类类库库可可用用来来存存储储以以

408、可可视视方方式式设设计计的的类类,其其文文件件扩扩展展名名为为.vcx。一一个个类类库库通通常常可可容容纳纳多多个个子子类类,这些子类允许由不同的基类派生。这些子类允许由不同的基类派生。11.3.2类的特征类的特征类类作作为为一一个个模模板板,所所有有对对象象的的属属性性、事事件件、方方法法程程序序在在定定义义类类时时被被指指定定。此此外外,类类还还有有如如下下特特征征,这这些些特特征征可可提提高高代代码码的的可重用性和易维护性。可重用性和易维护性。1.封装特征封装特征封封装装特特征征指指包包含含并并隐隐藏藏对对象象的的信信息息,如如内内部部数数据据结结构构、对对象象的的方方法法程程序序和和属

409、属性性代代码码。封封装装隐隐藏藏了了不不必必要要的的复复杂杂性性,隐隐藏藏对对象信息具有以下优点:象信息具有以下优点:有有利利于于对对复复杂杂对对象象的的管管理理,使使用用户户集集中中精精力力来来使使用用对对象象的的特性。特性。有利于程序的安全性,防止代码不慎受到破坏。有利于程序的安全性,防止代码不慎受到破坏。11.3.2类的特征类的特征2.子类特征子类特征子子类类可可以以具具有有其其父父类类的的全全部部功功能能和和特特点点,但但也也可可以以增增加加自自己己的的属属性性和和方方法法,使使它它具具有有与与父父类类不不同同的的特特殊殊性性,使使得得用用户户在在程程序序设设计计时时更更得得心应手,设

410、计出满足实际情况的类。心应手,设计出满足实际情况的类。通通过过设设计计一一个个适适合合应应用用程程序序的的子子类类,并并在在多多处处创创建建它它的的实实例例,就就可可以以使使代代码码得得到到重重复复利利用用,因此定义子类是减少程序代码的一个方法。因此定义子类是减少程序代码的一个方法。11.3.2类的特征类的特征3.继承性特征继承性特征类的继承性可以从下述的几个方面来理解:类的继承性可以从下述的几个方面来理解:对象能自动继承创建它的类的功能。对象能自动继承创建它的类的功能。子类能自动继承父类的功能。子类能自动继承父类的功能。对一个类的改动能自动反映到它的所有子类中。对一个类的改动能自动反映到它的

411、所有子类中。继继承承性性体体现现在在软软件件中中,若若发发现现类类中中有有一一个个小小错错误误,用用户户不不必必逐逐一一修修改改子子类类的的代代码码,只只需需要要在在父父类类中中改改动动一一处处,然然后后这这个个变变动动将将体体现现在在全全部部子子类类中中。所所以以说说继继承承性性不不仅仅节节省省了了用用户户的的时时间间与与精精力力,还还减减少少了了维维护护代代码的难度,它是合理地进行代码维护的重要措施。码的难度,它是合理地进行代码维护的重要措施。11.4定义类定义类VisualFoxPro6.0最最强强大大的的功功能能之之一一就就是是支支持持创创建建在在应应用用程程序序中中可可以以重重复复使

412、使用用的的类类,用用户户定定义义的的类类能能添添加到表单控件工具栏中。用户定义类通常有以下功能。加到表单控件工具栏中。用户定义类通常有以下功能。封封装装通通用用功功能能:为为通通用用功功能能创创建建控控件件类类,可可以以将将它它们们的的实实例例添添加加到到表表单单中中。例例如如移移动动记记录录指指针针的的命命令令按按钮类、表单关闭按钮类、帮助按钮类等。钮类、表单关闭按钮类、帮助按钮类等。赋赋予予应应用用程程序序统统一一的的外外观观和和风风格格:例例如如创创建建了了具具有有独独特特外外观观的的文文本本框框类类,便便可可在在应应用用程程序序所所有有需需要要文文本本框的地方都使用这个类。框的地方都使

413、用这个类。11.4.1创建用户定义类创建用户定义类下面通过一个例子来介绍创建用户定义类的步骤。下面通过一个例子来介绍创建用户定义类的步骤。例例11-1使使用用类类设设计计器器创创建建一一个个用用户户定定义义类类,类类名名为为“记记录录指指针针移移动动类类”,基基类类为为命命令令按按钮钮组组,存存储储到到d:vfp6commandgroup1.vcx类库文件中。类库文件中。选选择择“新新建建”,或或者者在在“项项目目管管理理器器”窗窗口口的的“类类”选选项项卡卡中中单单击击“新新建建”按按钮钮,在在弹弹出出的的“新新建建”对对话话框框中中选选择择“类类”单单选选按按钮钮;然然后后单单击击新新文文

414、件件按按钮,打开钮,打开“新建类新建类”对话框。如图对话框。如图11-2所示。所示。11.4.1创建用户定义类创建用户定义类图图11-2“新建类新建类”对话框对话框11.4.1创建用户定义类创建用户定义类指指定定新新建建类类所所需需的的类类库库、基基类类与与类类名名。其其中中,“类类名名”文文本本框框用用于于指指定定类类名名,新新生生成成的的类类是是基基类类的的子子类类;“派派生生于于”下下拉拉列列表表框框用用于于指指定定新新生生成成类类的的基基类类;“存存储储于于”文文本本框框用用于于指指定定新新类类库库名名或或已已有有类类库库的的名名字字,类类库库名名可可包含路径,若未指出路径表示使用默认

415、路径。包含路径,若未指出路径表示使用默认路径。指指定定各各项项内内容容后后,单单击击“确确认认”按按钮钮,打开如图打开如图11-3所示的所示的“类设计器类设计器”窗口。窗口。11.4.1创建用户定义类创建用户定义类图图11-3类设计器窗口类设计器窗口11.4.1创建用户定义类创建用户定义类通通过过表表单单的的属属性性窗窗口口设设置置其其按按钮钮个个数数及及相相应应标标题题,并并设设置置事事件代码。设计好的命令按钮组类如图件代码。设计好的命令按钮组类如图11-4所示。所示。图图11-4“记录指针移动类记录指针移动类”窗口窗口11.4.2将类添加到工具栏将类添加到工具栏用用户户定定义义类类完完成成

416、后后,即即可可以以将将其其添添加加到到表表单单控控件件工工具具栏栏中中,然然后后通通过过使使用用该该工具栏中的工具栏中的“查看类查看类”按钮来打开定义的类。按钮来打开定义的类。例例11-2将将创创建建的的“记记录录指指针针移移动动类类”添添加加到到表表单单控控件件工工具具栏栏中中,并并通通过过它在表单上创建一个记录指针移动命令按钮组。它在表单上创建一个记录指针移动命令按钮组。选选择择“新新建建”,在在打打开开的的对对话话框框中中选选择择“表表单单”选选项项,然然后后单单击击“新新建建”按钮,新建一个表单。按钮,新建一个表单。图图11-5新建的表单设计窗口新建的表单设计窗口11.4.2将类添加到

417、工具栏将类添加到工具栏在在“表表单单控控件件”工工具具栏栏上上单单击击(查查看看类类)按按钮钮,在在弹弹出出的的菜菜单单中中选选择择“添添加加”,在在打打开开的的“打打开开”对对话话框框中中指指定定要要添添加的可视类库的文件名。加的可视类库的文件名。图图11-6在在“打开打开”对话框中指定类文件名对话框中指定类文件名11.4.2将类添加到工具栏将类添加到工具栏单单击击“打打开开”按按钮钮,则则打打开开的的表表单单控控件件工工具具栏栏如图如图11-7所示。所示。新添加新添加的的Commandgroup类类图图11-7新添加类按钮新添加类按钮11.4.2将类添加到工具栏将类添加到工具栏单单击击新新

418、添添加加类类按按钮钮选选中中它它,在在表表单单中中单单击击添添加加命命令令按按钮钮组,结果如图组,结果如图11-8所示。所示。图图11-8添加命令按钮组的表单添加命令按钮组的表单11.4.3类的编辑类的编辑在在VisualFoxPro6.0中中,用用户户不不仅仅可可以以修修改改用用户户定定义义类,而且可以删除类库中的类,或删除类库。类,而且可以删除类库中的类,或删除类库。1.修改用户定义类修改用户定义类若若要要为为用用户户定定义义类类设设置置属属性性,编编写写事事件件代代码码或或方方法法程程序序代代码码,或或者者是是创创建建新新的的属属性性或或方方法法程程序序,都都必必须须打打开开类类设设计计

419、器器来来实实现现。要要打打开开类类设设计计器器,只只要要打打开开一一个可视类库,并选择其中的一个类即可。个可视类库,并选择其中的一个类即可。例例11-3修修改改例例11-1所所设设计计的的命命令令按按钮钮组组类类,要要求为表单定义的基于该类的每个按钮均有提示功能。求为表单定义的基于该类的每个按钮均有提示功能。11.4.3类的编辑类的编辑选选择择“打打开开”,在在打打开开的的对对话话框框的的文文件件类类型型列列表表框框中中选选择择“可可视视类类库库”(*.vcx),从从中中选选择择存存在在的的Commandgroup1类类库库名名,单单击击“确确认认”按按钮。钮。在打开的在打开的“打开打开”对话

420、框中右边的列表框中选择要修改的类名。对话框中右边的列表框中选择要修改的类名。图图11-9选择要修改的类名选择要修改的类名11.4.3类的编辑类的编辑单单击击“打打开开”按按钮钮,打打开开“类类设设计计器器”窗窗口口,选选择择要要设设置置提提示示内内容容的的按按钮钮,打打开开“属属性性”窗窗口口,将将其其ToolTipText(显显示示提提示示内内容容)属属性性设设置置成成所所要要显显示示的文本内容。的文本内容。用用同同样样方方法法设设置置其其它它按按钮钮的的提提示示文文本本后后,关关闭闭“类设计器类设计器”窗口,选择保存修改即可。窗口,选择保存修改即可。11.4.3类的编辑类的编辑图图11-1

421、0设置按钮的提示文本设置按钮的提示文本11.4.3类的编辑类的编辑2.删除类库中的一个类删除类库中的一个类要删除类库中的类,可以使用下述的两种方法之一。要删除类库中的类,可以使用下述的两种方法之一。使使用用REMOVECLASS命命令令:REMOVECLASSOF在在“项项目目管管理理器器”的的“类类”选选项项卡卡中中选选择择指指定定类类库中的一个类,单击库中的一个类,单击“移去移去”按钮即可。按钮即可。3.删除类库删除类库要要删删除除类类库库只只要要将将指指定定的的.vcx类类库库文文件件删删除除即即可可。或或者者在在“项项目目管管理理器器”的的“类类”选选项项卡卡中中选选中中要要删删除除的

422、类库后,再单击的类库后,再单击“移去移去”按钮即可。按钮即可。习题习题1、选择题、选择题现现实实世世界界中中的的每每一一个个事事件件都都是是一一个个对对象象,任任何何对对象象都都有有自自己己的的属属性性和和方方法法。对属性的描述正确的是对属性的描述正确的是。A.属性是对象所具有的内部特征属性是对象所具有的内部特征B.属性就是对象所具有的固有特征,一般用各种类型的数据来表示属性就是对象所具有的固有特征,一般用各种类型的数据来表示C.属性只是对象所具有的外部特征属性只是对象所具有的外部特征D.属性就是对象所具有的固有方法属性就是对象所具有的固有方法下面关于下面关于“类类”的描述,错误的是的描述,错

423、误的是。A.一个类包含了相似的有关对象的特征和行为方法一个类包含了相似的有关对象的特征和行为方法B.类只是实例对象的抽象类只是实例对象的抽象C.类并不实行任何行为操作,它仅仅表明该怎样做类并不实行任何行为操作,它仅仅表明该怎样做D.类可以按所定义的属性、事件和方法进行实际的行为操作类可以按所定义的属性、事件和方法进行实际的行为操作习题习题VisualFoxPro6.0系系统统预预设设计计了了一一批批各各具具特特征征的的可可重重复复调调用用的的高度程序化的程序段,这些程序段被称为高度程序化的程序段,这些程序段被称为。A.基类基类B.类类C.对象对象D.控件控件面面向向对对象象程程序序设设计计就就

424、是是将将处处理理由由面面向向过过程程转转为为面面向向对对象象,并采用事件驱动其执行过程的程序设计方法。并采用事件驱动其执行过程的程序设计方法。A.文件文件B.对象对象C.程序程序D.数据数据表示当前对象。表示当前对象。A.ThisB.ThisFormC.ThisFormSetD.Parent习题习题2、填空题填空题OOP的中文含义是的中文含义是。对象具有属性、事件和对象具有属性、事件和三大要素。三大要素。类类具具有有、和和的的特特征征,这这就就大大大大加加强强了代码的可重用性。了代码的可重用性。类类是是对对象象的的集集合合,它它包包含含了了相相似似的的有有关关对对象象的的特特征征和行为方法,而

425、和行为方法,而是类的实例。是类的实例。VisualFoxPro6.0的基类可分为的基类可分为和和两大类。两大类。参考答案参考答案1、选择题、选择题B D A D A2、填空题填空题面向对象程序设计面向对象程序设计方法程序方法程序封装性、层次性、继承性封装性、层次性、继承性对象对象容器类、控件类容器类、控件类第第12章章表单表单学习要点学习要点1、表单向导、表单设计器表单向导、表单设计器2、数据环境数据环境3、表单设计表单设计4、表单控件表单控件第第12章章表单表单12.1创建表单创建表单12.2设置数据环境设置数据环境12.3基本表单设计基本表单设计12.4常用表单控件常用表单控件习题及参考答

426、案习题及参考答案第第12章章表单表单表表单单(Form),即即Windows应应用用程程序序中中的的窗窗口口,是是用用户户和和VisualFoxPro应应用用程程序序之之间间进进行行数数据据交交互互操操作作的的窗窗口口。利利用用表表单单,可可以以让让用用户户在在熟熟悉悉的的界界面面下下察察看看数数据据或或将将数数据据输输入入到到数数据据库库。但但表表单单提提供供的的远远不不止止是是一一个个界界面面,它它还还提提供供丰丰富富的的对对象象集集,这这些些对对象象能能够够响响应应用用户户(或或系系统统)事事件件,这这样样就就能能使使用用户户尽尽可可能能方方便便和直观地完成信息管理工作。和直观地完成信息

427、管理工作。表表单单的的创创建建既既可可以以使使用用表表单单向向导导,也也可可以以使使用用表表单单设设计计器器,VisualFoxPro6.0提提供供了了一一个个功功能能强强大大的的表表单设计器,使得设计表单工作变得既快捷又容易。单设计器,使得设计表单工作变得既快捷又容易。12.1创建表单创建表单表单可以属于某一个项目,也可以独立于任何项目表单可以属于某一个项目,也可以独立于任何项目之外单独存在,它是一个特殊的文件,扩展名为之外单独存在,它是一个特殊的文件,扩展名为.scx。在项目管理器中创建的表单隶属于该项目。在项目管理器中创建的表单隶属于该项目。在在VisualFoxPro6.0中中,可可以

428、以用用以以下下任任意意一一种种方方法法创建表单:创建表单:使用表单向导。使用表单向导。使用表单设计器使用表单设计器使用使用CREATEFORM命命12.1.1表单向导表单向导使使用用“表表单单向向导导”创创建建表表单单,可可以以根根据据向向导导提提示示,在在几几种种不不同同的的类类型型选选项项中中进进行行选选择择,从从而而生生成成一一个个用用户户满满意意的的表表单单。“表表单单向向导导”有有两两种种,一一种种是是单单表表表表单单向向导导,生生成成的的表表单单只只能能依依赖赖于于一一个个数数据据库库表表;另另一一种种是是一一对对多多表表单单向向导导,生生成成的的表表单单依依赖赖于于通通过过关关键

429、键字字连接的两个数据库表。下面分别介绍这两种表单向导。连接的两个数据库表。下面分别介绍这两种表单向导。1.使用使用“表单向导表单向导”创建单表表单创建单表表单在项目管理器中选择在项目管理器中选择“文档文档”选项卡。选项卡。在在“文档文档”选项卡中,选择选项卡中,选择“表单表单”选项。选项。12.1.1表单向导表单向导单单击击“新新建建”按按钮钮,系系统统弹弹出出“新新建建表表单单”对对话框。话框。在在“新新建建表表单单”对对话话框框中中单单击击“表表单单向向导导”按按钮,系统弹出钮,系统弹出“向导选取向导选取”对话框。对话框。在在“向向导导选选取取”对对话话框框中中选选择择“表表单单向向导导”

430、选选项项,然然后后单单击击“确确定定”按按钮钮,进进入入“表表单单向向导导步步骤骤 1”对对 话话 框框 , 在在 “数数 据据 库库 和和 表表 ”组组 合合 框框 中中 选选 取取teachersj数数据据库库,并并且且选选取取teacher表表,将将表表中中的的全全部部可可用用字字段段添添加加到到“选选定定字字段段”列列表表框框中中,如如图图12-1所所示。示。12.1.1表单向导表单向导图图12-1“表单向导表单向导步骤步骤1”对话框对话框12.1.1表单向导表单向导单单击击“下下一一步步”按按钮钮,进进入入“表表单单向向导导步步骤骤2”对对话话框框。该该对对话话框框用用于于确确定定表

431、表单单的的外外观观效效果果。在在“样样式式”列列表表框框中中,系系统统提提供供了了9种种不不同同风风格格的的显显示示记记录录字字段段的的样样式式,每每选选择择一一种种都都可可以以在在左左上上角角看看到到其其显显示示效效果果,本本例例中中选选择择“凹凹陷陷式式”显显示示效效果。果。向向导导提提供供了了4种种“按按钮钮类类型型”来来显显示示出出现现在在表表单单中中按按钮钮的的显显示情况:示情况:文本按钮:在按钮上用文本显示按钮的说明和用途。文本按钮:在按钮上用文本显示按钮的说明和用途。图图片片按按钮钮:在在按按钮钮上上附附示示意意性性图图片片来来显显示示按按钮钮的的说说明明和和用途。用途。无无按钮

432、:在表单上不设置按钮。按钮:在表单上不设置按钮。定制:根据用户的需要定制按钮的显示形式。定制:根据用户的需要定制按钮的显示形式。12.1.1表单向导表单向导图图12-2“表单向导表单向导步骤步骤2”对话框对话框12.1.1表单向导表单向导单单击击“下下一一步步”按按钮钮,进进入入“表表单单向向导导步步骤骤3”对对话话框框,选选择择排排序序依依据据。最最多多可以选择三个排序依据。可以选择三个排序依据。图图12-3“表单向导表单向导步骤步骤3”对话框对话框12.1.1表单向导表单向导单击单击“下一步下一步”按钮,进入按钮,进入“表单向导表单向导步骤步骤4”对话框。对话框。图图12-4“表单向导表单

433、向导步骤步骤4”对话框对话框12.1.1表单向导表单向导在此对话框中出现了在此对话框中出现了3个复选框,它们的作用如下:个复选框,它们的作用如下:使使用用字字段段映映像像:不不同同数数据据类类型型的的字字段段使使用用不不同同的的控控件件显显示示字字段段内内容容,例例如如字字符符型型字字段段用用文文本本框框显显示示字字段段内内容容,逻逻辑辑型型字字段段用用复复选选框框显显示示其其内内容容,备备注注型型字字段用编辑框显示其字段内容。一般使用默认值。段用编辑框显示其字段内容。一般使用默认值。用用数数据据库库字字段段显显示示类类:即即用用数数据据库库字字段段形形式式显显示示类。一般使用默认值。类。一般

434、使用默认值。为为容容不不下下的的字字段段加加入入页页:如如果果所所选选择择的的字字段段个个数数过过多多,一一页页显显示示不不下下,选选该该复复选选框框就就会会自自动动添添加加一一页页,以显示更多的字段。以显示更多的字段。12.1.1表单向导表单向导最后单击最后单击“完成完成”按钮,保存按钮,保存teacher.scx表单文件。该表单将在保存后自动运行。表单文件。该表单将在保存后自动运行。图图12-5“教师基本情况教师基本情况”表单运行结果表单运行结果12.1.1表单向导表单向导2.使用使用“表单向导表单向导”创建一对多表单创建一对多表单按照创建单表表单的前按照创建单表表单的前4步操作,打开步操

435、作,打开“向导选取向导选取”对话框。对话框。图图12-6“一对多表单向导一对多表单向导步骤步骤1”对话框对话框12.1.1表单向导表单向导单单击击“下下一一步步”按按钮钮,进进入入“一一对对多多表表单单向向导导步步骤骤2”对对话话框框,选选择择sk.dbf为子表,在为子表,在“选定字段选定字段”中添加其全部字段。中添加其全部字段。图图12-7“一对多表单向导一对多表单向导步骤步骤2”对话框对话框12.1.1表单向导表单向导然然后后单单击击“下下一一步步”按按钮钮,进进入入“一一对对多多表表单单向向导导步步骤骤3”对对话话框框,指指定定父表和子表之间的关系,左边为父表,右边为子表。父表和子表之间

436、的关系,左边为父表,右边为子表。图图12-8“一对多表单向导一对多表单向导步骤步骤3”对话框对话框12.1.1表单向导表单向导其其余余步步骤骤和和前前面面所所讲讲的的“单单表表表表单单向向导导”的的步步骤骤一一致致,但但这这里里表表单单的的样样式式选选择择为为“浮浮雕雕式式”,表表单单标标题题为为“教教师师授授课课浏浏览览”,保保存存表表单单文文件件名名为为tea_sk.scx,其运行结果如图其运行结果如图12-9所示。所示。图图12-9“教师授课浏览教师授课浏览”表单运行结果表单运行结果12.1.2表单设计器表单设计器使使用用“表表单单设设计计器器”能能够够可可视视化化地地创创建建并并修修改

437、改表表单单和和表表单单集集。一一个个表表单单集集由由一一个个或或多多个个可可作作为为一一个个整整体体处处理理的的表表单单构构成成。表表单单和和表表单单集集有有自自己己的的属属性性、事事件件和方法的对象。和方法的对象。当当“表表单单设设计计器器”窗窗口口处处于于激激活活状状态态时时,可可以以使使用用菜菜单单、“表表单单控控件件”工工具具栏栏、“表表单单设设计计器器”工工具具栏栏、“布局布局”工具栏,以及工具栏,以及“调色板调色板”工具栏创建表单。工具栏创建表单。1.“表单设计器表单设计器”工具栏工具栏当当打打开开“表表单单设设计计器器”窗窗口口时时,自自动动显显示示的的“表表单单设计器设计器”工

438、具栏。工具栏包括工具栏。工具栏包括9个命令按钮。个命令按钮。12.1.2表单设计器表单设计器图图12-10“表单设计器表单设计器”窗口窗口12.1.2表单设计器表单设计器命令按钮命令按钮 功能功能设置设置Tab键次序键次序数据环境数据环境属性窗口属性窗口代码窗口代码窗口表单控件工具栏表单控件工具栏调色板工具栏调色板工具栏布局工具栏布局工具栏表单生成器表单生成器自动格式自动格式表表12-1FormDesigner工具栏命令按钮工具栏命令按钮12.1.2表单设计器表单设计器2.“表单控件表单控件”工具栏工具栏当当打打开开“表表单单设设计计器器”窗窗口口时时,“表表单单控控件件”工工具具栏栏会会自自

439、动动显显示示。此此外外,任任何何时时候候都都可可以以通通过过选选择择“显显示示”|“工工具具”菜菜单单选选项项来来显显示示指指定定的的工工具具栏栏。但但是是,除除非非在在“表表单单设设计计器器”窗窗口口中工作,否则中工作,否则“表单控件表单控件”工具栏中的按钮不可用。工具栏中的按钮不可用。“表表单单控控件件”工工具具栏栏上上设设置置有有25个个按按钮钮,除除个个别别按按钮钮以以外外,每每个个按按钮钮代代表表一一个个控控件件。使使用用“表表单单控控件件”工工具具栏栏可可以以在在表表单单上上创创建建控控件件。单单击击需需要要的的控控件件按按钮钮,将将鼠鼠标标指指针针移移动动到到表表单单上上,然然后

440、后在在表表单单的的控控件件放放置置处处单单击击控控件件或或把把控控件件拖拖至至所所需需的的大大小小,就把该控件添加到表单上。就把该控件添加到表单上。12.1.3表单的属性窗口表单的属性窗口设设计计表表单单的的大大多多数数工工作作是是在在“属属性性”窗窗口口中中完完成成的的,因因此此用用户户必必须须熟熟悉悉“属属性性”窗窗口口的的各各个个组组成成部部分分及及其其功功能能和和设设计计方方法法。在在“表表单单设设计计器器”窗窗口口中中如如果果没没有有出出现现表表单单的的“属属性性”窗窗口口,可可以以单单击击工工具具栏栏上上的的“属属性性”按按钮钮。“属属性性”窗口如图窗口如图12-11所示。所示。1

441、2.1.3表单的属性窗口表单的属性窗口对象下拉列表框对象下拉列表框函数按钮函数按钮属性设置框属性设置框选定的属性选定的属性只读属性只读属性图图12-11表单的表单的“属性属性”窗口窗口12.1.3表单的属性窗口表单的属性窗口在在“属属性性”窗窗口口的的顶顶部部,有有一一个个对对象象下下拉拉列列表表框框,其其中中含含有有当当前前表表单单及及当当前前表表单单中中所所有有对对象象的的名名称称,可可在在下下拉拉列列表表中中选选取取一个对象,或者用鼠标在表单上单击选中一个对象。一个对象,或者用鼠标在表单上单击选中一个对象。在在“属属性性”窗窗口口中中,设设置置有有5个个选选项项卡卡,各各选选项项卡卡的的

442、含含义义如如下:下:“全全部部”选选项项卡卡:显显示示所所选选对对象象的的全全部部属属性性、事事件件和和方方法法程序的名称。程序的名称。“数据数据”选项卡:显示所选对象显示和操作数据的方法。选项卡:显示所选对象显示和操作数据的方法。“方方法法程程序序”选选项项卡卡:显显示示所所选选对对象象的的方方法法程程序序和和事事件件过过程。程。“布局布局”选项卡:显示所选对象的布局属性。选项卡:显示所选对象的布局属性。“其其他他”选选项项卡卡:显显示示类类、类类库库等等其其他他属属性性和和其其他他用用户户定定义属性。义属性。12.2设置数据环境设置数据环境每每一一个个表表单单都都包包括括一一个个数数据据环

443、环境境。数数据据环环境境是是一一个个对对象象,它它包包含含与与表表单单相相互互作作用用的的表表或或视视图图,以以及及表表单单所所要要求求的的各各表表之之间间的的关关系系。可可以以在在“数数据据环环境境设设计计器器”中中直直观观地地设设置置数数据据环环境境,并与表单一起保存。并与表单一起保存。12.2.1打开数据环境设计器打开数据环境设计器“数数据据环环境境设设计计器器”须须在在表表单单设设计计状状态态下下才才能能打打开开。首首先先进进入入“表表单单设设计计器器”,选选择择“显显示示”|“数数据据环环境境”选选项项,即即可可进进入入“数数据据环环境境设设计计器器”。例例如如设设置置上上一一节节创

444、创建建的的“教教师师授授课课浏浏览览”表表单单的的数数据据环环境境,首首先先在在“项项目目管管理理器器”中中选选择择该该表表单单并并单单击击Modify按按钮钮,进进入入表表单单设设计计器器。然然后后选选择择“显显示示”|“数数据据环境环境”选项,即可进入数据环境设计器,如图选项,即可进入数据环境设计器,如图12-12所示。所示。12.2.1打开数据环境设计器打开数据环境设计器图图12-12数据环境设计数据环境设计12.2.2常用数据环境属性常用数据环境属性表表12-2是在是在“属性属性”窗口中经常设置的数据环境属性:窗口中经常设置的数据环境属性:表表12-2数据环境的主要属性设置数据环境的主

445、要属性设置属属性性说说明明默认设置默认设置AutoCloseTables控制当释放表或表单集时,控制当释放表或表单集时,是否关闭表或视图是否关闭表或视图.T.AutoOpenTables控制当运行表单时,控制当运行表单时,是否打开数据环境中的表或视图是否打开数据环境中的表或视图 .T.InitialSelectedAlias当当运行表单时选定的表或视图运行表单时选定的表或视图12.2.312.2.3向数据环境设计器添加、移去表或视图向数据环境设计器添加、移去表或视图向数据环境设计器添加、移去表或视图向数据环境设计器添加、移去表或视图向向“数数据据环环境境设设计计器器”添添加加表表或或视视图图时

446、时,可可以以看看到到属属于于表表或或视视图的所有字段和索引。其操作步骤为:图的所有字段和索引。其操作步骤为:在在“数数据据环环境境设设计计器器”中中,选选择择“数数据据环环境境”|“添添加加”菜单选项。菜单选项。在在“添加表或视图添加表或视图”对话框中,从列表中选择表或视图。对话框中,从列表中选择表或视图。将将表表或或视视图图从从数数据据环环境境设设计计器器中中移移去去时时,与与其其有有关关的的所所有有关关系系也随之移去。其操作步骤为:也随之移去。其操作步骤为:在在“数据环境设计器数据环境设计器”中选择要移去的表或视图。中选择要移去的表或视图。选择选择“数据环境数据环境”|“移去移去”。12.

447、2.412.2.4数据环境设计器中关系的设置与编辑数据环境设计器中关系的设置与编辑数据环境设计器中关系的设置与编辑数据环境设计器中关系的设置与编辑若若要要在在“数数据据环环境境设设计计器器”中中设设置置关关系系,应应将将字字段段从从主主表表拖拖到到与与相相关关表表相相匹匹配配的的索索引引标标识识上上或或相相关关表表的的字字段段上上。如如果果和和主主表表中中的的字字段段对对应应的的相相关关表表中中没没有有索索引引标标识识,系系统统将将提提示示是是否否创创建建索索引引标标识识。关关系系设设置置好好后后,在在主主表表和和相相关关表表之之间间有有一一条条连连线线,表表示示两两表表之之间间的关系。的关系

448、。若若要要编编辑辑关关系系属属性性,应应在在“属属性性”窗窗口口的的对对象象列列表表框框中中选选择择要要编编辑辑的的关关系系。RelationalExpr属属性性默默认认设设置置为为主主表表中中主主关关键键字字字字段段的的名名称称。如如果果相相关关表表是是以以表表达达式式作作为为索索引引的的,就就必必须须将将RelationalExpr属属性性设设置置为为这这个个表表达达式式。如如果果关关系系不不是是一一对对多多关关系系,必必须须将将OneToMany属性设置为属性设置为.F.。12.3基本表单设计基本表单设计12.3.1使用使用“表单设计器表单设计器”设计表单设计表单使用使用“表单设计器表单

449、设计器”进行表单设计的步骤如下:进行表单设计的步骤如下:分分析析表表单单应应实实现现的的功功能能,与与数数据据库库中中哪哪些些数数据据有有关关,需需要哪些控件来实现功能。要哪些控件来实现功能。创建表单,设置外观(如表单的背景色、尺寸、标题等)。创建表单,设置外观(如表单的背景色、尺寸、标题等)。根据需要设置数据环境。根据需要设置数据环境。在在表表单单上上添添加加需需要要的的对对象象(如如表表、视视图图、控控件件等等),并并调整位置、大小和整体布局。调整位置、大小和整体布局。利用利用“属性属性”窗口设置对象的初始属性。窗口设置对象的初始属性。为对象编写程序代码以完成预定的要求。为对象编写程序代码

450、以完成预定的要求。12.3.1使用使用“表单设计器表单设计器”设计表单设计表单下下面面通通过过两两个个例例子子介介绍绍使使用用“表表单单设设计计器器”设设计计基本表单的方法。基本表单的方法。例例12-1创创建建一一个个表表单单,在在表表单单下下部部创创建建两两个个按按钮钮,其其中中“退退出出”按按钮钮用用于于退退出出表表单单的的运运行行,“不不显显示示”按按钮钮用用于于删删除除显显示示信信息息,当当点点击击该该按按钮钮时时,则则在在表表单单上部显示的上部显示的“Hello,World!”信息将被删除。信息将被删除。设计的操作步骤如下:设计的操作步骤如下:打开打开“表单设计器表单设计器”。在表单

451、中添加一个标签对象。在表单中添加一个标签对象。12.3.1使用使用“表单设计器表单设计器”设计表单设计表单在表单上添加两个命令按钮。在表单上添加两个命令按钮。图图12-13添加了对象的表单添加了对象的表单12.3.1使用使用“表单设计器表单设计器”设计表单设计表单设置对象的属性。设置对象的属性。为为命命令令按按钮钮Command1的的Click事事件件编编写写程序代码。程序代码。同同理理为为Command2按按钮钮的的Click事事件件编编写写程程序序代代码码,在在“过过程程”下下拉拉列列表表中中选选中中Click,然后输入如下的代码:然后输入如下的代码:thisform.release关闭代

452、码编辑窗口。关闭代码编辑窗口。12.3.2表单的保存与运行表单的保存与运行1.表单的保存表单的保存当当通通过过“表表单单向向导导”或或“表表单单设设计计器器”创创建建完完成成一个表单之后,还需要把表单保存起来。一个表单之后,还需要把表单保存起来。首首先先要要确确定定保保存存的的位位置置,一一般般,一一个个项项目目文文件件所所涉涉及及到到的的所所有有文文件件如如表表文文件件、数数据据库库表表文文件件、查查询询文文件件、视视图图文文件件、表表单单文文件件等等都都保保存存在在一一个个目目录录下下面面(一一般般使使用用默默认认路路径径),便便于于连连编编成成为为完完整整的的应应用用程程序。序。其其次次

453、要要为为文文件件命命名名,表表单单文文件件的的扩扩展展名名为为.scx,在在保保存存的的同同时时,系系统统会会自自动动为为表表单单文文件件创创建建一一个个与与表表单文件同名的扩展名单文件同名的扩展名为为.sct的表单备注文件。的表单备注文件。12.3.2表单的保存与运行表单的保存与运行2.表单的运行表单的运行表单的运行有两种方法:表单的运行有两种方法:以以交交互互的的方方式式运运行行表表单单。在在“项项目目管管理理器器”中中,选中表单的文件名,再单击选中表单的文件名,再单击“运行运行”按钮即可。按钮即可。命令方式运行表单,命令格式为:命令方式运行表单,命令格式为:DOFORM如如要要在在命命令

454、令窗窗口口中中运运行行例例12-1中中创创建建的的表表单单文文件件“bd1.scx”,应在应在“命令命令”窗口中键入如下命令:窗口中键入如下命令:DOFORMbd112.4常用表单控件常用表单控件VisualFoxPro6.0提提供供了了许许多多表表单单控控件件,利利用用这这些些控控件件用用户户可可以以设设计计出出界界面面美美观观、功功能能强强大大的的应应用用程程序序。通通过过“表表单单控控件件”工工具具栏栏可可以以创创建建的的控控件件大大致致可可以以分分为为4类类,即即输输出出类类、输输入入类类、控控制制类类、容容器器类类。面面向向对对象象编编程程首首先先就就要要设设计计应应用用程程序序界界

455、面面,而而设设计计界界面面即即是是排排列列与与布布局局表表单控件。单控件。12.4.1输出类控件输出类控件标签标签(Label)标签的功能与用处标签的功能与用处标签是用来显示一段固定的文字信息。标签是用来显示一段固定的文字信息。标签常用的属性标签常用的属性Caption:标标签签的的标标题题,即即显显示示在在标标签签控控件件中中的的固固定定字字符符串串信息。信息。AutoSize:确定是否根据标题的长度自动调整标签的大小。确定是否根据标题的长度自动调整标签的大小。WordWrap:确确定定当当标标签签标标题题长长度度超超宽宽时时,能能否否显显示示在在多多行行,即用多行显示标题。,即用多行显示标

456、题。ForeColor:标题的字符颜色。标题的字符颜色。BackStyle:确确定定标标签签的的背背景景是是否否透透明明,当当背背景景设设置置为为0(透透明)时,可以显示标签后面的画面。明)时,可以显示标签后面的画面。12.4.1输出类控件输出类控件2.图像图像(Image)图像控件用于显示图片。图像控件用于显示图片。图像的常用属性如下:图像的常用属性如下:Picture:要显示的图片要显示的图片(.bmp文件)。文件)。BorderStyle:决决定定图图像像是是否否具具有有可可见见的的边边框。框。Strethch:设置图像的剪裁方式。设置图像的剪裁方式。12.4.2输入类控件输入类控件1.

457、文本框(文本框(Text)文本框的功能与用处文本框的功能与用处文本框是一个基本表单控件,供用户输入或编辑数据。文本框是一个基本表单控件,供用户输入或编辑数据。文本框的常用属性文本框的常用属性Alignment:文文本本框框中中的的内内容容是是采采用用左左对对齐齐、右右对对齐齐、居居中中还还是是自自动动对对齐。齐。ControlSource:设置文本框的数据来源。设置文本框的数据来源。InputMask:设置文本框中输入值的格式和范围。设置文本框中输入值的格式和范围。PasswordChar:设置输入口令时显示的字符形式。设置输入口令时显示的字符形式。Value:用于保存文本框中的值,它的初值可

458、以决定文本框中值的类型。用于保存文本框中的值,它的初值可以决定文本框中值的类型。ReadOnly:确定文本框是否为只读。确定文本框是否为只读。Tabstop:确定输入焦点是否能够移动到该文本框。确定输入焦点是否能够移动到该文本框。12.4.2输入类控件输入类控件标签和文本框的区别标签和文本框的区别标签没有数据源,文本框的数据源可以是内存变量,也可以是字段。标签没有数据源,文本框的数据源可以是内存变量,也可以是字段。标签不能直接编辑,文本框可以。标签不能直接编辑,文本框可以。标签不能用标签不能用“Tab”键选择,文本框可以。键选择,文本框可以。例例12-3利利用用文文本本框框控控件件输输入入一一

459、个个数数,然然后后单单击击“计计算算”按按钮钮输输出出该该数数的的平平方方值值。如图如图12-17所示。所示。图图12-17bd3的运行结果的运行结果12.4.2输入类控件输入类控件编辑框(编辑框(Edit)编辑框的功能与用处编辑框的功能与用处编编辑辑框框是是一一个个用用于于输输入入或或更更改改文文本本的的表表单单控控件件,能能够够录录入入和和编编辑辑大大量量的的多多行行文文字字,允允许许自自动动换换行行并并能能用用方方向向键键、PageUp键键和和PageDown键键以以及及滚滚动动条条来来浏浏览览文文本本。编编辑辑框框常常用用来来录录入入和和编编辑辑备备注注字字段段。这这里里只只要要把把编

460、编辑辑框框的的ControlSource属属性性设设置置为为某某表表的的备备注注字字段段就就可可以以在在其其中中编编辑辑这这个个备备注注字字段段了。了。编辑框常用属性编辑框常用属性ControlSource:设置编辑框的数据来源,通常是表的备注字段。设置编辑框的数据来源,通常是表的备注字段。ReadOnly:用户能否修改编辑框中的文本。用户能否修改编辑框中的文本。ScrollBars:是否具有垂直滚动条。是否具有垂直滚动条。Value:用此属性保存编辑框中的内容。用此属性保存编辑框中的内容。12.4.2输入类控件输入类控件列表框列表框(ListBox)和组合框(和组合框(ComboBox)列表

461、框列表框使使用用列列表表框框将将创创建建一一个个可可滚滚动动的的列列表表,并并在在其其中中显显示示一一系系列列选选项项和和信信息息,用用户户可可以以在在列列表表中中选选择择其其中中的的一一项项或或多多项项。列列表表框框的的用用途途是是显显示示表表的的一一个个字字段或多个字段的内容,供用户浏览和选择。段或多个字段的内容,供用户浏览和选择。列表框的常用属性如下:列表框的常用属性如下:ColumnCount:设置列表框的列数,默认值为设置列表框的列数,默认值为0。ListCount:统计列表中全部选项的数目。统计列表中全部选项的数目。RowSourceType:确确定定RowSource属属性性值值

462、是是下下列列哪哪种种类类型型,一一个个值值、表的别名表的别名、SQL语句、查询、数组、字段列表或文件列表等,如表语句、查询、数组、字段列表或文件列表等,如表12-3所示。所示。Value:当当前前选选项项的的返返回回值值,其其属属性性可可以以是是数数值值型型,也也可可以以是是字字符符型型,默认为数值型。默认为数值型。12.4.2输入类控件输入类控件表表12-3RowSourceType表表RowSourceType列表项的来源列表项的来源0无,由程序向列表中添加项无,由程序向列表中添加项1值值2别名别名3SQL语句语句4查询查询5数组数组6字段字段7文件文件8结构结构9弹出式菜单弹出式菜单12

463、.4.2输入类控件输入类控件图图12-19“列表框生成器列表框生成器”对话框对话框12.4.2输入类控件输入类控件“列表框生成器列表框生成器”共有共有4个选项卡:个选项卡:列表项:用于指定要填充到列表框中的项。填充列表项:用于指定要填充到列表框中的项。填充可以是可以是3种数据来源之一,表或视图中的字段、手工输种数据来源之一,表或视图中的字段、手工输入的数据,以及数组中的值。入的数据,以及数组中的值。样样式式:用用于于指指定定列列表表框框的的样样式式,所所显显示示的的行行数数,是否允许递增搜索。是否允许递增搜索。布布局局:用用于于控控制制列列表表框框的的列列宽宽,包包含含有有1个个复复选选框和框

464、和1个表格。个表格。值值:包包含含两两个个组组合合框框,分分别别用用来来指指定定返返回回值值以以及及存储返回值的字段。存储返回值的字段。12.4.2输入类控件输入类控件组合框组合框组合框是文本和列表框的组合。组合框是文本和列表框的组合。组合框的常用属性如下:组合框的常用属性如下:ControlSource:指定用于保存用户选择或输入值的表字段。指定用于保存用户选择或输入值的表字段。DisplayCount:指定在列表框中允许显示的最大数目。指定在列表框中允许显示的最大数目。InputMask:对于下拉组合框,指定允许键入的数据类型。对于下拉组合框,指定允许键入的数据类型。Incremental

465、Search:指指定定当当用用户户键键入入一一个个字字母母时时,控控件件是是否否和和列列表表中中的项匹配。的项匹配。RowSource:指定组合框中数据的来源。指定组合框中数据的来源。RowSourceType:指指定定组组合合框框中中数数据据源源类类型型,其其值值与与列列表表框框的的属属性性值值一样。一样。12.4.2输入类控件输入类控件微调控件微调控件(Spinner)微调控件的功能微调控件的功能微微调调控控件件可可以以让让用用户户在在一一定定范范围围内内对对数数值值进进行行增增减减。所所谓谓微微调调就就是是将将数数值值一一点点点点地地增增加加或或减减少少,而而增增加加减减少少的的方方法法

466、就就是是按按向向上上或或向向下下的的箭箭头头,每每按按一下默认增加或减少一下默认增加或减少1.00,用户也可以直接将数值通过键盘输入。,用户也可以直接将数值通过键盘输入。微调控件的常用属性微调控件的常用属性Increment:微调的步长。微调的步长。KeyboardHighValue:能键入到微调文本中的最大值。能键入到微调文本中的最大值。KeyboardLowValue:能键入到微调文本中的最小值。能键入到微调文本中的最小值。SpinnerHighValue:微调控件能显示的最大值。微调控件能显示的最大值。SpinnerLowValue:微调控件能显示的最小值。微调控件能显示的最小值。12.

467、4.2输入类控件输入类控件例例12-5创建表单创建表单“bd8.scx”,使用微调控件微调日期。如图使用微调控件微调日期。如图12-20所示。所示。图图12-20bd8的运行结果的运行结果12.4.2输入类控件输入类控件在在“表单设计器表单设计器”中进行如下的操作:中进行如下的操作:修改表单修改表单的的Caption为为“bd8”。向向表表单单添添加加一一个个文文本本框框Text1,把把Text1的的Value属属性性值值设设置置为为日日期期类类型型dd/mm/yy,再再把把属属性性ControlSource设设置置为为一一个个变变量量名名rq;再再为为Text1的的init事件定义变量事件定

468、义变量rq,然后编写如下代码:然后编写如下代码:rq=Date()()向向表表单单中中添添加加一一个个微微调调控控件件Spinner1,把把它它的的外外形形调调到到最最小小,然然后后移移到到Text1的右侧,再的右侧,再为为Spinner1的的UpClick事件编写如下代码:事件编写如下代码:thisform.Text1.Value=thisform.Text1.Value+1同样为微调控件同样为微调控件Spinner1的的DownClick事件编写如下代码:事件编写如下代码:thisform.Text1.Value=thisform.Text1.Value-1保存表单,然后运行表单。保存表单

469、,然后运行表单。12.4.3控制类控件控制类控件命令按钮命令按钮(CommandButton)和命令按钮组和命令按钮组(CommandGroup)命令按钮命令按钮几几乎乎所所有有的的表表单单中中都都要要设设置置一一个个或或多多个个命命令令按按钮钮,人人们们通通过过鼠鼠标标单单击击命命令按钮下达某种指令,让计算机完成相应的操作。令按钮下达某种指令,让计算机完成相应的操作。命令按钮的常用属性如下:命令按钮的常用属性如下:Caption:标标题题属属性性,设设置置按按钮钮标标题题,用用于于说说明明按按钮钮的的功功能能。还还可可通通过过在在此此属属性性值值中中某某个个字字符符前前插插入入符符号号“/”

470、来来设设置置热热键键,热热键键显显示示时时字字符符下下方方有一条下划线。有一条下划线。WordWrap:折折行行显显示示属属性性,当当中中文文标标题题超超过过一一定定宽宽度度时时,可可通通过过设设置置此属性为此属性为.T.,再通过压缩按钮宽度来实现多行显示标题内容。再通过压缩按钮宽度来实现多行显示标题内容。Picture:此属性用于设置在按钮上显示一个图形,实现图文命令按钮。此属性用于设置在按钮上显示一个图形,实现图文命令按钮。12.4.3控制类控件控制类控件ToolTipText:此属性用于设置按钮的提示文本内容。此属性用于设置按钮的提示文本内容。ShowTips:用用于于控控制制提提示示文

471、文本本是是否否显显示示的的开开关关。当当此此属属性性值为值为.T.时,时,在在ToolTipText属性中设置的提示内容会显示出来。属性中设置的提示内容会显示出来。Enabled:其其值值为为.F.时时,该该命命令令按按钮钮就就以以浅浅色色显显示示,表表示示当前无效。当前无效。DisablePicture:当当命命令令按按钮钮无无效效时时,按按钮钮显显示示在在此此属属性性中中设置的图片。设置的图片。DownPicture:当当命命令令按按钮钮被被按按下下时时,按按钮钮显显示示在在此此属属性性中设置的图片。中设置的图片。12.4.3控制类控件控制类控件命令按钮组命令按钮组有有时时用用户户需需要要

472、在在表表单单上上创创建建多多个个按按钮钮,而而这这些些按按钮钮所所执执行行的的一一系系列列命命令令又是彼此相关的。又是彼此相关的。命命令令按按钮钮组组中中的的多多个个按按钮钮被被视视为为一一个个整整体体,它它们们可可以以共共用用一一个个Click事事件件,也也可可以以独独立立的的使使用用Click事事件件,这这给给用用户户管管理理各各个个按按钮钮并并给给按按钮钮编编写写程程序序代代码提供了方便。码提供了方便。命令按钮组的常用属性如下:命令按钮组的常用属性如下:BackStyle:命令按钮组是否具有透明或不透明的背景。命令按钮组是否具有透明或不透明的背景。ButtonCount:按钮组中命令按钮

473、的个数。按钮组中命令按钮的个数。Value:命命令令按按钮钮组组中中的的各各按按钮钮被被自自动动赋赋予予了了一一个个编编号号,如如1、2、3等等。当当运运行行表表单单时时,一一旦旦单单击击某某个个按按钮钮,则则Value属属性性将将保保存存该该按按钮钮的的编编号号,因因此此在在程程序序中中通通过过查查看看Value属属性性的的值值,就就可可以以调调用用为为相相应应的的按按钮钮编编写写的的程程序序代码。代码。12.4.3控制类控件控制类控件选项按钮组(选项按钮组(OptionGroup)选项按钮组的功能选项按钮组的功能选选项项按按钮钮组组是是一一个个可可以以包包含含多多个个选选项项按按钮钮的的容

474、容器器,这这些些按按钮钮互互相相排排斥斥,用用户户只只能能从从中中选选取取一一个个,因因而而选选项项按按钮钮组组常常常常用用于在有限个选项中选择其一的场合。于在有限个选项中选择其一的场合。选项按钮组的常用属性选项按钮组的常用属性ButtonCount:设置选项按钮组中的按钮的个数。设置选项按钮组中的按钮的个数。ControlSource:设设置置按按钮钮的的数数据据来来源源,如如可可以以设设置置为为表表中某一逻辑字段。中某一逻辑字段。Value:可可以以判判定定用用户户选选定定了了哪哪个个按按钮钮。如如果果按按钮钮的的控控件件源源为为数数值值型型,且且组组中中有有5个个按按钮钮,如如果果选选定

475、定了了第第3个个按按钮钮,则则Value属性为属性为3。如果没有选定按钮,则。如果没有选定按钮,则Value默认为默认为0。12.4.3控制类控件控制类控件复选框复选框(CheckBox)复选框的功能复选框的功能复复选选框框用用于于指指定定某某种种逻逻辑辑判判定定,用用户户可可以以单单击击复复选选框框,当当其其中中出出现现一一个个“”时时表表示示逻逻辑辑条条件件为为真真,否否则则为为假假。复复选选框框往往往往与与一一个个逻逻辑辑型型字字段段或或一一个个逻逻辑辑型型变变量量相相联联系系,当当复复选选的的ControlSource属属性性为为逻逻辑辑型型字字段段,且且其其值值为为“.T.”时,则表

476、示复选框被选中,否则复选框未被选中。时,则表示复选框被选中,否则复选框未被选中。复选框的常用属性复选框的常用属性Caption:为复选框定义名称。为复选框定义名称。ControlSource:为为复复选选框框指指定定数数据据来来源源,一一般般是是表表的的逻逻辑辑字字段段或或逻逻辑辑变量。变量。Value:用用于于保保存存复复选选框框的的当当前前状状态态值值。复复选选框框未未被被选选中中时时,Value=0或或.F.,否则否则Value=1或或.T.,当,当CheckBox变为灰色不可用时,变为灰色不可用时,Value=2。12.4.3控制类控件控制类控件计时器计时器(Timer)计计时时器器控

477、控件件在在应应用用程程序序中中可可用用来来实实现现定定期期地地执执行行某某一一操操作作。它它能能周周期期性性地地按按一一定定时时间间间间隔隔自自动动执执行行它它的的计计时时器器事事件件代代码码。程序运行时该控件是看不见的,只在后台运行。程序运行时该控件是看不见的,只在后台运行。计时器的常用属性如下:计时器的常用属性如下:Enabled:若若想想让让计计时时器器在在表表单单加加载载时时就就开开始始工工作作,应应将将这这个个属属性性设设置置为为.T.,否否则则设设置置为为.F.。也也可可以以选选择择一一个个外外部部事事件件(如命令按钮(如命令按钮的的Click事件)启动计时器。事件)启动计时器。I

478、ntervalTimer:设置事件之间的毫秒数。设置事件之间的毫秒数。12.4.4容器类控件容器类控件表格表格(Grid)表格的功能表格的功能表格控件可以设置在表单或页面中,用于显示表中的字段。表格控件可以设置在表单或页面中,用于显示表中的字段。表格的常用属性表格的常用属性ColumnCount:表示表格中的列数。表示表格中的列数。RecordSource:指定数据源,即指定要在表格中显示的表。指定数据源,即指定要在表格中显示的表。RecordSourceType:指定数据源类型,通常取指定数据源类型,通常取0(表)或(表)或1(别名)。(别名)。AllowAddNew:当该属性值当该属性值为

479、为.T.时允许用户向表格中的表添加记录。时允许用户向表格中的表添加记录。ControlSource:指定某表的字段为数据源。指定某表的字段为数据源。CurrentControl:为列指定活动控件,默认为文本为列指定活动控件,默认为文本1。Sparse: 当当 此此 属属 性性 值值 为为 .T.时时 , 在在 列列 中中 只只 有有 选选 中中 的的 单单 元元 格格 以以CurrentControl属性指定的控件显示,其他单元格仍以文本显示。属性指定的控件显示,其他单元格仍以文本显示。12.4.4容器类控件容器类控件表格的创建表格的创建进进入入“表表单单设设计计器器”,单单击击“表表单单控控

480、件件”工工具具栏栏的的“表表格格”按按钮钮,然然后后在在表表单单上上用鼠标单击,将把一个表格添加到表单中。用鼠标单击,将把一个表格添加到表单中。图图12-22“表格生成器表格生成器”对话框对话框12.4.4容器类控件容器类控件在在“布布局局”选选项项卡卡中中,用用户户可可以以为为选选中中的的不不同同字字段段命命名名“标标题题”,还还可可以以为为每每个个字段选用不同的字段选用不同的“控件类型控件类型”,如图,如图12-23所示。所示。图图12-23“布局布局”选项卡选项卡12.4.4容器类控件容器类控件页页框(框(PageFrame)页页框框是是包包含含页页面面的的容容器器对对象象,页页面面又又

481、可可包包含含控控件件。可可以以在在页页框框、页页面面或或控控件件级级上上设设置置属属性性。使使用用页页框框可可以以扩扩展展表表单单的的面面积积,使使用用页页框框和和页页面面可可以以创创建带选项卡的表单和对话框。建带选项卡的表单和对话框。页框的常用属性如下:页框的常用属性如下:TabStyle:其其值值为为0表表示示所所有有页页面面标标题题布布满满页页框框的的宽宽度度,值值为为1表表示示以以紧缩方式显示页面标题。紧缩方式显示页面标题。TabStrdtch:其其值值为为1表表示示以以单单行行显显示示所所有有页页面面标标题题,为为0表表示示以以多多行行显示所有的页面标题。显示所有的页面标题。Acti

482、vePage:用一个数字来指定页框中的活动页面。用一个数字来指定页框中的活动页面。Tabs:确定是否要显示页面标题。其值为确定是否要显示页面标题。其值为.T.表示要显示标题。表示要显示标题。习题习题1、选择题、选择题表单文件的扩展名是表单文件的扩展名是。A.lblB.scxC.sctD.dbf假假定定表表单单中中包包含含一一个个命命令令按按钮钮,在在运运行行表表单单时时,有有关关事事件件引引发发次次序序的的叙叙述述正正确的是确的是。A.先是命令按钮的先是命令按钮的Init事件,然后是表单事件,然后是表单的的Init事件,最后是表单事件,最后是表单的的Load事件事件B.先是表单的先是表单的In

483、it事件,然后是命令按钮事件,然后是命令按钮的的Init事件,最后是表单事件,最后是表单的的Load事件事件C.先先是是表表单单的的Load事事件件,然然后后是是表表单单的的Init事事件件,最最后后是是命命令令按按钮钮的的Init事事件件D.先先是是表表单单的的Load事事件件,然然后后是是命命令令按按钮钮的的Init事事件件,最最后后是是表表单单的的Init事事件件习题习题属于非容器控件。属于非容器控件。A.表单表单B.标签标签C.页页D.页框页框在在表表单单设设计计器器环环境境下下,要要选选定定表表单单中中某某选选项项按按钮钮组组里里的的某某个个选选项项按按钮钮,可可以以。A.单击选项按

484、钮单击选项按钮B.双击选项按钮双击选项按钮C.先单击选项组,从快捷菜单中选择先单击选项组,从快捷菜单中选择“编辑编辑”命令,然后再单击选项按钮命令,然后再单击选项按钮D.以上的以上的B和和C都可以都可以在在表表单单控控件件中中,即即可可作作为为输输入入数数据据用用,又又可可作作为为编编辑辑现现有有数数据据用用的的控控件件为为。A.标签标签B.复选框复选框C.列表框列表框D.文本框文本框习题习题2、填空题、填空题建建立立表表单单有有3种种方方法法,它它们们是是向向导导、设设计计器器和和。组合框有组合框有和和2种类型。种类型。标标签签的的标标题题属属性性名名为为,表表单单控控件件中中可可以以输输入

485、入多行文本的控件为多行文本的控件为。可以设置文本框数据类型的属性是可以设置文本框数据类型的属性是。在在表表单单中中创创建建一一个个控控件件,用用于于保保存存不不希希望望用用户户改动的文本。改动的文本。参考答案参考答案1、选择题、选择题B C B C D2、填空题填空题生成器生成器下拉组合框、下拉列表框下拉组合框、下拉列表框Caption、编辑框编辑框Value标签标签第第13章章报表与标签报表与标签学习要点学习要点1、创建报表创建报表2、创建标签创建标签3、报表和标签的打印报表和标签的打印第第13章章报表与标签报表与标签13.1报表报表13.2标签标签13.3打印报表或标签打印报表或标签习题及

486、参考答案习题及参考答案第第13章章报表与标签报表与标签在在数数据据库库应应用用系系统统中中,常常常常需需要要将将数数据据处处理理结结果果以以各各种种报报表表形形式式打打印印出出来来。VisualFoxPro6.0为为处处理理报报表表提提供供了了专专用用的的报报表表向向导导和和报报表表设设计计器器,它它兼兼有有设设计计、显显示示和和打打印印报报表表的的功功能能;另另外外VisualFoxPro6.0也也提提供供了了一一些些报报表表处处理理命命令令。用用户户可可以以通通过过选选择择数数据据源源来来控控制制报报表表中中所所要要包包含含的的数数据据,还还可可以以创创建建报报表表变变量量配配合合原原始始

487、数数据据的的使使用用。报报表表变变量量可可以以用用来来保保存存报报表表中中的的某某些计算结果。些计算结果。标标签签是是为为了了满满足足专专用用纸纸张张要要求求而而设设计计的的一一种种多多列列的的报表布局,是一种特殊类型的报表。报表布局,是一种特殊类型的报表。13.1报表报表报报表表为为用用户户在在打打印印文文档档中中显显示示并并总总结结数数据据提提供供了了灵灵活活的的途途径径。报报表表包包含含两两个个基基本本部部分分,即即数数据据源源和和布布局局。数数据据源源通通常常是是数数据据库库中中的的表表,但但也也可可以以是是视视图图、查查询询或或临临时时表表;报报表表布布局局则则定定义义了了报报表表的

488、的打打印印格格式式。在在VisualFoxPro6.0中中,用用户户可可以以使使用用“报报表表向向导导”和和“报报表表设设计计器器”来设计报表。来设计报表。13.1.1使用向导创建报表使用向导创建报表在在创创建建报报表表之之前前,首首先先应应确确定定报报表表的的类类型型,通通常常包包括括以以下下几几种:种:列列报报表表:每每行行一一条条记记录录,每每条条记记录录的的字字段段在在页页面面上上按按水水平平方向放置,如分组方向放置,如分组/总结报表、财务报表。总结报表、财务报表。行行报报表表:一一列列一一条条记记录录,每每条条记记录录的的字字段段在在一一侧侧竖竖直直放放置置,如列表。如列表。一对多报

489、表:一条记录对应多行或多列,如发票和账目。一对多报表:一条记录对应多行或多列,如发票和账目。多多栏栏报报表表:多多栏栏式式记记录录,每每条条记记录录的的字字段段沿沿左左边边缘缘竖竖直直放放置,如电话号码簿。置,如电话号码簿。标标签签:多多列列记记录录,每每条条记记录录的的字字段段沿沿左左边边缘缘竖竖直直放放置置,打打印在打印纸上,如邮件标签。印在打印纸上,如邮件标签。13.1.1使用向导创建报表使用向导创建报表例例13-1使用报表向导创建一对多报表,要求按部门显示教师的清单。使用报表向导创建一对多报表,要求按部门显示教师的清单。打打开开“项项目目管管理理器器”对对话话框框,在在“文文档档”选选

490、项项卡卡中中选选择择“报报表表”选选项项,然后单击然后单击“新建新建”按钮,打开按钮,打开“新建报表新建报表”对话框。对话框。单单击击“报报表表向向导导”按按钮钮,打打开开“向向导导选选取取”对对话话框框,在在“选选择择要要使使用用的向导的向导”列表框中选择报表类型为列表框中选择报表类型为“一对多报表向导一对多报表向导”,如图,如图13-1所示。所示。图图13-1选择报表类型选择报表类型13.1.1使用向导创建报表使用向导创建报表单单击击“确确定定”按按钮钮,打打开开“一一对对多多报报表表向向导导”的的“从从选选择择父父表表字字段段”对话框。对话框。图图13-2选择父表选择父表添加字段添加字段

491、13.1.1使用向导创建报表使用向导创建报表单单击击“下下一一步步”按按钮钮,打打开开“从从选选择择子子表表字字段段”对对话话框框,选选择择子子表表teacher,并添加字段,如图并添加字段,如图13-3所示。所示。图图13-3选择子表并添加字段选择子表并添加字段13.1.1使用向导创建报表使用向导创建报表单单击击“下下一一步步”按按钮钮,打打开开“为为表表建建立立关关系系”对对话话框框,选选择择父父表表与与子子表的关联字段,如图表的关联字段,如图13-4所示。所示。图图13-4选择表的关联字段选择表的关联字段13.1.1使用向导创建报表使用向导创建报表单击单击“下一步下一步”按钮,打开按钮,

492、打开“排序记录排序记录”对话框,选择排序字段。对话框,选择排序字段。图图13-5选择排序字段选择排序字段13.1.1使用向导创建报表使用向导创建报表单单击击“下下一一步步”按按钮钮,打打开开“选选择择报报表表样样式式”对对话话框框,在在“样样式式”列列表表框框中中选选择择报报表表样样式式,在在“方方向向”选选项项组组中中选选择择报报表表方方向向,如如“纵纵向向”,如如图图13-6所示。所示。图图13-6选择报表样式选择报表样式13.1.1使用向导创建报表使用向导创建报表在在图图13-6所所示示的的对对话话框框中中,单单击击“总总结结选选项项”按按钮钮,将将打打开开总总结结选选项项对对话框,在此

493、可以设置总结选项,如图话框,在此可以设置总结选项,如图13-7所示。所示。图图13-7设置总结选项设置总结选项13.1.1使用向导创建报表使用向导创建报表单单击击“下下一一步步”按按钮钮,打打开开“完完成成”对对话话框框,输输入入报报表表标标题题并并选选择择保保存方式。存方式。图图13-8设置报表标题和保存方式设置报表标题和保存方式13.1.1使用向导创建报表使用向导创建报表 单单击击“完完成成”按按钮钮,打打开开“另另存存为为”对对话话框框,输输入入报报表表文文件件名名bmdm_teacher后,单击保存按钮,保存报表。后,单击保存按钮,保存报表。图图13-9在报表设计器中显示报表在报表设计

494、器中显示报表13.1.1使用向导创建报表使用向导创建报表选择选择“显示显示”|“预览预览”菜单选项,预览报表,如图菜单选项,预览报表,如图13-10所示。所示。图图13-10预览报表预览报表13.1.2使用报表设计器创建报表使用报表设计器创建报表创创建建报报表表时时,一一般般是是先先选选用用“报报表表向向导导”或或“快快速速报报表表”创创建建初初步步的的报报表表。若若对对其其设设计计的的报报表表格格式式不不满满意意,则则再再用用“报报表表设设计计器器”进进行行修修改改,也也可可以以直直接用接用“报表设计器报表设计器”创建新的报表。创建新的报表。图图13-11使用报表设计器设计报表使用报表设计器

495、设计报表13.1.2使用报表设计器创建报表使用报表设计器创建报表快速报表快速报表在在“报报表表设设计计器器”窗窗口口中中,为为了了提提高高效效率率可可以以使使用用VisualFoxPro6.0的的“快速报表快速报表”菜单方式来建立一个简单的报表布局。菜单方式来建立一个简单的报表布局。例例13-2使用使用“快速快速报表报表”菜单方式创建菜单方式创建teacher表的报表表的报表打开打开“报表设计器报表设计器”窗口。窗口。图图13-12选择数据库表选择数据库表13.1.2使用报表设计器创建报表使用报表设计器创建报表单击单击“确定确定”按钮,打开按钮,打开“快速报表快速报表”对话框。对话框。图图13

496、-13打开打开“快速报表快速报表”对话框对话框13.1.2使用报表设计器创建报表使用报表设计器创建报表如如果果要要为为报报表表选选择择不不同同的的字字段段,可可单单击击“字字段段”按按钮钮,打打开开“字段选择器字段选择器”对话框。对话框。图图13-14选择字段选择字段13.1.2使用报表设计器创建报表使用报表设计器创建报表在在“快快速速报报表表”对对话话框框中中单单击击“确确定定”按按钮钮,此此时时,VisualFoxPro6.0将根据用户的选择自动创建快速报表。将根据用户的选择自动创建快速报表。图图13-15创建快速报表创建快速报表13.1.2使用报表设计器创建报表使用报表设计器创建报表选选

497、择择“显显示示”|“预预览览”菜菜单单选选项项预预览览报报表表。可可以以看看出出报报表是行报表,如图表是行报表,如图13-16所示。所示。图图13-16预览报表预览报表13.1.2使用报表设计器创建报表使用报表设计器创建报表定义报表布局定义报表布局当当打打开开“报报表表设设计计器器”窗窗口口后后,用用户户可可以以定定义义报报表表的的布布局局。定定义义报报表表布布局局包包括括设设置置报报表表页页面面(页页边边距距和和列列宽宽)、规规划划数数据据显显示示的的位位置置,以以及及调调整整报报表表带带区区的的大小等。大小等。设置报表页面设置报表页面定定义义报报表表页页面面实实际际上上是是确确定定报报表表

498、设设计计器器窗窗口口中中空空白白报报表表的的大大小小。用用户户应应根根据据需需要要添添加加控控件件的的多多少少来来进进行行设设置置。选选择择“文文件件”|“页页面面设设置置”,在在打打开开的的“页页面面设设置置”对对话话框框中中可可以以设设置置报报表表页页面面,其其中中包包括括设设置置页面的左边距,定义列的宽度,如图页面的左边距,定义列的宽度,如图13-17所示。所示。13.1.2使用报表设计器创建报表使用报表设计器创建报表图图13-17“页面设置页面设置”对话框对话框13.1.2使用报表设计器创建报表使用报表设计器创建报表在在“页面设置页面设置”对话框中,可以进行如下设置:对话框中,可以进行

499、如下设置:“列列”选项组:设置报表的列数、列宽和列间隔。选项组:设置报表的列数、列宽和列间隔。“打打印印区区域域”选选项项组组:设设置置打打印印区区域域,包包括括可可打打印页和整页。印页和整页。“左左页页边边距距”文文本本框框:直直接接输输入入左左边边距距宽宽度度,或或通过调节右边的微调按钮来改变边距数值。通过调节右边的微调按钮来改变边距数值。“打打印印顺顺序序”选选项项组组:通通过过单单击击相相应应的的按按钮钮来来设设置打印方向。置打印方向。13.1.2使用报表设计器创建报表使用报表设计器创建报表报表的带区报表的带区在在设设计计报报表表时时,“报报表表设设计计器器”使使用用不不同同的的带带区

500、区来来帮帮助助用用户户设计报表的布局。用户还可以使用下列方法添加带区:设计报表的布局。用户还可以使用下列方法添加带区:标标题题:用用于于放放置置标标题题、日日期期、页页码码或或公公司司标标志志以以及及围围绕绕标标题内容的矩形框等。题内容的矩形框等。页页标标头头:放放置置日日期期、页页号号和和列列标标题题,每每页页打打印印一一次次。在在启启动报表设计器时,自动添加页标头。动报表设计器时,自动添加页标头。列列标标头头:每每列列打打印印一一次次。可可选选择择“文文件件”|“页页面面设设置置”菜单选项,在菜单选项,在“页面设置页面设置”对话框中将对话框中将Number设置为大于设置为大于2。组组标标头

501、头:放放置置分分组组字字段段和和分分隔隔线线,可可选选择择“报报表表”|“数数据分组据分组”菜单选项添加组标头。菜单选项添加组标头。13.1.2使用报表设计器创建报表使用报表设计器创建报表细细节节带带区区:放放置置数数据据和和描描述述性性文文本本,每每条条记记录录打打印一次。在启动报表设计器时,自动添加细节带区。印一次。在启动报表设计器时,自动添加细节带区。组组注注脚脚:放放置置分分组组总总结结,每每个个分分组组打打印印一一次次。选选择择“报表报表”|“数据分组数据分组”菜单选项,可以添加组注脚。菜单选项,可以添加组注脚。列注脚:在添加列标头时,可以自动添加列注脚。列注脚:在添加列标头时,可以

502、自动添加列注脚。页页注注脚脚:放放置置日日期期和和页页号号等等,每每页页打打印印一一次次。在在启动报表设计器时,自动添加页注脚。启动报表设计器时,自动添加页注脚。总总结结:放放置置报报表表总总结结,每每个个报报表表只只有有一一个个总总结结带带区区。可可以以选选择择“报报表表”|“标标题题/总总结结”菜菜单单选选项项添添加加总总结带区。结带区。13.1.2使用报表设计器创建报表使用报表设计器创建报表调整报表带区的大小调整报表带区的大小在在报报表表设设计计器器中中,可可以以根根据据需需要要添添加加控控件件的的多多少少来来调调整整每每个个带带区区的的大大小小。这这时时可可将将鼠鼠标标指指针针指指向向

503、要要调调整整大大小小的的带带区区的的下下边边框框,然然后后按按住住鼠鼠标标左左键键上上下下拖拖动动,即即可可将将带带区区调调整整到到适适当当的的大小。大小。用用户户也也可可以以在在带带区区的的条条形形栏栏上上双双击击,利利用用弹弹出的对话框设置带区的高度。出的对话框设置带区的高度。13.1.2使用报表设计器创建报表使用报表设计器创建报表报表设计器的数据环境报表设计器的数据环境数数据据环环境境简简单单地地定定义义了了报报表表的的数数据据源源(包包括括表表和和视视图图),用用它它可可以以填填充充报表中的控件。报表中的控件。例例13-3向向报报表表的的数数据据环环境境中中添添加加表表或或视视图图,并

504、并建建立立表表间间的的关关联联。在在“报报表表设设计计器器”窗窗口口中中,选选择择“显显示示”|“数数据据环环境境”菜菜单单选选项项,打打开开“数数据据环环境境”窗口。窗口。图图13-18“数据环境数据环境”窗口窗口13.1.2使用报表设计器创建报表使用报表设计器创建报表当当“数数据据环环境境”窗窗口口为为当当前前活活动动窗窗口口时时,选选择择“数数据据环环境境”|“添添加加”菜单选项,打开菜单选项,打开“添加表或视图添加表或视图”对话框。对话框。在在“添添加加表表或或视视图图”对对话话框框中中的的“数数据据库库”下下拉拉列列表表框框中中选选择择需需要要打打开开的的包包含含所所需需表表或或视视

505、图图的的数数据据库库,然然后后从从“数数据据库库中中的的表表”列列表表框框中中选选定定一一个表或视图。个表或视图。单击单击“添加添加”按钮,将选定的表或视图添加到数据环境中按钮,将选定的表或视图添加到数据环境中。图图13-19添加表添加表13.1.2使用报表设计器创建报表使用报表设计器创建报表与与表表和和视视图图不不同同的的是是,报报表表本本身身不不能能排排序序记记录录,它它只只能能按按照照表表或或视视图图中中排排序序的的方方式式进进行行显显示示或或打打印印。因因此此,在在创创建建报报表表时时,如如果果要要设设置置报报表表中中记记录录出出现现的的顺顺序序,就就必必须须使使用用一一个个表表或或视

506、视图图的的索索引引来来指指定定排排列列次次序序。如如果果表表或或视视图图中中没没有有所所需需的的索索引引,还还必必须须建建立立索索引引。在在设设置置数数据据环环境境以以后后,用用户户可可以以直直接接在在数数据据环环境境中中设设置索引。置索引。例例13-4为为报报表表添添加加数数据据源源,并并为为数数据据环环境境中中的的表表设设置索引。置索引。在在“报报表表设设计计器器”窗窗口口中中,选选择择“显显示示”|“数数据环境据环境”菜单选项,打开菜单选项,打开“数据环境数据环境”窗口。窗口。13.1.2使用报表设计器创建报表使用报表设计器创建报表在在“数数据据环环境境”窗窗口口中中单单击击右右键键,从

507、从弹弹出出的的快快捷捷菜菜单单中中选选择择“属性属性”,打开,打开“属性属性”面板,如图面板,如图13-20所示。所示。图图13-20“属性属性”面板面板13.1.2使用报表设计器创建报表使用报表设计器创建报表在在“属性属性”面板的面板的“对象对象”下拉列表框中选择下拉列表框中选择Cursorl。在在“属属性性”面面板板中中,切切换换到到“数数据据”选选项项卡卡,选选定定Order属属性性,然然后后在在光标所在处输入一个索引名,或者从可用索引列表中选定一个索引。光标所在处输入一个索引名,或者从可用索引列表中选定一个索引。图图13-21设置索引设置索引13.1.2使用报表设计器创建报表使用报表设

508、计器创建报表单单击击“属属性性”面面板板右右上上角角的的关关闭闭按按钮钮,关关闭闭“属性属性”面板。面板。在在给给数数据据环环境境设设置置索索引引之之后后,根根据据此此数数据据环环境境创创建建的的报报表表将将按按照照指指定定的的索索引引排排序序报报表表记记录录。如如果果数数据据环环境境中中没没有有添添加加任任何何表表或或视视图图,也也就就不能按照上述方法设置索引。不能按照上述方法设置索引。13.1.2使用报表设计器创建报表使用报表设计器创建报表报表控件报表控件报报表表控控件件是是定定义义在在页页面面上上显显示示的的数数据据项项。用用户户可可以以利利用用“报报表表控控件件”工工具具栏栏在在报报表

509、表上上添添加加域域控控件件、标标签签、线条、矩形、图片线条、矩形、图片/OLE绑定型控件等。绑定型控件等。添加域控件添加域控件添添加加域域控控件件有有两两种种方方法法:一一种种是是从从数数据据环环境境中中添添加加域域控控件件,另另一一种种是是从从“报报表表控控件件”工工具具栏栏中中添添加加域域控控件。件。13.1.2使用报表设计器创建报表使用报表设计器创建报表例例13-5使使用用“报报表表控控件件”工工具具栏栏向向报报表表中中添添加加域域控控件。件。在在报报表表设设计计器器窗窗口口中中,选选择择“显显示示”|“报报表表控控件件工工具具栏栏”菜菜单单选选项项,打打开开“报报表表控控件件”工工具具

510、栏栏,如如图图13-22所示。所示。图图13-22“报表控件报表控件”工具栏工具栏13.1.2使用报表设计器创建报表使用报表设计器创建报表在在“报报表表控控件件”工工具具栏栏中中单单击击“域域”按按钮钮,并并在在报报表表布布局局中中要要放放置置域域控控件件的的位位置置上上单单击击,此此时时将将弹弹出出“报报表表表表达达式式”对对话框。话框。图图13-23打开打开“报表表达式报表表达式”对话框对话框13.1.2使用报表设计器创建报表使用报表设计器创建报表在在“报报表表表表达达式式”对对话话框框中中,单单击击“表表达达式式”文文本本框框后后面面的按钮,打开的按钮,打开“表达式生成器表达式生成器”对

511、话框。对话框。在在“报报表表表表达达式式”对对话话框框中中,单单击击“格格式式”文文本本框框后后面面的的按钮。按钮。图图13-24设置数据打印格式设置数据打印格式13.1.2使用报表设计器创建报表使用报表设计器创建报表在在“报报表表表表达达式式”对对话话框框中中设设置置其其它它选选项项,然然后后单击单击“确定确定”按钮关闭此对话框。按钮关闭此对话框。添加标签控件添加标签控件标标签签控控件件是是一一种种应应用用比比较较广广泛泛的的控控件件类类型型。它它用用于于在在报报表表中中显显示示文文本本字字符符的的原原义义。例例如如,在在添添加加域域控控件件时时,可可以以在在该该控控件件前前面面或或上上面面

512、添添加加一一个个标标签签控控件件,说说明明该该域域控控件件显显示示哪哪个个字字段段的的信信息息;在在报报表表的的标标题题带带区区可可以以添添加加标标签签控控件件,用用于于显显示示标标题题或或其其它它说说明明信信息息。在在报报表表布布局局中中,可可以以使使用用“报报表表控控件件”工工具具栏栏添添加加标标签控件。签控件。13.1.2使用报表设计器创建报表使用报表设计器创建报表例例13-6使用使用“报表控件报表控件”工具栏为报表添加标签控件。工具栏为报表添加标签控件。在在“报报表表设设计计器器”窗窗口口中中,选选择择“显显示示”|“报报表控件工具栏表控件工具栏”菜单选项,打开菜单选项,打开“报表控件

513、报表控件”工具栏。工具栏。在在“报报表表控控件件”工工具具栏栏中中单单击击“标标签签”按按钮钮,并并在在报报表表布布局局中中要要放放置置标标签签控控件件的的位位置置单单击击,这这时时,在在报表中将放置一个标签控件。报表中将放置一个标签控件。在光标所在处输入该标签的文本。在光标所在处输入该标签的文本。13.1.2使用报表设计器创建报表使用报表设计器创建报表添加图片添加图片/OLE绑定型控件绑定型控件例例13-7使使用用报报表表控控件件工工具具栏栏,向向报报表表中中添添加加图图片片/OLE绑绑定定型型控控件件,使使报报表表中中显显示示图图片片或或通通用用型型字字段段的的值。值。在在报报表表设设计计

514、器器窗窗口口中中,选选择择“显显示示”|“报报表表控控件工具栏件工具栏”菜单选项,打开菜单选项,打开“报表控件报表控件”工具栏工具栏。在在“报报表表控控件件”工工具具栏栏中中单单击击“图图片片/OLE绑绑定定型型控控件件”按按钮钮,并并在在报报表表中中要要放放置置该该控控件件的的位位置置单单击击,此时将打开此时将打开“报表图片报表图片”对话框,如图对话框,如图13-25所示。所示。13.1.2使用报表设计器创建报表使用报表设计器创建报表图图13-25打开打开“报表图片报表图片”对话框对话框13.1.2使用报表设计器创建报表使用报表设计器创建报表如如果果要要在在报报表表中中添添加加图图片片,可可

515、在在“报报表表图图片片”对对话话框框“文文件件”文文本本框框中中输输入入图图片片文文件件的的名名称称;如如果果要要添添加加OLE绑绑定定型型控控件件,可可在在“字字段段”文本框中输入通用型字段的字段名。文本框中输入通用型字段的字段名。设设置置完完毕毕,单单击击“确确定定”按按钮钮。这这时时,就就可可在在报报表表中中添添加加一一个个默默认认大大小小的的图图文文框框。图图片片或或通通用用型型字字段段存存储储的的OLE对对象象将将显显示示在在该该图图文文框内。框内。13.2标签标签什什么么是是标标签签呢呢?如如果果要要给给“教教师师基基本本情情况况表表”中中的的每每个个人人打打印印一一个个小小纸纸条

516、条,上上面面标标明明他他的的“教教师师代代码码”、“姓姓名名”、“性性别别”和和“职职称称”等等,然然后后贴贴在在他他的的档档案袋上,这就是标签。案袋上,这就是标签。应应用用VisualFoxPro6.0的的标标签签打打印印功功能能能能方方便便地地制制作作出出标标签签。档档签签可可以以说说是是一一种种简简易易的的报报表表,它它与与报报表表的的不不同同之之处处在在于于:报报表表是是以以表表为为单单位位按按一一定定格格式式生生成成一一个个报报表表;而而标标签签则则是是以以表表中中的的记记录录为为单单位位,一一条条记记录生成一个标签。录生成一个标签。13.2.1使用标签向导创建标签使用标签向导创建标

517、签在在VisualFoxPro6.0中中,用用户户可可以以使使用用“标标签签向向导导”或或“标标签签设设计计器器”创创建建标标签签,但但使使用用标标签签向向导导是是创创建标签的最简单的方法。建标签的最简单的方法。例例13-8使使用用标标签签向向导导创创建建以以teacher表表为为数数据据源源的的标标签,并通过预览菜单预览打印效果。签,并通过预览菜单预览打印效果。打打开开“项项目目管管理理器器”对对话话框框,在在“文文档档”选选项项卡卡中中选选择择“标标签签”选选项项,然然后后单单击击“新新建建”按按钮钮,打打开开“新建标签新建标签”对话框。对话框。单单击击“标标签签向向导导”按按钮钮,打打开

518、开标标签签向向导导的的“选选择择表表”对对话话框框,在在“数数据据库库和和表表”下下拉拉列列表表框框中中选选择择数据库和表。数据库和表。13.2.1使用标签向导创建标签使用标签向导创建标签单击单击“下一步下一步”按钮,打开按钮,打开“选择标签类型选择标签类型”对话框,从中选择标签类型。对话框,从中选择标签类型。图图13-26选择标签类型选择标签类型13.2.1使用标签向导创建标签使用标签向导创建标签单单击击“下下一一步步”按按钮钮,打打开开“定定义义布布局局”对对话话框框,在在“可可用用字字段段”列列表表框框中中选选择择字字段段,并并将将其其添添加加到到“选选定定字字段段”列列表表框框中中。其

519、其中中,各各字字段段之之间间可可以使用逗号、句号等加以分隔。以使用逗号、句号等加以分隔。图图13-27定义布局定义布局13.2.1使用标签向导创建标签使用标签向导创建标签单单击击“下下一一步步”按按钮钮,打打开开“排排序序记记录录”对话框,从中选择排序字段。对话框,从中选择排序字段。单单击击“下下一一步步”按按钮钮,打打开开“完完成成”对对话话框,在此对话框中选择保存方式。框,在此对话框中选择保存方式。单单击击“完完成成”按按钮钮,完完成成设设置置,此此时时将将打打开开“标签设计器标签设计器”窗口,显示创建的标签样式。窗口,显示创建的标签样式。13.2.1使用标签向导创建标签使用标签向导创建标

520、签选选择择“显显示示”|“预预览览”菜菜单单选选项项,预预览览创创建建的的标标签签内内容容,结果如图结果如图13-28所示。所示。图图13-28预览标签内容预览标签内容13.2.2使用标签设计器创建标签使用标签设计器创建标签使使用用“标标签签设设计计器器”可可以以创创建建标标签签或或修修改改由由向向导导创创建建的的标标签签。“标标签签设设计计器器”是是报报表表设设计计器器的的一一部部分分,可可以以使使用用相相同同的的菜菜单单栏栏和和工工具具栏栏。唯唯一一区区别别是是两两者者使使用用的的默默认认页页面面和和纸纸张张不不一一样样。正正因因如如此此,在在使使用用“标标签签设设计计器器”创创建建标标签

521、签时时,除除了了要要选选择择标标签的型号以外,其它步骤与使用报表设计器完全一样。签的型号以外,其它步骤与使用报表设计器完全一样。在在创创建建标标签签时时,如如果果在在“新新建建标标签签”对对话话框框中中单单击击“新新建建标标签签”按按钮钮,将将打打开开“标标签签设设计计器器”窗窗口口。用用户户可可以以使使用用报报表表设设计器工具栏和报表控制器工具栏设计标签。计器工具栏和报表控制器工具栏设计标签。在在“标标签签设设计计器器”窗窗口口中中,用用户户可可以以按按照照创创建建报报表表的的方方法法给给标签指定数据,并插入相应的控件。标签指定数据,并插入相应的控件。13.3打印报表或标签打印报表或标签创创

522、建建报报表表或或标标签签的的目目的的是是为为了了把把要要打打印印的的数数据据组组织织成成令人满意的格式,然后通过打印机打印出来。令人满意的格式,然后通过打印机打印出来。13.3.1预览报表或标签预览报表或标签通通过过预预览览报报表表或或标标签签,可可以以不不用用打打印印就就能能看看到到它它的的页页面面外外观观。例例如如,可可以以查查看看数数据据列列的的对对齐齐和和间间隔隔,或或者查看报表或标签是否返回所需的数据。者查看报表或标签是否返回所需的数据。在在预预览览时时,可可以以选选择择是是否否显显示示整整个个页页面面或或缩缩小小到到一一部部分分页页面面。用用户户可可以以通通过过选选择择“显显示示”

523、|“预预览览”菜菜单单项项来来打打开开预预览览窗窗口口,并并使使用用“打打印印预预览览”工工具具栏栏逐逐页页进行预览。报表域标签的预览结果如图进行预览。报表域标签的预览结果如图13-29所示。所示。13.3打印报表或标签打印报表或标签图图13-29预览报表与标签预览报表与标签13.3.2打印已创建的报表或标签打印已创建的报表或标签使使用用报报表表设设计计器器创创建建的的报报表表或或标标签签布布局局文文件件只只是是一一个个外外壳壳,它它把把要要打打印印的的数数据据组组织织成成令令人人满满意意的的格格式式,并并按按照照数数据据源源中中记记录录的的顺顺序序处处理理记记录录。如如果果直直接接使使用用表

524、内的数据,则数据是不会在布局内按组排序的。表内的数据,则数据是不会在布局内按组排序的。在在打打印印一一个个报报表表文文件件之之前前,应应该该确确认认数数据据源源中中已已对对数数据据进进行行了了正正确确的的排排序序。如如果果表表是是数数据据库库的的一一部部分分,可可创创建建视视图图并并且且将将它它添添加加到到报报表表的的数数据据环环境境中中,该该视视图图将将排排序序数数据据。如如果果数数据据源源是是一一个个自自由由表表,则则可可以以创创建并运行查询,然后将查询结果输出到报表中。建并运行查询,然后将查询结果输出到报表中。13.3.2打印已创建的报表或标签打印已创建的报表或标签如如果果要要打打印印报

525、报表表或或标标签签,可可选选择择“文文件件”|“打打印印”菜菜单单项项,打打开开“打打印印”对对话话框框,设设置置打打印印选选项项,然然后后单单击击“确确定定”按按钮钮进行打印。进行打印。图图13-30设置打印选项设置打印选项习题习题1、选择题、选择题在在“报表设计器报表设计器”中可以使用的控件是中可以使用的控件是。A.标签、域控件和线条标签、域控件和线条B.标签、域控件和列表框标签、域控件和列表框C.标签、文本框和列表框标签、文本框和列表框D.布局和数据源布局和数据源在创建快速报表时,基本带区包括在创建快速报表时,基本带区包括。A.标题、细节和总结标题、细节和总结B.页标头、细节和页注脚页标

526、头、细节和页注脚C.组标头、细节和组注脚组标头、细节和组注脚D.报表标题、细节和页注脚报表标题、细节和页注脚在报表设计中,打印每条记录的带区是在报表设计中,打印每条记录的带区是。A.标题标题B.页标头页标头C.细节细节D.总结总结在报表设计中,列标题一般在页的在报表设计中,列标题一般在页的带区。带区。A.标题标题B.细节细节C.页标头页标头D.列标题列标题报表设计器启动后默认的带区有报表设计器启动后默认的带区有个。个。A.3B.4C.5D.6习题习题2、填空题填空题报表标题要通过报表标题要通过控件定义。控件定义。如如果果已已经经定定义义了了对对报报表表分分组组,报报表表中中将将包包含含 和和带

527、区。带区。设设计计好好的的报报表表与与标标签签,既既可可以以通通过过打打印印机机打打印输出,也可以通过印输出,也可以通过预览打印效果。预览打印效果。参考答案1、选择题、选择题A B C C A2、填空题填空题标签标签允许允许组标头、组注脚组标头、组注脚屏幕屏幕第第14章章菜单菜单学习要点学习要点1、规则菜单系统规则菜单系统2、创建菜单方法创建菜单方法3、菜单项访问键和快捷键菜单项访问键和快捷键4、为菜单指定任务为菜单指定任务5、定制菜单系统定制菜单系统6、菜单系统的测试菜单系统的测试第第14章章菜单菜单14.1创建菜单系统创建菜单系统14.2为菜单系统指定任务为菜单系统指定任务14.3定制与测

528、试菜单系统定制与测试菜单系统习题及参考答案习题及参考答案第第14章章菜单菜单菜菜单单为为用用户户提提供供了了一一个个结结构构化化的的可可访访问问的的途途径径,以以方方便便用用户户使使用用应应用用程程序序中中的的命命令令和和工工具具。适适当当的的规规划划、设设计计菜菜单单,可可以以使使应应用用程程序序的的主主要要功功能能得得到到充充分分体体现现,并并能能使使用用户户更更好好地地使使用用应应用用程程序序。在在VisualFoxPro6.0中中,用用户户不不仅仅可可以以方方便便地地创创建建菜菜单单、快快捷捷菜菜单单、单单文文档档界界面面菜菜单单、菜菜单单项项以以及及子子菜菜单单,还还可可以为菜单系统

529、指定任务,控制菜单的运行以及定制菜单系统。以为菜单系统指定任务,控制菜单的运行以及定制菜单系统。14.1创建菜单系统创建菜单系统用用户户在在应应用用程程序序中中查查找找信信息息时时,首首先先看看到到的的便便是是菜菜单单。若若菜菜单单设设计计美美观观且且功功能能完完备备,那那么么,只只要要根根据据菜菜单单的的组组织织形形式式和和内内容容,用用户户就就可可以以很很好好地地理理解解应应用用程程序序。VisualFoxPro6.0提提供供了了“菜单设计器菜单设计器”来创建菜单。来创建菜单。14.1.1创建菜单系统的基本步骤创建菜单系统的基本步骤创创建建菜菜单单系系统统的的大大量量工工作作是是在在“菜菜

530、单单设设计计器器”中中完完成成的的,用用它它可可创创建建实实际际的的菜菜单单、子子菜菜单单和和菜菜单单选选项项。在在VisualFoxPro中中,用户可以通过以下步骤来创建菜单系统:用户可以通过以下步骤来创建菜单系统:规规划划与与设设计计菜菜单单系系统统。此此时时要要确确定定应应用用程程序序需需要要哪哪些些菜菜单、出现在界面的何处,以及哪几个菜单要有子菜单等。单、出现在界面的何处,以及哪几个菜单要有子菜单等。创创建建菜菜单单和和子子菜菜单单。使使用用菜菜单单设设计计器器可可以以定定义义菜菜单单标标题题、菜单项和子菜单。菜单项和子菜单。按实际要求为菜单系统指定任务。按实际要求为菜单系统指定任务。

531、生成菜单程序。生成菜单程序。运行生成的菜单程序,测试菜单系统。运行生成的菜单程序,测试菜单系统。14.1.2规划菜单系统规划菜单系统应应用用程程序序的的实实用用性性一一定定程程度度上上取取决决于于菜菜单单系系统统的的质质量。在设计菜单系统时,需考虑下列准则:量。在设计菜单系统时,需考虑下列准则:(1)按按照照所所要要执执行行的的任任务务组组织织系系统统,而而不不是是按按应应用用程程序的层次组织系统。序的层次组织系统。(2)给每个菜单定义一个有意义的标题。给每个菜单定义一个有意义的标题。(3)按按照照估估计计的的菜菜单单项项使使用用频频率率、逻逻辑辑顺顺序序或或字字母母顺顺序序组组织织菜菜单单项

532、项。如如不不能能预预计计频频率率,也也无无法法确确定定逻逻辑辑顺顺序,可以按字母顺序组织菜单项。序,可以按字母顺序组织菜单项。(4)在菜单项的逻辑组之间放置分隔线。在菜单项的逻辑组之间放置分隔线。(5)将菜单的菜单项数目限制在一个屏幕之内。将菜单的菜单项数目限制在一个屏幕之内。14.1.2规划菜单系统规划菜单系统(6)如如果果菜菜单单项项的的数数目目超超过过了了一一屏屏,则则应应为为其其中中的的一一些菜单项创建子菜单。些菜单项创建子菜单。(7)为为菜菜单单和和菜菜单单项项设设置置访访问问键键或或键键盘盘快快捷捷键键。例例如如,ALT+F可以作为文件菜单的访问键。可以作为文件菜单的访问键。(8)

533、使使用用能能够够准准确确描描述述菜菜单单项项的的文文字字。描描述述菜菜单单项项时时,要使用日常用语而不用计算机术语。要使用日常用语而不用计算机术语。(9)在菜单项中混合使用大小写字母。在菜单项中混合使用大小写字母。规规划划好好菜菜单单系系统统之之后后,就就可可以以使使用用菜菜单单设设计计器器创创建建菜单、快捷菜单、菜单项、子菜单等。菜单、快捷菜单、菜单项、子菜单等。14.1.3快速创建菜单快速创建菜单可可以以使使用用VisualFoxPro6.0提提供供的的“快快速速菜菜单单”功功能能,快快速速创创建建出出与与系系统统菜单完全一样的菜单来。菜单完全一样的菜单来。例例14-1使用使用“快速菜单快

534、速菜单”创建与创建与VisualFoxPro6.0系统菜单相同的菜单。系统菜单相同的菜单。打开打开“项目管理器项目管理器”对话框的对话框的“其他其他”选项选项卡,选择卡,选择“菜单菜单”选项,选项,然后单击然后单击“新建新建”按钮,按钮,打开打开“新建菜单新建菜单”对话框。对话框。图图14-1打开打开“新建菜单新建菜单”对话框对话框14.1.3快速创建菜单快速创建菜单单击单击“菜单菜单”按钮,打开按钮,打开“菜单设计器菜单设计器“对话框。对话框。选选择择“菜菜单单”|“快快速速菜菜单单”,此此时时,在在“菜菜单单设设计计器器”窗窗口口中中自自动动添添加加了了包包含含VisualFoxPro6.

535、0主菜单的信息。主菜单的信息。图图14-2使用使用“快速菜单快速菜单”创建的菜单系统创建的菜单系统14.1.4自定义菜单项自定义菜单项除除使使用用”快快速速菜菜单单”的的菜菜单单命命令令创创建建菜菜单单项项外外,用用户户也也可可以以自自定定义义菜菜单单项项。每每个个菜菜单单项项都都表表示示了了一一个个希希望望执执行行的的VisualFoxPro命命令令或或过过程程,菜菜单单项项也也可可以以包包含子菜单,用以提供其他表单项。含子菜单,用以提供其他表单项。例例14-2定定义义一一个个菜菜单单,其其一一级级菜菜单单包包括括教教师师档档案案管管理理、教学设备管理、学籍管理和工资管理等菜单项。教学设备管

536、理、学籍管理和工资管理等菜单项。打打开开“菜菜单单设设计计器器”窗窗口口,选选择择“其其他他”选选项项中中的的“菜单菜单”项,然后单击右边的项,然后单击右边的“新建新建”按钮。按钮。14.1.4自定义菜单项自定义菜单项在在打打开开的的“新新建建菜菜单单”对对话话框框中中选选择择“菜菜单单”按按钮钮,弹弹出出“菜菜单设计器单设计器”对话框,如图对话框,如图14-3所示。所示。图图14-3“菜单设计器菜单设计器”对话框各列对话框各列14.1.4自定义菜单项自定义菜单项单单击击”菜菜单单名名称称”列列,在在第第一一行行里里输输入入“教教师师档档案案管管理理”,再再单单击击第第二二行行输输入入“教教学

537、学设设备备管管理理”,继继续续在在下下面面的的几几行行里里输输入入其其他他菜菜单单项项,结结果果如如图图14-4所示。所示。图图14-4创建菜单项创建菜单项单单击击菜菜单单设设计计器器关关闭闭按按钮钮,在在弹弹出出的的对对话话框框中中选选择择“是是”,在在打打开开的的“另另存存为为”对对话话框框中中输输入入文文件件名名e14-2,并并单单击击“保保存存”按按钮钮保保存存菜菜单单文文件件,至至此此菜单文件已经创建完成。保存的菜单文件的扩展名为菜单文件已经创建完成。保存的菜单文件的扩展名为.mnx。14.1.5创建子菜单创建子菜单对对于于某某些些菜菜单单项项,用用户户可可以以创创建建包包含含其其他

538、他菜菜单单项项的的子菜单。子菜单。例例14-3为为例例14-2中中“教教师师档档案案管管理理”菜菜单单项项创创建建子子菜菜单单,包包括括“调调入入”、“转转出出”、“分分类类统统计计”和和“查查询询”4个菜单项。个菜单项。选选择择“文文件件”|“打打开开”菜菜单单命命令令,打打开开例例14-2所建立的菜单。所建立的菜单。单单击击第第一一行行“教教师师档档案案管管理理”,在在“结结果果”列列下下拉拉列列表表框框中中选选择择“子子菜菜单单”选选项项,此此时时在在其其右右侧侧将将显显示示“创创建建”按按钮钮。如如果果已已经经有有了了子子菜菜单单,则则将将显显示示“编辑编辑”按钮。按钮。14.1.5创

539、建子菜单创建子菜单单单击击“创创建建”按按钮钮,打打开开下下一一级级菜菜单单设设计计窗窗口口,在在此此可可以以设设计计“教师档案管理教师档案管理”的二级菜单项。如图的二级菜单项。如图14-5所示。所示。图图14-5二级菜单项设计窗口二级菜单项设计窗口14.1.5创建子菜单创建子菜单设设计计完完成成后后,单单击击“菜菜单单级级”下下拉拉列列表表框框,在在弹弹出出的的列列表表中中选选择择“菜菜单单栏栏”项项,即即可可返返回回图图14-4所所示示的的一一级级菜菜单单设设计计窗窗口。口。图图14-6选择选择“菜单级菜单级”中的中的“菜单栏菜单栏”返回上一级菜单返回上一级菜单14.1.5创建子菜单创建子

540、菜单重复第重复第、步骤,创建其他菜单的二级菜单项。步骤,创建其他菜单的二级菜单项。图图14-7创建分隔线创建分隔线创建完毕,关闭创建完毕,关闭“菜单设计器菜单设计器”,并保存修改,并保存修改。14.1.6创建快捷菜单创建快捷菜单在在VisualFoxPro中中,用用户户可可以以使使用用“菜菜单单设设计计器器”创创建建快快捷捷菜菜单单,这这时时可可以以在在“项项目目管管理理器器”对对话话框框的的“其其他他”选选项项卡卡中中选选择择“菜菜单单”选选项项,然然后后单单击击“新新建建”按按钮钮打打开开“新新建建菜菜单单”对对话话框框,并并单单击击“快快捷捷菜菜单单”按按钮钮,此此时时将将打打开开“快快

541、捷捷菜菜单单设设计计器器”对对话话框框。进进入入“快快捷捷菜菜单单设设计计器器”后后,添添加加菜菜单单项项的的过过程程与与创创建菜单的过程完全相同。建菜单的过程完全相同。弹弹出出式式菜菜单单(即即快快捷捷菜菜单单)用用于于在在应应用用系系统统中中临临时时弹弹出出一一个个菜菜单单,它它包包括括4种种命命令令,分分别别用用于于弹弹出出式式菜菜单单定义、选项定义、选项动作定义和弹出式菜单激活。定义、选项定义、选项动作定义和弹出式菜单激活。14.1.6创建快捷菜单创建快捷菜单1.定义弹出式菜单定义弹出式菜单命令格式:命令格式:DEFINEPOPUPMenuNameFROMnRow1,nColumn1T

542、OnRow2,nColumn2INWINDOWWindowName|INSCREENKEYKeyLabelMARGINMESSAGEcMessageTextMOVERMULTISELECTPROMPT FIELD FieldName | PROMPT FILES LIKEFileSkeleton|PROMPTSTRUCTURESCROLL功能:定义弹出式菜单名字及其总体属性。功能:定义弹出式菜单名字及其总体属性。14.1.6创建快捷菜单创建快捷菜单2.定义弹出式菜单的菜单项定义弹出式菜单的菜单项命令格式:命令格式:DEFINEBARnMenuItemNumber1OFMenuNamePROMP

543、TcMenuItemTextBEFOREnMenuItemNumber2|AFTERnMenultemNumber3KEYKeyLabel,cKeyTextMESSAGEcMessageTextSKIPFORlExpression功能:定义弹出式菜单的一个菜单项及其属性。功能:定义弹出式菜单的一个菜单项及其属性。14.1.6创建快捷菜单创建快捷菜单3.定义弹出式菜单菜单项的动作定义弹出式菜单菜单项的动作命令格式命令格式1:ONSELECTIONBARnMenuItemNumberOFMenuNameCommand功能:指定选择特定菜单项时应执行的命令。功能:指定选择特定菜单项时应执行的命令。命

544、令格式命令格式2:ONSELECTIONPOPUPMenuName|ALLCommand功功能能:从从特特定定菜菜单单或或所所有有菜菜单单上上选选择择任任一一菜菜单单项项时时,执行指定的命令。执行指定的命令。14.1.6创建快捷菜单创建快捷菜单4.激活弹出式菜单激活弹出式菜单命令格式:命令格式:ACTIVATEPOPUPMenuNameATnRow,nColumnBARnMenuItermberNOWAITREST功能:显示并且激活一个菜单。功能:显示并且激活一个菜单。14.1.6创建快捷菜单创建快捷菜单例例14-4使使用用命命令令设设计计一一弹弹出出式式菜菜单单,支支持持多多重重选选择择菜菜

545、单单项项,选选择择一一项项后后在在主屏幕显示相应的月份。主屏幕显示相应的月份。(a)14.1.6创建快捷菜单创建快捷菜单(b)图图14-8程序执行结果程序执行结果14.1.6创建快捷菜单创建快捷菜单选选择择“文文件件”|“新新建建”菜菜单单命命令令,在在打打开开的的“新新建建”对对话话框框的的“文文件件类类型型”选选项项组组中中选选择择“程程序序”项项。并并单单击击右右侧侧的的“新新建建文文件件”按按钮,打开标题为钮,打开标题为“程序程序1”的编辑框。的编辑框。在编辑框中输入程序内容。在编辑框中输入程序内容。单单击击程程序序执执行行按按钮钮,在在弹弹出出的的对对话话框框中中选选择择“是是”按按

546、钮钮,指指定定程程序序文文件件名名并并保保存存,此此时时执执行结果即如图行结果即如图14-8(a)、(b)所示。所示。14.2为菜单系统指定任务为菜单系统指定任务在在创创建建菜菜单单系系统统时时,必必须须为为菜菜单单和和菜菜单单项项指指定定所所执执行行的的任任务务,如如显显示示表表单单、工工具具栏栏以以及及其其他他的的菜菜单单系系统统,还还应应定定义义访访问问菜菜单单系系统统的的访访问问键键、键键盘盘快快捷捷键键,以及菜单可用的条件。以及菜单可用的条件。14.2.1指定访问键和快捷键指定访问键和快捷键图图14-9指定访问键指定访问键14.2.1指定访问键和快捷键指定访问键和快捷键例例14-5为

547、为例例14-2设设计计的的“教教师师档档案案管管理理”菜菜单单项项中中增增加加子子菜菜单单项项“退退出出”,并为该项设置快捷键并为该项设置快捷键CTRL+Q。打打开开菜菜单单文文件件e14-2.mnx,编编辑辑“教教师师档档案案管管理理”菜菜单单,在在其其子子菜菜单单最最后后添加添加“退出退出”菜单项,如图菜单项,如图14-10所示。所示。图图14-10添加添加“退出退出”菜单项菜单项14.2.1指定访问键和快捷键指定访问键和快捷键单击单击“退出退出”项中项中“选项选项”列的按钮,打开列的按钮,打开“提示选项提示选项”对话框。对话框。图图14-11设置快捷键设置快捷键14.2.1指定访问键和快

548、捷键指定访问键和快捷键单单击击“键键标标签签”文文本本框框将将插插入入点点置置于于其其中中,然然后后按按下下一一对对组组合合键键,即即可可创创建建快快捷捷键键,本本例例中中按按下下Ctrl键键和和字字母母键键Q。如如果果一一个个菜菜单单项项没没有有快快捷捷键键,VisualFoxPro将将在在键键标标签签文文本本框框中中显显示示按按下下要要定定义义的的键。键。在在“键键说说明明”文文本本框框中中添添加加用用户户希希望望在在菜菜单单项项的的旁旁边边出出现现的的文文本本。默默认认情情况况下下,“键键说说明明”重重复复“键键标签标签”标记。标记。设设置置完完毕毕,单单击击“确确定定”按按钮钮,生生成

549、成菜菜单单程程序序,即可运行菜单查看更改结果。即可运行菜单查看更改结果。14.2.2启用或禁用菜单项启用或禁用菜单项在在VisualFoxPro中中,可可以以根根据据逻逻辑辑条条件件启启用用或或废废止止菜单及菜单项。菜单及菜单项。例例14-6继继续续设设计计例例14-2中中生生成成的的菜菜单单,要要求求在在每每月月的的1日日至至25日日之之间间“教教师师档档案案管管理理”菜菜单单项项中中的的“分分类类统计统计”子菜单无效。子菜单无效。打打开开菜菜单单文文件件e14-2.mnx,单单击击“教教师师档档案案管管理理”菜菜单单项项前前的的移移动动按按钮钮来来选选中中菜菜单单项项。单单击击“结结果果”

550、列列的的“编编辑辑”按按钮钮,打打开开二二级级菜菜单单设设计计窗窗口口,如如图图14-5所示。所示。单单击击“分分类类统统计计”菜菜单单项项“选选项项”列列中中的的按按钮钮,打开打开“提示选项提示选项”对话框。对话框。14.2.2启用或禁用菜单项启用或禁用菜单项单单击击“跳跳过过”文文本本框框,在在文文本本框框内内输输入入表表达达式式“day(date()=25”,此此表表达达式式将将用用于于确确定定是是否否启启用用菜菜单单或或菜菜单单项项。如如果果此此表表达达式式取取值值为为“假假”(.F.),则启用菜单或菜单项,否则废止菜单或菜单项。则启用菜单或菜单项,否则废止菜单或菜单项。图图14-12

551、设置表达式设置表达式14.2.2启用或禁用菜单项启用或禁用菜单项单单击击“确确定定”按按钮钮,返返回回子子菜菜单单设设计计窗窗口口,选选择择“菜菜单单”|“生生成成”菜菜单命令重新生成菜单程序(扩展名为单命令重新生成菜单程序(扩展名为.mpr)。)。运运行行菜菜单单。打打开开“教教师师档档案案管管理理”菜菜单单,若若当当前前日日期期在在当当月月的的1日日至至25日之间,日之间,可见可见“分类统计分类统计”菜单项此时变为灰色,处于无效或禁用状态。菜单项此时变为灰色,处于无效或禁用状态。图图14-13当前无效的打印设备清单菜单项当前无效的打印设备清单菜单项14.2.3为菜单指定任务为菜单指定任务选

552、选择择一一个个菜菜单单或或菜菜单单项项,将将执执行行相相应应的的任任务务,如如显显示示表表单单、工工具具栏栏或或另另一一个个菜菜单单系系统统等等。要要执执行行任任务务,菜菜单单或或菜菜单单项项就就必必须须执执行行一一个个VisualFoxPro命命令。此命令可以是一条语句,也可以是一个过程调用。令。此命令可以是一条语句,也可以是一个过程调用。1.执行命令完成某项任务执行命令完成某项任务要要完完成成某某项项任任务务,可可以以为为菜菜单单或或菜菜单单项项指指定定一一个个命命令令。该该命命令令可可以以是是任任何何有有效效的的VisualFoxPro命命令令,包包括括对对程程序序和和过过程程的的调调用

553、用,选选择择“结结果果”列列中中的的“过程过程”选项后,即可在出现的文本编辑窗口中编辑所需过程。选项后,即可在出现的文本编辑窗口中编辑所需过程。例例14-7继继续续设设计计例例14-2中中生生成成的的菜菜单单,要要求求选选择择“教教师师档档案案管管理理”菜菜单单下下的的“查询查询”菜单项后,会弹出菜单项后,会弹出teacher表的浏览窗口。表的浏览窗口。打打开开菜菜单单文文件件e14-2.mnx,选选择择“教教师师档档案案管管理理”菜菜单单下下的的“查查询询”菜菜单单项。项。14.2.3为菜单指定任务为菜单指定任务单单击击打打开开“结结果果”列列的的下下拉拉列列表表框框,从从中中选选择择“命命

554、令令”选选项项,此此时时列列表框后会显示文本框。在文本框中输入命令,这里输入了表框后会显示文本框。在文本框中输入命令,这里输入了BROWSE。图图14-14输入命令输入命令设置完毕,重新生成菜单程序,关闭菜单设计器对话框,即可运行菜单。设置完毕,重新生成菜单程序,关闭菜单设计器对话框,即可运行菜单。14.2.3为菜单指定任务为菜单指定任务2.显示表单和对话框显示表单和对话框在在菜菜单单或或菜菜单单项项上上,使使用用命命令令或或过过程程可可以以显显示示编编译译过过的的表表或或对对话话框框。例例如如,要要显显示示名名为为teacher的的表表,可可使用下列命令:使用下列命令:DOFORMteach

555、er3.使用过程完成任务使用过程完成任务用用户户可可以以为为菜菜单单或或菜菜单单项项指指定定一一个个过过程程。要要为为一一个个菜菜单单项项指指定定过过程程,可可选选定定菜菜单单项项,在在结结果果列列的的下下拉拉列列表表框框中中选选择择“过过程程”,然然后后单单击击列列表表框框后后出出现现的的“创创建建”按按钮钮,即即可可在在打打开开的的“过过程程编编辑辑”框框中中输输入入要要执执行的一系列命令。行的一系列命令。14.2.3为菜单指定任务为菜单指定任务4.向菜单系统添加初始化代码向菜单系统添加初始化代码打打开开菜菜单单设设计计器器对对话话框框,选选择择“显显示示”|“常常规规选选项项”菜菜单命令

556、,打开单命令,打开“常规选项常规选项”对话框。对话框。在在“菜菜单单代代码码”选选项项组组中中选选择择“设设置置”复复选选框框,然然后后单单击击“确定确定”按钮。按钮。在在菜菜单单设设计计器器的的“设设置置”代代码码窗窗口口中中,输输入入适适当当的的初初始始化化代码。代码。关闭菜单设计器对话框。关闭菜单设计器对话框。5.向菜单系统添加清理代码向菜单系统添加清理代码14.3定制与测试菜单系统定制与测试菜单系统创创建建一一个个基基本本的的菜菜单单系系统统后后,还还应应对对它它进进行行定定制制。所所谓谓定定制制就就是是添添加加状状态态栏信息,定义菜单的位置,或定义默认过程等。栏信息,定义菜单的位置,

557、或定义默认过程等。14.3.1显示状态栏信息显示状态栏信息在在选选择择一一个个菜菜单单或或菜菜单单项项时时,通通常常希希望望在在状状态态栏栏中中显显示示说说明明该该菜菜单单或或菜菜单项的信息。这种信息可以帮助用户了解所选菜单的有关情况。单项的信息。这种信息可以帮助用户了解所选菜单的有关情况。例例14-8继继续续设设计计例例14-2中中生生成成的的菜菜单单,要要求求单单击击“教教师师档档案案管管理理”菜菜单单后后,在状态栏里显示在状态栏里显示“教师档案的插入与删除,权限管理!教师档案的插入与删除,权限管理!”。打打开开菜菜单单文文件件e14-2.mnx,单单击击“教教师师档档案案管管理理”菜菜单

558、单项项所所在在行行的的“选选项项”按钮,打开按钮,打开“提示选项提示选项”对话框。对话框。在在“信信息息”文文本本框框中中输输入入说说明明信信息息,并并用用引引号号将将字字符符串串括括起起来来。也也可可以以单单击击文文本本框框后后面面的的按按钮钮,在在打打开开的的“表表达达式式生生成成器器”对对话话框框生生成成文文本本字字符符串。如图串。如图14-15所示。所示。14.3.1显示状态栏信息显示状态栏信息图图14-15设置菜单说明信息设置菜单说明信息重重新新生生成成菜菜单单程程序序,运运行行菜菜单单,当当单单击击“教教师师档档案案管管理理”打开子菜单时,状态栏里会显示前面输入的文本信息。打开子菜

559、单时,状态栏里会显示前面输入的文本信息。14.3.2定义菜单标题的位置定义菜单标题的位置在在应应用用程程序序中中,可可以以预预先先设设置置用用户户自自定定义义菜菜单单标标题题的的位位置置。在在“常常规规选选项项”对对话话框框中中的的“位位置置”选选项项组组中中,通通过过选选择择某某一一个个单单选选按按钮钮,可可以以设设置置自自定定义义菜菜单单相相对对于于活活动动菜菜单单系系统统的的相相对对位位置置。另另外外,也也可可以以指指定定在编辑一个对象时菜单标题的位置。在编辑一个对象时菜单标题的位置。如如果果要要为为用用户户自自定定义义的的菜菜单单标标题题指指定定相相对对位位置置,可可打打开开“菜菜单单

560、设设计计器器”对对话话框框,选选择择“显显示示”|“常常规规选选项项”菜菜单单命命令令,打打开开“常常规规选选项项”对对话话框框,然然后后在在“位位置置”选选项项组组中中选选择择位位置置选选项项,如如“替替换换”、“追追加加”、“在在之之前前”或或“在在之之后后”,如图,如图14-16所示。所示。14.3.2定义菜单标题的位置定义菜单标题的位置图图14-16为用户自定义的菜单标题指定相对位置为用户自定义的菜单标题指定相对位置14.3.3为菜单系统定义默认过程为菜单系统定义默认过程用用户户可可以以创创建建一一个个全全局局过过程程,应应用用于于整整个个菜菜单单系系统统。以以后后,如如果果选选定定一

561、一个个没没有有指指定定过过程程的的菜菜单单,就就运运行行此此过过程程。例例如如,假假设设用用户户正正在在开开发发一一个个应应用用程程序序,其其中中有有的的菜菜单单还还没没有有设设计计好好子子菜菜单单或或过过程程。这这时时,用用户户可可以以为为这这些些菜菜单单创创建建一一个个临临时时占占位位过过程程,当当选选定定这这些些菜菜单单时时,执执行行此此程程序序,这这样样有有利利于于调调试试。比比如如,用用户户 可可 以以 创创 建建 一一 个个 包包 含含 下下 列列 函函 数数 的的 通通 用用 的的 临临 时时 过过 程程 : MESSAGEBOX(“对不起,此功能尚未定义!对不起,此功能尚未定义

562、!”)要要创创建建默默认认过过程程,只只要要在在“常常规规选选项项”对对话话框框的的“过程过程”文本框中编写或调用过程内容即可。文本框中编写或调用过程内容即可。14.3.4测试菜单系统测试菜单系统在在设设计计菜菜单单系系统统时时,可可以以预预览览整整个个菜菜单单系系统统的的效效果果。而而在在生生成成菜菜单单程程序序后后则则可可以以对对系系统统进进行行测测试试和和调调试试。若若要要在在设设计计菜菜单单系系统统时时预预览览整整个个系系统统可可在在菜菜单单设设计计器器对对话话框框中中单单击击“预预览览”按按钮钮。这这时时,已已经经定定义义的的菜菜单单系系统统将将出出现现在在屏屏幕幕的的最最外外层层。

563、此此外外,“预预览览”对对话话框框可可以以显显示示出出菜菜单单系系统统的的文文件件名名(或或临临时时文文件件的的文文件件名名)。如如果果选选定定一一个个菜菜单单标标题题或或菜菜单单项项,则则会会在在“预预览览”对对话话框框中中显显示示它它,并并显显示示为为菜菜单单或或菜菜单单项项指指定定的命令。的命令。要要真真正正看看到到菜菜单单运运行行结结果果,就就要要将将其其生生成成菜菜单单程程序,其扩展名为序,其扩展名为.mpr。14.3.4测试菜单系统测试菜单系统例例14-10测试前面创建的菜单系统。测试前面创建的菜单系统。在在“菜单设计器菜单设计器”对话框中打开菜单系统。对话框中打开菜单系统。选择选

564、择“菜单菜单”|“生成生成”菜单命令,打开菜单命令,打开“生成菜单生成菜单”对话框。对话框。图图14-17打开打开“生成菜单生成菜单”对话框对话框14.3.4测试菜单系统测试菜单系统在在“生生成成菜菜单单”对对话话框框的的“输输出出文文件件”文文本本框框中中输输入入生生成成的的菜菜单单程程序序的的名名称称,或或通通过过选选择择对对话话钮钮进进行行输入。输入。单单击击“生生成成”按按钮钮,就就会会生生成成扩扩展展名名为为.mpr的的菜菜单程序文件。单程序文件。选择选择“程序程序”|“运行运行”菜单命令,运行此程序。菜单命令,运行此程序。如如果果在在运运行行一一个个应应用用程程序序(.exe)时时

565、,它它的的主主程程序序是是一一个个菜菜单单,且且应应用用程程序序刚刚刚刚显显示示时时,菜菜单单即即终终止止运运行行,则则应应在在清清理理代代码码中中包包含含READEVENTS命命令令,并并为为退退出菜单系统的菜单命令指定出菜单系统的菜单命令指定CLEAR命令。命令。习题习题1.选择题选择题设计菜单要完成的最终操作是设计菜单要完成的最终操作是_。A.创建主菜单及子菜单创建主菜单及子菜单B.指定各菜单任务指定各菜单任务C.浏览菜单浏览菜单D.生成菜单程序生成菜单程序为为一一个个表表单单建建立立了了快快捷捷菜菜单单,要要打打开开这这个个菜菜单单应应当当使使用用_。A.热键热键B.快捷键快捷键C.事

566、件事件D.菜单菜单将将一一个个预预览览成成功功的的菜菜单单存存盘盘,再再运运行行该该菜菜单单,却却不不能能执执行行,这可能是因为这可能是因为_。A.没有放到项目中没有放到项目中B.没有生成没有生成C.要用命令方式要用命令方式D.要编入程序要编入程序习题习题2.填空题填空题菜单栏是用于放置菜单栏是用于放置_。菜单标题是菜单标题是_。菜菜单单的的任任务务可可以以是是_、_和和_。菜单的调用是通过菜单的调用是通过_命令完成的。命令完成的。参考答案参考答案1、选择题、选择题D C B2、填空题填空题多个菜单项多个菜单项各个菜单的名称各个菜单的名称子菜单、命令、过程子菜单、命令、过程DO第第15章章综合

567、实例综合实例学习要点学习要点1、数据需求和功能需求数据需求和功能需求2、逻辑设计和物理设计逻辑设计和物理设计3、总体设计、用户界面设计总体设计、用户界面设计4、设计、设计与编码、数据装载与编码、数据装载第第15章章综合实例综合实例15.1需求分析需求分析15.2数据库设计数据库设计15.3应用程序设计应用程序设计15.4运行设计运行设计第第15章章综合实例综合实例本本章章通通过过一一个个实实例例“摩摩托托车车修修理理管管理理系系统统”来来介介绍绍VisualFoxPro6.0应用系统的开发过程。应用系统的开发过程。15.1需求分析需求分析15.1.1数据需求数据需求在在调调研研的的过过程程中中

568、,用用户户提提供供了了该该系系统统所所需需的的输输入入、输输出出单单据据(见见图图15-115-7)。输输入入单单据据包包括括修修车车登登记记单单、摩摩托托车车修修理理单单、零零件件入入库库单单和和零零件件出出库库单单等等4种种;输输出出单单据据包包括括季季度度零零件件订订货货计计划划、摩摩托托车车修修理理发发票票和和工工资资月月报报表表等等3种种。不不少少单单据据都都填填写写了了数数据据,这这是是开开发发人员所需要的,同时也为数据库设计提供了数据样例。人员所需要的,同时也为数据库设计提供了数据样例。15.1.2功能需求功能需求功功能能分分析析的的任任务务,是是弄弄清清用用户户对对目目标标系系

569、统统数数据据处处理理功功能能所所提提出出的的需需求求。根根据据系系统统目目标标和和数数据据需需求求并并与与用用户户充充分分讨讨论论后后,本本例的功能需求可归纳为以下例的功能需求可归纳为以下5个方面。个方面。1.数据登记数据登记登登记记功功能能用用于于把把各各种种手手填填单单据据中中的的数数据据及及时时登登记记到到系系统统将将要要定定义义的的表表中中,还还要要求求能能进进行行修修改改。这这些些单单据据包包括括修修车车登登记记单单、摩托车修理单、零件入库单和零件出库单。摩托车修理单、零件入库单和零件出库单。2.查询查询能能查查询询登登记记单单、修修理理单单、摩摩托托车车、车车主主、修修理理工工、零

570、零件件库库存存的有关数据。的有关数据。15.1.2功能需求功能需求3.编编制制零零件件订订货货计计划划需需要要找找出出要要订订货货的的零零件件,订订货货条条件件为为:零零件库存量最低库存量。订货量可由用户输入或修改。件库存量最低库存量。订货量可由用户输入或修改。4.打印发票打印发票发发票票中中除除包包含含顾顾客客、摩摩托托车车及及修修理理项项目目等等数数据据外外,还还要要计计算算出修车费,修车费包括修理费和零件费,按下列各式计算:出修车费,修车费包括修理费和零件费,按下列各式计算:零件费零件费=(零件价格(零件价格耗用数量)耗用数量)修理费修理费=小时工资小时工资修理工时修理工时3总计总计=零

571、件费零件费+修理费修理费不不难难看看出出,发发票票包包含含的的信信息息来来自自修修车车登登记记单单、摩摩托托车车修修理理单单和零件出库单等各种单据,这是一项涉及面很广的功能。和零件出库单等各种单据,这是一项涉及面很广的功能。5.打印修理工工资月报表打印修理工工资月报表某修理工的月工资某修理工的月工资=修理小时修理小时小时工资小时工资15.2数据库设计数据库设计数数据据库库设设计计的的任任务务是是确确定定系系统统所所需需的的数数据据库库。数数据据库库是是表表的的集集合合,通通常常一一个个简简单单系系统统只只需需一一个个数数据据库库。数数据据库库设设计计可可分分为为逻逻辑辑设设计计与与物物理理设设

572、计计两两个个步步骤骤。第第一一步步确确定定数数据据库库所所包包含含的的表表及及其其字字段段。第第二二步步确确定定表表的的具具体体结结构构,即即确确定定字字段段的的名名称称、类类型及宽度;此外还要确定索引,为建立表的关联准备条件。型及宽度;此外还要确定索引,为建立表的关联准备条件。15.2.1逻辑设计逻辑设计设设计计从从分分析析输输入入数数据据着着手手,输输入入数数据据中中的的某某类类相相关关数数据据可可以以归归纳纳为为一一个个表表。对对需需要要同同时时调调用用的的若若干干表表,应应使使它它们们符符合合关关联联要要求求。数数据据库库设设计计好好后后,可可通通过过分分析析输输出出数数据据来来验验证

573、证其其可可用用性性,若若发发现现有有的的输输出出数数据据不不能能从从输输入入数数据据导导出出,须须继继续续向向用用户户征征集集数据。数据。15.2.2物理设计物理设计下下面面列列出出摩摩托托车车修修理理管管理理系系统统所所有有表表的的结结构构与与索索引引,为为便便于于理解,也列出表的部分记录。理解,也列出表的部分记录。1.修理单修理单(d:mtcxlxld.dbf)2.摩托车摩托车(d:mtcxlmtc.dbf)3.车主车主(d:mtcxlcz.dbf)4.修理工修理工(d:mtcxlxlg.dbf)5.零件用量零件用量(d:mtcxlljyl.dbf)6.零件库存(零件库存(d:mtcxll

574、jkc.dbf)除除上上述述6个个表表外外,零零件件入入库库、出出库库时时还还需需要要暂暂存存表表。零零件件入入库库 表表 为为 ljrk.dbf, 其其 结结 构构 与与 ljkc.dbf相相 同同 。 零零 件件 出出 库库 表表(d:mtcxlljck.dbf)的结构为的结构为:ljck(零件号零件号c(6),数量数量n(2))。)。15.3应用程序设计应用程序设计15.3.1总体设计总体设计按按照照功功能能分分类类是是总总体体设设计计中中常常用用的的方方法法,系系统统的的总总体体结结构构可可用用层层次次图图(HierarchyChart简简称称HC图图)来来表表示示(见见图图15-9)

575、。这这种种图图自自上上而而下下进进行行分分层层:第第一一层层为为系系统统层层,通通常常对对应应主主程程序序;第第二二层层为为子子系系统统层层,一一般般起起分分类类控控制制作作用用,但但是是当当该该层层没没有有下下一一层层次次时时也也可可直直接接用用来来表表达达功功能能(例例如如图图中中的的查查询询功功能能);第第三三层层为功能层;第四层为操作层。为功能层;第四层为操作层。15.3.2初始用户界面设计初始用户界面设计从从总总体体结结构构图图很很容容易易列列出出应应用用程程序序的的菜菜单单,由由总总体体结结构构图图转转换换到到菜菜单单时时,其其对对应应情情况况如如下下:系系统统层层对对应应菜菜单单

576、文文件件,子子系系统统层层对对应应菜菜单单标标题题;功能层则对应子菜单项。功能层则对应子菜单项。15.3.3模块设计与编码模块设计与编码1.主文件主文件(mtcxl.prg)菜菜单单文文件件名名定定为为mtcxlcd(摩摩托托车车修修理理菜菜单单),并并设设置置一一个个主主文文件件来来调调用用它。主文件代码编写如下:它。主文件代码编写如下:SETTALKOFFSETDEFATOd:vfp6mtcxlCLEAALLSETVIEWTOsjhj.vuePUBLICxldh,zljfXldh=SPACE(4)DOFORMfmKEYBCTRL+F4MODIWINDSCREENTITL摩托车修理管理系统摩

577、托车修理管理系统CLEA15.3.3模块设计与编码模块设计与编码*以上为初始化环境代码以上为初始化环境代码DOmtcxlcd.mprREADEVENTQUIT 图图15-11摩托车修理管理系统的数据环境摩托车修理管理系统的数据环境15.3.3模块设计与编码模块设计与编码2.菜单程序菜单程序(mtcxlcd.mpr)往往命命令令窗窗口口键键入入命命令令MODIMENUmtcxlcd,就就会会出现菜单设计窗口。出现菜单设计窗口。“退出退出”菜单项的命令菜单项的命令CLEAREVENTS按按图图15-10设设置置调调用用各各表表单单的的命命令令,例例如如对对“修修车车登记登记”菜单项可键入命令菜单项

578、可键入命令DOFORMxcdj。从从 菜菜 单单 文文 件件 mtcxlcd.mnx生生 成成 菜菜 单单 程程 序序mtcxlcd.mpr。15.3.3模块设计与编码模块设计与编码3.“修车登记修车登记”表单表单(xcdj.scx)修修车车登登记记表表单单用用于于输输入入、修修改改或或添添加加修修车车登登记记单单,它具有以下特点:它具有以下特点:将将多多个个表表的的输输入入、修修改改、添添加加等等多多种种维维护护功功能能集集于于一一体体,并并使使屏屏幕幕显显示示与与修修车车登登记记单单格格式式一一致致,方方便便用户操作。用户操作。能能提提供供翻翻页页和和寻寻页页两两种种方方式式来来查查找找修

579、修车车登登记记单单。寻页按钮供用户直接键入寻页按钮供用户直接键入xld.编号来查找记录。编号来查找记录。增增页页按按钮钮用用于于增增加加新新的的修修车车登登记记单单,登登记记单单编编号号自动加自动加1,并可增加新的摩托车与车主。,并可增加新的摩托车与车主。15.3.3模块设计与编码模块设计与编码若若输输入入的的摩摩托托车车牌牌号号在在mtc.dbf中中已已有有,则则摩摩托托车车与与车车主主的的数数据据会会自自动动填填入入表表格格。这这不不仅仅可可减减少少输输入入击击键键,而而且且减减少少了了输输入入出出错错机机会会。自自动动填填入入的的数数据据还还允允许许立立即即修修改改,此此时时系系统统会会

580、更更新新有有关关的的表表,即即具具有有实实时时维维护护摩摩托托车车与与车车主主数据的能力。数据的能力。设设有有专专用用按按钮钮,可可当当场场临临时时维维护护摩摩托托车车与与车主数据。车主数据。15.3.3模块设计与编码模块设计与编码现将设计现将设计xcdj.scx表单的主要操作步骤列出如下:表单的主要操作步骤列出如下:创创建建表表单单:往往命命令令窗窗口口键键入入命命令令MODIFYFORMxcdj,便便出出现现标题为标题为xcdj.scx的表单设计器窗口。的表单设计器窗口。图图15-12“修车登记修车登记”表单窗口表单窗口15.3.3模块设计与编码模块设计与编码Forml的属性设置的属性设置

581、Caption属属 性性 设设 置置 为为 “修修 车车 登登 记记 ”;AutoCenter属属性性设设置置为为.T.,使使表表单单在在主主窗窗口口内内居中显示。居中显示。在表单上创建各标签和文本框在表单上创建各标签和文本框添添加加表表格格线线条条:利利用用表表单单控控件件工工具具栏栏的的线线条按钮画出表格的所有横线和竖线。条按钮画出表格的所有横线和竖线。15.3.3模块设计与编码模块设计与编码创建命令按钮组创建命令按钮组图图15-13“输入修理单号输入修理单号”表单窗口表单窗口15.3.3模块设计与编码模块设计与编码4.“输入修理单号输入修理单号”表单(表单(srxldh.scx)创创建建

582、表表单单:往往命命令令窗窗口口键键入入命命令令MODIFYFORMsrxldh,便出现表单设计器窗口。便出现表单设计器窗口。属属性性设设置置:Form1的的Caption属属性性为为“输输入入”;Labell的的Caption属属性性为为“请请输输入入修修理理单单号号:”;Command1的的Caption属性为属性为“确定确定”。Text1文本框文本框的的LostFocus事件代码编写如下:事件代码编写如下:xldh=THISFORM.Text1.VALUECommand1命命令令按按钮钮的的Click事事件件代代码码编编写写如如下下:THISFORM.Release15.3.3模块设计与编

583、码模块设计与编码5.“摩托车修理摩托车修理”表单表单(mtcxl.scx)图图15-14“摩托车修理摩托车修理”表单窗口表单窗口15.3.3模块设计与编码模块设计与编码创创 建建 表表 单单 :往往 命命 令令 窗窗 口口 键键 入入 命命 令令 MODIFYFORMmtcxl,便出现表单设计器窗口。便出现表单设计器窗口。Form1的属性设置的属性设置将将Caption属属性性设设置置为为“摩摩托托车车修修理理.修修理理情情况况”。按图按图15-14在表单上创建各标签和文本框在表单上创建各标签和文本框在在xlg表选取修理工的工号,并存入表选取修理工的工号,并存入xld.工号工号Form1的的R

584、efresh事件代码编写事件代码编写15.3.3模块设计与编码模块设计与编码6.“零件订货计划零件订货计划”表单(表单(ljdh.scx)创创建建表表单单:往往命命令令窗窗口口键键入入命命令令MODIFYFORMljdh,便便出出现现表表单单设设计器窗口,如图计器窗口,如图15-15所示。所示。图图15-15“零件订货计划零件订货计划”表单窗口表单窗口15.3.3模块设计与编码模块设计与编码按按图图15-15在在表表单单上上创创建建Label1标标签签和和List1列列表表框框各一个。各一个。创创建建变变量量属属性性jd(表表示示“季季度度”):用用表表单单菜菜单单的的新新建建属属性性命命令令

585、创创建建一一个个变变量量属属性性jd,然然后后在在属属性性窗窗口将该变量属性的初值设置为口将该变量属性的初值设置为“1”。属性设置属性设置List1的的Init事件代码事件代码List1的的DblClick事件代码事件代码15.3.3模块设计与编码模块设计与编码7.“打印发票打印发票”表单表单(dyfp.scx)创创建建表表单单:往往命命令令窗窗口口键键入入命命令令MODIFYFORMdyfp,便便出出现现表表单单设设计计器器窗口,如图窗口,如图15-16所示。所示。图图15-16“打印发票打印发票”表单窗口表单窗口15.3.3模块设计与编码模块设计与编码按按图图15-16在在表表单单上上创创

586、建建Label1标标签签Text1文文本框和本框和Command1命令按钮各一个。命令按钮各一个。属属性性设设置置:将将Form1的的Caption属属性性设设置置为为“打打 印印 发发 票票 ”; 将将 Command1命命 令令 按按 钮钮 的的Caption属性设置为属性设置为“确定确定”。Text1的的LostFocus事件代码编写如下:事件代码编写如下:xldh=THISFORM.Text1.VALUECommand1的的Click事件代码事件代码15.3.3模块设计与编码模块设计与编码8.“发票发票”报表报表(fp.frx)图图15-17“发票发票”报表设计器报表设计器15.3.3

587、模块设计与编码模块设计与编码创创建建报报表表:在在命命令令窗窗口口键键入入命命令令MODIFYREPORTfp,便出现便出现fp.frx报表设计器窗口。报表设计器窗口。创创建建报报表表变变量量ljf(零零件件费费)和和xlf(修修理理费费):选选定定报报表表菜菜单单的的变变量量选选项项在在报报表表变变量量对对话话框框的的变变量量列列表表中中键键入入ljf在在“要要存存储储的的值值”与与“初初始始值值”文文本本框框中均键入中均键入zljf。可可用用类类似似的的方方法法来来创创建建xlf报报表表变变量量,但但在在“要要存存储储的的值值”与与“初初始始值值”两两框框中中均均键键入入:xld.修修理理

588、小小时时*xlg.小时工资小时工资*3。15.3.3模块设计与编码模块设计与编码在在报报表表设设计计器器窗窗口口中中创创建建表表达达式式控控件件:用用报报表表控控件件工工具具栏栏中中的的域域控控件件按按钮钮创创建建如如图图15-17所所示示的的9个个表表达达式式控控件件,它它们们分分别别是是xld.完完工工日日期期,mtc.车车主主名名,cz.地地址址,xld.牌牌号号,xld.修修理理项项目目,xld.送送修修日日期期,ljf,xlf和和ljf+xlf。ljf和和ljf+xlf两两个个表表达达式式控控件件创创建建时时,在在报报表表表达式对话框中的格式文本框均设置表达式对话框中的格式文本框均设

589、置9999.99。15.4运行设计运行设计15.4.1装载数据装载数据在在应应用用系系统统投投入入运运行行之之前前,通通常常要要往往数数据据库库装装入入必必要要的的数数据据。本本系系统统也也可可在在运运行行时时装装载载某某些些数数据据,例例如如通通过过登登记记功功能能来来装装载载,但但是是上上例例中中的的修修理理工工管管理理和和零零件件入入库库程程序序尚尚未未编编写写,故故这些信息只得打开相应的表来输入。这些信息只得打开相应的表来输入。15.4.2设置应用系统程序项设置应用系统程序项本本系系统统可可直直接接在在VisualFoxPro6.0中中运运行行,只只要要在在命命令令窗窗口口中中键键入入

590、命命令令DOd:mtcxlmtcxl就就可可行行。也也可可在在Windows的的开开始始菜菜单单中中建建立立程程序项来运行。建立程序项的步骤如下:序项来运行。建立程序项的步骤如下:进入进入Windows98;15.4.2设置应用系统程序项设置应用系统程序项选选定定“开开始始”|“设设置置”选选项项的的“任任务务栏栏”菜菜单单命命令令选选定定“任任务务栏栏属属性性”对对话话框框的的“开开始始菜菜单单程程序序”选选项项卡卡选选定定“添添加加”按按钮钮在在“创创建建快快捷捷方方 式式 ”对对 话话 框框 中中 的的 “命命 令令 行行 ”文文 本本 框框 中中 键键 入入d:vfp6vfp6.exed:mtcxlmtcxl-t选选定定下下一一步步按按钮钮认认同同缺缺省省文文件件夹夹programs,选选定定下下一一步步按按钮钮在在为为程程序序选选定定标标题题对对话话框框中中键键入入:摩摩托托车车修修理理管管理理系系统统选选定定完完成成按按钮钮返返回回任任务务栏栏属属性性对对话话框框选选定定确确定定按按钮钮,“摩摩托托车车修修理理管管理理系系统统”程程序序项项已已建建立立在在“开始开始”|“程序程序”的菜单中。的菜单中。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号