2011秋二级Visual FoxPro上机试卷第1套 |
||||||||||||||||||||||||||||||||||||||||||||||||
2011秋二级Visual FoxPro上机试卷 (本试卷完成时间为70分钟) 考试说明: 1.首先登录考生信息,然后启动VFP并在命令窗口中执行下列命令,以设置默认的工作目录: SET DEFA TO T: 2.除非题目要求,否则不要对T盘上的文件进行重命名、复制和删除操作。 一、项目、数据库和表操作(12分) 打开T盘根目录中的项目文件jxgl,在该项目中已有一数据库jxsj。 1.在jxsj数据库中按如下表格中所示的结构创建ab.dbf表,并按表格中的要求设置相关属性。
(1)设置表的注释:世博会场馆简介一览表。 (2)设置cg字段的有效性规则:不能为空字符串。 (3)设置zdmj字段的输入掩码:整数部分从右至左每3位用","字符隔开。 (4)设置WZ字段的有效性规则:只能是"A,B,C,D,E"片区中的一个。 (5)创建索引名为abcd的普通索引,要求按位置排序,位置相同时按占地面积排序。 2.在ab表中输入如下记录:
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者不及格)。要求:输出字段依次为kcdm、kcmc、人数、平均成绩、不及格人数,查询结果按平均成绩降序排序,查询去向为表(表的文件名为abc)。 三、设计菜单(5分) jxgl项目中已存在菜单menu,其中已定义"文件"菜单栏及其中的"退出菜单"项。按如下要求设计菜单,完成 后的运行效果如图1所示。 1.创建"人员管理"菜单栏,并创建其子菜单"录入"、"修改"、"浏览"。 2.在菜单项"录入"与"修改"、"修改"与"浏览"之间插入分组线。 3.为"浏览"菜单项设置访问键"B"。 4.为"浏览"菜单项设置快捷键"CTRL+B"。 5.为"浏览"菜单项设置命令:SELECT * FROM js 四、设计表单(10分) 表单FRM 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个符号表示从0~31的32个十进制数。例如,32进制数"A8T"对应的十进制数的计算过程如下: (A8T) 下面程序的功能是将一个32进制数字字符串转换为十进制数形式。要求:①项目中有一个程序文件Pcode,将T盘中vfp01.txt中的程序代码复制到其中并进行修改;②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 1 Num32='A8T' 2 Num10=0 3 FOR i=LEN(Num32)-1 TO 0 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 四、设计表单
五、程序改错 第3行 FOR i=LEN(Num32)-1 To 0 改为TO 0 STEP -1 第12行 EXIT 改为RETURN |
||||||||||||||||||||||||||||||||||||||||||||||||