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

📄 人员管理系统view.cpp

📁 这个好像不错哦
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 人员管理系统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 + -