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

下載本文檔

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

文檔簡(jiǎn)介

1、VF程序設(shè)計(jì)課程知識(shí)要點(diǎn)緒論 數(shù)據(jù)庫系統(tǒng)概述1數(shù)據(jù)處理是對(duì)數(shù)據(jù)進(jìn)行的采集、存儲(chǔ)、檢索、加工、變換和傳輸。數(shù)據(jù)管理經(jīng)歷了人工管理、文件系統(tǒng)管理、數(shù)據(jù)庫系統(tǒng)管理三個(gè)階段。2數(shù)據(jù)庫(Database,DB)是依照某種數(shù)據(jù)模型組織起來,并存放二級(jí)存儲(chǔ)器中的數(shù)據(jù)集合。數(shù)據(jù)庫的基本結(jié)構(gòu)分三個(gè)層次:(1)物理數(shù)據(jù)層。(2)概念數(shù)據(jù)層。(3)邏輯數(shù)據(jù)層。數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng) 和數(shù)據(jù)庫系統(tǒng)三個(gè)階段,其中數(shù)據(jù)獨(dú)立性最高的階段是數(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)實(shí)際是一個(gè)可運(yùn)行的存儲(chǔ)、維護(hù)和應(yīng)用系統(tǒng)所提供數(shù)據(jù)的軟件系統(tǒng),是存儲(chǔ)介質(zhì)、處理對(duì)象和管理系統(tǒng)的集合體,它通常由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用程序和數(shù)據(jù)庫開發(fā)人員和數(shù)據(jù)庫管理人員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言、實(shí)用程序以及數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進(jìn)行。數(shù)據(jù)管理員負(fù)責(zé)創(chuàng)建、監(jiān)控和維護(hù)整個(gè)數(shù)據(jù)庫,使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。5數(shù)據(jù)庫一般有三種數(shù)據(jù)模型:層次型、網(wǎng)狀型、關(guān)系型。在關(guān)系模型中,每一個(gè)關(guān)系的邏輯結(jié)構(gòu)都是一個(gè)二維表 ,表中的一行稱為一條記錄,表中的一列稱為一個(gè)字段

3、 。關(guān)系運(yùn)算是指從一個(gè)關(guān)系(二維表)經(jīng)過關(guān)系運(yùn)算后,得到一個(gè)新的關(guān)系(二維表結(jié)構(gòu)),專門的關(guān)系運(yù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è)計(jì)工具,通過一組對(duì)話框依次與用戶對(duì)話,引導(dǎo)用戶分布完成Visual FoxPro的某項(xiàng)任務(wù)。Visual FoxPro有20余種向?qū)Чぞ?。設(shè)計(jì)器用來創(chuàng)建和修改Vis

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

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

6、認(rèn)值,這樣下次開機(jī),系統(tǒng)設(shè)置的默認(rèn)目錄仍然有效。9數(shù)據(jù)庫由一個(gè)以上相互關(guān)聯(lián)的數(shù)據(jù)表組成,其文件擴(kuò)展名為*.DBC,可以包含一個(gè)或多個(gè)表、視圖、到遠(yuǎn)程數(shù)據(jù)源的連接和存儲(chǔ)過程等。用戶可以同時(shí)打開多個(gè)數(shù)據(jù)庫,但只能有一個(gè)數(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í),數(shù)據(jù)庫中的所有數(shù)據(jù)表都將被刪除;否則至刪除數(shù)據(jù)庫文件,原數(shù)據(jù)庫中的表則變成自由表。10數(shù)據(jù)表是用來存儲(chǔ)和管理數(shù)據(jù)記錄,數(shù)據(jù)在表中是按行和列的格式排列的,每行代表唯一的記錄,而每列代表記錄的一個(gè)字段。表文件名可以由字母、漢字、數(shù)字和下劃線組成,擴(kuò)展名*.DBF。另外還有一個(gè)備注文件(.fpt),用來存放備注字段和通用字段的內(nèi)容。數(shù)據(jù)表又分為自由表和數(shù)據(jù)庫表,自由表不能建立永久關(guān)系。自由表中字段名由字母、漢字、數(shù)字或下劃線等組成,其長(zhǎng)度不超過10個(gè)字符。數(shù)據(jù)庫表中可以建立長(zhǎng)字段名,最長(zhǎng)可達(dá)128個(gè)字符,長(zhǎng)文件名被存儲(chǔ)在*.dbc文件的一個(gè)記錄中,它的前10個(gè)字符同時(shí)還作為字

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

27、型 ? BETWEEN(3*6,12,25) 結(jié)果是:.T.(4)EOF(<工作區(qū)號(hào)>|<表別名>)BOF(<工作區(qū)號(hào)>|<表別名>)RECNO(<工作區(qū)號(hào)>|)(5)substr( <源字符表達(dá)式>,<起始位置>,<子串長(zhǎng)度>) ?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ù)雜表達(dá)式的運(yùn)算結(jié)果(主要理清運(yùn)算符的運(yùn)算的優(yōu)先次序):例:表達(dá)式“ab” $”cab” and 9+3>12 or 3+8>12的結(jié)果為: .T. 31程序文件的擴(kuò)展名為*.prg命令方式:MODIFY|MODI COMMAND|COMM路徑 文件名運(yùn)行程序格式:DO <程序名>32賦值語句:STORE <表達(dá)式> TO <名稱列表> 或 <名稱> = <表達(dá)式>STORE 40*2-3 TO A,B,Ctoday

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

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

31、指定的行、列位置輸出指定表達(dá)式的值。 GET <變量>子句是用來在屏幕上指定的行、列位置輸入數(shù)據(jù)給指定的變量,且必須與READ命令配套使用。36分支結(jié)構(gòu)程序設(shè)計(jì)IF.ELSE.ENDIF和DO CASE.ENDCASE37循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 當(dāng)型循環(huán)結(jié)構(gòu) 步長(zhǎng)型循環(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í)際參數(shù)表>例題 5-23 DO <過程名> With <實(shí)際參數(shù)表>例題 5-24 <函數(shù)名><參數(shù)表> 例題 5-25在程序中沒有通過PUBLIC和LOCAL命令聲明全局變量和局部變量,而由系統(tǒng)自動(dòng)隱含建立的變量都是私有變量。全局變量又稱公共變量,在任何模塊中都可使用的變量。私有變量?jī)H在定義它的模塊以及下層模塊中有效,而在定義它的模塊運(yùn)行結(jié)束時(shí)自動(dòng)清除。本地變量又稱局部變量,只能在建立它的模塊中使用,而且不能在高層或底層模塊中使

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

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

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

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

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

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

39、 X=1 DO WHILE X<=100 S=S+X2X=X+1 ENDDO ? S RETURN2、自定義計(jì)算階乘n!的函數(shù)。FUNCTION JCPARA NUMS=1FOR N=1 TO NUM S=S*N ENDFORRETURN S3、學(xué)生成績(jī)的分檔次統(tǒng)計(jì)。從鍵盤上輸入分?jǐn)?shù),按059、6069、7079、8089、9099和100分六個(gè)檔次統(tǒng)計(jì)。STORE 0 TO K0,K6,K7,K8,K9,K10INUPUT “請(qǐng)輸入分?jǐn)?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é)生成績(jī)的查詢,請(qǐng)?zhí)羁?。USE STUDENTACCEPT”請(qǐng)輸入待查學(xué)生姓名:” TO XMDO WHILE .NOT. EOF( )IF 姓名=XM ?”姓名:”姓名,”成績(jī):”STR(成績(jī),3,0)ENDIFSKIPENDDOSET TALK ON5統(tǒng)計(jì) “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è)表中均有“分?jǐn)?shù)”字段,數(shù)據(jù)類型為N),再輸入一個(gè)分?jǐn)?shù),在該表中查找此分?jǐn)?shù),如果找到顯示該記錄的姓名,否則顯示“沒有找到”。 ACCEPT TO A        INPUT    TO  N     USE  &A     

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

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

44、DOUSESET TALK ONRETURN 9實(shí)現(xiàn)分段函數(shù):Y=1(X>0)Y=0(X=0)Y=-1(X<0)根據(jù)輸入X的值輸出Y的值。請(qǐng)將程序填寫完整。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)商信息,其字段有:姓名(字符型),電話(字符型),地址(字符型)。下面程序的功能是:查找所有姓李的電話號(hào)碼中含有123的供應(yīng)商的信息。請(qǐ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è)已建立一個(gè)日銷售文件RXS(營(yíng)業(yè)員代號(hào),商品名,銷售量,價(jià)格,營(yíng)業(yè)額),每筆營(yíng)業(yè)產(chǎn)生一個(gè)記錄,但營(yíng)業(yè)額字段的值為填寫而為0.00,編程查詢某營(yíng)業(yè)員的全天營(yíng)業(yè)額。 ClearSet talk offUse rxs.dbfReplace all 營(yíng)業(yè)額with _銷售量*價(jià)格 5,10 say “查詢營(yíng)業(yè)員的全天營(yíng)業(yè)額”?Input “請(qǐng)輸入營(yíng)業(yè)員代號(hào):” to _dh_ _

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

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

48、eaReturn Procedure jsParameters r,sS=_PI()*r*r_return四、寫出程序運(yùn)行結(jié)果1、【程序清單】SET TALK OFFCLEARINPUT "請(qǐng)輸入工作時(shí)間:" 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)輸入工作時(shí)間為100時(shí),結(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計(jì)算托運(yùn)行李費(fèi)用。若X<=50kg,則運(yùn)費(fèi)按0.25元/KG計(jì);若X>50KG,則大于50KG的部分,按每公斤0.5元計(jì)。 INPUT “

50、請(qǐng)輸入行李重量:”TO XIF X>50 Y=0.5*(X-50)+0.25*50 ELSE Y=0.25*X ENDIF10,10 SAY “行李運(yùn)費(fèi):”+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程序運(yùn)行的結(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程序運(yùn)行的結(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)準(zhǔn)的SQL語言包括四個(gè)部分內(nèi)容。P64 P1091.數(shù)據(jù)定義:用于定義和修改基本表、定義視圖和定義索引。如:Create(建立)、Drop(刪除)、Alter(修改)。例如:創(chuàng)建一張新的學(xué)生基本信息表(xs.dbf)create table xs (編號(hào) N(4),姓名 C(6),出生年月 D(8),入學(xué)成績(jī) N(6,2),城市 C(10),簡(jiǎn)歷 m(4)修改表結(jié)構(gòu),(1)添加一個(gè)新的字段:性別 L(1)ALTER TABLE XS ADD性別 L(1)(2)將編號(hào)字段類型數(shù)值(N)改為字符(c)ALTER TABLE XS ALTER 編號(hào) C(4)(3)將城市字段改名為通訊地址

溫馨提示

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

評(píng)論

0/150

提交評(píng)論