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

📄 rewardpunish.cpp

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

#include "stdafx.h"
#include "salarymanagement.h"
#include "RewardPunish.h"

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

#include "BasicInfo.h"

#ifndef _BASICINFO_H_
#define _BASICINFO_H_
#endif

/////////////////////////////////////////////////////////////////////////////
// CRewardPunish dialog


CRewardPunish::CRewardPunish(CWnd* pParent /*=NULL*/)
	: CDialog(CRewardPunish::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRewardPunish)
	m_nID = _T("");
	m_department = _T("");
	m_jiangchengyuanyin = _T("");
	m_chexiaoyuanyin = _T("");
	m_remark = _T("");
	m_qianfa = COleDateTime::GetCurrentTime();
	m_chexiao = COleDateTime::GetCurrentTime();
	m_shengxiao = COleDateTime::GetCurrentTime();
	m_name = _T("");
	//}}AFX_DATA_INIT

	m_ado.OnInitADOConn();
}

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

void CRewardPunish::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRewardPunish)
	DDX_Control(pDX, IDC_COMBO1, m_cboType);
	DDX_Control(pDX, IDC_LIST1, m_rewardPunish);
	DDX_Text(pDX, IDC_NID, m_nID);
	DDX_Text(pDX, IDC_DEPARTMENT, m_department);
	DDX_Text(pDX, IDC_REWARDPUNISHYUANYIN, m_jiangchengyuanyin);
	DDX_Text(pDX, IDC_CHEXIAOYUANYIN, m_chexiaoyuanyin);
	DDX_Text(pDX, IDC_REMARK, m_remark);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEQIANFA, m_qianfa);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMECHEXIAO, m_chexiao);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMESHENGXIAO, m_shengxiao);
	DDX_Text(pDX, IDC_NAME, m_name);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRewardPunish, CDialog)
	//{{AFX_MSG_MAP(CRewardPunish)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LISTREWARD, OnItemchangedListreward)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_NOTIFY(NM_CLICK, IDC_LISTREWARD, OnClickListreward)
	ON_WM_SHOWWINDOW()
	ON_EN_KILLFOCUS(IDC_NID, OnKillfocusNid)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRewardPunish message handlers

BOOL CRewardPunish::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	
    //设置列表控件的风格并初始化各列
	m_cboType.AddString("奖励");
	m_cboType.AddString("惩罚");
	m_cboType.SetCurSel(0);

	CString str[]={"员工ID","奖惩类别","奖惩原因","批准部门","签发时间","生效时间","撤消时间","撤消原因","备注"};
	UINT width[]={100,100,200,100,100,100,100,200,200};
	m_personInfo.InitListCtrl(m_rewardPunish,str,width,9);

	//加载数据库中数据
	LoadData();

	m_CurrentRow=0;

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

void CRewardPunish::OnCancel() 
{
	((CDialog*)this->GetParent()->GetOwner())->EndDialog(IDCANCEL);	
	CDialog::OnCancel();
}

void CRewardPunish::OnItemchangedListreward(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData();
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here

	//获得鼠标点击的行号
	int nItem=pNMListView->iItem;
	m_CurrentSelect=nItem;

	//将对应行中各列的数据反馈到编辑框和时间控件上

	CString type,shengxiao,qianfa,chexiao;
	m_nID=m_rewardPunish.GetItemText(nItem,0);
    type=m_rewardPunish.GetItemText(nItem,1);
	m_jiangchengyuanyin=m_rewardPunish.GetItemText(nItem,2);	
	m_department=m_rewardPunish.GetItemText(nItem,3);
    qianfa=m_rewardPunish.GetItemText(nItem,4);
	shengxiao=m_rewardPunish.GetItemText(nItem,5);
	chexiao=m_rewardPunish.GetItemText(nItem,6);
	m_chexiaoyuanyin=m_rewardPunish.GetItemText(nItem,7);
	m_remark=m_rewardPunish.GetItemText(nItem,8);

	
	m_cboType.SetCurSel(m_cboType.FindString(0,type));
	m_qianfa.ParseDateTime(qianfa);
    m_shengxiao.ParseDateTime(shengxiao);
	m_chexiao.ParseDateTime(chexiao);
	

	UpdateData(FALSE);
	*pResult = 0;
}

void CRewardPunish::OnSave() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	
	if(m_nID=="")
	{
		AfxMessageBox("员工ID不能为空");
		return;
	}
	
	CString type;
	int index=m_cboType.GetCurSel();
	m_cboType.GetLBText(index,type);
	
	//主键属性
	Prop main[2];
	main[0].name="员工ID";
	main[0].value=m_nID;
	main[1].name="签发时间";
	main[1].value=m_qianfa.Format("%Y-%#m-%#d");
	
	//非主键属性
	Prop simple[7];
	char* str[]={"奖惩类别","奖惩原因","批准部门","生效时间","撤消时间","撤消原因","备注"};
	for(int i=0;i<7;i++)
		simple[i].name=str[i];
	simple[0].value=type;
	simple[1].value=m_jiangchengyuanyin;
	simple[2].value=m_department;
	simple[3].value=m_shengxiao.Format("%Y-%#m-%#d");
	simple[4].value=m_chexiao.Format("%Y-%#m-%#d");
	simple[5].value=m_chexiaoyuanyin;
	simple[6].value=m_remark;
	
	//保存数据
	m_personInfo.SavePersonData("RewardPunish",main,2,simple,7);
	
	//将更新后的数据显示到列表控件中
	LoadData();
	
	//清空各编辑框中的内容
	m_nID="";
	m_jiangchengyuanyin="";
	m_department="";
	m_chexiaoyuanyin="";
	m_remark="";
	
	UpdateData(FALSE);
}

void CRewardPunish::OnDelete() 
{
	// TODO: Add your control notification handler code here
	if(0==m_rewardPunish.GetSelectedCount()||m_CurrentSelect>=m_rewardPunish.GetItemCount())
	{
		AfxMessageBox("请选择您要删除的记录!");
		return;
	}

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

	UpdateData();

	//按主键删除,其中数据库中的主键为员工ID和签发时间
	CString sql="";
	sql.Format("Delete From RewardPunish Where 员工ID='%s' and 签发时间='%s'",
		m_nID,m_qianfa.Format("%Y-%#m-%#d"));

	m_ado.ExecuteSQL(sql);

	m_rewardPunish.DeleteItem(m_CurrentSelect);
}

void CRewardPunish::LoadData()
{
	CString str[]={"员工ID","奖惩类别","奖惩原因","批准部门","签发时间","生效时间","撤消时间","撤消原因","备注"};

	m_personInfo.LoadData(m_rewardPunish,str,9,"RewardPunish");
}

void CRewardPunish::OnClickListreward(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// 单击列表控件时空白行时,清空各输入编辑框中的已有数据
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

	//获得鼠标点击的行号
	int nItem=pNMListView->iItem;
	if (nItem==-1)
	{
		m_nID="";
		m_jiangchengyuanyin="";
		m_department="";
		m_chexiaoyuanyin="";
		m_remark="";
		UpdateData(false);
	}
	*pResult = 0;
}

void CRewardPunish::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	if(bShow)
	{
		m_nID=CBasicInfo::s_nID;
		UpdateData(FALSE);
	}
}

void CRewardPunish::OnKillfocusNid() 
{
	UpdateData();

	m_personInfo.OnKillfocusEdit(m_nID,m_name);

	UpdateData(FALSE);	
}

⌨️ 快捷键说明

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