《VisualFoxPro80程序设计》实验教学大纲.docx
《《VisualFoxPro80程序设计》实验教学大纲.docx》由会员分享,可在线阅读,更多相关《《VisualFoxPro80程序设计》实验教学大纲.docx(31页珍藏版)》请在冰点文库上搜索。
《VisualFoxPro80程序设计》实验教学大纲
《Visual FoxPro8.0程序设计》实验教学大纲
课程名称(中文):
VisualFoxPro8.0
(英文)VisualFoxProcourse
课程编号:
课程性质:
非独立设课课程属性:
基础课程
总学时:
80实验学时:
40总学分:
4
应开实验学期:
适用专业:
_计算机科学与技术_____________
先修课程:
计算机基础
一、 课程简介
数据库技术产生于本世纪60年代未70年代初,该技术聚集了数据处理最精华的思想,是管理信息最先进的工具,它是离散数学、编译原理、数据结构、操作系统、程序设计等许多软件知识的综合应用,其理论性和实践性都很强,是使用计算机进行各种信息管理的必备知识。
而VisualFoxproforwindows则是基于Windows操作系统的比较优秀的数据库程序设计语言。
本课程是计算机应用专业的一门专业基础课。
本课程简要阐述了数据库原理与Foxpro重组而构成的一门课程。
该课程包括三个部分的内容------原理、程序设计语言Foxpro及应用系统开发的实例。
学习本课程的基本要求是:
1. 掌握数据库、数据表的基本概念
2.掌握关系数据库的基本操作
3.掌握可视化编程的基本思想
4.掌握VisualFoxPro的语句及语法规则
5.熟悉常用控件在编程中的应用
6.利用VisualFoxPro编写一般应用程序
二、 实验目的与要求
我们在学习《VFP》这门课的同时,让学生通过上机实验,了解数据库应用系统的基本设计方法,学会使用FoxProforwindows软件掌握开发数据库应用系统的初步能力。
目的是通过教学培养学生具有一定的数据库基础知识和实际应用能力。
三、 实验方式与注意事项
本课程所有实验均需上机进行,每个实验都有明确的实验目的,并根据实验要求提供若干难度不同的实验题,学生上机时可根据教师的具体安排、学时要求和个人熟练成度,选择每个实验的部分内容作为练习,并且每个学生要保存实验作业档案备查,。
具体要求如下:
1. 学生按照实验要求,上机前写好上机实验预习报告,内容包括:
实验的目的、内容、实验步骤。
2. 上机实验时按实验要求完成每一个实验的内容。
3. 课后认真书写实验报告。
四、 实验报告
1. 实验报告采用统一的实验报告纸,实验封面包括:
课程名称、实验名称、实验序号、班级、姓名、学号、实验时间。
2. 实验报告书写规范,应包括:
实验目的和要求、实验内容、实验步骤、实验纪录。
3. 实验报告应及时上交给任课教师批改、评分。
五、 考试(考核)方法与规定
实验指导教师检查学生上机的出勤情况、实验内容及实验报告,给出实验成绩。
实验成绩记入平时成绩,占平时成绩的30%。
六、 实验项目设置与内容
序号
实验名称
计划课时数
实验对象
学生数
分组
是否综合性实验
备注
1
基本命令与函数
4
06级本、专
135+89
2
否
否
2
自由表(Table)的建立与操作
6
同上
135+89
2
否
否
3
数据库及数据库表的操作
2
同上
135+89
2
否
否
4
创建查询与视图(SQL)
4
同上
135+89
2
否
否
5
结构化程序设计
4
同上
135+89
2
否
否
6
表单的创建
6
同上
135+89
2
否
否
7
报表与标签的设计
2
同上
135+89
2
否
否
8
菜单与工具栏的设计
2
同上
135+89
2
否
否
9
课程设计
10
同上
135+89
2
是
否
编写人:
迟庆云
实验1VFP上机环境及常用函数的使用
实验目的:
熟悉VFP上机环境、掌握FoxPro常用函数的使用。
实验环境:
满足VisualFoxPro8.0及其以上版本所要求的计算机硬件和软件环境。
实验内容:
说明:
exp---代表表达式,expN---代表数值表达式,expC---代表字符表达式,expL---代 表逻辑表达式,expD---代表日期表达式
注意:
在VisualFoxPro环境下,命令中的标点符号只能为英文标点,如逗号(,),括号([])等。
一、常用数学运算函数
1、取整函数INT(expN)和四舍五入函数ROUND(expN1,expN2)
功能:
INT(expN)返回数值表达式的整数。
ROUND(expN)返回指定数值表达式位置进行四舍五入的结果。
expN2指明四舍五入的位置,若expN2大于零,那么表示的是要对小数进行保留的位置,若expN2小于零,那么表示的是整数部分的舍入的位置。
?
INT(12.9),INT(-7.6),INT(12.45),INT(-7.25)
?
ROUND(1234.5267,2),ROUND(1234.5267,1),ROUND(1234.5267,-1)
2、绝对值函数ABS(expN)
功能:
返回expN的绝对值
?
ABS(20),ABS(-20)
3、求平方根函数SQRT(expN)
功能:
返回expN的绝对值
?
SQRT(48.5*48.5),SQRT(64)
4、指数函数EXP(expN)
功能:
返回expN的以e为底的指数
?
EXP
(1),EXP(-1)
5、对数函数LOG(expN)、LOG10(expN)
功能:
LOG(expN)表示以e为底的对数函数,LOG10(expN)表示以10为底的对数函数
?
LOG(3),LOG10(1000),LOG(0.23),LOG10(0.23)
6、求最大值MAX(exp1,exp2,exp3...)和最小值MIN(exp1,exp2,exp3...)函数
功能:
MAX()计算各自表达式的值,并返回其中的最大值
MIN()计算各自表达式的值,并返回其中的最小值
说明:
字符型数据按ASCII顺序,常用汉字按拼音字母的顺序
?
MAX(59,35,28),MAX("2","12","05"),MAX("男","女")
?
MIN(59,35,28),MIN("汽车","飞机","轮船")
7、随机函数RAND(expN)
功能:
当expN为小于或等于零的数值时,每次运行的结果都不一样,且在0~1之间的一个小数,当expN为大于零的数值时,每次运行的结果都一样,且在0~1之间的一个小数。
?
RAND
(1)
?
RAND()
?
RAND(-1)
?
RAND
(2)
?
RAND
(2)
8、符号函数SIGN(expN)
功能:
SIGN()返回指定数值表达式的符号,当表达式的运算结果为正、负、零时,函数值分别为1、-1、0
?
SIGN(-234),SIGN(0),SIGN(2345)
9、圆周率函数PI()
功能:
返回圆周率π(数值型)
?
pi()
10、余数函数MOD(expN1,expN2)
功能:
返回两个数值相除后的余数。
ExpN1是被除数,ExpN2是除数。
余数的正负号与除数相同,如果被除数与除数同号,那么函数值为两数相除的余数;如果被除数与除数异号,则函数的值为两数相除的余数再加上除数的值。
?
MOD(10,3),MOD(10,-3),MOD(-10,3)MOD(-10,-3)
二、字符串操作函数
1、宏替换函数&MexpC
功能:
一是替换字符型内存变量的值,二是将数值型字符转换为数值型数据。
如果该函数与其后的字符无明确分界,则要用"."作函数结束标识。
C2="Computer"
C1="2"
C="c&c1"
?
&C1.2*3,&C
2、求子字符位置函数AT(expC1,expC2)
功能:
AT()的函数值为数值型,如果expC1是expC2的子串,则返回expC1值的首字符在expC2中的位置;若不是子串,则返回0。
?
AT("345",123456"),AT("5","12367")
?
AT("abc","ABCDEabcde"),AT("abc","ABDCEabdce")
3、空格字符串生成函数SPACE(<数值表达式>)
功能:
返回由指定数目的空格组成的字符串。
4、删除前后空格函数TRIM(expC)、LTRIM(expC)、ALLTRIM(expC)
功能:
TRIM()返回指定字符表达式值去掉尾部(右边空格后形成的字符串。
LTRIM()返回指定字符表达式值去掉前导(左边)空格后形成的字符串。
ALLTRIM()返回指定字符表达式值去掉前导和尾部(前后)空格后形成的字符串
STORESPACE
(1)+"TEST"+SPACE(3)TOSS
?
TRIM(SS)+LTRIM(SS)+ALLTRIM(SS)
?
LEN(SS),LEN(TRIM(SS)),LEN(LTRIM(SS)),LEN(ALLTRIM(SS))
5、取子串函数LEFT(expC,长度)、RIGHT(expC,长度)、SUBSTR(expC,<起始位置>[,<长度>])
功能:
LEFT()从指定表达式值的左端取指定长度的子串。
RIGHT()从指定表达式值的右端取指定长度的子串。
SUBSTR()从指定表达式值的指定起始位置取指定长度的子串。
如果缺省第三个自变量<长度>,则函数从指定位置一直取到最后。
STORE"GOODBYE!
"TOX
?
LEFT(x,2),SUBSTR(x,6,2),SUBSTR(x,6),RIGHT(x,3)
6、计算子串出现次数函数OCCURS(expC1,expC2)
功能:
返回expC1在expC2中出现的次数,函数值为数值型。
若expC1不是expC2的子串,函数值为0。
STORE'abracadabra'TOs
?
OCCURS('a',s),OCCURS('b',s),OCCURS('c',s),OCCURS("e",s)
7、求字符串长度LEN(expC)
功能:
返回指定字符串的长度。
?
LEN("MicroSoftFoxPro2.6"),LEN(SPACE(10))
?
LEN(SUBS("AABBCCDD",6))
8、大小写转换函数LOWER(expC)、UPPER(expC)
功能:
LOWER()将指定表达式中的大写字母转化为小写字母,其它不变
UPPER()将指定表达式中的小写字母转化为大写字母,其它不变
A="InformationManagementSystem"
?
LOWER(A),UPPER(A)
9、字符串匹配函数LIKE(expC1,expC2)
功能:
比较两个字符串对应位置上的字符,若所有对应字符都匹配,函数返回逻辑值真,否则为假。
ExpC1可以包含统配符。
X="abc"
Y=abcd"
?
LIKE("ab*",X)、LIKE("ab*",Y)、LIKE(X,Y)、LIKE("ABc",X)
三、日期和时间函数
日期和时间函数的自变量一般是日期型数据或日期时间型数据。
1、系统日期DATE()和时间函数TIME()、DATETIME()
功能:
DATE()返回当前系统日期
TIME()以24小时制,以hh:
mm:
ss格式返回当前系统时间,函数值为字符串
DATETIME()返回当前系统日期时间,函数值为日期时间型。
?
DATE(),TIME(),DATETIME()
2、求年份YEAR(expD)、月份MONTH(expD)和天数DAY(expD)函数
功能:
YEAR()从指定的日期(时间)表达式表达式中返回年份。
MONTH()从指定的日期(时间)表达式表达式中返回月份。
DAY()从指定的日期(时间)表达式中返回月里面的天数。
这三个函数的返回值都为数值型。
STORE{^2001-08-18}TOd
?
YEAR(d),MONTH(d),DAY(d)
3、时HOUR(<日期时间表达式>)、分MINUTE(<日期时间表达式>)和秒SEC(<日期时间表达式>)函数
功能:
HOUR()从指定的日期时间表达式中返回小时部分(24小时制)。
MINUTE()从指定的日期时间表达式中返回分钟部分。
SEC()从指定的日期时间表达式中返回秒数部分。
这三个函数的返回值都为数值型。
STORE{^2001-03-1802:
30:
50P}TOt
?
HOUR(t),MINUTE(t),SEC(t)
四、转换函数
1、求字符串中的第一个字符的ASCII码值ASC(expC)
?
ASC("ABC"),ASC("abc")
2、将十进制数转换为相对应的ASCII码字符CHR(expC)。
?
CHR(66),CHR(65.89),CHR(65+32)
3、数值转换成字符串STR(expN[,<长度>[,<小数位数>]])
功能:
将expN的值转换成字符串,转换时根据需要自动进行四舍五入。
如果<长度>值大于expN的所有位数,则字符串加前导空格以满足规定的<长度>要求;如果<长度>值大于等于expN值的整数部分位数(包括负号)但又小于所有位数,则优先满足整数部分而自动调整小数位数;如果<长度>值小于expN值的整数部分位数,则返回一串星号(*)。
如果无小数位数和长度则<小数位数>的默认值为0,<长度>的默认值为10。
N=-123.456
?
"n="+STR(n,8,3)
?
STR(n,9,2),STR(n,6,2),STR(n,3),STR(n,6),STR(n)
?
STR(1234.56,7,2),STR(1234.56,6,2),STR(1234.56,5,2)
?
STR(1234.56,4,2),STR(1234.56,7),STR(1234.56,6)
?
STR(1234.56,5),STR(1234.56,4),STR(1234.56,3)
4、字符串转换成数值VAL(expC)
功能:
将由数字符号(包括正负号、小数点)组成的字符型数据转换成相应的数值型数据。
若字符串内出现非数字字符,那么只转换非数字字符前面部分的数字;若字符串的首字符不是数字符号,则返回数值零,但忽略前导空格。
STORE"-123"TOx
STORE"45"TOy
STORE'A45'TOz
?
VAL(x+y),VAL(x+z),VAL(z+y)
?
VAL("123.45A"),VAL("123.4A5"),VAL("123.A45")
?
VAL("12A3.45"),VAL(1A3.45"),VAL("A123.45")
5、字符串转换成日期CTOD(expC)或日期时间CTOT(expC)
功能:
CTOD()将expC转换成日期型数据。
CTOT()将expC转换成日期时间型数据。
SETDATETOYMD
SETCENTURYON&&显示日期或日期时间时,用4位数显示年份
D1=CTOD("^2004/1/4")
T1=CTOT("^2004/1/4")
?
D1,T1
6、日期或日期时间转换成字符串DTOC(expD|expDT)、TTOC(expDT)(expDT表示日期时间型数据)
功能:
DTOC()将日期(时间)型数据日期部分转换成字符串。
TTOC()将日期时间数据转换成字符串。
STOREDATETIME()TOt
?
DTOC(t),TTOC(t)
五、测试函数
1、值域测试函数BETWEEN(exp1,exp2,exp3)
功能:
判断一个表达式的值是否介于另外两个表达式的值之间。
当exp1值大于等于exp2且小于等于exp3时,函数值为逻辑真(.t.),否则函数值为逻辑假(.f.)。
如果exp2或exp3有一个是NULL值,那么函数值也是NULL值。
X=.NULL.
Y=100
?
BETWEEN(150,Y,Y+100),BETWEEN(90,X,Y)
2、空值(NULL)测试函数ISNULL(exp)
功能:
判断一个表达式的运算结果是否为NULL值,若是NULL值返回逻辑真(.t.),否则返回逻辑假(.f.)。
STORE.NULL.TOX
?
X,ISNULL(X)
3、"空"值测试函数EMPTY(exp)
功能:
根据表达式计算的结果判断是否为空值,是则返回逻辑真(.t.),否则为假(.f.)
不同数据类型的"空"值
数据类型空数据类型空
数值型0双精度0
字符型空串、空格、制表符、回车、换行日期型CTOD("")
货币型0日期时间型CTOD("")
浮点型0逻辑型.f.
整型0备注型无内容
4、数据类型测试函数VARTYPE(exp)
功能:
测试<表达式>的类型,返回一个大写字母。
用VARTYPE()测试变量的数据类型
返回字母数据类型返回字母数据类型
N数值型、浮点型、整型、双精度G通用型
C字符或备注型D日期型
Y货币型T日期时间型
L逻辑型XNull值
O对象型U未定义
X="AAA"
Y=10
X=.NULL.
Z=$100.2
?
VARTYPE(X),VARTYPE(Y),VARTYPE(Z)
5、文件尾测试函数EOF(工作区号|表别名)
功能:
当指针指向表文件尾为真,否则为假。
6、文件头测试函数BOF(工作区号|表别名)
功能:
当指针指向表文件头为真,否则为假
7、记录号测试函数RECNO(工作区号|别名)
功能:
返回当前表文件中或指定文件中的记录号。
8、记录数测试函数RECCOUNT(工作区号|表别名)
功能:
返回当前表文件或指定表文件中的记录数
9、记录删除函数DELETED(工作区号|表别名)
功能:
返回当前记录是否做了删除标记,是则为真,否则为假。
实验二数据实验2库及表的建立、数据的录入等基本操作
实验目的:
熟悉和掌握数据库文件的建立、数据的录入、数据的追加和插入操作。
实验环境:
满足VisualFoxPro3.0及其以上版本所要求的计算机硬件和软件环境。
实验内容:
一、建立数据库文件person.dbc,要求至少用两种方法建立。
二、建立表hd.dbf,表的结构和数据如下所示。
表文件结构:
字段名类型宽度小数位数
货号字符型6
品名字符型8
进口逻辑型1
单价数值型72
数量数值型20
开单日期日期型8
生产单位字符型16
备注备注型4
商标通用型4
记录数据:
货号品名进口单价数量开单日期生产单位备注商标
LX-750影碟机T5900.00496/08/10松下电器公司
YU-120彩电F6700.00496/10/10上海电视机厂
AX-120音响T3100.00595/10/11日立电器公司
DV-430影碟机T2680.00396/09/30三星公司从96年9月1日起调价
FZ-901取暖器F318.00696/09/05富利电器厂
LB-133音响T4700.00895/12/30索尼公司
SY-701电饭锅F258.001096/08/19爱德电器厂本产品属改进型
NV-920录放机T1750.00696/07/20先锋电器公司
操作要求:
1、建立库文件hd.dbf的文件结构后,立即输入前面6个记录的数据,其中商标字段的数据由自己自行在Windows环境下选择两个图标分别输入。
随后存盘退出。
2、重新打开库文件hd.dbf,并分别查看它的文件结构与记录数据,包括其中的备注字段与商标字段的数据。
3、在hd.dbf中再添加后两个记录数据,添加结束后在分别用Browse方式、Change方式查看库文件的记录数据。
4、试用Browse选单项中的各个功能以观察库文件的多种显示形式。
三、在数据库设计器中建立自由表bmdm.dbf(table)
表文件结构:
字段名类型宽度小数位数
部门号字符型2
部门名字符型8
记录为:
部门号部门名
11办公室
12设备科
21一车间
22二车间
23三车间
四、将自由表bmdm.dbf加入到数据库person.dbc中
实验内容:
一、建立数据库文件person.dbc,要求至少用两种方法建立。
二、建立表sp.dbf,表的结构和数据如下所示。
表文件结构:
字段名类型宽度小数位数
货号字符型6
品名字符型8
进口逻辑型1
单价数值型72
数量数值型20
开单日期日期型8
生产单位字符型16
备注备注型4
商标通用型4
记录数据:
货号品名进口单价数量开单日期生产单位备注商标
LX-750影碟机T5900.00496/08/10松下电器公司
YU-120彩电F6700.00496/10/10上海电视机厂
AX-120音响T3100.00595/10/11日立电器公司
DV-430影碟机T2680.00396/09/30三星公司从96年9月1日起调价
FZ-901取暖器F318.00696/09/05富利电器厂
LB-133音响T4700.00895/12/30索尼公司
SY-701电饭锅F258.001096/08/19爱德电器厂本产品属改进型
NV-920录放机T1750.00696/07/20先锋电器公司
操作要求:
1、建立库文件sp.dbf的文件结构后,立即输入前面6个记录的数据,其中商标字段的数据由自己自行在Windows环境下选择两个图标分别输入。
随后存盘退出。
2、重新打开库文件hd.dbf,并分别查看它的文件结构与记录数据,包括其中的备注字段与商标字段的数据。
3、在hd.dbf中再添加后两个记录数据,添加结束后在分别用Browse方式、Change方式查看库文件的记录数据。
4、试用Browse选单项中的各个功能以观察库文件的多种显示形式。
三、在数据库设计器中建立自由表bmdm.dbf(table)
表文件结构:
字段名类型宽度小数位数
部门号字符型2
部门名字符型8
记录为:
部门号部门名
11办公室
12设备科
21一车间
22二车间
23三车间
四、将自由表bmdm.dbf加入到数据库person.dbc中
五、在sp.dbf中,把符合下列要求的记录数据依次显示出来。
1、显示第5个记录;
2、第3个记录开始的共5个记录;
3、把第3个记录到第5个记录显示出来;
4、显示数量少于5的