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

📄 salarydlg.cpp

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

#include "stdafx.h"
#include "salarly.h"
#include "SalaryDlg.h"
#include "SalarySet.h"
#include "SalaryODlg.h"
#include "Computation.h"
#include "ComputationSet.h"
#include "DelectDlg.h"
#include "SalaryEditDlg.h"



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

/////////////////////////////////////////////////////////////////////////////
// CSalaryDlg dialog


CSalaryDlg::CSalaryDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSalaryDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSalaryDlg)
	m_strQuery = _T("");
	//}}AFX_DATA_INIT
}


void CSalaryDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSalaryDlg)
	DDX_Control(pDX, IDC_LIST3, m_List3);
	DDX_Control(pDX, IDC_LIST2, m_List2);
	DDX_Text(pDX, IDC_QUERY, m_strQuery);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSalaryDlg, CDialog)
	//{{AFX_MSG_MAP(CSalaryDlg)
	ON_BN_CLICKED(IDC_BUTTON_SALARYSHOW, OnButtonSalaryshow)
	ON_BN_CLICKED(IDC_BUTTON_CHECKSHOW, OnButtonCheckshow)
	ON_BN_CLICKED(IDC_BUTTON_QUERY, OnButtonQuery)
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_DETEL, OnButtonDetel)
	ON_BN_CLICKED(IDC_BUTTON_COMPUTATION, OnButtonComputation)
	ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSalaryDlg message handlers

BOOL CSalaryDlg::OnInitDialog()         //初始化List控件
{
	CDialog::OnInitDialog();
	m_List2.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);     //设置List网格
	m_List2.InsertColumn(0,_T("员工号"),LVCFMT_IMAGE|LVCFMT_LEFT);
	m_List2.InsertColumn(1,_T("部门"));
	m_List2.InsertColumn(2,_T("姓名"));
	m_List2.InsertColumn(3,_T("基本工资"));
	m_List2.InsertColumn(4,_T("奖金"));
	m_List2.InsertColumn(5,_T("额外工资"));
	m_List2.InsertColumn(6,_T("福利"));
	m_List2.InsertColumn(7,_T("罚款"));
	m_List2.InsertColumn(8,_T("总工资"));
	m_List2.InsertColumn(9,_T("统计时间"));
	m_List2.InsertColumn(10,_T("备注"));
	int j;
    for(j=0; j<=10; j++)
	{
		m_List2.SetColumnWidth(j, 80);
	}
	m_List2.SetColumnWidth(2, 50);
	m_List2.SetColumnWidth(3, 50);	
	
    m_List3.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);   //设置List网格
	m_List3.InsertColumn(0,_T("员工号"),LVCFMT_IMAGE|LVCFMT_LEFT);
	m_List3.InsertColumn(1,_T("部门"));
	m_List3.InsertColumn(2,_T("姓名"));
	m_List3.InsertColumn(3,_T("出勤天数"));
	m_List3.InsertColumn(4,_T("出差天数"));
	m_List3.InsertColumn(5,_T("加班天数"));
	m_List3.InsertColumn(6,_T("请假天数"));
	m_List3.InsertColumn(7,_T("迟到次数"));
	m_List3.InsertColumn(8,_T("旷工天数"));
	m_List3.InsertColumn(9,_T("统计时间"));	
    for(j=0; j <= 9; j++)
	{
		m_List3.SetColumnWidth(j, 80);
	}
	m_List3.SetColumnWidth(2, 50);
	m_List3.SetColumnWidth(3, 50);	
	
	
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void CSalaryDlg::OnButtonSalaryshow() 
{
	// TODO: Add your control notification handler code here
	m_List2.DeleteAllItems();      //清除LIST控件的当前显示
	int i=0;
    CSalarySet m_Set;
	m_Set.Open();
    m_Set.MoveFirst();             //移到数据表中的第一条记录
	do                    //把数据表中的内容显示到LIST控件中
	{ 
		CString s;		 
		m_List2.InsertItem(i,m_Set.m_ID,0);		
		m_List2.SetItemText(i,1,m_Set.m_department);		
        m_List2.SetItemText(i,2,m_Set.m_name);
		s.Format("%.1f",m_Set.m_basic);
        m_List2.SetItemText(i,3,s);
		s.Format("%.1f",m_Set.m_bonus);		
        m_List2.SetItemText(i,4,s);
		s.Format("%.1f",m_Set.m_add);
		m_List2.SetItemText(i,5,s);
		s.Format("%.1f",m_Set.m_welfare);
        m_List2.SetItemText(i,6,s);
		s.Format("%.1f",m_Set.m_fine);
        m_List2.SetItemText(i,7,s);
		s.Format("%.1f",m_Set.m_salary);
        m_List2.SetItemText(i,8,s);
		m_List2.SetItemText(i,9,m_Set.m_date.Format("%Y-%#m-%#d"));
		m_List2.SetItemText(i,10,m_Set.m_remark);
		
		i++;
        m_Set.MoveNext();		
	} while(!m_Set.IsEOF());
	m_Set.Close();
	
}

void CSalaryDlg::OnButtonCheckshow() 
{
	// TODO: Add your control notification handler code here
	m_List3.DeleteAllItems();      //清除LIST控件的当前显示
	int i=0;
    CSalarySet m_Set;
	m_Set.Open();
    m_Set.MoveFirst();              //移到数据表中的第一条记录
	do               //把数据表中的内容显示到LIST控件中
	{ 
		CString s;		 
		m_List3.InsertItem(i,m_Set.m_ID,0);		
		m_List3.SetItemText(i,1,m_Set.m_department);		
        m_List3.SetItemText(i,2,m_Set.m_name);
		s.Format("%.1f",m_Set.m_worktime);
        m_List3.SetItemText(i,3,s);
		s.Format("%.1f",m_Set.m_business);		
        m_List3.SetItemText(i,4,s);
		s.Format("%.1f",m_Set.m_overtime);
		m_List3.SetItemText(i,5,s);
		s.Format("%.1f",m_Set.m_leave);
        m_List3.SetItemText(i,6,s);
		s.Format("%.1f",m_Set.m_late);
        m_List3.SetItemText(i,7,s);
		s.Format("%.1f",m_Set.m_absent);
        m_List3.SetItemText(i,8,s);
		m_List3.SetItemText(i,9,m_Set.m_date.Format("%Y-%#m-%#d"));
		i++;
        m_Set.MoveNext();		
	} while(!m_Set.IsEOF());
	m_Set.Close();
}

void CSalaryDlg::OnButtonQuery()   //员工工资及员工考勤的查询功能 
{
	// TODO: Add your control notification handler code here
	CSalarySet cSet;
    UpdateData();    //更新数据库
	m_strQuery.TrimLeft ();     //从给定的查询号中删除首部的空格及控制字符
	if(m_strQuery.IsEmpty ())   //查询的编辑控为空时
	{
		MessageBox("要查询的员工号不能为空!");
		return;
	}
	cSet.m_strFilter.Format("ID='%s'",m_strQuery);   //判断查询的员工号是否在数据表中有一致的
	cSet.Open();	
	if(!cSet.IsEOF())     //如果打开记录集有记录
		//if(!m_strQuery.IsEmpty())
	{
		CSalaryODlg dlg;
		//使对话框中的数据和数据表中的要求一一对应
		dlg.m_strDepartment=cSet.m_department;     
		dlg.m_Basic=cSet.m_basic;
		dlg.m_Bonus=cSet.m_bonus;
		dlg.m_Welfare=cSet.m_welfare;
		dlg.m_Fine=cSet.m_fine;
		dlg.m_strName=cSet.m_name;
		dlg.m_Total=cSet.m_salary;
		dlg.m_Add=cSet.m_add;
		dlg.m_strID=cSet.m_ID;
		dlg.m_Date=cSet.m_date;   //统计时间的匹配
			     //考勤的匹配
		dlg.m_strRemark=cSet.m_remark;
		dlg.m_Worktime=cSet.m_worktime;
		dlg.m_Overtime=cSet.m_overtime;
		dlg.m_Business=cSet.m_business;
		dlg.m_Late=cSet.m_late;
		dlg.m_Leave=cSet.m_leave;
		dlg.m_Absent=cSet.m_absent;
		dlg.DoModal();   //显示对话框
		UpdateData(FALSE);      //数据表中的内容显示到控件中
	}
	else
		MessageBox("查询的员工记录不存在");
	if(cSet.IsOpen())cSet.Close();
}

void CSalaryDlg::OnButtonAdd() 
{
	// TODO: Add your control notification handler code here
	CSalaryODlg dlg;
	CSalarySet pSet;
	CComputationSet cSet;
	cSet.Open();
	if(dlg.DoModal()==IDOK){          //单击"确定",弹出添加对话框
		pSet.Open();
		pSet.AddNew();
		pSet.m_bonus            =dlg.m_Bonus;		
		pSet.m_worktime           =dlg.m_Worktime;
		pSet.m_overtime           =dlg.m_Overtime;
		pSet.m_business           =dlg.m_Business;
		pSet.m_late           =dlg.m_Late;
		pSet.m_leave           =dlg.m_Leave;
		pSet.m_absent               =dlg.m_Absent;		
		pSet.m_welfare           =dlg.m_Welfare;
		pSet.m_remark           =dlg.m_strRemark;
		pSet.m_date           =dlg.m_Date;
		pSet.m_ID               =dlg.m_strID;
		pSet.m_department       =dlg.m_strDepartment;
		pSet.m_name             =dlg.m_strName;
		      //计算额外工资
        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
		pSet.Update();
		pSet.Requery();     //更新数据库中的数据
		MessageBox("添加成功");
		if(cSet.IsOpen())cSet.Close();
	}	
}

void CSalaryDlg::OnButtonDetel()   //员工工资的删除功能,跳转到删除对话框
{
	// TODO: Add your control notification handler code here
	CDelectDlg dlg;   //定义对话框类对象
	dlg.DoModal();     //显示对话框

}


void CSalaryDlg::OnButtonComputation() 
{
	// TODO: Add your control notification handler code here
	CComputation dlg;
	dlg.DoModal();    //工资计算公式对话框
}





void CSalaryDlg::OnButtonEdit()   //修改先查询要修改的员工号的工资详情及考勤记录
{
	// TODO: Add your control notification handler code here
	CSalarySet cSet;
    UpdateData();       
	m_strQuery.TrimLeft ();           
	if(m_strQuery.IsEmpty ())
	{
		MessageBox("要修改的员工号不能为空!");
		return;
	}
	cSet.m_strFilter.Format("ID='%s'",m_strQuery);   
	cSet.Open();	
	if(!cSet.IsEOF())
		{
			CSalaryEditDlg dlg;
			dlg.m_strDepartment=cSet.m_department;
			dlg.m_Basic=cSet.m_basic;
			dlg.m_Bonus=cSet.m_bonus;
			dlg.m_Welfare=cSet.m_welfare;
			dlg.m_Fine=cSet.m_fine;
			dlg.m_strName=cSet.m_name;
			dlg.m_Total=cSet.m_salary;
			dlg.m_Add=cSet.m_add;
			dlg.m_strID=cSet.m_ID;
			dlg.m_Date=cSet.m_date;
			dlg.m_strRemark=cSet.m_remark;
			dlg.m_Worktime=cSet.m_worktime;
			dlg.m_Overtime=cSet.m_overtime;
			dlg.m_Business=cSet.m_business;
			dlg.m_Late=cSet.m_late;
			dlg.m_Leave=cSet.m_leave;
			dlg.m_Absent=cSet.m_absent;
			dlg.DoModal();
			UpdateData(FALSE);
		}
	else
	  MessageBox("修改的员工记录不存在");
      if(cSet.IsOpen())cSet.Close();
}





⌨️ 快捷键说明

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