📄 depositorwithdraw.cpp
字号:
// DepositOrWithdraw.cpp : implementation file
//
#include "stdafx.h"
#include "BankSystem.h"
#include "DepositOrWithdraw.h"
#include "BankSystemDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDepositOrWithdraw dialog
CDepositOrWithdraw::CDepositOrWithdraw(CWnd* pParent /*=NULL*/)
: CDialog(CDepositOrWithdraw::IDD, pParent)
{
//{{AFX_DATA_INIT(CDepositOrWithdraw)
m_strUser = _T("");
m_strPassW = _T("");
m_Money = 0.0f;
//}}AFX_DATA_INIT
}
void CDepositOrWithdraw::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDepositOrWithdraw)
DDX_Control(pDX, IDC_COMBO3, m_combo);
DDX_Text(pDX, IDC_EDIT1, m_strUser);
DDX_Text(pDX, IDC_EDIT2, m_strPassW);
DDX_Text(pDX, IDC_EDIT3, m_Money);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDepositOrWithdraw, CDialog)
//{{AFX_MSG_MAP(CDepositOrWithdraw)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDepositOrWithdraw message handlers
void CDepositOrWithdraw::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);
int choose=m_combo.GetCurSel();
CBankSystemApp *App = (CBankSystemApp*)(AfxGetApp());
CBankSystemDlg *m_pMain = (CBankSystemDlg*)App->m_pMainWnd;
_ConnectionPtr m_pCon;
_RecordsetPtr m_pRec;
CString strSQL,m_strRealPassW,m_strKind,m_strNowTime,m_strStatus,m_strSort,m_strDueTime,m_strLastTime;
_variant_t varMoney,varTime,varRatio,varInterest;
float money,ratio,interest;
CTime m_cDueTime,m_cNowTime,m_cLastTime;
if(m_strUser.IsEmpty()||m_strPassW.IsEmpty())
{
AfxMessageBox("请填写详细信息!");
return;
}
m_pCon = m_pMain->m_pConnection;
m_pRec.CreateInstance(__uuidof(Recordset));
strSQL="SELECT * FROM VIEW2 where 账号=";
strSQL+=m_strUser;
m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
if(m_pRec->adoEOF)
{
AfxMessageBox("不存在此账号!");
m_pRec->Close();
return;
}
m_strRealPassW=(LPCSTR)_bstr_t(m_pRec->GetCollect("密码"));
m_strStatus=(LPCSTR)_bstr_t(m_pRec->GetCollect("状态"));
if(m_strRealPassW!=m_strPassW)
{
AfxMessageBox("密码错误!");
m_pRec->Close();
return;
}
if(m_strStatus!="正常")
{
AfxMessageBox("账号已经挂失!");
m_pRec->Close();
return;
}
//获取当前汇率
if(m_combo.GetCurSel()==1)
varRatio=m_pRec->GetCollect("美元");
else if(m_combo.GetCurSel()==2)
varRatio=m_pRec->GetCollect("欧元");
else
varRatio=m_pRec->GetCollect("人民币");
ratio=(float)varRatio.dblVal;
switch(m_pMain->m_iTransaction)
{
case 1: //存钱
{
m_strKind=(LPCSTR)_bstr_t(m_pRec->GetCollect("定活"));
if(m_strKind=="定期")
{
AfxMessageBox("定期账户不能存款!");
return;
}
else
{
m_pMain->Check(m_strUser); //结算
m_pRec->Close();
m_pRec=NULL;
m_pRec.CreateInstance(__uuidof(Recordset));
m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
varMoney=m_pRec->GetCollect("金额");
money=varMoney.dblVal;
money+=m_Money*ratio;
varMoney.bVal=VT_I8;
varMoney.dblVal=money;
m_pRec->PutCollect("金额",varMoney);
}
AfxMessageBox("存款成功");
break;
}
case 2:
{
m_pCon->BeginTrans();
CString m_strDueTime;
CTime m_cNowTime,m_cDueTime;
CTimeSpan timespan;
m_pRec.CreateInstance(__uuidof(Recordset));
m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_strKind=(LPCSTR)_bstr_t(m_pRec->GetCollect("定活"));
if(m_strKind=="定期")
{
m_strDueTime=(LPCSTR)_bstr_t(m_pRec->GetCollect("到期时间"));
m_pMain->CStringToCTime(m_strDueTime,m_cDueTime);
m_cNowTime=CTime::GetCurrentTime();
timespan=m_cNowTime-m_cDueTime;
if(timespan.GetDays()<0)
m_pRec->PutCollect("定活",_variant_t("活期"));
}
m_pRec->Update();
m_pRec->Close();
m_pRec=NULL;
m_pMain->Check(m_strUser);
m_pRec.CreateInstance(__uuidof(Recordset));
m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
varMoney=m_pRec->GetCollect("金额");
money=varMoney.dblVal;
money-=m_Money*ratio;
varMoney.bVal=VT_I8;
varMoney.dblVal=money;
m_pRec->PutCollect("金额",varMoney);
if(money<10)
{
m_pCon->RollbackTrans();
m_pRec->Close();
AfxMessageBox("存款不足!");
return;
}
m_pCon->CommitTrans();
AfxMessageBox("取款成功");
}
}
m_pRec->Update();
m_pRec->Close();
m_cNowTime = CTime::GetCurrentTime();
m_strNowTime = m_cNowTime.Format("%y-%m-%d %H:%M:%S");
log.AcountA = m_strUser;
log.AcountB = "";
log.Operator = m_pMain->m_strOpr;
if(m_pMain->m_iTransaction==1)
log.OprKind = "存钱";
else
log.OprKind = "取钱";
log.OprMoney.Format("%f",m_Money);
log.OprTime = m_strNowTime;
WriteLog();
CDialog::OnOK();
}
void CDepositOrWithdraw::WriteLog()
{
CBankSystemApp *App = (CBankSystemApp*)(AfxGetApp());
CBankSystemDlg *m_pMain = (CBankSystemDlg*)App->m_pMainWnd;
_ConnectionPtr m_pCon;
_RecordsetPtr m_pRec;
m_pCon = m_pMain->m_pConnection;
m_pRec.CreateInstance(__uuidof(Recordset));
m_pRec->Open("SELECT * FROM Log",m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_pRec->AddNew();
m_pRec->PutCollect("操作类型",_variant_t(log.OprKind));
m_pRec->PutCollect("操作账户1",_variant_t(log.AcountA));
m_pRec->PutCollect("操作账户2",_variant_t(log.AcountB));
m_pRec->PutCollect("操作员",_variant_t(log.Operator));
m_pRec->PutCollect("操作时间",_variant_t(log.OprTime));
m_pRec->PutCollect("操作金额",_variant_t(log.OprMoney));
m_pRec->Update();
m_pRec->Close();
}
BOOL CDepositOrWithdraw::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_combo.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -