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

📄 attendmisdlg.cpp

📁 一个员工考勤管理的程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	m_listLeave.DeleteAllItems();
	CDStrs leFields;
	//获取请假数据
	g_odbcDB.ExecuteQuery("select a.id,a.personid,b.name,start_time,end_time "
		"from leave_info_tab a, person_info_tab b where a.personid=b.personid order by a.id",leFields);
	for(i = 0 ; i < leFields.size() ; i++)
	{
		CStrs strs = leFields[i];
		InsertDataToList(m_listLeave,strs[0],strs[1],strs[2],
			strs[3],strs[4]);			
	}

	CDStrs errFields;
	//获取出差信息数据
	g_odbcDB.ExecuteQuery("select a.id,a.personid,b.name,start_time,end_time "
		"from errand_info_tab a, person_info_tab b where a.personid=b.personid order by a.id",errFields);
	for(i = 0 ; i < errFields.size() ; i++)
	{
		CStrs strs = errFields[i];
		InsertDataToList(m_listErrand,strs[0],strs[1],strs[2],
			strs[3],strs[4]);			
	}
}

void CAttendMISDlg::InsertDataToList(CListCtrl&listCtl,CString item0,CString item1,CString item2, 
					CString item3,CString item4)
{
	//获取当前的纪录条数.
	int nIndex = listCtl.GetItemCount();
	LV_ITEM lvItem;
	lvItem.mask = LVIF_TEXT ;	
	lvItem.iItem = nIndex;				//行数
	lvItem.iSubItem = 0;
	lvItem.pszText = (char*)(LPCTSTR)item0;		//第一列
	//在最后一行插上班记录值.
	listCtl.InsertItem(&lvItem);	
	//设置该的其他列的值.
	listCtl.SetItemText(nIndex,1,item1);
	listCtl.SetItemText(nIndex,2,item2);	
	listCtl.SetItemText(nIndex,3,item3);	
	listCtl.SetItemText(nIndex,4,item4);	
}


void CAttendMISDlg::OnChangeEditPeridAtt() 
{
	if(!UpdateData())
		return;
	m_strPerNameAtt = "";
	CString sql;
	//获取姓名信息
	sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDAtt);
	g_odbcDB.ExecuteQueryValue(sql,m_strPerNameAtt);
	UpdateData(FALSE);	
}

void CAttendMISDlg::OnChangeEditPeridErrand() 
{
	// TODO: Add your control notification handler code here
	if(!UpdateData())
		return;
	m_strPerNameErrand = "";
	CString sql;
	//获取姓名信息
	sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDErrand);
	g_odbcDB.ExecuteQueryValue(sql,m_strPerNameErrand);
	UpdateData(FALSE);
}

void CAttendMISDlg::OnChangeEditPeridLeave() 
{
	if(!UpdateData())
		return;
	m_strPerNameLeave = "";
	CString sql;
	//获取姓名信息
	sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDLeave);
	g_odbcDB.ExecuteQueryValue(sql,m_strPerNameLeave);
	UpdateData(FALSE);
}

void CAttendMISDlg::OnChangeEditPeridOvertime() 
{
	if(!UpdateData())
		return;
	m_strPerNameOT = "";
	CString sql;
	//获取姓名信息
	sql.Format("select name from person_info_tab where personid = '%s'",m_strPerIDOT);
	g_odbcDB.ExecuteQueryValue(sql,m_strPerNameOT);
	UpdateData(FALSE);	
}

void CAttendMISDlg::OnBtnAttAdd() 
{
	// TODO: Add your control notification handler code here
	if(!UpdateData())
		return;
	if(m_strPerNameAtt.IsEmpty()){
		AfxMessageBox("没有此职员");
		return;
	}
	//构造出勤时间
	CString strDate = m_dtIODate.Format("%Y-%m-%d") 
		+ " " + m_dtIOTime.Format("%H:%M:%S");
	CString sql;
    //打开数据库,获取最大的系列ID
	CString strID ;
	//获取最大的ID
	g_odbcDB.ExecuteQueryValue("Select max(id) from attend_info_tab",strID);
	int attID = atoi(strID)+1;
    //插入新的记录. 
	sql.Format("Insert into attend_info_tab(id,"
		"personid,in_out,io_time)"
		" values("
		"%d,'%s',%d,to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
		attID,m_strPerIDAtt,m_bInChecked,strDate);
	TRACE(sql);
	g_odbcDB.ExecuteSQL(sql);
	//向出勤列表框控件中添加一条新的记录信息.
	InsertDataToList(m_listAtt,Int2Str(attID),m_strPerIDAtt,m_strPerNameAtt,
		m_bInChecked==1?"上班":"下班",strDate);	
}

void CAttendMISDlg::OnBtnAttDel() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_listAtt.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的信息");
		return;
	}
	CString strID = m_listAtt.GetItemText(nItem,0);
	CString deletedSql;
	//删除信息
	deletedSql.Format("delete from attend_info_tab where id = %d",atoi(strID));
	g_odbcDB.ExecuteSQL(deletedSql);
	//从界面中删除记录信息.
	m_listAtt.DeleteItem(nItem);	
}

void CAttendMISDlg::OnBtnAttQuery() 
{
	// TODO: Add your control notification handler code here
	m_listAtt.DeleteAllItems();
	CDStrs attFields;	
	CString sql;
	//打开所有的出勤信息
	sql.Format("select a.id,a.personid,b.name,IN_OUT,IO_TIME "
		"from attend_info_tab a, person_info_tab b "
		"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDAtt);
	g_odbcDB.ExecuteQuery(sql,attFields);
	for(int i = 0 ; i < attFields.size() ; i++)
	{
		CStrs strs = attFields[i];
		InsertDataToList(m_listAtt,strs[0],strs[1],strs[2],
			atoi(strs[3])==1?"上班":"下班",strs[4]);	
	}
}

void CAttendMISDlg::OnBtnAttStat() 
{
	// TODO: Add your control notification handler code here
	CDlgStat dlg;
	//给对话框赋初始值	
	dlg.m_dtAMStart = m_dtAMStart;
	dlg.m_dtAMEnd = m_dtAMEnd;
	dlg.m_dtPMStart = m_dtPMStart;
	dlg.m_dtPMEnd = m_dtPMEnd;
	//打开数据库对话框
	dlg.DoModal();	
}

void CAttendMISDlg::OnBtnOtAdd() 
{
	// TODO: Add your control notification handler code here
	if(!UpdateData())
		return;
	if(m_strPerNameOT.IsEmpty()){
		AfxMessageBox("没有此职员");
		return;
	}
	//构造加班日期
	CString strDate = m_dtIODate.Format("%Y-%m-%d");
	//打开数据库,获取最大的系列ID
	CString strID ;
	//获取最大的ID
	g_odbcDB.ExecuteQueryValue("Select max(id) from overtime_info_tab",strID);
	int otID = atoi(strID)+1;
    //插入新的记录. 
	CString strOTHour;
	strOTHour.Format("%3.1f",m_fOTHour);
	CString sql;
	sql.Format("Insert into overtime_info_tab(id,"
		"personid,ot_hours,ot_date)"
		" values("
		"%d,'%s',%s,to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
		otID,m_strPerIDOT,strOTHour,strDate);
	TRACE(sql);
	g_odbcDB.ExecuteSQL(sql);
	//向列表框控件添加一条新的记录信息.
	InsertDataToList(m_listOT,Int2Str(otID),m_strPerIDOT,m_strPerNameOT,
		strOTHour,strDate);				
}

void CAttendMISDlg::OnBtnOtDel() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_listOT.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的信息");
		return;
	}
	CString strID = m_listOT.GetItemText(nItem,0);
	CString deletedSql;
	//删除信息
	deletedSql.Format("delete from overtime_info_tab where id = %d",atoi(strID));
	g_odbcDB.ExecuteSQL(deletedSql);
	//从界面中删除记录信息.
	m_listOT.DeleteItem(nItem);
}

void CAttendMISDlg::OnBtnOtQuery() 
{
	m_listOT.DeleteAllItems();
	CDStrs otFields;
	CString sql;
	//打开所有的加班信息
	sql.Format("select a.id,a.personid,b.name,work_hours,work_date "
		"from overtime_info_tab a, person_info_tab b "
		"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDOT);
	g_odbcDB.ExecuteQuery(sql,otFields);
	for(int i = 0 ; i < otFields.size() ; i++)
	{
		CStrs strs = otFields[i];
		InsertDataToList(m_listOT,strs[0],strs[1],strs[2],
			strs[3],strs[4].Left(10));			
	}
}

void CAttendMISDlg::OnBtnLeaveAdd() 
{
	// TODO: Add your control notification handler code here
	if(!UpdateData())
		return;
	if(m_strPerNameLeave.IsEmpty()){
		AfxMessageBox("没有此职员");
		return;
	}
	//构造请假时间
	CString strStartDT = m_dtLeStartDate.Format("%Y-%m-%d") 
		+ " " + m_dtLeStartTime.Format("%H:%M:%S");
	CString strEndDT = m_dtLeEndDate.Format("%Y-%m-%d") 
		+ " " + m_dtLeEndTime.Format("%H:%M:%S");
	//打开数据库,获取最大的系列ID
	CString strID ;
	//获取最大的ID
	g_odbcDB.ExecuteQueryValue("Select max(id) from leave_info_tab",strID);
	int leID = atoi(strID)+1;
	
   //插入新的记录. 
	CString sql;
	sql.Format("Insert into leave_info_tab(id,"
		"personid,start_time,end_time)"
		" values("
		"%d,'%s',to_date('%s','yyyy-mm-dd hh24:mi:ss'),"
		"to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
		leID,m_strPerIDLeave,strStartDT,strEndDT);
	TRACE(sql);
	g_odbcDB.ExecuteSQL(sql);
	//向列表框控件添加一条新的记录信息.
	InsertDataToList(m_listLeave,Int2Str(leID),m_strPerIDLeave,m_strPerNameLeave,
		strStartDT,strEndDT);			
}

void CAttendMISDlg::OnBtnLeaveDel() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_listLeave.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的信息");
		return;
	}
	CString strID = m_listLeave.GetItemText(nItem,0);
	CString deletedSql;
	//删除设信息
	deletedSql.Format("delete from leave_info_tab where id = %d",atoi(strID));
	g_odbcDB.ExecuteSQL(deletedSql);
	//从界面中删除记录信息.
	m_listLeave.DeleteItem(nItem);	
}

void CAttendMISDlg::OnBtnLeaveQuery() 
{
	// TODO: Add your control notification handler code here
	m_listLeave.DeleteAllItems();
	
	CDStrs leFields;
	//打开所有的请假信息记录.
	CString sql;
	sql.Format("select a.id,a.personid,b.name,start_time,end_time "
		"from leave_info_tab a, person_info_tab b "
		"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDLeave);
	g_odbcDB.ExecuteQuery(sql,leFields);
	for(int i = 0 ; i < leFields.size() ; i++)
	{
		CStrs strs = leFields[i];
		InsertDataToList(m_listLeave,strs[0],strs[1],strs[2],
			strs[3],strs[4]);			
	}
}

void CAttendMISDlg::OnBtnErrandAdd() 
{
	// TODO: Add your control notification handler code here
	if(!UpdateData())
		return;
	if(m_strPerNameErrand.IsEmpty()){
		AfxMessageBox("没有此职员");
		return;
	}
	//构造出差时间
	CString strStartDT = m_dtErStartDate.Format("%Y-%m-%d") 
		+ " " + m_dtErStartTime.Format("%H:%M:%S");
	CString strEndDT = m_dtErEndDate.Format("%Y-%m-%d") 
		+ " " + m_dtErEndTime.Format("%H:%M:%S");
	//打开数据库,获取最大的系列ID
	CString strID ;
	//获取最大的ID
	g_odbcDB.ExecuteQueryValue("Select max(id) from errand_info_tab",strID);
	int erID = atoi(strID)+1;
    //插入新的记录. 
	CString sql;
	sql.Format("Insert into errand_info_tab(id,"
		"personid,start_time,end_time)"
		" values("
		"%d,'%s',to_date('%s','yyyy-mm-dd hh24:mi:ss'),"
		"to_date('%s','yyyy-mm-dd hh24:mi:ss'))",
		erID,m_strPerIDErrand,strStartDT,strEndDT);
	TRACE(sql);
	g_odbcDB.ExecuteSQL(sql);
	//向列表框控件添加一条新的记录信息.
	InsertDataToList(m_listErrand,Int2Str(erID),m_strPerIDErrand,m_strPerNameErrand,
		strStartDT,strEndDT);	
}

void CAttendMISDlg::OnBtnErrandDel() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_listErrand.GetNextItem(-1, LVNI_SELECTED);
	//如果没有选择要修改的纪录,返回.
	if(nItem == -1){
		AfxMessageBox("没有选择要修改的信息");
		return;
	}
	CString strID = m_listErrand.GetItemText(nItem,0);
	CString deletedSql;
	//删除信息
	deletedSql.Format("delete from errand_info_tab where id = %d",atoi(strID));
	g_odbcDB.ExecuteSQL(deletedSql);
	//从界面中删除记录信息.
	m_listErrand.DeleteItem(nItem);
}

void CAttendMISDlg::OnBtnErrandQuery() 
{
	// TODO: Add your control notification handler code here
	CDStrs errFields;
	//获取收入类型数据
	//打开所有的出勤信息记录.
	CString sql;
	sql.Format("select a.id,a.personid,b.name,start_time,end_time "
		"from errand_info_tab a, person_info_tab b "
		"where a.personid=b.personid and a.personid = '%s' order by a.id",m_strPerIDErrand);
	g_odbcDB.ExecuteQuery(sql,errFields);
	for(int i = 0 ; i < errFields.size() ; i++)
	{
		CStrs strs = errFields[i];
		InsertDataToList(m_listAtt,strs[0],strs[1],strs[2],
			strs[3],strs[4]);			
	}
}

void CAttendMISDlg::OnBtnPersonAdd() 
{
	// TODO: Add your control notification handler code here
	CPersonDlg dlg;
	//打开人员对话框
	if(dlg.DoModal() == IDOK){
		CString strPersonID = dlg.m_strPersonID;
		CString strName= dlg.m_strName;
		CString strDept = dlg.m_strDept;
		//打开数据库,获取最大的系列ID
		CString strID ;
		//获取最大的ID
		g_odbcDB.ExecuteQueryValue("Select max(id) from person_info_tab",strID);
		int sID = atoi(strID)+1;
		//插入新的记录. 
		CString sql;
		sql.Format("Insert into person_info_tab(id,"
			"personid,name,department)"
			" values("
			"%d,'%s','%s','%s')",
			sID,strPersonID,strName,strDept);
		TRACE(sql);
		g_odbcDB.ExecuteSQL(sql);
	}
}

⌨️ 快捷键说明

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