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

📄 transfer.cpp

📁 一个简单的银行管理程序 VC++实现
💻 CPP
字号:
// Transfer.cpp : implementation file
//

#include "stdafx.h"
#include "BankSystem.h"
#include "Transfer.h"
#include "BankSystemDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTransfer dialog


CTransfer::CTransfer(CWnd* pParent /*=NULL*/)
	: CDialog(CTransfer::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTransfer)
	m_strPassW = _T("");
	m_strToUser = _T("");
	m_strFromUser = _T("");
	m_Money = 0.0f;
	//}}AFX_DATA_INIT
}


void CTransfer::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTransfer)
	DDX_Text(pDX, IDC_EDIT2, m_strPassW);
	DDX_Text(pDX, IDC_EDIT3, m_strToUser);
	DDX_Text(pDX, IDC_EDIT1, m_strFromUser);
	DDX_Text(pDX, IDC_EDIT4, m_Money);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTransfer, CDialog)
	//{{AFX_MSG_MAP(CTransfer)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTransfer message handlers

void CTransfer::OnOK() 
{
	// TODO: Add extra validation here

	CBankSystemApp *App = (CBankSystemApp*)AfxGetApp();	
	CBankSystemDlg *m_pMain = (CBankSystemDlg*)App->m_pMainWnd;

	UpdateData(true);
	if(m_strFromUser.IsEmpty()||m_strToUser.IsEmpty()||m_strPassW.IsEmpty())
	{
		AfxMessageBox("请填写详细信息!");
		return;
	}
	CString    strSQL,m_strMoney,m_strID,m_strKind,m_strRealPassW;
	_variant_t varMoney;  
	float      money;

//	m_pCon->BeginTrans;  
	m_pRec.CreateInstance(__uuidof(Recordset));
	strSQL="SELECT * FROM Acount where 账号=";
	strSQL+=m_strFromUser;
	m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	if(m_pRec->adoEOF)
	{
		AfxMessageBox("源账户不存在!");
		m_pRec->Close();
		return;
	}
	else
	{
		m_strKind=(LPCSTR)_bstr_t(m_pRec->GetCollect("定活"));
		m_strRealPassW=(LPCSTR)_bstr_t(m_pRec->GetCollect("密码"));
        if(m_strRealPassW!=m_strPassW)
		{
			AfxMessageBox("密码错误!");
			m_pRec->Close();
			return;
		}
		if(m_strKind=="定期")
		{
			AfxMessageBox("不能对定期账户进行转帐操作!");
			m_pRec->Close();
			return;
		}
	}


	m_pRec.CreateInstance(__uuidof(Recordset));
	strSQL="SELECT * FROM Acount where 账号=";
	strSQL+=m_strToUser;
	m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	if(m_pRec->adoEOF)
	{
		AfxMessageBox("目的账户不存在!");
		m_pRec->Close();
		return;
	}
	else
	{
		m_strKind=(LPCSTR)_bstr_t(m_pRec->GetCollect("定活"));
		if(m_strKind=="定期")
		{
			AfxMessageBox("不能对定期账户进行转帐操作!");
			m_pRec->Close();
			return;
		}
	}
	

	m_pRec.CreateInstance(__uuidof(Recordset));
	strSQL="SELECT * FROM Acount where 账号=";
	strSQL+=m_strFromUser;
	m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	m_pMain->Check(m_strFromUser);
	varMoney=m_pRec->GetCollect("金额");
	money=varMoney.dblVal;
	money-=m_Money;

	if(money<10)
	{
		AfxMessageBox("余额不够!");
		m_pRec->Close();
		return;
	}

	varMoney.dblVal=money;
	m_pRec->PutCollect("金额",varMoney);
	m_pRec->Update();
	m_pRec->Close();

	m_pRec.CreateInstance(__uuidof(Recordset));
	strSQL="SELECT * FROM Acount where 账号=";
	strSQL+=m_strToUser;
	m_pRec->Open(_variant_t(strSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	m_pMain->Check(m_strToUser);
	varMoney=m_pRec->GetCollect("金额");
	money=varMoney.dblVal;
	money+=m_Money;
	varMoney.dblVal=money;
	m_pRec->PutCollect("金额",varMoney);
	m_pRec->Update();
	m_pRec->Close();


	CTime m_cNowTime = CTime::GetCurrentTime();

	log.AcountA  = m_strFromUser;
	log.AcountB  = m_strToUser;
	log.OprMoney.Format("%f",m_Money);
	log.Operator = m_pMain->m_strOpr;
	log.OprKind  = "转账";
	log.OprTime  = m_cNowTime.Format("%y-%m-%d %H:%M:%S");

	WriteLog();

	AfxMessageBox("转账成功!");
	CDialog::OnOK();
}

void CTransfer::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 CTransfer::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CBankSystemApp *App = (CBankSystemApp*)AfxGetApp();	
	CBankSystemDlg *m_pMain = (CBankSystemDlg*)App->m_pMainWnd;
	m_pCon=m_pMain->m_pConnection;	
	
	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 + -