📄 salarydlg.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 + -