?? usereg.cpp
字號:
// USEREG.cpp : implementation file
//
#include "stdafx.h"
#include "BankSystem.h"
#include "USEREG.h"
#include "BankSystemDlg.h"
#include "ADOConn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUSEREG dialog
CUSEREG::CUSEREG(CWnd* pParent /*=NULL*/)
: CDialog(CUSEREG::IDD, pParent)
{
//{{AFX_DATA_INIT(CUSEREG)
m_year = 0;
m_tel = _T("");
m_pwd = _T("");
m_name = _T("");
m_money = 0.0f;
m_id = _T("");
m_addr = _T("");
//}}AFX_DATA_INIT
}
void CUSEREG::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUSEREG)
DDX_Control(pDX, IDC_BANKSELECT, m_bankselect);
DDX_Control(pDX, IDC_TYPESELECT, m_type);
DDX_Control(pDX, IDC_MESSAGE, m_messageshow);
DDX_Control(pDX, IDC_CUNTYPE, m_cuntype);
DDX_Text(pDX, IDC_YEARNUM, m_year);
DDX_Text(pDX, IDC_USERTEL, m_tel);
DDX_Text(pDX, IDC_USERPWD, m_pwd);
DDX_Text(pDX, IDC_USERNAME, m_name);
DDX_Text(pDX, IDC_USERMONEY, m_money);
DDX_Text(pDX, IDC_USERID, m_id);
DDX_Text(pDX, IDC_USERADDR, m_addr);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUSEREG, CDialog)
//{{AFX_MSG_MAP(CUSEREG)
ON_BN_CLICKED(IDC_SURE, OnSure)
ON_BN_CLICKED(IDC_PRINT, OnPrint)
ON_CBN_SELCHANGE(IDC_CUNTYPE, OnSelchangeCuntype)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUSEREG message handlers
BOOL CUSEREG::OnInitDialog()
{
CDialog::OnInitDialog();
ADOConn Conn;
Conn.OnInitADOConn();
IsReg=0;
if(theApp.IsonID!="")//防止重復開戶
{ IsReg=1;
userID=theApp.IsonID;
m_name=theApp.IsonName;
m_id=theApp.IsonPID;
m_addr=theApp.IsonAddr;
m_tel=theApp.IsonTel;
GetDlgItem(IDC_USERNAME)->SetWindowText(m_name);
GetDlgItem(IDC_USERNAME)->EnableWindow(false);
GetDlgItem(IDC_USERID)->SetWindowText(m_id);
GetDlgItem(IDC_USERID)->EnableWindow(false);
GetDlgItem(IDC_USERADDR)->SetWindowText(m_addr);
GetDlgItem(IDC_USERADDR)->EnableWindow(false);
GetDlgItem(IDC_USERTEL)->SetWindowText(m_tel);
GetDlgItem(IDC_USERTEL)->EnableWindow(false);
}
GetDlgItem(IDOK)->ShowWindow(SW_HIDE);//隱藏完成
GetDlgItem(IDC_PRINT)->ShowWindow(SW_HIDE);//隱藏打印
// GetDlgItem(IDC_YEARNUM)->EnableWindow(false);
_RecordsetPtr pRst1,pRst2;
pRst1.CreateInstance(_uuidof(Recordset));
pRst2.CreateInstance(_uuidof(Recordset));
Conn.OnInitADOConn();
CString sql1,sql2;
sql1.Format("select bankName from bankInfo");
sql2.Format("select MoneyName from MoneyOP");
try
{
pRst1=Conn.Execute((_bstr_t)sql1);
pRst2=Conn.Execute((_bstr_t)sql2);
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
}
while(!pRst1->adoEOF)
{
CString sName;
_variant_t v=pRst1->GetCollect("bankName");
sName=v.bstrVal;
m_bankselect.AddString(sName);
pRst1->MoveNext();
}
while(!pRst2->adoEOF)
{
CString sName;
_variant_t v=pRst2->GetCollect("MoneyName");
sName=v.bstrVal;
m_type.AddString(sName);
pRst2->MoveNext();
}
pRst1->Close();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CUSEREG::OnSelchangeCuntype()
{
int iPos1=m_cuntype.GetCurSel();//當前選中的行。
if(iPos1!=-1)
m_cuntype.GetLBText(iPos1,sCun);
if(sCun=="活期")
{
GetDlgItem(IDC_YEARNUM)->EnableWindow(false);
}
else
GetDlgItem(IDC_YEARNUM)->EnableWindow(true);
}
int CUSEREG::haveCard(CString sCode)
{
ADOConn Conn;
Conn.OnInitADOConn();
CString sql;
_RecordsetPtr pRst;
sql.Format("select * from cardInfo where cardId=\'%s\'",sCode);
pRst=Conn.GetRecordset((_bstr_t)sql);
if(pRst->adoEOF)
return 0;
else
return 1;
}
int CUSEREG::haveUser(CString UserID)
{
ADOConn Conn;
Conn.OnInitADOConn();
CString sql;
_RecordsetPtr pRst;
sql.Format("select * from userInfo where userID=\'%s\'",UserID);
pRst=Conn.GetRecordset((_bstr_t)sql);
if(pRst->adoEOF)
return 0;
else
return 1;
}
void CUSEREG::OnSure()
{
//sCun=sBank=sType="";
this->UpdateData(TRUE);
int iPos2=m_bankselect.GetCurSel();
int iPos3=m_type.GetCurSel();
if(iPos2!=-1)
m_bankselect.GetLBText(iPos2,sBank);
if(iPos3!=-1)
m_type.GetLBText(iPos3,sType);
if(m_name=="")
{
AfxMessageBox("名字不能為空");
GetDlgItem(IDC_USERNAME)->SetFocus();
return;
}
if(m_id=="")
{
AfxMessageBox("身份證不能為空");
GetDlgItem(IDC_USERID)->SetFocus();
return;
}
if(m_money==0)
{
AfxMessageBox("存款金額不能為空");
GetDlgItem(IDC_USERMONEY)->SetFocus();
return;
}
if(sCun=="")
{
AfxMessageBox("存款類型不能為空");
GetDlgItem(IDC_CUNTYPE)->SetFocus();
return;
}
if(sCun=="死期")
{
if(m_year==0)
{
AfxMessageBox("填寫存款期限");
return;
}
}
if(m_pwd=="")
{
AfxMessageBox("密碼不能為空");
return;
}
if(sBank=="")
{
AfxMessageBox("銀行不能為空");
GetDlgItem(IDC_BANKSELECT)->SetFocus();
return;
}
if(sType=="")
{
AfxMessageBox("存款貨幣不能為空");
GetDlgItem(IDC_TYPESELECT)->SetFocus();
return;
}
GetDlgItem(IDOK)->ShowWindow(!SW_HIDE);//顯示完成
GetDlgItem(IDC_SURE)->ShowWindow(SW_HIDE);//隱藏確定
GetDlgItem(IDC_PRINT)->ShowWindow(!SW_HIDE);//顯示打印
//生成卡號并顯示到message上
ADOConn Conn;
Conn.OnInitADOConn();
_RecordsetPtr pRst;
pRst.CreateInstance(_uuidof(Recordset));
CString sql;
sql.Format("select * from bankInfo");
pRst=Conn.Execute((_bstr_t)sql);
//找到所屬銀行和前4位代碼
while (!pRst->adoEOF)
{
_variant_t v=pRst->GetCollect("bankName");
sName=v.bstrVal;
if(sName==sBank)
{
v=pRst->GetCollect("bankId");
bID=v.bstrVal;
break;
}
pRst->MoveNext();
}
char CH_CODE[]="0123456789";
int SIZE_CODE=4;
int SIZE_USERID=3;
srand((unsigned)time(NULL));
while(1)
{
for(int i=0;i!=SIZE_CODE;++i)
{
int x=rand()%(sizeof(CH_CODE)-1);
sCardCode+=CH_CODE[x];
}
sCode=bID+sCardCode;//sCode 為用戶的最后的卡號
if(haveCard(sCode))
continue;
else break;
}
while(1)
{
for(int i=0;i!=SIZE_USERID;++i)
{
int x=rand()%(sizeof(CH_CODE)-1);
userID+=CH_CODE[x];
}
if(haveUser(userID))
continue;
else break;
}
if(theApp.IsonID!="")//防止重復開戶
{
userID=theApp.IsonID;
}
//MessageBox(sCode);
Money.Format("%f",m_money);
Year.Format("%d",m_year);
sInfo="姓名:"+m_name+" "+userID+"\r\n";
sInfo+="卡號"+sCode+"\r\n"+"密碼:"+m_pwd+"\r\n";
sInfo+="金額:"+Money+"\r\n";
if(sCun=="活期")
sInfo+="幣種:"+sType+"\r\n"+" 類型:"+sCun+"\r\n";
else
sInfo+="幣種:"+sType+"\r\n"+" 類型:"+sCun+"\r\n"+"期限"+Year+"年\r\n";
sInfo+="銀行:"+sBank+"\r\n";
//查找出利率
sql.Format("select * from MoneyOP");
pRst=Conn.Execute((_bstr_t)sql);
CString sTy;
_variant_t v;
while(!pRst->adoEOF)
{
v=pRst->GetCollect("MoneyName");
sTy=v.bstrVal;
if(sTy==sType)
{
if(sCun=="活期")
v=pRst->GetCollect("Live");
else if(sCun=="死期")
v=pRst->GetCollect("dead");
break;
}
pRst->MoveNext();
}
curr=v.dblVal;
Cur.Format("%f",curr);
sInfo+="年利率:"+Cur+"\r\n";
//顯示所有信息
GetDlgItem(IDC_MESSAGE)->SetWindowText(sInfo);
}
void CUSEREG::OnOK()
{
CString Time;
CTime t=CTime::GetCurrentTime();
int iYear,iMonth,iDay,iHour,iMin;
iYear=t.GetYear();
iMonth=t.GetMonth();
iDay=t.GetDay();
iHour=t.GetHour();
iMin=t.GetMinute();
Time.Format("%d/%d/%d/%d/%d",iYear,iMonth,iDay,iHour,iMin);
// 保存到數據庫上
ADOConn Conn;
_RecordsetPtr pRst;
pRst.CreateInstance(_uuidof(Recordset));
Conn.OnInitADOConn();
CString sql,Loss,sql1;
Loss="使用中";
sql.Format("insert into cardInfo(cardId,cardPwd,curType,saveType,balance,IsReportLoss,yearCurr,year,cardOwer,regtime,optime)\
values(\'%s\',\'%s\',\'%s\',\'%s\',\'%f\',\'%s\',\'%f\',\'%d\',\'%s\',\'%s\',\'%s\')",sCode,m_pwd,sType,sCun,m_money,Loss,curr,m_year,userID,Time,Time);
sql1.Format("insert into userInfo(userID,userName,userPId,userTel,userAddr,bankId) \
values(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\')",userID,m_name,m_id,m_tel,m_addr,bID);
pRst=Conn.Execute((_bstr_t)sql);
if(IsReg==0)
pRst=Conn.Execute((_bstr_t)sql1);
CDialog::OnOK();
}
void CUSEREG::OnPrint()
{
// 打印到記事本上
CString sPath="c://user.txt";
CFile file;
file.Open(sPath,CFile::modeCreate|CFile::modeWrite);
file.Write(sInfo,sInfo.GetLength());
file.Close();
::ShellExecute(NULL,"open",sPath,NULL,NULL,SW_SHOWNORMAL);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -