📄 chooseroom.cpp
字号:
// ChooseRoom.cpp : implementation file
//
#include "stdafx.h"
#include "qq.h"
#include "ChooseRoom.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChooseRoom dialog
CChooseRoom::CChooseRoom(CWnd* pParent /*=NULL*/)
: CDialog(CChooseRoom::IDD, pParent)
{
//{{AFX_DATA_INIT(CChooseRoom)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CChooseRoom::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChooseRoom)
DDX_Control(pDX, IDC_HANDCODE, HandCode);
DDX_Control(pDX, IDC_BILLCODE, BillCode);
DDX_Control(pDX, IDC_ROOMSELNUM, RoomSelNum);
DDX_Control(pDX, IDC_ROOMSUM, RoomSum);
DDX_Control(pDX, IDC_ROOMBILLLIST, RoomBillList);
DDX_Control(pDX, IDC_ROOMCODELIST, RoomCodeList);
DDX_Control(pDX, IDC_ROOMPRICE, RoomPrice);
DDX_Control(pDX, IDC_ROOMTYPE, RoomType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChooseRoom, CDialog)
//{{AFX_MSG_MAP(CChooseRoom)
ON_CBN_SELCHANGE(IDC_ROOMTYPE, OnSelchangeRoomtype)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChooseRoom message handlers
BOOL CChooseRoom::OnInitDialog()
{
CDialog::OnInitDialog();
HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME2);
this->SetIcon(m_hIcon,true);//设置对话框图标
// TODO: Add extra initialization here
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
RoomType.SetWindowText("标准单人房");
RoomType.AddString("标准单人房");//index==0
RoomType.AddString("标准双人房");
RoomType.AddString("贵族单人房");
RoomType.AddString("贵族双人房");//index==3
//////////////////////////////////
//产生帐单号码
CCreateBillCode billcode;
BillCode.SetWindowText(billcode.GenereBillCodeForCheckOut());
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CChooseRoom::OnSelchangeRoomtype()
{
// TODO: Add your control notification handler code here
///删除以前的记录 this is a bug!!!!
RoomCodeList.ResetContent();//清除所有的项目
CString strComboText;//combobox中的文本
RoomType.GetLBText(RoomType.GetCurSel(),strComboText);//获得选择的文本
/////////////////////////////////////////////////////////////////
// 进行数据库的查询
//roomprice fill
CString SQLstr;
SQLstr="SELECT * FROM RoomInfo where RoomType='" ;
SQLstr=SQLstr+strComboText;
SQLstr=SQLstr+"'";
if(!m_RoomInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
{//查询数据库得到数据集合
AfxMessageBox("打开数据库失败!");
return ;
}
CString str;
str.Format("%5.00f",m_RoomInfoSet.m_Price);
RoomPrice.SetWindowText(str);
m_RoomInfoSet.Close(); //关闭数据库
/////////////////////////////////////////////////////////////
if(!m_RoomInfoSet.Open())
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
m_RoomInfoSet.MoveFirst();
while(!m_RoomInfoSet.IsEOF())
{
if(m_RoomInfoSet.m_RoomType==strComboText)
{
if(m_RoomInfoSet.m_RoomStatus=="空")
{
RoomCodeList.AddString(m_RoomInfoSet.m_RoomCode);
}
}
m_RoomInfoSet.MoveNext();
}
m_RoomInfoSet.Close();
////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
int n=RoomCodeList.GetCount();
CString strRoomNum;
strRoomNum.Format("%d",n);
RoomSum.SetWindowText(strRoomNum);//设置总数窗口文本
}
void CChooseRoom::OnAdd()
{
// TODO: Add your control notification handler code here
//将roomcode info add to billinfolist
CString strRoomCode;
if(RoomCodeList.GetCount()==0)
{
return;
}
else
{
if(RoomCodeList.GetCurSel()!=-1)
{
RoomCodeList.GetText(RoomCodeList.GetCurSel(),strRoomCode);
}
}
if(RoomCodeList.GetCurSel()==-1)
{
MessageBox("请选择一个房间","数据为空错误",MB_OK);
return ;
}
CString BillinfoText=strRoomCode;
int n=RoomBillList.GetCount();
CString strTemp="";
bool bSame=false;
for(int i=0;i<n;i++)
{
RoomBillList.GetText(i,strTemp);
if(strTemp==strRoomCode)
{
MessageBox("你已经选择了这个房间!","选择错误",MB_OK);
bSame=true;
return;
}
}
if(!bSame)
{
RoomBillList.AddString(BillinfoText);
}
////////////////////////////////////////////////////////////////////
//统计当前的帐单数目
int m=RoomBillList.GetCount();
CString strSelNum;
strSelNum.Format("%d",m);//必须再调用一次getcount()函数
RoomSelNum.SetWindowText(strSelNum);
}
void CChooseRoom::OnOK()
{//保存数据
// TODO: Add extra validation here
CString strHandCode;
HandCode.GetWindowText(strHandCode);
if(strHandCode=="")
{
MessageBox("请输入手牌号!","数据为空错误",MB_OK);
return;
}
CString strSelNum;
RoomSelNum.GetWindowText(strSelNum);
if(strSelNum=="")
{
MessageBox("你至少要选择一个房间!","选择错误",MB_OK);
return;
}
if(!m_GuestInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
m_GuestInfoSet.MoveFirst();
bool bhas=false;
while(!m_GuestInfoSet.IsEOF())
{
if(m_GuestInfoSet.m_HandCode==strHandCode)
{
//////////////////////////////////////////////////////////////////////////
/// 数据填充
m_GuestInfoSet.Edit();//进行编辑,写入到缓冲区中
m_GuestInfoSet.m_RoomNum=strSelNum;//将当前选择的房间数目保存到数据库中
CString strShowText="",strtemp="";
int num=RoomBillList.GetCount();
for(int i=0;i<num;i++)
{//调用RoomBillList.GetDlgITemText(i,strtemp)会失败
RoomBillList.GetText(i,strtemp);
strShowText=strShowText+strtemp+",";
}
m_GuestInfoSet.m_RoomCode=strShowText;
m_GuestInfoSet.Update();//更新数据
bhas=true;//存在这条记录
break;
}
m_GuestInfoSet.MoveNext();//移动到下一条记录
}
if(!bhas)
{
MessageBox("你输入的手牌号不正确!","输入信息错误",MB_OK);
m_GuestInfoSet.Close();//关闭数据库
return;
}
m_GuestInfoSet.Close();//关闭数据库
////写客房信息数据库表
if(!m_RoomInfoSet.Open())
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
CString strRoomRestor="";
for(int i=0;i<RoomBillList.GetCount();i++)
{
RoomBillList.GetText(i,strRoomRestor);
m_RoomInfoSet.MoveFirst();
while(!m_RoomInfoSet.IsEOF())
{
if(strRoomRestor==m_RoomInfoSet.m_RoomCode)
{
m_RoomInfoSet.Edit();//edit the DB
m_RoomInfoSet.m_RoomStatus="住人";//改变roominfoset的roomstatus
CString SQLStr,strHandCode;
HandCode.GetWindowText(strHandCode);
SQLStr="select * from GuestInfo where HandCode='";
SQLStr=SQLStr+strHandCode;
SQLStr=SQLStr+"'";
if(!m_GuestInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLStr))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
m_RoomInfoSet.m_PriceType=m_GuestInfoSet.m_IsMember;
m_GuestInfoSet.Close();//关闭客人信息数据库
m_RoomInfoSet.Update();
}
m_RoomInfoSet.MoveNext();
}
}
m_RoomInfoSet.Close();//关闭数据库
///将帐单号码写入BillCheckoutInfo表中
if(!m_BillCheckoutInfoSet.Open())
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
m_BillCheckoutInfoSet.MoveFirst();//first
while (!m_BillCheckoutInfoSet.IsEOF())
{
if(strHandCode==m_BillCheckoutInfoSet.m_HandCode)
{
m_BillCheckoutInfoSet.Edit();//编辑数据库
CString strBillCode;
BillCode.GetWindowText(strBillCode);//得到账单号码
m_BillCheckoutInfoSet.m_BillCode=strBillCode;
m_BillCheckoutInfoSet.Update();
}
m_BillCheckoutInfoSet.MoveNext();
}
m_BillCheckoutInfoSet.Close();//关闭数据库
CDialog::OnOK();
}
void CChooseRoom::OnDelete()
{
// TODO: Add your control notification handler code here
int nCurSel=RoomBillList.GetCurSel();
if(nCurSel==-1)
{
MessageBox("请选择一个要删除的房间号","数据为空错误",MB_OK);
return;
}
RoomBillList.DeleteString(nCurSel);
/////////更新显示
int m=RoomBillList.GetCount();
CString strSelNum;
strSelNum.Format("%d",m);
RoomSelNum.SetWindowText(strSelNum);
}
void CChooseRoom::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -