版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課程設(shè)計(jì) </p><p><b> 人事考勤管理系統(tǒng)</b></p><p><b> 目錄</b></p><p> 第一部分:開發(fā)背景……………………………………………………………..3</p><p> 第二部分:系統(tǒng)
2、分析………………………………………………………………3</p><p> 第三部分:系統(tǒng)設(shè)計(jì)………………………………………………………… …..9</p><p> 第四部分:公共類設(shè)計(jì)………………………………………………………….15</p><p> 第五部分:主題窗設(shè)計(jì)………………………………………………………….16</p><p&
3、gt; 第六部分:用戶登錄模塊設(shè)計(jì)……………………………………………...17</p><p> 第七部分:用戶管理模塊設(shè)計(jì)………………………………………………20</p><p> 第八部分:部門管理模塊設(shè)計(jì)………………………………………………23</p><p> 第九部分:人員信息管理模塊設(shè)計(jì)……………………………………...32</p>
4、<p> 第十部分:考勤模塊設(shè)計(jì)………………………………………………………40</p><p> 第十一部分:考勤匯總模塊設(shè)計(jì)……………………………………………45</p><p> 第十二部分:后續(xù)補(bǔ)充部分: 一些過程的具體實(shí)現(xiàn)方法總結(jié)及圖片解釋:…………………………………………………………………....51</p><p> 第十三部分:心
5、得…………………………………………………………………..51</p><p><b> 人事考勤管理系統(tǒng)</b></p><p><b> 開發(fā)背景</b></p><p> 隨著公司業(yè)務(wù)不斷發(fā)展,員工數(shù)量不斷增加,人事考勤方面的管理已成為公司管理中的重要部分,但傳統(tǒng)的人事考勤制度已不能有效地管理員工的出勤狀況,急需
6、一套人事考勤管理的有效工具——人事考勤管理系統(tǒng)。</p><p><b> 二、系統(tǒng)分析</b></p><p><b> 需求分析</b></p><p> 通過對人事考勤管理過程的研究和分析,要求本系統(tǒng)應(yīng)該具有以下功能。</p><p><b> 用戶登錄。</b>
7、</p><p><b> 部門信息錄入</b></p><p><b> 人員信息管理</b></p><p><b> 考勤信息錄入</b></p><p><b> 考勤信息匯總。</b></p><p><b&
8、gt; 系統(tǒng)功能描述</b></p><p> 用戶需要輸入用戶名和密碼進(jìn)入人事考勤管理系統(tǒng),對各部門、員工的基本信息進(jìn)行維護(hù)和管理。在考勤管理模塊中錄入員工當(dāng)天的考勤信息,同時(shí)可對年、月、員工進(jìn)行查詢。此外,還可以通過考勤匯總查詢模塊對員工某月的考勤記錄進(jìn)行匯總,計(jì)算出員工月工作天數(shù)、早退、遲到的天數(shù)。</p><p><b> 三、系統(tǒng)設(shè)計(jì)</b>
9、;</p><p><b> 系統(tǒng)目標(biāo)</b></p><p> 人事考勤管理系統(tǒng)以實(shí)現(xiàn)員工日常出勤信息管理為設(shè)計(jì)目標(biāo),加以強(qiáng)大的數(shù)據(jù)庫管理功能,可以極大地提高人事部門的日常工作效率。本系統(tǒng)在設(shè)計(jì)時(shí)滿足以下幾點(diǎn):</p><p> 采用人機(jī)對話的操作方式,信息查詢靈活、方便、快捷、準(zhǔn)確,數(shù)據(jù)存儲(chǔ)安全可靠。</p><p
10、> 對考勤信息的操作簡單,可以方便地進(jìn)行添加、修改、和刪除。</p><p> 可以錄入員工信息、部門信息。</p><p> 對員工的考勤信息按月匯總計(jì)算。</p><p> 對用戶輸入的數(shù)據(jù),系統(tǒng)進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗(yàn),盡可能排除人為錯(cuò)誤。</p><p> 系統(tǒng)最大限度地實(shí)現(xiàn)了易維護(hù)性和易操作性。</p>&l
11、t;p> 系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。</p><p><b> 系統(tǒng)功能結(jié)構(gòu)</b></p><p> 人事考勤管理系統(tǒng)的功能結(jié)構(gòu)如圖所示:</p><p><b> 業(yè)務(wù)流圖</b></p><p> 人事考勤管理系統(tǒng)業(yè)務(wù)流程圖如圖:</p><p><
12、b> 4)系統(tǒng)預(yù)覽:</b></p><p> 人事考勤管理系統(tǒng)由多個(gè)功能模塊組成,下面僅列出一些典型的功能模塊,其他模塊以后陸續(xù)列出:</p><p><b> 部門管理模塊如圖:</b></p><p> 主要管理各部門之間的結(jié)構(gòu)信息</p><p><b> 用戶管理模塊如圖:
13、</b></p><p> 用于用戶的一些操作管理</p><p><b> 人員信息管理如圖:</b></p><p> 主要用于維護(hù)員工的基本信息</p><p><b> 考勤管理模塊如圖:</b></p><p> 用于記錄人事考勤的信息<
14、/p><p><b> 考勤匯總查詢?nèi)鐖D:</b></p><p> 對員工的考勤信息進(jìn)行匯總統(tǒng)計(jì)</p><p><b> 數(shù)據(jù)庫設(shè)計(jì)</b></p><p><b> 數(shù)據(jù)庫分析</b></p><p> 人事考勤系統(tǒng)采用SQL Server
15、2008 數(shù)據(jù)庫,數(shù)據(jù)庫名稱為 tb_person 在數(shù)據(jù)庫中建立四個(gè)表存儲(chǔ)不同的信息,如圖:</p><p><b> 數(shù)據(jù)庫概念設(shè)計(jì)</b></p><p> 根據(jù)介紹的需求分析和系統(tǒng)設(shè)計(jì),規(guī)劃處本系統(tǒng)中使用的數(shù)據(jù)庫實(shí)體對象,分別以管理員為實(shí)體,部門實(shí)體和考勤實(shí)體等。下面是實(shí)體E-R圖。</p><p><b> 管理員實(shí)體
16、</b></p><p> 管理員包括編號,用戶,密碼。管理員實(shí)體E-R圖</p><p><b> b)部門實(shí)體</b></p><p> 部門實(shí)體包括編號,部門名稱,備注信息和上級部門編號。部門實(shí)體E-R圖</p><p><b> c)員工實(shí)體</b></p>
17、<p> 員工實(shí)體包括自動(dòng)編號,員工編號,員工姓名,照片,性別和生日等信息。員工E-R圖</p><p><b> d)考勤實(shí)體</b></p><p> 考勤實(shí)體包括人員姓名,考勤信息,上班時(shí)間,下班時(shí)間</p><p><b> C.數(shù)據(jù)庫邏輯設(shè)計(jì)</b></p><p>
18、 管理員信息表(tab_user),用于保存管理員的信息,如圖:</p><p> 部門信息表(tab_Dept)用于記錄部門的信息,如圖:</p><p> C) 考勤信息表(tab_check)用于記錄考勤信息</p><p> 員工信息表(tab_Employees)保存公司員工信息,如圖:</p><p><b>
19、四、公共類設(shè)計(jì)</b></p><p> 本系統(tǒng)采用ADO連接數(shù)據(jù)庫。為了能夠方便的使用ADO建立數(shù)據(jù)庫連接并進(jìn)行相應(yīng)的數(shù)據(jù)操作,在公共類中對系統(tǒng)中是使用的ADO操作進(jìn)行了封裝。在系統(tǒng)中建立了ADO的兩個(gè)公共類CADOConnection和CADODataSet,這兩個(gè)類定義在ADO.h頭文件中,實(shí)現(xiàn)在ADO.cpp文件中。</p><p> A.CADOConnectio
20、n類</p><p> CADOConnection類是用來連接數(shù)據(jù)庫的,實(shí)現(xiàn)了對_Connection接口的封裝。CADOConnection類在頭文件中的定義如下: </p><p> #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("
21、;EOF","adoEOF")</p><p> class CADOConnection</p><p><b> {</b></p><p><b> private:</b></p><p> static void InitADO();//初始化ADO&
22、lt;/p><p> static void UnInitADO();</p><p> protected:</p><p> _ConnectionPtr m_Connection;//指針接口</p><p><b> public:</b></p><p> BOOL IsOpen(
23、);//判斷是否與數(shù)據(jù)庫連接</p><p> _ConnectionPtr GetConnection();//獲取連接接口</p><p> CString GetSQLConStr();//獲取SQL連接字符串</p><p> BOOL Open(CString ConStr);//建立數(shù)據(jù)庫連接</p><p> CADOC
24、onnection();</p><p> virtual ~CADOConnection();</p><p><b> };</b></p><p> CADOConnection類的實(shí)現(xiàn)代碼如下:</p><p> CADOConnection * GetConnection()//GetConnectio
25、n函數(shù)是一個(gè)全局函數(shù),用于返回全局?jǐn)?shù)據(jù)庫連接對象的的指針</p><p><b> {</b></p><p> return &g_Connection;</p><p><b> }</b></p><p> CADOConnection::CADOConnection()//C
26、ADOConnection方法是構(gòu)造方法,用于初始化OLE和創(chuàng)建_Connection接口指針</p><p><b> {</b></p><p> InitADO();</p><p> m_Connection.CreateInstance("ADODB.Connection");</p><
27、p><b> }</b></p><p> CADOConnection::~CADOConnection()//~CADOConnection方法是構(gòu)造方法,用于取消OLE 的初始化和釋放_(tái)Connection接口指針</p><p><b> {</b></p><p> if (IsOpen())<
28、;/p><p> m_Connection->Close();</p><p> m_Connection = NULL;</p><p> UnInitADO();</p><p><b> }</b></p><p> void CADOConnection::InitADO()/
29、/InitADO是一個(gè)靜態(tài)方法,用于初始化OLE</p><p><b> {</b></p><p> if (ConCount++ == 0) </p><p> CoInitialize(NULL);</p><p><b> };</b></p><p>
30、void CADOConnection::UnInitADO()//UnInitADO是一個(gè)靜態(tài)方法,用于取消初始化OLE</p><p><b> {</b></p><p> if (--ConCount == 0)</p><p> CoUninitialize();</p><p><b> }
31、;</b></p><p> BOOL CADOConnection::Open(CString ConStr)//通過指定的數(shù)據(jù)庫連接字符串于SQL數(shù)據(jù)庫建立連接</p><p><b> {</b></p><p> if (IsOpen())</p><p> m_Connection->
32、Close();</p><p> m_Connection->Open((_bstr_t)ConStr,"","",adModeUnknown);</p><p> return IsOpen();</p><p><b> }</b></p><p> CStri
33、ng CADOConnection::GetSQLConStr()//生成數(shù)據(jù)庫連接需要的字符串</p><p><b> {</b></p><p> CString Str;</p><p> Str.Format("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist S
34、ecurity Info=False;Initial Catalog=tb_person;Data Source=LONGFEI-PC\\SQLEXPRESS");</p><p> return Str;</p><p><b> }</b></p><p> _ConnectionPtr CADOConnection::Ge
35、tConnection()//該方法用于返回_Connection接口指針</p><p><b> {</b></p><p> return m_Connection;</p><p><b> }</b></p><p> BOOL CADOConnection::IsOpen()//
36、判斷當(dāng)前數(shù)據(jù)庫連接對象與數(shù)據(jù)庫的連接狀態(tài)</p><p><b> {</b></p><p> long State;</p><p> m_Connection->get_State(&State);</p><p> if (State == adStateOpen)</p>&
37、lt;p> return true;</p><p> return false;}</p><p> CADODataSet類的定義如下:</p><p> class CADODataSet</p><p><b> {</b></p><p> protected:<
38、/p><p> _RecordsetPtr m_DataSet;//數(shù)據(jù)集接口指針</p><p> CADOConnection *m_Connection;//數(shù)據(jù)庫連接對象</p><p><b> public:</b></p><p> BOOL Open(CString SQLStr,int LockTy
39、pe);//打開記錄集</p><p> void Delete();//記錄刪除</p><p> int GetRecordNo();//獲取記錄集行號</p><p> void move(int nIndex);//移動(dòng)記錄指針</p><p> void Save();//保存對記錄集的修改</p><p
40、> void SetFieldValue(CString FieldName,_variant_t Value);//設(shè)置字段的值</p><p> void AddNew();//添加新紀(jì)錄</p><p> BOOL Next();//記錄集指針指向下一個(gè)記錄</p><p> FieldsPtr GetFields();//獲取記錄集字段集合&l
41、t;/p><p> int GetRecordCount();//獲取記錄集中記錄數(shù)量</p><p> void SetConnection(CADOConnection *pCon);//設(shè)置記錄集的數(shù)據(jù)庫連接對象</p><p> BOOL Open(CString SQLStr);//打開記錄集</p><p> CADOData
42、Set();</p><p> virtual ~CADODataSet();</p><p><b> private:</b></p><p> BOOL IsOpen();</p><p><b> };</b></p><p> CADODataSet類的實(shí)
43、現(xiàn)如下:</p><p> CADODataSet::CADODataSet()//該方法為記錄集實(shí)現(xiàn)類的構(gòu)造方法,在該方法中實(shí)現(xiàn)記錄集接口對象的創(chuàng)建</p><p><b> {</b></p><p> m_DataSet.CreateInstance("ADODB.Recordset");</p>
44、<p><b> }</b></p><p> CADODataSet::~CADODataSet()//實(shí)現(xiàn)記錄集的關(guān)閉與接口的釋放</p><p><b> {</b></p><p> if (IsOpen())</p><p> m_DataSet->Close()
45、;</p><p> m_DataSet = NULL;</p><p> m_Connection = NULL;</p><p><b> }</b></p><p> void CADODataSet::SetConnection(CADOConnection *pCon)//設(shè)置記錄集所連接的數(shù)據(jù)庫連接類
46、的對象</p><p><b> {</b></p><p> m_Connection = pCon;</p><p><b> }</b></p><p> int CADODataSet::GetRecordCount()//獲取記錄集中數(shù)據(jù)的數(shù)量</p><p&g
47、t;<b> {</b></p><p> if (IsOpen())</p><p> return m_DataSet->GetRecordCount();</p><p><b> else</b></p><p><b> return 0;</b>&l
48、t;/p><p><b> }</b></p><p> BOOL CADODataSet::Open(CString SQLStr)//打開數(shù)據(jù)集</p><p><b> {</b></p><p> if (IsOpen())</p><p> m_DataSet
49、->Close();</p><p><b> //*/</b></p><p> m_DataSet->Open(_bstr_t(SQLStr),</p><p> _variant_t((IDispatch*)g_Connection.GetConnection(), true),</p><p>
50、 adOpenKeyset, adLockOptimistic, adCmdText);</p><p> return IsOpen();</p><p><b> //*/</b></p><p><b> }</b></p><p> BOOL CADODataSet::IsOpen
51、()//判斷數(shù)據(jù)集是否處于打開狀態(tài)</p><p><b> {</b></p><p> long State;</p><p> m_DataSet->get_State(&State);</p><p> if (State == adStateOpen)</p><p&g
52、t; return true;</p><p> return false;</p><p><b> }</b></p><p> FieldsPtr CADODataSet::GetFields()//用來獲取記錄集中字段的集合</p><p><b> {</b></p>
53、<p> return m_DataSet->GetFields();</p><p><b> }</b></p><p> BOOL CADODataSet::Next()//記錄集指針下移一位</p><p><b> {</b></p><p> if (m_D
54、ataSet->adoEOF)</p><p> return false;</p><p> m_DataSet->MoveNext();</p><p> return true;</p><p><b> }</b></p><p> void CADODataSet:
55、:AddNew()</p><p><b> {</b></p><p> m_DataSet->AddNew();</p><p><b> }</b></p><p> void CADODataSet::SetFieldValue(CString FieldName, _vari
56、ant_t Value)//想記錄集中指定的字段賦值</p><p><b> {</b></p><p> m_DataSet->PutCollect((_bstr_t)FieldName,Value);</p><p><b> }</b></p><p> void CADODa
57、taSet::Save()//保存記錄集數(shù)據(jù)所做的修改</p><p><b> {</b></p><p> m_DataSet->Update();</p><p><b> }</b></p><p> void CADODataSet::move(int nIndex)//將記
58、錄集的當(dāng)前指針移動(dòng)到指定的索引位置</p><p><b> {</b></p><p> m_DataSet->MoveFirst();</p><p> m_DataSet->Move(nIndex);</p><p><b> }</b></p><p&
59、gt; int CADODataSet::GetRecordNo()//獲取記錄集中的當(dāng)前行號</p><p><b> {</b></p><p> return m_DataSet->AbsolutePosition;</p><p><b> }</b></p><p> vo
60、id CADODataSet::Delete()//刪除記錄集中的當(dāng)前行</p><p><b> {</b></p><p> m_DataSet->Delete(adAffectCurrent);</p><p><b> }</b></p><p> BOOL CADODataS
61、et::Open(CString SQLStr, int LockType)</p><p><b> {</b></p><p> if (IsOpen())</p><p> m_DataSet->Close();</p><p><b> //*/</b></p>
62、<p> m_DataSet->Open(_bstr_t(SQLStr),</p><p> _variant_t((IDispatch*)g_Connection.GetConnection(), true),</p><p> adOpenKeyset,(LockTypeEnum) LockType, adCmdText);</p><p>
63、; return IsOpen();</p><p><b> }</b></p><p><b> 五、主題窗設(shè)計(jì)</b></p><p> A.主題窗由菜單和圖片組成,如圖:</p><p> B.主題窗設(shè)計(jì)步驟:</p><p> a.啟動(dòng)visual c+
64、+,選擇File/New命令,打開New對話框</p><p> b.在左側(cè)選擇MFC AppWizard(exe)選項(xiàng),在Project name編輯框中輸入工程名稱,在location編輯框中設(shè)置保存工程的路徑,然后單擊OK按鈕,打開MFC AppWizard對話框,選擇對話框編程,打擊fish</p><p> c.像工程中導(dǎo)入位圖,菜單資源(具體操作在最后有補(bǔ)充)</p&
65、gt;<p> 六、用戶登錄模塊設(shè)計(jì)</p><p> 概述,登錄界面是每個(gè)管理系統(tǒng)應(yīng)該具備的,本系統(tǒng)的登錄模塊如圖:</p><p> B . 技術(shù)分析</p><p> 窗體應(yīng)在主題窗創(chuàng)建之前并顯示,在登錄窗體創(chuàng)建的同時(shí)應(yīng)該建立數(shù)據(jù)庫連接,具體操作如下:</p><p> BOOL bCon = 、GetCon
66、nection()->Open(GetConnection()->GetSQLConStr());</p><p> CLoginDialog logindlg;</p><p> if (logindlg.DoModal() != IDOK)</p><p> return false;</p><p> ::CoIni
67、tialize(NULL);</p><p> CPersonDlg dlg;</p><p><b> 實(shí)現(xiàn)過程</b></p><p><b> 創(chuàng)建一個(gè)對話框</b></p><p> 向?qū)υ捒蛑刑砑觾蓚€(gè)靜態(tài)文本控件、一個(gè)編輯框控件、和兩個(gè)按鈕控件。分別設(shè)置兩個(gè)靜態(tài)文本控件的Capti
68、on屬性為“用戶名”和“密碼”設(shè)置編輯框控件類型為password;</p><p> 分別設(shè)置連個(gè)按鈕為“確定”和“取消”。</p><p> C. 在窗體初始化方法中創(chuàng)建用戶表的數(shù)據(jù),并將用戶添加到列表框控件中。代碼如下:</p><p> BOOL CLoginDialog::OnInitDialog() </p><p><
69、;b> {</b></p><p> CDialog::OnInitDialog();</p><p> m_DataSet.SetConnection(GetConnection());</p><p> m_DataSet.Open("Select * From Tab_User");</p><
70、p> int count = m_DataSet.GetRecordCount();</p><p> for (int i = 0; i< count;i++)</p><p><b> {</b></p><p> m_UserList.AddString((_bstr_t)m_DataSet.GetFields()-&
71、gt;Item[L"UserName"]->Value);</p><p> m_DataSet.Next();</p><p><b> }</b></p><p> m_UserList.SetCurSel(0);</p><p> return TRUE; // return T
72、RUE unless you set the focus to a control</p><p> // EXCEPTION: OCX Property Pages should return FALSE</p><p><b> }</b></p><p> 確定按鈕事件代碼如下:</p><p> void
73、 CLoginDialog::OnLogin() </p><p><b> {</b></p><p> CString sql,user,pass;</p><p> m_UserList.GetWindowText(user);</p><p> m_PassWord.GetWindowText(pass)
74、;</p><p> sql.Format("Select * From tab_user Where UserName = '%s' and PassWord = '%s'",</p><p> user,pass);</p><p> m_DataSet.Open(sql);</p><
75、;p> if (m_DataSet.GetRecordCount() == 1)</p><p><b> {</b></p><p> ::SetUserName(user);</p><p> this->OnOK();</p><p><b> }</b></p&g
76、t;<p><b> else</b></p><p> AfxMessageBox("用戶名或密碼不正確!");</p><p><b> }</b></p><p><b> 七、用戶管理模塊</b></p><p> 概況:能
77、實(shí)現(xiàn)添加,修改,刪除等操作如圖: </p><p><b> 實(shí)現(xiàn)過程:</b></p><p><b> 創(chuàng)建一個(gè)對話框</b></p><p> 向?qū)υ捒蛑刑砑酉鄳?yīng)的控件</p><p> 給對話框添加對話框類</p><p&
78、gt; 給類添加函數(shù)及成員變量</p><p><b> 給控件關(guān)聯(lián)變量</b></p><p><b> 編寫函數(shù)</b></p><p><b> C.實(shí)現(xiàn)代碼: </b></p><p> a.定義UpdateGrid方法用來更新列表視圖中的信息代碼如下:<
79、;/p><p> void CUserManage::UpdateGrid()</p><p><b> {</b></p><p> m_DataSet.Open("Select * From tab_User");</p><p> m_grid.DeleteAllItems();</p
80、><p> for (int i = 0 ; i < m_DataSet.GetRecordCount();i++)</p><p><b> {</b></p><p> m_grid.InsertItem(i,(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]
81、->Value);</p><p> int no = m_DataSet.GetRecordNo();</p><p> m_grid.SetItemData(i,no);</p><p> m_DataSet.Next();</p><p><b> }</b></p><p>
82、<b> } </b></p><p> b.添加按鈕代碼如下:</p><p> void CUserManage::OnAppend() </p><p><b> {</b></p><p> CUserEdit useredit;</p><p> if
83、(useredit.DoModal() == IDOK)</p><p><b> {</b></p><p> m_DataSet.AddNew(); m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.name);</p><p> m
84、_DataSet.Save();</p><p> UpdateGrid();</p><p><b> }</b></p><p><b> }</b></p><p><b> 刪除按鈕代碼:</b></p><p> void CUser
85、Manage::OnDelete() </p><p><b> {</b></p><p> if (MessageBox("是否刪除此記錄!","提示",</p><p> MB_YESNO|MB_ICONWARNING) == IDYES)</p><p><b&
86、gt; {</b></p><p> int no = m_grid.GetItemData(m_grid.GetSelectionMark());</p><p> m_DataSet.move(no-1);</p><p> m_DataSet.Delete();</p><p> m_DataSet.Save();
87、</p><p> UpdateGrid();</p><p><b> }</b></p><p><b> }</b></p><p><b> 修改按鈕代碼:</b></p><p> void CUserManage::OnEdit()
88、 </p><p><b> {</b></p><p> CUserEdit useredit;</p><p> int no = m_grid.GetItemData(m_grid.GetSelectionMark());</p><p> m_DataSet.move(no-1);</p>
89、<p> useredit.name = (char *)(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value;</p><p> if (useredit.DoModal() == IDOK)</p><p><b> {</b></p><
90、;p> m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.name);</p><p> m_DataSet.Save();</p><p> UpdateGrid();</p><p><b> }</b></p><p><
91、;b> }</b></p><p> 八、部門管理模塊設(shè)計(jì)</p><p> 概述:該模塊記錄了部門間的的層次結(jié)構(gòu)和部門信息,一般使用樹控件實(shí)現(xiàn),如圖:</p><p><b> 實(shí)現(xiàn)過程:</b></p><p> a. 創(chuàng)建一個(gè)對話框</p><p> b. 向?qū)?/p>
92、話框中添加相應(yīng)的控件</p><p> c. 給對話框添加對話框類</p><p> d. 給類添加函數(shù)及成員變量</p><p> e. 給控件關(guān)聯(lián)變量</p><p><b> 編寫函數(shù)</b></p><p> C. 相關(guān)代碼如下:</p><p> BO
93、OL CDeptManage::OnInitDialog() //初始化函數(shù)</p><p><b> {</b></p><p> CDialog::OnInitDialog();</p><p> m_DataSet.SetConnection(::GetConnection());</p><p> Up
94、dateDept();</p><p> return TRUE; }</p><p> 將部門信息一次性讀入樹控件中。代碼如下:</p><p> void CDeptManage::GetNode(HTREEITEM pNode, int nPid)</p><p><b> {</b></p>
95、<p> HTREEITEM node;</p><p> CADODataSet DataSet;</p><p> DataSet.SetConnection(::GetConnection());</p><p> CString str;</p><p> str.Format("Select * Fr
96、om tab_Dept where pid = %d",nPid);</p><p> DataSet.Open(str);</p><p> int count = DataSet.GetRecordCount();</p><p><b> int ID;</b></p><p> _variant
97、_t value;</p><p> for (int i = 0;i<count;i++)</p><p><b> {</b></p><p> node = m_tree.InsertItem((_bstr_t)DataSet.GetFields()->Item["DeptName"]->Val
98、ue,pNode);</p><p> value = (_variant_t)DataSet.GetFields()->Item["ID"]->Value;</p><p> ID = value.intVal;</p><p> m_tree.SetItemData(node,ID);</p><p>
99、; GetNode(node,ID);</p><p> DataSet.Next();</p><p><b> }</b></p><p><b> }</b></p><p> 定義GetNode方法,用于按成次級關(guān)系獲取部門表中的所有數(shù)據(jù),并添加樹控件,該方法由UpdateDept
100、方法進(jìn)行調(diào)用,代碼如下; </p><p> void CDeptManage::UpdateDept()</p><p> { m_tree.DeleteAllItems();</p><p> GetNode(TVI_ROOT,0);</p><p><b> }</b></p><
101、p> void CDeptManage::OnAdd() </p><p><b> {</b></p><p> CDeptEdit deptedit;</p><p> if (deptedit.DoModal() == IDOK)</p><p><b> {</b></
102、p><p> HTREEITEM pNode = m_tree.GetSelectedItem();</p><p><b> int pID;</b></p><p> if (deptedit.isroot)</p><p><b> pID = 0;</b></p><
103、p><b> else</b></p><p> pID = m_tree.GetItemData(pNode);</p><p> CADODataSet dataset;</p><p> dataset.SetConnection(::GetConnection());</p><p> datas
104、et.Open("Select top 1 * From tab_Dept");</p><p> dataset.AddNew();</p><p> dataset.SetFieldValue("DeptName",(_variant_t)deptedit.name);</p><p> dataset.SetFie
105、ldValue("memo",(_variant_t)deptedit.memo);</p><p> dataset.SetFieldValue("PID",(long)pID);</p><p> dataset.Save();</p><p> UpdateDept();</p><p>&
106、lt;b> }</b></p><p><b> }</b></p><p> 單擊“修改”按鈕時(shí)將彈出部門編輯窗體,輸入部門信息后單擊“確定”按鈕,實(shí)現(xiàn)部門信息的修改。代碼如下</p><p> void CDeptManage::OnEdit() </p><p><b> {&
107、lt;/b></p><p> CDeptEdit deptedit;</p><p> deptedit.visible = false;</p><p> HTREEITEM pNode = m_tree.GetSelectedItem();</p><p> if (pNode == 0)</p><p
108、><b> return;</b></p><p> int pID = m_tree.GetItemData(pNode);</p><p> CADODataSet dataset;</p><p> dataset.SetConnection(::GetConnection());</p><p>
109、 CString str;</p><p> str.Format("Select * From tab_Dept where id = %d",pID);</p><p> dataset.Open(str);</p><p> deptedit.name = (char *)(_bstr_t)dataset.GetFields()-&g
110、t;Item[L"DeptName"]->Value;</p><p> deptedit.memo = (char *)(_bstr_t)dataset.GetFields()->Item["memo"]->Value;</p><p> if (deptedit.DoModal() == IDOK)</p>&
111、lt;p><b> {</b></p><p> dataset.SetFieldValue("DeptName",(_variant_t)deptedit.name);</p><p> dataset.SetFieldValue("memo",(_variant_t)deptedit.memo);</p&g
112、t;<p> dataset.Save();</p><p> UpdateDept();</p><p><b> }</b></p><p><b> }</b></p><p> 當(dāng)單擊“刪除”按鈕時(shí),將刪除當(dāng)前選中的節(jié)點(diǎn),代碼如下:</p><p
113、> void CDeptManage::OnDelete() </p><p><b> {</b></p><p> HTREEITEM pNode = m_tree.GetSelectedItem();</p><p> if (pNode == 0)</p><p><b> return
114、;</b></p><p> if (MessageBox("是否刪除此記錄!","提示",</p><p> MB_YESNO|MB_ICONWARNING) == IDYES)</p><p><b> {</b></p><p> int pID = m_
115、tree.GetItemData(pNode);</p><p> CADODataSet dataset;</p><p> dataset.SetConnection(::GetConnection());</p><p> CString str;</p><p> str.Format("Select * From
116、tab_Dept where id = %d",pID);</p><p> dataset.Open(str);</p><p> dataset.Delete();</p><p> dataset.Save();</p><p> UpdateDept();}}</p><p> 九、人員信
117、息管理模塊設(shè)計(jì)</p><p> 概述:人員信息管理模塊根據(jù)部門分類顯示人員,同時(shí)可對人員信息進(jìn)行維護(hù),界面如下:</p><p><b> 實(shí)現(xiàn)過程:</b></p><p><b> 創(chuàng)建對話框</b></p><p> 向?qū)υ捒蛑刑砑酉鄳?yīng)的控件</p><p>
118、 給對話框添加對話框類</p><p> 給類添加函數(shù)及成員變量</p><p><b> 給控件關(guān)聯(lián)變量</b></p><p><b> 相關(guān)代碼:</b></p><p> GetNode方法,獲取部門信息,并添加到樹控件中。該方法由UpdateDept調(diào)用,代碼如下:</p&
119、gt;<p> void CPersonManage::GetNode(HTREEITEM pNode, int nPid)</p><p><b> {</b></p><p> HTREEITEM node;</p><p> CADODataSet DataSet;</p><p> Da
120、taSet.SetConnection(::GetConnection());</p><p> CString str;</p><p> str.Format("Select * From tab_Dept where pid = %d",nPid);</p><p> DataSet.Open(str);</p><
121、;p> int count = DataSet.GetRecordCount();</p><p><b> int ID;</b></p><p> _variant_t value;</p><p> for (int i = 0;i<count;i++)</p><p> { node = m
122、_tree.InsertItem((_bstr_t)DataSet.GetFields()->Item["DeptName"]->Value,pNode);</p><p> value = (_variant_t)DataSet.GetFields()->Item["ID"]->Value;</p><p> ID =
123、value.intVal;</p><p> m_tree.SetItemData(node,ID);</p><p> GetNode(node,ID);</p><p> DataSet.Next();</p><p><b> }</b></p><p><b> }&l
124、t;/b></p><p> UpdateDpt調(diào)用GetNode,實(shí)現(xiàn)信息更新,代碼如下:</p><p> void CPersonManage::UpdateDept()</p><p><b> {</b></p><p> m_tree.DeleteAllItems();</p>&
125、lt;p> HTREEITEM node;</p><p> node = m_tree.InsertItem("全部",TVI_ROOT);</p><p> m_tree.SetItemData(node,-1);</p><p> GetNode(node,0);</p><p><b>
126、}</b></p><p> UpdatePerson更新人員信息,并將其顯示在列表控件中。代碼如下:</p><p> void CPersonManage::UpdatePerson()</p><p><b> {</b></p><p> m_list.DeleteAllItems();<
127、;/p><p> CADODataSet DataSet;</p><p> DataSet.SetConnection(::GetConnection());</p><p> CString str;</p><p> if (m_DeptID == -1)</p><p> str.Format("
128、;Select * From tab_Employees");</p><p><b> else</b></p><p> str.Format("Select * From tab_Employees where Dept = %d",m_DeptID);</p><p> DataSet.Open(st
129、r);</p><p> int count = DataSet.GetRecordCount();</p><p> int n = 0;</p><p> _variant_t value;</p><p> for (int i = 0;i<count;i++)</p><p><b>
130、 {</b></p><p> int index = 1;</p><p> m_list.InsertItem(n,(_bstr_t)DataSet.GetFields()->Item["Emp_Id"]->Value);</p><p> value = DataSet.GetFields()->Item
131、["AutoID"]->Value;</p><p> m_list.SetItemData(n,value.lVal);</p><p> m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->Item["Emp_NAME"]->Value);</p>
132、<p> m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->Item["Sex"]->Value);</p><p> m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->Item["Nationality"
133、;]->Value);</p><p> m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->Item["Birth"]->Value);</p><p> m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->I
134、tem["Political_Party"]->Value);</p><p> m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->Item["Culture_Level"]->Value);</p><p> m_list.SetItemText(n,inde
135、x++,(_bstr_t)DataSet.GetFields()->Item["Marital_Condition"]->Value);</p><p> m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->Item["Id_Card"]->Value);</p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)-學(xué)生考勤管理系統(tǒng)
- c++課程設(shè)計(jì) 高校人事管理系統(tǒng)
- c++課程設(shè)計(jì)---公司人事管理系統(tǒng)
- c++課程設(shè)計(jì)人事管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告--人事管理系統(tǒng)
- 高校人事管理系統(tǒng)課程設(shè)計(jì)c++版
- c++課程設(shè)計(jì)報(bào)告-學(xué)生考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- c++酒店管理系統(tǒng)課程設(shè)計(jì)
- c++酒店管理系統(tǒng)課程設(shè)計(jì)
- 銷售管理系統(tǒng)c++課程設(shè)計(jì)
- 《c++》課程設(shè)計(jì)倉庫管理系統(tǒng)
- c++課程設(shè)計(jì)-學(xué)生管理系統(tǒng)
- c++學(xué)生管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)--酒店管理系統(tǒng)
- [vc++畢設(shè)]c++課程設(shè)計(jì)報(bào)告(人事管理系統(tǒng))
- c++課程設(shè)計(jì)--圖書管理系統(tǒng)
- 圖書管理系統(tǒng)c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)學(xué)生通訊管理系統(tǒng)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)報(bào)告-- 學(xué)籍管理系統(tǒng)
評論
0/150
提交評論