#include<iostream>
#include<string>
#include<fstream>
using namespace std
class account //atm账户类
{
private:
string CardNum,Psw//卡号、密码
float Balance
public:
friend class ATM//atm为友元
/*void get_cardnum()
void get_psw()
void get_balance()*/
account(){}//<---------------------here
account(string num,string passwd,float balance)//构造函数
void Write()
}
class ATM //atm机类
{
private:
int times
account *ac
public:
ATM()void load( account *act )//装入账户信息
void welcome()//初始欢迎信息
bool check_passwd( string pwd )//验证当前账户信息的密码
void change_psw()//修改密码
void get_money()//取钱塌毁毕
float check_balance()//查账
void tran()//转账
void exit()//退卡
void function_show()//显示功能菜单
void lock()//锁定账户
}
/*
* account::account( string num, string passwd, float balance )
* account类构造函数
* 用途: 使用给定的账号密码等信团芹息初始化一个account对象
* 参数: string num 账号
* string passwd 密码
* float balance
*/
account::account( string num, string passwd, float balance )
{
CardNum = num
Psw = passwd
Balance = balance
}
//atm类构造函数
/*account::get_cardnum()
{
return CardNum
}
account::get_psw()
{
return Psw
}
account::get_balance()
{
return Balance
}*/
void account::Write()
{
ofstream outfile("atm.txt",ios::binary)//<-----------------here
outfile.write((char *)(this),sizeof(account))//<-------------here
outfile.close()
}
ATM::ATM()
{
}
/*
* void ATM::load( account *act )
* ATM类装入账户信息函数
* 用途: 载入指定的account对象,模拟atm插卡过程
* 参数: account *act 要载入的account对象指针
*/
void ATM::load( account *act )
{
ac = act
}
/*
* void ATM::welcome()
* ATM类显示初始欢迎信息函数
* 用途: 显示欢迎信息,提示密码输入并验证
* 参数: 无
*
*/
void ATM::welcome()
{
times = 0//记录密码输入错误次数
cout <<"Welcome to use the China Bank ATM!" <<endl
string pwd//这一个语句应该上移的,一般来说数据的定义和初始化一块写在开头,下面才是各种 *** 余野作的语句
while( times <3 )
{
cout <<"Please enter the password: " <<endl
cin >>pwd
if( !check_passwd( pwd ) )
{
cout <<"The password you entered is wrong, please enter again" <<endl
times++
}
else
{
function_show()
break
}
}
if( times >= 3 )
lock()//输入密码错误次数超过(等于)3次,锁定账户
}
bool ATM::check_passwd( string pwd )
{
if( pwd == ac->Psw )
return true
else
return false
}
void ATM::function_show()
{
int n
cout <<"(1) Change Password" <<endl
cout <<"(2) Get Money" <<endl
cout <<"(3) Check Balance" <<endl
cout <<"(4) Transfer accounts" <<endl
cout <<"(5) Exit" <<endl
cin >>n
while(n != 1 &&n != 2 &&n != 3 &&n != 4 &&n != 5) //这样就可以完全限制用户的输入
{
cout <<"Please enter the right number" <<endl
cin >>n
}
switch( n )
{
case 1:
change_psw()
break
case 2:
get_money()
break
case 3:
cout <<check_balance() <<endl
break
case 4:
tran()
break
case 5:
exit()
break
}
}
void ATM::lock()
{
cout <<"Sorry! Your card has been confiscated!" <<endl
exit()
}
void ATM::change_psw()
{
string old_psw, new_psw1, new_psw2
int t = 0
while( t <3 )
{
cout <<"Please enter the old password: "
cin >>old_psw
if( !check_passwd( old_psw ) )
{
cout <<"The password you enter is wrong, please enter again" <<endl
t++
}
else
{
cout <<"Please enter the new password: "
cin >>new_psw1
cout <<"Please enter the new password again: "
cin >>new_psw2
if( new_psw1 == new_psw2 )
{
ac ->Psw = new_psw2
cout <<"You have change your password successfully!" <<endl
break
}
else
cout <<"Sorry, entered passwords do not match! " <<endl
}
}
//}//<----------------------here
if( t >= 3 )
{
cout <<"Sorry, you have inputed the wrong password for three times and more! " <<endl
}
}
void ATM::get_money()
{
float money
cout <<"Please enter the amount of money you want to get: " <<endl
cin >>money
while( money >ac ->Balance)
{
cout <<"Your balance is not enough, please enter again" <<endl
cin >>money
}
ac ->Balance = ac ->Balance - money
}
float ATM::check_balance()
{
return ac ->Balance
}
void ATM::tran()
{
account a[5]
string cn
float m
cout<<"please enter the cardnum of the account you want to transfer money to"<<endl
cin>>cn
ifstream infile("atm.txt",ios::binary)
infile.seekg(0,ios::beg)
for(int i=0i<5i++)
{
infile.read((char *)(&a[i]),sizeof(a[i]))
}
for(int j=0j<5j++)
{
if(cn==a[i].CardNum)
{
cout<<"please enter the amount of money"<<endl
cin>>m
while(m>ac->Balance)
{
cout<<"there is no enough money in your account,please enter again"<<endl
cin>>m
}
ac->Balance=ac->Balance-m
a[i].Balance=a[i].Balance+m
ofstream outfile("atm.txt",ios::binary)
outfile.seekp(i*sizeof(a[0]),ios::beg)
outfile.write((char *) &a[i],sizeof(a[i]))
}
}
if(j>=5)
{
cout<<"the account doesn't exit"<<endl
}
}
void ATM::exit()
{
cout <<"Please take your card!" <<endl
}
int main()
{
account a[5]={account("10001","1111",5000.0f),account("10002","2222",10000.0f),account("10003","3333",15000.0f),
account("10004","4444",20000.0f),account("10005","5555",25000.0f)}
account temp( "10001", "1111", 5000.0f )
ATM atm
atm.load( &temp )
atm.welcome()
return 0
}
苹果手机银行模拟器下载过程。晌芦1、在苹果手机上打开AppStore应用程序。
2、在搜索框中输入银行迟兆模拟器,点击获取,安装按钮。
3、输入您的AppleID密码就完成了。码谨租
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)