《VFP6.0程序设计》 下载本文

《VFP6.0程序设计》

实验指导

第一部分 Visual FoxPro 6.0的基本操作

1、建立个人文件夹:在Windows环境下,选择最后一个磁盘驱动器,在其中单击右键,选择“新建”命令,选择“文件夹”,输入个人的文件夹名。 2、VFP的启动、退出与操作界面

(1)启动VFP:在Windows环境下,单击“开始”菜单,选择“程序”,出现级联菜单,在下级级联菜单中选择“Visual FoxPro 6.0”,进入Visual FoxPro 6.0的工作界面。

启动Visual FoxPro后,系统显示Visual FoxPro的工作环境,如上图所示。Visual FoxPro的工作环境包括以下几个部分: ? 标题栏。 ? 菜单栏。有8个系统菜单构成,每个下拉菜单包括一组菜单命令,完成大部分操作。 ? 工具栏。由一系列的按钮构成,每个按钮执行的操作对应于某个菜单命令。 ? 主窗口。工具栏下面的空白区域,用于显示命令的结果。 ? 命令窗口。输入、执行单个的命令,每条命令输入完毕,打回车。 ? 状态栏。显示当前操作的状态。 (2)退出VFP: ? 在Visual FoxPro的“文件”菜单中选择“退出”。 ? 在Visual FoxPro的命令窗口中敲入QUIT,打回车。 ? 单击Visual FoxPro系统窗口右上角的“关闭”按钮。 3、设置工作环境

(1)进入Visual FoxPro工作界面,选择“工具”菜单,选择“选项”命令,在打开的选项对话框中设置工作环境。 ? 默认目录的设置:选择“文件位置”选项卡,选中“默认目录”,选择“修改”按

钮,出现“更改文件位置”对话框,在对话框中选中复选框,可在文本框中直接输入文件路径,如:F:\\WL,也可打开按钮 · · · ,选择文件路径。注意:每次进入Visual FoxPro,都必须设置默认目录。

1

日期格式的设置:在命令窗口输入? DATE(),打回车,显示日期格式。如果是标准格式,则不用设置;如果是严格的日期格式{^YYYY-MM-DD},则输入命令“SET STRICTDATE TO 0”,执行,取消严格格式。然后选择“工具”菜单,选择“选项”命令,在打开的选项对话框中选择“区域”选项卡,在“日期格式”下拉列表框中选择“美语”标准格式。 4、建立项目 ? 选择“文件”菜单,选择“新建”命令,在新建对话框中设置文件类型为“项目”,

单击“新建文件”按钮,打开“创建”对话框,在对话框中输入项目文件名XSGL·PJX,单击“保存”按钮,打开项目XSGL的项目管理器。 ? 项目管理器中包含六个选项卡,是全部、数据、文档、类、代码、其他选项卡。

全部选项卡——管理一个项目中所有类型的文件。

数据选项卡——管理数据库、自由表、查询和视图类数据。 文档选项卡——管理表单文件、报表文件和标签文件。 类选项卡——管理类库文件。 代码选项卡——管理程序文件。

其他选项卡——管理除上述文件以外的文件,如:菜单文件、文本文件。 5、通过项目管理器建立自由表 ? 建立表:选择“文件”菜单,选择“打开”命令,打开XSGL项目的项目管理器,

选择“数据”选项卡,选中“自由表”,单击“新建”按钮,在随后出现的“新建表”对话框中选择“新建表”按钮,在“创建”对话框中输入表文件名“学生表”,单击“保存”按钮,打开“表设计器”,如图所示:

?

在表设计器中分别输入各个字段的名字、类型、宽度以及小数位数,输入完毕后,单击“确定”按钮,在随后出现的对话框中选择“Y”,在随后出现的数据编辑窗口中输入记录,输入完毕后,可用Ctrl+W、单击“关闭”按钮、双击控制菜单图标等方法存盘。 ? 修改表结构、查看表:在项目管理器中,选择“自由表”,点开前面的+,选中学

生表,单击右边的“修改”按钮,可以修改表的结构,如增加、修改、删除字段;单击“浏览”按钮,可查看、修改表中的记录,此时,如果要增加记录,打开菜单栏中的“表”菜单,选择“追加新记录”命令,就可追加新记录。

2

6、命令方式建立自由表

在命令窗口中输入命令:CREATE <表文件名>,打回车,出现“创建”对话框,在“创建”对话框中输入表文件名“学生表”,单击“保存”按钮,打开“表设计器”。 7、菜单方式建立自由表

单击“文件”菜单的“新建”项,进入“新建”窗口,选择“表”选项,单击“新建文件”按钮,打开“新建文件”对话框,输入表名,单击“保存”按钮,打开“表设计器”。 8、表的打开 ? 项目管理器方式:打开XSGL项目的项目管理器,选择“数据”选项卡,选中“自

由表”,点开前面的+,选中学生表。 ? 命令方式:在命令窗口中输入命令:USE 表文件名, 打开自由表。 ? 菜单方式:在“文件”菜单中选择“打开”命令,出现“打开”对话框,在“文件

类型”下拉列表框中选择“表”选项,在“文件名”文本框中输入表文件名。 9、命令方式查看、修改记录 ? 在命令窗口中输入命令:BROWSE,打回车,出现数据浏览窗口,可以查看、修

改记录。 ? 在命令窗口中输入命令:DISP ALL ,打回车,在主窗口中显示全部记录。 10、命令方式添加、插入、删除记录 ? 在命令窗口中输入命令:APPEND,打回车,出现一个编辑窗口,输入新记录。 ? 在命令窗口中输入命令:INSERT [BLANK],打回车,可在当前记录后面插入记录。 ? 在命令窗口中输入命令:DELETE命令,打回车,可以按条件删除记录。 11、关闭自由表

在命令窗口中输入命令:USE 12、建立数据库 ? 命令方式:CREATE DATABASE <数据库名>,出现数据库设计器窗口。 ? 菜单方式:单击“文件”菜单的“新建”命令,进入“新建”窗口,选择“数据库”

选项,单击“新建文件”按钮,出现“创建”对话框,输入数据库名,单击“保存”按钮,出现数据库设计器窗口。 ? 项目管理器方式:打开XSGL项目的项目管理器,选择“数据”选项卡,选中“数

据库”,单击右侧的“新建”按钮,选择“新建数据库”,输入数据库名,单击“保存”按钮,出现数据库设计器窗口。 13、在数据库中建立、添加、移去表 ? 建立表:打开XSGL项目的项目管理器,选择“数据”选项卡,选定相应数据库

文件的“表”选项,单击“新建”按钮,进入“新建”表窗口,单击“新建表”按钮,打开表设计器。 ? 添加表:打开XSGL项目的项目管理器,选择“数据”选项卡,选定相应数据库

文件的“表”选项,单击“添加”按钮,进入“打开”窗口,选择要添加的表,单击“确定”按钮,所选定的表就被添加到打开的数据库中了。 ? 移去表:在项目管理器中,选定需要移去的数据库表文件,单击“移去”按钮,在

3

随后出现的窗口中选择“移去”按钮即可。 14、建立程序文件 ? 菜单方式:单击“文件”菜单中的“新建”选项,弹出“新建”对话框,选择“程

序”选项,打开“程序编辑”窗口,在程序编辑窗口中输入并编辑程序。 ? 命令方式:在命令窗口中输入:MODIFY COMMAND <程序名> 15、执行程序文件 ? 菜单方式:单击“程序”菜单中的“运行”选项,显示“运行”对话框,在“执行

文件”文本框中输入程序名。 ? 命令方式:在命令窗口中输入: DO <程序名> 16、建立表单 ? 使用表单向导创建表单:从“文件”菜单中选择“新建”选项,在“新建”对话框

中选择“向导”按钮,出现“向导选取”对话框。选择“表单向导”,单击“确定”按钮,进入“表单向导”窗口。在“数据库和表”下拉列表中选取表,双击所需要的“可用字段”,选定的字段出现在“选定字段”中,单击“下一步”,进入“表单向导”窗口。在“表单向导”窗口中,选择样式和按钮类型,单击“下一步”,进入下一个窗口。选定排序的字段,单击“下一步”,进入下一个窗口。键入表单的标题,单击“完成”按钮,单击“预览”按钮,出现结果。 ? 使用表单设计器创建表单:在“项目管理器”窗口中选择“文档”选项卡,选定“表

单”图标,选择“新建”按钮,出现“表单设计器”窗口。 ? 使用“快速表单”创建表单:启动表单设计器后,在“表单”菜单中选择“快速表

单”,启动表单生成器,如图所示:

单击表单生成器的“字段选取”选项卡的按钮,选择学生表。将“可用字段”下拉列表中的所有字段添加到“选定字段”下拉列表中。在“样式”选项卡中选择“浮雕”样式。单击确定,此时在表单中创建了和学生表的所有字段绑定的控件。 ? 使用命令创建表单:在命令窗口中输入如下的命令,可创建一个“查询”表单。 查询=createobject('form')

modi form '查询' 17、执行表单 ? 命令方式:在命令窗口中输入: DO FORM <表单文件名> ? 菜单方式:在“表单”菜单中选择“执行表单” ? 项目管理器方式:在项目管理器中选择“表单”,并运行。

4

第二部分《VFP程序设计》实验

一、实验教学目标

实验目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高学生分析问题和解决问题的能力。VFP程序设计课程实验要求学生能熟练运用VFP的命令、程序设计方法、各种设计器和生成器,编写出解决实际问题的数据库应用程序。 二、实验要求

1) 实验准备:记忆VFP的函数、命令、程序设计语句,掌握分支程序、循环程序、

子程序的设计方法,掌握表单设计器、报表设计器、菜单设计器的使用方法,掌握表单、报表、菜单的设计方法。 2) 实验要求:每个学生在实验课前预习本课时内容和本章节的内容,认真阅读实验教

材,理解实验要求和实验内容,独立编写程序代码。上机时,运行源代码,调试程序,输出正确的结果,完成实验目标。实验完成后,总结经验,认真填写实验报告。 3) 考核要求:在规定的实验室和规定的时间内,按班级参加上级考试,随机抽取试题,

按要求完成操作,根据结果正确性确定考核成绩 。 三、实验课时安排

序 号 实验一 实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九 实验十 实验十一 实验十二

实验名称 函数和表达式的使用 建立学生管理数据库 表的维护 表的排序、索引、查询和统计 多表使用 数据库的基本操作 程序设计基本命令 分支程序设计 循环程序设计 子程序设计 查询与视图的创建 表单设计与控件使用(一) 5

课 时 2 2 2 2 2 2 2 2 2 2 2 2 必(选)做 必做 必做 必做 必做 选做 必做 必做 必做 必做 必做 选做 必做 实验十三 实验十四 实验十五 实验十六 表单设计与控件使用(二) 表单设计与控件使用(三) 报表设计 菜单设计 2 2 2 2 必做 必做 必做 必做 四、实验内容

6

实验一 函数和表达式的使用

实验目的:

通过本次实验,掌握Visual FoxPro 6.0系统中常量、变量、表达式及函数的使用方法。

实验准备:

1. 阅读第3章中相关的内容;

2. Windows环境下,在F盘的根目录下建立个人文件夹,启动Visual FoxPro 6.0系

统,在“选项”对话框中设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 2. 3. 4. 5.

按顺序在命令窗口中输入以下的命令并执行,查看结果: 将“ABC”赋值给变量A,B,C;将12.4赋值给变量D。 显示已定义的A,B,C的值,查看这4个变量的数据类型。

定义一个二维数组Array1,要求该数组为3行3列,并给其中的数据赋不同类型的值。

显示数组Array1中各个元素的值。 Disp memo like array1* 在命令窗口运行如下的命令:

AA=“工程技术” BB=“计算机” CC=“2000”

DD=AA+“ ”+BB+“ ”+CC ?AA$DD,DD$BB ?AA+CC

?\?2**5=2^5 AND STR(2.5)=[2]

?“ABC ”-“ DEF”=“ABCDEF” OR “ABC”$“AB” ? NOT “ABC”==“AB” 在命令窗口运行如下的命令:

nl=24 xb=“女” hf=.F.

zc=“助教” gz=530.70

?nl>30.OR.gz<600.AND..NOT.zc=“讲师” ?(nl>30.OR.gz<=600).AND..NOT.zc=“讲师” ?nl>25.AND..NOT.xb=“男” ?.NOT.hf.AND.xb=“女”

7

6.

7. 计算下列函数的值:

LEN(“ABCDEF”+SPACE(6))

SUBSTR(“Visual FoxPro 6.0程序设计”,5,6) DATE()

YEAR(DATE()) DTOC(DATE()) ROUND(256.89,1) REPLICATE(“*”,6)

LEN(STR(95643.5136,8,1)) STR(95643.5136) STR(95643.5136,8,2) STR(95643.5136,8) STR(95643.5136,3) VAL(“25.5”) VAL(“123ABC”) VAL(“8769.3421”)

实验小结:

8

实验二 建立学生管理数据库

实验目的:

1. 掌握项目管理器的使用方法;

2. 熟练掌握数据库表设计器的操作方法; 3. 掌握表的创建和表记录输入方法。

实验准备:

1. 阅读第4章中相关的内容;

2. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 启动项目管理器,在F:\\个人文件夹下创建一个项目文件,命名为XSGL.PJX。 2. 在新建的项目XSGL中建立三个表,分别为学生表、课程表、成绩表。 3. 按下图内容建立三个表的结构:

学生表.dbf

课程表.dbf

9

成绩表.dbf

4. 当出现下面的对话框时,选择Y,为学生表、课程表、成绩表输入20条记录。

实验小结:

10

实验三 表的维护

实验目的:

1. 2. 3. 4.

熟练掌握修改表结构和浏览表记录;

掌握表记录的添加、编辑、删除、恢复、定位的方法; 掌握文件的复制、删除、更名; 掌握数组与表之间的数据交换。

实验准备:

1. 阅读第4章中相关的内容;

2. 准备好前面实验所创建的项目和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 在命令窗口中输入 USE 学生表,打开表文件。 2. 逐行输入、执行如下的命令,并观察、比较结果:

BROWSE

BROWSE FIELDS 姓名,学号,性别 FOR 性别=.T. FREE 姓名

BROWSE FIELDS 姓名,学号,性别 FOR 性别=.T. FREE 姓名 LOCK 2

BROWSE FIELDS 姓名,学号,性别 FOR 性别=.T. FREE 姓名 LOCK 2 NOMENU

BROWSE FIELDS 姓名,学号,性别 FOR 性别=.T. FREE 姓名 LOCK 2 NOMENU

PARTITION 1

BROWSE FIELDS 姓名,学号,性别 FOR 性别=.T. FREE 姓名 LOCK 2 NOMENU

PARTITION 3 LEDIT

3. 在命令窗口中输入:DISPLAY ALL 命令,查看记录。 4. 在命令窗口中使用APPEND命令,添加10条记录。

5. 使用GO命令或SKIP移动指针到第8条记录,使用INSERT命令插入一条记录。 6. 依次输入命令: GO BOTTOM,?EOF(),SKIP,?EOF()。

7. 使用DELETE命令删除最后一条记录、使用RECALL命令恢复记录。 8. 使用COPY FILE 命令复制任意文件、使用COPY TO 命令复制学生表文件到新表ABC

中、使用COPY STRU 命令复制学生表结构到新表XYZ中,查看新表ABC的内容,查看新表XYZ的内容。

9. 学生表的记录指针指向第8条,使用SCATTER 命令把学生表的当前记录的值传送

给数组A,学生表尾追加一条新空白记录,再使用GATHER 命令把数组A中的值传送给学生表的当前记录。

10. 使用REPLACE命令修改学生表,把姓名为“高大山”的同学的家庭住址改为上海

市浦东区。

REPL 家庭住址 WITH \上海市浦东区\姓名=\高大山\

BROW

11. 使用CHANGE命令修改学生表,修改班级为“会计学”的同学的姓名、班级、家庭

11

住址、电话。

CHANGE FIELDS 姓名,班级,家庭地址,电话 ALL FOR 班级=\会计学\

12. 使用CREATE命令创建学生表1、课程表1、成绩表1,各个表的结构与实验二中给

出的结构相同。

实验小结:

12

实验四 表的排序、索引、查询和统计

实验目的:

1. 2. 3. 4. 5.

掌握建立排序和索引的方法; 掌握几种索引的区别;

掌握使用索引快速查询的方法; 掌握使用LOCATE 命令查询的方法; 掌握表的统计与汇总的方法。

实验准备:

1. 阅读第4章中相关的内容;

2. 准备好前面实验所创建的项目和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 使用USE命令打开学生表,按“班级”字段的升序进行排序,班级相同者,按“学

号”字段的升序进行排序,显示排序文件的内容。

2. 对学生表按班级建立单索引文件S1.IDX,按班级+学号建立单索引文件S2.IDX。 3. 对学生表分别按学号、班级+姓名、班级+性别、姓名建立结构化复合索引文件的标

识B1、B2、B3、B4。 4. 关闭所有的文件。

5. 用USE命令打开学生表,用SET INDEX TO 命令打开单索引文件S1和S2,用SET

ORDER TO 命令设置主索引为B2,显示内容。

6. 用SET ORDER TO 命令设置主索引为B1,显示其内容,用FIND命令查询学号为

“20031105”的学生信息。

7. 用SET ORDER TO 命令设置主索引为B4,用FIND命令查询姓名为“王光鑫”的学

生信息。 8. 用SET ORDER TO 命令设置主索引为B2,用SEEK命令查询班级为“会计学”、姓名

为“孙立娟”的学生信息。

9. 用LOCATE命令查找班级为“会计电算化”的所有学生信息,逐条显示。 10. 统计所有学生的人数,班级为“会计学”的学生人数。

11. 打开成绩表,统计学号为“20031101”学生的总分、平均分。 12. 对成绩表中的成绩按学号进行分类汇总。

实验小结:

13

实验五 多表使用

实验目的:

1. 2. 3. 4.

理解、掌握多工作区的概念; 掌握表之间临时关系的建立方法; 掌握表之间的连接方法;

掌握多工作区之间的表内容的更新。

实验准备:

1. 阅读第4章中相关的内容;

2. 准备好前面实验所创建的项目和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 在1号工作区中打开学生表,在2号工作区中打开成绩表,选择1号工作区为当前

工作区,以学号字段建立索引,选择2号工作区为当前工作区,以学号字段建立索引,选择1号工作区为当前工作区,用set relation命令建立关联。显示学号为“20031101”学生的学号,课程号,成绩。 sele 1 use 学生表 sele 2 use 成绩表 sele 1

index on 学号 to s1 sele 2

index on 学号 to s2 sele 1

set relat to 学号 into B

list 学号,b.课程号,b.成绩 for 学号=\

2. 把已存在的学生表和成绩表通过“学号”字段联接起来,生成新的表文件“学生成

绩表”,新表中包含如下字段:学号,姓名,班级,课程号,成绩。 SELE 1 USE 学生表 SELE 2 USE 成绩表 SELE 1

JOIN WITH B TO 学生成绩 FOR 学号=B.学号 FIELDS 学号,姓名,班级,B.课程号,B.成绩

3. 用表设计器修改学生表结构,增加“总成绩”字段,用成绩表的成绩总和来更新学

生表的“总成绩”字段值。

14

SELE 1

USE 学生表

index on 学号 to s1

sele 2

USE 成绩表

index on 学号 to s2 SELE 1

UPDATE ON 学号 FROM B REPLACE 总成绩 WITH 总成绩+B.成绩 DISP ALL

实验小结:

15

实验六 数据库的基本操作

实验目的:

1. 2. 3. 4. 5.

掌握项目管理器方式、菜单方式和命令方式创建数据库的方法; 熟练掌握在数据库中添加和移去表的操作; 完善表的有效性规则;

掌握建立表之间永久关系的方法;

掌握相关表之间数据参照完整性的设置方法。

实验准备:

1. 2. 3. 4.

阅读第5章中相关的内容;

准备好前面实验所创建的项目和表文件;

启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名; 打开XSGL项目的项目管理器。

实验内容:

1. 用命令方式创建数据库XSGL.DBC,再数据库中添加学生表、成绩表、课程表。 2. 在成绩表的表设计器中设置字段的有效性规则,成绩字段的规则为:成绩>=0 AND

成绩<=100,如果违反规则,则信息为“成绩必须在0~100之间! 请重新输入”。检验触发:把某个学生的成绩改为120分,观察是否违反了规则。

3. 创建记录级有效性规则。增加“出生日期”字段和“年龄”字段,在记录级有效性

规则中输入表达式:YEAR(DATE())-YEAR(出生日期))=年龄 4. 创建表的触发器,使用表设计器为学生表设置三个触发器。在更新触发器中输入表

达式:学号>“20030000” AND 学号<“20040000”。 检验一下触发器是否有效。 5. 在数据库设计器窗口中,在学生表的设计器中以“学号”建立主索引,在成绩表的

设计器中以“学号”建立普通索引,在学生表和成绩表之间建立永久关系。 6. 设置学生表和成绩表的参照完整性。其中“更新规则”、“删除规则”、“插入规则”

三个选项卡分别选择“级联”、“级联”、“限制”。

实验小结:

16

实验七 程序设计基本命令

实验目的:

1. 2. 3. 4.

掌握交互式输入命令; 掌握格式化输入命令;

掌握程序设计的输出命令; 掌握格式化输出命令。

实验准备:

1. 2. 3. 4.

阅读第6章中相关的内容;

准备好前面实验所创建的项目和表文件;

启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名; 打开学生表。

实验内容:

1. 练习交互式输入命令INPUT:

INPUT “请输入学生的姓名:” TO XM INPUT “请输入学生的班级:” TO BJ INPUT “请输入学生的性别:” TO XB ? XM,BJ,XB

2. 练习交互式输入命令ACCEPT。

ACCEPT “请输入要打开的表文件名” TO BM

USE &BM

3. 练习交互式输入命令WAIT。

4. 练习格式化输入命令@…GET…READ,在学生表中追加一条空记录,用GET命令格式

化输入各个字段的值。 USE 学生表 APPE BLANK

@ 5, 8 SAY “请输入学号:” GET 学号 @ 6, 8 SAY “请输入姓名:” GET 姓名 @ 7, 8 SAY “请输入性别:” GET 性别 @ 8, 8 SAY “请输入班级:” GET 班级 @ 9, 8 SAY “请输入年龄:” GET 年龄

@ 10, 8 SAY “请输入出生日期:” GET 出生日期 @ 11, 8 SAY “请输入家庭住址:” GET 家庭住址 @ 12, 8 SAY “请输入特长:” GET 特长 READ

5. 练习格式化输出命令@…SAY…,在屏幕上输出学生表的第二条记录。 USE 学生表

GO 2

17

@ 5, 8 SAY 学号 @ 6, 8 SAY 姓名 @ 7, 8 SAY 性别 @ 8, 8 SAY 班级 @ 9, 8 SAY 年龄

@ 10, 8 SAY 出生日期 @ 11, 8 SAY 家庭住址 @ 12, 8 SAY 特长

6. 格式化输入输出的练习(建立程序:LX1.PRG)

A1=.F.

A2=SPACE(15) A3=1234 A4=DATE()

@2,10 SAY “输入逻辑”GET A1 @2,10 SAY “编辑字符”GET A2 @2,10 SAY “输入数据”GET A3 @2,10 SAY “编辑日期”GET A4 READ

实验小结:

18

实验八 分支程序设计

实验目的:

掌握结构化程序设计的分支结构程序设计。

实验准备:

1. 2. 3. 4.

阅读第6章中相关的内容;

准备好前面实验所创建的项目和表文件;

启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名; 打开学生表、成绩表。

实验内容:

1. 设计简单分支程序。在学生表文件中查询“刘利军”的基本情况,如果找到,显示

信息。

2. 设计选择分支程序,在成绩表文件中查找学号为“20031102”的学生的第一门成绩,

若成绩大于60分,显示其学号、课程号、成绩;否则显示学号、课程号,并通知补考。

3. 输入两个数按从大到小输出。

input “第一个数:” to x input “第二个数:” to y if x

4. 设计一个简单的菜单,包括对学生表记录的追加、修改和删除的功能。

use 学生表

?\ 增加记录\?\ 修改记录\?\ 删除记录\?\ 退出\

wait \请选择菜单项(1,2,3,4)\ to s do case case s=\ append case s=\ brow case s=\

19

accept \请输入要删除学生姓名:\ to name dele for 姓名=name

accept \确实要删除吗(y/n):\ to yn if upper(yn)=\ pack endif

case s=\return endcase return

5. 根据键入的X值,计算下面的分段函数值,并显示结果。

2

5X+6X-1 (X≤0) 2

X-4X+1 (0

3X+1 (X>20)

实验小结:

20

实验九 循环程序设计

实验目的:

掌握结构化程序设计的循环结构程序设计。

实验准备:

1. 阅读第6章中相关的内容;

2. 准备好前面实验所创建的项目和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 编程,求1+2+3+………+100的和。

X=1 S=0

DO WHILE X<=100 S=S+X X=X+1

ENDDO ?S return

2. 求1到100间所有偶数之和。 set talk off

s=0 k=0

do while k<=100 k=k+1

if int(k/2)=k/2 s=s+k else

loop endif

enddo ?s return

3. 统计学生表中的女生的人数。 set talk off

use 学生表 store 0 to s

locate for 性别=\女\do while not eof()

21

?姓名,性别 s=s+1 continue

enddo ?s use retu

4. 输出3-100之间的素数。 for m=3 to 100 for i=2 to m-1 if int(m/i)=m/i exit endif endfor

if i=m

??str(m,3)+\

endif next return

5. 编程输出如下图形:

*

* * *

* * * * * * * * * * * *

* * * * * * * * *

6. 有数列1,1,2,3,5,8,13……,要求显示该数列前20项,并且求和。

实验小结:

22

实验十 子程序设计与数组

实验目的:

1. 2. 3. 4.

掌握过程结构的程序设计方法; 领会内部过程与外部过程;

领会全局变量与局域变量的不同用法; 掌握数组变量的应用方法。

实验准备:

1. 2. 3. 4.

阅读第6章中相关的内容;

准备好前面实验所创建的项目和表文件;

启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名; 打开学生表。

实验内容:

1. 试编写一程序,求解W=X!+Y!+Z!(X,Y,Z均为正整数)。 2. 试设计并编写一个“学生管理系统”,使其具有查询、统计、显示和修改表文件内

容的功能。具体要求是:

(1)程序由一个主控模块和4个子模块:查询、显示、统计、修改构成。 (2)能够按照给定的单一条件或符合条件调用查询子程序、显示子程序 、修改子程序、

统计子程序。

3. 运用数组,对任意输入的10个整数进行排序,按由大到小的顺序输出。

4. 建立主程序MAIN.PRG,子程序SUB4.PRG,运行,查看结果,体会变量的作用域。

MAIN.PRG:

SET TALK OFF A=1 B=2

?\在主程序中:A=\DO SUB4

? \返回主程序后:A=\SET TALK ON SUB4.PRG: PRIVATE B PUBLIC C A=10 B=11 C=12 D=13

?\在过程中:A=\RETURN

23

实验十一 查询与视图的创建

实验目的:

1. 2. 3. 4. 5. 6.

了解查询与视图的基本概念;

掌握查询的两种创建方式:查询向导和查询设计器; 掌握创建基于单张表和多张表的查询方法;

掌握视图的两种创建方式:视图向导和视图设计器; 熟悉SQL_SELECT语句的使用; 了解视图与查询的区别。

实验准备:

1. 2. 3. 4.

阅读第7章中相关的内容;

准备好前面实验所创建的项目、数据库和表文件;

启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名; 打开XSGL项目的项目管理器。

实验内容:

1. 练习打开查询设计器的三种方式:一是使用项目管理器;二是通过“文件”菜单或

工具栏中的“新建”命令新建查询;三是CREATE QUERY命令。

2. 用查询设计器创建基于多表的查询XSCJ.QPR,查询学生的高等数学的成绩情况以

及平均成绩。其中涉及三个表:学生表、成绩表、课程表。

3. 以下的3—8使用SQL_SELECT语句来完成查询:在学生表中检索所有班级值。 4. 检索学生表中哪些班级有家庭地址是北京的同学。

5. 给出在“会计电算化”班级的,并且高等数学多于90分的同学的姓名,学号。 6. 检索出高等数学不在90到100分范围内的学生信息。 7. 求会计班的学生的最低总分。

8. 对于学生表,按班级统计男生的人数,按班级排序。

9. 用视图设计器创建一个基于学生表的视图,要求显示姓名、学号、家庭地址字段,

可更新家庭地址。

实验小结:

24

实验十二 表单设计与控件使用(一)

实验目的:

1. 2. 3. 4.

熟练掌握利用表单向导创建表单的方法; 掌握表单设计器的使用方法;

掌握简单表单的属性、事件的设计;

掌握在表单中添加控件的方法,控件的属性、事件设计方法。

实验准备:

1. 阅读第8章中相关的内容;

2. 准备好前面实验所创建的项目、数据库和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名;

实验内容:

1. 利用表单向导,针对已创建的XSGL项目中的数据表“学生表”创建一个浏览该数

据内容的“学生信息”表单xsxx1.scx。

2. 利用表单设计器创建一个新表单,添加2个标签控件(用作运算符显示)、3个文

本框控件、一个命令按钮控件。当在第一个和第二个文本框中输入两个数据后,单击“确定”按钮,在第3个文本框中显示两个数的和。表单保存为FORM1.SCX,运行状况如下图所示:

3. 创建一个“密码输入”表单,添加两个标签控件(一个标题为“密码”,一个用于

显示操作的提示信息)、一个文本框、三个命令按钮。当在文本框中输入数据时全部显示“*”。当输入“Visual FoxPro 6.0”,点击确定按钮时,显示为“密码正确!”。当输入非“Visual FoxPro 6.0”,点击确定时,显示为“密码输入错误,请重新输入!”。当第三次输入密码错误时,显示“密码输入错误,请退出!”。点击清除按钮,清除文本框中的密码,等待重新输入。表单保存为FORM2.SCX。

25

4. 设计一个查询表的窗口,如下图所示,要求能对学生表、成绩表、课程表的内容进

行查询。操作步骤如下:

(1) 新建表单,设置表单的Caption属性为“查询表单”,在表单上创建一个选

项按钮组,两个命令按钮。

(2) 选中选项按钮组,单击右键打开选项按钮生成器,设定3个选项按钮的标

题,如图所示。

(3) 在Command1的Click事件中编写代码如下:

do case

case thisform.optiongroup1.value=1

select * from 学生表

case thisform.optiongroup1.value=2

select * from 成绩表

case thisform.optiongroup1.value=3

select * from 课程表

endcase

(4) 在Command2的Click事件中编写代码如下:

close all

Thisform.Release

(5) 表单保存为FORM3.SCX,执行表单,观察运行结果。

实验小结:

26

实验十三 表单设计与控件使用(二)

实验目的:

1. 熟练掌握表单设计器的使用方法; 2. 掌握表单的属性、事件的设计;

3. 掌握常用表单控件的使用、控件的属性、事件设计方法。

实验准备:

1. 阅读第8章中相关的内容;

2. 准备好前面实验所创建的项目、数据库和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 设计表单,让用户微调一定范围的日期。操作步骤如下: (1)新建表单,设置表单的Caption属性为“日期微调”,在表单上创建一个微调按钮,

在微调按钮旁边放置一个文本框,还有一个标签,如图所示。 (2)文本框的Init事件中编写代码如下: thisform.text1.value=date()

(3)微调按钮的Upclick事件中编写代码如下:

thisform.text1.value=thisform.text1.value+1 thisform.refresh

(4)在微调按钮的Downclick事件中编写代码如下: thisform.text1.value=thisform.text1.value-1

thisform.refresh

(5)保存表单为FORM4.SCX,运行表单,查看结果。

2. 设计一个表单,设置表单的Caption属性为“计算1”,添加三个文本框,一个选

项按钮组,一个命令按钮,如下图所示。当选择“选项1”时,点击“=〉”按钮,文本框3中显示文本框1和文本框2的乘积;当选择“选项2”时,点击“=〉”按钮,文本框3中显示文本框1的文本框2次方。操作步骤如下:

(1) 设置文本框的value 属性为0,命令按钮的caption属性为“>=”。 (2) 设置命令按钮的click事件代码如下:

if thisform.optiongroup1.value=1

27

thisform.text3.value= thisform.text1.value* thisform.text2.value

else

thisform.text3.value= thisform.text1.value** thisform.text2.value

endif

(3) 保存表单为FORM5.SCX,运行表单,输入5和2,选择option1,点击“>=”,

查看结果。再选择option2,点击“>=”,查看结果。

3. 如图所示,利用计时器控件TIMER1每隔1秒自动向下移动学生表中的记录,如果

到最后一条记录,则移动到第一条记录。操作如下:

(1) 新建表单,设置表单的Caption属性为“计时器”,在表单上创建2个文本

框,在文本框旁边放置2个标签,另设一个标签,再设一个计时器,如图所示。

(2) 在表单上单击右键,打开数据环境设计器,选择学生表。 (3) 标签1的Caption属性为“学号”,标签2的Caption属性为“姓名”,标

签3的Caption属性为“每隔一秒钟,自动向下移动一条记录,如果到最后一条记录,则移动到第一条记录。”。

(4) 主要属性设置如下:

THISFORM.TEXT1.CONTROLSOURCE=“学生表.学号”

THISFORM.TEXT2.CONTROLSOURCE=“学生表.姓名” THISFORM.TIMER1.INTERVAL=1000 THISFORM.TIMER1.ENABLED=.T.

(5) 计时器控件TIMER1的TIMER事件代码如下:

IF RECNO()=RECCOUNT()

GO TOP

28

ELSE

SKIP ENDIF

THISFORM.REFRESH

(6) 保存表单为FORM6.SCX,运行表单,查看结果。

4. 如下图所示,文本框TEXT1可以输入学号,列表框LIST1有三个选项,点击“执行”

按钮可以执行列表框中对应的功能。操作如下:

(1) 新建表单,设置表单的Caption属性为“查询及维护”,在表单上添加一个

文本框、一个标签、一个列表框和一个命令按钮。

(2) 在表单上单击右键,打开数据环境设计器,选择学生表。 (3) 主要属性设置如下:

THISFORM.LIST1.ROWSOURCETYPE=1

THISFORM.LIST1.ROWSOURCE=“1.查找,2.删除,3.追加”

(4) “执行”按钮的CLICK事件代码如下:

A=SUBSTR(THISFORM.LIST1.VALUE,1,1) LOCATE FOR 学号=THISFORM.TEXT1.VALUE DO CASE CASE A=\IF EOF() B=\没找到\

29

ELSE

B=\已经找到\ENDIF

CASE A=\IF EOF() B=\没找到\ELSE DELETE

B=\已经删除\ENDIF CASE A=\IF EOF() APPE BLAN

REPL 学号 WITH THISFORM.TEXT1.VALUE B=\已经追加\ENDIF ENDCASE

MESSAGEBOX(B)

(5) 保存表单为FORM7.SCX,运行表单,查看结果。

实验小结:

30

实验十四 表单设计与控件使用(三)

实验目的:

1. 熟练掌握利用表单生成器和设计器创建、设计表单;

2. 熟练掌握常用表单控件的使用和使用控件生成器设计控件属性; 3. 掌握表单中主要事件的设计。

实验准备:

1. 阅读第8章中相关的内容;

2. 准备好前面实验所创建的项目、数据库和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 设计一个分页维护学生表的表单,如下图所示:

操作步骤如下:

(1) 创建新表单,将表单的caption属性设置为“学生表维护”,右键单击表单,

选择“生成器”,单击表单生成器的“字段”选项卡的按钮,选择学生

表。将“可用字段”下拉列表中的所有字段添加到“选定字段”下拉列表中。在“样式”选项卡中选择“浮雕”样式。单击确定,此时在表单中创建了和学生表的所有字段绑定的控件。

(2) 在表单中创建一个命令按钮组commandgroup1,右键单击命令按钮组,选择

“生成器”,在“生成器”的“按钮”选项卡中,设置如下图所示的属性,并在“布局”选项卡中设置按钮间隔为25个像素。

31

(3) 在command1按钮的click事件中编写下列代码: go top

thisform.refresh

在command2按钮的click事件中编写下列代码: if recn()>1 skip-1

thisform.refresh if recno()=1

thisform.commandgroup1.command1.enabled=.f. endif

if thisform.commandgroup1.command4.enabled=.f. thisform.commandgroup1.command4.enabled=.t. endif endif

在command3按钮的click事件中编写下列代码: if recno()

thisform.refresh if recn()=reccount()

thisform.commandgroup1.command4.enabled=.f. endif

if thisform.commandgroup1.command1.enabled=.f. thisform.commandgroup1.command1.enabled=.t. endif endif

在command4按钮的click事件中编写下列代码: go bottom

thisform.refresh

在command5按钮的click事件中编写下列代码:

32

close database thisform.release

(4) 保存表单为FORM8.SCX,执行表单,点击按钮组的按钮,可以分页浏览

并且修改记录。

(5) 在表单中添加一个列表框LIST1,调整表单的界面,设置列表框的

ROWSOURCETYPE属性为6,ROWSOURCE属性为学生表.班级,在LIST1的CLICK事件中编写下列代码:

if thisform.list1.listindex=0 return endif

a=thisform.list1.listindex

thisform.班级1.value= thisform.list1.list(a)

(6) 保存表单,执行表单。

2. 设计表单,要求表单始终显示在Visual FoxPro 6.0主窗口中央。单击表单,在表

单上显示一个紫色圆形图案;双击表单,在表单上显示一个蓝色矩形图案。在显示图形时,将上一个图形清除。如下图所示。

操作步骤如下:

(1) 新建表单,将表单的caption属性设置为“变图形”,在属性窗口中将

AutoCenter属性设置为.T.。

(2) 为表单的click事件添加程序:

thisform.cls

thisform.forecolor=rgb(255,0,255) thisform.circle(30,60,60)

(3) 为表单的Dbclick事件添加程序:

thisform.cls

thisform.forecolor=rgb(0,0,255) thisform.box(100,100,150,150)

(4) 保存表单为FORM9.SCX,执行表单,单击、双击表单,观察变化。 3. 设计表单,如下图所示,根据选项按钮组的选项来查询学生表中的学号或姓名,如

果找到符合条件的记录,则右侧文本框中显示该同学是否获得奖学金;如果没有找到,则显示“没有找到”。操作步骤如下:

33

(1)创建新表单,将表单的caption属性设置为“学生表查询”,在表单中创建一个选

项按钮组OPTIONGROUP1,创建两个组合框COMBO1和COMBO2,创建一个命令按钮,一个文本框。 (2)将选项1的Caption属性设置为“按学号”,将选项2的Caption属性设置为“按

姓名”,COMMAND1的Caption属性设置为“查询”。

(3)在表单上单击右键,打开数据环境设计器,选择学生表。 (4)主要属性设置如下:

THISFORM.COMBO1.ROWSOURCE=“学生表.学号” THISFORM.COMBO1.ROWSOURCETYPE=6

THISFORM.COMBO2.ROWSOURCE=“学生表.姓名” THISFORM.COMBO1.ROWSOURCETYPE=6 THISFORM.OPTIONGROUP1.VALUE=1 (5)“查询”按钮的CLICK事件代码如下:

IF THISFORM.COMBO2.LISTINDEX = 0

LOCATE FOR 学号=THISFORM.COMBO1.VALUE ELSE

LOCATE FOR 姓名=THISFORM.COMBO2.VALUE ENDIF

IF NOT FOUND()

THISFORM.TEXT1.VALUE = \没有找到\ELSE

IF 获奖学金=.T.

THISFORM.TEXT1.VALUE=\该同学获得奖学金\ ELSE

THISFORM.TEXT1.VALUE=\该同学没有获得奖学金\ ENDIF ENDIF

(6)保存表单为FORM10.SCX,执行,在下拉列表框中选择学号或姓名,单击“查

询”按钮,观察结果。

4. 利用计时器控件TIMER1将表单中的矩形SHAPE1逐渐变为圆形,每隔1秒变化一次,

34

同时在文本框TEXT1中显示当前已经计时的秒数,如果秒数大于等于99,则停止计时。如下图所示:

(1)创建新表单,将表单的caption属性设置为“变形”,在表单中创建一个计时器控

件TIMER1,文本框TEXT1,两个标签,一个图形SHAPE1。 (2)将标签1的Caption属性设置为“已经计时”,将标签2的Caption属性设置为

“秒”,将SHAPE1的BackStyle属性设置为1,将SHAPE1的BackColor属性设置为0,0,255,将文本框TEXT1的value属性设置为0。 (3)主要属性设置如下:

THISFORM.SHAPE1.CURVATURE=0 THISFORM.TIMER1.INTERVAL=1000 THISFORM.TIMER1.ENABLED=.T.

(4)计时器控件的TIMER事件代码如下:

THISFORM.TEXT1.VALUE=THISFORM.TEXT1.VALUE+1

IF THISFORM.TEXT1.VALUE>=99 THISFORM.TIMER1.ENABLED=.F. ELSE

THISFORM.SHAPE1.CURVATURE=THISFORM.SHAPE1.CURVATURE+1 THISFORM.REFRESH ENDIF

(5)保存表单为FORM11.SCX并执行表单,观察图形的变化。

实验小结:

35

实验十五 简单报表的设计

实验目的:

1. 掌握利用报表向导、报表设计器创建报表及创建快速报表的方法; 2. 掌握和理解本实验中出现的一些基本的VFP语句。

实验准备:

1. 阅读第9章中相关的内容;

2. 准备好前面实验所创建的项目、数据库和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 2. 3. 4. 5.

为学生表创建一个快速报表。 在报表设计器中修改学生表文件。 制作学生档案卡片。

将学生表文件修改成按“班级”分组的报表。 设计一个学生信息多栏报表。

实验小结:

36

实验十六 菜单设计

实验目的:

1. 掌握利用菜单设计器建立下拉式菜单及快捷菜单的方法; 2. 掌握和理解本实验中出现的一些基本的VFP语句。

实验准备:

1. 阅读第10章中相关的内容;

2. 准备好前面实验所创建的项目、数据库和表文件;

3. 启动Visual FoxPro 6.0系统,设置默认的工作目录为F:\\个人文件夹名。

实验内容:

1. 设计一个学生管理的下拉菜单。 2. 设计一个快捷菜单。

实验小结:

37

2004年11月

黑龙江省高校非计算机专业学生

计算机等级考试试卷

二级 VFP B卷 本试卷答卷时间为120分钟

说明:

I. 本试卷11页,共五道大题,考生用钢笔或圆珠笔答卷。

II. 备有通用答卷纸,各题答案按问题序号写在答卷纸相应位置上。 III. 答题前请把答卷纸密封线内准考证编号及姓名填写清楚。 IV. 遇有格式输出时,用“ ”符号表示空格。

一、基础部分:

(本部分25个小题,每小题1分,共25分,从可供选择的A、B、C、D四种答案中,选出一种正确的答案。所有答案均写在答卷纸相应位置上。) 1. 计算机串行口旁边一般标有(1)。

A.LPT1或LPT2 B. CON1或CON2 C.Serial1或Serial2 D.COM1或COM2 2. 文件传输服务主要应用于因特网的(2)。

A.终端与终端之间 B.主机与主机之间 C.B、D都对 D.主机与终端之间 3. (3)服务不是因特网实时的联机服务。

A.网上聊天 B.FTP C.BBS D.电子邮件

4. 一般情况下,断电之后外存储器中存储的信息(4)。

A.部分丢失 B.全部丢失 C.不会丢失 D.大部分丢失 5. 微机中1GB表示的二进制位数是(5)。

A.1000k B.8×1024M C.1024k D.8×1000M

6. 在windows的各种对话框中,有些项目在文字说明的左边标有一个小方框,当小

框里有“∨”符号时,表明(6)。

38

A.这是一个单选框,且已被选中 B.这是一个多选框,且未被选中 C.这是一个多选框,且已被选中 D.这是一个单选框,且未被选中 7. windows98中,利用回收站(7)。

A.只能在一定时间范围内恢复硬盘上被删除的文件、文件夹 B.只能恢复刚刚被删除的各种存储器上的文件、文件夹 C.可以在任何时候恢复硬盘上被删除的文件、文件夹

D.可以在任何时候恢复各种存储器上被删除的文件、文件夹 8.Window98中的注销命令是指(8)。

A.重新启动计算机 B.关闭当前用户程序并以其他用户身份登录

C.以上答案都不正确 D.关闭计算机 9.系统参数设置作用是(9)。

A.修改机器配置 B.清除病毒

C.改变操作系统 D.增加外部设备 10.在windows98下对任务栏的错误描述是(10)。

A.任务栏始终隐藏不了

B.任务栏的位置大小均可改变

C.任务栏内显示的是已打开文档或已运行程序的标题 D.任务栏上可添加图标和快捷方式

11.微型计算机中的外存储器,现在普遍采用(11)。 A.电子管存储器 B.半导体存储器

C.磁表面存储器 D.磁芯存储器 12.下列各进制数中数值最小的数是(12)。

A.110100(B) B.36(H) C.65(O) D.55(D) 13.FPT是(13)服务的简称。

A.文件处理 B.文件转换 C.文件传输 D.文件下载 14.UNIX是一种(14)。

A.鼠标器驱动程序 B.操作系统

C.字处理系统 D.数据库管理系统

15.在资源管理器中,如果发生误操作将某文件删除,可以(15)。

A. 在资源管理器中执行“撤消“命令 B. 从回收站中将此文件拖回原位置

C.在回收站中对此文件执行“还原“命令 D.选用A、B、C的任一个

16.在计算机领域中通常用MIPS来描述(16)。

A.计算机的存储容量 B.计算机的可靠性 C.计算机的可运行性 D.计算机的运算速度 17.人们使用高级语言编写的程序,一般先应当翻译成(17)。

39

A.编译程序 B.目标程序 C.执行程序 D.解释程序

18.在内存中,每个基本单位都被赋予一个唯一的序号,这个序号称为(18)。

A.字节 B.地址 C.编号 D.容量 19.下列术语中,属于显示器性能指标的是(19)。

A.速度 B.可靠性 C.分辨率 D.精度 20.扩展名为MP3的文件是一种(20)。

A.图象文件 B.声音文件 C.视频文件 D.动画文件

21.把计算机网络分为有线网和无线网的分类依据是(21)。

A.网络的地理位置 B.网络的成本价格 C.网络的拓扑结构 D.网络的传输介质 22.用于描述内存性能优劣的两个重要指标是(22)。 A.存储容量和平均无故障工作时间

B.存储容量和存取时间

C.平均无故障工作时间和内存的字长 D.存储容量和平均修复时间 23.计算机的I/O设备直接(23)。

A.与主机相连接 B.与CPU相连接 C.与I/O接口相连接 D.与主存储器相连接 24.一个文件路径名为D:\\2\\USE\\a.doc,其中USE是一个(24)。

A.文本文件 B.根目录 C.路径 D.文件夹

25.一张软盘上存储的有效信息在下列哪种情况下会丢失(25)。

A.放于零下10度的房间 B.放于抽屉中半年未用

C.放于强磁场附近 D.过海关时被X射线监视仪扫描

注:本试卷用到自由表Xsda.DBF:

说明:1、学号、姓名、性别字段为字符型;出生日期为日期型;考试成绩为数值型;

40

获奖学金为逻辑型。 2、表中共有7条记录。

3、任一题不受前面题对表的影响。

二、Visual Foxpro基础知识和基本操作(共25分,每题1分)

1. 表达式3*4%(2+1)**2的值是[(1)]。

A.0 B.1 C.3 D.12 2. 下列[(2)]常量在使用时不需要加定界符。

A.数值型 B.字符型 C.逻辑型 D.日期型 3. 在VFP6.0中,下列关于变量的说法错误的是[(3)]。

A. 变量可以存储任意数据类型 B. 使用变量时,不需要在变量名两侧加定界符 C. 字段变量随着表的打开而在内存中存储,随着表的关闭在内存中释放 D. 内存变量名与字段变量名同名时,内存变量被优先引用 4. 定义本地变量的命令是[(4)]/

A.LOAD B.LOCATE C.LOCAL D.LOCK 5. 下列[(5)]函数的值是字符型。

A. ROUND() B.YEAR() C.TIME() D.FOUND() 6. 下列[(6)]函数可以不加参数直接使用。

A.STR() B.UPPER() C.DAY() D.DATE() 7. 在SET EXACT OFF情况下,下列[(7)]表达式的值是.T.。

A.”abc”>=”ab” B.”abc”>”ab” C.”abc”<”ab” D.”ab”=”abc”

8. 表达式NOT “ac”$”abc” AND MONTH({^2004/11/30}-30)=11 OR LEN(“ab “-“ab”)#4

的值是[(8)](其中 表示空格字符)。

A.TRUE B.FALSE C..T. D..F. 9. 用于修改表结构的命令是[(9)]。

A.MODIFY STRUCTURE B.LIST STRUCTURE C.DISPLAY STRUCTURE D.COPY STRUCTURE TO 10. 下列[(10)]符号是注释语句的标志符。

A.?? B.&& C.** D.= = 11. 下列程序语句结构错误的是[(11)]。

A.IF…ENDIF B.DO CASE…ENDDO C.SCAN…ENDSCAN D.FOR…ENDFOR 12. 下列[(12)]类型文件不能使用DO命令来运行。

A..CDX B..PRG C..MPR D..QPR 13. 下列[(13)]命令语句后面可以加条件表达式。

A.ELSE B.OTHERWISE C.STEP D.CASE 14. 在子程序中用于接收主程序传递过来的参数的语句是[(14)]。

A.WITH B.PARAMETERS C.RETURN D.PROCEDURE

41

15. 下列移动记录指针的命令用法正确的是[(15)]。

A.SKIP TOP B.GO –1 C.GOTO BOF D.SKIP –1 16. 下列命令格式正确的是[(16)]。

A. LIST FOR 性别=”女” 姓名,性别OFF B. DELETE REST 4 WHILE 性别=”女” C. REPLACE NEXT 性别 WITH 性别=”女”

D. RECALL ALL FOR 性别=”女” FIELDS 姓名,性别 17. 使用复合索引文件中索引号为1的索引,命令是[(17)]。

A.SET ORDER TO B.SET ORDER TO 1 C.SET INDEX TO D.SET INDEX TO 1 18. 下列[(18)]不能包含在数据库中。

A.表 B.表间关系 C.表单 D.视图 19. 当[(19)]时,会触发文本框(Text)控件的InterActiveChange事件。

A. 点击文本框,光标在文本框内闪烁 B. 双击文本框中的内容,使内容全部选中 C. 全部选中文本框中的内容,然后按下DEL键 D. 右键点击文本框

20. 下列[(20)]属性的数据类型不是数值型。

A.Increment B.Interval C.ButtonCount D.LineSlant 21. 组合框控件(Combo)不具有[(21)]属性。

A.Caption B.Rowsource C.ControlSource D.Style 22. 下列[(22)]控件不具有Visible属性。

A.表单(Form) B.命令按钮(CommandButton) C.计时器(Timer) D.表格(Grid) 23. 下列关于控件的说法错误的是[(23)]。

A. 文本框(Text)不能接收多行字符 B. 微调框(Spinner)只能接收数值型的数据 C. 选项按钮组(OptionGroup)的Value属性既可以是数值型也可以是逻辑型 D. 复选框(Check)既有Caption属性又有Value属性 24. 下列[(24)]不属于表单控件默认的方法事件。

A.Show B.Hide C.Release D.Close 25. 运行报表文件R1.FRE,命令格式正确的是[(25)]。

A.DO FORM R1 B.REPORT FORM R1 C.DO R1.FRX D.REPORT R1

42

三、阅读下列程序,写出运行结果(18分,每题3分)

1. *MAIN.PRG

A=1 B=”A” C=3 DO SUB ?A,&B *SUB.PRG PRIVATE A,C A=2 B=”C” C=4 ? A,&B 2. S=0

FOR N=1 TO 10 STEP 2 N=N+1 IF N<6 S=S+N ELSE EXIT ENDIF

ENDFOR ?S,N

3. USE XSDA

INDEX ON 性别+STR(考试成绩,3) TAG SY1 COUNT TO N FOR 性别=”男” GO TOP

CJ1=考试成绩 SKIP N

CJ2=考试成绩 USE

?CJ1,CJ2

4. STORE 0 TO A,B,C

43

USE XSDA A=RECNO( ) GO BOTTOM IF EOF( )

B=RECNO( )

ENDIF GO TOP IF BOF( ) C=RECNO( )

ENDIF USE ?A,B,C

5. 如图一所示,字符“cmue”所在文本框为TEXT1,字符“rtpo”所在文本框为

TEXT2,右侧文本框为TEXT3,按钮“=>”的Click事件中代码如下: A=TRIM(THISFORM.TEXT1.VALUE) B=TRIM(THISFORM.TEXT2.VALUE) C=” ”

FOR N=1 TO LEN(A) C=C+SUBS(A,N,1) C=C+SUBS(B,LEN(B)-N+1,1)

ENDFOR

THISFORM.TEXT3.VALUE=C 图一

保持表单中各控件内容不变,写出点击“=>”按钮后,文本框TEXT3中显示的内容。

6. 如图二所示,数字5所在文本框为TEXT1,数字-2所在文本框为TEXT2,数

字0所在文本框为TEXT3,命令按钮“=>”的Click事件中的代码如下: IF THISFORM.TEXT3.VALUE=0

THISFORM.TEXT3.VALUE=THISFORM.TEXT2.VALUE*;

THISFORM.TEXT1.VALUE

ELSE

THISFORM.TEXT3.VALUE=ABS(THISFORM.TEXT3.VALUE)-; THISFORM.TEXT2.VALUE-THISFORM.TEXT1.VALUE

ENDIF

44

图二

保持各控件中数值不变,分别写出第1次和第4次点击“=>”按钮后,文本框TEXT3中显示的内容。

四、代码、程序填空,使程序完整、正确(共24分,每空2分)

1. 计算XSDA表中“考试成绩”的平均分,将“考试成绩”在60分以下并且大

于等于平均分-20的同学的“考试成绩”改为60,同时让“考试成绩”大于等于平均分+5的同学获得奖学金(获奖学金=.T.)。 USE XSDA AVER[(1)] SCAN IF 考试成绩<60 AND 考试成绩>=PJF-20 [(2)] HJXJ=.F. ELSE KSCJ=考试成绩 IF [(3)] HJXJ=.T. ELSE HJXJ=.F. ENDIF ENDIF REPL 考试成绩 WITH KSCJ,获奖学金 WITH HJXJ ENDSCAN USE

2. 通过循环程序计算1!+23+4!+56+7!+89

S=0 T=1

FOR N=1 TO 9 T=[(4)] IF N%3=[(5)] S=S+T ELSE IF N%3=[(6)] S=S+N**(N+1) ENDIF ENDIF ENDFOR ?S

3. 如图三所示,根据选项按钮组(OPTIONGGROUP1)的选项来查询XSDA表

45

中的学号或姓名,如果找到符合条件的记录则右侧文本框(TEXT1)中显示该同学是否获得奖学金;如果没有找到则显示“没有找到”。(表单中的2个组合框由上至下分别是COMBO1和COMBO2,在数据环境中已添加表XSDA.DBF)

图三 图三

主要属性设置如下:

THISFORM.COMBO1.ROWSOURCE=”XSDA .学号” THISFORM.COMBO1.ROWSOURCETYPE=6

THISFORM.COMBO2.ROWSOURCE=”XSDA .姓名” THISFORM.COMBO2.ROWSOURCETYPE=6 THISFORM.OPTIONGROUP1.VALUE=1

“查询”按钮的Click事件代码如下: IF[(7)] LOCATE FOR 学号=THISFORM.COMBO1.VALUE ELSE LOCATE FOR 姓名=THISFORM.COMBO2.VALUE ENDIF IF[(8)] THISFORM.TEXT1.VALUE=”没有找到” ELSE IF[(9)] THISFORM.TEXT1.VALUE=”该同学获得奖学金” ELSE

THISFORM.TEXT1.VALUE=”该同学没有获得奖学金” ENDIF ENDIF

4. 如图四所示,利用计时器控件TIMER1将表单中的矩形(SHAPE1)逐渐变为

46

圆形(每隔1秒钟变化1次),同时在文本框(TEXT1)中显示当前已经计时的秒数,如果秒数大于等于99则停止计时。

主要属性设置如下:

THISFORM.SHAPE1.CURVATURE=0

THISFORM.TIMER1.INTERVAL=[(10)] THISFORM.TIMER1.ENABLED=.T. 计时器控件的TIMER事件代码如下: IF THISFORM.TEXT1.VALUE>=99 [(11)]

ELSE

图四

THISFORM.SHAPE1.CURVATURE=THISFORM.SHAPE1.CURVATURE+1 [(12)] ENDIF

五、代码、程序改错(8分,每错2分)

1. 求1~200之间个位数字是4或7的整数之和。

S=0

FOR N=1 TO 200 A=LTRIM(STR(N)) A=SUBS(A,1,LEN(A)) B=VAL(A) IF B=4 OR B=7 S=S+B ENDIF ENDFOR ?S

此题有两处错误,请找出并改正。

2. 如图五列表框(LIST1)中有2个选项,当点击“复制”按钮时,将XSDA表

的表结构或表记录复制到由文本框(TEXT1)提供的文件中

主要属性设置如下:

THISFORM . LIST1.ROWSOURCETYPE=6

THISFORM . LIST1.ROWSOURCE=”1.复制表结构,2.复制表记录”

“复制“按钮的Click事件代码如下: USE XSDA

47

IF SUBS(THISFORM.LIST1.VALUE,1,1)=”1” COPY STRU TO TRIM(THISFORM.TEXT1.VALUE) ELSE COPY FILE TO TRIM(THISFORM.TEXT1.VALUE) ENDIF USE

图五 此题有两处错误,请找出并改正。

48

2004年11月的VFP试题答案:

一、

1.B 2.C 3.D 4.C 5.C 6.A 7.A 8.B 9.A 10.A 11.C 12.A 13.C 14.B 15.D 16.D 17.B 18.B 19.C 20.B 21.D 22.B 23.C 24.D 25.C 二、

1.C 2.A 3.D 4.C 5.C 6.D 7.A 8.C 9.A 10.B 11.B 12.A 13.D 14.B 15.D 16.D 17.D 18.C 19.C 20.D 21.A 22.C 23.B 24.D 25.B 三、

1.2 4

1 3 2.7 8 3.59 53 4.1 0 0 5.computer

6.第一次:-10 第二次:1 四、 1.(1)考试成绩 TO PJF (2)KSCJ=60

(3)KSCJ>=PJF+5 2.(4)T*N (5)1 (6)2 3.(7)THISFORM.COMBO2.LISTINDEX = 0 (8)NOT FOUND() (9)获奖学金=.T. 4.(10)1000

(11)THISFORM.TIMER1.ENABLED=.F. (12)THISFORM.REFRESH 五、

1. 第4行改为A=RIGHT(A,1)

第7行改为S=S+N

49