江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2011秋二级Visual FoxPro上机试卷第1套

2011秋二级Visual FoxPro上机试卷

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

  考试说明:

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

    SET DEFA TO T:

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

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

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

    1.jxsj数据库中按如下表格中所示的结构创建ab.dbf,并按表格中的要求设置相关属性。

 

  字段名

数据类型

    宽度

  字段标题

    cg

 

 

    C

 

         20

    场馆

 

    wz

    C

       1

    位置

sjzt

    M

 

  设计主题

  zdmj

    N

    10(小数2)

  占地面积

 

(1)设置表的注释:世博会场馆简介一览表。

(2)设置cg字段的有效性规则:不能为空字符串。

(3)设置zdmj字段的输入掩码:整数部分从右至左每3位用","字符隔开。

(4)设置WZ字段的有效性规则:只能是"A,B,C,D,E"片区中的一个。

(5)创建索引名为abcd的普通索引,要求按位置排序,位置相同时按占地面积排序。

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

 

    cg

 

    WZ

   

   sjzt

 

    zdmj

澳大利亚馆

    B

  畅想之洲

    4800

 3.为项目设置项目信息:项目的图标为pc.ico文件。

 4.kc表与cj表具有相同的字段kcdm,kc表为主表,cj表为子表,根据kcdm建立永久关系,并设置两表之间的参照完整性:删除级联、插入限制。

二、设计查询(8)

  已知课程表(kc.dbf)存储了课程基本信息,其中含课程代码(kcdm,C)、课程名称(kcmc,C)等字段;成绩表(cj.dbf)存储了每个学生各门课程的成绩信息,其中含课程代码(kcdm,C)、成绩(cj,N)等字段。按如下要求修改jxgl项目中的查询chaxun:

    基于kc表和cj,查询每门课程参加考试的人数、平均成绩和不及格人数(成绩小于60者不及格)。要求:输出字段依次为kcdmkcmc、人数、平均成绩、不及格人数,查询结果按平均成绩降序排序,查询去向为表(表的文件名为abc)

  三、设计菜单(5)

  jxgl项目中已存在菜单menu,其中已定义"文件"菜单栏及其中的"退出菜单"项。按如下要求设计菜单,完成

后的运行效果如图1所示。

  1.创建"人员管理"菜单栏,并创建其子菜单"录入""修改""浏览"

  2.在菜单项"录入""修改""修改""浏览"之间插入分组线。

  3."浏览"菜单项设置访问键"B"

  4."浏览"菜单项设置快捷键"CTRL+B"

  5."浏览"菜单项设置命令:SELECT * FROM js

 

  四、设计表单(10)

  表单FRM11A用于学生选课等操作。按下列要求修改表单,修改后表单运行时如图2所示。

1.修改表单的有关属性,使表单的标题为"选课表单"  

2.在表单右侧添加一个列表框(List2),用于显示学号和被选课程代码。

3.修改"确定"命令按钮的Click事件代码:在最后添加一条语句,其功能是将表达式Mxh+THISFORM.List1.Value的值添加到List2中。

4.添加一个命令按钮,如图2所示,为命令按钮设置有关属性,并编写Click事件代码,功能是释放表单。

  五、程序改错(5)

  假定按如下规则定义一种32进制数:"0,1,2,...,9,A,B,C,...,U,V"32个符号表示从03132个十进制数。例如,32进制数"A8T"对应的十进制数的计算过程如下:

    (A8T) =A×32 +8×32 +T×32 =10×1024+8×32+29×1=(10525)

 

    下面程序的功能是将一个32进制数字字符串转换为十进制数形式。要求:①项目中有一个程序文件Pcode,T盘中vfp01.txt中的程序代码复制到其中并进行修改;②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

1    Num32='A8T'

2    Num10=0

3    FOR i=LEN(Num32)-1 TO 0

4      c=SUBSTR(Num32,LEN(Num32)-i,1)

5      IF ISDIGIT(C)

6         d=VAL(C)

7      ELSE

8        IF BETWEEN(UPPER(c),'A','V')

9            d=ASC(UPPER(c))-55

10       ELSE

11           MESSAGEBOX("非法的32进制数!",16)

12           EXIT

13       ENDIF

14     ENDIF

15     Num10=Num10+d*32^i

16    ENDFOR

17    MESSAGEBOX('32进制数:'+Num32+'的十进制形式是:'+STR(Num10),64)

    参考答案

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

  cg字段的有效性规则:!EMPTY(cg)

  zdmj字段的输入掩码:9,999,999.99

  WZ字段的有效性规则:WZ='A' OR WZ='B' OR wz='C' OR WZ='D' OR wz='E'

                      INLIST(WZ,'A','B','C','D','E')

  索引表达式:WZ+STR(zdmj,10,2)

  二、设计查询

    SELECT kc.kcdm,kc.kcmc,COUNT(*)  As 人数,AVG(cj)  AS 平均成绩,;

      SUM(IIF(cj<60,1,0)) AS 不及格人数;

    FROM jxsj!kc INNER JOIN jxsj!cj;

      ON kc.kcdm=cj.kcdm;

    GROUP BY kc.kcdm;

    ORDER BY 4 DESC;

    INTO TABLE abc.dbf

  三、设计菜单

  SELECT * FROM js

四、设计表单

题号

  对象名

  属性/事件/方法

    属性值/代码

  1

 Form1

 Caption

选课表单

  2

 List2

(添加对象)

  3

 C1

 ClickEvent

 THISFORM.List2.AddItem(Mxh+THISFORM.List1.Value)

  4

 Command1

 ClickEvent

 THISFORM.Release

 

 

五、程序改错

3  FOR i=LEN(Num32)-1 To 0   改为TO 0 STEP -1

12 EXIT                      改为RETURN