您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > VF数据库第11章 程序设计基础
第十一章结构化程序设计11.1VFP的工作方式Vfp系统提供了三种工作方式,即命令方式、菜单方式和程序文件方式。1、命令方式特点:输入一条操作命令,系统完成一个数据库的操作。2、菜单方式:通过菜单选择相应的操作。3、程序方式:所谓程序执行方式,就是将实现某一功能的VFP命令序列,在编辑器中编成特定的程序文件,存放在磁盘中,其文件扩展名为Prg。当我们需要实现这一功能时,就执行该程序。特点:通过程序文件中的命令,完成对数据库的操作和系统环境的设置。4、程序文件的建立、执行和编译1.命令方式ModifyCommand程序文件名2.菜单方式◆单击系统菜单“文件”、“新建”,弹出“新建”窗口。◆在“新建”窗口中,选择“程序”、“新建文件”,进入“程序文件编辑”窗口。◆在“程序文件编辑”窗口中,逐条输入命令行。◆结束后,单击系统菜单“文件”、“保存”,在窗口的“保存文档为:”对话框中,输入程序文件名,默认的文件类型为*.Prg,单击“保存”按钮,建立程序文件的操作结束。5、程序文件的执行程序文件保存在磁盘上,在需要运行时可从磁盘调入内存执行。注意:程序运行后,会自动产生一个文件类型为.Fxp的同名的编译程序。1.命令方式Do〈程序文件名〉2.菜单方式单击系统菜单的“程序”、“运行”,在弹出的“运行”窗口中,选择路径、双击需要运行的程序名。11.2程序的基本结构在VFP中,常见的程序基本控制结构有:1、顺序结构:顺序结构是最基本、最普通的结构形式。运行时,也是按照命令书写时的先后次序来执行,在程序执行的过程中不改变命令执行次序的一种结构。2、分支结构:编写顺序结构程序虽然简单,但在实际应用中,经常需要对事物做出一定的判断,并依据判断的结果采取不同的处理行为。例如:求圆的面积,对半径要做处判断,是否大于0,如果是才能参加运算,否则不能运算,输出参数错误信息。分支结构有三种基本格式:单分支选择、二分支选择(选择函数)和多分支选择。3、循环结构:重复循环操作,特别是若根据条件来决定是否重复执行某段程序,那么顺序结构和分支结构显然是无能为力。Vfp提供的循环结构程序设计就可以解决这一问题。事实上70%以上的实际问题的处理过程都需要使用循环结构。循环结构是当条件满足时,反复执行循环体内的命令系列,一直到条件为假时,才退出循环,执行循环体外的系列命令。4、过程结构:在程序的许多位置反复执行某些程序段,且常将这些程序段和嵌入它的程序分开,形成独立的程序序列,待使用时再调入程序中,以实现不同位置上的重复操作。1.输入语句输入语句提供了在程序运行的过程中暂停程序的执行,等待用户从键盘上输入数据,当用户以回车键结束输入时,系统将表达式的值存入指定的内存变量,程序继续运行。输入语句有非格式化输入命令和格式化输入命令两种。(1)非格式化输入命令非格式化输入命令共有三条:Input、Accept和Wait。Input[提示信息]To〈内存变量〉Accept[提示信息]To〈内存变量〉Wait[提示信息]To〈内存变量11.3顺序结构语句参数说明:◆Input命令能接受除备注型、通用型以外的数据类型,但数据为字符型、日期型或逻辑型时应使用相应的定界符。◆Accept命令只接受字符型数据。输入字符串时,不需要用定界符。◆Wait[提示信息][To〈内存变量〉]命令只接受单个字符。如果执行不带任何参数的Wait命令会弹出“按任意键继续……”的提示。例:在学生档案表中,按姓名直接定位查询学生记录。Use学生档案表Accept”请输入查询学生的姓名:”ToA1LocateFor姓名=A1Display例:在学生档案表中,按年龄顺序定位查询学生记录。Use学生档案表Input“请输入查询学生的年龄:”ToA2LocateFor年龄=A2DisplayContinueDisplay(2)屏幕格式输入语句在指定行、列的位置,从键盘上为变量赋值。这个变量可以是内存变量,也可以是字段变量。如果是内存变量,必须事先定义好。如果是字段变量,必须事先打开相应的数据表。@行,列[Say表达式]Get变量参数说明:◆[Say表达式]:是作为被编辑的变量前面出现的提示,一般都是用字符串表示。◆Get变量:变量可以是内存变量,也可以是字段变量。如果是内存变量必须在使用前先定义。如果是字段变量,则要先打开相应的数据表。数据类型可以是数值型、字符型、日期型、逻辑型或备注型。◆@……Get变量命令,必须用Read语句来激活才能完成对数据的编辑。多个@……Get命令,可以用一个READ语句来激活。例:用屏幕格式输入语句输入数值,计算公式C=2A+3B的值。A=0B=0@10,20Say“请输入数值:”GetA@11,20Say“请输入数值:”GetBRead?”C=2A+2B=”+Str(2*A+2*B)例:请编辑一个程序,能根据学号和课程名称来修改成绩。CLEARXh=Space(7)Kcdm=Space(3)Use学生成绩表Excl@10,20Say‘请输入要修改成绩的学号’Getxh@12,20Say‘请输入要修改成绩的课程代码’GetkcdmReadLocateFor学号=Xh.And.课程代码=Kcdm@12,20Say'请输入修改成绩'Get成绩Read2.输出语句(1)非格式化输出命令格式1:?〈表达式表〉格式2:??〈表达式表〉格式3:???〈表达式表〉计算表达式的值并输出。参数说明:◆“?”表示在当前行的下一行的首位输出,”??”表示在当前行光标处输出,”???”表示向打印机输出。◆表达式表如果是字符、日期、逻辑常量应使用定界符。如果是一个表达式,则各部分的数据类型必须一致。如果是表达式表列表,各表达式之间用逗号“,”分隔。例:显示当前的日期和时间与表达式的值。?今天的日期是:,DATE(),时间是:,TIME()&&如果用“+”连接该如何表达A=10B=20?A*10-B=,Str(A*10-B),Space(2)??“A*20-B=”+Str(A*20-B,4)例:显示字符型表达式的值。?祝贺+北京申奥+[成功]&&字符串的连接(2)屏幕格式输出命令@行,列SAY表达式[Picture格式描述符]P223在指定行、列位置上输出表达式的值。参数说明:◆Say表达式:表达式可以是常量(字符、日期、逻辑常量需要使用相应的定界符)、内存变量、字段变量以及由它们组成的表达式。表达式只能是一个,而且,表达式的各部分的数据类型必须一致。例:显示字符串常数。@3,5Say这是一个显示字符串常数的例子“例:显示学生档案表的第四条记录的字段内容。Use学生档案表Goto4@6,6Say学号::+学号@7,6Say姓名::+姓名@9,6Say年龄:+Str(年龄,2)&&数据类型必须一致@10,6Say出生日期:+Dtoc(出生日期)二、清屏与注释语句1.清屏语句Clear清除屏幕上所有显示的内容。2.注释语句Note注释内容*注释内容&&注释内容Note和“*”注释语句在程序中单独作为一行,作为程序的注释。&&注释语句一般写在命令的后面,作为该命令的注释。三、终止程序执行语句1.Return或Cancel终止程序的执行,关闭打开的命令文件,返回到Foxpro系统的命令窗口。2.Quit终止程序的执行,关闭打开的命令文件,返回到windows操作系统状态。3.Retry终止程序的执行,返回到调用行本身,可以实现程序的重复调用。4.文本输出命令TEXT格式:TEXT“提示信息”ENDTEXT例:编写一个求梯形面积的程序。Input请输入梯形的上底:ToMInput请输入梯形的下底:ToNInput请输入梯形的高:ToH?梯形面积=,Str((M+N)*H/2,10,2)Return例:编写一个在“学生档案表”中查询年龄大于18岁的98级浙江籍的学生记录的程序(注意:假设数据表字段中只有出生日期而无年龄字段、学号前二位为年级)。ClearUse学生档案表ListForYear(Date())-Year(出生日期)23.And.Subs(学号,1,2)='98'.And.籍贯='浙江'UseReturn编写顺序结构程序虽然简单,但在实际应用中,经常需要对事物做出一定的判断,并依据判断的结果采取不同的处理行为。例如:求三角形的面积,对三条边要做处判断,是否构成三角形,如果是才能参加运算,否则不能运算,输出参数错误信息。分支结构有三种基本格式:单分支选择、二分支选择(选择函数)和多分支选择。11.4分支结构语句1.单分支选择If条件表达式语句序列1Endif语句序列2Return参数说明:◆单分支选择结构是当条件表达式为真时,执行语句序列1,然后,再执行EndIf后面的语句序列2。如果条件表达式为假,则直接执行EndIf后面的语句序列2。◆IF和EndIf必须成对出现,缺一不可。◆条件表达式可以是表达式或表达式的逻辑组合,表达式的值必须是逻辑值。例:从键盘上输入一个数,若是偶数,则输出。Input“请输入数据:”ToXIfInt(X/2)=X/2?X,”为偶数”EndifReturn例:在学生档案表中,查询王启明的籍贯是否为“江西”。如果是,则输出本记录的姓名、学号、班级和年龄。ClearUse专业特长LocateFor编号=“GZ05002If职称=“教授replalce职称with“副教授”Endifbrowselast在上程序并不完善,即当条件不满足时,程序中不能做出进一步的处理。这就说明单分支的功能是有限的,不能完善地解决分支处理问题。而二分支选择结构就可以处理好这个问题。2.双向分支选择结构If〈条件表达式〉〈A系列命令〉Else〈B系列命令〉Endif〈D系列命令〉Return二分支选择结构,首先判断〈条件表达式〉的逻辑值,若条件为“真”时,执行〈A系列命令〉。然后,再执行ENDIF后面的〈D系列命令〉。若条件为“假”时,执行Else后面的〈B系列命令〉。然后,再执行ENDIF后面的〈D系列命令〉。例:当行李重量W=20Kg时,每公斤按0.15元计算,当重量20KG时,其超过部分则加倍计算收费。Input“请输入行李重量:”ToWIfW=20Y=W*0.15ElseY=W*0.15+(W-20)*0.3Endif?“运费y=”,YReturn例:用二分支选择结构完善例5-19程序。Input输入三角形的a边:ToAInput输入三角形的b边:ToBInput输入三角形的c边:ToCIfA+BC.And.B+CA.And.C+ABP=(A+B+C)/2S=Sqrt(P*(P-A)*(P-B)*(P-C))?三角形的面积为:,SElse?输入的边长有错,无法构成三角形!EndifReturn补充:3.IIF()选择函数IIF()函数是双分支选择语句If—Else—Endif的简单形式。在某些情况下,可以用IIF()函数代替If-Else—Endif语句,从而简化条件描述,提高程序的执行速度。IIF(条件表达式,表达式1,表达式2)参数说明:◆若条件表达式的值为真,则函数返回表达式1的值。否则,返回表达式2的值。返回值的类型可以是字符型、日期型、数值型和逻辑型。◆表达式1与表达式2的数据类型必须是一致。例:在工资管理数据表中,如果基本工资小于700时,将基本工资加150。否则,加120。Use工资管理数据表ReplAll基本工资With基本工资+Iif(基本工资700,150,120)4.多向分支选择结构虽然可用IF语句嵌套的方式解决多分支选择问题。但是,如果选择的分支很多,则编写的程序可读性差且易出错。这时,一般使用DOCASE-ENDCASE多重分支选择结构来解决。参数说明:◆执行多重分支选择结构时,会依次判断条件表达式1至条件表达式N的逻辑值,只要一遇到条件表达式为真时,就执行该条件表达式下面的
本文标题:VF数据库第11章 程序设计基础
链接地址:https://www.777doc.com/doc-4434911 .html