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

📄 assesslist.cpp

📁 人力资源管理系统
💻 CPP
字号:
// AssessList.cpp : implementation file
//

#include "stdafx.h"
#include "hrms.h"
#include "AssessList.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAssessList dialog


CAssessList::CAssessList(CWnd* pParent /*=NULL*/)
	: CDialog(CAssessList::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAssessList)
	//}}AFX_DATA_INIT
	m_CurSel = -1;
	m_pNMListView = NULL;
}


void CAssessList::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAssessList)
	DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAssessList, CDialog)
	//{{AFX_MSG_MAP(CAssessList)
	ON_BN_CLICKED(IDC_EXPORTTOWORD, OnExporttoword)
	ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
	ON_COMMAND(IDM_DELETEITEM, OnDeleteitem)
	ON_COMMAND(IDM_ABOUT, OnAbout)
	ON_COMMAND(IDM_QUIT, OnQuit)
	ON_COMMAND(IDM_SEARCH_RECORD, OnSearchRecord)
	ON_COMMAND(ID_FIND_EMPLOYEE, OnFindEmployee)
	ON_MESSAGE(UM_LISTEDIT_KILLFOCUS, OnListEditKillFocus)
	ON_MESSAGE(UM_LISTEDIT_DBCLICK, OnListEditDBClick)
	ON_COMMAND(IDM_EDIT, OnEdit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAssessList message handlers

BOOL CAssessList::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_hAccel = ::LoadAccelerators(::AfxGetInstanceHandle(),
		MAKEINTRESOURCE(IDR_ACCELERATOR1));
	m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT
		| LVS_EX_ONECLICKACTIVATE
		| LVS_EX_GRIDLINES );
	
	m_ListCtrl.InsertColumn(0, "日期(年)", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(1, "日期(月)", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(2, "编号", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(3, "姓名", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(4, "部门", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(5, "职位", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(6, "工作态度", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(7, "业绩评估", LVCFMT_LEFT, 80);
	m_ListCtrl.InsertColumn(8, "能力评介", LVCFMT_LEFT, 80);
	ShowAssessList();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


BOOL CAssessList::SetRow(int row, CString *strArray, int count)
{

	m_ListCtrl.InsertItem(row, strArray[0], 0);
	for(int i=1; i<count; i++)
		m_ListCtrl.SetItemText(row, i, strArray[i]);

	return TRUE;
}

BOOL CAssessList::DeleteAllRows()
{
	m_ListCtrl.DeleteAllItems();
	return TRUE;
}

BOOL CAssessList::ShowAssessList()
{
	CADOOperation list;
	CString fields[] = {"dateyear", "datemonth", "id", "name", "dept", "duty",
		"mannerofwork", "ability", "efficiency"};

	list.OpenRecordset("\
						  select tb_assess.assess_dateyear as dateyear, tb_assess.assess_datemonth as datemonth, \
						  tb_assess.employee_id as id, tb_employee.employee_name as name, tb_dept.dept_name as dept, \
						  tb_dept_duty.duty_name as duty, tb_assess.assess_mannerofwork as mannerofwork,\
						  tb_assess.assess_ability as ability, tb_assess.assess_efficiency as efficiency\
						  from tb_assess, tb_employee, tb_dept, tb_dept_duty\
						  where tb_employee.employee_id = tb_assess.employee_id\
						  and tb_employee.employee_dept = tb_dept.dept_id\
						  and tb_employee.employee_duty = tb_dept_duty.duty_id");
	list.ShowADOView(fields, 9, this);
	list.CloseRecorset();

	return TRUE;
}

void CAssessList::OnExporttoword() 
{
	// TODO: Add your control notification handler code here
	SYSTEMTIME sysTime;
	::GetSystemTime(&sysTime);
	CString str;
	str.Format("%d-%d-%d", sysTime.wYear, sysTime.wMonth, sysTime.wDay);
	CFileDialog file(FALSE, ".doc", str,
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Word 文件(*.doc) | .doc||", NULL);
	if(IDOK != file.DoModal())
		return ;

	str = file.GetPathName();
	ExportToWord(str);
}

BOOL CAssessList::ExportToWord(CString &file)
{

	CADOOperation ado;

	ado.OpenRecordset("\
						 select tb_assess.assess_dateyear as 年份, tb_assess.assess_datemonth as 月份, \
						 tb_assess.employee_id as 员工编号, tb_employee.employee_name as 姓名, \
						 tb_dept.dept_name as 部门, \
						 tb_dept_duty.duty_name as 职务, tb_assess.assess_mannerofwork as 工作态度,\
						 tb_assess.assess_ability as 工作能力, tb_assess.assess_efficiency as 工作业绩\
						 from tb_assess, tb_employee, tb_dept, tb_dept_duty\
						 where tb_employee.employee_id = tb_assess.employee_id\
						 and tb_employee.employee_dept = tb_dept.dept_id\
						 and tb_employee.employee_duty = tb_dept_duty.duty_id");

	ado.ExportToWord(file);
	ado.CloseRecorset();

	return TRUE;
}

void CAssessList::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_CurSel = ((LPNMLISTVIEW)pNMHDR)->iItem;
	if(m_CurSel < 0)
		goto end;
	m_pNMListView = (LPNMLISTVIEW)pNMHDR;
	POINT pt;
	::GetCursorPos(&pt);
	ShowItemMenu(G_IsLanded, pt.x, pt.y, this);
end:
	*pResult = 0;
}

void CAssessList::OnDeleteitem() 
{
	// TODO: Add your command handler code here
	if(!::G_IsLanded)
	{
		MessageBox("请登陆!");
		return;
	}
	CADOOperation ado;
	ado.OpenTable("tb_assess");
	ado.DeleteItem(m_CurSel);
	ado.CloseTable();
	ShowAssessList();

	m_CurSel = -1;
}

void CAssessList::OnAbout() 
{
	// TODO: Add your command handler code here
	CDialog about(IDD_ABOUTBOX);
	about.DoModal();
}

void CAssessList::OnQuit() 
{
	// TODO: Add your command handler code here
	EndDialog(0);
}

void CAssessList::OnSearchRecord() 
{
	// TODO: Add your command handler code here
	OnFindEmployee();
}

BOOL CAssessList::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(NULL != m_hAccel)
	{
		if(::TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
			return TRUE;
	}
	return CDialog::PreTranslateMessage(pMsg);
}

void CAssessList::OnFindEmployee() 
{
	// TODO: Add your command handler code here
	CAssessSearchDlg dlg;
	CString seaExpr;
	if(IDOK == dlg.DoModal())
	{
		seaExpr = dlg.GetSearchExpression();
		ShowAssessList(seaExpr);
	}
}

BOOL CAssessList::ShowAssessList(CString &seaExpr)
{

	CADOOperation list;
	CString sql;
	CString fields[] = {"dateyear", "datemonth", "id", "name", "dept", "duty",
		"mannerofwork", "ability", "efficiency"};
	sql.Format("\
				  select tb_assess.assess_dateyear as dateyear, tb_assess.assess_datemonth as datemonth, \
				  tb_assess.employee_id as id, tb_employee.employee_name as name, tb_dept.dept_name as dept, \
				  tb_dept_duty.duty_name as duty, tb_assess.assess_mannerofwork as mannerofwork,\
				  tb_assess.assess_ability as ability, tb_assess.assess_efficiency as efficiency\
				  from tb_assess, tb_employee, tb_dept, tb_dept_duty\
				  where tb_employee.employee_id = tb_assess.employee_id\
				  and tb_employee.employee_dept = tb_dept.dept_id\
				  and tb_employee.employee_duty = tb_dept_duty.duty_id and %s", seaExpr);
	PRINTRESULT(sql);
	list.OpenRecordset(sql);
	list.ShowADOView(fields, 9, this);
	list.CloseRecorset();

	return TRUE;
}

LRESULT CAssessList::OnListEditKillFocus(WPARAM wParam, LPARAM lParam)
{
	SaveModify(wParam, lParam);
	return 0;
}

LRESULT CAssessList::OnListEditDBClick(WPARAM wParam, LPARAM lParam)
{
	LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)wParam;
	m_pNMListView = lpnmlv;
	if(!::G_IsLanded)
	{
		m_ListCtrl.ShowEditBox(FALSE, lpnmlv->iItem, lpnmlv->iSubItem);
		return 0;
	}
	if(lpnmlv->iSubItem == 0 || lpnmlv->iSubItem == 1 || lpnmlv->iSubItem == 2)
		m_ListCtrl.ShowEditBox(FALSE, NULL);

	return 0;
}

BOOL CAssessList::SaveModify(int iItem, int subItem)
{
	CString sql;
	CADOOperation ado;
	if(subItem < 3)
		return TRUE;

	switch(subItem)
	{
	case 3:		//姓名
		{
			CString name, id;
			name = m_ListCtrl.GetItemText(iItem, subItem);
			id = m_ListCtrl.GetItemText(iItem, 2);
			sql.Format("update tb_employee set employee_name = '%s' where employee_id = '%s'", name, id);
		}
		break;
	case 4:		//部门
		{
			CString id, dept;
			DWORD deptSerial = -1;
			id = m_ListCtrl.GetItemText(iItem, 2);
			dept = m_ListCtrl.GetItemText(iItem, subItem);
			deptSerial = CFileRecord::GetDeptNumber(dept);
			if(deptSerial <=0 )
			{
				MessageBox("请确认该部门的存在!");
				return FALSE;
			}
			sql.Format("update tb_employee set employee_dept = %d where employee_id = '%s'", deptSerial, id);
		}
		break;
	case 5://职务
		{
			CString id, duty;
			DWORD dutySerial = -1;
			id = m_ListCtrl.GetItemText(iItem, 2);
			duty = m_ListCtrl.GetItemText(iItem, subItem);
			dutySerial = CFileRecord::GetDutyNumber(duty);
			if(dutySerial <= 0)
			{
				MessageBox("请确认该职位的存在!");
				return FALSE;
			}
			sql.Format("update tb_employee set employee_duty = %d where employee_id = '%s'", dutySerial, id);
		}
		break;
	case 6:case 7: case 8:		//工作态度
		{
			CString id;
			int y, m;
			float attWork, evaWork, scoWork;
			attWork = (float)atof(m_ListCtrl.GetItemText(iItem, 6));
			evaWork = (float)atof(m_ListCtrl.GetItemText(iItem, 7));
			scoWork = (float)atof(m_ListCtrl.GetItemText(iItem, 8));
			id = m_ListCtrl.GetItemText(iItem, 2);
			y = atoi(m_ListCtrl.GetItemText(iItem, 0));
			m = atoi(m_ListCtrl.GetItemText(iItem, 1));
			sql.Format("update tb_assess set assess_mannerofwork = %f,\
				assess_efficiency = %f,assess_ability = %f \
				where employee_id = '%s' and assess_dateyear = %d and \
				assess_datemonth = %d", attWork, evaWork, scoWork, id, y, m);
			PRINTRESULT(sql);
		}
		break;
	default:
		return FALSE;
	}
	ado.OpenRecordset(sql);
	ado.CloseRecorset();
	return TRUE;
}

void CAssessList::OnEdit() 
{
	// TODO: Add your command handler code her
	if(!::G_IsLanded)
	{
		MessageBox("请登陆!");
		return ;
	}
	if(NULL != m_pNMListView)
	{
		if(m_pNMListView->iSubItem >= 3)
		{
			m_ListCtrl.ShowEditBox(TRUE, m_pNMListView->iItem, m_pNMListView->iSubItem);
			m_pNMListView = NULL;
		}
	}
}

⌨️ 快捷键说明

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