2002年(秋)Visual FoxPro二級考試上機試卷 (VFP04)
(本試卷上機考試時間為70分鐘)
說明:1.考試語言環(huán)境為Visual FoxPro 5.0/6.0 2. 運行考試軟盤A中的“上機考試”應用程序文件以輸入考生的準考證號、姓名、試卷代號。 3. 啟動VFP系統(tǒng)后,首先在命令窗口中執(zhí)行命令: set default to A: 以設置默認的工作目錄,然后再開始作題。 |
一、 項目、數(shù)據(jù)庫和表操作(12分) 打開軟盤根目錄下的項目文件TEST,在該項目中已有一數(shù)據(jù)庫SJK。 1. 按如下要求修改SJK中教師(JS)表的結構: (1) 為JS表設置有效性(驗證)規(guī)則:工作日期(gzrq)與出生日期(csrq)之間至少相差20年; (2) 設置JS表的記錄有效性(驗證)信息:教師參加工作時至少為20歲。 (3) 將工作日期(gzrq)字段的標題設置為“工作日期”; (4) 為性別(xb)字段設置默認值為:“男”; (5) 創(chuàng)建一個普通索引zcgzrq,要求先按職稱代碼(zcdh)字段排序,職稱相同的再按工作日期(gzrq)字段排序。 2. 為JS表添加編輯說明為“教師基本信息表”。 3. 把軟盤根目錄中的表文件GZB.DBF添加為TEST項目中的自由表。 4. 把GZB表中所有職稱(zc)為助教的綜合津貼(zhjt)增加100元。 5. 為JS表設置更新觸發(fā)器:僅允許修改2001年(含2001年)以后參加工作的教師記錄。 6. SJK中JS表已存在主索引jsgh,索引表達式為gh,GZ表已存在普通索引gzgh,索引表達式為gh。以JS表為主表,GZ表為子表按gh建立永久關系,并設置JS表和GZ表之間的餓參照完整性:刪除限制。
二、 設計查詢(8分) 在TEST項目中已存在查詢chaxun,按如下要求修改該查詢: 基于學生(XS)表和成績(CJ)表查詢99級學生成績總分前3名。要求輸出字段為:xh、xm、xb、總成績,查詢結果按總成績降序排序。 說明:xh字段的前兩位表示年級,99級學生即xh以“99”開頭的學生
三、 設計菜單(5分) TEST項目中已存在菜單menu,其中已定義了“文件”菜單欄及其中的“恢復系統(tǒng)菜單”項。按如下要求設計菜單,完成后的運行效果如圖1所示。

1. 創(chuàng)建“統(tǒng)計”菜單欄; 2. 為“統(tǒng)計”菜單設置熱鍵“ALT+T”; 3. 創(chuàng)建“統(tǒng)計”菜單中的菜單項:“教師情況”、“學生情況”和“課程成績”; 4. 創(chuàng)建“教師情況”的子菜單,其中包含“任課”和“工資情況”菜單項; 5. 在“學生情況”和“課程成績”菜單項之間插入分組線。
四、 設計表單(10分) TEST項目中已存在表單formD,用來實現(xiàn)學生用戶的登錄。數(shù)據(jù)來自學生表(XS),通過在下拉組合框中選擇一個姓名,使表中記錄指針定位到該學生,用學號作為驗證密碼,如果在密碼文本框中輸入的密碼與當前學生記錄的學號(xh)相同,則登錄成功。按如下要求修改表單,完成后表單的運行界面如圖2所示。 1. 將姓名下拉組合框cboXM改為下拉列表框; 2. 將密碼文本框txtPwd的密碼字符設為“*”號,設置txtPwd輸入掩碼,使其只能輸入8位數(shù)字字符; 3. 為表單創(chuàng)建一個名為logSuccess的新屬性; 4. 添加一個文本框控件txtXH的可見性設為隱藏,數(shù)據(jù)控制源設為Xs.Xh; 5. 完善登錄按鈕cmdLogin的Click事件代碼,使之具有如下功能: 如果txtPwd文本框的值與txtXH文本框的值相等,則將logSuccess屬性值設置為.T.,并關閉該表單窗口,否則將焦點設到txtPwd文本框上。

五、 程序改錯(5分) 下列程序的功能是:將一個字符串中的各個單詞的首字母組成其縮寫形式(大寫字母),其中,字符串由多個英文單詞組成且各單詞之間用一個空格分隔,例如,對于字符串“central processing unit”,生成其縮寫形式“CPU”。其基本算法為:字符串左邊加一個空格,然后依次檢查字符串的每一個字符,如果該字符為字母且左邊為空格,則該字母為首字母。要求: (1)目中有一個程序文件Pcode,將下列程序輸入到其中并進行修改; (2)在修改程序時,不允許修改程序的總框架和算法,不允許增加或減少語句數(shù)目。 cString=’central processing unit’ &&賦初值 cString=SPACE(1)+UPPER(cString) cResult=SPACE(0) FOR n=2 TO cString c=SUBSTR(cString,n,1) IF BETWEEN(c,’A’,’Z’)AND SUBSTR(cString,n-1,1)=SPACE(1) cResult=cResult+n ENDIF ENDFOR WAIT WINDOWS’ 縮寫形式為’+cResult |