写一个C++代码 具体实现步骤: 第一步:建立公交卡(boardingcard)的结构 第二步:创建并实现公交卡类构造函数、公交卡充值函数、公交卡余额查询函数、公交卡刷卡消费函数,创建纯虚函数用于完成...
时间: 2024-03-26 19:39:14 浏览: 12
好的,以下是符合您要求的 C++ 代码:
```cpp
#include <iostream>
using namespace std;
// 公交卡(boardingcard)的结构体
struct BoardingCard {
string owner; //卡主姓名
int balance; //卡余额
int rides; //乘车次数
};
// 公交卡类
class BusCard {
public:
//构造函数
BusCard(string owner, int balance) {
card.owner = owner;
card.balance = balance;
card.rides = 0;
}
//公交卡充值函数
void recharge(int amount) {
card.balance += amount;
cout << "成功充值" << amount << "元,当前余额为" << card.balance << "元" << endl;
}
//公交卡余额查询函数
void queryBalance() {
cout << "当前余额为" << card.balance << "元" << endl;
}
//公交卡刷卡消费函数
virtual void consume() = 0;
//析构函数
virtual ~BusCard() {}
protected:
BoardingCard card; //公交卡信息
};
//普通公交卡类
class OrdinaryCard : public BusCard {
public:
//构造函数
OrdinaryCard(string owner, int balance) : BusCard(owner, balance) {}
//公交卡刷卡消费函数
virtual void consume() {
if (card.balance < 2) {
cout << "余额不足,请先充值" << endl;
return;
}
card.balance -= 2;
card.rides++;
cout << "刷卡成功,扣除2元,当前余额为" << card.balance << "元" << endl;
}
};
//学生公交卡类
class StudentCard : public BusCard {
public:
//构造函数
StudentCard(string owner, int balance) : BusCard(owner, balance) {}
//公交卡刷卡消费函数
virtual void consume() {
if (card.balance < 1) {
cout << "余额不足,请先充值" << endl;
return;
}
card.balance--;
card.rides++;
cout << "刷卡成功,扣除1元,当前余额为" << card.balance << "元" << endl;
}
};
int main() {
//测试
BusCard* card1 = new OrdinaryCard("张三", 10);
BusCard* card2 = new StudentCard("李四", 5);
card1->consume();
card2->consume();
card1->recharge(20);
card2->recharge(10);
card1->queryBalance();
card2->queryBalance();
delete card1;
delete card2;
return 0;
}
```
代码说明:本代码实现了一个公交卡类 BusCard,包括构造函数、公交卡充值函数 recharge、公交卡余额查询函数 queryBalance、公交卡刷卡消费函数 consume。其中刷卡消费函数是纯虚函数,在子类中实现。本代码还实现了两个子类 OrdinaryCard 和 StudentCard,分别表示普通公交卡和学生公交卡,它们分别重写了消费函数 consume。最后在 main 函数中进行了测试。