就业数据资源平台
当前位置:首页 > Visual FoxPro
计算机等级考试二级VFP机试试题11

第十一套


一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分)



    1、在考生文件夹下建立项目MARKET。



    2、在项目MARKET中建立数据库PROD_M。



    3、把考生文件夹中自由表CATEGORY和PRODUCTS加入到PROD_M数据库中



    4、为CATEGORY表建立主索引,索引名为primarykey,索引表达式为分类编码;为



PRODUCTS表建立普通索引,索引名为regularkey,索引表达式为分类编码。



本题的主要考核点:



  项目的建立、在项目中创建数据库、将自由表添加到数据库中、主索引,普通索引的建立。



解题思路:



1.建立项目



创建项目可用"文件"菜单中的"新建"命令。



2.在项目中创建数据库:



在项目管理器的"数据"选项卡选择数据库,单击"新建"。



3.将自由表添加到数据库中,可以在项目管理器或数据库设计器中完成。在数据库设计器中可以从"数据库"菜单或在数据库设计器上单击右键弹出的菜单中选择"添加表",然后在"打开"对话框中选择要添加到当前数据库的自由表。还可用ADD TABLE命令添加一个自由表到当前数据库中。



4.在CATEGORY表设计器中的索引选项卡输入索引名primarykey,索引表达式为分类编码,索引类型为主索引。在PRODUCTS表设计器中的索引选项卡建立索引名为regularkey,索引表达式为分类编码的普通索引。



二、简单应用(2小题,每题20分,计40分)



    1、在考生文件夹中有一个数据库SDB,其中STUDENT表结构如下:



       STUDENT(学号C(2),姓名C(8),年龄N(2),性别C(2),院系号C(2)),现在



       要对STUDENT表进行修改,指定学号为主索引,索引名和索引表达式均为学



       号;指定院系号为普通索引,索引名和索引表达式均为院系号;年龄字段的



       有效性规则在12至30之间(含12和30),默认值是16,性别字段有效性规则



       是'男'或'女',默认值是'男'。



    2、在考生文件夹中有一个数据库SDB,其中有数据库表STUDENT、SC和COURSE。



       表结构如下:



         STUDENT(学号,姓名,年龄,性别,院系号)



         SC(学号,课程号,成绩,备注)



         COURSE(课程号,课程名,先修课程号,学分)



       在考生文件夹下有一个程序test.prg,该程序的功能是检索选修课程门数等



       于3门或3门以上,每门课程成绩大于或等于70分的每个学生的学号、姓名、



       性别、平均成绩、最低分和选课门数,并将结果存放到表new_test中。请修



       改程序中的错误,并调试该程序,使之正确运行。考生不得增加或删减程序



       行。



第1题,本题的主要考核点是建立索引和有效性规则。



建立索引是在表设计器中的索引选项卡建立,建立有效性规则在表设计器中的字段选项卡完成。选定"年龄"字段,在"规则" 栏中输入"年龄=>12.AND.年龄<=30"(或用表达式生成器生成),"默认值"栏输入"16"。选定"性别"字段,在"规则"栏中输入"性别="男".OR.性别="女""(或用表达式生成器生成)"默认值"栏输入"男"。



第2题,本题是一个程序修改题。



第一个错误在"WHILE STUDENT.学号 = SC.学号 AND 成绩 >= 70"行,"WHILE"是循环语句,不能用在此处,设置查询条件的语句是"WHERE"。第二个错误在"SUM(课程号) >= 3",因为题目要求是选课门数大于等于3,不应用SUM,应改为COUNT。第三个错误在"TO NEW_TEST",此处要导入表NEW_TEST,正确的命令格式是"INTO TABLE NEW_TEST"。



三、综合应用(1小题,计30分)



    在考生文件夹下有学生管理数据库stu_five



    (1)CHENGJI表(学号C(9)、课程号C(3)、成绩I)用于记录学生的考试成绩,其中



       一个学生可以有多项记录(登记一个学生的多门成绩)。



    (2)KECHENG表(课程号C(3)、课程名 C(10)、最高分I、学号C(9))的内容是所开



       课程,一门课程只有一个记录(表中有固定的已知数据)。



    请编写并运行符合下列要求的程序:



       设计一个名为form_my的表单,表单中有两个命令按钮,按钮的名称分别为



       cmdYes和cmdNo,标题分别为"统计"和"关闭"。



    程序运行时,单击"统计"按钮应完成下列操作:



    (1)计算每门课程的最高分,并将结果存入KECHENG表的最高分字段,同时将得



       此最高分的学生的学号存入该表的学号字段。



    (2)根据上面的计算结果,生成一个新的表jiangli,该表按顺序含有来自



       KECHENG表的课程名和最高分两个字段,并且按最高分降序排序。



       单击"关闭"按钮,程序终止运行。



本题主要考核点:



表单的建立、程序设计中循环结构、条件结构的应用、SELECT语句的应用等知识点



解题思路:



第一步:利用表单设计器建立所要求的表单,将在表单上添加两个按钮控件。分别设置两个按钮控件的标题和名字属性。



第二步:双击标题为"统计"的按钮控件,在新打开的窗口中添加此按钮的CLICK事件代码:



 SET TALK OFF



SELECT 2



USE KECHENG



&&在B工作区打开KECHENG表



INDEX ON 课程号 TO KC



&&以课程号为排序的依据对表KECHENG进行排序



SELECT 1



USE CHENGJI



&&在A工作区打开CHANEGJI表



DO WHILE NOT EOF()    &&遍历CHENGJI表



   SELECT 2



   SEEK A->课程号       &&在KECHENG表中查找当前成绩表所在的课程号



   IF 最高分成绩 THEN  && 如果KECHENG表中的最高分小于当前CHENGJI表中的记录的成绩



REPLACE 最高分 WITH A->成绩,学号 WITH A->学号



ENDIF



SELECT 1



SKIP



ENDDO



SELECT 课程名,最高分 FROM KECHENG ORDER BY 最高分 INTO TABLE JIANGLI



&&SELECT语句的ORDER BY 子句可以指定查询结果的排序依据,默认是以指定排序依据的升序排序,



&&如果要指定为降序需要用DESC;INTO TABLE 表名 可以将结果集放入一个永久表中。结果集也可以



&&放入一个临时表中:INTO CURSOR 临时表名 ,也可以放入一个数组之中:INTO ARRAY 数组变量名



SET TALK ON





第三步:为标题为"退出"的按钮控件加入CLICK事件代码:



        THISFORM.RELEASE      &&退出表单



第三步:以form_my保存表单

就业数据资源平台