




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
年4月19日數(shù)據(jù)庫課程設(shè)計(jì)人事管理系統(tǒng)文檔僅供參考人事管理系統(tǒng)第一章人事管理系統(tǒng)概述1.1人事管理系統(tǒng)簡介1.2企業(yè)信息化發(fā)展1.3關(guān)于人事管理系統(tǒng)的幾個(gè)誤區(qū)第二章人事管理系統(tǒng)分析2.1系統(tǒng)初步調(diào)查2.2系統(tǒng)可行性分析2.3系統(tǒng)詳細(xì)調(diào)查2.4系統(tǒng)的安全性第三章人事管理系統(tǒng)設(shè)計(jì)3.1方案設(shè)計(jì)3.2開發(fā)工具選擇3.3數(shù)據(jù)庫設(shè)計(jì)3.3.1人事管理系統(tǒng)的詳細(xì)調(diào)查3.3.2系統(tǒng)邏輯模型的提出3.3.3數(shù)據(jù)字典3.4數(shù)據(jù)模塊設(shè)計(jì)圖第四章人事管理系統(tǒng)的實(shí)現(xiàn)4.1開發(fā)環(huán)境的選擇4.2人事管理系統(tǒng)模塊設(shè)計(jì)舉例4.3人事管理系統(tǒng)測試4.4系統(tǒng)運(yùn)行與維護(hù)4.5系統(tǒng)的轉(zhuǎn)換方案第五章開發(fā)總結(jié)參考文獻(xiàn)
1.設(shè)計(jì)目標(biāo)使用人事管理系統(tǒng),便于公司領(lǐng)導(dǎo)掌握人員的動(dòng)向,及時(shí)調(diào)整人才的分配。本系統(tǒng)主要維護(hù)新員工資料;詳細(xì)記錄人事變動(dòng),包括崗位和部門的調(diào)整;員工信息的查詢和修改,包括員工個(gè)人信息和密碼等;作為公司人事管理信息系統(tǒng)的基礎(chǔ)部分,它為其它子系統(tǒng)如考勤管理系統(tǒng),工資管理系統(tǒng)等,提供員工的基本信息。根據(jù)系統(tǒng)功能的要求,人事管理系統(tǒng)能夠分為新員工檔案的輸入,人事變更,員工檔案的修改和查詢等模塊。2.功能設(shè)計(jì)企業(yè)人事管理系統(tǒng)主要用于員工個(gè)人資料的錄入,職務(wù)變動(dòng)的記錄和管理。使用人事管理系統(tǒng),便于公司領(lǐng)導(dǎo)掌握人員的動(dòng)向,及時(shí)調(diào)整人才的分配。本系統(tǒng)是公司人事管理信息系統(tǒng)的基礎(chǔ)部分,它為其它子系統(tǒng),如考勤管理系統(tǒng),工資管理系統(tǒng)和員工培訓(xùn)系統(tǒng),提供員工的基本信息。同時(shí)為其它系統(tǒng)提供了員工登錄的密碼認(rèn)證和權(quán)限分配功能。人事管理系統(tǒng)在設(shè)計(jì)時(shí)主要考慮以下幾項(xiàng)功能要求:新員工資料的輸入。人事變動(dòng)的詳細(xì)記錄,包括崗位和部門的調(diào)整。員工信息的查詢和修改,包括員工個(gè)人信息和密碼等。為了更好的理解該系統(tǒng)和讀懂該系統(tǒng)的源碼,讀者應(yīng)對(duì)以下的知識(shí)點(diǎn)有所了解:MSSQLSERVER數(shù)據(jù)庫操作的基礎(chǔ)知識(shí)。ODBC數(shù)據(jù)源基礎(chǔ)知識(shí)。基本的SQL語句,如添加,查詢,修改和刪除記錄語句。VisualC++界面設(shè)計(jì)和關(guān)于數(shù)據(jù)庫的基礎(chǔ)知識(shí)。3.?dāng)?shù)據(jù)庫設(shè)計(jì)3.1數(shù)據(jù)庫設(shè)計(jì)3.1.1數(shù)據(jù)庫需求分析根據(jù)數(shù)據(jù)流程圖,能夠列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):員工信息:員工號(hào),密碼,權(quán)限,姓名,性別,生日,部門,職務(wù),教育程度,專業(yè),通訊地址,電話,E-mail,當(dāng)前狀態(tài)和其它。人事變動(dòng):記錄號(hào),員工,變動(dòng)和詳細(xì)描述。所需的外部數(shù)據(jù)支持。部門設(shè)置:部門編號(hào),名稱等。。3.1.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)3.1.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn)根據(jù)系統(tǒng)E-R圖,本系統(tǒng)需要有2個(gè)數(shù)據(jù)表分別來存放員工個(gè)人信息和人事變動(dòng)記錄。而且需要一個(gè)外部數(shù)據(jù)表(部門信息)的支持。同時(shí)部分記錄字段要用代碼來表示,銀次需要3個(gè)代碼表來分別記錄教育程度,職務(wù)和人事變更的代碼。最后,設(shè)立一個(gè)計(jì)數(shù)器數(shù)據(jù)表用于實(shí)現(xiàn)員工號(hào)的自動(dòng)分配。這7個(gè)數(shù)據(jù)表用Access實(shí)現(xiàn),Access中的設(shè)計(jì)視圖如表3-1~3-7所示。其中數(shù)據(jù)類型的細(xì)節(jié)應(yīng)根據(jù)具體字段分別設(shè)置,如PERSON表的ID字段大小為6,AUTHORITY字段,SEX字段,EDU_LEVEL字段和STATE字段的大小為1,DEPARTMENT字段,JOB字段的大小為3。表3-1員工個(gè)人信息表(PERSON)字段名稱數(shù)據(jù)類型說明ID文本員工號(hào)PASSWD文本密碼AUTHORITY文本用戶權(quán)限NAME文本姓名SEX文本性別BIRTHDAY日期/時(shí)間生日DEPARTMENT文本所在部門JOB文本職務(wù)EDU_LEVEL文本受教育程度SPECIALTY文本專業(yè)技能ADDRESS文本家庭住址TEL文本聯(lián)系電話EMAIL文本電子信箱STATE文本當(dāng)前狀態(tài)(T-員工,F-非員工)REMARK文本備注表3-2人事變更記錄表(PERSONNEL)字段名稱數(shù)據(jù)類型說明ID數(shù)字記錄編號(hào)PERSON文本員工號(hào)CHANGE文本變更代碼RECORD_TIME日期/時(shí)間記錄時(shí)間DESCRIPTION備注詳細(xì)記錄表3-3L受教育程度代碼表(EDU_LEVE)字段名稱數(shù)據(jù)類型說明CODE文本代碼DESCRIPTION文本描述表3-4職務(wù)代碼表(JOB)字段名稱數(shù)據(jù)類型說明CODE文本代碼DESCRIPTION文本描述表3-5人事變動(dòng)代碼表(PERSONNEL_CHANGE)字段名稱數(shù)據(jù)類型說明CODE文本代碼DESCRIPTION文本描述表3-6計(jì)數(shù)器表(COUNTER)字段名稱數(shù)據(jù)類型說明ID文本計(jì)數(shù)器編號(hào)COUNTER_VALUE數(shù)字計(jì)數(shù)值DESCRIPTION文本描述表3-7部門信息表(DEPARTMENT)字段名稱數(shù)據(jù)類型說明ID文本部門編號(hào)NAME文本部門名稱MANGER文本部門經(jīng)理INTRO備注簡介3.1.4初始數(shù)據(jù)的輸入本例中需要輸入的初始數(shù)據(jù)包括:部門信息,計(jì)數(shù)器,受教育程度代碼,職務(wù)代人事變動(dòng)代碼。部門信息和職務(wù)代碼能夠根據(jù)需要設(shè)置。計(jì)數(shù)器和另外的兩種代碼的設(shè)置如表3-8~表3-10所示。表3-8計(jì)數(shù)器設(shè)置計(jì)數(shù)器編號(hào)說明P員工編號(hào)C人事變更記錄編號(hào)表3-9受教育程度代碼代碼說明0小學(xué)1初中2高中3職高4大本5大專6碩士7博士8博士后表3-10人事變更代碼代碼說明0新員工加入1職務(wù)變動(dòng)2辭退3.2系統(tǒng)設(shè)計(jì)3.2.1系統(tǒng)功能分析人事管理系統(tǒng)主要有以下幾項(xiàng)功能要求:新員工資料的輸入。自動(dòng)分配員工號(hào),而且設(shè)置初始的用戶密碼。人事變動(dòng)的詳細(xì)記錄,包括崗位和部門的調(diào)整。員工信息的查詢和修改,包括員工個(gè)人信息和密碼等。系統(tǒng)功能模塊設(shè)計(jì)根據(jù)系統(tǒng)功能的要求,能夠?qū)⑾到y(tǒng)分解成幾個(gè)功能模塊來分別設(shè)計(jì),功能模塊如圖3-2所示。 人事管理系統(tǒng)人事管理系統(tǒng)新員工檔案輸入人事變更員工檔案查詢修改圖3-2人事管理系統(tǒng)功能模塊圖數(shù)據(jù)流程圖系統(tǒng)的數(shù)據(jù)流程圖如圖3-3所示,所有數(shù)據(jù)由人事科管理人員輸入。個(gè)人信息查詢招聘新員工個(gè)人信息查詢招聘新員工員工辭退崗位調(diào)整分配員工號(hào)員工信息數(shù)據(jù)人事變動(dòng)記錄人事科圖3-3人事管理系統(tǒng)數(shù)據(jù)流程圖下面是系統(tǒng)運(yùn)行時(shí)主要界面信息。啟動(dòng)程序,首先出現(xiàn)主框架窗口??墒怯捎跊]有登錄服務(wù)器,大部分菜單項(xiàng)都是不可用的。只有”連接”,”關(guān)于”和”退出”菜單可選。單擊”連接”菜單和工具條相應(yīng)按鈕會(huì)彈出”登陸”窗口,如圖3-4所示。登陸界面允許修改ODBC數(shù)據(jù)源名稱,無需重新編譯程序。圖3-4登錄對(duì)話框登錄后,相關(guān)菜單會(huì)被激活。此時(shí)能夠單擊菜單或相應(yīng)的工具條按鈕來彈出相應(yīng)的子框架窗口和視圖。在MDI模式下,3個(gè)功能窗口能夠同時(shí)被顯示,如圖3-5所示。圖3-5人事管理系統(tǒng)”增加新員工”子窗口中,員工號(hào)和密碼會(huì)自動(dòng)按順序生成,而且不允許修改。”人事變動(dòng)”和”員工信息查詢修改”子窗口中,須先輸入員工號(hào),確認(rèn)顯示的信息后才可進(jìn)行相關(guān)的修改。產(chǎn)生的3個(gè)窗體列在”窗口”菜單下。當(dāng)鼠標(biāo)在菜單項(xiàng)上移動(dòng)時(shí),狀態(tài)欄中會(huì)自動(dòng)顯示菜單項(xiàng)的Prompt屬性的內(nèi)容。”窗口”菜單中的4項(xiàng)功能是標(biāo)準(zhǔn)的窗口排列功能。3.3生成程序框架在本章中,將使用不支持文檔/視圖體系(Document/Viewarchitecture)的多文檔界面(Multiple-DocumentInterface,MDI)的結(jié)構(gòu)來開發(fā)數(shù)據(jù)庫管理程序。MDI結(jié)構(gòu)包括一個(gè)主框架窗口和若干個(gè)子框架窗口,子框架窗口可包含文檔類和相關(guān)的視圖,如果使用文檔類,MDI文檔模板類CMultiDocTemplate將為文檔類和視圖之間提供方便的聯(lián)系,可簡化編程的工作量。在本實(shí)例中不使用文檔類,因此沒有創(chuàng)立文檔模板類的對(duì)象,另外實(shí)例中還創(chuàng)立了自己的視圖以實(shí)現(xiàn)相關(guān)功能。MDI界面能夠方便地在各個(gè)子窗口之間切換。典型的MDI結(jié)構(gòu)軟件如Microsoft的Office系列軟件。在這里,用AppWizard生成程序框架,且手工加入數(shù)據(jù)庫支持。在MFCAppWizard-Step1中選擇Multipledocument項(xiàng),并去掉Document/Viewarchitecturesupport?選項(xiàng)。其余均采用默認(rèn)配置。這樣生成的程序中包含CTestApp(設(shè)應(yīng)用程序名為Test),CMainFrame,CChildFrame,CChildView和CAboutDlg五個(gè)類。由于子框架類CChildFrame中自動(dòng)創(chuàng)立CChildView類,而此類并非所需,因此在程序中將不用CChildFrame和CChildView類,而創(chuàng)立自己的子框架和視圖。用ClassWizard創(chuàng)立一個(gè)新的子框架類CTheChildFrame,基類為CMDIChildWnd,程序中將用此子框架類包含視圖,因程序的功能主要在視圖中實(shí)現(xiàn),故無需修改默認(rèn)創(chuàng)立的CTheChildFrame類。本程序數(shù)據(jù)庫的操作是經(jīng)過MFC的ODBC類實(shí)現(xiàn)的。為了使用ODBC類,需要在stdafx.h中加入#include”afxdb.h”一行。因本程序只需要連接一個(gè)數(shù)據(jù)庫,因此定義了一個(gè)CDatabase型的全局變量db,一次性的打開和關(guān)閉數(shù)據(jù)庫,方便程序的編寫。3.4主框架窗口設(shè)計(jì)3.4.1菜單的創(chuàng)立用VisualC++6.0的菜單編輯器(MenuEditor)能夠會(huì)讓你方便的創(chuàng)立菜單。在菜單編輯器中打開的設(shè)計(jì)窗口如圖3-6所示。AppWizard創(chuàng)立的程序默認(rèn)有兩個(gè)菜單:IDR_MAINFRAME為主框架窗口所用,IDR_TESTTYPE(設(shè)應(yīng)用程序名為Test)為子框架窗口所用。因本例中沒有用默認(rèn)的子框架,因此將IDR_TESTTYPE菜單刪去,同時(shí)重新編輯IDR_MAINFRAME菜單,菜單屬性設(shè)置如表3-11所示。圖3-6菜單編輯器窗口表3-11菜單屬性表菜單欄菜單項(xiàng)屬性取值(說明)系統(tǒng)Caption&S系統(tǒng)連接IDID_SYSTEM_CONNECTCaption&C連接…\tF2Prompt連接到服務(wù)器斷開連接IDID_SYSTEM_DISCONNECTCaption&D斷開連接\tF3Prompt斷開當(dāng)前連接分割線選中SEPARATOR屬性退出IDID_APP_EXITCaption&X退出\tCtl+QPrompt關(guān)閉整個(gè)應(yīng)用程序人事管理Caption&M人事管理增加新員工IDID_MANAGE_ADDCaption&A增加新員工Prompt輸入新員工的信息人事變動(dòng)IDID_MANAGE_CHANGECaption&C人事變動(dòng)Prompt記錄員工的職位變動(dòng)查詢修改IDID_MANAGER_SEARCHCaption&S查詢修改Prompt查詢修改員工信息窗口Caption&W窗口重疊排列IDID_WINDOW_CASCADECaption&C重疊排列Prompt重疊排列窗口水平平鋪IDID_WINDOW_TILE_HORZCaption&H水平平鋪Prompt水平排列窗口垂直平鋪IDID_WINDOW_TILE_VERTCaption&V垂直平鋪Prompt垂直排列窗口最小化所有窗口IDID_WINDOW_MINIALLCaption&M最小化所有窗口Prompt將所有窗口最小化幫助Caption&H幫助關(guān)于IDID_APP_ABOUTCaption&A關(guān)于…\tF1Prompt本程序的說明其中,”退出”、”重疊排序”、”水平平鋪”、”垂直平鋪”和”關(guān)于”菜單項(xiàng)用了系統(tǒng)的標(biāo)準(zhǔn)ID,其功能已由MFC實(shí)現(xiàn),無需另外編程。3.4.2工具條的創(chuàng)立用VisualC++6.0的工具條編輯器(ToolbarEditor)能夠很方便的編輯工具條。本程序創(chuàng)立的工具條如圖3-7所示,其中工具條各按鈕的ID分別對(duì)應(yīng)相應(yīng)的菜單項(xiàng),按從左到右的次序?qū)?yīng)的菜單項(xiàng)ID如表3-12所示。表3-12工具條按鈕對(duì)應(yīng)的菜單項(xiàng)ID次序ID1ID_SYSTEM_CONNECT2ID_SYSTEM_DISCONNECT3ID_MANAGE_ADD4ID_MANAGER_CHANGE5ID_MANAGER_SEARCH6ID_WINDOW_CASCADE7ID_WINDOW_TILE_HORZ8ID_WINDOW_TILE_VERT9ID+APP_ABOUT3.4.3增加一個(gè)狀態(tài)欄指示器在程序中加入一個(gè)狀態(tài)欄指示器以顯示登錄狀態(tài)。首先用增加一個(gè)資源ID:ID_INDICATOR_LOGIN,然后在MainFrm.cpp中找到indicators變量的定義處,添加此ID至其列表,程序如下:StaticUNITindicators[]={ID_SEPARATOR,//statuslineindicatorID_INDICATOR_LOGIN,//登錄狀態(tài)ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,};3.4.4程序相關(guān)代碼在CmainFrame中定義如下變量。CTheChildFrame*m_pAdd,*m_pChange,*m_pSearch;//指向3個(gè)功能子框架窗口BOOLm_bLogin;//登陸狀態(tài)BOOLm_bltemAdd,m_blItemChange,m_bltemSearch;//菜單項(xiàng)及工具單按鈕是否可用為了實(shí)現(xiàn)菜單項(xiàng)于工具條按鈕的開發(fā)與禁用,需要經(jīng)過ClassWizard假日相應(yīng)ID的UPDATE_COMMAND_UI處理程序如下:voidCMainFrame::OnUpdateSystemConnect(CCmdUI*pCmdUI){ pCmdUI->Enable(!m_bLogin);//根據(jù)登錄狀態(tài)改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateSystemDisconnect(CCmdUI*pCmdUI){ pCmdUI->Enable(m_bLogin);//根據(jù)登錄狀態(tài)改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateManageAdd(CCmdUI*pCmdUI){ pCmdUI->Enable(m_bItemAdd);//根據(jù)m_bItemAdd改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateManagerSearch(CCmdUI*pCmdUI){ pCmdUI->Enable(m_bItemSearch);//根據(jù)m_bItemSearch改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateManagerChange(CCmdUI*pCmdUI){//根據(jù)m_bItemChange改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)pCmdUI->Enable(m_bItemChange);}CMainFrame類的構(gòu)造函數(shù)中需要初始化一些變量。CMainFrame::CMainFrame(){ //TODO:addmemberinitializationcodehere m_bLogin=FALSE;//缺省未登錄 m_bItemAdd=FALSE;//"增加新員工"功能缺省為不可用 m_bItemChange=FALSE;//"人事變動(dòng)"功能缺省為不可用 m_bItemSearch=FALSE;//"查詢修改"功能缺省為不可用m_pAdd=m_pChange=m_pSearch=NULL;//初始化為空}各菜單的Command事件處理代碼如下:voidCMainFrame::OnSystemConnect(){ CLoginDlgdlg; if(dlg.DoModal()==IDOK)//判斷是否經(jīng)過 { m_bLogin=TRUE;//已登錄 m_bItemAdd=TRUE;//開放"增加新員工"功能 m_bItemChange=TRUE;//開放"人事變動(dòng)"功能 m_bItemSearch=TRUE;//開放"查詢修改"功能 //改變狀態(tài)欄 m_wndStatusBar.SetPaneText(1,"已登錄到數(shù)據(jù)庫:"+dlg.m_strDSN); }}voidCMainFrame::OnSystemDisconnect(){ db.Close();//關(guān)閉數(shù)據(jù)庫 //關(guān)閉所有子框架窗口 if(m_pAdd)m_pAdd->DestroyWindow(); if(m_pChange)m_pChange->DestroyWindow(); if(m_pSearch)m_pSearch->DestroyWindow(); m_bLogin=FALSE;//未登錄 m_bItemAdd=FALSE;//禁止"增加新員工"功能 m_bItemChange=FALSE;//禁止"人事變動(dòng)"功能 m_bItemSearch=FALSE;//禁止"查詢修改"功能 //改變狀態(tài)欄 m_wndStatusBar.SetPaneText(1,"尚未登錄數(shù)據(jù)庫!請(qǐng)按F2登錄");}voidCMainFrame::OnUpdateSystemConnect(CCmdUI*pCmdUI){ pCmdUI->Enable(!m_bLogin);//根據(jù)登錄狀態(tài)改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateSystemDisconnect(CCmdUI*pCmdUI){ pCmdUI->Enable(m_bLogin);//根據(jù)登錄狀態(tài)改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateManageAdd(CCmdUI*pCmdUI){ pCmdUI->Enable(m_bItemAdd);//根據(jù)m_bItemAdd改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateManagerSearch(CCmdUI*pCmdUI){ pCmdUI->Enable(m_bItemSearch);//根據(jù)m_bItemSearch改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnUpdateManagerChange(CCmdUI*pCmdUI){ pCmdUI->Enable(m_bItemChange);//根據(jù)m_bItemChange改變菜單項(xiàng)和工具欄相應(yīng)按鈕狀態(tài)}voidCMainFrame::OnManageAdd(){ //創(chuàng)立新子框架和視 m_pAdd=newCTheChildFrame(); CCreateContextcontext; context.m_pNewViewClass=RUNTIME_CLASS(CAddView); if(!m_pAdd->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW|FWS_PREFIXTITLE,this,&context))return; m_pAdd->InitialUpdateFrame(NULL,TRUE); m_bItemAdd=FALSE;//禁止"增加新員工"功能}voidCMainFrame::OnManagerChange(){ //創(chuàng)立新子框架和視 m_pChange=newCTheChildFrame(); CCreateContextcontext; context.m_pNewViewClass=RUNTIME_CLASS(CChangeView); if(!m_pChange->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW|FWS_PREFIXTITLE,this,&context))return; m_pChange->InitialUpdateFrame(NULL,TRUE); m_bItemChange=FALSE;//禁止"人事變動(dòng)"功能}voidCMainFrame::OnManagerSearch(){ //創(chuàng)立新子框架和視 m_pSearch=newCTheChildFrame(); CCreateContextcontext; context.m_pNewViewClass=RUNTIME_CLASS(CSearchView); if(!m_pSearch->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW|FWS_PREFIXTITLE,this,&context))return; m_pSearch->InitialUpdateFrame(NULL,TRUE); m_bItemSearch=FALSE;//禁止"查詢修改"功能}voidCMainFrame::OnWindowMiniall(){ //最小化所有窗口 if(m_pAdd)m_pAdd->ShowWindow(SW_MINIMIZE); if(m_pChange)m_pChange->ShowWindow(SW_MINIMIZE); if(m_pSearch)m_pSearch->ShowWindow(SW_MINIMIZE);}在程序結(jié)束時(shí)需關(guān)閉數(shù)據(jù)庫,因此需處理CMAinFrame的M_DESTROY消息。voidCMainFrame::OnDestroy(){ CMDIFrameWnd::OnDestroy(); if(db.IsOpen())db.Close();//如數(shù)據(jù)庫未關(guān)閉則關(guān)閉}3.5增加新員工視類的創(chuàng)立首先加入一個(gè)新的窗體資源,在InsertResource對(duì)話框中選擇Dialog的IDD_FORMVIEW項(xiàng)。窗體創(chuàng)立后,在其上添加所需控件,最后的布局如圖3-8所示。創(chuàng)立好資源后,為窗體加入一個(gè)由CFormView類繼承的CAddView封裝此窗體資源,然后用ClassWizard為所需控件加入成員變量。主要控件類型、ID和對(duì)應(yīng)的成員變量及說明如表3-13所示。圖3-8增加新員工窗體表1-13增加新員工窗體控件列表控件類型ID成員變量說明EditBoxIDC_ADD_EDT_IDm_strID員工號(hào)EditBoxIDC_ADD_EDT_PASSWODm_strPassword密碼EditBoxIDC_ADD_EDT_NAMEm_strName姓名RadioButtonIDC_ADD_RADIO_MALE無性別-男RadioButtonIDC_ADD_RADIO_FEMALE無性別-女EditBoxIDC_ADD_EDT_BIRTHDAYm_strBirthday生日ComboBoxIDC_ADD_CMB_DEPARTMENTm_cDepartmentm_strDepartment部門ComboBoxIDC_ADD_CMB_JOBm_cJobm_strJob職務(wù)ComboBoxIDC_ADD_CMB_EDULEVELm_cEdulevelm_strEdulevel受教育水平EditBoxIDC_ADD_EDT_SPECIALTYm_strSpecialty專業(yè)EditBoxIDC_ADD_EDT_ADDRESSm_strAddress地址EditBoxIDC_ADD_EDT_TELm_strTel電話EditBoxIDC_ADD_EDT_EMALm_strEmailE-mailEditBoxIDC_ADD_EDT_MEMOm_strMemo備注(Style選Multiline)ButtonIDC_ADD_BTN_ADD無”增加”按鈕CAddView類需要用到主框架窗口類和加密類,因此需要在cpp文件開頭加入以下兩行:#include"Crypt.h"#include"MainFrm.h"另外,為了使用全局?jǐn)?shù)據(jù)庫變量db,需要在cpp文件開頭加入如下語句:ExternCDatabasedb;每次增加新成員時(shí)需要先做一些初始化工作,如設(shè)置自動(dòng)生成員工號(hào)和密碼等,喲個(gè)ClassView加入初始化函數(shù)Init(),代碼如下:voidCAddView::Init(){ //清空成員變量 m_strID=_T(""); m_strPasswd=_T(""); m_strName=_T(""); m_strBirthday=_T(""); m_strDepartment=_T(""); m_cDepartment.SetCurSel(-1); m_strJob=_T(""); m_cJob.SetCurSel(-1); m_strEdulevel=_T(""); m_cEdulevel.SetCurSel(-1); m_strSpecialty=_T(""); m_strAddress=_T(""); m_strTel=_T(""); m_strEmail=_T(""); m_strMemo=_T(""); //生成員工號(hào) CStringstr; intcounter;//用于計(jì)數(shù) CRecordsetrs(&db);//數(shù)據(jù)集 rs.Open(CRecordset::forwardOnly, "selectCOUNTER_VALUEfromCOUNTERwhereID='P'"); rs.GetFieldValue("COUNTER_VALUE",str); sscanf(str,"%d",&counter);//獲取計(jì)數(shù)值 rs.Close(); str.Format("P%05d",counter);//產(chǎn)生標(biāo)準(zhǔn)格式的編號(hào) m_strID=str;//自動(dòng)產(chǎn)生員工號(hào) m_strPasswd=str;//默認(rèn)密碼為員工號(hào) //設(shè)置缺省性別為男 ((CButton*)GetDlgItem(IDC_ADD_RADIO_MALE))->SetCheck(TRUE); UpdateData(FALSE);//更新界面數(shù)據(jù)}重載CformView的OnInitialUpdate函數(shù)如下,其中調(diào)整窗口外觀,并設(shè)置幾個(gè)ComboBox中的值:voidCAddView::OnInitialUpdate(){ CFormView::OnInitialUpdate(); //使框架窗口大小與視圖匹配 GetParentFrame()->RecalcLayout();ResizeParentToFit(FALSE); GetParentFrame()->SetWindowText("增加新員工");//設(shè)置標(biāo)題 CRecordsetrs(&db);//數(shù)據(jù)集 CStringstr; //設(shè)置部門下拉框所取的值為DEPARTMENT表中的值 rs.Open(CRecordset::forwardOnly,"selectNAMEfromDEPARTMENT"); while(!rs.IsEOF()) { rs.GetFieldValue("NAME",str); m_cDepartment.AddString(str); rs.MoveNext(); } rs.Close(); //設(shè)置職務(wù)下拉框所取的值為JOB表中的值 rs.Open(CRecordset::forwardOnly,"selectDESCRIPTIONfromJOB"); while(!rs.IsEOF()) { rs.GetFieldValue("DESCRIPTION",str); m_cJob.AddString(str); rs.MoveNext(); } rs.Close(); //設(shè)置受教育水平下拉框所取的值為EDU_LEVEL表中的值 rs.Open(CRecordset::forwardOnly,"selectDESCRIPTIONfromEDU_LEVEL"); while(!rs.IsEOF()) { rs.GetFieldValue("DESCRIPTION",str); m_cEdulevel.AddString(str); rs.MoveNext(); } rs.Close(); Init();//調(diào)用初始化函數(shù)}”增加”按鈕的COMMAND消息處理如下,其中完成的記錄的添加。voidCAddView::OnAddBtnAdd(){ CStringstr,strSQL; intcounter;//用于計(jì)數(shù) CRecordsetrs(&db);//數(shù)據(jù)集 UpdateData();//更新數(shù)據(jù) if(m_strName.IsEmpty())//姓名為空則返回 { AfxMessageBox("姓名不能為空!"); return; }//累加員工編號(hào)計(jì)數(shù)器 rs.Open(CRecordset::forwardOnly, "selectCOUNTER_VALUEfromCOUNTERwhereID='P'"); rs.GetFieldValue("COUNTER_VALUE",str); sscanf(str,"%d",&counter);//獲取計(jì)數(shù)值 rs.Close();//關(guān)閉數(shù)據(jù)集 counter++; //計(jì)數(shù)值加1 str.Format("%d",counter);//轉(zhuǎn)換為字符串 strSQL="updateCOUNTERsetCOUNTER_VALUE="+str+"whereID='P'";//設(shè)置SQL語句 db.ExecuteSQL(strSQL);//執(zhí)行//增加員工個(gè)人信息記錄 CStringstrPasswd,strSex,strDepID,strJobID,strEduID; //判斷生日是否為空 if(m_strBirthday.IsEmpty())m_strBirthday="1900-1-1";//缺省值 //加密密碼 strPasswd=CCrypt::Encrypt(m_strPasswd,123); //判斷性別 if(((CButton*)GetDlgItem(IDC_ADD_RADIO_MALE))->GetCheck())strSex="M"; elsestrSex="F"; //得到部門ID rs.Open(CRecordset::forwardOnly, "selectIDfromDEPARTMENTwhereNAME='"+m_strDepartment+"'"); rs.GetFieldValue("ID",strDepID); rs.Close(); //得到職務(wù)代碼 rs.Open(CRecordset::forwardOnly, "selectCODEfromJOBwhereDESCRIPTION='"+m_strJob+"'"); rs.GetFieldValue("CODE",strJobID); rs.Close(); //得到受教育水平代碼 rs.Open(CRecordset::forwardOnly, "selectCODEfromEDU_LEVELwhereDESCRIPTION='"+m_strEdulevel+"'"); rs.GetFieldValue("CODE",strEduID); rs.Close(); //寫SQL語句 strSQL="insertintoPERSON(ID,PASSWD,NAME,SEX,\ BIRTHDAY,DEPARTMENT,JOB,EDU_LEVEL,SPECIALTY,\ ADDRESS,TEL,EMAIL,REMARK)\ values('" +m_strID+"','"http://ID +strPasswd+"','"http://PASSWD +m_strName+"','"http://NAME +strSex+"','"http://SEX +m_strBirthday+"','"http://BIRTHDAY +strDepID+"','"http://DEPARTMENT +strJobID+"','"http://JOB +strEduID+"','"http://EDU_LEVEL +m_strSpecialty+"','"http://SPECIALTY +m_strAddress+"','"http://ADDRESS +m_strTel+"','"http://TEL +m_strEmail+"','"http://EMAIL +m_strMemo+"')";//REMARK db.ExecuteSQL(strSQL);//執(zhí)行//獲取人事變動(dòng)記錄號(hào)并累加 rs.Open(CRecordset::forwardOnly, "selectCOUNTER_VALUEfromCOUNTERwhereID='C'"); rs.GetFieldValue("COUNTER_VALUE",str); sscanf(str,"%d",&counter);//獲取計(jì)數(shù)值 rs.Close();//關(guān)閉數(shù)據(jù)集 counter++; //計(jì)數(shù)值加1 str.Format("%d",counter);//轉(zhuǎn)換為字符串 strSQL="updateCOUNTERsetCOUNTER_VALUE="+str+"whereID='C'";//設(shè)置SQL語句 db.ExecuteSQL(strSQL);//執(zhí)行//追加人事變動(dòng)記錄 str.Format("%d",counter);//計(jì)數(shù)值轉(zhuǎn)換為字符串 CTimetime=CTime::GetCurrentTime(); CStringstrNow=time.Format("%Y-%m-%d%H:%M:%S"); //寫SQL語句 strSQL="insertintoPERSONNEL(ID,PERSON,CHANGE,\ RECORD_TIME,DESCRIPTION)\ values(" +str+",'"http://ID +m_strID+"','"http://PERSON +"0"+"','"http://CHANGE-加入公司代碼 +strNow+"','"http://RECORD_TIME +"加入公司')";//DESCRIPTION db.ExecuteSQL(strSQL);//重新初始化窗口 Init();}窗口關(guān)閉時(shí),需要恢復(fù)菜單項(xiàng)和工具條按鈕狀態(tài)并清空相應(yīng)的子框架窗口指針。voidCAddView::OnDestroy(){ CFormView::OnDestroy(); ((CMainFrame*)AfxGetMainWnd())->m_bItemAdd=TRUE;//開放"增加新員工"功能 ((CMainFrame*)AfxGetMainWnd())->m_pAdd=NULL;//清空窗口指針}3.6人事變動(dòng)視類的創(chuàng)立首先加入一個(gè)新的窗體資源,同樣在InsertResource對(duì)話框中選擇Dialog的IDD_FORMVIEW項(xiàng)。窗體創(chuàng)立后,在其上添加所需控件,最后的布局如圖3-9所示。創(chuàng)立好資源后,為窗體加入一個(gè)由CFormView類繼承的CChangeView封裝此窗體資源,然后用ClassWizard為所需控件加入成員變量。主要控件類型,ID和對(duì)應(yīng)的成員變量及說明如表3-14所示。圖3-9人事變動(dòng)輸入窗體表1-14人事變動(dòng)窗體控制列表控制類型ID成員變量說明EditBoxIDC_CHANGE_EDT_IDm_strID員工號(hào)RadioButtonIDC_CHANGE_RADIO_JOB無職務(wù)變更RadioButtonIDC_CHANGE_RADIO_FIRE無辭職退休DateTimePickerIDC_CHANGE_DATETIMEPICKERm_Time時(shí)間EditBoxIDC_CHANGE_EDT_NAMEm_strName姓名ComboBoxIDC_CHANGE_CMB_DEPARTMENTm_cDepartment部門ComboBoxIDC_CHANGE_CMB_JOBm_cJob職務(wù)EditBoxIDC_CHANGE_EDT_DESCRIPTIONm_strDescription具體描述ButtonIDC_CHANGE_BTN_CHANGE無”修改”按鈕CChangeView中需要加入如下語句包含主框架窗口類:#include"MainFrm.h"同樣,本類也需要加入以下語句引用全局變量db。externCDatabasedb;初始化函數(shù)代碼如下:voidCChangeView::Init(){ //初始化成員變量 m_strID=_T(""); m_Time=CTime::GetCurrentTime(); m_strName=_T(""); m_strDescription=_T(""); m_cDepartment.SetCurSel(-1); m_cJob.SetCurSel(-1); //設(shè)置缺省變動(dòng)情況為職務(wù)變更 ((CButton*)GetDlgItem(IDC_CHANGE_RADIO_JOB))->SetCheck(TRUE); UpdateData(FALSE);//更新界面數(shù)據(jù)}重載CFormView類的OnInitialUpdate()函數(shù)如下:voidCChangeView::OnInitialUpdate(){ CFormView::OnInitialUpdate(); //使框架窗口大小與視圖匹配 GetParentFrame()->RecalcLayout();ResizeParentToFit(FALSE); GetParentFrame()->SetWindowText("人事變動(dòng)");//設(shè)置標(biāo)題 CRecordsetrs(&db);//數(shù)據(jù)集 CStringstr; //設(shè)置部門下拉框所取的值為DEPARTMENT表中的值 rs.Open(CRecordset::forwardOnly,"selectNAMEfromDEPARTMENT"); while(!rs.IsEOF()) { rs.GetFieldValue("NAME",str); m_cDepartment.AddString(str); rs.MoveNext(); } rs.Close(); //設(shè)置職務(wù)下拉框所取的值為JOB表中的值 rs.Open(CRecordset::forwardOnly,"selectDESCRIPTIONfromJOB"); while(!rs.IsEOF()) { rs.GetFieldValue("DESCRIPTION",str); m_cJob.AddString(str); rs.MoveNext(); } rs.Close(); Init();//調(diào)用初始化函數(shù)}當(dāng)員工號(hào)編輯框中輸入改變時(shí),需要檢索員工信息以顯示。用ClassWizard加入處理IDC_CHANGE_EDT-ID的EN_CHANGE消息的函數(shù),代碼如下:voidCChangeView::OnChangeChangeEdtId(){ UpdateData();//更新數(shù)據(jù) CRecordsetrs(&db); CStringstrDep,strJob; rs.Open(CRecordset::forwardOnly, "selectNAME,DEPARTMENT,JOBfromPERSONwhereID='"+m_strID+"'"); if(!rs.IsEOF())//非空則獲取員工信息 { rs.GetFieldValue("NAME",m_strName);//名字 rs.GetFieldValue("DEPARTMENT",strDep);//部門編號(hào) rs.GetFieldValue("JOB",strJob);//職務(wù)代碼 rs.Close(); if(!strDep.IsEmpty()) { rs.Open(CRecordset::forwardOnly, "selectNAMEfromDEPARTMENTwhereID='"+strDep+"'"); rs.GetFieldValue("NAME",strDep);//部門名稱 rs.Close(); } if(!strJob.IsEmpty()) { rs.Open(CRecordset::forwardOnly, "selectDESCRIPTIONfromJOBwhereCODE='"+strJob+"'"); rs.GetFieldValue("DESCRIPTION",strJob);//職務(wù)名稱 rs.Close(); } UpdateData(FALSE);//更新數(shù)據(jù) m_cDepartment.SelectString(-1,strDep); m_cJob.SelectString(-1,strJob); m_bExist=TRUE;//該員工存在 } else//否則清空員工信息 { rs.Close(); m_strName.Empty(); m_cDepartment.SetCurSel(-1); m_cJob.SetCurSel(-1); UpdateData(FALSE);//更新數(shù)據(jù) m_bExist=FALSE;//該員工不存在 }}單擊”修改”按鈕時(shí),添加人事變動(dòng)記錄。voidCChangeView::OnChangeBtnChange(){ CRecordsetrs(&db); CStringstr,strSQL; intcounter; if(!m_bExist)//該員工號(hào)不存在 { MessageBox("請(qǐng)確認(rèn)員工號(hào)!","輸入錯(cuò)誤"); return; } UpdateData();//更新數(shù)據(jù)//獲取人事變動(dòng)記錄號(hào)并累加 rs.Open(CRecordset::forwardOnly, "selectCOUNTER_VALUEfromCOUNTERwhereID='C'"); rs.GetFieldValue("COUNTER_VALUE",str); sscanf(str,"%d",&counter);//獲取計(jì)數(shù)值 rs.Close();//關(guān)閉數(shù)據(jù)集 counter++;//計(jì)數(shù)器加1 str.Format("%d",counter);//轉(zhuǎn)換為字符串 strSQL="updateCOUNTERsetCOUNTER_VALUE="+str+"whereID='C'";//設(shè)置SQL語句 db.ExecuteSQL(strSQL);//執(zhí)行//更新員工信息 CStringstrDepID,strJobID,strState,strChange; //得到部門ID m_cDepartment.GetWindowText(str); rs.Open(CRecordset::forwardOnly, "selectIDfromDEPARTMENTwhereNAME='"+str+"'"); rs.GetFieldValue("ID",strDepID); rs.Close(); //得到職務(wù)代碼 m_cJob.GetWindowText(str); rs.Open(CRecordset::forwardOnly, "selectCODEfromJOBwhereDESCRIPTION='"+str+"'"); rs.GetFieldValue("CODE",strJobID); rs.Close(); if(((CButton*)GetDlgItem(IDC_CHANGE_RADIO_FIRE))->GetCheck()) { strState="F"; strChange="2";//辭退 } else { strState="T"; strChange="1";//職務(wù)變動(dòng) } strSQL="updatePERSONsetSTATE='"+strState+"'," +"DEPARTMENT='"+strDepID+"'," +"JOB='"+strJobID+"'"; db.ExecuteSQL(strSQL);//執(zhí)行//追加人事變動(dòng)記錄 str.Format("%d",counter);//計(jì)數(shù)值轉(zhuǎn)換為字符串 CStringstrNow=m_Time.Format("%Y-%m-%d%H:%M:%S"); //寫SQL語句 strSQL="insertintoPERSONNEL(ID,PERSON,CHANGE,RECORD_TIME,DESCRIPTION)\ values(" +str+",'"http://ID +m_strID+"','"http://PERSON +strChange+"','"http://CHANGE +strNow+"','"http://RECORD_TIME +m_strDescription+"')";//DESCRIPTION db.ExecuteSQL(strSQL);//重新初始化窗口 Init();}窗口關(guān)閉時(shí)需要進(jìn)行一定的狀態(tài)修改,處理WM_DESTROY消息。voidCChangeView::OnDestroy(){ CFormView::OnDestroy(); ((CMainFrame*)AfxGetMainWnd())->m_bItemChange=TRUE;//開放"人事變動(dòng)"功能" ((CMainFrame*)AfxGetMainWnd())->m_pChange=NULL;//清空窗口指針}3.7員工信息查詢修改視圖類的創(chuàng)立首先加入一個(gè)新的窗體資源,同樣在InsertResourse對(duì)話框中選擇Dialog的IDD_FORMVIEW項(xiàng)。窗體最后的布局如圖3-10所示。創(chuàng)立好資源后,為窗體加入一個(gè)由CFormView類繼承的CSearchView封裝此窗體資源,然后用ClassWizard為所需控件加入成員變量。主要控件類型,ID和對(duì)應(yīng)的成員變量及說明如表3-15所示。圖3-10員工信息查詢修改視圖表3-15員工信息查詢修改窗體控件列表控制類型ID成員變量說明EditBoxIDC_SEARCH_EDT_IDm_strID員工號(hào)ComboBoxIDC_SEARCH_CMB_DEPARTMENTm_cDepartment部門ComboBoxIDC_SEARCH_CMB_JOBm_cJob職務(wù)ComboBoxIDC_SEARCH_CMB_EDULEVELm_cEdulevel受教育水平EditBoxIDC_SEARCH_EDT_SPECIALTYm_strSpecialty專業(yè)EditBoxIDC_SEARCH_EDT_MEMOm_strMemo備注EditBoxIDC_SEARCH_EDT_PASSWDm_strPasswd密碼ButtonIDC_SEARCH_BTN_CHGPASSWD無”修改密碼”按鈕RadioButtonIDC_SEARCH_RADIO_MALE無性別-男RadioButtonIDC_SEARCH_RADIO_FEMALE無性別-女EditBoxIDC_SEARCH_EDT_NAMEm_strName姓名EditBoxIDC_SEARCH_EDT_BIRTHDAYm_strBirthday生日EditBoxIDC_SEARCH_EDT_ADDRESSm_strAddress住址EditBoxIDC_SEARCH_EDT_TELm_strTel電話ButtonIDC_SEARCH_BTN_CHANGE無”修改員工信息”按鈕ListControlIDC_SEARCH_LISTm_cList人事變動(dòng)列表CSearchView中需要加入如下語句包含主框架窗口類和加密類:#include"MainFrm.h"#include"Crypt.h"同樣,本類也需要加入一下語句引用全局變量db:externCDatabasedb;初始化函數(shù)代碼如下:voidCSearchView::Init(){ //清空成員變量 m_strID=_T(""); m_strSpecialty=_T(""); m_strMemo=_T(""); m_strPasswd=_T(""); m_strName=_T(""); m_strBirthday=_T(""); m_strAddress=_T(""); m_strTel=_T(""); m_strEmail=_T(""); UpdateData(FALSE);//更新界面數(shù)據(jù)}重載CFormView類的OnInitialUpdate()函數(shù)如下:voidCSearchView::OnInitialUpdate(){ CFormView::OnInitialUpdate(); //給m_cList加入網(wǎng)格 DWORDstyle=m_cList.GetExtendedStyle(); m_cList.SetExtendedStyle(style|LVS_EX_GRIDLINES); //使框架窗口大小與視圖匹配 GetParentFrame()->RecalcLayout();ResizeParentToFit(FALSE); GetParentFrame()->SetWindowText("員工信息查詢修改");//設(shè)置標(biāo)題 CRecordsetrs(&db);//數(shù)據(jù)集 CStringstr; //設(shè)置部門下拉框所取的值為DEPARTMENT表中的值 rs.Open(CRecordset::forwardOnly,"selectNAMEfromDEPARTMENT"); while(!rs.IsEOF()) { rs.GetFieldValue("NAME",str); m_cDepartment.AddString(str); rs.MoveNext(); } rs.Close(); //設(shè)置職務(wù)下拉框所取的值為JOB表中的值 rs.Open(CRecordset::forwardOnly,"selectDESCRIPTIONfromJOB"); while(!rs.IsEOF()) { rs.GetFieldValue("DESCRIPTION",str); m_cJob.AddString(str); rs.MoveNext(); } rs.Close(); //設(shè)置受教育水平下拉框所取的值為EDU_LEVEL表中的值 rs.Open(CRecordset::forwardOnly,"selectDESCRIPTIONfromEDU_LEVEL"); while(!rs.IsEOF()) { rs.GetFieldValue("DESCRIPTION",str); m_cEdulevel.AddString(str); rs.MoveNext(); } rs.Close(); //添加List控件的列 m_cList.InsertColumn(0,"記錄編號(hào)",LVCFMT_LEFT,100); m_cList.InsertColumn(1,"記錄時(shí)間",LVCFMT_LEFT,100); m_cList.InsertColumn(2,"具體描述",LVCFMT_LEFT,215); Init();//調(diào)用初始化函數(shù)}當(dāng)”員工號(hào)”編輯框中輸入員工號(hào)時(shí),執(zhí)行一下代碼:voidCSearchView::OnChangeSearchEdtId(){ UpdateData();//更新數(shù)據(jù) m_cList.DeleteAllItems();//清空列表框 CRecordsetrs(&db); CStringstrDep,strJob,strEdulevel,strSex; rs.Open(CRecordset::forwardOnly, "select*fromPERSONwhereID='"+m_strID+"'"); if(!rs.IsEOF())//非空則獲取員工信息 { rs.GetFieldValue("NAME",m_strName);//名字 rs.GetFieldValue("DEPARTMENT",strDep);//部門編號(hào) rs.GetFieldValue("JOB",strJob);//職務(wù)代碼 rs.GetFieldValue("EDU_LEVEL",strEdulevel);//受教育水平 rs.GetFieldValue("SPECIALTY",m_strSpecialty);//專業(yè) rs.GetFieldValue("REMARK",m_strMemo);//備注 rs.GetFieldValue("BIRTHDAY",m_strBirthday);//生日 m_strBirthday=m_strBirthday.Left(10);//取日期部分 rs.GetFieldValue("ADDRESS",m_strAddress);//住址 rs.GetFieldValue("TEL",m_strTel);//電話 rs.GetFieldValue("EMAIL",m_strEmail);//Email rs.GetFieldValue("SEX",strSex);//性別 rs.Close(); //得到部門名稱 if(!strDep.IsEmpty()) { rs.Open(CRecordset::forwardOnly, "selectNAMEfromDEPARTMENTwhereID='"+strDep+"'"); rs.GetFieldValue("NAME",strDep);//部門名稱 rs.Close(); } //得到職務(wù)名稱 if(!strJob.IsEmpty()) { rs.Open(CRecordset::forwardOnly, "selectDESCRIPTIONfromJOBwhereCODE='"+strJob+"'"); rs.GetFieldValue("DESCRIPTION",strJob);//職務(wù)名稱 rs.Close(); } //得到教育水平描述 if(!strEdulevel.IsEmpty()) { rs.Open(CRecordset::forwardOnly, "selectDESCRIPTIONfromEDU_LEVELwhereCODE='" +strEdulevel+"'"); rs.GetFieldValue("DESCRIPTION",strEdulevel);//教育水平描述 rs.Close(); } //設(shè)置性別選框 if(strSex=="M")((CButton*)GetDlgItem(IDC_SEARCH_RADIO_MALE))->SetCheck(TRUE); else((CButton*)GetDlgItem(IDC_SEARCH_RADIO_FEMALE)) ->SetCheck(TRUE); UpdateData(FALSE);//更新數(shù)據(jù) m_cDepartment.SelectString(-1,strDep); m_cJob.SelectString(-1,strJob); m_cEdulevel.SelectString(-1,strEdulevel); //更新列表框數(shù)據(jù) inti=0; CStringstr1,str2,str3; rs.Open(CRecordset::forwardOnly, "selectID,RECORD_TIME,DESCRIPTIONfromPERSONNEL\ wherePERSON='"+m_strID+"'"); while(!rs.IsEOF()) { //得到數(shù)據(jù) rs.GetFieldValue("ID",str1); rs.GetFieldValue("RECORD_TIME",str2);str2=str2.Left(10);//只取日期 rs.GetFieldValue("DESCRIPTION",str3); //加入List m_cList.InsertItem(i,""); m_cList.SetItemText(i,0,str1); m_cList.SetItemText(i,1,str2); m_cList.SetItemText(i,2,str3); i++; rs.MoveNext();//移動(dòng)記錄 } rs.Close(); m_bExist=TRUE;//該員工存在 } else//否則清空員工信息 { rs.Close(); m_strSpecialty=_T(""); m_strMemo=_T(""); m_strPasswd=_T(""); m_strName=_T(""); m_strBirthday=_T(""); m_strAddress=_T(""); m_strTel=_T(""); m_strEmail=_T(""); m_cDepartment.SetCurSel(-1); m_cJob.SetCurSel(-1); m_cEdulevel.SetCurSel(-1); UpdateData(FALSE);//更新數(shù)據(jù) ((CButton*)GetDlgItem(IDC_SEARCH_RADIO_MALE))->SetCheck(FALSE); ((CButton*)GetDlgItem(IDC_SEARCH_RADIO_FEMALE))->SetCheck(FALSE); m_bExist=FALSE;//該員工不存在 }}單擊”修改”按鈕時(shí)執(zhí)行以下代碼:voidCSearchView::OnSearchBtnChgpasswd(){ if(!m_bExist)//該員工號(hào)不存在 { AfxMessageBox("該員工號(hào)不存在"); return; } UpdateData();//更新數(shù)據(jù) CStringstr,strSQL; str=CCrypt::Encrypt(m_strPasswd,123);//加密 strSQL="updatePERSONsetPASSWD='"+str+"'";//寫SQL語句 db.ExecuteSQL(strSQL);//執(zhí)行}單擊”修改員工信息”按鈕時(shí)執(zhí)行以下代碼:voidCSearchView::OnSearchBtnChange(){ if(!m_bExist)//該員工號(hào)不存在 { AfxMessageBox("該員工號(hào)不存在"); return; } UpdateData();//更新數(shù)據(jù)//修改員工個(gè)人信息記錄 CStringstr,strSex,strDepID,strJobID,strEduID,strSQL; CRecordsetrs(&db); //判斷性別 if(((CButton*)GetDlgItem(IDC_SEARCH_RADIO_MALE))->GetCheck())strSex="M"; elsestrSex="F"; //得到部門ID m_cDepartment.GetWindowText(str); if(!str.IsEmpty())//不空 { rs.Open(CRecordset::forwardOnly, "selectIDfromDEPARTMENTwhereNAME='"+str+"'"); rs.GetFieldValue("ID",strDepID); rs.Close(); } //得到職務(wù)代碼 m_cJob.GetWindowText(str); if(!str.IsEmpty())//不空 { rs.Open(CRecordset::forwardOnly, "selectCODEfromJOBwhereDESCRIPTION='"+str+"'"); rs.GetFieldValue("CODE",strJobID); rs.Close(); } //得到受教育水平代碼 m_cEdulevel.GetWindowText(str); if(!str.IsEmpty())//不空 { rs.Open(CRecordset::forwardOnly, "selectCODEfromEDU_LEVELwhereDESCRIPTION='"+str+"'"); rs.GetFieldValue("CODE",strEduID); rs.Close(); } //寫SQL語句 strSQL="updatePERSONset\ NAME='"+m_strName//NAME +"',SEX='"+strSex//SEX +"',BIRTHDAY='"+m_strBirthday//BIRTHDAY +"',DEPARTMENT='"+strDepID//DEPARTMENT +"',JOB='"+strJobID//JOB +"',EDU_LEVEL='"+strEduID//EDU_LEVEL +"',SPECIALTY='"+m_strSpecialty//SPECIAL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 剪紙課題立項(xiàng)申報(bào)書
- 事故車交易合同范本
- 上海嘉善房屋出租合同范本
- 高中課題申報(bào)書
- 課題申報(bào)書亮點(diǎn)
- 臨時(shí)用工勞務(wù)合同范本 三
- 勞務(wù)拆遷采購合同范本
- 合同范本 材料價(jià)差調(diào)整
- 勞務(wù)公司包工合同范本
- 與中介簽買房合同范本
- 醫(yī)院消防安全培訓(xùn)課件(完美版)
- 《大學(xué)生創(chuàng)新創(chuàng)業(yè)教程》高職大學(xué)生創(chuàng)新創(chuàng)業(yè)課程全套教學(xué)課件
- 2024-2030年中國換電柜行業(yè)發(fā)展環(huán)境與競爭格局分析研究報(bào)告
- 中醫(yī)肝與膽課件
- 部編版(統(tǒng)編版)五年級(jí)語文下冊(cè)語文書電子版(可下載打印)
- 2024年中北大學(xué)招考聘用博士研究生(高頻重點(diǎn)復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 鋼結(jié)構(gòu)用戶需求分析報(bào)告
- 村衛(wèi)生室靜脈輸液規(guī)范和安全管理制度
- 3月8日國際婦女節(jié)主題班會(huì)致敬了不起的她母愛是生命的搖籃課件
- DZT 0447-2023 巖溶塌陷調(diào)查規(guī)范(1:50000)
- 圍擋施工方案裝配式鐵馬
評(píng)論
0/150
提交評(píng)論