首页 百科知识 表的基本操作

表的基本操作

时间:2022-10-17 百科知识 版权反馈
【摘要】:1.在Visual FoxPro系统主菜单下,用“文件”菜单\“打开”,选择存储器中的MYFILE文件夹,打开项目XJGL.PJX;或者在命令窗口用命令MODI PROJ XJGL。选择MYFILE文件夹,选择表文件“学生.DBF”,单击“确定”按钮,即可看到该表被添加到了XJGL.PJX中。使用表向导,就是把已有的表作为“样本”,在向导的引导下,通过筛选、修改等操作完成新表的创建。对于本实验来说,没有现成的“样本”。

实验三 表的基本操作

实验目的

1.掌握Visual FoxPro数据表的创建、表结构的修改。

2.掌握Visual FoxPro数据表记录的基本操作。

3.掌握表内容的索引与排序操作。

4.掌握多工作区的应用。

实验题目

1.在MYFILE文件夹下创建教材中的几个表:“学生.DBF”、“选课.DBF”、“课程.DBF”,并输入记录;再创建“成绩.DBF”表,其结构及记录如图3-1、图3-2所示。

img51

图3-1 成绩.DBF表结构图

img52

图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所示。

img53

图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.索引和排序有何区别?

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈