收藏 分享(赏)

第七章 Visual FoxPro程序设计.ppt

上传人:tkhy51908 文档编号:8010714 上传时间:2019-06-04 格式:PPT 页数:51 大小:144.50KB
下载 相关 举报
第七章 Visual FoxPro程序设计.ppt_第1页
第1页 / 共51页
第七章 Visual FoxPro程序设计.ppt_第2页
第2页 / 共51页
第七章 Visual FoxPro程序设计.ppt_第3页
第3页 / 共51页
第七章 Visual FoxPro程序设计.ppt_第4页
第4页 / 共51页
第七章 Visual FoxPro程序设计.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、第七章 Visual FoxPro程序设计,前面介绍的在命令窗口中输入命令或通过选择菜单来执行Visual FoxPro命令,都是交互执行方式。除此外,还可以通过程序的方式来调用Visual FoxPro命令,以完成更为复杂的任务。,7.1 基本知识-7.1.1程序的概念,学习Visual FoxPro的目的就是要使用它的命令来组织和处理数据,完成一些特定任务。如果靠单一的在命令窗口中逐条输入命令执行,不仅繁琐,而且容易出错,特别是命令需要反复执行或所包含的命令很多时,应用交互方式根本无法完成,必须通过命令组来实现。这里就应该采取程序方式。,程序是能够完成一定任务的命令的有序集合。这组命令被存

2、放在称为程序文件或命令文件中。当程序运行时,系统会按照一定的次序自动执行包含在程序中的命令。与命令方式相比较,主要有如下的优势: 可以方便的利用编辑器输入、修改和保存程序。 可以用多种方式,多次的运行程序。 可以在一个程序中调用另一个程序。,7.1 基本知识-7.1.1程序的概念,【例7.1】 从D:VFP_examplexj.dbf中选出所有1984年出生的同学,并显示该年出生的同学的姓名,性别,家庭住址,入学成绩。 程序代码如下: Set talk off &关闭人机对话 Clear &清除屏幕 Use d:VFP_examplexj.dbf &打开数据表 List xm,xb,jtzz,

3、rxcj for year(csrq)=1984 &显示满足条件的记录 Use &关闭数据表Set talk on &打开人机对话,7.1 基本知识-7.1.1程序的概念,7.1.1程序的概念,注:命令注释:以*或NOTE开关的代码行为注释行,在命令行中以&做注释,注释行为非执行代码,不影响程序的功能。SET TALK ONOFF:许多数据处理命令(如SUM、AVERAGE等,执行时会返回一些有关执行状态的信息,并且显示在Visual FoxPro的主窗口、状态栏或用户自定义的窗口里。而SET TALK OFF禁止执行状态信息的显示,SET TALK ON允许执行状态信息的显示。程序代码可以写

4、在程序文件中,还可以出现在表单设计器和类设计器的事件和方法代码窗口、报表设计器和菜单设计器的过程代码窗口中。在命令窗口中可像执行程序一样,一次执行多条命令,具体实现方法如下:在命令窗口中选择要执行的多条命令。按ENTER键,或单击鼠标右键并在弹出的快捷菜单中选择【运行所选区域】,1、程序的建立与修改 (1)程序文件的建立与修改是通过调用系统内置的文本编辑器来进行。 注:程序文件默认扩展名是prg,如果指定其它扩展名,那么在打开或执行程序文件时都要显示指定扩展名。,7.1.2 程序的建立与执行,(2)打开、修改程序文件的步骤:从【文件】菜单中选择【打开】命令,弹出“打开”对话框中,在“文件类型”

5、列表框中选择“程序”,在“文件列表”框中选定要修改的文件,并单击【确定】命令按钮。编辑修改后,从【文件】菜单中选择【保存】命令或按CTRLW修改键保存文件,若要放弃本次,可从【文件】菜单中选择【还原命令】命令或按ESC键。,(3)用命令方式建立、修改程序文件: 格式:MODIFY COMMAND 文件路径 作用:执行该命令时,系统首先检索磁盘文件,如果指定文件存在,则打开修改,否则系统认为是要建立一个指定了文件名的程序文件。 注:格式中的文件路径可以省略,如果没有给定扩展名,系统自动加上默认扩展名prg。,2、执行程序文件 程序文件建好后,就可以用多种方式、多次执它。具体方法有: (1)菜单方

6、式:从【程序】菜单中选择【运行】命令,弹出“运行”对话框。在“文件类型”列表框中选择“程序”,在“文件列表”框中选定要运行的文件,并单击【运行】命令按钮。,(2)命令方式: 格式:do 文件路径 作用:运行指定的文件。 该命令即可在命令窗口执行,也可在某个程序文件、表单、菜单事件中出现,这样就可完成程序的调用。当程序文件被执行时,文件中包含的命令将依次执行,直到所有的命令被执行完毕,或执行到以下命令: CANCEL:终止程序执行,清除所有私有变量,返回命令窗口。 DO:转去执行另一个程序。 RETURN:结束当前程序的执行,返回到调用它的上级程序,若无上级程序则返回到命令窗口。 QUIT:退出

7、Visual FoxPro系统,返回到操作系统。,Visual FoxPro程序通过编译、连编,可以产生不同的目标代码文件,这些文件具有不同的扩展名,当用DO命令执行程序文件时,如果没有指定扩展名,系统将按下列顺序寻找该程序文件的源代码或某种目标代码文件执行, .exe(Visual FoxPro可执行文件) .app(Visual FoxPro的应用程序文件) .fxp(Visual FoxPro的编译文件) .prg(Visual FoxPro的源程序文件)。 注:如果用DO命令执行查询文件、菜单文件,文件名必须要加上扩展名(.qpr、.mpr)。,7.2 顺序结构程序设计,程序的基本结构

8、是指程序中命令或语句执行的流程结构,基本结构有三种:顺序结构、选择结构、循环结构。顺序结构是最简单的程序结构,它按命令在程序中出现的顺序依次执行。,7.2.1输入命令-input,1、输入命令 (1)INPUT命令 格式:INPUT 字符型表达式 TO 内存变量 作用:该命令等待用户从键盘输入数据,用户可以输入任何合法的表达式,当按回车键结束输入时,系统将表达式的值赋给指定的内存变量,程序继续执行。 注:如果选用字符型表达式,它将作为提示信息,首先显示该表达式的值。必须输入数据,输入的数据可以是常量、变量,也可以是表达式,且以回车键结束输入。输入字符串时必须加定界符(如”闫秀婧”),输入逻辑型

9、常量时要用圆点定界符(如.t.、.f.),输入日期时间型常量时要用大括号(如2004-12-25)。,【例7.3】从键盘上输入x的值,求Y3X5的值。 程序代码: Set talk off Clear Input “请输入X的值:“ TO X Y=3*X+5 ?“Y“,Y set talk on,7.2.1输入命令-input,【例7.4】从键盘上输入姓名,在D:VFP_examplexj.dbf中选出该同学。 程序代码: Set talk off Clear close all Input “请输入姓名:“ TO X Use d:VFP_examplexj.dbf list xm,jg,rx

10、cj for xm=x Use Set talk on,7.2.1输入命令-input,7.2.1输入命令-accept,(2)accept命令 格式:accept 字符型表达式 TO 内存变量 作用:该命令等待用户从键盘输入字符串,当按回车键结束输入时,系统将字符串赋给指定的内存变量,程序继续执行。 注:如果选用字符型表达式,它将作为提示信息,首先显示该表达式的值。必须输入数据,输入的数据只能是字符串,用户在输入字符串时不加定界符,且以回车键结束输入。如果不输入任何内容而直接按回车键,系统会把空串赋给指定的内存变量。,【例7.5】从键盘输入姓名,显示该同学的相关情况。程序代码: Set ta

11、lk off Clear close all accept “请输入姓名:“ TO X Use d:VFP_examplexj.dbf browse for xm=x Use Set talk on,7.2.1输入命令-wait,(3)WAIT命令 格式:wait字符型表达式 TO 内存变量windowsAT,NOwaitclear|NOcleartimeout 作用:无任何选项时,暂停程序的执行,当按任意键,继续程序执行;若选择了TO 内存变量该命令等待用户从键盘输入值,并按回车键,系统将字符赋给指定的内存变量,并继续执行程序。,【例7.6】弹出提示窗口,5秒钟后关闭窗口,继续执行程序。 程

12、序代码: Set talk off Clear close all wait “输入无效,请重新输入.“ windows timeout 5 Set talk on,7.2.1输入命令-wait,7.2.1输出命令,(1)“”与“”命令 格式1: 格式2: 作用:将文本行的文字输出到屏幕上。 注:需要定界符,中除了可以包含一般的文字外,还可以包含具有特殊含义的文字,如某些变量、表达式和函数,但这些变量、表达式和函数必须包含在文字读取符号“”之间,并且事先用set textmerge on设置。,【例7.7】用该语句输出“今天的日期是:12/31/04” 程序代码 set talk off cl

13、ear close all set textmerge on 今天的日期是: set talk on,7.2.1输出命令,(2)textendtext 格式:TEXT ENDTEXT 作用:将由多个所组成的文字块输出到屏幕上。 注:同“”一样,当输出数据中包含变量、表达式和函数时,必须包含文字读取符号“”,并且事先用set textmerge on设置。,7.2.1输出命令,【例7.8】用该语句输出 “今天值班人员是:李平 今天的日期是:12/31/04” 程序代码: set talk off clear close all set textmerge on xm=“李平“ text 今天的值

14、班人员: 今天的日期是: endtext set talk on,7.2.2输出命令,(3)“?”与“?”命令,7.3 选择结构程序设计,在大多数情况下,有些问题顺序结构程序设计是无法解决的,还要用选择结构和循环结构。支持选择结构的语句包括IFELSEENDIF和DO CASEENDCASE。,7.3.1 IFELSEENDIF,格式1:IFEndif 作用:当条件成立时,执行,否则执行ENDIF的下一条语句。,格式2:IFELSEEndif 作用:当条件成立时,执行,否则执行,再转到ENDIF的下一条语句。,注:IF和ENDIF必须成对出现,IF是本结构的入口,ENDIF是本结构的出口。条件

15、语句可以嵌套,但不能出现交叉。在嵌套时,为了使程序清晰,易于阅读,可按缩进格式缩写。为逻辑表达式,它先要进行计算,然后根据结果来判断程序的执行流程。,【例7.9】已知函数y=,编程求相应的Y值。程序代码: set talk off close all input “请输入X的值“ to x if x8 y=x+5 else y=x*x+5 endif ?“y=“,y set talk on,7.3.1 IFELSEENDIF,7.3.2 DO CASEENDCASE,格式:do case Case Case Case otherwiseEndcase,7.4 循环结构程序设计,Visual F

16、oxPro提供了三种循环结构语句, FORENDFOR、DO WHILEENDDO、SCANENDSCAN。,7.4.1 FORENDFOR,格式:FOR TO STEPENDFOR 作用:循环控制变量,按指定的步长从初值到终值变化,并控制命令序列的执行次数。,循环变量赋初值,判断循环变量值与终值大小是否成立,命令序列,循环变量步长变化,结束for语句,假,真,7.4.1 FORENDFOR,例1 求1+2+3+4+5+6+100的和set talk offsum=0for i=1 to 100sum=sum+iendfor?sumset talk on,7.4.2 DO WHILEENDDO

17、,格式: DO WHILE Enddo,执行过程:语句执行时,若条件为假循环就结束,然后执行Enddo子句后面的语句;当条件为真时,执行循环体,遇到Enddo就自动返回到DO WHILE 重新判断循环条件是否成立,以决定是否继续循环。,例 求1+2+3+4+5+6+100的和set talk offsum=0do while i=100sum=sum+ii=i+1enddo?sumset talk on,【例7.13】d:VFP_example中有cj.dbf(成绩表),从中统计数学成绩60分以下的人数,6070的人数,7080的人数,8090的人数,90分以上的人数。 程序代码: Set t

18、alk off Clear close all store 0 to x1,x2,x3,x4,x5 Use d:VFP_examplecj.dbf do while not eof() do case case sx90x1=x1+1case sx80 x2=x2+1case sx70x3=x3+1,case sx60x4=x4+1otherwisex5=x5+1endcaseskipenddo?“90分以上的人数是:“,x1?“80-90分以上的人数是:“,x2?“70-80分以上的人数是:“,x3?“60-70分以上的人数是:“,x4?“60分以下的人数是:“,x5 Use Set tal

19、k on,7.4.2 DO WHILEENDDO,【例7.14】从键盘上输入出生日期,查找该年出生的同学,并显示“姓名”、“入学成绩”。(要求该程序能实现循环查找。,程序代码: Set talk off Clear close all Use f:VFP_examplexj.dbf do while .T. input “请输入出生日期:“ to x do while not eof() if year(csrq)=x ?“姓名:“+xm ?“入学成绩:“+str(rxcj) endif,skip enddo wait “继续查找吗?“to cx if upper(cx)=“Y“ loop e

20、lse exit endif enddo Use Set talk on,7.4.2 DO WHILEENDDO,7.4.3 SCANENDSCAN,格式: SCAN FOR WHILEENDSCAN 作用:执行该语句时,记录指针自动、依次的在当前表的指定范围内满足条件的记录上移动,对每一条记录执行执行循环体内的命令。 注:范围的默认值是ALL,而且LOOP和EXIT同样可以出现在该语句的循环体内。,【例7.15】统计专业代码(学号的第2、3位)为02的男、女生人数。,程序代码: Set talk off Clear close all store 0 to x,y Use f:VFP_exa

21、mplexj.dbf scan for subs(xh,2,2)=“02“ if xb=“男“ x=x+1,else y=y+1 endif endscan ?“男生人数:“,x ?“女生人数:“,y Set talk on,7.4.3 SCANENDSCAN,7.4.4 循环的嵌套,循环还可以嵌套,即循环体中可包含循环语句,多个循环的嵌套称为多重循环。 在多重循环中,循环层次必须分明,不允许交叉,否则会造成逻辑上的错误。,【例7.16】用程序实现屏幕上打印九九乘法表 程序代码:set talk offclearfor x=1 to 9for y=1 to i?i*jendfor?endfor

22、set talk on,7.4.4 循环的嵌套,【例7.17】打印等腰三角型。 程序代码: clear for i=1 to 5 ?space(10-i) for j=1 to 2*i-1 ?“*“ endfor ? endfor,7.4.4 循环的嵌套,7.5 多模块程序,应用程序一般都是多模块程序,包含多个程序模块。模块是一个相对独立的程序段,它可以被其它模块所调用,也可以调用其它的模块。通常,把被其它模块调用的模块称为子程序,把调用其它模块而没有被其它模块调用的模块称为主程序。将应用程序划分成一个个功能相对简单、单一的模块程序,不仅便于程序的开发,也利于程序的阅读和理解。,7.5.1 模

23、块的定义和调用,在Visual FoxPro中,模块可以是命令文件,也可以是过程或函数。 1、过程的定义如下: 格式:procedure |functionreturnendproc|endfunc 作用:定义过程或函数。 注:过程名或函数名必须以字母或下划线开头,可包含字母、数字或下划线。当程序执行到RETURN命令时,控制将转回到调用程序处,并返回表达式的值,若无RETURN,则在过程结束处自动生成一条隐含的RETURN命令,若RETURN不带表达式,则返回逻辑值.T.。 endproc|endfunc表示过程的结束,如果缺省,那么过程结束于下一条procedure |function命令

24、或文件结尾处。 过程或函数可以放置在程序文件代码的后面,也可以保存在称为过程文件的单独文件里,过程文件的建立仍用MODIFY COMMAND命令,文件的扩展名还是.prg. 过程文件里只包含过程,这些过程能被其它任何程序所调用,但在调用过程文件之前先要打开过程文件。,2、过程文件的打开 格式:SET PROCEDURE TO ,ADDITIVE 作用:打开一个或多个过程文件,一旦过程文件被打开,那么该过程文件中的所有过程都可以被调用。若选用ADDITIVE,那么在打开过程文件时,并不关闭原先已打开的过程文件。 3、过程文件的关闭 格式1:SET PROCEDURE TO 格式2:RELEASE

25、 PROCEDURE 作用:关闭所有打开的过程文件。 4、模块的调用 格式1:DO| 格式2:| 作用:调用过程或文件。 注:如果模块是程序文件代码,用,否则用。格式2中,即可作为命令使用,也可作为函数出现在表达式中,且文件名不能包含扩展名。,7.5.1 模块的定义和调用,【例7.18】编程求组合数,程序代码: set talk off close all clear zhs=jc(8)/(jc(3)*jc(8-3) &函数调用 ?“8中3的组合数:“+str(zhs) set talk on function jc &自定义函数 parameters n &n为模块程序中的私有变量,s=1

26、do while n0 s=s*n n=n-1 enddo return(s) endfunc,7.5.2 参数传递,模块程序可以接收调用程序传过来的参数,并能够根据接收到的参数控制程序流程或对接收到的参数进行处理,从而大大提高模块程序功能设计的灵活性。 1、接收参数的命令 格式1:PARAMETERS形参变量1,形参变量2 作用:声明的形参变量被看作是模块程序中建立的私有变量。 格式2:LPARAMETERS形参变量1,形参变量2 作用:声明的形参变量被看作是模块程序中建立的局部变量。 注:无论是PARAMETERS还是LPARAMETERS都应是模块程序的第一条可执行命令。,2、模块参数的

27、调用 格式1:DO 文件名过程名 WITH 实参1,实参2 格式2:文件名过程名 WITH 实参1,实参2 作用:调用模块程序时,系统自动会把实参传递给对应的形参。 注:实参可以是常量、变量,也可以是表达式。形参的数目不能少于实参的数目,否则系统运行时会出错;若形参的数目多于实参的数目,多余的形参取初值逻辑假(.F.)。采用格式1调用程序模块时,如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们的值赋给相应的形参,这种形式称为按值传递。如果实参是变量,那么传递的不是变量的值,而是变量的地址,这时形参和实参是同一个变量(尽管它们的名字可能不同),在模块程序中对形参变量值的改变,同样是对实参变量值的改变,这种情形称为按引用传递。采用格式2调用程序模块时,默认情况下,都按值方式传递参数,如果实参是变量,可以通过命令SET UDEFPARMS命令重新设置参数传递的方式,具体设置如下: 格式:SET UDEFPARMS TO VALUEREFERENCE 作用:选择TO VALUE,按值传递,形参变量值的改变不会影响实参PARAMETERS和LPARAMETERS。,7.5.2 参数传递,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报