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

📄 workermgrdlg.cpp

📁 只是老师布置的一个作业而已。VC下编写的加油站系统
💻 CPP
字号:
  // WorkerMgrDlg.cpp : implementation file
//

#include "stdafx.h"
#include "GasStation.h"
#include "WorkerMgrDlg.h"
#include "WorkerInfoDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CWorkerMgrDlg dialog


CWorkerMgrDlg::CWorkerMgrDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CWorkerMgrDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CWorkerMgrDlg)
	m_nNumber = 0;
	//}}AFX_DATA_INIT
}


void CWorkerMgrDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWorkerMgrDlg)
	DDX_Control(pDX, IDC_LIST_WORKER, m_listWorker);
	DDX_Text(pDX, IDC_EDIT_NUMBER, m_nNumber);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWorkerMgrDlg, CDialog)
	//{{AFX_MSG_MAP(CWorkerMgrDlg)
	ON_BN_CLICKED(ID_ADD, OnAdd)
	ON_BN_CLICKED(ID_MODIFY, OnModify)
	ON_BN_CLICKED(ID_REMOVE, OnRemove)
	ON_WM_SHOWWINDOW()
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_WORKER, OnDblclkListWorker)
	ON_BN_CLICKED(ID_SEARCH, OnSearch)
	ON_BN_CLICKED(ID_SEARCH_ALL, OnSearchAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWorkerMgrDlg message handlers

BOOL CWorkerMgrDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	//设置列表框控件
	const char *list_column[] = 
	{
		"编号",
		"姓名",
		"身份证号",
		"类型",
		""
	};
	int i=0;
	while (*list_column[i] != 0x00) {
		m_listWorker.InsertColumn(i, list_column[i++], LVCFMT_LEFT, 100);
	}
	m_listWorker.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CWorkerMgrDlg::OnAdd() 
{
	// TODO: Add your control notification handler code here
	int nNumber = -1;
	if (!ADOSQLServer.AutoAssignNumber("Worker", nNumber)) {
		MB_ERROR(" 无法添加工作人员信息,可能是数据库已满!");
		return ;
	}

	CWorkerInfoDlg workerInfoDlg;
	workerInfoDlg.m_nNumber = nNumber;
	if (workerInfoDlg.DoModal() == IDOK) {
		if (!ADOSQLServer.AddNewWorker(
			workerInfoDlg.m_nNumber,
			workerInfoDlg.m_strName,
			workerInfoDlg.m_strID,
			workerInfoDlg.m_nWorkerType,
			workerInfoDlg.m_strPassword)) 
		{
			MB_ERROR("添加工作人员信息失败!");
		}
		RefreshList();
	}
}

void CWorkerMgrDlg::OnModify() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_listWorker.GetSelectionMark();
	if (nItem == -1)
		return ;

	CWorkerInfoDlg workerInfoDlg;
	CString strNumber = m_listWorker.GetItemText(nItem, 0);
	GET_INT(workerInfoDlg.m_nNumber, strNumber);
	ADOSQLServer.GetWorker(
		workerInfoDlg.m_nNumber, 
		workerInfoDlg.m_strName,
		workerInfoDlg.m_strID,
		workerInfoDlg.m_nWorkerType,
		workerInfoDlg.m_strPassword);
	if (workerInfoDlg.DoModal() == IDOK) {
		if (!ADOSQLServer.ModifyWorker(
			workerInfoDlg.m_nNumber,
			workerInfoDlg.m_strName,
			workerInfoDlg.m_strID,
			workerInfoDlg.m_nWorkerType,
			workerInfoDlg.m_strPassword)) 
		{
			MB_ERROR("修改工作人员信息失败!");
		}
		RefreshList();
	}
}

void CWorkerMgrDlg::OnRemove() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_listWorker.GetSelectionMark();
	if (nItem == -1)
		return ;

	int nNumber;
	CString strNumber = m_listWorker.GetItemText(nItem, 0);
	GET_INT(nNumber, strNumber);

	if (MB_QUERY("确定要删除此项么?") == IDYES) {
		if (!ADOSQLServer.RemoveWorker(
			nNumber)) 
		{
			MB_ERROR("删除工作人员信息失败!");
		}
		RefreshList();
	}
}

void CWorkerMgrDlg::RefreshList()
{
	m_listWorker.DeleteAllItems();
	CStringArray strNumber, strName, strID, strType, strPassword;
	ADOSQLServer.GetWorkers(strNumber, strName, strID, strType, strPassword);
	for (int i=0;i<strNumber.GetSize();i ++) {
		m_listWorker.InsertItem(i, strNumber.GetAt(i));
		m_listWorker.SetItemText(i, 1, strName.GetAt(i));
		m_listWorker.SetItemText(i, 2, strID.GetAt(i));
		int nType;
		GET_INT(nType, strType.GetAt(i));
		switch (nType) {
		case 0:
			m_listWorker.SetItemText(i, 3, "销售员");
			break;
		case 1:
			m_listWorker.SetItemText(i, 3, "进货员");
			break;
		case 2:
			m_listWorker.SetItemText(i, 3, "会计");
			break;
		case 3:
			m_listWorker.SetItemText(i, 3, "经理");
			break;
		default:
			m_listWorker.SetItemText(i, 3, "未知类型");
			break;
		}	
	}
}

void CWorkerMgrDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	// TODO: Add your message handler code here
	RefreshList();
}

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

void CWorkerMgrDlg::OnSearch() 
{
	// TODO: Add your control notification handler code here
	m_listWorker.DeleteAllItems();
	UpdateData();

	int nType;
	CString strNumber, strName, strID, strPassword;	
	if (!ADOSQLServer.GetWorker(m_nNumber, strName, strID, nType, strPassword)) {
		MB_INFO("没有找到此编号的工作人员!");
		RefreshList();
		return ;
	}

	strNumber.Format("%d", m_nNumber);
	m_listWorker.InsertItem(0, strNumber);
	m_listWorker.SetItemText(0, 1, strName);
	m_listWorker.SetItemText(0, 2, strID);
	switch (nType) {
	case 0:
		m_listWorker.SetItemText(0, 3, "销售员");
		break;
	case 1:
		m_listWorker.SetItemText(0, 3, "进货员");
		break;
	case 2:
		m_listWorker.SetItemText(0, 3, "会计");
		break;
	case 3:
		m_listWorker.SetItemText(0, 3, "经理");
		break;
	default:
		m_listWorker.SetItemText(0, 3, "未知类型");
		break;
	}
}

void CWorkerMgrDlg::OnSearchAll() 
{
	// TODO: Add your control notification handler code here
	RefreshList();
}

⌨️ 快捷键说明

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