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

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

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

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

一. 项目、数据库和表操作(12分)

   打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。
   1. 按如下要求修改SJK中教师(JS)表的结构:
    (1) 设置zcdh字段的有关属性,使得JS表在浏览窗口中,zcdh列的列表头显示为:职称代号。
    (2) 设置工号(gh)字段的有关属性,使gh字段的首字母以大写形式显示。
    (3) 将性别(xb)字段的显示类设置为“A:\CLASSLIB。VCX”类库中的opt-xb类。
    (4) 设置简历(jl)字段,允许输入空值NULL。
    (5) 创建一个普通索引,索引名gh4,要求按gh字段的后4位数字升序排列。
   2. 把软盘根目录中的文件XS.TXT添加到TEST项目中的适当位置,并将文件设置为:“排除”状态。
   3. 向JS表中增加一条工号(gh)为“B0007”、出生日期(csrq)为“1978年2月1日”的记录。
   4. 在JS表中增加一整型字段series,并对每个记录填入该字段的值,字段值是由每个记录的记录号的平方与工号(gh)字段首字母的ASCII码的3次方的和计算得到的。
   5. 为JS表设置插入触发器:不允许插入工号首字母为P以及P以后的字母(即P~Z)。
   6. 已知JS表已存在主索引jsgh,索引表达式为gh,RK表已经存在普通索引rkgh,索引表达式gh。已JS表为主表、RK表为子表按gh建立永久关系,并设置JS表和RK表之间的参照完整性,更新限制。

二.设计查询(8分)

   在TEST项目中已存在查询CHAXUN,且在SJK中包含一个名为RKVIEW的视图,该视图中包含每个专业的开课情况,其中有所有课程的课程代号(kcdh),课程名称(kcm)以及上课教师的工号(gh),在SJK中存在另一个名为JSST的视图,其中有每一个教师的职称(zc)及参加工作的日期(gzrq)。
按如下要求修改查询:
  基于RKVIEW视图和JSST视图查询kcdh是“01”的任课教师的基本情况,要求输出字段为:kcdh、gh、xm、xb、zc、参加工作年份(根本工作日期计算),查询结果中无重复行且按gh的升序排序。

三.设计菜单(5分)
  
   项目TEST中已存在菜单MENUG,其中已定义了“数据录入”和“数据查询”、“数据清理”和“恢复系统菜单”
四个菜单栏,按如下要求修改菜单,完成后的运行效果如图所示。

  1. 为“数据录入”菜单栏设置访问键“ALT+L”。
  2. 为“数据录入”菜单栏下的“教师信息录入”编制子菜单,该子菜单包括两个菜单项“教师基本信息录入”和“教师任课信息录入”,并用分隔线隔开。
  3. 已经为“数据清理”菜单栏下的“学生表清理”设置子过程。完善该过程,使得当执行该菜单项时,彻底删除学生(XS)表中所有带删除标志的记录。
   

   4. 废止“数据查询”菜单栏下的“教师信息查询”菜单项。
   5. 运行该菜单后替换原来的系统菜单。

四.设计表单(10分)

   TEST项目中已经存在表单FORMG,该表单用来查询学生成绩。根据下列要求修改表单,完成以后运行表单,效果如图2所示。

  1. 设置表单有关属性,使表单在运行时自动居中。
  2. 设置表单中text2文本框的有关属性,使其能获得焦点,但不能修改其内容。
  3. 将lebel2标签的字体设为粗体。
  4. 为“退出”按钮加一个访问键“ALT+R”。
  5. 在表单的Load事件中已经包含了创建一个名为CJ-CUR临时表的代码,请完善该事件代码,要求按课程名(kcm)字段为临时表CJ-CUR创建一个结构复合索引ind-kcm。
  6. 点击“退出”按钮时,关闭临时表CJ-CUR,并释放表单,完成“退出”按钮的相应代码。
  

五.程序改错(5分)

   下列程序的功能是:从给定的字符串中找出所有的数(单个的数字或连续的数字都算一个数),并显示这些数的平均值(假定无小数)。例如:字符串“abc32skfkj262ksf8k99kfsk24kf“处理后显示平均值为85,要求:
  1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。
  2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

  cString=‘abc32skfkj262ksf8k99kfsk24kf’
  cTemp=SPACE(0)           &&该变量用于暂存字符串中取出的一个数字字符串
  STORE 0 TO nSum,nCount
  DO WHILE LEN(cString)>0
    c=LEFT(cString,1)
    IF BETWEEN(c,‘0’,‘9’)
      cTemp=c+cTemp
    ELSE
      IF LEN(cTemp)>0
        nSum=nSum+cTemp
        nCount=nCount+1
        cTemp=SPACE(0)
      ENDIF
    ENDIF
    cString=SUBSTR(cString,2)
  ENDDO
  nAverage=nSum/nCount
  WAIT WINDOW‘平均值为’+STR(nAverage)