用VC制作一個工資管理系統(tǒng)_第1頁
用VC制作一個工資管理系統(tǒng)_第2頁
用VC制作一個工資管理系統(tǒng)_第3頁
用VC制作一個工資管理系統(tǒng)_第4頁
用VC制作一個工資管理系統(tǒng)_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

54/54案例四

用VC++制作一個工資治理系統(tǒng)

關(guān)鍵詞:VC++數(shù)據(jù)庫數(shù)據(jù)表控件綁定統(tǒng)計計算4.1

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

系統(tǒng)功能設(shè)計在本系統(tǒng)的設(shè)計中,將要緊實現(xiàn)如下的一些功能:增加記錄功能、修改記錄功能、刪除記錄功能、刷新記錄功能,最后實現(xiàn)統(tǒng)計計算功能。4.3

數(shù)據(jù)庫與數(shù)據(jù)表的設(shè)計

作為工資治理系統(tǒng),它是數(shù)據(jù)庫應(yīng)用系統(tǒng)數(shù)據(jù)處理的典范,數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的前提是首先開發(fā)數(shù)據(jù)庫和數(shù)據(jù)庫中的數(shù)據(jù)表。因此在本案例中,我們?nèi)圆杉{MicrosoftAccess2003創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表。為此我們先定義一個“職工工資數(shù)據(jù)表”的結(jié)構(gòu),如表4.1所示。

表4.1

“職工工資數(shù)據(jù)表”結(jié)構(gòu)

字段名稱字段類型字段大小小數(shù)位數(shù)索引必須填寫年份數(shù)字整型

是月份數(shù)字整型

是輸入日期日期/時刻默認

是職工編號數(shù)字整型

是姓名文本16

是部門文本20

是差不多工資數(shù)字長整型自動

是業(yè)績工資數(shù)字長整型自動

是獎金數(shù)字長整型自動

是津貼數(shù)字長整型自動

是各種補助數(shù)字長整型自動

是應(yīng)發(fā)數(shù)數(shù)字長整型自動

是水電費數(shù)字長整型自動

是房租數(shù)字長整型自動

是儲蓄數(shù)字長整型自動

是會費數(shù)字長整型自動

是保險數(shù)字長整型自動

是扣除總計數(shù)字長整型自動

是實發(fā)工資數(shù)字長整型自動

創(chuàng)建數(shù)據(jù)庫及其數(shù)據(jù)表的步驟如上:(1)啟動MicrosoftOffice2003中的MicrosoftAccess應(yīng)用程序,出現(xiàn)圖4.1所示界面,通過該界面能夠創(chuàng)建一個新的數(shù)據(jù)庫或打開一個差不多存在的數(shù)據(jù)庫。圖4.1

新建數(shù)據(jù)庫選擇

(2)選擇創(chuàng)建新數(shù)據(jù)庫,即選擇“空Access數(shù)據(jù)庫”選項。(3)單擊“確定”按鈕之后出現(xiàn)保存對話框,確定保存數(shù)據(jù)庫的文件位置(D:\VC++寫作案例\CH4\)并給定數(shù)據(jù)庫名稱:工資治理數(shù)據(jù)庫;然后出現(xiàn)圖4.2所示界面。圖4.2

數(shù)據(jù)庫中的數(shù)據(jù)表設(shè)計界面

在數(shù)據(jù)庫設(shè)計界面中,用戶能夠打開差不多存在的數(shù)據(jù)表,也能夠創(chuàng)建新的數(shù)據(jù)表。(4)單擊“設(shè)計”菜單,即出現(xiàn)一個數(shù)據(jù)表設(shè)計器,用戶能夠在其中設(shè)計一個新的數(shù)據(jù)表結(jié)構(gòu),如圖4.3所示。圖4.3

數(shù)據(jù)表設(shè)計器

在MicrosoftAccess2003數(shù)據(jù)庫設(shè)計器中,用戶能夠定義數(shù)據(jù)表的字段名稱、字段類型、字段大小等數(shù)據(jù)表結(jié)構(gòu)的內(nèi)容。數(shù)據(jù)表結(jié)構(gòu)一經(jīng)確定,用戶能夠打開該數(shù)據(jù)表,在數(shù)據(jù)表中輸入一些差不多數(shù)據(jù),以在后面的系統(tǒng)設(shè)計中體現(xiàn)設(shè)計的效果。最后,系統(tǒng)自動將創(chuàng)建的數(shù)據(jù)表保存在“D:\VC++寫作案例\CH4\32資治理數(shù)據(jù)庫”中,將創(chuàng)建的數(shù)據(jù)表命名為“職工工資數(shù)據(jù)表”。注意,在微軟的MicrosoftAccess各版本之間,如在MicrosoftAccess98與MicrosoftAccess2003中,采納舊版本創(chuàng)建的數(shù)據(jù)庫及其數(shù)據(jù)庫中的數(shù)據(jù)表如要在新的版本中運用,往往需要在新版本中進行轉(zhuǎn)換才行。4.4

創(chuàng)建工資治理系統(tǒng)差不多框架在前面我們差不多創(chuàng)建了“工資治理數(shù)據(jù)庫”、“職工工資數(shù)據(jù)表”。它可為應(yīng)用程序提供一個數(shù)據(jù)源。應(yīng)用程序確實是對該數(shù)據(jù)源的記錄進行訪問、增加、刪除以及數(shù)據(jù)治理的一切操作。有了這一切的工作,用戶就能夠著手進行應(yīng)用系統(tǒng)的構(gòu)建了。與前面的案例一樣,在VC++應(yīng)用系統(tǒng)創(chuàng)建中,需要通過向?qū)葎?chuàng)建一個應(yīng)用程序框架,然后再加入數(shù)據(jù)控件,與數(shù)據(jù)源進行綁定,并進行程序的修改與加工制作。創(chuàng)建“工資治理系統(tǒng)”應(yīng)用程序框架的步驟如下:(1)結(jié)束數(shù)據(jù)庫的創(chuàng)建并啟動VC++,出現(xiàn)VC++主控界面。(2)在VC++主控界面中單擊“文件|新建...”菜單項,出現(xiàn)新建工程類型選擇對話框,在工程類型列表中選擇MFCAppWizard(EXE)工程類型。(3)輸入工程名稱為“工資治理系統(tǒng)”,并選擇Win32平臺類型。(4)單擊“確定”按鈕,進入文檔類型設(shè)置。(5)選擇單文檔類型,即創(chuàng)建一個單文檔界面的應(yīng)用程序,設(shè)置資源使用語言為中文,選擇文檔/查看體系結(jié)構(gòu)支持。(6)單擊“下一步”按鈕,進入框架設(shè)置的第2步,出現(xiàn)圖4.4所示對話框。在該對話框中,需要用戶對數(shù)據(jù)庫的類型作一些相關(guān)的選擇。圖4.4

程序框架設(shè)置的第2步

(7)選擇“查看數(shù)據(jù)庫不使用文件支持”;這時候DataSource按鈕處于可用狀態(tài)(或激活狀態(tài));在這一種選擇下,VC+將為應(yīng)用系統(tǒng)引入數(shù)據(jù)環(huán)境,即數(shù)據(jù)源,該數(shù)據(jù)源確實是我們在前面創(chuàng)建的“工資數(shù)據(jù)庫”,而不使用其他類型數(shù)據(jù)的文件支持。但數(shù)據(jù)源在系統(tǒng)制作中的引入需要用一定的驅(qū)動程序為之進行。(8)單擊“DataSource”按鈕,出現(xiàn)圖4.5所示的選擇數(shù)據(jù)源類型的對話框。圖4.5

數(shù)據(jù)源創(chuàng)建類型

注意,在ODBC數(shù)據(jù)源文件列表中,我們差不多創(chuàng)建了一個ODBC數(shù)據(jù)源文件,因此能夠在其中直接選擇引用即可。假如沒有“工資治理數(shù)據(jù)庫”如此的文件,則往往需要用操作系統(tǒng)操縱面板中的ODBC程序加以創(chuàng)建,其方法參考案例一。(9)單擊OK按鈕,出現(xiàn)數(shù)據(jù)源中的數(shù)據(jù)表,即工資數(shù)據(jù)庫中的數(shù)據(jù)表。選擇“職工工資數(shù)據(jù)表”,如圖4.6所示。圖4.6

選擇職工工資數(shù)據(jù)表

(10)單擊OK按鈕選定該數(shù)據(jù)表。然后返回到圖4.4所示對話框,完成數(shù)據(jù)源的創(chuàng)建工作。(11)在圖4.4所示對話框中單擊“完成”按鈕,即完成應(yīng)用程序框架的生成工作,出現(xiàn)工程框架創(chuàng)建的全部信息,該信息將提示用戶所創(chuàng)建的應(yīng)用程序框架包括的內(nèi)容,如:應(yīng)用系統(tǒng)名稱、界面類型、適合的操作系統(tǒng)、類文檔的創(chuàng)建和系統(tǒng)特色等,如下所示:Applicationtypeof工資治理系統(tǒng):

SingleDocumentInterfaceApplicationtargeting:Win32Classestobecreated:Application:CMyAppin工資治理系統(tǒng).hand工資治理系統(tǒng).cppFrame:CMainFrameinMainFrm.handMainFrm.cppDocument:CMyDocin工資治理系統(tǒng)Doc.hand工資治理系統(tǒng)Doc.CppRecordView:CMyViewin工資治理系統(tǒng)View.hand工資治理系統(tǒng)View.cppRecordset:CMyset.in工資治理系統(tǒng)Set.hand工資治理系統(tǒng)Set.cpp(connectedtotable‘[職工工資數(shù)據(jù)表]’indatasource‘工資治理數(shù)據(jù)庫’)Features:+Initialtoolbarinmainframe+Initialstatusbarinmainframe+FrintingandPrintPreviewsupportinview+3DControls+UsessharedDLLimplementation(MFC42.DLL)+Databasesupport,withoutfilesupport+ActiveXControlssupportenabled+Localizabletextin:中文[中國]

確認創(chuàng)建信息之后,出現(xiàn)應(yīng)用程序框架界面,如圖4.7所示。圖4.7

應(yīng)用程序框架界面4.5

開發(fā)工資處理界面如前所述,應(yīng)用系統(tǒng)向?qū)е荒苌梢粋€應(yīng)用程序差不多框架,該框架還不具備任何功能,我們需要在框架的基礎(chǔ)上進行系統(tǒng)各種功能的制作。通常一個應(yīng)用程序框架生成兩個對話框,一個是IDD_ABOUTBOX對話框,它是一個講明該系統(tǒng)的對話框,幾乎由向?qū)ё詣油瓿桑鐖D4.8所示。圖4.8

ABOUTBOX對話框

該對話框仍然是差不多的,假如用戶需要修飾或修改,能夠依照自己的需要進行。在差不多框架中另外一個對話框確實是主對話框IDD_MY_FORM,它是我們加工制作的要緊內(nèi)容,數(shù)據(jù)源也是專門為該對話框引入的。4.5.1

主對話框IDD_MY_FORM中控件的加入與布局在工資治理系統(tǒng)中,主對話框要緊用于處理工資治理的一切內(nèi)容。制作該對話框的要緊步驟如下:(1)在主對話框IDD_MY_FORM中將提示文本框“TODO:在那個對話框里設(shè)置表格操縱。”刪除。(2)在主對話框IDD_MY_FORM中放入各種需要的控件,如標簽控件、編輯框控件、命令按鈕控件,其對話框布局如圖4.9所示。圖4.9

主對話框IDD_MY_FORM控件布局

其中,各個控件的屬性設(shè)置如表4.2-表4.5所示。

表4.2標簽對象的差不多屬性ID標題內(nèi)容IDC_STATICCAPTION職工工資治理系統(tǒng)IDC_STATICNE年份IDC_STATICYF月份IDC_STATICZGBH職工編號IDC_STATICZGXM職工姓名IDC_STATICZGBM部門IDC_STATICJBGZ差不多工資IDC_STATICJJ獎金IDC_STATICYJGZ業(yè)績工資IDC_STATICJT津貼IDC_STATICGZBZ各種補助IDC_STATICRDF水電費IDC_STATICFZOU房租IDC_STATICCX儲蓄I(lǐng)DC_STATICHF會費IDC_STATICBX保險IDC_STATICYFHJ應(yīng)發(fā)合計IDC_STATICKCHJ扣除合計IDC_STATICSFGZ實發(fā)工資

表4.3

編輯框控件的差不多屬性和編輯內(nèi)容ID編輯內(nèi)容IDC_EDITNF年份IDC_EDITYF月份IDC_EDITZGBH職工編號IDC_EDITZGBM所在部門IDC_EDITZGXM職工姓名IDC_EDITJBGZ差不多工資IDC_EDITJJ獎金IDC_EDITYJGZ業(yè)績工資IDC_EDITJT津貼IDC_EDITGZBZ各種補助IDC_EDITRDF水電費IDC_EDITFZOU房租IDC_EDITCX儲蓄I(lǐng)DC_EDITHF會費IDC_EDITBX保險IDC_EDITYFHJ應(yīng)發(fā)合計IDC_EDITKCHJ扣除合計IDC_EDITSFGZ實發(fā)工資

表4.4

命令按鈕對象的差不多屬性ID標題內(nèi)容IDC_BUTIONFIRST|《-第一條IDC_BUTIONNEXT-》下一條IDC_BUTIONPREV《-前一條IDC_BUTIONLAST-》|最后一條IDC_BUTIONSUM執(zhí)行統(tǒng)計IDC_RADIOADD增加記錄IDC_RADIODELETE刪除記錄IDC_RADIOUPDATE刷新記錄

表4.5

分組控件對象的差不多屬性ID標題IDC_STATICDATA工資數(shù)據(jù)處理IDC_STATICBROWSE工資數(shù)據(jù)掃瞄IDC_STATICADDDELETUPD增加與刪除IDC_STATICCOUNT個人工資統(tǒng)計4.5.2

為編輯框控件建立數(shù)據(jù)字段映射在對話框中的一切編輯框控件,均是用于進行數(shù)據(jù)處理和數(shù)據(jù)顯示的,但首先我們應(yīng)該為它們建立字段映射,立即創(chuàng)建的數(shù)據(jù)集中的每一個字段與一個編輯框進行‘數(shù)據(jù)綁定”。其方法我們在前面的案例中差不多有所涉及。我們以其中的一個編輯框,即“年份”編輯框為例,講明為編輯框與數(shù)據(jù)集中的字段建立映射關(guān)系的方法。為此進行如下操作:(1)在主對話框IDD_MYFORM中選取“年份”編輯框控件。(2)用鼠標右鍵單擊該對話框,出現(xiàn)一個快捷菜單。(3)在快捷菜單中單擊“建立類向?qū)А保霈F(xiàn)類向?qū)υ捒颉#?)在類向?qū)υ捒蛑袑㈨撁媲袚Q至MemberVariables頁面并設(shè)置類名為CmySet。該對話框列出了數(shù)據(jù)集的全部字段名、字段類型和字段的成員變量名稱,但成員變量名是在創(chuàng)建數(shù)據(jù)源時自動生成的,往往不便于與編輯框建立映射關(guān)系,為此將全部成員變量名稱刪除,并重新定義字段的成員變量名稱。重新定義后的字段變量名稱如圖4.10所示。圖4.10

重新定義的字段變量名稱(5)在Classname列表中選擇CmyView,出現(xiàn)為編輯框控件與字段成員變量建立消息映射的頁面,如圖4.11所示。圖4.1l

編輯框控件與字段變量映射頁面

(6)選中IDC_EDITNF(年份編輯)控件資源索引,再單擊AddVariable按鈕,出現(xiàn)變量選擇列表框。在字段選擇列表框中選擇“年份”成員變量,如圖4.12所示。圖4.12

字段成員變量列表

(7)單擊OK按鈕,即完成“年份”編輯框與“年份”字段成員變量的映射。采納相同的方法為全部編輯框控件建立消息映射,然后編譯對話框,則發(fā)覺能夠在編輯框中修改數(shù)據(jù)表中的記錄。4.5.3

為命令按鈕增加函數(shù)并編制過程代碼事實上,在前面我們差不多在編輯框與數(shù)據(jù)集之間建立了一種映射關(guān)系,但處理數(shù)據(jù)的功能還不是專門完善。為此我們需要用一些命令來完成對數(shù)據(jù)的操作,需要為命令按鈕建立函數(shù)和編制過程代碼。同樣,在對話框中存在多個命令按鈕,我們以“第一條記錄”命令按鈕為例來講明建立函數(shù)與編制過程的方法。1.“第一條記錄”命令按鈕的過程代碼(1)在對話框中選取“第一條記錄”命令按鈕。(2)用鼠標右鍵單擊該命令按鈕,出現(xiàn)一個快捷菜單。(3)在快捷菜單中單擊“建立類向?qū)А辈藛雾棧霈F(xiàn)一個消息映射的對話框。(4)在消息映射的對話框中選擇MessageMaps頁面,選擇消息類型為“ON_CLICKED”并單擊AddFunction按鈕,出現(xiàn)一個函數(shù)命令對話框,建議同意系統(tǒng)命名的函數(shù)名即可。(5)確認函數(shù)名后單擊EditCode按鈕,出現(xiàn)代碼編輯框,在代碼編輯框中編輯命令按鈕的代碼,如下所示:voidCMyView::OnButtonfirst(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MoveFirst();if(m_pSet->IsBOF()){MessageBox(“記錄差不多在第一條!”)m_pSet->MoveNext();UpdateData(FALSE);Return;}UpdateData(FALSE);

}如此,“第一條記錄”命令按鈕的過程代碼就編輯完成了。采納同樣的方法,我們能夠編輯其他命令按鈕的過程代碼。2.“下一條記錄”命令按鈕的過程代碼voidCMyView::OnButtonnext(){//TODO:Addyourcontrolnotificationhandlerodeherem_pSet->MoveNext();if(m_pSet->IsEOF()){MessageBox(“記錄差不多在最后一條!”);m_pSet->MovePrev();UpdateData(FALSE);Return;}UpdateData(FALSE);

}3.“前一條記錄”命令按鈕的過程代碼voidCMyView::OnButtonprev(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MovePrev();if(m_pSet->IsBOF()){MessageBox(“記錄差不多在第一條!”);m_pSet->MoveNext();UpdateData(FALSE);return;}UpdateData(FALSE);

}4.“最后一條記錄”命令按鈕的過程代碼voidCMyView::OnButtonlast(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MoveLast();if(m_pSet->IsEOF()){MessageBox(“記錄差不多在最后一條!”);m_pSet->MovePrev();UpdateData(FALSE);Return;}UpdateData(FALSE);}5.“增加記錄”選項按鈕的過程代碼voidCMyView::OnRadiodd(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->AddNew();UpdateData(FALSE);

}6.“刪除記錄”選項按鈕的過程代碼voidCMyView::OnRadiodelete(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->Delete();m_pSet->MoveNext();if(m_pSet->IsEOF())

m_pSet

->MoveLast();if(m_pSet->IsBOf())

m_pSet->SetFieldNull(NULL);UpdateData(FALSE);

}7.“刷新記錄”選項按鈕的過程代碼voidCMyView::OnRadioupdate(){//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();UpdateData();m_pSet->Update();m_pSet->Requery();m_pSet->CancelUpdate();

}8.“執(zhí)行統(tǒng)計”命令按鈕的過程代碼voidCMyView::OnButtonsum(){//TODO:Addyourcontrolnotificationhandlercodeherem_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_GZBZ;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í)行工程,檢驗對話框中的數(shù)據(jù)處理效果,如圖4.13所示。圖4.13

對話框運行效果4.5.4

資源文件分析在工程創(chuàng)建完成后,讀者能夠?qū)Σ畈欢鄤?chuàng)建的工程的一些文件進行閱讀和分析。人們常講:軟件=文檔+代碼,這一“等式”幾乎關(guān)于一切的開發(fā)平臺差不多上適用的;那個地點的文檔包括用戶創(chuàng)建的文檔和系統(tǒng)派生的文檔兩類,不管是用戶創(chuàng)建的文檔或是系統(tǒng)派生的文檔,它們往往差不多上對系統(tǒng)開發(fā)的過程的“記錄”。因此,通過閱讀這些“記錄”,不僅對VC++開發(fā)環(huán)境有了更深入的了解,而且對整個系統(tǒng)的實現(xiàn)全過程也一清二楚。本小節(jié)分析兩個文檔,一個是工程實現(xiàn)文檔,另一個是工程設(shè)置文檔。1.“工資治理系統(tǒng)”工程實現(xiàn)文件工資治理系統(tǒng)實現(xiàn)文件記錄了該工程創(chuàng)建的聲明、編寫的過程代碼、資源的消息映射、數(shù)據(jù)集的創(chuàng)建和控件映射等等內(nèi)容,工程實現(xiàn)文檔往往是用戶開發(fā)過程中編寫最多的文檔,一切的過程代碼編制往往差不多上在工程實現(xiàn)文檔中進行的。“工資治理系統(tǒng)”工程實現(xiàn)文檔的全部內(nèi)容如下所示(僅供讀者在開發(fā)實踐中參考,若無必要,也能夠略去對這部分的閱讀)://工資治理系統(tǒng)View.cpp:implementationoftheCMyViewclass

#include“stdafx.h”#include“工資治理系統(tǒng).h”

#include“工資治理系統(tǒng)Set.h”#include“工資治理系統(tǒng)Doc.h”#include“工資治理系統(tǒng)View.h”

#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////CMyView

IMPLEMENT_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_RADIODD,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//StandardprintingcommandsON_COMMAND(ID_FILE_PRINT,CRecordView::OnFilePrint)ON_COMMAND(ID_FILE_DIRECT,CRecordView::OnFilePrint)ON_COMMAND(ID_FILE_PREVIEW,CRecordView::OnFilePrieview)END_MESSAGE_MAP()

///////////////////////////////////////////////////////////CMyViewconstruction/destructionCMyView::CMyView()

:CRecordView(CMyView::IDD){//{{AFX_DATA_INIT(CMyView)m_pSet=NULL;//}}AFX_DATA_INIT//TODO:addconstructioncodehere

}

CMyView::~CMyView(){}

voidCMyView::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,IDC_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_YFS,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(pDX,IDC_EDITGZBZ,m_pSet->m_GZBZ,m_pSet);DDX_FieldText(pDX,IDC_EDITHF,m_pSet->m_HF,m_pSet);DDX_FieldText(pDX,IDC_EDITJT,m_pSet->m_JT,m_pSet);DDX_FieldText(pDX,IDC_EDITRDF,mpSet->m_RDF,mpSet);DDX_FieldText(pDX,IDC_EDITYJGZ,m_pSet->m_YJGZ,m_pSet);//}}AFX_DATA_MAP}BOOLCMyView::PreCreateWindow(CREATESTRUCT&{//TODO:ModifytheWindowclassorstylesherebymodifying//theCREATESTRUCTcs

returnCRecordView::PreCreateWindow(cs);}voidCMyView::OnInitialUpdate(){m_pSet=&GetDocument()->m_mySet;CRecordView::OnInitialUpdate();GetParentFrame()->RecalcLayout();ResizeParentToFit();}///////////////////////////////////////////////////////////////////////////////////////////////////////////CMyViewprintingBOOLCMyView::OnPreparePrinting(CPrintInfo*pInfo){//defaultpreparationreturnDoPreparePrinting(pInfo);}voidCMyView::OnBeginPrinting(CDC*/*pDC*/,

CPrintInfo*/*pInfo*/){//TODO:addextrainitializationbeforeprinting}voidCMyView::OnBeginPrinting(CDC*/*pDC*/,

CPrintInfo*/*pInfo*/)//TODO:addcleanupafterprinting////////////////////////////////////////////////////////////////////////////////////////////////////////////CMyViewdiagnostics

#ifdef_DEBUGvoidCMyView::AssertValid()const{CRecordView::AssertValid();}voidCMyView::

Dump(CDumpContext&sc)const{CRecordView::Dump(dc);{CMyDoc*CMyView::GetDocument()

//non-debugversionisinlineASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));Return

(CMyDoc*)m_pDocument;}#endif//_DEBUG//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CMyViewdatabasesupportCRecordset*CMyView::OnGetRecordset(){returnm_pSet;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CMyViewmessagehandlers

voidCMyView::OnButtonfirst(){

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->MoveFirst();

if(m_pSet->IsBOF())

{

MessageBox("記錄差不多在第一條!");

m_pSet->MoveNext();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);}voidCMyView::OnButtonnext(){

//TODO:Addyourcontrolnotificationhandlercodehere

M_pSet->MoveNext();

If(m_pSet->IsEOF())

{

MessageBox("記錄差不多在最后一條!");

m_pSet->MovePrev();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);}voidCMyView::OnButtonprev(){

//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MovePrev();

if(m_pSet->IsBOF())

{

MessageBox("記錄差不多在第一條!");

m_pSet->MoveNext();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);}voidCMyView::OnButtonlast()}

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();

ifm_pSet->IsEOF())

{

MessageBox("記錄差不多在第一條!");m_pSet->MovePrev();

-

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}voidCMyView::OnRadiodd(){

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->AddNew();

UpdateData(FALSE);}voidCMyView::OnRadiodelete(){

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->Delete();

m_pSet->MoveNext();

if(m_pSet->IsEOF())

m_pSet->MoveLast();

if(m_pSet->IsBOF())

m_pSet->SetFieldNull(NULL);

UpdateData(FALSE);}voidCMyView::OnRadioupdate(){

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();

UpdateData();

m_pSet->Update();

m_pSet->Requery();

//m_pSet->CancelUpdate();

}

voidCMyView::OnButtonsum()

{//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->Edit();m_pSet->m_YFS=0;m_pSet->m_KCZJ=0;m_pSet->m_SFGZ=0;m_pSet->Update();m_pSet->Edit();(m_pSet->m_YFS)=(m_pSet->m_JBGZ)+(m_pSet->m_JJ)+(m_pSet->m_YJGZ)+(m_pSet->mJT)+(m_pSet->m_GZBZ);(m_pSet->m_KCZJ)=(m_pSet->m_CX)+(m_pSet->m_HF)+(m_pSet->m_FZOU)+(mpSet->m_RDF)+(m_pSet->m_BX);(m_pSet->m_SFGZ)=(m_pSet->m_YFS)-(m_pSet->mKCZJ);m_pSet->Update();UpdateData(FALSE);m_pSet->Requery();

}2.“工資治理系統(tǒng)”工程設(shè)置文檔(Set.cpp)工程設(shè)置文檔用來記錄工程中關(guān)于頭文件的聲明設(shè)置、預(yù)定義變量、給變量賦初值、記錄字段變量定義等,請參考如下內(nèi)容://工資治理系統(tǒng)Set.cpp:implementationoftheCMySetclass

#include“stdafx.H”#include“工資治理系統(tǒng).h”#include“工資治理系統(tǒng)Set.h”

#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHISFILE[]=__FILE__;#endif/////////////////////////////////////////////////////////////////CMySetimplementation

IMPLEMENT_DYNAMIC(CMySet,CRecordset)

CMySet

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論