1 / 97

Visual Foxpro 第八章 程序设计基础

Visual Foxpro 第八章 程序设计基础. 面向过程程序设计 面向对象程序设计. 学习要点:. 8.1 过程化程序设计和面向对象程序设计的基本概念及设计方法; 8.2 过程化程序设计的语言基础,程序设计基本结构; 8.3 可视化程序设计的基本方法、类。. 重点与难点:. 8.1 过程化程序设计和面向对象程序设计的基本概念及设计方法; 8.2 过程化程序设计的语言基础,程序设计基本结构;. 8.1 面向过程程序设计. 8.1.1 程序文件的建立和执行 1 .建立和修改程序文件

kin
Download Presentation

Visual Foxpro 第八章 程序设计基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visual Foxpro 第八章 程序设计基础 面向过程程序设计 面向对象程序设计

  2. 学习要点: 8.1 过程化程序设计和面向对象程序设计的基本概念及设计方法; 8.2 过程化程序设计的语言基础,程序设计基本结构; 8.3 可视化程序设计的基本方法、类。

  3. 重点与难点: • 8.1 过程化程序设计和面向对象程序设计的基本概念及设计方法; • 8.2 过程化程序设计的语言基础,程序设计基本结构;

  4. 8.1 面向过程程序设计 8.1.1 程序文件的建立和执行 1.建立和修改程序文件 • Visual FoxPro程序文件,是一个以(.PRG)为扩展名的文本文件。 • 在Visual FoxPro系统环境下,建立和编辑程序文件主要命令方式和菜单方式。

  5. (1)命令方式 【格式】 MODIFY COMMAND <程序文件名> 【功能】 打开一个编辑器窗口,用于建立或修改程序文件。 【例8-1】用命令方式建立文件P1.PRG。 MODIFY COMMAND P1.PRG

  6. (2)菜单方式 • 用菜单方式的操作步骤: ① 新建文件:“文件”-“新建”。 修改已有的程序文件:“文件” -“打开” 。 ② 在程序编辑窗口逐条输入或修改程序语句。 ③ 输入或修改完成后,在“文件”菜单中选择“保存”或“另存为”命令,保存文件。

  7. 2.执行程序文件(1)命令方式 【格式】 DO <程序文件名> 【功能】在命令窗口运行以.PRG为扩展名的程序文件。 【例8-1】运行文件P1.PRG。 DO P1.PRG

  8. (2)菜单方式 • 在Visual FoxPro系统环境下,选择“程序”菜单中的“运行”命令选项,在显示的对话框中确定或输入要执行的程序文件名。

  9. 8.1.2 程序中常用的命令 1.交互式输入命令 (1)赋值命令 STORE <表达式> TO <内存变量名表> 或 <内存变量名表>= <表达式> 【格式】 【功能】给内存变量赋值。 【说明】STORE命令可以同时给多个内存变量赋值,而<内存变量>=<表达式>命令只能给一个变量赋值。。

  10. 8.1.2 程序中常用的命令 (2)字符串输入命令 【格式】 ACCEPT [<提示信息>] TO <内存变量> 【功能】暂停程序的运行,等待用户从键盘上输入一串字符,存入指定的内存变量中。 【说明】<提示信息>用于提示用户进行操作的信息。从键盘接受的字符串,可以加定界符也可以不加定界符,系统都将其作为字符型数据输入到内存变量中。

  11. 8.1.2 程序中常用的命令 (3)单字符输入命令 【格式】 WAIT [<提示信息>][ TO <内存变量>] 【功能】暂停程序的运行,等待用户从键盘上输入单个字符后恢复程序的运行。 【说明】<提示信息>用于提示用户进行操作的信息,TO <内存变量>是可选项,当选用时,键入的单个字符均作为字符型数据赋给<内存变量>。如果只有WAIT 命令,没有选项,则系统默认的提示信息是:PRESS ANY KEY TO CONTINUE…

  12. 8.1.2 程序中常用的命令 (4)表达式输入命令 【格式】 INPUT [<提示信息>] TO <内存变量> 【功能】暂停程序的运行,等待用户输入表达式并将其值赋给指定的内存变量。 【说明】<提示信息>用于提示用户进行操作的信息,命令中 <内存变量>的类型决定于输入数据的类型,但不能为M型。如果键入的是表达式,本命令先计算出表达式的值,再将结果赋给<内存变量>;如果键入的是字符常量、逻辑常量和日期常量时应带定界符,既字符常量加引号,逻辑常量左右加圆点,日期常量要用CTOD()函数进行转换。

  13. (5)定位输入命令 【格式】 @<行,列> SAY <提示信息> GET <变量> READ 【功能】在屏幕指定的行列位置上输入数据。 【说明】命令中的各选项说明如下: <行,列>是指屏幕窗口的位置。 SAY <提示信息>给出提示信息。 GET <变量>取得变量的值。其中<变量>可以是字段变量或内存变量,如果是字段变量,应先打开表文件,如果是内存变量,应先赋值。 GET子句必须使用命令READ激活。在带有多个GET子句的命令后,必须遇到READ命令才能编辑GET中的变量。

  14. 2.输出命令 (1)非格式输出命令 【格式】 ?<内存变量名表> 或 ??<内存变量名表> 【功能】显示内存变量、常量或表达式的值。 【说明】 ?是在光标所在行的下一行开始显示 ??则是在当前光标位置开始显示。

  15. (2)格式输出命令 【格式】 @ <行,列> SAY <表达式> 【功能】按指定的坐标位置在屏幕上输出表达式的值。 【说明】输出<表达式>的位置由<行,列>指定,<表达式>的内容可以是数值、字符、内存变量和字段变量。

  16. (3)文本输出命令 【格式】 TEXT <文本信息> ENDTEXT 【功能】将TEXT和ENDTEXT之间的文本信息照原样输出。 【说明】TEXT与ENDTEXT在程序中必须配对。

  17. 3.其他程序运行命令 (1)清屏命令 【格式】 CLEAR 【功能】清除屏幕上的内容。 (2)返回命令 【格式】 RETURN 【功能】结束当前程序的运行。 【说明】 若当前程序无上级程序,该命令用于结束程序的运行,返回到命令窗口。如果当前程序是一个子程序,该命令用于结束程序的运行,返回到调用该程序的上级程序中。

  18. (3)终止程序执行命令 【格式】 CANCEL 【功能】清除屏幕上的内容。 (4)退出系统命令 【格式】 QUIT 【功能】终止程序运行,关闭所有打开的文件,退出Visual FoxPro系统,返回到Windows环境。

  19. (5)注释命令 【格式】 NOTE <注释内容> 或 * <注释内容> 或 && <注释内容> 【功能】用于在程序中加入说明,以注明程序的名称、功能或其他备忘标记。 【说明】注释命令为非执行语句。其中前两个命令格式作为独立的一行语句,第三条命令放在某一个语句的右边。

  20. 4.环境设置命令 系统提供SET命令组用来设置程序运行的环境。 (1)关闭对话命令 【命令】 SET TALK ON|OFF 【功能】 控制非输出性的执行结果是否在屏幕上显示或打印出来。 【说明】 系统默认值为ON。 (2)设置跟踪命令 【命令】 SET ECHO ON|OFF 【功能】 控制程序文件执行过程中的每条命令是否显示或打印出来。 【说明】 系统默认值为OFF。

  21. (3)设置打印命令 【命令】 SET PRINTER ON|OFF 【功能】 控制程序执行的结果到打印机或屏幕上。 【说明】 在命令格式中选择ON表示将输出结果送到打印机,选择OFF则将输出结果显示在屏幕上,系统默认值为OFF。 (4)设置定向输出命令 【命令】 SET DEVICE TO SCREEN | TO PRINTER | TO FILE<文件名> 【功能】 控制输出结果到屏幕、打印机或指定的文件。 【说明】 在命令格式中选择SCREEN表示将输出结果显示在屏幕上,选择PRINTER表示将输出结果送到打印机,选择FILE <文件名>则将输出结果送到指定文件。

  22. (5)设置精确比较命令 【命令】 SET EXACT TO ON|OFF 【功能】 在进行字符比较时是否需要精确比较。 【说明】 在命令格式中选择ON表示需要精确比较,选择OFF表示不需要精确比较,系统默认值为OFF。 (6)设置保护状态命令 【命令】 SET SAFETY ON|OFF 【功能】 系统在用户提出对文件重写或删除的要求时给出警告提示。 【说明】 需要提示选择ON,否则选择OFF。系统默认为ON。

  23. (7)设置删除记录标志命令 【命令】 SET DELETED ON|OFF 【功能】 屏蔽或处理有删除标记的记录。 【说明】 在命令格式中选择ON时,命令将不对有删除标记的记录进行操作,但索引命令除外。系统默认值为OFF。 (8)设置屏幕状态命令 【命令】 SET CONSOLE ON|OFF 【功能】 发送或暂停输出内容到屏幕上。 【说明】 系统默认值为ON。 (9)设置缺省目录命令 【命令】 SET DEFAULT TO <默认目录> 【功能】 用于设置系统默认的磁盘文件目录。

  24. 【例8-4】编写程序P3.PRG,其程序功能是在学生表中追加一条记录。【例8-4】编写程序P3.PRG,其程序功能是在学生表中追加一条记录。 编写程序如图8-4所示,运行程序P3.PRG,在如下输入界面填写数据,显示结果如图8-5所示。 图8-4程序P3.PRG的编写窗口 图8-5程序P3.PRG的输出结果

  25. 【例8-5】 编写程序P4.PRG,其程序功能是在学生表中查询某一天出生的学生记录。 编写程序如图8-6所示,运行程序P4.PRG,在输入了要查询学生的出生日期之后,系统输出查询的结果。 图8-6程序P4.PRG编写窗口

  26. 【例8-6】 编写程序P5.PRG,其程序功能是在学生表中删除学生记录。 编写程序如图8-7所示,运行程序P5.PRG,在输入了要查询学生的姓名之后,系统显示要删除学生的记录,并确认删除。 程序运行结果的屏幕显示如下: 图8-7程序P5.PRG编写窗口

  27. 8.1.3 程序的基本结构 程序的基本结构有三种: 顺序结构、分支结构和循环结构 1.顺序结构 顺序结构是指程序按照语句排列的先后顺序逐条的执行。 2. 分支结构 分支结构是在执行程序时,按照一定的条件选择不同的语句,用来解决选择、转移的问题。分支结构的基本形式有三种。 单向分支、双向分支、多向分支

  28. (1)单向分支 【格式】 IF <条件表达式> <命令行序列> ENDIF 【功能】当条件表达式的值为真时,执行<命令行序列>,否则执行ENDIF后面的命令。 【说明】<条件表达式>是关系表达式或逻辑表达式,IF和ENDIF必须成对使用。 <命令行序列>可以由一条语句或多条语句构成。

  29. 【例8-7】 编写程序P6.PRG,其程序功能是在教师表中,将陈静教师的职称由讲师改成副教授。

  30. (2)双向分支 【格式】 【功能】 执行该命令时,首先判断<条件表达式>的值,若为真,则执行<命令行系列1>,然后执行ENDIF后的命令;若为假,则执行<命令行序列2>,然后执行ENDIF后的命令。 IF <条件表达式> <命令行序列1> ELSE <命令行序列2> ENDIF 【说明】IF…ELSE…ENDIF 语句必须成对使用。<命令行序列1>和<命令行序列2>中可以嵌套IF命令。

  31. 【例8-8】 编写程序P7.PRG,其程序功能是在教师表中,查询陈静教师的记录,如果找到记录,就显示该记录,否则,显示“查无此人”。

  32. (3)多向分支 【格式】 • DO CASE • CASE <条件表达式1> • <命令行序列1> • CASE <条件表达式2> • <命令行序列2> • ... ... • CASE <条件表达式N> • <命令行序列N> • OTHERWISE • <命令行序列N+1> • ENDCASE

  33. 【功能】 系统从多个条件中依次测试<条件表达式>的值, 若为真:即执行相应<条件表达式>后的<命令行序列>; 若所有的<条件表达式>的值均为假:则执行OTHERWISE后面的 <命令行序列>。 【说明】DO CASE和第一个CASE子句之间不能插入任何命令。 DO CASE和ENDCASE必须配对使用。

  34. 【例8-9】编写程序P8.PRG,其程序功能是根据用户的选择,显示不同数据表的内容。【例8-9】编写程序P8.PRG,其程序功能是根据用户的选择,显示不同数据表的内容。

  35. 3、循环结构 (1)条件循环 【格式】 DO WHILE <条件表达式> <命令行序列1> [LOOP] <命令行序列2> [EXIT] <命令行序列3> ENDDO 【功能】语句执行时,先判断<条件表达式>的值,若为真,则执行循环体内的命令,即DO 与ENDDO之间的命令;若为假,则执行ENDDO后面的命令。

  36. 【说明】 对循环语句进行以下说明: DO WHILE 和ENDDO子句要配对使用。 DO WHILE <条件表达式>是循环语句的入口;ENDDO是循环语句的出口;中间<命令行序列>是重复执行的循环体。 LOOP和EXIT只能在循环语句中使用,其中LOOP是转到循环的入口语句;EXIT是强行退出循环的语句。 循环结构允许嵌套,这种嵌套不仅限于循环结构自身的嵌套,而且还可以是和选择结构的相互嵌套。

  37. 【例8-10】 编写程序P9.PRG,其程序功能是统计学生表中入校总分在580分以上的学生人数。

  38. 【例8-11】 编写程序P10.PRG,其程序功能是设计一个对学生表进行管理主控程序,用户通过键盘选择菜单,以实现不同的功能模块的调用或退出程序运行。

  39. (2)计数循环 【格式】 FOR <循环变量>=<循环初值> TO <循环终值> [ STEP<步长>] <命令行序列1> [LOOP] <命令行序列2> [EXIT] <命令行序列3> ENDFOR | NEXT 【功能】根据用户设置的循环变量的初值、终值和步长,决定循环体内语句执行次数。

  40. 【功能】系统执行该命令时: • 首先将循环初值赋给循环变量; • 然后判断循环变量的值是否超过终值: • 若超过则跳出循环,执行ENDFOR后面的命令; • 否则执行循环体内的命令序列。 • 当遇到ENDFOR子句时,返回FOR命令,并将循环变量的值加上步长值再一次与循环终值比较,如此重复执行,直到循环变量的值超过循环终值。

  41. 【说明】 对循环语句进行以下说明: 步长值省略时,系统默认步长值为1。 当初值小于终值时,步长值为正值。 当初值大于终值时,步长值为负值。 步长值不能为0,否则造成死循环。 在循环体内不要随便改变循环变量的值,否则会引起循环次数发生改变。 [LOOP]和[EXIT]命令的功能和用法与条件循环中该命令的用法相同 。

  42. 【例8-12】 编写程序P11.PRG,其程序功能是用计数循环统计学生表中入校总分在580分以上的学生人数。

  43. (3)指针循环 【格式】 • SCAN [<范围>] [ FOR<条件表达 式1>] [ WHILE<条件表达式2>] • <命令行序列1> • [LOOP] • <命令行序列2> • [EXIT] • <命令行序列3> • ENDSCAN 【功能】根据用户设置的当前记录指针,对一组记录进行循环操作。

  44. 【功能】 该语句在指定的范围内,用记录指针来控制循环次数。 • 执行语句时,首先判断函数EOF( ) 的值: • 若为“真”,则结束循环,执行ENDSCAN后面的语句; • 否则,结合<条件表达式1>或<条件表达式2>执行<命令行序列>,记录指针移到指定的范围和条件内的下一条记录,重新判断函数EOF( )的值,直到EOF( )的值为“真”时结束循环。

  45. 【说明】 • SCAN…ENDSCAN循环语句中隐含函数EOF( )和命令SKIP的处理。 • 无<范围>选项时,则表示对所有记录进行处理。 • [LOOP]和[EXIT]命令的功能和用法与条件循环中该命令的用法相同。

  46. 【例8-13】 编写程序P12.PRG,其程序功能是用指针循环统计学生表中入校总分在580分以上的学生人数。

  47. (4)多重循环 多重循环是指在一个循环语句内又包含另一个循环语句,多重循环也称为循环嵌套。如: • DO WHILE <条件表达式1> • <命令行序列11> • DO WHILE <条件表达式2> • <命令行序列21> • …… • ENDDO • <命令行序列12> • ENDDO 【功能】根据用户设置的当前记录指针,对一组记录进行循环操作。

  48. 【功能】 在多重循环中,首先从外循环进入内循环,执行内循环的语句。当内循环的条件为假时,返回到外循环;当外循环的条件为真时,又进入内循环;否则,退出循环。 【说明】 对循环语句进行以下说明: ①循环嵌套层次不限,但内循环的所有语句必须完全嵌套在外层循环之中。否则,就会出现循环的交叉,造成逻辑上的混乱。 ②循环结构和分支结构允许混合嵌套使用,但不允许交叉。其入口语句和相应的出口语句必须成对出现。

  49. 【例8-14】 编写程序P13.PRG,其程序功能是使用多重循环打印一个九九乘法口诀表。

More Related