第十二套
一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
1、打開數(shù)據(jù)庫PROD_M及數(shù)據(jù)庫設(shè)計(jì)器,其中的兩個(gè)表的必要的索引已經(jīng)建立,為這兩個(gè)表建立永久性聯(lián)系
2、設(shè)置CATEGORY表中"種類名稱"字段的默認(rèn)值為:"飲料"。
3、為PRODUCTS表增加字段:銷售價(jià)格N(8,2)。
4、如果所有商品的銷售價(jià)格是在進(jìn)貨價(jià)格基礎(chǔ)上增加18.98%,計(jì)算所有商品的銷售價(jià)格。
本題的主要考核點(diǎn):
為已建立索引的表建立聯(lián)系、設(shè)置字段的默認(rèn)值、字段的添加、字段的替換。
解題思路:
1.建立兩個(gè)表的聯(lián)系。在父表中選中主索引,按住鼠標(biāo)拖動(dòng)至子表相應(yīng)的普通索引上,釋放鼠標(biāo),聯(lián)系即已建立。
2.在表設(shè)計(jì)器中,選中“種類名稱”字段,在“字段有效性—默認(rèn)值”中填入“飲料”,單擊確定。
3 .增加字段的方法:
打開PRODUCTS表表設(shè)計(jì)器,將光標(biāo)移動(dòng)到后的空字段格中,輸入新的字段名、字段類型及長(zhǎng)度。
4.可以使用BROWSE瀏覽表,然后在菜單“表”中選擇“替換字段”,字段為“銷售價(jià)格”,“替換為”的表達(dá)式為“Products.進(jìn)貨價(jià)格 *(1+0.1898)”,作用范圍ALL。
也可用命令REPLACE ALL 銷售價(jià)格 WITH 進(jìn)貨價(jià)格*(1+0.1898)。
二、簡(jiǎn)單應(yīng)用(2小題,每題20分,計(jì)40分)
1、在考生文件夾中有一個(gè)數(shù)據(jù)庫SDB,其中有數(shù)據(jù)庫表STUDENT、SC和COURSE表
結(jié)構(gòu)如下:
STUDENT(學(xué)號(hào),姓名,年齡,性別,院系號(hào))
SC(學(xué)號(hào),課程號(hào),成績(jī),備注)
COURSE(課程號(hào),課程名,先修課程號(hào),學(xué)分)
在考生文件夾下有一個(gè)程序DBTEST61.PRG,該程序的功能是檢索同時(shí)選修了課程號(hào)C1和C2的學(xué)生的學(xué)號(hào)。請(qǐng)修改程序中的錯(cuò)誤,并調(diào)試該程序,使之正確運(yùn)行??忌坏迷黾踊騽h減程序行。
2、在考生文件夾中有一個(gè)數(shù)據(jù)庫SDB,其中有數(shù)據(jù)庫表STUDENT、SC和COURSE。
表結(jié)構(gòu)如下:
STUDENT(學(xué)號(hào),姓名,年齡,性別,院系號(hào))
SC(學(xué)號(hào),課程號(hào),成績(jī),備注)
COURSE(課程號(hào),課程名,先修課程號(hào),學(xué)分)
在考生文件夾下設(shè)計(jì)一個(gè)表單,該表單為SDB庫中STUDENT表窗口式輸入界面,表單上還有一個(gè)名為cmdCLOSE的按鈕,標(biāo)題名為"關(guān)閉",點(diǎn)擊該按鈕,使用ThisForm.release退出表單。后將表單存放在考生文件夾中,表單文件名是S_FORM。
提示:在設(shè)計(jì)表單時(shí),打開SDB數(shù)據(jù)庫,將STUDENT表拖入到表單中就實(shí)現(xiàn)了STUDENT表的窗口式輸入界面,不需要其他設(shè)置或修改。
第1題,本題是一個(gè)程序修改題。題中的第一個(gè)錯(cuò)誤是"WHERE 課程號(hào) = 'c1' AND 學(xué)號(hào) = ;",此處應(yīng)用的是嵌套查詢,正確的格式是WHERE 字段 IN (條件),所以應(yīng)把"="改為" in";第二個(gè)錯(cuò)誤"SELECT * FROM SC";題面要求檢索的是學(xué)號(hào),而此命令檢索 了所有字段,所以應(yīng)將*改為"學(xué)號(hào)";第三個(gè)錯(cuò)誤是在"WHERE 學(xué)號(hào) = 'c2'"行,由題目可知,檢索條件應(yīng)為"課程號(hào) = 'c2'"
第2題,本題的主要考核點(diǎn)是設(shè)計(jì)表單。
可以用三種方法調(diào)用表單設(shè)計(jì)器:在項(xiàng)目管理器環(huán)境下調(diào)用;單擊"文件"菜單中的"新建",打開"新建"對(duì)話框,選擇"表單";在命令窗口輸入CREATE FORM命令。
打開表單設(shè)計(jì)器后,在表單控件工具欄上單擊"命令按鈕",在表單上放置一個(gè)按鈕。修改其屬性Name為cmdclose,Caption屬性為"關(guān)閉"。雙擊按鈕,在打開的程序窗口輸入代碼"ThisForm.release"。設(shè)計(jì)窗口式輸入界面如提示。
三、綜合應(yīng)用(1小題,計(jì)30分)
在考生文件夾下有股票管理數(shù)據(jù)庫stock_6,數(shù)據(jù)庫中有stock_mm表和stock_cs表,stock_mm的表結(jié)構(gòu)是股票代碼C(6)、買賣標(biāo)記L(.T.表示買進(jìn),.F.表示賣出),單價(jià)N(7.2)、本次數(shù)量N(6)。tock_cs的表結(jié)構(gòu)是股票代碼C(6),買入次數(shù)N(4),高價(jià)N(7.2)。stock_mm表中一只股票對(duì)應(yīng)多個(gè)記錄,stock_cs表中一只股票對(duì)應(yīng)一個(gè)記錄(stock_cs表開始時(shí)記錄個(gè)數(shù)為0)
請(qǐng)編寫并運(yùn)行符合下列要求的程序:
(1)設(shè)計(jì)一個(gè)名為stock_m菜單,菜單中有兩個(gè)菜單項(xiàng)"計(jì)算"和"退出"。
程序運(yùn)行時(shí),單擊"計(jì)算"菜單項(xiàng)應(yīng)完成的操作是計(jì)算每支股票的買入次數(shù)和 (買入時(shí)的)高價(jià)存入stock_cs表中,買賣標(biāo)記.T.(表示買進(jìn))
(注意:stock_cs表中的記錄按股票代碼從小到大的物理順序存放)。
(2)根據(jù)stock_cs表計(jì)算買入次數(shù)多的股票代碼和買入次數(shù)存儲(chǔ)到的stock_x表
中(與stock_cs表對(duì)應(yīng)字段名稱和類型一致)。
單擊"退出"菜單項(xiàng),程序終止運(yùn)行。
本題主要考核點(diǎn):
菜單的建立、結(jié)構(gòu)化查詢語言(SQL)中的聯(lián)接查詢、查詢的排序、分組查詢、臨時(shí)表的概念、查詢結(jié)果的去向等知識(shí)點(diǎn)。
本題解題思路:
第一步:利用菜單設(shè)計(jì)器定義兩個(gè)菜單項(xiàng),在菜單名稱為"計(jì)算"的菜單項(xiàng)的結(jié)果列中選擇"過程",并通過單擊"編輯"按鈕打開一個(gè)窗口來添加"計(jì)算"菜單項(xiàng)要執(zhí)行的命令。在菜單名稱為"退出"的菜單項(xiàng)的結(jié)果列中選擇"命令",并在后面的"選項(xiàng)"列中輸入以下退出菜單的命令:SET SYSMENU TO DEFAULT
第二步:在單擊"計(jì)算"菜單項(xiàng)后面的"編輯"按鈕所打開的窗口中添加如下的過程代碼:
SET TALK OFF &&在程序運(yùn)行時(shí)關(guān)閉命令提示
SET SAFETY OFF &&不出現(xiàn)文件重名的提示
OPEN DATABASE STOCK_6 &&打開數(shù)據(jù)庫文件STOCK_6
SELECT 股票代碼,COUNT(*) AS 買入次數(shù),MAX(單價(jià)) AS 高價(jià);
FROM STOCK_MM;
WHERE 買賣標(biāo)記;
GROUP BY 股票代碼;
ORDER BY 股票代碼;
INTO ARRAY AFieldsValue
&&要得到的結(jié)果集是在買入的股票中統(tǒng)計(jì)的,所以要用WHERE 進(jìn)行限制
&&由于要得到每支股票的買入次數(shù)及買入時(shí)的高價(jià),所以要用到SELECT語句的分組查詢,
&&這里要以股票代碼作為分組的依據(jù),所以要將GROUP BY 股票代碼 放在WHERE的后面
&&要以股票代碼從小到大的順序進(jìn)行排序要用到ORDER BY股票代碼;由于要得到的是買入的次數(shù)
&&買入時(shí)的高價(jià)所以這里要用到聚合函數(shù)COUNT和MAX,COUNT()函數(shù)可得到組中項(xiàng)目的數(shù)量,
&&MAX()函數(shù)可得到大值
DELETE FROM STOCK_CS
&&刪除STOCK_CS中以前的記錄
&&DELETE SQL語句來刪除表中的記錄
&& DELETE FROM [數(shù)據(jù)庫名!]表名
&&[WHERE 條件表達(dá)式11 [AND | OR 條件表達(dá)式2 ...]]
INSERT INTO STOCK_CS FROM ARRAY AfieldsValue
&&INSERT SQL語句向表中追加記錄
&&INSERT SQL語句基本樣式為:INSERT INTO 表名 (字段名1,字段名2,…)
&&VALUES (表達(dá)式1,表達(dá)式2,...)
&&另有一種可以從一個(gè)數(shù)組中數(shù)據(jù)追加到表中或從一些和字段名相同的內(nèi)存變量
&&INSERT INTO 表名 FROM ARRAY 數(shù)組名 | FROM MEMVAR
USE STOCK_CS
PACK
&&物理刪除已打刪除標(biāo)記的記錄
USE
SELECT * 1 FROM STOCK_CS ORDER BY 買入次數(shù) DESC INTO TABLE STOCK_X
&&在SELECT SQL語句中可以指定結(jié)果集返回的行數(shù) n [PERCENT],如果沒有PERCENT
&& n指定返回的行數(shù),如果指定PERCENT指定返回的百分比
&& 可以利用INTO TABLE 表名 將返回的結(jié)果集存入一個(gè)永久表中
SET SAFETY ON
SET TALK ON
第三步:以stock_m為文件名保存菜單,并生成菜單,后運(yùn)行生成的菜單。