![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2010秋VFP上機(jī)典型試題 |
||||||||||||||||||||||||||||||||||
真正考試時(shí), 啟動(dòng)VFP軟件后,首先輸入Set Default to T:,注意:不能丟, 平時(shí)練習(xí)時(shí)應(yīng)輸入set default to 考生文件夾 注意:項(xiàng)目管理器應(yīng)從VFP軟件中打開,不能從別的地方打開,打開方式:啟動(dòng)VFP軟件à文件à打開à項(xiàng)目 上機(jī)考試題型總結(jié): 題型1:對(duì)表進(jìn)行設(shè)置 例題: 打開T盤根目錄中的項(xiàng)目文件JXGL,在該項(xiàng)目中已有一數(shù)據(jù)庫JXSJ。 1.在JXSJ數(shù)據(jù)庫中按如下表格中所示的結(jié)構(gòu)創(chuàng)建TAB.DBF表,并按表格后的要求設(shè)置相關(guān)屬性。
(1)設(shè)置TAB表的注釋:火炬?zhèn)鬟f城市信息表; 操作:在Tab表的”表”選項(xiàng)卡中的表注釋中輸入” 火炬?zhèn)鬟f城市信息表” (2)設(shè)置Cdrq字段的有效性規(guī)則及信息:傳遞日期必須在 操作:選中cdrq字段, 在有效性規(guī)則中輸入cdrq<{^ (3)將Cdrs字段的默認(rèn)值設(shè)置為100,Cdcs設(shè)置為南京,Cdrq設(shè)置為 操作:選中cdrs,在默認(rèn)值中輸入100,因?yàn)?/SPAN>cdrs是數(shù)值型的,所以直接輸入100,選中cdcs,在默認(rèn)值中直接輸入”南京”,因cdcs是字符型的,所以要加雙引號(hào),選中cdrq,在默認(rèn)值中輸入{^ (4)將cdcs自動(dòng)刪除前導(dǎo)空格, 將cdcs拖放到表單時(shí)自動(dòng)顯示文本框(TextBox),輸入cdcs中的值自動(dòng)轉(zhuǎn)換為大寫字母,按Cdcs字段創(chuàng)建主索引,索引名為abcd。按Cdcs與Cdrq創(chuàng)建普通索引cdef 操作:選中cdcs,在格式中輸入T,在顯示類中選中TextBox,自動(dòng)轉(zhuǎn)換為大寫,在格式原有的T之后增加!, 切換到索引選項(xiàng)卡,索引名輸入abcd,選中主索引,索引表達(dá)式輸入cdcs,增加一個(gè)索引,索引名輸入cdef,選中普通索引,索引表達(dá)式為cdcs+dtoc(cdrq,1),因?yàn)?/SPAN>cdrq是日期型的所以要轉(zhuǎn)換成字符型 (5)設(shè)置xs表中的xh只能寫入數(shù)字,允許輸入空值 操作:選中xh字段,在輸入掩碼中輸入12個(gè)9,因?yàn)?/SPAN>xh的寬度是12,一個(gè)9是一個(gè)數(shù)值字符 2.在TAB表中輸入如下記錄:
操作:表->追加新記錄,然后錄入,特別是在輸入cdrq時(shí),應(yīng)輸入 3.設(shè)置CJ表的更新觸發(fā)器,要求課程代碼為” 操作:在更新觸發(fā)器中輸入:kcdm!=” 4.已知JS表已存在主索引gh,索引表達(dá)式為gh,KCAP表已存在普通索引gh,索引表達(dá)式為gh,以JS表為主表,KCAP表為子表按gh建立永久關(guān)系,并設(shè)置兩表之間的參照完整性:插入限制,更新級(jí)聯(lián),刪除限制 操作:選中JXSJ數(shù)據(jù)庫,點(diǎn)擊修改,出現(xiàn)數(shù)據(jù)庫設(shè)計(jì)器,找到JS表與KCAP表,然后選中JS表的索引gh,拖放至KCAP表的索引gh,會(huì)出現(xiàn)一條連接線,即建立永久關(guān)系,選中連接線,右擊,選中參照完整性,出現(xiàn)參照完整性生成器,選擇”更新”選項(xiàng)卡,選中其中的級(jí)聯(lián),選中”刪除”選項(xiàng)卡,選中其中的限制,選中”插入”選項(xiàng)卡,選中其中的限制,按確定(注意:如果右擊參照完整性出現(xiàn)一個(gè)錯(cuò)誤提示框,則要執(zhí)行系統(tǒng)菜單”數(shù)據(jù)庫”à清理數(shù)據(jù)庫) 5.更新xs表中籍貫為江蘇南京的更改為江蘇省南京 操作:在命令窗口輸入 :update xs set jg=”江蘇省南京” where jg=”江蘇南京” 6.將kc表移出jxsj數(shù)據(jù)庫,使其成為自由表 操作:選中kc,然后右擊刪除-->移去 7.修改項(xiàng)目test的信息,附加圖標(biāo)pc.ico,城市為"南京" 操作:選中任意一個(gè)表-->右擊-->項(xiàng)目信息-->項(xiàng)目-->附加圖標(biāo) 8.修改yxzy表設(shè)置yxzydm的inputMask屬性,使該字段的數(shù)值只能為數(shù)字字符 操作:打開yxzy,選中yxzydm,選中輸入掩碼: 輸入999999,因?yàn)?/SPAN>yxzydm的寬度為6 9.利用項(xiàng)目管理器操作為xs編輯說明"人事表" 操作:選中xs表,右擊編輯說明-->輸入人事表 10.將js表設(shè)置為包含狀態(tài) 操作:選中js表,右擊-->包含 11.為js表增加一個(gè)備注型字段(bz),并將所有職稱(zc)為"教授"記錄的bz字段設(shè)置為"學(xué)科帶頭人" 操作:增加一個(gè)備注字段,在命令窗口輸入: update js set bz="學(xué)科帶頭人" where zc="教授" 12.將dmb表中lx字段值為"民族"的記錄復(fù)制到ab表,并添加到jxsj數(shù)據(jù)庫 操作:在命令窗口輸入 use dmb copy to ab for lx="民族" 在項(xiàng)目管理器中選擇"添加"-->ab 題型2查詢 查詢時(shí)最終要看查詢的生成命令是否與標(biāo)準(zhǔn)答案一致 例題:已知js表存儲(chǔ)了每名教師的基本信息, 包含文化程度代碼(whcd,c),出生日期(csrq,D),工作日期(gzrq,D)等字段,視圖whcd為文化程度代碼與名稱對(duì)照表,含文化程度代碼(dm,c)和文化程度名稱(mc,c)等字段,按如下要求修改jxgl項(xiàng)目中的查詢chaxun: 基于js表和whcd試圖,統(tǒng)計(jì)各類文化程度的男性人數(shù)和工作時(shí)的平均年齡,要求:輸出文化程度代碼、文化程度名稱、人數(shù)和工作時(shí)的平均年齡(字段名依次分別為dm,mc,rs和pjnl),查詢結(jié)果按平均年齡降序排序輸出前3條數(shù)據(jù),且僅輸出人數(shù)大于等于2個(gè)人的,輸出去向?yàn)楸砦募?/SPAN>temp,(注:教師工作時(shí)的年齡為工作日期的年份減去出生日期的年份) 操作: (1)選中項(xiàng)目管理器中的chaxun,點(diǎn)擊”修改”,打開添加”表或試圖”,將js與視圖whcd(在右下方有視圖選項(xiàng))加入到查詢?cè)O(shè)計(jì)器中,這時(shí)會(huì)彈出”聯(lián)接條件”,因?yàn)?/SPAN>js表與whcd視圖都有文化程度代碼,所以要依次選中js表中的whcd和whcd視圖中的dm,類型為”內(nèi)部聯(lián)接”,單擊”確定” (2)在”字段”選項(xiàng)卡中的”可用字段”依次選中whcd.dm whcd.mcà添加至”選定字段” 因?yàn)槿藬?shù)要通過函數(shù)生成,所以在”函數(shù)和表達(dá)式”中輸入Count(*) as rs添加至”選定字段” 平均年齡也要通過函數(shù)生成,在”函數(shù)和表達(dá)式”中輸入Avg(year(gzrq)-year(csrq)) as pjnl添加至”選定字段” (3)在”聯(lián)接”選項(xiàng)卡中前面已經(jīng)設(shè)置了js表與whcd聯(lián)接起來的條件,所以無需再設(shè)置,如果在(1)中沒有設(shè)置”聯(lián)接條件”,那么就要進(jìn)行設(shè)置,在類型中選中Inner join,字段名輸入js.whcd,條件輸入”=”,值輸入whcd.dm (4)在”篩選”選項(xiàng)卡中選擇js.xb,條件”=”,實(shí)例”男” (5)在”排序依據(jù)”選項(xiàng)卡中選擇pjnl添加至”選定字段”,在排序選項(xiàng)中選擇”降序” (6)在”分組依據(jù)”選項(xiàng)卡中選擇whcd.dm,因?yàn)橐笕藬?shù)大于2的顯示,在”滿足條件”中選擇rs >=,實(shí)例中輸入2 (7)”雜項(xiàng)”選項(xiàng)卡,將”列在前面的記錄”中的對(duì)號(hào)去掉,然后在記錄個(gè)數(shù)中輸入3 (8)右擊查詢?cè)O(shè)計(jì)器空白區(qū),選擇”輸出設(shè)置”,選中表,輸入temp, (注:有時(shí)候輸出文本文件,選擇”屏幕”à文本文件à輸入文件名) (9)右擊查詢?cè)O(shè)計(jì)器空白區(qū),選擇”查看SQL語句”,比對(duì)生成的語句是否與標(biāo)準(zhǔn)答案一樣 SELECT TOP 3 Whcd.*, count(*) as rs,; avg(year(gzrq)-year(csrq)) as pjnl ; FROM jxsj!js INNER JOIN jxsj!whcd ; ON Js.whcd = Whcd.dm; WHERE Js.xb = "男"; GROUP BY Whcd.dm; HAVING rs >= 2; ORDER BY 4 DESC; INTO TABLE temp.dbf 題型3:設(shè)計(jì)菜單 JXGL項(xiàng)目中已存在菜單MENU,已定義了”系統(tǒng)管理”菜單欄及其中的”恢復(fù)系統(tǒng)菜單”菜單項(xiàng)。按如下要求設(shè)計(jì)菜單,完成后的運(yùn)行效果如圖1所示。 1.創(chuàng)建”教材信息”菜單欄,其訪問鍵為J,子菜單為”編輯”、”瀏覽”和”統(tǒng)計(jì)”,分組線如圖所示,在"系統(tǒng)管理"菜單欄中插入VFP系統(tǒng)菜單"導(dǎo)入"和"導(dǎo)出" 2.為”編輯”菜單項(xiàng)設(shè)置跳過條件,使該菜單項(xiàng)不可用; 3.為”統(tǒng)計(jì)”菜單創(chuàng)建子菜單”出版社”和”出版年月”; 4.為”出版社”菜單項(xiàng)設(shè)置快捷鍵CTRL+B,并為其設(shè)置過程代碼:首先清除屏幕(即主窗口),然后運(yùn)行查詢文件CHAXUN.QPR,為瀏覽菜單設(shè)置命令Select * from jc 5.將下述代碼添加到菜單的適當(dāng)位置,使運(yùn)行該菜單時(shí),首先執(zhí)行此代碼,代碼如下: if used(“js”) select js endif 6. 將下述代碼添加到菜單的適當(dāng)位置,使運(yùn)行該菜單時(shí),最后執(zhí)行此代碼,代碼如下: close tables all 7.為"瀏覽"菜單設(shè)置命令,瀏覽xs表中jg為江蘇的全部數(shù)據(jù) 操作步驟: (1)在項(xiàng)目管理器的"其他"選項(xiàng)卡中選中菜單menu,單擊"修改",在"系統(tǒng)管理"下方添加"教材信息(\<J)",選擇"子菜單"-->創(chuàng)建,在打開的輸入欄中依次輸入編輯,瀏覽,\-,統(tǒng)計(jì) (注:\-是分組標(biāo)記),切換到”系統(tǒng)管理”選擇旁邊的"插入欄",依次選擇"導(dǎo)入"和"導(dǎo)出" (2)點(diǎn)擊"編輯"的"選項(xiàng)",進(jìn)入新選項(xiàng)卡, 在跳過中輸入.t. (3)選中"統(tǒng)計(jì)",選擇"子菜單"-->創(chuàng)建,在打開的輸入欄中依次輸入出版社和出版年月 (4)點(diǎn)擊"出版社"的"選項(xiàng)",進(jìn)入新選項(xiàng)卡, 選中快捷方式,直接按CTRL的同時(shí)在選中B,有時(shí)需要按F12,那么就直接按F12就可以了 選中"出版社",選擇"過程"-->創(chuàng)建,輸入 clear do chaxun.qpr (5)選擇”顯示”à常規(guī)選項(xiàng)à設(shè)置(出現(xiàn)空白框)à確定à在空白框中輸入代碼 (6) 選擇”顯示”à常規(guī)選項(xiàng)à清理(出現(xiàn)空白框)à確定à在空白框中輸入代碼 (7) 操作:選中"瀏覽",選擇"命令"-->創(chuàng)建,輸入select * from xs where jg="江蘇" 題型4:設(shè)計(jì)表單 表單F081E的功能是:用鼠標(biāo)在表單上寫漢字等操作。按下列要求修改表單,修改后表單運(yùn)行時(shí)如圖2所示。 1.設(shè)置表單的有關(guān)屬性,使其標(biāo)題為”鼠標(biāo)寫字”,字號(hào)為19,前景顏色為紅色,字體為華文行楷,邊框樣式屬性為”固定對(duì)話框”,背景顏色為”黃色”。無最小化,最大化按鈕,表單自動(dòng)居中,設(shè)置表單的圖標(biāo)為PC.ICO 2.如圖2所示在表單的上部添加一個(gè)標(biāo)簽控件,用來顯示鼠標(biāo)的位置,并將其對(duì)象名修改為COORD,背景樣式設(shè)置為“透明”。 3.在表單的下部添加一個(gè)文本框控件(對(duì)象名為Textl)和計(jì)時(shí)器控件(對(duì)象名為Timerl),并設(shè)置計(jì)時(shí)器控件的有關(guān)屬性,使得表單運(yùn)行時(shí)觸發(fā)計(jì)時(shí)器事件的間隔時(shí)間為5秒。 4.編寫計(jì)時(shí)器控件的Timer事件代碼,實(shí)現(xiàn)在文本框中顯示當(dāng)前的系統(tǒng)日期和時(shí)間。 5.在表單的下方加一個(gè)命令按鈕為,標(biāo)題為”退出”,編寫其Click事件代碼,功能是釋放表單 6.拖放一個(gè)命令按鈕組至表單,按鈕個(gè)數(shù)為3個(gè),然后設(shè)置其為水平布局 操作步驟: (1)在項(xiàng)目管理器打開文檔選項(xiàng)卡-->表單 (2)選中F081e,點(diǎn)擊旁邊的修改 (3)選中表單,然后在屬性窗口Caption輸入鼠標(biāo)寫字,按回車鍵,再選中FontSize屬性,設(shè)置為19,FontName屬性設(shè)置為華文行楷,再選中 ForeColor(前景顏色),BackColor(背景顏色), BorderStyle屬性設(shè)置2為固定對(duì)話框,MaxButton設(shè)置為.F.無最大化,MinButton設(shè)置為.F.無最小化按鈕, AutoCenter設(shè)置.T.,ICO設(shè)置為PC.ICO (4)從表單控件工具欄將標(biāo)簽控件拖放至表單上, 將Name屬性修改為Coord,將BackStyle屬性修改為透明 (5)從表單控件工具欄將文本框控件與計(jì)時(shí)器控件拖放至表單上,將計(jì)時(shí)器的InterVal屬性設(shè)置5000 (6)雙擊計(jì)時(shí)器,在Timer事件中輸入如下代碼 ThisForm.text1.value=datetime() (7)從表單控件工具欄將命令按鈕控件拖放至表單上, 將命令按鈕的Caption屬性改為退出,雙擊該命令按鈕 進(jìn)入其Click事件,輸入如下代碼: ThisForm.Release (8)從表單控件工具欄將命令按鈕組控件拖放至表單上,選中該命令按鈕組,在屬性窗口設(shè)置其ButtonCount為3,右擊-->生成器-->布局-->水平 常見表單的設(shè)置: 常見表單屬性: AlwaysOnTop 總在打開窗口之上 AlwaysOnBottom 總在其他打開窗口之下 AutoCenter 居中對(duì)齊 BackColor 背景顏色 BorderStyle 0無邊框 1單線邊框 2固定對(duì)話框 3可調(diào)邊框 Caption 表單標(biāo)題 ControlBox 無最大化、最小化、關(guān)閉按紐 Enabled 是否對(duì)事件觸發(fā),返回.t.能對(duì)事件觸發(fā) Fontname 字體 FontSize 字體大小 ForeColor 前景顏色 ICON 圖標(biāo) MaxButton 是否有最大化按紐,.t.表示有,.f.表示沒有 MinButton 是否有最小化按紐,.t.表示有,.f.表示沒有 Name 名稱 width 表單寬度 Height 表單高度 常見方法: thisform.release 釋放表單 題型5:程序改錯(cuò) 操作:在項(xiàng)目管理器中選中代碼à程序àpcodeà修改,然后將代碼錄入,通過調(diào)試來進(jìn)行修改,程序中設(shè)置了兩個(gè)錯(cuò)誤點(diǎn),錄入給1分,一個(gè)錯(cuò)誤點(diǎn)2分 例題:下列程序的功能是:輸入一個(gè)由ASCII碼字符和GB2312字符集中漢字字符組成的字符串后,統(tǒng)計(jì)并顯示出現(xiàn)次數(shù)最多的10個(gè)字符及其出現(xiàn)次數(shù)。要求: 1.將下列程序輸入到項(xiàng)目中的程序文件PCODE中,并對(duì)其中的2條錯(cuò)誤語句進(jìn)行修改; 2.在修改程序時(shí),不允許修改程序的總體框架和算法,不允許增加或減少語句數(shù)目。 CLEAR ACCEPT '請(qǐng)輸入:' TO cccc &&該語句功能是交互式地輸入數(shù)據(jù)(字符串) n=LEN(cccc) IF n=0 RETURN ENDIF CREATE CURSOR TEMP (cc c(2),nn i) &&創(chuàng)建臨時(shí)表存儲(chǔ)字符及出現(xiàn)的次數(shù) FOR i=1 TO n c=SUBS(CCCC,i,1) IF ASC(c)>127 &&漢字字符 c=SUBS(cccc,i,2) i=2 ENDIF LOCATE FOR cc=c IF EOF() INSERT INTO TEMP(cc,nn) VALUE(c,1) Other REPLACE nn WITH nn+1 ENDIF ENDFOR SELECT TOP 10 cc,nn FROM temp ORDER BY 2 DESC |
||||||||||||||||||||||||||||||||||