VisualFoxPro程序设计.ppt

上传人:牧羊曲112 文档编号:5452432 上传时间:2023-07-08 格式:PPT 页数:51 大小:219.99KB
返回 下载 相关 举报
VisualFoxPro程序设计.ppt_第1页
第1页 / 共51页
VisualFoxPro程序设计.ppt_第2页
第2页 / 共51页
VisualFoxPro程序设计.ppt_第3页
第3页 / 共51页
VisualFoxPro程序设计.ppt_第4页
第4页 / 共51页
VisualFoxPro程序设计.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《VisualFoxPro程序设计.ppt》由会员分享,可在线阅读,更多相关《VisualFoxPro程序设计.ppt(51页珍藏版)》请在三一办公上搜索。

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

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

3、84&显示满足条件的记录Use&关闭数据表 Set talk on&打开人机对话,7.1 基本知识-程序的概念,程序的概念,注:命令注释:以*或NOTE开关的代码行为注释行,在命令行中以&做注释,注释行为非执行代码,不影响程序的功能。SETTALK 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:退出Visual FoxPro系统,返回到操作系统。,Visual FoxPro程序通过编译、连编,可以

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

8、它按命令在程序中出现的顺序依次执行。,输入命令-input,1、输入命令(1)INPUT命令格式:INPUT字符型表达式TO内存变量作用:该命令等待用户从键盘输入数据,用户可以输入任何合法的表达式,当按回车键结束输入时,系统将表达式的值赋给指定的内存变量,程序继续执行。注:如果选用字符型表达式,它将作为提示信息,首先显示该表达式的值。必须输入数据,输入的数据可以是常量、变量,也可以是表达式,且以回车键结束输入。输入字符串时必须加定界符(如”闫秀婧”),输入逻辑型常量时要用圆点定界符(如.t.、.f.),输入日期时间型常量时要用大括号(如2004-12-25)。,【例7.3】从键盘上输入x的值,

9、求Y3X5的值。程序代码:Set talk offClearInput 请输入X的值:TO XY=3*X+5?Y,Yset talk on,输入命令-input,【例7.4】从键盘上输入姓名,在D:VFP_examplexj.dbf中选出该同学。程序代码:Set talk off Clear close allInput 请输入姓名:TO X Use d:VFP_examplexj.dbf list xm,jg,rxcj for xm=xUse Set talk on,输入命令-input,输入命令-accept,(2)accept命令格式:accept字符型表达式TO内存变量作用:该命令等待

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

11、WAIT命令格式:wait字符型表达式 TO内存变量windowsAT,NOwaitclear|NOcleartimeout作用:无任何选项时,暂停程序的执行,当按任意键,继续程序执行;若选择了TO内存变量该命令等待用户从键盘输入值,并按回车键,系统将字符赋给指定的内存变量,并继续执行程序。,【例7.6】弹出提示窗口,5秒钟后关闭窗口,继续执行程序。程序代码:Set talk off Clear close allwait 输入无效,请重新输入.windows timeout 5 Set talk on,输入命令-wait,输出命令,(1)“”与“”命令格式1:格式2:作用:将文本行的文字输出

12、到屏幕上。注:需要定界符,中除了可以包含一般的文字外,还可以包含具有特殊含义的文字,如某些变量、表达式和函数,但这些变量、表达式和函数必须包含在文字读取符号“”之间,并且事先用set textmerge on设置。,【例7.7】用该语句输出“今天的日期是:12/31/04”程序代码set talk offclearclose allset textmerge on今天的日期是:set talk on,输出命令,(2)textendtext格式:TEXTENDTEXT作用:将由多个所组成的文字块输出到屏幕上。注:同“”一样,当输出数据中包含变量、表达式和函数时,必须包含文字读取符号“”,并且事先

13、用set textmerge on设置。,输出命令,【例7.8】用该语句输出“今天值班人员是:李平今天的日期是:12/31/04”程序代码:set talk offclearclose allset textmerge onxm=李平text今天的值班人员:今天的日期是:endtextset talk on,输出命令,(3)“?”与“?”命令,7.3 选择结构程序设计,在大多数情况下,有些问题顺序结构程序设计是无法解决的,还要用选择结构和循环结构。支持选择结构的语句包括IFELSEENDIF和DOCASEENDCASE。,IFELSEENDIF,格式1:IF Endif作用:当条件成立时,执行

14、,否则执行ENDIF的下一条语句。,格式2:IF ELSE Endif作用:当条件成立时,执行,否则执行,再转到ENDIF的下一条语句。,注:IF和ENDIF必须成对出现,IF是本结构的入口,ENDIF是本结构的出口。条件语句可以嵌套,但不能出现交叉。在嵌套时,为了使程序清晰,易于阅读,可按缩进格式缩写。为逻辑表达式,它先要进行计算,然后根据结果来判断程序的执行流程。,【例7.9】已知函数y=,编程求相应的Y值。程序代码:set talk offclose allinput 请输入X的值 to xif x8y=x+5else y=x*x+5endif?y=,yset talk on,IFELS

15、EENDIF,DOCASEENDCASE,格式:do case Case Case Case otherwise Endcase,7.4 循环结构程序设计,Visual FoxPro提供了三种循环结构语句,FORENDFOR、DOWHILEENDDO、SCANENDSCAN。,7.4.1 FORENDFOR,格式:FORTO STEPENDFOR作用:循环控制变量,按指定的步长从初值到终值变化,并控制命令序列的执行次数。,循环变量赋初值,判断循环变量值与终值大小是否成立,命令序列,循环变量步长变化,结束for语句,假,真,7.4.1 FORENDFOR,例1 求1+2+3+4+5+6+100的

16、和 set talk off sum=0 for i=1 to 100 sum=sum+i endfor?sum set talk on,7.4.2 DOWHILEENDDO,格式:DO WHILE Enddo,执行过程:语句执行时,若条件为假循环就结束,然后执行Enddo子句后面的语句;当条件为真时,执行循环体,遇到Enddo就自动返回到DO WHILE 重新判断循环条件是否成立,以决定是否继续循环。,例 求1+2+3+4+5+6+100的和 set talk off sum=0 do while i=100 sum=sum+i i=i+1 enddo?sum set talk on,【例7

17、.13】d:VFP_example中有cj.dbf(成绩表),从中统计数学成绩60分以下的人数,6070的人数,7080的人数,8090的人数,90分以上的人数。程序代码:Set talk off Clear close allstore 0 to x1,x2,x3,x4,x5Use d:VFP_examplecj.dbf do while not eof()do case case sx90 x1=x1+1 case sx80 x2=x2+1 case sx70 x3=x3+1,case sx60 x4=x4+1 otherwise x5=x5+1 endcase skip enddo?90

18、分以上的人数是:,x1?80-90分以上的人数是:,x2?70-80分以上的人数是:,x3?60-70分以上的人数是:,x4?60分以下的人数是:,x5Use Set talk on,7.4.2 DOWHILEENDDO,【例7.14】从键盘上输入出生日期,查找该年出生的同学,并显示“姓名”、“入学成绩”。(要求该程序能实现循环查找。,程序代码:Set talk off Clear close allUse f:VFP_examplexj.dbfdo while.T.input 请输入出生日期:to xdo while not eof()if year(csrq)=x?姓名:+xm?入学成绩:

19、+str(rxcj)endif,skipenddowait 继续查找吗?to cxif upper(cx)=YloopelseexitendifenddoUse Set talk on,7.4.2 DOWHILEENDDO,7.4.3 SCANENDSCAN,格式:SCAN FOR WHILE ENDSCAN作用:执行该语句时,记录指针自动、依次的在当前表的指定范围内满足条件的记录上移动,对每一条记录执行执行循环体内的命令。注:范围的默认值是ALL,而且LOOP和EXIT同样可以出现在该语句的循环体内。,【例7.15】统计专业代码(学号的第2、3位)为02的男、女生人数。,程序代码:Set t

20、alk off Clear close all store 0 to x,yUse f:VFP_examplexj.dbfscan for subs(xh,2,2)=02if xb=男x=x+1,elsey=y+1endifendscan?男生人数:,x?女生人数:,ySet talk on,7.4.3 SCANENDSCAN,7.4.4 循环的嵌套,循环还可以嵌套,即循环体中可包含循环语句,多个循环的嵌套称为多重循环。在多重循环中,循环层次必须分明,不允许交叉,否则会造成逻辑上的错误。,【例7.16】用程序实现屏幕上打印九九乘法表程序代码:set talk off clear for x=1

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

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

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

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

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

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

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号