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

📄 experience.cpp

📁 这是采用mfc编写的工资管理系统
💻 CPP
字号:
// 
//
/**************************************
文件名:Experience.cpp 
文件类型:implementation file
功能描述:对部门的一些参数进行设置
创建人:张国
版本号:1.0
**************************************/

#include "stdafx.h"
#include "SalaryManagement.h"
#include "Experience.h"
#include "BasicInfo.h"

#ifndef _BASICINFO_H_
#define _BASICINFO_H_
#endif

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

/////////////////////////////////////////////////////////////////////////////
// CExperience dialog

CExperience::CExperience(CWnd* pParent /*=NULL*/)
: CDialog(CExperience::IDD, pParent)
{
	//{{AFX_DATA_INIT(CExperience)
	m_dateFrom = COleDateTime::GetCurrentTime();
	m_dateTo = COleDateTime::GetCurrentTime();
	m_position = _T("");
	m_prover = _T("");
	m_remark = _T("");
	m_unit = _T("");
	m_nID = _T("");
	m_name = _T("");
	//}}AFX_DATA_INIT

	m_adoConn.OnInitADOConn();
}

CExperience::~CExperience()
{
	m_adoConn.ExitConnect();
}

void CExperience::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CExperience)
	DDX_Control(pDX, IDC_LIST1, m_experience);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_dateFrom);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_dateTo);
	DDX_Text(pDX, IDC_POSITION, m_position);
	DDX_Text(pDX, IDC_PROVER, m_prover);
	DDX_Text(pDX, IDC_REMARK, m_remark);
	DDX_Text(pDX, IDC_UNIT, m_unit);
	DDX_Text(pDX, IDC_STAFFID, m_nID);
	DDX_Text(pDX, IDC_NAME, m_name);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CExperience, CDialog)
//{{AFX_MSG_MAP(CExperience)
ON_BN_CLICKED(IDC_ADDINFO, OnAddinfo)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList)
	ON_WM_SHOWWINDOW()
	ON_EN_KILLFOCUS(IDC_STAFFID, OnKillfocusStaffid)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CExperience message handlers

BOOL CExperience::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//设置列表控件的风格并初始化各列
	CString colTitle[]={"员工ID","从何年何月","至何年何月","所在院校/单位","职务","证明人","备注"};
	UINT width[]={100,200,200,200,50,100,200};//设置各列的宽度
	m_personInfo.InitListCtrl(m_experience,colTitle,width,7);

	LoadData();

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

/****************************
函数类型:消息响应函数
功能描述:添加新的个人经历记录
****************************/
void CExperience::OnAddinfo() 
{
	UpdateData();

	if(m_nID=="")
	{
		AfxMessageBox("员工ID不能为空!");
		return;
	}

	//主键属性列
	Prop main[2];
	main[0].name="员工ID";
	main[0].value=m_nID;
	main[1].name="开始时间";
	main[1].value=m_dateFrom.Format("%Y-%#m-%#d");

	//非主键属性
	Prop simple[5];
	simple[0].name="结束时间";
	simple[1].name="所在单位/院校";
	simple[2].name="职务";
	simple[3].name="证明人";
	simple[4].name="备注";

	simple[0].value=m_dateTo.Format("%Y-%#m-%#d");
	simple[1].value=m_unit;
	simple[2].value=m_position;
	simple[3].value=m_prover;
	simple[4].value=m_remark;

	m_personInfo.SavePersonData("Experience",main,2,simple,5);

	//将更新后的数据显示到列表控件中
	LoadData();
	
	//清空各编辑框中的内容
	m_nID="";
	m_unit="";
	m_position="";
	m_prover="";
	m_remark="";
	
	UpdateData(FALSE);
}

/*********************
函数类型:消息响应函数
功能描述:退出
*********************/
void CExperience::OnCancel() 
{
	((CDialog*)this->GetParent()->GetOwner())->EndDialog(IDCANCEL);	
	CDialog::OnCancel();
}

/*******************************
函数类型:事件响应函数
功能描述:鼠标点击列表控件的响应
*******************************/
void CExperience::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	
	UpdateData();

	//获得鼠标点击的行号
	int nItem=pNMListView->iItem;
	m_CurrentSelect=nItem;
	
	//将对应行中各列的数据反馈到编辑框和时间控件上
	CString dateFrom,dateTo;
	m_nID=m_experience.GetItemText(nItem,0);
	dateFrom=m_experience.GetItemText(nItem,1);
	dateTo=m_experience.GetItemText(nItem,2);
	m_unit=m_experience.GetItemText(nItem,3);
	m_position=m_experience.GetItemText(nItem,4);
	m_prover=m_experience.GetItemText(nItem,5);
	m_remark=m_experience.GetItemText(nItem,6);
	
	m_dateFrom.ParseDateTime(dateFrom);
	
	m_dateTo.ParseDateTime(dateTo);

	
	UpdateData(FALSE);
	
	*pResult = 0;
}

/*****************************************
函数类型:自定义函数
功能描述:将数据库中的数据显示到列表控件中
*****************************************/
void CExperience::LoadData()
{
	CString str[]={"员工ID","开始时间","结束时间","所在单位/院校","职务","证明人","备注"};

	m_personInfo.LoadData(m_experience,str,7,"Experience");
}

/*********************
函数类型:事件响应函数
功能描述:删除记录
*********************/
void CExperience::OnDelete() 
{
	UpdateData();

	if(0==m_experience.GetSelectedCount()||m_CurrentSelect>=m_experience.GetItemCount())
	{
		AfxMessageBox("请选择您要删除的记录!");
		return;
	}

	if(IDNO==AfxMessageBox("您确定要删除该记录吗?",MB_YESNO))
		return;

	try{
		//按主键删除,其中数据库中的主键为员工ID和开始时间
		CString sql="";
		sql.Format("Delete From Experience Where 员工ID='%s' and 开始时间='%s'",
			m_nID,m_dateFrom.Format("%Y-%#m-%#d"));
		
		m_adoConn.ExecuteSQL(sql);
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}
	m_experience.DeleteItem(m_CurrentSelect);
}

/***********************************************
函数类型:事件响应函数
功能描述:响应点击列表控件,如果点击行没有记录
		  则清空编辑框中的所有内容
************************************************/
void CExperience::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// 单击列表控件时空白行时,清空各输入编辑框中的已有数据
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

	int nItem=pNMListView->iItem;
	if (nItem==-1)
	{
		m_nID="";
		m_unit="";
		m_position="";
		m_prover="";
		m_remark="";
		UpdateData(false);
	}
	*pResult = 0;
}

void CExperience::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	//当窗口显示时,更新用户ID,显示基本信息中所设置的用户ID
	if(bShow)
	{
		m_nID=CBasicInfo::s_nID;
		UpdateData(FALSE);
	}
}

void CExperience::OnKillfocusStaffid() 
{
	UpdateData();
	
	m_personInfo.OnKillfocusEdit(m_nID,m_name);

	UpdateData(FALSE);	
}

⌨️ 快捷键说明

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