www.gusucode.com > VC++宾馆管理系统(Access)程序 > VC++宾馆管理系统(Access)程序\code\OrderDlg.cpp

    //Download by http://www.NewXing.com
// OrderDlg.cpp : implementation file
//

#include "stdafx.h"
#include "HotelManageSys.h"
#include "OrderDlg.h"
#include "Columns.h"
#include "Column.h"

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

/////////////////////////////////////////////////////////////////////////////
// COrderDlg dialog
extern CHotelManageSysApp theApp;

COrderDlg::COrderDlg(CWnd* pParent /*=NULL*/)
	: CDialog(COrderDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(COrderDlg)
	m_strOrderDinner = _T("");
	m_strOrderType = _T("");
	m_timeOrderD = 0;
	m_timeOrderT = 0;
	m_strOrderId = _T("");
	m_strOrderName = _T("");
	m_strOrderNums = _T("");
	m_nOrderPeople = 0;
	m_nOrderYajin = 0;
	//}}AFX_DATA_INIT
}


void COrderDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(COrderDlg)
	DDX_Control(pDX, IDC_DATETIMEPICKER_TIME, m_timectrlOrderT);
	DDX_Control(pDX, IDC_DATETIMEPICKER_DAY, m_timectrlOrderD);
	DDX_CBString(pDX, IDC_COMBO_DINNER, m_strOrderDinner);
	DDX_CBString(pDX, IDC_COMBO_ORDER_TYPE, m_strOrderType);
	DDX_Control(pDX, IDC_DATAGRID_ORDER, m_dgOrder);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_DAY, m_timeOrderD);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_TIME, m_timeOrderT);
	DDX_Text(pDX, IDC_EDIT_ORDER_ID, m_strOrderId);
	DDX_Text(pDX, IDC_EDIT_ORDER_NAME, m_strOrderName);
	DDX_Text(pDX, IDC_EDIT_ORDER_NUM, m_strOrderNums);
	DDX_Text(pDX, IDC_EDIT_ORDER_PEOPLE, m_nOrderPeople);
	DDX_Text(pDX, IDC_EDIT_ORDER_YAJIN, m_nOrderYajin);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(COrderDlg, CDialog)
	//{{AFX_MSG_MAP(COrderDlg)
	ON_EN_CHANGE(IDC_EDIT_ORDER_ID, OnChangeEditOrderId)
	ON_BN_CLICKED(IDC_ORDER_BTN, OnOrderBtn)
	ON_BN_CLICKED(IDC_DEL_ORDER_BTN, OnDelOrderBtn)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COrderDlg message handlers

BOOL COrderDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_strOrderDinner = _T("100");
	m_strOrderType = _T("会员");
	m_timeOrderD = 0;
	m_timeOrderT = 0;
	m_strOrderId = _T("0");
	m_strOrderName = _T("0");
	m_strOrderNums = _T("1");
	m_nOrderPeople = 0;
	m_nOrderYajin = 0;
	m_timeOrderD = CTime::GetCurrentTime();
	m_timeOrderT = CTime::GetCurrentTime();

	m_pRecordset.CreateInstance("ADODB.Recordset");
	m_pRecordset->Open("SELECT * FROM OrderInfo",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       
	
	m_dgOrder.SetRefDataSource(NULL);
	m_dgOrder.SetRefDataSource((LPUNKNOWN)m_pRecordset);
	m_dgOrder.SetColumnHeaders(2) ;
	
	_variant_t var;
	var = long(0);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("编号");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(40);
	var = long(1);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("类型");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(40);
	var = long(2);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("登记人");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(40);
	var = long(3);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("证件号");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(50);
	var = long(4);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("人数");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(30);
	var = long(5);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("入住日期");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(50);
	var = long(6);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("入住时间");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(50);
	var = long(7);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("订餐");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(30);
	var = long(8);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("押金");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(30);

	m_dgOrder.Refresh();

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

void COrderDlg::OnChangeEditOrderId() 
{	
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CString sql,str;
	sql = "select * from OrderInfo where ID = '"+m_strOrderId+"'";
	m_pRecordset.CreateInstance("ADODB.Recordset");
	m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       	

	if(m_pRecordset->GetRecordCount()!= 0)
	{
		m_strOrderType = m_pRecordset->GetCollect("OrderType").bstrVal;		
		m_strOrderName = m_pRecordset->GetCollect("OrderName").bstrVal;
		m_strOrderNums = m_pRecordset->GetCollect("OrderPaper").bstrVal;
		m_nOrderPeople = m_pRecordset->GetCollect("OrderAcount").lVal;

		str = m_pRecordset->GetCollect("StartDay").bstrVal;
		m_timectrlOrderD.SetFormat(str);

		str = m_pRecordset->GetCollect("StartTime").bstrVal;
		m_timectrlOrderT.SetFormat(str);
		
		int dinner = m_pRecordset->GetCollect("Dinner").lVal;
		m_strOrderDinner.Format("%d",dinner);
		
		m_nOrderYajin= m_pRecordset->GetCollect("Deposit").lVal;
	}
	else
	{
		m_strOrderDinner = _T("");
		m_strOrderType = _T("");
		m_timeOrderD = 0;
		m_timeOrderT = 0;
		m_strOrderName = _T("");
		m_strOrderNums = _T("");
		m_nOrderPeople = 0;
		m_nOrderYajin = 0;
	}
	m_pRecordset->Close();

	UpdateData(FALSE);		
}

void COrderDlg::OnOrderBtn() 
{
	// TODO: Add your control notification handler code here
	if( theApp.m_level%2 == 0)//取余
	{
		AfxMessageBox("您不具有添加订房信息的权限");
		return;
	}
	UpdateData(TRUE);
	CString sql,str;
	//将房间状态设置为“已满”
	_RecordsetPtr m_pRecordset_room;
	sql = "select * from RoomInformation where ID = '"+m_strOrderId+"'";
	m_pRecordset_room.CreateInstance("ADODB.Recordset");
	m_pRecordset_room->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       	
	if(m_pRecordset_room->GetRecordCount()!=0)
	{
		CString str;
		str=m_pRecordset_room->GetCollect("Status").bstrVal;
		if(str.CompareNoCase("已满")==0)
		{
			AfxMessageBox("该客房已满,请换个房间");
			return;
		}
		//
		//添加订房信息
		sql = "select * from OrderInfo ";
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       	
		
		
		
		if(	m_strOrderDinner == _T("")||m_strOrderType == _T("")||m_strOrderId ==_T("")||m_strOrderName == _T("")||	m_strOrderNums == _T(""))
		{
			AfxMessageBox("请输入完整信息");
			return;
		}
		m_pRecordset->AddNew();
		m_pRecordset->PutCollect("ID",(_variant_t)m_strOrderId);	
		m_pRecordset->PutCollect("OrderType",(_variant_t)m_strOrderType);
		m_pRecordset->PutCollect("OrderName",(_variant_t)m_strOrderName);
		m_pRecordset->PutCollect("OrderPaper",(_variant_t)m_strOrderNums);
		
		str.Format("%d",m_nOrderPeople);
		m_pRecordset->PutCollect("OrderAcount",(_variant_t)str);
		
		m_timeOrderD = CTime::GetCurrentTime();
		
		str.Format("%d-%d-%d",m_timeOrderD.GetYear(),m_timeOrderD.GetMonth(),m_timeOrderD.GetDay());	
		m_pRecordset->PutCollect("StartDay",(_variant_t)str);
		
		m_timeOrderT = CTime::GetCurrentTime();
		str.Format("%d:%d:%d",m_timeOrderT.GetHour(),m_timeOrderT.GetMinute(),m_timeOrderT.GetSecond());
		m_pRecordset->PutCollect("StartTime",(_variant_t)str);
		
		m_pRecordset->PutCollect("Dinner",(_variant_t)m_strOrderDinner);
		
		str.Format("%d",m_nOrderYajin);
		m_pRecordset->PutCollect("Deposit",(_variant_t)str);
		
		m_pRecordset->Update();
		m_pRecordset->Close();
		//
		
		m_pRecordset_room->PutCollect("Status",(_variant_t)"已满");
		m_pRecordset_room->Update();
	}
	else
	{
		AfxMessageBox("该客房不存在,订房失败!");
		return;
	}
	m_pRecordset_room->Close();

	
	UpdateList();
	UpdateData(FALSE);	
}


void COrderDlg::OnDelOrderBtn() 
{
	// TODO: Add your control notification handler code here
	if((!(theApp.m_level >=4 && theApp.m_level <= 7)) && (!(theApp.m_level >=12 && theApp.m_level <= 15)) )
	{
		AfxMessageBox("您不具有删除订房信息的权限");
		return;
	}
	UpdateData(TRUE);
	CString sql,str;
	//将房间状态设置为“空闲”
	_RecordsetPtr m_pRecordset_room;
	sql = "select * from RoomInformation where ID = '"+m_strOrderId+"'";
	m_pRecordset_room.CreateInstance("ADODB.Recordset");
	m_pRecordset_room->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       	
	if(m_pRecordset_room->GetRecordCount()>0)
	{
		m_pRecordset_room->PutCollect("Status",(_variant_t)"空闲");
		m_pRecordset_room->Update();
	}
	else
	{
		AfxMessageBox("没有该客房的信息,删除失败!");
		return;
	}
	m_pRecordset_room->Close();
	//
	sql = "select * from OrderInfo where ID='"+m_strOrderId+"'";
	
	m_pRecordset.CreateInstance("ADODB.Recordset");
	m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       	
	
	if(m_pRecordset->GetRecordCount()!=0)
		m_pRecordset->Delete(adAffectCurrent);
	else
	{
		AfxMessageBox("没有该客房的订房信息,删除失败!");
		return;
	}
	m_pRecordset->Update();
	m_pRecordset->Close();
	
	UpdateList();
	UpdateData(FALSE);	
}

void COrderDlg::UpdateList()
{
	m_pRecordset.CreateInstance("ADODB.Recordset");
	m_pRecordset->Open("SELECT * FROM OrderInfo",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       
	
	m_dgOrder.SetRefDataSource(NULL);
	m_dgOrder.SetRefDataSource((LPUNKNOWN)m_pRecordset);
	m_dgOrder.SetColumnHeaders(2) ;
	
	_variant_t var;
	var = long(0);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("编号");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(40);
	var = long(1);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("类型");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(40);
	var = long(2);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("登记人");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(40);
	var = long(3);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("证件号");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(50);
	var = long(4);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("人数");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(30);
	var = long(5);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("入住日期");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(50);
	var = long(6);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("入住时间");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(50);
	var = long(7);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("订餐");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(30);
	var = long(8);
	m_dgOrder.GetColumns().GetItem(var).SetCaption("押金");
	m_dgOrder.GetColumns().GetItem(var).SetWidth(30);

	m_dgOrder.Refresh();

	UpdateData(FALSE);		
}