实验三+表的基本操作.docx
《实验三+表的基本操作.docx》由会员分享,可在线阅读,更多相关《实验三+表的基本操作.docx(16页珍藏版)》请在冰豆网上搜索。
![实验三+表的基本操作.docx](https://file1.bdocx.com/fileroot1/2023-4/21/89c477b5-efec-4673-89b3-644403f29228/89c477b5-efec-4673-89b3-644403f292281.gif)
实验三+表的基本操作
实验三表的基本操作
一、实验目的
1.掌握表建立的方法以及修改表结构的方法。
2.掌握表中数据输入的方法。
3.掌握记录指针的移动方法。
4.掌握表的基本操作:
追加、插入、修改、显示、删除和恢复记录。
5.掌握表中的数据访问控制方式。
6.掌握表的排序和索引及使用。
7.掌握多个工作区和多表的操作方法。
二、实验内容和步骤
1.创建自由表。
(1)创建学生情况表(xsqk.dbf)
表结构如下:
字段名类型宽度小数位索引null
学号C8
姓名C8
性别C2
专业C12
出生日期D8
入学分数N30
团员L1
备注M4
照片G4
①在D盘创建学生管理文件夹,选择“工具/选项/文件位置”把该文件夹设为VFP的默认工作目录。
②选择“文件/新建/表/新建文件”,在“创建”对话框中的输入表名文本框输入“xsqk”,单击“保存”按钮。
③进入图1所示的表设计器,依次设置表的所有字段名字、类型、宽度和小数位数。
最后单击“确定”按钮。
④系统提示现在录入记录吗,单击“是”,录入下面两条记录。
⑤录入两条记录完毕,选择“显示/浏览…”命令查看录入的两条记录。
⑥选择“显示/追加方式”命令,继续输入以下三条记录。
⑦选择“显示/表设计器”命令,或在命令窗口输入“MODIFYSTRUCTURE”,打开表设计器,修改表结构,在性别后加一字段籍贯(c,20)。
(2)创建课程表(kc.dbf)
①表结构如下:
字段名类型宽度小数位索引null
课程号C4
课程名C12
学分N10
先修课C10
②
表结构建立完毕,输入以下记录:
(3)创建成绩表(cj.dbf)
①表结构如下:
字段名类型宽度小数位索引null
学号C8
课程号C4
学期C1
成绩N30
②在表中输入以下记录:
建好的表,请截图展示:
2.打开表并查看表中记录。
(1)显示学生情况表(xsqk.dbf)中的记录。
菜单操作:
①选择“文件/打开”命令,在打开对话框中把文件类型设为“表(*.dbf)”,如图2所示。
②选定“xsqk.dbf”,单击“确定”按钮,即打开xsqk表,观察主窗口中状态栏的变化。
③选择“显示/浏览…”命令,即可浏览查看xsqk表中的记录。
命令法:
1打开表:
USExsqk
2浏览记录:
BROWSE
3关闭表:
USE
(2)用菜单操作和命令两种方法显示课程表(kc.dbf)中的记录。
(3)用菜单操作和命令两种方法显示成绩表(cj.dbf)中的记录。
3.表中记录定位。
(1)打开学生情况表(xsqk.dbf),将记录指针指向第1记录,并测试函数recno(),eof(),bof()的结果。
菜单操作:
1打开xsqk.dbf,选择“显示/浏览…”命令,浏览表中记录。
2选择“表/转到记录/第一个”命令。
3在命令窗口输入命令:
?
recno(),eof(),bof()
4显示结果为:
1.F..F.
命令法:
1打开表:
USExsqk
2定位记录:
GO1
3测试函数结果:
?
recno(),eof(),bof()
(2)分别用菜单法和命令法进行下列操作,然后把测试结果填入表中。
移动记录指针测试函数的值
定位记录指针
RECN()的值
EOF()的值
BOF()的值
定位第1条记录后,执行SKIP-1
1
F
F
第3条记录
3
F
F
第5条记录
5
F
F
定位最后一条记录
5
F
F
定位最后一条记录后,执行SKIP+1
6
T
F
(3)条件定位
1打开表:
USExsqk
2查找姓名为张晓伟的记录。
命令:
LOCATEFOR姓名="张晓伟"
3在命令窗口用found()函数和Eof()函数测试是否找到该记录。
Found()函数的值是:
T
分析结果:
找到了就是真
Eof()函数的值是:
F
分析结果:
Eof是文件尾,找到为假,找不到为真。
4.修改表中记录。
把课程表中所有3学分改为4学分。
(1)用手工方式修改表中记录。
1选择“文件/打开”命令,打开课程表(kc.dbf)。
2选择“显示/浏览…”命令,浏览表。
3移动记录指针到学分为3的地方,直接输入4即可。
注意:
修改时一定要小心谨慎。
(2)批量修改记录。
把课程表中所有4学分重新改为3学分。
菜单操作:
1选择“文件/打开”命令,打开课程表(kc.dbf)。
2选择“显示/浏览…”命令,浏览表。
3选择“表/替换字段”命令,打开图3所示“替换字段”对话框。
4
把所有学分为4的课程的学分改为3。
图4替换字段对话框
命令法:
1打开表:
USEkc
2把所有学分为4的课程的学分重新改为3。
命令:
REPLACEALLkc.学分WITH3FORkc.学分=4
5.删除与恢复表中记录。
(1)逻辑删除学生情况表(xsqk.daf)中专业为“市场营销”的所有记录。
菜单操作:
1选择“文件/打开”命令,打开学生情况表(xsqk.dbf)。
2选择“显示/浏览…”命令,浏览表。
3选择“表/删除记录”命令,打开图5所示“删除”对话框。
4在“删除”对话框设置删除专业为“市场营销”的记录。
5单击“确定”按钮,所有“市场营销”专业的记录打上了黑色删除标记。
图5删除对话框
命令法:
1打开表:
USExsqk
2逻辑删除专业为“市场营销”的记录。
命令:
DELETEALLFORxsqk.专业="市场营销"
(2)物理删除记录和恢复记录
去掉张晓伟所打的删除标记,彻底删除其他打上删除标记的记录。
菜单操作:
1选择“文件/打开”命令,打开学生情况表(xsqk.dbf)。
2选择“显示/浏览…”命令,浏览表。
3用鼠标单击记录张小伟前的黑色删除标记,即可去掉删除标记。
也可选择“表/恢复记录”命令去掉删除标记。
4选择“表/彻底删除”命令可以物理删除已打上删除标记的记录。
命令法:
1打开表:
USExsqk
2恢复张小伟这条记录。
命令:
RECALLALLFORxsqk.姓名="张晓伟"
3物理删除其它打上删除标记的记录。
命令:
PACK
6.表的排序与索引。
(1)表的排序
对学生情况表(xsqk.daf)按入学分数从高到低排序生成表文件rxfs.dbf,并检查排序结果。
命令:
usexsqk
sorttorxfson入学分数/d
(2)建立表的索引
对学生情况表(xsqk.dbf)建立以学号为主关键字的候选索引xh。
菜单操作:
1选择“文件/打开”命令,打开学生情况表(xsqk.dbf)。
2选择“显示/表设计器”命令,打开表设计器。
3在“索引”区域选择升序或降序。
4单击“索引”选项卡,打开如图6所示的建立索引对话框,在索引名处输入“xh”,类型设为“候选索引”,单击“确定”按钮。
图6建立索引
命令法:
1打开表:
USExsqk
2建立索引:
INDEXON学号TAGxhCANDIDATE
参照以上两种方法对学生情况表建立以下索引:
1以姓名为关键字建立普通索引xm。
2以出生日期为关键字建立普通索引csrq。
3以入学分数为关键字建立普通索引rxfs且降序排列。
命令:
①USExsqk
INDEXON姓名TAGxm
②indexon出生日期tagcsrq
③indexon入学分数tagrxfsdesc
参照以上两种方法对成绩表cj.dbf建立以下索引:
1以学号为关键字建立普通索引xh;
2以课程号为关键字建立普通索引kch;
3以学号+课程号为关键字建立候选索引(xhkc)
命令:
①usecj
indexon学号tagxh
②indexon课程号tagkch
③indexon学号+课程号tagxhkccand
(3)索引查询的使用。
按姓名查询张晓伟的情况,并测试是否找到,如果找到显示结果。
1打开学生情况表(xsqk.dbf):
USExsqk
2把姓名为关键字建立的普通索引xm作为主控索引:
SETORDERTOTAGxm
3索引查找:
SEEK”张晓伟”
4测试查找结果:
?
RECNO(),FOUND()
4.T.
5显示查找结果:
DISPLAY
参照上述步骤查找学号为“20070105”的学生情况,并测试是否找到,如果找到显示结果。
写出命令序列:
USExsqk
setordertotagxh
seek"20070105"
?
RECNO(),FOUND()
DISPLAY
参照上述步骤查找出生日期为“12/01/88”的学生情况,并测试是否找到,如果找到显示结果。
写出命令序列:
usexsqk
setordertotagcsrq
seek{^1988/12/01}
?
RECNO(),FOUND()
DISPLAY
7.多个工作区操作。
(1)练习在多个工作区打开多个表。
菜单操作:
1选择“窗口/数据工作期”命令,打开数据工作期对话框。
2依次选择“打开”按钮,打开xsqk,kc,cj三个表,如图7所示。
3选中工作表,单击“关闭”按钮可以依次关闭所有表。
图7数据工作期窗口
命令法:
1在1区打开学生情况表:
SELECT1
USExsqk
2在2区打开课程表:
SELECT2
USEkc
3在3区打开成绩表:
SELECT3
USEcj
4关闭所有打开的表:
CLOSETABLES
(2)多表数据查询。
列出李小霞所选的课程号及成绩。
1在1区打开学生情况表(xsqk.dbf)定位李小霞。
命令:
SELE1
USEXSQK
setordertotagxm
SEEK"李小霞"
display
2在2区打开成绩表(cj.dbf),显示成绩表中和1区学号相同的记录就是李小霞的成绩。
(要求:
最后显示的字段有学号,姓名,课程号,成绩)
命令:
SELE1
USEXSQK
setordertotagxm
SEEK"李小霞"
sele2
usecj
setordertotagxh
seek"20070101"
display
(3)表的关联
创建学生情况表(xsqk.dbf)和成绩表(cj.dbf)的一对多关联,并显示关联结果。
菜单操作:
1选择“窗口/数据工作期”命令,打开数据工作期对话框。
2依次打开表xsqk和cj。
3选中cj表,单击“属性”命令按钮,把cj表的索引顺序选为xh。
4选中xsqk表,单击“关系”按钮,然后单击cj表,在图8所示的“表达式生成器”对话框中选择“学号”字段,单击“确定”按钮。
两表已经建立关联。
5单击“一对多”按钮,为两表建立一对多关联。
6
在命令窗口输入命令“BROWSEFIELDS姓名,cj.课程号,cj.成绩”,显示一对多关联后结果,如图9所示。
图8表达式生成器窗口
图9一对多关联后结果
命令法:
1选择工作区1打开学生情况表(xsqk.dbf)。
命令:
sele1
Usexsqk
2选择工作区2打开成绩表(cj.dbf),并把按学号字段建立的索引作为主索引。
命令:
usecj
Indexon学号tagxh
3重新回到工作区1,建立表xsqk和cj的关联。
命令:
sele1
Setrelationto学号intocj
4建立一对多关联:
命令:
setskiptocj
5在命令窗口执行“BROWSEFIELDS姓名,cj.课程号,cj.成绩”显示一对多关联后结果和图9一致。