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

📄 checkinregdlg.cpp

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

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


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

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


CCheckinregdlg::CCheckinregdlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCheckinregdlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCheckinregdlg)
	m_regnumber = _T("");
	m_gustname = _T("");
	m_gustaddr = _T("");
	m_beizhu = _T("");
	m_pre_discount = 0.0f;
	m_roomlevel = _T("");
	m_zhengjian_number = _T("");
	m_checkinreg_reason = _T("");
	m_discount_kind = _T("");
	m_roomnumber = _T("");
	m_zhengjian = _T("");
	m_checkindate = 0;
	m_alarmdate = 0;
	m_alarmtime = 0;
	m_checkintime = 0;
	m_checkoutdate = 0;
	m_checkouttime = 0;
	m_checkdays = 0.0;
	m_discountnumber = 0.0;
	m_realmoney = _T("");
	m_pre_handinmoney = _T("");
	m_showuser = _T("");
	issave = false;
	//}}AFX_DATA_INIT
}


void CCheckinregdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCheckinregdlg)
	DDX_Control(pDX, IDC_DATETIMEPICKER_checkindate, m_checkindatectr);
	DDX_Control(pDX, IDC_COMBO_roomnumber, m_roomnumberctr);
	DDX_Control(pDX, IDC_room_money, m_room_money);
	DDX_Text(pDX, IDC_EDIT_NO, m_regnumber);
	DDX_Text(pDX, IDC_EDIT_name, m_gustname);
	DDX_Text(pDX, IDC_EDIT_address, m_gustaddr);
	DDX_Text(pDX, IDC_EDIT1_beizhu, m_beizhu);
	DDX_Text(pDX, IDC_pre_discount, m_pre_discount);
	DDX_Text(pDX, IDC_room_level, m_roomlevel);
	DDX_Text(pDX, IDC_zhengjian_number, m_zhengjian_number);
	DDX_Text(pDX, IDC_checkinreg_reason, m_checkinreg_reason);
	DDX_CBString(pDX, IDC_COMBO_discountkind, m_discount_kind);
	DDX_CBString(pDX, IDC_COMBO_roomnumber, m_roomnumber);
	DDX_CBString(pDX, IDC_COMBO_zhengjian, m_zhengjian);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_checkindate, m_checkindate);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKERalarmdate, m_alarmdate);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKERalarmtime, m_alarmtime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKERcheckintime, m_checkintime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKERcheckoutdate, m_checkoutdate);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKERcheckouttime, m_checkouttime);
	DDX_Text(pDX, IDC_EDIT_check_days, m_checkdays);
	DDX_Text(pDX, IDC_discountnumber, m_discountnumber);
	DDX_Text(pDX, IDC_realmoney, m_realmoney);
	DDX_Text(pDX, IDC_pre_handinmoney, m_pre_handinmoney);
	DDX_Text(pDX, IDC_STATICshowuser, m_showuser);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCheckinregdlg, CDialog)
	//{{AFX_MSG_MAP(CCheckinregdlg)
	ON_WM_KEYUP()
	ON_BN_CLICKED(ID_checkreg, Oncheckreg)
	ON_EN_CHANGE(IDC_EDIT_check_days, OnChangeEDITcheckdays)
	ON_CBN_CLOSEUP(IDC_COMBO_roomnumber, OnCloseupCOMBOroomnumber)
	ON_EN_CHANGE(IDC_discountnumber, OnChangediscountnumber)
	ON_BN_CLICKED(ID_CANCEL, OnCancel_regin)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCheckinregdlg message handlers

void CCheckinregdlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
   
//	atof(m_realmoney)*m_discountnumber/100
     
	CDialog::OnKeyUp(nChar, nRepCnt, nFlags);
}
void CCheckinregdlg::enable(bool bEnabled)
{
   // m_ComYSFS.EnableWindow(bEnabled);
	//更改输入框等控件状态,方便使用,防止错误操作
    GetDlgItem(IDC_room_money)->EnableWindow(bEnabled);
	GetDlgItem(IDC_EDIT_NO)->EnableWindow(bEnabled);
	GetDlgItem(IDC_EDIT_name)->EnableWindow(bEnabled);
	GetDlgItem(IDC_EDIT_address)->EnableWindow(bEnabled);
	GetDlgItem(IDC_EDIT1_beizhu)->EnableWindow(bEnabled);
	GetDlgItem(IDC_pre_discount)->EnableWindow(bEnabled);
	GetDlgItem(IDC_zhengjian_number)->EnableWindow(bEnabled);
	GetDlgItem(IDC_checkinreg_reason)->EnableWindow(bEnabled);
	GetDlgItem(IDC_COMBO_roomnumber)->EnableWindow(bEnabled);
 
	GetDlgItem(IDC_DATETIMEPICKER_checkindate)->EnableWindow(bEnabled);
	GetDlgItem(IDC_DATETIMEPICKERalarmdate)->EnableWindow(bEnabled);
	GetDlgItem(IDC_DATETIMEPICKERalarmtime)->EnableWindow(bEnabled);
	GetDlgItem(IDC_DATETIMEPICKERcheckintime)->EnableWindow(bEnabled);
	GetDlgItem(IDC_DATETIMEPICKERcheckoutdate)->EnableWindow(bEnabled);
	GetDlgItem(IDC_DATETIMEPICKERcheckouttime)->EnableWindow(bEnabled);
	GetDlgItem(IDC_EDIT_check_days)->EnableWindow(bEnabled);
	GetDlgItem(IDC_discountnumber)->EnableWindow(bEnabled);
	GetDlgItem(IDC_realmoney)->EnableWindow(bEnabled);
	GetDlgItem(IDC_pre_handinmoney)->EnableWindow(bEnabled);
	GetDlgItem(IDC_room_level)->EnableWindow(bEnabled);
	GetDlgItem(IDOK)->EnableWindow(bEnabled);
}


BOOL CCheckinregdlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	enable(0);//
	//更新输入框状态
    int nYear,nDay,nMonth;
	CString sYear,sDay,sMonth,stime;
	CTime tTime;
 	tTime=tTime.GetCurrentTime(); 
	//设置登记的默认时间
    m_checkindate=tTime;
    m_checkintime=tTime;
    
	m_showuser=loguserid;
    
	//显示初始化信息
	UpdateData(false);

	m_pRecordset.CreateInstance(__uuidof(Recordset));

		_variant_t var;
		CString strroomnumber;
	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 
	try
	{
		m_pRecordset->Open("SELECT * FROM roomsetting",                // 查询 表中所有字段
							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 
	
		CComboBox* combobox = (CComboBox*)GetDlgItem(IDC_COMBO_roomnumber);
		while(!m_pRecordset->adoEOF)
		{//读取房间号
			var = m_pRecordset->GetCollect("房间号");
			if(var.vt != VT_NULL)
				strroomnumber = (LPCSTR)_bstr_t(var);
			combobox->AddString(strroomnumber);//添加到列表

			m_pRecordset->MoveNext();//移动记录集指针
		}

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

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


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

void CCheckinregdlg::Oncheckreg() 
{
	// TODO: Add your control notification handler code here
	enable(1);
	
	CString strnowdate,strcheckinnumber;

	int nYear,nDay,nMonth;
	CString sYear,sDay,sMonth;
	CTime tTime;
 	tTime=tTime.GetCurrentTime(); //获取系统当前的时间
	nYear=tTime.GetYear();//提取年份
	nDay=tTime.GetDay();//提取月份
	nMonth=tTime.GetMonth();//提取日
	sYear.Format("%d",nYear);//转换为字符串
	sDay.Format("%d",nDay);//转换为字符串
	sMonth.Format("%d",nMonth);//转换为字符串,格式化时间
	strnowdate.Format("%s-%s-%s",sYear,sMonth,sDay);
	
    
	// 使用ADO创建数据库记录集
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 
	CString strsql;
    strsql.Format("SELECT * FROM checkinregtable where 住宿日期='%s'",strnowdate);
	try//打开数据库
	{
		m_pRecordset->Open(_variant_t(strsql),                // 查询表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)//捕获打开数据库时候可能发生的异常情况
	{
		AfxMessageBox(e->ErrorMessage());
	}
    strcheckinnumber+=strnowdate;
    strcheckinnumber+="D";
	strcheckinnumber+=(LPCSTR)_bstr_t(m_pRecordset->GetRecordCount());
  //产生登记凭证号码
	m_regnumber =strcheckinnumber;
    
		// 关闭记录集
	m_pRecordset->Close();
	m_pRecordset = NULL;
//更新显示
	UpdateData(false);

}

void CCheckinregdlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(true);
	//////////////////////////////////////////////////////////////////////////
    /*
     *	检查身份证的号码是否为15位或者为18位
     */
	CString strCertifyCode;//证件号码


	//获得证件号码
	int nCertifyCodeLength=m_zhengjian_number.GetLength();//获得证件的长度
	if(nCertifyCodeLength!=15&&nCertifyCodeLength!=18)
	{
		if(m_zhengjian=="身份证")
		{//若选择的是身份证
			MessageBox("你的身份证的号码的位数不正确!\n应该为15位或者18位!",
				"身份证错误",MB_OK);
		    return ;
		}
	}
	//////////////////////////////////////////////////////////////////////////
	issave = true;
	OnCloseupCOMBOroomnumber() ;

	m_pRecordset.CreateInstance(__uuidof(Recordset));

⌨️ 快捷键说明

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