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

📄 phonedlg.cpp

📁 本程序是一个宾馆程控电话系统
💻 CPP
字号:
// PhoneDlg.cpp : implementation file
//

#include "stdafx.h"
#include "tel2006.h"
#include "PhoneDlg.h"
#include "Phone2Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define VIEW_COLCOUNT 3

static char s_view_colname[VIEW_COLCOUNT][10] = {"分机号码", "房间号码","分机描述"};
static int s_view_colwidth[VIEW_COLCOUNT] = {120,120,180};

const int T_NUMBER = 0;
const int T_ROOMCODE =1;
const int T_DESCRIBE = 2;
/////////////////////////////////////////////////////////////////////////////
// CPhoneDlg dialog


CPhoneDlg::CPhoneDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPhoneDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPhoneDlg)
	//}}AFX_DATA_INIT
	//m_manager = new CDataManager();
}


void CPhoneDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPhoneDlg)
	DDX_Control(pDX, IDC_LIST, m_list);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPhoneDlg, CDialog)
	//{{AFX_MSG_MAP(CPhoneDlg)
	ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
	ON_BN_CLICKED(IDC_DEL_BUTTON, OnDelButton)
	ON_BN_CLICKED(IDC_MODIFY_BUTTON, OnModifyButton)
	ON_BN_CLICKED(IDC_EXIT_BUTTON, OnExitButton)
	ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPhoneDlg message handlers

BOOL CPhoneDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	InitList();
	m_AdoConn.OnInitADOConn(".");
	ShowList();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPhoneDlg::OnAddButton() 
{
	// TODO: Add your control notification handler code here
	CPhone2Dlg dlg;
	if ( IDCANCEL == dlg.DoModal() ) return;

	if(!JudgeNumber(dlg.GetNumber()))
	{
		AfxMessageBox("号码错误!");
		return;
	}
	/*if(JudgeRoomCode(dlg.GetRoomCode()))
	{
		AfxMessageBox("房间编号错误!");
		return;
	}*/
	InsertData(dlg.GetNumber(),dlg.GetRoomCode(),dlg.GetDescribe());
	AddList(dlg.GetNumber(),dlg.GetRoomCode(),dlg.GetDescribe());
	
}

void CPhoneDlg::OnDelButton() 
{
	// TODO: Add your control notification handler code here
	int n = m_list.GetSelectionMark();
	
	DeleteData(m_list.GetItemText(n,T_NUMBER));
	m_list.DeleteItem(n);
	//GetDlgItem(IDC_NUMBER)->SetWindowText("");
 	//GetDlgItem(IDC_ROOMCODE)->SetWindowText("");
 	//GetDlgItem(IDC_DESCRIBE)->SetWindowText("");
	UpdateData(false);
}

void CPhoneDlg::OnModifyButton() 
{
	// TODO: Add your control notification handler code here
	CPhone2Dlg dlg;
	int n=  m_list.GetSelectionMark();
	dlg.SetNumber(m_list.GetItemText(n,T_NUMBER));
	dlg.SetRoomCode(m_list.GetItemText(n,T_ROOMCODE));
	dlg.SetDescribe(m_list.GetItemText(n,T_DESCRIBE));

	if ( IDCANCEL == dlg.DoModal() ) return;

	if(atoi(m_list.GetItemText(n,T_NUMBER))<8000 || atoi(m_list.GetItemText(n,T_NUMBER))>8999)
	{
		AfxMessageBox("号码错误");
		return;
	}
	ModifyData(m_list.GetItemText(n,T_NUMBER),dlg.GetNumber(),dlg.GetRoomCode(),dlg.GetDescribe());
	ModifyList(dlg.GetNumber(),dlg.GetRoomCode(),dlg.GetDescribe());
	/*if(JudgeRoomCode(dlg.GetRoomCode()))
	{
		AfxMessageBox("房间编号错误!");
		return;
	}
	ModifyData(m_list.GetItemText(n,T_NUMBER),dlg.GetNumber(),dlg.GetRoomCode(),dlg.GetDescribe());
	ModifyList(dlg.GetNumber(),dlg.GetRoomCode(),dlg.GetDescribe());*/
}

void CPhoneDlg::OnExitButton() 
{
	// TODO: Add your control notification handler code here
	m_AdoConn.ExitConnect();
	//delete(m_manager);
	CDialog::OnCancel();
}

/*******************************
 *	InitList
 *
 *	Remark:	初始化List控件
 ******************************/

void CPhoneDlg::InitList()
{
	LV_COLUMN lvC;
	int i;
	
	ListView_SetImageList(m_list.m_hWnd, ImageList_Create(1, 16, ILC_COLOR, 1, 1), LVSIL_SMALL);
	ListView_SetExtendedListViewStyle(m_list.m_hWnd, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
	
	lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvC.fmt = LVCFMT_LEFT;
	for (i = 0; i < VIEW_COLCOUNT; i++) 
	{
		lvC.pszText = s_view_colname[i];
		lvC.cx = s_view_colwidth[i];
		lvC.iSubItem = i;
		if (ListView_InsertColumn(m_list.m_hWnd, i, &lvC) == -1) return;
	}
	ListView_SetItemCount(m_list.m_hWnd, VIEW_COLCOUNT);
	//m_list.SetSelectionMark(1);
}


/*********************************************** 
 *  函数名: CPhoneDlg::ShowList
 * 
 *  功  能: 显示
 *
 *  返回值: void 
 ***********************************************/

void CPhoneDlg::ShowList()
{
	_variant_t var;
	CString strCount("");
	
	//ADOConn m_AdoConn;
	//m_AdoConn.OnInitADOConn(m_strDataBase);	
	
	//设置SELECT语句
	CString strSQL;
	
	strSQL.Format("select T_Number,T_RoomCode,T_Describe from R_TelPhone");
	_bstr_t vSQL =strSQL;
	
	_RecordsetPtr m_pRecordset;
	m_pRecordset = m_AdoConn.GetRecordSet(vSQL);
	
	// Get RecordCout
	
	long lCount = 0;
	lCount = m_pRecordset->GetRecordCount();
	if (lCount == -1)
	{
		if (m_pRecordset->adoEOF != VARIANT_TRUE) 
			m_pRecordset->MoveFirst();
		
		while (m_pRecordset->adoEOF != VARIANT_TRUE)
		{
			lCount++;
			m_pRecordset->MoveNext();
		}
		if (lCount >=0) 
			m_pRecordset->MoveFirst();
	}
	int n = 0;
	m_list.DeleteAllItems();
	m_list.Invalidate(TRUE);

	while(!m_pRecordset->adoEOF)
	{
		m_list.InsertItem(n,"");

		var = m_pRecordset->GetCollect("T_Number");
		if(var.vt != VT_NULL)
			m_list.SetItemText(n,T_NUMBER,(LPCSTR)_bstr_t(var));

		var = m_pRecordset->GetCollect("T_RoomCode");
		if(var.vt != VT_NULL)
			m_list.SetItemText(n,T_ROOMCODE,(LPCSTR)_bstr_t(var));

		var = m_pRecordset->GetCollect("T_Describe");
		if(var.vt != VT_NULL)
			m_list.SetItemText(n,T_DESCRIBE,(LPCSTR)_bstr_t(var));
		n++;
		m_pRecordset->MoveNext();
	}
	//m_AdoConn.ExitConnect();
}


void CPhoneDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	//int n = m_list.GetSelectionMark();
	//GetDlgItem(IDC_NUMBER)->SetWindowText(m_list.GetItemText(n,T_NUMBER));
 	//GetDlgItem(IDC_ROOMCODE)->SetWindowText(m_list.GetItemText(n,T_ROOMCODE));
 	//GetDlgItem(IDC_DESCRIBE)->SetWindowText(m_list.GetItemText(n,T_DESCRIBE));
	//UpdateData(false);
	*pResult = 0;
}

void CPhoneDlg::DeleteData(CString strNumber)
{
	CString strSQL("");

	try
	{
	//ADOConn m_AdoConn;
	//m_AdoConn.OnInitADOConn(m_strDataBase);
	strSQL.Format("Delete from R_TelPhone where T_Number = '%s'",strNumber);
	//strSQL.Format("INSERT INTO F_(PSerial) VALUES('%s')","123");
	
	_bstr_t vSQL =strSQL;
	m_AdoConn.ExecuteSQL(vSQL);
	}
	catch (_com_error e) 
	{
		CString errormessage;
		
		errormessage.Format("自定义错误信息2:%s",e.ErrorMessage());
		
		AfxMessageBox(errormessage);///显示错误信息
	}
}


void CPhoneDlg::InsertData(CString strNumber,CString strRoomCode,CString strDescribe)
{
	CString strSQL("");

	try
	{
		strSQL.Format ("INSERT INTO R_TelPhone(T_Number,T_RoomCode,T_Describe,T_DeptID)\
		VALUES('%s','%s','%s','%s')",\
		strNumber,strRoomCode,strDescribe,"00");
		_bstr_t vSQL =strSQL;
		m_AdoConn.ExecuteSQL(vSQL);
	}
	catch (_com_error e) 
	{
		CString errormessage;		
		errormessage.Format("自定义错误信息3:%s",e.ErrorMessage());		
		AfxMessageBox(errormessage);///显示错误信息
	}
}
void CPhoneDlg::ModifyData(CString strOldNumber,CString strNumber,CString strRoomCode,CString strDescribe)
{
	CString strSQL("");

	try
	{
	//ADOConn m_AdoConn;
	//m_AdoConn.OnInitADOConn(m_strDataBase);
	//strSQL.Format("Delete from R_TelPhone where T_Number = '%s'",strNumber);
	strSQL.Format("update R_TelPhone SET T_Number = '%s',T_RoomCode= '%s',T_Describe = '%s' WHERE T_Number ='%s'",\
		strNumber,strRoomCode,strDescribe,strOldNumber);
	
	_bstr_t vSQL =strSQL;
	m_AdoConn.ExecuteSQL(vSQL);
	}
	catch (_com_error e) 
	{
		CString errormessage;
		errormessage.Format("自定义错误信息3:%s",e.ErrorMessage());
		AfxMessageBox(errormessage);///显示错误信息
	}
}


BOOL CPhoneDlg::JudgeNumber(CString strNumber)
{
	if(atoi(strNumber)<8000 || atoi(strNumber)>8999)
		return false;
	_variant_t var;
	
	//设置SELECT语句
	CString strSQL;
	strSQL.Format( "SELECT T_Number FROM R_TelPhone WHERE T_Number = '%s'",strNumber);
	_bstr_t vSQL =strSQL;
	
	_RecordsetPtr m_pRecordset;
	m_pRecordset = m_AdoConn.GetRecordSet(vSQL);
	
	// Get RecordCout
	long lCount = 0;
	lCount = m_pRecordset->GetRecordCount();
	if (lCount == -1)
	{
		if (m_pRecordset->adoEOF != VARIANT_TRUE) 
			m_pRecordset->MoveFirst();
		
		while (m_pRecordset->adoEOF != VARIANT_TRUE)
		{
			lCount++;
			m_pRecordset->MoveNext();
		}
		if (lCount >=0) 
			m_pRecordset->MoveFirst();
		else
			return true;
	}
	return false;
}

BOOL CPhoneDlg::JudgeRoomCode(CString strRoomCode)
{
	_variant_t var;
	
	//设置SELECT语句
	CString strSQL;
	strSQL.Format( "SELECT * FROM F_Tables , s_parlor \
		WHERE (f_tables.ParlorCode = s_parlor.parlorCode)\
		and s_parlor.parlortype = '05'and f_tables.TableCode = '%s'",strRoomCode);
	_bstr_t vSQL =strSQL;
	
	_RecordsetPtr m_pRecordset;
	m_pRecordset = m_AdoConn.GetRecordSet(vSQL);
	
	// Get RecordCout
	long lCount = 0;
	lCount = m_pRecordset->GetRecordCount();
	if (lCount == -1)
	{
		if (m_pRecordset->adoEOF != VARIANT_TRUE) 
			m_pRecordset->MoveFirst();
		
		while (m_pRecordset->adoEOF != VARIANT_TRUE)
		{
			lCount++;
			m_pRecordset->MoveNext();
		}
		if (lCount >=0) 
			m_pRecordset->MoveFirst();
		else
			return false;
	}
	return true;
}

/*************************************
 *	AddList
 *
 *	Parameters:	structData	// 结构体
 *
 *	Remark:	添加入ListView中,显示
 ************************************/

void CPhoneDlg::AddList(CString strNumber,CString strRoomCode,CString strDescribe)
{
	int Count = m_list.GetItemCount();

	m_list.InsertItem(Count,"");
	m_list.SetItemText(Count,T_NUMBER,strNumber);
	m_list.SetItemText(Count,T_ROOMCODE,strRoomCode);
	m_list.SetItemText(Count,T_DESCRIBE,strDescribe);
}

void CPhoneDlg::ModifyList(CString strNumber,CString strRoomCode,CString strDescribe)
{
	//int Count = m_list.GetItemCount();

	//m_list.InsertItem(Count,"");
	int n = m_list.GetSelectionMark();
	m_list.SetItemText(n,T_NUMBER,strNumber);
	m_list.SetItemText(n,T_ROOMCODE,strRoomCode);
	m_list.SetItemText(n,T_DESCRIBE,strDescribe);
	
	UpdateData(false);
}

⌨️ 快捷键说明

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