数据库及其应用课件第6章.ppt_第1页
数据库及其应用课件第6章.ppt_第2页
数据库及其应用课件第6章.ppt_第3页
数据库及其应用课件第6章.ppt_第4页
数据库及其应用课件第6章.ppt_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第6章 FoxPro 程序设计,2,程序文件的建立与编辑,程序文件的建立 命令方式: 格式:MODIFY COMMAND 功能:建立、编辑以为名的程序文件。,3,程序文件的建立与编辑,程序文件的建立 菜单方式: 文件新建程序新建文件 输入程序关闭 文件打开选择程序文件确定,4,使用MODIFY COMMAND命令时注意: (1)键入该命令后,系统首先在指定的目录中查找该文件,如果文件不存在,就建立之,否则对已经存在的文件进行编辑。 (2)输入一行命令结束后,按回车键。,5,使用MODIFY COMMAND命令时注意: (3) 一条命令可以占一行,也可以分为多行,但除最后一行按回车键外,每行结尾处要有分号;,表明下行继续。 (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 功能:执行指定的程序文件。 说明: 文件名不带扩展名,系统默认为PRG。 菜单方式:程序运行,8,程序的基本结构,1.顺序结构 顺序结构是把命令(语句)按一定的顺序,一个命令一个命令的排列下去,执行时按先后顺序,一条一条的依次执行,顺序结构是程序设计中最基本的、最常用的结构。,9,程序的基本结构,2.分支结构 分支结构程序是根据给定条件的不同逻辑条件,转向执行不同的程序方向,这些不同的转向就构成了分支结构。,10,程序的基本结构,3.循环结构 顺序、分支结构在程序执行时,每个语句只执行一次。循环结构则能够使某些语句程序段重复执行若干次。,11,程序的基本结构,4.过程结构 程序设计时,常常有些运算或处理程序是相同的,只是每次以不同的参数参与程序的执行。在一程序中如果重复写入相同的程序段,将是一种时间和空间上的浪费。同样,对于常见问题的实用程序,也不应由每个使用者自己来设计。将上述重复出现的程序段独立出来,需要时直接调用它,这种程序称为过程,将调用过程的程序称为主程序。,12,顺序结构程序设计,顺序结构是把命令(语句)按一定的顺序,一个命令一个命令的排列下去,执行时按先后顺序,一条一条的依次执行,顺序结构是程序设计中最基本的、最常用的结构。,13,顺序结构程序设计,注释语句 格式1:NOTE 格式2:* 只能放在一行的开始.,14,顺序结构程序设计,注释语句 格式3:& 可以放在一行的任意位置。,15,顺序结构程序设计,状态设置命令 1.SET TALK ON/OFF 会话状态开关,ON开 OFF关,16,顺序结构程序设计,状态设置命令 2.CLEAR 清屏幕,17,键盘输入语句,1.INPUT命令 格式:INPUT TO 功能:执行此语句时,暂停程序的运行,等待用户从键盘输入一个表达式,并把表达式的值存入内存变量中。 说明: 命令中的可以是一个用于文字说明的字符型内存变量或字符串,若为字符串时,必须用定界符括起来。如果使用该选项,则原样显示提示信息,如缺省,就没有提示。,18,键盘输入语句,1.INPUT命令 说明: 输入的表达式值的类型决定了内存变量的类型。表达式可以是数值型、字符型、逻辑型、日期型表达式。 输入数据时要用特定的符号以区分数据的类型。字符串用双引号、单引号、或方括号括起来;日期型数据需用花括号 括起来或使用CTOD()函数;逻辑型数据需用园点括起来。,19,键盘输入语句,2.ACCEPT命令 格式:ACCEPT TO 功能:执行此语句时,暂停程序的运行,等待用户从键盘输入一串字符并赋给内存变量。,20,键盘输入语句,2.ACCEPT命令 说明: ACCEPT只接受字符串数据,且输入的字符串不需要加任何定界符(如单引号、双引号、方括号)而自动作为字符串常量,字符串长度最长254个字符。 含义同上。 用户输入时,也可以用回车键作为输入的字符,则此时内存变量中的值为空串。,21,键盘输入语句,3.程序暂停语句 WAIT 格式:WAIT TO WINDOW NOWAIT TIMEOUT 功能:暂停程序的执行,等待用户从键盘按下任一键后再继续执行。,22,键盘输入语句,3.程序暂停语句 WAIT 说明: 命令中的可以是一个用于文字说明的字符型内存变量或字符串,若为字符串时,必须用定界符括起来。如果使用该选项,则原样显示提示信息,如缺省,系统自动显示“Press any key to continue”。,23,键盘输入语句,3.程序暂停语句 WAIT 说明: 如选TO ,则按下的一键做为一个字符送内存变量。当按下的是回车键或非打印字符时,内存变量的内容是一个空字符。如缺省,通常只是用于暂停程序的执行,以便查看程序运行的情况。,24,3.程序暂停语句 WAIT WINDOW:在执行时,FoxPro在主窗口的左上角开辟一个提示信息窗口,并把提示信息的内容在此窗口显示出来,这样不会破坏原来的屏幕。,键盘输入语句,25,3.程序暂停语句 WAIT NOWAIT:必须与WINDOW可选项连用才有效。NOWAIT表示在执行WAIT时不暂停程序的执行,仅在FoxPro主窗口的左上角提示信息窗口中把显示提示信息。 TIMEOUT :用来限定WAIT命令暂停程序执行的时间。,键盘输入语句,26,分支结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特点是:根据所给定的条件为真(即条件成立)与否,而决定执行某一分支的相应操作,并且任何情况下“必择其一”。,分支结构程序设计,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语句的语句序列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 X IF X0 Y=X ELSE IF X10 Y=2*X-1 ELSE Y=3*X+1 ENDIF ENDIF ?”Y=“,Y,34,多分支条件选择语句DO CASE 多分支选择结构的特点是:从多个分支中,选择第一个条件为真的路线作为执行的路线。,分支结构程序设计,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后面的,直到ENDCASE。如果没有OTHERWISE,则不作任何操作就转向ENDCASE后面的语句。,39,例如: INPUT “X=?“ TO X DO CASE CASE X10 ?“OK1“ CASE X20 ?“OK2 “ OTHERWISE ?“OK3 “ ENDCASE,运行时输入:23 输出结果为:OK1 运行时输入:25 输出结果为:OK2 运行时输入:5 输出结果为:OK3,40,在Visual FoxPro中,提供了三种循环语句: DO WHILE . ENDDO(当型循环) FOR . ENDFOR(步长型循环) SCAN . ENDSCAN(表扫描型循环)。 无论何种类型的循环结构,其特点都是:循环体执行与否及其执行次数多少都必须视其循环类型与条件而定,且必须确保循环体的重复执行能在适当的时候得以终止(即非死循环)。,循环结构程序设计,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,当型循环结构的特点是:当所给定循环条件为真时,就反复执行其循环体;当该条件为假时,终止执行其循环体,执行其后继命令。循环体执行次数最少可为零。,当型循环语句DO WHILE,44,程序设计中常用的三种循环结构: DO WHILE .T. 绝对循环形式, 一般使用EXIT结束循环 DO WHILE .NOT. EOF() 访问数据库记录的循环形式 循环体内一定要有SKIP DO 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 ?”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=0 X=2 DO 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+2 ENDDO ?“S=“,S,47,USE XS CLEAR DO WHILE .T. ACCEPT “请输入查询的姓名:“ TO XM1 LOCATE FOR XM=XM1 IF EOF() 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 OFF USE XS STORE 0 TO X1,X2,X3 DO WHILE .NOT.EOF() DO CASE CASE SJK=90 X3=X3+1,例3:统计表文件CJ.DBF中,数据库成绩在60以下、60-89、90以上的各有多少人。,50,ENDCASE SKIP 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) 在使用循环嵌套时要注意:内外循环的循环变量不能同名,并且内外循环不能交叉。,步长型循环语句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=0 STORE 0 TO X,P DO WHILE X100 P=P*X S=S+P X=X+1 ENDDO ?”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 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,则扫描范围内所有满足条件的记录。 选LOOP时不执行其后至ENDSCAN的语句序列而返回判别条件;选EXIT时跳出循环。,59,USE CJ SCAN FOR ZF240 DISPLAY XH,XM ENDSCAN USE,例:用SCANENDSCAN语句编写程序用于输出CJ.DBF文件中总分大于240分的学号和姓名。,USE CJ DO WHILE ZF240 DISPLAY XH,XM SKIP ENDDO USE,60,过程是一段程序,由一个或多个语句构成, 最后以RETURN结束。过程是过程文件的一部分, 可以把多个过程组合成为一个过程文件。 过程文件即把多个过程组织在一个文件中,每个过程指定一个过程名,使用过程文件可减少打开文件的个数,同时也节省了磁盘空间。,过程与过程文件,61,1.过程的结构 过程均以PROCEDURE开始,以RETURN结束。其格式为: PROCEDURE ENDPROC 说明:是一个命令序列,是完成某个功能的程序段。,过程与过程文件,62,2.过程调用语句 格式: DO 功能:执行指定的过程。 3.返回语句 格式:RETURN TO MASTER 功能:返回到调用程序中调用语句的下一个语句。TO MASTER 直接返回到主程序。,过程与过程文件,63,过程文件的结构,MODI COMM PROCEDURE RETURN ENDPROC PROCEDURE RETURN ENDPROC PROCEDURE RETURN ENDPROC,64,说明: 建立和编辑一个过程文件与编制其它程序文件一样,使用MODIFY COMMAND命令。 过程文件名和过程名是两个不同的概念,它们的关系是整体与局部的关系。它们的命名与文件的命名方法相同,只是过程文件名有扩展名.PRG,而过程名是不带扩展名的。,过程文件的结构,65,过程文件的使用, 使用一个过程文件时,必须要打开它,否则无法调用其中的过程。打开过程文件的命令格式是: SET PROCEDURE TO 过程文件打开后,若要调用其中的某一个过程时,可以用调用命令:DO 使用完过程文件后,需及时地关闭, 其命令格式是: CLOSE PROCEDURE 或 SET PROCEDURE TO,66,数组 在FoxPro中,把名字相同、用下标区分的内存变量称为数组。在一个数组中可以存放多个数据,这些数据可以是数值型、字符型、日期型或逻辑型,这些数据可以单独存取,也可以集体存取。在FoxPro系统中可以使用一维数组和二维数组。,67,数组 数组必须使用DECLARE或DEMENSION或PUBLIC或LOCAL声明, 例如:DECLARE a(3) 或DEMENSION b(5,6) 系统自动将数组初始化为逻辑型。,68,例如:编程实现一组数从大到小排序 clear dime x(8) for i=1 to 8 input “输入第“+STR(I,1)+“个数“ TO 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)=t endif endfor for i=1 TO 8 ?x(i) endfor,70,变量声明 单个变量只要直接赋值,就会在赋值的同时由系统自动声明,并自动确定类型。 变量声明时可以没有类型,但在任一时刻进行运算时必须有确定而且合适的类型。,71,变量的作用域 变量的作用域包括定义它的过程以及该过程所调用的子过程范围。在Visual FoxPro中,还可以使用LOCAL、PRIVATE和PUBLIC命令强制规定变量的作用范围。,72,变量种类 全局变量:在Foxpro的运行期间都存在,对任何程序都可见,都可以使用。用PUBLIC命令进行声明。,73,变量种类 私有变量:在程序及其子程序中可见,在上级程序中不可见,用PRIVATE命令进行声明。,74,变量种类 局部变量:仅在声明的程序中可见,在上级程序和下级程序中都不可见,用LOCAL命令进行声明。,75,在过程调用中要定义好内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论