計算機(jī)等級考試二級VFP上機(jī)試題及解題思路(3)

字號:

計算機(jī)等級考試二級VFP上機(jī)試題及解題思路(3)

    一、基本操作(共四小題,第1和2題是7分、第3和4題是8分
    1、請在考生文件夾下建立一個數(shù)據(jù)庫KS4。
    2、將考生文件夾下的自由表STUD、COUR、SCOR加入到數(shù)據(jù)庫KS4中。
    3、為STUD表建立主索引,索引名和索引表達(dá)式均為學(xué)號
    為COUR表建立主索引,索引名和索引表達(dá)式均為課程編號
    為SCOR表建立兩個普通索引,其中一個索引名和索引表達(dá)式均為學(xué)號;另一個索引名和索引表達(dá)式均為課程編號
    4、在以上建立的各個索引的基礎(chǔ)上為三個表建立聯(lián)系。
    本題的主要考核點(diǎn):
    數(shù)據(jù)庫的建立、將自由表添加到數(shù)據(jù)庫中、主索引和普通索引的建立,為已建立索引的表建立聯(lián)系。
    解題思路:
    1.建立數(shù)據(jù)庫的常用方法有三種:
    在項目管理器中建立數(shù)據(jù)庫;
    通過"新建"對話框建立數(shù)據(jù)庫;
    使用命令交互建立數(shù)據(jù)庫,命令為: CREATE DATABASE [DatabaseName|?]
    2.將自由表添加到數(shù)據(jù)庫中,可以在項目管理器或數(shù)據(jù)庫設(shè)計器中完成。打開數(shù)據(jù)庫設(shè)計器,在"數(shù)據(jù)庫"菜單中或在數(shù)據(jù)庫設(shè)計器上單擊右鍵彈出的菜單中選擇"添加表",然后在"打開"對話框中選擇要添加到當(dāng)前數(shù)據(jù)庫的自由表。還可用ADD TABLE命令添加一個自由表到當(dāng)前數(shù)據(jù)庫中。
    3.在STUD表設(shè)計器中的索引選項卡建立索引名和索引表達(dá)式為學(xué)號的主索引。分別為COUR和SCOR建立主索引和普通索引。
    4.在數(shù)據(jù)庫設(shè)計器中建立三個表的聯(lián)系。在數(shù)據(jù)庫設(shè)計器中,將選中STUD表中的主索引"學(xué)號",按住鼠標(biāo)拖動到SCOR表的普通索引"學(xué)號"上。
    用同樣的方法可以建立COUR表和SCOR表的"課程編號"之間的聯(lián)系。
    二、簡單應(yīng)用(2小題,每題20分,計40分)
    1、在考生文件夾中有一個數(shù)據(jù)庫STSC,其中有數(shù)據(jù)庫表STUDENT、SCORE和
    COURSE
    利用SQL語句查詢選修了"網(wǎng)絡(luò)工程"課程的學(xué)生的全部信息,并將結(jié)果按學(xué)號降序存放在 NETP.DBF文件中(庫的結(jié)構(gòu)同STUDENT,并在其后加入課程號和課程名字段)。
    2、在考生文件夾中有一個數(shù)據(jù)庫STSC,其中有數(shù)據(jù)庫表STUDENT,使用一對多報表向?qū)е谱饕粋€名為CJ2的報表,存放在考生文件夾中要求:選擇父表STUDENT 表中學(xué)號和姓名字段,從子表SCORE中選擇課程號和成績,排序字段選擇學(xué)號(升序),報表式樣為簡報式,方向為縱向。報表標(biāo)題為"學(xué)生成績表"。
    第1題,本題的主要考核點(diǎn)是SQL語句的查詢。
    SELECT Student.*, Score.課程號, Course.課程名;
    FROM stsc!student INNER JOIN stsc!score;
    INNER JOIN stsc!course ;
    ON Score.課程號 = Course.課程號 ;
    ON Student.學(xué)號 = Score.學(xué)號;
    WHERE AT("網(wǎng)絡(luò)工程",Course.課程名) > 0;
    ORDER BY Student.學(xué)號 desc;
    INTO TABLE netp.dbf
    第2題,本題的主要考核點(diǎn)是使用報表向?qū)е谱鲌蟊怼?BR>    啟動報表向?qū)Э稍?文件"菜單中選擇"新建"或者單擊工具欄上的"新建"按鈕,打開"新建"對話框,文件類型選擇報表,單擊向?qū)О粹o?;蛘咴?工具"菜單中選擇"向?qū)?子菜單,選擇
    "報表",或直接單擊工具欄上的"報表向?qū)?圖標(biāo)按鈕。然后按照向?qū)崾静僮骷纯伞?BR>    三、綜合應(yīng)用(1小題,計30分)
    在考生文件夾下有工資數(shù)據(jù)庫WAGE3,包括數(shù)據(jù)表文件:ZG(倉庫號C(4),
    職工號C(4),工資N(4))
    設(shè)計一個名為TJ3的菜單,菜單中有兩個菜單項"統(tǒng)計"和"退出"。
    程序運(yùn)行時,單擊"統(tǒng)計"菜單項應(yīng)完成下列操作:檢索出工資小于或等于本倉庫職工平均工資的職工信息,并將這些職工信息按照倉庫號升序,在倉庫號相同的情況下再按職工號升序存放到EMP1(EMP1為自由表)文件中,該數(shù)據(jù)表文件和ZG數(shù)據(jù)表文件具有相同的結(jié)構(gòu)。單擊"退出"菜單項,程序終止運(yùn)行。
    (注:相關(guān)數(shù)據(jù)表文件存在于考生文件夾下)
    本題主要考核點(diǎn):
    菜單的建立、結(jié)構(gòu)化查詢語言(SQL)中的聯(lián)接查詢、查詢的排序、臨時表的概念、查詢結(jié)果的去向等知識。
    解題思路:
    利用菜單設(shè)計器定義兩個菜單項,在菜單名稱為"統(tǒng)計"的菜單項的結(jié)果列中選擇"過程",并通過單擊"編輯"按鈕打開一個窗中來添加"統(tǒng)計"菜單項要執(zhí)行的命令。在菜單名稱為"退出"的菜單項的結(jié)果列中選擇"命令",并在后面的"選項"列中輸入以下退出菜單的命令:SET SYSMENU TO DEFAULT
    "統(tǒng)計"菜單項要執(zhí)行的程序:
    首先是打開數(shù)據(jù)庫文件OPNE DATABASE WAGE3.DBC我們應(yīng)該得到每一個倉庫的職工平均工資,并將結(jié)果放在一個臨時的表CurTable中.利用以下語句可以實現(xiàn):SELECT 倉庫號,AVG(工資) AS AvgGZ FROM ZG GROUP BY 倉庫號 INTO CURSOR CurTable.這樣就生成了一個表名為CurTable的臨時表。表中有兩個字段:倉庫號,AvgGZ,內(nèi)容為每一個倉庫的倉庫號和所對應(yīng)的職工的平均工資。
    有了臨時表CurTable后我們可以將其與ZG進(jìn)行聯(lián)接查詢,我們這里聯(lián)接查詢的目的不是為了得到臨時表中的內(nèi)容做為結(jié)果的一部分,而是要用其中的字段AvgGZ做為查詢的條件.我們便可以得到"工資小于或低于本倉庫職工平均工資的職工信息"的查詢:SELECT ZG.* FROM ZG,CurTable WHERE ZG.倉庫號=CurTable.倉庫號 AND ZG.工資