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

📄 atterrand.cpp

📁 人事管理系统源码。很好用的一个程序源码
💻 CPP
字号:
// AttErrand.cpp : implementation file
//

#include "stdafx.h"
#include "manager.h"
#include "AttErrand.h"
#include "PersonSet.h"

#include "AttDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CAttErrand property page

IMPLEMENT_DYNCREATE(CAttErrand, CPropertyPage)

CAttErrand::CAttErrand() : CPropertyPage(CAttErrand::IDD)
{
	// 得到当前时间并格式化
	CTime t=CTime::GetCurrentTime();
	CString str=t.Format("%Y-%m-%d %H:%M");
	//{{AFX_DATA_INIT(CAttErrand)
	m_strSTime = str;
	m_strETime = str;
	m_strPersonID = _T("");
	m_strPersonName = _T("");
	m_strDescription = _T("");
	//}}AFX_DATA_INIT
}

CAttErrand::~CAttErrand()
{
}

void CAttErrand::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAttErrand)
	DDX_Control(pDX, IDC_LIST4, m_cList);
	DDX_Text(pDX, IDC_EDT_ERRAND_STARTTIME, m_strSTime);
	DDX_Text(pDX, IDC_EDT_ERRAND_ENDTIME, m_strETime);
	DDX_Text(pDX, IDC_EDT_ERRAND_PERSONID, m_strPersonID);
	DDX_Text(pDX, IDC_EDT_ERRAND_PERSONNAME, m_strPersonName);
	DDX_Text(pDX, IDC_EDT_ERRAND_DESCRIPTION, m_strDescription);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAttErrand, CPropertyPage)
	//{{AFX_MSG_MAP(CAttErrand)
	ON_EN_CHANGE(IDC_EDT_ERRAND_PERSONID, OnChangeEdtErrandPersonid)
	ON_BN_CLICKED(IDC_BTN_ERRAND_ADD, OnBtnErrandAdd)
	ON_BN_CLICKED(IDC_BTN_ERRAND_DELETEATTEND, OnBtnErrandDeleteattend)
	ON_BN_CLICKED(IDC_BTN_ERRAND_SEEKIO, OnBtnErrandSeekio)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAttErrand message handlers

BOOL CAttErrand::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	// 创建列表
	int nWidth=90;
	m_cList.InsertColumn(0, "记录编号", LVCFMT_LEFT, nWidth-20);
	m_cList.InsertColumn(1, "员工号", LVCFMT_LEFT, nWidth-20);
	m_cList.InsertColumn(2, "开始时间", LVCFMT_LEFT, nWidth+20);
	m_cList.InsertColumn(3, "结束时间", LVCFMT_LEFT, nWidth+20);
	m_cList.InsertColumn(4, "具体描述", LVCFMT_LEFT, nWidth);
	m_cList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	// 更新列表	
	CErrandSet rs;
	UpdateList(rs); 
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAttErrand::UpdateList(CErrandSet &rs)
{
	int i=0;
	CString strID,strSTime,strETime;
	// 清除列表框内容
	m_cList.DeleteAllItems(); 
	// 将数据集中所有记录添加到列表中
	rs.Open(); 
	while(!rs.IsEOF()) 
	{
		m_cList.InsertItem(i, ""); 
		strID.Format("%d", rs.m_ID);
		m_cList.SetItemText(i, 0, strID);
		m_cList.SetItemText(i, 1, rs.m_PERSON);
		strSTime=rs.m_START_TIME.Format("%y-%m-%d %H:%M");
		m_cList.SetItemText(i, 2, strSTime);
		strETime=rs.m_END_TIME.Format("%y-%m-%d %H:%M");
		m_cList.SetItemText(i, 3, strETime);
		m_cList.SetItemText(i, 4, rs.m_DESCRIPTION);
		rs.MoveNext(); 
		i++;
	}
	rs.Close(); 
}

void CAttErrand::OnChangeEdtErrandPersonid() 
{
	UpdateData(); 

	CPersonSet rs; 
	rs.m_strFilter = "ID='" + m_strPersonID + "'"; 
	rs.Open(); 
	if(rs.GetRecordCount()==1) 
	{
		m_strPersonName=rs.m_name; 
	}
	else m_strPersonName.Empty(); 
	rs.Close(); 
	UpdateData(FALSE); 
}

void CAttErrand::OnBtnErrandAdd() 
{

	UpdateData(); // 更新数据

	int nYear,nMonth,nDay,nHour,nMinute; // 年,月,日,时,分
	// 转换起始时间类型
	sscanf(m_strSTime.Left(4), "%d", &nYear); // 得到年
	sscanf(m_strSTime.Mid(5,2), "%d", &nMonth); // 得到月
	sscanf(m_strSTime.Mid(8,2), "%d", &nDay); // 得到日
	sscanf(m_strSTime.Mid(11,2), "%d", &nHour); // 得到时
	sscanf(m_strSTime.Mid(14,2), "%d", &nMinute); // 得到分
	// 得到起始时间
	CTime S_time(nYear,nMonth,nDay,nHour,nMinute,0);
	// 转换结束时间类型
	sscanf(m_strETime.Left(4), "%d", &nYear); // 得到年
	sscanf(m_strETime.Mid(5,2), "%d", &nMonth); // 得到月
	sscanf(m_strETime.Mid(8,2), "%d", &nDay); // 得到日
	sscanf(m_strETime.Mid(11,2), "%d", &nHour); // 得到时
	sscanf(m_strETime.Mid(14,2), "%d", &nMinute); // 得到分
	// 得到结束时间
	CTime E_time(nYear,nMonth,nDay,nHour,nMinute,0);
	// 添加出差记录
	CErrandSet rs_errand; 
	rs_errand.Open(); 
	rs_errand.AddNew(); 
	rs_errand.m_PERSON=m_strPersonID;
	rs_errand.m_START_TIME=S_time;
	rs_errand.m_END_TIME=E_time;
	rs_errand.m_DESCRIPTION=m_strDescription;
	rs_errand.Update();
	rs_errand.Close(); 
	UpdateList(rs_errand); 
}

void CAttErrand::OnBtnErrandDeleteattend() 
{
	CString strSQL;
	int nItem;
	// 得到第一个被选择Item的位置
	POSITION pos = m_cList.GetFirstSelectedItemPosition();
	if(pos==NULL)
	{
		AfxMessageBox("没有选择记录!");
		return;
	}
	CErrandSet rs; 
	while(pos) 
	{
		nItem=m_cList.GetNextSelectedItem(pos); 
		// 构造SQL语句
		strSQL="select * from ERRAND where ID=" + m_cList.GetItemText(nItem, 0);
		if(!rs.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
		{
			MessageBox("打开数据库失败!","数据库错误",MB_OK);
			return ;
		}
		//删除该用户
		rs.Delete();
		rs.Close();
	}
	// 更新列表框
	UpdateList(rs); 
}

void CAttErrand::OnBtnErrandSeekio() 
{
	CErrandSet rs; 

	CAttDlg *pDlg; 
	CString strFilter; 
	CString strSTime,strETime; 

	pDlg=(CAttDlg*)GetParent()->GetParent(); 
	pDlg->UpdateData(); 

	strSTime=pDlg->m_StartTime.Format("%Y-%m-%d");
	strETime=pDlg->m_EndTime.Format("%Y-%m-%d");
	// 添加过滤条件
	if(pDlg->m_bSeekbyperson) 
		strFilter="PERSON='" + pDlg->m_strPersonID + "'"; 
	if(pDlg->m_bSeekbytime) 
	{
		if(strFilter.GetLength()>0) 
			strFilter += " and "; 
		strFilter += "END_TIME>" + strSTime ;
		strFilter += " and START_TIME<" + strETime ;
	}
	if(strFilter.GetLength()>0) 
		rs.m_strFilter=strFilter; 
	 // 更新列表框
	UpdateList(rs);
}

⌨️ 快捷键说明

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