写一个C++代码 具体实现步骤: 第一步:建立公交卡(boardingcard)的结构 第二步:创建并实现公交卡类构造函数、公交卡充值函数、公交卡余额查询函数、公交卡刷卡消费函数,创建纯虚函数用于完成...
时间: 2024-02-18 07:05:58 浏览: 48
好的,以下是代码实现:
```c++
#include <iostream>
using namespace std;
// 建立公交卡(boardingcard)的结构
struct BoardingCard {
string cardNumber; // 卡号
double balance; // 余额
};
// 创建并实现公交卡类
class BusCard {
public:
// 构造函数,初始化卡号和余额
BusCard(string number, double balance) {
boardingCard.cardNumber = number;
boardingCard.balance = balance;
}
// 公交卡充值函数
void recharge(double amount) {
boardingCard.balance += amount;
cout << "充值成功,当前余额为:" << boardingCard.balance << endl;
}
// 公交卡余额查询函数
void checkBalance() {
cout << "当前余额为:" << boardingCard.balance << endl;
}
// 公交卡刷卡消费函数,纯虚函数
virtual void pay(double amount) = 0;
protected:
BoardingCard boardingCard;
};
// 创建学生公交卡类,继承自公交卡类
class StudentBusCard : public BusCard {
public:
// 构造函数,初始化卡号和余额
StudentBusCard(string number, double balance) : BusCard(number, balance) {}
// 学生公交卡刷卡消费函数
void pay(double amount) override {
if (boardingCard.balance >= amount * 0.5) {
boardingCard.balance -= amount * 0.5;
cout << "刷卡成功,当前余额为:" << boardingCard.balance << endl;
} else {
cout << "余额不足,请充值!" << endl;
}
}
};
// 创建普通公交卡类,继承自公交卡类
class NormalBusCard : public BusCard {
public:
// 构造函数,初始化卡号和余额
NormalBusCard(string number, double balance) : BusCard(number, balance) {}
// 普通公交卡刷卡消费函数
void pay(double amount) override {
if (boardingCard.balance >= amount) {
boardingCard.balance -= amount;
cout << "刷卡成功,当前余额为:" << boardingCard.balance << endl;
} else {
cout << "余额不足,请充值!" << endl;
}
}
};
int main() {
// 创建学生公交卡对象,卡号为001,余额为50元
StudentBusCard studentCard("001", 50.0);
// 充值20元
studentCard.recharge(20.0);
// 查询余额
studentCard.checkBalance();
// 刷卡消费10元
studentCard.pay(10.0);
// 创建普通公交卡对象,卡号为002,余额为30元
NormalBusCard normalCard("002", 30.0);
// 充值15元
normalCard.recharge(15.0);
// 查询余额
normalCard.checkBalance();
// 刷卡消费8元
normalCard.pay(8.0);
return 0;
}
```
这个程序实现了公交卡的基本功能,包括创建公交卡类和两个子类,实现了公交卡的充值、余额查询和消费功能。其中,学生公交卡的消费折扣为5折,普通公交卡的消费没有折扣。
阅读全文