设为首页 加入收藏

TOP

3.8.2 考勤模块(2)
2013-10-07 14:27:35 来源: 作者: 【 】 浏览:49
Tags:3.8.2 考勤 模块

3.8.2  考勤模块(2)

(5) 给"加班"按钮添加消息函数,实现加班对话框界面的显示,完成员工加班信息的统计,具体设计界面如图3-11所示。

 
图3-11  加班管理界面
(6) 双击图3-11所示的对话框,创建一个新类COverTimeDlg,通过类向导为控件关联相应的变量。添加WM_INITDIALOG消息响应函数OnInitDialog,代码如下:
  1. BOOL COverTimeDlg::OnInitDialog()    
  2.  {    
  3.   CDialog::OnInitDialog();    
  4.   m_Type.SetCurSel(0);                 
  5.      //获取组合框选项    
  6.   return TRUE;    
  7.  }  

(7) 加班的具体实现在CCheckManageDlg中完成,加班按钮的消息响应函数如下:

  1. void CCheckManageDlg::OnOvertime()    
  2.   {    
  3.    COverTimeDlg dlg;                                   
  4.       //定义对话框对象    
  5.    UpdateData();                                       
  6.       //数据的获取    
  7.    if(dlg.DoModal() == IDOK)                      
  8.       //如果单击确定按钮    
  9.    {    
  10.        CString strSQL;                                 
  11.       //定义字符串变量    
  12.        CTime time = CTime::GetCurrentTime();             
  13.       //获取当前系统的时间    
  14.        CString strTime = time.Format("%Y-%m-%d");     
  15.       //将时间放到字符串中    
  16.           switch(dlg.m_nType)    
  17.           {    
  18.           case 0:    
  19.               strSQL.Format("update checkinfo set   
  20.               ot1 = %d    //构造修改操作语句    
  21.               where id = %s and date = '%s'",   
  22.               dlg.m_nHour, m_strID, strTime);    
  23.               break;    
  24.           case 1:    
  25.               strSQL.Format("update checkinfo set ot2 = %d    
  26.               where id = %s and date = '%s'",   
  27.               dlg.m_nHour, m_strID, strTime);    
  28.               break;    
  29.           case 2:    
  30.               strSQL.Format("update checkinfo set ot3 = %d    
  31.               where id = %s and date = '%s'",   
  32.               dlg.m_nHour, m_strID, strTime);    
  33.               break;    
  34.           }    
  35.           try    
  36.           {                                        
  37.       //执行SQL语句    
  38.               theApp.m_pConnection->Execute  
  39.       ((_bstr_t)strSQL, NULL, adCmdText);    
  40.           }    
  41.           CATCH_ERROR;    
  42.       }  

通过上述代码实现了对员工加班时间的设定,通过GetCurrentTime( )获取当前的系统时间。m_nType为加班的类型,根据用户选择加班的类型,设置相应的加班时间,将数据添加到数据库中,在这里插入数据时需要员工的ID及时间进行匹配。

2. 考勤统计处理

(1) 创建一个对话框资源ID为IDD_CHECK_INFO_DLG,添加的控件如图3-12所示。

 
图3-12  考勤信息管理
(2) 双击对话框,创建一个新类CCheckInfoDlg,通过类向导为控件关联相应的变量。添加WM_INITDIALOG消息响应函数 OnInitDialog( ),代码如下:

  1. BOOL CCheckInfoDlg::OnInitDialog()    
  2.  {    
  3.   CDialog::OnInitDialog();    
  4.   m_pRecordset.CreateInstance("ADODB.Recordset");        
  5.   //创建记录集实例    
  6.   m_ListCrtl.SetExtendedStyle(LVS_EX_GRIDLINES |   
  7.   LVS_EX_FULLROWSELECT );    
  8.   m_ListCrtl.InsertColumn(0, "日期", LVCFMT_CENTER, 80);     
  9.   //风格设定    
  10.   m_ListCrtl.InsertColumn(1, "员工ID", LVCFMT_CENTER, 60);    
  11.   m_ListCrtl.InsertColumn(2, "缺勤", LVCFMT_CENTER, 40);    
  12.   m_ListCrtl.InsertColumn(3, "早退", LVCFMT_CENTER, 40);    
  13.   m_ListCrtl.InsertColumn(4, "迟到", LVCFMT_CENTER, 40);    
  14.   m_ListCrtl.InsertColumn(5, "休息", LVCFMT_CENTER, 40);    
  15.   m_ListCrtl.InsertColumn(6, "病假", LVCFMT_CENTER, 40);    
  16.   m_ListCrtl.InsertColumn(7, "出差", LVCFMT_CENTER, 40);    
  17.   m_ListCrtl.InsertColumn(8, "事假", LVCFMT_CENTER, 40);    
  18.   m_ListCrtl.InsertColumn(9, "备注", LVCFMT_CENTER, 120);    
  19.   CString strSQL;                                   
  20.   //定义字符串变量    
  21.   strSQL.Format("select * from checkinfo ");    
  22.   try    
  23.   {    
  24.          m_pRecordset = theApp.m_pConnection->Execute  
  25.      ((_bstr_t)strSQL, NULL, adCmdText);    
  26.          int i = 0;                                   
  27.      //定义整型变量    
  28.          while(!m_pRecordset->adoEOF)                    
  29.      //如果记录没有到末尾    
  30.          {    
  31.              m_ListCrtl.InsertItem(i,(char*)_bstr_t  
  32.             (m_pRecordset->GetCollect(_ variant_t((long)0))));    
  33.              for(int j = 1; j < 9; j++)    
  34.            m_ListCrtl.SetItemText(i,j,(char*)_bstr_t  
  35.      (m_pRecordset->GetCollect (_variant_t((long)j))));    
  36.              i++;    
  37.              m_pRecordset->MoveNext();            
  38.      //移动到下一条记录    
  39.          }    
  40.      }    
  41.      CATCH_ERROR;    
  42.      return TRUE;    
  43.   }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.8.2 考勤模块(3) 下一篇3.8.2 考勤模块(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: