全套課件-《Visual-FoxPro-9.0項目開發(fā)案例教程》-李政_第1頁
全套課件-《Visual-FoxPro-9.0項目開發(fā)案例教程》-李政_第2頁
全套課件-《Visual-FoxPro-9.0項目開發(fā)案例教程》-李政_第3頁
全套課件-《Visual-FoxPro-9.0項目開發(fā)案例教程》-李政_第4頁
全套課件-《Visual-FoxPro-9.0項目開發(fā)案例教程》-李政_第5頁
已閱讀5頁,還剩200頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VisualFoxPro9.0項目開發(fā)案例教程

VisualFoxPro9.0應用基礎VisualFoxPro(簡稱VFP),起源于xBase系列的dBASEⅡ、dBASEⅢ、Clipper、FoxBase以及FoxPro,是為數(shù)據(jù)庫管理和應用程序開發(fā)而設計的功能強大的面向對象環(huán)境。

VisualFoxPro9.0是Microsoft公司系列軟件的最新版本,是一種優(yōu)秀的數(shù)據(jù)庫管理系統(tǒng)和開發(fā)工具。

VisualFoxPro9.0可以和其他應用程序(如MicrosoftExcel、MicrosoftWord、MicrosoftVisualBasic等)進行交互,也可以創(chuàng)建基于Web的應用程序。VisualFoxPro9.0應用基礎VisualFoxPro9.0可以更好地支持ActiveX控件和面向對象程序設計,使得開發(fā)數(shù)據(jù)庫的工具更加完善與快捷,從而成為功能強大、可靠的數(shù)據(jù)庫管理系統(tǒng)。它提供了大量的系統(tǒng)開發(fā)工具和向導(Wizard),使以往費時費力的開發(fā)工作變得輕松自如。它提供了全新的智能感知技術,能夠自動填寫屬性和參數(shù),提高了代碼錄入速度和質(zhì)量。1.1VFP環(huán)境與項目管理器VFP工作界面

系統(tǒng)界面主要包括以下幾部分:命令窗口、菜單和工具欄定制VFP環(huán)境項目管理器項目管理器是VFP中各種數(shù)據(jù)和對象的主要組織工具。1.2數(shù)據(jù)庫和表建立數(shù)據(jù)庫建立數(shù)據(jù)表設置字段屬性瀏覽和編輯數(shù)據(jù)表給數(shù)據(jù)表添加記錄刪除或還原記錄建立索引

1.3查詢與視圖

查詢是將數(shù)據(jù)表中滿足某些條件的記錄和字段篩選出來形成的一個子表,此子表可以像其他數(shù)據(jù)表一樣保存起來以供隨時使用。視圖和查詢類似,數(shù)據(jù)都來源于一個或幾個表,這些表稱之為基表。查詢就是對基表進行“查看”,不能通過它來修改基表。而視圖可以修改數(shù)據(jù),并將修改后的數(shù)據(jù)傳回給基表。1.3查詢與視圖建立和運行查詢建立多表查詢建立視圖1.4表單設計與應用

表單(Form),是VisualFoxPro提供的一種功能強大的界面。各種對話框和窗口都是表單的不同表現(xiàn)形式。它可以使用戶在簡單明了的界面中查看數(shù)據(jù)或將數(shù)據(jù)記錄輸入到表中。表單以文件的形式存于磁盤,其擴展名為.scx。它可以屬于某個項目,也可以游離于任何項目之外。在項目管理器中創(chuàng)建的表單自動隸屬于該項目。

1.4表單設計與應用創(chuàng)建和運行表單表單常用屬性AlwaysOnTopAutoCenterBackColorBorderStyleCaptionClosableDataSessionMaxButtonMinButtonMovableScrollbarsWindowStateWindowType1.4表單設計與應用表單常用方法

Release方法

Refresh方法

Show方法

Hide方法

SetFocus方法

1.4表單設計與應用表單及控件的常用事件

Init事件Destroy事件

Load事件Unload事件

GotFocus事件Click事件

DblClick事件RightClick事件

InteractiveChange事件

1.4表單設計與應用編輯方法或事件代碼設置表單屬性表單控件工具欄控件的操作與布局1.5報表與標簽

報表是各種數(shù)據(jù)最常用的輸出形式,VFP9.0中的報表不僅可以輸出數(shù)據(jù)表內(nèi)容,還提供了數(shù)據(jù)統(tǒng)計、自動布局等功能。使用報表向導在項目管理器中,選擇Documents選項卡的Reports項,單擊New按鈕,在打開的對話框中單擊ReportWizard按鈕,在彈出的WizardSelection對話框中選擇ReportWizard。然后按報表向導選擇數(shù)據(jù)表、輸出字段、排序字段、分組字段、報表風格、布局,最后保存為報表文件(.frx)。1.5報表與標簽建立快速報表報表的加工調(diào)整帶區(qū)寬度移動控件修改控件1.5報表與標簽設計標簽

標簽是一種特殊類型的報表。如職工工資發(fā)放條、學生補考通知書、職工人事情況表等,都是為了滿足用戶實際需要而設計的報表,可以用標簽實現(xiàn)。在項目管理器的Documents選項卡中選擇Labels項,單擊New按鈕,再單擊LabelWizard按鈕,然后就可以按向導創(chuàng)建標簽了。1.6菜單的設計與應用

在Windows下運行的軟件一般都使用菜單,菜單是各種軟件的主要操作手段。它可以幫助使用者按照分級選擇方式,逐步選擇命令,并取得最終服務的方便快捷的手段。了解VisualFoxPro系統(tǒng)菜單的結構、特點和行為,則是設計用戶自己的菜單系統(tǒng)的基礎。菜單結構

典型的菜單系統(tǒng)一般是一個下拉式菜單,由一個條形菜單(菜單欄)和一組彈出式菜單(子菜單)組成。其中條形菜單作為主菜單,彈出式菜單作為子菜單。當選擇一個條形菜單選項時,激活相應的彈出式菜單??旖莶藛问且环N單擊鼠標右鍵才出現(xiàn)的彈出式菜單。1.6菜單的設計與應用下拉式菜單設計打開菜單設計器進行菜單設計常規(guī)選項設置菜單選項設置菜單選項設置為頂層表單添加菜單快捷菜單設計

1.7類的創(chuàng)建與使用

在開發(fā)應用軟件過程中,有時相似的對象會多次用到。比如,多個表單的Windowtype屬性都為“1-模式”,表單中都有“確定”和“取消”兩個按鈕,“取消”按鈕中都有“thisform.release”這樣的語句,等等。我們可以創(chuàng)建具有某些共同特性的對象,在需要時調(diào)用,共同的部分就不需要設置了,只需設置那些獨特的部分?!邦悺本涂梢云鸬竭@樣的作用。代表了一類對象,就好像模板一樣。我們可以根據(jù)需要建立各種各樣的類,并將它們保存起來,供以后調(diào)用,這樣可以大大提高軟件開發(fā)效率和質(zhì)量。1.7類的創(chuàng)建與使用創(chuàng)建類在項目管理器上選擇Classes選項卡,單擊New按鈕。使用類1.7類的創(chuàng)建與使用

對于一般控件做的類,使用起來非常簡單。進入表單設計器,打開表單控件工具欄,單擊上面的ViewClasses按鈕,在快捷菜單中選Add項,在打開的對話框中選擇類庫文件,這時的工具欄顯示出該類庫中的類對應的按鈕。這時就可以像使用標準控件一樣使用類控件。若要使用標準控件,可單擊表單控件工具欄上面的ViewClasses按鈕,在快捷菜單中選Standard項。

1.7類的創(chuàng)建與使用類特征的繼承與變異子類將繼承該類所有的屬性,也可以有自己的特性。調(diào)用類的方法程序類的代碼可能不適合特定的對象,我們就需要寫入自己的代碼,根據(jù)類的變異特性,這時類原來的代碼就不起作用了。屏蔽基類方法程序1.8常用語句IF...ENDIFDOCASE...ENDCASEDOWHILE...ENDDOFOR...ENDFORSCAN...ENDSCANSTORE表達式TO變量名表READEVENTSCLEAREVENTSCOPYFILE文件名1TO文件名2COPYSTRUCTUREEXTENDEDTO表文件名[FIELDS字段名表]1.8常用語句11.ONERROR[命令]12.ONESCAPE[命令]13.ONKEYLABEL鍵名[命令]14.SETCONFIRMON|OFF15.SETDEFAULTTO[路徑]16.FLUSH17.CANCEL18.BLANK[FIELDS字段名列表][范圍][FOR條件][WHILE條件][NOOPTIMIZE]19.RETURN20.CALCULATE表達式列表[范圍][FOR條件][WHILE條件][TO變量列表|TOARRAY數(shù)組名][NOOPTIMIZE]1.9常用函數(shù)數(shù)值處理函數(shù)

1.INT(數(shù)值表達式)2.ROUND(數(shù)值表達式,小數(shù)位數(shù))3.RAND([種子值])4.MOD(數(shù)值表達式1,數(shù)值表達式2)5.ABS(數(shù)值表達式)字符處理函數(shù)

1.9常用函數(shù)1.TRIM(字符表達式)2.LTRIM(字符表達式)3.ALLTRIM(字符表達式)4.LEFT(字符表達式,數(shù)值表達式)5.SUBSTR(字符表達式,開始截取的位置[,截取的長度])6.LEN(字符表達式)7.LIKE(字符表達式1,字符表達式2)8.RAT(要搜索的字符,被搜索的字符串[,N])9.STUFF(原字符串,開始替換的位置,被替換的字符數(shù),用于替換的字符串)10.CHRTRAN(字符表達式1,字符表達式2,字符表達式3)

VisualFoxPro9.0應用技巧

本章通過若干實例介紹軟件開發(fā)中涉及到的一些常見技巧,主要包括數(shù)據(jù)輸入、數(shù)據(jù)查詢、數(shù)據(jù)輸出、與Excel交互、使用圖形、工具欄、進度條等內(nèi)容。2.1數(shù)據(jù)輸入2.1.1中英文自動切換原理以文本框或組合框為父類新建一個子類,同時為這個新建的類添加一個屬性,根據(jù)此屬性的值分別調(diào)整imestatus()函數(shù)的值為0或1,以此來控制系統(tǒng)的輸入法狀態(tài)。2.1數(shù)據(jù)輸入2.1.2組合框的記憶選擇原理對組合框的每一次選擇都作以記載,把選擇的值存儲到公共變量中,并把此變量的值保存到內(nèi)存變量文件里。這樣,每次進入組合框時從內(nèi)存變量文件中恢復保存的變量,就可以記憶以往的選擇,從而提高操作效率。2.1數(shù)據(jù)輸入2.1.3編輯框中實現(xiàn)自動更正的方法原理1、把word的自動更正資料庫文件mso.acl中的漢字詞組正誤信息轉換為.dbf文件2、對允許輸入漢字的控件的Keypress事件編寫代碼,對輸入的漢字詞組在資料庫中進行校驗,自動把錯誤的詞組轉換為對應正確詞組。2.1數(shù)據(jù)輸入2.1.4VFP智能感應的二次開發(fā)

VFP從7.0版開始增加了智能感應(IntelliSense)功能。當我們輸入命令縮寫及空格后,命令會自動擴展。輸入函數(shù)名及左括弧、對象名及點之后,系統(tǒng)會自動提示相應的參數(shù)、屬性、方法名等供選擇。原理智能感應的所有內(nèi)容及方案都在一個表中定義,表的文件名默認為foxcode.dbf,在系統(tǒng)變量_foxcode中存放。修改或擴展這個表的內(nèi)容就可以改變智能感應的內(nèi)容。2.2數(shù)據(jù)查詢2.2.1熱點跟蹤和懸停效果在一個表單的各個控件之間進行焦點的轉移時,控件能夠在鼠標滑過的時候突出顯示,實現(xiàn)的既是熱點跟蹤的效果。原理1、利用SpeciaEffect屬性設置熱點跟蹤效果2、用_mouseoverfx類突出顯示效果3、利用MouseEnter和MouseLeave事件進一步設置動態(tài)效果4、對Grid的記錄進行控制2.2數(shù)據(jù)查詢2.2.2系統(tǒng)的查詢類及其應用原理1、VFP提供了進行查詢的類庫(_dataquery.vcx),應用其中的類_qbf,可以在表單的文本框中輸入查詢條件并顯示查詢結果。所有用于顯示字段內(nèi)容的文本框都可以用來輸入相關的查詢值,使用起來簡單方便。2、利用了事務回滾技術2.2數(shù)據(jù)查詢2.2.3用VFP設計數(shù)據(jù)表結構瀏覽器

原理利用COPYSTRUCTUREEXTENDED命令生成一個數(shù)據(jù)表的結構描述文件,并把結構描述文件的前四個主要字段送給表格控件作為數(shù)據(jù)源,從而實現(xiàn)在一個交互界面中隨意選擇表文件進行結構瀏覽2.3輸出報表2.3.1VFP9.0中的多細節(jié)帶區(qū)VisualFoxPro9.0的新增功能:執(zhí)行多細節(jié)帶區(qū)功能,實現(xiàn)一對多關系打印。通過打開報表設計器的屬性窗口,單擊OptionalBands選項卡中的Add按鈕添加一個細節(jié)帶區(qū)到列表中。在建立多細節(jié)帶區(qū)報表時,應當按一對多關系中的父表的某個具有惟一值的字段進行分組。2.3輸出報表2.3.2在報表中實現(xiàn)每頁打印指定記錄數(shù)原理可以采用數(shù)據(jù)分組的方法來實現(xiàn)每頁打印指定記錄數(shù),而數(shù)據(jù)分組則可以使用臨時表或設置報表變量的兩種方法實現(xiàn)。使用臨時表的方法設置一個局部變量DetailNum的值為每頁打印的記錄數(shù),根據(jù)它對記錄分組,形成分組號保存到自定義字段別名GroupCount中,把所有記錄的分組號以及原有字段內(nèi)容保存到臨時表Temp2,作為報表的數(shù)據(jù)源。2.3輸出報表2.3.2在報表中實現(xiàn)每頁打印指定記錄數(shù)使用報表變量的方法數(shù)據(jù)環(huán)境的Init事件定義一個全局變量tobePrint,保存每頁要打印的記錄數(shù)。新建兩個報表變量nCount和nGroup。nCount用于統(tǒng)計已經(jīng)打印的記錄個數(shù)。nGroup的值來自一個表達式,表示當前記錄已經(jīng)滿足一頁最大打印記錄數(shù)時,則用于代表頁碼的變量nGroup就會增加1。2.3輸出報表2.3.3在VFP中處理JPG文件原理不將圖像文件保存到GENERAL型字段中,而是把圖像文件保存到一個二進制的Memo型字段,當需要顯示圖像時,則將該二進制Memo型字段的內(nèi)容輸出到一個臨時文件中,然后再將臨時文件名賦給Image控件或OLEBound控件對應屬性來顯示圖像。2.3輸出報表2.3.3在VFP中處理JPG文件將圖像文件保存到二進制Memo型字段中的ftom函數(shù);將二進制Memo型字段中的圖像保存到一個外部文件中的mtof函數(shù)。2.4其他技術2.4.1表單Grid容器中控件的動態(tài)增刪及屬性設置原理1、用AddObject(zd,'Column')方法在表單的Grid1容器中添加一個“列”控件(文本框),以zd的值(選取的字段名)為控件名。2、然后,設置控件的屬性。包括寬度(Width)、可見性(Visible)、控制源(ControlSource)、列標題(Header1.Caption)等。2.4其他技術2.4.2工具欄的制作原理1、如果不脫離VFP系統(tǒng)環(huán)境(應用程序擴展名為APP),可通過定制工具欄或“object.show”指令,來使用VFP系統(tǒng)提供的各種工具欄。2、利用VFP系統(tǒng)提供的一個工具欄類tbrEditing來創(chuàng)建工具欄,位于…\Samples\Classes\Samples.vcx類庫中,可用于任意程序。3、指定工具欄停放位置的命令ToolBar.Dock[nLocation[,X,Y]]2.4其他技術2.4.3進度條的實現(xiàn)原理1、使用ActiveX控件實現(xiàn)進度條選定表單控件工具欄的ActiveX控件,在表單上添加一個MicrosoftProgressBarControlVersion6.0控件,并設置其Max屬性值,反映查詢的最大次數(shù)。2、使用_thermometer類實現(xiàn)進度條

_thermometer類位于“……\MicrosoftVisualFoxPro9\Ffc\_therm.vcx類庫中,基類為Form,該類用于提供一個標準的進度顯示。2.4其他技術2.4.4VFP與Excel交互

在VFP中控制Excel操作利用CREATEOBJECT("Excel.Application")命令生成excel對象,然后利用對象變量設置Excel的各項屬性及其復制數(shù)據(jù)。在VFP中獲取Excel數(shù)據(jù)利用APPENDFROM<文件名>TYPEXLS命令從EXCEL文件獲取數(shù)據(jù)。個人通訊錄管理器目的:

1.把親友、同學、同事的通訊錄信息集中統(tǒng)一管理,及時維護和更新,通過計算機提高檢索速度。

2.將收集的信息打印裝訂成“個人通訊錄”,便于平時使用。技術:

1、“篩選”子程序的定義和調(diào)用

2、輸出報表樣式的設計和使用。3.1軟件基本要求及設計方案要求:

1.軟件精巧,功能實用,界面友好。

2.數(shù)據(jù)維護方便。

3.信息檢索簡便、高效。

4.打印的“個人通訊錄”便于使用。3.2數(shù)據(jù)庫和表的設計數(shù)據(jù)庫表文件Txl三個索引,索引標識名字分別為“姓名”、“單位或地址”和“群組”。3.3表單外觀設計表單要具有對表信息的增、刪、改、排序、查找和打印功能。3.4表單及其控件的編碼3.4.1與查詢功能相關的代碼1、建立表單新“方法”——sx2、定義“篩選”過程把在對應文本框中輸入的“群組”、“姓名”、“電話”、“單位或地址”內(nèi)容作為過濾條件,通過過程把滿足條件的記錄篩選出來,達到查詢目的。3.4表單及其控件的編碼3.4.1與查詢功能相關的代碼3、調(diào)用“篩選”過程對Text1、Text2、Text3、Text4每個文本框的InteractiveChange事件編寫一條語句thisform.sx?!叭俊泵畎粹o的作用是清除過濾條件,顯示全部記錄,所以把全部條件清空后,也需調(diào)用“篩選”方法。3.4表單及其控件的編碼3.4.2

與排序有關的代碼根據(jù)選項按鈕組的值,通過SETORDERTO語句設置不同的索引順序3.4.3添加記錄功能的實現(xiàn)3.4表單及其控件的編碼3.4.3添加記錄功能的實現(xiàn)利用SCATTER和GATHER命令把某一條記錄原有的值傳遞到新記錄中去,這樣可以只做少量修改就完成了一條新記錄的輸入。3.4表單及其控件的編碼3.4.4切換刪除標記用函數(shù)DELETED()測試當前記錄是否帶有刪除標記,如果已作了刪除標記,則執(zhí)行命令RECALL取消刪除標記,否則用命令DELETE添加刪除標記。

3.4表單及其控件的編碼3.4.5打印和預覽——報表文件txl_bb

3.4表單及其控件的編碼3.4.6主程序設計

設置必要的環(huán)境狀態(tài),然后執(zhí)行表單Txl_screen是系統(tǒng)窗口,可通過代碼對它的一些屬性進行設置。READEVENTS命令執(zhí)行后可以接受用戶事件。3.4表單及其控件的編碼3.4.7表單上“退出”按鈕的代碼

計算帶有刪除標記的記錄個數(shù)送給變量cnt,如果cnt大于0,則用PACK命令刪除帶有標記的記錄。釋放(關閉)表單。恢復系統(tǒng)狀態(tài),清用戶事件,退出系統(tǒng)。3.5生成可執(zhí)行文件項目管理器中單擊Build按鈕編譯軟件光盤目錄檢索與維護工具功能:家庭用光盤目錄檢索與維護工具技術:

1、光盤類別從代碼到類別名稱的自動轉換

2、表的獨占方式打開

3、模態(tài)表單來實現(xiàn)對話框效果4.1系統(tǒng)設計目標目標:1、設計一個表單,作為人機交互界面,要求實現(xiàn)對信息的增、刪、改、排序、查詢和打印(特殊格式)功能,這樣就可以省去菜單、工具欄等對象,使軟件更加簡潔。2、由于“類別”信息具有一定的規(guī)律性,屬于枚舉型數(shù)據(jù),并且在基礎信息錄入時需要大量的重復式的操作,所以我們要設法提高輸入效率。這里我們采用一種直接代換式輸入方法,即用代號表示類別信息進行輸入。4.2數(shù)據(jù)表設計兩個自由表,一個叫tab_cd(光盤信息表),另一個叫tab_lb(光盤類別表)表tab_cd建立一個升序索引,索引名為“盤序號”,索引類型為Regular,索引表達式為“盤號+序號”4.3主表單設計4.3.1主表單外觀設計4.3主表單設計4.3.2主表單及控件的編碼

表單的Init事件代碼

1、生成編輯框(Edit1)中對應的類別提示信息。

2、表tab_cd中的記錄按預先定義的索引“盤序號”排序

3、調(diào)用表單的篩選子程序sx,將光盤信息表的內(nèi)容顯示出來4.3主表單設計4.3.2主表單及控件的編碼

表單的自定義方法sx及其代碼把在對應文本框中輸入的“盤號”、“內(nèi)容”、“編演者”、“喜歡程序”內(nèi)容和在組合框中選擇“類別”組合起來作為過濾條件,通過SETFILTERTO把滿足條件的記錄篩選出來,達到查詢的目的。4.3主表單設計4.3.2主表單及控件的編碼

調(diào)用“篩選”過程除了在表單的Init事件中,通過語句thisform.sx調(diào)用篩選子程序sx以外,當文本框Text1、Text2、Text3、Text5和組合框Combo1的內(nèi)容發(fā)生改變時,即當它們的內(nèi)容通過鍵盤或鼠標修改后,激活其InteractiveChange事件,這時也需要對表tab_cd的記錄進行篩選,即執(zhí)行sx過程。“全部”命令按鈕的作用是清除過濾條件,顯示全部記錄,也許調(diào)用“篩選”過程。4.3主表單設計4.3.2主表單及控件的編碼

添加記錄功能的實現(xiàn)利用SCATTER和GATHER命令把某一條記錄原有的值傳遞到新記錄中去,這樣可能只需做少量修改就完成了一條新記錄的輸入。4.3主表單設計4.3.2主表單及控件的編碼

切換刪除標記“刪除”按鈕的Click事件可對當前記錄添加或取消刪除標記。4.3主表單設計4.3.2主表單及控件的編碼

與排序有關的代碼用語句“SETORDERto盤序號”將表中的記錄按“盤序號”進行排序,然后把光標定位到第一條記錄,最后用語句thisform.Grid1.Column1.Text1.SetFocus將光標定位到表單上表格Grid1第一列的文本框上。4.3主表單設計4.3.2主表單及控件的編碼

打印和預覽通過“預覽”和“打印”按鈕對報表文件tab_cd進行預覽和打印?!邦悇e”按鈕對應代碼調(diào)用表單form_lb對類別信息進行維護。4.3主表單設計4.3.2主表單及控件的編碼

“退出”按鈕對應代碼

1、計算帶有刪除標記的記錄個數(shù)送給變量jls,如果jls大于0,則用PACK命令刪除帶有標記的記錄。

2、釋放(關閉)表單。

3、恢復原有狀態(tài),清除用戶事件,退出系統(tǒng)。4.3主表單設計4.3.2主表單及控件的編碼

Grid1中第六列文本Text1的相關代碼

1、第六列文本Text1的GotFocus使光標定位在第六列(類別)時,類別與代號提示信息出現(xiàn)在編輯框Edit1中,光標離開第六列時,提示信息消失。

2、第六列文本Text1的InteractiveChange事件能將輸入的類別代號自動轉換成相應的類別名稱。4.4類別信息維護表單設計4.4.1類別信息維護表單外觀設計4.4類別信息維護表單設計4.4.2類別信息維護表單及其控件代碼表單的Init事件將記錄數(shù)送給文本框Text4,作為Value值顯示出來?!疤砑印?、“刪除”、“退出”按鈕對應代碼各按鈕的代碼與主表單的對應按鈕代碼類似或相同。4.5打印報表設計建立報表文件tab_cb.frx,預覽結果如圖所示4.6主程序設計主程序的主要作用是對環(huán)境進行設置,然后執(zhí)行表單form_cd.scx。_screen是系統(tǒng)窗口,可通過代碼對它的一些屬性進行設置。READEVENTS命令執(zhí)行后可以接受用戶事件。常用類的設計與應用

本章首先介紹一下面向對象程序設計的基礎知識,然后給出兩個常用類的設計和應用方法。這兩個類可實現(xiàn)對任意表的記錄進行修改、增刪和查詢,對提高程序的可重用性,提高軟件的適應性和軟件開發(fā)效率具有重要意義。5.1面向對象程序設計基礎1.對象(Object)2.屬性(Property)3.事件(Event)和方法(Method)4.類(Class)5.繼承(Inherit)7.面向對象程序設計(OOP)8.VisualFoxPro基類9.容器與控件5.2“分頁增刪改”類的設計用于實現(xiàn)對任意數(shù)據(jù)表記錄的輸入、增添、刪除和修改操作,界面上可以顯示和修改任意一條記錄的全部字段,每次顯示一條記錄。在進行數(shù)據(jù)維護時,可以隨時按指定的字段或記錄號定位記錄,以提高操作效率。5.2“分頁增刪改”類的設計5.2.1類的創(chuàng)建與屬性設置

基類(BasedOn)為Form,指定要保存到(StoreIn)的類庫為page_form,指定類名(ClassName)為fyzsg,5.2“分頁增刪改”類的設計5.2.2添加類的“方法”和“屬性”新的方法u_show用來“顯示查詢控件組”,設置可見性(Visibility)為Public。方法u_hide用來隱藏查詢控件組和u_rcd方法用來顯示或隱藏記錄的刪除標記,顯示當前記錄號、記錄數(shù),可見性均為Public。新的屬性u_key用來“指定關鍵字段名(兩個漢字)”,設置可見性(Visibility)為Public,默認的初始值為“??”。

5.2“分頁增刪改”類的設計5.2.3表單類的編碼

init事件代碼u_show代碼u_hide代碼u_rcd代碼5.2“分頁增刪改”類的設計5.2.4控件的編碼在表單類上,我們放置了十二個命令按鈕。記錄翻閱按鈕代碼“首頁”、“前頁”、“后頁”和“尾頁”分別用來控制記錄指針到第一條記錄、上一條記錄、下一條記錄和最后一條記錄。5.2“分頁增刪改”類的設計與查詢相關的按鈕代碼單擊“查內(nèi)容”或“查頁號”按鈕時,要調(diào)整條件提示信息并顯示查詢控件組。記錄增刪與退出按鈕代碼“添加”命令按鈕的作用是在當前數(shù)據(jù)表中追加一條新的記錄,“刪除”命令按鈕用來對當前記錄添加或取消刪除標記,“退出”命令按鈕對加了刪除標記的記錄物理刪除,并釋放表單。5.3“分頁增刪改”類的應用添加類庫page_form.vcx到表單創(chuàng)建基于fyzsg類的表單,在表單集中刪除不必要的默認表單Form1,只留下基于fyzsg類的表單并保存。修改表單運行表單5.4“通用查詢”類的設計5.4.1基本設計思想

屬于通用的數(shù)據(jù)庫查詢模塊,要能夠對任意指定的表(數(shù)據(jù)庫中的表或自由表)確定查詢條件、指定輸出字段和排序字段,并要能夠對輸出結果進行控制。5.4“通用查詢”類的設計5.4.2類的創(chuàng)建與屬性設置基類為Form,保存到的類庫為class_lsz,指定類名(ClassName)為u_serch。設置類的屬性為三個頁面添加控件和設置屬性

5.4“通用查詢”類的設計5.4.3表單類的屬性定義及init事件代碼添加表單類的屬性表單類中添加一個自定義屬性tname作為入口參數(shù),存放要查詢的數(shù)據(jù)表名。5.4“通用查詢”類的設計5.4.3表單類的屬性定義及init事件代碼表單類的init事件代碼聲明全局變量,用來保存程序所需的信息和數(shù)據(jù);從表單的自定義屬性tname中取出數(shù)據(jù)表名;設置系統(tǒng)狀態(tài);打開指定的數(shù)據(jù)表,利用AFIELDS()函數(shù)將表的結構信息存入全局數(shù)組stru_mem、字段數(shù)送fcnt;。5.4“通用查詢”類的設計5.4.4頁框中Page1上按鈕及其相關代碼命令按鈕“>”代碼將列表框List1中選中的字段移動到列表框List2

命令按鈕“>>”代碼將列表框List1中所有字段移動到列表框List2命令按鈕“<”代碼將列表框List2中選中的字段移動到列表框List15.4“通用查詢”類的設計5.4.4頁框中Page1上按鈕及其相關代碼命令按鈕“<<”代碼將列表框List2中所有字段移回到列表框List1表單類自定義方法qhkd代碼如果查找的字段存在,則①取字段名和字段值寬度的最大值,保存到數(shù)組stru_mem對應行第6列的元素當中,作為字段的輸出寬度。②在數(shù)組stru_mem對應行第5列的元素中,設置輸出標記.T.(此前已設置為.F.)。③累加所有輸出字段的寬度,得到輸出字段的總寬度,保存到全局變量HKD中。5.4“通用查詢”類的設計5.4.5頁框中Page2上控件及其相關代碼

文本框代碼用于輸入查詢條件關系表達式的組成部分——值。表單類自定義方法tjzts的代碼能夠根據(jù)當前字段類型、關系運算符描述信息進行相應的條件值提示5.4“通用查詢”類的設計5.4.5頁框中Page2上控件及其相關代碼

“選中”和“清除”命令按鈕代碼“選中”按鈕將兩個子條件和邏輯運算符合成為總條件(邏輯表達式字符串),送給編輯框edit1,作為它的value屬性值保存并顯示出來?!扒宄泵畎粹o的作用是清除編輯框edit1的內(nèi)容5.4“通用查詢”類的設計5.4.5頁框中Page2上控件及其相關代碼

表單類自定義方法ztj的代碼這段代碼的功能是由調(diào)用參數(shù)zd(字段名)、gx(關系運算符描述信息)、nr(值),形成子條件(關系表達式),送給全局變量jstj。5.4“通用查詢”類的設計5.4.6頁框中Page3上命令按鈕代碼

“選中”命令按鈕的作用是,從列表框中取出選中的字段名,形成排序表達式送到編輯框。5.4“通用查詢”類的設計5.4.7表單類命令按鈕及其相關代碼

表單類“顯示”按鈕代碼“顯示”按鈕的作用是根據(jù)指定的輸出字段、檢索條件和排序字段將數(shù)據(jù)表的內(nèi)容在屏幕上顯示出來。表單類自定義方法zdtjpx的代碼形成輸出字段表列送變量sczd,取出檢索條件jstj,進行排序處理。5.4“通用查詢”類的設計表單類“到txt”按鈕代碼根據(jù)指定的輸出字段、檢索條件和排序字段將數(shù)據(jù)表的內(nèi)容按一定格式輸出到文本文件中表單類自定義方法“l(fā)ine1”、“l(fā)ine2”和“l(fā)ine3”代碼方法“l(fā)ine1”的功能是輸出一條橫線,長度為各輸出字段寬度之和。方法“l(fā)ine2”的功能是輸出選定的字段名并控制中間的空格數(shù)以調(diào)整輸出寬度與橫線匹配。方法“l(fā)ine3”的功能是輸出選定字段的值并控制中間的空格數(shù)以調(diào)整輸出寬度與橫線匹配。5.4“通用查詢”類的設計表單類“到Excel”和“取消”按鈕代碼“到Excel”按鈕的作用是根據(jù)指定的輸出字段、檢索條件和排序字段將數(shù)據(jù)表的內(nèi)容輸出到Excel工作簿文件中?!叭∠泵畎粹o的作用是關閉表單。5.5“通用查詢”類的應用①選擇輸出字段②設置查詢條件③設置排序字段④開始查詢購房打分排隊軟件目標:人工輸入申請購房者的基礎信息,由計算機自動求出各項分數(shù)和總分數(shù),進行排序,打印輸出結果,提高工作效率和質(zhì)量。技術:用到了第5章介紹的“分頁增刪改”類和“通用查詢”類,在動態(tài)信息提示、即時求值、宏代換應用等方面采用了比較特殊的技術。6.1數(shù)據(jù)表與菜單6.1.1數(shù)據(jù)表設計——自由表house.dbf6.1數(shù)據(jù)表與菜單

6.1.2菜單設計系統(tǒng)的主要功能是輸入基本信息,計算各項分數(shù)和總分數(shù),查詢,排序和打印輸出。其中,輸入和計算由一個模塊完成,查詢、排序、打印輸出由另一個模塊(通用查詢)完成。6.2主程序和“退出”程序軟件的入口程序:主程序.prg

這段代碼首先設置系統(tǒng)窗口的一些屬性。包括標題、圖標、背景顏色,取消最大化按鈕、關閉按鈕,使用窗口最大化。然后設置系統(tǒng)的開關或狀態(tài)。最后關閉所有文件,清除所有變量,執(zhí)行主菜單并讀取用戶事件。

軟件的結束程序:退出.prg

這段代碼首先恢復系統(tǒng)窗口的默認屬性。包括標題、圖標、最大化按鈕、關閉按鈕。然后關閉所有文件,清所有變量,釋放窗口和表單,恢復系統(tǒng)菜單,退出VFP。6.3“輸入計算”表單表單可以在第5章介紹的“分頁增刪改”類的基礎上創(chuàng)建。將第5章創(chuàng)建的類庫page_form.vcx復制到本章源代碼所在的文件夾,并將類庫page_form.vcx添加到本章的項目文件house.pjx中。6.3“輸入計算”表單6.3“輸入計算”表單

表單上與數(shù)據(jù)表對應有19個字段,為了使光標定位到每個字段的文本框時,能夠在表單的文本框Text4中顯示或清除提示信息,或者自動計算并填寫該字段的值,需要分別對字段所在的文本框編寫GotFocus事件代碼。6.3“輸入計算”表單需要顯示提示信息的字段需要顯示提示信息的有“職別”、“住戶類別”、“排序類別”、“申請戶型”、“學齡分”、“人口結構分”和“照顧分”,共7個字段。需要清除提示信息的字段需要清除提示信息的有“姓名”、“工資”和“獎勵分”,共3個字段。6.3“輸入計算”表單需要自動計算并填寫內(nèi)容的字段需要自動計算并填寫內(nèi)容(可能同時需要顯示或清除提示信息)的有“工作時間”、“高校時間”、“截止時間”、“職別分”、“工資分”、“工齡分”、“高校校齡分”、“面積補差分”和“總分”,共9個字段。6.3“輸入計算”表單表單自定義方法及其編碼自定義方法bdsqz相當于表單中的一個函數(shù)。它將一個算術表達式字符串作為自變量,對表達式進行處理并求值,得到一個等式字符串或一個數(shù)值字符串作為函數(shù)值返回。在“面積補差分”和“照顧分”兩個字段中,允許輸入表達式,當光標離開該字段時,系統(tǒng)自動計算出表達式的值,并形成一個等式字符串或一個數(shù)值字符串重新填寫到當前字段中。為此,我們對這兩個字段的LostFocus事件編寫代碼來調(diào)用表單的自定義方法完成對表達式處理和求值操作。6.3“輸入計算”表單運行表單

打開“購房打分排隊.輸入計算”窗口。此時,可以輸入或修改當前記錄各個字段的值6.4“查詢輸出”表單

為實現(xiàn)對購房打分信息的查詢、排序、輸出和打印功能,我們設計一個“查詢輸出”表單。該表單可以直接使用第5章介紹的“通用查詢”類,只修改部分屬性即可。6.4“查詢輸出”表單6.4.1創(chuàng)建表單并設置屬性設置自定義屬性tname的值為house,作為入口參數(shù),也就是指定了要查詢的數(shù)據(jù)表。此外,設置表單的Caption屬性為“購房打分排隊.查詢輸出”作為窗口標題,設置表單的icon(圖標)屬性為house.ico。設置標簽Label1(TXT類別)和選項按鈕組Optiongroup1的Visible屬性為.F.,使它們不可見,因為這里用不著“多表頭”的TXT文本文件類型。6.4“查詢輸出”表單6.4.2運行表單打開“購房打分排隊.查詢輸出”窗口,可選擇輸出字段、排序字段,指定條件進行查詢和輸出。圖書資料管理系統(tǒng)目標:主要針對于小型資料室,比如高校的院系資料室,中等學校以及企事業(yè)單位的圖書資料室等,用于管理圖書、期刊信息,進行資料查詢和借閱等處理。技術:用到了第5章介紹的“分頁增刪改”類,創(chuàng)建并使用了新的“借閱者”和“瀏覽增刪改”類,采用了“直接代換式輸入”、“多表關聯(lián)查詢”等特殊技術,提高了輸入效率和查詢質(zhì)量。7.1菜單與主程序設計7.1.1菜單設計

7.1菜單與主程序設計7.1.2主程序設計——main.prg

代碼首先設置系統(tǒng)窗口的一些屬性。包括標題、圖標、背景顏色,取消最大化按鈕、關閉按鈕,使用窗口最大化。然后設置系統(tǒng)的開關或狀態(tài),關閉所有文件,清所有變量。最后聲明必要的全局變量和數(shù)組,恢復存于文件的內(nèi)存變量,執(zhí)行主菜單并讀取用戶事件。7.2數(shù)據(jù)表與視圖設計數(shù)據(jù)庫:資料庫.dbc

7.2.1數(shù)據(jù)表設計

“圖書”、“圖書流通”、“期刊”、“期刊流通”、“借閱者”五個數(shù)據(jù)庫表。7.2.2視圖設計

“圖書借閱”和“期刊借閱”兩個本地視圖。

7.3類的設計與類庫管理7.3.1借閱者組合框類設計基類為ComboBox,保存到類庫wizstyle.vcx,指定類名為jyz

。Init事件:首先清除自身(組合框)的項目。然后選擇“借閱者”數(shù)據(jù)表的工作區(qū),按“姓名”索引排序,依次將每條記錄的“姓名”字段內(nèi)容添加到組合框,作為組合框的項目。7.3類的設計與類庫管理LostFocus事件:取出組合框中顯示的借閱者姓名。然后選擇“借閱者”數(shù)據(jù)表的工作區(qū),用Locate語句進行記錄定位。如果數(shù)據(jù)表中沒有指定的借閱者姓名,則添加一條記錄,并將新的姓名作為記錄的內(nèi)容。最后,調(diào)用init事件代碼,刷新組合框項目。7.3類的設計與類庫管理7.3.2瀏覽增刪改類設計

基類為Form,保存到類庫wizstyle.vcx,指定類名為llzsg。

7.3類的設計與類庫管理7.3.3類庫管理第5章介紹的“分頁增刪改”類將用于本章的“圖書資料管理系統(tǒng)”,對“圖書”和“期刊”數(shù)據(jù)表內(nèi)容進行分頁增刪改,我們可以將類庫page_form中的fyzsg類復制到本章創(chuàng)建的類庫wizstyle中。

7.4表單設計

對照7.1.1節(jié)的菜單項,我們應該設計11個表單:

圖書分頁增刪改表單:“圖書登記_a”

圖書瀏覽增刪改表單:“圖書登記_b”

期刊分頁訂閱登記表單:“期刊登記_a”

期刊瀏覽訂閱登記表單:“期刊登記_b”

期刊到刊登記表單:“到刊登記”借閱者名單維護表單:“借閱者”圖書借還處理表單:“圖書借還”期刊借還處理表單:“期刊借還”圖書查詢表單:“圖書查詢”期刊查詢表單:“期刊查詢”借閱清單查詢表單:“借閱信息”7.4表單設計7.4.1圖書分頁增刪表單

本表單用于實現(xiàn)以分頁(每頁一條記錄)方式對圖書信息進行錄入、修改、添加和刪除操作,在“分頁增刪改”類的基礎上創(chuàng)建。

7.4表單設計7.4.2期刊分頁訂閱登記表單

與圖書分頁增刪表單類似,本表單用于實現(xiàn)以分頁方式對期刊信息的維護操作,也是在“分頁增刪改”類的基礎上創(chuàng)建。表單的創(chuàng)建方法與圖書增刪改表單相同。7.4表單設計7.4.3圖書瀏覽增刪改表單

本表單用于實現(xiàn)以瀏覽(表格)方式對圖書信息進行維護管理,在“瀏覽增刪改”類的基礎上創(chuàng)建。7.4表單設計7.4.4期刊瀏覽訂閱登記表單

本表單用于實現(xiàn)以瀏覽方式對期刊訂閱信息進行維護管理,在“瀏覽增刪改”類的基礎上創(chuàng)建。7.4表單設計7.4.5借閱者名單維護表單

本表單用于實現(xiàn)以瀏覽方式對借閱者名單進行維護管理,也在“瀏覽增刪改”類的基礎上創(chuàng)建。7.4表單設計7.4.6期刊到刊登記表單這個表單用于對已訂閱的期刊進行到刊登記,在指定刊號或刊名、年份后,顯示出當前已經(jīng)登記的各期“期號”,單擊“添加”按鈕,自動按順序添加新的“期號”,同時應具備“期號”刪除和當前記錄號顯示功能。7.4表單設計7.4.7圖書借還處理表單這個表單用于進行圖書借閱和歸還處理。在指定書號或書名、借閱者后,單擊“借閱”按鈕,進行圖書借閱登記。雙擊“圖書流通”數(shù)據(jù)表某條記錄的“還期”字段,自動填寫當前日期,進行歸還處理。具備“取消借閱”功能。本表單使用了7.3節(jié)創(chuàng)建的jyz(借閱者組合框)類。7.4表單設計7.4.8期刊借還處理表單這個表單用于進行期刊借閱和歸還處理。在指定刊號或刊名、年份、期號、借閱者后,單擊“借閱”按鈕,進行期刊借閱登記。雙擊“期刊流通”數(shù)據(jù)表某條記錄的“還期”字段,自動填寫當前日期,進行歸還處理。具備“取消借閱”功能。本表單使用了7.3節(jié)創(chuàng)建的jyz(借閱者組合框)類。7.4表單設計7.4.9圖書查詢表單這個表單用于對圖書信息進行查詢,同時可以查詢指定圖書的借閱情況。采用了多表關聯(lián)查詢技術。7.4表單設計7.4.10期刊查詢表單這個表單用于對期刊信息進行查詢,同時可以查詢指定期刊的借閱情況。采用了多表關聯(lián)查詢技術。7.4表單設計7.4.11借閱信息查詢表單這個表單用于查詢每位借閱者的借閱清單,使用了7.3節(jié)創(chuàng)建的jyz(借閱者組合框)類。7.5軟件的使用軟件運行后,可以通過菜單項使用相應的功能數(shù)據(jù)維護:圖書分頁增刪改、圖書瀏覽增刪改、期刊分頁訂閱登記、期刊瀏覽訂閱登記、期刊到刊登記、借閱者信息維護借還處理:圖書借還、期刊借還查詢:查閱圖書、查閱期刊、借閱清單通用工資管理系統(tǒng)目標:建立適用于各企事業(yè)單位、各類人員的通用工資管理系統(tǒng),能夠管理月工資、日工資、計時工資和計件工資。技術:在數(shù)據(jù)表結構的定義、數(shù)據(jù)的維護、統(tǒng)計、查詢、打印等方面都采用了通用技術。尤其是結構描述文件和宏代換起到了至關重要的作用。8.1數(shù)據(jù)表設計創(chuàng)建表的結構描述文件

COPYSTRUCTURETO<文件名>extended利用結構描述文件生成表

CREATE<數(shù)據(jù)表>FROM<結構描述文件>對結構描述文件的結構進行有限修改,比如添加若干字段,仍然可以用來創(chuàng)建數(shù)據(jù)表。利用結構描述文件的這些特性,我們可以在程序運行時,讓用戶修改結構描述文件的記錄,然后創(chuàng)建數(shù)據(jù)表,達到動態(tài)修改表結構的目的。8.1數(shù)據(jù)表設計結構描述文件

ygz_j.dbf、rgz_j.dbf、jsgz_j.dbf和jjgz_j.dbf四個擴充的結構描述文件。數(shù)據(jù)表

ygz.dbf、rgz.dbf、jsgz.dbf和jjgz.dbf,分別用來保存月工資、日工資、計時工資和計件工資的有關信息。數(shù)據(jù)表gzlb.dbf——在軟件運行時供用戶能夠選擇和設置不同的工資類型。8.2菜單與主程序設計8.2.1菜單設計“退出”菜單主程序.prg8.2菜單與主程序設計8.2.2主程序設計主程序.prg

設置系統(tǒng)窗口的一些屬性。包括標題、圖標、背景顏色,取消最大化按鈕、關閉按鈕,使用窗口最大化。然后設置系統(tǒng)的開關或狀態(tài),關閉所有文件,清所有變量。最后聲明三個全局變量,恢復存于文件SYS.MEM的內(nèi)存變量,執(zhí)行主菜單并讀取用戶事件。8.3系統(tǒng)功能的實現(xiàn)8.3.1工資類別設置

——類別設置.scx

在表單中通過下拉列表來指定工資類型,把工資類別名、工資類別符號、結構描述文件名放到全局變量s_lbm、s_lbf、s_lbfj中,以便在系統(tǒng)的各個模塊中引用。并且工資類別設置具有記憶功能。8.3系統(tǒng)功能的實現(xiàn)8.3.2工資數(shù)據(jù)表結構定義——結構定義.scx

添加Grid1控件,其RecordSource屬性設置為“&s_lbfj”。這樣數(shù)據(jù)源就不再是固定的,而是用變量s_lbfj的值作為數(shù)據(jù)源,達到動態(tài)指定數(shù)據(jù)源的效果,表格中反映對應的表結構描述文件。利用當前結構描述文件修改對應的工資數(shù)據(jù)表結構。8.3系統(tǒng)功能的實現(xiàn)8.3.2工資數(shù)據(jù)表結構定義——結構定義.scx

表單的Load事件:以獨占方式打開由全局變量s_lbfj所指定的擴充結構描述文件,并將表單標題修改為“XX庫結構”。表單的Activate事件:顯示當前數(shù)據(jù)表(結構描述文件)的記錄總數(shù)Grid1每一列文本對象的GotFocus事件:動態(tài)地顯示出相應的提示信息“插入”按鈕的作用是在當前結構描述文件中插入一條記錄“取消”按鈕用來關閉當前打開的數(shù)據(jù)表(結構描述文件)和表單“確認”按鈕的主要功能是利用當前結構描述文件修改對應的工資數(shù)據(jù)表結構8.3系統(tǒng)功能的實現(xiàn)8.3.3瀏覽修改工資表數(shù)據(jù)

——瀏覽修改.prg系統(tǒng)提供了“瀏覽修改”、“選字段修改”、“統(tǒng)一替換”和“條件修改”四種方式,以適應不同需求。瀏覽修改方式與在VFP環(huán)境中使用BROWSE命令效果相仿。但為了在軟件運行時對特定的工資數(shù)據(jù)的內(nèi)容進行修改,開辟自己的瀏覽窗口,對字段進行控制。8.3系統(tǒng)功能的實現(xiàn)8.3.4選字段修改工資表數(shù)據(jù)

——選項修改.scx首先把組合框Combo1的顯示值(也就是字段類別名)取出來放到變量zdlb中,用DOCASE語句根據(jù)字段類別建立相應的過濾條件表達式字符串,送給變量gltj。然后利用全局變量s_lbfj和宏代換打開當前結構描述文件,把滿足gltj條件的記錄過濾出來。再用循環(huán)語句把這些記錄Field_name字段的值(也就是對應工資數(shù)據(jù)表中指定類別的字段名)添加到組合框Combo2中,作為其列表項,以此達到對工資數(shù)據(jù)表字段進行篩選的目的。這里用到了擴充的結構描述文件中“類別”字段的內(nèi)容。8.3系統(tǒng)功能的實現(xiàn)8.3.5統(tǒng)一替換字段內(nèi)容

——統(tǒng)一替換.scx

利用“通用查詢”類,可以對任意數(shù)據(jù)表指定輸出字段和限制條件進行查詢輸出。這里我們利用其指定輸出字段功能來指定要替換內(nèi)容的字段名,添加一個文本框來輸入替換表達式,直接利用它本身的功能設置限制條件,再修改某個命令按鈕的代碼,就可以完成統(tǒng)一替換字段內(nèi)容的操作。8.3系統(tǒng)功能的實現(xiàn)8.3.6條件修改工資表數(shù)據(jù)

——條件修改.scx這與利用“通用查詢”模塊進行查詢,并把查詢結果顯示在屏幕上的效果相當。因此可以引用“通用查詢”類,創(chuàng)建一個表單,再對表單進行必要的修改。設置表單的自定義屬性tname的值為“&s_lbf”,作為入口參數(shù),通過全局變量s_lbf和宏代換指定工資數(shù)據(jù)表。8.3系統(tǒng)功能的實現(xiàn)8.3.7數(shù)據(jù)計算

——數(shù)據(jù)計算.prg在工作區(qū)a和工作區(qū)b分別打開特定的工資數(shù)據(jù)表和對應的結構描述文件。用循環(huán)語句對結構描述文件的每條記錄進行掃描。如果該記錄定義了公式,則取出field_name和“公式”字段的值保存到變量zdm和gs中,選擇工資數(shù)據(jù)表工作區(qū),用“REPLACEALL&zdmWITH&gs”語句計算并填寫工資數(shù)據(jù)表對應字段的值,再返回結構描述文件工作區(qū)。8.3系統(tǒng)功能的實現(xiàn)如果該記錄“類別”字段的內(nèi)容為“1”,說明對應的工資數(shù)據(jù)表的字段是收入項,則把該記錄field_name字段的值(也就是對應的工資數(shù)據(jù)表的字段名)拼接到變量SRX中。如果該記錄“類別”字段的內(nèi)容為“2”,說明對應的工資數(shù)據(jù)表的字段是支出項,則把該記錄field_name字段的值拼接到變量ZCX中。最后選擇工資數(shù)據(jù)表工作區(qū),用REPLACE語句和宏代換功能計算并填寫“應發(fā)工資”、“扣款合計”和“實發(fā)工資”字段的內(nèi)容,完成數(shù)據(jù)計算任務。8.3系統(tǒng)功能的實現(xiàn)8.3.8查詢輸出

——查詢輸出.scx

直接引用“通用查詢”類,創(chuàng)建一個表單,進行必要的參數(shù)設置即可。8.4軟件的使用類別設置結構定義瀏覽修改選項修改統(tǒng)一替換條件修改數(shù)據(jù)計算查詢輸出小區(qū)住戶信息管理系統(tǒng)目標:建立一個小區(qū)住戶信息管理系統(tǒng),用于對小區(qū)的樓棟信息和住戶信息進行存儲和查詢。能夠顯示小區(qū)布局圖,自動生成樓棟視圖。技術:圖形中熱區(qū)的定義,樓棟視圖的自動生成。在表單上動態(tài)添加控件和設置屬性,動態(tài)調(diào)整位置和大小。對象之間參數(shù)傳遞,標簽控件Tag屬性的應用,類的創(chuàng)建與應用,宏代換的應用等。9.1數(shù)據(jù)表設計建立一個自由表“樓棟信息.dbf”,按字段“編號”建立一個取名為“編號”的升序普通索引。在“樓棟信息”數(shù)據(jù)表中,每條記錄保存一棟住宅樓的基本信息。字段“層數(shù)”和“單元數(shù)”表示對應的住宅樓有多少層,多少個單元(樓梯)。小區(qū)的所有住戶信息用一個數(shù)據(jù)表“住戶信息.dbf”保存,每條記錄為一個住戶的基本信息。按字段“編號”建立一個名為“編號”升序普通索引,?!熬幪枴庇?位數(shù)字符號,前兩位代表樓棟編號,3~4位代表單元號,5~6位代表樓層。最后兩位代表同層、同單元的戶號,我們稱之為梯戶號。梯戶號與數(shù)據(jù)表中的“門號”相對應。9.1數(shù)據(jù)表設計“樓棟信息.dbf”數(shù)據(jù)表結構“住戶信息.dbf”數(shù)據(jù)表結構9.2菜單與主程序設計9.2.1菜單設計9.2菜單與主程序設計9.2.2主程序設計這段代碼首先設置系統(tǒng)窗口的一些屬性,然后設置系統(tǒng)的開關或狀態(tài),關閉所有文件,清所有變量,聲明必要的全局變量。接下來用數(shù)組元素定義不同梯戶數(shù)中每一梯戶號對應的門號,設置1~10小寫數(shù)字所對應的大寫數(shù)字。最后執(zhí)行主菜單并讀取用戶事件。9.3類的設計與類庫管理9.3.1透明標簽類的設計為了使鼠標移動到任意一棟住宅樓的圖標時,改變指針形狀,單擊鼠標后打開該樓的視圖,需要在每個住宅樓的圖標上建立熱區(qū)。創(chuàng)建一個透明標簽類,設置適當?shù)膶傩圆⒕帉懘a后,把它放到每個住宅樓的圖標上作為一個控件,實現(xiàn)熱區(qū)和相應的操作。

9.3類的設計與類庫管理9.3.2編輯框類和容器類的設計

每一棟樓的視圖由表單上若干個單元格組成,每個單元格是一個編輯框控件或容器控件。樓棟視圖樣式圖中左側的樓層標注(一、二、三、四、五、六層)以及下邊的單元標注(一單元、二單元、三單元、四單元)為容器控件,其余每個單元格都是一個編輯框控件。9.3.3類庫管理9.4表單設計9.4.1樓棟信息維護表單樓棟信息維護功能由該表單實現(xiàn),本表單用于實現(xiàn)以分頁方式對樓棟信息進行錄入、修改、添加和刪除操作,在“分頁增刪改”類的基礎上創(chuàng)建。9.4表單設計9.4.2住戶信息維護表單本表單用于實現(xiàn)以瀏覽方式對住戶信息進行維護管理,在“瀏覽增刪改”類的基礎上創(chuàng)建。9.4表單設計9.4.3住戶信息查詢表單

用于對“住戶信息”數(shù)據(jù)表進行查詢,設置查詢條件,指定輸出字段、排序字段進行查詢,將結果輸出到屏幕、文本文件或Excel工作簿,引用“通用查詢”類,創(chuàng)建一個表單,進行必要的參數(shù)設置即可。9.4表單設計9.4.4小區(qū)布局表單在表單的快捷菜單中選擇DataEnvironment項,打開數(shù)據(jù)環(huán)境對話框,將數(shù)據(jù)表“樓棟信息”添加到數(shù)據(jù)環(huán)境中。在表單上放置一個Image控件Image1,使其顯示繪制的小區(qū)布局圖。在表單中小區(qū)布局圖的每棟住宅樓圖標上邊放置一個自定義類li_lb控件,根據(jù)圖標調(diào)整位置和大小,使之盡可能覆蓋樓棟的圖標。9.4表單設計9.4.5樓棟視圖表單該表單在設計時不需要放置任何控件,運行時由程序根據(jù)參數(shù)自動添加若干個編輯框控件和容器控件,自動調(diào)整大小和位置,形成特定樓棟的視圖。表單的Init事件代碼可實現(xiàn)在表單上動態(tài)添加控件形成樓棟視圖,Resize事件代碼可對表單上各控件重新定位并調(diào)整大小。9.4表單設計9.4.6單個住戶表單本表單可實現(xiàn)在軟件運行時,當用戶在“樓棟視圖”的任意一個住戶標示控件上右擊鼠標,將打開“單個住戶”表單,來顯示或修改對應的住戶信息。數(shù)據(jù)表“住戶信息”和數(shù)據(jù)表“樓棟信息”添加到數(shù)據(jù)環(huán)境中。

9.5軟件的使用1.樓棟信息維護2.住戶信息維護3.住戶信息查詢4.小區(qū)布局圖、樓棟視圖和單個住戶信息操作通用學生成績管理系統(tǒng)目標:建立一個通用學生成績管理系統(tǒng),作為一個教學管理軟件,用于管理高校各級、各類學生的各門課程成績、量化分數(shù)、綜合分數(shù)。能方便地進行信息的輸入、修改、統(tǒng)計、排序、查詢和打印。技術:該系統(tǒng)在數(shù)據(jù)錄入,數(shù)據(jù)表結構的創(chuàng)建與修改,課程類別標識,成績的統(tǒng)計,特別是數(shù)據(jù)表的橫向統(tǒng)計等方面都采用了比較特殊的技術,使軟件具有很強的通用性。10.1數(shù)據(jù)表設計在設計數(shù)據(jù)表時,把高等學校同一院系(或專業(yè))、同一年級、同一層次的學生作為一個學生群組(或稱學生對象),每個學生群組分別建立三個數(shù)據(jù)表:成績數(shù)據(jù)表、成績數(shù)據(jù)表的結構描述文件、課程統(tǒng)計結果數(shù)據(jù)表。成績數(shù)據(jù)表是主體,它與結構描述文件對應并通過結構描述文件建立,用來存放學生基本信息、各門課成績、各學期量化分、綜合分、總平均分、專業(yè)課平均分、名次等數(shù)據(jù)。不同學生群組所對應的成績數(shù)據(jù)表結構不同。10.1數(shù)據(jù)表設計課程統(tǒng)計結果數(shù)據(jù)表用來存放成績數(shù)據(jù)表中各門課程的優(yōu)秀人數(shù)、良好人數(shù)、及格人數(shù)、及格率等統(tǒng)計信息。建立一個臨時自由表tmp.dbf,隨便定義一個字段后保存。執(zhí)行命令COPYSTRUCTURETOjgextended,建立表tmp.dbf的一個結構描述文件jg.dbf。修改結構描述文件jg的結構,在后面添加三個字段“課程類別”、“學期”和“數(shù)據(jù)有效”,得到具有21個字段的擴充結構描述文件。10.1數(shù)據(jù)表設計擴充的結構描述文件jg.dbf結構

10.1數(shù)據(jù)表設計創(chuàng)建一個僅用于課程定義的結構描述文件jg_k.dbf。用這個結構描述文件的記錄定義與課程相關的課程名稱、課程類別、開課學期信息后,把它同名追加到結構描述文件jg.dbf中,并用程序自動填寫field_type、field_len、field_dec等字段的內(nèi)容,就可以生成對應的成績數(shù)據(jù)表。建立兩個數(shù)據(jù)表xibie.dbf和xslx.dbf,分別用來保存院系信息和學生類別信息建立一個課程統(tǒng)計結果數(shù)據(jù)表tj.dbf10.2

菜單、工具欄、主程序與退出程序10.2.1菜單設計10.2

菜單、工具欄、主程序與退出程序10.2.2工具欄設計新建類在NewClass對話框中選擇基類為Toolbar,指定要保存到的類庫為wizstyle,指定類名為cj_toolbar。

10.2

菜單、工具欄、主程序與退出程序創(chuàng)建工具欄對象在cj_toolbar類的基礎上建立一個工具欄。設置工具欄按鈕屬性工具欄按鈕編碼10.2

菜單、工具欄、主程序與退出程序10.2.3主程序這段代碼首先設置系統(tǒng)窗口的一些屬性。然后設置系統(tǒng)的開關或狀態(tài),關閉所有文件,清所有變量。最后聲明必要的全局變量和全局數(shù)組,恢復存于文件XSZ.MEM的內(nèi)存變量,打開工具欄,執(zhí)行主菜單,在狀態(tài)欄中顯示當前學生對象信息,讀取用戶事件。10.2.4退出程序恢復系統(tǒng)窗口狀態(tài),清事件,關閉所有文件,清所有變量,釋放窗口和表單,恢復系統(tǒng)菜單,退出系統(tǒng)。10.3系統(tǒng)服務功能的實現(xiàn)10.3.1查看學生對象可以使用戶隨時了解系統(tǒng)當前存在哪些學生對象,以便有針對性地選擇需要的學生群組進行數(shù)據(jù)處理,或者建立新的學生對象數(shù)據(jù)表。10.3系統(tǒng)服務功能的實現(xiàn)10.3.2指定學生對象

用來指定學生對象組10.3系統(tǒng)服務功能的實現(xiàn)10.3.3修改學生類型和院系信息

修改學生類型通過在“系統(tǒng)服務|修改學生類型”菜單項中建立一個過程來實現(xiàn)修改xslx.dbf數(shù)據(jù)表的內(nèi)容。修改院系信息通過在“系統(tǒng)服務|修改院系信息”菜單項中建立一個過程來實現(xiàn)修改xibie.dbf數(shù)據(jù)表的內(nèi)容。10.4創(chuàng)建和修改表結構功能

的實現(xiàn)10.4.1菜單項過程設計

1.“建新表結構”菜單項過程當前學生對象成績數(shù)據(jù)表文件名保存到全局變量CJK_WJM中??梢杂肍ILE(CJK_WJM)函數(shù)檢測數(shù)據(jù)表是否已經(jīng)建立。如果數(shù)據(jù)表已經(jīng)建立,則只能查看或修改表結構如果該學生對象的數(shù)據(jù)表尚未建立,則調(diào)用“表結構創(chuàng)建”表單來創(chuàng)建數(shù)據(jù)表結構。

10.4創(chuàng)建和修改表結構功能

的實現(xiàn)10.4.1菜單項過程設計

2.“改原表結構”菜單項過程如果數(shù)據(jù)表已經(jīng)存在,并且在確認對話框中選擇了“是”,則通過全局變量CJK和宏代換打開指定的學生對象的數(shù)據(jù)表,將數(shù)據(jù)備份到臨時數(shù)據(jù)表TMP中。然后打開用于課程定義的結構描述文件JG_K,清除原有記錄,再把當前學生對象成績數(shù)據(jù)表結構描述文件中課程定義相關的記錄追加過來,達到提取原表結構的目的。最后,關閉所有數(shù)據(jù)表,調(diào)用“表結構創(chuàng)建”表單。10.4創(chuàng)建和修改表結構功能

的實現(xiàn)10.4.2“表結構創(chuàng)建”表單設計本表單要對課程定義結構描述文件JG_K的內(nèi)容進行修改,然后通過代碼將JG_K的記錄追加到成績數(shù)據(jù)表結構描述文件樣板JG中,并利用JG創(chuàng)建當前學生對象的數(shù)據(jù)表。10.5顯示表結構功能的實現(xiàn)顯示表結構創(chuàng)建一個過程,編寫相應的代碼。通過代碼檢測數(shù)據(jù)表文件存在后,調(diào)用“表結構顯示”表單來顯示當前學生對象成績數(shù)據(jù)表結構。10.6成績數(shù)據(jù)表信息管理10.6.1“學生名冊輸入”表單這個表單用來輸入或修改指定學生對象數(shù)據(jù)表中“學號”、“班級”、“姓名”三個字段的內(nèi)容。10.6.2“成績單科輸入”表單

這個表單用來輸入或修改指定的某一門課成績、某一學期的量化分或補考課程門數(shù)。10.6成績數(shù)據(jù)表信息管理10.6.3“成績?yōu)g覽修改”表單

對當前學生對象的成績數(shù)據(jù)表進行瀏覽修改。10.6.4“成績檢測”表單

檢測當前學生對象成績數(shù)據(jù)表的異常數(shù)據(jù),給出信息提示,同時設置成績數(shù)據(jù)表結構描述文件的“數(shù)據(jù)有效”字段值。10.7數(shù)據(jù)統(tǒng)計功能的實現(xiàn)在“數(shù)據(jù)統(tǒng)計”菜單下,我們設計了“成績統(tǒng)計”、“課程統(tǒng)計”和“排列名次”三個菜單項,每個菜單項對應一個過程。10.7.1“成績統(tǒng)計”過程設計系統(tǒng)要能夠自動求出每個學生的總平均分、專業(yè)必修課平均分,各學期的課程平均分、專業(yè)必修課平均分、綜合分,并將結果保存到當前學生對象成績數(shù)據(jù)表中。同時,要在對應的結構描述文件中填寫“數(shù)據(jù)有效”字段的內(nèi)容。10.7數(shù)據(jù)統(tǒng)計功能的實現(xiàn)10.7.2“課程統(tǒng)計”過程設計

能夠自動求出每門課的實考人數(shù)、課程平均分,優(yōu)秀、

溫馨提示

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

最新文檔

評論

0/150

提交評論