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

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

题目描述

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

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

使用对象数组来保存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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值