2003年(秋)Visual FoxPro 二級(jí)考試上機(jī)試卷(VFP06)
(本試卷上機(jī)考試時(shí)間為70分鐘)
說明:1.運(yù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)的工作目錄,然后再開始作題。 |
一。項(xiàng)目、數(shù)據(jù)庫和表操作(12分)
打開軟盤根目錄下的項(xiàng)目文件TEST,在該項(xiàng)目中已有一數(shù)據(jù)庫SJK。 1. 按如下要求修改SJK中工資(GZ)表的結(jié)構(gòu): (1) 為應(yīng)發(fā)工資(yfgz)字段設(shè)置標(biāo)題:應(yīng)發(fā)工資。 (2) 設(shè)置工號(hào)(gh)字段的輸入掩碼:工號(hào)以1個(gè)任意英文字母開頭,后跟4位數(shù)字。 。3) 增加一個(gè)邏輯型字段,其字段名為yhdf。 。4) 創(chuàng)建一個(gè)普通索引jbgwzh,要求按基本工資(jbgz),崗位津貼(gwit)和綜合津貼(zhjt)三個(gè)字段的和降序排列。 (5) 為GZ表添加注釋:職工工資表。 2. 把A:\B0001.GIF文件添加到TEST項(xiàng)目中的適當(dāng)位置,并將包含狀態(tài)設(shè)置為“排除”。 3. 計(jì)算GZ表中所有教師的應(yīng)發(fā)工資(yfgz),應(yīng)發(fā)工資是基本工資(jbgz)、崗位津貼(gwjt)和綜合津貼(zhjt)三個(gè)字段值的和。 4. 設(shè)置GZ表的記錄有效性規(guī)則,應(yīng)發(fā)工資(yfgz)字段的值必須不超過基本工資(jbgz)、崗位津貼(gwjt)和綜合津貼(zhjt)三個(gè)字段值的和。 5. 設(shè)GZ表的更新權(quán)限由一個(gè)全局的字符變量UserName(表示用戶名)控制,只有當(dāng)UserName的值為“Admin”時(shí)允許更新,根據(jù)此要求設(shè)置GZ表的更新觸發(fā)器。 6. SJK中教師(JS)表已存在主索引jsgh,索引表達(dá)式為gh。以JS表為主表,GZ表為子表按gh建立永久關(guān)系,并設(shè)置JS 表和GZ表之間的參照完整性:更新級(jí)聯(lián)。
二.設(shè)計(jì)查詢(5分)
假設(shè)現(xiàn)有GZ表中的若干工資項(xiàng)將有所變動(dòng):基本工資(jbgz)每人增加120元;崗位津貼(gwjt)每人增加20%;男女職工的綜合津貼(zhjt)分別為10元和50元。希望通過查詢預(yù)覽一下變動(dòng)后的工資情況,按如下要求修改TEST項(xiàng)目中的查詢CHAXUN: 基于JS表和GZ表查詢變動(dòng)后的工資情況,輸出字段:gh,xm,xb,jbgz,jbgz2,gwjt,gwjt2,zhjt,zhjt2,其中字段名末位是“2”的字段表示變動(dòng)后的工資項(xiàng),要求按gh升序排列,且僅顯示排在前10%的記錄,結(jié)果輸出到VFP主窗口中。
三.設(shè)計(jì)菜單(5分)
TEST項(xiàng)目中已存在菜單MUNUE,按如下要求修改菜單,完成后的運(yùn)行效果如圖所示。 1. 為“文件”菜單欄下的“退出”菜單項(xiàng)設(shè)置快捷鍵“CTRL+R”。 2. 在“文件”菜單欄的“退出”菜單項(xiàng)之間插入系統(tǒng)菜單“導(dǎo)出”。 |
 |
3. 為“數(shù)據(jù)維護(hù)”菜單欄下的“學(xué)生信息維護(hù)”菜單項(xiàng)編制子菜單,該子菜單包括兩個(gè)菜單項(xiàng)“學(xué)生基本信息維護(hù)”和“學(xué)生成績維護(hù)”,并用分隔線隔開。 4. 設(shè)置“數(shù)據(jù)查詢”菜單欄下的“教師信息查詢”菜單項(xiàng)廢止。 5. 為“學(xué)生信息查詢”菜單項(xiàng)下的“學(xué)生基本信息查詢”設(shè)置SQL命令,要求當(dāng)執(zhí)行該菜單項(xiàng)時(shí),在瀏覽窗口中顯示學(xué)生(XS)表中所有女生的學(xué)號(hào)(xh),姓名(xm)和出生日期(csrq)。
四.設(shè)計(jì)菜單(10分) TEST項(xiàng)目中已經(jīng)存在表單FORMF,該表單用來查詢USER表中的人員信息,根據(jù)下列要求修改表單,完成以后運(yùn)行表單,效果如圖所示。
1. 設(shè)置表格的有關(guān)屬性,使表格能夠獲得焦點(diǎn),但不能修改其內(nèi)容。 2. 設(shè)置表單標(biāo)題為“人員信息查詢”。 3. 設(shè)置表格中“工號(hào)”列的標(biāo)題居中。 4. 設(shè)置表單中test1文本框的有關(guān)屬性,使當(dāng)光標(biāo)移到文本框上時(shí),鼠標(biāo)指針的形狀為“1”型。 5. 在表單的Load事件代碼中已經(jīng)包含了創(chuàng)建名為USER-CUR臨時(shí)表的命令。完善代碼,要求以部門(department)和工號(hào)(no)兩個(gè)字段為該臨時(shí)表創(chuàng)建一個(gè)結(jié)構(gòu)復(fù)合索引,索引名為int-bmgh,使得該臨時(shí)表中的數(shù)據(jù)以部門排序,部門相同時(shí),再按工號(hào)排序。 6. 已知在A盤根目錄下存在報(bào)表文件USER-REP。為“預(yù)覽”按鈕編制Click事件代碼,當(dāng)點(diǎn)擊該按鈕時(shí),預(yù)覽報(bào)表USER-REP。 7. 已知表單的數(shù)據(jù)環(huán)境中已經(jīng)添加了人員信息表(USER)。完善表單的Init事件代碼,以完成將USER表中的所有記錄添加到臨時(shí)表USER-CUR中的功能。 |
 |
五.程序改錯(cuò)(5分)
下列程序的功能是:將一個(gè)用字符串表示的正整數(shù)序列重新排列為一個(gè)新的正整數(shù)序列字符串。新序列排列的規(guī)則是:序列左邊為奇數(shù)、右邊為偶數(shù),且奇、偶數(shù)分別從序列的兩端開始依次向序列中間排放。例如,若原序列為“31,58,71,5,82,45,54,41,2”,則新序列為“31,71,5,45,41,2,54,82,58”。注:“,”為英文逗號(hào)。要求: 1. 項(xiàng)目中有一個(gè)程序文件PCODE,將下列程序輸入到其中并進(jìn)行修改。 2. 在修改程序時(shí),不允許修改程序的總體框架和算法,不允許增加或減少語句的數(shù)目。
cString=‘31,58,71,5,82,45,54,41,2’ STORE SPACE(0)TO cLeft,cRight n=1 DO WHILE n#0 n=AT(cString,“,”) IF n=0 c=SUBSTR(cString,1,n-1) cString=SUBSTR(cString,n) ENDIF IF MOD(VAL(c),2)=0 cRight=c+“,”+cRight ELSE cLeft=cLeft+“,”+c ENDIF ENDDO cResult=cLeft+“,”+cRight WAIT WINDOWS‘結(jié)果字符串為’+cResult
|