《第3章 自由表操作.ppt》由会员分享,可在线阅读,更多相关《第3章 自由表操作.ppt(113页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、安阳师范学院安阳师范学院Visual FoxPro程序设计公共计算机教学部公共计算机教学部安阳师范学院安阳师范学院安师公共计算机教学部 高国伟第 3 章 自由表操作 3.1 表的建立 3.2 表的修改 3.3 表的使用 3.4 表的维护3.5 多表操作安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3.1 表的建立输入表的数据输入表的数据建立表的结构建立表的结构安阳师范学院安阳师范学院安师公共计算机教学部 高国伟 建建表表时时,二二维维表表的的列列标标题题将将成成为为表表的的字字段段,标标题题栏栏下下方方的的内内容容输输入入到到表表中中成成为为表表的的数数据据,每每一一行行数数据据称称为为
2、表表的的一一个个记记录。录。建表时要先确定以下两个要素:建表时要先确定以下两个要素:(1 1)表文件名;)表文件名;(2 2)表结构,各字段的字段名、字段类型和字段宽度)表结构,各字段的字段名、字段类型和字段宽度。1.1.表文件名表文件名 表表文文件件名名可可使使用用不不超超过过255255个个字字符符(字字母母、汉汉字字、数数字字或或下下划划线线)的的名名称称,第第一一个个字字符符必必须须是是字字母母、汉汉字字或或下下划划线线。表文件的扩展名为表文件的扩展名为.dbf.dbf或或.DBF.DBF,例如:建立一个自由表,可以命名为例如:建立一个自由表,可以命名为“人事表人事表”或或“rsbrs
3、b”。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟2.表结构 二二维维表表的的各各列列称称为为字字段段,表表的的结结构构描描述述通通过过对对表表中中各各个个字字段的属性定义来实现。段的属性定义来实现。字字段段的的属属性性描描述述内内容容包包括括字字段段名名称称、字字段段类类型型和和字字段段宽宽度度,对于数值型字段还包括小数位数。对于数值型字段还包括小数位数。(1)(1)字段名字段名 字字段段的的命命名名规规则则与与内内存存变变量量的的命命名名规规则则类类似似,以以字字母母(汉汉字字)或或下下划划线线开开头头,由由字字母母、数数字字和和下下划划线线组组成成,但但最最多多1010个字符。个
4、字符。注意,同一个表中的字段名不能相同。注意,同一个表中的字段名不能相同。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟(2)(2)字段类型字段类型 Visual FoxProVisual FoxPro定义了定义了1313种字段数据类型,常用的字段类种字段数据类型,常用的字段类型有型有1111种,见下表所示。种,见下表所示。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟(3)(3)字段宽度字段宽度 字字符符型型、数数值值型型和和浮浮动动数数值值型型等等三三种种类类型型的的字字段段宽宽度度可可以以改改变变,其其它它类类型型字段有唯
5、一确定的宽度,不能改变。字段有唯一确定的宽度,不能改变。在建立表结构时,应根据要存储数据的实际需要设定合适的宽度。在建立表结构时,应根据要存储数据的实际需要设定合适的宽度。字符型字段宽度定义时应考虑所存放字符串的最大长度字符型字段宽度定义时应考虑所存放字符串的最大长度.例例如如,描描述述人人的的姓姓名名字字段段,考考虑虑到到中中国国人人的的姓姓名名绝绝大大多多数数为为三三个个汉汉字字,再顾及到少数人的四个汉字,可以取姓名字段的宽度为再顾及到少数人的四个汉字,可以取姓名字段的宽度为8 8。在在定定义义数数值值形形和和浮浮动动数数值值型型字字段段宽宽度度时时,应应考考虑虑到到正正负负号号和和小小数
6、数点点,带小数的数值型字段宽度计算如下:带小数的数值型字段宽度计算如下:字段宽度字段宽度=1=1(正负号)(正负号)+整数位数整数位数+1+1(小数点)(小数点)+小数位数小数位数 例例如如,数数值值型型字字段段宽宽度度为为7 7,小小数数位位数数为为2 2位位,则则能能存存放放的的最最大大数数值值为为9999.999999.99,最小数值为,最小数值为-999.99-999.99。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟4.小数位数有小数的字段:数值型浮点型双精度型字段宽度=整数部分宽度+小数点1位+小数位宽度如小数位数不为0,则小数位数至少要比整个字段宽度小2安阳师范学院安阳师
7、范学院安师公共计算机教学部 高国伟一、建立表的结构设计表的结构设计表的结构建立表的结构建立表的结构设计表的结构主要是确定各个字段的字段名、字段类型、字段宽度以及小数位数等。根据表的用途来设计表的结构。Create 或使用“文件”菜单中的“新建”命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、输入表的数据输入方法输入方法字符型字段字符型字段直接输入字符串的内容直接输入字符串的内容数值型字段数值型字段直接输入数值直接输入数值日期型字段日期型字段默认按默认按mm/dd/yyyy格式输入格式输入日期时间型字段日期时间型字段默认按默认按mm/dd/yyyyhh:mm:ssa|p格式输入格式输
8、入逻辑型字段逻辑型字段输入输入T、t、Y、y表示真;输入表示真;输入F、f、N、n表示假表示假货币型字段货币型字段直接输入数值直接输入数值备注型字段备注型字段双击双击memo,在弹出的编辑窗口中直接输入,在弹出的编辑窗口中直接输入通用型字段通用型字段双击双击gen,在弹出的编辑窗口中通过,在弹出的编辑窗口中通过“编辑编辑”菜菜单中的单中的“粘贴粘贴”命令或命令或“插入对象插入对象”命令输入命令输入安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、输入表的数据例例1建立表Student安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3.2 表的修改记录的添加记录的添加表中数据的显示与修
9、改表中数据的显示与修改表结构的显示与修改表结构的显示与修改打开和关闭表打开和关闭表记录的删除与恢复记录的删除与恢复安阳师范学院安阳师范学院安师公共计算机教学部 高国伟一、打开和关闭表打开打开关闭关闭Use exclusive|shared 或使用“文件”菜单中的“打开”命令Use 或Close all或Clear all安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、表结构的显示与修改显示显示修改修改Display structure 或List structureModify structure或使用“显示”菜单中的“表设计器”命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟
10、二、表结构的显示与修改例例 2显示表 student 的结构例例3将表 student 的学号字段的宽度修改为 9 个字符 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显示与修改1记录指针的定位2显示记录3修改记录安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显示与修改记录指针的定位记录指针的定位绝对定位绝对定位绝对定位是指直接将记录指针移动到某一条记录上。相对定位相对定位相对定位是指将记录指针相对于当前记录向前或向后移动。条件定位条件定位条件定位是指将记录指针移动到满足条件的记录上。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显
11、示与修改记录指针的定位记录指针的定位绝对定位绝对定位 或Go|Goto 或Go|Goto top|bottom 或“显示”“浏览”“表”“转到记录”“第一个”“最后一个”“记录号”安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显示与修改例例 4将表student的记录指针定位到4号记录上例例5将表student的记录指针定位到最后一条记录上安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显示与修改记录指针的定位记录指针的定位Skip 数值表达式或“显示”“浏览”“表”“转到记录”“上一个”“下一个”相对定位相对定位条件定位条件定位Locate for 范围
12、 或“显示”“浏览”“表”“转到记录”“定位”安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显示与修改例例 6打开表 student 后使用相对定位命令将记录指针定位到 4号记录上例例7将表 student 的记录指针定位到第一个女同学的记录上安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显示与修改显示记录显示记录 List 范围 for while fields to printer|to file offDisplay 范围 for while fields to printer|to file off或安阳师范学院安阳师范学院安师公共计算机教学部
13、高国伟三、表中数据的显示与修改例例7显示表student中的所有记录 例例8显示表student中所有女生的记录例例9显示表student中所有女生的记录,只显示学号、姓名、性别和入学成绩四个字段安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、表中数据的显示与修改修改记录修改记录Edit|change fields for 编辑修改编辑修改浏览修改浏览修改Browse fields for 或“显示”“浏览”替换修改替换修改Replace with,with 范围 for while 或“显示”“浏览”“表”“转到记录”“替换字段”安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三
14、、表中数据的显示与修改例例 10将表student中张成的入学成绩修改为576分例例11将表student中所有女生的入学成绩加10分安阳师范学院安阳师范学院安师公共计算机教学部 高国伟四、记录的添加在表尾追加新记录在表尾追加新记录插入新记录插入新记录Append blankInsert before blank安阳师范学院安阳师范学院安师公共计算机教学部 高国伟四、记录的添加例例 12在表student的尾部追加一条空记录例例13在表student的3号记录之前插入一条空记录安阳师范学院安阳师范学院安师公共计算机教学部 高国伟五、记录的删除与恢复1记录的逻辑删除与恢复2记录的物理删除安阳师范
15、学院安阳师范学院安师公共计算机教学部 高国伟五、记录的删除与恢复记录的逻辑删除与恢复记录的逻辑删除与恢复Delete 范围 for while 或“显示”“浏览”“表”“删除记录”逻辑删除记录逻辑删除记录恢复记录恢复记录Recall 范围 for while 或“显示”“浏览”“表”“恢复记录”安阳师范学院安阳师范学院安师公共计算机教学部 高国伟五、记录的删除与恢复例例 12逻辑删除表student中所有性别不为男的学生的记录例例13将表student中所有女生的记录恢复为正常记录安阳师范学院安阳师范学院安师公共计算机教学部 高国伟物理删除已被逻辑删除的记录物理删除已被逻辑删除的记录五、记录的
16、删除与恢复记录的物理删除记录的物理删除物理删除所有记录物理删除所有记录Pack或“显示”“浏览”“表”“彻底删除”Zap 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟五、记录的删除与恢复例例 12 将表student中已被逻辑删除的记录彻底删除例例13彻底删除表student中的所有记录安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3.3 表的使用统计统计查询查询索引索引排序排序安阳师范学院安阳师范学院安师公共计算机教学部 高国伟一、排序Sort on /a|/d/c,/a|/d/c to 范围 for while fields 例例27对表 student 按性别降序排列,性别
17、相同的再按出生日期升序排列,将已排序的记录输出到表 xuesheng 中排序排序安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引索引类型索引类型1索引文件类型索引文件类型2建立索引建立索引3使用索引使用索引4更新索引更新索引5删除索引删除索引6安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引索引类型索引类型索引文件类型索引文件类型普通索引、唯一索引、候选索引和主索引单索引文件和复合索引文件,复合索引文件又可分为结构复合索引文件和非结构复合索引文件 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引在表设计器中建立索引在表设计器中建立索引安阳师范学院安阳师范学院
18、安师公共计算机教学部 高国伟二、索引使用使用Index命令建立索引命令建立索引Index on to for unique additiveIndex on tag for ascending|descending unique|candidate additive或Index on tag of for ascending|descending unique additive或安阳师范学院安阳师范学院安师公共计算机教学部 高国伟索引文件类型索引文件类型n单索引文件(索引文件名任意,扩展名为idx)Index on to 例:Index on a to cc (cc.idx)n复合索引文件(索
19、引文件名任意,扩展名为cdx)Index on tag of 例:index on e tag ee1 of eea (eea.cdx)n结构复合索引文件(索引文件名与表文件名同名,扩展名为cdx)Index on tag 例:index on a tag aa (student.cdx)返回i安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引例例30按性别的升序为表student建立普通索引例例31按学号的升序为表student建立候选索引安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引使用索引使用索引打开索引文件打开索引文件用 Index 命令建立成功后自动打开 或U
20、se index 或Set index to additive Set index to 关闭索引文件关闭索引文件 要要利利用用索索引引查查询询,必必须须同同时时打打开开表表与与索索引引文件。文件。任任何何时时候候只只有有一一个个索索引引文文件件或或复复合合索索引引文文件件的的一一个个索索引引标标识识能能起作用。起作用。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引使用索引使用索引设置主控索引设置主控索引取消主控索引取消主控索引Set order to 或Set order to 或Set order to tag of Set order to主控索引文件:当前起作用主控索引文
21、件:当前起作用主控索引文件:当前起作用主控索引文件:当前起作用的索引文件。的索引文件。的索引文件。的索引文件。主控索引:当前起作用的索主控索引:当前起作用的索主控索引:当前起作用的索主控索引:当前起作用的索引标识。引标识。引标识。引标识。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引更新索引更新索引自动更新自动更新重新索引重新索引当表中的数据发生变化时,当时已打开的所有索引文件中的索引都会随表中数据的改变而自动改变。Reindex 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、索引删除索引删除索引删除索引文件删除索引文件删除索引删除索引Delete file recyc
22、leDelete tag all of 或Delete tag of ,of 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟索引的建立索引的建立命令格式:命令格式:INDEX ON TO|TAG OF FOR COMPACT ASCENDING|DESCENDING UNIQUE|CANDIDATE ADDITIVE功能:功能:建立索引文件或建立索引标识。TO 子句用于建立单索引文件 TAG子句用于建立复合索引标识或复合索引文件 用于指定非结构复合索引文件的名字用来指定单索引文件为压缩的 分别用于指定升序或降序 表示建立唯一索引 表示建立候选索引 安阳师范学院安阳师范学院安师公共计算机教
23、学部 高国伟USE studentINDEX ON 出生日期 TO csrq&单索引文件总是按索引关键字升序排列LIST&记录已按出生日期升序排列INDEX ON 总分 TO zf&给总分取负号后使索引关键字表达式按升序排列,以求总分按降序排列LIST&记录已按总分降序排列安阳师范学院安阳师范学院安师公共计算机教学部 高国伟为student.dbf按下列要求建立结构复合索引文件。(1)记录以姓名降序排列,索引标识xm,索引类型为普通索引;(2)记录以学号升序排列,索引标识xh,索引类型为唯一索引;(3)记录以性别降序排列,性别相同的按出生日期降序排列,索引标识xbcsrq,索引类型为候选索引;
24、USE studentINDEX ON 姓名姓名 TAG xm DESCENDINGLISTINDEX ON 学号学号 TAG xh UNIQUELISTINDEX ON 性别性别+DTOS(出生日期出生日期)TAG zccsrq DESCENDING CANDIDATELIST安阳师范学院安阳师范学院安师公共计算机教学部 高国伟 在程序中,有一些专门用于程序开始和结束、对程序进行注释在程序中,有一些专门用于程序开始和结束、对程序进行注释以及环境设置的命令,常用的有:以及环境设置的命令,常用的有:1 1)注释命令)注释命令 为了提高程序的可读性,编写程序时可在程序中适当加上一些为了提高程序的可
25、读性,编写程序时可在程序中适当加上一些注释。注释命令在执行时不做任何操作,也不影响程序的功能。注释。注释命令在执行时不做任何操作,也不影响程序的功能。格式格式1 1:NOTE NOTE 格式格式2 2:&格式格式3 3:*功能:用于在程序中加入说明,以增加程序的可读性。功能:用于在程序中加入说明,以增加程序的可读性。说明:说明:NOTE NOTE 和和*命令用于行首注释,而命令用于行首注释,而&命令通常用于行尾注释。命令通常用于行尾注释。程序文件中的辅助命令程序文件中的辅助命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟 2 2)程序结束命令)程序结束命令 VFPVFP的应用程序可以根
26、据需要终止执行并返回命令窗口,返回操的应用程序可以根据需要终止执行并返回命令窗口,返回操作系统或返回到调用它的上一级程序或主程序。作系统或返回到调用它的上一级程序或主程序。格式格式1 1:CANCEL CANCEL 功能:结束当前功能:结束当前 Visual FoxPro Visual FoxPro 程序的执行。程序的执行。格式格式2 2:RETURN RETURN TO MASTERTO MASTER 功能:结束当前程序的执行,返回到调用它的上一级程序。带功能:结束当前程序的执行,返回到调用它的上一级程序。带TO TO MASTERMASTER选项表示直接返回到主程序。选项表示直接返回到主程
27、序。格式格式3 3:QUIT QUIT 功能:关闭所有文件,退出功能:关闭所有文件,退出VFPVFP系统,返回到操作系统。系统,返回到操作系统。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3 3)清屏命令)清屏命令 命令格式:命令格式:CLEAR CLEAR 功能:清除屏幕内容。功能:清除屏幕内容。4 4)SET TALK ON/OFF SET TALK ON/OFF 功能:控制非输出性的结果是否在屏幕上显示出来。系统默认功能:控制非输出性的结果是否在屏幕上显示出来。系统默认值为值为ONON。5 5)SET SAFETY ON/OFF SET SAFETY ON/OFF 功能:确定在改
28、写已有文件前,是否显示提示对话框。系统默功能:确定在改写已有文件前,是否显示提示对话框。系统默认值为认值为ONON。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟USE studentDO WHILE .T.ACCEPT“请输入学号:”TO snoLIST FOR 学号=SNO FIELDS 姓名,总分 OFFWAIT“继续吗(y/n)?”TO ANSWERIF UPPER(ANSWER)YEXITENDIFENDDO安阳师范学院安阳师范学院安师公共计算机教学部 高国伟库文件扫描循环SCAN SCAN FORFOR1WHILEWHILE2 LOOPLOOP 2EXITEXIT 3ENDS
29、CANENDSCAN安阳师范学院安阳师范学院安师公共计算机教学部 高国伟对当前打开的数据库文件中按照指定条件进行顺序扫描,使记录指针自动下移。SCAN循环暗含了SKIP操作,及判断指针是否指向文件尾的操作。SCAN循环只能用于数据库文件操作中,只能对记录指针进行控制。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟【例】查询【例】查询XSDAXSDA库中所有年龄不小于库中所有年龄不小于1717岁的学生姓名,岁的学生姓名,出生日期出生日期。CLEARCLEARUSE studentUSE studentSCAN FOR INT(DATE()-SCAN FOR INT(DATE()-出生日期出
30、生日期)/365)=17)/365)=17DISPLAY FIELDS DISPLAY FIELDS 姓名姓名,出生日期出生日期ENDSCANENDSCANUSEUSE安阳师范学院安阳师范学院安师公共计算机教学部 高国伟 对数据库扫描时对数据库扫描时三种循环的等价格三种循环的等价格式式库文件扫描循环:库文件扫描循环:SCAN ENDSCAN条件循环:条件循环:DO WHILE.NOT.EOF()SKIPENDDO计数循环:计数循环:n=RECCOUNT()FOR i=1 TO nGO iENDFOR安阳师范学院安阳师范学院安师公共计算机教学部 高国伟查询查询与数据表查询有关的几个函数与数据表查
31、询有关的几个函数(1 1)表文件开始测试函数)表文件开始测试函数)表文件开始测试函数)表文件开始测试函数格式:格式:BOF(BOF()功能:在记录指针指向首记录之前时返回功能:在记录指针指向首记录之前时返回.T.否则返否则返回回.F.(2 2)表文件结束测试函数)表文件结束测试函数)表文件结束测试函数)表文件结束测试函数格式:格式:EOF(EOF()功能:在记录指针指向末记录之后时返回功能:在记录指针指向末记录之后时返回.T.否则返否则返回回.F.安阳师范学院安阳师范学院安师公共计算机教学部 高国伟(4 4)记录号测试函数)记录号测试函数)记录号测试函数)记录号测试函数格式:格式:RECNO(
32、RECNO()功能:返回当前记录的记录号。功能:返回当前记录的记录号。若当前无表文件被打开,返回值为若当前无表文件被打开,返回值为0;(3 3)测试查询结果函数)测试查询结果函数)测试查询结果函数)测试查询结果函数格式:格式:FOUND(FOUND()功能:返回当前是否找到记录。功能:返回当前是否找到记录。若找到,返回值为若找到,返回值为.T.;否则为;否则为.F.;安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、查询1顺序查询2索引查询安阳师范学院安阳师范学院安师公共计算机教学部 高国伟1、顺序查询(直接查询)、顺序查询(直接查询)功能:从指定范围顺序查找满足条件的第一个记录。功能:
33、从指定范围顺序查找满足条件的第一个记录。若找到:若找到:若找到:若找到:记录指针就指向该记录;记录指针就指向该记录;若表中无满足条件的记录若表中无满足条件的记录若表中无满足条件的记录若表中无满足条件的记录:状态条中将显示:状态条中将显示“已定位范围末尾已定位范围末尾”,表示记录指针已指向文件末尾。,表示记录指针已指向文件末尾。1、查询特性:、查询特性:按照表记录的物理位置依次逐个查询。按照表记录的物理位置依次逐个查询。2、LOCATE命令命令LOCATEFORWHILE说明:说明:说明:说明:缺省为缺省为缺省为缺省为ALL;ALL;格式:格式:安阳师范学院安阳师范学院安师公共计算机教学部 高国
34、伟3、查找下一个满足条件的记录:、查找下一个满足条件的记录:CONTINUE功能:用在功能:用在LOCATE命令后,命令后,继续查找下一个满足继续查找下一个满足LOCATE命令条件命令条件的记录。的记录。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟USE studentLOCATE FOR 性别=男?FOUND()CONTINUEDISPCONTINUE?FOUND(),RECNO(),姓名,性别用于测定查找是否成功.若成功,则返回值为.T.,否则为.F.安阳师范学院安阳师范学院安师公共计算机教学部 高国伟USE studentLOCATE FOR 性别=男DO WHILE.T.IF
35、FOUND()&如果找到,则显示DISPLAYELSE&再也找不到了,退出EXITENDIFCONTINUE&继续先前的查找ENDDOUSE安阳师范学院安阳师范学院安师公共计算机教学部 高国伟在学生选课成绩表在学生选课成绩表xkcjb.dbfxkcjb.dbf中,输入学生学号,根据该学生的成绩判中,输入学生学号,根据该学生的成绩判断学生表现。若成绩断学生表现。若成绩8585分输出分输出“优秀优秀”,若在,若在70857085分输出分输出“良好良好”,若在,若在60706070分输出分输出“及格及格”,6060分以下则输出分以下则输出“不及格不及格”。其程序文件的代码为其程序文件的代码为:use
36、 use xkcjbxkcjb accept accept 请输入学生的学号:请输入学生的学号:to to xhxh locate for locate for 学号学号=xhxh 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟if not found()if not found()?学号输入错误!学号输入错误!else else do case do case case case 成绩成绩=85=85?xhxh+的成绩为:优秀的成绩为:优秀 case case 成绩成绩=70 and=70 and 成绩成绩85=60 and=60 and 成绩成绩70 中间值,则前半部分的数据可以排除
37、,只留下后半部分数据。(第1次二分)2、将剩下的数据中处在中间位置上的数据与A比较,若A中间值,则后半部分的数据可以排除,只留下前半部分数据(第2次二分)。3、以此类推,直至找到。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟三、查询索引查询索引查询Find命令命令Seek命令命令Find|在主控索引中查找与或匹配的索引关键字值,若找到,记录指针就指向该索引关键字值所对应的记录Seek 在主控索引中查找与的值匹配的索引关键字值,若找到,记录指针就指向该索引关键字值所对应的记录说明说明:1)本命令只能查找某一字符串或一常数,并且此字)本命令只能查找某一字符串或一常数,并且此字符串(或常数)
38、所在的字段符串(或常数)所在的字段必须事先经过索引,且必须事先经过索引,且索引文件已打开。索引文件已打开。2)若搜索成功,则指针指向第一条符合条件的记录)若搜索成功,则指针指向第一条符合条件的记录3)此命令)此命令只能找字符串或常数,不能找日期型或逻只能找字符串或常数,不能找日期型或逻辑型数据。辑型数据。4)所查找的)所查找的字符串可以不加引号字符串可以不加引号本命令的语法规则和 FIND命令相似,区别在于:1)若查找的是字符串,则字符串应加上引号。若查找的是字符串,则字符串应加上引号。2)可以查找一个算术表达式的值。可以查找一个算术表达式的值。3)可以查找日期型数据可以查找日期型数据安阳师范
39、学院安阳师范学院安师公共计算机教学部 高国伟三、查询例例46在表student中查找第一条姓郭的学生的记录安阳师范学院安阳师范学院安师公共计算机教学部 高国伟clearclearUSE studentUSE studentINDEX ON INDEX ON 学号学号 TAG TAG xhxhSEEK 90010005SEEK 90010005?RECNO()?RECNO()INDEX ON INDEX ON 出生日期出生日期 TAG TAG csrqcsrqSEEK 1979/07/07SEEK 1979/07/07?FOUND()?FOUND()INDEX ON INDEX ON 总分总分
40、TAG TAG zfzfSEEK 300SEEK 300?RECNO(),FOUND()?RECNO(),FOUND()安阳师范学院安阳师范学院安师公共计算机教学部 高国伟四、统计统计记录条数统计记录条数1求和求和2求平均值求平均值3综合统计综合统计4分类求和分类求和5安阳师范学院安阳师范学院安师公共计算机教学部 高国伟1、命令格式:、命令格式:COUNTFORWHILETO2、功能:计算指定范围内满足条件的记录数。、功能:计算指定范围内满足条件的记录数。一、计数命令一、计数命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3、说明:、说明:a)通常记录数显示在主窗口的状态条中。通常记录
41、数显示在主窗口的状态条中。b)使用使用TO子句还能将记录数保存到内存变量中,子句还能将记录数保存到内存变量中,便于以后引用。便于以后引用。c)若范围若范围缺省缺省缺省缺省则为则为ALLALL。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟1、命令格式:、命令格式:2、功能:在打开的表中,对、功能:在打开的表中,对的各的各个表达式分别求和。个表达式分别求和。SUMIFORWHILETO|ARRAY二、求和命令二、求和命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3、说明:、说明:a.数值表达式表数值表达式表中各表达式的和数可依次存中各表达式的和数可依次存入入内存变量表内存变量表或
42、数组。或数组。若缺省该表达式表,则对当前表所有的数值若缺省该表达式表,则对当前表所有的数值表达式分别求和。表达式分别求和。b.缺省缺省缺省缺省范围范围为为ALLALL。安阳师范学院安阳师范学院安师公共计算机教学部 高国伟1、命令格式:、命令格式:2、功能:在打开的表中,对、功能:在打开的表中,对中的中的各个表达式别求平均值。各个表达式别求平均值。3、说明、说明:该命令用法与:该命令用法与SUM相同。相同。AVERAGEFORWHILETO|ARRAY三、求平均值命令三、求平均值命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟1、命令格式:、命令格式:2、功能:在打开的表中、功能:在打开
43、的表中,分别计算分别计算的的表达式。表达式。CALCULATE表达式表表达式表范围范围FORWHILETO|ARRAY四、计算命令四、计算命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3、说明:、说明:表达式中至少须包含系统规定的表达式中至少须包含系统规定的8个函数之一。个函数之一。其中常用的函数有:其中常用的函数有:其中常用的函数有:其中常用的函数有:AVG(数值表达式数值表达式):求平均值函数:求平均值函数SUM():求和函数:求和函数CNT():求记录数函数():求记录数函数MAX(),MIN()等等5个。个。另另3个函数为个函数为NPV,STD和和VAR。安阳师范学院安阳师范
44、学院安师公共计算机教学部 高国伟1、命令格式:、命令格式:TOTALTOONFIELDS范围范围FORWHILE2、功能:在当前表中,分别对关键字值相同、功能:在当前表中,分别对关键字值相同的记录的数值型字段值求和,并将结果存入一个的记录的数值型字段值求和,并将结果存入一个新表。新表。五、汇总命令五、汇总命令安阳师范学院安阳师范学院安师公共计算机教学部 高国伟!注意:!注意:一组关键字值相同的记录在新表中产生一个记录;一组关键字值相同的记录在新表中产生一个记录;对于非数值型字段,只将关键字值相同的第一个记对于非数值型字段,只将关键字值相同的第一个记录的字段值放人该记录。录的字段值放人该记录。安
45、阳师范学院安阳师范学院安师公共计算机教学部 高国伟利利用用SCANSCAN语语句句在在学学生生档档案案表表dab.dbfdab.dbf中中查查找找7 7月月份份出出生生的的学学生生的的学学号号、姓姓名名、出生日期以及专业班级情况,并统计人数。出生日期以及专业班级情况,并统计人数。其程序文件其程序文件exam6_12.prgexam6_12.prgset talk offset talk offclearclearuse dabuse dab?学号学号,姓名姓名,出生日期出生日期,专业班级专业班级 scan for month(scan for month(出生日期出生日期)=7)=7?学号学号
46、,姓名姓名,出生日期出生日期,专业班级专业班级endscanendscancount to count to rsrs for month(for month(出生日期出生日期)=7)=7?合计:合计:,rsrs,人人 use use set talk onset talk on 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟程序填空练习程序填空练习 试题 1 计算机等级考试的查分子程序如下。请填空完成之:安阳师范学院安阳师范学院安师公共计算机教学部 高国伟SET TALK OFFUSE STUDENT INDEX STACCEPT 请输入准考证号:TO NUMSEEK _IF FOUN
47、D()?姓名,成绩:+STR(成绩,3,0)ELSE?查无此考生 ENDIFUSESET TALK ONCANCEL安阳师范学院安阳师范学院安师公共计算机教学部 高国伟 试题试题 2 2 计算机等级考试考生数据库为计算机等级考试考生数据库为STUDENT.DBFSTUDENT.DBF。笔试和上机成绩已分别录笔试和上机成绩已分别录入其中的入其中的“笔试笔试”和和“上机上机”字段(皆为字段(皆为N N型)中,但其型)中,但其“等级等级”字段(为字段(为C C型)尚型)尚无数据。无数据。凡笔试和上机两次考试均达到凡笔试和上机两次考试均达到8080分以分以上者,应在等级字段中填入上者,应在等级字段中填
48、入“优秀优秀”。填空,以使如下程序实现此功能:填空,以使如下程序实现此功能:安阳师范学院安阳师范学院安师公共计算机教学部 高国伟SET TALK OFFUSE StudentDO WHILE.NOT.EOF()IF 笔试=80.AND.上机=80 _ ENDIF SKIP ENDDOUSESET TALK ONCANCEL安阳师范学院安阳师范学院安师公共计算机教学部 高国伟 试题 3 计算机等级考试的查分子程序如下。填空完成下面的程序:SET TALK OFFUSE STDACCEPT 请输入待查学生姓名:TO XMDO WHILE.NOT.EOF()IF _?姓名:+姓名,成绩:+STR(成
49、绩,3,0)ENDIF SKIP ENDDOUSESET TALK ON安阳师范学院安阳师范学院安师公共计算机教学部 高国伟3.4 表的维护表与数组交换数据表与数组交换数据表与文本文件交换数据表与文本文件交换数据表与表结构的复制表与表结构的复制安阳师范学院安阳师范学院安师公共计算机教学部 高国伟一、表与表结构的复制复制表结构复制表结构复制表复制表Copy to 范围 for while fields Copy structure to fields 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟一、表与表结构的复制例例 25将表student中女生的记录复制到表nvxsh中例例26 将表
50、student的结构复制到表xshjg中安阳师范学院安阳师范学院安师公共计算机教学部 高国伟将文本文件中的数据追加到表的尾部将文本文件中的数据追加到表的尾部二、表与文本文件交换数据将表中的数据复制到文本文件中将表中的数据复制到文本文件中Copy to sdf|delimited with|with blank 范围 for while fields Append from sdf|delimited with|with blank fields for 安阳师范学院安阳师范学院安师公共计算机教学部 高国伟二、表与文本文件交换数据例例 27将表student中的所有记录复制到文本文件xsh(sd