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

📄 employeelist.cpp

📁 人事管理系统
💻 CPP
字号:
// EmployeeList.cpp : implementation file
//

#include "stdafx.h"
#include "PersonelManage.h"
#include "EmployeeList.h"

#include "QueryEmpDlg.h"
#include "ModifyEmpInfoDlg.h"

#include "ado.h"

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

//extern CPersonelManageApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CEmployeeList property page

IMPLEMENT_DYNCREATE(CEmployeeList, CResizablePage)

CEmployeeList::CEmployeeList() : CResizablePage(CEmployeeList::IDD)
{
	//{{AFX_DATA_INIT(CEmployeeList)
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= (~PSP_HASHELP);
	m_psp.dwFlags |= ( PSP_USEHICON );
	HICON hIconTab = AfxGetApp()->LoadIcon(IDI_PERSON);
	m_psp.hIcon = hIconTab;
}

CEmployeeList::~CEmployeeList()
{
}

void CEmployeeList::DoDataExchange(CDataExchange* pDX)
{
	CResizablePage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEmployeeList)
	DDX_Control(pDX, IDC_LIST_EMPLOYEE, m_ctrlEmpList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEmployeeList, CResizablePage)
	//{{AFX_MSG_MAP(CEmployeeList)
	ON_WM_CTLCOLOR()
	ON_NOTIFY(NM_RCLICK, IDC_LIST_EMPLOYEE, OnRclickListEmployee)
	ON_COMMAND(ID_EMPLIST_ADD, OnEmplistAdd)
	ON_COMMAND(ID_EMPLIST_DEL, OnEmplistDel)
	ON_COMMAND(ID_EMPLIST_QUERYEMP, OnEmplistQueryemp)
	ON_BN_CLICKED(IDC_BUTTON_MODIFYEMP, OnButtonModifyemp)
	ON_BN_CLICKED(IDC_BUTTON_DELEMP, OnButtonDelemp)
	ON_BN_CLICKED(IDC_BUTTON_QUERYEMP, OnButtonQueryemp)
	ON_BN_CLICKED(IDC_BUTTON_REFRESH, OnButtonRefresh)
	ON_COMMAND(ID_EMPLIST_MODEMP, OnEmplistModemp)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEmployeeList message handlers

BOOL CEmployeeList::OnInitDialog() 
{
	CResizablePage::OnInitDialog();
	
	// TODO: Add extra initialization here
	AddAnchor(IDC_LIST_EMPLOYEE, TOP_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_BUTTON_MODIFYEMP, TOP_LEFT);
	AddAnchor(IDC_BUTTON_DELEMP, TOP_CENTER);
	AddAnchor(IDC_BUTTON_QUERYEMP, TOP_CENTER);
	AddAnchor(IDC_BUTTON_REFRESH, TOP_RIGHT);

	DWORD dwStyle = m_ctrlEmpList.GetExtendedStyle();
	dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
	m_ctrlEmpList.SetExtendedStyle(dwStyle);

	//添加列
	m_ctrlEmpList.InsertColumn(0, "EmployeeID", LVCFMT_LEFT, 64);
	m_ctrlEmpList.InsertColumn(1, "Name", LVCFMT_LEFT, 64);
	m_ctrlEmpList.InsertColumn(2, "LoginName", LVCFMT_LEFT, 64);
	m_ctrlEmpList.InsertColumn(3, "Email", LVCFMT_LEFT, 128);
	m_ctrlEmpList.InsertColumn(4, "DeptID", LVCFMT_LEFT, 64);
	m_ctrlEmpList.InsertColumn(5, "BasicSalary", LVCFMT_LEFT, 64);
	m_ctrlEmpList.InsertColumn(6, "Title", LVCFMT_LEFT, 128);
	m_ctrlEmpList.InsertColumn(7, "Telephone", LVCFMT_LEFT, 64);
	m_ctrlEmpList.InsertColumn(8, "OnboardDate", LVCFMT_LEFT, 128);
	m_ctrlEmpList.InsertColumn(9, "SelfIntro", LVCFMT_LEFT, 128);
	m_ctrlEmpList.InsertColumn(10, "VacationRemain", LVCFMT_LEFT, 64);
	m_ctrlEmpList.InsertColumn(11, "EmployeeLevel", LVCFMT_LEFT, 64);

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

HBRUSH CEmployeeList::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	// TODO: Change any attributes of the DC here
	if( HasWhiteBackground() )
	{
		pDC->SetBkMode(TRANSPARENT);
		return ::GetSysColorBrush( COLOR_WINDOW );
	}

	return  CResizablePage::OnCtlColor(pDC, pWnd, nCtlColor);
}

//查询数据库获得员工信息,填充列表
void CEmployeeList::GetEmpList()
{
	CString strQuery = "SELECT [EmployeeID],[Name],[LoginName],[Email],[DeptID],[BasicSalary],\
		[Title],[Telephone],[OnboardDate],[SelfIntro],[VacationRemain]\
      ,[EmployeeLevel] FROM [BlueHill].[dbo].[tblEmployee]";
	CString strEmployeeID;
	CString strName;
	CString strLoginName;
	CString strEmail;
	CString nDeptID;
	CString nBasicSalary;
	CString strTitle;
	CString strTelephone;
	CString strOnboardDate;
	CString strSelfIntro;
	CString nVacationRemain;
	CString nEmployeeLevel;


	CADODatabase *pDb = new CADODatabase;
	try
	{
		if(pDb->Open())
		{
			CADORecordset *pRs = new CADORecordset(pDb);
			if(pRs->Open(strQuery, CADORecordset::openQuery))
			{
				m_ctrlEmpList.DeleteAllItems();

				int cur = 0;
				while(!pRs->IsEOF())
				{
					pRs->GetFieldValue("EmployeeID", strEmployeeID);
					m_ctrlEmpList.InsertItem(cur, strEmployeeID);
					pRs->GetFieldValue("Name", strName);
					m_ctrlEmpList.SetItemText(cur, 1, strName);
					pRs->GetFieldValue("LoginName", strLoginName);
					m_ctrlEmpList.SetItemText(cur, 2, strLoginName);
					pRs->GetFieldValue("Email", strEmail);
					m_ctrlEmpList.SetItemText(cur, 3, strEmail);
					pRs->GetFieldValue("DeptID", nDeptID);
					m_ctrlEmpList.SetItemText(cur, 4, nDeptID);
					pRs->GetFieldValue("BasicSalary", nBasicSalary);
					m_ctrlEmpList.SetItemText(cur, 5, nBasicSalary);
					pRs->GetFieldValue("Title", strTitle);
					m_ctrlEmpList.SetItemText(cur, 6, strTitle);
					pRs->GetFieldValue("Telephone", strTelephone);
					m_ctrlEmpList.SetItemText(cur, 7, strTelephone);
					pRs->GetFieldValue("OnboardDate", strOnboardDate);
					m_ctrlEmpList.SetItemText(cur, 8, strOnboardDate);
					pRs->GetFieldValue("SelfIntro", strSelfIntro);
					m_ctrlEmpList.SetItemText(cur, 9, strSelfIntro);
					pRs->GetFieldValue("VacationRemain", nVacationRemain);
					m_ctrlEmpList.SetItemText(cur, 10, nVacationRemain);
					pRs->GetFieldValue("EmployeeLevel", nEmployeeLevel);
					m_ctrlEmpList.SetItemText(cur, 11, nEmployeeLevel);

					cur++;
					pRs->MoveNext();
				}
				pRs->Close();
			}
			delete pRs;
			pDb->Close();
		}
		delete pDb;
	}
	catch(CADOException)
	{
	}
}

void CEmployeeList::OnRclickListEmployee(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CMenu menu, *pSubMenu;
	menu.LoadMenu(IDR_EMPLIST_POPUP);
	pSubMenu = menu.GetSubMenu(0);
	CPoint curPoint;
	GetCursorPos(&curPoint);
	pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, curPoint.x, curPoint.y, this);
	
	*pResult = 0;
}

void CEmployeeList::OnEmplistAdd() 
{
	// TODO: Add your command handler code here
	
}

void CEmployeeList::OnEmplistDel() 
{
	// TODO: Add your command handler code here
	OnButtonDelemp();
}

void CEmployeeList::OnEmplistQueryemp() 
{
	// TODO: Add your command handler code here
	OnButtonQueryemp();	
}

void CEmployeeList::OnButtonModifyemp() 
{
	// TODO: Add your control notification handler code here
	CModifyEmpInfoDlg modify;
	CString strEmpID;
	int nItem = m_ctrlEmpList.GetNextItem(-1, LVIS_SELECTED);
	if(nItem != -1)
	{
		strEmpID = m_ctrlEmpList.GetItemText(nItem, 0);
		strEmpID.TrimRight();
		modify.m_strEmpID = strEmpID;
		modify.DoModal();
	}
	else
		AfxMessageBox("请选择一条数据!");
	
}

void CEmployeeList::OnButtonDelemp() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_ctrlEmpList.GetNextItem(-1, LVIS_SELECTED);
	if(nItem != -1)
	{
		if(AfxMessageBox("确定要删除这条记录吗?", MB_YESNO | MB_ICONSTOP) == IDNO)
			return;
		CString cmdText, empID;
		empID = m_ctrlEmpList.GetItemText(nItem, 0);
		empID.TrimRight();
		cmdText.Format("DELETE FROM [tblEmployee] WHERE EmployeeID = %s", empID);

		CADODatabase *pAdoDb = new CADODatabase();				
		if(pAdoDb->Open())
		{
			CADOCommand pCmd(pAdoDb, cmdText, CADOCommand::typeCmdText);
			if(pCmd.Execute(CADOCommand::typeCmdText))
			{
				m_ctrlEmpList.DeleteItem(nItem);
				MessageBox("已成功删除记录!");
			}
		}
		pAdoDb->Close();
		delete pAdoDb;
	}
	else
		AfxMessageBox("请选择一条数据!");
	
}

void CEmployeeList::OnButtonQueryemp() 
{
	// TODO: Add your control notification handler code here
	CString query = "SELECT [EmployeeID],[Name],[LoginName],[Email],[DeptID],[BasicSalary],[Title],[Telephone],[OnboardDate],[SelfIntro],[VacationRemain],[EmployeeLevel] FROM [tblEmployee]";

	CString strEmployeeID;
	CString strName;
	CString strLoginName;
	CString strEmail;
	CString nDeptID;
	CString nBasicSalary;
	CString strTitle;
	CString strTelephone;
	CString strOnboardDate;
	CString strSelfIntro;
	CString nVacationRemain;
	CString nEmployeeLevel;

	CString searchName, searchEmail, searchStrDeptID;
	long searchDeptID;

	CQueryEmpDlg queryEmp;
	if(queryEmp.DoModal() == IDOK)
	{
		searchName = queryEmp.m_strName;
		searchEmail = queryEmp.m_strEmail;
		searchDeptID = queryEmp.m_nSelDeptID;
		searchStrDeptID.Format("%d", searchDeptID);

		//得到查询串
		if(strName.GetLength() > 0)
		{
			query += " WHERE Name = '" + searchName + "' ";
			if(strEmail.GetLength() > 0)
				query += " AND Email = '" + searchEmail + "' ";
			if(searchDeptID != -1)
				query += " AND DeptID = " + searchStrDeptID;
		}
		else if(searchEmail.GetLength() > 0)
		{
			query += " WHERE Email = '" + searchEmail + "' ";
			if(searchDeptID != -1)
				query += " AND DeptID = " + searchStrDeptID;
		}
		else if(searchDeptID != -1)
			query += " WHERE DeptID = " + searchStrDeptID;
		////////////////////////////////////////////////////
		CADODatabase *pDb = new CADODatabase;
		try
		{
			if(pDb->Open())
			{
				CADORecordset *pRs = new CADORecordset(pDb);
				if(pRs->Open(query, CADORecordset::openQuery))
				{
					if(pRs->GetRecordCount() > 0)
					{
						m_ctrlEmpList.DeleteAllItems();

						int cur = 0;
						while(!pRs->IsEOF())
						{
							pRs->GetFieldValue("EmployeeID", strEmployeeID);
							m_ctrlEmpList.InsertItem(cur, strEmployeeID);
							pRs->GetFieldValue("Name", strName);
							m_ctrlEmpList.SetItemText(cur, 1, strName);
							pRs->GetFieldValue("LoginName", strLoginName);
							m_ctrlEmpList.SetItemText(cur, 2, strLoginName);
							pRs->GetFieldValue("Email", strEmail);
							m_ctrlEmpList.SetItemText(cur, 3, strName);
							pRs->GetFieldValue("DeptID", nDeptID);
							m_ctrlEmpList.SetItemText(cur, 4, nDeptID);
							pRs->GetFieldValue("BasicSalary", nBasicSalary);
							m_ctrlEmpList.SetItemText(cur, 5, nBasicSalary);
							pRs->GetFieldValue("Title", strTitle);
							m_ctrlEmpList.SetItemText(cur, 6, strTitle);
							pRs->GetFieldValue("Telephone", strTelephone);
							m_ctrlEmpList.SetItemText(cur, 7, strTelephone);
							pRs->GetFieldValue("OnboardDate", strOnboardDate);
							m_ctrlEmpList.SetItemText(cur, 8, strOnboardDate);
							pRs->GetFieldValue("SelfIntro", strSelfIntro);
							m_ctrlEmpList.SetItemText(cur, 9, strSelfIntro);
							pRs->GetFieldValue("VacationRemain", nVacationRemain);
							m_ctrlEmpList.SetItemText(cur, 10, nVacationRemain);
							pRs->GetFieldValue("EmployeeLevel", nEmployeeLevel);
							m_ctrlEmpList.SetItemText(cur, 11, nEmployeeLevel);

							cur++;
							pRs->MoveNext();
						}
					}
					else
						AfxMessageBox("未得到任何信息!");
					pRs->Close();
				}
				delete pRs;
				pDb->Close();
			}
			delete pDb;
		}
		catch(CADOException)
		{
		}
	}	
}

void CEmployeeList::OnButtonRefresh() 
{
	// TODO: Add your control notification handler code here
	GetEmpList();
}

void CEmployeeList::OnEmplistModemp() 
{
	// TODO: Add your command handler code here
	OnButtonModifyemp();
	
}

⌨️ 快捷键说明

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