江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2005 年(春)二级Visual FoxPro上机(1)

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

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

 

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

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

打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK

1  按如下要求修改SJK中工资(gz)表的结构:

(1)为个人所得税(grsds)字段设置标题:个人所得税。

(2)设置个人所得税(grsds)字段的注释:基本工资1000元以上征税;

(3)设置gz表的记录有效性(验证)规则:如果jbgz小于1000元,grsds的值为0,否则grsds的值为jbgz5%(该规则对表中已有的数据不做验证);

(4)设置gz表的记录有效性信息:个人所得税按基本工资的5%收取;

(5)创建一个普通索引gzjx,要求按jbgz降序排列。

2  设置test项目信息:作者为张勇,单位为南京大学 

3  kc表中添加一条记录,记录内容为:

 

Kcdh

Kcm

Bxk

Kss

xf

26

计算机图形学

.f.

3

3

 

4 修改js表中简历(jl)字段的值,要求:所有xdh”02”的记录的简历都改为计算机系的教师

5 设置js表的插入触发器:gh字段的值必须为5个字节的字符串(除去首尾空格),否则不允许插入。

6 JS表中已存在主索引jsgh,索引表达式为gh;rk表已存在普通索引rkgh,索引表达式为gh。以JS表为主表、rk表为子表,按gh 建立永久关系,并设置JS表和rk表之间的参照完整性:删除级联。

 

二、设计查询(8分)

TEST项目中已存在查询chaxun,且在SJK中包含一个名为XSCJST的视图,该视图中包含学生的学号(xh),课程代号(kcdh)、课程名(kcm)和成绩(cj)字段,另外在SJK的学生(xs)表含有学生的学号(xh)和所在班级编号(bjbh)字段。按如下要求修改查询:

基于xs表和XSCJST视图表查询每个班课程代号为”01”的考试情况。要求输出字段为:bjbh,kcdh,kcm,最高分,平均分,不及格人数,查询结果按bjbh的升序排序(注:成绩低于60分为不及格)

 

三、设计菜单(5分)

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

1.按图所示,在表操作菜单栏增加一个记录定位菜单项,并为它设置子菜单;

2.为追加记录菜单项编写命令:当执行该菜单项时,在学生表中增加一条记录,且该记录的学号等于它的记录号(转换为6位字符型);

3.在文件菜单栏下插入系统菜单项退出

 

 

 

四、设计表单(10分)

项目TEST中已经存在表单FormM。该表单的功能是根据选择的班级与课程录入学生成绩,其基本思想是:单击录入命令按钮,则根据所选班级编号生成一个含该班所有学生的临时工作表TEMP(作为表格控件的数据源),以录入成绩;单击入库命令按钮,则将TEMP表中的数据追加到cj表中,然后执行退出命令按钮的click事件代码。按下列要求修改该表单,修改完成后运行表单,其效果如下图所示。

1.修改表单的有关属性,使得控制图标和按钮如图2所示(控制图标为软盘上的net.ico文件);

2.修改表格控件第3列的标头,显示成绩,且居中、字号为11号;

3.修改下列组合框combo2的有关属性,使得下拉列表中显示课程表(kc)的课程代号(kcdh)和课程名(kcm),要求不修改该控件的rowsourcetype属性;

4.完善录入命令按钮的click事件代码,要求在原代码的基础上添加2条语句,以实现功能:该命令按钮不可用,表单上的入库命令按钮可用;

5.为表单的destroy事件编写代码,需要完成的功能是:

1)关闭所有表;2)如果存在表文件temp.dbf,则删除之。

 

 

 

 

五、 程序改错(5分)

下列程序的功能是:随机出10100以内整数加减法算术题。如果是加法,则两数的和不得大于100;如果是减法,则被减数不小于减数。要求:

   项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改(注:注释部分不需要输入);

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

Clear

  Ts=1                        &&题数计数

  Do while ts<=10

Czf=iif(rand()>0.5, ”+”, ”-”)  &&rand()函数的功能是返回一个0~1之间的随机数

Num1=rand()*100

Num2=rand()*100

If czf=”+”

  If num1+num2>100

    Loop

  Endif

Else

  If num1<num2

     Exit

  Endif

Endif

? ”(”+str(ts,2)+ ”) ”+str(num1,3)+czf+str(num2,2)+ ”=”

ts=ts+1

endif