手机取款(类与对象数组)
题目描述
采用面向对象思想实现手机取款的过程
假设银行账户有卡号、绑定手机号、动态密码、余额等属性,包含获取各种属性、校验动态密码、取款操作。属性全是整数数据。
使用对象数组来保存n个银行账户。
用户通过手机取款的步骤如下:(一般在主函数实现)
1、用户输入手机号,在n个银行账户中找到相应的银行账户。
如果查找成功则往下执行,否则输出信息“手机号不存在”,不再往下执行;
2、用户输入动态密码,然后校验动态密码的是否正确
如果密码正确则往下执行,否则输出信息“密码错误”,不再往下执行;
3、用户输入取款金额,然后执行取款操作
如果余额不足就拒绝取款并给出信息“卡号XXX–余额不足”;如果取款成功给出信息“卡号XXX–余额YYY”,其中XXX表示卡号,YYY表示余额
上述描述只是方便说明,可以一次输入所有数据再执行各个操作。
输入
第一行输入n,表示有n个账户
下一行输入第一个账户的信息:卡号、绑定手机号、动态密码、余额
连续输入n行
接着输入k,表示要执行k次取款操作
下一行输入手机号、动态密码、取款金额
连续输入k行
输出
输出k行,每行输出操作结果
示例输入
5
1001 138111 111 1000
1002 135222 222 200
1003 136333 333 300
1004 133444 444 400
1005 132555 555 500
4
136333 333 600
133444 444 300
133555 555 200
138111 222 900
示例输出
卡号1003–余额不足
卡号1004–余额100
手机号不存在
密码错误
#include<iostream>
using namespace std;
class Withdraw
{
public:
Withdraw()
{
phone=0;
password=0;
money=0;
card=0;
}
Withdraw(int card1,int phone1,int password1,int money1)
{
card1=card;
phone=phone1;
password=password1;
money=money1;
}
void set(int card1,int phone1,int password1,int money1);
int showcard();
int showphone();
int showpassword();
int showmoney();
int setmoney(int money2);
private:
int card;
int phone;
int password;
int money;
};
void Withdraw::set(int card1,int phone1,int password1,int money1)
{
card=card1;
phone=phone1;
password=password1;
money=money1;
}
int Withdraw::setmoney(int money2)
{
money=money-money2;
return money;
}
int Withdraw::showcard()
{
return card;
}
int Withdraw::showphone()
{
return phone;
}
int Withdraw::showpassword()
{
return password;
}
int Withdraw::showmoney()
{
return money;
}
class ArrayofWithdraw
{
public:
ArrayofWithdraw(int n)
{
num=n;
Withdraws=new Withdraw[n];
}
~ArrayofWithdraw()
{
num=0;
delete []Withdraws;
}
Withdraw &Element(int n)
{
return Withdraws[n];
}
private:
int num;
Withdraw *Withdraws;
};
int main()
{
int i,t,j,k,card1,phone1,password1,money1,phone2,password2,money2,flag1,flag2,flag3,sum;
cin>>t;
ArrayofWithdraw Withdraws(t);
for(i=0;i<t;i++)
{
cin>>card1>>phone1>>password1>>money1;
Withdraws.Element(i).set(card1,phone1,password1,money1);
}
cin>>k;
for(j=0;j<k;j++)
{
cin>>phone2>>password2>>money2;
flag1=0;
flag2=0;
flag3=0;
for(i=0;i<t;i++)
{
if(Withdraws.Element(i).showphone()==phone2)
{
flag1=1;
if(Withdraws.Element(i).showpassword()==password2)
{
flag2=1;
if(Withdraws.Element(i).showmoney()>=money2)
{
flag3=1;
sum=Withdraws.Element(i).setmoney(money2);
cout<<"卡号"<<Withdraws.Element(i).showcard()<<"--"<<"余额"<<sum<<endl;
}
else
{
flag3=0;
cout<<"卡号"<<Withdraws.Element(i).showcard()<<"--"<<"余额不足"<<endl;
break;
}
}
else
{
flag2=0;
break;
}
}
}
if(flag1==0)
cout<<"手机号不存在"<<endl;
if(flag1==1&&flag2==0)
cout<<"密码错误"<<endl;
}
return 0;
}