2002年(秋)Visual FoxPro二級考試上機試卷 (VFP02)
(本試卷上機考試時間為70分鐘)
說明:1.考試語言環(huán)境為Visual FoxPro 5.0/6.0 2. 運行考試軟盤A中的“上機考試”應(yīng)用程序文件以輸入考生的準(zhǔn)考證號、姓名、試卷代號。 3. 啟動VFP系統(tǒng)后,首先在命令窗口中執(zhí)行命令: set default to A: 以設(shè)置默認(rèn)的工作目錄,然后再開始作題。 |
一、 項目、數(shù)據(jù)庫和表操作(12分) 打開軟盤根目錄下的項目文件TEST,在該項目中已有一數(shù)據(jù)庫SJK。 1. 按如下要求修改SJK中學(xué)生(XS)表的結(jié)構(gòu): (1)出生日期(csrq)字段的標(biāo)題設(shè)置為“出生日期“; (2)設(shè)置csrq字段的有效性(驗證)規(guī)則:必須是1983年(包含1983年)之前出生的學(xué)生; (3)設(shè)置csrq字段的有效性(驗證)信息:學(xué)生的出生日期必須符合常規(guī)。 (4)為系代號(xdh)字段設(shè)置輸入掩碼:接受2個字段的字符,且只接受數(shù)字; (5)創(chuàng)建一個普通索引xx,要求先按系代號(xdh)字段排序,系代號相同的再按學(xué)號(xh)字段排序。 2. TEST項目中的自由表GZC移出項目; 3. 把軟盤根目錄中的表文件GZB.DBF添加為TEST項目中的自由表; 4. 修改GZB表中所有記錄的醫(yī)療保險(ylbx)字段的值,算法為:醫(yī)療保險為基本工資(jbgz)的2%; 5. 為XS表設(shè)置刪除觸發(fā)器:xdh的值為02的允許刪除,否則不允許刪除; 6. SJK中XLM表已存在主索引xdh,索引表達(dá)式為xdh,XS表已存在普通索引xdh,索引表達(dá)式為xdh。以XIM表為主表,XS表為子表按xdh建立永久關(guān)系,并設(shè)置XIM表和XS表之間的參照完整性:更新級聯(lián)。
二、 設(shè)計查詢(8分) 在TEST項目中已存在chaxun,且在SJK中的工資(GZ)表中含有教師的基本工資(jbgz),假如教師的住房公積金按基本工資的8%提取。按如下要求修改查詢: 基于JS表和GZ表查詢每個教師的基本工資(JBGZ),住房公積金(ZFGJ)。要求輸出字段為:gh、xm、xb、jbgz、住房公積金,查詢結(jié)果按gh的升序排序,且只輸出住房公積金大于等于100的記錄。
三、 設(shè)計菜單(5分) TEST項目中已存在菜單menu,其中已定義了“文件”菜單欄及其中的“恢復(fù)系統(tǒng)菜單”項。按如下要求設(shè)計菜單,完成后的運行效果如圖1所示。

1. 在“文件”菜單中創(chuàng)建“新建”菜單項,為“新建”菜單項設(shè)置快捷鍵“CTRL+N”; 2. 在“新建”和“恢復(fù)系統(tǒng)菜單”菜單項之間插入分組線; 3. 為“新建”菜單項創(chuàng)建子菜單,子菜單中包含“查詢”、“表單”和“菜單”菜單項; 4. 創(chuàng)建“運行”菜單欄; 5. 為“運行”菜單設(shè)置熱件“ALT+R”。
四、 設(shè)計表單(10分) TEST項目中已存在表單formB和Mylib類庫。按如下要求修改表單,完成后表單的運行界面如圖2所示。 1. 修改表單:寬度增加到560,標(biāo)題改為:教師工資; 2. 將Mylib類庫中的toolbutton類添加到表單右側(cè)的空白處,并將該命令按鈕組控件的寬度改為90,將按鈕組中的所有按鈕的寬度改為80; 3. 將“基本情況”矩形框內(nèi)的所有文本框廢止; 4. 將Shape1控件的背景色改為:179,179,255; 5. 完善表單的Refresh代碼,使表單在刷新的同時完成“住房公積”和“實發(fā)工資”的計算。(注:住房公積是基本工資的8%,實發(fā)工資=應(yīng)發(fā)工資-住房公積-醫(yī)療保險-個人所得稅)

五、 程序改錯(5分) 下列程序的功能是統(tǒng)計一個字符串中包含多少個漢字(假設(shè)這些漢字均屬于GB2312字符集),其基本算法是從字符串中依次取一個字符,如果其ASCII碼值大于127,則為一個漢字內(nèi)碼的第一個字節(jié)。 要求: (1) 項目中有一個程序文件Pcode,將下列程序輸入到其中并進行修改; (2) 在修改程序時,不允許修改程序的總體框架和算法,不允許增加或減少語句數(shù)目。 cString=’微軟(Microsoft)公司開發(fā)的視窗(Windows)操作系統(tǒng)’ &&賦初值 nCount=0 DO WHILE LEN(cString)=0 IF ASC(LEFT(cString,1))>127 nCount=nCount+1 cString=SUBSTR(cString,3) ELSE CString=SUBSTR(cString,1) ENDIF ENDDO WAIT WINDOWS’漢字個數(shù)為’+STR(nCount) |