• 沒有找到結果。

Visual FoxPro程序设计基础实训教程 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "Visual FoxPro程序设计基础实训教程 - 万水书苑-出版资源网"

Copied!
16
0
0

加載中.... (立即查看全文)

全文

(1)

第 3 章 数据库和表的创建与管理

实验 1 自由表的建立与操作

一、实验目的 熟练掌握自由表的建立和基本操作。 二、实验内容  1.自由表的建立与数据输入 建立如图 3­1 所示名为“学生”的自由表并输入数据,同时为姓名为王小平的同学输入特 长和照片数据。 图 3­1  学生.dbf 中的部分数据 操作步骤: (1)在命令窗口中输入以下命令: create 学生 弹出“表设计器”对话框,在其中进行设置,如图 3­2 所示。 图 3­2  表设计器

(2)

(2)单击“确定”按钮。 (3)在弹出的“现在输入数据记录吗?”询问对话框中单击“是”按钮。 (4)在弹出的“记录输入”编辑窗口中输入记录,如图 3­3 所示。 图 3­3  “记录输入”编辑窗口 (5)在命令窗口中输入以下命令: use 学生 && 打开学生表 browse  && 浏览学生表 (6)双击“王小平”对应记录的 memo 字段,打开“备注型字段”编辑窗口,输入“唱 歌,踢足球”的字样后单击“关闭”按钮关闭编辑窗口。 (7)双击“王小平”对应记录的 gen 字段,打开“通用型字段”编辑窗口,选择“编辑” →“插入”命令,弹出“插入对象”对话框(如图 3­4(a)所示),选中“由文件创建”单选 按钮, “插入对象”对话框变成如图 3­4(b)所示。 (a) (b) 图 3­4  “插入对象”对话框 (8)单击“浏览”按钮,选择图形文件,再单击“确定”按钮, 照片出现在“通用型字段”编辑窗口中,如图 3­5 所示。  2.表数据的查看与修改 显示所有入校总分在 580 分以上的学生记录,并将所有女生的入 校总分增加 5 分,再添加一条空记录。 在命令窗口中输入以下命令: use 学生 && 打开“学生”表 图 3­5  插入照片

(3)

browse  for 入校总分>=580  && 浏览所有入校总分在 580 分以上的学生记录,此处的 browse  && 也可以用 list 或 display 代替

replace all 入校总分 with 入校总分+5 for 性别="女" 

&& 将所有女生的入校总分增加 5 分 list  && 显示修改后的所有记录 append  && 在表的末尾追加一条记录,将会弹出记录编辑窗口,读者可以 && 自行追加 list  && 再次显示所有记录 use  && 关闭“学生”表  3.表记录的定位、删除与恢复 逻辑删除所有的女生记录,然后恢复,再物理删除学生表中的最后三条记录。 在命令窗口中输入以下命令: use 学生 delete  for 性别="女"  && 逻辑删除所有女生记录 list  && 浏览所有记录,可以看到女生记录的前面打上了删除标记 recall  for 性别="女"  && 恢复所有女生记录 list  && 再次浏览所有记录,删除标志被取消 go  8  && 指针定位于第 8 条记录 delete  next 3  && 逻辑删除从第 8 条记录开始的最后三条记录 pack  && 彻底删除所有被逻辑删除的记录 list  && 再次浏览所有记录,最后三条记录消失 use  4.表的过滤 用 Visual  FoxPro 菜单法设置显示“学生”表中性别为“男”的学生的学号、姓名和性别 的逻辑表。 操作步骤: (1)打开“学生”表。 (2)单击“显示”→“浏览”命令,进入“浏览”窗口。再单击“表”→“属性”命令, 弹出“工作区属性”对话框,如图 3­6 所示。 图 3­6  “工作区属性”对话框 (3)在“数据过滤器”文本框中输入记录的筛选条件(性别="男")。 (4)单击“字段筛选”按钮,弹出“字段选择器”对话框,如图 3­7 所示。逐一筛选学

(4)

号、姓名和性别字段后单击“确定”按钮,返回“工作区属性”对话框。 图 3­7  “字段选择器”对话框 (5)在“允许访问”区域中选中“字段筛选指定的字段”单选按钮,然后单击“确定” 按钮。 (6)关闭表的“浏览”窗口,然后重新打开“浏览”窗口,此时显示的是“学生”表中 所有男生的学号、姓名和性别字段。  5.表结构的修改和复制及表文件的复制 将学生表的“入校总分”字段名修改为“总分” ,不设置小数位数,修改成功后将学生表 的表结构和表文件分别复制为“学生 1”表和“学生 2”表,并查看。 操作步骤如下: (1)在命令窗口中输入以下命令: use 学生 modify structure (2)在弹出的“表设计器”对话框中修改“入校总分”字段,如图 3­8 所示。 图 3­8  “表设计器”对话框 (3)单击“确定”按钮,在弹出的“是否永久修改表结构”对话框中单击“是”按钮。 (4)在命令窗口中继续输入以下命令: copy structure  to 学生 1  && 创建学生 1 表,该表具有和学生表相同的表结构 copy to 学生 2  && 创建学生 2 表,该表具有和学生表相同的表结构和表数据 use 学生 1  && 打开学生 1 表

(5)

list  structure  && 查看学生 1 表的表结构,和学生表完全相同 list  && 浏览学生 1 表数据,显示为空 use 学生 2  && 打开学生 2 表 list  structure  && 查看学生 2 表的表结构,和学生表完全相同 list  && 浏览学生 2 表数据,数据和学生表也完全相同

实验 2 表的排序、索引与多表关联

一、实验目的  1.了解并掌握表的排序和索引命令的使用。  2.学会有关表的查询、统计等命令的使用。  3.了解工作区的概念和使用,掌握多表的关联与连接命令的使用。 二、实验内容  1.使用 sort 命令对表数据进行物理排序 对学生表中的数据按照入校总分的高低进行降序排序,如果总分相同,则按照学生学号 进行升序排列,新生成的文件名为“总分排序” ,新文件中只保留学号、姓名和入校总分三个 字段。 在命令窗口中输入以下命令并执行: use 学生 browse  && 浏览学生表 sort  to 总分排序 on 入校总分/d,学号 fields 学号,姓名,入校总分 use 总分排序 && 打开总分排序表 browse  && 浏览总分排序表 use  2.独立索引文件的建立、使用与取消 建立独立索引文件,分别按照入校总分的高低对学生表进行逻辑降序和逻辑升序排序。 在命令窗口中输入以下命令并执行: use 学生

index on  ­入校总分 to rxzf1  && 建立独立索引文件 rxzf1.idx  index on 入校总分 to rxzf2  && 建立独立索引文件 rxzf2.idx  set index to rxzf1  && 使用独立索引文件 rxzf1.idx 

list  && 显示学生表按照入校总分降序排列

set index to rxzf2  && 使用独立索引文件 rxzf2.idx 

list  && 显示学生表按照入校总分升序排列 set index to  && 取消所有独立索引文件的使用 list  && 显示学生表恢复原始排序 use  3.复合索引文件的生成、索引标识的建立、使用与取消 生成复合索引文件,建立索引标识,按照入校总分的高低对学生表进行逻辑升序排序。 在命令窗口中输入以下命令并执行: use 学生

(6)

index on 入校总分 tag rxzf  && 建立索引标识 rxzf,建成后会自动使用 list  && 显示学生表按照入校总分升序排列 set order to  && 取消索引标识的使用 list  && 显示学生表恢复原始排序 use  4.在表设计器中建立索引标识并设置索引属性 利用表设计器建立关键字为“学号”的候选索引,索引名为 xh;建立关键字为“姓名” 的普通索引,索引名为 xm;建立关键字为“性别­dtoc(出生日期) ”的候选索引,索引名 为 xbcsrq。 操作步骤: (1)打开学生表。 (2)打开表设计器,如图 3­9 所示,并按图示修改表结构。 (3)单击“索引”选项卡,进行如图 3­10 所示的设置。 (4)单击“确定”按钮,在弹出的“结构更改为永久性更改?”提示框中单击“是” 按钮。 图 3­9  表设计器 图 3­10  设置“索引”选项卡 注意:主索引只能是数据库表才能建立。  5.使用 locate 命令对表数据进行查询 在学生表中分别搜索姓名为“张敏”和“王小小”的学生,并显示所有信息。

(7)

在命令窗口中输入以下命令: use 学生 locate  for 姓名="张敏"  && 状态栏显示“记录=8” display  && 显示姓名为“张敏”的记录信息 continue  && 状态栏显示“已到定位范围末尾” locate  for 姓名="王小小"  && 状态栏显示“已到定位范围末尾” display  && 没有找到姓名为“王小小”的记录 use  6.使用 seek 或 find 命令对表数据进行查询 在学生表中搜索入校总分为 570 分的学生信息。 在命令窗口中输入以下命令: use 学生 index  on 入校总分 to  rxzf  set  index  to  rxzf  seek  570  && 状态栏显示“记录:5/10” display  use  7.多工作区的操作与多表之间的关联 (1)建立学生表和选课表之间的关联,查询成绩。选课表数据如图 3­11 所示。 图 3­11  表“选课.dbf”中的数据 在命令窗口中输入以下命令并执行: use 学生 select   b  use 选课 && 在第二工作区中打开选课表

index  on 学号 to  xh  && 对选课表以学号字段为关键字建立索引

set  index  to  xh  select  a 

set  relation  to 学号 into  b  && 在第一工作区中利用命令与第二工作区中的表建立 && 关联

(8)

&& 课程号和成绩字段 (2)建立授课.dbf 与课程.dbf 之间的关联,列出教师号、课程号、课程名及课时。 授课表与课程表数据如图 3­12 和图 3­13 所示。 图 3­12  表授课.dbf 中的数据 图 3­13  表课程.dbf 中的数据 方案一:课程表作为父表,授课表作为子表。 在命令窗口中输入以下命令并执行: close  all  use 课程 select  3  use 授课 index  on 课程号 to  kch  set  index  to   kch  select  1  set  relation  to 课程号 into  c  set  skip  to  c  && 指出授课表为一对多关系中的多方 list  fields 授课.教师号,授课.课程号,课程名,课时 方案二:授课表作为父表,课程表作为子表。 在命令窗口中输入以下命令并执行: close all  use 授课 select  2  use 课程 index on 课程号 to kch1  set  index to kch1  select  1  set  relation  to 课程号 into  b  list  fields 教师号,课程号,课程.课程名,课程.课时  8.表的连接 将课程表和授课表连接成一个新表 kcsk.dbf,要求该新表中包含课程号、课程名、课时和 教师号。 在命令窗口中输入以下命令并执行: use 课程 select  2  use 授课

join  with  a  to  kcsk  fileds 课程号,a.课程名,a.课时,教师号 for 课程号=a.课程号 use  kcsk 

(9)

实验 3 数据库文件的建立与使用

一、实验目的  1.掌握数据库的创建以及库中表的建立、添加和删除。  2.熟悉数据库操作的各种命令,掌握库中表的设置。  3.了解和掌握数据库的数据字典。  4.掌握表间的关联关系及参照完整性的设置。 二、实验内容  1.数据库的创建和删除 创建数据库“学生管理.dbc” 。 操作步骤: (1)单击“文件”→“新建”命令,弹出“新建”对话框,选中“数据库”单选按钮, 然后单击“新建文件”按钮,如图 3­14 所示。 (2)弹出“创建”对话框,在“数据库名”文本框中输入“学生管理” ,如图 3­15 所示, 单击“保存”按钮,进入“数据库设计器”窗口,如图 3­16 所示。 图 3­14  “新建”对话框 图 3­15  “创建”对话框 “学生管理.dbc”数据库就建好了,单击右上角的“关闭”按钮,可以关掉数据库设计器。 如果需要重新打开进行编辑,只需在命令窗口中输入 modify  database 命令。一个数据库文件 如果不再使用,可以在命令窗口中输入 delete database 将其删除,删除数据库后数据库中的数 据表都变为自由表。  2.数据库对表的管理 将已存在的表学生.dbf、选课.dbf、课程.dbf、授课.dbf 添加到数据库中,再在数据库中创 建新表成绩.dbf,最后将表授课.dbf 从数据库中移除。

(10)

图 3­16  “数据库设计器”窗口 操作步骤: (1)单击“文件”→“打开”命令,弹出“打开”对话框,在“文件类型”下拉列表框 中选择文件类型为“数据库(*.dbc) ” ,在出现的数据库文件中选择“学生管理” ,单击“确定” 按钮,如图 3­17 所示。 图 3­17  “打开”对话框 (2)在打开的“数据库设计器”窗口中右击并选择“添加表”选项,弹出“打开”对话 框,选择要添加的第一张表学生.dbf,然后单击“确定”按钮,如图 3­18 所示。 图 3­18  为数据库添加表 (3) 学生.dbf 表被成功添加到数据库中, 再重复上述操作, 将选课.dbf、 课程.dbf、 授课.dbf  三张表依次添加到数据库中,如图 3­19 所示。

(11)

图 3­19  已添加好表的数据库 (4)在“数据库设计器”空白处右击并选择“新建表”选项,弹出“新建表”对话框, 如图 3­20 所示。 (5)单击“新建表”按钮,在弹出的“创建”对话框的“输入表名”文本框中输入“成 绩” ,如图 3­21 所示,后面的操作步骤与创建自由表基本相同,读者可自行输入数据。 图 3­20  “新建表”对话框 图 3­21  “创建”对话框 (6)要移除表授课.dbf,可在“数据库设计器”中选择授课表,右击并选择“删除”选 项,弹出如图 3­22 所示的消息提示框。 图 3­22  消息提示框 (7)单击“移去”按钮,授课.dbf 表从数据库“学生管理.dbc”中移出,还原为自由表, 如果单击“删除”按钮,将从磁盘上删除表授课.dbf。  3.编辑数据字典 (1)为数据库表学生.dbf 的“性别”字段设置字段有效性。要求:规则是性别为男或女; 信息是“性别必须为男或女” ;默认值为“男” 。

(12)

操作:在“数据库设计器”中选中学生表,右击并选择“修改”选项,打开数据库表学 生.dbf 的表设计器,选中“性别”字段,进行如图 3­23 所示的设置。 图 3­23  “性别”字段的有效性规则设置 其中, “规则”文本框中的内容也可以填写为:性别="男"or 性别="女"。 (2)为数据库表学生.dbf  的“入校总分”字段设置字段有效性。要求:规则是入校总分 小于等于 100 并且入校总分大于等于 0;信息是“入校总分在 0~100 之间” ;默认值是 60。 操作:打开数据库表学生.dbf 的表设计器,选中“入校总分”字段,进行如图 3­24 所示 的设置。 图 3­24  “入校总分”字段的有效性规则设置 其中, “规则”文本框中的内容为:入校总分  >=0 and  入校总分<=100; “信息”文本框中 的内容为:入校总分在 0~100 之间。 (3)为表学生.dbf 设置记录有效性规则和触发器。 操作:打开数据库表学生.dbf 的表设计器,单击“表”选项卡,进行如图 3­25 所示的 设置。

(13)

图 3­25  记录有效性和触发规则设置 设置完成后,系统将对该表的记录进行指定的有效性检查,如果发现不符合规则的记录 或者追加新记录,屏幕上会显示出违反有效性规则的对话框。  4.建立和删除永久关系 在数据库文件中建立表学生.dbf 和选课.dbf 之间的一对多永久关系。 操作步骤: (1)打开学生管理.dbc 的数据库设计器,将表学生.dbf 和选课.dbf 添加进去。 (2)选择学生表作为父表,打开表设计器,在“索引”选项卡中设置“学号”字段为主 索引,如图 3­26 所示。 图 3­26  设置主索引 (3)选择选课表为子表,打开表设计器,在“索引”选项卡中设置“学号”字段为普通 索引。 (4)用鼠标拖动父表中的学号字段到子表中的学号字段,然后放开。 (5)完成以上操作后,将出现如图 3­27 所示的连线,表示为永久关系。

(14)

图 3­27  数据库中表的永久关系 右击连线,在弹出的快捷菜单中选择“删除关系”命令,可解除它们的关系。  5.设置参照完整性 在学生管理.dbc 数据库中建立表学生.dbf、选课.dbf、课程.dbf 的参照完整性。 操作步骤: (1)打开学生管理.dbc 的数据库设计器。 (2)单击“数据库”→“清理数据库”命令清理数据库。 (3)单击“数据库”→“编辑参照完整性”命令,弹出如图 3­28 所示的对话框。 图 3­28  参照完整性设置 (4)根据需要正确设置参照完整性。

思考与练习 

1.新建表 Zg.dbf,表中字段:职工号(C,8)、姓名(C,6)、性别(C,2)、基本工资(N,6,1)、资 金(N,6,1)、工资总额(N,7,1)。输入如图 3­29 所示的内容。  2.表 Zg.dbf 建好以后,打开该表并按下列要求分别写出命令序列。 (1)显示表结构和所有记录。 (2)显示第 2 条记录的职工号、姓名、性别字段。

(15)

图 3­29  表 Zg.dbf  (3)显示最后三条记录。 (4)显示所有男职工的信息。 (5)给姓名为“孙武”的职工打上逻辑删除标志后再彻底删除。 (6)在表的末尾追加一条记录,并且录入数据(职工号:C2034,姓名:朱兵,性别: 男,基本工资:957,奖金:1200) 。 (7)使用 replace  命令计算所有职工的工资总和。 (8)显示工资总和大于 2000 的女职工的信息。  3.在  Zg.dbf  表中的性别字段后添加一个字段“季度”(C,1),并用成批替换命令  replace  将所有记录的该字段值均设置为 2。  4.通过“工作区属性”对话框对 Zg.dbf 表设置逻辑表,显示工资总额高于 2000 的所有 职工的职工号和姓名。  5.将所有的女职工信息复制到新表 Zgw.dbf 中去。  6.为表  Zg.dbf(如图  3­29  所示)建立:职工号(zgh,候选索引)、姓名(xm,普通索 引)、姓名+性别(xmxb,普通索引)、工资总额(gzze,降序,普通索引)等多项索引。  7.根据如图 3­30 所示的表成绩.dbf 和学生.dbf 完成如下操作: (1)在成绩.dbf 表中增加一个字段“平均分 N(5,1)” 。 (2)利用成绩.dbf 中的英语和计算机计算平均分并显示如图 3­31 所示的信息。 图 3­30  表成绩.dbf 和学生.dbf  图 3­31  计算平均分  8.新建数据库职工管理.dbc,完成以下操作: (1)将图 3­29 所示的表 Zg.dbf 添加到数据库中。

(16)

(2)为表 Zg.dbf 建立一个主索引,索引名和索引表达式均为“职工号” 。 (3)为表  Zg.dbf  的职工号字段设置有效性规则, “规则”是:left(职工号,1)="C",错误 提示信息是“职工号第一位必须为 C!” 。 (4)为表 Zg.dbf 的性别字段设置有效性规则,规则是:性别="男"or 性别="女",错误提 示信息是“性别必须为男或者女” ,默认值为“男” 。  9.新建数据库成绩管理.dbc,完成以下操作: (1)将图 3­30 所示的表学生.dbf 和成绩.dbf 添加到数据库中。 (2)通过“学号”字段建立学生表和成绩表之间的永久联系。  10.从数据库职工管理.dbc 中移去表 Zg.dbf(不是删除) 。

參考文獻

相關文件

● Why is it generally a bad idea to “ ./configure &amp;&amp; make &amp;&amp; sudo make install ” in production server?... ● Workstation is

Dunn, 1994; Linkowski, 1971; Mpofu &amp; Houston, 1998; Ososkie &amp; Schultz, 2003; Scofield, Pape, McCracken, &amp; Maki, 1980; Wright,

附表 1-1:高低壓電力設備維護檢查表 附表 1-2:高低壓電力設備維護檢查表 附表 1-3:高低壓電力設備(1/13) 附表 2:發電機檢查紀錄表. 附表

Have shown results in 1 , 2 &amp; 3 D to demonstrate feasibility of method for inviscid compressible flow

• Emergent Z_k 1-form &amp; 2-form symmetry. BF theory

[r]

Analyzed by section of goods and services, Clothing &amp; Footwear (+6.98%); Transport (+6.16%); Recreation &amp; Culture (+6.15%); Miscellaneous Goods &amp; Services (+6.04%);

Miscellaneous Goods &amp; Services (+6.82%); Health (+5.78%); Food &amp; Non-Alcoholic Beverages (+5.09%); Recreation &amp; Culture (+4.68%) and Transport (+4.56%) recorded