2003年(秋)Visual FoxPro 二级考试上机试卷(VFP03)
(本试卷上机考试时间为70分钟)
说明:1.运行考试软盘A中的“上机考试”应用程序文件以输入考生的准考证号、姓名、试卷代号。 2.启动VFP系统后,首先在命令窗口中执行命令: set default to A: 以设置默认的工作目录,然后再开始作题。 |
一、项目、数据库和表操作(12分) 打开软盘根目录下的项目文件TEST,在该项目中已有一数据库SJK。 1. 按如下要求修改SJK中学生(KC)表的结构: (1) 设置课程名(kcm)字段的标题:课程名称。 (2) 设置课程代号(kcdh)字段的输入掩码:课程代号只能是两位数字字符。 (3) 设置课时数(kss)字段的显示类为微调控件。 (4) 创建一个普通索引kx,要求先按kss字段排序,kss相同的再按学分(xf)字段排序。 (5) 为KC表创建记录级有效性规则:课时数(kss)不能少于学分(xf)。 2. 修改KC表中所有记录的课时数(kss)和学分(xf)字段的值,方法是:所有必修课(BXK字段的值为.T.)的课时数和学分均增加1。 3. 向KC表中增加一条课程代号(kcdh)为“26”的记录。。 4. 已知数据库SJK的存储过程中有一自定义函数kc_del_tri(),函数的功能是:对于打开的KC表,如果当前记录在成绩(CJ)表或任课(RK)表中有相关记录,则返回.T.,否则返回.F.。设置KC表的删除触发器,要求如果KC表的当前记录在成绩表或任课表中有相关记录,则禁止删除。 5. 已知KC表已存在主索引kcdh,索引表达式为kcdh,成绩(CJ)表已存在普通索引cjkcdh,索引表达式为kcdh。以KC表为主表,CJ表为子表按kcdh建立永久关系,并设置它们之间的参照完整性:更新级联。
二、设计查询(8分)
在TEST项目中已存在查询CHAXUN,且在SJK中的包含一个名为XSCJVIEW的视图,该视图中包含了每个学生所学课程的情况。按如下要求修改该查询: 基于XSCJVIEW视图KC表统计各学生所学必修课的门数和总学分。其中学生所学课程的学分必须当成绩(cj)在60分或60分以上时才能取得,否则该课程的学分为0。要求输出字段为:xh 、xm、门数、总分数,查询结果按学号升序排序。
三、设计菜单(5分)
项目TEST中已存在菜单MENUA,按如下要求修改菜单,完成后的运行效果如图1所示。 1. 为“数据录入”菜单栏下的“教师信息录入”菜单项创建快捷键“CTRL+L”。
2. 在“数据查询”创建子菜单“学生档案查询”和“学生成绩查询”,并用分隔线隔开。 |
|
3. 为“学生档案查询”菜单项设置SQL命令,要求当执行该菜单项时在浏览窗口显示学生(XS)表中所有的学生的学号(xh),姓名(xm)和出生日期(csrq)三个字段的内容。 4. 为“学生档案查询”菜单项设置提示信息:“按学号查询学生的成绩”,要求当选择“学生成绩查询”菜单项时,在状态栏中显示该提示信息。 5. 将上述菜单插入到系统菜单的“编辑”菜单之后。
四.设计表单(10分)
TEST 项目中已经存在菜单FORMA,该表单用来进行系统登录。已知A盘根目录下存在表文件USER,该表用来存放登录用户的工号(no)、姓名(name)、职务(title)、和口令(password)。根据下列要求对表单进行修改,完成以后运行表单,效果如图2所示。
1. 设置窗口的标题为“系统登录”。 2. 使姓名和年月下拉列表框只可选择,不可输入。 3. 将“职务”文本框置为废止状态。 4. 姓名下拉列表框显示的内容为用户姓名,其RowSourceType为“3-SQL语句”,请设置RowSource属性。 5. 假如USER表中姓名(name)字段的值不重复,且已经按姓名建立了一个普通索引name,索引表达式为name,当用户点击“确定”按钮时,要验证用户输入的口令的合法性:若口令输入正确则关闭该登录窗口;若口令输入不正确,则提示用户重新输入,并将口令文本框中的内容置空,然后将光标停留在口令文本框中。根据上述要求完善“确定”按钮的Click事件。
|
|
五.程序改错(5分)
下列程序的功能是计算一个英文句子中包括几个英文单词(假设各单词间以空格或标点符号分隔)。其基本算法是首先在字符串左边加一个空格,然后对字符串中的每个字符依次进行如下的处理:如果该字符为英文字母,且左边的字符不是英文字母,则英文单词个数加1。要求: 1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。 2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
cString=’A modem is a device that connects your computer to the Internet.’ cString=SPACE(1)+cSring nCount=0 FOR n=1 RO LEN(cSrring) c=SUBSTR(cSrring,1,n) IF BETWEEN (c,’A’,’Z’) OR BETWEEN(c,’a’,’z’)) c=SUBSTR (cString,n-1,1) IF(BETWEEN(c,’A’,’Z’) OR BETWEEN(c,’a’,’z’)) nCount=nCount+1 ENDIF ENDIF ENDFOR WAIT WINDOWS’英文单词个数为’+STR(nCount)
|