2011秋二級Visual FoxPro上機試卷第1套 |
||||||||||||||||||||||||||||||||||||||||||||||||
2011秋二級Visual FoxPro上機試卷 (本試卷完成時間為70分鐘) 考試說明: 1.首先登錄考生信息,然后啟動VFP并在命令窗口中執行下列命令,以設置默認的工作目錄: SET DEFA TO T: 2.除非題目要求,否則不要對T盤上的文件進行重命名、復制和刪除操作。 一、項目、數據庫和表操作(12分) 打開T盤根目錄中的項目文件jxgl,在該項目中已有一數據庫jxsj。 1.在jxsj數據庫中按如下表格中所示的結構創建ab.dbf表,并按表格中的要求設置相關屬性。
(1)設置表的注釋:世博會場館簡介一覽表。 (2)設置cg字段的有效性規則:不能為空字符串。 (3)設置zdmj字段的輸入掩碼:整數部分從右至左每3位用","字符隔開。 (4)設置WZ字段的有效性規則:只能是"A,B,C,D,E"片區中的一個。 (5)創建索引名為abcd的普通索引,要求按位置排序,位置相同時按占地面積排序。 2.在ab表中輸入如下記錄:
3.為項目設置項目信息:項目的圖標為pc.ico文件。 4.kc表與cj表具有相同的字段kcdm,以kc表為主表,cj表為子表,根據kcdm建立永久關系,并設置兩表之間的參照完整性:刪除級聯、插入限制。 二、設計查詢(8分) 已知課程表(kc.dbf)存儲了課程基本信息,其中含課程代碼(kcdm,C)、課程名稱(kcmc,C)等字段;成績表(cj.dbf)存儲了每個學生各門課程的成績信息,其中含課程代碼(kcdm,C)、成績(cj,N)等字段。按如下要求修改jxgl項目中的查詢chaxun: 基于kc表和cj表,查詢每門課程參加考試的人數、平均成績和不及格人數(成績小于60者不及格)。要求:輸出字段依次為kcdm、kcmc、人數、平均成績、不及格人數,查詢結果按平均成績降序排序,查詢去向為表(表的文件名為abc)。 三、設計菜單(5分) jxgl項目中已存在菜單menu,其中已定義"文件"菜單欄及其中的"退出菜單"項。按如下要求設計菜單,完成 后的運行效果如圖1所示。 1.創建"人員管理"菜單欄,并創建其子菜單"錄入"、"修改"、"瀏覽"。 2.在菜單項"錄入"與"修改"、"修改"與"瀏覽"之間插入分組線。 3.為"瀏覽"菜單項設置訪問鍵"B"。 4.為"瀏覽"菜單項設置快捷鍵"CTRL+B"。 5.為"瀏覽"菜單項設置命令:SELECT * FROM js 四、設計表單(10分) 表單FRM 1.修改表單的有關屬性,使表單的標題為"選課表單"。 2.在表單右側添加一個列表框(List2),用于顯示學號和被選課程代碼。 3.修改"確定"命令按鈕的Click事件代碼:在最后添加一條語句,其功能是將表達式Mxh+THISFORM.List1.Value的值添加到List2中。 4.添加一個命令按鈕,如圖2所示,為命令按鈕設置有關屬性,并編寫Click事件代碼,功能是釋放表單。 五、程序改錯(5分) 假定按如下規則定義一種32進制數:用"0,1,2,...,9,A,B,C,...,U,V"32個符號表示從0~31的32個十進制數。例如,32進制數"A8T"對應的十進制數的計算過程如下: (A8T) 下面程序的功能是將一個32進制數字字符串轉換為十進制數形式。要求:①項目中有一個程序文件Pcode,將T盤中vfp01.txt中的程序代碼復制到其中并進行修改;②在修改程序時,不允許修改程序的總體框架和算法,不允許增加或減少語句數目。 1 Num32='A8T' 2 Num10=0 3 FOR i=LEN(Num32)-1 TO 0 5 IF ISDIGIT(C) 6 d=VAL(C) 7 ELSE 8 IF BETWEEN(UPPER(c),'A','V') 9 d=ASC(UPPER(c))-55 10 ELSE 11 MESSAGEBOX("非法的32進制數!",16) 12 EXIT 13 ENDIF 14 ENDIF 15 Num10=Num10+d*32^i 16 ENDFOR 17 MESSAGEBOX('32進制數:'+Num32+'的十進制形式是:'+STR(Num10),64) 參考答案 一、項目、數據庫和表操作 cg字段的有效性規則:!EMPTY(cg) zdmj字段的輸入掩碼:9,999,999.99 WZ字段的有效性規則:WZ='A' OR WZ='B' OR wz='C' OR WZ='D' OR wz='E' 或INLIST(WZ,'A','B','C','D','E') 索引表達式:WZ+STR(zdmj,10,2) 二、設計查詢 SELECT kc.kcdm,kc.kcmc,COUNT(*) As 人數,AVG(cj) AS 平均成績,; SUM(IIF(cj<60,1,0)) AS 不及格人數; FROM jxsj!kc INNER JOIN jxsj!cj; ON kc.kcdm=cj.kcdm; GROUP BY kc.kcdm; ORDER BY 4 DESC; INTO TABLE abc.dbf 三、設計菜單 SELECT * FROM js 四、設計表單
五、程序改錯 第3行 FOR i=LEN(Num32)-1 To 0 改為TO 0 STEP -1 第12行 EXIT 改為RETURN |
||||||||||||||||||||||||||||||||||||||||||||||||