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

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

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

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

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

   打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。
   1. 按如下要求修改SJK中工资(GZ)表的结构:
     (1) 为应发工资(yfgz)字段设置标题:应发工资。
     (2) 设置工号(gh)字段的输入掩码:工号以1个任意英文字母开头,后跟4位数字。
     (3) 增加一个逻辑型字段,其字段名为yhdf。
     (4) 创建一个普通索引jbgwzh,要求按基本工资(jbgz),岗位津贴(gwit)和综合津贴(zhjt)三个字段的和降序排列。
     (5) 为GZ表添加注释:职工工资表。
   2. 把A:\B0001.GIF文件添加到TEST项目中的适当位置,并将包含状态设置为“排除”。
   3. 计算GZ表中所有教师的应发工资(yfgz),应发工资是基本工资(jbgz)、岗位津贴(gwjt)和综合津贴(zhjt)三个字段值的和。
   4. 设置GZ表的记录有效性规则,应发工资(yfgz)字段的值必须不超过基本工资(jbgz)、岗位津贴(gwjt)和综合津贴(zhjt)三个字段值的和。
   5. 设GZ表的更新权限由一个全局的字符变量UserName(表示用户名)控制,只有当UserName的值为“Admin”时允许更新,根据此要求设置GZ表的更新触发器。
   6. SJK中教师(JS)表已存在主索引jsgh,索引表达式为gh。以JS表为主表,GZ表为子表按gh建立永久关系,并设置JS 表和GZ表之间的参照完整性:更新级联。

二.设计查询(5分)

   假设现有GZ表中的若干工资项将有所变动:基本工资(jbgz)每人增加120元;岗位津贴(gwjt)每人增加20%;男女职工的综合津贴(zhjt)分别为10元和50元。希望通过查询预览一下变动后的工资情况,按如下要求修改TEST项目中的查询CHAXUN:
   基于JS表和GZ表查询变动后的工资情况,输出字段:gh,xm,xb,jbgz,jbgz2,gwjt,gwjt2,zhjt,zhjt2,其中字段名末位是“2”的字段表示变动后的工资项,要求按gh升序排列,且仅显示排在前10%的记录,结果输出到VFP主窗口中。

三.设计菜单(5分)
  

   TEST项目中已存在菜单MUNUE,按如下要求修改菜单,完成后的运行效果如图所示。
   1. 为“文件”菜单栏下的“退出”菜单项设置快捷键“CTRL+R”。
   2. 在“文件”菜单栏的“退出”菜单项之间插入系统菜单“导出”。
   

   3. 为“数据维护”菜单栏下的“学生信息维护”菜单项编制子菜单,该子菜单包括两个菜单项“学生基本信息维护”和“学生成绩维护”,并用分隔线隔开。
   4. 设置“数据查询”菜单栏下的“教师信息查询”菜单项废止。
   5. 为“学生信息查询”菜单项下的“学生基本信息查询”设置SQL命令,要求当执行该菜单项时,在浏览窗口中显示学生(XS)表中所有女生的学号(xh),姓名(xm)和出生日期(csrq)。

四.设计菜单(10分)
  TEST项目中已经存在表单FORMF,该表单用来查询USER表中的人员信息,根据下列要求修改表单,完成以后运行表单,效果如图所示。

  1. 设置表格的有关属性,使表格能够获得焦点,但不能修改其内容。
  2. 设置表单标题为“人员信息查询”。
  3. 设置表格中“工号”列的标题居中。
  4. 设置表单中test1文本框的有关属性,使当光标移到文本框上时,鼠标指针的形状为“1”型。
  5. 在表单的Load事件代码中已经包含了创建名为USER-CUR临时表的命令。完善代码,要求以部门(department)和工号(no)两个字段为该临时表创建一个结构复合索引,索引名为int-bmgh,使得该临时表中的数据以部门排序,部门相同时,再按工号排序。
  6. 已知在A盘根目录下存在报表文件USER-REP。为“预览”按钮编制Click事件代码,当点击该按钮时,预览报表USER-REP。
  7. 已知表单的数据环境中已经添加了人员信息表(USER)。完善表单的Init事件代码,以完成将USER表中的所有记录添加到临时表USER-CUR中的功能。

五.程序改错(5分)

   下列程序的功能是:将一个用字符串表示的正整数序列重新排列为一个新的正整数序列字符串。新序列排列的规则是:序列左边为奇数、右边为偶数,且奇、偶数分别从序列的两端开始依次向序列中间排放。例如,若原序列为“31,58,71,5,82,45,54,41,2”,则新序列为“31,71,5,45,41,2,54,82,58”。注:“,”为英文逗号。要求:
  1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。
  2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句的数目。

  cString=‘31,58,71,5,82,45,54,41,2’
  STORE SPACE(0)TO cLeft,cRight
  n=1
  DO WHILE n#0
    n=AT(cString,“,”)
    IF n=0
      c=SUBSTR(cString,1,n-1)
      cString=SUBSTR(cString,n)
    ENDIF
    IF MOD(VAL(c),2)=0
      cRight=c+“,”+cRight
     ELSE
      cLeft=cLeft+“,”+c
    ENDIF
  ENDDO
  cResult=cLeft+“,”+cRight
  WAIT WINDOWS‘结果字符串为’+cResult