vc++工資管理系統設計與實現_第1頁
vc++工資管理系統設計與實現_第2頁
vc++工資管理系統設計與實現_第3頁
vc++工資管理系統設計與實現_第4頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、目錄一、 設計題目 .2二、 系統環境 .2三、 設計內容 .23.1數據庫的設計 .23.2創建數據庫及其數據表 .33.3開放數據源。 .43.4創建工資管理系統基本框架.63.5主對話框 IDD_MY_FORM中控件的加入與布局。 .83.6為編輯框控件建立數據字段映射 .113.7為命令按鈕增加函數并編制過程代碼 .13四、流程圖及模塊圖 .174,1系統的總體設計 .174.2工資數據處理模塊 .184.3工資數據瀏覽模塊 .184.4增加與刪除模塊 .194.5統計模塊 .19五、程序清單 .19六、程序中遇到的問題及解決方法 .38七、心得體會 .38八、參考文獻 .391一、設

2、計題目工資管理系統設計與實現。二、系統環境windowsXP VC+三、設計內容3.1 數據庫的設計作為工資管理系統,它主要是數據庫應用系統數據處理,數據庫應用系統開發的前提是首先開發數據庫和數據庫中的數據表。因此在本案例中,我采用 Microsoft Access 2007 創建數據庫和數據表。為此我們先定義一個 “職工工資數據表 ”的結構,如下表所示。職工工資數據表字段名稱字段類型字段大小小數位數索引必須填寫年份數字整型是月份數字整型是輸入日期日期 /時間默認是職工編號數字整型是姓名文本16是部門文本20是基本工資數字長整型自動是業績工資數字長整型自動是獎金數字長整型自動是津貼數字長整型自

3、動是各種補助數字長整型自動是應發數數字長整型自動是水電費數字長整型自動是2房租數字長整型自動是儲蓄數字長整型自動是會費數字長整型自動是保險數字長整型自動是扣除總計數字長整型自動是實發工資數字長整自動是型3.2 創建數據庫及其數據表( 1)啟動 Microsoft Office 2007 中的 Microsoft Access 應用程序,出現下圖所示界面,通過該界面可以創建一個新的數據庫。(2)在創建里頭單擊“表設計” ,用戶可以在其中設計一個新的數據表結構。如下圖所示。3在 Microsoft Access 2007 數據庫設計器中,用戶可以定義數據表的字段名稱、字段類型、字段大小等數據表結構

4、的內容。數據表結構一經確定,用戶可以打開該數據表,在數據表中輸入一些基本數據,以在后面的系統設計中體現設計的效果。最后,系統自動將創建的數據表保存在 “D:VC+ 寫作案例 CH432 資管理數據庫 ”中,將創建的數據表命名為 “職工工資表 ”。3.3 開放數據源。4開始設置控制面板管理工具,雙擊數據源打開。選擇第二個系統 DSN,點擊“添加”選擇Microsoft Access Driver(*.mdb) 。點擊完成。在彈出的對話框中起一個數據源名,然后點擊“選擇”,然后在目錄一欄選擇剛才建立的那個表。 選中,點擊確定。一路確定下去, OK 。數據源就建立好了。53.4 創建工資管理系統基本

5、框架在前面我已經創建了 “工資管理數據庫 ”、“職工工資表 ”。它可為應用程序提供一個數據源。應用程序就是對該數據源的記錄進行訪問、增加、刪除以及數據管理的一切操作。有了這一切的工作,用戶就可以著手進行應用系統的構建了。接下來我要創建 “工資管理系統 ”應用程序框架,步驟如下:(1)結束數據庫的創建并啟動VC+ ,出現 VC+ 主控界面。(2)在 VC+ 主控界面中單擊 “文件 |新建 ”菜單項,出現新建工程類型選擇對話框,在工程類型列表中選擇MFC AppWizard(EXE) 工程類型。(3)輸入工程名稱為 “工資管理系統 ”,并選擇 Win32 平臺類型。(4)單擊 “確定 ”按鈕,進入

6、文檔類型設置。(5)選擇單文檔類型,即創建一個單文檔界面的應用程序,設置資源使用語言為中文,選擇文檔查看體系結構支持。(6)單擊 “下一步 ”按鈕,進入框架設置的第 2 步,如圖的對話框。在該對話框中,需要用戶對數據庫的類型作一些相關的選擇。6(7)選擇“查看數據庫不使用文件支持”;這時候Data Source按鈕處于可用狀態(或激活狀態);在這一種選擇下, VC+ 將為應用系統引入數據環境,即數據源,該數據源就是我們在前面創建的 “工資數據庫 ”,而不使用其他類型數據的文件支持。但數據源在系統制作中的引入需要用一定的驅動程序為之進行。(8)單擊 “ Data Source按鈕”,出現圖下圖所

7、示的選擇數據源類型的對話框。73.5 主對話框 IDD_MY_FORM 中控件的加入與布局。(1)在主對話框 IDD_MY_FORM 中放入各種需要的控件,如標簽控件、編輯框控件、命令按鈕控件,如下圖。各個控件的屬性設置如下表:標簽對象的基本屬性ID標題內容IDC_STATICCAPTION職工工資管理系統8IDC_STATICNE年份IDC_STATICYF月份IDC_STATICZGBH職工編號IDC_STATICZGXM職工姓名IDC_STATICZGBM部門IDC_STATICJBGZ基本工資IDC_STATICJJ獎金IDC_STATICYJGZ業績工資IDC_STATICJT津貼I

8、DC_STATICGZBZ各種補助IDC_STATICRDF水電費IDC_STATICFZOU房租IDC_STATICCX儲蓄IDC_STATICHF會費IDC_STATICBX保險IDC_STATICYFHJ應發合計IDC_STATICKCHJ扣除合計IDC_STATICSFGZ實發工資編輯框空間的基本屬性和編輯內容ID編輯內容IDC_EDITNF年份IDC_EDITYF月份IDC_EDITZGBH職工編號IDC_EDITZGBM所在部門IDC_EDITZGXM職工姓名IDC_EDITJBGZ基本工資9IDC_EDITJJ獎金IDC_EDITYJGZ業績工資IDC_EDITJT津貼IDC_E

9、DITGZBZ各種補助IDC_EDITRDF水電費IDC_EDITFZOU房租IDC_EDITCX儲蓄IDC_EDITHF會費IDC_EDITBX保險IDC_EDITYFHJ應發合計IDC_EDITKCHJ扣除合計IDC_EDITSFGZ實發工資命令按鈕對象的基本屬性和內容ID標題內容IDC_BUTIONFIRST|第一條IDC_BUTIONNEXT下一條IDC_BUTIONPREV前一條IDC_BUTIONLAST|最后一條IDC_BUTIONSUM執行統計IDC_RADIOADD增加記錄IDC_RADIODELETE刪除記錄IDC_RADIOUPDATE刷新記錄分組對象控件的基本屬性ID標

10、題IDC_STATICDATA工資數據處理10IDC_STATICBROWSE工資數據瀏覽3.6 為編輯框控件建立數據字段映射(1)在主對話框 IDD_MY FORM 中選取“年份”編輯框控件。(2)用鼠標右鍵單擊該對話框,出現一個快捷菜單。(3)在快捷菜單中單擊 “建立類向導 ”,出現類向導對話框。(4)在類向導對話框中將頁面切換至 Member Variables 頁面并設置類名為CmySet。該對話框列出了數據集的全部字段名、字段類型和字段的成員變量名稱,但成員變量名是在創建數據源時自動生成的,往往不便于與編輯框建立映射關系,為此將全部成員變量名稱刪除,并重新定義字段的成員變量名稱。重新

11、定義后的字段變量名稱如下圖所示。(5)在 Classname列表中選擇 CmyView ,出現為編輯框控件與字段成員變量建立消息映射的頁面,如下圖所示。11(6)選中 IDC_EDITNF( 年份編輯 )控件資源索引,再單擊 Add Variable 按鈕,出現變量選擇列表框。在字段選擇列表框中選擇 “年份 ”成員變量,如下圖所示。(7)單擊 OK 按鈕,即完成 “年份 ”編輯框與 “年份 ”字段成員變量的映射。12采用相同的方法為全部編輯框控件建立消息映射,然后編譯對話框,則發現可以在編輯框中修改數據表中的記錄。3.7 為命令按鈕增加函數并編制過程代碼3.7.1 “第一條記錄 ”命令按鈕的過

12、程代碼( 1)在對話框中選取 “第一條記錄 ”命令按鈕。( 2)用鼠標右鍵單擊該命令按鈕,出現一個快捷菜單。( 3)在快捷菜單中單擊 “建立類向導 ”菜單項,出現一個消息映射的對話框。( 4)在消息映射的對話框中選擇 Message Maps 頁面,選擇消息類型為 “ ON_CLICKED”并單擊 Add Function 按鈕,出現一個函數命令對話框,建議接受系統命名的函數名即可。( 5)確認函數名后單擊 Edit Code 按鈕,出現代碼編輯框,在代碼編輯框中編輯命令按鈕的代碼,如下所示:這樣, “第一條記錄 ”命令按鈕的過程代碼就編輯完成了。采用同樣的方法,我們可以編輯其他命令按鈕的過程

13、代碼。133.7.2 “下一條記錄 ”命令按鈕的過程代碼void CMyView:OnButionnext()/ TODO: Add your control notification handler code here m_pSet-MoveNext();if(m_pSet-IsEOF()MessageBox( 已經是最后了!);m_pSet-MovePrev();UpdateData(FALSE);return;UpdateData(FALSE);3.7.3“上一條記錄 ”命令按鈕的過程代碼void CMyView:OnButionprev()/ TODO: Add your contro

14、l notification handler code here m_pSet-MovePrev();if(m_pSet-IsBOF()MessageBox(已經是第一條了! );m_pSet-MoveNext();UpdateData(FALSE);return;UpdateData(FALSE);143.7.4“最后一條記錄 ”命令按鈕的過程代碼void CMyView:OnButionlast()/ TODO: Add your control notification handler code here m_pSet-MoveLast();if(m_pSet-IsEOF()Messag

15、eBox(已經是最后了! );m_pSet-MovePrev();UpdateData(FALSE);return;UpdateData(FALSE);3.7.5 “增加記錄 ”選項按鈕的過程代碼void CMyView : : OnRadiodd ()/TODO: Add your control notification handler code herem_pSet - AddNew ();UpdateData (FALSE);3.7.6“刪除記錄 ”選項按鈕的過程代碼void CMyView:OnRadiodelete()/ TODO: Add your control notific

16、ation handler code here15m_pSet-Delete();m_pSet-MoveNext();if(m_pSet-IsEOF()m_pSet-MoveLast();if(m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);3.7.7“刷新記錄 ”選項按鈕的過程代碼void CMyView:OnRadioupdate()/ TODO: Add your control notification handler code here m_pSet-Edit();UpdateData();m_pSet-Update

17、(); m_pSet-Requery(); m_pSet-CancelUpdate();3.7.8 “執行統計 ”命令按鈕的過程代碼void CMyView:OnButionsum()/ TODO: Add your control notification handler code here m_pSet-Edit();m_pSet-m_YJGZ=m_pSet-m_JBGZ+m_pSet-m_JJ+m_pSet-m_YJ GZ+m_pSet-m_JT+m_pSet-m_GZBZ;m_pSet-m_KCZJ=m_pSet-m_CX+m_pSet-m_HF+m_pSet-m_FZO U+m_pS

18、et-m_RDF+m_pSet-m_BX;m_pSet-m_SFGZ=m_pSet-m_YJGZ-m_pSet-m_KCZJ;16UpdateData(FALSE);m_pSet-Requery();m_pSet-Update();最后編譯執行,結果如下圖:四、流程圖及模塊圖4,1 系統的總體設計根據對系統需求的分析, 可以把系統劃分: 工資數據處理模塊、 工資數據瀏覽模塊、增加與刪除模塊、統計模塊。系統總體模塊工工工工資資資資數數數數據據據據瀏處處處覽理理理模模模模塊塊塊塊174.2 工資數據處理模塊保險會費儲蓄房租月份年份職工編號職工姓名工 資 數據處理模部門塊水電費各種補助4.3 工資數

19、據瀏覽模塊津貼業績工資基本工資獎金工資數據瀏覽模塊下上最第一一后一條條一條條184.4 增加與刪除模塊增加與刪除模塊增刪刷加除新記記紀錄錄錄4.5 統計模塊統計模塊應實扣發發除合合合計計計五、程序清單5.1 / 工資管理 .cpp : Defines the class behaviors for the application./#include stdafx.h#include 工資管理 .h19#include MainFrm.h#include ChildFrm.h#include 工資管理 Set.h#include 工資管理 Doc.h#include 工資管理 View.h#if

20、def _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyAppBEGIN_MESSAGE_MAP(CMyApp, CWinApp)/AFX_MSG_MAP(CMyApp)ON_COMMAND(ID_APP_ABOUT, OnAppAbout)/ NOTE - the ClassWizard will add and remove mapping macroshere./ DO NOT EDIT what you see in these blocks of generate

21、dcode!/AFX_MSG_MAP/ Standard file based document commands20ON_COMMAND(ID_FILE_NEW, CWinApp:OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp:OnFileOpen) / Standard print setup commandON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp:OnFilePrintSetup)END_MESSAGE_MAP()/ CMyApp constructionCMyApp:CMyApp()/ TODO: add c

22、onstruction code here,/ Place all significant initialization in InitInstance/ The one and only CMyApp objectCMyApp theApp;/ CMyApp initializationBOOL CMyApp:InitInstance()21AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your

23、 final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a sharedDLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically #endif/ Change the registry key under which

24、 our settings are stored./ TODO: You should modify this string to be something appropriate/ such as the name of your company or organization. SetRegistryKey(_T(Local AppWizard-Generated Applications);LoadStdProfileSettings();/ Load standard INI file options (includingMRU)/ Register the applications

25、document templates. Document templates/ serve as the connection between documents, frame windows and22views.CMultiDocTemplate* pDocTemplate;pDocTemplate = new CMultiDocTemplate(IDR_MYTYPE,RUNTIME_CLASS(CMyDoc),RUNTIME_CLASS(CChildFrame), / custom MDI child frame RUNTIME_CLASS(CMyView);AddDocTemplate

26、(pDocTemplate);/ create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame;if (!pMainFrame-LoadFrame(IDR_MAINFRAME) return FALSE;m_pMainWnd = pMainFrame;/ Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo);/ Dispatch commands

27、 specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;23/ The main window has been initialized, so show and update it. pMainFrame-ShowWindow(m_nCmdShow); pMainFrame-UpdateWindow();return TRUE;/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg(

28、);/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides /AFX_VIRTUAL(CAboutDlg)protected:24virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDVsupport/AFX_VIRTUAL/ Implementation protected:/AFX_MSG(CAboutDlg)/ No message handlers/A

29、FX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAP25BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No messag

30、e handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ App command to run the dialog void CMyApp:OnAppAbout()CAboutDlg aboutDlg; aboutDlg.DoModal();/ CMyApp message handlers5,2 / 工資管理 Doc.cpp : implementation of the CMyDoc class/#include stdafx.h#include 工資管理 .h#include 工資管理 Set.h26#include 工資管理 Doc.h#ifdef _DEBU

31、G#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyDocIMPLEMENT_DYNCREATE(CMyDoc, CDocument)BEGIN_MESSAGE_MAP(CMyDoc, CDocument)/AFX_MSG_MAP(CMyDoc)/ NOTE - the ClassWizard will add and remove mapping macroshere./ DO NOT EDIT what you see in these blocks of generatedcode

32、!/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDoc construction/destruction27CMyDoc:CMyDoc()/ TODO: add one-time construction code hereCMyDoc:CMyDoc()BOOL CMyDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: add reinitialization code here/ (SDI documents will reuse this document)return TRUE;/28/ CMyDoc serializationvoid CMyDoc:Serialize(CArchive& ar)if (ar.IsStoring()/ TOD

溫馨提示

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

評論

0/150

提交評論