📄 reserveroom.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 + -