




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章本章目的簡單了解有關(yugun)面向對象編程的特點和基礎知識掌握程序設計的基本概念和常用命令掌握窗體的運行和關閉熟悉窗體的常用事件掌握窗體中的控件屬性及代碼編寫本章任務任務一:錄入超市管理系統(tǒng)數據任務二:設計用戶主界面任務三:程序設計初步任務四:用戶登錄任務五:退出窗口任務六:商品信息瀏覽任務七:表單的綜合應用第1頁/共117頁第一頁,共118頁。5.1 基礎知識 面向對象的程序設計(OOP)(Object-Oriented Programming,OOP)立意于創(chuàng)建軟件重用代碼,具備更好地模擬現實世界環(huán)境的能力,這使它被公認為是自上而下(z shn r xi)編程的優(yōu)勝者。 面向對象
2、的編程語言使復雜的工作條理清晰,編寫容易,它是一場編程技術方面的革命。 Visual FoxPro是一種混合型語言,可以使用面向對象編程,也可以使用傳統(tǒng)的過程化編程。第2頁/共117頁第二頁,共118頁。5.1.1 抽象(chuxing)在面向對象中的作用 1抽象的概念(ginin)一般來講,抽象是通過從特定的實例中抽取共同的性質以形成一般化的概念(ginin)的過程。抽象是對某個系統(tǒng)的簡化的描述,即強調該系統(tǒng)中的某些特征,而忽略一部分細節(jié)。簡單地說,抽象是人們在理解復雜現象和求解復雜問題中處理復雜事物的主要工具。2面向對象抽象的實現面向對象的原理有4個,分別是數據抽象、行為共享、進化和確定性
3、。(1)數據抽象:它為程序員提供了一種對數據和為操作這些數據所需要的算法的抽象。數據抽象包含兩個概念(ginin):模塊化和信息隱藏。模塊化的優(yōu)點是便于修改或維護,系統(tǒng)發(fā)現問題后,可以確定問題出在哪個模塊上。在支持信息隱藏的系統(tǒng)中,錯誤的影響也通常被限制在一個模塊內,增強了系統(tǒng)的可靠性。(2)行為共享:行為是數據抽象引進的概念(ginin),行為是由實體的外部接口進行定義的。行為共享是指許多實體具有相同的接口,這將增加系統(tǒng)的靈活性。(3)進化:進化是考慮到實際中的需求會很快發(fā)生變化。面向對象的方法要支持進化過程就是要適應可能發(fā)生的不斷變化。(4)確定性:這里確定性是指用于描述一個系統(tǒng)確定的行為
4、。一個確定的系統(tǒng)應該確保其中每個行為項都有一個確切的解釋,系統(tǒng)不會因不能響應某一行為而失敗。 第3頁/共117頁第三頁,共118頁。5.1.2 面向對象的基本特征 面向對象的系統(tǒng)包含3個要素:對象、類和繼承。1對象在不同領域中對對象有不同的理解。一般認為,對象就是一種事物,一個實體。從概念上講,對象是代表正在創(chuàng)建的系統(tǒng)中的一個實體。例如,一個商品銷售系統(tǒng),像顧客、商品、柜臺、廠家等都是對象。從實現形式上講,對象是一個狀態(tài)和操作(方法)的封裝體。狀態(tài)是由對象的數據結構的內容和值定義的,方法是一系列的實現步驟,它是由若干操作構成的。2類類是創(chuàng)建對象的樣板,它包含著所創(chuàng)建對象的狀態(tài)描述和方法的定義。
5、一個類的所有對象都有相同的數據結構,并且共享相同的實現操作的代碼,而各個對象有著各自不同的狀態(tài)。類是所有對象的共同行為和不同狀態(tài)的集合體。3繼承繼承提供了創(chuàng)建新類的一種方法,這種方法就是一個新類可以通過對已有的類進行修改或擴充來滿足新類的需求(xqi)。新類共享已有類的行為,而自己還具有修改或額外添加的行為。從一個類繼承定義的新類,將繼承已有類的所有方法和屬性,并且可以添加所需要的新的方法和屬性。新類被稱為已有類的子類,而已有類稱為父類,又叫基類。新類又叫派生類。第4頁/共117頁第四頁,共118頁。5.2 任務一 錄入(l r)超市管理系統(tǒng)數據 5.2.1 相關知識 數據庫的對話框在Visu
6、al FoxPro中稱為“窗體”,一般還稱為表單。窗體也是Visual FoxPro 中的一種對象,它使用計算機屏幕將數據庫中的表或查詢中的數據顯示出來。由于數據庫軟件是給用戶使用的,所以要為使用的用戶提供一個友好的使用界面。這是建立一個窗體的基本目標。 一個設計優(yōu)秀的窗體是非常必要的。不管數據庫中表或查詢設計得有多好,如果窗體設計得十分雜亂,而且沒有任何提示,就會令使用者感覺到迷惑,甚至增加(zngji)失誤的概率。這樣的窗體就不利于數據庫軟件的應用和推廣。 本任務將介紹如何使用Visual FoxPro編寫一個簡單的程序。在此之前先介紹Visual FoxPro的各個部分的功能,包括工具箱
7、、項目管理器、“屬性”窗體設計器等,下面分別介紹這幾部分的功能。第5頁/共117頁第五頁,共118頁。1工具箱 當建立一個新的表單時,或者打開表單設計器時,一般會默認顯示工具箱,上面提供了Visual FoxPro 表單中常用的各個控件。選中控件,然后在窗體設計器中拖動鼠標,即可在其中繪制控件。初始狀態(tài)的工具箱只有一個“常用”選項卡,在工具箱上右擊,在彈出的快捷菜單中選擇“添加選項卡”命令,可以(ky)為工具箱添加選項卡;右擊,選擇相關選項,可以(ky)打開其他選項卡。 第6頁/共117頁第六頁,共118頁。常用(chn yn)表單控件名稱 第7頁/共117頁第七頁,共118頁。2項目(xin
8、gm)管理器 項目是Visual FoxPro的組織應用程序的方式,一般而言,一個工程包含開發(fā)一個應用程序所需要的所有文件(wnjin),包括窗體文件(wnjin)、程序文件(wnjin)、數據庫文件(wnjin)、表文件(wnjin)、報表文件(wnjin)、菜單文件(wnjin)、索引文件(wnjin)等。 第8頁/共117頁第八頁,共118頁。5.2.2 任務(rn wu)實現 本小節(jié)主要技能點如下(rxi): (1)創(chuàng)建最基本表單。 (2)用表單向導創(chuàng)建表單。 (3)一對多表單向導 第9頁/共117頁第九頁,共118頁。1創(chuàng)建(chungjin)最基本的表單 在的“項目管理器”中,選擇
9、“文檔”選項卡,選擇下面列表框中的“表單”選項,在右側(yu c)操作區(qū)單擊“新建”按鈕。 在“新建表單”對話框中單擊“新建表單”按鈕。 第10頁/共117頁第十頁,共118頁。 選擇“文件”菜單中的“保存”命令(mng lng),選擇相關的文件夾并輸入正確的表單名即完成第一個表單的制作,如圖所示。 第11頁/共117頁第十一頁,共118頁。 選擇要保存(bocn)表單的位置 第12頁/共117頁第十二頁,共118頁。 也可以(ky)重新命名該表單,然后單擊“保存”按鈕,該表單就會出現在當前項目中,如圖所示。關閉設計器,選擇第一個表單,在右側的功能區(qū)單擊“運行”按鈕。 第13頁/共117頁第十
10、三頁,共118頁。 表單運行(ynxng)結果如圖5-9所示。 單擊Form1右上角的關閉(gunb)按鈕,可以關閉(gunb)Form1。再次選擇第一個表單,單擊“修改”按鈕,可以對Form1(第一個表單)進行修改。 第14頁/共117頁第十四頁,共118頁。 選擇菜單(ci dn)中的“顯示”“表單控件工具欄”命令,可以控制表單控件工具欄的顯示。 單擊工具欄中的按鈕,并在第一個表單(Form1)上再次單擊,則會在Form1中創(chuàng)建(chungjin)一個新的按鈕。 第15頁/共117頁第十五頁,共118頁。雙擊Command1按鈕,會出現(chxin)該按鈕的代碼編輯器 在Command1的
11、click事件中輸入thisform.release,即運行表單后,單擊此按鈕就會退出表單。關閉(gunb)表單設計器,運行表單,測試按鈕Command1的效果。 第16頁/共117頁第十六頁,共118頁。 2用表單向導(xingdo)創(chuàng)建簡單表單 (1)在“項目”菜單中,選擇(xunz)“新建”“表單向導”命令,出現如圖所示的界面。 第17頁/共117頁第十七頁,共118頁。 (2)選擇“表單向導(xingdo)”選項,單擊“確定”按鈕。 (3)選擇一個數據表,然后為該表建立一個表單,這里選擇的是“用戶”表,單擊按鈕可以把“用戶”表的所有字段全部選中,單擊按鈕可以選取單個字段。單擊“下一步”
12、按鈕。第18頁/共117頁第十八頁,共118頁。 (4)如圖5-15所示,在該對話框中選擇一個自己喜歡(x huan)的樣式,使表單更加美觀,單擊“下一步”按鈕繼續(xù)。 第19頁/共117頁第十九頁,共118頁。 (5)該對話框主要是對“用戶”表的數據進行排序的設置,這里(zhl)選擇“用戶編號”作為索引,單擊“添加”按鈕,再單擊“下一步”按鈕 第20頁/共117頁第二十頁,共118頁。 (6)根據(gnj)該對話框的提示,可以單擊“預覽”,觀看一下效果,也可以直接單擊“完成”按鈕,完成表單的制作 第21頁/共117頁第二十一頁,共118頁。 (7)單擊“預覽”按鈕,效果如圖5-18所示,返回向
13、導,單擊“完成”按鈕,將表單命名為“用戶(yngh)”,選擇一個存放表單的位置,如D:superMarket 第22頁/共117頁第二十二頁,共118頁。3一對(y du)多表單向導 選擇“項目”菜單中的“新建”命令,選擇“一對多表單向導” 單擊“確定”按鈕,效果(xiogu)如圖5-20所示。 選擇“供貨商”表,然后將字段導入到“選定字段”列表框中。單擊“下一步”按鈕圖5 19 選擇“一對(y du)多表單向導”選項 圖5 20 父表選擇第23頁/共117頁第二十三頁,共118頁。 從子表中選擇(xunz)字段(這里選擇(xunz)“商品信息”表,導出所有字段,單擊“下一步”按鈕。 )第24
14、頁/共117頁第二十四頁,共118頁。 如圖5-22所示,是建立兩個(lin )表單的關系,以便聯(lián)動顯示。單擊“下一步”按鈕。 圖5 22 建立(jinl)表間關系第25頁/共117頁第二十五頁,共118頁。 如圖5-23所示,在“樣式”列表框中選擇自己喜歡的樣式,這里(zhl)選擇“陰影式”,單擊“下一步”按鈕。 圖5 23 選擇(xunz)表單樣式第26頁/共117頁第二十六頁,共118頁。 圖5-24是選擇排序次序的字段,這里選擇“供貨商編號(bin ho)”,單擊“下一步”按鈕 圖5 24 數據(shj)排序方式第27頁/共117頁第二十七頁,共118頁。 單擊“完成(wn chng)
15、”按鈕,保存為“供貨渠道” 圖5 25 完成(wn chng)及相關選項第28頁/共117頁第二十八頁,共118頁。 單擊“完成”按鈕,保存(bocn)為“供貨渠道”,運行表單 第29頁/共117頁第二十九頁,共118頁。課后練習 1利用向導制作一個“入庫記錄( jl)”的表單,并用表單設計器修改和美化產生的表單,利用此表單瀏覽庫存商品信息,并通過此表單輸入相關的記錄( jl)。 入庫記錄 第30頁/共117頁第三十頁,共118頁。課后練習 2利用向導分別制作以下幾個數據表的表單,如“供貨商”表、“會員”表、“交易”表、“商品信息”表、“生產商”表、“銷售”表、“用戶”表,并通過表單為相關(x
16、inggun)的數據表添加數據和修改數據。第31頁/共117頁第三十一頁,共118頁。5.3 任務二 設計(shj)用戶主界面 設計用戶(yngh)主界面,并為主界面各項按鈕指定代碼,用以訪問相關表單。 第32頁/共117頁第三十二頁,共118頁。5.3.1 相關(xinggun)知識點 1容器和控件 2標簽控件 3“屬性”窗口 4和字體有關的屬性5命令按鈕控件 6和鼠標操作相關的常用事件 7設置訪問鍵 8設置控件的Tab鍵次序 9設置工具(gngj)提示文本 10.啟用和廢止控件 11.定義表單行為 12指定表單的圖標 第33頁/共117頁第三十三頁,共118頁。1容器(rngq)和控件 V
17、isual FoxPro 6.0的基類共分成兩個大類:容器類和非容器類。一般稱容器類基類為容器,而把非容器類基類稱為控件,有時(yush)也把所有基類都稱為控件。 (1)容器類。容器類可以(ky)包含其他對象,并且允許訪問這些對象。 (2)控件類。控件類的封裝比容器類更為嚴密,但也因此喪失了一些靈活性。 (3)容器中各對象的調用。在進行容器類“子類”或“對象”的設計時,往往要調用容器中某一特定對象,這就要掌握OOP方法中對象的標識方法。 例如,在圖5-12所示的代碼編輯器中輸入。mand1.caption=點擊事件,并刪除thisform.release。運行表單,單擊按鈕,可以看到最后的效果
18、。其中thisform是command1的父容器,command1是其中的一個控件,caption是command1的屬性。文字“點擊事件”是這個屬性的值。注:thisform在Visual FoxPro中用來代表當前的表單。 第34頁/共117頁第三十四頁,共118頁。2標簽(bioqin)控件 在設計表單界面(jimin)時,幾乎都要有一些提示某個控件的作用的文字,比如在注冊時,就有用戶名、密碼等文字在某些表單控件之前進行顯示,提示用戶某控件可以做什么,如果不知道,用戶就會不了解這個界面(jimin),注冊也就無從下手,這就是標簽的作用。 標簽(bioqin)第35頁/共117頁第三十五頁
19、,共118頁。3“屬性(shxng)”窗口 “屬性”窗口用于修改窗體和控件的屬性,如圖5-30所示,其中上方的下拉列表框中列出當前的窗體及其控件的名稱(mngchng),可以通過下拉列表來選擇窗體或某一個控件。在窗體設計器中選擇某一個對象之后,“屬性”窗口也會顯示該對象的屬性。 圖5-30 表單“屬性(shxng)”窗口在屬性列表中,caption屬性最為常用,用于顯示文本。而為了編程方便些,還要修改name屬性,即在代碼中引用對象時所用的名稱。 第36頁/共117頁第三十六頁,共118頁。 在設計表單時,為了讓界面更友好、更美觀,通常都要對界面進行一定的美化,其中(qzhng)很重要的一項就
20、是對字體屬性的設置,常用的控件如標簽和按鈕等都會有字體屬性,可以在“屬性”窗口中進行設置,圖5-31所示為與字體有關的屬性。 4和字體(zt)有關的屬性 圖5-31 和字體(zt)有關的屬性FontBold、FontItalic、FontStrikethru、Fontunderline屬性:指定文本是否具有粗體、斜體、刪除線或下劃線等效果。 FontExtend的作用是指定文本是否可擴展。 FontName屬性:指定顯示文本的字體名,默認值為 Arial FontSize屬性:默認的設置是 9 磅 FontOutline屬性:作用是指定與控件相關聯(lián)的文字是否顯示為空心字 FontShadow屬
21、性:作用是指定與控件相關聯(lián)的文字是否帶有陰影 FontSize屬性:指定對象文本的字體大小,以磅為單位,默認值為10磅 ForeColor屬性:指定用于顯示對象中文本前景色 第37頁/共117頁第三十七頁,共118頁。5命令(mng lng)按鈕控件 命令按鈕通常用來啟動一個事件,如關閉一個表單、移動到不同記錄、打印報表等動作(dngzu)。 可使用Caption屬性指定在命令按鈕上顯示的文本。 命令按鈕常用的事件是Click事件,當編輯代碼時,可以選擇執(zhí)行的事件,如圖5-33所示。 圖5-33 命令(mng lng)按鈕事件選擇第38頁/共117頁第三十八頁,共118頁。(1)Click:當
22、在程序中包含(bohn)觸發(fā)此事件的代碼,或者將鼠標指針放在一個控件上按下并釋放鼠標左鍵,或者更改特定控件的值,或在表單空白區(qū)單擊時,此事件發(fā)生。Click 事件發(fā)生在用戶: 單擊復選框、命令按鈕、列表框或選項按鈕控件時。 使用箭頭鍵或按鼠標鍵在下拉列表框或列表框中選擇一項時。 在命令按鈕、選項按鈕或復選框有焦點時按SPACEBAR鍵時。 表單中有 Default 屬性設置為“真”(.T.) 的命令按鈕并且按回車鍵時。 按一個控件的訪問鍵。例如,若一個命令按鈕的標題為“Go”,則按ALT+G組合鍵可觸發(fā)Click事件。 單擊表單空白區(qū)。當指針位于標題欄、控制菜單框或窗口邊界上時,不發(fā)生表單的
23、Click 事件。 單擊微調控件的文本輸入區(qū)。 單擊廢止的控件時,廢止控件所在的表單發(fā)生Click事件。 6和鼠標操作相關(xinggun)的常用事件 第39頁/共117頁第三十九頁,共118頁。(2)DblClick:當連續(xù)兩次快速按下鼠標左鍵(主鍵)并釋放時,此事件發(fā)生。當從列表框或組合框中選擇一個選項并按回車鍵時,也發(fā)生 DblClick 事件。如果在系統(tǒng)指定的雙擊時間間隔內不發(fā)生 DblClick 事件,對象認為這種操作是一個 Click 事件。因此(ync),當向這些相關事件中添加過程時,必須確認這些事件不沖突。另外,不響應 DblClick 事件的控件可能會將一個雙擊事件確認為兩個
24、單擊事件。 6和鼠標操作相關(xinggun)的常用事件 第40頁/共117頁第四十頁,共118頁。7設置(shzh)訪問鍵 代表訪問鍵的字符在菜單上或對話框中加有下劃線或突出顯示。同時按下 Alt 鍵和訪問鍵可以(ky)激活菜單或對話框。有時用來指代熱鍵。 設置訪問鍵的方式是在設置Caption屬性時,在訪問鍵的相關字母前加/Close則顯示的結果為Close,設置的訪問鍵為Alt+C。第41頁/共117頁第四十一頁,共118頁。8設置(shzh)控件的Tab鍵次序 按鍵盤上的Tab鍵時,焦點從一個字段或對象移向另一個字段或對象的次序。對表單中的控件來說,按照控件添加的次序指定Tab鍵次序,
25、每個新建控件都位于Tab鍵次序的末尾(mwi)。一個良好的Tab鍵次序,對于用戶的使用以及提高用戶的工作效率是至關重要的。可以通過“屬性”窗口來調整個別控件的Tab鍵值也可以通過菜單“顯示”“Tab鍵次序”命令來依次指定。 第42頁/共117頁第四十二頁,共118頁。9設置工具提示(tsh)文本 ToolTipText:指定控件工具的提示文本。當在運行狀態(tài)時,鼠標懸停在相關控件上方(shn fn),系統(tǒng)會給出相關的提示。 第43頁/共117頁第四十三頁,共118頁。10啟用(qyng)和廢止控件 在某給定情況下,如果禁止(jnzh)使用某個控件,可以將該控件的Enabled屬性設置為“假”(.
26、F.)。 將每個按鈕的Enabled屬性設置為“真”(.T.)或“假”(.F.),可以啟用或廢止組中單個選項按鈕或命令按鈕;也可通過設置組的Enabled屬性來啟用或廢止組中的全部按鈕。 如下面一行代碼所示: Tmand1.Enabled = .F. 當控件的Enabled屬性設置為“假”(.F.)時,控件的所有事件都將廢止,但會顯示出禁用的前景色和背景色。 第44頁/共117頁第四十四頁,共118頁。11.定義(dngy)表單屬性 表5-3 表單行為(xngwi)屬性(一)屬性說明默認值AlwaysOnTop控制表單是否總是處在其他打開窗口之上“假”(.F.)AutoCenter控制表單初始
27、化時是否讓表單自動在Visual FoxPro主窗口中居中“假”(.F.)BackColor決定表單窗口的顏色255、255、255BorderStyle決定表單是否沒有邊框,還是具有單線邊框、雙線邊框或系統(tǒng)邊框。如果BorderStyle為3可調邊框,用戶能重新改變表單大小3Caption決定表單標題欄顯示的文本Form1Closable控制用戶是否能通過雙擊“關閉”框來關閉表單“真”(.T.)DataSession控制表單或表單集里的表是否能在可全局訪問的工作區(qū)中打開,或僅能在表單或表單集所屬的私有工作區(qū)內打開1MaxButton控制表單是否具有最大化按鈕真(.T.)第45頁/共117頁第
28、四十五頁,共118頁。11.定義(dngy)表單屬性 表5-3 表單行為(xngwi)屬性(二)屬性說明默認值MinButton控制表單是否具有最小化按鈕真(.T.)Movable控制表單是否能移動到屏幕的新位置真(.T.)ScaleMode控制對象的尺寸和位置屬性的度量單位是pixels還是像素。由“選項”對話框中的設置決定由“選項”對話框中的設置決定Scrollbars控制表單所具有的滾動條類型0 - 無TitleBar控制標題欄是否顯示在表單的頂部1 - 打開ShowWindow控制表單是否在屏幕中、懸浮在頂層表單中或作為頂層表單出現0 - 在屏幕中WindowState控制表單是最小化
29、、最大化還是正常狀態(tài)0 - 普通WindowType控制表單是非模式表單(默認)還是模式表單。如果表單是模式表單,用戶在訪問應用程序用戶界面中任何其他單元前必須關閉這個表單0 - 無模式第46頁/共117頁第四十六頁,共118頁。12指定(zhdng)表單的圖標 在Visual FoxPro for Windows 中,可指定表單的圖標;當該表單在 Windows NT 窗口中最小化或位于 Windows 95 的標題欄上時顯示為這個圖標。如果要指定表單的圖標,將表單的 Icon 屬性(shxng)設置為一個 .ico 文件的文件名。 若要指定表單的圖標,打開表單,再打開“屬性(shxng)”
30、窗口,將 Icon 屬性(shxng)設置為希望顯示的 .ico 文件。 第47頁/共117頁第四十七頁,共118頁。5.3.2 任務(rn wu)實現 (1)效果如圖5-34所示,添加按鈕和圖片,設置按鈕的名稱。 各按鈕的Click事件的代碼分別(fnbi)如下: “采購商品”按鈕Click事件:do form 商品信息 “生產商”按鈕Click事件:do form生產商 “供貨商”按鈕Click事件:do form 供貨商 “會員注冊”按鈕Click事件:do form 會員注冊 “用戶注冊”按鈕Click事件:do form 用戶注冊 “采購商信息”按鈕Click事件:report fo
31、rm 采購商信息報表 preview “生產商信息”按鈕Click事件:report form 生產商信息報表 preview第48頁/共117頁第四十八頁,共118頁。5.4 任務三 利用程序(chngx)瀏覽數據 5.4.1 相關(xinggun)知識 1程序設計的基本概念程序設計(Programming)是指設計、編制、調試程序的方法和過程(程序設計=數據結構+算法(sun f))。它是目標明確的智力活動。由于程序是軟件的本體,軟件的質量主要通過程序的質量來體現,在軟件研究中,程序設計的工作非常重要,內容涉及有關的基本概念、工具、方法及方法學等。 按照結構性質,有結構化程序設計與非結構化
32、程序設計之分。前者是指具有結構性的程序設計方法與過程。它具有由基本結構構成復雜結構的層次性;后者反之。按照用戶的要求,有過程式程序設計與非過程式程序設計之分。 第49頁/共117頁第四十九頁,共118頁。2程序設計的過程軟件設計思路和方法的一般過程,包括設計軟件的功能和實現的算法及方法、軟件的總體結構設計和模塊設計、編程和調試、程序聯(lián)調和測試以及編寫、提交程序。 (1)系統(tǒng)分析員通過和用戶的溝通初步了解需求,列出系統(tǒng)的主要功能模塊,每個主要功能模塊可能會有哪些小功能模塊,對于有些需求比較明確相關的界面時,在這一步里可以初步定義好少量的界面。 (2)系統(tǒng)分析員深入地了解和分析需求,根據自己的經驗
33、和需求做出一份系統(tǒng)的功能需求文檔。文檔會清楚列出系統(tǒng)大致的主要功能模塊,主要功能模塊有哪些小功能模塊,并且會列出相關的界面和界面功能。 (3)系統(tǒng)分析員和用戶再次確認(qurn)需求。 (4)系統(tǒng)分析員根據確認(qurn)的需求文檔所列出的界面和功能需求,用迭代的方式對每個界面或功能做系統(tǒng)的概要設計。 (5)系統(tǒng)分析員把寫好的概要設計文檔提交給程序員,程序員根據所列出的功能進行設計和編寫代碼。 (6)測試編寫好的系統(tǒng),交給用戶使用,用戶使用后逐一確認(qurn)每個功能,然后驗收。第50頁/共117頁第五十頁,共118頁。3程序設計基礎(1)變量。變量是在程序設計中最重要的一個要素,幾乎任何一
34、個程序設計語言中都要有變量存在。操作過程中可以改變其取值或數據類型的數據項。在Visual FoxPro系統(tǒng)中,變量分為字段變量、內存變量、數組變量和系統(tǒng)變量4類。此外(cwi),作為面向對象的程序語言,Visual FoxPro系統(tǒng)在進行面向對象的程序設計中引入了對象的概念,對象實質上也是一類變量。 確定一個變量,需要確定其3個要素:變量名、數據類型和變量值。命名約定:在Visual FoxPro系統(tǒng)中,將表示、存儲數據的常量、變量、數組、字段、記錄、對象、表、數據庫等,都稱為數據容器(rngq)。所有數據容器(rngq)均需命名以相互區(qū)別,為規(guī)范各類對象的命名,Visual FoxPro系
35、統(tǒng)推薦若干“命名約定”供用戶參考,以提高操作命令與程序的可讀性和規(guī)范性。使用字母、下劃線和數字命名。一般建議不采用漢字命名。命名以字母或下劃線開頭;除自由表中字段名、索引的TAG標識名最多只能有10個字符外,其他的命名可使用1128個字符。避免使用 Visual FoxPro的保留字。第51頁/共117頁第五十一頁,共118頁。 字段變量。在Visual FoxPro系統(tǒng)中,表由若干記錄構成,每個記錄包含若干數量相同的字段,而同一字段在不同記錄中對應不同的值。所以字段是變量。字段變量與其他變量不同,是定義在表中的變量,隨表的存取而存取,是永久性變量。字段變量的變量名即字段名,數據類型為Visu
36、al FoxPro系統(tǒng)中的任意數據類型,變量值即字段值。 內存變量。內存變量是用戶在內存中定義的,用來存放程序運行的中間結果和最終結果,是進行數據的傳遞和運算的變量。有一種內存變量在全部程序、過程和自定義函數,以及它調用的程序、過程和自定義函數中都有效,這就是全局型內存變量。全局型內存變量使用Public定義,在后面的實例中會(zhn hu)有它的應用。 系統(tǒng)變量。系統(tǒng)變量是Visual FoxPro系統(tǒng)特有的內存變量,由Visual FoxPro系統(tǒng)定義、維護。系統(tǒng)變量的變量名均以下劃線“_”開始,如_WINDOWS、_CLIPTEXT等。因此在定義內存變量和數組變量名時,不要以下劃線開始,
37、以免與系統(tǒng)變量名沖突。系統(tǒng)變量設置、保存了很多系統(tǒng)的狀態(tài)、特性,了解、熟悉并充分地運用系統(tǒng)變量,會給數據庫系統(tǒng)的操作和管理帶來很多方便,特別是開發(fā)應用程序時更為突出。 第52頁/共117頁第五十二頁,共118頁。a變量的保存。Visual FoxPro提供相應命令(mng lng),可用文件形式將某些變量保存起來,以便重復使用。格式:SAVE TO ALL LIKE | ALL EXCEPT 功能:將指定變量的信息保存到指定的變量文件(*.MEM)中。ALL LIKE :只保存符合通配符條件的所有變量。ALL EXCEPT :只保存不符合通配符條件的所有變量。b變量的恢復。需要保存在文件中的變
38、量信息時,必須先恢復到內存后方可使用。格式:RESTORE FROM ADDITIVE功能:將指定變量文件(*.MEM)中的變量信息恢復到內存中。ADDITIVE:省略此項,清除內存所有變量后再恢復文件中變量的信息;加選此項,將變量文件中的變量信息追加到內存現有變量信息中。c變量的清除。Visual FoxPro系統(tǒng)對定義內存變量的數量是有限制的,應及時清理,盡量減少內存的占用,以定義其他變量。格式:RELEASE RELEASE ALL LIKE | EXCEPT 第53頁/共117頁第五十三頁,共118頁。(2)分支結構。 簡單(jindn)的條件語句。格式:IF ENDIF說明:條件表達
39、式可以是各種表達式的組合,其值必須是邏輯“真”或“假”。當條件表達式的值為“真”時,先執(zhí)行IF與ENDIF間的語句,然后執(zhí)行ENDIF后面的語句;當條件表達式的值為“假”時,直接執(zhí)行ENDIF后面的語句。例1:從鍵盤輸入(shr)一個數,若小于0,則顯示“輸入(shr)的是負數”。*liti1clearinput 輸入(shr)一個數: to xif x0 ?輸入(shr)的是負數endif第54頁/共117頁第五十四頁,共118頁。帶ELSE的條件語句。格式:IF ELSE ENDIF說明:當條件表達式的值為“真”時,先執(zhí)行(zhxng)命令序列1,然后轉去執(zhí)行(zhxng)ENDIF后面的
40、語句;當條件表達式的值為“假”時,先執(zhí)行(zhxng)命令序列2,然后轉去執(zhí)行(zhxng)ENDIF后面的語句。例2:從鍵盤輸入一個數,若小于0,顯示(xinsh)“輸入的是負數”;否則顯示(xinsh)“輸入的是非負數”。*liti2clearinput 輸入一個數: to xif x0 ?輸入的是負數else ?輸入是的非負數endif第55頁/共117頁第五十五頁,共118頁。 IF條件語句的嵌套。格式1:IF IF ELSE ENDIFELSE ENDIF當“條件1”為“真”,同時(tngsh)“條件2”為“真”時,執(zhí)行“命令序列1”。當“條件1”為“真”,同時(tngsh)“條件2
41、”為“假”時,執(zhí)行“命令序列2”。當“條件1”為“假”,執(zhí)行“命令序列3”。第56頁/共117頁第五十六頁,共118頁。格式2:IF ELSE IF ELSE ENDIFENDIF當“條件1”為“真”,執(zhí)行“命令(mng lng)序列1”。當“條件1”為“假”,同時“條件2”為“真”時,執(zhí)行“命令(mng lng)序列2”。當“條件1”為“假”,同時“條件2”為“假”時,執(zhí)行“命令(mng lng)序列3”。第57頁/共117頁第五十七頁,共118頁。例3:從鍵盤輸入一個數,若小于0,顯示“輸入的是負數”;若等于0,顯示“輸入的是零”;若大于0,則顯示“輸入的是正數”。 *liti3clear
42、input 輸入一個數: to xif x0 ?輸入的是負數else if x=0 ?輸入的是零 else ?輸入的是正數 endifendif實現過程(guchng)與例2一樣,都是在命令窗口中執(zhí)行,只是新建的文件名要另起一個,以免重復,這里使用liti4作為文件名,讀者也可以自己起一個名字。第58頁/共117頁第五十八頁,共118頁。 DOCASE條件語句的嵌套。 DO CASE CASE條件表達式1 命令序列1 CASE 條件表達式2 命令序列2 . CASE 條件表達式N 命令序列N OTHERWISE 命令序列N+1 ENDCASE 在執(zhí)行DO CASE命令時,依次(yc)判斷各條件
43、,若為.T.,就執(zhí)行對應的,然后轉去執(zhí)行ENDCASE后面的語句。若為.F.,不執(zhí)行,繼續(xù)判斷下一個條件。若沒有一個條件為T,則執(zhí)行OTHERWISE后面的。若沒有OTHERWISE語句,則不作任何操作就轉去執(zhí)行ENDCASE之后的語句。第59頁/共117頁第五十九頁,共118頁。例4:利用do case判斷今天是星期幾。*liti4 input 輸入一個1-7的數: to x do case case x=1 ?星期一 case x=2 ? 星期二 case x=3 ? 星期三 case x=4 ? 星期四 case x=5 ? 星期五 case x=6 ? 星期六 case x=7 ? 星
44、期日otherwise ? 請輸入要求(yoqi)輸入的數字!endcase第60頁/共117頁第六十頁,共118頁。(3)循環(huán)結構. 條件循環(huán)(“當”型循環(huán)控制語句)。a語句格式:DO WHILE ENDDOb執(zhí)行過程:當執(zhí)行到DO WHILE 語句時,首先判斷條件表達式的值是否為真,若為真則執(zhí)行下面的命令序列,遇到ENDDO即返回到循環(huán)頭,再檢查條件是否為真,如果條件仍為真,則再執(zhí)行序列;如此反復檢查和執(zhí)行,直到的值為假,即退出循環(huán),轉去執(zhí)行ENDDO后面的語句。c說明。循環(huán)體:被重復執(zhí)行的命令序列。DO WHILE 與ENDDO必須配對使用。循環(huán)條件的改變(gibin)、死循環(huán)、循環(huán)的退
45、出。d循環(huán)輔助語句格式:EXIT功能:用于終止本層循環(huán),無條件轉移到本層ENDDO后面的語句去執(zhí)行。格式:LOOP功能:終止本次循環(huán),返回到循環(huán)頭,進行本層次的下一次循環(huán)。第61頁/共117頁第六十一頁,共118頁。例5:循環(huán)輸出1+2+3+100的和。*liti5CLEAR&清除屏幕顯示信息S=0&設置變量S初始值為0,用于保存和N=1&設置變量N初始值為1,用于計數( j sh)DO WHILE N=100&當N100時,執(zhí)行DO 和ENDDO之間的代碼 S=S+N &將S+N的值賦給S N=N+1 &N的值增加1ENDDO?S=,S實現過程
46、與例2一樣,都是在命令窗口中執(zhí)行,只是新建的文件名要另起一個,免得重復,這里使用liti6作為文件名,讀者也可以自己起一個名字。第62頁/共117頁第六十二頁,共118頁。 步長循環(huán) (“計數”型循環(huán)控制語句)。 格式:FOR = TO STEP ENDFOR 功能:根據給定的次數重復執(zhí)行命令序列,實現程序循環(huán)。 說明: STEP步長值:是循環(huán)控制變量遞增或遞減的步長。如果步長值為正,循環(huán)控制變量遞增;如果步長值為負,則循環(huán)控制變量遞減。如果缺省STEP子句,循環(huán)控制變量每次的增量為1。第63頁/共117頁第六十三頁,共118頁。例6:求1+2+3+99+100的值。* liti6s=0for
47、 x=1 to 100 &循環(huán)遞增X的值,每次增長1 s=s+xendfor?s=,s實現過程與例2一樣,都是在命令窗口中執(zhí)行,只是新建的文件名要另起一個,免得(min de)重復,這里使用liti7作為文件名,讀者也可以自己起一個名字。第64頁/共117頁第六十四頁,共118頁。5.4.2 任務(rn wu)實現 (1)在“項目”選項卡中,建立一個自定義表單,命名為“程序結果”,用來(yn li)輸出分支結構、循環(huán)結構和統(tǒng)計用戶數量的結果,如圖5-36所示。 注:Label1為標簽。圖5-36 程序運行及結果顯示第65頁/共117頁第六十五頁,共118頁。(2)編寫“分支結構”按鈕的
48、代碼。a=5If a 3&如果a3thisform.label1.caption=比3大&在標簽上顯示最終結果else&如果a3,則在標簽中顯示比3小,否則顯示比3大。上面的標簽中,主要利用的就是caption屬性,而按鈕的事件就是Click事件,如圖5-37所示。圖5-37 按鈕事件(shjin)選擇第66頁/共117頁第六十六頁,共118頁。(3)編寫“循環(huán)結構”按鈕的代碼。S=0N=1DO WHILE N0,enabled為.T.,則當表單啟動時計時器便開始計時。若enabled為.F.,則計時器不啟動,調用reset方法可使計時器重新從0開始計時。圖5-42 計
49、時器屬性(shxng)注計時器控件在運行(ynxng)時是不可見的,所以在設計時可把它放置在表單的任意位置。 第80頁/共117頁第八十頁,共118頁。 4CHR函數 CHR函數,根據指定的ASCII數值代碼返回其對應的字符。 5Time函數 該函數主要是對時間進行操作,該類操作主要應用(yngyng)有:在注冊用戶時,希望用戶在一定時間范圍內讀取一些協(xié)議;可以在某些頁面進行時間的顯示;可以做一些退出的設置,如在退出某些系統(tǒng)時,為了避免某些錯誤操作,導致退出系統(tǒng)而尚未保存信息,可以用倒計時來提醒用戶,這種方式也用到了一些大型的網絡游戲,利用這種方式來存儲人物數據。與日期相關的函數如表5-5所列
50、。 表5-5 日期相關(xinggun)的函數函數名操作例結果DATE()求當前日期DATE()2001/11/12DATETIME()求當前日期和時間DATETIME()2001/11/12/0:22:33amYEAR(D)求年份YEAR(DATE()2001MONTH(D)求月份(數值)MONTH(DATETIME()11CMONTH(D)求月份字符)CMONTH(DATETIME()NovemberDAY(D)求日期DAY(DATE()12DOW(D)求星期幾(數值)DOW(DATE()1CDOW(D)求星期幾(英文)CDOW(DATE()sundayTIME(D)求當前時間TIME(D
51、ATE()10:20:38am第81頁/共117頁第八十一頁,共118頁。5.6.2 任務實現(shxin):退出窗體 在程序設計和軟件開發(fā)中,經常需要設計計時器,如秒表、正計時器、倒計時器等。這些(zhxi)計時器的設計方法大同小異,本文以倒計時器設計為例介紹兩種設計倒計時器的方法。 Visual FoxPro中的計時器控件有一個Timer事件,每經過Interval(單位為毫秒)屬性指定的時間就執(zhí)行該事件一次。利用該控件的這一特點再配合一些程序,可設計各種計時器,包括倒計時器。本程序通過計時器控件和時間函數seconds()來設計倒計時器。seconds()函數可以以秒為單位返回自午夜以來
52、經過的時間。在“開始”按鈕的Click事件中加入代碼:t0seconds()。在計時器控件的Timer事件代碼中加入:t1seconds()、t210t0、t3t2t1。t0為單擊“開始”按鈕時離午夜的時間,t1為計時器每次觸發(fā)(chf)時距午夜的時間,t2為定時結束時距午夜的時間,t3為剩余時間。第82頁/共117頁第八十二頁,共118頁。 (1)打開超市管理系統(tǒng)工程,新建立一個(y )窗體退出系統(tǒng)。 (2)在窗體設計器中添加如圖5-43所示的控件。圖5-43 退出(tuch)表單(3)程序清單如下。表單Form1的Init事件代碼:public t0&聲明變量t0t0=second
53、s()&設置(shzh)t0為表單運行的當前時間thisform.timer1.enabled=.t.&可以直接在屬性中設置(shzh)標簽Label1的屬性Caption:退出系統(tǒng)標簽Label2的屬性Caption:10秒鐘第83頁/共117頁第八十三頁,共118頁。 計時器Timer1的屬性 Interval:500&時間間隔 計時器Timer1的timer事件代碼: t1seconds()&設置t1為表單運行后每次計時器響應(xingyng)的時間 if t1-t0 =10&判斷當前時間與表單運行時的時間差 messagebox(定時時間到!)
54、else thisform.label5.captionint(10-(t1-t0) endif 命令按鈕Command1的屬性 Caption:退出 命令按鈕Command1的Click事件代碼: Quit 命令按鈕Command2的屬性 Caption:取消 命令按鈕Command2的Click事件代碼: release thisform 說明:在上面的程序中,只是對倒計時的代碼作一些修改,只要適當對上面的代碼進行修改,就可以改變出很多的實用功能。 第84頁/共117頁第八十四頁,共118頁。課后練習 利用計時器制作一個表單,要求用戶閱讀(yud)注冊協(xié)議,在30秒后才可以進行下一步操作。
55、要求只有剩余時間為0時按鈕才可以使用,如圖5-44所示。圖5 44 退出(tuch)提示第85頁/共117頁第八十五頁,共118頁。5.7 任務(rn wu)六 商品信息瀏覽 5.7.1 相關(xinggun)知識 類是面向對象程序設計中非常重要的一個知識點,正是類的存在,使得面向對象程序設計變得豐富多彩。恰當地使用(shyng)類不僅可以使程序更加美觀,更可以減輕大量的重復性工作。 利用向導實現表單可以很快速地生成數據表單。但這并不是萬能的方法,對于一些有特殊功能的表單并不能完全利用這種方法來生成。在這種情況下必須手工生成表單,并對所生成的表單添加一些功能按鈕和一些導航按鈕。這些功能按鈕和導
56、航按鈕可以用類的方式來生成。如果程序中并不涉及太多的代碼的重用問題,也可以不用類的方法。第86頁/共117頁第八十六頁,共118頁。 1創(chuàng)建(chungjin)類在創(chuàng)建過程中,選擇“類”,單擊“新建文件(wnjin)”命令,彈出窗體,如圖5-45所示。圖5-45 “新建類”對話框為新建類添加“類名”myc,選擇“派生于”為CommandGroup,該選項是選擇新建的類將繼承于哪種類。在“存儲于”中選擇存儲的位置,設置好相關目錄(ml),單擊“確定”按鈕。第87頁/共117頁第八十七頁,共118頁。 2將新屬性(shxng)添加到類在新建的類中添加(tin ji)4個按鈕,做成導航菜單,如圖5-
57、46所示。 圖5-46 新建類3在類中編輯方法(fngf)編輯類中的命令按鈕和編輯表單中的命令按鈕是一樣的,雙擊即可添加程序代碼。4將類添加到表單中建立完一個類后,可以重復使用,非常方便,就像使用自帶的控件一樣。使用時只要單擊添加圖標,選擇“添加”命令,找到剛才新建的類,就可以使用了。第88頁/共117頁第八十八頁,共118頁。 5注冊(zhc)一個類庫. 從“工具”菜單中選擇“選項”命令,在彈出的“選項”對話框中選擇“控件”選項卡,選擇“可視類庫”并單擊“添加”按鈕,在“打開”對話框中選擇要注冊(zhc)的類庫并單擊“打開”按鈕,單擊“確定”按鈕。第89頁/共117頁第八十九頁,共118頁。
58、5.7.2 任務(rn wu)實現:類的實現 (1)新建類。名稱為myc,該類起數據導航的作用,4個命令按鈕的名稱分別是首記錄、上一條(y tio)、下一條(y tio)和末記錄。代碼如下:首記錄: GO TOP &指針指到第一條(y tio)記錄THISFORM.Refresh &刷新上一條(y tio):SKIP -1 &指針指向上一條(y tio)記錄IF BOF() &判斷是否到達首記錄 GO TOPENDIFTHISFORM.Refresh&更新表單數據下一條(y tio):SKIP 1 &指針指向下一條(y tio)記錄IF EOF(
59、) &判斷是否到達末記錄 GO BOTTOM &指向最后一條(y tio)記錄ENDIFTHISFORM.Refresh&更新表單數據末記錄:GO BOTTOMTHISFORM.Refresh第90頁/共117頁第九十頁,共118頁。(2)新建一個表單“商品信息2”,右擊表單,為表單添加數據環(huán)境,在數據環(huán)境中引入“商品信息”表,利用手工拖動的方式,把相關字段拖動到此表單中。并適當調整各控件的位置,在表單下留出空白,以便添加上面所生成的類。(3)添加上面所生成的類,通過生成器和類來實現(shxin)瀏覽商品信息的功能,如圖5-47所示。圖5-47 手工(shugng)制作
60、“商品信息”表單第91頁/共117頁第九十一頁,共118頁。 4添加組合框,調整表單界面( jimin)的布局。最終效果如圖5-48所示。圖5-48 為表單添加(tin ji)自定義類第92頁/共117頁第九十二頁,共118頁。 (5)設置組合框,表單中的組合框主要起到瀏覽廠商和供貨商信息的作用。這里(zhl)以廠商編號為例。右擊組合框combo1,在快捷菜單中選擇“生成器”命令,設置如圖5-49所示。圖5-49 為組合(zh)框設定字段第93頁/共117頁第九十三頁,共118頁。 首先選擇數據表,然后選擇要顯示的字段,單擊“確定”按鈕就可以實現要求的功能,還可以進行其他的設置: RowSourceType設定(sh dn)為字段 RowSource設定(sh dn)為“供貨商.供貨商名稱,供貨商.供貨商編號” ControlSource設定(sh dn)為“商品信息.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 昆明云南昆明市五華區(qū)城居保中心招聘公益崗位人員筆試歷年參考題庫附帶答案詳解-1
- 2025至2030年保鮮四季豆項目投資價值分析報告
- 2025至2030年BOPP彩膜沙灘墊項目投資價值分析報告
- 2025至2030年中國電話機玩具數據監(jiān)測研究報告
- 2025年黑白低照度半球攝像機項目可行性研究報告
- 2025年香橙味醬項目可行性研究報告
- 2025至2030年中國平銼數據監(jiān)測研究報告
- 2025至2031年中國50%乙草胺乳油行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國黃油槍接管數據監(jiān)測研究報告
- 2025年平衡鳥雕塑項目可行性研究報告
- 《體育教學論》高職全套教學課件
- 2024亞馬遜賣家狀況報告
- 2024年度考研政治全真模擬試卷及答案(共六套)
- 智能建造施工技術 課件 項目1 智能建造施工概論;項目2 土方工程;項目3 基礎工程
- 2024年鐵路線路工(高級技師)技能鑒定理論考試題庫(含答案)
- 2025高考物理步步高同步練習選修1練透答案精析
- 汽車修理工勞動合同三篇
- 職業(yè)本科《大學英語》課程標準
- 北師大版三年級下冊除法豎式計算題練習100道及答案
- 房屋租給賣煙花的合同
- 十堰2024年湖北十堰市茅箭區(qū)教育局所屬學校招聘教師134人筆試歷年典型考題及考點附答案解析
評論
0/150
提交評論