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

第十六套 
一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 
    1、在考生文件夹下建立项目STSC_M。 
    2、把数据库STSC加入到STSC_M项目中。 
    3、打开STSC数据库,三个表中必要的索引已经建立,为三个表建立永久性联系。 
    4、为COURSE表增加字段:开课学期 I 
本题的主要考核点: 
  项目的建立、将数据库添加到项目中、为已建立索引的表建立永久性联系、字段的添加。 
解题思路: 
1.建立项目 
创建项目可用"文件"菜单中的"新建"命令。 
2.将数据库加入到项目中: 
在项目管理器的"数据"选项卡选择数据库,单击"添加",在"打开"对话框中选择要添加的数据库 
3.为表和表建立永久性联系,方法是在数据库设计器中,选中父表中的主索引,按住鼠标拖动至子表相应的普通索引上,释放鼠标,联系即已建立。 
4.添加字段: 
打开表设计器,将光标移动到最后的空字段格中,输入新的字段名、字段类型及长度。 
二、简单应用(2小题,每题20分,计40分) 
    1、在考生文件夹中有数据库STSC,其中有数据库表STUDENT、SCORE和 
       COURSE。三个表如下所示: 
       STUDENT(学号、姓名、性别、院系、出生日期) 
       SCORE(学号、课程编号、成绩) 
       COURSE(课程编号、课程名称、开课院系、开课学期) 
       在考生文件夹下有一个程序dbtest4.prg,该程序的功能是检索选课门数是3 
       门以上的(包括3门)每个学生的学号、姓名、平均成绩、最低分、选课门数和院系,并 
       按平均成绩降序排序,同时将结果存放到表TEST1中,请修改程序中的错 
       误,并调试该程序,使之正确运行。不得增加或删减程序行。 
    2、在考生文件夹中有数据库STSC,其中有数据库表STUDENT、SCORE和COURSE。 
       三个表如下所示: 
       STUDENT(学号,姓名,性别,院系,出生日期) 
       SCORE(学号,课程编号,成绩) 
       COURSE(课程编号,课程名称,开课院系,开课学期) 
       使用CREATE QUERY命令建立一个文件名为QUSC.QPR的查询,要求含有学号、 
       姓名、成绩和课程名称,按课程名称升序排序,查询去向是表(表名是 
QUSC.DBF),然后执行该查询。 
第1题:本题是一个程序修改题,题中的第一个错误是"SUM(课程编号) >= 3;",因为题面要求是统计选课门数是3门以上的,所以不应用SUM,应改为COUNT;第二个错误"ORDER BY 平均成绩";题面要求按平均成绩降序排序,而此命令是按平均成绩的升序排列的,所以在其后应加DESC;第三个错误是"INTO TEST1 SDF",此程序最后要求将结果存放到表TEST1中,正确命令格式应为"INTO table test1 "。 
第2小题:本题的主要考核点是使用命令建查询,在命令窗口中输入CREATE QUERY命令调出查询设计器,添加数据库的三个表,从字段中选择学号、姓名、成绩和课程名称字段,单击排序依据,选择课程名称,单击升序,再单击查询菜单下的查询去向,选择表,输入表名QUSC.DBF。运行查询,最后将查询保存为QUSC.QPR。 
三、综合应用(1小题,计30分) 
    在考生文件夹下有职员管理数据库staff_10,数据库中有YUANGONG表结 
    构是职工编码C(4)、姓名C(10)、夜值班天数I、昼值班天数I、加班费N 
    (10.2)。ZHIBAN表结构是值班时间C(2),每天加班费N(7.2),ZHIBAN表 
    中只有两条记录,分别记载了白天和夜里的每天加班费标准。 
    请编写运行符合下列要求的程序: 
    设计一个名为staff_m的菜单,菜单中有两个菜单项"计算"和"退出"。 
    程序运行时,单击"计算"菜单项应完成下列操作: 
    (1)计算YUANGONG表的加班费字段值,计算方法是: 
       加班费=夜值班天数*夜每天加班费+昼值班天数*昼每天加班费 
    (2)根据上面的结果,将员工的职工编码、姓名、加班费存储到的自由表 
        staff_d中 ,并按加班费降序排列,如果加班费相等,则按职工编码的升 
        序排列。 
    单击"退出"菜单项,程序终止运行。 
本题考查知识点:数据表的查询,记录的更新,数据表的定义等 

本题解题思路: 
        SET TALK OFF   &&在程序运行时关闭命令结果的显示 
        SET SAFETY OFF   &&关闭文件重名的提示 
        OPEN DATABASE STAFF_10    &&打开数据库文件STAFF_10 
        SELECT 每天加班费 FROM ZHIBAN WHERE 值班时间="昼" INTO ARRAY zhou 
        &&由于要得到"昼"和"夜"的每天的加班费,所以要用到SELECT SQL查询 
        &&WHERE 条件表达式 可以用来限定结果集,将条件表达式:值班时间="昼" 
        &&放在WHERE的后面;也可以将结果集的列数进行限制,这里我们只需要得到 
            &&每天加班费 ,将其放在SELECT的后面;可以将返回的结果集放入一个数组变量中 
        &&用到INTO ARRAY 数组变量名 
        SELECT 每天加班费 FROM ZHIBAN WHERE 值班时间="夜" INTO ARRAY ye 
        &&同上,这样可以在ye中得到:值班时间="夜"的每天加班费 
        UPDATE YUANGONG SET 加班费=夜值班天数*ye+昼值班天数*zhou 
        &&UPDATE SQL语句用来修改某一个,某几个字段的值 
        &&UPDATE 表名 SET 字段名1=表达式1[,字段名2=表达式2 ...] 
       &&[WHERE 条件表达式1[AND|OR 条件表达式2…]] 
        SELECT 职工编码,姓名,加班费 FROM YUANGONG ORDER BY 加班费 DESC,职工编码; 
        INTO TABLE STAFF_D 
        &&利用SELECT SQL语句中的ORDER BY 子句可以对结果集进行排序,有多个排序依据时 
        &&它们按优先级的高低依次排在ORDER BY的后面,默认是以升序进行排序的,如果要以 
        &&降序进行排序需要显示指明DESC;利用INTO TABLE 表名 可以将结果集放入一个永久表中 
        CLOSE ALL 
        &&关闭所有打开的文件 
        SET SAFETY ON 
        &&恢复文件重复的提示设置 
        SET TALK ON 
        &&恢复命令结果显示设置 
就业数据资源平台