ChooseRoom.cpp
资源名称:酒店管理系统源代码.rar [点击查看]
上传用户:czfddz
上传日期:2013-03-20
资源大小:1517k
文件大小:9k
源码类别:
酒店行业
开发平台:
C/C++
- // 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();
- }