2003年(秋)Visual FoxPro 二級(jí)考試上機(jī)試卷(VFP04)
(本試卷上機(jī)考試時(shí)間為70分鐘)
說(shuō)明:1.運(yùn)行考試軟盤(pán)A中的“上機(jī)考試”應(yīng)用程序文件以輸入考生的準(zhǔn)考證號(hào)、姓名、試卷代號(hào)。 2.啟動(dòng)VFP系統(tǒng)后,首先在命令窗口中執(zhí)行命令: set default to A: 以設(shè)置默認(rèn)的工作目錄,然后再開(kāi)始作題。 |
一、項(xiàng)目、數(shù)據(jù)庫(kù)和表操作(12分) 打開(kāi)軟盤(pán)根目錄下的項(xiàng)目文件TEST,在該項(xiàng)目中已有一數(shù)據(jù)庫(kù)SJK。 1.按如下要求修改SJK中學(xué)生(KC)表的結(jié)構(gòu): 。1) 設(shè)置必修課(bxk)字段的標(biāo)題:是否必修課。 。2) 設(shè)置課程代號(hào)(kcdh)字段的輸入掩碼:課程代號(hào)只能是兩位數(shù)字字符。 (3) 設(shè)置學(xué)分(xf)字段的顯示類(lèi)為微調(diào)控件。 。4) 增加一個(gè)備注型字段,字段名為“課程簡(jiǎn)介”。 (5) 為KC表創(chuàng)建記錄級(jí)有效性規(guī)則:課時(shí)數(shù)(kss)不能少于學(xué)分(xf)。 2.已知數(shù)據(jù)庫(kù)SJK的存儲(chǔ)過(guò)程中有一自定義函數(shù)Ltoc(),功能是將邏輯型數(shù)據(jù)轉(zhuǎn)換為漢字“是”與“否”,例如Ltoc(.T.)的返回值為“是”。利用該函數(shù)KC表創(chuàng)建一個(gè)普通索引bxkxf,要求將所有必修課記錄排在前,非必修課記錄排在后,同類(lèi)型課程中再按學(xué)分(xf)字段排序。 3.修改KC表中記錄的課時(shí)數(shù)(kss)和學(xué)分(xf)字段的值,修改方法是:所有非必修課(bxk字段的值為.F.)的課時(shí)數(shù)和學(xué)分均減1。 4.向KC表中增加一條課程代號(hào)(kcdh)為“26”的記錄。。 5.已知數(shù)據(jù)庫(kù)SJK的存儲(chǔ)過(guò)程中有一自定義函數(shù)kc_del_tri(),該函數(shù)的功能是:對(duì)于打開(kāi)的KC表,如果當(dāng)前記錄在成績(jī)(CJ)表或任課(RK)表中有相關(guān)記錄,則返回.T.,否則返回.F.。設(shè)置KC表的刪除觸發(fā)器,要求如果KC表的當(dāng)前記錄在成績(jī)表或任課表中有相關(guān)記錄,則禁止刪除。 6.已知KC表已存在主索引kcdh,索引表達(dá)式為kcdh,成績(jī)(CJ)表已存在普通索引cjkcdh,索引表達(dá)式為kcdh。以KC表為主表,CJ表為子表,按kcdh建立永久關(guān)系,并設(shè)置它們之間的參照完整性:更新級(jí)聯(lián)。
二、設(shè)計(jì)查詢(8分)
在TEST項(xiàng)目中已存在查詢CHAXUN,且在SJK中的包含一個(gè)名為XSCJVIEW的視圖,該視圖中包含了每個(gè)學(xué)生所學(xué)課程的情況。按如下要求修改該查詢: 基于XSCJVIEW視圖KC表統(tǒng)計(jì)各學(xué)生所學(xué)必修課的門(mén)數(shù)和總學(xué)分,學(xué)生所學(xué)課程的學(xué)分必須當(dāng)成績(jī)(cj)在60分或60分以上時(shí)才能取得。要求輸出字段為:xh 、xm、門(mén)數(shù)、總分?jǐn)?shù),其中“課程性質(zhì)”依據(jù)KC表中的bxk字段取值為“必修”或“選修”(若bxk字段值為“.T.”,則“課程性質(zhì)”取值為“必修”,否則為“選修”)。查詢結(jié)果按學(xué)號(hào)和課程性質(zhì)升序排序。
三、設(shè)計(jì)菜單(5分)
項(xiàng)目TEST中已存在菜單MENUA,按如下要求修改菜單,完成后的運(yùn)行效果如圖1所示。
1. 啟用“數(shù)據(jù)錄入”菜單欄下的“學(xué)生成績(jī)錄入”菜單項(xiàng) 。 2. 為“數(shù)據(jù)打印”菜單欄下的“學(xué)生檔案打印”和“學(xué)生成績(jī)打印”,并用分隔線隔開(kāi)。 3. 為“學(xué)生成績(jī)打印”菜單項(xiàng)設(shè)置命令,要求當(dāng)執(zhí)行該菜單項(xiàng)時(shí)調(diào)用當(dāng)前目錄下的報(bào)表文件BB,并將結(jié)果預(yù)覽輸出。 4. 為“退出”菜單欄設(shè)置訪問(wèn)鍵“ALT+X”。 5. 將 “文件”菜單欄刪除。 |
 |
四.設(shè)計(jì)表單(10分)
TEST 項(xiàng)目中已經(jīng)存在菜單FORMA,該表單用來(lái)進(jìn)行系統(tǒng)登錄。已知A盤(pán)根目錄下存在表文件USER,該表用來(lái)存放登錄用戶的工號(hào)(no)、姓名(name)、職務(wù)(title)、和口令(password)。根據(jù)下列要求對(duì)表單進(jìn)行修改,完成以后運(yùn)行表單,效果如圖2所示。
1. 設(shè)置窗口的標(biāo)題為“系統(tǒng)登錄”。 2. 設(shè)置表單有關(guān)屬性,使表單運(yùn)行時(shí)不可最小化。 3. 使口令文本框中輸入的字段以“*”號(hào)顯示。 4. 為“確定”按鈕設(shè)置有關(guān)屬性,使得當(dāng)表單運(yùn)行過(guò)程中按ENTER鍵時(shí),無(wú)論當(dāng)前焦點(diǎn)在哪個(gè)對(duì)象上,“確定”那鈕總能得到焦點(diǎn)并自動(dòng)執(zhí)行它的Click事件代碼。 5. “年月“下拉列表的RowSourceType為“3-SQL語(yǔ)句”,設(shè)置它RowSource的屬性,使得該下拉列表框中顯示LOGIN表中的年月兩個(gè)字段的數(shù)據(jù),且顯示格式為X X X X年X X月(如圖2所示)。 6. 假如USER表中姓名(name)字段的值不重復(fù),且已經(jīng)按姓名建立了一個(gè)普通索引name。完善姓名下拉列表框的InterActiveChange事件,使得當(dāng)選擇不同的用戶姓名時(shí),“職務(wù)”文本框中顯示其相應(yīng)的職務(wù)(title)字段的值。
|
 |
五.程序改錯(cuò)(5分)
下列程序的功能用于將十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)表示。要求: 1. 項(xiàng)目中有一個(gè)程序文件PCODE,將下列程序輸入到其中并進(jìn)行修改。 2. 在修改程序時(shí),不允許修改程序的總體框架和算法,不允許增加或減少語(yǔ)句數(shù)目。
nNumber=437 &&賦初值(十進(jìn)制數(shù)) cResult=SPACE(0) IF nNumber#0 DO WHILE nNumber>0 n=MOD(nNumber,16) nNumber=INT(nNumber/16) &&余數(shù) IF n<10 cResult=STR(n,1)+cResult ELSE cResult=CHR(ASC(‘A’)+n)+cResult ENDIF NDDO ELSE cResult=0 ENDIF WAIT WINDOWS‘十六進(jìn)制數(shù)表示為’+cResult
|