2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論