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

📄 workerinfo.cpp

📁 一个空调安装工工资计算
💻 CPP
字号:
// WORKERINFO.cpp : implementation file
//

#include "stdafx.h"
#include "工资管理系统.h"
#include "WORKERINFO.h"
#include "EditWare.h"

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

/////////////////////////////////////////////////////////////////////////////
// CWORKERINFO dialog


CWORKERINFO::CWORKERINFO(CWnd* pParent /*=NULL*/)
	: CDialog(CWORKERINFO::IDD, pParent)
{
	//{{AFX_DATA_INIT(CWORKERINFO)
	m_selet = -1;
	m_neirong = _T("");
	m_emb = -1;
	m_tongji = _T("");
	//}}AFX_DATA_INIT
}


void CWORKERINFO::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWORKERINFO)
	DDX_Control(pDX, IDC_WORKER_LIST, m_worker);
	DDX_CBIndex(pDX, IDC_TIAOJIAN_COMBO, m_selet);
	DDX_Text(pDX, IDC_NEIRONG_EDIT, m_neirong);
	DDX_CBIndex(pDX, IDC_EMB_COMBO, m_emb);
	DDX_Text(pDX, IDC_STATIC_TONGJI, m_tongji);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWORKERINFO, CDialog)
	//{{AFX_MSG_MAP(CWORKERINFO)
	ON_NOTIFY(NM_RCLICK, IDC_WORKER_LIST, OnRclickWorkerList)
	ON_COMMAND(IDD_DELETE, OnDelete)
	ON_COMMAND(IDD_ADDNEW, OnAddnew)
	ON_COMMAND(IDD_UPDATE, OnUpdate)
	ON_BN_CLICKED(IDC_FIND_BUT, OnFindBut)
	ON_COMMAND(IDD_RUSH, OnRush)
	ON_BN_CLICKED(IDC_RUSH_BUT, OnRushBut)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWORKERINFO message handlers

void CWORKERINFO::OnOK() 
{

}

/***************对话框初始化消息响应********************/
BOOL CWORKERINFO::OnInitDialog() 
{
	CDialog::OnInitDialog();
    //创建状态栏
	TBBUTTON button;
	CString str;
	m_StatusBar.EnableAutomation();
	m_StatusBar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,ID_STATUSBAR);
	int width[]={300,500};
	m_StatusBar.SetParts(2, &width[0]);
	m_StatusBar.SetText(str,0,0);
	m_StatusBar.SetText("程序设计:吴晓宁",0,0);
	m_StatusBar.SetText("欢迎使用工资管理系统 V1.2版",0,1);
 
	DWORD dwSytle=::GetWindowLong(m_worker.m_hWnd,GWL_STYLE);
    // 设置为报表形式
    SetWindowLong(m_worker.m_hWnd,GWL_STYLE,dwSytle|LVS_REPORT);
    DWORD ExStyle=m_worker.GetExtendedStyle();
    // 设置为报表形式
    m_worker.SetExtendedStyle(ExStyle|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
    // 初始化列表控件
    m_worker.InsertColumn(0,"编号",LVCFMT_CENTER,30,0);
    m_worker.InsertColumn(1,"姓名",LVCFMT_CENTER,100,0);
	m_worker.InsertColumn(2,"性别",LVCFMT_CENTER,40,0);
    m_worker.InsertColumn(3,"联系电话",LVCFMT_CENTER,140,0);
    m_worker.InsertColumn(4,"备          注",LVCFMT_CENTER,140,0);
    
    rst.CreateInstance(__uuidof(Recordset));
    rst=cnn->Execute("员工信息表",NULL,adCmdTable);
    rst->MoveFirst();
	int nCount=GetRecordsetCount();
	CString s;
	//初始化列表控件内容
    for(int i=0;i<nCount;i++)
	{
       s.Format("%d",i+1);
       int iPos=m_worker.InsertItem(i,s);
	   m_worker.SetItemText(iPos,1,GetFieldValue("姓名"));
       m_worker.SetItemText(iPos,2,GetFieldValue("性别"));
       m_worker.SetItemText(iPos,3,GetFieldValue("联系电话"));
       m_worker.SetItemText(iPos,4,GetFieldValue("备注"));
	   rst->MoveNext();
	 }
	if(nCount<=0)
	{
		AfxMessageBox("当前无记录,请添加记录!");
		return TRUE;
	}
    str.Format("【本系统共有员工%d名】",nCount);
    m_tongji=str;
	UpdateData(FALSE);
	return TRUE;  
}

/************获取记录总数*************/
int CWORKERINFO::GetRecordsetCount()
{
   int nCount = 0;
   try{
       rst->MoveFirst();
   }
   catch(...)
   {
	   return 0;
   }
   if(rst->_EOF)
	   return 0;
   while(!rst->_EOF)
   {
	   rst->MoveNext();
	   nCount=nCount+1;
   }
   rst->MoveFirst();
   return nCount;
}

/*************得到数据库中指定字段的内容************/
CString CWORKERINFO::GetFieldValue(CString Field)
{
   CString sValue;
   _variant_t value;
   value=rst->GetCollect((_bstr_t)Field);
   if(value.vt==VT_EMPTY||value.vt==VT_NULL)
	   sValue="";
   else
   {
	   sValue=(char*)(_bstr_t)value;
	   sValue.TrimRight();
	   sValue.TrimLeft();
   }
   return sValue;
}


/******************列表控件的鼠标右键消息响应*********************/
void CWORKERINFO::OnRclickWorkerList(NMHDR* pNMHDR, LRESULT* pResult) 
{

    CMenu  menu ,* pSubMenu;//定义下面要用到的cmenu对象
    menu.LoadMenu(IDR_MENU_WORKER);//装载自定义的右键菜单
    pSubMenu = menu.GetSubMenu(0);//获取第一个弹出菜单,所以第一个菜单必须有子菜单
    CPoint oPoint;//定义一个用于确定光标位置的位置
    GetCursorPos( &oPoint);//获取当前光标的位置,以便使得菜单可以跟随光标
	if(m_worker.GetFirstSelectedItemPosition()==0)//GetFirstSelectedItemPosition();可得到选择的项,点击空白处,pos为0,返回即可
	{
		menu.EnableMenuItem(IDD_DELETE,MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);//设置删除菜单不可用
		menu.EnableMenuItem(IDD_UPDATE,MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);//设置修改菜单不可用
	}
    pSubMenu->TrackPopupMenu (TPM_LEFTALIGN, oPoint.x, oPoint.y, this); //在指定位置显示弹出菜单
	*pResult = 0;
}


/***********删除按钮响应函数**************/
void CWORKERINFO::OnDelete() 
{
	if(MessageBox("您确定删除该条记录?","删除确认",MB_ICONQUESTION|MB_OKCANCEL)==1)
	{
       int Row;
	   Row=m_worker.GetSelectionMark();
	   CString sSQL,sName;
       sName=m_worker.GetItemText(Row,1);
	   m_worker.DeleteItem(Row);
       sSQL.Format("DELETE FROM 员工信息表 WHERE 姓名='%s'",sName);
       rst=cnn->Execute((_bstr_t)sSQL,NULL,adCmdText);
	}
	else
		return;
}

/*************添加新记录**********/
void CWORKERINFO::OnAddnew() 
{
   CEditWare dlg;
   dlg.Enable=TRUE;
   dlg.DoModal();
}

/************修改记录************/
void CWORKERINFO::OnUpdate() 
{
   CEditWare dlg;
   int Row=m_worker.GetSelectionMark();
   dlg.m_ID  =m_worker.GetItemText(Row,0);
   dlg.m_name=m_worker.GetItemText(Row,1);
   if(m_worker.GetItemText(Row,2)=="男")
      dlg.m_sex=0;
   else
      dlg.m_sex=1;
   dlg.m_tele=m_worker.GetItemText(Row,3);
   dlg.m_beizhu=m_worker.GetItemText(Row,4);
   dlg.Enable=FALSE;
   UpdateData(FALSE);
   dlg.DoModal();
}


/***********查询************/
void CWORKERINFO::OnFindBut() 
{
	m_worker.DeleteAllItems();
	CString sSQL,CellText;

	UpdateData(TRUE);
	switch(m_selet)
	{
	     case 0:
			 {
			 if(m_emb==0)
               sSQL.Format("SELECT * from 员工信息表 WHERE 姓名 LIKE '%s%%'",m_neirong);
			 else
               sSQL.Format("SELECT * from 员工信息表 WHERE 姓名 = '%s'",m_neirong);
			 }
             break;
		 case 1:
			 {
			 if(m_emb==0)
                sSQL.Format("SELECT * from 员工信息表 WHERE 联系电话 LIKE '%s%%'",m_neirong);
			 else
				sSQL.Format("SELECT * from 员工信息表 WHERE 联系电话 = '%s'",m_neirong);
			 }
			 break;
		 case 2:
			 {
			 if(m_emb==0)
                sSQL.Format("SELECT * from 员工信息表 WHERE 备注 LIKE '%s%%'",m_neirong);
			 else
				sSQL.Format("SELECT * from 员工信息表 WHERE 备注 = '%s'",m_neirong);
			 }
             break;
			
	}
	rst=cnn->Execute((_bstr_t)sSQL,NULL,adCmdText);
//确定插入列表的行数
	for(int i=0;i<theApp.GetRecordCount(rst);i++)
	{
		m_worker.InsertItem(i,"");
	}
//确定插入列表的内容
	for( i=0;i<theApp.GetRecordCount(rst);i++)
	{
		rst->MoveFirst();
		rst->Move(i);
		for(int j=0;j<rst->GetFields()->GetCount();j++)
		{
			CellText=(char*)(_bstr_t)rst->GetFields()->GetItem((long)j)->Value;
			m_worker.SetItemText(i,j,CellText);
		}
	}	
}


void CWORKERINFO::OnRush() 
{
    m_worker.DeleteAllItems();
    CString s,str;
	//初始化列表控件内容
	rst=cnn->Execute("员工信息表",NULL,adCmdTable);
    rst->MoveFirst();
	int nCount=GetRecordsetCount();
    for(int i=0;i<nCount;i++)
	{
       s.Format("%d",i+1);
       int iPos=m_worker.InsertItem(i,s);
	   m_worker.SetItemText(iPos,1,GetFieldValue("姓名"));
       m_worker.SetItemText(iPos,2,GetFieldValue("性别"));
       m_worker.SetItemText(iPos,3,GetFieldValue("联系电话"));
       m_worker.SetItemText(iPos,4,GetFieldValue("备注"));
	   rst->MoveNext();
	 }
    str.Format("【本系统共有员工%d名】",nCount);
    m_tongji=str;
	UpdateData(FALSE);
	
}

void CWORKERINFO::OnRushBut() 
{
   OnRush();
	
}

⌨️ 快捷键说明

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