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

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

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

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

一、 项目、数据库和表操作(12分)
   
   打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。
   1.按如下要求修改SJK中学生(XS)表的结构:
    (1) 将学号(xh)字段宽度设置为10。
    (2) 设置xh字段的有效性规则:学号的有效宽度只能是6位、8位或10位;
    (3) 设置xh字段的字段注释:字段是学生表的主关键字,不允许重复。
    (4) 创建一个候选索引 bhxh,要求先按班级编号(bjbh)字段升序排序,班级编号相同的再按xh字段升序排序。
    (5) 为jg字段设置默认值:“江苏”。
   2. 把TEST项目中的图片文件015.jpg的包含状态设置为“排除”。
   3. 修改XS表中所有记录的xh字段值,用班级编号(bjbh)中的第3至4位插入到学号中的第2与第3位之间。例如:学号为“990501”,班级编号为“990404051”,则替换后的学号就是“9904051”。
   4. 为xs表设置删除触发器:只有学号开头两位是“95”至“99”的记录允许删除,否则不允许删除。
   5. SJK中XS表已存在主索引xsxh,索引表达式为xh,学生成绩(CJ)表已存在普通索引chxh,索引表达式为xh。以XS表为主表,CJ表为子表按xh建立永久关系,并设置XS表和CJ表之间的参照完整性:删除限制。

二、 设计查询(8分)

   已知学生(XS)表中含有字符型字段班级编号(bjbh)和日期型字段出生日期(csrq)。在TEST项目中已存在查询CHAXUN,按如下要求修改该查询:
  基于学生(XS)表统计各班级各年份出生的人数,要求输出字段为:bjbh、出生年份、人数,查询结果首先按班级编号升序排序,同一班级中再按人数多少降序排序,查询结果输出到临时表XSNFRS。

三、 设计菜单(5分)

   项目TEST中已存在菜单MENUA,其中已定义了“文件”菜单栏及其中的“恢复系统菜单”项,按如下要求修改菜单,完成后的运行效果如图1所示。
  1. 创建“学生档案管理”菜单栏,并为其设置访问键“ALT+S”。
  2. 为“学生档案管理” 创建子菜单“学生档案录入”和“学生档案查询”,并用分隔线隔开。
  3. 为“学生档案录入”菜单项设置命令,该命令用来运行当前目录下的表单文件FORMC。SCX。
  4. 为“学生档案查询”菜单项设置过程,过程代码为:

      IF ! USED(“XS”)
        USE XS
     ELSE
        SELECT XS
     ENDIF
     BROWSE
  

   5. 在“文件”菜单栏下插入系统菜单项“打印预览”。

四.设计表单(10分)

   TEST 项目中已经存在菜单FORMA,该表单可以完成类似与Windows中的记事本功能。其实现的基本思想为:打开一个文本文件时将该文件的内容放入临时表中,保存时将临时表中的内容写入文本文件中。已知在表单的LOAD事件中已经定义了一个临时表textfile.根据下列要求对表单进行修改,完成以后运行菜单,效果如图2所示。


  1. 设置表单的ControlBox属性,使表单运行时左上角的窗口菜单图标不显示。如图2所示。
  2. 设置表单的有关属性,使表单运行时边框样式为“固定对话框”。
  3. 为“打开”按钮设置访问键“ALT+o”.
  4. 设置表单的标题为“记事本”。
  5. 完善“新建”按钮的Click事件代码,当运行表单并点击该按钮时编辑框清空且得到焦点。
  6. 完善“打开”按钮的Click事件代码,当运行表单击该按钮时将选定的文本文件的内容放入临时表中。
    

    完成修改以后,运行表单,画面显示如图2所示。此时点击“打开”按钮,会弹
出“打开”对话框,选择一个已存在的文本文件(如当前目录上没有,也可以到其他目录下选择),单击“确定”按钮以后被选择的文本文件就会显示在编辑框中,此时可对该文本文件进行编辑,编辑以后可以按“保存”,也可以按“另存为”按钮。如果要新建一个文本文件,可单击“新建”按钮。

五.程序改错(5分)

  下列程序的功能是:实现二进制字符窜数据压缩。压缩算法是:
  字符窜首字符+该字符个数+分隔符+另一个字符个数+分隔符+……
  例如,二进制字符窜为“11110000111111111000111110000”压缩后显示为“14*5*9*3*5*4”(字符窜首字符为“1”、4个“1”、5个“0”、9个“1”……,分隔符为“*”)。要求:
  1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。
  2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
    cString=‘111100000111111111000111110000’
    cResult=LEFT(cSring,1)
    nCount=1
    FOR n=2 TO cString
      IF SUBSTR(cString,n,1)=SUBSTR(cString,n-1,1)
        nCount=nCount+1
      ELSE
        cResult=cResult+ALLT(STR(nCount))+’*’
        nCount=nCount+1
      ENDIF
    ENDFOR
      cResult=cResult+ALLT(STR(nCount))
    WAIT WINDOWS’压缩后为’+cResult