2003年(春)Visual FoxPro 江苏省等级考试上机试卷 |
2003年(春)江苏省等级考试上机试卷 二级 Visual FoxPro (VFP02) 一、项目、数据库和表操作(12分) 打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。 1. 按如下要求修改SJK中学生(XS)表的结构: (1) 将专业代号(zydh)字段的标题设置为“专业代码”; (2) 设置zydh字段的有效性(验证)规则:不能为空; (3) 将籍贯(jg)字段的长度改为20; (4) 增加一个备注型字段,字段名为bz; (5) 创建一个普通索引xdhzydh,要求先按系代号(xdh)字段排序,系代号相同的 再按zydh字段排序; 2.把软盘根目录中的表文件GZB.DBF添加为TEST项目中的自由表。 3.删除GZB中所有职称是副教授的记录。 4.已知项目TEST中存在自由表GZC,计算GZC中所有教授的工龄(gl),工龄的计算方法为当前日期的年份减去参加工作日期(gzrq)的年份。 5.SJK中XIM表已存在主索引xdh,索引表达式为xdh,XS表已存在普通索引xdh,索引表达式为xdh,以XIM表为主表,XS表为子表按xdh建立永久关系,并设置XIM表和XS表之间的参照完整性:更新级联。 二.设计查询(8分) 在TEST项目中已存在查询chaxun,且在SJK中包含一个名为RKST的视图,该视图中包含每个专业的开课情况,其中有专业代号(zydh)、专业名称(zymc)、所开课程的课程代号民(kcdh),在SJK的KC表中含有每门课的性质是否必修课(bxk)字段。按如下要求修改查询: 基于RKST视图和KC表查询每个专业分别开了多少门必修课,多少门选修课。要求输出字段提示:bxk字段的值为.T.即是必修课,否则就是选修课。 三.设计菜单(5分) TEST项目中已存在菜单menu,其中已定义了“文件”菜单栏及其中的“恢复系统菜单”项。按如下要求设计菜单,完成后运行效果如图1所示。 1.创建“项目管理”菜单栏,并为“项目管理”菜单设置热键“ALT+M”; 2.为“项目管理”菜单创建子菜单“数据库”和“程序”; 3.创建“程序”菜单的子菜单,其中包含“PRG程序”和“表单”菜单项; 4.设置“数据库”菜单项的废止条件为:DBUSED(“SJK.DBC”)。 5.设置“数据库”菜单项的命令为:OPEN DATABASE SJK.DBC 四.设计表单(10分) TEST项目中已存在表单formO,功能是浏览指定系科的教师或学生。按如下要求修改表单,完成后的运行效果如图2所示。 1.在表单的数据环境中添加学生表(xs),将学生表设为只读; 2. 设置表单中页框控件的第二个页面的标题为“学生”,并在该页面中添加一个表格控件grdXS,设置表格的记录源类型为“别名”,记录源为“xs”; 3. 编写系科列表框Listl的InterActiveChange事件代码,希望的功能是根据列表框中选择的不同系科和页框中选择的不同页面动态设置表单的标题。例如,列表框中选择了“计算机科学系”,页框中选择了“学生”页面,则表单的标题就为“浏览计算机系学生情况”。用一行代码实现这一功能。(提示:表单标题字符串中‘教师’或“学生”字符的确定可来自页框中活动页面的标题。) 图2 五.程序改错(5分) 下列程序的功能用于将十六进制数转换成十进制数表示。要求: ① 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改; ② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cNumber=’4FC7’ &&赋初值(用字符串表示的十六进制数) nResult=0 FOR n=LEN(cNumber) TO 1 C=LEFT(cNumber,1) IF BETWEEN(c, ’0’,’9’) nResult=nResult*16+c ELSE nResult=nResult*16+10+ASC(c)-ASC(’A’) ENDIF CNumber=SUBSTR(cNumber,2) ENDFOR WAIT WINDOWS ’十进制数表示为’+STR(nResult) |