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

字號(hào):

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

    第十五套
    一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
    1、在考生文件夾下建立數(shù)據(jù)庫(kù)STSC
    2、把自由表STUDENT、COURSE、SCORE加入到數(shù)據(jù)庫(kù)中。
    3、為SCORE表的"成績(jī)"字段建立有效性規(guī)則:成績(jī)大于等于零,否則提示信息:成績(jī)必須大于等于零
    4、為STUDENT表建立主索引,索引名為PRIMARYKEY,索引表達(dá)式為學(xué)號(hào)。
    本題的主要考核點(diǎn):
    數(shù)據(jù)庫(kù)的建立、將自由表添加到數(shù)據(jù)庫(kù)中、建立有效性規(guī)則、索引的建立。
    1.建立數(shù)據(jù)庫(kù)的常用方法有以下三種:
    在項(xiàng)目管理器中建議數(shù)據(jù)庫(kù)
    通過(guò)"新建"對(duì)話框建議數(shù)據(jù)庫(kù)
    使用命令交互建議數(shù)據(jù)庫(kù),命令為: CREATE DATABASE [DatabaseName|?]
    其中DatabaseName給出了要建立的數(shù)據(jù)庫(kù)的名稱,如果不指定數(shù)據(jù)庫(kù)名稱或使用?號(hào)都會(huì)彈出創(chuàng)建對(duì)話框請(qǐng)用戶輸入數(shù)據(jù)庫(kù)名稱。
    此處可用后兩種。
    2 .將自由表添加到數(shù)據(jù)庫(kù)中,可以在項(xiàng)目管理器或數(shù)據(jù)庫(kù)設(shè)計(jì)器中完成。在數(shù)據(jù)庫(kù)設(shè)計(jì)器中可以從"數(shù)據(jù)庫(kù)"菜單或在數(shù)據(jù)庫(kù)設(shè)計(jì)器上單擊右鍵彈出菜單中選擇"添加表",然后在"打開(kāi)"對(duì)話框中選擇要添加到當(dāng)前數(shù)據(jù)庫(kù)的自由表。還可用ADD TABLE命令添加一個(gè)自由表到當(dāng)前數(shù)據(jù)庫(kù)中。
    3.建立有效性規(guī)則比較簡(jiǎn)單直接的方法是在表設(shè)計(jì)器中建立。在表設(shè)計(jì)器中首先選中要定義有效性規(guī)則的字段"成績(jī)",在"規(guī)則"一欄中輸入"成績(jī)>=0"(或用表達(dá)式生成器生成),在"信息"欄中輸入:"成績(jī)必須大于等于零"。
    4.建立索引在表設(shè)計(jì)器中的索引選項(xiàng)卡中完成。
    二、簡(jiǎn)單應(yīng)用(2小題,每題20分,計(jì)40分)
    1、在考生文件夾中有一個(gè)商品數(shù)據(jù)庫(kù)COMMDB,其中有數(shù)據(jù)庫(kù)表SP存放商品信息,使用菜單設(shè)計(jì)器制作一個(gè)名為SMENU的菜單,菜單包括"數(shù)據(jù)操作"和"文件"兩個(gè)菜單欄。
    每個(gè)菜單欄都包括一個(gè)子菜單。菜單結(jié)構(gòu)如下:
    數(shù)據(jù)操作
    數(shù)據(jù)輸出
    文件
    退出
    其中:
    數(shù)據(jù)輸出子菜單對(duì)應(yīng)的過(guò)程完成下列操作:打開(kāi)數(shù)據(jù)庫(kù)COMMDB,使用SQL的
    SELECT語(yǔ)句查詢數(shù)據(jù)庫(kù)表SP中所有信息,然后關(guān)閉數(shù)據(jù)庫(kù)。
    退出菜單項(xiàng)對(duì)應(yīng)的過(guò)程含有命令SET SYSMENU TO DEFAULT,使之可以返回到
    系統(tǒng)菜單。
    2、在考生文件夾中有一個(gè)數(shù)據(jù)庫(kù)SDB,其中有數(shù)據(jù)庫(kù)表STUDENT2、SC和
    COURSE2。三個(gè)表如下所示:
    STUDENT2(學(xué)號(hào),姓名,年齡,性別,院系編號(hào))
    SC(學(xué)號(hào),課程號(hào),成績(jī),備注)
    COURSE2(課程號(hào),課程名,先修課號(hào),學(xué)分)
    用SQL語(yǔ)句查詢"數(shù)據(jù)庫(kù)"課程的考試成績(jī)?cè)?5分以上(含85分)的學(xué)生的全部信息并將結(jié)果按學(xué)號(hào)升序存入自由表NINE.DBF文件中。(庫(kù)的結(jié)構(gòu)同STUDENT2,并在其后加入成績(jī)字段)
    第1題,本題的主要考核點(diǎn)是建立菜單和foxpro中的基本命令。
    新建菜單可按下列步驟:選擇“文件”菜單中的“新建”命令,在“新建”對(duì)話框中選擇“菜單”,單擊“新建文件”按鈕。在“新建菜單”對(duì)話框中選擇“菜單”按鈕,調(diào)出“菜單設(shè)計(jì)器”。也可用CREATE MENU命令直接調(diào)出菜單設(shè)計(jì)器。在菜單名稱中填入“數(shù)據(jù)操作”,結(jié)果為子菜單,單擊編輯;在子菜單的菜單名稱中輸入“數(shù)據(jù)輸出”,結(jié)果為過(guò)程。在過(guò)程中輸入下列命令:
    open data commdb
    select * from sp
    close all
    文件菜單創(chuàng)建過(guò)程同上。
    第2題 本題的主要考核點(diǎn)是SQL語(yǔ)句查詢。
    SELECT Student2.*, Sc.成績(jī);
    FROM sdb!student2 INNER JOIN sdb!sc;
    INNER JOIN sdb!course2 ;
    ON Sc.課程號(hào) = Course2.課程號(hào) ;
    ON Student2.學(xué)號(hào) = Sc.學(xué)號(hào);
    WHERE Course2.課程名 IN ("數(shù)據(jù)庫(kù)");
    AND Sc.成績(jī) >= 85;
    ORDER BY Student2.學(xué)號(hào);
    INTO TABLE nine.dbf
    三、綜合應(yīng)用(1小題,計(jì)30分)
    考生文件夾下有學(xué)生管理數(shù)據(jù)庫(kù)stu_nine,數(shù)據(jù)庫(kù)中有score1表,其庫(kù)結(jié)構(gòu)是學(xué)
    號(hào)C(10)、少數(shù)民族L、優(yōu)秀干部L、三好生L、考試成績(jī)I、總成績(jī)I。其中,前
    五項(xiàng)已有數(shù)據(jù)
    請(qǐng)編寫并運(yùn)行符合下列要求的程序:
    設(shè)計(jì)一個(gè)名為form_stu的表單,表單中有兩個(gè)命令按鈕,按鈕的名稱分別為
    cmdYes和cmdNo,標(biāo)題分別為"計(jì)算"和"關(guān)閉"。
    程序運(yùn)行時(shí),單擊"計(jì)算"按鈕應(yīng)完成下列操作
    (1)計(jì)算每一個(gè)學(xué)生的總成績(jī)。總成績(jī)的計(jì)算方法是:考試成績(jī)+加分,加分的規(guī)
    則是:如果該生是少數(shù)民族(相應(yīng)數(shù)據(jù)字段為 .T.)加分5分,優(yōu)秀干部加分10分,三好生加分20分,加分不累計(jì),取高的 。例如,如果該生既是少數(shù)民族又是三好生,加分為20分。如果都不是,總成績(jī)=考試成績(jī)
    (2)根據(jù)上面的計(jì)算結(jié)果,生成一個(gè)新的自由表 ZCJ,該表只包括學(xué)號(hào)和總成績(jī)兩項(xiàng),并按總成績(jī)的升序排序,如果總成績(jī)相等,則按學(xué)號(hào)的升序排序。單擊"關(guān)閉"按鈕,程序終止運(yùn)行。
    本題主要考核點(diǎn):
    表單的建立、程序設(shè)計(jì)中循環(huán)結(jié)構(gòu)、條件結(jié)構(gòu)的應(yīng)用、SELECT語(yǔ)句的應(yīng)用等知識(shí)點(diǎn)
    解題思路:
    第一步:利用表單設(shè)計(jì)器建立所要求的表單,將在表單上添加兩個(gè)按鈕控件。分別設(shè)置兩個(gè)按鈕控件的標(biāo)題和名字屬性。
    第二步:雙擊標(biāo)題為"計(jì)算"的按鈕控件,在新打開(kāi)的窗口中添加此按鈕的CLICK事件代碼:
    SET TALK OFF &&在程序運(yùn)行下關(guān)閉命令結(jié)果的顯示
    OPEN DATABASE STU_NINE &&打開(kāi)數(shù)據(jù)庫(kù)文件
    USE SCORE1 &&打開(kāi)成績(jī)表
    DO WHILE NOT EOF() &&遍歷成績(jī)表中的每一條記錄
    STORE 0 TO JF &&對(duì)變量JF賦值0
    DO CASE
    CASE 三好生
    JF=20
    CASE 優(yōu)秀干部
    JF=10
    CASE 少數(shù)民族
    JF=5
    OTHERWISE
    JF=0
    ENDCASE
    &&DO CASE…..ENDCASE條件語(yǔ)句中每次僅運(yùn)行其中的一組命令。
    &&如果第一個(gè) CASE 條件表達(dá)式 中條件表達(dá)式為.T.,則執(zhí)行第一個(gè)CASE
    &&和第二個(gè)CASE之間的語(yǔ)句,而即使下面的有滿足條件的CASE也不再執(zhí)行
    &&如果所有的CASE條件都不滿足,則執(zhí)行OTHERWISE與ENDCASE之間的語(yǔ)句
    &&所以這里要將"三好生"放在第一個(gè)CASE的位置;"優(yōu)秀干部"話在第二個(gè)CASE中
    &&"少數(shù)民族"放在第三個(gè)CASE中
    REPLACE 總成績(jī) WITH 考試成績(jī)+JF
    &&用當(dāng)前的成績(jī)與可以加的分之和做為總成績(jī)
    SKIP
    ENDDO
    SELECT 學(xué)號(hào),總成績(jī) FROM SCORE1 ORDER BY 總成績(jī),學(xué)號(hào);
    INTO TABLE ZCJ
    &&利用ORDER BY 子句可以將查詢結(jié)果集按一定的順序進(jìn)行排序
    &&默認(rèn)是以升序進(jìn)行排序,如果要以降序進(jìn)行排序,需在排序依據(jù)的后面加DESC
    &&在排序的時(shí)候可以指定多個(gè)排序的依據(jù),根據(jù)優(yōu)先級(jí)的不同依次放在ORDER BY 的后面
    &&利用INTO TABLE 表名 可以將結(jié)果集放入一個(gè)永久表中
    CLOSE ALL
    SET TALK ON &&恢復(fù)命令結(jié)果的顯示
    第三步:雙擊標(biāo)題為"退出"的按鈕控件,在新打開(kāi)的窗口中添加此按鈕的CLICK事件代碼:
    THISFORM.RELEASE &&退出本表單
    第四步:以文件名form_stu保存表單,并運(yùn)行表單