1银行账户程序设计c语言,C语言设计银行账户模拟程序

匿名用户

1级

2012-03-13 回答

能传附件吗?不知道怎么传。我就贴给你吧。

#include

#include

#include

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(){}//

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);//

outfile.write((char *)(this),sizeof(account));//

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;

}

}

//}//

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: " <

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<

cin>>cn;

ifstream infile("atm.txt",ios::binary);

infile.seekg(0,ios::beg);

for(int i=0;i<5;i++)

{

infile.read((char *)(&a[i]),sizeof(a[i]));

}

for(int j=0;j<5;j++)

{

if(cn==a[i].CardNum)

{

cout<

cin>>m;

while(m>ac->Balance)

{

cout<

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<

}

}

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;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值