📄 人员管理系统view.cpp
字号:
// 人员管理系统View.cpp : implementation of the CMyView class
//
#include "stdafx.h"
#include "人员管理系统.h"
#include "人员管理系统Doc.h"
#include "人员管理系统View.h"
#include "Person.h"
#include "ChangePassword.h"
#include "OtherSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyView
IMPLEMENT_DYNCREATE(CMyView, CFormView)
BEGIN_MESSAGE_MAP(CMyView, CFormView)
//{{AFX_MSG_MAP(CMyView)
ON_COMMAND(IDC_MONTH_MANAGE, OnMonthManage)
ON_COMMAND(IDC_GIVEALLLANLORAGE, OnGiveAllLanlorage)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_RECORDLIST, OnColumnclickRecordlist)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_LABORAGELIST, OnColumnclickLaboragelist)
ON_BN_CLICKED(IDC_RECORD_FIND, OnRecordFind)
ON_BN_CLICKED(IDC_RECORD_FINDALL, OnRecordFindall)
ON_BN_CLICKED(IDC_RECORD_SQLFIND, OnRecordSqlfind)
ON_BN_CLICKED(IDC_LABORAGE_SQLFIND, OnLaborageSqlfind)
ON_BN_CLICKED(IDC_LABORAGE_FIND, OnLaborageFind)
ON_BN_CLICKED(IDC_LABORAGE_FINDALL, OnLaborageFindall)
ON_COMMAND(IDC_HOMEPAGE, OnHomepage)
ON_WM_CREATE()
ON_NOTIFY(NM_DBLCLK, IDC_RECORDLIST, OnDblclkRecordlist)
ON_NOTIFY(NM_DBLCLK, IDC_LABORAGELIST, OnDblclkLaboragelist)
ON_COMMAND(IDC_GETHELP, OnGethelp)
ON_COMMAND(IDC_VIEW_ALLRECORD, OnViewAllrecord)
ON_COMMAND(IDC_CHANGE_PASSWORD, OnChangePassword)
ON_COMMAND(IDC_ADD_RECORD, AddRecord)
ON_COMMAND(IDC_DELETE_RECORD, DeleteRecord)
ON_BN_CLICKED(IDC_LABORAGE_SQLUPDATE, OnLaborageSqlupdate)
//}}AFX_MSG_MAP
ON_COMMAND(WM_DELETE_RECORD,DeleteRecord)
ON_COMMAND(WM_GIVE_LABORAGE,GiveLaborage)
ON_COMMAND(WM_ADD_RECORD,AddRecord)
// Standard printing commands
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyView construction/destruction
CMyView::CMyView()
: CFormView(CMyView::IDD)
{
//{{AFX_DATA_INIT(CMyView)
m_recordsort = _T("");
m_recordsqlsort = _T("");
m_laboragesqlsort = _T("");
m_laboragesort = _T("");
//}}AFX_DATA_INIT
// TODO: add construction code here
m_PersonRecordIsAsc=TRUE;
m_PersonLaborageIsAsc=TRUE;
m_maxid=-1;
}
CMyView::~CMyView()
{
}
void CMyView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyView)
DDX_Control(pDX, IDC_LABORAGE_SORT, m_LaborageSort);
DDX_Control(pDX, IDC_LABORAGE_COMBO, m_LaborageComboBox);
DDX_Control(pDX, IDC_LABORAGE_NEXUS, m_LaboragenexusComboBox);
DDX_Control(pDX, IDC_RECORD_COMBO, m_RecordComboBox);
DDX_Control(pDX, IDC_RECORDLIST, m_RecordList);
DDX_Control(pDX, IDC_LABORAGELIST, m_LaborageList);
DDX_Text(pDX, IDC_RECORD_SORT, m_recordsort);
DDX_Text(pDX, IDC_RECORD_SQLSORT, m_recordsqlsort);
DDX_Text(pDX, IDC_LABORAGE_SQLSORT, m_laboragesqlsort);
DDX_Text(pDX, IDC_LABORAGE_SORT, m_laboragesort);
//}}AFX_DATA_MAP
}
BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CMyView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
//初始化用户控件
m_RecordComboBox.SetCurSel(0);
m_LaboragenexusComboBox.SetCurSel(0);
m_LaborageComboBox.SetCurSel(0);
//初始化各树型控件眉头
//员工档案
m_RecordList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_RecordList.InsertColumn(0,"编号",LVCFMT_CENTER,50);
m_RecordList.InsertColumn(1,"姓名",LVCFMT_CENTER,80);
m_RecordList.InsertColumn(2,"性别",LVCFMT_CENTER,40);
m_RecordList.InsertColumn(3,"出生日期",LVCFMT_CENTER,80);
m_RecordList.InsertColumn(4,"籍贯",LVCFMT_CENTER,120);
m_RecordList.InsertColumn(5,"电话",LVCFMT_CENTER,120);
m_RecordList.InsertColumn(6,"手机",LVCFMT_CENTER,120);
m_RecordList.InsertColumn(7,"邮件",LVCFMT_CENTER,140);
m_RecordList.InsertColumn(8,"所属部门",LVCFMT_CENTER,80);
m_RecordList.InsertColumn(9,"工作起始时间",LVCFMT_CENTER,100);
m_RecordList.InsertColumn(10,"其它",LVCFMT_CENTER,40);
//员工工资
m_LaborageList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_LaborageList.InsertColumn(0,"编号",LVCFMT_CENTER,45);
m_LaborageList.InsertColumn(1,"月工资",LVCFMT_CENTER,50);
m_LaborageList.InsertColumn(2,"月奖金",LVCFMT_CENTER,50);
m_LaborageList.InsertColumn(3,"本月工资",LVCFMT_CENTER,60);
m_LaborageList.InsertColumn(4,"剩余工资",LVCFMT_CENTER,60);
m_LaborageList.InsertColumn(5,"本月缺勤天数",LVCFMT_CENTER,85);
m_LaborageList.InsertColumn(6,"本月加班天数",LVCFMT_CENTER,85);
//显示数据库数据
ShowPersonRecord();
ShowPersonLaborage();
//初始化最大编号,以便增加新的记录
if(m_maxid==-1)
{
int len=m_RecordList.GetItemCount();
for(int i=0;i<len;i++)
{
int id=atol(m_RecordList.GetItemText(i,0));
if(id>m_maxid) m_maxid=id;
}
}
//初始化工具条提示
m_tip.SetTipBkColor(RGB(255,255,0));
m_tip.SetTipTextColor(RGB(0,0,255));
m_tip.SetDelayTime(100);
m_tip.AddTool(GetDlgItem(IDC_RECORD_FINDALL),"显示所有的员工档案记录");
m_tip.AddTool(GetDlgItem(IDC_LABORAGE_FINDALL),"显示所有的员工工资记录");
m_tip.AddTool(GetDlgItem(IDC_RECORD_SORT),"输入查询字符串");
m_tip.AddTool(GetDlgItem(IDC_LABORAGE_SORT),"输入查询数值");
m_tip.AddTool(GetDlgItem(WM_USER+300),"请输入修改后的数据");
m_tip.AddTool(GetDlgItem(WM_USER+301),"请输入修改后的数据");
m_tip.AddTool(GetDlgItem(IDC_RECORD_SQLSORT),"输入SQL查询语句");
m_tip.AddTool(GetDlgItem(IDC_LABORAGE_SQLSORT),"输入SQL查询或更新语句");
m_tip.AddTool(GetDlgItem(IDC_RECORD_SQLFIND),"SELECT语句,请输入WHERE后面的SQL语句");
m_tip.AddTool(GetDlgItem(IDC_LABORAGE_SQLFIND),"SELECT语句,请输入WHERE后面的SQL语句");
m_tip.AddTool(GetDlgItem(IDC_LABORAGE_SQLUPDATE),"UPDATE语句,请输入SET后面的SQL语句");
}
/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics
#ifdef _DEBUG
void CMyView::AssertValid() const
{
CFormView::AssertValid();
}
void CMyView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers
void CMyView::ShowPersonRecord(CString sql)
{
m_RecordList.DeleteAllItems();
if(sql=="") sql="select * from [员工档案]";
int i=0;
m_PersonRecord.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
if(m_PersonRecord.IsEOF())
{
m_PersonRecord.Close();
return;
}
m_PersonRecord.MoveFirst();
do
{
CString s;
s.Format("%d",m_PersonRecord.m_column1);
m_RecordList.InsertItem(i,s,0);//编号
m_RecordList.SetItemText(i,1,m_PersonRecord.m_column2);//姓名
m_RecordList.SetItemText(i,2,m_PersonRecord.m_column3);//性别
s.Format("%d-%d-%d",m_PersonRecord.m_column4.GetYear(),m_PersonRecord.m_column4.GetMonth(),m_PersonRecord.m_column4.GetDay());
m_RecordList.SetItemText(i,3,s);//出生
m_RecordList.SetItemText(i,4,m_PersonRecord.m_column5);//籍贯
m_RecordList.SetItemText(i,5,m_PersonRecord.m_column6);//电话
m_RecordList.SetItemText(i,6,m_PersonRecord.m_column7);//手机
m_RecordList.SetItemText(i,7,m_PersonRecord.m_column8);//邮件
m_RecordList.SetItemText(i,8,m_PersonRecord.m_column9);//所属部门
s.Format("%d-%d-%d",m_PersonRecord.m_column10.GetYear(),m_PersonRecord.m_column10.GetMonth(),m_PersonRecord.m_column10.GetDay());
m_RecordList.SetItemText(i,9,s);//工作起址时间
m_RecordList.SetItemText(i,10,m_PersonRecord.m_column11);//其它
i++;
m_PersonRecord.MoveNext();
}
while(!m_PersonRecord.IsEOF());
m_PersonRecord.Close();
}
void CMyView::ShowPersonLaborage(CString sql)
{
m_LaborageList.DeleteAllItems();
if(sql=="") sql="select * from [员工工资]";
int i=0;
m_PersonLaborage.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
if(m_PersonLaborage.IsEOF())
{
m_PersonLaborage.Close();
return;
}
m_PersonLaborage.MoveFirst();
do
{
CString s;
s.Format("%d",m_PersonLaborage.m_column1);
m_LaborageList.InsertItem(i,s,0);//编号
s.Format("%d",m_PersonLaborage.m_column2);
m_LaborageList.SetItemText(i,1,s);//月工资
s.Format("%d",m_PersonLaborage.m_column3);
m_LaborageList.SetItemText(i,2,s);//月奖金
s.Format("%d",m_PersonLaborage.m_column4);
m_LaborageList.SetItemText(i,3,s);//本月工资
s.Format("%d",m_PersonLaborage.m_column5);
m_LaborageList.SetItemText(i,4,s);//剩余工资
s.Format("%.1f",m_PersonLaborage.m_column6);
m_LaborageList.SetItemText(i,5,s);//缺勤天数
s.Format("%.1f",m_PersonLaborage.m_column7);
m_LaborageList.SetItemText(i,6,s);//加班天数
i++;
m_PersonLaborage.MoveNext();
}
while(!m_PersonLaborage.IsEOF());
m_PersonLaborage.Close();
}
void CMyView::OnMonthManage()
{
// TODO: Add your command handler code here
COtherSet OtherSet;
int day=CTime::GetCurrentTime().GetDay();
int month=CTime::GetCurrentTime().GetMonth();
//从数据库中获取上一次结算日期
OtherSet.Open();
OtherSet.MoveFirst();
CTime t=OtherSet.m_column2;
OtherSet.Close();
//如果当前日期与上一次结算年月均相同
if(t.GetYear()==CTime::GetCurrentTime().GetYear() || t.GetMonth()==month)
{
MessageBox("该月已结算!");
return;
}
//今天不是该月月底
if(day<30+(month-month/8)%2)
{
if(MessageBox("今天不是月底,真得要进行月结算吗?",NULL,MB_YESNO)==IDNO)
return;
}
int i=0;
m_PersonLaborage.Open();
if(m_PersonLaborage.IsEOF())
{
m_PersonLaborage.Close();
return;
}
m_PersonLaborage.MoveFirst();
do
{
float days=m_PersonLaborage.m_column7-m_PersonLaborage.m_column6;
long lab=m_PersonLaborage.m_column2;
long money=(long)(lab+(lab/30*days));
money+=m_PersonLaborage.m_column3;
m_PersonLaborage.Edit();
m_PersonLaborage.m_column5+=m_PersonLaborage.m_column4;
m_PersonLaborage.m_column4=money;
m_PersonLaborage.m_column6=0.0;
m_PersonLaborage.m_column7=0.0;
m_PersonLaborage.Update();
i++;
m_PersonLaborage.MoveNext();
}
while(!m_PersonLaborage.IsEOF());
m_PersonLaborage.Requery();
m_PersonLaborage.Close();
ShowPersonLaborage();
//更新结算日期
OtherSet.Open();
OtherSet.MoveFirst();
OtherSet.Edit();
OtherSet.m_column2=CTime::GetCurrentTime();
OtherSet.Update();
OtherSet.Close();
}
void CMyView::OnGiveAllLanlorage()
{
// TODO: Add your command handler code here
int i=0;
m_PersonLaborage.Open();
if(m_PersonLaborage.IsEOF())
{
m_PersonLaborage.Close();
return;
}
m_PersonLaborage.MoveFirst();
do
{
m_PersonLaborage.Edit();
m_PersonLaborage.m_column5+=m_PersonLaborage.m_column4;
m_PersonLaborage.m_column4=0;
m_PersonLaborage.Update();
i++;
m_PersonLaborage.MoveNext();
}
while(!m_PersonLaborage.IsEOF());
m_PersonLaborage.Requery();
m_PersonLaborage.Close();
ShowPersonLaborage();
}
void CMyView::SortPersonRecord(BOOL isAsc,int secol)
{
if(m_PersonRecord.IsOpen()) m_PersonRecord.Close();
m_PersonRecord.Open();
CODBCFieldInfo fieldInfo;
m_PersonRecord.GetODBCFieldInfo(secol,fieldInfo);
if(isAsc)
{
m_PersonRecord.m_strSort=fieldInfo.m_strName+" ASC";
m_PersonRecordIsAsc=TRUE;
}
else
{
m_PersonRecord.m_strSort=fieldInfo.m_strName+" DESC";
m_PersonRecordIsAsc=FALSE;
}
m_PersonRecord.Requery();
m_PersonRecord.Close();
}
void CMyView::SortPersonLaborage(BOOL isAsc,int secol)
{
if(m_PersonLaborage.IsOpen()) m_PersonLaborage.Close();
m_PersonLaborage.Open();
CODBCFieldInfo fieldInfo;
m_PersonLaborage.GetODBCFieldInfo(secol,fieldInfo);
if(isAsc)
{
m_PersonLaborage.m_strSort=fieldInfo.m_strName+" ASC";
m_PersonLaborageIsAsc=TRUE;
}
else
{
m_PersonLaborage.m_strSort=fieldInfo.m_strName+" DESC";
m_PersonLaborageIsAsc=FALSE;
}
m_PersonLaborage.Requery();
m_PersonLaborage.Close();
}
void CMyView::OnColumnclickRecordlist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
int k= pNMListView->iSubItem;
if(k!=-1)
{
k++;
m_PersonRecordIsAsc=1-m_PersonRecordIsAsc;
SortPersonRecord(m_PersonRecordIsAsc,k);
ShowPersonRecord();
}
*pResult = 0;
}
void CMyView::OnColumnclickLaboragelist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
int k= pNMListView->iSubItem;
if(k!=-1)
{
k++;
m_PersonLaborageIsAsc=1-m_PersonLaborageIsAsc;
SortPersonLaborage(m_PersonLaborageIsAsc,k);
ShowPersonLaborage();
}
*pResult = 0;
}
void CMyView::OnViewAllrecord()
{
// TODO: Add your command handler code here
OnRecordFindall();
OnLaborageFindall();
}
void CMyView::OnRecordFind()
{
// TODO: Add your control notification handler code here
UpdateData();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -