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

📄 checkoutdlg.cpp

📁 系统主要包括住宿管理,客房管理,查询统计,报表管理,系统设置五个模块,适用于中小型宾馆酒店。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Checkoutdlg.cpp : implementation file
//

#include "stdafx.h"
#include "Myhotel.h"
#include "Checkoutdlg.h"
#include <stdlib.h>
#include <stdio.h>

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


extern CMyhotelApp theApp; 
extern CString loguserid;
/////////////////////////////////////////////////////////////////////////////
// CCheckoutdlg dialog


CCheckoutdlg::CCheckoutdlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCheckoutdlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCheckoutdlg)
	m_checkoutnumber = _T("");
	m_addr = _T("");
	m_checkoutbeizhu = _T("");
	m_discountkind = _T("");
	m_extramoney_kind = _T("");
	m_regnumber = _T("");
	m_discount = 0.0f;
	m_extramoney = _T("");
	m_name = _T("");
	m_prehandinmoney = _T("");
	m_realdays = 0.0f;
	m_realget_roommoney = _T("");
	m_reback_money = _T("");
	m_roomlevel = _T("");
	m_roomnumber = _T("");
	m_sum_roommoney = _T("");
	m_tel_money = _T("");
	m_park_money = _T("");
	m_mix_money = _T("");
	m_mend_money = _T("");
	m_meeting_money = _T("");
	m_checkout_zhenjiannumber = _T("");
	m_checkoutzhenjian_number = _T("");
	m_zhengjiankind = _T("");
	m_checkoutroommoney = _T("");
	m_showuser = _T("");
	//}}AFX_DATA_INIT
}


void CCheckoutdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCheckoutdlg)
	DDX_Control(pDX, IDC_checkindate_outdlg, m_checkindate);
	DDX_Control(pDX, IDC_COMBO_regnumber, m_regnumber_ctr);
	DDX_Text(pDX, IDC_checkoutnumber, m_checkoutnumber);
	DDX_Text(pDX, IDC_addr, m_addr);
	DDX_Text(pDX, IDC_checkoutbeizhu, m_checkoutbeizhu);
	DDX_CBString(pDX, IDC_COMBO_discountkind, m_discountkind);
	DDX_CBString(pDX, IDC_COMBO_extramoney_kind, m_extramoney_kind);
	DDX_CBString(pDX, IDC_COMBO_regnumber, m_regnumber);
	DDX_Text(pDX, IDC_discount, m_discount);
	DDX_Text(pDX, IDC_extramoney, m_extramoney);
	DDX_Text(pDX, IDC_name, m_name);
	DDX_Text(pDX, IDC_prehandin_money, m_prehandinmoney);
	DDX_Text(pDX, IDC_real_days, m_realdays);
	DDX_Text(pDX, IDC_realget_roommoney, m_realget_roommoney);
	DDX_Text(pDX, IDC_reback_money, m_reback_money);
	DDX_Text(pDX, IDC_roomlevel, m_roomlevel);
	DDX_Text(pDX, IDC_roomnumber, m_roomnumber);
	DDX_Text(pDX, IDC_sum_roommoney, m_sum_roommoney);
	DDX_Text(pDX, IDC_tel_money, m_tel_money);
	DDX_Text(pDX, IDC_park_money, m_park_money);
	DDX_Text(pDX, IDC_mix_money, m_mix_money);
	DDX_Text(pDX, IDC_mend_money, m_mend_money);
	DDX_Text(pDX, IDC_meeting_money, m_meeting_money);
	DDX_Text(pDX, IDC_checkout_idnumber, m_checkoutzhenjian_number);
	DDX_CBString(pDX, IDC_COMBOzhengjinkind, m_zhengjiankind);
	DDX_Text(pDX, IDC_EDIT_outroommoney, m_checkoutroommoney);
	DDX_Text(pDX, IDC_STATICshowuser, m_showuser);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCheckoutdlg, CDialog)
	//{{AFX_MSG_MAP(CCheckoutdlg)
	ON_BN_CLICKED(ID_BTN_checkout, OnBTNcheckout)
	ON_CBN_CLOSEUP(IDC_COMBO_regnumber, OnCloseupCOMBOregnumber)
	ON_EN_CHANGE(IDC_extramoney, OnChangeextramoney)
	ON_BN_CLICKED(IDCANCEL_outreg, Onoutreg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCheckoutdlg message handlers

BOOL CCheckoutdlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	
	// TODO: Add extra initialization here
		// 使用ADO创建数据库记录集
	m_pRecordset.CreateInstance(__uuidof(Recordset));

		_variant_t var;
		CString strregnumber;
	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 
	try
	{//打开数据库
		m_pRecordset->Open("SELECT * FROM checkinregtable",                // 查询 表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)//捕获打开数据库可能发生的异常情况并实时显示提示
	{
		AfxMessageBox(e->ErrorMessage());
	}
	try
	{
		if(!m_pRecordset->BOF)//判断指针是否在数据集最后
			m_pRecordset->MoveFirst();
		else
		{//提示错误,无数据
			AfxMessageBox("表内数据为空");
			return false;
		}

		// read data from the database table 
		while(!m_pRecordset->adoEOF)
		{
			var = m_pRecordset->GetCollect("凭证号码");
			if(var.vt != VT_NULL)
				strregnumber = (LPCSTR)_bstr_t(var);
			m_regnumber_ctr.AddString(strregnumber);//从数据库获得
			                                   //的内容给变量赋值
			m_pRecordset->MoveNext();//移动数据指针
		}

		// 
		
	}
	catch(_com_error *e)//捕获异常
	{
		AfxMessageBox(e->ErrorMessage());
	}

	// 关闭记录集
	m_pRecordset->Close();
	m_pRecordset = NULL;

	m_tel_money = "0";
	m_park_money = "0";
	m_mix_money = "0";
	m_mend_money = "0";
	m_meeting_money ="0";

    m_showuser=loguserid;
	//更新显示
	UpdateData(false);
	enable(0);
   //改变输入框状态

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

void CCheckoutdlg::OnBTNcheckout() 
{
	// TODO: Add your control notification handler code here
	
	enable(1);
	//改变输入框状态


}
void CCheckoutdlg::enable(bool bEnabled)
{
   // m_ComYSFS.EnableWindow(bEnabled);
	//改变输入框状态

	GetDlgItem(IDC_checkindate_outdlg)->EnableWindow(bEnabled);
	GetDlgItem(IDC_COMBO_regnumber)->EnableWindow(bEnabled);
	GetDlgItem(IDC_checkoutnumber)->EnableWindow(bEnabled);
	GetDlgItem(IDC_addr)->EnableWindow(bEnabled);
	GetDlgItem(IDC_checkoutbeizhu)->EnableWindow(bEnabled);
	GetDlgItem(IDC_COMBO_discountkind)->EnableWindow(bEnabled);
	GetDlgItem(IDC_COMBO_extramoney_kind)->EnableWindow(bEnabled);

	GetDlgItem(IDC_COMBO_regnumber)->EnableWindow(bEnabled);
	GetDlgItem(IDC_discount)->EnableWindow(bEnabled);
	GetDlgItem(IDC_extramoney)->EnableWindow(bEnabled);
	GetDlgItem(IDC_name)->EnableWindow(bEnabled);
	GetDlgItem(IDC_prehandin_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_real_days)->EnableWindow(bEnabled);
	GetDlgItem(IDC_realget_roommoney)->EnableWindow(bEnabled);
	GetDlgItem(IDC_reback_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_roomlevel)->EnableWindow(bEnabled);
	GetDlgItem(IDC_roomnumber)->EnableWindow(bEnabled);

	GetDlgItem(IDC_sum_roommoney)->EnableWindow(bEnabled);
	GetDlgItem(IDC_tel_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_park_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_mix_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_mend_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_meeting_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_checkout_idnumber)->EnableWindow(bEnabled);
	GetDlgItem(IDC_COMBOzhengjinkind)->EnableWindow(bEnabled);
	GetDlgItem(IDC_EDIT_outroommoney)->EnableWindow(bEnabled);
	GetDlgItem(IDOK)->EnableWindow(bEnabled);
	//改变输入框状态完毕

}

void CCheckoutdlg::OnCloseupCOMBOregnumber() 
{
	// TODO: Add your control notification handler code here
	
		_variant_t var;
	// 使用ADO创建数据库记录集
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 

	UpdateData(true);

	CString checkoutnumber;
	CString strsql;
    strsql.Format("SELECT * FROM checkinregtable where 凭证号码='%s'",m_regnumber);
	try// 打开数据库
	{
		m_pRecordset->Open(_variant_t(strsql),                // 查询 表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)
	{// 捕获可能发生的异常
		AfxMessageBox(e->ErrorMessage());
	}
    
	checkoutnumber+="T";
    checkoutnumber+=m_regnumber;
	
     // 生产退宿的凭证号码
	m_checkoutnumber =checkoutnumber;
    
	try
	{
		if(!m_pRecordset->BOF)//判断指针是否在数据集最后
			m_pRecordset->MoveFirst();
		else
		{// 
			MessageBox("表内数据为空","客房管理系统");
			return ;
		}

		//read data from the database table 
		// 读取数据表中姓名字段
			var = m_pRecordset->GetCollect("姓名");
			if(var.vt != VT_NULL)
		     	m_name = (LPCSTR)_bstr_t(var);
       // 读取数据表中证件名称字段
			var = m_pRecordset->GetCollect("证件名称");
			if(var.vt != VT_NULL)
		     	m_zhengjiankind = (LPCSTR)_bstr_t(var);
         // 读取数据表中证件号码字段
			var = m_pRecordset->GetCollect("证件号码");
			if(var.vt != VT_NULL)
		     	m_checkoutzhenjian_number = (LPCSTR)_bstr_t(var);
          // 读取数据表中详细地址字段
			var = m_pRecordset->GetCollect("详细地址");
			if(var.vt != VT_NULL)
		     	m_addr = (LPCSTR)_bstr_t(var);
          // 读取数据表中房间号字段
			var = m_pRecordset->GetCollect("房间号");
			if(var.vt != VT_NULL)
		     	m_roomnumber = (LPCSTR)_bstr_t(var);
          // 读取数据表中客房类型字段
			var = m_pRecordset->GetCollect("客房类型");
			if(var.vt != VT_NULL)
		     	m_roomlevel = (LPCSTR)_bstr_t(var);
          // 读取数据表中客房价格字段
			var = m_pRecordset->GetCollect("客房价格");
			if(var.vt != VT_NULL)
		     	m_checkoutroommoney = (LPCSTR)_bstr_t(var);


		//	CString checkindate;// 读取数据表中住宿日期字段
			var = m_pRecordset->GetCollect("住宿日期");
			if(var.vt != VT_NULL)
		     	checkindate = (LPCSTR)_bstr_t(var);
          // 读取数据表中住宿时间字段
			var = m_pRecordset->GetCollect("住宿时间");

⌨️ 快捷键说明

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