学院的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);
}