VF上机题练习2
作者:转载自:网络更新时间:2009-9-5

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

    在考生文件夹下有学生成绩数据库XUESHENG3,包括如下所示三个表文件以及相

    关的索引文件:

    1、XS.DBF(学生文件: 学号 C8,姓名 C8,性别 C2,班级 C5;另有索引文件

       XS.IDX,索引键:学号)

    2、CJ.DBF(成绩文件: 学号 C8,课程名 C20,成绩 N5.1;另有索引文件

       CJ.IDX,索引键:学号)

    3、CJB.DBF(成绩表文件:学号 C8,姓名 C8,班级 C5,课程名 C12,成绩   

       N5.1)

    设计一个名为XS3的菜单,菜单中有两个菜单项"计算"和"退出"。

    程序运行时, 单击"计算"菜单项应完成下列操作:

    将所有选修了"计算机基础"的学生的"计算机基础"成绩,按成绩由高到低的顺

    序填列到成绩表文件CJB.DBF中(事前须将文件中原有数据清空)。

    单击"退出"菜单项,程序终止运行。

    (注:相关数据表文件存在于考生文件夹下)

本题的主要考核点:

结构化查询语言(SQL)中的联接查询、查询的排序、查询的去向等知识

解题思路:

在本题中要想得到所有选修了"计算机基础"的学生的"计算机基础" 成绩及学生的姓名等信息,就需要用到联接查询。因为学生的姓名、班级在表XS.DBF中,而学生的成绩在表CJ.DBF中。而这两个表要联接起来可以通过"学号"字段。

有以下两种联接查询的形式:SELECT XS.学号,姓名,班级,课程名,成绩 FROM XS,CJ WHERE XS.学号=CJ.学号 AND 课程名="计算机基础" 或者  SELECT XS.学号,姓名,班级,课程名,成绩 FROM XS LEFT JION CJ ON XS.学号=CJ.学号 WHERE 课程名="计算机基础"

    通过以上的联接查询便得到了所有选修"计算机基础"的学生的"计算机基础"的成绩及学生的姓名等信息。而题中所要求按成绩的降序排序,所以应该在以上SQL语句的基础上加入:ORDER BY 成绩 DESC

    将查询所得到的结果放于一个数组变量AFields&#118alue中,要用到INTO ARRAY AFields&#118alue.至此一个完整的SQL联接查询语句便形成了:SELECT XS.学号,姓名,班级,课程名,成绩 FROM XS,CJ WHERE XS.学号=CJ.学号 AND 课程名="计算机基础" ORDER BY 成绩 DESC INTO ARRAY AFields&#118alue

    清空CJB.DBF

    将tableName中的资料添加到已被清空的CJB.DBF中INSERT INTO CJB FROM ARRAY AFields&#118alue