2003年(秋)Visual FoxPro 二級考試上機試卷(VFP02)
(本試卷上機考試時間為70分鐘)
說明:1.運行考試軟盤A中的“上機考試”應用程序文件以輸入考生的準考證號、姓名、試卷代號。 2. 啟動VFP系統(tǒng)后,首先在命令窗口中執(zhí)行命令: set default to A: 以設置默認的工作目錄,然后再開始作題。 |
一、 項目、數據庫和表操作(12分)
打開軟盤根目錄下的項目文件TEST,在該項目中已有一數據庫SJK。 1.按如下要求修改SJK中學生(XS)表的結構: (1) 將學號(xh)字段寬度設置為10。 。2) 設置xh字段的有效性規(guī)則:學號的有效寬度只能是6位、8位或10位; 。3) 設置xh字段的字段注釋:字段是學生表的主關鍵字,不允許重復。 。4) 創(chuàng)建一個唯一索引xing,要求先按姓名(xm)字段中的姓(第一個漢字)升序排序。 。5) 設置XS表注釋:學生基本信息。 2. 把TEST項目中的圖片文件015.jpg的包含狀態(tài)設置為“排除”。 3. 修改XS表中所有記錄的xh字段值,用班級編號(bjbh)中的第3至4位插入到學號中的第2與第3位之間。例如:學號為“990501”,班級編號為“990404051”,則替換后的學號就是“9904051”。 4.為xs表設置刪除觸發(fā)器:只有學號開頭兩位是“95”至“99”的記錄允許刪除,否則不允許刪除。 5. SJK中班級(BJ)表已存在主索引bjbh,索引表達式為bjbh,XS表已存在普通索引bjbh,索引表達式為bjbh。以BJ表為主表,CJ表為子表按xh建立永久關系,并設置BJ表和XS表之間的參照完整性:刪除限制。
二、 設計查詢(8分)
已知學生(XS)表中含有字符型字段班級編號(bjbh)和日期型字段出生日期(csrq)。在TEST項目中已存在查詢CHAXUN,按如下要求修改該查詢: 基于學生(XS)表統(tǒng)計各班上半年和下半年出生的人數,要求輸出字段為:bjbh、時間、人數。如果出生月份在1至6月,則時間為“上半年”,如果出生月份在7至12月,則時間為“下半年”,查詢結果首先按班級編號升序排序,同一班級中再按時間降序排序,查詢結果輸出到臨時表xsrs。
三、 設計菜單(5分)
項目TEST中已存在菜單MENUA,按如下要求修改菜單,完成后的運行效果如圖1所示。
1. 為“數據錄入”菜單欄下的“學生信息錄入”菜單項創(chuàng)建快捷鍵“ALT+L”。 |
 |
2. 在“數據錄入”菜單欄下增加一個菜單項“教師信息錄入”,并用分隔線隔開。 3. 為“教師信息錄入”菜單項設置過程,當執(zhí)行該菜單時向(JS)表中插入一條空記錄,并打開JS表的編輯窗口。 4. 為“數據查詢”菜單欄設置提示信息:“按條件查詢相關表的信息”,即當菜單運行時且選擇了“數據查詢”菜單欄時,在狀態(tài)欄中顯示該提示信息。 5. 將上述菜單追加在系統(tǒng)菜單“幫助”的后面。
四.設計表單(10分)
TEST 項目中已經存在菜單FORMA,該表單可以用來查詢學生成績。選項按鈕組提供了兩種查詢方式:按學號查該學生的各門課的成績,或者按課程查該課程有多少學生選修及各個學生的成績情況。根據下列要求對表單進行修改,完成以后運行菜單,效果如圖2和圖3所示。 1. 將表格中的各列標頭改為如圖2所示的標題。 2. 將表格的刪除標志列去掉。 3. 設置表單的有關屬性,是表單運行時不可隨意移動。 4. 完善選項按鈕組op1的Click事件代碼,使得當選擇“按學號”查時標簽label1標題為“總成績”,當選擇“按課程”查時標簽label1標題為“總人數”。 5. 完善列表框的InterActiveChange時間代碼:使得當“按學號”查詢并在列表框中選擇學號時文本框中統(tǒng)計學生的總成績,當“按課程代碼”查詢并在列表框中選擇課程代號時文本框中統(tǒng)計該課程的學生選修人數。
五.程序改錯(5分)
下列程序的功能是將小寫金額(假設小于0萬有且有1位小數)轉換為中文大寫形式顯示。例如,213.0轉換為“貳佰壹拾叁元零角”,3002.8轉換為“叁仟零貳元捌角”。要求: 1. 項目中有一個程序文件PCODE,將下列程序輸入到其中并進行修改。 2. 在修改程序時,不允許修改程序的總體框架和算法,不允許增加或減少語句數目。
nMoney=10040.5 &&賦初值 cMoney=ALLT(STR(nMoney,7,1)) cs1=’零壹貳叁肆伍陸柒捌玖’ cS1=RIGHI(‘萬仟佰拾元’,(LEN(cMoney)-2)*2) cRt=SPACE(0) FOR n=1 TO LEN(cMoney)-2 ch=SUBSTR(cMoney,n,1) cRt=cRt+IIF(ch=”0” AND RIGHT(cRt,2)=”零”,””,SUBS(cS1,ch*2+1,2)) cRt=cRt+IIF(ch=”0”,””,SUBS(cS2,n*2-1,2))&&去掉重復零 ENDFOR cRt=cRt+IIF(RIGHT(cRt,2)=”零”,’元’,”) cRt=cRt+IIF(RIGHT(cMoney,1)=’0’,’’,SUBS(cS1,VAL(RIGHT(cMoney,1))*2+1,2)+’角’&&小數部分 WAIT WINDOWS’大寫金額為:’+cRt
|