470 likes | 645 Views
VFP6.0 教程. 参考书目:. 1. Visual FoxPro 应用基础 / 冯鉴生等编著 .- 广西师大出版 ,2002,1 2. Visual FoxPro 及其应用系统开发 / 史济民 , 汤观全编著 .- 北京 : 清华大学出版社 ,2000,1. 教学用书 : 新编 Visual FoxPro 程序设计教程 / 高怡新、谷秀岩等编 .- 机械工业出版社, 2003,10. 目 录. 第一章 基础知识 第二章 表的创建与维护 第三章 数据库的创建与操作 第四章 查询与视图 第五章 结构化程序设计
E N D
参考书目: 1. Visual FoxPro 应用基础/冯鉴生等编著.-广西师大出版,2002,1 2. Visual FoxPro 及其应用系统开发/史济民,汤观全编著.-北京:清华大学出版社,2000,1 教学用书:新编Visual FoxPro程序设计教程/高怡新、谷秀岩等编.-机械工业出版社,2003,10
目 录 • 第一章 基础知识 • 第二章 表的创建与维护 • 第三章 数据库的创建与操作 • 第四章 查询与视图 • 第五章 结构化程序设计 • 第六章 面向对象程序设计基础 • 第七章 表单设计 • 第八章 报表和标签设计 • 第九章 菜单设计 • 第十章 应用实例
第一章 基础知识 本章知识主要包括课本的第1、2章内容,通过本章的学习要求了解数据库的发展历程、数据库的基本概念,掌握数据模型的分类、关系型数据库的特点及关系运算、VFP6.0数据的分类、常用函数及表达式的书写与计算等。
1.1 概述 一、数据处理的演变: 1、人工处理阶段 2、文件系统阶段 3、数据库系统阶段
二、 数据库的基本概念 数据(data):用一定方式记录下来的客观事物的特征。 数据库(database):指以一定的组织形式存放在计算机存储介质上的相互关联的数据集合 特点:数据的结构化、共享性、独立性以及数据控制功能 数据库管理系统(DBMS):对数据库的描述、建立、编辑、运行、维护和通信等进行集中管理的软件系统。一般具有功能:数据定义(DDL)、数据操纵(DML)、控制和管理(DCL)。
三、 数据模型 1、实体之间的联系分三种: 一对一联系 一对多联系 多对多联系 2、数据模型:数据库的组织方式。 分类: 层次、网状、关系模型
层次模型:反映的是一对多的实体关系 校部 人事处 科研处 教务处 管理系 …… …… …… 教务科 教材科 师资科 几种主要的数据模型:层次、网状、关系
网状模型:反映的是多对多的实体关系 学生1 教师1 教师2 学生2 学生3
关系模型:二维表(关系) 例1: 职工简况表 字段(fields):二维表的列,表示事物的属性 记录(record):二维表的行,表示事物各属性或各事物之间的联系,也叫元组。
例2: 职工工资表 职工号 基本工资 津贴 会费 公积金 水电费 应扣 实发 03021 860.50 150.00 8.60 26.00 76.80 02103 660.50 100.00 6.50 20.00 56.40 01001 760.50 120.00 7.60 23.00 60.00 02061 470.00 60.00 4.50 14.00 23.00 01045 650.50 100.00 6.50 20.00 54.00 04011 450.00 60.00 4.50 14.00 17.00 关系模型:二维表(关系) 字段:二维表的列,表示事物的属性 记录(元组):二维表的行,表示事物各属性或各事物之间的联系
关系模型:二维表(关系) 作为关系型数据库的表格应满足以下要求: 1. 表中不允许有重复的字段名 2. 一个二维表中,每一列数据的类型必须相同 3. 表中不允许有内容完全相同的记录 4. 表中行和列的次序可任意排列 5. 表中任何一个属性(字段)都必须是不可再分的元素 表的三种基本 关系运算: 选择:从一个关系中选取满足条件的记录 投影:从一个关系中选取若干个属性组成新的关系 连接:两个关系中的记录按一定的条件横向结合,拼接成一个新的关系
职工号 姓名 性别 职称 出生日期 婚否 基本工资 电话号码 津贴 会费 公积金 水电费 应扣 实发 01001 张虹 女 副教授 19580223 .T. 760.50 88654230 120.00 7.60 23.00 60.00 03021 吴言 男 教授 19540412 .T. 860.50 87635210 150.00 8.60 26.00 76.80 关系运算: 投 影 职工号 姓名 性别 职称 出生日期 婚否 基本工资 电话号码 01001 张虹 女 副教授 19580223 .T. 760.50 88654230 03021 吴言 男 教授 19540412 .T. 860.50 87635210 02103 朱呈 男 讲师 19680524 .T. 660.50 88236711 02061 田添 女 助教 19761212 .F. 470.00 88248243 01045 刘柳 女 讲师 19680621 .T. 650.50 89546733 04011 林临 男 助教 19770722 .F. 450.00 88344411 选 择 连接:
关系运算综合举例:基本工资介于400——500元之间的职工的职工号、姓名和津贴关系运算综合举例:基本工资介于400——500元之间的职工的职工号、姓名和津贴 职工简况表 职工号 姓名 性别 职称 出生日期 婚否 基本工资 电话号码 01001 张虹 女 副教授 19580223 .T. 760.50 88654230 03021 吴言 男 教授 19540412 .T. 860.50 87635210 02103 朱呈 男 讲师 19680524 .T. 660.50 88236711 02061 田添 女 助教 19761212 .F. 470.00 88248243 01045 刘柳 女 讲师 19680621 .T. 650.50 89546733 04011 林临 男 助教 19770722 .F. 450.00 88344411 职工工资表 职工号 基本工资 津贴 会费 公积金 水电费 应扣 实发 03021 860.50 150.00 8.60 26.00 76.80 02103 660.50 100.00 6.50 20.00 56.40 01001 760.50 120.00 7.60 23.00 60.00 02061 470.00 60.00 4.50 14.00 23.00 01045 650.50 100.00 6.50 20.00 54.00 04011 450.00 60.00 4.50 14.00 17.00 职工号 姓名 津贴 02061 田添 60 04011 林临 60
根据数据模型的分类,数据库管理系统层次、网状、关系型数据库管理系统(RDMS)根据数据模型的分类,数据库管理系统层次、网状、关系型数据库管理系统(RDMS)
补充:数据库的三级模式结构 应用1 应用2 应用3 应用4 外模式2 外模式1 外模式到模式的映射 模式 模式到内模式的映射 内模式 数据库
1.2 Visual FoxPro 6.0简介 进化阶段 Visual FoxPro FoxPro FoxBASE dBASE 20世纪80年代初期 90年代初期 90年代中期 80年代中期 时间 VFP关系数据库的进化
1.2.1 Visual FoxPro 6.0的主要特点 1 强大的查询与管理功能 2 引入数据库表的新概念 3 扩大了对SQL语言的支持 4 大量使用可视化的界面操作工具 5 支持面向对象的程序设计(OOP) 6 通过OLE实现系统集成 7 支持网络应用 OLE,Object Linking andEmbedding
1.2.2 Visual FoxPro 6.0的主要技术指标 记录数/每个1字节记录表 ≤10亿 默认内存变量个数 1024 字节数/每个表 ≤ 20亿 最大内存变量个数 65000 字符数/每个记录 ≤ 64000字段数据类型13种 字段数/每个记录 ≤255主要有:C N L D M G 6种 字符数/每个字段 ≤254内存变量数据类型 6种 可表示的最大数(绝对值)4.941×10324主要有:C N L D4种 可表示的最小数(绝对值)4.941×10-324备注字段指针长度 10 数值型数据的最大宽度 20位 备注字段内容长度 ≤64K 字符串长度 ≤254索引关键字表达式长度≤100 命令行长度 ≤8192 报表标题长度 ≤254 文件名长度 与Windows的文件名相同 文件类型 24种 字段名长度 ≤10个字符可以利用的工作区数 ≤32767 内存变量名长度 ≤254个字符
1.2.3 VFP的启动、退出、用户界面与操作 一、VFP的启动与退出 退出命令:quit 二、 VFP的用户界面与操作 1、 窗口组成 标题栏 菜单栏 工具栏 工作区 命令窗口状态栏 2、 基本操作 三、 VFP的三种操作方式 单命令、菜单驱动、 程序方式 四、 辅助设计工具: 向导、设计器、生成器
1.2.4 项目管理器 (P22) 项目管理器用于组织和管理项目中的文件,即建立、修改、查看这些文件,可作为应用系统的控制中心,具有运行和连编等功能。项目是文件、数据、文档及VFP对象的集合,项目文件以.pjx扩展名保存。
举 例 代号 名称 长度 说 明 N 数值型 <= 20 存放一个整数或实数 工资、学时 C 字符型 <= 254 存放一串字符或汉字 姓名、职称 D 日期型 = 8 存放一个日期 出生日期 L 逻辑型 = 1 存放一个逻辑值 婚否 M 备注型 =4 存放大量字符或汉字 简历、摘要 G 通用型 =4 存放声音、图像等 照片、商标 1.3 VFP的数据(P27) 再加上:浮点型(F)、双精度型(B)、整型(I)、字符型(二进制)、备注型(二进制) 一、数据类型(共13种) 主要的数据类型有: 还有:货币型(Y),日期时间型(T),长度固定为8位
一、常量 在运行过程中值不变的数据 类型:C N D LTY 字符型C “”‘’ [ ]——三种定界符 数值型N 整数 实数(不能用分数) 逻辑型 L .T. .t..Y. .y. (True) .F..f..N. .n. (False) 如:“1234”‘Good bye’“中国人民”[It‘s a book.] [所谓的’真实‘] 如:1000.21.123e-2 均合法 10% 不合法
日期型D { }定界符 {^yyyy-mm-dd}、{^yyyy/mm/dd} ^ 表示严格的日期格式 例:{ ^ 2001/02/03 } 无论当前系统的日期格式如何设置,此日期均为 2001年2月3日。(或无 ^ 则因系统的日期格式设置不同而异) ● 日期数据格式设置 (P17) 工具— 选项— 区域 在日期格式下拉列表框中选择日期格式— …… 或用命令SET DATE ANSI|MDY yyyy-mm-dd mm-dd-yyyy 日期时间型T 例:{^2004-02-09,10:25:55p} 货币型 Y 在数值前添加一个货币符号($),是一种特殊的数值常量。 如:$100
二. 变量 在运行过程中值发生变化的数据 按存储方式的不同,变量分成二类: 1、字段变量 用来描述数据表中记录属性的变量。依赖于表,建立表结构时定义。是一个多值变量。共有13种数据类型,常用的有:C、N、D、L、M、G等 2、内存变量 独立于表,在命令窗口或程序中定义,用来存放数据处理过程中的一些有关数据。
(本章主要学习内存变量,关于字段变量将在第二章学习)(本章主要学习内存变量,关于字段变量将在第二章学习) 内存变量名命名要求:必须以英文字母或汉字开头,可由英文字母、汉字、数字或下划线组成,长度不超过10个字符。
① 内存变量的赋值 <内存变量名>=<表达式>给一个变量赋值 STORe <表达式> TO <内存变量名表> 给一批变量赋相同的值 ● 表达式的值决定了内存变量的数据类型 ② 内存变量的显示 ? <内存变量名表> 换行后输出 ?? <内存变量名表> 直接输出 LIST MEMOry [LIKE <框架>] DISPlay MEMOry [LIKE <框架>] ● 框架:也称结构,指带通配符(*、?)的变量名 其中,* 表示任意一串字符, ?表示任意一个字符。
➂内存变量的保存与恢复 • 内存变量的保存:将内存变量保存到一个文件中save to <内存变量文件名> ; • [all like/except <结构>] • 内存变量的恢复:将保存在内存变量文件中的变量恢复到当前内存中。 • restore from <内存变量文件名>[additive] • 说明:缺省additive参数时,调入的内存变量将覆盖当前内存的内存变量。否则会添加 另外,还可将屏幕保存到某个内存变量中。 Save screen to <内存变量名> Restore screen from <内存变量名>
➃内存变量的清除(释放) • release <内存变量名表> • release all [like/except <框架> • clear memory 或 clear all • <框架>,也称结构,是一个可包括通配符“?”(可代表任一字符)或“*”(可代表任何字符)的标识符。 • [like]表示“形如” • [except]表示“除…之外” • [all]表示当前级别能见到的全部内存变量
三 、表达式(P33) 表达式:用运算符把常量、变量、函数等数据按一定规则连接起来的一个式子。 1、算术表达式 运算符:( ) **(^) * / % + - 算术运算符的优先级如下:
2、字符表达式 运算符: + - (连接) + 表示完全连接, 如:“abc “+”de ” 结果为:“abc de ” - 表示将前一字符串的尾空格挪到结果的最后面, 如, “abc “-”de ” 结果为:“abcde “
3、日期表达式 运算符: + - <日期1> - <日期2> 结果为数值型(相差天数) 如:{^2003/9/16}-{^2003/9/10},结果为6。 <日期> ± 数值 结果为日期型(日期后或前N天的日期)
4、关系表达式 运算符: = <>(!=,#) > >= < <= $ == P35,表2-4,关系运算符及说明 说明:1、日期与日期比较时,老的日期比新的日期要小 2、$、= =只适用于字符型数据比较 $当左边是右边的子(字符)串时, 值为 .T. , 否则为 .F. = =精确比较,必须当两个字符包含的所有字符与顺序都完全相同时,值才为 .T. , 否则为 .F.
$、= =只适用于字符型数据比较 $当左边是右边的子(字符)串时, 值为 .T. , 否则为 .F. = =左右两边完全相同(精确比较)时,值为.T. ,否则为 .F. 例如: A1=‘ASDF ‘A2=‘ASDF‘ 则: 表达式 A1$A2 表达式 A2$A1 表达式 A1=A2 表达式 A1= =A2 注: 表达式 A2=A1 值为 .F. 值为 .T. 值为 .T. 值为 .F. 值为 .F. • 说明:可用set exact on/OFF对=设置是否精确比较 • 当处于系统默认的set exact off状态时,比较时以右字符串为准,当右边字符串比较结束就终止比较。 • 当设置为set exact on状态时,则先在较短字符串的未必增加空格,使两个字符串长度相同后再比较。 • 该设置对==无效
算术运算 字符运算 日期运算 ( ) 关系运算 逻辑运算 注:逻辑运算符的操作数类型只能是逻辑型 5、逻辑表达式 运算符: NOT(!) AND OR 真值表: A B NOT A A AND B A OR B .F. .F. .T. .F. .F. .F. .T. .T. .F. .T. .T. .F. .F. .F. .T. .T. .T. .F. .T. .T. 运算优先级由高到低:not and or ۞运算优先级别 由高到低:(举例1, 举例2)
表达式运算举例: 例1:计算下面表达式的值 12*4+5^2>23%5 and not ‘abb’ $ ‘ddabbb’ 例2:执行如下命令组,写出运算结果 X=15 Y=10 Z=20 ? X+y/Z>y and 100>=z**2 参考答案:均为.f.
四、 常用函数( P38 ) 1 数值函数 SQRT(N) INT(N) ROUND(N1 , n2 ) MOD(n1,n2) 2 字符串操作函数 SUBSTR(C,n1,n2) LEN(C) SPACE(N)AT(c1,c2) TRIM(c) LTRIM(C) RTRIM(C) ALLTRIM(C) 3 日期与时间函数 DATE( ) YEAR(D) MONTH( D ) DAY( D ) 4 类型转换函数 STR(N1, n2, n3) VAL(C) CTOD(C) DTOC(D) DTOS(D) 5 宏替换函数 ( & ) 6 测试函数 VARTYPE(E) FILE(‘文件名’) 函数括号内的N、D、C表示自变量的数据类型,E为“表达式”
注意: ● 函数的表示方法 ●自变量的类型及其取值 ●函数值的类型及其取值
练习题 • 下面表达式结果为日期型的是: • A. 04/05/97+2 B. CTOD(’04/05/97’) – DATE( ) • C. CTOD(’04/05/97’) - 3 • D. DATE( ) + ’04/05/97’ • LEN(‘ABC ‘–‘DDD’) 的值为 ? • 比较各组函数运算的值是否相等? • A. LEFT(“Visual FoxPro”,6) 与 • SUBSTR(‘Visual FoxPro’,1,6) • B. YEAR(DATE( )) 与 • SUBSTR( DTOC( DATE( )), 7, 2)
C. DTOS(DATE( )) 与 DTOC(DATE( )) D. 假定A=‘this ‘, B=‘is a book’, 表达式 A-B 与A+b 4. ROUN(123456.789 , -2 ) 的值为: A. 123460 B. 123500 C. 123456.790 D. –123456.79 5. 将 “X 大于等于10 且 小于等于 100 ”写成VFP的合法表达式 参考答案:1、C 2、7 3、 A 相等 B不等 C可能相等 D不等 4、B5、 x>=10 and x<=100
6. 判断以下各命令的运行结果 X=10 y=20 x=y=15 ? X , y 7. 判断以下各命令的运行结果 X=10 y=20 ? x=y ?? X , y x=y ? X , y 参考答案:6、.F. 20 7、.F. 10 20 20 20
1.4 VFP的命令格式 P48 <命令动词>[<范围>] [FOR|WHILe <条件>]; [FIELds <字段名表>] ① 范围 短语(字句): ALL 所有记录 NEXT n从当前记录起连续n个记录(包括当前记录) RECOrd i记录号为 i 的记录 REST从当前记录到表文件末尾(包括当前记录) ② 条件短语 FOR|WHILE<条件> 注:条件由关系表达式或逻辑表达式构成 ③ FIELds <字段名表> (或 <表达式表> ) 例ex0101.prg
说明1:同时缺省范围和条件子句时,记录的范围由命令本身所决定;说明1:同时缺省范围和条件子句时,记录的范围由命令本身所决定; • 例如,同为显示命令的list,则显示all,而display,则显示next 1 • 说明2:有for子句而缺省范围子句时,默认范围为all; • 说明3:缺省fields字段时,一般指所有字段;
For<条件>与while <条件>的区别:P49 For 包括指定范围内所有满足条件的记录; While执行时会从指定范围内的第一条记录开始比较<条件>,当<条件>为真时执行相应操作,一旦<条件>为假时,就停止命令的执行,而不管后面有无符合条件的记录。 ①List for 性别=“男” ②List while 性别=“男” 1、假设当前记录为1,则显示的结果分别为: ①2,3,6号记录, ②0条记录(无显示内容); 2、假设当前记录为2,则显示的结果分别为: ①2,3,6号记录, ②2,3号记录
●命令书写规则 ① 以命令动词开头,其后的子句(短语)的次序允许任意排列,命令与子句间用空格分隔; ② 保留字、函数名可仅写前4个字符,英文大小写等效。 ③除汉字文字外,命令中的所有符号应使用半角符号,不能使用中文标点符号; ④一条命令的长度可达8192个字符,一行写不下时可在行尾加分号(;)作继行符,换行后继续书写;
P49,表2-6 1.5 VFP6的文件类型 .PJX .pjt 项目文件、项目备注文件 .DBF 表文件 .FPT 表备注文件 .IDX 单索引、压缩索引 .CDX 复合索引文件 .DBC 数据库文件 .MEM 内存变量文件 .PRG 程序文件 .FXP 编译后的程序文件 .TXT 文本文件 .scx .sct 表单文件、表单备注文件 .lbx .lbt 标签文件、标签备注文件 .vcx .vct 可视类库文件、可视类库备注文件 .mnx .mnt .mpr 菜单、菜单备注、菜单程序文件 .app .exe 应用程序文件、可执行程序文件
本章课本纠错 P31,第5行, 应将 960.50改成: 1060.50 P34, 倒数第10行, 应将 “李明” 改成“ 李明 ” (即,李明后面应该有若干空格) P40, mod函数中的计算公式不正确 方法为:设求mod(a,b) 则:当a,b 同号时, |余数 |=mod(|a|,|b|) 当a,b 异号时, |余数 |=|b|-mod(|a|,|b|) 最后,取余数的符号与除数相同即可 (上述 ||表示数学中的绝对值)