江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2005年(秋)vfp上机(3)

江苏省高等学校非计算机专业学生
2005 ()计算机基础知识和应用能力等级考试上机试卷
二级Visual  FoxPro (试卷代号VFP03)

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

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

 

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

打开软盘根目录中的项目文件TEST,在该项目中已有一数据库SJK及若干表。

1. 按以下要求修改SJK数据库中TS表:

1) 为TS表设置编辑说明:教学图书表。

2) 修改价格(jg)字段的宽度,要求该字段最多能存储整数3位、小数1位。

3) 设置作者(zz)字段的标题属性,使该字段的字段名在浏览窗口中显示为“作者”。

4) 创建一个普通索引abcd,要求以入库日期(rkrq)字段进行排序,相同时以价格(jg)字段排序。

5) 设置价格(jg)字段的有效性规则,要求:其值不能小于1。

6) 将分类号(flh)以G字母开头的记录彻底删除。

2、 在项目中管理器删除XIM表。

3、 将图标文件NET.ICO添加到项目中的合适位置,并修改项目TEST的项目信息:附加图标NET.ICO。

4、 XS表和CJ表已存在以学号(xh)字段为索引表达式的主索引xsxh和普通索引cjxh。以XS表为主表,CJ表为子表按xh建立永久关系,并根据以下要求设置参照完整性规则:在XS表中删除记录时,若CJ表中有相对应的记录(xh字段的值),则同时删除CJ表相应记录。

二、 设计查询(8分)

   在TEST项目中已经存在查询chaxun,SJK数据库中的JSJY视图包括工号(gh)、借阅日期(jyrq)、还书日期(hsrq),SJK数据库中的教师(JS)表含有工号(gh)、姓名(xm)、系代号(xdh)。按如下要求修改查询:

   基于JS表和JSJY视图查询每个系每个教师借书本数、罚款金额。要求输出字段为:Js.xdh,Js.gh,Js.xm,借书本数、罚款金额。查询结果按xdh排序,xdh相同的,按Js.gh排序。

   注:每本书的借阅时限为60天,每超过一天罚款0.05元;同一本书借 阅两次时,以两本书计;要求小数点保留2位。

三、 设计菜单(5分)

   已知项目TEST中已存在菜单menu,利用菜单设计器,按如下要求修改菜单。

1、 按图1所示要求为“表操作”菜单栏下的“添加记录”菜单项增加一个子菜单(分组线);

2、 在“添加记录”菜单栏下的“课程”添加过程代码;                         图 1

当执行该菜单项时,选择课程表(KC)为当前使用表(若该表未打开,则首先打开之),并在课程表中添加一条空指令。

3、 为“文件”菜单栏下插入VFP系统菜单项“另存为”。

四、 设计表单(10分)

    项目管理器中已经存在表单FC。根据下列要求修改表单,设计时和运行时的效果分别如图2和图3所示。

    1、 将微调框控件spnWidth的Value属性值设置为300,最大和最小值分别设置为600和200。

    2、 创建表单集,并在表单集中填假第二个表单Form2;

    3、 为表单集添加新的方法程序:SetSize,并编写方法程序代码,要求能奖第二个表单Form2的宽度和高度设置为第一个表单Form1中微调框控件spnWidthspnHeight的值;

4、 编写spnWidth控件和spnHeigh控件的InterActiveChange事件代码,在代码中调用表单集的SetSize方法:

 图2 设计时                           

     图3 运行时

五、 程序改错题(5分)

   下列程序的功能是找出两个正正数的最大公约数。可以用辗转相除发来求最大公约数。例如27核,先用27除以6,余数为3,由于余数不为0,再奖6作为被除数,3作为除数,得到余数为0,则3就是27和6的最大公约数。要求:

1) 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;

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

     CLEAR

     m=27

     n=6

     IF m

       t=m

       m=n

       n=t

     ENDIF

     r=MOD(m,n)

     DO WHILE r=0

        m=n

        n=r

        r=MOD(m,n)

     ENDDO

     WAIT WINDOWS '最大公约数为'+STR(r)