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

字號(hào):

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

    第二十二套
    一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
    在考生文件夾下完成如下操作:
    1. 創(chuàng)建一個(gè)新的項(xiàng)目sdb_p,并在該項(xiàng)目中創(chuàng)建數(shù)據(jù)庫sdb。
    2. 將考生文件夾下的自由表student和sc添加到sdb數(shù)據(jù)庫中。
    3. 在sdb數(shù)據(jù)庫中建立表course,表結(jié)構(gòu)如下:
    字段名 類型 寬度
    課程號(hào) 字符型 2
    課程名 字符型 20
    學(xué)時(shí) 數(shù)值型 2
    隨后向表中輸入6條記錄,記錄內(nèi)容如下(注意大小寫):
    課程號(hào) 課程名 學(xué)時(shí)
    c1 C++ 60
    c2 Visual FoxPro 80
    c3 數(shù)據(jù)結(jié)構(gòu) 50
    c4 JAVA 40
    c5 Visual BASIC 40
    c6 OS 60
    4. 為course表創(chuàng)建一個(gè)主索引,索引名為cno、索引表達(dá)式為"課程號(hào)"。
    本題主要考核點(diǎn):
    創(chuàng)建項(xiàng)目、建立數(shù)據(jù)庫、自由表添加到數(shù)據(jù)庫中、在數(shù)據(jù)庫中建立表、索引的建立
    解題思路:
    第一步:在Visual FoxPro主窗口下按組合鍵Ctrl+N,則系統(tǒng)彈出"新建"對話框,在文件類型中選擇"項(xiàng)目",再點(diǎn)擊"新建文件"按鈕;
    第二步:在彈出的"創(chuàng)建"對話框中,選定考生文件夾,在項(xiàng)目文件中填入"sdb_p.pjx",再點(diǎn)擊保存按鈕;這樣便新建了一個(gè)項(xiàng)目;
    第三步:在彈出的項(xiàng)目管理器中先選擇"數(shù)據(jù)"標(biāo)簽,再選擇"數(shù)據(jù)庫",后點(diǎn)擊"新建"按鈕;
    第四步:在彈出的"新建數(shù)據(jù)庫"對話框中點(diǎn)擊"新建文件";
    第五步:在彈出的"創(chuàng)建"對話框中,選定考生文件夾,在"數(shù)據(jù)庫名"中填入"sdb.dbc",再點(diǎn)擊保存按鈕;這樣便完成了數(shù)據(jù)庫的添加。
    第六步:在已新建的項(xiàng)目sdb_p的項(xiàng)目管理器中先選擇"數(shù)據(jù)"標(biāo)簽,再選擇"表",后點(diǎn)擊"添加(A)",在彈出的"打開"對話框中選定考生文件夾下的表STUDENT,再點(diǎn)擊保存,這樣自由表就添加到了數(shù)據(jù)庫中。用同樣的方法將表SC也添加到數(shù)據(jù)庫中,在索引類型列中選擇"主索引",在索引表達(dá)式列中填入"課程號(hào)",點(diǎn)擊"確定"按鈕,保存表結(jié)構(gòu)。
    第十步:向表course.dbf輸入內(nèi)容,并保存。
    二、簡單應(yīng)用(2小題,每題20分,計(jì)40分)
    在考生文件夾下完成如下簡單應(yīng)用:
    1. 根據(jù)sdb數(shù)據(jù)庫中的表用SQL SELECT命令查詢學(xué)生的學(xué)號(hào)、姓名、課程名和成績,結(jié)果按 "課程名"升序排序,"課程名"相同時(shí)按"成績"降序排序,并將查詢結(jié)果存儲(chǔ)到sclist表中。
    2. 使用表單向?qū)нx擇student表生成一個(gè)名為form1的表單。要求選擇student 表中所有字段,表單樣式為"陰影式";按鈕類型為"圖片按鈕";排序字段選擇 學(xué)號(hào)"(升序);表單標(biāo)題為"學(xué)生基本數(shù)據(jù)輸入維護(hù)"。
    本題主要考核點(diǎn):
    SQL語言中的查詢、聯(lián)接查詢、查詢的排序、查詢的結(jié)果去向、利用表單向?qū)Ы⒈韱蔚戎R(shí)點(diǎn)。
    解題思路:
    第一小題:本題要用一個(gè)聯(lián)接查詢來實(shí)現(xiàn)。要得到的信息存放在三個(gè)不同的表中,所以要通過聯(lián)接來得到所需要的信息。聯(lián)接的條件:STUDENT.學(xué)號(hào)=SC.學(xué)號(hào) AND SC.課程號(hào)=COURSE.課程號(hào)放在WHERE子句的后面;結(jié)果集的排序需要ORDER BY子句,排序默認(rèn)是升序如果要以降序排序需要DESC;結(jié)果要放入一個(gè)永久表中要用到INTO TABLE 子句,完整的查詢語句:
    SELECT STUDENT.學(xué)號(hào),姓名,課程名,成績;
    FROM STUDENT,SC,COURSE;
    WHERE STUDENT.學(xué)號(hào)=SC.學(xué)號(hào) AND SC.課程號(hào)=COURSE.課程號(hào);
    ORDER BY 課程名,成績 DESC;
    INTO TABLE SCLIST
    第二小題:
    第一步:打開在基本操作題中所建立的項(xiàng)目"sdb_p.pjx"
    第二步:在項(xiàng)目sdb_p的項(xiàng)目管理器中,先選擇"文檔"標(biāo)簽,再選擇"表單",后點(diǎn)擊"新建(N)"按鈕。
    第三步:在彈出的"新建表單"對話框中點(diǎn)擊"表單向?qū)?W)",并在彈出的"向?qū)нx取"對話框中,在"選擇要使用的向?qū)?中選擇"表單向?qū)?,點(diǎn)擊"確定"按鈕.
    第四步:在"表單向?qū)?步驟一的字段選取中,選定student表,并將其全部字段放入"選定字段"中,點(diǎn)擊下一步;在步驟二的選擇表單樣式中的樣式類型中選擇"陰影式",在"按鈕類型"中選擇"圖片按鈕",點(diǎn)擊下一步;在步驟三排序次序中選擇按學(xué)號(hào)的升序排序,點(diǎn)擊下一步;在步驟四完成中在表單標(biāo)題文本框中輸入:學(xué)生基本輸入數(shù)據(jù)維護(hù),點(diǎn)擊"完成"按鈕。在彈出的"另存為"對話框,從對話框中選定考生文件夾,并輸入form1.scx,點(diǎn)擊"保存"按鈕即可。
    三、綜合應(yīng)用(1小題,計(jì)30分)
    1.打開基本操作中建立的數(shù)據(jù)庫sdb,使用SQL的CREATE VIEW命令定義一個(gè)名稱為SVIEW的視圖,該視圖的SELECT語句完成查詢:選課數(shù)是3門以上(不包括3門)的每個(gè)學(xué)生的學(xué)號(hào)、姓名、平均成績、低分和選課數(shù),并按"平均成績" 降序排序。后將定義視圖的命令代碼存放到命令文件T1.PRG中并執(zhí)行該文件。接著利用報(bào)表向?qū)е谱饕粋€(gè)報(bào)表。要求選擇SVIEW視圖中所有字段;記錄不分組;報(bào)表樣式為"隨意式";排序字段為 "學(xué)號(hào)"(升序);報(bào)表標(biāo)題為"學(xué)生成績統(tǒng)計(jì)一覽表";報(bào)表文件名為pstudent。
    2.設(shè)計(jì)一個(gè)名稱為form2的表單,表單上有"瀏覽"(名稱為Command1)和"打印"(Command2)兩個(gè)命令按鈕。鼠標(biāo)單擊"瀏覽"命令按鈕時(shí),先打開數(shù)據(jù)庫sdb,然后執(zhí)行SELECT語句查詢前面定義的 SVIEW視圖中的記錄(兩條命令不可以有多余命令),鼠標(biāo)單擊"打印"命令按鈕時(shí),調(diào)用報(bào)表文件pstuden瀏覽報(bào)表的內(nèi)容(一條命令,不可以有多余命令)。
    本題主要考核點(diǎn):
    視圖的建立方法、利用報(bào)表向?qū)Ы?bào)表的方法、表單的建立方法等知識(shí)點(diǎn)
    解題思路:
    第一小題:
    先打開數(shù)據(jù)庫SDB,打開考生文件夾下新建的項(xiàng)目"sdb_p.pjx",在命令窗口中輸入下列命令來建立sview視圖:
    CREATE VIEW SVIEW AS;
    SELECT SC.學(xué)號(hào),姓名,AVG(成績) AS 平均成績,MIN(成績) AS 低分,COUNT(課程號(hào)) AS 選課數(shù);
    FROM SC,STUDENT;
    WHERE SC.學(xué)號(hào)=STUDENT.學(xué)號(hào);
    GROUP BY STUDENT.學(xué)號(hào);
    HAVING COUNT(課程號(hào))>3;
    ORDER BY 平均成績 DESC
    下面來建立T1.prg程序,在項(xiàng)目sdb_p的項(xiàng)目管理器中,選擇"代碼"標(biāo)簽,再選擇"程序",點(diǎn)擊"新建(N)"按鈕,在打開的代碼編輯窗口中輸入sview視圖的查詢代碼,即:SELECT SC.學(xué)號(hào),姓名,AVG(成績) AS 平均成績,MIN(成績) AS 低分,COUNT(課程號(hào)) AS 選課數(shù);
    FROM SC,STUDENT;
    WHERE SC.學(xué)號(hào)=STUDENT.學(xué)號(hào);
    GROUP BY STUDENT.學(xué)號(hào);
    HAVING COUNT(課程號(hào))>3;
    ORDER BY 平均成績 DESC
    選擇工具欄的保存按鈕,以文件名T1.prg保存在考生文件夾下。
    利用表單向?qū)斫⒈韱危涸陧?xiàng)目sdb_p的項(xiàng)目管理器中,選擇"文檔"標(biāo)簽,再選擇"報(bào)表",點(diǎn)擊"新建(N)"按鈕,在彈出的"新建報(bào)表"對話框中選擇"報(bào)表向?qū)?,在彈出的"向?qū)нx取"對話框中選擇"報(bào)表向?qū)?,點(diǎn)擊"確定"按鈕,彈出"報(bào)表向?qū)?,在"報(bào)表向?qū)?步驟一字段選取中選擇sview視圖中的所有字段,然后點(diǎn)擊"下一步";在"報(bào)表向?qū)?的步驟二分組記錄中直接點(diǎn)擊"下一步";在步驟三選擇報(bào)表樣式中,選擇報(bào)表樣式類型為"隨意式",然后點(diǎn)擊"下一步";在步驟五排序記錄中選擇按學(xué)號(hào)的升序,然后點(diǎn)擊"下一步";在步驟六完成中輸入報(bào)表的標(biāo)題:學(xué)生成績統(tǒng)計(jì)一覽表,然后點(diǎn)擊"完成",在彈出的"另存為"對話框中的"保存報(bào)表為:"文本框中輸入:pstudent.frx報(bào)表名,保存在考生文件夾下即可。
    第二小題:在項(xiàng)目sdb_p的項(xiàng)目管理器中,選擇"文檔"標(biāo)簽,再選擇"表單",點(diǎn)擊"新建(N)"在彈出的"新建表單"對話框中點(diǎn)擊"新建表單",系統(tǒng)打開表單設(shè)計(jì)器;點(diǎn)擊工具欄按鈕"表單控件工具欄",在彈出的"表單控件"中,選中"命令按鈕",在表單設(shè)計(jì)器中拖動(dòng)鼠標(biāo),這樣在表單上得到一個(gè)"命令按鈕"對象command1,設(shè)置它的caption屬性為"瀏覽",
    雙擊command1在打開的代碼編輯器窗口中輸入以下代碼:
    open data sdb
    select * from sview
    作為command1的CLICK的事件代碼。
    用同樣的方法,在表單上放置command2對象,它的Click的事件代碼為:
    REPORT FORM PSTUDENT.FRX PREVIEW
    以文件名form2.scx保存表單,并且保存在考生文件夾下。