1、第五章 VFP程序设计基础第五章 VFP程序设计基础5.1 程序设计概述1. 程序设计方法简介设计方法主要概念设计过程程序执行方式结构化程序设计功能模块(即过程、自定义函数)编制各个功能模块,再用主程序将它们串起来将应用程序分解成若干功能模块,通过各模块的相互调用来完成整个执行过程,是过程驱动的。面向对象程序设计类、对象、属性、事件、方法设计类、子类、对象(设计外观、设置属性、为事件编写方法程序)将应用程序分解成具有特定属性的对象,通过调用各对象的不同方法来完成相关事件,是事件驱动的。2数据类型VFP 包含下列数据类型: 通用的数据类型字符型 Character货币型 Currency日期型
2、Date日期时间型 DateTime逻辑型 Logical数值型 Numeric仅用于字段的数据类型双精度型 Double浮点型 Float整型 Integer通用型 General备注型 Memo3. 数据容器VFP中用来存储数据的容器有:常量、变量、数组、记录和对象。(1) 常量(constants):一个在操作过程中保持不变的数值或字符串。常用的常量类型常量类型数值型常量字符型常量逻辑型常量日期型常量表示方式-25.36abc,123,中国.T. .F.03/07/2000(2)变量(variables):是内存中的一个存储单元的位置,其中的内容可以变化,但标识该存储位置的名称(即变量名
3、)不变。变量的命名习惯: 类型变量代号 如:cStud 、nCj 、dCsrq 分别代表一个字符型、数值型、日期型的变量名 变量的赋值方式: 1) 用 STORE 命令 如:STORE 王兰 TO cStud 2) 用赋值操作符 = 如:cStud = 王兰 变量的作用域: 即变量起使用的有效范围。变量作用域定义作用域的关键字特点局部变量local variable(本地变量)LOCAL只能在一个函数或过程中被访问,其他过程或函数不能访问此变量的数据。当其所属程序停止运行时,局部变量将被释放。私有变量 private variablePRIVATE私有变量在 VFP 中是默认的,不需要特殊的关
4、键字定义。但是,如果在更高一级例程(routine)中已经有同名变量,可以用PRIVATE 关键字予以声明,以限定其范围。当定义此变量的例程结束时,此变量也被相应释放。可使用私有变量在被调用的函数中共享数据。公共变量 public variablePUBLIC可用于所有过程和函数,而不限于定义该变量的过程和函数。可使用全局变量在多个过程或函数之间共享数据,在命令窗口中创建的任何变量自动具有全局属性。变量的访问: 当变量和字段同名时,字段有优先被访问权。要在变量名前加 m. 或 m - 以示区别,如 m.cStud (3)数组(array):是存储在一个变量中由单个变量名引用的有序数据集合。在
5、VFP中,一个数组中的数据不必是同一种数据类型。常用的有一维数组,二维数组。数组元素的标识:通过一个数值下标来引用,如 AA2,AA2,3数组类型的声明:私有数组 用DECLARE 或 DIMENSION定义全局数组 用PUBLIC命定义局部数组 用LOCAL定义数组元素的赋值:用赋值语句: 如 AA=45用SCATTER从当前记录中取特定字段的值赋给数组:如: scatter fields xh, xm, xb to aa (数组长度、类型自动与所给字段相同)用 COPY TO ARRAY从当前记录中取所有字段的值赋给数组:如: copy to array aa(数组长度、类型自动与表中全部
6、字段相同)把数组中的数据传给当前表中的当前记录:gather from 数组名 fields 字段名表用数组向当前表添加记录:append from array 数组名 for 条件 fields 字段名表(用二维数组可以同时添加多条记录)数组处理的常用函数:排序SORT(),搜索ASCAN(),删除ADEL(),插入AINS()(4) 记录:表中的一行,由字段组成。(5) 对象:对象是类的一个实例,类是对拥有数据和一定行为特征的对象集合的描述。VFP对象可以是表单、表单集、控件。 5.2 VFP 6.0的语言成分1. 命令 即:由用户发出的、指示VFP进行某种操作的指令。如 USE aaa
7、& 打开 一个名为 aaa.dbf 的数据表2. 函数 即:一个预先编制好的模块,可由VFP程序在任何地方调用。函数的使用方法:名称、功能、参数、返回值几个常用函数 名称命令格式示例字符串截取函数SUBSTR( expC,expN1,expN2 )? SUBSTR(“ABCDEFG”,2,4) 结果是: BCDELEFT( expC,expN )? LEFT(“ABCDEFG”,2) 结果是: ABRIGHT( expC,expN )? RIGHTT(“ABCDEFG”,4) 结果是: DEFG字符串查找函数AT ( expC1 , expC2 expN )? AT(“B”, “ABCDE”)
8、 结果是: 2 ? AT(“A”, “ABCDEASD” ) 结果是: 1? AT(“A”,“ABCDEASD”,2 ) 结果是: 6大小写字母转换函数LOWER( expC )? LOWER(“DFGHa”) 结果是: dfghaUPPER( expC )? UPPER(“asdf”) 结果是: ASDF数值函数MAX(exp1,exp1,exp3,)? MAX(15,23,4,56) 结果是: 56MIN(exp1,exp1,exp3,)? MIN(15,23,4,56) 结果是: 4ABS( expN )? ABS(-15.83) 结果是: 15.83INT( expN )? INT(2
9、5.62) 结果是: 25压缩空格函数ALLTRIM( expC )? ALLTRIM( AD B G )结果是: AD B G类型转换函数STR( expN1,expN2,expN3)? STR(789.678,6,2) 结果是: 789.68CTOD( expC )? CTOD(“98/10/15”) 结果是: 98/10/15VAL( expC )? VAL(123.45) 结果是: 123.45DTOC( expD )? DTOC(98/12/15) 结果是: 98/12/15日期时间函数DATE()? DATE() 结果是: 2000/03/15DATETIME()? DATETIM
10、E() 结果是: 2000/03/15 10:15:30 YEAR( expD )? YEAR(87/03/25) 结果是: 1987数据库函数RECNO( )DBC( )SEEK( )其它函数LEN( )DELETED()EOF( )BOF( )FOUND( )EMPTY(exp)INLIST(,)RECCOUNT( )SELECT( )BETWEEN(,)IIF(,)TABLEREVERT( )LOCK( )CHR()ASC()TABLEUPDATE( )FSIZE( )TAG()INKEY()自定义函数:由用户为自己的应用程序创建的专用函数,可作为独立的程序文件保存在磁盘上也可作为过程文
11、件存放在其他程序中。3. 表达式即:变量、操作符、常量、函数、字段名、控制以及属性的组合,求值结果为单个值。表达式的类型: 算术表达式:由算术操作符和数值型数据构成的表达式。字符表达式:由字符操作符和字符型数据构成的表达式。日期表达式:由日期操作符和日期、时间型数据构成的表达式。 逻辑表达式:由逻辑操作符和逻辑型数据构成的表达式。名称表达式:由圆括号括起来的一个字符表达式,用来替换命令或函数中的名称。例: DBF_NAME=学生成绩登记表 USE (DBF_NAME)宏替换:用宏替换符号 & 表示,它与名称表达式具有相似的作用。例: 已知 A=1, B=2, C12=GOOD 则 C&A&B=
12、GOOD4. 操作符数值操作符( ) 或 */%(取余数)+ -关系操作符 = 或 != 或 # = =逻辑操作符()表达式分组NO或!(非)AND(和)OR (或)日期和时间操作符+- 注意: 日期型: 天数 时间型: 秒数字符操作符:+- $两个特殊的操作符圆点操作符(.):用于分隔对象的名称以及分隔对象中的属性、事件、方法。范围转变操作符(:):提供了从一个子类中调用一个父类的方法。5.3 程序设计基础1. 基本概念程 序:为解决某一问题而设计的一系列指令。主程序:通常被用户直接执行的程序。子程序:在程序中被调用的程序。源程序: 由人用源语言编写的计算机程序,必须翻译成机器语言后才能被执
13、行。目标程序: 是源程序经过编译后所产生的机器语言程序。可执行程序:源程序被编译后产生的可被机器直接执行的程序,具有 .EXE 扩展名。在VFP中是指由项目管理器连编生成的、可脱离VFP环境运行的程序。应用程序: 指为完成专门工作而设计的一组相互联系的例行程序和子程序。在VFP中是指一组 Visual FoxPro 程序、表单、菜单和其他文件经项目管理器连编后形成的单个程序,不能脱离VFP环境运行,扩展名为.APP。例行程序: 按某种顺序排列的、使计算机能执行某种任务的指令集合,可以是一种专用的程序或作为程序的一部分。它可由若干个子程序组成。2. 程序控制 (1) 顺序语句 即按程序中的语句顺
14、序依次执行。(2) 分支语句条件语句:情况语句:IF 条件 命令组1 ELSE命令组2 ENDIFDO CASE CASE 情况1 命令组1 CASE 情况2 命令组2 OTHERWISE其它命令组 ENDCASE3. 循环语句FOR 循环语句(预知循环次数)FOR 变量 = 初值 TO 终值 STEP 步长 命令组ENDFOR | NEXTDO WHILE 循环语句(未知循环次数)DO WHILE 条件 命令组 ENDDOSCAN循环语句(针对全部记录)SCAN 范围 FOR | WHILE 条件 命令组ENDSCAN循环结构中的LOOP命令和EXIT命令:LOOP是短路语句,表示从此开始下
15、一次循环;EXIT是退出语句,表示跳出循环。4. 子程序 子程序的的形式可以是一个程序文件,也可以是一个过程或自定义函数。子程序自定义函数过程特点总是被其他程序调用而不单独执行,可以调用其他子程序,不一定要返回一个值。能以一个独立的文件储存,也可包含在调用程序中,必须返回一个值。是一个程序段,是程序的组成部分,一般放在程序的最后。定义方法与程序相同,只是在子程序的结尾加需一条返回命令: RETURN 表达式 |TO MASTER |TO 程序文件名FUNCTION 函数名 或:MODIFY COMMAND 函数名PARAMETERS 数表 命令组RETURN 表达式注:用此命令定义的函数以独立
16、的文件形式储存。PROCEDURE 过程名 PARAMETRS 参数表命令组 RETURN调用方法DO 子程序名WITH 参数表 = 函数名 ( 参数表 )DO 过程名 WITH 参数表 3. 创建应用程序方法一: 在命令窗口中输入: MODIFY COMMAND 程序名方法二: 单击文件菜单 新建 程序 新文件 在编辑窗口中编辑程序 完成后关闭 给出合适的程序名及保存位置 。程序的注释: 方法1: * | NOTE 可出现在程序中的任何地方方法2: & 一般用于命令的尾部给程序加注释的目的是为了提高程序的可读性。面向过程的程序设计三步曲: 输入 处理 输出4. 修改应用程序方法一:在命令窗口中输入: MODIFY COMMAND 程序名 | ?注: ? 表示不知道程序名,要从打开对话框中选定。方法 二:单击文件菜单 打开 选择所需程序并打开 在编辑窗口中对程序进行修改 完成后关闭退出。5. 执行应用程序方法一: 在命令窗口中输入: DO 程序名 | ?方法二:从程序菜单中选择执行从打开对话框中选择所需程序并执行之。6. 程序设计的基本步骤(1)对问题进行说明(2)分解问题(3)编制各模块(4)测试并完善各模块(5)组装全部模块(6)整体测试
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1