C++手机取款(类与对象数组)

题目描述

采用面向对象思想实现手机取款的过程

假设银行账户有卡号、绑定手机号、动态密码、余额等属性,包含获取各种属性、校验动态密码、取款操作。属性全是整数数据。

使用对象数组来保存n个银行账户。

用户通过手机取款的步骤如下:(一般在主函数实现)

1、用户输入手机号,在n个银行账户中找到相应的银行账户。

如果查找成功则往下执行,否则输出信息“手机号不存在”,不再往下执行;

2、用户输入动态密码,然后校验动态密码的是否正确

如果密码正确则往下执行,否则输出信息“密码错误”,不再往下执行;

3、用户输入取款金额,然后执行取款操作

如果余额不足就拒绝取款并给出信息“卡号XXX--余额不足”;如果取款成功给出信息“卡号XXX--余额YYY”,其中XXX表示卡号,YYY表示余额

上述描述只是方便说明,可以一次输入所有数据再执行各个操作。

输入

第一行输入n,表示有n个账户

下一行输入第一个账户的信息:卡号、绑定手机号、动态密码、余额

连续输入n行

接着输入k,表示要执行k次取款操作

下一行输入手机号、动态密码、取款金额

连续输入k行

输出

输出k行,每行输出操作结果

输入样例1 

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
 

输出样例1 

卡号1003--余额不足
卡号1004--余额100
手机号不存在
密码错误

AC代码如下 

#include<iostream>
using namespace std;

class CAccount
{
	int CardNo;
	int MobileNo;
	int PassCode;
	int balance;
public:
	CAccount(){}
	void setData(int c,int m,int p,int a){
	      CardNo=c;
	      MobileNo=m;
	      PassCode=p;
	      balance=a;
	}
	int getCardNo(){return CardNo;}
	int getMobileNo(){return MobileNo;}
	int getPassCode(){return PassCode;}
	void redraw(int amount){
	      if(amount>balance)
                             cout<<"卡号"<<CardNo<<"--"<<"余额不足"<<endl;
	     else{
	             balance-=amount;
                             cout<<"卡号"<<CardNo<<"--"<<"余额"<<balance<<endl;
                      }
               }
};

int main()
{
	int CardNo,MobileNo,PassCode;
	int balance,amount;
	int t,i,n,k;

	cin>>t;
	CAccount *account=new CAccount[t];

	for(i=0;i<t;i++)
	{
	        cin>>CardNo>>MobileNo>>PassCode>>balance;
	        account[i].setData(CardNo,MobileNo,PassCode,balance);
	}

	cin>>n;
	while(n--)
	{
		k=-1;  //标识未找到的那种情况
		cin>>MobileNo>>PassCode>>amount;
		for(i=0;i<t;i++){
		     if(account[i].getMobileNo()==MobileNo){	//判断号码是否存在
                                               k=i;
                                               break;
                                    }
                                 }
	                if(k!=-1){   //若号码存在,继续判断密码是否正确
		             if(account[k].getPassCode()==PassCode)
			     account[k].redraw(amount);
		             else
			    cout<<"密码错误"<<endl;
		}
		else
		             cout<<"手机号不存在"<<endl;
	}

	delete[] account;
	return 0;
}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝啵啵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值