c++多重继承相关

学院的c++第十三次作业

写的倒是很乱,有一些由于懒得写get直接把对象放到public去了,_bill这个对象在order之中有一些歧义,在某些操作中是不能把他视为“bill”去理解的,然而通过OJ就行了。

#include <iostream>
#include<string>
#include<string.h>
using namespace::std;
class TravelCard
{
private:
	int Cardnum;
	
public:
	int TravelPoint;
	TravelCard() { TravelPoint = 0; }
	int get_Cardnum();
	void set_Cardnum(int);
	void changeTravelPoint(float);
};
class CreditCard
{
private:
	int Cardnum1;
	string name;
	int _quota;
	float _bill;
	
public:
	int CreditPoint;
	CreditCard() { CreditPoint = 0; _bill = 0; }
	int get_CreditPoint();
	void set_name(string);
	string get_name();
	void set_bill(float);
	float get_bill();
	void set_Cardnum1(int);                  //获取信用卡号
	int get_Cardnum1();
	void set_quota(int);             //获取额度
	int get_quota();
	bool overquota(int);        //判断账单金额是否超过额度,若超过则不操作
	void changequota(int);      //改变剩余的额度
	void changeCreditPoint(float);


};
void CreditCard::changequota(int bill)
{
	this->_quota = _quota - bill;
}
void CreditCard::changeCreditPoint(float bill)
{
	CreditPoint =get_bill() - int(bill);
}
class TravelCreditCard :public TravelCard, public CreditCard
{
private:
	int test;
public:
	int set_testnum(int);
	void Order(char, float);           //操作函数
	void printall();
	void transformPoint(int);  //转换旅程积分和信用卡积分
};
void TravelCreditCard::transformPoint(int Point)
{
	if(CreditPoint-Point>0){this->CreditPoint= this->CreditPoint - Point;
	this->TravelPoint = this->TravelPoint +  Point/2;}
	
}
int TravelCreditCard::set_testnum(int)
{
	return 0;
}
void TravelCreditCard::Order(char order, float bill)
{
	if (order == 'o')
	{
		if(overquota(bill)){
			this->set_bill(bill);
			this->changequota(bill);
			changeCreditPoint(0);
			changeTravelPoint(bill);
		}
		
	}
	else if (order == 'c')
	{
		if(overquota(bill)){
			this->set_bill(bill);
			this->changequota(bill);
			changeCreditPoint(0);
		}
		
	}
	else if (order == 'q')
	{
		this->set_bill(0-(bill));
		this->changequota(0 - (bill));
		
	}
	else if (order == 't')
	{
		this->transformPoint(bill);
		changeCreditPoint(bill);
	}
	
}
void TravelCreditCard::printall()
{
	cout << get_Cardnum() <<" "<< TravelPoint << endl;
	cout << get_Cardnum1() << " " << get_name() << " " << get_bill() << " " << CreditPoint;
}
int main()
{
	TravelCreditCard c;
	int travelcardnum;
	int creditcardnum;
	string name1;
	int quota;
	int testnum;
	char order;
	float bill;
	cin >> travelcardnum >> creditcardnum >> name1 >> quota;
	cin >> testnum;
	c.set_Cardnum(travelcardnum);
	c.set_Cardnum1(creditcardnum);
	c.set_name(name1);
	c.set_quota(quota);
	c.set_testnum(testnum);
	for (int i = 0; i < testnum; i++)
	{
		cin >> order >> bill;
		c.Order(order, bill);
	}
	c.printall();
	
}
int CreditCard::get_CreditPoint()
{
	return 0;
}

void CreditCard::set_name(string name1)
{
	name = name1;
}

string CreditCard::get_name()
{
	return name;
}

void CreditCard::set_bill(float bill)
{
	_bill = _bill+bill;
}

float CreditCard::get_bill()
{
	return _bill;
}

void CreditCard::set_Cardnum1(int cardnum1)
{
	Cardnum1 = cardnum1;
}

int CreditCard::get_Cardnum1()
{
	return Cardnum1;
}

void CreditCard::set_quota(int quota)
{
	_quota = quota;
}

int CreditCard::get_quota()
{
	return _quota;
}

bool CreditCard::overquota(int bill)
{
	if (bill > get_quota())
		return false;
	else
		return true;
}

int TravelCard::get_Cardnum()
{
	return Cardnum;
}

void TravelCard::set_Cardnum(int cardnum)
{
	Cardnum = cardnum;
}

void TravelCard::changeTravelPoint(float bill)
{
	TravelPoint = TravelPoint + int(bill);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值