数据库及其应用课件第6章.ppt

上传人:小飞机 文档编号:6578467 上传时间:2023-11-14 格式:PPT 页数:80 大小:331KB
返回 下载 相关 举报
数据库及其应用课件第6章.ppt_第1页
第1页 / 共80页
数据库及其应用课件第6章.ppt_第2页
第2页 / 共80页
数据库及其应用课件第6章.ppt_第3页
第3页 / 共80页
数据库及其应用课件第6章.ppt_第4页
第4页 / 共80页
数据库及其应用课件第6章.ppt_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《数据库及其应用课件第6章.ppt》由会员分享,可在线阅读,更多相关《数据库及其应用课件第6章.ppt(80页珍藏版)》请在三一办公上搜索。

1、1,第6章FoxPro 程序设计,2,程序文件的建立与编辑,程序文件的建立命令方式:格式:MODIFY COMMAND 功能:建立、编辑以为名的程序文件。,3,程序文件的建立与编辑,程序文件的建立菜单方式:文件新建程序新建文件 输入程序关闭文件打开选择程序文件确定,4,使用MODIFY COMMAND命令时注意:(1)键入该命令后,系统首先在指定的目录中查找该文件,如果文件不存在,就建立之,否则对已经存在的文件进行编辑。(2)输入一行命令结束后,按回车键。,5,使用MODIFY COMMAND命令时注意:(3)一条命令可以占一行,也可以分为多行,但除最后一行按回车键外,每行结尾处要有分号;,表

2、明下行继续。(4)输入完程序后,按Ctrl+W或Ctrl+End存盘退出,或单击“关闭”按钮退出。若按Ctrl+Q或ESC则不存盘,输入的程序作废。,6,程序文件的修改,程序文件的增删或修改,仍然可以使用MODIFY COMMAND命令来完成。计算机收到此命令后,系统首先在指定的目录中查找该文件,如果文件存在,就为此文件建立一个备份文件,然后将此文件调入内存,在屏幕上显示出来,供用户修改。修改时,可使用剪贴板命令Ctrl+X、Ctrl+C、Ctrl+V。修改完后按Ctrl+W或Ctrl+End存盘,按Ctrl+Q不存盘,系统回到命令状态。,7,程序文件的运行,命令方式:格式:DO 功能:执行指

3、定的程序文件。说明:文件名不带扩展名,系统默认为PRG。菜单方式:程序运行,8,程序的基本结构,1.顺序结构顺序结构是把命令(语句)按一定的顺序,一个命令一个命令的排列下去,执行时按先后顺序,一条一条的依次执行,顺序结构是程序设计中最基本的、最常用的结构。,9,程序的基本结构,2.分支结构分支结构程序是根据给定条件的不同逻辑条件,转向执行不同的程序方向,这些不同的转向就构成了分支结构。,10,程序的基本结构,3.循环结构顺序、分支结构在程序执行时,每个语句只执行一次。循环结构则能够使某些语句程序段重复执行若干次。,11,程序的基本结构,4.过程结构程序设计时,常常有些运算或处理程序是相同的,只

4、是每次以不同的参数参与程序的执行。在一程序中如果重复写入相同的程序段,将是一种时间和空间上的浪费。同样,对于常见问题的实用程序,也不应由每个使用者自己来设计。将上述重复出现的程序段独立出来,需要时直接调用它,这种程序称为过程,将调用过程的程序称为主程序。,12,顺序结构程序设计,顺序结构是把命令(语句)按一定的顺序,一个命令一个命令的排列下去,执行时按先后顺序,一条一条的依次执行,顺序结构是程序设计中最基本的、最常用的结构。,13,顺序结构程序设计,注释语句格式1:NOTE 格式2:*只能放在一行的开始.,14,顺序结构程序设计,注释语句格式3:&可以放在一行的任意位置。,15,顺序结构程序设

5、计,状态设置命令1.SET TALK ON/OFF会话状态开关,ON开 OFF关,16,顺序结构程序设计,状态设置命令2.CLEAR清屏幕,17,键盘输入语句,1.INPUT命令 格式:INPUT TO 功能:执行此语句时,暂停程序的运行,等待用户从键盘输入一个表达式,并把表达式的值存入内存变量中。说明:命令中的可以是一个用于文字说明的字符型内存变量或字符串,若为字符串时,必须用定界符括起来。如果使用该选项,则原样显示提示信息,如缺省,就没有提示。,18,键盘输入语句,1.INPUT命令 说明:输入的表达式值的类型决定了内存变量的类型。表达式可以是数值型、字符型、逻辑型、日期型表达式。输入数据

6、时要用特定的符号以区分数据的类型。字符串用双引号、单引号、或方括号括起来;日期型数据需用花括号 括起来或使用CTOD()函数;逻辑型数据需用园点括起来。,19,键盘输入语句,2.ACCEPT命令 格式:ACCEPT TO 功能:执行此语句时,暂停程序的运行,等待用户从键盘输入一串字符并赋给内存变量。,20,键盘输入语句,2.ACCEPT命令说明:ACCEPT只接受字符串数据,且输入的字符串不需要加任何定界符(如单引号、双引号、方括号)而自动作为字符串常量,字符串长度最长254个字符。含义同上。用户输入时,也可以用回车键作为输入的字符,则此时内存变量中的值为空串。,21,键盘输入语句,3.程序暂

7、停语句 WAIT 格式:WAIT TO WINDOW NOWAIT TIMEOUT 功能:暂停程序的执行,等待用户从键盘按下任一键后再继续执行。,22,键盘输入语句,3.程序暂停语句 WAIT说明:命令中的可以是一个用于文字说明的字符型内存变量或字符串,若为字符串时,必须用定界符括起来。如果使用该选项,则原样显示提示信息,如缺省,系统自动显示“Press any key to continue”。,23,键盘输入语句,3.程序暂停语句 WAIT说明:如选TO,则按下的一键做为一个字符送内存变量。当按下的是回车键或非打印字符时,内存变量的内容是一个空字符。如缺省,通常只是用于暂停程序的执行,以便

8、查看程序运行的情况。,24,3.程序暂停语句 WAITWINDOW:在执行时,FoxPro在主窗口的左上角开辟一个提示信息窗口,并把提示信息的内容在此窗口显示出来,这样不会破坏原来的屏幕。,键盘输入语句,25,3.程序暂停语句 WAITNOWAIT:必须与WINDOW可选项连用才有效。NOWAIT表示在执行WAIT时不暂停程序的执行,仅在FoxPro主窗口的左上角提示信息窗口中把显示提示信息。TIMEOUT:用来限定WAIT命令暂停程序执行的时间。,键盘输入语句,26,分支结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特点是:根据所给定的条件为真(即条件成立)与否,而决定执行

9、某一分支的相应操作,并且任何情况下“必择其一”。,分支结构程序设计,27,条件选择语句1.单条件选择语句IF格式为:IF条件 ELSE ENDIF,分支结构程序设计,28,条件选择语句 说明:(1)如果条件为真(.T.),就执行语句序列1。如果条件为假(.F.),若有ELSE子句,则程序会执行ELSE部分的语句序列2;若无ELSE子句,则程序会直接转到ENDIF之后的语句继续执行。,分支结构程序设计,29,条件选择语句 说明:(2)语句序列1和语句序列2中还可以包含IF语句,称为IF语句的嵌套。要注意,每次嵌套中的IF语句必须与ENDIF成对出现。,分支结构程序设计,30,如果在IF语句的语句

10、序列1或语句序列2中又包含一个IF语句,则称为IF语句的嵌套。,IF语句的嵌套,分支结构程序设计,31,INPUT 输入第一个数:TO X INPUT 输入第二个数:TO Y IF XY?Y,X ELSE?X,Y ENDIF,例:从键盘上输入两个数,然后按从小到大的顺序输出。,32,例如:使用IF ENDIF 语句计算Y的值,X由键盘输入 X X=10,33,INPUT“X=?”TO XIF X0 Y=XELSE IF X10 Y=2*X-1 ELSE Y=3*X+1 ENDIFENDIF?”Y=“,Y,34,多分支条件选择语句DO CASE 多分支选择结构的特点是:从多个分支中,选择第一个条

11、件为真的路线作为执行的路线。,分支结构程序设计,35,DO CASE语句的语法格式为:DO CASE CASE条件1 语句序列1 CASE条件2 语句序列2.OTHERWISE 其他语句序列 ENDCASE,36,说明:(1)在执行DO CASE语句时,依次判断各是否满足。若的值为真(.T.),就执行相应的,直到遇到下一个CASE、OTHERWISE或ENDCASE。,37,说明:(2)相应的执行后不再判断其他,直接转向ENDCASE后面的语句。因此,在一个DO CASE结构中,最多只能执行一个CASE子句。,38,说明:(3)如果没有一个条件为真,就执行OTHERWISE后面的,直到ENDC

12、ASE。如果没有OTHERWISE,则不作任何操作就转向ENDCASE后面的语句。,39,例如:INPUT X=?TO XDO CASECASE X10?OK1CASE X20?OK2 OTHERWISE?OK3 ENDCASE,运行时输入:23输出结果为:OK1运行时输入:25输出结果为:OK2运行时输入:5输出结果为:OK3,40,在Visual FoxPro中,提供了三种循环语句:DO WHILE.ENDDO(当型循环)FOR.ENDFOR(步长型循环)SCAN.ENDSCAN(表扫描型循环)。无论何种类型的循环结构,其特点都是:循环体执行与否及其执行次数多少都必须视其循环类型与条件而定

13、,且必须确保循环体的重复执行能在适当的时候得以终止(即非死循环)。,循环结构程序设计,41,当型循环语句DO WHILE,如果需要在某一条件满足时反复执行某一操作,可以使用当型循环(DO WHILE)结构。当型循环的语法格式为:DO WHILE条件 EXIT LOOP ENDDO,42,说明:(1)如果的值为.T.,则执行DO WHILE和ENDDO之间的循环体;如果的值为.F.,则结束循环,转去执行ENDDO之后的命令。每执行一遍循环体,程序自动返回到DO WHILE语句,判断一次条件。(2)EXIT是无条件结束循环命令。(3)LOOP是无条件循环命令。,当型循环语句DO WHILE,43,

14、当型循环结构的特点是:当所给定循环条件为真时,就反复执行其循环体;当该条件为假时,终止执行其循环体,执行其后继命令。循环体执行次数最少可为零。,当型循环语句DO WHILE,44,程序设计中常用的三种循环结构:DO WHILE.T.绝对循环形式,一般使用EXIT结束循环DO WHILE.NOT.EOF()访问数据库记录的循环形式 循环体内一定要有SKIPDO WHILE N=100 循环次数固定(已知)的循环形式,当型循环语句DO WHILE,45,SET TALK OFF STORE 0 TO S STORE 1 TO N DO WHILE N=100 S=S+N N=N+1 ENDDO?”

15、S=“,S SET TALK ON,例1:编程计算S=1+2+3+100,46,S=0 FOR X=2 TO 10 STEP 2 P=1 FOR I=1 TO X P=P*I ENDFOR?X,!=,P S=S+P ENDFOR?S=,S,例:求2!+4!+6!+10!,S=0X=2DO WHILE X=10 P=1 I=1 DO WHILE I=X P=P*I I=I+1 ENDDO?X,!=,P S=S+P X=X+2ENDDO?S=,S,47,USE XS CLEAR DO WHILE.T.ACCEPT 请输入查询的姓名:TO XM1 LOCATE FOR XM=XM1 IF EOF()

16、WAIT 查无此人!按任意键继续 ELSE DISPLAY ENDIF,例2:对XS.DBF表文件,按给出的姓名,查询人员的情况。,48,WAIT 继续查询吗?(Y/N)TO YN IF UPPER(YN)Y EXIT ENDIF ENDDO USE,例2 对XS.DBF表文件,按给出的姓名,查询人员的情况。,49,SET TALK OFFUSE XSSTORE 0 TO X1,X2,X3DO WHILE.NOT.EOF()DO CASE CASE SJK=90 X3=X3+1,例3:统计表文件CJ.DBF中,数据库成绩在60以下、60-89、90以上的各有多少人。,50,ENDCASE SK

17、IP ENDDO USE?“60分以下的有+STR(X1,3)+人?“60-89之间的有+STR(X2,3)+人?“90分以上的有+STR(X3,3)+人SET TALK ON,例3:统计表文件CJ.DBF中,数据库成绩在60以下、60-89、90以上的各有多少人。,51,步长型循环语句FOR,步长型循环可以根据给定的次数重复执行循环体。其语法结构为:FOR=TO STEP LOOP EXIT ENDFOR|NEXT,52,说明:(1)EXIT跳出FOR.ENDFOR循环。(2)LOOP将控制直接转回到FOR子句。(3)在使用循环嵌套时要注意:内外循环的循环变量不能同名,并且内外循环不能交叉。

18、,步长型循环语句FOR,53,开始时首先把、和读入,然后的值与比较,如果的值在与范围内,则执行FOR与ENDFOR之间的命令,然后按增加或减小,重新比较,直到的值不在与范围内,结束循环,转去执行ENDFOR后面的第一条命令。,步长型循环语句的执行过程,54,S=0 P=1 FOR X=1 TO 100 P=P*X S=S+P ENDFOR?S=,S,例:求1!+2!+3!+10!,S=0STORE 0 TO X,PDO WHILE X100P=P*XS=S+PX=X+1ENDDO?”S=“,S,55,1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8

19、 4*3=12 4*4=16 9*1=9 9*2=18 9*3=27 9*9=81 程序如下:,例:在屏幕上显示如下的九九乘法表,56,CLEAR FOR I=1 TO 9 FOR J=1 TO I P=I*J?STR(I,1)+“*+STR(J,1)+=+STR(P,2)+ENDFOR?ENDFOR,例:在屏幕上显示如下的九九乘法表,57,SCANENDSCAN语句,格式:SCAN FOR LOOP EXIT ENDSCAN功能:在当前数据库中对指定范围内且满足条件的记录执行语句序列中的语句。,58,SCANENDSCAN语句,说明:只有处在内的记录才被扫描,省略为ALL。选FOR,则扫描范

20、围内所有满足条件的记录。选LOOP时不执行其后至ENDSCAN的语句序列而返回判别条件;选EXIT时跳出循环。,59,USE CJSCAN FOR ZF240 DISPLAY XH,XMENDSCANUSE,例:用SCAN.ENDSCAN语句编写程序用于输出CJ.DBF文件中总分大于240分的学号和姓名。,USE CJDO WHILE ZF240 DISPLAY XH,XM SKIPENDDOUSE,60,过程是一段程序,由一个或多个语句构成,最后以RETURN结束。过程是过程文件的一部分,可以把多个过程组合成为一个过程文件。过程文件即把多个过程组织在一个文件中,每个过程指定一个过程名,使用过

21、程文件可减少打开文件的个数,同时也节省了磁盘空间。,过程与过程文件,61,1.过程的结构过程均以PROCEDURE开始,以RETURN结束。其格式为:PROCEDURE ENDPROC说明:是一个命令序列,是完成某个功能的程序段。,过程与过程文件,62,2.过程调用语句格式:DO 功能:执行指定的过程。3.返回语句 格式:RETURN TO MASTER功能:返回到调用程序中调用语句的下一个语句。TO MASTER 直接返回到主程序。,过程与过程文件,63,过程文件的结构,MODI COMM PROCEDURE RETURNENDPROC PROCEDURE RETURN ENDPROC PR

22、OCEDURE RETURN ENDPROC,64,说明:建立和编辑一个过程文件与编制其它程序文件一样,使用MODIFY COMMAND命令。过程文件名和过程名是两个不同的概念,它们的关系是整体与局部的关系。它们的命名与文件的命名方法相同,只是过程文件名有扩展名.PRG,而过程名是不带扩展名的。,过程文件的结构,65,过程文件的使用,使用一个过程文件时,必须要打开它,否则无法调用其中的过程。打开过程文件的命令格式是:SET PROCEDURE TO 过程文件打开后,若要调用其中的某一个过程时,可以用调用命令:DO 使用完过程文件后,需及时地关闭,其命令格式是:CLOSE PROCEDURE 或

23、 SET PROCEDURE TO,66,数组 在FoxPro中,把名字相同、用下标区分的内存变量称为数组。在一个数组中可以存放多个数据,这些数据可以是数值型、字符型、日期型或逻辑型,这些数据可以单独存取,也可以集体存取。在FoxPro系统中可以使用一维数组和二维数组。,67,数组 数组必须使用DECLARE或DEMENSION或PUBLIC或LOCAL声明,例如:DECLARE a(3)或DEMENSION b(5,6)系统自动将数组初始化为逻辑型。,68,例如:编程实现一组数从大到小排序cleardime x(8)for i=1 to 8 input 输入第+STR(I,1)+个数 TO

24、x(i)endfor,69,for i=1 TO 7 k=i for j=i+1 TO 8 if x(j)x(k)k=j endif endfor,if k!=i t=x(i)x(i)=x(k)x(k)=tendifendfor for i=1 TO 8?x(i)endfor,70,变量声明 单个变量只要直接赋值,就会在赋值的同时由系统自动声明,并自动确定类型。变量声明时可以没有类型,但在任一时刻进行运算时必须有确定而且合适的类型。,71,变量的作用域 变量的作用域包括定义它的过程以及该过程所调用的子过程范围。在Visual FoxPro中,还可以使用LOCAL、PRIVATE和PUBLIC命

25、令强制规定变量的作用范围。,72,变量种类 全局变量:在Foxpro的运行期间都存在,对任何程序都可见,都可以使用。用PUBLIC命令进行声明。,73,变量种类 私有变量:在程序及其子程序中可见,在上级程序中不可见,用PRIVATE命令进行声明。,74,变量种类 局部变量:仅在声明的程序中可见,在上级程序和下级程序中都不可见,用LOCAL命令进行声明。,75,在过程调用中要定义好内存变量的属性,搞清主程序与过程中各变量的关系,以便准确地传递各参数值。1.过程中出现的内存变量若未经定义,则有两种可能:主程序中没有同名变量,那么返回主程序时,该变量被释放。主程序中有同名变量,那么这两个同名变量实质

26、上是一个变量,返回主程序时,其值被带回主程序。,76,在过程调用中要定义好内存变量的属性,搞清主程序与过程中各变量的关系,以便准确地传递各参数值。2.若在过程中出现的内存变量被定义为全局变量,则该变量在程序执行期间和执行终止后始终有效。,77,在过程调用中要定义好内存变量的属性,搞清主程序与过程中各变量的关系,以便准确地传递各参数值。3.若在过程中出现的内存变量被定义为局部变量,那么它与主程序中的同名变量毫无关系。过程执行期间主程序中的同名变量被隐蔽起来,以便不受影响。返回程序时,过程中的变量被释放,而主程序中的同名变量保持调用过程以前的值不变。,78,CLEARINPUT 输入数据的个数:T

27、O NDIMENSION X(N)FOR I=1 TO N INPUT 输入第+STR(I,2)+个数:TO X(I)ENDFOR,例:从键盘上输入N个数,找出其中最大的数,79,MAX=X(1)FOR I=2 TO N IF X(I)MAX MAX=X(I)ENDIFENDFOR?“这”+STR(N,2)+“个数中最大的数是:”,MAX,例:从键盘上输入N个数,找出其中最大的数,80,MAIN.PRGPUBLIC X1,X2LOCAL X3X1=3X2=10STORE F TO X3DO SUB?X1=,X1?X2=,X2?X3=,X3,SUB.PRGPRIV X1X1=100X1=X1+1X2=X2+1?”X1=“,X1?”X2=“,X2RETURN,执行命令:DO MAIN运行结果:X1=101 X2=11 X1=3 X2=11 X3=F,例:写出下列程序的运行结果,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号