(2) 对表student.dbf,建立以学号为索引表达式的主索引;对表assign.dbf,建立以学号为索引表达式的普通索引。 (3) 建立永久关系。
将鼠标指向“student.dbf”表中的主索引“学号”,按下鼠标左键拖动到“assign.dbf”表中的普通索引“学号 ”上,然后释放鼠标左键,这时拖动过程中出现的小方块消失,并可看到两个表之间出现了一条连接线,表示两个表间的关系已经建立。
(4)运用同样的操作步骤建立表course和表assign之间的关系。 3、为表student和表assign之间建立的联系指定参照完整性,其中插入规则为“限制”,更新规则和删除规则为“级联”。
在数据库设计器窗口中单击鼠标右键,弹出快捷菜单,选择“编辑参照完整性”选项,在“参照完整性生成器”对话框中,选取父表列中的表student,再选中插入规则选项卡,点击“限制”单选钮。然后分别选中更新规则选项卡和删除规则选项卡,点击“级联”单选钮,最后单击“确定”。
验证插入规则是否“限制”:为成绩表assign增加一条记录,学号为“20080033”,由于学生表记录中无学号为“20080033”的学生记录,因此增加不了。
验证更新规则是否“级联”:把“student.dbf”中的学号“20080005”改为“20080105”,查看assign.dbf中的相关记录是否随之修改了。 验证删除规则是否“级联”:删除student.dbf”中的学号“20080001”的记录,查看assign.dbf中的相关记录是否随之删除。 (三)多表操作
1、工作区选择操作。
2、分别在两个工作区打开“student.dbf”与“assign.dbf”,建立表间的临时关联,移动student.dbf的记录指针,查看某个学生的成绩记录。
五、 实验注意事项
1、若要修改记录,必须在打开表时设置独占方式,在打开对话框选择“独占”复选框,或在USE命令中加EXCLUSIVE选项。
2、用COPY FILE复制带有备注文件的表时,除安排一条命令复制表文件之外,还要安排一条命令复制备注文件,否则,在Visual Foxpro环境下不能打开复制所得到的新表。
六、 思考题
1、分别用命令 LIST 和 DISP 显示表中的记录,这两个命令有什么不同之处?
2、追加新纪录的菜单命令有几种,他们有什么不同? 3、什么是表间的一一关系、一多关系?
实验四 Visual FoxPro6.0程序设计基础
一、 实验目的
1、熟悉程序的编辑环境以及VFP程序文件的建立、运行与调试方法,掌握VFP的基本输入输出命令,了解常用环境设置命令和程序控制命令,掌握顺序结构和分支结构的程序设计。
2、掌握循环结构的编写、调试与运行,了解多重循环语句的用法。 3、掌握子程序、自定义函数、过程的编写、调试与运行;了解变量的作用域。
二、 实验原理
程序文件的建立与执行、程序的基本结构
三、 主要仪器及耗材
PIV以上计算机,安装Visual FoxPro6.0
四、 实验内容与步骤
一、顺序结构与选择结构
1、编写程序prog9-1.prg,实现以下功能:输入圆的半径,计算出圆的面积和周长。
分析: 圆周长?2?R 圆面积??R2 参考程序:input “请输入圆半径:” to r l=2*PI( )*r
s=PI( )*r*r
?”圆的周长是”,l ?”圆的面积是”,s
2、编写程序prog9-2.prg,根据输入的学生姓名,从表\中查找该学生的记录信息,并显示在屏幕上。 参考程序:use student
accept “请输入学生姓名:” to xm list for 姓名=xm use return
3、创建程序文件prog9-3.prg,从表student中查找指定日期以后出生的学生。
参考程序:open database 学生成绩数据库.dbc
use student
input “请输入日期:” to rq
select * form student where 出生日期>rq use
close database return
运行该程序时请注意输入日期的格式。
4、编写程序prog9-4.prg,从表\中,根据姓名查询指定学生的记录,若找到了则显示该学生的记录在屏幕上,若没有找到,则输出“XX同学不存在!”(其中XX代表输入的姓名)。 参考程序:set exact on Use student
Input “请输入要查找的学生姓名:” to xm Locate for 姓名=xm If found( ) then
Display Else
?xm+”同学不存在!” Endif Use Return
5、编写程序prog9-5.prg,根据用户输入的百分制成绩,转换成相应的等级输出。等级划分标准为:90-100分 优秀;80-89分 良好;70-79 分 中等;60-69分 及格;60分以下为不及格。 参考程序:input “请输入分数:” to fs
If fs>100 or fs<0 then
Input “分数不对,请重新输入分数:” to fs
Endif Do case
Case fs>=90 and fs<=100
?”你的成绩优秀!真棒啊!” Case fs>=80 and fs<90 ?”你的成绩良好!” Case fs>=70 and fs<80
?”你的成绩中等,还要加油哦!” Case fs>=60 and fs<70
?”你的成绩刚及格,努力呀!” Otherwise
?”你的成绩不及格。。。”
Endcase return
二、循环结构
1、编写程序exp01.prg,求出1至10的连续自然数的和,并将结果输出在屏幕上。
参考程序:clear
S=0
For i=1 to 10 S=s+i Next
?”s=”,s
2、编写程序exp02.prg,求1到100以内连续自然数的和,当和超过2000时停止,并将结果输出在屏幕上。 参考程序:clear
S=0 I=1
Do while i<100
S=s+i
If s>=2000
Exit Endif I=i+1 Enddo ?”s=”,s ?”i=”,i
3、编写程序exp03.prg,要求逐条显示表student中所有男生的记录。(注意:要求已设置好默认工作目录) 参考程序:use student
Scan for 性别=”男”
Display Endscan
Use return
4、编写程序exp04.prg,要求逐行打印出能被7整除的自然数,当这样的数达到20个时结束程序。
程序分析:本题不知道循环变量的终值是多少,因此条件不能直接给定,而是当“被7整除的数达到20个时”结束循环,因此,我们设定循环条件为无限循环,满足条件时再退出循环。 参考程序:n=0
I=1
Do while .t.
If int(i/7)=i/7
?i N=n+1 Endif If n>=20
Exit Endif I=i+1 enddo
5、编写程序exp05.prg,要求在屏幕上打印一个用“*”组成的直角三角形如图所示:*
** *** **** *****
参考程序:for i=1 to 5
For j=1 to i ??”*” Next ? next
6、(*)编写程序exp06.prg,要求在屏幕上打印一个用“*”组成的等腰三角形如图所示: *
*** ***** ******* *********
参考程序:for i=1 to 5
??space(6-i) For j=1 to 2*i-1 ??”*” Next ? next
相关推荐: