VF程序设计上机实验指导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《VFP6.0程序设计》
实验指导
计算机教研室(辽宁中医药大学杏林学院)
实验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)
实验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)打开“命令窗口”
方法1:选择“窗口→命令窗口”菜单命令。
方法2:按Ctrl+F2组合键。
方法3:当桌面上无“命令窗口”时,单击“常用”工具栏上的“命令窗口”按钮。
(2)隐藏“命令窗口”
方法1:选择“窗口→隐藏”菜单命令。
方法2:按Ctrl+F4组合键
方法3:当桌面上有“命令窗口”时,单击“常用”工具栏上的“命令窗口”按钮。
5. 在C盘上建立“学生管理”文件夹,并将其设置为默认的工作目录和搜索路径的操
作步骤。
①双击“我的电脑”,双击“C盘”,右键单击空白位置,选择“新建→文件夹”菜
单命令,为新建的文件夹命名为“学生管理”。
②选择“工具→选项”菜单命令,打开“选项”对话框。
③单击“文件位置”选项卡,如图1.1所示。
④选中“默认目录”行,单击“修改”按钮,出现“更改文件位置”对话框,如图
1.2所示。
⑤在对话框中选择“使用默认目录”,然后在“定位默认目录”文本框中输入“C:\
学生管理”(或打开浏览窗口选择C盘的学生管理文件夹),单击确定按钮,返回“选项”对话框。
⑥在“文件位置”选项卡中,可看到“默认目录”的“位置”已被设置为“C:\学生
管理”,单击“设置为默认值”按钮,再单击“确定”按钮,就把该目录设置为用户的工作目录。
图1.1 “选项”对话框中的“文件位置”选项卡
图1.2 “更改文件位置”对话框
6. 在“学生管理”文件夹下建立一个项目文件,取名为“学生管理.pjx”。
熟悉项目管理
器的使用。
①单击常用工具栏的“新建”按钮。
②选择“项目”单选框,单击“新建文件”按钮,打开“创建”对话框。
③输入项目的名称“学生管理”,单击“保存”按钮,项目被保存在刚才建立的默认
目录“C:\学生管理”下,并自动打开“项目管理器-学生管理”窗口。
提示:项目文件建立后,会同时生成扩展名为.PJX和.PJT的两个项目备注文件。
④具体操作参照教材24至26页。
实验2 VF数据及运算
2.1 实验目的
1. 掌握常量、变量、数组的使用。
2. 掌握运算符和表达式的使用。
3. 掌握常用函数的使用。
2.2 实验内容
1. 常量的使用。
请运算表1-1的内容并显示结果。
表1-1
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
4. 数值函数的使用,请运算表1-4的内容并显示结果。
表1-4
5. 字符函数的使用,请运算表1-3的内容并显示结果。
表1-3
6. 日期函数的使用,请运算表1-5的内容并显示结果。
表1-5
7. 数据类型转换函数的使用,请运算表1-6的内容并显示结果。
表1-6
*8. 测试函数的使用,请运算表1-7的内容并显示结果。
(选做)
表1-7
2.3 解答与提示
本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果。
读者可以先计算出函数或表达式的结果,再上机验证。
实验3 数据库和数据表的建立及操作(1)
3.1 实验目的
1. 掌握自由表表结构建立和表记录的输入。
2. 掌握表的打开和关闭、显示和修改、表的浏览操作。
3. 掌握记录的定位与显示、增加与修改插入、删除与恢复。
3.2 实验内容
1.建立属于学生管理数据库的数据表-学生表,其表记录如表所示。
(2)建立数据库“学生管理”,参考章节3.1.1 数据库的建立,生成三个主文件名相同的文件,学生.DBC、学生.DCT和学生.DCX。
(3)建立“学生管理”数据库中表,“学生”表。
表结构如下图:
表3.2 学生.dbf表结构
命令如下:
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 DA TABASE ALL
2. 建立自由表成绩和自由表专业,并将这两个自由表添加到数据库中。
其中两表的参考附录A结构与记录如下:
表3.3 成绩.dbf结构
表3.4 成绩表记录
表3.5 专业.dbf 结构
表3.6 专业表记录
3. 前面题中已建立数据库-学生管理和数据表-学生表,以及自由表-成绩和自由表-专业,用命令方式将自由表添加进学生管理数据库。
OPEN DATABASE 学生管理
ADD TABLE成绩
ADD TABLE 专业
CLOSE DA TABASE 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 学生
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. 为“学生”表计算所有学生的平均分和总分。
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 学生
BROWSE
ZAP
BROWSE
3.3 解答与提示
本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第三章教程例题答案。
学生可以先预算除显示的结果,再执行显示验证。
实验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 姓名, 计算机
索引:
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 女
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 成绩
A VERAGE 计算机TO COM
? COM
16. 求每专业学生的总助学金。
USE学生
INDEX ON 专业号TAG 专业号
TOTAL ON 专业号TO 助学金汇总
USE 助学金汇总
LIST
USE
17. 在学生表中,分别统计记录个数、平均助学金、最少助学金,将统计结果存入内存变量A1、A2、A3中,并显示变量的值。
USE 学生
CALCULATE COUNT( ), A VG(助学金),MIN(助学金) TO A1,A2,A3
? A1, A2, A3
4.3 解答与提示
本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第三章教程例题答案。
学生可以先预算除显示的结果,再执行显示验证。
实验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
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)在数据库设计器中,用鼠标拖动父表中的主索引到子表索引,此时在两索引间建
立一条连线,标示两表之间的索引。
8. 对“成绩管理”数据库中的“学生表”和“学生表”设置参照完整性规则:更新规则为“级联”,删除规则为“级联”,插入规则为“限制”。
(1)完成上例中建立表之间的永久联系操作。
(2)为了保证参照完整性的正确设置,在打开数据库设计器状态下,执行“数据库”菜单项中的“清理数据库”命令,清除所有标有删除标记的记录。
在表中没有被逻辑删除的记录时,此步骤可以省略。
(3)执行菜单命令“数据库”菜单项中的“编辑参照完整性”,弹出“参照完整性生成器”对话框。
(4)在“更新规则”选项卡中,选择“级联”单选按钮;在“删除规则”选项卡中,选择“级联”单选按钮;在“插入规则”选项卡中,选择“限制”单选按钮。
单击“确定”按钮。
5.3 解答与提示
本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第三章教程例题答案。
学生可以先预算除显示的结果,再执行显示验证。
实验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
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))+"的圆,面积=",S &&输出结果
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=",S
6.编程:当R>=0时计算圆面积否则输出不合题意。
程序设计:
set talk off
s=0
r=0
input "输入r:" to r
if r>0
s=pi( )*r*r
?"s=", s
else
?"r<0不合题意!"
endif
?"程序结束"
return
**输入r:10然后回车
**输入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 编写程序,求一元二次方程02=++C Bx Ax 的根。
例题分析:①当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
?"方程有一个根为:",X
ENDIF
ELSE
IF D<0
?"方程无实根!"
ELSE
E=SQRT(D)
X1=(-B+E)/(2*A)
X2=(-B-E)/(2*A)
?"方程第一个根为:",X1
?"方程第二个根为:",X2
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
10. 计算分段函数的值:()⎪⎪⎩⎪⎪⎨⎧++-=2-5x 1x 32x 1x x f )
7()72()20()0(≥<≤<≤<x x x x 程序设计:
INPUT "请输入X 的值:" TO X
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
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
IF I>3
WAIT “对不起,你不能使用本系统!“TIMEOUT 10
QUIT
ENDIF
RETURN
15.显示学生表中男学生的姓名,及男学生的人数。
SET TALK OFF
USE 学生
N=0
SCAN FOR 性别="男"
?姓名
N=N+1
ENDSCAN
?"男学生的人数为:",N
USE
SET TALK ON
6.3 解答与提示
本实验的所有内容均可以上机实验,在命令窗口中输入相应内容,在主窗口即可得到运行结果,或者也可参照第六章教程例题答案。
学生可以先预算除显示的结果,再执行显示验证。
实验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的结构和内容
表1-16 考生成绩表. dbf的结构
提示:①在主程序中,在两个工作区分别打开两个表,建立索引和关联。
并打开过程文件,定义数组。
②用循环和数组的方式接收输入的考生成绩表的数据,每输入一组数据后,在考生成绩表
中添加一条空记录,用命令GATHER FROM <数组名> 将数据替换空记录。
③调用计算成绩等级的过程,根据考生成绩表中的笔试和上机成绩填写考生登记表中的结
论。
成绩等级计算和结论填写方法:当笔试的上机都在90分以上时,结论为“优”;
当笔试或上机中有一项在60人分以下时,结论为“不合格”,此外都为“合格”。
④调用输出过程,输出表头及每个考生的相关内容。
7.3 解答与提示
1. 程序编写提示:
①在主程序中,用一个循环(FOR或DO WHILE)实现1~100的取数和求和。
②在过程中用一个循环进行求阶乘。
参考程序见图1.20
图 1.20 程序P8-1 . PRG和过程SUB8-1. PRG编写窗口
2. 程序编写提示:
①在主程序中输入圆半径,调用过程文件,最后输出圆的面积和球体积。
②过程文件中的两个过程分别计算圆面积和圆球体积。
参考程序见图1.21
图 1.21 程序P8-2 . PRG和过程文件SUB8-2. PRG编写窗口
3. 程序编写提示:
①本程序需要用一个一维数组来保存循环输入的数据,并用一个循环语句显示输入
的数据。
②在程序中用一个循环语句实现求各分数和、求最高分、最低分,在总分中减去最
高分、最低分并除以8,得到平均分。
最后输出结果。
参考程序见图1.22
图 1.22 程序P8-3 . PRG编写窗口
4. 程序编写提示:
①在主程序中,首先定义一个包含3个变量的一维数组,用于存放每一个考生的考
号和成绩,然后打开过程文件,并在两个工作区分别打开两个表,按考号建立索引和关联。
②用循环(因为有五个考生,循环次数为5)和数组的方式接收输入的考生成绩表
的数据(数据接收语句用INPUT),每输入一组数据后,在考生成绩表中添加一条空记录,用命令GA THER FROM <数组名> 将数据替换空记录。
③调用计算成绩等级的过程,根据考生成绩表中的笔试和上机成绩填写考生登记表
中的结论(注意工作区的选择)。
④调用输出过程,先输出表头,再用循环语句输出每个考生的相关内容(涉及到两
个表)。
参考程序见图1.23和图1.24
图 1.23 程序P8-4 . PRG编写窗口
图 1.24 程序SUB8-4 . PRG编写窗口。