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

📄 kaoqindlg.cpp

📁 这是采用mfc编写的工资管理系统
💻 CPP
字号:
// KaoqinDlg.cpp : implementation file
//

#include "stdafx.h"
#include "salarymanagement.h"
#include "KaoqinDlg.h"
#include "MyTab.h"
#include "USkin.h"
#include "ADOConn.h"

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

/////////////////////////////////////////////////////////////////////////////
// CKaoqinDlg dialog
//静态变量初始化
CString CKaoqinDlg::m_nIDSelect="";
CString CKaoqinDlg::s_SQL="";
BOOL CKaoqinDlg::s_bRefresh=FALSE;

CKaoqinDlg::CKaoqinDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CKaoqinDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CKaoqinDlg)
	m_nID = _T("");
	m_bUpdate = FALSE;
	m_bDelete = FALSE;
	m_bAddNew = FALSE;
	//}}AFX_DATA_INIT

	m_isAll=TRUE;
	m_ado.OnInitADOConn();
}

CKaoqinDlg::~CKaoqinDlg()
{
	m_ado.ExitConnect();
}

void CKaoqinDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CKaoqinDlg)
	DDX_Control(pDX, IDC_LIST, m_list);
	DDX_Control(pDX, IDC_TAB1, m_tab);
	DDX_Text(pDX, IDC_ID, m_nID);
	DDX_Check(pDX, IDC_CHECK1, m_bUpdate);
	DDX_Check(pDX, IDC_CHECK2, m_bDelete);
	DDX_Check(pDX, IDC_CHECK3, m_bAddNew);
	DDX_Control(pDX, IDC_DATAGRID1, m_dataGrid);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CKaoqinDlg, CDialog)
	//{{AFX_MSG_MAP(CKaoqinDlg)
	ON_WM_DESTROY()
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
	ON_BN_CLICKED(IDC_SEARCH, OnSearch)
	ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
	ON_BN_CLICKED(IDC_CHECK1, OnUpdate)
	ON_BN_CLICKED(IDC_CHECK2, OnDelete)
	ON_BN_CLICKED(IDC_CHECK3, OnAddNew)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CKaoqinDlg message handlers
extern CSalaryManagementApp theApp;

BOOL CKaoqinDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CString str=theApp.m_CurrentDirectory+"\\Skin\\2.u3";
	USkinLoadSkin(str);

	CenterWindow(CWnd::GetDesktopWindow());

	m_tab.SetIndex(1);
	m_tab.InsertItem(0,"考勤统计");
	m_tab.InsertItem(1,"出差");
	m_tab.InsertItem(2,"出勤");
	m_tab.InsertItem(3,"加班");
	m_tab.InsertItem(4,"请假");
	m_tab.InsertItem(5,"休假");

	//初始化列表控件
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES);
	m_list.InsertColumn(0,"员工ID",LVCFMT_LEFT,50,100);
	m_list.InsertColumn(1,"员工姓名",LVCFMT_LEFT,70,100);
	m_list.InsertColumn(2,"所在部门",LVCFMT_LEFT,90,100);

	m_recordset=m_ado.GetRecordSet("Select * From BasicInfomation");
	int CurrentRow=0;
	while(!m_recordset->adoEOF)
	{
		m_list.InsertItem(CurrentRow,(_bstr_t)m_recordset->GetCollect("员工ID"));
		m_list.SetItem(CurrentRow,1,1,(_bstr_t)m_recordset->GetCollect("员工姓名"),NULL,0,0,0);
		m_list.SetItem(CurrentRow,2,1,(_bstr_t)m_recordset->GetCollect("部门名称"),NULL,0,0,0);	

		m_recordset->MoveNext();
		CurrentRow++;
	}

	//载入数据库中所有考勤信息至DataGrid控件中
	LoadData(0,m_isAll);

	m_tab.InitTabCtrl();

	//定时选择是否更新DataGrid控件中的数据
	SetTimer(0,2000,NULL);

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

void CKaoqinDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	USkinRemoveSkin();
	
	theApp.m_pMainWnd->SetWindowPos(&wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
}

void CKaoqinDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int page=m_tab.GetCurSel( );

	LoadData(page,m_isAll);
	*pResult = 0;
}

void CKaoqinDlg::LoadData(int index,BOOL isAll)
{
	CString str[]={"KEvection","KBeOnDuty","KOvertime","KLeave","KVacation"};
	UpdateData();

	if(index==0)
		sql.Format("Select * From KaoQin");
	else
		sql.Format("Select * From %s",str[index-1]);

	//显示所有,或者只显示对应员工ID的数据
	CString temp="";
	if(!isAll)
		temp.Format(" Where  员工ID='%s'",m_nIDSelect);
	sql+=temp;
	
	try{
		_RecordsetPtr recordset=m_ado.GetRecordSet(sql);
		m_dataGrid.SetRefDataSource((LPUNKNOWN)recordset);
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}

	UpdateData(FALSE);
}

void CKaoqinDlg::OnSearch() 
{
	UpdateData();

	try{
		sql.Format("Select * From BasicInfomation Where 员工ID='%s'",m_nID);
		m_recordset=m_ado.GetRecordSet(sql);
		if(m_recordset->adoEOF)
		{
			AfxMessageBox("员工ID不存在");
			return;
		}
		//将执行结果在列表控件中显示
		m_list.DeleteAllItems(); 
		int CurrentRow=0;
		while(!m_recordset->adoEOF)
		{
			m_list.InsertItem(CurrentRow,(_bstr_t)m_recordset->GetCollect("员工ID"));
			m_list.SetItem(CurrentRow,1,1,(_bstr_t)m_recordset->GetCollect("员工姓名"),NULL,0,0,0);
			m_list.SetItem(CurrentRow,2,1,(_bstr_t)m_recordset->GetCollect("部门名称"),NULL,0,0,0);	
			
			m_recordset->MoveNext();
			CurrentRow++;
		}
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}

	UpdateData(FALSE);
	return;
}

void CKaoqinDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

	int nItem=pNMListView->iItem;

	if(nItem!=-1)
	{
		m_nIDSelect=m_list.GetItemText(nItem,0);
		m_isAll=FALSE;
	}
	else
	{
		m_nIDSelect="";
		m_isAll=TRUE;;
	}

	int page=m_tab.GetCurSel();
	LoadData(page,m_isAll);
	*pResult = 0;
}

BEGIN_EVENTSINK_MAP(CKaoqinDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CKaoqinDlg)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CKaoqinDlg::OnUpdate() 
{
	m_bUpdate=!m_bUpdate;

	if(m_bUpdate)
		m_dataGrid.SetAllowUpdate(TRUE);
	else
		m_dataGrid.SetAllowUpdate(FALSE);
}

void CKaoqinDlg::OnDelete() 
{
	m_bDelete=!m_bDelete;

	if(m_bDelete)
		m_dataGrid.SetAllowDelete(TRUE);
	else
		m_dataGrid.SetAllowDelete(FALSE);
}

void CKaoqinDlg::OnAddNew() 
{
	m_bAddNew=!m_bAddNew;

	if(m_bAddNew)
		m_dataGrid.SetAllowAddNew(TRUE);
	else
		m_dataGrid.SetAllowAddNew(FALSE);	
}

void CKaoqinDlg::OnTimer(UINT nIDEvent) 
{
	if(s_bRefresh)
	{
		m_dataGrid.SetRefDataSource((LPUNKNOWN)m_ado.GetRecordSet(s_SQL));
		m_dataGrid.Refresh();

		s_bRefresh=FALSE;
	}
	CDialog::OnTimer(nIDEvent);
}

void CKaoqinDlg::OnRefresh() 
{
	m_dataGrid.SetRefDataSource((LPUNKNOWN)m_ado.GetRecordSet(s_SQL));
	m_dataGrid.Refresh();
}

⌨️ 快捷键说明

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