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

📄 salaryeditdlg.cpp

📁 解决员工工资的管理
💻 CPP
字号:
// SalaryEditDlg.cpp : implementation file
//

#include "stdafx.h"
#include "salarly.h"
#include "SalaryEditDlg.h"
#include "DepartmentSet.h"
#include "SalarySet.h"
#include "ComputationSet.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSalaryEditDlg dialog


CSalaryEditDlg::CSalaryEditDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSalaryEditDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSalaryEditDlg)
	m_Absent = 0.0f;
	m_Business = 0.0f;
	m_strDepartment = _T("人事部");
	m_strID = _T("");
	m_Late = 0.0f;
	m_Leave = 0.0f;
	m_strName = _T("");
	m_Overtime = 0.0f;
	m_strPwd =0;
	m_strRemark = _T("");
	m_Worktime = 0.0f;
	m_Date = 0;
	m_Add = 0.0f;
	m_Basic = 0.0f;
	m_Bonus = 0.0f;
	m_Fine = 0.0f;
	m_Total = 0.0f;
	m_Welfare = 0.0f;
	//}}AFX_DATA_INIT
}


void CSalaryEditDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSalaryEditDlg)
	DDX_Control(pDX, IDC_SPIN_WORKTIME, m_spinWorktime);
	DDX_Control(pDX, IDC_SPIN_OVERTIME, m_spinOvertime);
	DDX_Control(pDX, IDC_SPIN_LEAVE, m_spinLeave);
	DDX_Control(pDX, IDC_SPIN_LATE, m_spinLate);
	DDX_Control(pDX, IDC_SPIN_BUSINESS, m_spinBusiness);
	DDX_Control(pDX, IDC_SPIN_ABSENT, m_spinAbsent);
	DDX_Control(pDX, IDC_DEPARTMENT, m_strDepartmentctrl);
	DDX_Text(pDX, IDC_ABSENT, m_Absent);
	DDX_Text(pDX, IDC_BUSINESS, m_Business);
	DDX_CBString(pDX, IDC_DEPARTMENT, m_strDepartment);
	DDX_Text(pDX, IDC_ID, m_strID);
	DDX_Text(pDX, IDC_LATE, m_Late);
	DDX_Text(pDX, IDC_LEAVE, m_Leave);
	DDX_Text(pDX, IDC_NAME, m_strName);
	DDX_Text(pDX, IDC_OVERTIME, m_Overtime);
	DDX_Text(pDX, IDC_PWD, m_strPwd);
	DDX_Text(pDX, IDC_REMARK, m_strRemark);
	DDX_Text(pDX, IDC_WORKTIME, m_Worktime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER, m_Date);
	DDX_Text(pDX, IDC_ADD, m_Add);
	DDX_Text(pDX, IDC_BASIC, m_Basic);
	DDX_Text(pDX, IDC_BONUS, m_Bonus);
	DDX_Text(pDX, IDC_FINE, m_Fine);
	DDX_Text(pDX, IDC_TOTAL, m_Total);
	DDX_Text(pDX, IDC_WELFARE, m_Welfare);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSalaryEditDlg, CDialog)
	//{{AFX_MSG_MAP(CSalaryEditDlg)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_ABSENT, OnDeltaposSpinAbsent)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_BUSINESS, OnDeltaposSpinBusiness)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_LATE, OnDeltaposSpinLate)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_LEAVE, OnDeltaposSpinLeave)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_OVERTIME, OnDeltaposSpinOvertime)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSalaryEditDlg message handlers

BOOL CSalaryEditDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	  //将部门表的内容添加到组合框中
	CDepartmentSet cSet;
	cSet.Open();
	while(!cSet.IsEOF()){
		m_strDepartmentctrl.AddString(cSet.m_department);
		cSet.MoveNext();
	}
	if(cSet.IsOpen())cSet.Close();

	
    m_spinWorktime.SetRange(0,100);    //设置旋转按钮控件范围
	m_spinOvertime.SetRange(0,100);
	m_spinBusiness.SetRange(0,100);
	m_spinLeave.SetRange(0,100);
	m_spinLate.SetRange(0,100);
	m_spinAbsent.SetRange(0,100);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSalaryEditDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();     //读取控间中的数据
	CSalarySet pSet;
	CComputationSet cSet;
	//设置用户权限
	if(m_strPwd!=1234)
		AfxMessageBox("密码不正确!你没有权限删除记录");
    else
		if(m_strPwd==1234)  //如果密码正确就执行修改操作
		{		
			pSet.m_strFilter.Format("ID='%s'",m_strID);	
			pSet.Open();
			pSet.Edit();		
			pSet.m_bonus            =m_Bonus;		
			pSet.m_worktime           =m_Worktime;
			pSet.m_late           =m_Late;
			pSet.m_overtime          =m_Overtime;
			pSet.m_business           =m_Business;
			pSet.m_leave           =m_Leave;
			pSet.m_absent               =m_Absent;		
			pSet.m_welfare           =m_Welfare;
			pSet.m_remark           =m_strRemark;
			pSet.m_date           =m_Date;
			pSet.m_ID               =m_strID;
			pSet.m_department       =m_strDepartment;
			pSet.m_name             =m_strName;
			UpdateData(TRUE);
			if(cSet.IsOpen())
				cSet.Close();    //关闭记录集
			cSet.Open();
			//通过考勤与工资参数计算
			pSet.m_add=cSet.m_business*pSet.m_business+cSet.m_overtime*pSet.m_overtime;
			pSet.m_basic=cSet.m_worktime*pSet.m_worktime;		
			pSet.m_fine=cSet.m_absent*pSet.m_absent+cSet.m_late*pSet.m_late+cSet.m_leave*pSet.m_leave;
			pSet.m_salary=pSet.m_bonus+pSet.m_basic+pSet.m_add+pSet.m_welfare-pSet.m_fine;
			if(pSet.m_salary<0) pSet.m_salary=0; // 保证实发金额不小于0
			UpdateData(TRUE);
			pSet.Update();
			MessageBox("修改成功");
			pSet.Requery();       //数据表更新
			pSet.Close();	
			if(pSet.IsOpen())pSet.Close();
			if(cSet.IsOpen())
				cSet.Close();
		}
		CDialog::OnOK();
		
}

void CSalaryEditDlg::OnDeltaposSpinAbsent(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);                // 将控件的内容保存到变量中
	m_Absent+=(float)pNMUpDown->iDelta*0.5f;
	if(m_Absent<0.0)m_Absent=0.0f;
	if(m_Absent>100.0)m_Absent=100.0f;
	UpdateData(FALSE);        // 将变量的内容显示到控件中
	*pResult = 0;
}

void CSalaryEditDlg::OnDeltaposSpinBusiness(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);              // 将控件的内容保存到变量中
	m_Business+=(float)pNMUpDown->iDelta*0.5f;
	if(m_Business<0.0)m_Absent=0.0f;
	if(m_Business>100.0)m_Absent=100.0f;
	UpdateData(FALSE);        // 将变量的内容显示到控件中
	*pResult = 0;
}

void CSalaryEditDlg::OnDeltaposSpinLate(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

void CSalaryEditDlg::OnDeltaposSpinLeave(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);           // 将控件的内容保存到变量中
	m_Leave+=(float)pNMUpDown->iDelta*0.5f;
	if(m_Leave<0.0)m_Absent=0.0f;
	if(m_Leave>100.0)m_Absent=100.0f;
	UpdateData(FALSE);          // 将变量的内容显示到控件中
	*pResult = 0;
}

void CSalaryEditDlg::OnDeltaposSpinOvertime(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);                // 将控件的内容保存到变量中
	m_Overtime+=(float)pNMUpDown->iDelta*0.5f;
	if(m_Overtime<0.0)m_Absent=0.0f;
	if(m_Overtime>100.0)m_Absent=100.0f;
	UpdateData(FALSE);         // 将变量的内容显示到控件中
	*pResult = 0;
}

void CSalaryEditDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}

⌨️ 快捷键说明

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