资源描述
C++课程设计
*******************************
课题:简单银行系统模拟ATM
系别:计科系
专业年级:XXXXXX
学号:XXXXX
姓名:XXXX
一、 设计任务分析
根据课程设计要求及个人具体情况,分析如下:系统具有注册开户、用户登录、退出功能。
注册开户中有身份证号码、姓名、地址、电话号码、货币类型、预存金额。
用户登录中,用户登录成功后,才能享受取款、存款、修改密码等服务。
二、 类(对象)设计
据上得,设计类AccountItem和Accountbook。其类图如下:
AccountItem
string m_Anumber;
string m_Password;
string m_Name;
double m_Balance;
string m_Adress;
string m_ID;
string m_TEL;
string m_Currency;
AccountItem(AccountItem &a);
AccountItem &operator=(AccountItem &a);
AccountItem();
AccountItem(string number,string password,string name,double balance,string Currency,string TEL,string ID,string Adress);
void Display();
void write(ofstream &out);
void read(ifstream& cin);
int CheckNumber(string Anumber);
string GetNumber();
string GetPassword();
void UpdatePassword(string password);
void DeductBalance(double pay);
void StoreBalance(double money);
double GetBalance();
string GetName();
int IsNull();
Accountbook
AccountItem b[100];
int m_AccountCount;
void SetAccountbook();
Accountbook();
void LoadAccountbook();
void StoreAccountbook();
AccountItem FindItem(string number);
bool UpdateItem(AccountItem Item);
三、 流程图
ATM
退出
用户登录
注册开户
取款
存款
修改密码
退出
账号
密码
姓名
身份证号
住址
电话
货币类型
预存金额
OK
四、源代码
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
class AccountItem
{
private:
string m_Anumber;
string m_Password;
string m_Name;
double m_Balance;
string m_Adress;
string m_ID;
string m_TEL;
string m_Currency;
public:
AccountItem(AccountItem &a)
{
m_Anumber=a.m_Anumber;
m_Password=a.m_Password;
m_Name=a.m_Name;
m_Balance=a.m_Balance;
m_Currency=a.m_Currency;
m_TEL=a.m_TEL;
m_ID=a.m_ID;
m_Adress=a.m_Adress;
}
AccountItem &operator=(AccountItem &a)
{
m_Anumber=a.m_Anumber;
m_Password=a.m_Password;
m_Name=a.m_Name;
m_Balance=a.m_Balance;
m_Currency=a.m_Currency;
m_TEL=a.m_TEL;
m_ID=a.m_ID;
m_Adress=a.m_Adress;
return *this;
}
void SetAccountItem(string number,string password,string name,double balance,string Currency,string TEL,string ID,string Adress);
AccountItem();
AccountItem(string number,string password,string name,double balance,string Currency,string TEL,string ID,string Adress);
void Display();
void write(ofstream &out);
void read(ifstream& cin);
int CheckNumber(string Anumber);
string GetNumber();
string GetPassword();
void UpdatePassword(string password);
void DeductBalance(double pay);
void StoreBalance(double money);
double GetBalance();
string GetName();
int IsNull();
};
void AccountItem::SetAccountItem(string number,string password,string name,double balance,string Currency,string TEL,string ID,string Adress)
{
m_Anumber=number;
m_Password=password;
m_Name=name;
m_Balance=balance;
m_Currency=Currency;
m_TEL=TEL;
m_ID=ID;
m_Adress=Adress;
}
void AccountItem::UpdatePassword(string password)
{
m_Password=password;
}
void AccountItem::StoreBalance(double money)
{
m_Balance=m_Balance+money;
}
int AccountItem::CheckNumber(string Anumber)
{
if(m_Anumber==Anumber)
{
return 1;
}
else
{
return 0;
}
}
string AccountItem::GetNumber()
{
return m_Anumber;
}
string AccountItem::GetPassword()
{
return m_Password;
}
void AccountItem::DeductBalance(double pay)
{
m_Balance=m_Balance-pay;
}
double AccountItem::GetBalance()
{
return m_Balance;
}
string AccountItem::GetName()
{
return m_Name;
}
int AccountItem::IsNull()
{
if(m_Anumber=="")
return 1;
return 0;
}
void AccountItem::read(ifstream& cin)
{
cin>>m_ID;
cin>>m_Name;
cin>>m_Adress;
cin>>m_TEL;
cin>>m_Currency;
cin>>m_Balance;
cin>>m_Anumber;
cin>>m_Password;
}
void AccountItem::write(ofstream &cout)
{
cout<<m_ID<<endl;
cout<<m_Name<<endl;
cout<<m_Adress<<endl;
cout<<m_TEL<<endl;
cout<<m_Currency<<endl;
cout<<m_Balance<<endl;
cout<<m_Anumber<<endl;
cout<<m_Password<<endl;
}
AccountItem::AccountItem()
{
m_Anumber="";
m_Password="";
m_Name="";
m_Balance=0;
m_Currency="";
m_TEL="";
m_ID="";
m_Adress="";
}
AccountItem::AccountItem(string number,string password,string name,double balance,string Currency,string TEL,string ID,string Adress)
{
m_Anumber=number;
m_Password=password;
m_Name=name;
m_Balance=balance;
m_Currency=Currency;
m_TEL=TEL;
m_ID=ID;
m_Adress=Adress;
}
void AccountItem::Display()
{
cout<<"账号:";
cout<<m_Anumber<<endl;
cout<<"密码:";
cout<<m_Password<<endl;
cout<<"姓名:";
cout<<m_Name<<endl;
cout<<"存款余额:";
cout<<m_Balance<<endl;
}
class Accountbook
{
private:
AccountItem b[100];
int m_AccountCount;
public:
void SetAccountbook();
Accountbook();
void LoadAccountbook();
void StoreAccountbook();
AccountItem FindItem(string number);
bool UpdateItem(AccountItem Item);
};
void Accountbook::SetAccountbook()
{
string AccountNo;
string AccountPassword;
string ItemName;
double Balance;
string Currency;
string TEL;
string ID;
string Adress;
string password1,password2;
ofstream Output("accountbook.txt");
cout<<"请输入帐号:";
cin>>AccountNo;
cout<<"请输入密码:";
while(1){
cin>>password1;
cout<<"请输入确认密码:"<<endl;
cin>>password2;
if(password1==password2)
{
AccountPassword=password1;
break;
}
else
{
cout<<"密码和确认密码不同!"<<"请重新输入:"<<endl;
}
}
cout<<"请输入姓名:";
cin>>ItemName;
cout<<"请输入身份证号:";
cin>>ID;
cout<<"请输入家庭住址:";
cin>>Adress;
cout<<"请输入电话号码:";
cin>>TEL;
int i;
while(1){
cout<<"请选择货币种类:"<<endl;
cout<<"1.人民币 2.美元"<<endl;
cin>>i;
if(i==1){
Currency="人民币";cout<<"请输入预存款:";
cin>>Balance;break;}
else if(i==2){
Currency="美元";cout<<"请输入预存款:";
cin>>Balance;Balance=Balance*8;break;}
else {cout<<"选择类型错误!"<<endl;continue;}
}
b[m_AccountCount].SetAccountItem(AccountNo,AccountPassword,ItemName,Balance, Currency,TEL,ID,Adress);
m_AccountCount++;
for(int j=0;j<m_AccountCount;j++)
{
b[j].write(Output);
}
}
Accountbook::Accountbook()
{
m_AccountCount=0;
}
void Accountbook::LoadAccountbook( )
{
ifstream Input("accountbook.txt");
int j=0;
while(Input)
{
b[j].read(Input);
j++;
}
Input.close();
m_AccountCount=j;
return;
}
AccountItem Accountbook::FindItem(string number)
{
int i;
bool Found=false;
for(i=0;i<m_AccountCount;i++)
{
if(b[i].GetNumber()==number)
{
Found=true;
break;
}
}
if(Found==true)
{
return b[i];
}
else
{
return AccountItem();
}
}
bool Accountbook::UpdateItem(AccountItem Item)
{
string no=Item.GetNumber();
int i;
bool flag=false;
for(i=0;i<m_AccountCount;i++)
{
if(b[i].GetNumber()==no)
{
flag=true;
break;
}
}
if(flag=true)
{
b[i]=Item;
}
return flag;
}
void Accountbook::StoreAccountbook()
{
ofstream Output("accountbook.txt");
int k;
for(k=0;k<m_AccountCount;k++)
{
b[k].write(Output);
}
Output.close();
return;
}
class Massage
{
private:
Accountbook MyAccountbook;
AccountItem FindItem;
public:
Massage(){}
void MakeMassage();
};
void Massage::MakeMassage()
{
ifstream Input("accountbook.txt");
int n;
string AccountNo;
string AccountPassword;
double AccountPay;
string ItemName;
double Balance;
string TransactionCode;
cout<<endl;
do
{
cout<<" ※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"
<<" ※ ※\n"
<<" ※ 欢迎使用银行管理系统 模拟ATM机 ※\n"
<<" ※ ※\n"
<<" ※ 请用户在使用前选择开户: ※\n"
<<" ※ 1:注册开户 ※\n"
<<" ※ 2:用户登录 ※\n"
<<" ※ 0:退出 ※\n"
<<" ※ ※\n"
<<" ※ ※\n"
<<" ※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl;
cout<<"请选择:"<<endl;
cin>>n;
switch(n)
{
case 1:
MyAccountbook.SetAccountbook();
break;
case 2:
MyAccountbook.LoadAccountbook( );
cout<<"请输入帐号:";
cin>>AccountNo;
FindItem=MyAccountbook.FindItem(AccountNo);
if(FindItem.IsNull())
{
cout<<"此用户不存在!"<<endl;
return;
}
cout<<"请输入密码:";
cin>>AccountPassword;
if(FindItem.GetPassword()!=AccountPassword)
{
cout<<"密码错误!"<<endl;
return;
}
int m;
do{
cout<<"1:取款\n"
<<"2:存款\n"<<"3:查询余额\n"<<"4:修改密码\n"<<"0:退出\n"<<endl;
cin>>m;
switch(m)
{
case 2:
cout<<"请输入存款金额(RMB):";
cin>>AccountPay;
FindItem.StoreBalance(AccountPay);
MyAccountbook.UpdateItem(FindItem);
MyAccountbook.StoreAccountbook();
break;
case 1:
cout<<"请输入取款金额:";
cin>>AccountPay;
FindItem.DeductBalance(AccountPay);
MyAccountbook.UpdateItem(FindItem);
MyAccountbook.StoreAccountbook();
cout<<"请取钱!"<<endl;
break;
case 4:
cout<<"请输入原密码:"<<endl;
cin>>AccountPassword;
if(FindItem.GetPassword()==AccountPassword)
{
cout<<"请输入新密码:"<<endl;
cin>>AccountPassword;
FindItem.UpdatePassword(AccountPassword);
cout<<"请确认新密码:"<<endl;
cin>>AccountPassword;
if(FindItem.GetPassword()==AccountPassword)
{
cout<<"修改成功!"<<endl;
MyAccountbook.UpdateItem(FindItem);
MyAccountbook.StoreAccountbook();
}
}
break;
case 3:
cout<<"余额是:"<<FindItem.GetBalance()<<"人民币"<<endl;
break;
}
}while(m!=0);
case 0:
break;
}
}while(n!=0);
return;
}
int main()
{
Massage d;
d.MakeMassage();
return 0;
}
五、测试情况
1.首页:
2.注册用户:
3.用户登录:
4.取款:
5.存款:
6.查询余额:
7.修改密码:
8.退出:
六、小结
1.系统未能实现账户类型相关的系列操作、系统安全性较低,对此感到较为遗憾。
2.通过这几个周的实践,感到自己有太多的不足之处。课程设计真的是太考验和历练人了,对我来说,这是很大的挑战,虽然做的不是很好,但我相信,有我一直的努力,一定会进步的。
展开阅读全文