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

📄 reserveroom.cpp

📁 酒店管理系统的毕业设计,用VC编的,功能有限
💻 CPP
字号:
// ReserveRoom.cpp : implementation file
//
#include "stdafx.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// ReserveRoom dialog


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


void ReserveRoom::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(ReserveRoom)
	DDX_Control(pDX, IDC_roomNum, m_roomNum);
	DDX_Control(pDX, IDC_clientName, m_ClientName);
	DDX_Control(pDX, IDC_count, m_serial);
	DDX_Control(pDX, IDC_resideDate, m_resideDate);
	DDX_Control(pDX, IDC_roomType, m_roomType);
	DDX_Control(pDX, IDC_BUTTONOUT, m_buttonOut);
	DDX_Control(pDX, IDC_BUTTONIN, m_buttonIn);
	DDX_Control(pDX, IDC_LIST2, m_listOut);
	DDX_Control(pDX, IDC_LIST1, m_listIn);
	DDX_Control(pDX, IDC_COMBO1, m_combox1);
	DDX_Text(pDX, IDC_resideDays, m_resideDays);
	DDV_MinMaxInt(pDX, m_resideDays, 0, 1000);
	//}}AFX_DATA_MAP
	m_combox1.AddString("单人间");
    m_combox1.AddString("双人间");
	m_combox1.AddString("普通套房");
	m_combox1.AddString("高级套房");
	m_combox1.SetCurSel(0);
	roomType = "单人间";
	(CWnd *)GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);  //灰化缴纳金额按钮
	(CWnd *)GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);  //灰化订房按钮
    (CWnd *)GetDlgItem(IDC_CancelReside)->EnableWindow(FALSE);  //灰化取消订房按钮
	//EnableWindow(IDC_BUTTONOUT,FALSE);
	//(CWnd *)GetDlgItem(IDC_BUTTONOUT)->EnableWindow(FALSE);  //灰化<<按钮 
    //(CWnd *)GetDlgItem(IDC_BUTTONIN)->EnableWindow(FALSE);   //灰化>>按钮 
}


BEGIN_MESSAGE_MAP(ReserveRoom, CDialog)
	//{{AFX_MSG_MAP(ReserveRoom)
	ON_BN_CLICKED(IDC_BUTTON4, OnReserveRoom)
	ON_BN_CLICKED(IDC_BUTTONIN, OnButtonIn)
	ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
	ON_LBN_SELCHANGE(IDC_LIST2, OnSelchangeList2)
	ON_BN_CLICKED(IDC_BUTTONOUT, OnButtonOut)
	ON_BN_CLICKED(IDC_BUTTON6, OnQuery)
	ON_BN_CLICKED(IDC_CancelReside, OnCancelReside)
	ON_BN_CLICKED(IDC_BUTTON3, OnCash)
	ON_BN_CLICKED(IDC_newClient, OnnewClient)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// ReserveRoom message handlers

void ReserveRoom::OnReserveRoom() 
{
	// TODO: Add your control notification handler code her
	CString t,str;                                    //暂存变量
	m_ClientName.GetWindowText(str);                  //获取用户名
	if(str == "")
	{
		AfxMessageBox("请输入用户名!!!!!");
		return ;
	}
    
	GetDlgItem(IDC_resideDays)->GetWindowText(t);     //获取入住天数
	if((resideDay=atoi(t))==0)                     //将所得字符串转化为整数
	{
		AfxMessageBox("请输入入住天数!!!!!");
		return ;
	}
    
	int  j;                //获取列表框字符串的数目
	roomtotal = m_listOut.GetCount();
    if(roomtotal == 0)
	{
		AfxMessageBox("请输入房间号!!!!!");
		return ;
	}
	j = 0;
    while(j<roomtotal)
	{
		m_listOut.GetText(j,roomNum[j]); 	    
		j++;
	}
    
	CString str1;
	for(j=0;j<roomtotal;j++)
	{
		str1+=roomNum[j]+"   ";
	}
    m_roomNum.SetWindowText(str1);
	m_roomType.GetWindowText(str);                 //获取房间类型

	CTime time;
	time = CTime::GetCurrentTime();                //获取当前日期
	int year,month,day;
	year = time.GetYear();
    month = time.GetMonth();
	day = time.GetDay();

	resideDate.SetDate(year,month,day);                 //存储系统当前日期
    str.Format("%d-%d-%d",time.GetYear(),time.GetMonth(),time.GetDay()); 
	m_resideDate.SetWindowText(str);

	CString sql;
	//数据库建立连接
	C_Connection m_connection;
	m_connection.open("Hotel");        
    //获取流水号
    sql.Format("SELECT 客户流水号 FROM serialID where 状态 = '可用';");
    m_connection.ExcuteSql(sql);
	if(m_connection.rs->IsEOF())
	{
		AfxMessageBox("客户流水号没有可用的!!!");
		return ;
	}
	m_connection.rs->GetFieldValue("客户流水号",serial);
    m_connection.rs->Close();
	m_serial.SetWindowText(serial); 

	sql.Format("SELECT 房间价格 FROM roomPrice WHERE 房间类型='%s';",roomType);
	m_connection.ExcuteSql(sql);
    m_connection.rs->GetFieldValue("房间价格",str);
	roomPrice = atoi(str);
	totalCash = roomtotal*roomPrice*resideDay;
	m_connection.close();
	(CWnd *)GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);  //灰化确定订房按钮
	(CWnd *)GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE);   //亮化缴纳金额按钮
	(CWnd *)GetDlgItem(IDC_CancelReside)->EnableWindow(TRUE);   //亮化取消订房按钮
    (CWnd *)GetDlgItem(IDC_newClient)->EnableWindow(FALSE);   //灰化新用户订房按钮
}

void ReserveRoom::init(C_Connection* m_Connection)
{
	_Connection = m_Connection;

}


void ReserveRoom::OnSelchangeList1() 
{
	// TODO: Add your control notification handler code here
//	(CWnd *)GetDlgItem(IDC_BUTTONOUT)->EnableWindow(FALSE);  //灰化<<按钮 
	if(m_listIn.GetCurSel()==-1)
		return ;
//    (CWnd *)GetDlgItem(IDC_BUTTONIN)->EnableWindow(TRUE);  //按钮>>置为可用
}

void ReserveRoom::OnButtonIn() 
{
	// TODO: Add your control notification handler code here
	CString  str ;
	int cursel;
	if((cursel=m_listIn.GetCurSel())!=-1)
	{
		m_listIn.GetText(cursel,str);
		m_listIn.DeleteString(cursel);
		m_listOut.AddString(str);
	}	
}


void ReserveRoom::OnSelchangeList2() 
{
	// TODO: Add your control notification handler code here
//	(CWnd *)GetDlgItem(IDC_BUTTONIN)->EnableWindow(FALSE);  //灰化<<按钮 
	if(m_listOut.GetCurSel()==-1)
		return ;
//    (CWnd *)GetDlgItem(IDC_BUTTONOUT)->EnableWindow(TRUE);  //按钮>>置为可用

}

void ReserveRoom::OnButtonOut() 
{
	// TODO: Add your control notification handler code here
	CString  str ;
	int cursel;
	if((cursel=m_listOut.GetCurSel())!=-1)
	{
		m_listOut.GetText(cursel,str);
		m_listOut.DeleteString(cursel);
		m_listIn.AddString(str);
	}
}

void ReserveRoom::OnQuery() 
{
	// TODO: Add your control notification handler code here
	C_Connection m_connection;
	m_connection.open("Hotel");        //数据库建立连接
    CString str;
    m_listIn.ResetContent();
    m_listOut.ResetContent();
	m_combox1.GetLBText(m_combox1.GetCurSel(),roomType);
	m_roomType.SetWindowText(roomType);
	str.Format("SELECT 房间号 FROM room WHERE 房间类型='%s' AND 房间状态 ='空';",roomType);
	m_connection.ExcuteSql(str);
	if(m_connection.rs->IsEOF())                         //判断记录是否为空
	{
		AfxMessageBox("没有此种类型的房间");
	}
    while(!m_connection.rs->IsEOF())
	{
    	m_connection.rs->GetFieldValue("房间号",str);
		m_listIn.AddString(str);
		m_connection.rs->MoveNext();
	}	
   m_connection.close();
}


void ReserveRoom::OnCancelReside() 
{
	// TODO: Add your control notification handler code herea
	clear();
}

void ReserveRoom::OnCash() 
{
	// TODO:Add your control notification handler code here
    cashDlg	  dlg;
	dlg.init(roomNum,totalCash,roomtotal);       //缴费对话框初始化
	if(dlg.DoModal()==IDOK)
	{	
		C_Connection m_connection;
		m_connection.open("Hotel");              //数据库建立连接

		CString sql; 
		for(int i=0;i<roomtotal;i++)             //从room表中将入住的房间改为“已住”
		{
			sql.Format("UPDATE room SET 房间状态='已住' where  房间号 = '%s' ;",roomNum[i]);
            m_connection.WriteSql(sql);
		}

		CString str1,str2;
		COleDateTime date2;
        date2.SetDate(resideDate.GetYear(),resideDate.GetMonth(),resideDate.GetDay());
		date2 += resideDay;
		str1.Format("%d/%d/%d",resideDate.GetMonth(),resideDate.GetDay(),resideDate.GetYear());
        str2.Format("%d/%d/%d",date2.GetMonth(),date2.GetDay(),date2.GetYear());
		int price = roomPrice*resideDay;
        for(i=0;i<roomtotal;i++)                //登记register表(房间号,客户流水号,住房日期,截止日期,支付金额)
		{                                  
			sql.Format("INSERT INTO register \
				(房间号,客户流水号,住房日期,截止日期,支付金额) \
				VALUES ('%s','%s','%s','%s',%d) ",roomNum[i],serial,str1,str2,price);
            m_connection.WriteSql(sql);
		}

		CString ID,ss;
		CHotelManageSysDlg  *dlg;     
        dlg   =   (CHotelManageSysDlg*)(AfxGetApp()->m_pMainWnd);     //获取主对话框句柄
		dlg->m_ID.GetWindowText(ID);                                  //获取主对话框的“用户名”
		for(i=0;i<roomtotal;i++)                //登记logo表(用户名,操作类型,房间号,操作日期)
		{
			sql.Format("INSERT INTO log \
				(房间号,用户名,操作类型,操作日期) \
				VALUES ('%s','%s','住房','%s') ",roomNum[i],ID,str1);
		    m_connection.WriteSql(sql);
		}
  
		CString ClientName;
        m_ClientName.GetWindowText(ClientName);         //获取客户名
		//登记client表(客户流水号,客户名)
		sql.Format("INSERT INTO client (客户流水号,客户名,房间数) VALUES ('%s','%s',%d)",serial,ClientName,roomtotal);        
        m_connection.WriteSql(sql);  
        //更新serialID表
		sql.Format("UPDATE serialID SET 状态 = '不可用' WHERE 客户流水号 = '%s' ;" ,serial);
		m_connection.WriteSql(sql); 

		m_connection.close();
		OnCancelReside() ;	                         //清空对话框
		(CWnd *)GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);   //灰化确定订房按钮	
	}
}

void ReserveRoom::OnnewClient() 
{
	// TODO: Add your control notification handler code here
	(CWnd *)GetDlgItem(IDC_BUTTON4)->EnableWindow(TRUE);        //亮化确定订房按钮
	(CWnd *)GetDlgItem(IDC_CancelReside)->EnableWindow(FALSE); 	//灰化取消订房按钮
}

void ReserveRoom::clear()
{
    m_listOut.ResetContent();
	m_listIn.ResetContent();
	GetDlgItem(IDC_clientName)->SetWindowText("");
	GetDlgItem(IDC_resideDate)->SetWindowText("");
	GetDlgItem(IDC_roomType)->SetWindowText("");
	GetDlgItem(IDC_resideDays)->SetWindowText("");
    GetDlgItem(IDC_count)->SetWindowText("");
    GetDlgItem(IDC_roomNum)->SetWindowText("");
    (CWnd *)GetDlgItem(IDC_BUTTON4)->EnableWindow(TRUE);   //亮化确定订房按钮	
    (CWnd *)GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);  //灰化缴纳金额按钮
    (CWnd *)GetDlgItem(IDC_CancelReside)->EnableWindow(FALSE);   //灰化化取消订房按钮
	(CWnd *)GetDlgItem(IDC_newClient)->EnableWindow(TRUE);   //亮化新用户订房按钮
}

⌨️ 快捷键说明

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