江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2010春江苏VFP上机考试试题

    2010春二级Visual FoxPro上机试卷

    (本试卷完成时间为70分钟)

  考试说明:

  1.首先登录考生信息,然后启动VFP并在命令窗口中执行下列命令,以设置默认的工作目录:SET DEFA TO T:

  2.除非题目要求,否则不要对T盘上的文件进行重命名、复制和删除操作。

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

  打开T盘根目录中的项目文件JXGL,在该项目中已有一数据库JXSJ

  1.JXSJ数据库中按如下表格中所示的结构创建AB.DBF,并按表格中的要求设置相关属件。

   

    字段名

    数据类型

     

    字段标题

    BMBH

    C

    6

    部门编号

    ZZXM

    C

    8

    作者姓名

    LWM

    C

    30

    论文名

LX

L

 

类型

    KWMC

    C

    20

    刊物名称

 

(1)设置AB表的长表名为:发表论文登记表;

(2)设置BMBH字段的格式:删除输入的前导空格;

(3)创建唯一索引,索引名为abcd,要求按作者姓名排序,姓名相同时再按论文名排序;

(4)设置LX字段的显示类为复选框控件类。

2.AB表中输入如下记录:

    BMBH            ZZXM            LWM              LX          KWMC

    BO0002          李峰          电脑病毒预防            .T.          计算机世界

  3.KC表设置删除触发器:LX字段值为"专业核心课程"的记录不允许删除。

  4.JS表已存在主索引GH,索引表达式为GH,KCAP表已存在普通索引GH,索引表达式

GH,JS表为主表、KCAP表为子表按GH建立永久关系,并设置两表之间的参照完整性:

更新级联。

  二、设计查询(8)

  课程表(KC)中含有课程代码(kcdm,C)、课程名称(kcmc,c)和学分(xf,N)等字段,在成

绩表(CJ)中含有学生学号(xh,c)、成绩(cj,N)、课程代码(kcdm,c)等字段。按如下要求修

JXGL项目中的查询CHAXUN:

    若成绩不低于60分学生可以取得对应课程的学分,总学分大于或等于20的学生可以毕

,则基于Kc表和cJ表查询所有不能毕业的学生列表。要求查询输出字段为:学号、总学

,查询结果按总学分降序排序。

  三、设计菜单(5)

 

  JXGL项目中已存在菜单MENU,其中已定义了"文件"菜单栏及其中的"退出菜单"项。按如下要求设计菜单,完成后的运行效果如图1所示。

  1."文件"菜单栏右侧创建"教学管理"菜单栏;

  2."教学管理"菜单栏下创建子菜单"学生""课程"

  3."学生"菜单项设置跳过条件:xs表打开时才可操作;

  4.在菜单项"学生""课程"之间插入分组线;

  5.设置整个菜单的清理代码:CLOSE TABLES ALL

四、设计表单(10)

 

    JXGL项目中已经存在表单Formj,该表单用来设置表单中表格控件Grd1的相关属性,如图2所示。按下列要求修改表单:

    1.设置表单的标题为"表格属性设置"

    2.设置表格Grd1中的数据为只读,但能获得焦点,表格的RecordSourceType属性值为"0一表"

    3."数据源"标签控件右侧添加一个组合框控件,并设置其Name属性为"Cbo2"RowSourceType属性为"7一文件"RowSource属性为当前目录下的所有.DBF文件;

    4.设置复选框控件Checkl的初始状态为选中:

    5.为组合框控件Cbo1编写Init事件代码,使它的初值等于"3(缺省值)水平滚动条和垂直滚动条"(即初始选中下拉列表中的第4条列表项)

    6.为组合框控件Cbo2编写InterActiveChange‘事件代码,使表单中Grd1控件的RecordSource属性与Cbo2中选定的值一致。   

五、程序改错(5)  

  下列程序的功能是:输入一个由ASCII码字符和GB2312字符集中汉字字符组成的字符串后,统计并显示出现次数最多的10个字符及其出现次数。要求:

    1.将下列程序输入到项目中的程序文件PCODE,并对其中的2条错误语句进行修改;

    2.在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

    CLEAR

    ACCEPT '请输入:' TO cccc    &&该语句功能是交互式地输入数据(字符串)

    n=LEN(cccc)

    IF n=0

      RETURN

    ENDIF      

    CREATE CURSOR TEMP (cc c(2),nn i)  &&创建临时表存储字符及出现的次数

    FOR i=1 TO n

      c=SUBS(CCCC,i,1)

      IF ASC(c)>127    &&汉字字符

         c=SUBS(cccc,i,2)

         i=2

      ENDIF

      LOCATE FOR cc=c

      IF EOF()

        INSERT INTO TEMP(cc,nn) VALUE(c,1)

      Other

        REPLACE nn WITH nn+1

      ENDIF

    ENDFOR

    SELECT TOP 10 cc,nn FROM temp ORDER BY 2 DESC

    参考答案

一、项目、数据库和表操作

ABBMBH字段格式:T

AB表索引表达式;zzxm+lwm  

KC表删除触发器:lx#"专业核心课程" !lx="专业核心课程"

二、设计查询

   SELECT cj.xh,SUM(IIF(CJ>=60,XF,O)) AS 总学分;

    FROM jxsj!kc INNER JOIN jxsj!cj;

    ON kc.kcdm=cj.kcdm;

    GROUP BY cj.xh;

    HAVING总学分<20;

    ORDER BY 2 DESC

三、设计菜单

跳过条件表达式:NOT USED("xs")

.设计表单

题号

对象名

属性/事件/方法名

属性值/代码

1

Form1

Caption

表格属性设置

2

 

Grid1

ReadOnly

.T.

 

RecordSourceType

0-

 

 

3.

 

 

Cbo2

Name

Cbo2

RowSourceType

7-文件

RowSource

*.dbf

InterActiveChange

Thisform.Grd1.RecordSource=This.

Value

4

Check1

Value

1

5

Cob1

Init

This.Value=This.List(4)

 

.程序改错

1.i=2     改为i=i+1

2.ohter  改为else