《1 表的基本操作、索引、关联、数据库、视图》由会员分享,可在线阅读,更多相关《1 表的基本操作、索引、关联、数据库、视图(86页珍藏版)》请在金锄头文库上搜索。
1、VFP程序设计,主讲: 罗敏,时间安排(临床1318班),周一 晚上6:30 地点:综合楼205周三 晚上6:30 地点:综合楼205周五 晚上6:30 地点:综合楼205考试时间:4月12日笔试,4月13日上机考试,时间安排(护理、体育、中医药等),周二 晚上6:30 地点:综合楼205周四 晚上6:30 地点:综合楼205周六 上午8 :30 地点:综合楼205考试时间:4月12日笔试,4月13日上机考试,关于二级考试,考试性质: 形式:笔试、上机(全省统一出题,合格发证,60分合格) 1. 笔试(100分,120分钟) 计算机应用基础,一共15分,其中单选5分,判断10分; VFP占85
2、分,一般15分单选;30分左右的读程序然后做选择题,一个3分;40分左右的读程序,填空使程序完整,每空2分; 时间2小时,一般时间比较合适;,2. 上机(100分,60分钟),基本操作30分 设计程序30分; 表单设计40分;(上一次出现菜单、标签) 时间1小时,一般时间比较紧张;3、成绩计算首先,笔试成绩=60分,同时上机成绩=60;然后:成绩笔试0.8上机0.2;4、考试内容在书上有,同时可以有5分左右的超大纲的题;,知识点:,基本概念 数据、常量、变量、表达式 函数 表及表的简单操作 表的复杂操作 表与表之间的操作 结构化程序设计 表单 菜单 报表与标签 合成软件 SQL查询语言,课时安
3、排: 1、简单复习命令、结构化程序设计1 (循环、多重循环、变量作用域、参数传递) 2、程序设计2+项目、数据库管理+SQL1 3、SQL2 4、面向对象一 5、面向对象二 6、讲解笔试试题一 7、讲解笔试试题二 8、讲解上机试题一 +菜单 9、讲解上机试题二+标签 10、计算机技术基础 11、上机 12、答疑,第一章 表的操作,一、命令的基本格式Visual FoxPro命令通常由命令动词和命令子句构成。, FIELDS FOR WHILE ,1 命令结构,每条命令必须以命令动词开始。 命令动词与子句、子句与子句之间必须以空格隔开。 命令动词和子句的关键字可以使用前4个字符表示,不区分字母的
4、大小写。 一行只能写一条命令。较长的命令可以分行书写,除最后一行外,其余各行必须以分行符“;”结束。 一条命令输入完成后必须以回车键结束。,二、范围与条件,1. 范围的表示,e.g. 1-1 使用范围。,list next 3 list record 2 list rest list all,1,2,3,2,2,3,4,5,1,2,3,4,5,2. 条件的表示,如果在命令中既有FOR条件也有WHILE条件,则WHILE条件优先。,e.g. 1-2使用条件。,list next 3 for 编号1 list for 编号2,2,3,1,2,3,4,2,无记录,2 基本命令,2.打开表,e.g.
5、1-4 打开多个表。,select 3 use 学生 use 选课 in 2 list fields 学号, 姓名, 课程号, 成绩,b.,b.,3.关闭表,如果在程序中打开了表,那么在程序结束前要使用CLOSE ALL关闭所有打开的表。,4.记录的定位,测试记录指针的位置,e.g. 1-5 输出显示学生表的所有记录。,use 学生 ? “学号 姓名 性别 出生日期 评分“ do while !eof()? 学号, 姓名, 性别, 出生日期, 评分skip enddo,5.显示记录,e.g. 1-6 在学生表中输出显示所有男生的学号、姓名,不显示记录号。,use 学生 list fields
6、学号, 姓名 for 性别=“男“ off,6.添加记录,e.g. 1-7在学生表中添加新记录(学号:S0201302,姓名:杨凡)。,use 学生 append blank replace 学号 with “S0201302“, 姓名 with “杨凡“,7.修改记录,e.g. 1-8 在学生表中对所有学生的评分增加5。,use 学生 replace all 评分 with 评分+5,8.删除/恢复记录,逻辑删除设置,9.复制表,e.g. 1-9 复制学生表中所有男生的记录到文本文件xs.txt。,use 学生 copy to xs.txt for 性别=“男“ sdf,10.记录过滤,e.
7、g. 1-10 在学生表中输出显示所有男生的记录。,use 学生 set filter to 性别=“男“ list,11.字段过滤,e.g. 1-11 在学生表中输出显示所有的学号、姓名。,use 学生 set fields to 学号, 姓名 list,三、练习,?1.阅读下面程序,USE DJKS S=0 DO WHILE .NOT. EOF()IF 笔试=60 .AND. 机试=60REPL 是否通过 WITH .T.S=S+1ELSEREPL 是否通过 WITH .F.ENDIFSKIP ENDDO ? S CLOSE ALL,(1) 程序运行后S的值是(C) A 7 B 5 C 4
8、 D 3 (2) 对于程序中的SKIP语句,则(D) A 可以替换成CONTINUE,不影响程序的执行 B 可以去掉,不影响程序的执行 C 可以移到循环体外部,不影响程序的执行 D 如果去掉,程序将进入死循环 (3) DJKS表中“是否通过”字段的类型是(D) A 数值型 B 字符型 C 备注型 D 逻辑型,USE 学生 (有10条记录) COPY TO XS USE XS COUNT TO A GO TOP DELE NEXT 5 COUNT TO B SET DELE ON COUNT TO C PACK COUNT TO D SET DELE OFF COUNT TO E COPY TO
9、 XS-1 USE XS-1 ZAP COUNT TO F ? A, B, C, D, E, F,(1) 程序执行结果是(D) A 10 10 5 5 5 5 B 10 5 0 0 0 0 C 10 10 10 10 10 10 D 10 10 5 5 5 0.,2.阅读下面程序,CLEAR USE 成绩 SET FILTER TO 性别=”女” AND 成绩70 DISP 姓名,成绩 SUM 成绩 TO SH1 SET FILTER TO SET DELETE ON DELETE FOR 性别=”女” AND 成绩70 COUNT TO SH2 ? SH1,SH2 USE,3.阅读下面程序,
10、(1) DISP 姓名,成绩 语句显示的内容是(C) A 吕开慧,69 B 张大英, 80 C 李进,73. D 马梅,84 (2) 命令 ? SH1,SH2 显示的内容是(A) A 232.00, 4. B 245.00, 1 C 245.00, 4 D 232.00, 1,4 排序与索引,一、排序根据关键字段的值(升序或降序)排列记录,并把记录依次保存到一个新表中,原表的记录顺序保持不变。,Sort to xs on 姓名,性别/d,例:按姓名(升序)、性别(降序)对学生.dbf排序,排序结果存入xs.dbf。,二、索引在不改变记录物理顺序的情况下,根据索引表达式的值(升序或降序)建立记录
11、的逻辑顺序。,创建索引,使用索引,未索引的表,索引文件,显示记录,主索引:不允许关键字值重复,一个表只能有一个主索引,只有数据库表才能创建主索引。 候选索引:不允许关键字值重复,一个表可以有多个候选索引,数据库表和自由表都可以创建候选索引。 普通索引:允许关键字值重复,对应的索引项也重复。一个表可以有多个普通索引,数据库表和自由表都可以创建普通索引。 唯一索引:允许关键字值重复,但是对应的索引项不重复。一个表可以有多个唯一索引,数据库表和自由表都可以创建唯一索引 。,1.创建索引,2.打开索引,3.设置主控索引,4.关闭索引,5.重新索引,e.g. 1-17在学生表中,对评分最高的3位学生增加
12、1评分,并按学号的升序输出显示所有记录。,use 学生 index on 学号 tag xh index on 评分 tag pf descending additive replace next 3 评分 with 评分+1 set order to xh list,5 查询,一、顺序查询按照记录的逻辑顺序,在当前表中查找满足条件的记录。,1.查找第一条记录,2.查找下一条记录,测试查询结果,CONTINUE必须在使用LOCATE之后才能使用。,e.g. 1-18 查询学生表所有姓陈的记录。,use 学生 locate for 姓名=“陈“do while !eof()? 学号, 姓名, 出
13、生日期, 评分continueenddo,二、索引查询索引查询是比顺序查询更高效的查询方式,只有在当前表中设置了主控索引,才能使用索引查询。,1.查找第一条记录,FIND只能使用C型和N型常量。,2.查找下一条记录,例:索引查询学生.dbf中姓“陈”的学生记录。,Use 学生 Index on 姓名 to xm Find 陈,Use 学生 Index on 姓名 to xm Seek “陈“,1.,2.,Use 学生 Locate for 姓名=“陈“,3.,三、练习,1.阅读下面程序,USE XS INDEX ON 成绩 TO CJ1 GO TOP DISP 姓名,成绩 N=0 LOCATE
14、 FOR 性别=”女” AND 成绩=80 DO WHILE .NOT.EOF()IF FOUND()N=N+1CONTENDIF ENDDO ? N CLOSE ALL,(1) 程序 “DISP 姓名,成绩”执行的结果显示是() A 张军 90 B 赵菲 78 C 任涛 50 D 李敏 92. (2) 程序运行完毕后,N的值为( ) A 2. B 3 C 4 D 5 (3) 关于循环体中的CONT,说法正确的是() A 可以用SKIP语句代替,不影响程序执行结果 B 可以放到循环体外,不影响程序执行结果 C 去掉CONT,程序进入死循环. D 去掉CONT,不影响程序执行结果,6 数据统计,
15、一、基本统计,二、综合统计,CALCULATE常用统计函数,e.g. 1-20在销售表中,求每次销售的金额(合计),输出显示销售量的最大值和销售总金额。,set talk off use 销售 replace all 合计 with 销售量*单价 calculate max(销售量), sum(合计) to x, y ? x, y,销售.dbf,e.g. 1-21在销售表中,输出显示销售量的最大值和销售总金额。,set talk off use 销售 calc max(销售量), sum(销售量*单价) to x, y ? x, y,销售.dbf,三、分类汇总,分类汇总前必须对关键字段进行索引或排序。,e.g. 1-22在销售表中,求每种书的销售总量和销售总金额。,use 销售 index on 书名 tag sm replace all 合计 with 销售量*单价 total on 书名 to xs fields 销售量, 合计,