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

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

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

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

一、 项目、数据库和表操作(12分)
打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。
1. 按如下要求修改SJK中教师(JS)表的结构:
(1) 为JS表设置有效性(验证)规则:工作日期(gzrq)与出生日期(csrq)之间至少相差20年;
(2) 设置JS表的记录有效性(验证)信息:教师参加工作时至少为20岁。
(3) 将工作日期(gzrq)字段的标题设置为“工作日期”;
(4) 为性别(xb)字段设置默认值为:“男”;
(5) 创建一个普通索引zcgzrq,要求先按职称代码(zcdh)字段排序,职称相同的再按工作日期(gzrq)字段排序。
2. 为JS表添加编辑说明为“教师基本信息表”。
3. 把软盘根目录中的表文件GZB.DBF添加为TEST项目中的自由表。
4. 把GZB表中所有职称(zc)为助教的综合津贴(zhjt)增加100元。
5. 为JS表设置更新触发器:仅允许修改2001年(含2001年)以后参加工作的教师记录。
6. SJK中JS表已存在主索引jsgh,索引表达式为gh,GZ表已存在普通索引gzgh,索引表达式为gh。以JS表为主表,GZ表为子表按gh建立永久关系,并设置JS表和GZ表之间的饿参照完整性:删除限制。

二、 设计查询(8分)
在TEST项目中已存在查询chaxun,按如下要求修改该查询:
基于学生(XS)表和成绩(CJ)表查询99级学生成绩总分前3名。要求输出字段为:xh、xm、xb、总成绩,查询结果按总成绩降序排序。
说明:xh字段的前两位表示年级,99级学生即xh以“99”开头的学生

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


1. 创建“统计”菜单栏;
2. 为“统计”菜单设置热键“ALT+T”;
3. 创建“统计”菜单中的菜单项:“教师情况”、“学生情况”和“课程成绩”;
4. 创建“教师情况”的子菜单,其中包含“任课”和“工资情况”菜单项;
5. 在“学生情况”和“课程成绩”菜单项之间插入分组线。

四、 设计表单(10分)
TEST项目中已存在表单formD,用来实现学生用户的登录。数据来自学生表(XS),通过在下拉组合框中选择一个姓名,使表中记录指针定位到该学生,用学号作为验证密码,如果在密码文本框中输入的密码与当前学生记录的学号(xh)相同,则登录成功。按如下要求修改表单,完成后表单的运行界面如图2所示。
1. 将姓名下拉组合框cboXM改为下拉列表框;
2. 将密码文本框txtPwd的密码字符设为“*”号,设置txtPwd输入掩码,使其只能输入8位数字字符;
3. 为表单创建一个名为logSuccess的新属性;
4. 添加一个文本框控件txtXH的可见性设为隐藏,数据控制源设为Xs.Xh;
5. 完善登录按钮cmdLogin的Click事件代码,使之具有如下功能:
如果txtPwd文本框的值与txtXH文本框的值相等,则将logSuccess属性值设置为.T.,并关闭该表单窗口,否则将焦点设到txtPwd文本框上。

五、 程序改错(5分)
下列程序的功能是:将一个字符串中的各个单词的首字母组成其缩写形式(大写字母),其中,字符串由多个英文单词组成且各单词之间用一个空格分隔,例如,对于字符串“central processing unit”,生成其缩写形式“CPU”。其基本算法为:字符串左边加一个空格,然后依次检查字符串的每一个字符,如果该字符为字母且左边为空格,则该字母为首字母。要求:
(1)目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
(2)在修改程序时,不允许修改程序的总框架和算法,不允许增加或减少语句数目。
cString=’central processing unit’ &&赋初值
cString=SPACE(1)+UPPER(cString)
cResult=SPACE(0)
FOR n=2 TO cString
  c=SUBSTR(cString,n,1)
  IF BETWEEN(c,’A’,’Z’)AND SUBSTR(cString,n-1,1)=SPACE(1)
    cResult=cResult+n
  ENDIF
ENDFOR
WAIT WINDOWS’ 缩写形式为’+cResult