第二十一套
一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
在考生文件夾下完成如下操作:
1. 打開(kāi)"訂貨管理"數(shù)據(jù)庫(kù),并將表order_detail添加到該數(shù)據(jù)庫(kù)中。
2. 為表order_detail的"單價(jià)"字段定義默認(rèn)值為NULL。
3. 為表order_detail的"單價(jià)"字段定義約束規(guī)則:?jiǎn)蝺r(jià) > 0 ,違背規(guī)則時(shí)的提
示信息是:"單價(jià)必須大于零"。
4. 關(guān)閉"訂貨管理"數(shù)據(jù)庫(kù),然后建立自由表customer,表結(jié)構(gòu)如下:
客戶(hù)號(hào) 字符型(6)
客戶(hù)名 字符型(16)
地址 字符型(20)
電話(huà) 字符型(14)
本題主要考核點(diǎn):
將一個(gè)自由表添加到數(shù)據(jù)庫(kù)中、為字段建立約束規(guī)則、設(shè)置字段的默認(rèn)值、建立表的結(jié)構(gòu)等知識(shí)點(diǎn)
本題解題思路:
第一步:打開(kāi)考生文件夾下的"訂貨管理"數(shù)據(jù)庫(kù)
第二步:打開(kāi)數(shù)據(jù)庫(kù)菜單選擇"添加表(A)",在彈出的"打開(kāi)"對(duì)話(huà)框中,選定考生文件夾下的order_detail表,再點(diǎn)擊"確定"即可,這樣表order_detail就添加到了"訂貨管理"數(shù)據(jù)庫(kù)中
第三步:在數(shù)據(jù)庫(kù)設(shè)計(jì)器中選中"order_detail"表,選擇數(shù)據(jù)庫(kù)菜單下的"修改(V)",彈出表設(shè)計(jì)器,在表設(shè)計(jì)器中點(diǎn)擊"單價(jià)"所在的行,單擊Null列上的按鈕,確認(rèn)按鈕上出現(xiàn)對(duì)號(hào),在字段有效性的規(guī)則字段中輸入:單價(jià)>0,在信息框中輸入: "單價(jià)必須大于0",在默認(rèn)值框中輸入:.NULL.。確定即可
第四步:關(guān)閉數(shù)據(jù)庫(kù),在Visual FoxPro主窗口中按下組合鍵Ctrl+N。系統(tǒng)彈出"新建"對(duì)話(huà)框,在"文件類(lèi)型"中選擇表,在彈出的對(duì)話(huà)框中選擇"新建表",并在彈出"創(chuàng)建"對(duì)話(huà)框中選定考生文件夾,在輸入表名中填入"customer",再點(diǎn)擊保存。
第四步:在彈出的表設(shè)計(jì)器中按題面的要求依次輸入各個(gè)字段的定義,點(diǎn)擊"確定"按鈕,保存表結(jié)構(gòu)。
二、簡(jiǎn)單應(yīng)用(2小題,每題20分,計(jì)40分)
在考生文件夾下完成如下簡(jiǎn)單應(yīng)用:
1. 列出總金額大于所有訂購(gòu)單總金額平均值的訂購(gòu)單(order_list)清單(按
客戶(hù)號(hào)升序排列),并將結(jié)果存儲(chǔ)到results表中(表結(jié)構(gòu)與order_list表
結(jié)構(gòu)相同)。
2. 利用Visual Foxpro的"快速報(bào)表"功能建立一個(gè)滿(mǎn)足如下要求的簡(jiǎn)單報(bào)表:
(1) 報(bào)表的內(nèi)容是order_detail表的記錄(全部記錄,橫向);
(2) 增加"標(biāo)題帶區(qū)",然后在該帶區(qū)中放置一個(gè)標(biāo)簽控件,該標(biāo)簽控件顯示報(bào)
表的標(biāo)題"器件清單";
(3) 將頁(yè)注腳區(qū)默認(rèn)顯示的當(dāng)前日期改為顯示當(dāng)前的時(shí)間;
(4) 最后將建立的報(bào)表保存為report1.frx。
本題主要考核點(diǎn):
SQL中的查詢(xún)SELECT查詢(xún)、聯(lián)接查詢(xún)、查詢(xún)的排序、查詢(xún)的結(jié)果的去向等;報(bào)表的建立方法等知識(shí)點(diǎn).
解題思路:
第一小題:為了能得到所有總金額大于平均總金額的訂購(gòu)單信息,應(yīng)該首先得到總金額的平均值,利用:SELECT AVG(總金額) FROM ORDER_LIST INTO ARRAY AFieldsValue,并將總金額的平均值放到一個(gè)數(shù)組變量之中AFieldsValue;下一步就可以以總金額>AFieldsValue為條件得到總金額大于平均總金額的訂購(gòu)單信息,將這一條件放在WHERE子句的后面,查詢(xún)結(jié)果的排序要用到ORDER BY子句,ORDER BY 客戶(hù)號(hào);查詢(xún)結(jié)果要放入一個(gè)永久表中要用到INTO TABLE子句,結(jié)果保存到RESULTS表中所以要用INTO TABLE RESULTS.本題由兩條SQL語(yǔ)句組成:
SELECT AVG(總金額) FROM ORDER_LIST INTO ARRAY AFieldsValue
SELECT * FROM ORDER_LIST WHERE 總金額>AFieldsValue;
ORDER BY 客戶(hù)號(hào);
INTO TABLE RESULTS
第二小題:
第一步:在Visual FoxPro主窗口按下組合鍵Ctrl+N,系統(tǒng)彈出"新建"對(duì)話(huà)框,在"文件類(lèi)型"中選擇"報(bào)表",再點(diǎn)擊新建文件按鈕,系統(tǒng)彈出報(bào)表設(shè)計(jì)器
第二步:?jiǎn)螕糁鞔翱?報(bào)表"菜單下的"快速報(bào)表(O)",系統(tǒng)彈出"打開(kāi)"對(duì)話(huà)框,選擇考生文件夾下的 order_detail.dbf表,單擊"確定",系統(tǒng)彈出"快速報(bào)表"對(duì)話(huà)框,單擊"確定"按鈕后便生成了一個(gè)報(bào)表,將報(bào)表文件以文件名 report1.frx保存在考生文件夾下。
第三步:選擇主菜單"報(bào)表"下的"標(biāo)題/總結(jié)(T)",彈出"標(biāo)題/總結(jié)"對(duì)話(huà)框,在"報(bào)表標(biāo)題"類(lèi)型中選擇"標(biāo)題帶區(qū) ",單擊"確定"按鈕,這樣就在報(bào)表中加入了一個(gè)"標(biāo)題帶區(qū)",打開(kāi)"報(bào)表控件工具欄",在打開(kāi)的"報(bào)表控件"中選擇"標(biāo)簽"控件,在標(biāo)題帶區(qū)點(diǎn)擊鼠標(biāo),輸入"器件清單"
第四步:雙擊"頁(yè)注腳"中的顯示當(dāng)前日期的域控件,打開(kāi)"報(bào)表表達(dá)式",在"表達(dá)式"文本框中將原來(lái)的DATE()用TIME()來(lái)代替。點(diǎn)擊"確定"
第五步:以文件名report1.frx將報(bào)表文件保存在考生文件夾下。
三、綜合應(yīng)用(1小題,計(jì)30分)
首先將order_detail表全部?jī)?nèi)容復(fù)制到od_bak表,然后對(duì)od_bak表編寫(xiě)完成如下
功能的程序:
1. 把"訂單號(hào)"尾部字母相同并且訂貨相同 ("器件號(hào)"相同)的訂單合并為一張訂
單,新的"訂單號(hào)"就取原來(lái)的尾部字母,"單價(jià)"取,"數(shù)量" 取合計(jì);
2. 結(jié)果先按新的"訂單號(hào)"升序排序,再按"器件號(hào)"升序排序;
3. 最終記錄的處理結(jié)果保存在od_new表中;
4. 最后將程序保存為prog1.prg,并執(zhí)行該程序。
本題主要考核點(diǎn):
程序的建立方法、程序中循環(huán)結(jié)構(gòu)的使用、SQL查詢(xún)語(yǔ)句的使用、記錄的修改方法;報(bào)表的建立方法等知識(shí)點(diǎn)
本題解題思路:
第一步:在VisualFoxPro主窗口下按組合鍵Ctrl+N,系統(tǒng)彈出"新建"對(duì)話(huà)框,在"文件類(lèi)型"中選擇"程序",再點(diǎn)擊"新建文件"按鈕,則系統(tǒng)彈出程序編輯窗口;
第二步:在彈出的窗中中輸入以下代碼:
SET TALK OFF
SET SAFETY OFF
sele * from order_detail into table od_bak
&&復(fù)制一個(gè)表用來(lái)存放結(jié)果
USE OD_BAK
COPY STRUCTURE TO OD_NEW
&&首先得到所有的新定單號(hào)和器件號(hào):
SELECT RIGHT(訂單號(hào),1) AS 新訂單號(hào),器件名,器件號(hào),;
RIGHT(訂單號(hào),1)+器件號(hào) AS NEWNUM;
FROM OD_BAK;
GROUP BY NEWNUM;
ORDER BY 新訂單號(hào),器件號(hào);
INTO CURSOR CurTable
DO WHILE NOT EOF()
&&得到單價(jià)和數(shù)量
SELECT MIN(單價(jià)) AS ,SUM(數(shù)量) AS 數(shù)量合計(jì);
FROM OD_BAK;
WHERE RIGHT(訂單號(hào),1)=CurTable.新訂單號(hào) AND 器件號(hào)=CurTable.器件號(hào);
INTO ARRAY AFieldsValue
INSERT INTO OD_NEW VALUES;
(CurTable.新訂單號(hào),CurTable.器件號(hào),CurTable.器件名,AFieldsValue(1,1),AFieldsValue(1,2))
SKIP
ENDDO
CLOSE ALL
SET TALK ON
SET SAFETY ON
第三步:?jiǎn)螕?保存"工具欄按鈕,以文件名prog1.prg保存程序文件在考生文件夾下,并運(yùn)行程序。
一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
在考生文件夾下完成如下操作:
1. 打開(kāi)"訂貨管理"數(shù)據(jù)庫(kù),并將表order_detail添加到該數(shù)據(jù)庫(kù)中。
2. 為表order_detail的"單價(jià)"字段定義默認(rèn)值為NULL。
3. 為表order_detail的"單價(jià)"字段定義約束規(guī)則:?jiǎn)蝺r(jià) > 0 ,違背規(guī)則時(shí)的提
示信息是:"單價(jià)必須大于零"。
4. 關(guān)閉"訂貨管理"數(shù)據(jù)庫(kù),然后建立自由表customer,表結(jié)構(gòu)如下:
客戶(hù)號(hào) 字符型(6)
客戶(hù)名 字符型(16)
地址 字符型(20)
電話(huà) 字符型(14)
本題主要考核點(diǎn):
將一個(gè)自由表添加到數(shù)據(jù)庫(kù)中、為字段建立約束規(guī)則、設(shè)置字段的默認(rèn)值、建立表的結(jié)構(gòu)等知識(shí)點(diǎn)
本題解題思路:
第一步:打開(kāi)考生文件夾下的"訂貨管理"數(shù)據(jù)庫(kù)
第二步:打開(kāi)數(shù)據(jù)庫(kù)菜單選擇"添加表(A)",在彈出的"打開(kāi)"對(duì)話(huà)框中,選定考生文件夾下的order_detail表,再點(diǎn)擊"確定"即可,這樣表order_detail就添加到了"訂貨管理"數(shù)據(jù)庫(kù)中
第三步:在數(shù)據(jù)庫(kù)設(shè)計(jì)器中選中"order_detail"表,選擇數(shù)據(jù)庫(kù)菜單下的"修改(V)",彈出表設(shè)計(jì)器,在表設(shè)計(jì)器中點(diǎn)擊"單價(jià)"所在的行,單擊Null列上的按鈕,確認(rèn)按鈕上出現(xiàn)對(duì)號(hào),在字段有效性的規(guī)則字段中輸入:單價(jià)>0,在信息框中輸入: "單價(jià)必須大于0",在默認(rèn)值框中輸入:.NULL.。確定即可
第四步:關(guān)閉數(shù)據(jù)庫(kù),在Visual FoxPro主窗口中按下組合鍵Ctrl+N。系統(tǒng)彈出"新建"對(duì)話(huà)框,在"文件類(lèi)型"中選擇表,在彈出的對(duì)話(huà)框中選擇"新建表",并在彈出"創(chuàng)建"對(duì)話(huà)框中選定考生文件夾,在輸入表名中填入"customer",再點(diǎn)擊保存。
第四步:在彈出的表設(shè)計(jì)器中按題面的要求依次輸入各個(gè)字段的定義,點(diǎn)擊"確定"按鈕,保存表結(jié)構(gòu)。
二、簡(jiǎn)單應(yīng)用(2小題,每題20分,計(jì)40分)
在考生文件夾下完成如下簡(jiǎn)單應(yīng)用:
1. 列出總金額大于所有訂購(gòu)單總金額平均值的訂購(gòu)單(order_list)清單(按
客戶(hù)號(hào)升序排列),并將結(jié)果存儲(chǔ)到results表中(表結(jié)構(gòu)與order_list表
結(jié)構(gòu)相同)。
2. 利用Visual Foxpro的"快速報(bào)表"功能建立一個(gè)滿(mǎn)足如下要求的簡(jiǎn)單報(bào)表:
(1) 報(bào)表的內(nèi)容是order_detail表的記錄(全部記錄,橫向);
(2) 增加"標(biāo)題帶區(qū)",然后在該帶區(qū)中放置一個(gè)標(biāo)簽控件,該標(biāo)簽控件顯示報(bào)
表的標(biāo)題"器件清單";
(3) 將頁(yè)注腳區(qū)默認(rèn)顯示的當(dāng)前日期改為顯示當(dāng)前的時(shí)間;
(4) 最后將建立的報(bào)表保存為report1.frx。
本題主要考核點(diǎn):
SQL中的查詢(xún)SELECT查詢(xún)、聯(lián)接查詢(xún)、查詢(xún)的排序、查詢(xún)的結(jié)果的去向等;報(bào)表的建立方法等知識(shí)點(diǎn).
解題思路:
第一小題:為了能得到所有總金額大于平均總金額的訂購(gòu)單信息,應(yīng)該首先得到總金額的平均值,利用:SELECT AVG(總金額) FROM ORDER_LIST INTO ARRAY AFieldsValue,并將總金額的平均值放到一個(gè)數(shù)組變量之中AFieldsValue;下一步就可以以總金額>AFieldsValue為條件得到總金額大于平均總金額的訂購(gòu)單信息,將這一條件放在WHERE子句的后面,查詢(xún)結(jié)果的排序要用到ORDER BY子句,ORDER BY 客戶(hù)號(hào);查詢(xún)結(jié)果要放入一個(gè)永久表中要用到INTO TABLE子句,結(jié)果保存到RESULTS表中所以要用INTO TABLE RESULTS.本題由兩條SQL語(yǔ)句組成:
SELECT AVG(總金額) FROM ORDER_LIST INTO ARRAY AFieldsValue
SELECT * FROM ORDER_LIST WHERE 總金額>AFieldsValue;
ORDER BY 客戶(hù)號(hào);
INTO TABLE RESULTS
第二小題:
第一步:在Visual FoxPro主窗口按下組合鍵Ctrl+N,系統(tǒng)彈出"新建"對(duì)話(huà)框,在"文件類(lèi)型"中選擇"報(bào)表",再點(diǎn)擊新建文件按鈕,系統(tǒng)彈出報(bào)表設(shè)計(jì)器
第二步:?jiǎn)螕糁鞔翱?報(bào)表"菜單下的"快速報(bào)表(O)",系統(tǒng)彈出"打開(kāi)"對(duì)話(huà)框,選擇考生文件夾下的 order_detail.dbf表,單擊"確定",系統(tǒng)彈出"快速報(bào)表"對(duì)話(huà)框,單擊"確定"按鈕后便生成了一個(gè)報(bào)表,將報(bào)表文件以文件名 report1.frx保存在考生文件夾下。
第三步:選擇主菜單"報(bào)表"下的"標(biāo)題/總結(jié)(T)",彈出"標(biāo)題/總結(jié)"對(duì)話(huà)框,在"報(bào)表標(biāo)題"類(lèi)型中選擇"標(biāo)題帶區(qū) ",單擊"確定"按鈕,這樣就在報(bào)表中加入了一個(gè)"標(biāo)題帶區(qū)",打開(kāi)"報(bào)表控件工具欄",在打開(kāi)的"報(bào)表控件"中選擇"標(biāo)簽"控件,在標(biāo)題帶區(qū)點(diǎn)擊鼠標(biāo),輸入"器件清單"
第四步:雙擊"頁(yè)注腳"中的顯示當(dāng)前日期的域控件,打開(kāi)"報(bào)表表達(dá)式",在"表達(dá)式"文本框中將原來(lái)的DATE()用TIME()來(lái)代替。點(diǎn)擊"確定"
第五步:以文件名report1.frx將報(bào)表文件保存在考生文件夾下。
三、綜合應(yīng)用(1小題,計(jì)30分)
首先將order_detail表全部?jī)?nèi)容復(fù)制到od_bak表,然后對(duì)od_bak表編寫(xiě)完成如下
功能的程序:
1. 把"訂單號(hào)"尾部字母相同并且訂貨相同 ("器件號(hào)"相同)的訂單合并為一張訂
單,新的"訂單號(hào)"就取原來(lái)的尾部字母,"單價(jià)"取,"數(shù)量" 取合計(jì);
2. 結(jié)果先按新的"訂單號(hào)"升序排序,再按"器件號(hào)"升序排序;
3. 最終記錄的處理結(jié)果保存在od_new表中;
4. 最后將程序保存為prog1.prg,并執(zhí)行該程序。
本題主要考核點(diǎn):
程序的建立方法、程序中循環(huán)結(jié)構(gòu)的使用、SQL查詢(xún)語(yǔ)句的使用、記錄的修改方法;報(bào)表的建立方法等知識(shí)點(diǎn)
本題解題思路:
第一步:在VisualFoxPro主窗口下按組合鍵Ctrl+N,系統(tǒng)彈出"新建"對(duì)話(huà)框,在"文件類(lèi)型"中選擇"程序",再點(diǎn)擊"新建文件"按鈕,則系統(tǒng)彈出程序編輯窗口;
第二步:在彈出的窗中中輸入以下代碼:
SET TALK OFF
SET SAFETY OFF
sele * from order_detail into table od_bak
&&復(fù)制一個(gè)表用來(lái)存放結(jié)果
USE OD_BAK
COPY STRUCTURE TO OD_NEW
&&首先得到所有的新定單號(hào)和器件號(hào):
SELECT RIGHT(訂單號(hào),1) AS 新訂單號(hào),器件名,器件號(hào),;
RIGHT(訂單號(hào),1)+器件號(hào) AS NEWNUM;
FROM OD_BAK;
GROUP BY NEWNUM;
ORDER BY 新訂單號(hào),器件號(hào);
INTO CURSOR CurTable
DO WHILE NOT EOF()
&&得到單價(jià)和數(shù)量
SELECT MIN(單價(jià)) AS ,SUM(數(shù)量) AS 數(shù)量合計(jì);
FROM OD_BAK;
WHERE RIGHT(訂單號(hào),1)=CurTable.新訂單號(hào) AND 器件號(hào)=CurTable.器件號(hào);
INTO ARRAY AFieldsValue
INSERT INTO OD_NEW VALUES;
(CurTable.新訂單號(hào),CurTable.器件號(hào),CurTable.器件名,AFieldsValue(1,1),AFieldsValue(1,2))
SKIP
ENDDO
CLOSE ALL
SET TALK ON
SET SAFETY ON
第三步:?jiǎn)螕?保存"工具欄按鈕,以文件名prog1.prg保存程序文件在考生文件夾下,并運(yùn)行程序。