VF程序設(shè)計知識要點_第1頁
VF程序設(shè)計知識要點_第2頁
VF程序設(shè)計知識要點_第3頁
VF程序設(shè)計知識要點_第4頁
VF程序設(shè)計知識要點_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、VF程序設(shè)計課程知識要點緒論 數(shù)據(jù)庫系統(tǒng)概述1數(shù)據(jù)處理是對數(shù)據(jù)進行的采集、存儲、檢索、加工、變換和傳輸。數(shù)據(jù)管理經(jīng)歷了人工管理、文件系統(tǒng)管理、數(shù)據(jù)庫系統(tǒng)管理三個階段。2數(shù)據(jù)庫(Database,DB)是依照某種數(shù)據(jù)模型組織起來,并存放二級存儲器中的數(shù)據(jù)集合。數(shù)據(jù)庫的基本結(jié)構(gòu)分三個層次:(1)物理數(shù)據(jù)層。(2)概念數(shù)據(jù)層。(3)邏輯數(shù)據(jù)層。數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng) 和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)。 3數(shù)據(jù)庫管理系統(tǒng)(Database management system,DBMS)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,是操作系統(tǒng)支持下的系統(tǒng)軟件。

2、4數(shù)據(jù)庫系統(tǒng)(Database system)實際是一個可運行的存儲、維護和應(yīng)用系統(tǒng)所提供數(shù)據(jù)的軟件系統(tǒng),是存儲介質(zhì)、處理對象和管理系統(tǒng)的集合體,它通常由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用程序和數(shù)據(jù)庫開發(fā)人員和數(shù)據(jù)庫管理人員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言、實用程序以及數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進行。數(shù)據(jù)管理員負責(zé)創(chuàng)建、監(jiān)控和維護整個數(shù)據(jù)庫,使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。5數(shù)據(jù)庫一般有三種數(shù)據(jù)模型:層次型、網(wǎng)狀型、關(guān)系型。在關(guān)系模型中,每一個關(guān)系的邏輯結(jié)構(gòu)都是一個二維表 ,表中的一行稱為一條記錄,表中的一列稱為一個字段

3、 。關(guān)系運算是指從一個關(guān)系(二維表)經(jīng)過關(guān)系運算后,得到一個新的關(guān)系(二維表結(jié)構(gòu)),專門的關(guān)系運算包括:投影、選擇和連接。第1章 Visual FoxPro 6Visual FoxPro是微軟公司推出的數(shù)據(jù)庫應(yīng)用開發(fā)工具,常用版本Visual FoxPro6.0,它是中小型數(shù)據(jù)庫應(yīng)用系統(tǒng)的首選工具。Visual FoxPro的工作方式:交互操作方式和程序執(zhí)行方式。其中交互操作方式又分為命令執(zhí)行方式和菜單選擇方式。向?qū)ё鳛橐环N快捷的設(shè)計工具,通過一組對話框依次與用戶對話,引導(dǎo)用戶分布完成Visual FoxPro的某項任務(wù)。Visual FoxPro有20余種向?qū)Чぞ摺TO(shè)計器用來創(chuàng)建和修改Vis

4、ual FoxPro應(yīng)用程序所需組件,生成器用來在Visual FoxPro應(yīng)用程序組件中添加某些控件,或設(shè)置其屬性。生成器不能獨立使用,必須依附于某個設(shè)計器。7在Visual FoxPro 中,開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)(DBAS),通常為每個DBAS建立一個項目文件(擴展名為.pjx)創(chuàng)建項目文件 create project <項目名>修改項目文件 modify project <項目名>“項目管理器”窗口是由6個選項卡組成,各選項卡的功能如下。(1)“全部”選項卡:用于顯示和管理項目包含的所有文件。(2)“數(shù)據(jù)”選項卡:包含項目中所有的數(shù)據(jù),如數(shù)據(jù)庫、數(shù)據(jù)庫表、自由表、

5、查詢和視圖等。(3)“文檔”選項卡:包含顯示、輸入和輸出數(shù)據(jù)時所涉及到的所有文檔,如表單、報表和標(biāo)簽等。(4)“類”選項卡:顯示和管理用戶自定義類。(5)“代碼”選項卡:顯示與管理各種程序代碼文件,包括擴展名為*.PRG的程序文件和擴展名為*.APP的應(yīng)用程序文件,以及API函數(shù)庫等。(6)“其他”選項卡:顯示與管理有關(guān)的菜單文件、文本文件、位圖文件、圖標(biāo)文件和幫助文件等。第2章 表的基本操作8安裝完Visual Foxpro后,系統(tǒng)自動使用默認值來設(shè)置環(huán)境。要定制自己的系統(tǒng)環(huán)境,使用”工具”菜單下“選項”命令。用戶文件默認路徑的設(shè)置:工具選項“文件位置”選項卡“默認目錄”選項,注意:設(shè)置為默

6、認值,這樣下次開機,系統(tǒng)設(shè)置的默認目錄仍然有效。9數(shù)據(jù)庫由一個以上相互關(guān)聯(lián)的數(shù)據(jù)表組成,其文件擴展名為*.DBC,可以包含一個或多個表、視圖、到遠程數(shù)據(jù)源的連接和存儲過程等。用戶可以同時打開多個數(shù)據(jù)庫,但只能有一個數(shù)據(jù)庫成為當(dāng)前數(shù)據(jù)庫。創(chuàng)建數(shù)據(jù)庫:Create database <數(shù)據(jù)庫名>打開數(shù)據(jù)庫:Open database <數(shù)據(jù)庫名>設(shè)置當(dāng)前數(shù)據(jù)庫:Set database to <數(shù)據(jù)庫名>關(guān)閉數(shù)據(jù)庫:Close database 刪除數(shù)據(jù)庫:Delete database <數(shù)據(jù)庫名> delete tables如果選用 delete

7、 tables 短語時,數(shù)據(jù)庫中的所有數(shù)據(jù)表都將被刪除;否則至刪除數(shù)據(jù)庫文件,原數(shù)據(jù)庫中的表則變成自由表。10數(shù)據(jù)表是用來存儲和管理數(shù)據(jù)記錄,數(shù)據(jù)在表中是按行和列的格式排列的,每行代表唯一的記錄,而每列代表記錄的一個字段。表文件名可以由字母、漢字、數(shù)字和下劃線組成,擴展名*.DBF。另外還有一個備注文件(.fpt),用來存放備注字段和通用字段的內(nèi)容。數(shù)據(jù)表又分為自由表和數(shù)據(jù)庫表,自由表不能建立永久關(guān)系。自由表中字段名由字母、漢字、數(shù)字或下劃線等組成,其長度不超過10個字符。數(shù)據(jù)庫表中可以建立長字段名,最長可達128個字符,長文件名被存儲在*.dbc文件的一個記錄中,它的前10個字符同時還作為字

8、段名保存在*.dbf文件中。數(shù)據(jù)庫表具有自由表所沒有的屬性,如字段級規(guī)則和記錄級規(guī)則、觸發(fā)器和永久關(guān)系等。在定義表結(jié)構(gòu)時,要定義表中每個字段的名稱、類型、寬度、小數(shù)位數(shù)和是否接受空值。表中的一行也稱為元組,表中的一列也稱為屬性。一個漢字占2個字節(jié),而整數(shù)型占4 個字符。某屬性不是該關(guān)系的主關(guān)鍵字,卻是另一個關(guān)系的主關(guān)鍵字稱為外部關(guān)鍵字,屬性的取值范圍稱為域。11建立一張新的數(shù)據(jù)表,可以通過三種途徑,即表設(shè)計器、表向?qū)Ш兔?。命令方式:CREATE TABLE | DBF 表名稱NAME 長表名FREE(字段名1 字段類型(字段寬度,精度)NULL|NOT NULL,字段名2【例】要創(chuàng)建學(xué)生檔案

9、表(xsda.dbf)結(jié)構(gòu),可按以下命令操作。CREAT TABLE xsda (編號 N(6),學(xué)號 C(6),姓名 C(10),性別 F(1),出生年月 D(8),入學(xué)成績 N(6,2),簡歷 M(4)備注型字段和通用型字段的長度固定為4個字節(jié),其內(nèi)容都存放在與表同名的備注文件(*.fpt)中。打開表:use 表名關(guān)閉表:close all | tablesall修改表結(jié)構(gòu)的命令P64(1)添加一個字段:Alter table dx add 備注 m(4)(2)修改一個字段:Alter table sb alter 編號 C(6)(3)刪除一個字段:Alter table sb drop

10、簡歷(4)重命名一個字段:Alter table sb rename 入學(xué)成績 to 高考總分12插入記錄(1)Append blank 向表的末尾加入一條空記錄。(2)Insert blank before 指在表的指定位置上插入一條新的記錄。選用BEFORE選項時,表示在當(dāng)前記錄前插入,否則在當(dāng)前記錄后插入。完整命令格式:INSERT into 表名(字段名1,字段名2,)VALUES(表達式1 ,表達式2, )例:比較下面兩種形式的差別Insert into xsda; values(1050,”WJ050”,”劉流”,.F.,08/01/88,603.50,”甘肅蘭州”)Insert

11、into xsda(編號,學(xué)號,姓名,出生年月); values(1051,”WJ051”,”武婷”,04/05/88)13修改和替換記錄的內(nèi)容REPLACEWITH命令p59 REPLACEWITH命令可以在不打開任何編輯窗口的情況下,直接對表進行字段值的修改和替換,其格式為:REPL 字段1 WITH 表達式1 ADDITIVE,字段2 WITH 表達式2ADDITIVE<范圍>for<條件>while<條件> 其中,ADDITIVE選項表示可將新加入的內(nèi)容添加到原內(nèi)容的后面,比如在備注文件的后面加上新的文字。例:給每位男生生活補助加20元use xsd

12、areplace 生活補助 with生活補助+20 for 性別=.T.replace 工資 with 工資+500 for 職稱=“教授“14LISTDISPLAY <范圍>FOR <條件>WHILE <條件>FIELDS<表達式表>DISPLAY命令用于在Visual Foxpro 的主窗口中,顯示當(dāng)前記錄指針?biāo)赶虻挠涗洠梢院唽懗蒁ISP;而LIST命令則列出表中的所有記錄,它與DISPLAY ALL功能基本相同。表示范圍的短語有all、next、record 、rest例:當(dāng)前記錄號是10,若要顯示當(dāng)前記錄:Display若要顯示10

13、、11、12、13、14號記錄的內(nèi)容,應(yīng)使用的命令是:LIST NEXT 5。15表記錄的定位(1)絕對定位 GO RECORD表達式IN 工作區(qū) IN 表別名 GOTO RECORD表達式IN 工作區(qū) IN 表別名例如:go 3 指向第三條記錄GO TOP 將記錄指針定位在表的第一個記錄(TOP)GO BOTTOM 將記錄指針定位在表的最后一個記錄(BOTTOM)注意:表的最后一條記錄并不等于表尾,因為表的末尾是一個指針,它指示下一條新記錄將存儲的位置,也可以把它看做是一條空記錄。所以,程序中雖然用了GO BOTTOM命令,但函數(shù)EOF()返回的值是.F.。 記錄指針標(biāo)志可以理解為保存當(dāng)前記

14、錄號的變量,它的初值總是1,不可能為0或負數(shù),最大值是表中記錄的總數(shù)加1。如果剛打開的表中沒有記錄,bof(),eof()的值為 .T. ,recno()的值為1如果剛打開的表中沒有記錄,bof(),eof()的值為 .F. ,recno()的值為1(2)相對定位 SKIP <n> 是指把指針從當(dāng)前位置開始,相對于當(dāng)前記錄向前或向后移動若干個記錄位置。當(dāng)n為正值時,則向下移動;當(dāng)n為負值時,則向上移動;當(dāng)無n時,則向下移動1個,如下所示。SKIP&&記錄指針指向當(dāng)前記錄的下一個記錄SKIP -2&&記錄指針指向當(dāng)前記錄之前的第2個記錄SKIP 5 &

15、amp;&記錄指針指向當(dāng)前記錄之后的第5個記錄已知當(dāng)前表中有20條記錄,當(dāng)前記錄為第3號,在執(zhí)行命令skip 7后,當(dāng)前為第10號記錄?16記錄的刪除 P68(1)邏輯刪除 DELETE(2)物理刪除 pack 將打上刪除標(biāo)記(邏輯刪除)的記錄作物理刪除(3)恢復(fù)記錄 recall(4)清除記錄ZAP 第3章 查詢與統(tǒng)計17數(shù)據(jù)表的排序SORT ON <字段1>/A /C /D,<字段2>/A /C /D TO <文件名><范圍>FOR <條件>WHILE <條件>FIELDS <字段表>ASCENDI

16、NGDESCENDING/A為升序排序,指定/D為降序排序,默認為升序排序。/C 排序時不區(qū)分字母大小寫。排序與索引的區(qū)別是:排序?qū)a(chǎn)生一個新的數(shù)據(jù)表,新表與原表不再有任何聯(lián)系,而索引是產(chǎn)生索引文件,通過指針相關(guān)聯(lián),索引查詢,先通過關(guān)鍵字排序在索引中順序查找相應(yīng)的記錄號,再通過關(guān)聯(lián)在原表中找到相應(yīng)的記錄。18索引類型:在Visual FoxPro中,它包括主索引、候選索引、普通索引和惟一索引四種。主索引:組成主索引關(guān)鍵字的字段或表達式,在表的所有記錄中不能有重復(fù)的值。主索引只適用于數(shù)據(jù)庫表的結(jié)構(gòu)復(fù)合索引中。自由表中不可以建立主索引,在數(shù)據(jù)庫中的每個表,可以且只能建立一個主索引。Visual F

17、oxPro 不允許在關(guān)鍵字字段中有 重復(fù)值 或 空值 。 在VFP中,用命令可以創(chuàng)建候選索引、普通索引和惟一索引,但是不可以創(chuàng)建主索引。Visual FoxPro支持單索引文件(.idx)和復(fù)合索引文件(.cdx)創(chuàng)建單索引的命令是INDEX ON <索引關(guān)鍵字表達式> to <單索引文件> for條件。例:index on 編號 to bhao復(fù)合索引文件包括結(jié)構(gòu)復(fù)合索引文件、獨立復(fù)合索引文件。結(jié)構(gòu)復(fù)合索引文件與表文件同名,并且隨表的打開而打開,隨表的關(guān)閉而關(guān)閉建立結(jié)構(gòu)復(fù)合索引:p75Use sbIndex on 價格 tag jg Index on 部門+str(價

18、格,9,2) tag bmjg & 復(fù)合索引表達式類型要一致。使用索引(設(shè)置當(dāng)前索引)Set order to jg建立獨立復(fù)合索引文件的命令I(lǐng)ndex on <索引關(guān)鍵字表達式> tag <索引標(biāo)識名> of <非結(jié)構(gòu)復(fù)合索引文件名>for <條件>Index on 入學(xué)成績 tag cj of sbcj19順序查詢P78LOCATE FOR 邏輯表達式1 范圍 WHILE 邏輯表達式2 NOOPTIMIZECONTINUELOCATE FOR在找到符合條件的第一條記錄以后,就停止查找,而CONTINUE命令則告訴系統(tǒng)繼續(xù)往下查找。Fo

19、und()函數(shù)用來表示locate 命令是否找到符合條件的記錄。例如:p129 將sb表中的第1個非主要設(shè)備的價格減少10%。Use sbLocate for not 主要設(shè)備If found()Display 名稱,價格Replace 價格 with 價格*(1+0.1)Display 名稱,價格索引查詢Seek <表達式>例 use sb Inder on 編號 tag bh Seek “0001”20工作區(qū)p80工作區(qū)與數(shù)據(jù)表一一對應(yīng)關(guān)系,一個工作區(qū)中只能打開一張表,一張表也只能在一個工作區(qū)中打開。Use sb in 3Select 0Use sb21數(shù)據(jù)表的統(tǒng)計p88(1)

20、COUNT范圍 FOR <條件>WHILE <條件>TO <內(nèi)存變量>功能:統(tǒng)計指定范圍內(nèi)滿足條件的記錄個數(shù)。(2)TOTAL 0N <關(guān)鍵字> TO <文件名><范圍>FOR <條件>WHILE <條件>FIELDS <字段表>功能:對當(dāng)前數(shù)據(jù)表中指定的數(shù)值型字段進行分類求和,并生成一個匯總數(shù)據(jù)表。(3)SUM <表達式表><范圍>FOR <條件>WHILE <條件>TO <內(nèi)存變量表>功能:在指定范圍內(nèi)滿足條件的所有記錄,計

21、算出各記錄對應(yīng)于指定表達式的值,再分別對這些值求和.?MAX(74,93,-23,45)的值是93,(4)AVERAGE <表達式表><范圍>FOR <條件>WHILE <條件> TO <內(nèi)存變量表>功能:將指定范圍內(nèi)滿足條件的所有記錄,計算出各記錄所對應(yīng)于指定表達式的值,再分別對應(yīng)這些值求平均值。22字段有效性規(guī)則 設(shè)置字段掩碼p113“輸入掩碼”(Input Mask)是指定字段的值必須遵守的標(biāo)點、空格和其他格式的要求?!拜斎胙诖a”是字段或者控件的一種屬性,用以限制或控制用戶輸入數(shù)據(jù)的格式。與“格式”相同,“輸入掩碼”屬性也對應(yīng)著

22、各種格式化代碼。 9 只允許輸入數(shù)字若要輸入類似(010)123-45678這樣的號碼,則需要在“輸入掩碼”輸入(999)999-99999。X 只允許輸入字符23記錄的有效性規(guī)則 P113記錄有效性規(guī)則是用來設(shè)置同一記錄不同字段數(shù)據(jù)之間所要滿足的邏輯關(guān)系。24關(guān)系的類型:“一對一”關(guān)系、“一對多”關(guān)系、“多對多”關(guān)系表與表之間的連接有四種類型:內(nèi)部聯(lián)接(inner join)左聯(lián)接(leftout join) 右聯(lián)接(rightout join) 完全聯(lián)接(fullout join)25關(guān)系的完整性分為域完整性、實體完整性、參照完整性三種。P112域完整性:即字段級驗證規(guī)則;實體完整性:即記

23、錄級驗證規(guī)則;參照完整性是Visual FoxPro定義的一個規(guī)則系統(tǒng),通過使用這個規(guī)則,系統(tǒng)來確保相關(guān)表中記錄之間關(guān)系的有效性,并且不會意外地刪除或更改相關(guān)數(shù)據(jù),使相關(guān)表之間保持數(shù)據(jù)一致性。具體說,參照完整性規(guī)則包括更新規(guī)則、插入規(guī)則、刪除規(guī)則。第4章 結(jié)構(gòu)化程序設(shè)計26常量的類型有字符型、數(shù)值型、貨幣型、日期型、日期時間型、邏輯型等多種類型。(1)字符型常量的定界符有' '、" "、 (2)日期型、日期時間型常量的定界符(3)邏輯型常量 .T. .F.Visual Foxpro中含有系統(tǒng)變量、字段變量、內(nèi)存變量三種系統(tǒng)對象變量,并且明確了他們的分工。27

24、. 一個數(shù)據(jù)表文件最多可有128個字段變量,且它們的總長度不得超過4000個字節(jié)。在數(shù)據(jù)表中有一個專門用來指示當(dāng)前記錄的記錄指針,字段變量的當(dāng)前值就是當(dāng)前記錄中該字段的值。PARAMETERS命令聲明的形參變量被看作模塊程序中建立的私有變量;LPARAMETERS命令聲明的形參變量被看作模塊程序中建立的局部變量。28日期時間表達式+:加(秒或天數(shù))。2007/12/01 10:38:20AM+30結(jié)果為2007/12/01 10:38:50AM;而2007/12/01+30結(jié)果為2007/12/31:減(秒或天數(shù)),其操作同上注意:兩個日期不能相加,2007/12/01 +2007/12/31

25、 是錯的29字符型表達式 + - $ 例 P51+:用于連接兩個字符表達式,結(jié)果為將兩個字符型數(shù)據(jù)首尾相接的字符型數(shù)據(jù)。:用于連接兩個字符表達式,同時刪除第一個字符串的尾部空格。$:用于兩個字符表達式之間的比較,判斷第一個字符數(shù)據(jù)是否完全包含在第二個字符型數(shù)據(jù)中。其用法為<expC1> $ <expC2>,如果<expC2>中包含有<expC1>,則表達式值為真(.T),否則為假(.F.)。關(guān)系表達式 < > = <> ! = p50 表2.6邏輯表達式 and or not P50表2.630常見系統(tǒng)函數(shù) P53(1)A

26、T(<字符表達式1>,<字符表達式2>),<數(shù)字>)檢索字符表達式1在字符表達2中的位置,數(shù)字表示第幾次出現(xiàn)例:? AT("科技","Help科技") 結(jié)果是:5?AT(“a”,”farmarom”,2) 結(jié)果是:5(2)LEN(<字符表達式>) 測定字符串的長度 例: ? LEN("What's your name") 結(jié)果是:16(3)BETWEEN(<被測試的表達式>,<低限>,<高限>) 測定表達式是否在兩個表達式之間,返回的結(jié)果為邏輯

27、型 ? BETWEEN(3*6,12,25) 結(jié)果是:.T.(4)EOF(<工作區(qū)號>|<表別名>)BOF(<工作區(qū)號>|<表別名>)RECNO(<工作區(qū)號>|)(5)substr( <源字符表達式>,<起始位置>,<子串長度>) ?substr(“workroom”,5,2) 結(jié)果是:ro left() right() trim() Str() asc() chr() val() int() mod() round() abs( ) sqrt() Max() min() Date() year()

28、 mouth() day() time() ctod() dtoc() datetime() Iif()分析復(fù)雜表達式的運算結(jié)果(主要理清運算符的運算的優(yōu)先次序):例:表達式“ab” $”cab” and 9+3>12 or 3+8>12的結(jié)果為: .T. 31程序文件的擴展名為*.prg命令方式:MODIFY|MODI COMMAND|COMM路徑 文件名運行程序格式:DO <程序名>32賦值語句:STORE <表達式> TO <名稱列表> 或 <名稱> = <表達式>STORE 40*2-3 TO A,B,Ctoday

29、 = 20070122 today = CTOD("01222007")33? | ?命令格式:? | ? 表達式 FUNCTION 參數(shù) FONT 字體名,字體大小功能:在屏幕上顯示表達式的內(nèi)容。說明:? 表達式:用于對表達式進行計算,然后在屏幕上新起一行顯示計算結(jié)果; ? 表達式:不換行而接著當(dāng)前行直接輸出。34INPUT <字符表達式> TO <內(nèi)存變量>功能:該命令等待用戶從鍵盤輸入數(shù)據(jù),可以輸入任意合法的表達式。輸入字符串時必須加定界符' '、" ",輸入邏輯型常量時要用圓點定界(如:.T.、.F.)。A

30、CCEPT <字符表達式> TO <內(nèi)存變量>功能:該命令等待用戶從鍵盤輸入字符串。該命令只能接收字符串。在輸入字符串時不需要加定界符。35 <行,列> SAY <表達式>|GET <變量> RANGE <表達式1>,<表達式2>VALID <條件>功能:在屏幕上指定的行、列位置輸出指定表達式的值,并且將輸入的數(shù)據(jù)保存到所指定的變量中。說明: <行,列>用于指定在屏幕上輸出的行、列位置坐標(biāo),行和列均應(yīng)是數(shù)值表達式,并且系統(tǒng)將自動對其取整。 SAY <表達式>子句是用來在屏幕上

31、指定的行、列位置輸出指定表達式的值。 GET <變量>子句是用來在屏幕上指定的行、列位置輸入數(shù)據(jù)給指定的變量,且必須與READ命令配套使用。36分支結(jié)構(gòu)程序設(shè)計IF.ELSE.ENDIF和DO CASE.ENDCASE37循環(huán)結(jié)構(gòu)程序設(shè)計 當(dāng)型循環(huán)結(jié)構(gòu) 步長型循環(huán)結(jié)構(gòu) 掃描型循環(huán)結(jié)構(gòu)EXIT是無條件結(jié)束循環(huán)命令,使程序跳出DO WHILEENDDO循環(huán),而去執(zhí)行ENDDO后的第一條命令。EXIT只能在循環(huán)結(jié)構(gòu)中使用,但是可以放在DO WHILE ENDDO中任何地方。 LOOP控制直接返回到DO WHILE語句,而不執(zhí)行LOOP和ENDDO之間的命令。因此LOOP稱為無條件循環(huán)命令

32、,只能在循環(huán)結(jié)構(gòu)中使用。38子程序、過程、自定義函數(shù)的調(diào)用 Do <子程序名> With <實際參數(shù)表>例題 5-23 DO <過程名> With <實際參數(shù)表>例題 5-24 <函數(shù)名><參數(shù)表> 例題 5-25在程序中沒有通過PUBLIC和LOCAL命令聲明全局變量和局部變量,而由系統(tǒng)自動隱含建立的變量都是私有變量。全局變量又稱公共變量,在任何模塊中都可使用的變量。私有變量僅在定義它的模塊以及下層模塊中有效,而在定義它的模塊運行結(jié)束時自動清除。本地變量又稱局部變量,只能在建立它的模塊中使用,而且不能在高層或底層模塊中使

33、用,該模塊運行結(jié)束時本地變量就自動釋放。第5章 菜單設(shè)計39菜單同樣有著自己的組織結(jié)構(gòu)(樹型結(jié)構(gòu)),它是由菜單欄、菜單標(biāo)題、菜單和菜單項組成創(chuàng)建菜單:Create Menu結(jié)果欄。選定菜單項的類別,包括有: 子菜單:即此菜單項下還有子菜單,單擊右邊的編輯按鈕可編輯子菜單; 命令:選擇此菜單執(zhí)行一條命令,可調(diào)用一個程序; 主菜單名或菜單項:給菜單對象設(shè)置一個名字,以方便對它的引用; 過程:定義一個與菜單項相關(guān)聯(lián)的過程。在“菜單設(shè)計器”窗口中設(shè)計的菜單是保存在一個以*.mnx為文件擴展名的數(shù)據(jù)表中,該表存儲與菜單系統(tǒng)有關(guān)的所有信息,因此這時菜單并不能被調(diào)用。要在應(yīng)用程序中使用菜單,必須先通過*.m

34、nx表來生成相應(yīng)的程序代碼。單擊菜單“菜單”“生成”命令,Visual FoxPro提示將菜單系統(tǒng)以*.mnx 為文件擴展名保存。在保存菜單系統(tǒng)之后,Visual FoxPro 提示一個帶有*.mpr 擴展名的輸出文件,此文件將包含已生成的菜單程序。生成相應(yīng)的菜單程序后,就可以在程序或命令窗口中使用以下代碼來執(zhí)行菜單。DO <菜單程序.MPR>第6章 表單設(shè)計 40面向?qū)ο蟪绦蛟O(shè)計(Object Oriented Programming,OOP)方式,它以對象和數(shù)據(jù)結(jié)構(gòu)為程序設(shè)計的中心,而不是以操作和過程為中心。OOP方式用“對象”表示各種事物,用“類”表示對象的抽象,用“消息”實

35、現(xiàn)對象之間的聯(lián)系,用“方法”實現(xiàn)對象處理的過程。類是對象的抽象描述;對象是類的實例。類具有繼承性、封裝性和多態(tài)性等三個特征。Visual FoxPro中的應(yīng)用程序必須要創(chuàng)建一個事件循環(huán),事件循環(huán)由READ EVENTS命令建立,由CLEAR EVENTS停止事件處理。41絕對引用是通過提供對象的完整容器層次來引用對象,若要使表單中的控件無效,需要提供以下地址:Formset.Form.PageFrame.Page.Grid.Column.Control.Enabled=.F.相對引用是指在容器層次中引用對象時,可以通過快捷方式指明所要處理的對象。例如:(1)THISFORMSET.Frml.C

36、mdl.Caption"關(guān)閉":表示將本表單集Frml表單中Cmdl對象的標(biāo)題(Caption)屬性設(shè)置為“關(guān)閉”。(2)THISFORM.Cmdl.Caption"關(guān)閉":表示將本表單的Cmdl對象的標(biāo)題(Caption)屬性設(shè)置為“關(guān)閉”。(3)THIS.Caption"關(guān)閉":對于需要改變標(biāo)題的控件,表示將本對象的標(biāo)題(Caption)屬性設(shè)置為“關(guān)閉”。(4)THIS.Parent.BackColorRGB(192,0,0):將本對象的父對象背景色設(shè)置為暗紅色。42表單,即用戶與計算機進行交流的一種屏幕界面,用于數(shù)據(jù)的顯示、輸

37、入、修改。表單集,是一個對象,可以包含多張表單的容器。 數(shù)據(jù)環(huán)境,在打開或修改一個表單或報表時需要打開的全部表、視圖和關(guān)系,它以窗口形式(類似于數(shù)據(jù)庫設(shè)計器)反映出與表單有關(guān)的表、視圖、表之間關(guān)系等內(nèi)容。表單的常用方法:cls hide release refresh show有關(guān)表單事件引發(fā)的顯示順序:load(對象被創(chuàng)建之前發(fā)生) init(對象被創(chuàng)建時發(fā)生) active(激活對象)43表單創(chuàng)建、編輯 Create form <表單名> Modify form <表單名> 保存表單將產(chǎn)生兩個文件:*.scx表單文件 和 *.sct 表單備注文件 運行表單 Do f

38、orm <表單名>44常用控件的常用屬性設(shè)置p186表單名.控件名.屬性名=屬性值Tmand1.caption=”姓名”在程序中調(diào)用事件格式的代碼是 :表單名.對象名.事件名第9章 報表設(shè)計45報表是通過打印機將所需的記錄用書面形式輸出來的一種方式。包括數(shù)據(jù)源和布局,數(shù)據(jù)源為數(shù)據(jù)庫中的表或視圖、查詢或臨時表;報表布局定義報表的打印格式。報表保存后系統(tǒng)會產(chǎn)生兩個文件:報表定義文件(* .FRX )和.報表備注文件(*.FRT)。46報表設(shè)計的帶區(qū): 報表設(shè)計的三個基本帶區(qū):頁標(biāo)頭、細節(jié)和頁注腳。三 程序填空題1、程序的功能是求1到100之間所有整數(shù)的平方和并輸出結(jié)果,請?zhí)羁铡?S=0

39、 X=1 DO WHILE X<=100 S=S+X2X=X+1 ENDDO ? S RETURN2、自定義計算階乘n!的函數(shù)。FUNCTION JCPARA NUMS=1FOR N=1 TO NUM S=S*N ENDFORRETURN S3、學(xué)生成績的分檔次統(tǒng)計。從鍵盤上輸入分數(shù),按059、6069、7079、8089、9099和100分六個檔次統(tǒng)計。STORE 0 TO K0,K6,K7,K8,K9,K10INUPUT “請輸入分數(shù):” TO A DO CASE CASE A<60 K0=K0+1 CASE A<70 K6=K6+1 CASE A<80 K7=K7

40、+1 CASE A<90 K8=K8+1 CASE A<100 K9=K9+1 OTHERWISE K10=K10+1 ENDCASE4下面程序功能是按姓名提供學(xué)生成績的查詢,請?zhí)羁?。USE STUDENTACCEPT”請輸入待查學(xué)生姓名:” TO XMDO WHILE .NOT. EOF( )IF 姓名=XM ?”姓名:”姓名,”成績:”STR(成績,3,0)ENDIFSKIPENDDOSET TALK ON5統(tǒng)計 “RCDA”數(shù)據(jù)表中工資超過3000元的人數(shù)。 USE RCDA RC=0 DO WHILE .NOT. EOF() IF 工資>3000 RC=RC+1 EN

41、DIF SKIP ENDDO 2,30 SAY “工資在3000元以上的人數(shù):” 2,60 SAY RC 6.鍵盤輸入任意表名(設(shè)表中均有“分數(shù)”字段,數(shù)據(jù)類型為N),再輸入一個分數(shù),在該表中查找此分數(shù),如果找到顯示該記錄的姓名,否則顯示“沒有找到”。 ACCEPT TO A        INPUT    TO  N     USE  &A     

42、;  LOCATE FOR 分數(shù)=n  /在打開表中查找分數(shù)字段值等于鍵盤輸入數(shù)值N的記錄IF  FOUND( ) ?   姓名       ELSE ? “沒有找到”     ENDIFUSE        7.設(shè)表文件圖書.DBF包含如下字段:書名(字符型),作者(字符型),出版日期(日期型)。

43、下面程序的功能是:列出圖書表中的每個記錄。請將程序完善。CLEAR USE 圖書  DO WHILE .T.IF EOF( ) EXIT ENDIF? 書名+作者+ DTOC(出版日期)  SKIP ENDDOUSERETURN8設(shè)教師.DBF用于存放教師信息,其字段有:姓名(字符型),性別(字符型),工資(數(shù)值型)。下面程序的功能是:列出教師表中的每個記錄。請將程序完善。SET TALK OFFCLEARUSE 教師 GO BOTTOMDO WHILE .NOT.BOF( ) ? 姓名+性別+ STR (工資,7,2) SKIP -1 END

44、DOUSESET TALK ONRETURN 9實現(xiàn)分段函數(shù):Y=1(X>0)Y=0(X=0)Y=-1(X<0)根據(jù)輸入X的值輸出Y的值。請將程序填寫完整。SET TALK OFFINPUT “輸入X” TO XIF X>=0 IF X>0Y=1 ELSE Y=0ENDIFELSE Y=-1 ENDIF?YCANCEL10、設(shè)供應(yīng)商.DBF用于存放供應(yīng)商信息,其字段有:姓名(字符型),電話(字符型),地址(字符型)。下面程序的功能是:查找所有姓李的電話號碼中含有123的供應(yīng)商的信息。請將程序填寫完整。SET TALK OFFCLEARUSE 供應(yīng)商 DO WHILE&#

45、160; NOT EOF()IF SUBSTR(姓名,1,2)=“李” AND   “123” $ 電話 ?姓名+電話+地址 ENDIF SKIP ENDDOUSESET TALK ONRETURN 11設(shè)已建立一個日銷售文件RXS(營業(yè)員代號,商品名,銷售量,價格,營業(yè)額),每筆營業(yè)產(chǎn)生一個記錄,但營業(yè)額字段的值為填寫而為0.00,編程查詢某營業(yè)員的全天營業(yè)額。 ClearSet talk offUse rxs.dbfReplace all 營業(yè)額with _銷售量*價格 5,10 say “查詢營業(yè)員的全天營業(yè)額”?Input “請輸入營業(yè)員代號:” to _dh_ _

46、Sum 營業(yè)額 for 營業(yè)員代號=dh to _je _9,4 say “營業(yè)員” + dh + “的全天營業(yè)額是:” + str(je,10,2)+”元”Use Set talk on12下面程序功能是按姓名提供學(xué)生成績的查詢,請?zhí)羁铡SE STUDENTACCEPT”請輸入待查學(xué)生姓名:” TO XMDO WHILE .NOT. EOF() 或者 !EOF() IF 姓名=XM ?”姓名:”姓名,”成績:”STR(成績,3,0)ENDIFSKIP ENDDOSET TALK ON13在表文件(sbsy.dbf)中查找數(shù)量少于16,且編號字段的第一位字符為“A”的記錄,顯示符合條件的記錄

47、號。表文件內(nèi)容如下:記錄號 編號 數(shù)量 1 A103 152 A012 85 3 A210 67 4 B101 50 5 A120 65Set talk offUse sbsySet order on tag 編號Locate for _數(shù)量<16_Do while _not eof( )_ If substr(編號,1,1)_=“A”? 編號 Endif_continue_EnddouseSet talk on14在主程序中,通過調(diào)用過程計算園的面積。Set decimals to 2area=0Input “請輸入半徑:” to rDo js with _r_? “area=”,ar

48、eaReturn Procedure jsParameters r,sS=_PI()*r*r_return四、寫出程序運行結(jié)果1、【程序清單】SET TALK OFFCLEARINPUT "請輸入工作時間:" TO SJIF SJ>150 GZ=SJ*15+(SJ-150)*15*0.1ELSE IF SJ<120 GZ=SJ*15-300 ELSE GZ=SJ*15 ENDIFENDIF?“本月應(yīng)發(fā)工資:"+STR(GZ,8,2)RETURN當(dāng)輸入工作時間為100時,結(jié)果:本月應(yīng)發(fā)工資::1200.002. A=10B=20C=30IF A>B

49、IF C>AC=A+BELSEC=A-BENDIFENDIF? C結(jié)果: 30 3、【程序清單】 X=2.5DO CASE CASE X>1 Y=X+2 CASE X>2 Y=X-1ENDCASE? Y結(jié)果:4.54、【程序清單】STORE 5 TO NSTORE 1 TO T DO WHILE N>0 STORE T*N TO T STORE N-1 TO N ENDDO ? “X=”,STR(T) 結(jié)果:X= 1205計算托運行李費用。若X<=50kg,則運費按0.25元/KG計;若X>50KG,則大于50KG的部分,按每公斤0.5元計。 INPUT “

50、請輸入行李重量:”TO XIF X>50 Y=0.5*(X-50)+0.25*50 ELSE Y=0.25*X ENDIF10,10 SAY “行李運費:”+STR( Y)結(jié)果:7、【程序清單】S=0P=5DO WHILE P<=10 P=P+1 S=S+P*2ENDDO?S結(jié)果:1028、【程序清單】P = 0FOR N = 1 TO 49IF N>10EXITENDIFIF MOD (N, 2) = 0P = P+NENDIFENDFOR?“P=”, PRETURN結(jié)果:P=30 9、【程序清單】K=1A1=10A2=A1+5A3=A1-5A4=A1+A2S=100DO

51、WHILE K<5STORE“A”+STR(K,1) TO MS=S+2*&MK=K+2ENDDO?SRETURN結(jié)果:130 10【程序清單】S=0M=-1K=1DO WHILE K<=5M=-MIF M>0S=S*KELSES=S+KENDIFK=K+1ENDDO?M,S結(jié)果: 1 50 11【程序清單】SET TALK OFFK=1A1=10A2=A1+5A3=A1-5A4=A1+A2S=100DO WHILE K<5STORE“A”+STR(K,1) TO MS=S+2*&MK=K+2ENDDO?SRETURN結(jié)果:13012、【程序清單】Set

52、 talk offDimension a(6)For k=1 to 6 A(k)= 20-2*kEndforK=5Do while k>=1 A(k)=A(k)-A(k+1) K=k-1Enddo? A(1), A(3), A(5)Set talk on程序運行的結(jié)果: 6 4 2 13【程序清單】STORE 0 TO K, SDO WHILE k<20IF MOD(K,4)=2K=K+3LOOPELSES=S+KENDIFIF K>12EXITENDIFK=K+3ENDDO ?S結(jié)果: 39 14【程序清單】 主程序pm.prgSet talk offStore 2 to

53、x1,x2,x3X1=x1+1Do pm1? x1+x2+x3Return子程序pm1.prgX2=x2+1Do mp2X1=x1+1Return子程序pm2.prgX3=x3+1Return to master程序運行的結(jié)果: 9 。15【程序清單】STORE 0 TO S,T,PFOR K=1 TO 10DO CASECASE INT(K/2)=K/2T=T+KCASE INT(K/5)=K/5S=S+KOTHERWISEP=P+KENDCASEENDFOR?S,T,P結(jié)果: 5 30 20 五寫出SQL查詢語句標(biāo)準的SQL語言包括四個部分內(nèi)容。P64 P1091.數(shù)據(jù)定義:用于定義和修改基本表、定義視圖和定義索引。如:Create(建立)、Drop(刪除)、Alter(修改)。例如:創(chuàng)建一張新的學(xué)生基本信息表(xs.dbf)create table xs (編號 N(4),姓名 C(6),出生年月 D(8),入學(xué)成績 N(6,2),城市 C(10),簡歷 m(4)修改表結(jié)構(gòu),(1)添加一個新的字段:性別 L(1)ALTER TABLE XS ADD性別 L(1)(2)將編號字段類型數(shù)值(N)改為字符(c)ALTER TABLE XS ALTER 編號 C(4)(3)將城市字段改名為通訊地址

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論