2003年(春)江苏省等级考试上机试卷 (05) |
2003年(春)江苏省等级考试上机试卷 二级 Visual FoxPro (VFP05) 一、项目、数据库和表操作(12分) 打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。 1.按如下要求修改SJK中工资(GZ)表的结构: (1) 为住房公积金(zfgj)字段设置标题:住房公积金; (2) 设置zfgj字段的有效性(验证)规则:它的值必须为基本工资(jbgz)的8% ,该规则对表中已有的数据不作对照; (3) 设置zfgj字段的有效性(验证)信息:住房公积金是基本工资的8%; (4) 增加一个逻辑型字段,其字段名为yhdf; (5) 创建一个普通索引jbgzzfgj,要求先按jbgz字段排序,jbgz相同的再按zfgj字段排序。 2. 为SJK添加编辑说明:教务管理数据库。 3.把TEST项目中的自由表GZC的包含状态设置为“排除”。 4. 调整GZC表中副教授的综合津贴(zhjt),调整办法是:1990年(含1990年)以前参加工作的副教授的综合津贴增加120元。 5. 为KC表设置删除触发器:若某一记录的学分(xf)字段的值为0,则允许删除,否则不允许删除。 6. SJK中KC表已存在主索引kcdh,索引表达式为kcdh:RK表已存在普通索引kcdh,索引表达式为kcdh。以KC表为主表,RK表为子表按kcdh建立永久关系,并设置KC表和RK表之间的参照完整性:删除级联。 二. 计查询(8分) 在TEST项目中已存在查询chaxun,且在SJK中包含一个名为RKVIEW的视图,该视图中包含教师的任课情况,其中有教师上的每一门课的课时数(kss)。假定教师的上课酬金为每学时20元,按如下要求修改查询: 基于RKVIEW视图和教师(JS)表查询每个教师的上课总学时及上课酬金。要求输出字段为:gh,xm、xb,总学时,上课酬金,查询结果按gh的升序排序。 三、设计菜单(5分) TEST项目中已存在菜单menu,其中已定义了“文件”菜单栏及其中的“恢复系统菜单”项。按如下要求设计菜单,完成后的运行效果如图1所示。 1. 创建“学生管理”菜单栏,并为“学生管理”菜单设置访问键“ALT+M”; 2. 为“学生管理’’菜单创建子菜单“基本情况”、“统计”和“浏览学生表”: 3. 创建“统计”菜单的子菜单,其中包含“各课成绩”和“学生总分”菜单项; 4. 设置“浏览学生表”菜单项的废止条件为: .NOT.USED(“XS”): 5. 设置“浏览学生表”菜单命令为:BROWSE。 四、设计表单(10分) TEST项目中已存在表单formM,它是一个通过计时器控件控制的倒记时程序。按如下要求修改表单,完成后表单刚运行时的界面如图2所示,单击“开始”后界面如图3所示。 1. 设置表单的有关属性,使得表单运行在所有的窗口之上,并作为顶层表单; 2. 设置表单中文本框的字号为12; 3. 在表单中添加一个记时器控件Timerl,设置其初始状态为废止、Timer事件的时间间隔为1秒(1000毫秒); 4. 4. 编写Timerl记时器的Timer事件代码,使用If...else...endif结构完成如下功能:如果表单中文本框Textl的值大于0,则让文本框的值减1,否则关闭表单。 图2 刚运行时 图3 开始计时后 五、程序改错(5分) 下列程序用于计算一个字符串中包括多少个汉字(假设这些汉字均属于GB2312字符集)。其基本算法是从字符串中依次取一个字符,如果其AECII码值大于127,则为一个汉字内码的第一个字节。要求: ① 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改; ② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cString=’微软(Microsoft)公司开发的视窗(Windows)操作系统’ &&赋初值 nCount=0 n=LEN(cString) FOR m=1 tO n IF ASC(SUBSTR(cString,m,1))>127 nCount= nCount+1 n=n+1 ENDIF ENDFOR WAIT WINDOWS’汉字个数为’+nCount |