实验三 表的基本操作
实验目的
1.掌握Visual FoxPro数据表的创建、表结构的修改。
2.掌握Visual FoxPro数据表记录的基本操作。
3.掌握表内容的索引与排序操作。
4.掌握多工作区的应用。
实验题目
1.在MYFILE文件夹下创建教材中的几个表:“学生.DBF”、“选课.DBF”、“课程.DBF”,并输入记录;再创建“成绩.DBF”表,其结构及记录如图3-1、图3-2所示。
图3-1 成绩.DBF表结构图
图3-2 成绩.DBF表记录图
把建好的这几个表均添加到实验二所创建的XJGL.PJX项目中。
2.对成绩.DBF表增加两个字段:总分(N,5,1),平均(N,4,1),然后追加两条记录
s0201109 吴红梅 sh 55.0 68.5 45.0
s0201110 郭晨光 ws 75.0 64.0 58.0
3.计算“成绩.DBF”表中每条记录的总分和平均字段的值,将平均分在80分以上(含80分)的记录和最后一名的记录备份为CJBF.DBF并显示。
4.利用“学生.DBF”、“选课.DBF”、“课程.DBF”显示学生选课的课程名称与该课程的成绩情况及学生的姓名。
实验步骤
3-1 实验步骤
分析:本实验的完成,一是可先打开项目文件XJGL.PJX,在项目中创建自由表;二是可先创建自由表,再把表添加到项目XJGL.PJX中。创建一个表,需分两步,首先创建表结构,然后再输入记录。
方法一:在项目XJGL.PJX创建表结构
1.在Visual FoxPro系统主菜单下,用“文件”菜单\“打开”,选择存储器中的MYFILE文件夹,打开项目XJGL.PJX;或者在命令窗口用命令MODI PROJ XJGL。
2.在项目管理器中,选择“数据”选项卡中的“自由表”,单击“新建”,如图3-3所示。
图3-3 项目管理器界面示意图
3.在“新建表”对话框中,选择“新建表”,进入“新建”对话框。
4.在此对话框中,选择“表”,再按“新建文件”按钮,进入“创建”对话框。
5.在“创建”对话框中,确定保存位置MYFILE文件夹,输入表文件名:学生,然后按“保存”按钮,进入“表设计器”。
6.在“表设计器”窗口中,定义表中所有字段的名字、类型、宽度。
7.定义完后,按“确定”按钮。
8.接下来你可选择是否输入记录。如果选择“是”,则立即进入记录的输入界面;也可选择“否”,则创建了一个只有表结构的空表,可待以后再输入记录。
方法二:先创建表,再添加至项目中
创建表有两种方式,一是利用表设计器,二是利用表向导。
(一)利用表设计器
选择启动表设计器的方法有:一是从主菜单开始;二是在命令窗口用CREATE命令。
1.用菜单方式
其步骤如下:
(1)在Visual FoxPro系统主菜单下,打开“文件”菜单,选择“新建”,进入“新建”对话框。
(2)重复方法一中的4~8步。
(3)用主菜单“文件”\“打开”,选择MYFILE文件夹,打开项目XJGL.PJX;或者在命令窗口用命令MODI PROJ。
(4)在项目管理器中,选择“数据”选项卡中的“自由表”,单击图3-3中的“添加”按钮,进入“打开”对话框。选择MYFILE文件夹,选择表文件“学生.DBF”,单击“确定”按钮,即可看到该表被添加到了XJGL.PJX中。
2.用CREATE命令
在命令窗口中输入如下命令:
(1)CREATE 学生 &&自动启动到表设计器;
(2)重复菜单方式中前面的操作即可。
(二)利用表向导
使用表向导,就是把已有的表作为“样本”,在向导的引导下,通过筛选、修改等操作完成新表的创建。对于本实验来说,没有现成的“样本”。
其余表文件的创建均如此操作即可。
3-2 实验步骤
分析:该实验应首先在表设计器中进行字段的添加,然后再添加记录。
1.打开表,如果在项目中,选择“成绩.DBF”,单击“修改”,则进入了“表设计器”中。如果未打开项目,则可利用主菜单“文件”\“打开”命令,还可在命令窗口用“USE成绩”来打开。注意:打开表文件时要选中“独占方式”,才能对表进行修改。
2.在表设计器中,添加总分和平均字段后,单击“确定”即可。
3.利用“显示”菜单\“浏览”命令,对表进行浏览。
4.在浏览方式下,选择“显示”菜单/“追加方式”命令,可添加记录;或者利用命令APPEND追加记录。
3-3 实验步骤
分析:首先通过记录修改命令REPLACE计算出总分和平均字段的值;要获得最后一名的记录,则需要按“平均”字段降序排序或索引;要根据班级汇总,则需要以“班级”字段索引。
参考步骤:
方法一:
1.为避免每次指明存放文件的位置,先用命令:
SET DEFAULT TO 存储文件的位置 &&设置文件的默认位置
2.打开“成绩.DBF”。
3.计算总分和平均字段的值:
REPLACE ALL总分WITH英语+数学+计算机,平均WITH(英语+数学+计算机)/3
4.按“平均”字段降序排序:
SORT ON 平均/D TO PJ
5.打开排序文件:USE PJ
6.将80分以上的记录备份到CJBF.DBF文件中并浏览,可以看到80分以上的记录已经在CJBF.DBF文件中了。
COPY TO CJBF FOR 平均>=80
USE CJBJ
BROW
7.打开排序文件PJ.DBF,把最后一名的记录取出:
USE PJ
GO BOTTOM &&把表指针指向最后一条记录
DIME AA(8)
SCATTER TO AA &&该命令把最后一条记录的值赋给数组各元素
?AA(1),AA(2),AA(7),AA(8) &&该命令显示各元素的值
8.打开CJBF.DBF文件,把数组的值添加到该文件中:
USE CJBF
APPEND BLANK &&追加一条空记录
GATHER FROM AA &&该命令把数组各元素的值依次传递给空记录的各个字段
BROW
请同学们把最后一条记录删除,再做一次。
方法二:
1.打开“成绩.DBF”。
2.计算总分和平均字段的值:
REPLACE ALL 总分WITH英语+数学+计算机,平均WITH(英语+数学+计算机)/3
3.根据“平均”字段降序建立索引:
INDEX ON 平均 TAG PJ DESC 或用INDEX ON –平均 TAG PJ
4.将80分以上的记录备份到CJBF.DBF文件中。
COPY TO CJBF FOR 平均>=80
5.把索引文件PJ的最后一条记录取出:
GO BOTTOM &&把表指针指向末记录
DIME AA(8)
SCATTER TO AA &&该命令把最后一条记录的值赋给数组各元素
?AA(1),AA(2),AA(7),AA(8) &&该命令显示各元素的值
6.打开CJBF.DBF备份文件,把数组的值添加到该文件中:
USE CJBF
APPEND BLANK &&追加一条空记录
GATHER FROM AA &&该命令把数组各元素的值依次传递给空记录的各个字段
BROW
3-4 实验步骤
分析:该实验的结果与给定的3个表都有关系,因此需要把他们通过关键字建立关联。涉及几个表的操作,就要我们决定父与子的关系,哪个表为父表,哪个表为子表,需要事先考虑好。通过观察,我们可以看到这3个表通过关键字两两关联,其中,选课表通过学号与学生表关联,通过课程号与课程表关联,因此我们可以考虑把选课表作为父表,其余两个表作为子表。
参考步骤:
1.分别在3个工作区打开3个表:
SELE 1
USE 选课 &&父表,即1号工作区为主工作区
SELE 2
USE 学生
INDEX ON 学号 TAG XH &&子表中必须以关键字段建立索引
SELE 3
USE 课程
INDEX ON 课程号 TAG KCH
2.在主工作区把父表分别与两个子表建立关联:
SELE 1
SET RELATION TO 学号 INTO B &&根据关键字与子表建立关联
SET RELATION TO 课程号 INTO C ADDITIVE
&&选项ADDITIVE表示在关联的基础上增加此关联
3.显示结果:“姓名”是B工作区学生表的字段,“课程名”是C工作区课程表中的字段,而“成绩”是当前工作区选课表中的字段。
LIST ALL FIELDS B.姓名,C.课程名,成绩
思考题
1.显示表“学生.DBF”中所有出生年月在1985年1月1日之前的学生记录。
2.显示表“学生.DBF”中所有“张”姓同学的记录。
3.用LIST命令显示表“学生.DBF”所有记录后,其EOF()和RECNO()的值分别是什么?
4.删除记录的方式有哪两种?它们的区别是什么?
5.索引和排序有何区别?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。