⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 depositorwithdraw.cpp

📁 一个简单的银行管理程序 VC++实现
💻 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 + -