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

字號(hào):

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