您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页VF上机实验及指导

VF上机实验及指导

来源:宝玛科技网


《VFP6.0程序设计》

实验指导

计算机教研室

1

实验1 VF数据库语言基础 ......................................................................................................... 3

1.1 实验目的 ............................................................................................................................ 3 1.2 实验内容 ............................................................................................................................ 3 1.3 解答与提示 ........................................................................................................................ 3 实验2 VF数据及运算 ................................................................................................................. 6

2.1 实验目的 ............................................................................................................................ 6 2.2 实验内容 ............................................................................................................................ 6 2.3 解答与提示 ...................................................................................................................... 10 实验3 数据库和数据表的建立及操作(1) ............................................................................ 11

3.1 实验目的 .......................................................................................................................... 11 3.2 实验内容 .......................................................................................................................... 11 3.3 解答与提示 ...................................................................................................................... 16 实验4 数据库和数据表的建立及操作(2) ........................................................................... 17

4.1 实验目的 .......................................................................................................................... 17 4.2 实验内容 .......................................................................................................................... 17 4.3 解答与提示 ...................................................................................................................... 20 实验5 数据库和数据表的建立及操作(3) ........................................................................... 21

5.1 实验目的 .......................................................................................................................... 21 5.2 实验内容 .......................................................................................................................... 21 5.3 解答与提示 ...................................................................................................................... 23 实验6 程序设计基础 ................................................................................................................. 24

6.1 实验目的 .......................................................................................................................... 24 6.2 实验内容 .......................................................................................................................... 24 6.3 解答与提示 ...................................................................................................................... 30 实验7 过程及数组应用 ............................................................................................................. 31

7.1 实验目的 .......................................................................................................................... 31 7.2 实验内容 .......................................................................................................................... 31 7.3 解答与提示 ...................................................................................................................... 32

2

实验1 VF数据库语言基础

1.1 实验目的

1. 熟悉VFP的窗口组成。 2. 掌握VFP的启动和退出。

3. 掌握默认工作目录的设置方法。 4. 掌握项目管理器的使用方法。

1.2 实验内容

1. 用两种方法启动和退出Visual FoxPro。 2. 浏览VFP的主菜单项及其子菜单。

3. 掌握VFP的窗口、工具栏、对话框的操作。 4. 练习打开和隐藏“命令窗口”。

5. 在C盘上建立“学生管理”文件夹,并将其设置为默认的工作目录。 6. 在“学生管理”文件夹下建立一个项目文件,取名为“学生管理.pjx”。熟悉项目管理器的使用(打开、关闭,各个按钮的使用,定制)。

1.3 解答与提示

1. 用两种方法启动和退出Visual FoxPro。 (1)启动的方法:

方法1:选择“开始”→“程序”→ “Microsoft Visual FoxPro 6.0”。 方法2:双击桌面上的VFP图标。 (2)退出的方法:

方法1:选择“文件→退出”菜单命令。 方法2:单击标题栏最右端的关闭按钮。 方法3:按Alt+F4组合键。

方法4:在命令窗口中输入QUIT命令,按Enter键。 方法5:单击标题栏最左端的控制按钮2、3略。

4. 练习打开和隐藏“命令窗口”。 (1)打开“命令窗口”

,打开下拉菜单,选择“关闭”命令。

3

方法1:选择“窗口→命令窗口”菜单命令。 方法2:按Ctrl+F2组合键。

方法3:当桌面上无“命令窗口”时,单击“常用”工具栏上的“命令窗口”按钮(2)隐藏“命令窗口”

方法1:选择“窗口→隐藏” 菜单命令。 方法2:按Ctrl+F4组合键

方法3:当桌面上有“命令窗口”时,单击“常用”工具栏上的“命令窗口”按钮。

5. 在C盘上建立“学生管理”文件夹,并将其设置为默认的工作目录和搜索路径的操作步骤。

① 双击“我的电脑”,双击“C盘”,右键单击空白位置,选择“新建→文件夹”菜

单命令,为新建的文件夹命名为“学生管理”。

② 选择“工具→选项”菜单命令,打开“选项”对话框。 ③ 单击“文件位置”选项卡,如图1.1所示。

④ 选中“默认目录”行,单击“修改”按钮,出现“更改文件位置”对话框,如图

1.2所示。

⑤ 在对话框中选择“使用默认目录”,然后在“定位默认目录”文本框中输入“C:\\

学生管理”(或打开浏览窗口选择C盘的学生管理文件夹),单击确定按钮,返回“选项”对话框。

⑥ 在“文件位置”选项卡中,可看到“默认目录”的“位置”已被设置为“C:\\学生

管理”,单击“设置为默认值”按钮,再单击“确定”按钮,就把该目录设置为用户的工作目录。

图1.1 “选项”对话框中的“文件位置”选项卡

4

图1.2 “更改文件位置”对话框

6. 在“学生管理”文件夹下建立一个项目文件,取名为“学生管理.pjx”。熟悉项目管理器的使用。 ① 单击常用工具栏的“新建”按钮。

② 选择“项目”单选框,单击“新建文件”按钮,打开“创建”对话框。 ③ 输入项目的名称“学生管理”,单击“保存”按钮,项目被保存在刚才建立的默认

目录“C:\\学生管理”下,并自动打开“项目管理器-学生管理”窗口。

提示:项目文件建立后,会同时生成扩展名为.PJX和.PJT的两个项目备注文件。

④具体操作参照教材24至26页。

5

实验2 VF数据及运算

2.1 实验目的

1. 掌握常量、变量、数组的使用。 2. 掌握运算符和表达式的使用。 3. 掌握常用函数的使用。

2.2 实验内容

1. 常量的使用。请运算表1-1的内容并显示结果。

表1-1

操 作 ?368.9, 2.3E6, 2.3E-6 ?”计算机”,[黑龙江],‟45.234‟, [表示‟方法‟] ?”I am a student”,”学生[爱好]计算机” ? .T.,$345.6784698 ?{^2007-3-5},{^2013.03.28 08:09:10 am} 结 果 2. 变量和数组的使用。

按顺序执行以下命令序列,观察主窗口显示的结果: x1=10

x2={^2007-03-20}

store “Visual FoxPro” to x3 list memory like x? dime a(4, 5) ?a(3, 1) a(11)=100 ?a(3, 1) ?a(5)

3. 运算符和表达式的使用。请运算表1-2的内容并显示结果。

表1-2

6

操 作 结 果 X=2 Y=3 ?x+2*y%6-x ?“good ” + “night ”, “good ” - “ night ” ?”X”>”x”,”x”>”y” ? “hello” = =“he”, “hello” = “he” ? “he” = =“hello”, “he” =“hello” ? („a‟+„cd‟ >„fd‟ or 7+3-9<=0) and not .f. ? (10<12 or 10>23) and not 10<>9 ? 9+12>13 or 8>10 and not \"dd\"$\"dadd\" a={^2013-11-20} b=10 ?a+b,b+a c={^2013-11-20 10:30:30 am} d={^2013-11-20 10:20:10 am} ?c-d,c+10,c-10 4. 数值函数的使用,请运算表1-4的内容并显示结果。

表1-4

函数 操 作 结 果 求绝对值 ?abs(-200.6) 符号函数 ?sign(-3), sign(3), sign(0) 圆周率 ?PI( ) 平方根函数 ?Sqrt(abs(-4)) 取整 ?int(-18.6) 四舍五入 ?round(20.57, 1), round(20.57, -1) 求平方根 ?sqrt(int(abs(-20))) 求余数 ?mod(35, 6), mod(-35, -6) ?mod(-35, 6), mod(35, -6) 求最大、最小值 ?max(2, 10), min(“李”, “杜”) 求e为底的自然对数 ?log(30) 5. 字符函数的使用,请运算表1-3的内容并显示结果。

表1-3

7

函数 操 作 结 果 求字符串长度 ?LEN(\"二级 VFP\") 将字符转换成大写 ?UPPER(“HeLLo”) 将字符转换成小写 ?LOWER(“HeLLo”) 生成空格 ?LEN(SPACE(3)-SPACE(2)) 删除前导空格 ?LEN(LTRIM(“ a bc”)) 删除尾部空格 ?LEN(TRIM(“ a bc”)) 删除首尾的所有空格 ?LEN(ALLTRIM(“ a bc”)) 从左边截取字符 ?LEFT(“中国人民”, LEN(“He”)) 从右边截取字符 ?RIGHT(“HeLLo”, 3) 从中间截取字符 ?SUBSTR(“中国人民”, 3, 4) 求子串位置 ?AT(“天”, “天天向上”, 2) ?AT(“中”, “天天向上”) 子串替换 ? STUFF(“aaaaa”, 2, 3, “bb”) ? STUFF(“aaaaa”, 2, 0, “bb”) ? STUFF(“aaaaa”, 2, 3, “”) ? STUFF(“aaaaa”, 5, 3, “bb”) 宏替换 A=\"52.5\" ?&A+120 6. 日期函数的使用,请运算表1-5的内容并显示结果。

表1-5

函数 操 作 结 果 求系统日期 ?DATE( ) 求系统时间 ?TIME( ) 求系统日期时间 ?DATETIME( ) 取某日期的年份 ?YEAR(DATE( )) 取某日期的月份 ?MONTH(DATE( )) 取某日期的天数 ?DAY(DATE( )) 7. 数据类型转换函数的使用,请运算表1-6的内容并显示结果。

表1-6

函数 操 作 结 果 数值转换成字符串 ?STR(25.856, 8,2) ?STR(25.856, 3,2) 8

?STR(25.856, 2, 1) ?STR(25.856, 1) 字符串转换成数值 ?VAL(“100.4a56”) ?VAL(“100.4E2”) 字符串转换成日期 ?CTOD(“05/20/07”) 日期转换成字符串 ?DTOC(DATE( )) *8. 测试函数的使用,请运算表1-7的内容并显示结果。(选做)

表1-7

函数 操 作 结 果 测试是否为空 ?EMPTY(0), EMPTY(“ ”) ?EMPTY(10), EMPTY(ctod(“ ”)) 空值测试 ?ISNULL(0), ISNULL (“ ”) ? ISNULL (10), ISNULL (ctod(“ ”)) *值域测试 ?BETWEEN (15, 10, 20) ?BETWEEN (15, NULL, 20) *测试表达式的数据类x=“567” 型 y=null ?TYPE(“x”),TYPE(“y”), TYPE(“x/3”) *测试表达式的数据类x=“567” 型 y=null ?VARTYPE(“x”),VARTYPE(“y”) ?VARTYPE(x),VARTYPE(y) *表头测试函数 Use 学生 ?bof( ) Skip -1 ?bof( ),bof(2) *表尾测试函数 Use 学生 ?eof( ) Go bottom ?eof( ) Skip ?eof( ) 条件测试 ?IIF(10<9, 100, 200) 9

2.3 解答与提示

本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果。读者可以先计算出函数或表达式的结果,再上机验证。

10

实验3 数据库和数据表的建立及操作(1)

3.1 实验目的

1. 掌握自由表表结构建立和表记录的输入。

2. 掌握表的打开和关闭、显示和修改、表的浏览操作。 3. 掌握记录的定位与显示、增加与修改插入、删除与恢复。

3.2 实验内容

1.建立属于学生管理数据库的数据表-学生表,其表记录如表所示。

3.1 学生表记录 记录号 1 2 3 4 5 6 7 8 9 10 学号 1101 1006 1105 1107 1102 0908 0903 1204 1209 1108 姓名 董佳惠 吴 微 申一鸣 卢 鑫 高小天 杨晨曦 李 阳 颜雪冰 郭 悦 江子开 性别 女 男 男 男 女 男 男 女 女 男 出生日期 01/12/94 11/10/92 12/21/93 02/22/93 02/28/93 10/04/92 07/23/93 04/22/94 01/09/94 11/15/93 专业号 03 01 03 04 02 03 01 03 04 01 助学金 1500.0 500.0 1100.0 500.0 800.0 200.0 1200.0 1100.0 500.0 800.0 团员 T F T T F F T F T F 照片 Gen Gen Gen Gen Gen Gen Gen Gen Gen Gen 备注 Memo Memo Memo Memo Memo Memo Memo Memo Memo Memo (1)建立名为“用户项目”的项目管理器,打开准备下一步操作。 (2)建立数据库“学生管理”,参考章节3.1.1 数据库的建立,生成三个主文件名相同的文件,学生.DBC、学生.DCT和学生.DCX。

(3)建立“学生管理”数据库中表,“学生”表。表结构如下图:

表3.2 学生.dbf表结构

字段名 学号 姓名 性别 出生日期 专业号 字段类型 字符型C 字符型C 字符型C 日期型D 字符型C 字段宽度 4 6 2 8 2 小数位数 字段名 助学金 团员 照片 备注 字段类型 数值型N 逻辑型L 通用型G 备注型M 字段宽度 6 1 4 4 小数位数 1 11

命令如下:

CREATE PROJECT 用户项目 CREAT DATABASE 学生管理

CREAT TABLE 学生(学号 C(4), 姓名 C(6), 性别 C(2), 出生日期D(8),专业号C(2), 助学金N(6), 团员L(1), 照片G(4), 备注M(4))

APPEND && 输入数据记录 BROWSE && 显示数据记录 CLOSE DATABASE ALL

2. 建立自由表成绩和自由表专业,并将这两个自由表添加到数据库中。其中两表的参考附录A结构与记录如下:

表3.3 成绩.dbf结构

字 段 名 学 号 姓 名 英 语 计算机 生理学 伤寒论 平均分 总 分 类 型 字符型C 字符型C 数值型N 数值型N 数值型N 数值型N 数值型N 数值型N 宽 度 4 6 6 6 6 6 6 6 小 数 位 数 2 2 2 2 2 2 表3.4 成绩表记录

记录号 1 2 3 4 5 6 7 8 9 10 学号 1101 1006 1105 1107 1102 0908 0903 1204 1209 1108 姓名 董佳惠 吴 微 申一鸣 卢 鑫 高小天 杨晨曦 李 阳 颜雪冰 郭 悦 江子开 英语 95.00 65.00 85.00 92.00 52.00 74.00 85.00 65.00 67.00 68.00 计算机 87.00 98.00 85.00 74.00 52.00 65.00 92.00 85.00 85.00 74.00 生理学 93.00 85.00 69.00 84.00 75.00 46.00 85.00 71.00 80.00 60.00 伤寒论 85.00 98.00 54.00 .00 54.00 50.00 72.00 95.00 87.00 90.00 总分 平均分 表3.5 专业.dbf 结构

字 段 名 专业号 专 业 字 段 类 型 字符型C 字符型C 字 段 宽 度 2 8 小 数 位 数 12

学年制 数值型N 1 0 表3.6 专业表记录

记 录 号 1 2 3 4 专 业 号 01 02 03 04 专 业 中医学 中药学 护理学 制药工程 学 年 制 5 4 4 4 3. 前面题中已建立数据库-学生管理和数据表-学生表,以及自由表-成绩和自由表-专业,用命令方式将自由表添加进学生管理数据库。

OPEN DATABASE 学生管理 ADD TABLE成绩 ADD TABLE 专业

CLOSE DATABASE ALL

4. 复制成绩表结构到学生成绩1、学生成绩2,创建学生数据库。将学生成绩1、学生成绩2添加到数据库中。将学生成绩1移出库,学生成绩2移出且删除。添加学生成绩表1后进行删除。

COPY FILE 成绩.* TO 学生成绩1.* COPY FILE 成绩.* TO 学生成绩2.* CREATE DATABASE 学生数据库 ADD TABLE 学生成绩1 ADD TABLE 学生成绩2

REMOVE TABLE 学生成绩1

REMOVE TABLE 学生成绩2 DELETE ADD TABLE 学生成绩1

DROP TABLE 学生成绩1 &&删除学生成绩1表 CLOSE ALL

5. 显示表学生.DBF的全部记录,执行以下程序并观察结果。 USE学生 LIST

6. 显示表学生.DBF的首(第1条)记录,执行以下程序并观察结果。 USE学生

DISPLAY(或LIST RECORD 1) 7. 显示男生的记录。 USE 学生

DISPLAY FOR 性别=‟男‟ FIELDS 学号,姓名,性别,专业号,助学金 8. 显示表中1993年出生的同学的学号、姓名、性别及出生日期。 USE 学生

13

LIST FIELDS 学号,姓名,性别,出生日期 FOR YEAR(出生日期)=1993 9. 将学生表中前4个记录显示出来,不显示记录号。 USE 学生

LIST OFF NEXT 4

10.修改学生.DBF中专业为03的学生学号、姓名和性别等信息。 USE 学生

EDIT FIELDS 学号,姓名,性别 FOR 专业号=”03” 11. 使用指针移动命令改变“学生”表中当前记录 USE 学生

GO BOTTOM && 记录指针定位到表的最后一条记录 DISPLAY

GO 3 && 记录指针定位到表的第三条记录 DISPLAY

GO TOP && 记录指针定位到表的第一条记录 DISPLAY

12. 用SKIP命令移动“学生”表的记录指针到指定的记录,其中RECNO()函数的返回值是当前记录指针的值。 USE 学生

?BOF() &&显示当前结果为.F. ?RECNO() &&显示当前记录号为1 SKIP -1

?BOF() &&显示当前结果为.T. ?RECNO() &&显示当前记录号为1 SKIP 5

?RECNO() &&显示当前记录号为6 GO 3

?RECNO() &&显示当前记录号为3 7

?RECNO() &&显示当前记录号为7 GO BOTTOM

?RECNO() &&显示当前记录号为10 ?EOF() &&显示当前结果为.F. SKIP

?EOF() &&显示当前结果为.F. ?RECNO() &&显示当前记录号为11 USE

13. 为“学生”表计算所有学生的平均分和总分。

14

USE 学生

REPLACE ALL 总分 WITH 英语+计算机+生理学+伤寒论, 平均分 WITH 总分/4

14. 在表学生.DBF的第2号记录前插入一条新记录,在第4号记录后插入一条新记录。 USE学生 GOTO 2

INSERT BEFORE && 在2号记录前插入一条新记录

GOTO 5 && 因已插入了一条新记录,原4号现为5号 INSERT && 在4号记录后插入一条新记录 GO 6

INSERT BEFORE BLANK &&在第6条记录之前插入一条空记录。

或:GO 5

INSERT BLANK

15. 使用逻辑删除命令对“学生”表进行操作。 USE 学生

DELETE RECORD 9 GO 4

DELETE NEXT 3 LIST

16. 从备份的数据中恢复“学生”表中的数据。 USE 学生 RECALL ALL LIST

17. 删除所有非团员的记录,并进行恢复删除记录。 USE 学生

DELE FOR .NOT. 团员 BROWSE

RECALL FOR 团员= .F. BROWSE

18.对“学生”表进行插入、删除操作。 USE 学生

INSERT &&插入新纪录 DELETE RECORD 2 PACK LIST

19.彻底清除“学生”表记录。(注意:在进行这一步操作前必须先备份数据,否则将全部信息丢失。) USE 学生

15

BROWSE ZAP

BROWSE

3.3 解答与提示

本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第三章教程例题答案。学生可以先预算除显示的结果,再执行显示验证。

16

实验4 数据库和数据表的建立及操作(2)

4.1 实验目的

1.掌握索引的建立和索引查询。

2.掌握记录的常用检索。 3. 掌握表的统计操作命令。

4.2 实验内容

1. 将学生.DBF按专业号进行升序排列 USE学生 LIST

SORT ON 专业号 TO ZYH &&或SORT TO ZYH ON 专业号 USE ZYH BROWSE USE

2. 将“学生”表按“性别”升序进行排序,性别相同者,按“学号”降序进行排序,排序后的新表文件名为“男女学生”,并且新生成的标文件中只包含学号、姓名、性别。 USE学生

SORT TO 男女学生 ON 性别,学号/D FIELDS 学号,姓名,性别 USE 男女学生 BROWSE USE

3. 分别显示所有总分高于300分的学生中,成绩最高和最低同学的姓名及计算机课程成绩。 USE 成绩

SORT TO ZF ON 总分/D FOR 总分>300 USE ZF GO TOP

DISPLAY 姓名,计算机 GO BOTTOM

DISPLAY 姓名, 计算机

索引:

17

4. 对学生.DBF表文件建立出生日期单索引文件BIR.IDX。 USE 学生

INDEX ON 出生日期 TO BIR BROWSE USE

5.在表文件学生.DBF的结构复合索引文件中,先按性别再按学号追加一个标识。 USE 学生

INDEX ON 性别+学号 TAG 性别学号 BROWSE USE

6. 对学生档案表中所有的记录香案性别排列,性别相同时再按助学金升序排列,建立单索引文件XBZXJ。

USE 学生

INDEX ON 性别+STR(助学金,5,0) TO XBZXJ BROWSE USE

7.删除表文件学生.DBF的单索引文件学生.IDX及结构复合索引文件中的所有标识。 DELETE FILE 学生.IDX USE学生

DELETE TAG ALL

8. 将记录指针定位在学生表中第一条性别为“男”的记录上 USE 学生

LOCATE FOR 性别=”男” ? FOUND() DISPLAY CONTINUE

DISPLAY USE

9. 按姓名索引查找字符型数据。 USE 学生

INDEX ON 姓名 TAG XM FIND 吴微 DISPLAY

10. 按性别索引查找字符型数据。 USE 学生

INDEX ON 性别 TAG XB FIND 女

18

DISPLAY SKIP DISPLAY ? FOUND () .T.

? RECNO () 5 SKIP … USE

11. 按姓名查找字符型数据。 USE 学生

SET ORDER TO XM SEEK \"江子开\" DISPLAY

12. 统计“学生”表中记录数。 USE 学生

COUNT FOR 性别=”男” TO XB ? XB

13. 统计“学生”表中总人数及不是团员学生的人数 USE学生

COUNT TO ZRS

? “学生总人数为:”,ZRS

COUNT FOR !团员 TO TYS

? \"不是团员的学生人数为:\"+STR(TYS,3) 14. 在学生表中,将所有数值型字段求和。 USE 成绩 LIST SUM

15. 在成绩表中,按计算机求算术平均值,并把结果存入内存变量中。USE 成绩

AVERAGE 计算机 TO COM ? COM

16. 求每专业学生的总助学金。 USE学生

INDEX ON 专业号 TAG 专业号 TOTAL ON 专业号 TO 助学金汇总

19

USE 助学金汇总 LIST USE

17. 在学生表中,分别统计记录个数、平均助学金、最少助学金,将统计结果存入内存变量A1、A2、A3中,并显示变量的值。 USE 学生

CALCULATE COUNT( ), AVG(助学金),MIN(助学金) TO A1,A2,A3 ? A1, A2, A3

4.3 解答与提示

本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第三章教程例题答案。学生可以先预算除显示的结果,再执行显示验证。

20

实验5 数据库和数据表的建立及操作(3)

5.1 实验目的

1. 掌握多表的使用,表的连接和表的临时关联。

2. 掌握数据库表的有效性规则的设置和表之间永久关系的建立。

5.2 实验内容

1. 在USE命令中直接指定在各工作区中打开表。

OPEN DATABASE 学生管理 &&打开学生管理数据库

USE 学生 IN 1 &&在第1个工作区中打开学生表 USE 成绩 IN 2 &&在第2个工作区中打开成绩表

USE 专业 IN 3 ALIAS ZY &&在第3个工作区中打开专业表,并指定别名ZY 2. 在1号和2号工作区内分别打开学生.DBF和成绩.DBF表文件,并选择1号工作区为当前工作区。

SELECT 1 && 或 SELECT A USE 学生 ALIAS XS

SELECT 2 && 或 SELECT C USE 成绩 ALIAS CJ IN XS AGAIN SELECT 1

3. 在1号和2号工作区打开学生.DBF和CJ.DBF,在1号工作区内查看当前记录的学号、姓名、性别、出生日期、课程号、成绩等字段内容。

SELECT A USE 学生 && 在一号工作区中打开学生 SELECT B

USE 成绩 IN 3 ALIAS CJ && 在二号工作区中打开SC SELECT A && 选择1号工作区为当前工作区 DISPLAY 学号,姓名,性别,出生日期,B->课程号,CJ.计算机

4. 工作区字段访问应用。

SELECT 1 USE 学生

USE 专业 in 2

21

USE 成绩 in 3 SELECT 1

LIST 学号, 姓名, 专业号, B->专业号, B->专业, C->伤寒论, C->总分, C->平均分

CLOSE ALL

5. 将表文件学生.DBF和成绩.DBF以学号为关键字段建立关联。

USE 成绩 IN 2 &&选择工作区2打开表文件成绩.DBF SELECT 2

INDEX ON 学号 TAG 学号 && 建立学号标识 SET ORDER TO TAG 学号 && 指定学号为主索引 SELECT 1 && 选择工作区1 USE 学生 && 打开主表文件学生.DBF SET RELATION TO 学号 INTO 2 && 建立一对一关联 SELECT 成绩 &&选定从表工作区 BROWSE &&显示从表

SELECT 学生 &&选定主表工作区 BROWSE &&显示主表 在“命令窗口”依次执行上述命令,将打开两个“浏览”窗口,移动主表的记录指针时,在从表中会显示与主表编号相同的所有记录。

6. 为“学生管理”数据库中“学生”表设置字段有效性规则,规则为助学金大于0并且小于2000,提示信息是“助学金应界于0至2000之间”,默认值是500。

(1)打开“学生管理”数据库中,进入数据库设计器窗口,选中学生表。

(2)执行菜单命令“显示”下的“表设计器”,弹出“表设计器”对话框,单击选择“助学金”字段,在字段有效性规组框中依次输入规则、信息和默认值。其中,规则表示为:助学金 >=0 AND 助学金 <=2000;信息表示为:“助学金应届于0-2000之间”;默认值是500。

(3)单击“确定”按钮,完成“助学金”字段的有效性规则设置。 (4)在“学生”表中追加记录,记录内容可自己随意书写,其中“助学金”字段为“-1000”,观察弹出所示的提示,这时需要用户重新输入或修改数据。

7. 在“学生管理”数据库中,通过“学号”字段设置“学生”表和“成绩”表间的永久联系;通过“专业号”字段设置“成绩”表和“专业”表间的永久联系。

(1)在“学生管理”数据库中建立“学生表”、“成绩表”和“专业表”,其结构和记录见附录A。

(2)设置学生表中“学号”字段为主索引,设置成绩表中“学号”字段为主索引。 (3)设置学生表中“专业号”字段为普通索引,设置专业表中“专业号”字段为主索引。

(4)在数据库设计器中,用鼠标拖动父表中的主索引到子表索引,此时在两索引间建

22

立一条连线,标示两表之间的索引。

8. 对“成绩管理”数据库中的“学生表”和“学生表”设置参照完整性规则:更新规则为“级联”,删除规则为“级联”,插入规则为“”。

(1)完成上例中建立表之间的永久联系操作。

(2)为了保证参照完整性的正确设置,在打开数据库设计器状态下,执行“数据库”菜单项中的“清理数据库”命令,清除所有标有删除标记的记录。在表中没有被逻辑删除的记录时,此步骤可以省略。

(3)执行菜单命令“数据库”菜单项中的“编辑参照完整性”,弹出“参照完整性生成器”对话框。

(4)在“更新规则”选项卡中,选择“级联”单选按钮;在“删除规则”选项卡中,选择“级联”单选按钮;在“插入规则”选项卡中,选择“”单选按钮。单击“确定”按钮。

5.3 解答与提示

本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第三章教程例题答案。学生可以先预算除显示的结果,再执行显示验证。

23

实验6 程序设计基础

6.1 实验目的

1. 熟悉VFP命令文件的建立和执行。 2. 掌握结构化程序设计的一般方法。 3. 熟练掌握条件语句和循环语句的使用。

6.2 实验内容

1.建立一个名为6.1的程序文件,程序的功能是显示学生表中所有学生的记录。 (1)在命令窗口中输入命令:MODIFY COMMAND 6.1,进入“程序文件编辑器”窗口,根据程序的功能要求,输入命令如下:

USE 学生 LIST USE

(2)输入完成后,保存。

2. 下面的程序段用来显示学生表中的记录。 CLEAR USE 学生 LIST NEXT 2 WAIT

LIST NEXT 2

WAIT \"继续查看吗?(Y/N)\" TO XZ IF XZ=\"Y\"

LIST NEXT 2 ELSE

CANCEL ENDIF RETURN

3. 下面的程序根据用户输入的表名打开指定的表,*并根据输入的姓名查找到相应的记录并显示这条记录。

ACCEPT \"请输入要打开的表名:\" TO BM

24

USE &BM

ACCEPT \"请输入要查找人的姓名:\" TO XM LOCATE FOR 姓名=XM DISPLAY

第一次输入:学生 第二次输入:吴微

4. 根据输入的圆的半径计算圆的面积 CLEAR

SET TALK OFF

INPUT \"请输入圆的半径,半径=\" TO R &&等待用户输入R值S=PI()*R*R &&计算圆面积 ? \"半径为\"+ALLTRIM(STR(R))+\"的圆,面积=\ &&输出结果 SET TALK ON RETURN

5. 求S=1+2+3+4+5 CLEAR S=1 S=S+2 S=S+3 S=S+4 S=S+5 ?\"S=\

6. 编程:当R>=0时计算圆面积否则输出不合题意。

程序设计: set talk off s=0 r=0

input \"输入r:\" to r if r>0

s=pi( )*r*r ?\"s=\else

?\"r<0不合题意!\" endif

?\"程序结束\" return

**输入 r:10然后回车

25

**输入r: -10然后回车

**显示提示:r<0不合题意!

7. 铁路拖运行李,从甲地到乙地,按规定每张客票拖运行李不超过50公斤时,每公斤

0.25元,如超过50公斤,超过部分按每公斤0.45元计算。编程,把行李重量输入计算机,计算出运费,并打印付款清单。

问题分析:设行李重量W公斤,应付运费P元,则运费公式为: 0.25*W 当W≤50 P= 50*0.25+(W-50)*0.45 当W>50 编写程序为:

INPUT“请输入行李重量:”TO W IF W<=50 P=0.25*W ELSE

P=50*0.25+(W-50)*0.45 ENDIF

?“应付运输费为:”,P,“元” CANCEL

8. 已知系数a,b,c编写程序,求一元二次方程Ax2BxC0的根。 例题分析:①当A<>0时,有两个根;

②当△>0 时,有两个不同的实根; ③当△=0 时,有两个相同的实根; ④当△<0 时,有两个不同的根; ⑤当A=0,B<>0时,有一个根; ⑥当A=0,B=0 时,方程无意 根据以上分析,写出程序: INPUT \"请输入二次项系数:\" TO A INPUT \"请输入一次项系数:\" TO B INPUT \"请输入常数项:\" TO C D=B^2-4*A*C IF A=0 IF B=0

?\"方程无意义!\" ELSE

X=-C/B

?\"方程有一个根为:\

26

ENDIF ELSE

IF D<0

?\"方程无实根!\" ELSE

E=SQRT(D)

X1=(-B+E)/(2*A) X2=(-B-E)/(2*A)

?\"方程第一个根为:\ ?\"方程第二个根为:\ ENDIF ENDIF RETURN

9. 设计一个按不同幼儿年龄服药的程序,年龄变量为AGE,每次服药次数COUNT,每次

服药量MOUNT。程序为:

MEDICINE='阿司匹林'

INPUT'输入年龄:'TO AGE DO CASE

CASE AGE<5

COUNTS='4次/天' MOUNT='每次1片' CASE AGE<10

COUNTS='4次/天' MOUNT='每次2片' OTHERWISE

COUNTS='3次/天' MOUNT='每次2片' ENDCASE

?MEDICINE+'服法是'+COUNTS+'·' +MOUNT RETURN

x12x310. 计算分段函数的值:fxx15x-2程序设计:

INPUT \"请输入X的值:\" TO X

(x0)(0x2)(2x7)(x7)

27

DO CASE CASE X<0 F=X-1 CASE X<2 F=2*X+3 CASE X<7 F=X+1 OTHERWISE F=5*X-2 ENDCASE ?F

RETURN

11. 在数据库学生管理中的学生表中找出所有男性的学生。

SET TALK OFF

OPEN DATABASE 学生管理 USE 学生 DO WHILE .T.

IF 性别 < > „男‟ SKIP Else

DISPLAY

SKIP ENDIF

IF EOF( ) EXIT ENDIF ENDDO

CLOSE DATABASE RETURN

12. 打印九九乘法表。

分析:由于乘法表是9行,第一行为一列,第二行为二列,….,设i,j 变量,i控制行作为外循环变量,j控制列作为内循环变量。乘法表为9行,i初值为1,终值为9,步长为1,由于第j行有i列所以,j的初值为1,终值为i,步长为1。 计算i*j。

程序(EXP.PRG)如下: Set talk off Clear A=1

28

B=1

Do while A<=9 Do while B<=9 T=A*B

?? T B=B+1 ENDDO A=A+1 ? Enddo Cancel

13. 求1!+2!+3!+„+N!的值

S=O T=1

INPUT “请输入N的值:“ TO N FOR X=1 TO N T=T*X S=S+T ENDFOR ? “S=”;S CANCEL

14. 设计一个保密口令程序,要求用户使用某个系统时,必须回答口令,该程序口令为“49712”才能允许进入系统,但最多只允许输入三次,否则,退 FoxPro系统。程序如下:

SET TALK OFF FOR I=1 TO 3 CLEAR

@10,10 SAY “请输入口令:“ SET CONSOLE OFF ACCEPT TO k1 SET CONSOLE ON

IF k1=“49712”

WAIT“欢迎使用本系统!”TIMEOUT 10 EXIT ELSE

WAIT“口令错,请按任意键后重新输入!” ENDIF ENDFOR

29

IF I>3

WAIT “对不起,你不能使用本系统!“TIMEOUT 10 QUIT ENDIF RETURN

15. 显示学生表中男学生的姓名,及男学生的人数。

SET TALK OFF USE 学生 N=0

SCAN FOR 性别=\"男\" ?姓名 N=N+1 ENDSCAN

?\"男学生的人数为:\USE

SET TALK ON

6.3 解答与提示

本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第六章教程例题答案。学生可以先预算除显示的结果,再执行显示验证。

30

实验7 过程及数组应用

7.1 实验目的

1. 熟悉VFP的过程及过程文件的使用。 2. 了解变量的作用域和参数调用。 3. 熟练使用数组编程。

7.2 实验内容

1. 编写程序,用过程调用的方法计算1!+2!+3!„100!之和。

提示:用一个循环进行1~100的取数和累加,用过程实现计算每个数的阶乘。

2. 编写程序,采用主程序调用过程文件的方式,计算圆面积和圆球体积。

提示:在主程序中输入圆半径,调用过程文件,用过程文件中的两个过程计算圆面积和圆球体积。

3. 编写程序,输入10个评委给歌手打的演唱分,去掉一个最高分,一个最低分,求歌手的平均分。

提示:定义一个一维数组,存放10个评委的输入的分数,再求出其最大值和最小值,在评委的总分中减去最大值和最小值,求出平均分。

4. 创建考生登记表和考生成绩表,其中考生登记表的结构和数据见表1-15;考生成绩表的结构见表1-16,编写程序,要求使用数组接收考生的成绩输入,并存放到考生成绩表中;采用过程文件的方式,计算学生成绩等级并填写结论,按下列格式输出结果。

表1-15 考生登记表. dbf的结构和内容

考号(C6) 100101 100102

姓名(C8) 赵 欣 张 平 学校(C10) 财经大学 财经大学 结论(C6) 31

100103 100104 100105 刘 亚 李 宁 王 军 科技大学 科技大学 科技大学 表1-16 考生成绩表. dbf的结构 考号(C6)

提示: ① 在主程序中,在两个工作区分别打开两个表,建立索引和关联。并打开过程文件,定义

数组。

② 用循环和数组的方式接收输入的考生成绩表的数据,每输入一组数据后,在考生成绩表

中添加一条空记录,用命令GATHER FROM <数组名> 将数据替换空记录。 ③ 调用计算成绩等级的过程,根据考生成绩表中的笔试和上机成绩填写考生登记表中的结

论。成绩等级计算和结论填写方法:当笔试的上机都在90分以上时,结论为“优”;当笔试或上机中有一项在60人分以下时,结论为“不合格”,此外都为“合格”。 ④ 调用输出过程,输出表头及每个考生的相关内容。

笔试(N3) 上机(N3) 7.3 解答与提示

1. 程序编写提示:

① 在主程序中,用一个循环(FOR或DO WHILE)实现1~100的取数和求和。 ② 在过程中用一个循环进行求阶乘。 参考程序见图1.20

图 1.20 程序P8-1 . PRG和过程SUB8-1. PRG编写窗口

2. 程序编写提示:

① 在主程序中输入圆半径,调用过程文件,最后输出圆的面积和球体积。

32

② 过程文件中的两个过程分别计算圆面积和圆球体积。 参考程序见图1.21

图 1.21 程序P8-2 . PRG和过程文件SUB8-2. PRG编写窗口

3. 程序编写提示:

① 本程序需要用一个一维数组来保存循环输入的数据,并用一个循环语句显示输入

的数据。

② 在程序中用一个循环语句实现求各分数和、求最高分、最低分,在总分中减去最

高分、最低分并除以8,得到平均分。最后输出结果。 参考程序见图1.22

33

图 1.22 程序P8-3 . PRG编写窗口

4. 程序编写提示:

① 在主程序中,首先定义一个包含3个变量的一维数组,用于存放每一个考生的考

号和成绩,然后打开过程文件,并在两个工作区分别打开两个表,按考号建立索引和关联。

② 用循环(因为有五个考生,循环次数为5)和数组的方式接收输入的考生成绩表

的数据(数据接收语句用INPUT),每输入一组数据后,在考生成绩表中添加一条空记录,用命令GATHER FROM <数组名> 将数据替换空记录。 ③ 调用计算成绩等级的过程,根据考生成绩表中的笔试和上机成绩填写考生登记表

中的结论(注意工作区的选择)。

④ 调用输出过程,先输出表头,再用循环语句输出每个考生的相关内容(涉及到两

个表)。

参考程序见图1.23和图1.24

34

图 1.23 程序P8-4 . PRG编写窗口

35

图 1.24 程序SUB8-4 . PRG编写窗口

36

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务