江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
江苏二级VFP2011春上机试卷1

    2011春二级Visual FoxPro上机试卷1

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

  考试说明: 

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

目录:

    SET DEFA TO T:

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

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

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

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

属性。

 

  字段各

    RQ

数据类型

    D

    宽度

 

    字段标题

    日期

    PM

    C

    20

    品名

    DW

    C

    10

    单位

   

 

 

 

    DJ

    N

5(小数1)

    单价

 

(1)设置表的注释:蔬菜批发价格表;

(2)设置RQ字段的默认值:当前系统日期;

(3)设置单位字段的显示类:选项按钮组;

(4)设置表的更新触发器:日期字段的值等于当前系统日期时可以更新记录;

(5)创建普通索引,索引名为abcd,要求按日期排序,日期相同时按单价排序。

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

l    RQ

    PM

 

    DW

 

    DJ

 

2010-515

    青菜

    公片

    2.4

 

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

    4.Kc表已存在主索引KCDM,索引表达式为KCDM;CJ表已存在普通索引KCDM,索引

表达式为KCDM。以KC表为主表、CJ表为子表,根据KCDM建立永久关系,并设置两表之间

的参照完整性:删除级联、插入限制。

  二、设计查询(8)

  已知自由表图书表(TSB)含有分类号(flh,C)、册数(CS,N)、价格(jg,N)等字段。按如下要求修改JXGL项目中的查询CHAXUN:

  基于TSB表查询图书类别、藏书册数等信息。要求:查询输出字段为图书类别、藏书册书和平均单价;查询结果按藏书册数降序排序,相同时按平均单价升序排序:输出去向为文本文件TEMP

    :图书类别为flh"."前的内容(可用LEFT(..., AT(".",...))形式的表达式求得),藏书册数为同一图书类别册数之和。

  三、设计菜单(5)

  JXGL项目中已存在菜单MENU,其中已定义了"文件"菜单栏及其

中的"退出菜单,,项。按如下要求设计菜单,菜单运行后的效果如图1

所示。

    1."文件"菜单栏右侧创建"图书管理系统"菜单栏。

    2."图书管理系统"菜单栏创建子菜单"预约""借书""还书"

    3.在菜单项"预约""借书""还书"之间插入分组线。

    4."借书"菜单项设置命令代码:DO FORM js

    5."文件"菜单栏下插入系统菜单"全部关闭"

 四、设计表单(10)

表单F102F用来按小组查看世界杯球队信息。按下列要求修改表单,修改后表单运行如图2所示

 

   1.设计表格Grid1的数据只读,无滚动条,删除"组别"

   2."组别"标签下方添加一个列表框控件List1(用来选择组别),设置其数据源类型为"3-SQL语句",数据源为"SELECT DIST 组别 FROM fifa INTO CURSOR tmp"

   3.编写表单的Load事件代码,实现:定义一个全局变量sGroup,并赋初值为字符"A"

   4.世界杯球队信息存储在自由表fifa,表结构如下:

组别(C,1)、编号(C,1)、国旗(G)、国家(C,12)、简介(M),fifa表已添加在表单的数据环境中。编写List1InterActiveChange事件代码,实现:

    (1)List1中当前选定的值赋给变量sGroup,并对当前数据工作区中的fifa表设置筛选条件:sGroup变量中的值对"组别"字段进行记录筛选:

    (2)将记录指针指向首行记录,并刷新表单。

 五、程序改错题(5)

    回文数是指正读和反读都是一样的数,10011221等。下列程序的功能是:求出大于1000小于2000的所有回文数,并将它们打印出来(每行打印5个数,最后一行打印总要求:

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

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

    STORE 0 TO n,n1,n2

    s=ALLT(STR(i))

    nl=LEN(s)   

    n2=INT(n1/2)

    s1=''

    FOR j=1 TO n2

      s1=s1+RIGHT(s,1)

      s=LEFt(s,n1-1)

    ENDFOR

    IF LEFT(s,n1)=s1

      n=n+1

      ?? i

      IF INT(n/5)=n/5

        ?

      ENDIF

      ENDFOR

    ENDFOR

    ?'小于2000的回文数共'+STR(n)+''

    参考答案

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

字段默认值:DATE()

索引表达式:DTOC(rq,1)+STR(dj,5,1)

触发器:rq=DATE()

二、设计查询

    SELECT LEFT(flh,at('.',flh)-1) AS 图书类别,SUM(CS) AS 藏书册数,:

      AVG(jg) AS 平均单价;

    FROM tsb;

    GROUP BY 1;

    ORDER BY 2 DESC,3;

    TO FILE temp.txt

三、设计菜单

  命令/ 过程:DO FORM js

四、设计表单