设为首页 加入收藏

TOP

3.8.2 考勤模块(1)
2013-10-07 14:27:32 来源: 作者: 【 】 浏览:50
Tags:3.8.2 考勤 模块

3.8.2  考勤模块(1)

2006年10月20日,上午

今天开始设计考勤模块。考勤模块是为了辅助实现员工工资统计模块而设计的,只有正确地对员工的考勤进行统计才能精确地计算员工的工资。由此可见,此模块在系统中起着至关重要的作用,良好的考勤模块设计会为员工的工资统计带来方便。考勤管理模块功能主要是对员工进行迟到、缺勤、出差及休息等方面的考勤,其中缺勤具体又分为迟到、早退、病假和事假几种情况。另外,还有加班事项也作为考勤的一个环节。将考勤的信息添加到数据库中,用户可以对考勤的信息进行统计,也可以对考勤的信息进行查询。

1. 考勤管理

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

 
图3-10  考勤管理控件
(2) 双击对话框,创建一个新类CCheckManageDlg,通过类向导为控件关联相应的变量。添加WM_INITDIALOG消息响应函数OnInitDialog( ),代码如下:
  1. BOOL CCheckManageDlg::OnInitDialog()    
  2.  {    
  3.   CDialog::OnInitDialog();    
  4.   m_pRecordset.CreateInstance("ADODB.Recordset");    
  5.   GetDlgItem(IDC_CHECK1)->EnableWindow(FALSE);         
  6.      //复选框没有选中    
  7.   GetDlgItem(IDC_CHECK2)->EnableWindow(FALSE);    
  8.   GetDlgItem(IDC_CHECK3)->EnableWindow(FALSE);    
  9.   GetDlgItem(IDC_CHECK4)->EnableWindow(FALSE);    
  10.   m_Radio.SetCheck(1);                                
  11.      //第一个单选按钮被选中    
  12.      return TRUE   
  13.  }  

通过上述代码完成了初始化工作,EnableWindow( )函数控制空间的禁用与恢复, SetCheck( )函数设置单选按钮处于选中的状态。

(3) 给"确定"按钮添加消息响应函数,该函数的功能是完成员工考勤情况的添加,代码如下:

  1.  void CCheckManageDlg::OnSure()    
  2.   {    
  3.    UpdateData();                                        
  4. //数据的更新    
  5.    if(m_strID == "")                                     
  6. //条件的判断    
  7.    {    
  8.        MessageBox("请输入员工号!");                      
  9. //信息的输出    
  10.        return ;    
  11.    }    
  12.    CString strSQL;                                   
  13. //定义字符串变量    
  14.       _variant_t va;    
  15.       strSQL.Format("select count(*) from emp 
    where [id] = %s", m_strID);    
  16.       try    
  17.       {    
  18.           m_pRecordset = theApp.m_pConnection-> 
  19. Execute((_bstr_t)strSQL, NULL, adCmdText);    
  20.           va = m_pRecordset->GetCollect(_variant_t  
  21. ((long)0)); //获取记录集的结果    
  22.           if(va.iVal == 0)    
  23.           {    
  24.               MessageBox("没有此员工!");    
  25.               return ;    
  26.           }    
  27.       }    
  28.       CATCH_ERRO  

上述代码借助了Format( )函数,通过"select count(*) from 表名 where 条件",构造从表中查询符合条件数据总数的SQL语句。这是常用的查询总数的SQL语句,希望读者可以熟练地掌握运用。

(4) 通过SQL语句实现向表中添加记录,实现代码参考如下:

  1.     CTime time = CTime::GetCurrentTime();      
  2.     //获取当前的系统时间    
  3.     CString strTime = time.Format("%Y-%m-%d");    
  4.     CString strYM = time.Format("%Y-%m");    
  5.     if(m_nFlag == 1)              
  6.     //标记的判断    
  7.     {    
  8.         if(m_Check1 == 1)    
  9.             m_strState[2] = "是";    
  10.         else   
  11.             m_strState[2] = "否";    
  12.         if(m_Check2 == 1)    
  13.             m_strState[1] = "是";    
  14.         else   
  15.             m_strState[1] = "否";    
  16.     }    
  17.     if(m_nFlag == 2)    
  18.     {    
  19.         if(m_Check3 == 1)    
  20.             m_strState[4] = "是";    
  21.         else   
  22.             m_strState[4] = "否";    
  23.         if(m_Check4 == 1)    
  24.             m_strState[6] = "是";    
  25.         else   
  26.             m_strState[6] = "否";    
  27.     }    
  28.     strSQL.Format("insert into checkinfo values   
  29.     ('%s', '%s', '%s', '%s', '    
  30.     //构造插入的SQL语句    
  31.          %s', '%s', '%s', '%s', '%s', '%s', '%s', 0, 0, 0)",    
  32.         strTime, m_strID, m_strState[0],   
  33.     m_strState[1], m_strState[2],    
  34.     m_strState[3], m_strState[4],   
  35.     m_strState[5], m_strState[6], m_strMore, strYM);    
  36.     try    
  37.     {                                               //执行SQL语句    
  38.         theApp.m_pConnection->Execute((_bstr_t)strSQL,   
  39.     NULL, adCmdText);    
  40.         m_strID = "";    
  41.         for(int i = 0; i < 7; i++)    
  42.             m_strState[i] = "否";    
  43.         MessageBox("添加成功!");    
  44.     }    
  45.     CATCH_ERROR;    
  46.     UpdateData(FALSE);                              //输出结果    
  47. }  

通过上述代码,将考勤的状态添加到数据库中,并通过m_nFlag判断单击了哪个单选按钮,再通过m_strstate数组判断选择了几个复选框,构造SQL将数据插入到数据库中。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.8.2 考勤模块(2) 下一篇3.6 搭建开发环境

评论

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