![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2005 年(春)二級Visual FoxPro上機(jī)(03) |
|
江蘇省高等學(xué)校非計算機(jī)專業(yè)學(xué)生 (本試卷完成時間 70分鐘)
一、項目、數(shù)據(jù)庫和表操作(12分) 打開軟盤根目錄下的項目文件TEST,在該項目中已有一數(shù)據(jù)庫SJK。 1、按職下要求修改SJK中教師(JS)表的結(jié)構(gòu): (1)設(shè)置工作日期(gzrq)字段的有效性(驗證)規(guī)則:工作日期的年份必須小于等于當(dāng)前系統(tǒng)日期的年份,并且大于等于1960年; (2)設(shè)置(gzrq)字段的有效性(驗證)信息:工作日期必須在1960年以后; (3)將簡歷(ji)字段標(biāo)題設(shè)置為:簡歷; (4)為工號(gh)字段設(shè)置輸入掩碼:接受5個字節(jié)的字符,且第一個字符必須為大寫英文字母,后4個字符只接受數(shù)字字符; (5)創(chuàng)建一個普通索引xdhzc,要求先按系代號(xdh)字段排序,相同時按職稱代號(zcdh)字段排序。 2、將軟盤中表文件GZB.DBF添加為TEST項目的自由表,并為其添加說明信息:工資信息表。 3、將GZB表中所有職稱為“講師”的其它(qt)字段值設(shè)置為150元。 4、為JS表設(shè)置更新觸發(fā)器:僅允許更新1960年(含1960年)以后參加工作的教師記錄。 5、JS表已存在主索引jsgh,索引表達(dá)式為gh;GZ表已存在普通索引gzgh,索引表達(dá)式為gh,以JS表為主表、GZ表為子表,按gh建立永久關(guān)系,并設(shè)置JS表和GZ表之間的參照完整性:刪除級聯(lián)。 二、設(shè)計查詢(8分) TEST項目中已經(jīng)存在查詢chaxun,且在SJK中包含一個名為JSST的視圖。該視圖包括教師工號(gh)姓名(xm)、出生日期(csrq)、職稱(zc)和系代號(xdh)字段;在SJK的系名(XIM)表含有系代號(xdh)和系名稱(ximing)字段。按如下要求修改查詢: 基于JSST視圖和XIM表查詢每個系職稱為“教授”的人數(shù)、平均年齡,要求輸出字段包括:xdh、ximing、zc、人數(shù)、平均年齡、查詢結(jié)果按人數(shù)從高到低排序。 三、設(shè)計菜單(5分) 1、如圖所示,在“表操作”菜單欄下增加一個“刪除記錄”菜單項及其子菜單; 2、為“表操作”菜單欄下的“記錄定位”菜單項編寫過程,其功能是:打開學(xué)生(XS)表,并將記錄指針定位在最后一條記錄; 3、將下列代碼加到菜單的適當(dāng)位置,使菜單運行時最后執(zhí)行它。 CLOSE TABLES ALL CLEAR 四、設(shè)計表單(10分) 軟盤上TEST項目中已經(jīng)存在表單FormP,該表單的功能是根據(jù)選擇的系,瀏覽和統(tǒng)計教師信息。按下列要求修改該表單,修改完成后運行表單,其效果如圖所示。 1、修改表單的有關(guān)屬性,使得表單運行時自動居中,且位于屏幕的最前端; 2、修改表格控件的有關(guān)屬性,使得第1列表頭為“工號”、表格數(shù)據(jù)只讀; 3、向表單上添加一個標(biāo)簽控件和一個文本框控件(如圖2所示),用于顯示“平均工齡”; 4、為表單添加一個新方法TongJi,并輸入和完善如下代碼: SELECT isview COUNT TO n &&統(tǒng)計人數(shù) ThisForm.Textl.Value=n AVERAGE YEAR(DATE())-YEAR(csrq) TO gn &&統(tǒng)計平均年齡 THISFORM.Text2.VaLue=gn **在此注釋語句前添加工2條語句:統(tǒng)計平均工齡,在添加的文本框中顯示平均工齡。 5、為表單的Destroy事件編寫代碼,需要完成的功能是關(guān)閉所有表。
五、 程序改錯(5分) 下列程序的功能是:隨機(jī)出一道100以內(nèi)整數(shù)加法算術(shù)題的選擇題(有4個選擇項,其中只有一個正確答案)。要求: ① 項目中有一個程序文件Pcode,將下列程序輸入到其中并進(jìn)行修改(注:注釋部分不輸入); ② 在修改程序時,不允許修改程序的總體框架和算法,不允許增加或減少語句數(shù)目。 X=int(rand()*100) Y=int(rand()*100) Ctext=str(x,3)+”+”+str(y,3)+”=?”+chr(13) &&chr(13)產(chǎn)生一個回車符 Dimension nans[4] &&存放4個選擇項的數(shù)組 N=mod(int(rand()*10),4)+1 &&隨機(jī)產(chǎn)生正確答案在數(shù)組中的序號 Nans[n]=x+y &&將正確答案添入該數(shù)組元素中 For I=1 to 4 &&產(chǎn)生3個錯誤答案,填入另三個數(shù)組元素中 If I=n &&避免覆蓋正確答案的數(shù)組元素 Nans[I]=int(rand()*100) Do while nans[I]=x+y &&避免有兩個或兩個以上正確答案 Nans[I]=int(rand()*100) Enddo Endif Ctext=ctext+space(2)+chr(64+I)+’、’+str(nans[I],3)+chr(13) Endnext Ctext=ctext+”請選擇正確答案的字母A-D:” Wait window ctext to cchoice |
|