VFP基本概念.docx
《VFP基本概念.docx》由会员分享,可在线阅读,更多相关《VFP基本概念.docx(51页珍藏版)》请在冰点文库上搜索。
VFP基本概念
课程教学的时间安排、重点与难点:
周次
教学内容
重点、难点
课时
1~2
VFP基础知识
1.1数据库概念
1.2VFP用户界面(1课时)
1.3数据分类,常量,变量,赋值语句(2课时)
1.4常用函数及使用(3课时)
数据描述与基本操作
6
上机2课时
2~3
表的建立与操作
2.1表结构的建立(1课时)
2.2表内容的编辑,显示(2课时)
2.3表内容的排序,索引和查找(2课时)
2.4表的其他操作(1课时)
重点:
表结构的建立与操作、表内容的编辑、索引及查找。
难点:
表的索引
6上机6课时
3~7
程序设计基础
3.1程序设计基本语句(2课时)
3.2程序控制语句(6课时)
3.3过程及过程文件,自定义函数(4课时)
3.4综合程序设计范例(4课时)
重点:
程序控制的基本结构;过程与过程文件;综合程序设计范例
难点:
程序控制基本结构中的嵌套结构
16
上机14课时
8~9
面向对象程序设计
4.1面向对象程序设计方法特点(1课时)
4.2常用对象的属性,方法,事件(6课时)
面向对象的概念与操作,属性、方法与事件
7
上机4课时
10~13
表单的建立与操作
5.1表单向导建立表单(1课时)
5.2表单设计器建立表单(1课时)
5.3表单对象的添加,属性的设置,事件代码的编写(5课时)
5.4综合表单设计(8课时)
重点:
属性的设置及事件、方法的使用;根据任务选择合适的控件
难点:
表单设计范例
15
上机12课时
14~16
数据库的建立与操作
6.1数据库基础知识(1课时)
6.2数据库的建立(2课时)
6.3工作区,表间关联(3课时)
6,4多表表单的设计(4课时)
重点:
数据库的建立;参照完整性;多表操作应用。
难点:
多表操作应用。
10
上机10课时
二、教学要求
作为一门实践性强的课程,《VFP程序设计》安排了36课时的实验。
通过实验加深对课堂内容的理解,掌握程序调试方法,掌握程序设计的一般方法和要求,提高动手能力和自学能力,是本课程实验教学的主要目标。
(1)认真做好实验前的准备工作:
预习实验指导书中本次实验内容,复习和理解与本次实验有关的教学内容,根据实验要求预先设计程序。
带齐相关资料:
实验指导书、教材、教参等,以便及时查阅有关错误信息与可参考的处理方法。
(2)根据实验项目的具体要求,完成程序编辑、调试、运行测试,及时记录出现的问题及解决方法。
(3)按照实验报告的要求,整理程序设计成果,对程序设计、调试与运行测试过程出现的问题及解决方法进行分析。
提交实验报告。
第一节VFP基本概念
一、数据处理:
对各种数据的进行收集、整理、组织、存储、维护、计算、检索、统计和传输的过程。
通常数据处理也称为信息处理。
信息处理一般分为五个步骤:
1、原始数据的收集
2、数据的规范化及其编码
3、数据输入
4、数据处理
5、数据输出
二、计算机管理技术经历的三个阶段:
1、人工管理阶段;
2、文件系统阶段;
3、数据库系统阶段。
数据库:
以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。
数据库的特点:
1、具有最小的冗余度,即数据尽可能不重复
2、资源共享性,既以最优的方式服务于一个或多个应用程序
3、数据独立性,即数据的存储尽可能独立于使用它的应用程序
4、安全可靠
5、保密性能好
数据库管理系统(DBMS):
是用于建立、使用和维护数据库的系统软件。
它对数据库进行同意的管理和控制,以保证数据库的安全性和完整性。
用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。
例如,DB2、Informix、Oracle、Sybase、VisualFoxPro等均为数据库管理系统。
DBMS的功能
1.模式翻译
2.应用程序的翻译
3.交互式查询
4.数据的组织与存取
5.事物运行管理
6.数据库的维护
三、元数据
有关数据的结构的信息。
对关系型DBMS来讲,包括关系名、属性名、属性的数据类型等。
索引也是一种数据结构,包含在元数据中。
数据库系统(DatabaseSystem):
简称DBS,是实现有组织地、动态地存储大量关联数据,方便用户访问的计算机软硬件资源所组成的具有管理数据库功能的计算机系统。
它由数据库(DB)、数据库管理员(DBA)和有关软件组成。
这些软件包括数据库管理系统(DBMS)、宿主语言、开发工具和应用程序等。
数据模型及其组成部分:
数据模型(DataModel)是在数据库领域中定义数据及其操作的一种抽象表示。
数据模型可由三部分组成:
实体及实体间联系的数据结构描述,对(表示实体与联系的)数据的操作与数据的完整性约束条件。
数据模型的分类:
根据适用对象不同,分两类:
1.面向客观世界、面向用户的称为概念数据模型(简称“概念模型”),这类数据模型描述用户和设计者都能理解的信息结构,强调其表达能力和易理解性,如E-R模型
2.面向数据库管理系统,用以刻画实体在数据库中的存储形式及实体之间的联系,称为逻辑数据模型(简称“逻辑模型”),如层次模型(HierarchicalModel)、网状模型(NetworkModel)、关系模型(RelationalModel)、面向对象模型。
关系:
是以二维表的结构来表示实体与实体间的联系系。
一个关系就是一张二维表,关系的首行称为“属性”(在关系数据库中称为“字段”),其他各行称为“元组”(在关系数据库中称为“记录”)。
关系模型
关系模型的性质:
1、二维表的记录数随数据的增删而改变,但它的字段数却是相对固定。
因此字段的个数、名称、类型、长度等要素决定二维表的结构。
2、二维表的每一列均有唯一的字段名。
3、二维表中不允许出现完全相同的两行。
4、二维表中行的顺序、列的顺序均可任意交换。
四、表的概念
VFP中的表是指存储在磁盘文件中的一张二维表。
一张表保存在为一个表文件(.dbf)表有时也称数据表。
表文件的文件名必须遵守WINDOWS系统名的约定外,不可用A-J中的单个字母名做文件名
表中的列称为字段(Field),字段规定了数据的特征
表的行叫做记录(Record),每一条记录表示一个实体,记录是多个字段的集合
字段的基本属性
1、字段名(FieldName),每一个字段必须取一个名字,称为“字段名”,用以在表中标志该字段。
2、字段的数据类型(Type),表中每个字段都有特定的数据类型。
3、字段宽度(Width),指该字段所能容纳数据的最大的字节数,字段的宽度必须能足够容纳可能的最长的数据信息。
4、小数位数(Decimal),对于数值型、浮点型和双精度型的字段,还可以指定其小数的位数。
5、空值(NULL)支持,空值是用来指示记录中的一个字段“没有值”的标志。
空值表示没有任何值或没有确定值,空值不同于数值0、空字符串或逻辑“假”。
VFP表字段的基本数据类型
1、字符型(C)字母、汉字符号和数值型文本
2、货币型(Y)货币单位
3、数值型(N)整数或小数
4、浮点型(F)同数值型
5、日期型(D)年、月、日
6、日期时间型(T)年、月、日、时、分、秒
7、双精度型(B)双精度数值
8、整型(I)不带小数点的数值
9、逻辑性(L)真与假
10、备注型(M)不定长的一段文本
11、通用型(G)OLE(图片或者声音)
五、记录指针标志
当一个表文件被打开后,系统中自动生成三个控制标记:
记录的开始标记、记录指针标记、记录的结束标记。
分别可用函数bof(),recon(),eof()来测试。
记录的定位方式
可分为:
记录指针的绝对定位、记录指针的相对定位和条件定位。
指针的绝对定位是指把指针移到指定的位置。
指针的相对定位是指把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置。
条件定位是指按照一定的条件自动地在整张表或表的某个指定范围中查找符合该条件的记录。
第二节VFP工作区
一、概念:
所谓工作区指用以标识一张打开表的区域。
打开一张表时,必须为该表指定一个工作区。
每个工作区有一个编号。
在工作区中打开的表都有一个别名。
当前工作区即VFP正在使用的工作区,即默认的工作区。
一个工作区只能打开一个表,但一个表可同时在多个工作区打开。
表的独占和共享使用
一张表可以同时被多个用户打开访问,称为表的共享使用。
SETEXCLUSIVEOFF
反之,当一张表只能被一个用户打开时,称为表的独占使用。
SETEXCLUSIVEON
系统默认为独占
二、VFP中,索引有四种类型:
主索引、候选索引、普通索引和唯一索引。
1、主索引(PrimaryIndexes)。
在数据库表中,每张表只能创建一个主索引。
组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。
自由表不能创建主索引,主索引只适用于数据库表的结构复合索引中。
2、候选索引(CandidateIndexes)。
在指定的关键字段或表达式中不允许有重复值的索引。
一张表中可以建立多个候选索引,候选索引可用于数据库表和自由表。
3、普通索引(RegularIndexes)。
索引表达式的值允许重复,即在普通索引上查找的记录不具有唯一性。
对一张表可以创建多个普通索引
4、唯一索引(UniqueIndexes)。
索引表达式可以有重复值,但在索引文件中,
三、查询
所谓“查询”,是指向一个数据库发出检索信息的请求,它使用一些条件提取特定的记录。
查询的运行结果是一个基于表和视图的动态的数据结合。
分组
所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可以完成基于一组记录的计算。
可以利用合计函数COUNT()、SUM()、AVG()对每一组记录进行计数、求和及求平均计算。
四、SQL
SQL(StructuredQueryLanguage,结构化查询语言)是美国国家标准局ANSI确认的关系数据库语言的标准。
VFP支持SQL。
VFP的SQL命令使用Rushmore技术来优化性能,并且一个SQL命令可以代替多个VFP命令。
VFP支持如下SQL命令:
1、SELECT-SQL。
指定查询条件并执行查询命令,VFP解释该查询,并且从表中检索指定的数据。
2、ALTERTABLE-SQL。
修改一张已存在的表。
3、CREATECURSOR-SQL。
创建一张临时表。
4、CREATETABLE-SQL。
创建一张表。
5、DELETE-SQL。
使用SQL语法将表中的记录加上删除标记。
6、INSERT-SQL。
在已存在的表的末尾追加一条新记录。
7、UPDATE-SQL。
更新表中的记录。
第三节数据类型
一、概念:
数据类型是指数据对象的取值集合,以及对之可施行的运算集合。
数据类型规定了具有该类型的变量或表达式的取值范围,也规定了与之相联系的运算的集合。
VFP的基本数据类型如下:
1、字符型,任意文本。
2、货币型,货币量。
3、日期性,包含日期的数据。
4、日期时间性,包含日期和时间的数据。
5、数值型,整数或小数。
6、逻辑型,“真”或“假”的布尔值。
7、浮点型,与数值型一样。
8、双精度型,双精度浮点数。
9、整型,整型数。
10、备注型,数据块引用。
11、通用型,OLE对象引用。
二、常量和变量
常量(Constants)是指在所有操作过程中保持不变。
根据数据类型可分为6种:
数值型常量、货币型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量。
变量(Variables)是由用户定义的内存中的一个(组)存储单元,由变量名来标识,其值可以由程序操作修改。
使用过程中,该存储单中存放的数据在程序操作期间通过变量名来读写。
VFP的变量称为内存变量。
三、VFP的命名规则
VFP的对象名、数组名、表的字段名、过程名和对象的属性名等,要满足如下规则:
1、名称中只能包含字母、下划线“_”和数字符号。
2、名称的开头只能是字母或下划线,不能是数字。
3、除了自由表的字段名、表的索引标志至多只能有10个字符外,其余的名称的长度可以在1~128个字符之间。
4、避免使用VFP系统的保留字。
四、操作符(Operators)
操作符(Operators)用来处理同种类型的数据。
VFP操作符按以下数据类型和函数进行分组:
字符操作符、日期和日期时间操作符、逻辑操作符、关系操作符、数值操作符。
第四节函数及参数
一、函数(Function)是一个预先编制好的程序代码,可供用户或程序调用。
二、参数(Argument)是供函数或过程操作的一个值。
函数可分为系统函数和“用户自定义函数”。
函数由VFP提供的,称为系统函数。
函数由用户定义的,称为“用户自定义函数”。
系统函数的分类
VFP提供了大量的系统函数,按功能可分为五大类,每一大类又可细分为若干功能更明确的小类。
Ø数值函数:
处理并返回数据型数据。
ABS()、MAX()、INT()、MOD()。
Ø字符函数:
处理字符型数据ALLTRIM()、AT()、EMPTY()。
Ø日期/时间函数:
用以产生和处理日期和时间型数据。
DATA()、DATETIME()、DOW()、DAY()、MONTH()、YEAR()、SECONDS()。
Ø数据转换函数:
将数据从一种类型转化为另一类型。
STR()、VAL()、CHR()、DTOC()、CTOD()。
数据库类
数据库函数:
用以处理数据库的函数。
DBUSED()、DBC()、DBSETPROP()、DBGETPROP()。
字段函数:
用以处理表中的字段的函数。
DELETED()、FIELDS()、FCOUNT()、FSIZE()。
索引函数:
用以对索引文件的操作并返回与索引文件有关的信息。
CDX()、ORDER()、TAG()、UNIQUE()。
记录函数:
用以选择表中的记录或将记录指针定位。
RECNO()、SEEK()、FILTER()、KEYMATCH()。
关系函数:
建立或中断表之间的关系。
RELATION()、TARGET()。
表函数:
用以创建、处理和查看表。
BOF()、EOF()、RECCOUNT()、MLINE
输出输入类
键盘和鼠标输入:
函控制键盘和鼠标进行输入LASTKEY()、INKEY()、MDOWN()、ISMOUSE()。
菜单函数:
开发、显示和激活用户自定义的菜单和菜单栏。
BAR()、POPUP()、PAD()、PROMPT()、GETPAD()。
打印函数:
用于打印输出。
PRINTSTATUS()、PROW()、PCOL()、GETPRINTER()。
窗口函数:
创建、显示和激活用户自定义窗口。
WVISIBLE()、WEXIST()、WFONT()、WONTOP()、WOUTPUT()。
第五节程序设计类
一、程序控制
程序控制是指根据不同的情况和条件,控制程序去执行相应的语句序列。
VFP中有一类特殊的命令,在这些命令的控制下,可以根据一定的条件控制程序执行某一组命令而不执行另一组命令。
或者使其他的一组命令或函数重复执行多次,这类命令在程序设计过程中作用很大,可用来实现两种主要的程序结构:
条件分支和循环。
二、程序控制类型
VFP的程序控制主要分为四种:
顺序、条件分支、循环和子程序。
顺序(Sequential)结构由语句行组成,程序执行时,按程序中的语句顺序执行。
条件分支(ConditionalBranching)根据条件的测试结果执行不同的操作。
循环(Looping)就是使得一组语句组重复执行若干次。
可以预先指定要循环的次数;也可以预先不指定次数,只要某个条件成立,就可以一直循环下去,直到该条件不成立。
子程序(Subprogram)是结构化程序设计的主要特点,一个应用程序的许多功能可以编写成一个个独立的子程序、过程或用户自定义函数,然后把他们组装到一个主程序中。
结构的嵌套
所谓嵌套就是在一种结构中可以包含任何的结构。
这里的结构指的是四种控制结构(顺序、条件分支、循环和子程序)。
面向对象程序设计方法
面向对象程序设计是一种系统化的程序设计方法,具有抽象化、模块化的分成结构。
它通过对类、子类和对象等的设计来体现的。
类和对象
类定义了对象特征以及对象外观和行为的模板,它刻划了一组具有共同特性的对象。
对象是类的一个实例,包括了数据和过程(操作)。
应用程序对象
在VFP中,应用程序对象主要指表单、表单集,以及表单中所包含的多个控件。
表单(Form):
用户在Windows环境下所看到的各种窗口与对话框。
表单集(Formset):
包含一个或多个表单的集合,表单集中的表单可以同一处理。
控件(Control)对象:
放在一个表单上用以显示数据、执行操作或使表单更易阅读的一种图形化对象。
基类与子类
基类(BaseClass)是VFP系统提供的内部定义的类,可用作其他用户自定义类的基础。
用户可以从基类直接产生对象,也可以由它派生出子类
子类(Subclass)是以其它类定义为起点,为莫一对象所建立的新类。
子类将继承任何对父类(即子类所基于的类)所做的修改。
VFP类的特点
在面向对象的程序设计中,通过类可以简化应用程序的设计。
因为类具有继承性、多态性、封装性、抽象性等特点。
继承性(Inheritance):
说明了子类延用父类的能力。
如果父类特征发生改变,则子类将继承这些新特征。
第六节VFP5.0的基类
容器、编辑框、列表框、标签、控件
文件框、组合框、图像、表单集、微调框
复选框、形状、表单、表格、选项按钮组
线条、工具栏、标头*、选项按钮*
分隔符*、自定义、列*、计时器
命令按钮组、页框、OLE绑定型控件
命令按钮、页面*、OLE容器控件
(注:
*表示该类是容器类的集成部分,在类设计器中不能基于他们创建子类)
容器类与控件类
VFP中的类可以分为两大类型:
容器类和控件类(也称为非容器类)。
容器类(contrainerclasses)是包容其他类的基类。
将容器类的对象加入表单后,无论在设计时还是在运行时,均可以将该容器类的对象作为一个整体进行操作,也可以分别对其包含的对象进行处理。
控件类(controlclasses)是可以包含在容器类中的基类。
容器对象和控件对象
VFP中的对象根据所基于的类的性质,也可以分为容器对象和控件对象。
容器对象可以作为其他对象的父对象,控件对象可以包含在对象中,但不能作为其他对象的父对象。
应用对象
在VFP中,引用对象由两种引用方法:
1、绝对引用
绝对引用是指从容器的最高层次引用对象,给出对象的绝对地址。
2、相对引用
相对引用是指在容器层次中相对于某个容器层次的引用。
相对引用对象时所涉及到的一些关键字,其中THIS、THISFORM、THISFORMSET、ActiveForm、ActivePage、ActiveControl、Parent等,其中THIS、THISFORM、THISFORMSET只能在方法程序或事件处理代码中使用。
方法程序
方法程序时对象能够执行的一个操作,是和对象相联系的过程。
VFP基类创建的对象都有多个相关的方法程序,用户也可以创建新的方法程序。
VFP基类的核心事件集
VFP的核心事件集:
Load:
表单或表单集被加载到内存中
Unload:
从内存中释放表单和表单集
Init:
创建对象
Destroy:
从内存中释放对象
Click:
用户使用主鼠标按钮单击对象
DblClick:
用户使用主鼠标按钮双击对象
RightClick:
用户使用副鼠标按钮单击对象
GotFocus:
对象接受焦点,由用户动作引起,如按【Tab】键或单击,或者在代码中使用SetFocus方法
Lostfocus:
对象失去焦点,由用户动作引起,如按【Tab】键或单击,或者在代码中使用SetFocus方法
KeyPress:
用户按下或释放键
MouseDown:
当鼠标指针停在一个对象上时,用户按下鼠标按钮。
MouseMove:
用户在对象上移动鼠标
MouseUp:
当鼠标指针停在一个对象上时,用户释放鼠标按钮。
InteractiveChange:
以交互方式改变对象值
ProgrammaticChange:
以编程方式改变对象值
VFP基类的最小事件集
VFP基类的核心事件集是固定的,不能进行扩充。
每个类都可识别固定的默认事件集合,它的最小事件集包括Init、Destroy和Error事件。
常用的事件
在VFP中,常用的事件可以归类为鼠标事件、键盘事件、表单事件、控件焦点事件、数据环境事件等类型。
鼠标事件
在VFP中,鼠标事件主要有MouseMove事件、Click事件、RightClick事件、DblClick事件、MouseDown事件、MouseUp事件、DragDrop事件、DragOver事件、DropDown事件、Scrolled事件、DownClick事件、UpClick事件。
键盘事件
在VFP中,与键盘操作相关的事件主要是KeyPress事件。
改变控件内容的事件
改变控件内容的事件有InteractiveChange事件和ProgrammaticChange事件。
焦点事件
焦点(Focus)用以指出当前被操作的对象。
焦点事件有Gotfocus事件、LostFocus事件、When事件和Valid事件。
表单事件
表单事件是指操作表单发生的事件。
表单事件主要有Load事件、Unload事件、Activate事件、Deactivate事件、Paint事件和Resize事件。
数据环境事件
数据环境包括了与表单相关的表和视图,以及表单要求的表之间的关系。
与数据环境有关的事件有AfterCloseTable事件和BeforeOpenTable事件。
事件驱动和事件循环
事件驱动程序设计(Event-DrivenProgramming)时一种强调时间代码的程序设计模型,与过程化程序设计的系列代码不同。
采用传统的过程化的程序设计所设计的应用程序,从头到尾根据程序设计人员安排的顺序执行,在整个程序运行过程(进程)中,该程序独占系统的资源(处理器、内存、屏幕等)。
而采用事件驱动程序设计方法所设计的应用程序,程序的执行是由事件驱动的,一旦程序启动后就根据发生的事件执行相应的程序,如果无事件发生,则程序就空闲着以等待事件的发生,此时用户也可以启动其他多个应用程序。
利用VFP进行应用程序设计,必须创建事件循环(EventLoop),事件循环是由READEXENT命令建立、CLEAREVENT命令终止的交互式运行时刻环境。
表单(Form)和表单集(FormSet)
表单(Form)类似于Windows中的各种标准窗口与对话框,是VFP最常用的界面,即利用表单作为应用程序与用户将的各种界面。
表单是一种容器类,可以由一个或多个页面组成,每个页面中又可以包含多个控件对象,用于处理各种数据,或相应用户/系统事件,以完成信息的处理。
表单集(Formset)是一种容器类,由一个或多个相关表单组成。
数据环境
表单(集)的数据环境包括了与表单交互作用的表和视图,以及表单要求的表之间的关系。
集合(Collection)属性和计数(Count)属性
VFP中所有容器对象都具有与之相关的计数(Count)属性和集合(Collection)属性
集合属性是一个数组,用以引用每个包含在其中的对象。
计数对象是一个数值属性,它表明了所包含对象的数目。
实例(I