《程序设计方案基础2ppt课件》由会员分享,可在线阅读,更多相关《程序设计方案基础2ppt课件(147页珍藏版)》请在金锄头文库上搜索。
1、第第7 7章章 程序设计根底程序设计根底 福建农林大学东方学院7.1 7.1 命令格式命令格式由两部分由两部分组成成命令命令动词,表示,表示应执行的操作行的操作假假设干个短干个短语,对操作提供某些限制性操作提供某些限制性阐明。明。普通格式如下:普通格式如下: 命令命令动词 短短语如:如:copy to aa for copy to aa for 性性别=“=“男男命令书写的规那么命令书写的规那么命令以命令命令以命令动词开开头用空格来分隔各用空格来分隔各单词短短语命令的最命令的最长是是254254个字符,用分行符;分行个字符,用分行符;分行命令命令动词和关和关键字可以字可以缩写写为前四个字符前四
2、个字符如如 MODIFY STRUCTURE MODIFY STRUCTURE 可写可写为 MODI STRU MODI STRU 不分大小写,可以混合运用不分大小写,可以混合运用变量量名名、字字段段名名和和文文件件名名时,应防防止止与与命命令令动词和关和关键字同名,以免运字同名,以免运转时发生混乱生混乱与表有关的命令与表有关的命令与表有关的命令格式:与表有关的命令格式: 命令命令动词 范范围 FOR FOR FIELDS FIELDS 命命令令中中的的 FORFOR、FIELDSFIELDS是是关关键字字,用用户不得随意更改。不得随意更改。商定:商定: 表表示示可可选项, ,不不选用用使使,
3、系系统自自动运运用用默默许值表示必表示必选项 :表示:表示对表表记录操作的范操作的范围ALL ALL 表示全体表示全体记录NEXT N NEXT N 当前当前记录开开场后后续合合计 N N 个个记录RECORD N RECORD N 特指第特指第 N N 号号记录。 REST REST 从从当当前前记录开开场到到表表尾尾的的一一切切记录FORFOR条件条件 选择操作操作FIELDS FIELDS 投影操作投影操作与表有关的命令与表有关的命令操作释例操作释例Go 3Disp allGo 2Disp next 2Go 3Disp restGo 3Disp record 5编号 姓名101 张三10
4、2 王一103 刘六104 李四105 赵七 朱八表一Go 1List for 编号101.and.编号“105选择操作Go 1List fields 姓名投影操作7.2 7.2 数据库的操作命令数据库的操作命令 常用的操作命令常用的操作命令包括包括数据数据库的建立的建立翻开翻开设置置封封锁删除除1.1.创创建数据建数据库库CREATE DATABASE CREATE DATABASE 命令命令命令格式:命令格式:CREATE DATABASE CREATE DATABASE 数据数据库库名名|?|?命令功能:用于命令功能:用于创创建一个数据建一个数据库库阐明阐明: :(1)(1)数据数据库库
5、名曾名曾经经存在,那么提示新的途径或文件名存在,那么提示新的途径或文件名(2)(2)参数参数“?“?或无参数,或无参数,弹弹出出对话对话框,位置及称号框,位置及称号(3)(3)数数据据库库以以.DBC.DBC为为其其扩扩展展名名,以以.DCT.DCT为为备备注注文文件件,索引文件那么以索引文件那么以.DCX.DCX为扩为扩展名展名(4)(4)该该命令以独占方式命令以独占方式创创建并翻开一个数据建并翻开一个数据库库例例如如: :创创建建一一个个名名为为t1.dbct1.dbc的的数数据据库库,并并显显示示有有关关数数据据库库的信息的信息CREATE DATABASE t1 CREATE DATA
6、BASE t1 创创建数据建数据库库t1t1CLEAR CLEAR 去除屏幕去除屏幕DISPLAY DATABASE DISPLAY DATABASE 显显示数据示数据库库t1t1信息信息2.2.翻开数据库翻开数据库用用OPEN OPEN DATABASEDATABASE命命令令翻翻开开曾曾经存存在在的的数数据据库命令格式:命令格式:OPEN DATABASE OPEN DATABASE 数据数据库名名|?|?命令功能命令功能: :翻开一个指定的数据翻开一个指定的数据库。阐明明: :3.3.设置当前数据库设置当前数据库SET DATABASE TO SET DATABASE TO 命令命令命令
7、格式:命令格式:SET DATABASE TO SET DATABASE TO 数据数据库库名名命令功能命令功能: :设设置当前数据置当前数据库库。阐明:阐明:(1)(1)数据数据库库名名为为当前要翻开的数据当前要翻开的数据库库称号称号(2)(2)略名,略名,弹弹出一个出一个显库显库对话对话框框例如:例如:OPEN DATABASE t1 OPEN DATABASE t1 库库t1.dbct1.dbcOPEN DATABASE t2 OPEN DATABASE t2 库库t2.dbct2.dbcDISPLAY DATABASE DISPLAY DATABASE 显显示当示当库库t2.dbct2
8、.dbc的信的信息息SET DATABASE TO t1 SET DATABASE TO t1 置置t1t1为为当前当前库库DILPLAY DATABASE DILPLAY DATABASE 显显示当示当库库t1t1的信息的信息SET DATABASE TO t2 SET DATABASE TO t2 设设t2t2为为当当库库DISPLAY DATABASE DISPLAY DATABASE 显库显库t2.dbct2.dbc的信息的信息4.4.封锁数据库封锁数据库命令格式: CLOSE DATABASE ALL阐明:ALL用于封锁一切翻开的数据库假设没有指定此参数,那么将封锁当前数据库5.5.
9、删除数据库删除数据库命令格式:命令格式: DELETE DATABASE DELETE DATABASE 数据数据库名名|? |? DELETE TABLESDELETE TABLESRECYCLERECYCLE阐明明要要删除的数据除的数据库文件必需保文件必需保证处于非运用形状于非运用形状?弹出一个出一个“删除除对话框框 DELETE TABLESDELETE TABLES删除数据除数据库中包含的表和包含中包含的表和包含这些些表的数据表的数据库RECYCLERECYCLE文件放入回收站中,可恢复文件放入回收站中,可恢复删除的文件除的文件SET SAFETYSET SAFETY的的值为ONON,
10、删文件前会提示用文件前会提示用户SET SAFTYSET SAFTY设置置为OFFOFF,VFPVFP将不做任何提示将不做任何提示表的操作命令表的操作命令包括:创建表翻开一个存在的表将一个自在表参与到数据库中去从数据库中移去表显示表中信息封锁删除表1.1.创建表创建表命令格式:命令格式: CREATE CREATE数据数据库表名表名命令功能:命令功能:创建数据建数据库表或自在表表或自在表, ,其其扩展名展名为.dbf.dbf如有数据如有数据库翻开,那么翻开,那么该表是数据表是数据库表,表,且已参与到且已参与到该数据数据库中,否那么中,否那么该表是表是自在表自在表例如例如: :新建一个表新建一个
11、表a1,a1,将它包含到数据将它包含到数据库t1t1中中OPEN DATABASE t1 &OPEN DATABASE t1 &翻开数据翻开数据库t1t1 CREATE TABLE a1 CREATE TABLE a1 & &创建表建表a1.dbf,a1.dbf,将其包含到数据将其包含到数据库t1t1中中2.2.将自在表参与到数据库中将自在表参与到数据库中命令格式:命令格式: ADD TABLE ADD TABLE自在表名自在表名|?|?阐阐明明: : 1 1 自在表名指定要参与到一个已翻开的数自在表名指定要参与到一个已翻开的数据据库库中的自在表的称号中的自在表的称号 2 2 不指定称号或不指
12、定称号或 “ “?作?作为为参数,参数,弹弹出出对话对话框框 3 3 表一旦参与到表一旦参与到库库中,不再是自在表中,不再是自在表 4 4 可以可以经过经过REMOVE TABLEREMOVE TABLE命令将命令将该该表从数据表从数据库库中移出,使之成中移出,使之成为为新的自在表新的自在表库中表的一些规定:库中表的一些规定:必需是一个有效的必需是一个有效的.DBF.DBF文件文件不能与数据不能与数据库库中已存在的表重名中已存在的表重名一个表只能属于一个数据一个表只能属于一个数据库库,不能再成,不能再成为为其他数据其他数据库库中的表中的表3.3.将表从数据库中移出将表从数据库中移出命令格式:命
13、令格式: REMOVE TABLE REMOVE TABLE 数据数据库表名表名|? |? DELETEDELETERECYCLERECYCLE阐明:明:1 1参数参数?或忽略数据或忽略数据库表名表名时,将翻开,将翻开对话框框2 2参数参数DELETE DELETE 用于指定将表从数据用于指定将表从数据库和磁和磁盘中中删除除3 3RECYCLERECYCLE参数参数, ,先放回收站中,不立刻先放回收站中,不立刻删,可恢复,可恢复4 4与表相与表相连的主索引、默的主索引、默许值及有效性及有效性规那么将被那么将被删除除 5 5当一个表从数据当一个表从数据库中移出中移出时,它将,它将变成一个自在表成
14、一个自在表例如例如建建2 2个表并参与到个表并参与到库t1t1中,而后中,而后执行行删除命令除命令OPEN DATABASE t1 OPEN DATABASE t1 翻开数据翻开数据库CREATE c1 CREATE c1 创建表建表c1.dbfc1.dbfCREATE c2 CREATE c2 创建表建表c2.dbfc2.dbfCLEAR CLEAR 清屏幕清屏幕DISPLAY DATABASE DISPLAY DATABASE 显示当前数据示当前数据库信息信息REMOVE TABLE c2 REMOVE TABLE c2 挪挪动数据数据库表表c2.dbfc2.dbfCLEAR CLEAR
15、清屏幕清屏幕DISPLAY DATABASE DISPLAY DATABASE 显示当前数据示当前数据库信息信息ADD TABLE c2 ADD TABLE c2 将表将表c2c2添加到当前添加到当前库中中DELETE DATABASE t1 DELETE DATABASE t1 删除数据除数据库t1t14.4.显示表的构造显示表的构造命令格式命令格式: :LIST STRUCTURE LIST STRUCTURE TO PRINTERTO PRINTER| |TO TO FILE FILE 文件名文件名阐明明: :(1)(1)有有TO PRINTERTO PRINTER选项时, ,将屏幕将屏
16、幕显示的信示的信息息输出到打印机出到打印机(2)(2)有有TO FILE TO FILE 文件名文件名选项时, ,将屏将屏幕幕显示的信息示的信息输出到指定的文件出到指定的文件5.5.修正表的构造修正表的构造命令格式:命令格式: ALT TABLE ALT TABLE 表名表名命令功能命令功能: :修正表的构造修正表的构造7.7.输入记录输入记录表的构造建立,没有数据,是空表表的构造建立,没有数据,是空表命令格式:命令格式:APPEND APPEND BLANKBLANK命令功能命令功能: :从表的末尾追加从表的末尾追加记录BLANKBLANK,末尾追加一空,末尾追加一空记录,不出,不出现APP
17、ENDAPPEND输入入记录窗口窗口7.7.翻开表翻开表命令格式:命令格式:USE USE 表名表名命令功能命令功能: :翻开一个和多个曾翻开一个和多个曾经存在的表存在的表阐明明: :表名用于指定需求翻开表的称表名用于指定需求翻开表的称号号8.8.封锁表封锁表命令格式:命令格式: USE USE CLOSE TABLES CLOSE TABLES ALLALL命令功能命令功能: :USE USE 封封锁已翻开的表已翻开的表CLOSE TABLES CLOSE TABLES ALLALL可以同可以同时封封锁多个多个表。表。阐明明: : 及及时封封锁,从内存上卸下表,以防止操作,从内存上卸下表,以
18、防止操作不当不当*记录指针定位记录指针定位 用用RECNO()RECNO()函数函数, ,可可测试当前当前记录指指针绝对指指针定位定位命令格式:命令格式:GO GO TOTO TOP TOPGO GO TOTO BOTTOM BOTTOMGO GO TOTO RECORD N RECORD NGO GO TOTO数数值表达式表达式GO GO TOTO N N 命令功能:命令功能: 使使记录指指针指向表中的指定指向表中的指定记录 阐明阐明GO TOP GO TOP 定位第一个定位第一个逻辑记录逻辑记录GO BOTTOM GO BOTTOM 定位最后一个定位最后一个逻辑记录逻辑记录GO RECOR
19、D N GO RECORD N 指指针针定位到表的定位到表的N N号号记录记录GOGO数数值值表达式定到表达式表达式定到表达式值值取整后的取整后的记录记录GO N GO N 指指针针定位到定位到N N号号记录记录中中选选用参数用参数N N时时,GOGO、TOTO均可省略不写均可省略不写相对指针转移相对指针转移 命令格式:命令格式:SKIP SKIP + +- -数数值表达式表达式 命令功能:命令功能:相相对当前位置按表达式当前位置按表达式值挪挪动假假设干个干个记录值为正正时,指,指针向后移向后移为负值时,指,指针向前移向前移缺省缺省选择项时指指针向后移一个向后移一个记录阐明:明:GOGO绝对定
20、位,定位到所指的定位,定位到所指的记录上上SKIPSKIP是相是相对定位命令,以当前定位命令,以当前记录为中心,中心,按按给定的表达式定的表达式值相相对地挪地挪动假假设干干记录记录的显示记录的显示 两种格式两种格式: :LIST LIST 范范围FIELDSFIELDS字段名字段名表表FORFOR条件条件TO PRINTER TO PRINTER OFFOFFTO FILETO FILE文件名文件名NOCONSOLENOCONSOLENOOPTIMIZENOOPTIMIZEDISPLAY DISPLAY 范范围FIELDSFIELDS字段字段名表名表FORFOR条件条件TO P TO P RI
21、NTERRINTEROFFOFFTO FILETO FILE文件名文件名NOCONSOLENOCONSOLENOOPTIMIZENOOPTIMIZE阐明:阐明:LIST=DISPLAY ALLLIST=DISPLAY ALL显显示的全部示的全部记录记录OFFOFF时时,不,不显显示示记录记录号号有有FORFOR条件条件显显示出示出满满足条件表达式的足条件表达式的记录记录FIELDSFIELDS字段名表,字段名表,显显示指定字段示指定字段有范有范围围,显显示指定范示指定范围围TO PRINTERTO PRINTER,显显示的示的结结果送到打印机果送到打印机输输出出TO FILETO FILE文件
22、名,文件名,结结果果输输出到文件出到文件NOCONSOLENOCONSOLE,不将,不将显显示示结结果送到主窗口和果送到主窗口和TO TO PRINTERPRINTERTO FILE TO FILE 文件名一同运用文件名一同运用NOOPTIMIZENOOPTIMIZE短短语时语时,不运用,不运用RUSHMORERUSHMORE优优化技化技术术差别有两点:差别有两点:LISTLIST缺省范缺省范围围是是显显示全体示全体记录记录DISPLAYDISPLAY缺省当前缺省当前记录记录LISTLIST具有延具有延续显续显示特点示特点DISPLAYDISPLAY具有分具有分页显页显示,示,满满一一页页就停
23、就停顿顿,并提示按任一并提示按任一键继续显键继续显示下示下页页内容内容例例7.17.1将将ZGDAZGDA表中表中职称是称是讲师的、年的、年龄在在4545岁以下的以下的记录显示出来,并且只列出示出来,并且只列出 姓名、年姓名、年龄、职称三个字段称三个字段USE ZGDA USE ZGDA LIST FIELDS LIST FIELDS 姓名,年姓名,年龄,职称称 FOR FOR 职称称“讲师ANDAND年年龄4545【例【例7.27.2】将将ZGDAZGDA表的后表的后4 4个个记录显记录显示出来示出来, ,并且将第并且将第1 1和第和第5 5个个记录记录分分别显别显示出来示出来【例【例7.3
24、7.3】将将ZGDAZGDA表中表中19951995年年1 1月月1 1日以后参与任日以后参与任务务的的记录显记录显示出来示出来【例【例7.47.4】将将ZGDAZGDA表的后表的后4 4个个记录记录中性中性别别是女的是女的记录显记录显示出来示出来7.3 7.3 表的修正和维护表的修正和维护 1.EDIT 1.EDIT 和和 CHANGE CHANGE命令命令格式分格式分别别是是: : EDIT EDIT 范范围围FIELDSFIELDS字段名表字段名表 FORFOR条件条件CHANGECHANGE范范围围FIELDSFIELDS字段名表字段名表 FOR FOR 条件条件 命令功能命令功能:
25、: 进进入全屏幕入全屏幕编辑编辑方式,方式,对对当前翻开当前翻开的表的的表的记录进记录进展修正展修正阐明阐明: :缺省一切的缺省一切的选择项,从当前,从当前记录开开场进展修正展修正FIELDSFIELDS字段名表,字段名表,对列出的字段列出的字段进展展修修 改改范范围和和FORFOR条件,范条件,范围内内满足条件的足条件的记录进展修正展修正缺省了范缺省了范围是指全部是指全部记录2.BROWSE2.BROWSE命令命令命令格式:命令格式: BROWSE BROWSE FIELDS FIELDS 字段名表字段名表命令功能:命令功能: 该命令以窗口方式命令以窗口方式显示当前表的内容,示当前表的内容,
26、并可以并可以对窗口内的数据按需求窗口内的数据按需求进展修正展修正运用运用EDITEDIT命令和命令和CHANGECHANGE命令命令时 一行只一行只显示一个字段示一个字段 每屏幕只能每屏幕只能显示一个示一个记录3.REPLACE3.REPLACE命令命令*命令格式:命令格式: REPLACE REPLACE范范围字段字段1 1WITHWITH表达式表达式1 1ADDITIVEADDITIVE,字段字段2 2WITHWITH表达式表达式2 2ADDITIVEADDITIVE FORFOR条件条件 命令功能:命令功能:成批地、快速地修正成批地、快速地修正满足足给定条件定条件的一批的一批记录修正的方
27、法是修正的方法是 用用WITHWITH后面表达式的后面表达式的值交交换WITHWITH前面的字段内容前面的字段内容 阐明:阐明:(1) (1) 系系统统不不进进入全屏幕入全屏幕编辑编辑方式方式(2) (2) 范范围围和和FORFOR条件,修正范条件,修正范围围内内满满足条件的一足条件的一切切记录记录,缺省范,缺省范围围,当前,当前记录记录 (3)REPLACE(3)REPLACE命令可以命令可以对备对备注字段的数据注字段的数据进进展交展交换换可用关可用关键键字字ADDITIVEADDITIVE,追加到,追加到备备注的文本内容注的文本内容的尾部的尾部否那么表达式的内容覆盖否那么表达式的内容覆盖备
28、备注字段中的原有内容注字段中的原有内容(4)(4)字段名和表达式的数据字段名和表达式的数据类类型必需一型必需一样样数数值值字段,表达式的字段,表达式的值值大于字段大于字段宽宽度度时时,四舍五入,四舍五入运算,或采取科学运算,或采取科学计计数法数法【例【例7.57.5】在表在表DA.DBFDA.DBF中,中,对工工资小于小于800800元的元的职工各工各添加添加1010元元USE DAUSE DAREPLACE ALL REPLACE ALL 工工资 WITH WITH 工工资+10 +10 FOR FOR 工工资800800USEUSE记录的插入与删除记录的插入与删除 1.1.记录记录的插入的
29、插入APPEND APPEND 命令是从表末尾添加新命令是从表末尾添加新记录记录命令格式:命令格式: INSERT INSERT BLANKBLANK BEFOREBEFORE命令功能:命令功能: 在当前表中的当前在当前表中的当前记录记录之前或之后插入之前或之后插入记录记录阐阐明:明:阐明:阐明:(1)(1)没有没有选择项选择项,是在当前,是在当前记录记录之后插入一个之后插入一个记录记录(2)(2)假假设设有有BEFOREBEFORE选择项选择项,是在当前,是在当前记录记录之前插之前插入一个入一个记录记录(3)(3)假假设设有有BLANKBLANK选择项选择项,是在当前,是在当前记录记录之后插
30、之后插入一个空白入一个空白记录记录2.2.记录的删除记录的删除分两步分两步进展:展:对欲欲删除的除的记录打打删除除标志志 “* “*,称,称为逻辑删除除必要必要时,可恢复,即把,可恢复,即把“*“*去掉去掉把把带有有删除除标志的志的记录真正真正删除,称除,称为永永久性久性删除除记录或称物理或称物理删除除记录(1)(1)逻辑删除记录命令逻辑删除记录命令命令格式:命令格式:DELETEDELETE范范围FORFOR条件条件命令功能:命令功能:指定范指定范围内内满足条件的那些足条件的那些记录加上加上删除除标志志“*“* 阐明:明:假假设省略两个省略两个选择项,那么,那么给当前当前记录打打删除除标志志
31、“*“*当用命令当用命令 SET DELETE ON SET DELETE ON 在在显示或有示或有关操作关操作时,作了,作了删除除标志的志的记录就不起就不起作用,好像真正作用,好像真正删除除这些些记录一一样。【例【例7.67.6】将表将表DADADBFDBF的的4 4号号记录打上打上删除除标志志USE DAUSE DADELETE RECORD 4DELETE RECORD 4LISTLIST(2)(2)记录恢复删除命令记录恢复删除命令命令格式命令格式: : RECALL RECALL 范范围FORFOR条件条件命令功能:命令功能:将将规定范定范围内的、符合条件的、已作了内的、符合条件的、已
32、作了删除除标志的志的记录恢复。即把恢复。即把删除除 标志志“*“*去掉。去掉。(3)(3)永久性删除记录命令永久性删除记录命令命令格式:命令格式: PACKPACK命令功能:命令功能:将将带有有删除除标志的志的记录从当前表中从当前表中删除除并重新并重新调整表的整表的记录号号阐明:明:执行行PACKPACK命令后,命令后,删除的除的记录在表中不在表中不再存在,并且不能被恢复,称永久性再存在,并且不能被恢复,称永久性删除除记录 (4)(4)删除表的全部记录命令删除表的全部记录命令命令格式:命令格式:ZAPZAP命令功能:命令功能:将已翻开的表中的全部将已翻开的表中的全部记录一次性一次性删除除阐明:
33、明:(1)(1)执行此命令,只是行此命令,只是删除全部除全部记录,而表,而表的构造依然保管。的构造依然保管。(2)(2)该命令等效于命令等效于执行了行了DELETE ALLDELETE ALL命令后命令后再再执行行PACKPACK命令。命令。表的排序表的排序 按一定的条件在已有的表之外按一定的条件在已有的表之外产生一个新的有序生一个新的有序表表 ,从而,从而实现数据的重新数据的重新组织。命令格式:命令格式:SORT TO SORT TO 文件名文件名 ON ON字段名字段名1 1A AC CD D,字段名,字段名2 2A AC CD DASCENDING|DESCENDINGASCENDING
34、|DESCENDING范范围FORFOR条件条件FIELDSFIELDS字段名字段名表表命令功能:命令功能:对当前表中指定范当前表中指定范围内内满足条件的足条件的记录,根据关,根据关键字段按字符字段按字符顺序序 、数、数值大小或大小或时间顺序序进展重新展重新陈列,生成一个新的表。列,生成一个新的表。阐明:阐明:新生成的表,新生成的表,扩展名展名为.DBF.DBF不不选择范范围和条件和条件时,对全部全部记录进展排序展排序不指定不指定FIELDSFIELDS,新表构造全部字段,新表构造全部字段组成成多重排序,即先多重排序,即先对字段名字段名1 1 排序,排序,对于于记录一一样的的记录,再按字段名,
35、再按字段名2 2排序,依此排序,依此类推推A A和和D D分分别表示升序和降序,升序符号可以省略不写表示升序和降序,升序符号可以省略不写C C使排序使排序时不分大小写字母不分大小写字母C C可以和可以和A A或或D D连用,两种用,两种选择可以只用一条斜可以只用一条斜线,如如ACAC或或 DCDCASCENDINGASCENDING和和DESCENDINGDESCENDING仅对那些没有指定那些没有指定A A和和D D的关的关键字段起作用,关字段起作用,关键字段默字段默许按升序按升序 A A排序排序【例【例7.77.7】将表将表A1.DBFA1.DBF按工按工资排序,排序后的表名排序,排序后的
36、表名为GZ.DBFGZ.DBFUSE A1USE A1SORT ON SORT ON 工工资 TO GZ TO GZUSE GZUSE GZLISTLIST7.4 7.4 索引文件索引文件 表排序的方法:表排序的方法:分分类方法方法索引索引两种索引文件两种索引文件类型型一种一种为单入口索引文件入口索引文件其其扩展名展名为.IDX.IDX索引文件索引文件复合索引文件复合索引文件其其扩展名展名为.CDX.CDX索引文件索引文件索引就像一本索引就像一本书的目的目录索引可使索引可使读者快速者快速找到所需的内容一找到所需的内容一样(1)(1)单入口索引文件单入口索引文件是与是与FoxBASEFoxBAS
37、E表索引文件相兼容的索引文件表索引文件相兼容的索引文件一个表可以有多个一个表可以有多个这样的索引文件的索引文件其其扩展名展名为.IDX.IDX索引文件索引文件(2)(2)复合索引文件复合索引文件包含包含许许多索引多索引每个索引都有一个每个索引都有一个TAGTAG标标志志复合索引文件就好似是复合索引文件就好似是许许多多单单个个索引的集合索引的集合1)1)构造复合索引文件:构造复合索引文件:这样这样的索引文件与相关的表同名的索引文件与相关的表同名但但扩扩展名展名为为.CDX.CDX当表被翻开当表被翻开时时,索引文件也自,索引文件也自动动被翻开被翻开并能自并能自动动及及时时更新更新2)2)独立型复合
38、索引文件:独立型复合索引文件:这样这样的索引文件不与相关的表同的索引文件不与相关的表同名名且不会随相关表的翻开而自且不会随相关表的翻开而自动动翻翻开开1.1.建立索引文件建立索引文件命令格式:命令格式:INDEX ONINDEX ON索引表达式索引表达式TOTOIDXIDX索引文件名索引文件名|TAG|TAG标志名志名OFOFCDXCDX索引文件名索引文件名FORFOR条件条件COMPACTCOMPACTASCENDING|DESCENDINGASCENDING|DESCENDINGUNIQUEUNIQUEADDITIVEADDITIVE命令的功能命令的功能: :对满足指定条件的足指定条件的记
39、录按索引表达式按索引表达式进展索引,展索引, 构成构成.IDX.IDX索引文件或索引文件或.CDX.CDX索引文件。索引文件。主要参数阐明:主要参数阐明:如有关如有关键字字TAG,TAG,表示建立复合索引表示建立复合索引TAGTAG关关键字字标志名志名为复合索引一个索引复合索引一个索引标志志选择OFOFCDXCDX索引文件名索引文件名时, ,可建立独立型复合索引可建立独立型复合索引文件文件缺省缺省时可建立与表同名的构造化复合索引文件可建立与表同名的构造化复合索引文件有有FORFOR条件条件时,按,按满足条件的足条件的记录进展索引展索引ASCENDINGASCENDING任任选项, ,排序方式是
40、按升序排序方式是按升序DESCENDINGDESCENDING任任选项, ,排排 序方式是按降序序方式是按降序默默许时为升序升序主要参数阐明:主要参数阐明:索引表达式中的字段名可以是数索引表达式中的字段名可以是数值型、字符型或型、字符型或日期型日期型表达式由多个字段表达式由多个字段组成成时,必需,必需转换成一成一样的数的数据据类型型转换可运用可运用VAL()VAL()、STR()STR()、CTOD()CTOD()、DTOC()DTOC()函数。函数。假假设索引表达式的字段索引表达式的字段类型一致型一致时,必需用,必需用“+“+衔接。接。选择COMPACTCOMPACT项时, ,在建立在建立单
41、入口索引入口索引时运用,运用,表示可生成一个表示可生成一个紧缩的的单独索引文件独索引文件 复合索引文件自复合索引文件自动采用采用紧缩方式。方式。UNIQUEUNIQUE项时,多,多记录有一有一样的关的关键字表达式字表达式值,第一个第一个记录有效,包含在索引文件中有效,包含在索引文件中假假设未指定未指定UNIQUEUNIQUE,那么一切,那么一切记录均包含在索引均包含在索引文件中文件中 2.2.翻开和封锁索引文件翻开和封锁索引文件翻开索引文件的两种命令翻开索引文件的两种命令1)1)用用USEUSE翻开表和索引文件翻开表和索引文件2)2)用用SET INDEXSET INDEX翻开索引文件翻开索引
42、文件1)1)用用USEUSE翻开表和索引文件翻开表和索引文件命令格式:命令格式:USEUSE表文件名表文件名INDEXINDEX索引文件名表索引文件名表|?|?ORDERORDER数数值表达式表达式| |IDXIDX文件名文件名 命令功能:命令功能:本命令将索引文件本命令将索引文件连同表主文件一同翻开同表主文件一同翻开执行此命令后,封行此命令后,封锁当前任当前任务 区前运用的表区前运用的表及索引文件及索引文件2)2)用用SET INDEXSET INDEX翻开索引文件翻开索引文件命令格式命令格式SET INDEX TOSET INDEX TO索引文件名表索引文件名表|?|?ADDITIVEAD
43、DITIVE命令功能:命令功能:翻开表主文件后,用此命令翻开已建立的索引翻开表主文件后,用此命令翻开已建立的索引文件文件阐明:明:凡与表一同翻开的多个索引文件,用凡与表一同翻开的多个索引文件,用APPENDAPPEND、BROWSEBROWSE、EDITEDIT及及REP LACEREP LACE命令修正命令修正时,均会自,均会自动地修正一切的索引文件。地修正一切的索引文件。构造化复合索引文件随着表的翻开而翻开构造化复合索引文件随着表的翻开而翻开, ,随着随着表的封表的封锁而封而封锁。对于于单入口索引入口索引 文件和独立型索引文件可以文件和独立型索引文件可以用上述命令,用上述命令,该命令可以一
44、次翻开一个或多个命令可以一次翻开一个或多个索引文件索引文件3)3)确定主控索引确定主控索引命令格式命令格式: :SET ORDER TOSET ORDER TO数数值表达式表达式| |IDXIDX文件名文件名| |TAGTAG标志名志名OFOFCDXCDX索引文件名索引文件名ASCENDING|DESCENDINGASCENDING|DESCENDING一个表可以同一个表可以同时翻开多个索引文件翻开多个索引文件但是只需一个索引起作用,称之但是只需一个索引起作用,称之为主索引主索引4)4)封锁索引文件封锁索引文件命令格式:命令格式:格式格式1 USE1 USE格式格式2 SET INDEX TO
45、2 SET INDEX TO格式格式3 CLOSE INDEX3 CLOSE INDEX阐明:明:格式格式1)1)可以封可以封锁表及其索引文件表及其索引文件格式格式2)2)与格式与格式3)3)功能一功能一样, ,可以封可以封锁.IDX.IDX文件与独文件与独立型复合索引文件立型复合索引文件, ,但不能封但不能封锁构造化复合索引构造化复合索引文件文件【例【例7.87.8】有一个表有一个表A1.DBFA1.DBF,按工,按工资建立建立单入口的入口的索引文件索引文件(.IDX(.IDX文件文件) ), 其文件名其文件名为GZ.IDXGZ.IDX。USE A1USE A1INDEX ON INDEX
46、ON 工工资 TO GZ TO GZ 6 records indexed 6 records indexedSET INDEX TO GZSET INDEX TO GZLISTLIST3.3.添加记录后的重新索引添加记录后的重新索引 命令格式:命令格式:REINDEXREINDEX命令功能:命令功能:重新建立已索引重新建立已索引过的索引文件。的索引文件。阐明:明:已有索引文件,在已有索引文件,在输入入记录前,并没有前,并没有翻开,需求再一次建立索引文件翻开,需求再一次建立索引文件运用运用该命令命令时,必需先翻开索引文件,必需先翻开索引文件数据检索数据检索 数据数据检索的命令:索的命令:顺序序检
47、索索LOCATELOCATECONTINUECONTINUE索引索引检索索FINDFINDSEEKSEEK1.1.查找命令查找命令FINDFIND命令格式:命令格式:FIND FIND 字符串数字字符串数字命令功能:命令功能:从表的索引文件中从表的索引文件中查找指定字符串或与数字相匹找指定字符串或与数字相匹配的配的记录找到:将找到:将记录指指针指向指向 函数函数FOUND()FOUND()前往前往逻辑真真值未找到:指向文件尾,未找到:指向文件尾,eof()eof()为真真 此此时的的记录号号为表的最大表的最大记录号号+1+1 函数函数FOUND()FOUND()前往前往逻辑假假值阐明:阐明:检
48、索索值可以是字符串和数字,但不能是表达可以是字符串和数字,但不能是表达式式假假设运用字符型内存运用字符型内存变量量检索索时,必需运用,必需运用宏代宏代换& &函数,以内存函数,以内存变量的内容量的内容检索索字符串不用定界符字符串不用定界符假假设字符串以空格字符串以空格 开开场,必需用定界符,必需用定界符【例【例7.97.9】查找字符型数据】查找字符型数据USE A1 INDEX XMUSE A1 INDEX XMFIND FIND 孟彬彬孟彬彬DISPLAYDISPLAYFIND FIND 孙孙DISPLAYDISPLAY2.2.检索命令检索命令 SEEK SEEK命令格式:命令格式:SEEK
49、SEEK表达式表达式命令功能:命令功能:在主控索引文件中将在主控索引文件中将记录指指针定位在索定位在索引关引关键字内容与命令中指定的表达式相字内容与命令中指定的表达式相匹配的第一个匹配的第一个记录SEEKSEEK能能实现快速快速查找信息找信息SEEKSEEK阐明:阐明:当表达式当表达式为字符型数据字符型数据时,必需用,必需用单引引号、双引号或方括号括起来号、双引号或方括号括起来假假设是内存是内存变量或量或 数数值型表达式型表达式时,不,不用定界符用定界符FINDFIND不能不能查找日期型数据,而找日期型数据,而SEEKSEEK可以可以 直接直接查找日期索引关找日期索引关键字的内容。字的内容。后
50、接表达式:后接表达式:用内存用内存变量可直接用量可直接用SEEKSEEK检索,不用加索,不用加宏交宏交换函数函数【例【例7.107.10】查找字符型数据找字符型数据利用前面以姓名利用前面以姓名为索引关索引关键字的索引文字的索引文件件USE A1USE A1SET INDEX TO XM SET INDEX TO XM SEEK SEEK 张 燕燕 DISPLAYDISPLAY顺序查找命令顺序查找命令(LOCATE(LOCATE与与CONTINUE)CONTINUE)直接直接查找命令,不用索引找命令,不用索引命令格式:命令格式:LOCATE LOCATE 范范围 FOR FOR条件条件命令格式:
51、命令格式: CONTINUE CONTINUE命令功能:命令功能:对当前表中的当前表中的记录进展展顺序序查找,找,查找指定找指定范范围内内满足条件的第一个足条件的第一个记录假假设有有满足条件的足条件的记录,将,将记录指指针定位在定位在满足条件的第一个足条件的第一个记录,并,并显示出当前示出当前记录的的记录号号Record=n)Record=n)阐明:阐明:用用LOCATELOCATE命令命令查询时,不用,不用对表表进展排序或建展排序或建立索引文件立索引文件假假设在表中没有在表中没有查找到找到满足条件的足条件的记录那么屏那么屏幕幕显示出示出“END OF LOCATE SCOPE“END OF
52、LOCATE SCOPE的文件的文件终了了标志信息志信息假假设LOCATE LOCATE 与与 CONTINUE CONTINUE结合运用,可以合运用,可以实现查询每一个每一个满足条件的足条件的记录不可再用不可再用LOCATE FORLOCATE FOR,否那么,否那么还是找到第一个是找到第一个记录。【例【例7.117.11】查找工找工资560.00560.00元的元的记录USE A1USE A1LOCATE ALL FOR LOCATE ALL FOR 工工资560.00560.00DISPLAYDISPLAYCONTINUECONTINUEDISPLAYDISPLAYCONTINUECON
53、TINUE7.5 7.5 统计命令统计命令求和命令求和命令(SUM) 求平均求平均值命令命令(AVERAGE) 计数命令数命令(COUNT)求求统计量命令量命令(CALCULATE) 分分类汇总命令命令 求和命令求和命令(SUM) (SUM) 命令格式命令格式: : SUM SUM范范围字段名表字段名表TOTO内存内存变量表量表| |数数组名名FORFOR条件条件命令功能:命令功能: 对当前表指定的数当前表指定的数值型字段型字段进展列向求和展列向求和【例【例7.127.12】以以B1.DBFB1.DBF表表为例,例,进展下面的展下面的统计操作:操作:(1)(1)将一切数将一切数值型字段求和型字
54、段求和(2)(2)将性将性别是女的是女的记录求和求和USE B1USE B1LISTLISTSUMSUM 5 records summed 5 records summedSUM FOR SUM FOR 性性别 女女 3 records summed 3 records summed求平均值命令求平均值命令(AVERAGE) (AVERAGE) 命令格式:命令格式:AVERAGEAVERAGE范范围字段名表字段名表TOTO内存内存变量表量表| |数数组名名FORFOR条件条件命令功能:命令功能:对当前表指定的数当前表指定的数值型字段列向求算型字段列向求算术平平均均值【例【例7.137.13】对
55、对B1.DBFB1.DBF表指定数表指定数值值型字段求算型字段求算术术平均平均值值,并把并把结结果送到果送到对应对应的内存的内存变变量中量中 USE B1 USE B1 AVERAGE AVERAGE 根本工根本工资资,年,年龄龄 TO C1 TO C1,C2C2 5 records average 5 records average ? C1 C1,C2C2 2348.00 27 2348.00 27计数命令计数命令(COUNT)(COUNT)命令格式:命令格式:COUNTCOUNT范范围FORFOR条件条件TOTO内存内存变量量| |数数组名名 命令功能:命令功能: 统计当前表中当前表中记
56、录的个数的个数*受受set deleted on|offset deleted on|off影响影响Set deleted onSet deleted on那么不数有那么不数有删除除标志的志的记录RECCOUNTRECCOUNT不受其影响不受其影响例:例:Use da &设该设该表中表中记录记录个数个数为为8,一个,一个逻辑删逻辑删除除Go 3DeleSet deleted onCount 7? Reccount() 8Set deleted offCount 8? Reccount 8 【例【例7.147.14】将将B1.DBFB1.DBF表中表中对性性别是男的是男的记录进展展统计,并且存,
57、并且存储到内存到内存变量中量中USE B1USE B1COUNT FOR COUNT FOR 性性别 男男 TO XB TO XB 2 records 2 records?XBXB 2 2求统计量命令求统计量命令(CALCULATE) (CALCULATE) 命令格式:命令格式:CALCULATECALCULATE数数值表达式范表达式范围FORFOR条件表达式条件表达式TOTO内存内存变量名表量名表|TO|TO数数组名名命令功能命令功能: :该命令是根据当前表中的各数命令是根据当前表中的各数值型字段型字段组成的数成的数值表达式表达式进展展计算算【例【例7.157.15】对表表B1.DBFB1.
58、DBF分分别统计记录个数、平均年个数、平均年龄、最小年、最小年龄,将,将结果存入果存入A1,A2,A3A1,A2,A3中,中,并并显示示变量的量的值。USE B1USE B1CALCULATE CNT(),AVG(CALCULATE CNT(),AVG(年年龄) ),MIN(MIN(年年龄) TO A1,A2,A3) TO A1,A2,A3? A1,A2,A3 ? A1,A2,A3 5 27 21 5 27 21分类汇总命令分类汇总命令 命令格式:命令格式: TOTAL ON TOTAL ON关关键字段字段 TO TO目的文件名范目的文件名范围FIELDSFIELDS字段名表字段名表FORFO
59、R条件条件命令功能:命令功能: 对已排序或已索引已排序或已索引过的表,按指定的表,按指定关关键字段一字段一样的那些的那些记录进展分展分组求和,求和,并将并将处置置结果存入到目的文件名指定的果存入到目的文件名指定的表中,其构造与有序文件构造一表中,其构造与有序文件构造一样。 阐明:生成新的表文件阐明:生成新的表文件sortsort(1)(1)假假设设没有任何没有任何选择项选择项,将按关,将按关键键字段分字段分组组,并并对对一切数一切数值值型字段求和生成一个新的表。型字段求和生成一个新的表。(2)(2)有范有范围围短短语时语时,将按指定范,将按指定范围围内的内的记录进记录进展分展分组组求和。求和。
60、(3)(3)有有FIELDSFIELDS字段名表短字段名表短语时语时,将按指,将按指定的数定的数值值型字段分型字段分组组求和。求和。(4)(4)有有FORFOR条件短条件短语时语时,将,将对满对满足条件的足条件的那些那些记录记录的数的数值值型字段分型字段分组组求和。求和。【例【例7.167.16】将将B1.DBFB1.DBF表按性表按性别分分组,求工,求工资总和和第一步:先第一步:先显示一下示一下B1.DBFB1.DBF表的内容。表的内容。USE B1USE B1LISTLIST第二步:建立索引文件,关第二步:建立索引文件,关键字段字段为性性别。INDEX ON INDEX ON 性性别 TO
61、 B1X TO B1XLISTLIST第三步:第三步:计算工算工资总和,构成一个新的表和,构成一个新的表HB.DBFHB.DBF,其构造与,其构造与B1B1表中的构造一表中的构造一样TOTAL ON TOTAL ON 性性别 TO HB TO HBUSE HBUSE HBLISTLIST7.6 7.6 命令文件的建立与运转命令文件的建立与运转程序运用的方式:程序运用的方式:导游方式游方式菜一方式菜一方式命令方式:命令方式:命令窗口的命令窗口的显示示Ctrl+F2Ctrl+F2程序程序执行方式:行方式:将多条命令按一定的构造将多条命令按一定的构造编写成一个程写成一个程序序.prg.prg然后命令
62、机器去然后命令机器去执行行这个程序个程序(do (do 命令命令) )根本根本逻辑构造:构造:顺序构造序构造条件分支构造条件分支构造循循环构造构造命令文件命令文件由一系列由一系列VFPVFP命令命令组成的程序成的程序普通以某种方式建立并存入磁普通以某种方式建立并存入磁盘中中运用运用时再再调出来出来执行行两种方式建立:两种方式建立: 用用VFPVFP的文本的文本编辑程序建立命令文件程序建立命令文件 采用全屏幕采用全屏幕编辑方式方式普通的文本普通的文本编辑程序程序如:如:记事本事本命令文件命令格式:命令格式: MODIFY COMMAND MODIFY COMMAND 文件名文件名 命令功能:命令
63、功能:生成和生成和编辑命令文件命令文件文件名中假文件名中假设未指定未指定扩展名,系展名,系统认定定为.PRG.PRG文件文件 【例【例7.177.17】在在D D盘上建立一个上建立一个查看看DA1DA1表构造和内容的命令文件表构造和内容的命令文件 MODIFY COMMAND W1 MODIFY COMMAND W1 CLEAR CLEAR USE stu USE stu LIST STRUCTURE LIST STRUCTURE wait wait LIST LIST USE USE存存盘:按按CTRL+WCTRL+W建立了一个建立了一个W1.PRG W1.PRG 的命令文件的命令文件命令文
64、件的运转命令文件的运转 在在VFP VFP 命令窗口中,用命令窗口中,用DODO命令运命令运转命令文件命令文件命令格式:命令格式:DODO命令文件名命令文件名WITHWITH发送参数表送参数表阐明:明:执行行DODO命令,首先将指定的文件命令,首先将指定的文件读到内存中到内存中后逐条地后逐条地执行行该文件中的命令文件中的命令编程中的辅助命令编程中的辅助命令 1.1.命令命令执执行行结结果果输输出命令出命令 命令格式:命令格式:SET TALK ONSET TALK ONOFFOFF 命令功能:命令功能:选择选择ONON形状形状时时,命令的操作,命令的操作结结果果显显示或示或打印打印选择选择OF
65、FOFF形状那么命令形状那么命令结结果不果不显显示示缺省缺省时为时为ONON形状形状2.2.命令行输出命令命令行输出命令命令格式:命令格式: SET ECHO ON SET ECHO ONOFFOFF命令功能:命令功能:选择ONON形状形状时,在屏幕或打印机上,在屏幕或打印机上输出命令行出命令行及运及运转结果果选择OFFOFF形状只形状只输出运出运转结果,不果,不输出命令本出命令本身身缺省缺省为OFFOFF形状形状命令格式:命令格式:SET PRINT ONSET PRINT ONOFFOFF命令功能:命令功能:选择ONON形状形状时,接通打印机,接通打印机选择OFFOFF形状形状时,断开打印
66、机,断开打印机缺省缺省值为OFFOFF形状形状3.3.数据的输出语句数据的输出语句命令格式:命令格式:SET DEVICE TO PRINTSET DEVICE TO PRINTSCREENSCREEN命令功能:命令功能: 将将SAYSAY命令的命令的结果送到打印机或屏幕。果送到打印机或屏幕。阐明:明:有有PRINTPRINT项,输出便出便发往打印机往打印机但但执行行该语句后并没有启句后并没有启动打印机打印机须经过按按CTRL+PCTRL+P或或输入入SET PRINT ONSET PRINT ON命令方命令方可使打印机启可使打印机启动假假设选用用SCREENSCREEN选择项,那么,那么输出
67、出转向屏幕向屏幕命令文件终止命令命令文件终止命令(CANCEL)(CANCEL)命令格式:命令格式: CANCEL CANCEL恣意字符恣意字符命令功能:命令功能:本命令本命令终止命令文件的止命令文件的执行,回到行,回到VFPVFP提提示符下并封示符下并封锁一切翻开的文件一切翻开的文件 恣意字符可用于恣意字符可用于书写注写注释7.7 程序构造程序构造顺序构造序构造分支构造分支构造循循环构造构造顺序构造顺序构造顺序依次序依次执行行按照按照语句句陈列的先后列的先后顺序,一条接一条序,一条接一条地依次地依次执行。行。顺序构造是程序中最根本的常用的构造。序构造是程序中最根本的常用的构造。【例【例7.1
68、97.19】顺序构造程序序构造程序: :求求 1+2+3+4 1+2+3+4 的的结果果SET TALK OFFSET TALK OFFX=0X=0X=X+1X=X+1X=X+2X=X+2X=X+3X=X+3X=X+4X=X+4? X? XCANCELCANCEL运运转这一程序一程序时,系,系统逐条逐条执行各行各语句,句,求行求行1+2+3+41+2+3+4之和,最后之和,最后显示和示和为1010【例【例7.207.20】编一个程序,将一个程序,将华氏温度氏温度F=68F=68度度变换成成摄氏氏温度温度C C,并将,并将结果果显示出来。示出来。计算公式算公式为:C=5(F-32)9 C=5(F
69、-32)9 程序如下:程序如下:SET TALK OFFSET TALK OFFF=68F=68C=5*(F-32)/9C=5*(F-32)/9? “? “摄氏:氏: + STR(C, 4) + “ + STR(C, 4) + “度度“ + “ + , +; +; 华氏:氏:“ + STR(F, 4) + “ + STR(F, 4) + 度度 CANCELCANCEL运运转结果:果: 分支构造分支构造表达表达计算机的算机的逻辑判判别才干才干根据根据给定的不同定的不同逻辑条件,条件,转向向执行不行不同的程序同的程序语句,句,进展相展相应的的处置。置。这些不同的些不同的转向就构成了分支构造向就构成
70、了分支构造分分类:简单分支分支语句句(IF(IFENDIF) ENDIF) 选择分支分支语句句(IF(IFELSEELSEENDIF)ENDIF)构造分支构造分支do case-endcasedo case-endcase简单分支语句简单分支语句(IF(IFENDIF) ENDIF) 语句格式:句格式:IF IF 条件表达式条件表达式 语句句组ENDIFENDIF语句功能:句功能: 当条件当条件为真真时,执行行IFIF和和ENDIFENDIF之之间的的语句行序列句行序列当条件当条件为假假时,执行行ENDIFENDIF后面的后面的语句句 简单分支流程分支流程图 语句体1判别为真为假【例【例7.2
71、17.21】显示示DA.DBFDA.DBF中有无工中有无工资低于低于650650元的元的记录程序如下:程序如下:USE DAUSE DALOCATE FOR LOCATE FOR 工工资 650 6500000IF .NOT.EOF( )IF .NOT.EOF( ) DISPLAY DISPLAYENDIFENDIF选择分支语句选择分支语句(IF(IFELSEELSEENDI ENDI F)F)语句格式:句格式:IFIF条件表达式条件表达式 语句句组1 1ELSEELSE 语句句组2 2ENDIFENDIF语句功能:句功能:当条件当条件为真真时,先,先执行行语句句组1 1然后再去然后再去执行行
72、ENDIFENDIF后面的后面的语句句当条件当条件为假假时,先,先执行行语句句组2 2后再后再转去去执行行ENDIFENDIF后面的后面的语句句语句体语句体判别为真为假【例【例7.227.22】某地至北京的某地至北京的邮邮路里程路里程为为1043KM,经过邮经过邮政局政局向北京城区寄交向北京城区寄交特快特快专递专递邮邮件,件,应应在在24小小时时内内到达,到达,计费规计费规范每克范每克为为0.05元,但超越元,但超越100克后,克后,超出数每克超出数每克为为0.02元。元。试编试编写程序写程序计计算算邮费邮费。 计计算公式如下:算公式如下:0.05W 当当 W100 克克0.05100+0.0
73、2(W-100)当当 W100 克克SET TALK OFFSET TALK OFFCLEAR CLEAR INPUT INPUT 请输请输入入邮邮件的分量件的分量为为: TO W TO WIF W=100IF W=100 X=0.05*W X=0.05*WELSEELSE X=0.05*100+0.02*(W-100) X=0.05*100+0.02*(W-100)ENDIFENDIF? “? “邮邮件的分量件的分量为为+STR(W,6,2)+“+STR(W,6,2)+“克,克,其其邮费为邮费为:+STR(X,6,2)+STR(X,6,2)+元元 CANCELCANCEL运转IFIF条件语句
74、的嵌套条件语句的嵌套 第一层ENDIFIF 条件ELSE语句组1ENDIFIF 条件ELSE语句组3第三层ENDIFIF 条件ELSE语句组2第二层阐明:阐明:有有IFIF必有必有ENDIFENDIF,成,成对出出现。每一每一层的的IFIF和和ELSEELSE及及ENDIFENDIF必需一一必需一一对应。IF-ELSE-ENDIF IF-ELSE-ENDIF 每个命令各占一行,不能每个命令各占一行,不能在同一行出在同一行出现。构造分支语句构造分支语句(DO(DOCASECASEEND CASE)END CASE)选择的方案的方案较多多时,用,用选择判判别语句句 DO DO CASECASEEN
75、DCASEENDCASE 语句格式:语句格式:DO CASEDO CASE CASE CASE 条件表达式条件表达式1 1 语语句句组组1 1 CASE CASE 条件表达式条件表达式2 2 语语句句组组2 2 : OTHERWISEOTHERWISE 语语句句组组 N NENDCASEENDCASE语句功能:语句功能:从从头依次依次查看每一个看每一个CASECASE的条件表达式,只需的条件表达式,只需某一个条件表达式的某一个条件表达式的值为真,就真,就执行行该条件下条件下的的语句句组。其他条件下的其他条件下的语句句组都跳都跳过去,接下来去,接下来执行行ENDCASEENDCASE后面的后面的
76、语句。句。OTHERWISEOTHERWISE是一个可是一个可选项,假,假设一切的条件都一切的条件都不成立,那么不成立,那么执行行OTHERWISEOTHERWISE后面的后面的语句。句。假假设没有可没有可选项OTHERWISEOTHERWISE,那么一切的条件,那么一切的条件都不成立都不成立 ,接着,接着执行行ENDCASEENDCASE后面的后面的语句。句。 阐明:阐明:如有两个或两个以上的条件如有两个或两个以上的条件为真,那么只真,那么只执行第一行第一个条件表达式个条件表达式值为真的真的 CASE CASE后的后的语句句组,执行完行完后,即后,即转去去执行行ENDCASEENDCASE之
77、后的之后的语句,而不会再去句,而不会再去判判别下一个下一个CASECASE中的条件中的条件DO CASEDO CASE中的中的CASECASE条件表达式个数不限条件表达式个数不限每个每个CASECASE条件表达式之条件表达式之间是独立的是独立的DO CASEDO CASE和和CASECASE条件表达式条件表达式1 1之之间不允不允许出出现任任何何语句句DO CASE DO CASE 和和 ENDCASE ENDCASE必需成必需成对出出现 循环是指按照给定的条件去反复执循环是指按照给定的条件去反复执行一段具有特定功能的程序行一段具有特定功能的程序循环构造程序设计DO WHILEENDDODO
78、WHILEENDDO循循环环 语句格式:句格式: DO WHILE DO WHILE条件表达式条件表达式 语句句组 ENDDO ENDDO语句功能:句功能:当条件表达式的当条件表达式的值为真真时,执行行语句句组。否那么否那么执行行ENDDOENDDO后面的后面的语句句 阐明:阐明: DO WHILE DO WHILE 和和 ENDDO ENDDO之之间间的的语语句称句称为为循循环环体体一条一条语语句句一一组语组语句句一个一个VFPVFP子程序子程序ENDDOENDDO是循是循环终环终止止语语句,循句,循环环以此以此为终为终点点 循循环语环语句本身不会修正句本身不会修正执执行的条件行的条件要在循
79、要在循环环体内体内设设置修正循置修正循环环条件的条件的语语句句否那么会出否那么会出现现死循死循环环求表达式值语句体修正条件YNENDDO后语句循环语句流程图 【例【例7.237.23】以以显示方式示方式输出出1 1到到1010的数字的数字SET TALK OFFSET TALK OFFCLEARCLEARI I1 1DO WHILE I = 10DO WHILE I = 10 ? I I I II I1 1ENDDOENDDO语句句I II I1 1就是用来修正循就是用来修正循环条件条件【例【例7.247.24】程序如下:程序如下:STORE 0 TO C, WSTORE 0 TO C, WU
80、SE ZGDAUSE ZGDADO WHILE .NOT.EOF( )DO WHILE .NOT.EOF( ) DO CASE DO CASE CASE ( CASE (年年龄45).AND.45).AND.职称称=讲师 W=W+1 W=W+1 CASE ( CASE (年年龄45) .AND.45) .AND.职称称=副教副教授授 C=C+1 C=C+1 ENDCASE ENDCASE SKIP SKIPENDDOENDDO? ? 人数人数为: ,W W? ? 人数人数为: ,C CSET TALK ONSET TALK ONCANCELCANCEL请解解读该段程序,段程序,阐明其功能?明其
81、功能?转跳语句转跳语句(LOOP)(LOOP)在在DO WHILEDO WHILEENDDO ENDDO 内提供了一条短路内提供了一条短路语句,可以起到句,可以起到转跳作用。跳作用。语句格式:句格式:LOOPLOOP语句功能:句功能:中断本次循中断本次循环体的体的执行行跳回到跳回到DO WHILEDO WHILE的开的开场处,反复条件的,反复条件的判判别。阐明:阐明:LOOPLOOP语语句一定要用在句一定要用在DO WHILEDO WHILE的循的循环环体内才有意体内才有意义义LOOPLOOP语语句使它后面的句使它后面的语语句在本次循句在本次循环环时时不被不被执执行行在具有多重在具有多重DO
82、WHILEDO WHILEENDDOENDDO嵌套的程嵌套的程序中,序中,LOOPLOOP只前往到与它本身所只前往到与它本身所处处的的内内层层循循环环体相匹配的体相匹配的 DO WHILE DO WHILE语语句句【例【例7.257.25】工工资小于小于160160元的添加元的添加1010元元SET TALK OFFSET TALK OFFUSE DA2USE DA2DO WHILE .NOT.EOF( )DO WHILE .NOT.EOF( ) IF IF 工工资160160 REPLACE REPLACE 工工资 WITH WITH 工工资1010 SKIP SKIP LOOP LOOP
83、ENDIF ENDIF SKIP SKIPENDDOENDDO请解解读该段程序,段程序,阐明每一个命令的功能?明每一个命令的功能?【例【例7.267.26】求求0 0100100之间奇数之和之间奇数之和 SET TALK OFF SET TALK OFF X=0 X=0 Y=0 Y=0 DO WHILE X100 DO WHILE X100 IF N100 EXIT EXIT ENDIF ENDIF S=S+N S=S+N N=N+1 N=N+1ENDDOENDDO? “S=? “S=,S,S运转多重循环中多重循环中LOOPLOOP和和EXITEXIT的作用域的作用域 循循环的嵌套的嵌套: :
84、假假设在一个循在一个循环程序的循程序的循环体内又包含体内又包含着另一些循着另一些循环,就构成了多,就构成了多层次次( (多重多重) )循循环LOOPLOOP和和EXITEXIT语句放在哪一个句放在哪一个层次,它就次,它就只能在那个只能在那个层次中起作用,次中起作用,这个个层次就次就是它的作用域是它的作用域课本本P148P148DO WHILE DO WHILE LOOP EXIT ENDDO LOOP EXITENDDOFORENDFORFORENDFOR循循环环 语句格式:句格式: FOR FOR 循循环变量量= =初初值TOTO终值STEPSTEP步步长 命令序列命令序列 LOOPLOOP
85、 EXITEXIT ENDFOR ENDFOR语句功能:句功能:循循环过程是首先将初程是首先将初值赋于循于循环变量,每当量,每当执行一次循行一次循环,循,循环变量添加一个步量添加一个步长,直到循,直到循环变量量值大于大于终值时终了循了循环LOOPLOOP语句用于句用于转到到FORFOR语句句继续执行循行循环EXITEXIT用于跳出循用于跳出循环,转到到ENDFORENDFOR后面命令后面命令执行行例例1、输输出几个星号?出几个星号?For n=1 to 11 step 2 ? “*2、输输出几个星号?出几个星号?For n=1 to 10 -1 ? “*3、输输出几个星号?出几个星号?For
86、n=1 to 10 ? “*请解解读各段程序,各段程序,阐明其功能?明其功能?【例【例7.287.28】最大值】最大值找出表中年找出表中年龄最大的最大的记录SET TALK OFFSET TALK OFFUSE ZGDAUSE ZGDAMAX=MAX=年年龄J=RECCOUNT() J=RECCOUNT() 指表中所含的指表中所含的记录的的总数数FOR I=1 TO JFOR I=1 TO J IF MAX IF MAX 年年龄 MAX= MAX=年年龄 RSC=RECNO() RSC=RECNO() ENDIF ENDIF SKIP SKIPENDFORENDFORUSEUSE? RSC?
87、RSC请解解读该段程序,段程序,阐明每一个命令的功能?明每一个命令的功能?SCANENDSCANSCANENDSCAN循循环环 语句格式:句格式: SCAN SCAN范范围FORFOR条件表达式条件表达式 命令序列命令序列 LOOPLOOP EXITEXIT ENDSCAN ENDSCAN语句功能:语句功能:SCANSCAN的功能是在表中挪的功能是在表中挪动动并重并重执执行命令序列行命令序列循循环环开开场时记录场时记录指指针针指向指向满满足条件的第一个足条件的第一个记录记录执执行到行到ENDSCANENDSCAN时时,记录记录指指针针指向第二个指向第二个满满足足条件条件记录记录控制又回到控制又
88、回到SCANSCAN循循环环的开的开场场,直到一切,直到一切记录记录处处置完,循置完,循环环也就也就终终了了了了【例【例7.297.29】改为】改为do whiledo while查找找职称称为“讲师的的记录,计算算满足条件的足条件的记录个数工个数工资的的总和和SET TALK OFFSET TALK OFFUSE ZGDAUSE ZGDAS=0S=0N=0N=0SCAN FOR SCAN FOR 职称称=讲师 DISPLAY DISPLAY S=S+ S=S+工工资 N=N+1 N=N+1ENDSCANENDSCANUSEUSERETURNRETURN请解解读该段程序,段程序,阐明每一个命令
89、的功能?明每一个命令的功能?【例【例7.307.30】 改为改为do whiledo while用用SCANENDSCANSCANENDSCAN命令命令显示表的示表的记录。USE ZGDAUSE ZGDASCANSCAN DISPLAY DISPLAYENDSCANENDSCANRETURNRETURN【例【例7.317.31】用】用FOR.ENDFORFOR.ENDFOR命令命令显示表的示表的记录USE ZGDAUSE ZGDAFOR I=1 TO 5FOR I=1 TO 5 GO I GO I DISPLAY DISPLAYENDFORENDFORRETURNRETURN7.8 7.8 过
90、程及其调用过程及其调用 过程程程序程序设计时,经常有些运算或常有些运算或处置程序是一置程序是一样的的可以将反复出可以将反复出现的或能的或能单独运用的程序写成可供其他独运用的程序写成可供其他程序程序调用的独立程序段称用的独立程序段称为子程序,在子程序,在VFPVFP中也称中也称为过程。程。过程与主程序程与主程序同同样的方法建立的方法建立 、运、运转同同样的文件方式存放在磁的文件方式存放在磁盘上上有一有一样的的扩展名展名(.PRG)(.PRG)独一不同的,一个独一不同的,一个过程中至少程中至少应有一条前往有一条前往语句句前往语句前往语句语句格式:句格式:RETURN RETURN TO MASTE
91、RTO MASTER 语句功能:句功能:终了了过程的运程的运转使使执行前往行前往调用它的主程序或最高一用它的主程序或最高一级主主程序中程序中 阐明:阐明:TO MASTERTO MASTER是在是在过程嵌套中运用程嵌套中运用无此无此项时,回到,回到调用它的原用它的原处去;去;有此有此项时,执行回到最高一行回到最高一级主程序主程序假假设直接运直接运转一个程序,一个程序,执行到行到RETURNRETURN时,那么前往到那么前往到VFPVFP的命令形状;的命令形状;在命令文件中用在命令文件中用DODO语句来运句来运转另一个命令文另一个命令文件,件,这就是就是过程程调用;用;被被调用的命令文件必需有用
92、的命令文件必需有RETURNRETURN语句,以前句,以前往往调用它的主程序中。用它的主程序中。过程文件过程文件 过程文件是一种包含有程文件是一种包含有过程的命令文件,可以包程的命令文件,可以包容容128128个个过程;程;过程文件被翻开后,系程文件被翻开后,系统就能找到就能找到该文件所包容文件所包容的各个的各个过程所在位置;程所在位置;过程文件也是命令文件,建立方法与命令文件一程文件也是命令文件,建立方法与命令文件一样,扩展名也是展名也是.PRG.PRG;一个程序可以有多个一个程序可以有多个过程文件,但同一程文件,但同一时间只能只能翻开一个翻开一个过程文件;程文件;每个独立子每个独立子过程的
93、开程的开场应该用用PROCEDURE PROCEDURE 过程程名名进展展标识;过程名是以字母开程名是以字母开头的字符串的字符串( (包含字母、数字及包含字母、数字及下划下划线) ),最多可达,最多可达8 8个字符个字符1.1.过程文件的建立过程文件的建立语句格式:句格式:PROCEDURE PROCEDURE 子子过程名程名 语句句组RETURNRETURN 2. 2.翻开过程文件翻开过程文件语句格式:句格式: SET PROCEDURE TO SET PROCEDURE TO过程文件名程文件名语句功能:句功能:翻开翻开过程文件名所指定的程文件名所指定的过程文件程文件阐明:明:调用用过程文件
94、仍运用程文件仍运用DODO语句句3.3.封锁过程文件封锁过程文件在主程序在主程序终了之前运用下面了之前运用下面语句封句封锁过程文件程文件语句格式:句格式: CLOSE PROCEDURE CLOSE PROCEDURE语句功能:句功能:封封锁已翻开的已翻开的过程文件。程文件。带参数的过程调用带参数的过程调用 允允许在在调用命令和被用命令和被调用用过程中程中设置数量一置数量一样,类型一致的参数,按其型一致的参数,按其陈列列顺序一一序一一对应;调用命令将一系列参数的用命令将一系列参数的值传送送给被被调用程用程序中的序中的对应参数;参数;被被调用程序运用程序运转终了了时,再将相,再将相应参数的参数的
95、值( (能能够已被改已被改动) )前往;前往;这种方法可用种方法可用带参数参数传送送语句来句来实现。带参数的过程调用带参数的过程调用语句格式:句格式: DO DO文件名文件名WITHWITH发送参数表送参数表语句功能:句功能:带参数参数调用普用普经过程和程和过程文件中的程文件中的过程及运用程序程及运用程序 阐明:阐明:参数可以是常量、参数可以是常量、变量和表达式量和表达式被被调用的程序中第一个可用的程序中第一个可执行的行的语句必需句必需是参数是参数语句,参数句,参数语句有以下格式:句有以下格式: PARAMETERS PARAMETERS接受参数表接受参数表语句功能:句功能:接受接受调用命令中相用命令中相应参数的参数的值,并在,并在调用用终了后前往了后前往对应参数的参数的计算算值 阐明:明:参数表必需与参数表必需与调用命令中的参数相匹配。用命令中的参数相匹配。参数参数语句与句与带参数参数调用用语句必需配合运用,句必需配合运用,成成对出出现习题习题 P.166 一、单项选择题一、单项选择题二、思索题不用交二、思索题不用交三、上机操作题三、上机操作题