江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2002年(秋)Visual FoxPro二级考试上机试卷 (VFP07)

2002年(秋)Visual FoxPro二级考试上机试卷 (VFP07)

(本试卷上机考试时间为70分钟)

说明:1.考试语言环境为Visual FoxPro 5.0/6.0
2. 运行考试软盘A中的“上机考试”应用程序文件以输入考生的准考证号、姓名、试卷代号。
3. 启动VFP系统后,首先在命令窗口中执行命令:
set default to A:
以设置默认的工作目录,然后再开始作题。

一、 项目、数据库和表操作(12分)
打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。
1. 按如下要求修改SJK中任课(RK)表的结构:
(1) 为RK表增加一个备注型字段,其字段名为bz;
(2) 为专业代号(zydh)字段设置标题:专业代号;
(3) 为工号(gh)字段设置输入掩码:接受5个字节的字符,且第一个字符必须为字母,后4个字符只接受数字;
(4) 在RK表中增加一条记录,记录内容为:

     zydh       kcdh        gh        bz
    102002        02       A0001     暂时代课

(5) 创建一个普通索引ghkcdh,要求先按gh字段排序,gh相同的再按课程代号(kcdh)字段排序。
2. 为RK表添加编辑说明为“教师任课情况表”。
3. 把软盘根目录中的表文件GZB.DBF添加为TEST项目中的自由表。
4. 调整GZB表中所有讲师的综合津贴(zhjt),规定1994年(含1994年)以前参加工作(GZRQ)的讲师每人加100元,其余的加60元。
5. 为RK表设置插入触发器:工号为A0001的记录允许插入,否则不允许插入。
6. SJK中JS表已存在主索引jsgh,索引表达式为gh,RK表已存在普通索引rkgh,索引表达式为gh。以JS表为主表,RK表为子表按gh建立永久关系,并设置JS表和RK表之间的参照完整性:删除级联。

二、 设计查询(8分)
在TEST项目中已存在查询chaxun,且在SJK中包含一个名为JSVIEW的视图,该视图中包含教师的各种基本信息,其中有教师的职称代号(zcdh)、职称(zc)、教师所在系的代号(xdh)、系名称(ximing),另外在SJK的工资(GZ)表中含有教师的岗位津贴(gwjt)字段。按如下要求修改查询:
基于JSVIEW视图和GZ表查询每个系各种职称的岗位津贴最大值、最小值、平均值。要求输出字段为:xdh、ximing、zc、岗位津贴最大值、岗位津贴最小值、岗位津贴平均值,查询结果按xdh的升序排序。

三、 设计菜单(5分)
TEST项目中已存在菜单menu,其中已定义了“文件”菜单栏及其中的“恢复系统菜单”项。按如下要求设计菜单,完成后的运行效果如图1所示。


1. 创建“数据处理”菜单栏,为“数据处理”菜单设置热键“ALT+P”;
2. 创建“数据处理”菜单中的菜单栏:“查询”和“统计”;
3. 为“统计”菜单设置命令:DO FORM FORMG;
4. 创建“查询”菜单的子菜单,其中包括“成绩”和“教师工资”菜单项;
5. 在“成绩”和“教师工资”菜单项之间插入分组线。

四、 设计表单(10分)
TEST项目中已存在表单formG,它是一个0至100内的猜数游戏。按如下要求修改表单,完成后表单的运行界面如图2所示。
1. 将文本框Text2的初始值设置为0;
2. 将“OK”命令按钮(cmdOK)设置为默认控件(指按下回车键时,该命令按钮响应);
3. 将标签Label3的背景色设置为白色,且居中对齐;
4. 在表单中添加一个名为cmdShow、标题为“看看到底是多少”的命令按钮;
5. Text1文本框的PasswordChar属性值为一个半角的问号“?”,使得文本框内的每位数字都显示为“?”。编写cmdShow的单击事件代码,以使Text1文本框恢复显示真实内容;
6. 修改“重新开始”按钮cmdReStart的Click事件代码,在With…EndWith结构中增加两行,实现如下两个功能:(1)在Text1文本框中重新生成一个0至100之间的整数(提示:利用RAND()函数生成0~1之间的随机数);(2)将标签Label3的文本设置为空字符串。

五、 程序改错(5分)
下面的程序是用于将十进制转换成二进制数表示。要求:
(1) 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
(2) 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

nNumber=37 &&赋初值(十进制数)
cResult=SPACE(0)
IF nNumber=0
  DO WHILE nNumber>0
    n=MOD(nNumber,2) &&余数
    nNumber=INT(nNumber/2)
    cResult=STR(n,1)+cResult
  ENDDO
ELSE
cResult=’0’
ENDIF
WAIT WINDOWS’二进制数表示为’+STR(cResult)