二级VF程序设计教程版.docx
- 文档编号:30332162
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:37
- 大小:184.39KB
二级VF程序设计教程版.docx
《二级VF程序设计教程版.docx》由会员分享,可在线阅读,更多相关《二级VF程序设计教程版.docx(37页珍藏版)》请在冰豆网上搜索。
二级VF程序设计教程版
第一部分VisualFoxPro程序设计基础
数据是指存储在某一媒体上能够识别的物理符号。
数据主要包括数字、字母、文字、图像等。
例如:
李小明、男、18、2008/8/18。
一、常量:
通常指以文字串形式出现在代码中的数据,代表一个具体的、不变的值。
在数据输入或命令中可以直接被使用。
1、数值型常量:
即常数,用来表示数量的大小。
直接书写。
如:
18、-76
2、货币型常量:
表示货币值,与数值型常量类似,但要前置美元符号($)。
如:
$12.38
3、字符型常量:
即字符串。
必须由定界符(单引号,双引号或方括号)括起来。
如:
“李小明”、[男]
4、日期型常量:
表示日期。
必须用定界符(花括号)。
如:
{^2008/8/18}
影响日期格式的命令:
SetMarkTo[/|-|.]&&指定日期分隔符
SetDateToMDY|YMD&&设置日期输入和显示格式
SetCenturyOff|On&&设置日期是否显示世纪
SetCenturyTo世纪值Rollover年份参照值&&用于解释日期的年份
5、日期时间常量:
表示日期和时间。
使用时必须用花括号。
如:
{^2012/7/1,11:
30a}
6、逻辑型常量:
只有逻辑真和逻辑假。
在前后加点。
如:
.t.、.f.
二、变量:
用于存储数据,一个变量在不同的时刻可以存入不同的数据。
变量实际上就是存储数据的容器。
每一个变量有一个变量名,可以通过变量名访问变量内的值。
VisualFoxPro中的变量可分为字段变量和内存变量两大类。
由于表的各条记录对同一个字段名可能取值不同,因而打开表后表中的字段名即为变量,称为字段变量。
如以下的职工表。
1、内存变量:
是内存中的临时存储区域,变量的值就是存放在这个区域中的数据,变量类型即为变量值的类型。
可以把不同数据类型的数据赋给同一个变量。
变量赋值的格式:
内存变量名=常量&&即将=右边的内容赋值给=左边的变量
Store常量To内存变量名列表
如:
X=8
Y={^2010/4/3}
Z=”CHINA”
Store3ToA1,A2
当内存变量和字段变量同名时,若用变量名访问,则系统默认为字段变量。
若要访问内存变量,则须加前缀M.(或->)。
2、数组:
是内存中连续的一片存储区域,它由一系列元素组成,每个元素可通过数组名及相应的下标来访问。
数组定义好后,每个数组元素自动地赋以逻辑假.F.。
可以分别为每一个数组元素赋值。
创建数组的格式:
DIMENSION(下标上限1,下标上限2…)
DECLARE(下标上限1,下标上限2…)
如:
DIMENSIONB(2,3)
DECLAREC(4)
3、输出变量
?
|?
?
变量名
ListMemory[Like通配符]&&通配符为*或?
如:
?
X,Y,Z
804/03/10CHINA
ListMemoLikeA*&&显示结果为:
33
4、清除内存变量:
Release变量名列表
ReleaseAll[Like通配符]
如:
ReleaseY,Z
ReleaseAllLikeA*
ReleaseB&&清除数组B
三、表达式:
由常量、变量、函数通过运算符连接的式子。
按照规定的运算规则最终均能计算出一个结果,即表达式的值。
1、数值、字符和日期表达式
(1)数值表达式运算符:
()乘方**或^乘*除/求余%加+减-
如:
?
(2+3)*2-10/2
5
?
15%4,-15%-4,15%-4,-15%4&&结果为:
3-3-11
(2)字符表达式运算符:
+、-
如:
?
“welcome”+“to”
”welcometo”
?
“welcome”-“to”
”welcometo”
(3)日期表达式运算符:
+、-
如:
?
{^2009/2/28}-10
{^2009/2/18}
?
{^2001-3-1911:
10:
10AM}-{^2001-3-1910:
10:
10AM}&&结果为:
3600
2、关系表达式
><=>=<=!
=(或<>、#)==$
如:
?
8>7,“A”<>“B”,“湖北”==“湖”,“湖北”=“湖”
.T..T..F..T.
影响=的设置命令:
SETEXACTON
3、逻辑表达式
Notandor
如:
?
5>=3and4<8
.T.
四、函数:
用程序来实现数据运算或转换。
函数可以用函数名加一对圆括号加以调用。
1、数值函数:
函数
功能
示例
结果
SQRT(n)
求n的平方根
?
Sqrt(9)
3
INT(n)
返回n的整数部分
?
Int(18.56)
18
ROUND(n,n1)
对n四舍五入保留n1位小数
?
Round(23.53,1)
23.5
MOD(n1,n2)
返回n1和n2相除的余数
?
Mod(16,5)
1
2、字符函数:
函数
功能
示例
结果
Len(c)
求c字符串的长度
?
Len(“中国china”)
9
Alltrim(c)
删除c字符串前后空格
?
Allrim(“hubei”)
“hubei”
Left(c,n)
取c字符串左边n个字符
?
Left(“中国人民”,4)
“中国”
Right(c,n)
取c字符串右边n个字符
?
Right(“中国人民”,4)
“人民”
Substr(c,n1,n2)
从C的n1开始取n2个字符
?
Subs(“中国人民”,3,2)
“国”
At(c1,c2)
返回c1在c2中的位置值
?
At(“ab”,”cdbabc”)
4
Like(c1,c2)
c2与c1是否匹配
?
Like(“edi*”,”edit”)
.T.
3、日期和时间函数:
Date()、Time()、Datetime()、Year(日期)、Month(日期)、Day(日期)
4、转换函数:
函数
功能
示例
结果
Str(n,n1,n2)
将数值转换成字符
?
Str(123.456,7,3)
“123.456”
Val(c)
将字符串转换为数值
?
Val(“234.56”)
234.56
Ctod(c)
将字符串转换成日期
?
Ctod(“2008/10/20”)
10/20/08
Dtoc(d)
将日期转换成字符串
?
Dtoc({^2008/10/20})
“10/20/08”
&字符型变量
替换字符型变量的内容
C=”123”
&C+1
124
5、测试函数
函数
功能
示例
结果
Isnull(表达式)
空值.null.测试
?
Isnull(.null.)
.T.
Empty(表达式)
“空”值测试(””,0)
?
empty(0),empty(“”),empty(“”)
.T.
Vartype(表达式)
测试表达式类型
?
Var(“ab”)
C
IIF(表达式,值1,值2)
条件测试
?
IIF(8>5,9,10)
9
Eof()
表文件尾测试
List
eof()
.T.
第二部分VisualFoxpro数据库及操作
数据库是存储在计算机存储设备上的结构化的相关信息的集合。
它不仅包括描述事物的数据本身,而且还包括相关事物之间的联系。
一、关系数据库
关系数据库是由若干依照关系数据模型设计的二维数据表文件的集合。
二、VisualFoxpro数据库及其建立
1、建立数据库:
文件→新建→数据库→指定路径及名称→保存(如下图)
命令方式:
CreateDatabase教师管理
ModifyDatabase
2、建立表:
文件→新建→表→指定路径及名称→保存(如下图)
命令方式:
Create职工
表设计器说明:
(1)类型:
指字段对应存储数据的具体类型,
字符型C、数值型N、浮动型F、整型I、日期型D、逻辑型L、备注型M、通用型G
(2)字段宽度:
限制存储数据的数量或精度。
部分类型有默认宽度。
3、打开和关闭数据库
OpenDatabase教师管理
CloseDatabase
5、在浏览环境下添加/删除记录
命令方式:
Use教师&&打开表
Browse[For条件]&&用浏览器方式显示,按ESC键关闭
(1)添加记录:
先执行“表→追加新记录(Ctrl+Y)”,然后在浏览器上填写记录信息
(2)删除记录:
先执行“表→切换删除标记(Ctrl+T)”,再执行“表→彻底删除”
4、使用表设计器修改表结构(添加/删除字段、字段改名、修改字段类型和宽度等)
以独占方式打开数据库,在数据库设计器上右击表→修改
或以独占方式打开表,单击”显示”菜单→表设计器
命令方式:
Use教师&&打开表
ModifyStructure
三、表的基本操作:
遵循先打开后操作的原则
1、插入记录:
AppendInsert
2、删除记录:
Delete[For条件]&&逻辑删除记录
如:
DeleteFor姓名=“郑鹏鹏”
Recall[For条件]&&恢复删除记录
Pack&&物理删除
4、修改记录:
Replace[范围]字段With表达式[For条件]&&以记录为单位替换对应字段的值
如:
ReplaceAll实发工资With基本工资+奖金
5、定位命令:
(1)按记录号定位:
Go记录号|Top|Bottom
(2)参照记录当前位置定位:
Skip整数
(3)按指定条件定位:
Locatefor条件&&继续查找,使用Continue
四、索引:
创建索引就是创建一个指向DBF文件的指针构成文件,实现表记录的逻辑排序,以提高数据查询速度。
1、索引的类型
主索引:
指定字段或表达式中不允许出现重复值。
起主关键字作用。
只有一个
候选索引:
和主索引具有相同特性。
允许有多个
普通索引:
指定字段或表过式允许出现重复值,同时允许索引项中出现值重复。
2、在表设计器中建立索引(.Cdx):
打开表设计器对话框,在字段选项卡中选中字段,在“索引”标识下选择升序或降序即可建立普通索引。
如要改变索引类型,须进入索引选项卡中。
命令方式:
IndexOn字段Tag索引项名[Candidate|Unique]
3、索引操作
(1)指定索引:
SetOrderTo索引名
(2)删除索引:
DeleteTag索引名
四、数据完整性:
指保证数据正确的特性。
一般包括实体完整性、域完整性和参照完整性。
1、实体完整性与主关键字:
通过主关键字或候选关键字来保证要求数据表中的记录惟一。
2、域完整性与约束规则:
通过字段有效性规则来检验数据输入的正确性。
规则:
逻辑表达式信息:
字符串。
加引号默认值:
由字段值决定。
常量加定界符
3、参照完整性与表之间的关联:
确保不同表间的关键性数据保持一致
建立表之间联系:
连接字段在父表中一般是主关键字,建主索引;在子表中是外部关键字,建普通索引。
设置参照完整性规则:
更新、删除、插入
五、多个表的同时操作
在VisualFoxpro中可以同时打开多个数据库,也可以打开多个表。
每个表必须占用一个工作区。
1、指定工作区
Select工作区号|别名
*别名即表名,当一个表在一个工作区打开后,该表名就可以当作工作区名
2、使用不同工作区的表
IN区号
表名.字段名(表名->字段名)
常用的表打开命令
Use表名In0&&在编号最小的可用工作区打开表
Select表名&&指定操作工作区
3、表之间的关联:
控制不同工作区中表间记录指针关系的临时联系
格式:
SetRelationTo关联字段Into被关联表
注:
建立表之间关系时,被关联表的关联字段必须是主控索引
第三部分结构化程序设计
一、程序与程序文件:
1、程序:
能够完成一定任务的命令的有序集合。
通常被存放在称为程序文件或命令文件的文本文件中,扩展名为.prg。
当运行程序时,系统会按一定的次序自动执行包含在程序文件中的命令。
2、程序建立和修改:
ModifyCommand文件名&&书写时一句一行,可用分号续行
如:
编写程序s1.prg,,其功能是求半径为3的圆的面积
Settalkoff&&确定非输出性执行结果显示在屏幕
Clear
r=3
s=pi()*r*r
?
“面积为”,s
Return&&结束当前程序的执行,返回上级程序
3、程序的执行
Do程序文件名
二、输入和输出语句:
Input[提示字符串]To变量&&执行后,允许输入任意类型数据,但必须加定界符
如:
Input“请输入半径:
”toR
三、程序的控制结构:
1、顺序结构:
程序按语句排列的先后顺序逐条执行。
2、选择结构:
程序运行时,按照一定的条件选择执行不同的语句。
主要用来解决选择、转移问题。
(1)条件语句:
If条件表达式
语句序列1
[else
语句序列2]
Endif
功能:
执行时,首先判断条件是否为真。
若为真,则执行语句序列1;若为假,则执行语句序列2。
然后执行Endif后语句。
如:
编写程序s3.prg,其功能是在学生表中按学号查询,如找到就显示该生的信息,否则提示查无此人。
OpenDataScror_Manager
UseStudent
Accept“请输入学号:
”toXH
SeleStudent
LocateFor学号=XH
IfNotEof()
BrowseFor学号=XH
Else
Messagebox(“查无此人!
”)
Endif
CloseData
(2)多向分支语句
Docase
Case条件表达式1
语句序列1
Case条件表达式2
语句序列2
…
Case条件表达式n
语句序列n
[Otherwise
语句序列n+1]
Endcase
功能:
系统从多个条件中逐个测试条件表达式,若为真,即执行相应条件表达式后的语句序列;若所有条件均为假,则执行Otherwise后面的语句。
最后执行Endcase后语句。
如:
编写程序s4.prg,其功能判断一个数,若为正,则显示1;若为负,则显示-1;否则显示0。
Inupt“请输入数:
”ToX
DoCase
CaseX>0
Y=1
CaseX<0
Y=-1
Otherwise
Y=0
Endcase
?
Y
3、循环结构:
程序运行时,重复执行一段命令若干次或直到不满足条件为止。
(1)条件循环(当型循环):
当不满足条件时,循环终止
DoWhile条件表达式
命令序列1
[Exit]
命令序列2
[Loop]
命令序列3
Enddo
功能:
语句执行时,先判断条件表达式的值,若为真,则执行循环体内的命令;若为假,则执行enddo后语句。
Exit是强行退出循环语句,Loop为转到循环的入口语句。
如:
编写程序s5.prg,其功能为将成绩表中的每个人各科分数汇总到学生表中
OpenDataCjgl
UseStudentIn0
UseScoreIn0
SeleStudent
GoTop
DoWhileNotEof()
SeleScore
LocateFor学号=Student.学号
ReplStudent.总分With语文+数学+英语+政治
SeleStudent
Skip
EndDo
CloseData
(2)计数循环:
超过计数值时终止
For循环变量=循环初值To循环终值[Step步长]
循环体
Endfor|Next
功能:
系统执行该命令时,首先将循环初值赋给循环变量,然后判断循环变量的值是否超过终值,若超过则跳出循环,执行Endfor后的命令;否则执行循环体内的命令序列。
默认步长为1
如:
编写程序S7.PRG,功能为求任意数的阶乘
S=1
Input”请输入数:
”ToN
ForI=1ToN
S=S*I
EndFor
?
N,”的阶乘是”,S
如:
程序S6.Prg,功能为求任意数的累加值.
S=0
Input”请输入数:
”ToN
ForI=1ToN
S=S+I
EndFor
?
N,”的累加值为”,S
(3)指针循环
Scan[范围][For条件表达式]
循环体
Endscan
功能:
在指定范围内,用记录指针控制循环次数。
自动判断eof()值。
4、控制结构的嵌套:
入口与出口成对出现,不允许交叉。
四、过程及过程调用
相对独立并能完成特定功能的程序段,称为过程或子程序。
用于调用程序段的程序称为主程序。
1、过程的定义
Procedure|Function过程名
如:
程序S8.PRG
a=10
b=100
dosub
?
”a=”,a,”b=”,b
sub()
?
”a=”,a,”b=”,b
proceduresub
a=a+10
b=b+100
return
endproc
命令序列
[Return[表达式]
Endproc|Endfunc
过程可以放在程序文件代码的后面,
也可以保存在称为过程文件(.Prg)的单独文件中。
2、打开和关闭过程文件
SetProcTo[过程文件列表]
3、调用过程
Do过程名或过程名()
(1)带参调用
Do子程序名With实参表&&一般为传地址,加()传值
或子程序名(实参表)&&参数传递受SetUdfparmsToValue|Reference影响
(2)接受参数
Parameters形参表&&形参和实参一一对应
如:
编写程序S10.prg,其功能是求任意数的阶乘。
S=1
Input“请输入数:
”ToN
SetUdfparmsToReference
JC(S,N)
?
N,”的阶乘是”,S
ProcedureJC
ParametersM,X
ForI=1ToX
M=M*I
Endfor
如:
编写程序S9.Prg,其功能是交换两个变量的值
Input“请输入a:
”ToA
Input“请输入b:
”ToB
DoSwapwithA,B
?
”A=”,A,”B=”,B
ProcedureSwap
ParametersX,Y
Tmp=X
X=Y
Y=Tmp
Endpro
五、变量的作用域:
变量的有效范围
1、全局变量:
在程序的任何嵌套中及在程序执行期间始终有效。
不自动释放。
Public变量名
2、私有变量在建立它的过程及下级过程中有效。
直接赋值
3、局部变量只在建立它的过程中有效。
Local称变量名
4、变量隐藏在建立它的过程及下级过程中有效,但其新值不会带回主程序或上级过程。
Private变量名
第四部分关系数据库标准语言SQL
SQL是结构化查询语言StructureQueryLanguage的缩写,其功能包括数据查询、数据操纵、数据定义、数据控制。
所有的关系数据库管理系统都支持SQL。
一、SQL语言的特点:
1、SQL是一体化的语言,可以完成数据库的所的工作;
2、SQL是一个高度非过程化的语言,只须描述用户要做什么,SQL即可交给系统自动完成;
3、语言简洁、高效,接近英语自然语言;
4、SQL适用于命令交互方式和程序方式。
二、查询功能:
数据查询是对数据库中的数据按指定内容和顺序进行检索输出,其格式为:
Select<字段列表>From<表列表>
[Where<查询条件>]
[OrderBy<排序字段>[Asc|Desc]]
[GroupBy<分组字段>[Having<限定条件>]]
[IntoTable自由表名][IntoCursor临时表名][IntoArray数组名][ToFile文本文件]
注:
字段名之间用逗号分隔,表名之间用逗号分隔,表名和字段名之间用点分隔(使用英文标点)。
1、简单查询:
基于单一表的查询
2、条件查询:
从数据表中找出满足条件的行,使用Where子句
(1)比较查询:
使用关系运算符
(2)多重条件查询:
使用逻辑运算符
(3)按数值范围查询:
使用Between…And…
(4)按(字段值)集合查询:
查询条件属于某个字段的一组值,使用In
(5)字符部分匹配查询:
在不知道精确值时,可以用Like(%任意长度、_一个字符)
(6)空值查询:
isnull
3、统计查询:
在原有数据基础上,通过计算输出统计结果
Sum(求和)、Avg(求平均)、Max(求最大值)、Min(求最小值)、Count(统计)
4、排序查询:
对最终结果排序,使用OrderBy(条件只是字段或列号)
5、分组查询:
对数据分类汇总,使用GroupBy(Having不能单独使用)
6、连接查询:
查询涉及到多个相关联的数据表,用关联字段连接。
(1)简单联接查询联接格式:
表1.字段名=表2.字段名
(2)超联接查询:
使用关键字Join联接表,用On关联字段
7、嵌套查询:
查询输出字段出自一个表,条件所涉字段出自相关联的表。
用关联字段传递中间结果
(1)返回一个值的子查询:
使用=
(2)返回一组值的查询:
使用=Any|Some|All
Any进行比较运算时,只要子查询中有一行能使结果为真,则结果为真。
All要求子查询中的所有行都使结果为真时,结果才为真。
(3)使用In
(4)使用Exists:
检查子查询中是否有结果返回(即是否存在元组)。
能用In的查询通常可以使用Exists。
8、结果输出:
二、数据操纵:
1、插入记录:
InsertInto表(字段列表)Values(值列表)
InsertInto表FromArray数组名
2、更新记录:
Update表Set字段=表达式[Where条件]
3、删除记录:
DeleteFrom表[Where条件]
三、数据定义
1、表的定义:
Crea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 VF 程序设计 教程