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

📄 employeemanager.cpp

📁 本人工作中的一个软件开发实例。里面包含了数据库
💻 CPP
字号:
// EmployeeManager.cpp : implementation file
//

#include "stdafx.h"
#include "OIL.h"
#include "EmployeeManager.h"
#include "EmployeeAdd.h"
#include "function.h"

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

extern COILApp  theApp;
/////////////////////////////////////////////////////////////////////////////
// CEmployeeManager dialog


CEmployeeManager::CEmployeeManager(CWnd* pParent /*=NULL*/)
	: CDialog(CEmployeeManager::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEmployeeManager)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CEmployeeManager::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEmployeeManager)
	DDX_Control(pDX, IDC_LIST_EMPLOYEE, m_listEmployee);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEmployeeManager, CDialog)
	//{{AFX_MSG_MAP(CEmployeeManager)
	ON_BN_CLICKED(IDC_EMPLOYEE_ADD, OnEmployeeAdd)
	ON_BN_CLICKED(IDC_EMPLOYEE_EDIT, OnEmployeeEdit)
	ON_BN_CLICKED(IDC_EMPLOYEE_DEL, OnEmployeeDel)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_EMPLOYEE, OnDblclkListEmployee)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEmployeeManager message handlers

void CEmployeeManager::OnEmployeeAdd() 
{
	// TODO: Add your control notification handler code here
	CEmployeeAdd  m_dlgEmployeeAdd;
    m_dlgEmployeeAdd.m_nDoWhat=ADD;   //增加员工

    if(m_dlgEmployeeAdd.DoModal()==IDOK)
	{
		//更新数据
		CString sql="select EmpID,EmpName,Duty,Sex,Title,Address,Telephone from employee";
		ReadtoListCtrl(&m_listEmployee,sql);
	}
}

void CEmployeeManager::OnEmployeeEdit() 
{
	// TODO: Add your control notification handler code here
	  
	POSITION pos = m_listEmployee.GetFirstSelectedItemPosition();
	//如果选中一行
	if(pos)
	{   
		int nItem = m_listEmployee.GetNextSelectedItem(pos);
		CEmployeeAdd m_dlgEmployeeAdd;
		
		//传送参数
		m_dlgEmployeeAdd.m_nDoWhat=EDIT;				//修改客户资料
		m_dlgEmployeeAdd.m_strEmpID				=m_listEmployee.GetItemText(nItem,0);
		m_dlgEmployeeAdd.m_strEmpName			=m_listEmployee.GetItemText(nItem,1);
		m_dlgEmployeeAdd.m_strDuty				=m_listEmployee.GetItemText(nItem,2);
		m_dlgEmployeeAdd.m_strSex	            =m_listEmployee.GetItemText(nItem,3);
        m_dlgEmployeeAdd.m_strTitle             =m_listEmployee.GetItemText(nItem,4);
		m_dlgEmployeeAdd.m_strTele				=m_listEmployee.GetItemText(nItem,5);
		m_dlgEmployeeAdd.m_strAddress			=m_listEmployee.GetItemText(nItem,6);
        //显示对话框	    
		if(m_dlgEmployeeAdd.DoModal()==IDOK)
		{
			//更新数据
			CString sql="select EmpID,EmpName,Duty,Sex,Title,Address,Telephone from employee";
			ReadtoListCtrl(&m_listEmployee,sql);
			//选中修改行	
			DispListCtrlRow(&m_listEmployee,nItem);
		}
	}
	else
		AfxMessageBox("请选择一行数据!");   
}

BOOL CEmployeeManager::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	// TODO: Add extra initialization here
	//设置List Control背景色及字体颜色
	m_listEmployee.SetBkColor(RGB(240,247,233));;
	m_listEmployee.SetTextColor(RGB(250,0,0));

	//清空List控件的数据
    for(int delcolumn=100;delcolumn>=0;delcolumn--)
		m_listEmployee.DeleteColumn(delcolumn);

	//设置List控件的列
    DWORD		dwStyle;
	RECT		rect;
	LV_COLUMN	lvc;
	dwStyle = m_listEmployee.GetStyle();
	dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS ;
	m_listEmployee.SetExtendedStyle(dwStyle);
	m_listEmployee.GetClientRect(&rect);
	lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
	lvc.fmt=LVCFMT_LEFT;

	lvc.iSubItem = 0;
	lvc.pszText = _T("编号");
	lvc.cx = 60;
	m_listEmployee.InsertColumn(1,&lvc);

	lvc.iSubItem = 1;
	lvc.pszText = _T("姓名");
	lvc.cx = 150;
	m_listEmployee.InsertColumn(2,&lvc);

    lvc.iSubItem = 2;
	lvc.pszText = _T("职责");
	lvc.cx = 60;
	m_listEmployee.InsertColumn(3,&lvc);

	lvc.iSubItem = 3;
	lvc.pszText = _T("姓别");
	lvc.cx = 60;
	m_listEmployee.InsertColumn(4,&lvc);

	lvc.iSubItem = 4;
	lvc.pszText = _T("职称");
	lvc.cx = 120;
	m_listEmployee.InsertColumn(5,&lvc);

	lvc.iSubItem = 5;
	lvc.pszText = _T("联系地址");
	lvc.cx = 80;
	m_listEmployee.InsertColumn(6,&lvc);

	lvc.iSubItem = 6;
	lvc.pszText = _T("联系电话");
	lvc.cx = 80;
	m_listEmployee.InsertColumn(7,&lvc);

    //显示数据
	CString sql="select EmpID,EmpName,Duty,Sex,Title,Address,Telephone from employee";
	ReadtoListCtrl(&m_listEmployee,sql);
    	
	//设置选取行
    int nItem=0;
	DispListCtrlRow(&m_listEmployee,nItem);

	return false;
	//return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CEmployeeManager::OnEmployeeDel() 
{
	// TODO: Add your control notification handler code here
	CString sql;
	POSITION pos = m_listEmployee.GetFirstSelectedItemPosition();

	//如果选中一行,则生成动态的sql语句
	if(pos)
	{   
		int nItem = m_listEmployee.GetNextSelectedItem(pos);
		if(!(AfxMessageBox("你真的要删除此计录?",MB_YESNO)==IDYES))
		{   
			DispListCtrlRow(&m_listEmployee,nItem);
			return;
		}

		//生成SQL语句		
        sql="delete employee where EmpID='"+m_listEmployee.GetItemText(nItem,0)+"'";	

		//执行此sql语句
		_variant_t	RecordsAffected;
		theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);

		//删除此行数据
		m_listEmployee.DeleteItem(nItem);

		//选中前一行数据
		if(nItem==0)
		{
			nItem=0;
		}
		else
		{
			nItem--;
		}		
		DispListCtrlRow(&m_listEmployee,nItem);
	}
	else
		AfxMessageBox("请选择一行数据!");
}

void CEmployeeManager::OnDblclkListEmployee(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	OnEmployeeEdit();
	*pResult = 0;
}

⌨️ 快捷键说明

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