計算機等級考試二級VFP機試試題17

字號:

第十七套
    一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
     在考生文件夾下完成如下操作:
     1. 創(chuàng)建一個新的項目"客戶管理"。
     2. 在新建立的項目"客戶管理"中創(chuàng)建數(shù)據(jù)庫"訂貨管理"。
     3. 在"訂貨管理"數(shù)據(jù)庫中建立表order_list,表結構如下:
     客戶號 字符型(6)
     訂單號 字符型(6)
     訂購日期 日期型
     總金額 浮動型(15.2)
     4. 為order_list表創(chuàng)建一個主索引,索引名和索引表達式均是"訂單號"。
    本題主要考核點:
    創(chuàng)建項目、建立數(shù)據(jù)庫、在數(shù)據(jù)庫中建立表、索引的建立
    解題思路:
    第一步:在Visual FoxPro主窗口下按組合鍵Ctrl+N,則系統(tǒng)彈出"新建"對話框,在文件類型中選擇"項目",再點擊"新建文件"按鈕;
    第二步:在彈出的"創(chuàng)建"對話框中,選定考生文件夾,在項目文件中填入"客戶管理.pjx",再點擊保存按鈕;這樣便新建了一個項目;
    第三步:在彈出的項目管理器中先選擇"數(shù)據(jù)"標簽,再選擇"數(shù)據(jù)庫",最后點擊"新建"按鈕;
    第四步:在彈出的"新建數(shù)據(jù)庫"對話框中點擊"新建文件";
    第五步:在彈出的"創(chuàng)建"對話框中,選定考生文件夾,在"數(shù)據(jù)庫名"中填入"訂貨管理.dbc",再點擊保存按鈕;這樣便完成了數(shù)據(jù)庫的添加;
    第六步:在已新建的項目客戶管理的項目管理器中先選擇"數(shù)據(jù)"標簽,再選擇"表",最后點擊"新建"按鈕;
    第七步:在彈出的"新建表"對話框中點擊"新建表",并在彈出的"創(chuàng)建"對話框中,選定考生文件夾,在"輸入表名"中填入"order_list.dbf",再點擊保存,
    第八步:在彈出的"表設計器中",按題所要求建立表的結構后,選擇"索引"標簽,在索引名列中填入"訂單號",在索引類型列中選擇"主索引",在索引表達式列中填入"訂單號",點擊"確定"按鈕,保存表結構。
    二、簡單應用(2小題,每題20分,計40分)
     在考生文件夾下完成如下簡單應用:
     1. 將order_list1表中的全部記錄追加到order_list表中,然后用SQL SELECT 語句完成查詢:按總金額降序列出所有客戶的客戶號、客戶名及其訂單號和 總金額,并將結果存儲到results表中(其中客戶號、客戶名取自customer 表,訂單號、總金額取自order_list表)
     2. 打開form1表單,并按如下要求進行修改(注意:最后保存所做的修改):
     (1) 表單中有5個隨機排列的命令按鈕,不要移動或改變"基準按鈕"位置(否則 影響成績),然后使其他命令按鈕與"基準按鈕"左部對齊;
     (2) 在這組命令按鈕的右邊添加一個表格控件,并將它的RecordSourceType屬性設置為"表",然后設置另一個相關屬性使在表格控件中顯示customer表 的記錄。
    本題主要考核點:
     SQL中的查詢SELECT查詢,聯(lián)接查詢,查詢的排序,查詢的結果的去向;以及INSERT語句,表單的建立、控件布局、向表單中添加數(shù)據(jù)環(huán)境、控件與數(shù)據(jù)源的綁定等知識
    解題思路:
    第一小題:將order_list1中的全部記錄追加到order_list中,要將一個表的所有記錄追加到另一個表中使用APPEND FROM 命令,首先打開order_list:USE ORDER_LIST,在APPEND FROM的后面是要追加到order_list的表名,這里是order_list1。查詢表中的數(shù)據(jù)要用到SELECT命令,要查詢的數(shù)據(jù)來源于 customer和order_list表,將它們置于FROM的后面,并用逗號隔開,并分別為它們指定一個別名Cu和ORD;由于是聯(lián)接查詢要指明查詢的條件,將聯(lián)接條件CU.客戶號=ORD.客戶號放在WHERE短語的后面,同時要對結果集按照總金額的降序進行排序,所以要將:總金額 DESC放在ORDER BY 短語的后面,結果集要存儲到results表中,所以要將:results放在INTO TABLE 后面。由于查詢的結果不是所有的屬性,所以需要指明結果的屬性,并且客戶號在兩個表中都存在,所以要特別指定此屬性來自那一個源表(這里用表的別名來代替)。這樣就形成了一個完整的查詢語句:
    SELECT CU.客戶號,CU.客戶名,ORD.訂單號,ORD.總金額 ;
    FROM CUSTOMER CU,ORDER_LIST ORD ;
    WHERE CU.客戶號=ORD.客戶號 ;
    ORDER BY 總金額 DESC ;
    INTO TABLE RESULTS
    第二題:打開考生文件夾下FROM1窗體,拖動鼠標選中5個隨機放置的按鈕和"基準按鈕"控件,點擊"布局" 工具欄中的"左邊對齊",便完成了所有按鈕的左對齊。在表單上放置一表格控件,為表單"數(shù)據(jù)環(huán)境"設置為customer表,并設置表格控件的 RecordSourceType屬性設置為"表",RecordSource屬性設置為"customer",這樣表格控件便可以顯示表 customer的內容。
    三、綜合應用(1小題,計30分)
     當order_detail表中的單價修改后,應該根據(jù)該表的"單價"和"數(shù)量"字段修改 order_list表的總金額字段,現(xiàn)在編寫程序實現(xiàn)此功能,具體要求和注意事項
     如下:
     (1) 根據(jù)order_detail表中的記錄重新計算order_list表的總金額字段的值;
     (2) 一條order_list記錄可以對應幾條order_detail記錄;
     (3) 在編程前應保證在基礎操作中正確地建立了order_list表,在簡單應用中為 該表追加了記錄(注意只能追加一次);
     (4) 最后將order_list表中的記錄按總金額降序排序存儲到od_new表中(表結構 與order_list表完全相同);
     (5) 將程序保存為prog1.prg文件。
    本題主要考核點:
    程序的建立方法、程序中循環(huán)結構的使用、SQL查詢語句的使用、記錄的修改方法等知識點
    本題解題思路:
    第一步:打開項目客戶管理,在項目管理器中先選擇"代碼"標簽,再選擇"程序",最后點擊"新建"按鈕。
    第二步:在彈出的窗中中輸入以下代碼:
    SET TALK OFF &&在程序運行模式下關閉命令結果的顯示
    SET SAFETY ON &&關閉文件重名時的提示
    CLOSE ALL
    SELECT 訂單號,SUM(數(shù)量*單價) AS 總金額;
    FROM ORDER_DETAIL;
    GROUP BY 訂單號;
    INTO CURSOR CurTable
    &&這里首先得到每一個訂單的總金額,由于每一個訂單對應有多項記錄,
    &&所以我們要得到每一個訂單的總金額需要用到SUM函數(shù),SUM(數(shù)量*單價) AS 總金額
    &&放在SELECT的后面,并和訂單號用逗號隔開;要以訂單號做為分組的依據(jù),將訂單號放在
    &&ORDER BY 的后面;將結果集放入一個臨時表CurTable中用INTO CURSOR CurTable
    OPEN DATABASE 訂貨管理
    &&打開數(shù)據(jù)庫文件
    SELECT 2
    &&選擇工作區(qū)
    USE ORDER_LIST
    &&在新的工作區(qū)中打開表ORDER_LIST
    DO WHILE NOT EOF() &&遍歷ORDER_LIST中的每一條記錄
    SELECT CurTable.總金額 FROM CurTable;
    WHERE CurTable.訂單號=order_list.訂單號;
    INTO ARRAY AFieldsValue
    &&以ORDER_LIST的當前記錄的訂單號做為查詢的條件在臨時表中得到此訂單的總金額
    &&由于在臨時表中和當前工作區(qū)表中都存在訂單號字段,所以要在訂單號字段前加上表名
    &&所以查詢的條件CurTable.訂單號=order_list.訂單號放在WHERE子句的后面;查詢的結
    &&果放入數(shù)據(jù)變量AFieldsValue中,INTO ARRAY AFieldsValue
    REPLACE 總金額 WITH AFieldsValue
    &&利用得到的新的總金額來代替當前記錄的總金額字段
    SKIP
    ENDDO
    CLOSE ALL
    SELECT * FROM ORDER_LIST;
    ORDER BY 總金額 DESC;
    INTO TABLE OD_NEW
    &&以總金額的降序,所以要將總金額 DESC放在ORDER BY 子句的后面;將結果集
    &&放入一個永久表OD_NEW,OD_NEW 放在子句INTO TABLE的后面。
    SET SAFETY ON
    SET TALK ON
    第三步:單擊"保存"工具欄按鈕,以文件名prog1.prg保存程序文件
    第四步:在項目管理器中"代碼"選項卡的程序中選擇"prog1",點擊"運行"按鈕,執(zhí)行程序。