計算機(jī)等級考試二級VFP機(jī)試試題9

字號:

第九套
    一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
     1、在考生文件夾下打開數(shù)據(jù)庫CUST_M,為CUST表建立主索引,索引名為客戶編號,
     索引表達(dá)式為客戶編號。
     2、CUST表和ORDER1表中必要的索引已經(jīng)建立,為兩表建立永久性聯(lián)系。
     3、為CUST表增為字段:客戶等級C(2),字段值允許為空。
     4、為ORDER1表"金額"字段增加有效性規(guī)則:金額大于零,否則提示:金額必須
     大于零。
    本題的主要考核點:
     主索引的建立、為已建立索引的表建立聯(lián)系、字段的添加、字段有效性規(guī)則的建立。
    解題思路:
    1.在表設(shè)計器中的索引頁面,建立索引名索引表達(dá)式都為客戶編號的主索引。
    2.建立兩個表的聯(lián)系。在父表中選中主索引,按住鼠標(biāo)拖動至子表相應(yīng)的普通索引上,釋放鼠標(biāo),聯(lián)系即已建立。
    3.增加字段的方法:
    打開CUST表的表設(shè)計器,將光標(biāo)移動到后的空字段格中,輸入新的字段名、字段類型及長度。字段值允許為空,則選中"NULL"項。
    4.建立有效性規(guī)則比較簡單直接的方法是在表設(shè)計器中建立。在表設(shè)計器中首先選中要定義有效性規(guī)則的字段"金融",在"規(guī)則"一欄中輸入"金額>0"(或用表達(dá)式生成器生成),在"信息"欄中輸入:"金額必須大于零"。
    二、簡單應(yīng)用(2小題,每題20分,計40分)
     1、在考生文件夾中有一個數(shù)據(jù)庫SDB,其中有數(shù)據(jù)庫表STUDENT2,SC和
     COURSE2。三個表如下所示:
     STUDENT2(學(xué)號,姓名,年齡,性別,院系編號)
     SC(學(xué)號,課程號,成績,備注)
     COURSE2(課程號,課程名,先修課號,學(xué)分)
     在考生文件夾下有一個程序dbtest3.prg,該程序的功能是定義一個視圖VS1,
     檢索選課門數(shù)是3門以上的每個學(xué)生的學(xué)號、姓名、平均成績、低分、選
     課門數(shù)和院系編號,并按平均成績降序排序。請修改程序中的錯誤,并調(diào)試
     該程序,使之正確運行。不得增加或刪減程序行。
     2、在考生文件夾下有一個數(shù)據(jù)庫CUST_M,數(shù)據(jù)庫中有CUST和ORDER1兩個表。請
     使用菜單設(shè)計器制作一個名為 MY_MENU的菜單,菜單只有"瀏覽"一個菜單
     項。
     瀏覽菜單項中有"客戶"、"訂單"和"退出"三個子菜單:
     客戶子菜單使用SELECT * FROM CUST命令對CUST表查詢;
     訂單子菜單使用SELECT * FROM ORDER1命令對ORDER1表查詢;
     退出子菜單使用SET SYSMENU TO DEFAULT命令返回系統(tǒng)菜單。
    第1題,本題是一個程序修改題。第一個錯誤是在"USE DATABASE SDB"行,打開數(shù)據(jù)庫的命令錯誤,應(yīng)該是"OPEN DATABASE SDB"。第二個錯誤是在"FROM STUDENT2, COURSE2",按題目所給程序下一行"WHERE STUDENT2.學(xué)號 = SC.學(xué)號",可知此處應(yīng)在STUDENT2和SC表中選擇,應(yīng)把COURSE2改為SC。第三個錯誤在"ORDER BY 成績"行中,因要求按平均成績降序排序,所以應(yīng)改為"ORDER BY 平均成績 DESC"。
    第2題,本題的主要考核點是建立菜單。新建菜單可按下列步驟:選擇"文件"菜單中的"新建"命令,在"新建"對話框中選擇"菜單",單擊"新建文件"按鈕。在"新建菜單"對話框中選擇"菜單"按鈕,調(diào)出"菜單設(shè)計器"。也可用CREATE MENU命令直接調(diào)出菜單設(shè)計器。在菜單名稱中填入"瀏覽",結(jié)果為子菜單,單擊編輯;在子菜單的菜單名稱中分別輸入"客戶"、"訂單"和"退出",結(jié)果都為命令。分別在對應(yīng)的命令欄內(nèi)輸入相應(yīng)的命令,保存為MY_MENU。
    三、綜合應(yīng)用(1小題,計30分)
     在考生文件夾下有學(xué)生管理數(shù)據(jù)庫stu_3,數(shù)據(jù)庫中有score_fs表,其表結(jié)構(gòu)是
     學(xué)號C(10)、物理I、高數(shù)I、英語I和平均分 N(6.2)。成績?nèi)绻?1表示,說明
     學(xué)生沒有選學(xué)該門課程。其中 ,該表前四項已有數(shù)據(jù)。
     請編寫并運行符合下列要求的程序:
     設(shè)計一個名為form_my的表單,表單中有兩個命令按鈕,按鈕的名稱分別為
     cmdYes和CmdNo,標(biāo)題分別為"統(tǒng)計"和"關(guān)閉"。
     程序運行時,單擊"統(tǒng)計"按鈕應(yīng)完成下列操作:
     (1)計算每一個學(xué)生的平均分存入平均分字段。注意:分?jǐn)?shù)為-1不記入平均分,
     例如一個學(xué)生的三門成績存儲的是90,-1,70,平均分應(yīng)是80。
     (2)根據(jù)上面的計算結(jié)果,生成一個新的表PJF ,該表只包括學(xué)號和平均分兩
     項,并且按平均分的降序排序,如果平均分相等,則按學(xué)號升序排序。
    單擊"關(guān)閉"按鈕,程序終止運行。
    本題主要考核點:
    表單的建立、程序設(shè)計中循環(huán)結(jié)構(gòu)、條件結(jié)構(gòu)的應(yīng)用、SELECT語句的應(yīng)用等知識點
    解題思路:
    第一步:利用表單設(shè)計器建立所要求的表單,將在表單上添加兩個按鈕控件。分別設(shè)置兩個按鈕控件的標(biāo)題和名字屬性。
    第二步:雙擊標(biāo)題為"統(tǒng)計"的按鈕控件,在新打開的窗口中添加此按鈕的CLICK事件代碼:
    SET TALK OFF &&在程序中要關(guān)閉命令結(jié)果的顯示
    SET SAFETY OFF &&關(guān)閉當(dāng)生成的文件出現(xiàn)重名時的提示
    OPEN DATABASE STU_3 &&打開數(shù)據(jù)庫文件STU_3 (也可以直接將數(shù)據(jù)庫文件加入到表單的數(shù)據(jù)環(huán)境之中)
    USE SCORE_FS
    GO
    DO WHILE NOT EOF() &&遍歷每一條記錄
     STORE 0 TO RS,PJF &&RS表示參加了幾個科目的考試,PJF表示參加考試科目的成績之和
     IF 物理<>-1 THEN &&判斷是否參加了物理科的考試
     RS=RS+1 &&如果參加了物理科的考試,則考試科目加1
     PJF=PJF+物理 &&如果參加了物理科的考試,成績加上物理科的成績
    ENDIF
    IF 高數(shù)<>-1 THEN
     RS=RS+1
     PJF=PJF+高數(shù)
    ENDIF
    IF 英語<>-1 THEN
     RS=RS+1
     PJF=PJF+英語
    ENDIF
    IF RS<>0 THEN &&在有參加科目考試的情況下計算出平均成績
     REPLACE 平均分 WITH PJF/RS && 計算出平均成績并寫入當(dāng)前記錄的"平均分"字段
    ENDIF
    SKIP
     ENDDO
    SELECT學(xué)號,平均分 FROM SCORE_FS ORDER BY 平均分 DESC,學(xué)號 INTO TABLE PJF
    &&利用SELECT語句中的ORDER BY 子句進(jìn)行查詢的排序,ORDER BY 子句默認(rèn)的排序是升序,如果要指
    &&寫為降序需用DESC,如果有多個排序的依據(jù),則按排序依據(jù)的優(yōu)先順序依次放在ORDER BY 子句的后面,
    &&相互之間用,隔開;可以利用INTO TABLE子句將查詢的結(jié)果生成一個永久表,也可以生成一個臨時表
    &&格式為:INTO CURSOR 臨時表名
    CLOSE ALL &&關(guān)閉打開的數(shù)據(jù)庫等
    SET SAFETY ON &&恢復(fù)原來的設(shè)置
    SET TALK ON
    第三步:用同樣的方法為標(biāo)題為"退出"的按鈕控件添加如下的CLICK的事件代碼:
    thisForm.release &&退出此表單。