📄 moneypay.cpp
字号:
// MoneyPay.cpp : implementation file
//
#include "stdafx.h"
#include "qq.h"
#include "MoneyPay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <winuser.h>
/////////////////////////////////////////////////////////////////////////////
// CMoneyPay dialog
CMoneyPay::CMoneyPay(CWnd* pParent /*=NULL*/)
: CDialog(CMoneyPay::IDD, pParent)
{
//{{AFX_DATA_INIT(CMoneyPay)
m_nMoneyType = 1;
//}}AFX_DATA_INIT
bMoneyInSQL=false;
}
void CMoneyPay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMoneyPay)
DDX_Control(pDX, IDC_SUBMONEY, SubMoney);
DDX_Control(pDX, IDC_PAYSUMMONEY, Sum);
DDX_Control(pDX, IDC_PAIDNUMMONEY, Paid);
DDX_Control(pDX, IDC_BILLCODEPAYMONEY, BillCode);
DDX_Radio(pDX, IDC_RADIO1, m_nMoneyType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMoneyPay, CDialog)
//{{AFX_MSG_MAP(CMoneyPay)
ON_EN_CHANGE(IDC_BILLCODEPAYMONEY, OnBillcodeChange)
ON_EN_CHANGE(IDC_PAIDNUMMONEY, OnChangePaidmoney)
ON_BN_CLICKED(IDC_RADIO1, OnRadio)
ON_BN_CLICKED(IDC_RADIO2, OnRadio)
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMoneyPay message handlers
BOOL CMoneyPay::OnInitDialog()
{
CDialog::OnInitDialog();
HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME2);
this->SetIcon(m_hIcon,true);//设置对话框图标
// TODO: Add extra initialization here
Sum.SetWindowText("0");
Paid.SetWindowText("0");
SubMoney.SetWindowText("0");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMoneyPay::OnBillcodeChange()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
//当输入帐单号码时自动填写要付的总数以及计算余额
//当输入完帐单号码时进行计算
CString strBillCode="";
BillCode.GetWindowText(strBillCode);//获得帐单文本
if(!m_BillInfoSet.Open())
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
bool bhas=false;
m_BillInfoSet.MoveFirst();//移动到第一条记录
while (!m_BillInfoSet.IsEOF())
{
if(m_BillInfoSet.m_BillCode==strBillCode)
{//在数据库中找到要付款的帐单号
bhas=true;
long nShouldMoney=0;
nShouldMoney=m_BillInfoSet.m_Sum-m_BillInfoSet.m_Paid;
if(nShouldMoney<=0)
{
MessageBox("你已经支付了这个帐单!","付款错误",MB_OK);
BillCode.SetWindowText("");
break;
}
else
{
CString strMoney;
strMoney.Format("%ld",nShouldMoney);
Sum.SetWindowText(strMoney);
break;
}
}
m_BillInfoSet.MoveNext();//移动到下一条记录
}
m_BillInfoSet.Close();//关闭数据库
if(!bhas)
{
Sum.SetWindowText("0");
return;
}
}
void CMoneyPay::OnChangePaidmoney()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CString strPaidMoney="",strSumMoney="";
Paid.GetWindowText(strPaidMoney);//得到当前的输入文本
Sum.GetWindowText(strSumMoney); //得到当前要支付的总数
char* sPaid=strPaidMoney.GetBuffer(strPaidMoney.GetLength());
char* sSum=strSumMoney.GetBuffer(strSumMoney.GetLength());
long nSubMoney=0,nPaidMoney=0,nSumMoney=0;
nPaidMoney=atol(sPaid);
nSumMoney=atol(sSum);
nSubMoney=nPaidMoney-nSumMoney;
CString strSubMoney;
strSubMoney.Format("%ld",nSubMoney);
SubMoney.SetWindowText(strSubMoney);//计算剩余的钱
}
void CMoneyPay::OnOK()
{
// TODO: Add extra validation here
//保存记录到数据库中
CString strBillCode;
BillCode.GetWindowText(strBillCode);//得到当前的帐单号码
CString strSubMoney;
SubMoney.GetWindowText(strSubMoney);
char* s=strSubMoney.GetBuffer(strSubMoney.GetLength());
long nmoney=atol(s);
if(!bMoneyInSQL)
{//如果不将剩下的钱存入到酒店中
if(nmoney>=0)
{
CString SQLstr;
SQLstr="select * from BillInfo where BillCode='";
SQLstr=SQLstr+strBillCode;
SQLstr=SQLstr+"'";
if(!m_BillInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
m_BillInfoSet.Edit();//编辑数据库
m_BillInfoSet.m_Paid=m_BillInfoSet.m_Sum;
m_BillInfoSet.m_Striked=true;
m_BillInfoSet.Update();//更新
m_BillInfoSet.Close();//关闭数据库
}
else
{
CString SQLstr;
SQLstr="select * from BillInfo where BillCode='";
SQLstr=SQLstr+strBillCode;
SQLstr=SQLstr+"'";
if(!m_BillInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
m_BillInfoSet.Edit();//编辑数据库
m_BillInfoSet.m_Paid=m_BillInfoSet.m_Sum+nmoney;
m_BillInfoSet.m_Striked=true;
m_BillInfoSet.Update();//更新
m_BillInfoSet.Close();//关闭数据库
}
}
else
{
CString SQLstr;
SQLstr="select * from BillInfo where BillCode='";
SQLstr=SQLstr+strBillCode;
SQLstr=SQLstr+"'";
if(!m_BillInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
m_BillInfoSet.Edit();//编辑数据库
m_BillInfoSet.m_Paid=m_BillInfoSet.m_Sum+nmoney;
m_BillInfoSet.m_Striked=true;
m_BillInfoSet.Update();//更新
m_BillInfoSet.Close();//关闭数据库
}
CDialog::OnOK();
}
void CMoneyPay::OnRadio()
{
// TODO: Add your control notification handler code here
this->UpdateData(true);//更新数据
CString strSubMoney;
SubMoney.GetWindowText(strSubMoney);
char* s=strSubMoney.GetBuffer(strSubMoney.GetLength());
bool bBigZero=false;
long nmoney=atol(s);//得到余额的情况
if(nmoney>=0)
{
bBigZero=true;
}
else
{
bBigZero=false;
}
if(m_nMoneyType==0)
{//选择的是"是"
if(bBigZero)
{
bMoneyInSQL=true;
}
else
{
bMoneyInSQL=false;
MessageBox("对不起,你没有足够的钱存入酒店!","存入错误",MB_OK);
}
}
if(m_nMoneyType==1)
{
bMoneyInSQL=false;
}
}
void CMoneyPay::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
int CMoneyPay::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
// AnimateWindow(GetSafeHwnd(),1000,AW_CENTER);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -