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