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

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

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

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

 

 

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

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

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

1) 设置表的触发器:当册数(cs)不为0时,禁止删除。

2) 添加一个字段,字段名为publisher,宽度以最多能存储“外语教学与研究出版社”字符串为准,并为其设置默认值“出版

3) 设置国际标准图书编号(isbn)字段的标题属性,使该字段的字段名在浏览窗口中显示为“国际标准图书编号”。

4) 创建一个普通索引abcd,要求册数(cs)字段进行排序,相同时以价格(jg)字段排序。

5) 设置rkrp字段的有效性规则,要求不超过当前系统日期。

2、 将GZ表中qt字段的值全部设置为0

3、 修改项目TEST的项目信息:附加图标NET.ICO。

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

 

二、 设计查询(8分)

    在TEST项目中已经存在查询chaxun,已知在SJK的课程(KC)表中含有课程代号(kcdh)、课程名(kcm)字段,成绩(CJ)表中含有学生学号(xh)、课程代号(kcdh)、成绩(cj)等字段。按如下要求修改查询:

    基于KC表和CJ表查询每门课程选课人数、成绩优秀人数和成绩不及格人数,输出字段包括:KC、kcdhKckcm、选课人数、优秀人数、不及格人数。输出结果按选课人数降序排序(注:成绩大于等于90为优秀,小于60为不及格)

三、 设计菜单(5分)

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

1、 按图1所示要求为“表操作”菜单栏前增加一个“编辑”菜单栏及其子菜单,并为“教师”菜单设置访问键:

2、 在“编辑”菜单栏下的“学生”菜单项添加过程代码;

当执行该菜单项时,选择学生表(XS)为当前使用表(若该表未打开,则首先打开之),并逻辑删除学生表中xh前二位为“00”的记录。

                                                                                  

                                                                                             图 1

四、 设计表单(10分)

    项目管理器中已经存在表单FD(如图2所示)。该表单用来预览DBF表记录,根据下列要求修改表单,完成以后运行表单,效果如图3所示。

    1、 设置表单可调整到的最小高度和最小宽度分别为200和250。

    2、 设置Grid1表格的有关属性,使表格不显示删除标记列,并且使显示的数据只读但可获得焦点。

    3、 在命令按钮组控件cmg中增加一个命令按钮,并设置该按钮的标题为“退出”。

    4、 编写Resize事件的代码,是表单运行后改变表单窗口大小时,表格始终与表单同宽,表格的高度始终比表单高度小45。

5、 根据“打开表”命令按钮的Click事件代码中所指定的打开表的工作区,编写“关闭表”命令按钮的Click事件代码,要求仅用一天语句使该工作区中的表关闭。

 

图2 设计时

                                        

  

        图3  运行时

 

五、 程序改错题(5分)

   下列程序的功能是找出1992至2010年中的闰年年份。判断闰年的条件是:能被4整除但不能被100整除的年份,或能被400整除的年份。如1989、1900年不是闰年,1992,2000是闰年。要求:

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

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

     n=1992

     y=1

     DO WHILE n<=2010

         IF INT(n/4)=n/4

              IF INT(n/100)<>n/100

                  y=1

              ELSE

                  IF INT(n/400)=n/400

                      y=1

                  ELSE

                      y=0

                  ENDIF

              ENDIF

         ENDIF

              y=0

         ENDIF

         WAIT WINDOW VAL(n)+'是'+IIF(y=1,'闰年','非闰年')

         n=n+1

ENDDO