ChooseRoom.cpp
上传用户:czfddz
上传日期:2013-03-20
资源大小:1517k
文件大小:9k
源码类别:

酒店行业

开发平台:

C/C++

  1. // ChooseRoom.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "qq.h"
  5. #include "ChooseRoom.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CChooseRoom dialog
  13. CChooseRoom::CChooseRoom(CWnd* pParent /*=NULL*/)
  14. : CDialog(CChooseRoom::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CChooseRoom)
  17. // NOTE: the ClassWizard will add member initialization here
  18. //}}AFX_DATA_INIT
  19. }
  20. void CChooseRoom::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. //{{AFX_DATA_MAP(CChooseRoom)
  24. DDX_Control(pDX, IDC_HANDCODE, HandCode);
  25. DDX_Control(pDX, IDC_BILLCODE, BillCode);
  26. DDX_Control(pDX, IDC_ROOMSELNUM, RoomSelNum);
  27. DDX_Control(pDX, IDC_ROOMSUM, RoomSum);
  28. DDX_Control(pDX, IDC_ROOMBILLLIST, RoomBillList);
  29. DDX_Control(pDX, IDC_ROOMCODELIST, RoomCodeList);
  30. DDX_Control(pDX, IDC_ROOMPRICE, RoomPrice);
  31. DDX_Control(pDX, IDC_ROOMTYPE, RoomType);
  32. //}}AFX_DATA_MAP
  33. }
  34. BEGIN_MESSAGE_MAP(CChooseRoom, CDialog)
  35. //{{AFX_MSG_MAP(CChooseRoom)
  36. ON_CBN_SELCHANGE(IDC_ROOMTYPE, OnSelchangeRoomtype)
  37. ON_BN_CLICKED(IDC_ADD, OnAdd)
  38. ON_BN_CLICKED(IDC_DELETE, OnDelete)
  39. //}}AFX_MSG_MAP
  40. END_MESSAGE_MAP()
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CChooseRoom message handlers
  43. BOOL CChooseRoom::OnInitDialog() 
  44. {
  45. CDialog::OnInitDialog();
  46. HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME2);
  47. this->SetIcon(m_hIcon,true);//设置对话框图标
  48. // TODO: Add extra initialization here
  49. /////////////////////////////////////////////////////////////////////
  50. /////////////////////////////////////////////////////////////////////
  51. /////////////////////////////////////////////////////////////////////
  52. /////////////////////////////////////////////////////////////////////
  53.     RoomType.SetWindowText("标准单人房"); 
  54.     RoomType.AddString("标准单人房");//index==0
  55. RoomType.AddString("标准双人房");
  56. RoomType.AddString("贵族单人房");
  57. RoomType.AddString("贵族双人房");//index==3
  58.     //////////////////////////////////
  59. //产生帐单号码
  60. CCreateBillCode billcode;
  61. BillCode.SetWindowText(billcode.GenereBillCodeForCheckOut());
  62. return TRUE;  // return TRUE unless you set the focus to a control
  63.               // EXCEPTION: OCX Property Pages should return FALSE
  64. }
  65. void CChooseRoom::OnSelchangeRoomtype() 
  66. {
  67. // TODO: Add your control notification handler code here
  68.     ///删除以前的记录  this is a bug!!!!
  69. RoomCodeList.ResetContent();//清除所有的项目
  70. CString strComboText;//combobox中的文本
  71.     RoomType.GetLBText(RoomType.GetCurSel(),strComboText);//获得选择的文本
  72.     /////////////////////////////////////////////////////////////////
  73.     // 进行数据库的查询
  74.     //roomprice fill
  75. CString SQLstr;
  76. SQLstr="SELECT * FROM RoomInfo where RoomType='" ;
  77.     SQLstr=SQLstr+strComboText;
  78.     SQLstr=SQLstr+"'";
  79. if(!m_RoomInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
  80. {//查询数据库得到数据集合
  81. AfxMessageBox("打开数据库失败!");
  82. return ;
  83. }
  84.      CString str;
  85.  str.Format("%5.00f",m_RoomInfoSet.m_Price);
  86.  RoomPrice.SetWindowText(str);
  87.      m_RoomInfoSet.Close(); //关闭数据库 
  88.  /////////////////////////////////////////////////////////////
  89.  if(!m_RoomInfoSet.Open())
  90. {
  91. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  92. return;
  93. }
  94. m_RoomInfoSet.MoveFirst();
  95. while(!m_RoomInfoSet.IsEOF())
  96. {
  97. if(m_RoomInfoSet.m_RoomType==strComboText)
  98. {
  99. if(m_RoomInfoSet.m_RoomStatus=="空")
  100. {
  101.                 RoomCodeList.AddString(m_RoomInfoSet.m_RoomCode);
  102. }
  103. }
  104. m_RoomInfoSet.MoveNext();
  105. }
  106. m_RoomInfoSet.Close();
  107. ////////////////////////////////////////////////////////
  108. /////////////////////////////////////////////////////////////////////
  109.     int n=RoomCodeList.GetCount();
  110. CString strRoomNum;
  111. strRoomNum.Format("%d",n);
  112. RoomSum.SetWindowText(strRoomNum);//设置总数窗口文本
  113. }
  114. void CChooseRoom::OnAdd() 
  115. {
  116. // TODO: Add your control notification handler code here
  117. //将roomcode info add to billinfolist
  118. CString strRoomCode;
  119. if(RoomCodeList.GetCount()==0)
  120. {
  121. return;
  122. }
  123. else
  124. {
  125. if(RoomCodeList.GetCurSel()!=-1)
  126. {
  127. RoomCodeList.GetText(RoomCodeList.GetCurSel(),strRoomCode);
  128. }
  129. }
  130.     if(RoomCodeList.GetCurSel()==-1)
  131. {
  132.     MessageBox("请选择一个房间","数据为空错误",MB_OK);
  133. return ;
  134. }
  135. CString BillinfoText=strRoomCode;
  136.     
  137.         int n=RoomBillList.GetCount();
  138. CString strTemp="";
  139. bool bSame=false;
  140. for(int i=0;i<n;i++)
  141. {
  142.    RoomBillList.GetText(i,strTemp);
  143.    if(strTemp==strRoomCode)
  144. {
  145.    MessageBox("你已经选择了这个房间!","选择错误",MB_OK);
  146.    bSame=true;
  147.    return;
  148. }
  149. }
  150. if(!bSame)
  151. {
  152. RoomBillList.AddString(BillinfoText);
  153. }
  154. ////////////////////////////////////////////////////////////////////
  155. //统计当前的帐单数目
  156. int m=RoomBillList.GetCount();
  157. CString strSelNum;
  158.     strSelNum.Format("%d",m);//必须再调用一次getcount()函数
  159. RoomSelNum.SetWindowText(strSelNum);
  160. }
  161. void CChooseRoom::OnOK() 
  162. {//保存数据
  163. // TODO: Add extra validation here
  164. CString strHandCode;
  165. HandCode.GetWindowText(strHandCode);
  166.     if(strHandCode=="")
  167. {
  168. MessageBox("请输入手牌号!","数据为空错误",MB_OK);
  169. return;
  170. }
  171. CString strSelNum;
  172. RoomSelNum.GetWindowText(strSelNum);
  173. if(strSelNum=="")
  174. {
  175. MessageBox("你至少要选择一个房间!","选择错误",MB_OK);
  176. return;
  177. }
  178.     if(!m_GuestInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE))
  179. {
  180. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  181. return;
  182. }
  183. m_GuestInfoSet.MoveFirst();
  184. bool bhas=false;
  185. while(!m_GuestInfoSet.IsEOF())
  186. {
  187.         if(m_GuestInfoSet.m_HandCode==strHandCode)
  188. //////////////////////////////////////////////////////////////////////////
  189.     /// 数据填充
  190. m_GuestInfoSet.Edit();//进行编辑,写入到缓冲区中
  191.             m_GuestInfoSet.m_RoomNum=strSelNum;//将当前选择的房间数目保存到数据库中
  192. CString strShowText="",strtemp="";
  193. int num=RoomBillList.GetCount();
  194. for(int i=0;i<num;i++)
  195. {//调用RoomBillList.GetDlgITemText(i,strtemp)会失败
  196.                 RoomBillList.GetText(i,strtemp);
  197. strShowText=strShowText+strtemp+",";
  198. }
  199. m_GuestInfoSet.m_RoomCode=strShowText;
  200. m_GuestInfoSet.Update();//更新数据
  201. bhas=true;//存在这条记录 
  202.              break;
  203. }
  204. m_GuestInfoSet.MoveNext();//移动到下一条记录
  205. }
  206. if(!bhas)
  207. {
  208. MessageBox("你输入的手牌号不正确!","输入信息错误",MB_OK);
  209. m_GuestInfoSet.Close();//关闭数据库 
  210. return;
  211. }
  212.     m_GuestInfoSet.Close();//关闭数据库 
  213. ////写客房信息数据库表
  214. if(!m_RoomInfoSet.Open())
  215. {
  216. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  217. return;
  218. }
  219. CString strRoomRestor="";
  220. for(int i=0;i<RoomBillList.GetCount();i++)
  221. {
  222. RoomBillList.GetText(i,strRoomRestor);
  223. m_RoomInfoSet.MoveFirst();
  224. while(!m_RoomInfoSet.IsEOF())
  225. {
  226. if(strRoomRestor==m_RoomInfoSet.m_RoomCode)
  227. {
  228. m_RoomInfoSet.Edit();//edit the DB
  229. m_RoomInfoSet.m_RoomStatus="住人";//改变roominfoset的roomstatus
  230. CString SQLStr,strHandCode;
  231. HandCode.GetWindowText(strHandCode);
  232. SQLStr="select * from GuestInfo where HandCode='";
  233. SQLStr=SQLStr+strHandCode;
  234. SQLStr=SQLStr+"'";
  235. if(!m_GuestInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLStr))
  236. {
  237.                     MessageBox("打开数据库失败!","数据库错误",MB_OK);
  238. return;
  239. }
  240. m_RoomInfoSet.m_PriceType=m_GuestInfoSet.m_IsMember;
  241. m_GuestInfoSet.Close();//关闭客人信息数据库
  242. m_RoomInfoSet.Update();
  243. }
  244. m_RoomInfoSet.MoveNext();
  245. }
  246. }
  247. m_RoomInfoSet.Close();//关闭数据库
  248. ///将帐单号码写入BillCheckoutInfo表中
  249. if(!m_BillCheckoutInfoSet.Open())
  250. {
  251. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  252. return;
  253. }
  254. m_BillCheckoutInfoSet.MoveFirst();//first
  255. while (!m_BillCheckoutInfoSet.IsEOF())
  256. {
  257. if(strHandCode==m_BillCheckoutInfoSet.m_HandCode)
  258. {
  259. m_BillCheckoutInfoSet.Edit();//编辑数据库
  260. CString strBillCode;
  261. BillCode.GetWindowText(strBillCode);//得到账单号码
  262. m_BillCheckoutInfoSet.m_BillCode=strBillCode;
  263. m_BillCheckoutInfoSet.Update();
  264. }
  265. m_BillCheckoutInfoSet.MoveNext();
  266. }
  267. m_BillCheckoutInfoSet.Close();//关闭数据库
  268. CDialog::OnOK();
  269. }
  270. void CChooseRoom::OnDelete() 
  271. {
  272. // TODO: Add your control notification handler code here
  273. int nCurSel=RoomBillList.GetCurSel();
  274. if(nCurSel==-1)
  275. {
  276.        MessageBox("请选择一个要删除的房间号","数据为空错误",MB_OK);
  277.    return;
  278. }
  279. RoomBillList.DeleteString(nCurSel);
  280.     /////////更新显示
  281. int m=RoomBillList.GetCount();
  282. CString strSelNum;
  283.     strSelNum.Format("%d",m);
  284. RoomSelNum.SetWindowText(strSelNum);
  285. }
  286. void CChooseRoom::OnCancel() 
  287. {
  288. // TODO: Add extra cleanup here
  289. CDialog::OnCancel();
  290. }