Visual FoxPro程序设计 第5章.pdf
《Visual FoxPro程序设计 第5章.pdf》由会员分享,可在线阅读,更多相关《Visual FoxPro程序设计 第5章.pdf(188页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.1 VFP程序程序命令文件的建立和执行命令文件的建立和执行5.2 VFP常用编程命令及函数常用编程命令及函数5.3 VFP流程图介绍流程图介绍5.4 顺序执行顺序执行5.5 判断分支判断分支5.6 循环结构循环结构5.7 过程与用户自定义函数过程与用户自定义函数第五章第五章 Visual FoxPro程序设计入门程序设计入门返回主目录第五章第五章 Visual FoxPro程序设计入门程序设计入门5.1 VFP程序程序命令文件的建立和执行命令文件的建立和执行5.1.1 建立和编辑命令文件建立和编辑命令文件1用用MODIFY COMMAND命令建立命令文件命令建立命令文件常用命令格式:MOD
2、IFY COMMAND 文件名的默认扩展名为.PRG。系统首先在磁盘上寻找该文件,若未找到,则建立之,在屏幕上打开一编辑窗口,供用户输入内容;若找到,则把该文件内容调至编辑窗口,由用户进行编辑,并在磁盘上复制一同名、同内容的.BAK文件。编辑结束时,可用End或W结束命令并存盘。也可用Esc键作废编辑并结束命令。2使用菜单操作建立命令文件使用菜单操作建立命令文件操作过程:文件新建选择“程序”单选按钮单击“新建文件”,将打开一编辑窗口,供用户输入程序。3使用项目管理器建立命令文件使用项目管理器建立命令文件有关项目管理器的详细内容参见第十三章。操作过程:首先打开项目管理器选择“代码”选项卡选择“程
3、序”选项单击“新建”按钮,也将打开一编辑窗口供用户输入程序。5.1.2 执行命令文件执行命令文件可在VFP的命令窗口(COMMAND窗口)中执行。命令格式:DO此命令将首先打开该命令文件,然后从其第一条语句开始执行。执行完毕,自动关闭此命令文件,回到命令窗口。5.2 VFP常用编程命令及函数常用编程命令及函数1SET TALK命令基本命令格式:命令基本命令格式:SET TALK ON/OFF在VFP中,有很多SET命令,其中很大一部分是用以转换状态的。本命令就是转换TALK的状态的。TALK的初始状态为ON,在这种状态下,VFP 在执行一些非显示命令时,将把执行结果等信息送到显示器显示。在调试
4、程序时,这种方式是极为有利的。但在执行程序时,一般都不希望如此。此时,可用SET TALK OFF命令来改变TALK状态。TALK处于OFF状态时,屏幕上只显示命令要求输出的结果。2SET PRINTER 命令命令基本命令格式:SET PRINTER OFF/ONPRINTER的初始状态为OFF。当PRINTER状态为OFF时,关闭向打印机的输出。执行SET PRINTER ON命令后,PRINTER状态为ON,此时,输出结果将传送到打印机打印输出。3系统初始化命令系统初始化命令CLEAR ALL命令格式:CLEAR ALL该命令关闭所有打开的库文件、表文件及其有关文件索引文件、备注文件等,清
5、除所有内存变量,清除所有用户自定义下拉菜单、弹出式菜单和窗口,选择1号工作区为当前工作区。常用于应用程序主控模块的开头。4清屏命令清屏命令CLEAR命令格式:CLEAR本命令将清除VFP主窗口或当前用户自定义窗口。该命令常用于应用程序某模块的开头,或在各输出命令前使用。5终止程序执行语句终止程序执行语句CANCEL命令格式:CANCEL该语句将终止正在执行的程序,把控制权返回给COMMAND窗口。CANCEL将释放所有局部性内存变量(见5.7.3节)。在程序设计中,常用CANCEL语句在某种条件满足时终止程序的执行,因此它常与条件选择语句一起使用。6.程序注释语句程序注释语句NOTE/*格式1
6、:NOTE格式2:*注释语句的作用是对程序作注释,不执行任何操作。7.信息框函数信息框函数MESSAGEBOX格式:MESSAGEBOX(,)该函数将显示一个用户自定义对话框。其中,指定在对话框中显示的文本。在该表达式中包含回车符(CHR(13)可以使信息内容移到下一行显示。对话框的高度和宽度会根据字符串适当增大,以包含全部信息。指定对话框中的按钮和图标、显示对话框时的默认按钮以及对话框的行为。在表51中,对话框按钮值从05指定了对话框中显示的按钮;表52中,图标值16,32,48,64指定了对话框中的图标。表53中,默认值0,256,512指定对话框中哪个按钮为默认按钮。当显示对话框时,此默
7、认按钮被首先选中。当省略时,等同于指定值为0。值实际上是3个值的和从上面每个表中选一个值。例如,若为35,即(3+32+0),则显示的对话框含有如下特征:表51 对话框按钮值与按钮类型的对应关系“重试”和“取消”按钮5“是”、“否”按钮4“是”、“否”和“取消”按钮3“放弃”、“重试”和“忽略”按钮2“确定”和“取消”按钮1仅有“确定”按钮0对 话 框 按 钮数 值表表52 对话框图标值与图标类型 数值对话框图标值与图标类型 数值信息(i)图标64惊叹号48问号32“停止”图标16图标数 值表表53 对话框默认按钮值与默对话框默认按钮值与默第三个按钮512第二个按钮256第一个按钮0默认按钮数
8、值值实际上是3个值的和从上面每个表中 选 一 个 值。例 如,若 为 35,即(3+32+0),则显示的对话框含有如下特征:“是”、“否”和“取消”按钮。信息框显示问号图标。第一个按钮,即“是”按钮为默认按钮。指定对话框标题栏中的文本,若省略该字符串,标题栏中将显示“Microsoft Visual FoxPro”。例 如,执 行:MESSAGEBOX(“现 在 了 解MESSAGEBOX()函 数 的 使 用 方 法 了 吗?”,35,“MESSAGEBOX()使用示例”)命令,系统所显示的对话框如图51所示。MESSAGEBOX()函数的返回值为数值型,它标明用户选取了对话框中的哪个按钮,
9、具体规定如表54所示。表表54 函数返回值与选取按钮的对应关系函数返回值与选取按钮的对应关系是5忽略4重试3放弃2取消1确定0选取按钮返回值否6图51 MESSAGEBOX()函数使用示例5.3 VFP流程图介绍流程图介绍在编制程序尤其是编制复杂程序时,常用流程图来进行程序设计和介绍程序的结构。流程图是形象的描述程序设计思想的好方法,它的特点是比较直观、清晰。本教材中,我们使用结构化程序流程图的三种基本图形,如图52所示。图52中(a)、(b)、(c)分别对应顺序、分支、循环结构。图52(a)中的每个矩形对应输入、输出及处理功能。它们的执行顺序按从上至下进行,反映了程序结构的顺序情形。图52(
10、b)中,程序的执行出现了分支,即根据不同情况(条件),执行不同功能。(b1)反映了二分支即两种情况的情形,(b2)反映了多分支即可能出现多种情况的情形(b)中的三角形是一种分支,当满足该条件时,执行该分支下面的功能,而其余分支下的功能不论是否满足条件,一律不被执行。判断满足分支条件的顺序在图形中按先左后右进行。如果有一个分支满足了条件,则立即执行它的功能,而其余皆不执行。若无一分支满足条件,则所有功能均不执行。图52(c)是循环结构图形,图形中顶部和左侧区域是循环的条件和范围。顶部的条件如果满足,则执行给定范围内的语句。然后,再次返回顶部,判断条件是否满足:若满足,则继续执行以下语句;否则,退
11、出循环,结束循环结构。5.4 顺 序 执 行顺 序 执 行5.4.1 顺序执行程序入门顺序执行程序入门完全由顺序执行语句组成的程序称为顺序执行程序。顺序执行方式是最简单的,也是最基本、最常见的一种程序执行方式。例1把表文件“职工.DBF”中李红卫的职称改为“高工”。编程实现如下:SET TALK OFFOPEN DATABASE 雇员管理USE 职工LOCA FOR 姓名=李红卫REPL 职称 WITH 高工DISPUSESET TALK ON请读者自己为该程序起个名,建立一个命令文件,然后运行之。能否让用户现场随意输入人名?语句可完成此工作。5.4.2 命令的基本功能命令的基本功能命令的功能
12、很强,这里只介绍它的基本功能。1显示器的坐标显示器的坐标不同计算机系统的显示器坐标系统是有差别的,用户在使用时,必须了解实际的坐标系统。图53给出了一个显示器的VFP主窗口坐标系。在上图中,X表示行,Y表示列。VFP主窗口左上角坐标为(0,0)。2屏幕输出格式设计命令的基本格式屏幕输出格式设计命令的基本格式利用输出格式设计命令,用户可以在VFP主窗口的任何一个坐标点上显示有关内容。图53 VFP主窗口坐标系(0,79)Y.(24,79)(0,0)(24,0)X本命令在VFP主窗口上,由规定的坐标开始,显示命令中的值。命令中的“行”和“列”,可以是具体的数值,也可以是数值型内存变量或数值表达式。
13、的最常见形式是一个用引号括起的字符串常量,作为提示信息用。例2 G1.PRG 程序如下:CLEAR 1,20 SAY 职工号2,10 SAY 3*5+2=ROW(),COL()SAY 3*5+2ROW()+1,5 SAY 这是一本书执行后,屏幕显示如下:职工号3*5+2=17这是一本书第一条命令在第1行第20列开始显示:职工号。第二条命令在第2行第10列开始显示:3*5+2=。第三条命令在光标当前位置开始显示表达式3*5+2的值:17。第四条命令在下一行第5列开始显示:这是一本书。3屏幕输入格式设计命令的基本格式屏幕输入格式设计命令的基本格式命令基本格式:SAYGETDEFAULT格式中的可以
14、是一个内存变量、下标变量或当前打开表文件的一个字段名。该命令将从规定的坐标开始,首先输出SAY子句(若存在)的值,空一格后,再接着输出GET子句中的的值。DEFAULT:若GET子句中的不存在,则命令中必须包含本子句。本子句将建立一个值为的变量。若存在,本子句被忽略。例3 G2.PRG程序如下:USE 职工CLEAR 3,5 SAY职工姓名为:GET 姓名4,5 SAY 月工资为:GET 工资执行后,屏幕显示如下:职工姓名为:胡一民月工资为:575.004READ命令的基本功能命令的基本功能READ命令有着丰富的功能,这里仅介绍它的基本功能。READ命令的基本格式为:READ 执行READ命令
15、时,光标返回到屏幕上第一个GET子句的变量值处。若用户键入新值,该变量值即被新值代替;若仅以回车键响应,则原变量值不变。用新数据取代旧数据时,以回车键或达到原定义的变量长度为结束。然后,光标跳到下一个GET子句的变量值处。用户重复上述修改过程,直至READ命令前所有GET子句的变量都修改后,结束此命令,并把各变量新值送回各变量。例4 G3.PRG程序如下:USE 职工CLEAR3,5 SAY 职工姓名为:GET 姓名4,5 SAY 月工资为:GET 工资READ程序执行后,屏幕上显示:职工姓名为:胡一民月工资为:85.00这时光标在“姓名”字段值“胡一民”的首字符处,用户可修改两字段值。5.4
16、.3 其它键盘输入语句其它键盘输入语句1键盘输入单字符语句键盘输入单字符语句WAIT语句基本格式:WAIT“提示信息”TOWAIT语句首先显示“提示信息”(若语句中有提示信息项,则显示语句中给定提示信息;否则,显示WAIT语句固有提示信息:按任一键继续),接着暂停程序的执行,等待用户键入另一键。用户按下另一键后,这个键的值(若是回车键或不能打印键或组合键,值为空串)作为一个单字符字符串,送(若选择了TO子句的话,它可以是一个内存变量,也可以是一个下标变量。如果内存中不存在,则自动生成之)。WAIT语句执行完毕,程序继续执行。WAIT语句响应速度快,它只接收单个字符,并且不需要再按回车键。WAI
17、T语句常用于两种情况:1)用于只需从键盘输入单个字符的情况(现举例说明)例5 查看表文件“职工.DBF”中某一记录情况。每查看完一个,要求系统给出提示:“是否继续查询(Y/N)”。要求快速响应,以便根据输入的数据控制查询是结束还是继续显示另一个记录。程序清单如下:SET TAKL OFFCLEAROPEN DATABASE 雇员管理USE职工DO WHILE.T.XM=5,10 SAY 请输入待查姓名GET XMREADLECA FOR 姓名=XMIF FOUND()DISPELSE?查无此人ENDIFWAIT 是否继续查询(Y/N):TO YNIF UPPE(YN)=NEXITENDIFEN
18、DDOUSECLOSE DATABASESET TALK ON是否继续查询(Y/N):这时只要用户键入“N”,则结束程序运行。如果用户键入的是其它任一键,则屏幕上又显示:请输入待查姓名:再重复执行以上程序。2)WAIT语句常用的第二种情况当程序执行的结果在屏幕上显示出来后,为了让用户能看清所显示的内容(由于程序在不断执行,屏幕上显示的结果会一闪而过),在程序的适当位置可以用WAIT语句使屏幕显示的结果停留下来,当你看清屏幕上的内容之后,再按任一键让程序继续执行。在这种情况下,WAIT语句具有独特的优越性。2.键盘输入字符串语句键盘输入字符串语句ACCEPT语句格式:ACCEPT“提示信息”TO
19、 执行本命令时,首先输出(若存在);然后等待用户从键盘键入数据。用户输入完数据,按回车键后,系统把用户输入的数据作为一个字符串(用户不要输入字符括号:单引号、双引号或方括号)送给指定的变量。用户也可键入一个字符表达式,系统将其值送指定变量。3键盘输入语句键盘输入语句INPUT语句格式:INPUT“提示信息”TO 执行本命令时,首先在屏幕上输出“提示信息”,并等待用户键入数据;用户按回车键后,即把用户键入的表达式求值,送。表达式是什么类型,即是什么类型。5.4.4 顺序执行程序举例顺序执行程序举例例6 对于5.4.1的例子,我们进行一些修改如下:SET TALK OFFUSE 职工XM=XZC=
20、10,10 SAY请输入姓名:GET XM12,10 SAY请输入新职称:GET XZCREADLOCA FOR 姓名=XMDISPUSESET TALK ON上述程序不能对输入值进行分析。判断分支语句可解决此问题。5.5 判 断 分 支判 断 分 支5.5.1 条件转向语句条件转向语句IFENDIF这是一种简单的分支语句,语句格式如下:IFENDIF 值为“真”时,顺序执行IF和ENDIF间的语句行序列,然后再执行ENDIF后的语句;若其值为“假”时,则直接跳到ENDIF后面的语句继续执行。图54 条件转向语句流程图 条件表达式 为.T.为.F.语句行序列 ENDIF 语句 IF和ENDIF
21、必须成对出现。图54给出了此语句的流程。例7对5.4.3中的例子引伸一步,如果表文件中该指定人员的职称与新定的职称相符,则不作任何操作。流程图如图55所示。依据流程图,编制程序如下:SET TALK OFF OPEN DATABASE 雇员管理USE 职工MX=XZC=10,10 SAY 请输入姓名:GET XM12,10 SAY 请输入新职称:GET XZCREADLOCA FOR 姓名=XMIF 职称 XZCREPL 职称 WITH XZCENDIF DISP USECLOSE DATABASESET TALK ON5.5.2 条件选择转向语句条件选择转向语句IFELSEENDIF语句格式
22、:IF语句行序列1ELSE ENDIF 执行此语句时,计算机首先判断条件表达式的值是否为真;若为真,执行,然后跳过,从ENDIF后面的语句开始继续执行;若条件表达式的值为假,则直接跳转执行,然后再执行ENDIF后面的语句。流程图如图56所示。例8求出表文件“职工.DBF”中指定人员的年龄。如果年龄大于40岁,工资加10元;否则,工资加5元。按题意编制流程图如图57所示。依据流程图,编制程序如下:图57 例8的流程图年龄40?是否工资10工资5显示该记录关闭数据库及表文件计算该职工的年龄令指针指向该记录输入职工姓名打开数据库及表文件设置初始状态SET TALK OFFCLEAROPEN DATA
23、BASE 雇员管理USE 职工NF=0XM=5,10 SAY请输入今年的年份:GET NF7,10 SAY 请输入姓名:GET XMREADLOCA FOR 姓名=XMNL=NF-YEAR(出生日期)IF NL40 REPL 工资 WITH 工资+10ELSE REPL 工资 WITH 工资+5ENDIFDISP USECLOSE DATABASESET TALK ON程序中的YEAR()函数是求年份函数,用今年的年份减去出生的年份,便是指定人员的年龄。程序其它部分请读者自行分析。5.5.3 IF语句的嵌套语句的嵌套一个IF语句可以有两个完整的分量:其一是从IF到ELSE之间的;其二是从ELS
24、E到ENDIF之间的(无ELSE时,IF语句只有一个完整的分量,即从IF到ENDIF之间的语句行序列)。所谓IF语句的嵌套,是指在一个IF语句的一个完整的分量中,包含了另一个完整的IF语句。例9为鼓励存款,对定期存款时间少于1年的,利率为3%;等于或大于1年而少于3年的,利率为5%;等于或大于3年而少于5年的,利率为7%;5年以上的,利率为9%。按题意画流程图如图58所示。程序清单如下:图58 例9的流程图定期5年?是否利率0.07利率0.09利率0.05否是定期3年?利率0.03是否定期1年?输入存款年限SET TALK OFF CLEAR NX=0 5,10 SAY输入定期年限:GET N
25、XREADIF NX1LL=0.03 ELSE IF NX3 LL=0.05 ELSEIF NX5 LL=0.07 ELSE LL=0.09 ENDIF ENDIFENDIF?利率=,LLSET TALK ON在这个例子中,我们用了两个以上的IF语句,且一个IF语句嵌套在另一个IF语句之中,这种形式就称为IF语句的嵌套形式。在编制程序时,遇到嵌套的情况,应注意书写格式,按照嵌套的层次,一层一层书写成锯齿形结构,上机调试程序时更应如此,这样可以使程序清晰易读,出了错也便于检查。5.5.4 情况语句情况语句DO CASE ENDCASE情况语句中有许多成分语句,它根据条件的具体情况选择执行其中的某
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual FoxPro程序设计 第5章 FoxPro 程序设计
限制150内