04用VC制作一個(gè)工資管理系統(tǒng)方案_第1頁(yè)
04用VC制作一個(gè)工資管理系統(tǒng)方案_第2頁(yè)
04用VC制作一個(gè)工資管理系統(tǒng)方案_第3頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、案例四用 VC+制作一個(gè)工資管理系統(tǒng)關(guān)鍵詞: VC+數(shù)據(jù)庫(kù)數(shù)據(jù)表控件綁定統(tǒng)計(jì)計(jì)算4.1課程設(shè)計(jì)的目的和意義工資管理是任何企事業(yè)單位都需要進(jìn)行的一項(xiàng)工作,因此,開(kāi)發(fā)制作工資管理系統(tǒng)具有較大的社會(huì)現(xiàn)實(shí)意義, 同時(shí)工資管理系統(tǒng)的最大特征是數(shù)據(jù)處理, 它是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的典, 它具有一切數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的特征,如數(shù)據(jù)錄入,數(shù)據(jù)統(tǒng)計(jì)和數(shù)據(jù)報(bào)表等,其系統(tǒng)結(jié)構(gòu)與現(xiàn)實(shí)生活緊密結(jié)合, 具體直觀。工資管理系統(tǒng)也是數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)中經(jīng)常進(jìn)行例證的好例子,它的開(kāi)發(fā)應(yīng)用簡(jiǎn)單而又不失一般性。作為一個(gè)案例,我們?nèi)孕枰貜?fù)進(jìn)行一些過(guò)程,如創(chuàng)建工程框架,引入數(shù)據(jù)源,建立消息映射,最終實(shí)現(xiàn)統(tǒng)計(jì)計(jì)算。本程序比較簡(jiǎn)單,我們的目的是讓讀者

2、對(duì) VC的編程逐步加以理解,它的意義是非常重要的。4.2系統(tǒng)功能設(shè)計(jì)在本系統(tǒng)的設(shè)計(jì)中,將主要實(shí)現(xiàn)如下的一些功能:增加記錄功能、修改記錄功能、 刪除記錄功能、 刷新記錄功能, 最后實(shí)現(xiàn)統(tǒng)計(jì)計(jì)算功能。4.3數(shù)據(jù)庫(kù)與數(shù)據(jù)表的設(shè)計(jì)作為工資管理系統(tǒng),它是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)數(shù)據(jù)處理的典,數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)的前提是首先開(kāi)發(fā)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)中的數(shù)據(jù)表。 因此在本案例中,我們?nèi)圆捎?Microsoft Access 2003 創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表。為此我們先定義一個(gè)“職工工資數(shù)據(jù)表”的結(jié)構(gòu),如表 4.1 所示。表 4.1“職工工資數(shù)據(jù)表”結(jié)構(gòu)字段名字段類(lèi)型字段大小小數(shù)位數(shù)索引必須填寫(xiě)稱(chēng)年份數(shù)字整型是月份數(shù)字整型是輸入日

3、期日期/時(shí)默認(rèn)是間職工編號(hào)數(shù)字整型是文本16是部門(mén)文本20是基本工資數(shù)字長(zhǎng)整型自動(dòng)是業(yè)績(jī)工資數(shù)字長(zhǎng)整型自動(dòng)是獎(jiǎng)金數(shù)字長(zhǎng)整型自動(dòng)是津貼數(shù)字長(zhǎng)整型自動(dòng)是各種補(bǔ)助數(shù)字長(zhǎng)整型自動(dòng)是應(yīng)發(fā)數(shù)數(shù)字長(zhǎng)整型自動(dòng)是水電費(fèi)數(shù)字長(zhǎng)整型自動(dòng)是房租數(shù)字長(zhǎng)整型自動(dòng)是儲(chǔ)蓄數(shù)字長(zhǎng)整型自動(dòng)是會(huì)費(fèi)數(shù)字長(zhǎng)整型自動(dòng)是保險(xiǎn)數(shù)字長(zhǎng)整型自動(dòng)是扣除總計(jì)數(shù)字長(zhǎng)整型自動(dòng)是實(shí)發(fā)工資數(shù)字長(zhǎng)整型自動(dòng)是創(chuàng)建數(shù)據(jù)庫(kù)及其數(shù)據(jù)表的步驟如上:(1)啟動(dòng) Microsoft Office 2003 中的 Microsoft Access 應(yīng)用程序,出現(xiàn)圖 4.1 所示界面, 通過(guò)該界面可以創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)或打開(kāi)一個(gè)已經(jīng)存在的數(shù)據(jù)庫(kù)。圖 4.1新建數(shù)據(jù)庫(kù)選擇(2)

4、選擇創(chuàng)建新數(shù)據(jù)庫(kù),即選擇“空Access 數(shù)據(jù)庫(kù)”選項(xiàng)。(3)單擊“確定”按鈕之后出現(xiàn)保存對(duì)話(huà)框,確定保存數(shù)據(jù)庫(kù)的文件位置( D: VC+ 寫(xiě)作案例)并給定數(shù)據(jù)庫(kù)名稱(chēng):工資管理數(shù)據(jù)庫(kù);然后出現(xiàn)圖4.2 所示界面。圖 4.2數(shù)據(jù)庫(kù)中的數(shù)據(jù)表設(shè)計(jì)界面在數(shù)據(jù)庫(kù)設(shè)計(jì)界面中,用戶(hù)可以打開(kāi)已經(jīng)存在的數(shù)據(jù)表,也可以創(chuàng)建新的數(shù)據(jù)表。(4) 單擊“設(shè)計(jì)”菜單,即出現(xiàn)一個(gè)數(shù)據(jù)表設(shè)計(jì)器,用戶(hù)可以在其中設(shè)計(jì)一個(gè)新的數(shù)據(jù)表結(jié)構(gòu),如圖 4.3 所示。圖 4.3數(shù)據(jù)表設(shè)計(jì)器在 Microsoft Access 2003 數(shù)據(jù)庫(kù)設(shè)計(jì)器中,用戶(hù)可以定義數(shù)據(jù)表的字段名稱(chēng)、字段類(lèi)型、字段大小等數(shù)據(jù)表結(jié)構(gòu)的容。數(shù)據(jù)表結(jié)構(gòu)一經(jīng)確定,用

5、戶(hù)可以打開(kāi)該數(shù)據(jù)表,在數(shù)據(jù)表中輸入一些基本數(shù)據(jù),以在后面的系統(tǒng)設(shè)計(jì)中體現(xiàn)設(shè)計(jì)的效果。最后,系統(tǒng)自動(dòng)將創(chuàng)建的數(shù)據(jù)表保存在“D:VC+寫(xiě)作案例 CH432資管理數(shù)據(jù)庫(kù)”中,將創(chuàng)建的數(shù)據(jù)表命名為“職工工資數(shù)據(jù)表”。注意,在微軟的Microsoft Access各版本之間,如在MicrosoftAccess 98與Microsoft Access 2003中,采用舊版本創(chuàng)建的數(shù)據(jù)庫(kù)及其數(shù)據(jù)庫(kù)中的數(shù)據(jù)表如要在新的版本中運(yùn)用, 往往需要在新版本中進(jìn)行轉(zhuǎn)換才行。4.4創(chuàng)建工資管理系統(tǒng)基本框架在前面我們已經(jīng)創(chuàng)建了 “工資管理數(shù)據(jù)庫(kù)” 、“職工工資數(shù)據(jù)表” 。它可為應(yīng)用程序提供一個(gè)數(shù)據(jù)源。 應(yīng)用程序就是對(duì)該數(shù)據(jù)

6、源的記錄進(jìn)行訪(fǎng)問(wèn)、增加、刪除以及數(shù)據(jù)管理的一切操作。有了這一切的工作,用戶(hù)就可以著手進(jìn)行應(yīng)用系統(tǒng)的構(gòu)建了。與前面的案例一樣,在 VC+應(yīng)用系統(tǒng)創(chuàng)建中,需要通過(guò)向?qū)葎?chuàng)建一個(gè)應(yīng)用程序框架,然后再加入數(shù)據(jù)控件,與數(shù)據(jù)源進(jìn)行綁定,并進(jìn)行程序的修改與加工制作。創(chuàng)建“工資管理系統(tǒng)”應(yīng)用程序框架的步驟如下:(1) 結(jié)束數(shù)據(jù)庫(kù)的創(chuàng)建并啟動(dòng) VC+,出現(xiàn) VC+主控界面。(2) 在 VC+主控界面中單擊“文件 | 新建”菜單項(xiàng),出現(xiàn)新建工程類(lèi)型選擇對(duì)話(huà)框,在工程類(lèi)型列表中選擇MFC AppWizard(EXE)工程類(lèi)型。(3) 輸入工程名稱(chēng)為“工資管理系統(tǒng)”,并選擇Win32 平臺(tái)類(lèi)型。(4) 單擊“確定”按

7、鈕,進(jìn)入文檔類(lèi)型設(shè)置。(5) 選擇單文檔類(lèi)型,即創(chuàng)建一個(gè)單文檔界面的應(yīng)用程序,設(shè)置資源使用語(yǔ)言為中文,選擇文檔查看體系結(jié)構(gòu)支持。(6) 單擊“下一步”按鈕,進(jìn)入框架設(shè)置的第2 步,出現(xiàn)圖 4.4 所示對(duì)話(huà)框。在該對(duì)話(huà)框中,需要用戶(hù)對(duì)數(shù)據(jù)庫(kù)的類(lèi)型作一些相關(guān)的選擇。圖 4.4程序框架設(shè)置的第2 步(7) 選擇“查看數(shù)據(jù)庫(kù)不使用文件支持”;這時(shí)候Data Source 按鈕處于可用狀態(tài)(或激活狀態(tài));在這一種選擇下,VC+將為應(yīng)用系統(tǒng)引入數(shù)據(jù)環(huán)境,即數(shù)據(jù)源,該數(shù)據(jù)源就是我們?cè)谇懊鎰?chuàng)建的“工資數(shù)據(jù)庫(kù)”,而不使用其他類(lèi)型數(shù)據(jù)的文件支持。但數(shù)據(jù)源在系統(tǒng)制作中的引入需要用一定的驅(qū)動(dòng)程序?yàn)橹M(jìn)行。(8) 單擊

8、“ Data Source ”按鈕,出現(xiàn)圖 4.5 所示的選擇數(shù)據(jù)源類(lèi)型的對(duì)話(huà)框。圖 4.5數(shù)據(jù)源創(chuàng)建類(lèi)型注意,在 ODBC數(shù)據(jù)源文件列表中,我們已經(jīng)創(chuàng)建了一個(gè)ODBC數(shù)據(jù)源文件,因此可以在其中直接選擇引用即可。如果沒(méi)有“工資管理數(shù)據(jù)庫(kù)”這樣的文件,則往往需要用操作系統(tǒng)控制面板中的ODBC程序加以創(chuàng)建,其方法參考案例一。(9) 單擊 OK 按鈕,出現(xiàn)數(shù)據(jù)源中的數(shù)據(jù)表,即工資數(shù)據(jù)庫(kù)中的數(shù)據(jù)表。選擇“職工工資數(shù)據(jù)表”,如圖 4.6 所示。圖 4.6選擇職工工資數(shù)據(jù)表(10) 單擊 OK按鈕選定該數(shù)據(jù)表。然后返回到圖4.4 所示對(duì)話(huà)框,完成數(shù)據(jù)源的創(chuàng)建工作。(11) 在圖 4.4 所示對(duì)話(huà)框中單擊“

9、完成”按鈕,即完成應(yīng)用程序框架的生成工作, 出現(xiàn)工程框架創(chuàng)建的全部信息, 該信息將提示用戶(hù)所創(chuàng)建的應(yīng)用程序框架包括的容,如:應(yīng)用系統(tǒng)名稱(chēng)、界面類(lèi)型、適合的操作系統(tǒng)、類(lèi)文檔的創(chuàng)建和系統(tǒng)特色等,如下所示:Application type of工資管理系統(tǒng):Single Document Interface Application targeting:Win 32Classes to be created:Application: CMyApp in工資管理系統(tǒng).h and工資管理系統(tǒng).cppFrame: CMainFrame in MainFrm.h and MainFrm.cppDocument

10、: CMyDocin工資管理系統(tǒng)Doc.h and 工資管理系統(tǒng)Doc. CppRecordView : CMyView in工資管理系統(tǒng)View. h and工資管理系統(tǒng) View. cppRecordset:CMyset. in工資管理系統(tǒng)Set.h and 工資管理系統(tǒng) Set.cpp(connected to table 職工工資數(shù)據(jù)表 in datasource 工資管理數(shù)據(jù)庫(kù))Features:+ Initial toolbar in main frame+ Initial status bar in main frame+ Frinting and Print Preview s

11、upport in view+ 3D Controls+ Uses shared DLL implementation (MFC42.DLL)+ Database support, without file support+ ActiveX Controls support enabled+ Localizable text in:中文 中國(guó)確認(rèn)創(chuàng)建信息之后,出現(xiàn)應(yīng)用程序框架界面,如圖4.7 所示。圖 4.7應(yīng)用程序框架界面4.5開(kāi)發(fā)工資處理界面如前所述,應(yīng)用系統(tǒng)向?qū)е荒苌梢粋€(gè)應(yīng)用程序基本框架,該框架還不具備任何功能, 我們需要在框架的基礎(chǔ)上進(jìn)行系統(tǒng)各種功能的制作。通常一個(gè)應(yīng)用程序框架生成兩

12、個(gè)對(duì)話(huà)框,一個(gè)是IDD_ABOUTBOX對(duì)話(huà)框,它是一個(gè)說(shuō)明該系統(tǒng)的對(duì)話(huà)框,幾乎由向?qū)ё詣?dòng)完成,如圖4.8所示。圖 4.8ABOUTBOX對(duì)話(huà)框該對(duì)話(huà)框仍然是基本的,如果用戶(hù)需要修飾或修改,可以根據(jù)自己的需要進(jìn)行。在基本框架中另外一個(gè)對(duì)話(huà)框就是主對(duì)話(huà)框IDD_MY_FORM,它是我們加工制作的主要容,數(shù)據(jù)源也是專(zhuān)門(mén)為該對(duì)話(huà)框引入的。4.5.1主對(duì)話(huà)框 IDD_MY_FORM中控件的加入與布局在工資管理系統(tǒng)中,主對(duì)話(huà)框主要用于處理工資管理的一切容。制作該對(duì)話(huà)框的主要步驟如下:(1)在主對(duì)話(huà)框 IDD_MY_FORM中將提示文本框“ TODO:在這個(gè)對(duì)話(huà)框里設(shè)置表格控制?!眲h除。(2)在主對(duì)話(huà)框

13、IDD_MY_FORM中放入各種需要的控件,如標(biāo)簽控件、編輯框控件、命令按鈕控件,其對(duì)話(huà)框布局如圖4.9 所示。圖 4.9主對(duì)話(huà)框 IDD_MY_FORM控件布局其中,各個(gè)控件的屬性設(shè)置如表4.2- 表 4.5 所示。表 4.2標(biāo)簽對(duì)象的基本屬性ID標(biāo)題容IDC_STATICCAPTION職工工資管理系統(tǒng)IDC_STATICNE年份IDC_STATICYF月份IDC_STATICZGBH職工編號(hào)IDC_STATICZGXM職工IDC_STATICZGBM部門(mén)IDC_STATICJBGZ基本工資IDC_STATICJJ獎(jiǎng)金IDC_STATICYJGZ業(yè)績(jī)工資IDC_STATICJT津貼IDC_S

14、TATICGZBZ各種補(bǔ)助IDC_STATICRDF水電費(fèi)IDC_STATICFZOU房租IDC_STATICCX儲(chǔ)蓄I(lǐng)DC_STATICHF會(huì)費(fèi)IDC_STATICBX保險(xiǎn)IDC_STATICYFHJ應(yīng)發(fā)合計(jì)IDC_STATICKCHJ扣除合計(jì)IDC_STATICSFGZ實(shí)發(fā)工資表 4.3編輯框控件的基本屬性和編輯容ID編輯容IDC_EDITNF年份IDC_EDITYF月份IDC_EDITZGBH職工編號(hào)IDC_EDITZGBM所在部門(mén)IDC_EDITZGXM職工IDC_EDITJBGZ基本工資IDC_EDITJJ獎(jiǎng)金IDC_EDITYJGZ業(yè)績(jī)工資IDC_EDITJT津貼IDC_EDITG

15、ZBZ各種補(bǔ)助IDC_EDITRDF水電費(fèi)IDC_EDITFZOU房租IDC_EDITCX儲(chǔ)蓄I(lǐng)DC_EDITHF會(huì)費(fèi)IDC_EDITBX保險(xiǎn)IDC_EDITYFHJ應(yīng)發(fā)合計(jì)IDC_EDITKCHJ扣除合計(jì)IDC_EDITSFGZ實(shí)發(fā)工資表 4.4命令按鈕對(duì)象的基本屬性ID標(biāo)題容IDC_BUTIONFIRST| - 第一條IDC_BUTIONNEXT- 下一條IDC_BUTIONPREV- 前一條IDC_BUTIONLAST- | 最后一條IDC_BUTIONSUM執(zhí)行統(tǒng)計(jì)IDC_RADIOADD增加記錄IDC_RADIODELETE刪除記錄IDC_RADIOUPDATE刷新記錄表 4.5分組

16、控件對(duì)象的基本屬性IDIDC_STATICDATA標(biāo)題工資數(shù)據(jù)處理IDC_STATICBROWSE工資數(shù)據(jù)瀏覽IDC_STATICADDDELETUPD增加與刪除IDC_STATICCOUNT個(gè)人工資統(tǒng)計(jì)4.5.2為編輯框控件建立數(shù)據(jù)字段映射在對(duì)話(huà)框中的一切編輯框控件,均是用于進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)顯示的,但首先我們應(yīng)該為它們建立字段映射,即將創(chuàng)建的數(shù)據(jù)集中的每一個(gè)字段與一個(gè)編輯框進(jìn)行數(shù)據(jù)綁定”。其方法我們?cè)谇懊娴陌咐幸呀?jīng)有所涉及。我們以其中的一個(gè)編輯框,即“年份”編輯框?yàn)槔?,說(shuō)明為編輯框與數(shù)據(jù)集中的字段建立映射關(guān)系的方法。為此進(jìn)行如下操作:( 1)在主對(duì)話(huà)框 IDD_MY FORM中選取“年份

17、”編輯框控件。( 2)用鼠標(biāo)右鍵單擊該對(duì)話(huà)框,出現(xiàn)一個(gè)快捷菜單。( 3)在快捷菜單中單擊“建立類(lèi)向?qū)А?,出現(xiàn)類(lèi)向?qū)?duì)話(huà)框。(4)在類(lèi)向?qū)?duì)話(huà)框中將頁(yè)面切換至Member Variables頁(yè)面并設(shè)置類(lèi)名為 CmySet。該對(duì)話(huà)框列出了數(shù)據(jù)集的全部字段名、字段類(lèi)型和字段的成員變量名稱(chēng),但成員變量名是在創(chuàng)建數(shù)據(jù)源時(shí)自動(dòng)生成的,往往不便于與編輯框建立映射關(guān)系, 為此將全部成員變量名稱(chēng)刪除,并重新定義字段的成員變量名稱(chēng)。重新定義后的字段變量名稱(chēng)如圖4.10 所示。圖 4.10重新定義的字段變量名稱(chēng)(5) 在 Classname 列表中選擇 CmyView,出現(xiàn)為編輯框控件與字段成員變量建立消息映射的頁(yè)

18、面,如圖 4.11 所示。圖 4.1l編輯框控件與字段變量映射頁(yè)面(6) 選中 IDC_EDITNF(年份編輯 ) 控件資 源索引,再單擊AddVariable按鈕,出現(xiàn)變量選擇列表框。 在字段選擇列表框中選擇 “年份”成員變量,如圖4.12 所示。圖 4.12字段成員變量列表(7) 單擊 OK 按鈕,即完成“年份”編輯框與“年份”字段成員變量的映射。采用相同的方法為全部編輯框控件建立消息映射,然后編譯對(duì)話(huà)框,則發(fā)現(xiàn)可以在編輯框中修改數(shù)據(jù)表中的記錄。4.5.3為命令按鈕增加函數(shù)并編制過(guò)程代碼事實(shí)上,在前面我們已經(jīng)在編輯框與數(shù)據(jù)集之間建立了一種映射關(guān)系,但處理數(shù)據(jù)的功能還不是很完善。為此我們需要

19、用一些命令來(lái)完成對(duì)數(shù)據(jù)的操作,需要為命令按鈕建立函數(shù)和編制過(guò)程代碼。同樣,在對(duì)話(huà)框中存在多個(gè)命令按鈕,我們以“第一條記錄”命令按鈕為例來(lái)說(shuō)明建立函數(shù)與編制過(guò)程的方法。1. “第一條記錄”命令按鈕的過(guò)程代碼( 1)在對(duì)話(huà)框中選取“第一條記錄”命令按鈕。( 2)用鼠標(biāo)右鍵單擊該命令按鈕,出現(xiàn)一個(gè)快捷菜單。( 3)在快捷菜單中單擊“建立類(lèi)向?qū)А辈藛雾?xiàng),出現(xiàn)一個(gè)消息映射的對(duì)話(huà)框。(4)在消息映射的對(duì)話(huà)框中選擇Message Maps 頁(yè)面,選擇消息類(lèi)型為“ ON_CLICKED”并單擊 Add Function按鈕,出現(xiàn)一個(gè)函數(shù)命令對(duì)話(huà)框,建議接受系統(tǒng)命名的函數(shù)名即可。( 5)確認(rèn)函數(shù)名后單擊 Edi

20、t Code 按鈕,出現(xiàn)代碼編輯框,在代碼編輯框中編輯命令按鈕的代碼,如下所示:void CMyView : : OnButtonfirst ()/ / TODO:Add your controlnotificationhandlercode herem_pSet - MoveFirst ();if (m_pSet - IsBOF()MessageBox (“記錄已經(jīng)在第一條!”)m_pSet - MoveNext ();UpdateData (FALSE);Return;UpdateData (FALSE);這樣,“第一條記錄”命令按鈕的過(guò)程代碼就編輯完成了。采用同樣的方法,我們可以編輯其他

21、命令按鈕的過(guò)程代碼。2“下一條記錄”命令按鈕的過(guò)程代碼void CMyView : : OnButtonnext ()/ / TODO:Add your control notification handler ode here m_pSet - MoveNext();if (m_pSet - IsEOF () MessageBox (“記錄已經(jīng)在最后一條!”);m_pSet - MovePrev ();UpdateData (FALSE);Return;UpdateData (FALSE);3“前一條記錄”命令按鈕的過(guò)程代碼void CMyView : : OnButtonprev ()/

22、/ TODO:Add your controlnotificationhandlercode herem_pSet - MovePrev ();if (m_pSet - IsBOF() MessageBox (“記錄已經(jīng)在第一條!”);m_pSet - MoveNext ();UpdateData (FALSE);return;UpdateData (FALSE);4“最后一條記錄”命令按鈕的過(guò)程代碼void CMyView : : OnButtonlast ()/ / TODO:Add your controlnotificationhandlercode herem_pSet - Move

23、Last ();if (m_pSet - IsEOF ()MessageBox (“記錄已經(jīng)在最后一條!” ) ; m_pSet - MovePrev ();UpdateData (FALSE);Return;UpdateData (FALSE);5“增加記錄”選項(xiàng)按鈕的過(guò)程代碼void CMyView : : OnRadiodd ()/TODO: Add your control notification handler code herem_pSet - AddNew ();UpdateData (FALSE);6“刪除記錄”選項(xiàng)按鈕的過(guò)程代碼void CMyView : : OnRadi

24、odelete ()/TODO: Add your control notification handler code herem_pSet - Delete ();m_pSet - MoveNext ();if (m_pSet - IsEOF ()m_pSet- MoveLast ();if (m_pSet - IsBOf()m_pSet - SetFieldNull (NULL);UpdateData (FALSE);7“刷新記錄”選項(xiàng)按鈕的過(guò)程代碼void CMyView : : OnRadioupdate ()/TODO: Add your control notification h

25、andler code herem_pSet-Edit ();UpdateData ();m_pSet- Update ();m_pSet- Requery ();m_pSet- CancelUpdate ();8“執(zhí)行統(tǒng)計(jì)”命令按鈕的過(guò)程代碼void CMyView : : OnButtonsum ()/TODO: Add your control notification handler code herem_pSet-Edit ();m_pSet-m_YES=m_pSet-m_JBGZ+m_pSet-m_JJ+m_pSet-m_YJGZ+m_pSet-m_JT+ m_pSet-m_GZB

26、Z;m_pSet-m_KCZJ=m_pSet-m_CX+m_pSet-m_HF+m_pSet-m_FZOU+m_pSet-m_RDF +m_pSet-m_BX;m_pSet-m_SFGZ= m_pSet-m_YES- m_pSet-m_KCZZ;UpdateData (FALSE);m_pSet-Requery();m_pSet-Update();最后編譯執(zhí)行工程,檢驗(yàn)對(duì)話(huà)框中的數(shù)據(jù)處理效果,如圖4.13 所示。圖 4.13對(duì)話(huà)框運(yùn)行效果4.5.4資源文件分析在工程創(chuàng)建完成后,讀者可以對(duì)已經(jīng)創(chuàng)建的工程的一些文件進(jìn)行閱讀和分析。人們常說(shuō):軟件=文檔 +代碼,這一“等式”幾乎對(duì)于一切的開(kāi)發(fā)平臺(tái)都是

27、適用的; 這里的文檔包括用戶(hù)創(chuàng)建的文檔和系統(tǒng)派生的文檔兩類(lèi),無(wú)論是用戶(hù)創(chuàng)建的文檔或是系統(tǒng)派生的文檔,它們往往都是對(duì)系統(tǒng)開(kāi)發(fā)的過(guò)程的“記錄”。因此,通過(guò)閱讀這些“記錄”,不僅對(duì)VC+開(kāi)發(fā)環(huán)境有了更深入的了解,而且對(duì)整個(gè)系統(tǒng)的實(shí)現(xiàn)全過(guò)程也一清二楚。本小節(jié)分析兩個(gè)文檔,一個(gè)是工程實(shí)現(xiàn)文檔,另一個(gè)是工程設(shè)置文檔。1“工資管理系統(tǒng)”工程實(shí)現(xiàn)文件工資管理系統(tǒng)實(shí)現(xiàn)文件記錄了該工程創(chuàng)建的聲明、編寫(xiě)的過(guò)程代碼、資源的消息映射、數(shù)據(jù)集的創(chuàng)建和控件映射等等容,工程實(shí)現(xiàn)文檔往往是用戶(hù)開(kāi)發(fā)過(guò)程中編寫(xiě)最多的文檔, 一切的過(guò)程代碼編制往往都是在工程實(shí)現(xiàn)文檔中進(jìn)行的。 “工資管理系統(tǒng)”工程實(shí)現(xiàn)文檔的全部容如下所示(僅供讀者在

28、開(kāi)發(fā)實(shí)踐中參考,若無(wú)必要,也可以略去對(duì)這部分的閱讀):/ 工資管理系統(tǒng)View.cpp : implementationof the CMyViewclass# include “stdafx.h ”# include “工資管理系統(tǒng) .h ”# include“工資管理系統(tǒng)Set.h ”# include “工資管理系統(tǒng) Doc.h”# include “工資管理系統(tǒng) View. h”# ifdef _DEBUG# define new DEBUG_NEW# undef THIS_FILEstatic char THIS_FILE = _FILE_;# endif/CMyViewIMPLEM

29、ENT_DYNCREATE (CMyView, CRecordView)BEGIN_MESSAGE_MAP (CMyView, CRecordView)/AFX_MSG_MAP (CMyView)ON_BN_CLICKED (IDC_BUTTONFIRST, OnButtonfirst)ON_BN_CLICKED (IDC_BUTTONNEXT, OnButtonnext)ON_BN_CLICKED (IDC_BUTTONPREV, OnButtonprev)ON_BN_CLICKED (IDC_BUTTONLAST, OnButtonlast)ON_BN_CLICKED (IDC_RADIO

30、DD, OnRadiodd)ON_BN_CLICKED (IDC_RADIODELETE, OnRadelete)ON_BN_CLICKED (IDC_RADIOUPDATE, OnRadioupdate)ON_BN_CLICKED (IDC_BUTTONSUM, OnButtonsum)ON_BN_CLICKED (IDC_RADIOEDIT, OnRadioedit)/AFX_MSG_MAP/Standard printing commandsON_COMMAND(ID_FILE_PRINT, CRecordView : : OnFilePrint)ON_COMMAND(ID_FILE_D

31、IRECT, CRecordView : : OnFilePrint)ON_COMMAND(ID_FILE_PREVIEW,CRecordView:OnFilePrieview)END_MESSAGE_MAP ()/CMyView construction/destructionCMyView : : CMyView (): CRecordView (CMyView : : IDD)/AFX_DATA_INIT (CMyView)m_pSet = NULL;/ AFX_DATA_INIT/TODO: add construction code hereCMyView : : CMyView (

32、)void CMyView : : DoDataExchange (CDataExchange* pDX)CRecordView : : DoDataExchange (pDX);/AFX_DATA_MAP (CMyView)DDX_FieldText (pDX, IDC_EDITNF, m_pSet - m_NF,m_pSet);DDX_FieldText (pDX, IDC_EDITYF, m_pSet - m_YF, m_pSet); DDX_FieldText (pDX, IDC_EDITZGBH, m_pSet - m_ZGBH,m_pSet);DDX_FieldText(pDX,I

33、DC_EDITZGBM, m_pSet -m_BM,m_pSet);DDX_FieldText(pDX,IDC_EDITZGXM, m_pSet -m_XM,m_pSet);DDX_FieldText (pDX, IDC_EDITJBGZ, m_pSet- m_JBGZ,m_pSet);DDX_FieldText (pDX, IDC_EDITJJ, m_pSet - m_JJ, m_pSet);DDX_FieldText (pDX, IDC_EDITSFGZ, m_pSet- m_SFGZ,m_pSet);DDX_FieldText(pDX,IDC_EDITYFHJ, m_pSet -m_YF

34、S,m_pSet);DDX_FieldText (pDX, IDC_EDITKCHJ, m_pSet- m_KCZJ,m_pSet);DDX_FieldText (pDX, IDC_EDITBX, m_pSet - m_NF,m_pSet); DDX_FieldText(pDX, IDC_EDITBX, m_pSet-m_BX, m_pSet);DDX_ FieldText(pDX, IDC_EDITCX, m_pSet-m_CX, m_pSet); DDX _FieldText(pDX, IDC _EDITFZOU, m_pSet-m_FZOU,m_pSet);DDX _FieldText(

35、pDX,IDC_EDITGZBZ, m_pSet-m_GZBZ,m_pSet);DDX_FieldText(pDX, DDX_FieldText(pDX, DDX_FieldText(pDX, DDX_FieldText(pDX,IDC _EDITHF, m_pSet-m_HF, m_pSet);IDC_ EDITJT, m_pSet-m_JT, m_pSet);IDC_EDITRDF,m pSet-m_RDF, m pSet);IDC_EDITYJGZ,m_pSet-m_YJGZ,m_pSet);/AFX_ DATA_ MAPBOOL CMyView : PreCreateWindow(CR

36、EATESTRUCT&/TODO: Modify the Window class or styles here by modifying/the CREATESTRUCT csreturn CRecordView : PreCreateWindow(cs);void CMyView:OnInitialUpdate()m_pSet = &GetDocument()-m_mySet;CRecordView : OnInitialUpdate();GetParentFrame () -RecalcLayout();Resize ParentToFit();/CMyView printingBOOL

37、 CMyView : OnPreparePrinting(CPrintInfo* pInfo)/default preparationreturn DoPreparePrinting(pInfo);void CMyView:OnBeginPrinting(CDC* /*pDC*/,/*pInfo*/)/TODO: add extra initialization before printingvoidCMyView:OnBeginPrinting/*pDC*/,CPrintInfo* /*pInfo*/)CPrintInfo*(CDC*/TODO: add cleanup after prin

38、ting/ CMyView diagnostics# ifdef _DEBUGvoid CMyView : AssertValid () constCRecordView : AssertValid ();void CMyView :Dump (CDumpContext & sc) constCRecordView : Dump(dc);CMyDoc*CMyView:GetDocument ()/non-debug versionisinlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMyDoc);Return(CMyDoc*)m_pDocument;# endif /_DEBUG/CMyView database supportCRecordset* CMyView : OnGetRecordset()return m_pSet;/CMyView message handlersvoid CMyView : OnButtonfirst()/TODO: Add your control notification handler code herem_pSet-MoveFirst ();if(m_pSet-IsBOF ()Mes sageBox

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論