新Visual FoxPro程序设计基础教程(第二版) 李正凡 电子教案 第1章_第1页
新Visual FoxPro程序设计基础教程(第二版) 李正凡 电子教案 第1章_第2页
新Visual FoxPro程序设计基础教程(第二版) 李正凡 电子教案 第1章_第3页
新Visual FoxPro程序设计基础教程(第二版) 李正凡 电子教案 第1章_第4页
新Visual FoxPro程序设计基础教程(第二版) 李正凡 电子教案 第1章_第5页
已阅读5页,还剩134页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/11/18,1,在线教务辅导网:,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,2020/11/18,2,21世纪高等院校计算机系列教材 Visual FoxPro程序设计基础教程(第二版),中国水利水电出版社 2006.12,李正凡 主 编 刘琳岚 徐建功 孔凡良 副主编,2020/11/18,3,主要参文献:,1 萨师煊,王珊数据库系统概论(第三版)北 京:高等教育出版社,2000 2 杨冬青,唐世谓等译数据库系统概念(原书第4 版)北京:机械工业出版社,2003 3 史济民,汤观全Visual FoxPro及其应用系统开 发北京:

2、清华大学出版社,2000 4 杨智辉,胡晓波,周颖Microsoft Visual FoxPro 8.0标准教程北京:海洋出版社,2004 5 MSDN Library Visual Studio 6.0: Visual FoxPro文 档/使用Visual FoxPro/用户指南|程序员指南,2020/11/18,4,第1章 Visual FoxPro基础,数据库基础 Visual FoxPro简介 Visual FoxPro6.0基本概念与规则 面向对象程序设计的概念 Visual FoxPro6.0的程序设计工具 小结,2020/11/18,5,1.1.1 数据库系统及其特点与发展历史,

3、数据库技术是在20世纪60年代末兴起的一种数据管理方法,也是信息管理中的一项非常重要的新技术。由于数据库具有数据结构化、冗余度低、程序独立性高和易于扩充、易于编制应用程序等优点,因此近年来得到迅速发展,被广泛应用于国民经济、文化教育、企业管理、电子商务和电子政务等各个领域,为计算机应用开辟了广阔的天地。,2020/11/18,6,1数据、信息和数据库,数据和信息密切相关,但又有区别。 数据(Data)在一般意义上被认为是对客观事物特征所进行的一种抽象化、符号化表示。 信息(Information)通常被认为是有一定含义的、经过加工(处理)的、对决策有价值的数据。 数据库(DataBase, D

4、B)在通俗的意义上可理解为存储数据的仓库,它是按一定组织方式存储的相互有关的数据的集合,这些数据不仅彼此关联,而且可动态变化。 数据库管理系统(DataBase Management System,DBMS)的概念。它是数据库系统的管理控制中心,2020/11/18,7,DBMS的功能,提供数据库定义语言(Data Definition Language,DLL),供用户定义数据库文件结构,建立所需的数据库。 提供数据库操纵语言(Data Manipulation Language,DML),实现对数据库数据的基本操作:检索、插入、修改和删除。 提供核心控制程序,实现对数据库运行操作的统一管理

5、,包括并发控制、存取控制(安全性检查)、完整性约束条件的检查和执行、数据库内部的维护(如索引、数据字典的自动维护)等。 提供一组实用程序,完成数据库的建立和维护功能,包括初始数据的载入、转换功能,数据库的转储功能,数据库的性能监视、分析功能,数据通信功能等。,2020/11/18,8,本书用到的数据实例,P2-P3表1-1表1-5 在关系型数据库系统中,表中的一列称为一个字段,一行称为一条记录,一条记录由多个字段构成,多条记录的集合则构成一个数据表文件(在Visual FoxPro中以.DBF为扩展名)。,2020/11/18,9,本书用到的数据实例(续),DZ.DBF(读者信息表): dzb

6、h(读者编号), dzxm(读者姓名), dzxb(读者性别), gzdw(工作单位), jtzz(家庭住址), zlbh(种类编号), dhhm(电话号码), dznl(读者年龄), bz (备注) SJ.DBF(书籍信息表): sibh(书籍编号), sjmc(书籍名称), sjzz(书籍作者), cbs (出版社), ys(页数), jg(价格), lbbh(类别编号), bz(备注) JY.DBF(借阅信息表): jybh(借阅编号), dzbh(读者编号), sjbh(书籍编号), cjrq(出借日期), hsrq(还书日期), bz(备注) DZZL.DBF(读者种类表): zlb

7、h(种类编号), zlmc(种类名称), jssl(借书数量), jsqx(借书期限), bz(备注) SJZL.DBF(书籍种类): lbbh(类别编号), lbmc(类别名称), gjc(关键词), bz(备注),2020/11/18,10,2数据库系统,数据库系统(DataBase System,DBS):以数据库应用为基础的计算机系统 (1)计算机硬件 (2)数据库 (3)数据库管理系统 (4)相关软件 (5)人员 管理员(Data Base Administrator,DBA) 应用程序员 用户,2020/11/18,11,3数据库系统的特点,(1) 面向全组织的复杂的数据结构 (2

8、) 数据冗余度小,易扩充 (3) 具有较高的数据和程序的独立性 (4) 统一的数据控制功能 1)安全性控制 2) 完整性控制 3) 并发控制,2020/11/18,12,应用A,应用B,应用C,应用D,应用E,应用F,用户模式1,用户模式2,用户模式3,逻辑模式,存储模式,数据库,映象一:用户模式/逻辑模式,映象二:逻辑模式/存储模式,图1-2 数据库系统体系结构,数据库系统体系结构,2020/11/18,13,数据库系统体系结构(续),三级模式 用户模式(外模式):数据库用户的数据视图 逻辑模式(模式):对数据库中全体数据的逻辑结构和特性的描述 存储模式(内模式):对数据库在物理存储器上具体

9、实现的描述 两次转换 用户模式/逻辑模式映像:实现数据的逻辑独立性 逻辑模式/存储模式映像:实现数据的物理独立性,2020/11/18,14,数据管理技术随着计算机软件和硬件的发展而不断发展,大致经历了人工管理、文件系统和数据库系统三个发展阶段,而在数据库系统阶段又经历了萌芽阶段、蓬勃阶段和成熟阶段,如图1-3所示。,图1-3 数据管理技术发展示意图,4数据库技术的发展,2020/11/18,15,文件系统,文件系统数据管理技术是数据库系统的前身,也是数据库系统发展阶段的基础,文件系统本身有一些比较突出的缺陷: 冗余度大。文件系统中的用户各自建立自己的文件,数据不能共享,造成大量重复,不仅浪费

10、存储空间,还易产生数据的不一致。 缺乏数据独立性。数据与程序相互依赖,要改变数据结构就得修改程序,耗费时力。 数据无集中管理。各个文件没有统一管理机构,无法相互联系,各自为政,其安全性、完整性无法保证。,2020/11/18,16,数据库系统,以上问题都造成了文件系统管理的低效率、高成本,同时也促进了数据库系统的产生和发展。数据库系统克服了文件管理系统的种种弊端,提供给用户一个更为优秀的、合理的数据管理系统。 自20世纪60年代后期数据库诞生以来,数据库技术迅速发展,大量商品化的数据库系统广泛应用于各种领域,理论更加完善。 以关系型数据库产品发展最快,从大型机到微机,从Unix到Windows

11、,推出了许多成熟的关系数据库管理软件,例如,Oracle、Informix、SYBASE、dBASE、FoxBASE、FoxPro、Visual FoxPro等。 随着计算机网络技术和多媒体技术的发展,数据库系统也将这些技术吸收到其中,并提出相应的商业化产品。,2020/11/18,17,1.1 数据库基础,数据库系统及其特点与发展历史 E-R方法与数据模型 数据库保护 关系代数,2020/11/18,18,1.1.2 E-R方法与数据模型,三个世界 概念模型 数据模型 关系模型的相关概念,2020/11/18,19,1三个世界,数据模型是数据库系统中用于提供信息表示和操作手段的形式构架。 数

12、据库中用概念模型实现了对现实世界的抽象,进而转换成机器中存取的数据,如图1-4所示。,2020/11/18,20,2概念模型,数据模型是借助概念模型(或信息模型)转化而来的 概念模型是数据库设计人员在认识现实世界中的实体及实体间联系后进行一种抽象,并用一种方法描述出来 表示概念模型的方法中最常用的是实体联系方法(Entity-Relationship Approach),简称E-R方法。,2020/11/18,21,(1)概念模型中涉及的一些概念,实体:客观存在并且可相互区分的事物叫实体。 属性:实体所具有的某一特征。 实体集:同型实体的集合。 联系:主要指实体与实体之间的联系,通常用语义描述

13、。 实体间的联系可分为三类: 一对一联系(1:1) 一对多联系(1:n) 多对多联系(m:n),2020/11/18,22,实体间的联系,图1-5 两个实体型之间的联系,2020/11/18,23,(2)描述概念模型E-R方法的规则,用长方形表示实体,并在框内写上实体名。 用椭圆表示实体属性,并用无向边把实体与其属性连接起来。 用菱形表示实体间的联系,菱形框内写上联系名。用无向边把菱形分别与相关的实体相连接,在无向边旁标上联系的类型(1:n、1:1、 m:n)。若实体之间的联系也具有属性,则把属性和菱形也用无向边连接上。,2020/11/18,24,E-R图实例,图1-6 图书馆管理系统E-R

14、图,2020/11/18,25,3数据模型,在建立了概念模型后,即可根据一定的规则将其转化为数据模型。 目前,实际数据库系统中所支持的数据模型有层次模型(Hierachical Model)、网状模型(Network Model)和关系模型(Relational Model)三种。 基于不同的数据模型有不同的数据库管理系统: 层次型DBMS,如IMAGE、IMS。 网状型DBMS,如DBTG。 关系型DBMS,如dBASE、FoxBASE、FoxPro、Visual FoxPro、Oracle、Informix。,2020/11/18,26,4关系模型的相关概念,关系:对应于一张满足一定条件的

15、二维表,由记录型(表头)和记录值二部分组成。 元组:表中的一行,也可称为一条记录。 属性:表中的一列称为一个属性。给每列取的名字,称为属性名或字段名。 域:属性的取值范围。 码:能惟一标识一个元组的属性或属性组,也称为关键字。例如,读者关系的码是读者编号(dzbh),借阅关系的码是“读者编号(dzbh)与书籍编号(sjbh)”属性组。,2020/11/18,27,4关系模型的相关概念(续),主码:有时能惟一标识一元组的属性组不止一个,即码不止一个,这时必须指定其中的一个码作为主码,组成主码的属性被称为主属性。 外部码:非本关系的码,但它是其他关系的码,这样的属性或属性组集合称为外关键字或外部码

16、。例如,借阅关系的外部码有两个,“读者编号(dzbh)”是读者关系的码,则是它的外部码;同样,属性“书籍编号(sjbh)”亦是它的外部码。 分量:元组中的一个属性值。 关系数据库:数据库中所有关系的集合。,2020/11/18,28,4关系模型的相关概念(续),并非所有的二维表都可称为一个关系,作为关系的二维表必须满足如下最低条件: 每一分量必须是不可分割的数据项。 每一列(字段)需以不同的属性名(字段名)命名。 列的次序并不重要,即列的次序可以交换。 行的顺序也无所谓,即行的次序可以任意交换。 每一列中的分量是同一类型的数据,应取自同一个域。 任意两个元组不能完全相同。,2020/11/18

17、,29,1.1.3 数据库保护,数据库保护主要涉及以下几个方面: 数据的安全性 完整性 并发控制 数据库恢复,2020/11/18,30,1安全性,数据库的安全性(Security)是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 任何系统都有安全性,只是在数据库系统中大量数据集中存放,而且为许多用户直接共享,从而使得安全性问题更为突出。 确保数据库系统安全可靠是整个数据库系统的重要组成部分,也是衡量一个数据库系统性能的重要指标之一。,2020/11/18,31,1安全性(续),在数据库系统中,安全性措施是层层设置的,如图1-7所示。,图1-7 数据库系统的安全性措施设置,202

18、0/11/18,32,1安全性(续),(1)第一层:硬件级。这也是物理级的安全保密方式,为对付强迫透露口令、在通信线路上窃听及盗窃物理存储设备等行为而采取的,一般可将数据编为密码、硬件加锁、加强保卫等措施,以识别用户身份和保护硬件设备。 (2)第二层:操作系统级与网络级。操作系统与网络软件都提供了系统软件级的低层保护。它包括对用户的分组、用户权限的分类、文件权限的设置(只读、可读写、可执行、)及网络软件文件授权功能。,2020/11/18,33,1安全性(续),(3)第三层:DBMS级。DBMS提供两层保护:第一层是进入系统之前的用户标识与鉴定,与操作系统及网络级的用户身份鉴定相似;第二层是进

19、入系统后的存取控制措施,保证用户只能存取有权操纵的数据。 (4)第四层:应用系统级。在数据库应用系统这一级,可以根据实际用户的分工不同、操作的重要程度不同等在应用程序中设置口令、分配权限。这一工作主要由系统员分析确定,在应用程序中实现。,2020/11/18,34,2完整性,数据的完整性(Integrity)是指数据的正确性和相容性。 为保证这一点,要求DBMS必须提供相应的完整性约束条件的检查功能,以防止错误的或不合约束条件的数据进出数据库。 保证完整性的约束条件很多,主要有: 对数据值的约束 对数据间联系的约束,2020/11/18,35,2完整性(续),对数据值的约束:例如,读者年龄只能

20、是1560,性别只能是男或女,读者编号只能是8位数字等。 对数据间联系的约束:主要有 实体完整性 参照完整性 用户定义的完整性,2020/11/18,36,2完整性(续)-对数据间联系的约束,实体完整性是指码的值在关系中必须非空(not null)且必须是惟一的。 参照完整性是指一个关系中外来码的码值必须是相应数据库中其他关系的主码值之一,或为空(null)。 用户定义完整性是针对某一具体数据库的,由应用环境决定。,2020/11/18,37,3并发控制,数据库的最大特点就是共享,可以由多个用户在同一时刻存取数据,从而提高资源的利用率。然而多个用户在同一时刻存取同一数据,若不加以控制,就很容易

21、破坏数据的完整性与一致性。 并发控制中有一概念称事(Transaction),它是并发控制的基本单位与控制对象。事务是一操作序列,这些操作要么都做,要么都不做。 本例的并发操作可描述如表1-6(a) ,1-6(b)所示。,2020/11/18,38,表1-6 事务T1和T2的并发操作,(a)未加锁,修改丢失(A=9) (b)加锁,正确(A=7),2020/11/18,39,4数据库恢复,概念:DBMS一般要具有从错误状态恢复到已知的正确状态的功能。这就是数据库恢复。 方式:目前,数据库恢复采用的基本方法有如下几种: 转储 使用日志文件 增加硬件机制,2020/11/18,40,1.1.4 关系

22、代数,关系代数是关系数据库的数学基础,其操作对象和操作结果都是元组的集合。它所提供的专门的关系运算有 选择 投影 连接等。,2020/11/18,41,1选择(Selection),概念:所谓选择是指从关系中选择出满足给定条件的元组。 例:从“图书馆管理系统”数据表dz.dbf中选择出家住北京的读者 。 SQL语言可表达如下 : SELECT * FROM dz WHERE jtzz = 北京; 用LIST命令可以表示成: USE dz LIST FOR jtzz = 北京“ 其中,SELECT语句中的WHERE子句和LIST命令中的FOR子句表达了选择条件。,2020/11/18,42,2投

23、影(Projection),概念:所谓的投影是指从一个关系中选取某些属性列组成新的关系,最后从得到的结果中删除重复的元组。 例:从jy.dbf中投影出借有图书的读者编号。 用VFP的SQL语言可表达为: SELECT dzbh FROM jy 用LIST命令可以表示成: USE jy LIST FIELDS dzbh 其中,SELECT语句中的SELECT子句和LIST命令中的FIELDS子句表达了投影条件。,2020/11/18,43,3连接(Join),(1) 笛卡尔积(Cartsian Product)。给定关系R、S,它们的笛卡尔积是由所有属于R的元组与属于S的元组连接而成的新元组组成

24、,用RS表示。 例:设关系R与S如图1-8所示,它们的笛卡尔积结果也如图1-8所示。,2020/11/18,44,R,RS,S,图1-8 关系R、S及其笛卡尔积,3连接(Join)(续),2020/11/18,45,3连接(Join)(续),(2) 连接:连接运算是从两个关系的笛卡尔积中,选取属性间满足一定条件的元组。 自然连接:自然连接是连接的一个特例,它是指两个关系按主码与外部码分量值一样的条件将元组连接在一起,并去掉重复列而得到的关系。 例:将图1-8中的关系R与S中的元组连接在一起,要求按关系R的C字段分量值小于关系S的E字段的分量值的条件进行。 其结果如图1-9(a)所示。R与S的自

25、然连接结果如图1-9 (b)所示。,2020/11/18,46,图1-9 关系R、S的连接和自然连接,(a) (b),3连接(Join)(续),2020/11/18,47,1.2 Visual FoxPro简介,Visual FoxPro是Xbase数据库系列软件中,继dBASE、FoxBASE、FoxPro之后的又一微机关系数据库管理系统新产品,它与dBASE、FoxBASE、FoxPro等兼容。 Visual FoxPro的版本 Visual FoxPro的特性概述 Visual FoxPro的菜单系统,2020/11/18,48,1.2.1 Visual FoxPro的版本,1995年以

26、后,微软公司陆续发布了三个版本的Visual FoxPro:Visual FoxPro 3.0、Visual FoxPro 5.0和Visual FoxPro 6.0及其中文版。 2002年微软公司推出了Visual Studio.NET 7.0,Visual FoxPro 7.0版(测试版)是其中的成员但其后发布的Visual Studio.NET 7.0正式版不包含Visual FoxPro 7.0。 2003年2月1日微软公司推出Visual FoxPro 8.0,近期又推出Visual FoxPro 9.0。,2020/11/18,49,1.2.1 Visual FoxPro的版本(续

27、),与FoxPro 2.x比较,Visual FoxPro 3.0在以下几个方面的特性有所增强: 快速创建应用程序的能力。 更强大的开发能力。 开发客户机/服务器解决方案的能力。 与其他Microsoft应用程序相互作用的能力。,2020/11/18,50,1.2.1 Visual FoxPro的版本(续),与Visual FoxPro 3.0比较,Visual FoxPro 5.0增加或加强了以下功能: 增强了项目管理器和数据库管理。 改善了调试工具。 更加简单的表设计方法和扩展的数据字典。 增强的查询和视图设计。 增加了表单功能,使之更易于设计。 有更多和更好的向导。 更紧密的OLE和Ac

28、tiveX集成。,2020/11/18,51,1.2.1 Visual FoxPro的版本(续),Visual FoxPro 6.0与前两个版本比较,增加或增强了以下功能: (1)Access和Assign方法程序 (2)Active Document。 (3)组件管理库。 (4)代码范围分析器应用程序。 (5)对GIF和JPEG图形的支持。 (6)HTML帮助。,2020/11/18,52,1.2.1 Visual FoxPro的版本(续),(7)新的和改进了的语言元素。 (8)OLE拖放。 (9)项目管理器挂接程序。 (10)自动服务程序(Automation Server)的改进。 (1

29、1)新增和改进了的向导和生成器。 (12)对2000年日期的支持。,2020/11/18,53,1.2.1 Visual FoxPro的版本(续),Visual FoxPro 8.0与Visual FoxPro以前的版本完全兼容,并且与Visual Studio.NET2003兼容。此外还有如下新特点: (1)全面的数据访问。 (2)结构化错误处理。 (3)View设计器。 (4)支持自动增量。 (5)Windows XP题目支持。,2020/11/18,54,(6)高级控件。 (7)GDI+图像支持。 (8)事件处理。 (9)XML数据导入和导出。 (10)XML Web Services。

30、 (11)OLE DB Provider (12)SQL Server 2000桌面引擎(MSDE)。 (13)开发工具。 (14)增强的基本类。 (15)新增功能。,2020/11/18,55,1.2.2 Visual FoxPro的特性概述,Visual FoxPro在性能、系统资源利用和设计环境等方面的强大功能,可以更好地帮助用户完成应用程序或数据库系统开发。 1增强的项目及数据管理 2具有真正意义的数据库 3简便的查询与视图设计工具 4实用的报表及标签设计 5紧密结合数据的表单 6完整的向导机制 7完整的的菜单系统,2020/11/18,56,1.2.2 Visual FoxPro的特

31、性概述(续),8面向对象的程序设计 9更安全、有效的网络数据共享 10快速建立应用程序 11高效的调试器 12快捷方便的组件管理库 13导入和导出数据 14高度的数据集成能力 15Visual FoxPro功能的扩展,2020/11/18,57,1.2.3 Visual FoxPro的菜单系统,在Windows XP/2000桌面上建立了VFP 6.0的快捷方式后,双击它即可启动VFP 6.0,屏幕上将显示它的主窗口及主菜单等。 菜单是使用VFP时最常用的工具。 VFP的菜单在不同的状态下会有一些变化,本小节对VFP的基本菜单系统作一简介,列出中英文的菜单标题,以适应中英文VFP 6.0版本。

32、 1文件(File)菜单项,如表1-9所示。 2编辑(Edit)菜单项,如表1-10所示。 3显示(View)菜单项,如表1-11所示。 4格式(Format)菜单项,如表1-12中所示。,2020/11/18,58,5工具(Tools)菜单项,如表1-13所示。 6程序(Program)菜单项,如表1-14所示。 7窗口(Window)菜单项,如表1-15所示。 8帮助(Help)菜单项,如表1-16所示。,1.2.3 Visual FoxPro的菜单系(续),2020/11/18,59,1.3 Visual FoxPro 6.0的基本概念与规则,Visual FoxPro 的项目、文件、数

33、据库、表、视图 Visual FoxPro 的命令结构和键盘宏 程序执行方式 Visual FoxPro的常量、变量、数组 Visual FoxPro的表达式与函数 Visual FoxPro的文件类型,2020/11/18,60,1.3.1 VFP的项目、文件、数据库、表、视图,1项目及项目管理器 项目:是指文件、数据、文档和Visual FoxPro 6.0对象的集合,被保存在以.pjx为扩展名的文件中。项目用项目管理器进行维护 项目管理器是Visual FoxPro中处理数据和对象的主要组织工具,项目管理器是Visual FoxPro的控制中心。,2020/11/18,61,1项目及项目

34、管理器(续),项目管理器可以借助命令或菜单方式建立。本章应用实例“图书馆管理信息系统”中建立的项目管理器,如图1-10所示。,2020/11/18,62,2表、视图与数据库,(1)表(table) 表是VFP处理数据和建立关系型数据库及应用程序的基本单元。在VFP中,表文件的扩展名为.dbf,它由结构和记录(数据)构成。 两种类型的表:数据库表和自由表。 表中各字段的结构参数: 字段名 字段类型 字段宽度和小数位数 是否允许为空 显示标题等,2020/11/18,63,(1)表(table)(续),1)字段名 表中每一个字段都应有一个名称,VFP规定字段名必须以字母或汉字开头,后跟字母、汉字或

35、下划线,并且长度不能超过128个字符。建议尽量简明。 例如:sjmc字段名代表了“书籍名称”,至于正式标题可以在定义表结构的“标题”参数中说明。,2020/11/18,64,(1)表(table)(续),2)字段类型。VFP提供了13种字段类型,用于存放不同类型的数据。 字符型(Character):通常用于存放文本数据,文本数据可以是汉字、字母、数字、空格、符号及标点符号。字符型字段的最大宽度为254。 货币型(Currency):一种特殊的数据类型,用以存储货币值。数据形式为“$数值”,例如,$922.00。其取值范围为922333203685477.5807922337203685477

36、.5807。,2020/11/18,65,(1)表(table)(续),数值型(Numeric):用来存放数值数据。它由数字09、正负符号、小数点等组成。数值型字段的取值范围为: -0.9999999999E+190.9999999999E+20。 浮点型(Float):在功能上等价于数值型字段。 逻辑型(Logical):用于存放逻辑数据“真”(.T., .t.或.Y., .y.)和“假”(.F., .f.或.N., .n.)。 日期型(Date):用于存放包含有年、月、日的日期数据。格式为:yyyy-mm-dd。例如,2000-1-27表示2000年1月27日。,2020/11/18,66

37、,(1)表(table)(续),日期时间型(Datetime):用于存放包含有年、月、日、时、分、秒的日期和时间数据。 双精度型(Double):用于存储精度要求更高的、位数固定的数值。 备注型(Memo):类似“简历”这种类型的字段虽然由文字组成,但常常超过254个字符,而且每条记录在此字段的分量长短相差很大。 为了存放这类数据,Visual FoxPro提供了备注型。 一个字段被定义为备注型后,总是以memo显示在表中,占定长4个字节。 事实上它仅是一个指针,真正内容存储在与表文件名相同的.fpt文件中,而每一个指针指向了该记录的备注字段在.fpt中的位置。,2020/11/18,67,(

38、1)表(table)(续),通用型(General):用于存储OLE对象数据。 OLE对象包括电子表格、字处理文档、图形、图像或其他多媒体对象。 与备注型字段一样,在表中也是仅存储一个指针,实际内容也存储在.fpt文件中。 一个字段若被定义为通用型,其下的分量总是以gen显示。 整型(Integer):用于存储整数数据。取值范围: -21474386462147438646。 二进制字符型(Character Binary):字符型二进制用于存放不需要系统代码页维护的字符数据。其他特性同字符型字段。 二进制备注型(Memo Binary):二进制备注型用于存储不需要系统代码维护的备注字段数据。

39、其他特性同备注型字段。,2020/11/18,68,(1)表(table)(续),3)字段宽度 字段宽度表明该字段允许存放的数据的长度,以字节数或位数表示。 用户在定义表结构时,应根据存储数据的具体情况设置字符型、数值型、浮点型等字段的宽度,若有小数部分,则小数点也应占一位。 其他类型字段的宽度均由VFP统一规定如下: 货币型:8字节日期型、日期时间型:8字节 双精度型字段:8字节逻辑型:1字节 备注型、通用型字段:4字节整型字段:4字节,2020/11/18,69,(1)表(table)(续),4)小数位数。当字段类型为Numeric或Float时,应在Decimal栏中设置小数的位数,小数

40、位数至少应比该字段的宽度小2,或者采用缺省设置0。 例如,在图书馆管理系统中,书籍信息表sj.dbf的结构定义如图1-11所示。,2020/11/18,70,(2)视图(View),VFP的视图是数据库的组成单元,是数据库的一部分,但它不能单独存在。 视图是一个虚表,只包含了一些条件和参数设定。 按照这些条件,可从一个或多个表或视图中过滤出(引用)符合条件的记录,结果可当作表来使用。 当引用表中的数据发生变化时,视图中的显示内容也会发生相应的变化。 用户可以更新视图中的某些指定数据,操作时,源表的对应数据也将随之更新。 视图源于本地表的称为本地视图。 视图源于服务器上的表文件、远程表文件时称为

41、远程视图。,2020/11/18,71,(2)视图(View)(续),在图书馆管理系统的数据库中,包含有一个男读者的视图(ndz)本地视图(Local View),如图1-12所示。 它的数据源是从表1-1所示的读者信息表检索而来的,是虚表,但可以更新视图中的数据。,图1-12 男读者视图,2020/11/18,72,(3)数据库,数据库是VFP的主要处理对象,它可以包含一个或多个表、本地视图、远程视图、连接和存储过程等内容,并在其中包含了相关的信息。 例如,表和字段的标题、表间的1:n、m:n的关系等。 数据库文件的扩展名为.dbc,在VFP 中常称它为数据库容器。 例如,图书馆管理系统的项

42、目管理器中,“图书馆管理”数据库容器里包含了5张表:dz(读者信息表)、sj(书籍信息表)、jy(借阅信息表)、dzzl(读者种类表)、sjzl(书籍种类表);两个本地视图:ndz(男读者视图)、zgts(珍贵图书视图),如图1-10所示。 数据库和表一样,都可以放在一个项目中。,2020/11/18,73,1.3.2 Visual FoxPro 的命令结构和键盘宏,VFP支持面向对象的程序设计,同时也支持面向过程的程序设计。 程序总是由命令与函数及VFP可以理解的其他操作组成,因而了解VFP的命令并且熟记一些常用命令显得很重要。 本小节将介绍VFP的命令结构,一些常用的命令及其功能可参阅VF

43、P 的帮助。 在联机帮助中有VFP 6.0的所有命令格式、功能及一些示例。,2020/11/18,74,1命令格式, 范围 FIELDS FOR/WHILE VFP的命令一般总是由一个命令动词开头,后随若干功能子句及参数,用来说明操作对象、操作结果和操作条件等。,2020/11/18,75,2Visual FoxPro命令格式说明,(1)书写约定 任选项,可有,可缺省。 必选项,必须有;当套在 里时,表示选中有效。 / “或者”的意思。 实际使用时,以上约定符号均不应包含在命令行中。 (2)命令动词 表示实施一种操作。 例如: CREATE DATABASE ”,例如: DISP ALL FI

44、EL DZXM FOR JTZZ = “北京”; and dzxb = “女”&本行是上一行的续行 (4)对于所有的命令,均可以大小写并用。各子句及参数间用至少一个空格分隔。,2020/11/18,81,4键盘宏,在VFP中,宏(macro)代表一系列动作和击键操作的一个键。 键盘宏实际上是一个击键序列的记录,使用它可以帮助用户快速地完成某些经常重复的工作,还可以帮助用户建立应用程序的自动演示程序。 一个VFP 6.0的键盘宏中,共可存储1024个击键序列。 一个键盘宏还可以调用另外一个宏,以产生更长的击键序列。 但在键盘宏中,无法记录鼠标的动作,对某些只能用鼠标完成的动作,键盘宏就不起作用了

45、。 键盘宏一般应用于“命令”窗口。可以用“工具”菜单上的“宏”命令更改宏定义。,2020/11/18,82,1.3.3 程序执行方式,1向导方式 VFP为用户提供了很多具有实用价值的向导工具Wizards。 向导提供了交互式的介面,以帮助用户快速完成一般性的任务。例如,创建多种风格的表单、建立查询、建立数据库等。 其基本思想是把一些复杂的功能分解为若干简单的步骤完成,每一步使用一个对话框,然后对这些较简单的对话框按适当的顺序组合在一起。 向导方式使不熟悉FoxPro命令的用户也能用VFP完成一般性的任务,只要回答向导提出的有关问题,通过有限的几个步骤就可以使用户轻松地解决实际应用问题。 对于编

46、程人员,也可以利用向导建立原型,使应用程序中各个组件都能有一个良好的开端,缩短开发时间。,2020/11/18,83,1.3.3 程序执行方式(续),2菜单方式 利用菜单创建应用程序是开发者常用的主要方法。 实际上菜单方式包括对菜单栏、快捷键和工具栏的组合操作。 开发过程中的每一步操作常需要菜单方式的配合。 例如,要建立一个项目,可以单击“文件”菜单的“新建”命令或工具栏的“新建”按钮。,2020/11/18,84,1.3.3 程序执行方式(续),3命令方式 VFP与FoxBASE、FoxPro一样也支持交互式命令方式。用户每发出一条命令,系统随即解释并执行,出错则给予相应的提示,正确则给出相

47、应的执行结果。 命令行应在命令窗口输入。 命令窗口具有一般编辑窗口的特征,可以编辑、插入、删除、剪切和复制。并且可以对已输入的命令重复执行。,2020/11/18,85,1.3.3 程序执行方式(续),4程序执行方式 程序执行方式是将命令行代码组成一个程序,存入以.prg为扩展名的命令文件中,然后通过相应命令调用此命令文件,由系统自动执行。 程序中的代码包括以命令形式出现的指令、函数或VFP可以理解的其他操作。 VFP支持面向对象的程序设计,代码不仅存在于命令文件中,而且在表单设计过程中也常常为它的某一对象的一个或多个事件编写代码,在菜单或报表设计时,也要编写代码。,2020/11/18,86

48、,1.3.4 Visual FoxPro的常量、变量、数组,1常量 常量是指其值固定不变的数据,VFP的常量类型有N、C、D、T、L、Y共6种。 (1)数值型(Numeric):简称N型 由09共10个数字、小数点、正负号组成的实型数。其表现形式可以是整数(1234)、小数(0.1234)、负数(-25)、浮点数(123.456)、科学计数(2E-5)。,2020/11/18,87,1常量(续),(2)字符型(Character):简称C型。 它是以定界符括起来的任意字符、数字、汉字等符号。 定界符可以是 、“ ”或 。 如果字符串中已有定界符中的一种符号,则定界符选用另一种。例如,“abc”

49、、 “123,”、 “正确”的反义。 (3)逻辑型(Logical):简称L型。 逻辑型常量只有两个值:真与假。 用.T.(.t.)或.Y.(.y.)代表真,用.F.(.f.)或.N.(.n.)表示假。,2020/11/18,88,1常量(续),(4)日期型(Date):简称D型。 表示日期,默认格式为yyyy-mm-dd。例如,2006-1-27表示2006年1月27日。 使用set date、set centery、set mark等命令可修改日期格式。 (5)日期时间型(DateTime):简称T型。 不仅表示日期,而且进一步表示了时间。默认格式为yyyy-mm-dd,hh:mm:ssa

50、|p。 (6)货币型(Currency):简称Y型。 表示货币量,默认格式是“$数值量”,小数若超过4位,四舍五入取4位。例如,$123, $123.5678, $123.4等。,2020/11/18,89,2变量,(1)Visual FoxPro 变量的种类。 在命令操作或程序执行期间,其值可以改变的量称为变量。 VFP的变量有字段变量和内存变量两种。 此外,还可以使用数组。 字段变量以字段名标识,它必须依附于表,随着表的打开和关闭而在内存中存储和被释放。 字段变量是一多值变量,其值为表的当前记录在该字段的分量值。,2020/11/18,90,2变量(续),VFP的内存变量又可分为系统变量和

51、用户定义的内存变量: 1)系统变量 VFP自带的变量,由系统命名创建并维护。 系统变量名以“_”开头。例如,_VFP系统变量指向当前运行的VFP应用程序对象,通过它可以访问对象集合(Objects collection)。系统变量不能被删除。 2)用户定义的内存变量 是一种临时工作单元,它独立于数据库文件而存在,常用来保存在命令或程序执行中临时用到的输入、输出或中间数据,由用户根据需要设置或删除。 内存变量的类型有C、N、D、T、Y、L、S(屏幕型)等几种,由赋值给它的数据决定。,2020/11/18,91,2变量(续),(2)内存变量的赋值命令 命令格式: 格式1:store 表达式 to

52、内存变量名清单 &可给一批内存变量赋相同的值 格式2:内存变量名 = 表达式&只能给一个内存变量赋值 内存变量名命名规则同字段变量,一般应避免与VFP的保留字相同。 “=”为赋值号,其左、右的参数不可以对调。 内存变量的类型和值由所赋数据的类型和值确定,并以最近一次所赋的值为准。 内存变量名与字段变量名同名时,字段变量被优先引用。若要引用内存变量,可在内存变量名前加前缀M.,以示区别。,2020/11/18,92,2变量(续),(3)内存变量的主要操作命令 DISPLAY/LIST MEMORY &显示当前内存中的内存变量 SAVE MEMORY &将当前内存中的内存变量保存到指定的内存变量文

53、件 RESTORE FROM MEMORY &内存变量文件 中的内存变量恢复到内存 CLEAR MEMORY &清除当前内存中的 内存变量,释放存储空间 ? 变量名&显示变量值,2020/11/18,93,3数组,数组是一组按一定顺序排列的内存变量,数组中的各个变量称为数组元素。 数组元素用数组名及该元素在数组中排列位置的下标一起表示,下标的个数称为数组的维数。 例如,一维数组x及其数组元素x(1), x(2),二维数组y及其数组元素y(1, 2), y(2, 1)等。在Visual FoxPro 中,只使用一维和二维数组。 数组要先定义再引用。,2020/11/18,94,3数组(续),(1

54、)数组的定义 命令格式: declare/dimension 数组名1(, 下标2), 数组名2(, ) 功能: 定义一维数组或二维数组(其命名规则与内存变量相同),以及有关数组各下标的上界值。 各下标的下界值由系统统一规定为1。 下标的个数决定了数组的维数。,2020/11/18,95,3数组(续),(2)数组的赋值 数组中各数组元素的取值类型可以互不相同,数组一经定义,它的每个数组元素就有了逻辑型初值.F.。 用赋值命令可为数组元素赋值,也可以为数组的各元素赋同一值。 二维数组各元素以行的顺序在内存中存储,它们也可以按排列的相对位置以一维数组元素的形式存取。 例如,下例中定义的二维数组y,

55、其数组元素y(2, 2)排在第2行第2列,由于每一行是2个数组元素,则y(2, 2)也可表示为一维数组元素y(4)。,2020/11/18,96,1.3.5 Visual FoxPro的表达式与函数,1表达式 是由常量、变量、函数和运算符组成的一个有物理意义的式子。 表达式的使用拓展了VFP的应用范围,使操作更加灵活方便。 表达式按所用到的运算符分为字符型、数值型、关系型、逻辑型、日期型、货币型等类型。,2020/11/18,97,1表达式(续),(1)数值型表达式 由数值型常量、变量、函数和算术运算符构成,运算结果仍然为数值型。 算术运算符有*或(乘方)、*(乘)、/(除)、%(取模,求余数

56、)、+(加)、-(减),其优先级别为: *或 *、/、% +、- 从左到右依次降低;如有括号,则优先级最高。 例: ? (INT(5.6) + 5) * 2/10 &显示结果为10.00,2020/11/18,98,1表达式(续),(2)字符型表达式 由字符型常量、变量、函数和字符运算符组成,其运算结果仍为字符型。 字符运算符主要有两类:连接运算和包含运算。 1)连接运算有完全连接(精确连接)和不完全连接(移去尾部空格连接),分别使用运算符“+”和“-”。 2)包含运算本应归于关系运算类,由于它是字符串之间特有的关系运算,故将其放在字符表达式中介绍,包含运算的结果不再是字符型而是逻辑型。格式为

57、: 字符串1 $ 字符串2 如果字符串1包含在字符串2中,即字符串1为字符串2的子串,则表达式的值为.T.,否则为.F.。,2020/11/18,99,1表达式(续),(3)货币型表达式 其运算对象与运算结果都是货币型,运算符和运算规则同数值型表达式。 (4)日期型表达式 由日期型或数值型常量、变量、函数和日期运算符+、-组成,其运算结果为日期型或数值型。例如: ? DATE() + 15&显示15天以后的日期 ? DOW(DATE() + 15)&显示15天以后是星期几 ? DATE()-20&显示20天以前的日期 T = DATE() + 1& T为日期型 Y = DATE() 1& Y为

58、日期型 ? T Y&显示结果为数值2,2020/11/18,100,1表达式(续),(5)关系型表达式 由关系运算符和字符表达式、数值表达式(货币表达式)、日期表达式组成,运算符左右两侧数据类型必须一致,其运算结果为逻辑值。关系运算符有: 、=、=、# 或 ! 、=、= =(优先级相同) 字符型数据的比较是按其对应的ASCII码值的大小进行的。 比较时,先比较字符串第一个字符的大小,若第一个字符大,则该串大;如果第一个字符一样,再比较第二个字符的大小,第二个字符大的,该字符串大;依此类推,直到比较出大小。 两字符串作“=”和“=”比较时,其运算结果与SET EXACT ON/OFF有关。,20

59、20/11/18,101,1表达式(续),(6)逻辑型表达式 由逻辑运算符和逻辑常量、变量、函数及关系表达式组成,结果仍是逻辑值。 逻辑运算符有NOT或!(逻辑非)、AND(逻辑与)、OR(逻辑或),优先级按非、与、或的次序从高到低。 逻辑表达式的一般形式为: 。 例如: ? NOT(56)&显示结果为.T. ? NOT(56) AND abcad OR $100$200&显示结果为.T.,2020/11/18,102,1表达式(续),以上介绍了Visual FoxPro的各种类型表达式 各类型表达式内有优先级 各类型表达式间也有优先级: 逻辑型最低 其次是关系型的 其余4种平级且最高,2020/11/18,103,2函数,函数是VFP的又一重要组成部分 VFP函数的格式一般为: 函数名(自变量1,自变量2) 括号中没有自变量的函数称为无参函数。 每个函数都有一个返回值。 VFP提供有众多的标准函数。 用户也可以自己编写函数,称为用户自定义函数。 在VFP中,可以采用将函数返回值赋给变量、在命令中包含函数、在命令窗口中输出函数返回值、不存储函数返回值、嵌套等方法调用函数。 VFP函数按功能分类有数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论