⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgeditcheck.cpp

📁 一个简单的公司人员考勤系统的源代码,我已经编译运行过
💻 CPP
字号:
// dlgEditCheck.cpp : implementation file
//

#include "stdafx.h"
#include "CheckIn.h"
#include "dlgEditCheck.h"

#include "CheckRecordset.h"
#include "EmployeeRecordset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CdlgEditCheck dialog


CdlgEditCheck::CdlgEditCheck(CWnd* pParent /*=NULL*/)
	: CDialog(CdlgEditCheck::IDD, pParent)
{
	//{{AFX_DATA_INIT(CdlgEditCheck)
	m_iDay = 0;
	m_strEmpId = _T("");
	m_iMonth = 0;
	m_iYear = 0;
	//}}AFX_DATA_INIT
}


void CdlgEditCheck::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CdlgEditCheck)
	DDX_Control(pDX, IDC_LIST, m_CheckList);
	DDX_Control(pDX, IDC_COMBO, m_CheckCom);
	DDX_Text(pDX, IDC_EDIT_DAY, m_iDay);
	DDX_Text(pDX, IDC_EDIT_EMPID, m_strEmpId);
	DDX_Text(pDX, IDC_EDIT_MONTH, m_iMonth);
	DDX_Text(pDX, IDC_EDIT_YEAR, m_iYear);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CdlgEditCheck, CDialog)
	//{{AFX_MSG_MAP(CdlgEditCheck)
	ON_BN_CLICKED(IDC_OK, OnMyClose)
	ON_BN_CLICKED(IDC_SEE, OnSee)
	ON_BN_CLICKED(IDC_EDIT, OnEdit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CdlgEditCheck message handlers

void CdlgEditCheck::OnOK() 
{
	// TODO: Add extra validation here
	
//	CDialog::OnOK();
}

void CdlgEditCheck::OnMyClose() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnOK();
}

void CdlgEditCheck::OnSee() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData(true);

	CEdit *pEditYear,*pEditMonth,*pEditDay;
	pEditYear = (CEdit*)this->GetDlgItem(IDC_EDIT_YEAR);
	pEditMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_MONTH);
	pEditDay = (CEdit*)this->GetDlgItem(IDC_EDIT_DAY);
	CString strY,strM,strD;
	pEditYear->GetWindowText(strY);
	pEditMonth->GetWindowText(strM);
	pEditDay->GetWindowText(strD);
	/*首先应判断输入的合法性*/
	/*员工号必须输入,日期的年月日必须输入而且必须是数字*/
	/*必须是数字的判断留给读者完成*/
	if ((strY == "") && (strM == "")&&(strD == ""))
	{
		MessageBox("日期必须输入!","提示",MB_ICONINFORMATION|MB_OK);		
		return;
	}
	char year[10],month[10],day[10];
	sprintf(year,"%d",this->m_iYear);
	sprintf(month,"%d",this->m_iMonth);
	sprintf(day,"%d",this->m_iDay);

	
	if (this->m_strEmpId=="")
	{
		MessageBox("必须输入员工号!","提示",MB_ICONINFORMATION|MB_OK);
		return;
	}
	CCheckRecordset rsCheck;
	CEmployeeRecordset rsEmployee;
	try
	{
		if(rsCheck.IsOpen())
		{
			rsCheck.Close();
		}		
		rsCheck.Open(CRecordset::dynaset,_T("select * from tbCheckIn where EmployeeID = '"+this->m_strEmpId+"'"));	
		if (rsCheck.IsBOF())
		{
			MessageBox("没有符合条件的出勤信息!","提示",MB_ICONINFORMATION|MB_OK);
			return;
		}
		else
		{
			rsCheck.MoveFirst();
			while(!rsCheck.IsEOF())
			{
				if ((rsCheck.m_CheckInTime.GetYear() == this->m_iYear) && (rsCheck.m_CheckInTime.GetMonth()== m_iMonth) && (rsCheck.m_CheckInTime.GetDay() == m_iDay))
				{
					switch (rsCheck.m_State)
					{
					case 1:
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         正常");
						break;
					case 2:
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         迟到");
						break;
					case 3:
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         出差");
						break;
					case 4:
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         事假");
						break;
					case 5:
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         病假");
						break;
					case 6:
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         调休");
						break;					
					}
					rsCheck.Close();
					return;
				}
				rsCheck.MoveNext();
			}
			if (rsCheck.IsOpen())
				rsCheck.Close();
		}
	}
	catch(CDBException &e)
	{
		MessageBox(e.m_strError,"提示",MB_ICONINFORMATION|MB_OK);
	}
}

BOOL CdlgEditCheck::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	this->m_CheckList.AddString("员工号     员工姓名      签到时间          结果");
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CdlgEditCheck::OnEdit() 
{
	// TODO: Add your control notification handler code here
	/*在修改之前,同样需要检查是否输入了要修改的员工号以及日期*/	
	/*修改某条记录,首先需要定位到被修改的记录上*/
	/*给记录的字段赋予新的值,并更新ListBox中的显示*/
	this->UpdateData(true);

	CEdit *pEditYear,*pEditMonth,*pEditDay;
	pEditYear = (CEdit*)this->GetDlgItem(IDC_EDIT_YEAR);
	pEditMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_MONTH);
	pEditDay = (CEdit*)this->GetDlgItem(IDC_EDIT_DAY);
	CString strY,strM,strD;
	pEditYear->GetWindowText(strY);
	pEditMonth->GetWindowText(strM);
	pEditDay->GetWindowText(strD);
	/*首先应判断输入的合法性*/
	/*员工号必须输入,日期的年月日必须输入而且必须是数字*/
	/*必须是数字的判断留给读者完成*/
	if ((strY == "") && (strM == "")&&(strD == ""))
	{
		MessageBox("日期必须输入!","提示",MB_ICONINFORMATION|MB_OK);		
		return;
	}
	char year[10],month[10],day[10];
	sprintf(year,"%d",this->m_iYear);
	sprintf(month,"%d",this->m_iMonth);
	sprintf(day,"%d",this->m_iDay);

	
	if (this->m_strEmpId=="")
	{
		MessageBox("必须输入员工号!","提示",MB_ICONINFORMATION|MB_OK);
		return;
	}
	CString strState;
	this->m_CheckCom.GetWindowText(strState);
	if (strState == "")
	{
		MessageBox("必须选择新的出勤值!","提示",MB_ICONINFORMATION|MB_OK);
		return;
	}
	CCheckRecordset rsCheck;
	CEmployeeRecordset rsEmployee;
	try
	{
		if(rsCheck.IsOpen())
		{
			rsCheck.Close();
		}		
		rsCheck.Open(CRecordset::dynaset,_T("select * from tbCheckIn where EmployeeID = '"+this->m_strEmpId+"'"));	
		if (rsCheck.IsBOF())
		{
			MessageBox("没有此员工","提示",MB_ICONINFORMATION|MB_OK);
			//对于没有签到的员工,补上的记录中时间为23:59分
			
			return;
		}
		else
		{
			rsCheck.MoveFirst();
			while(!rsCheck.IsEOF())
			{
				if ((rsCheck.m_CheckInTime.GetYear() == this->m_iYear) && (rsCheck.m_CheckInTime.GetMonth()== m_iMonth) && (rsCheck.m_CheckInTime.GetDay() == m_iDay))
				{
					rsCheck.Edit();										
					if(strState == "正常")
					{
						rsCheck.m_State = 1;
						m_CheckList.DeleteString(1);
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         正常");
					}
					if(strState == "迟到")
					{
						rsCheck.m_State = 2;
						m_CheckList.DeleteString(1);
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         迟到");
						break;
					}
					if(strState == "出差")
					{
						rsCheck.m_State = 3;
						m_CheckList.DeleteString(1);
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         出差");
					}
					if(strState == "事假")
					{
						rsCheck.m_State = 4;
						m_CheckList.DeleteString(1);
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         事假");
					}
					if(strState == "病假")
					{
						rsCheck.m_State = 5;
						m_CheckList.DeleteString(1);
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         病假");
					}
					if(strState == "调休")
					{
						rsCheck.m_State = 6;
						m_CheckList.DeleteString(1);
						m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         调休");
					}					
					rsCheck.Update();
					rsCheck.Close();
					return;
				}
				rsCheck.MoveNext();
			}
			//直到最后也没有找到这个员工当天的出勤记录,那么应该补上这天的出勤
			rsCheck.AddNew();
			rsCheck.m_EmployeeID = this->m_strEmpId ;
			rsCheck.m_CheckInTime = CTime(this->m_iYear,this->m_iMonth,this->m_iDay,23,59,0);
			if(strState == "正常")
			{
				rsCheck.m_State = 1;			
				m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         正常");
			}
			if(strState == "迟到")
			{
				rsCheck.m_State = 2;			
				m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         迟到");
			}
			if(strState == "出差")
			{
				rsCheck.m_State = 3;			
				m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         出差");
			}
			if(strState == "事假")
			{
				rsCheck.m_State = 4;			
				m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         事假");
			}
			if(strState == "病假")
			{
				rsCheck.m_State = 5;			
				m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         病假");
			}
			if(strState == "调休")
			{
				rsCheck.m_State = 6;			
				m_CheckList.AddString(rsCheck.m_EmployeeID+"     "+year+"年"+month+"月"+day+"日         调休");
			}			
			rsCheck.Update();
			if (rsCheck.IsOpen())
				rsCheck.Close();
		}
	}
	catch(CDBException &e)
	{
		MessageBox(e.m_strError,"提示",MB_ICONINFORMATION|MB_OK);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -