MoneyPay.cpp
上传用户:sunh8215
上传日期:2010-02-13
资源大小:1616k
文件大小:7k
源码类别:

酒店行业

开发平台:

Visual C++

  1. // MoneyPay.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "qq.h"
  5. #include "MoneyPay.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. #include <winuser.h>
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CMoneyPay dialog
  14. CMoneyPay::CMoneyPay(CWnd* pParent /*=NULL*/)
  15. : CDialog(CMoneyPay::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(CMoneyPay)
  18. m_nMoneyType = 1;
  19. //}}AFX_DATA_INIT
  20. bMoneyInSQL=false;
  21. }
  22. void CMoneyPay::DoDataExchange(CDataExchange* pDX)
  23. {
  24. CDialog::DoDataExchange(pDX);
  25. //{{AFX_DATA_MAP(CMoneyPay)
  26. DDX_Control(pDX, IDC_SUBMONEY, SubMoney);
  27. DDX_Control(pDX, IDC_PAYSUMMONEY, Sum);
  28. DDX_Control(pDX, IDC_PAIDNUMMONEY, Paid);
  29. DDX_Control(pDX, IDC_BILLCODEPAYMONEY, BillCode);
  30. DDX_Radio(pDX, IDC_RADIO1, m_nMoneyType);
  31. //}}AFX_DATA_MAP
  32. }
  33. BEGIN_MESSAGE_MAP(CMoneyPay, CDialog)
  34. //{{AFX_MSG_MAP(CMoneyPay)
  35. ON_EN_CHANGE(IDC_BILLCODEPAYMONEY, OnBillcodeChange)
  36. ON_EN_CHANGE(IDC_PAIDNUMMONEY, OnChangePaidmoney)
  37. ON_BN_CLICKED(IDC_RADIO1, OnRadio)
  38. ON_BN_CLICKED(IDC_RADIO2, OnRadio)
  39. ON_WM_CREATE()
  40. //}}AFX_MSG_MAP
  41. END_MESSAGE_MAP()
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CMoneyPay message handlers
  44. BOOL CMoneyPay::OnInitDialog() 
  45. {
  46. CDialog::OnInitDialog();
  47. HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME2);
  48. this->SetIcon(m_hIcon,true);//设置对话框图标
  49. // TODO: Add extra initialization here
  50. Sum.SetWindowText("0");
  51. Paid.SetWindowText("0");
  52. SubMoney.SetWindowText("0");
  53. return TRUE;  // return TRUE unless you set the focus to a control
  54.               // EXCEPTION: OCX Property Pages should return FALSE
  55. }
  56. void CMoneyPay::OnBillcodeChange() 
  57. {
  58. // TODO: If this is a RICHEDIT control, the control will not
  59. // send this notification unless you override the CDialog::OnInitDialog()
  60. // function and call CRichEditCtrl().SetEventMask()
  61. // with the ENM_CHANGE flag ORed into the mask.
  62. // TODO: Add your control notification handler code here
  63. //当输入帐单号码时自动填写要付的总数以及计算余额
  64. //当输入完帐单号码时进行计算
  65.     CString strBillCode="";
  66. BillCode.GetWindowText(strBillCode);//获得帐单文本
  67. if(!m_BillInfoSet.Open())
  68. {
  69. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  70. return;
  71. }
  72. bool bhas=false;
  73. m_BillInfoSet.MoveFirst();//移动到第一条记录
  74. while (!m_BillInfoSet.IsEOF())
  75. {
  76.         if(m_BillInfoSet.m_BillCode==strBillCode)
  77. {//在数据库中找到要付款的帐单号
  78. bhas=true;
  79.             long nShouldMoney=0;
  80. nShouldMoney=m_BillInfoSet.m_Sum-m_BillInfoSet.m_Paid;
  81. if(nShouldMoney<=0)
  82. {
  83. MessageBox("你已经支付了这个帐单!","付款错误",MB_OK);
  84. BillCode.SetWindowText("");
  85. break;
  86. }
  87. else
  88. {
  89. CString strMoney;
  90.                 strMoney.Format("%ld",nShouldMoney);
  91.                 Sum.SetWindowText(strMoney);
  92. break;
  93. }
  94. }
  95. m_BillInfoSet.MoveNext();//移动到下一条记录
  96. }
  97. m_BillInfoSet.Close();//关闭数据库
  98. if(!bhas)
  99. {
  100. Sum.SetWindowText("0");
  101. return;
  102. }
  103. }
  104. void CMoneyPay::OnChangePaidmoney() 
  105. {
  106. // TODO: If this is a RICHEDIT control, the control will not
  107. // send this notification unless you override the CDialog::OnInitDialog()
  108. // function and call CRichEditCtrl().SetEventMask()
  109. // with the ENM_CHANGE flag ORed into the mask.
  110. // TODO: Add your control notification handler code here
  111. CString strPaidMoney="",strSumMoney="";
  112.     Paid.GetWindowText(strPaidMoney);//得到当前的输入文本
  113.     Sum.GetWindowText(strSumMoney);  //得到当前要支付的总数
  114. char* sPaid=strPaidMoney.GetBuffer(strPaidMoney.GetLength());
  115. char* sSum=strSumMoney.GetBuffer(strSumMoney.GetLength());
  116. long nSubMoney=0,nPaidMoney=0,nSumMoney=0;
  117. nPaidMoney=atol(sPaid);
  118. nSumMoney=atol(sSum);
  119. nSubMoney=nPaidMoney-nSumMoney;
  120. CString strSubMoney;
  121. strSubMoney.Format("%ld",nSubMoney);
  122. SubMoney.SetWindowText(strSubMoney);//计算剩余的钱
  123. }
  124. void CMoneyPay::OnOK() 
  125. {
  126. // TODO: Add extra validation here
  127. //保存记录到数据库中
  128. CString strBillCode;
  129. BillCode.GetWindowText(strBillCode);//得到当前的帐单号码
  130. CString strSubMoney;
  131. SubMoney.GetWindowText(strSubMoney);
  132. char* s=strSubMoney.GetBuffer(strSubMoney.GetLength());
  133. long nmoney=atol(s);
  134. if(!bMoneyInSQL)
  135. {//如果不将剩下的钱存入到酒店中
  136. if(nmoney>=0)
  137. {
  138. CString SQLstr;
  139. SQLstr="select * from BillInfo where BillCode='";
  140. SQLstr=SQLstr+strBillCode;
  141. SQLstr=SQLstr+"'";
  142. if(!m_BillInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
  143. {
  144. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  145. return;
  146. }
  147. m_BillInfoSet.Edit();//编辑数据库
  148.             m_BillInfoSet.m_Paid=m_BillInfoSet.m_Sum;
  149. m_BillInfoSet.m_Striked=true;
  150. m_BillInfoSet.Update();//更新
  151. m_BillInfoSet.Close();//关闭数据库
  152. }
  153. else
  154. {
  155. CString SQLstr;
  156. SQLstr="select * from BillInfo where BillCode='";
  157. SQLstr=SQLstr+strBillCode;
  158. SQLstr=SQLstr+"'";
  159. if(!m_BillInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
  160. {
  161. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  162. return;
  163. }
  164. m_BillInfoSet.Edit();//编辑数据库
  165.             m_BillInfoSet.m_Paid=m_BillInfoSet.m_Sum+nmoney;
  166. m_BillInfoSet.m_Striked=true;
  167. m_BillInfoSet.Update();//更新
  168. m_BillInfoSet.Close();//关闭数据库
  169. }
  170. }
  171. else
  172. {
  173.         CString SQLstr;
  174. SQLstr="select * from BillInfo where BillCode='";
  175. SQLstr=SQLstr+strBillCode;
  176. SQLstr=SQLstr+"'";
  177. if(!m_BillInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
  178. {
  179. MessageBox("打开数据库失败!","数据库错误",MB_OK);
  180. return;
  181. }
  182. m_BillInfoSet.Edit();//编辑数据库
  183. m_BillInfoSet.m_Paid=m_BillInfoSet.m_Sum+nmoney;
  184. m_BillInfoSet.m_Striked=true;
  185. m_BillInfoSet.Update();//更新
  186. m_BillInfoSet.Close();//关闭数据库
  187. }
  188. CDialog::OnOK();
  189. }
  190. void CMoneyPay::OnRadio() 
  191. {
  192. // TODO: Add your control notification handler code here
  193. this->UpdateData(true);//更新数据
  194. CString strSubMoney;
  195. SubMoney.GetWindowText(strSubMoney);
  196. char* s=strSubMoney.GetBuffer(strSubMoney.GetLength());
  197. bool bBigZero=false;
  198. long nmoney=atol(s);//得到余额的情况
  199. if(nmoney>=0)
  200. {
  201. bBigZero=true;
  202. }
  203. else
  204. {
  205. bBigZero=false;
  206. }
  207. if(m_nMoneyType==0)
  208. {//选择的是"是"
  209. if(bBigZero)
  210. {
  211. bMoneyInSQL=true;
  212. }
  213. else
  214. {
  215. bMoneyInSQL=false;
  216.             MessageBox("对不起,你没有足够的钱存入酒店!","存入错误",MB_OK);
  217. }
  218. }
  219. if(m_nMoneyType==1)
  220. {
  221. bMoneyInSQL=false;
  222. }
  223. }
  224. void CMoneyPay::OnCancel() 
  225. {
  226. // TODO: Add extra cleanup here
  227. CDialog::OnCancel();
  228. }
  229. int CMoneyPay::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  230. {
  231. if (CDialog::OnCreate(lpCreateStruct) == -1)
  232. return -1;
  233. // TODO: Add your specialized creation code here
  234. // AnimateWindow(GetSafeHwnd(),1000,AW_CENTER);
  235. return 0;
  236. }