用c++编写一个程序,实现公交车卡类售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不 同的卡类及购票金额(“老年卡”购票金额=原价*50%、学生卡”购票金额=原价”60%、“普通卡” 购票金额=原价"95%b- 提示:. 第1步:建立公交卡类(boardingCard)的结构。 第2步:创建并实现公交卡类构造画数、公交卡充值面数、公交卡余额查询画数、公交卡 刷卡消费函数、创建纯虚函数用于完成刷卡种类显示和设置折扣率的操作。 第3步:由公交卡类派生普通卡类、学生卡类,老年卡类,并对虚面数进行重新定义。 第4步:定义主函数进行测试
时间: 2023-12-31 13:21:51 浏览: 55
好的,以下是您需要的程序:
```c++
#include <iostream>
#include <string>
using namespace std;
// 公交卡类
class BoardingCard {
protected:
string cardType; // 卡类
double balance; // 余额
public:
BoardingCard(string _cardType, double _balance) {
cardType = _cardType;
balance = _balance;
}
// 充值
void recharge(double amount) {
balance += amount;
cout << "充值成功,当前余额为 " << balance << " 元" << endl;
}
// 余额查询
void checkBalance() {
cout << "当前余额为 " << balance << " 元" << endl;
}
// 刷卡消费
virtual void consume(double amount) = 0;
// 显示卡类和折扣率
virtual void showCardInfo() = 0;
};
// 普通卡类
class NormalCard : public BoardingCard {
public:
NormalCard(double _balance) : BoardingCard("普通卡", _balance) {}
// 刷卡消费
void consume(double amount) {
if (balance < amount) {
cout << "余额不足,请充值" << endl;
return;
}
balance -= amount * 0.95;
cout << "扣款 " << amount * 0.95 << " 元,当前余额为 " << balance << " 元" << endl;
}
// 显示卡类和折扣率
void showCardInfo() {
cout << "卡类:普通卡,折扣率:95%" << endl;
}
};
// 学生卡类
class StudentCard : public BoardingCard {
public:
StudentCard(double _balance) : BoardingCard("学生卡", _balance) {}
// 刷卡消费
void consume(double amount) {
if (balance < amount) {
cout << "余额不足,请充值" << endl;
return;
}
balance -= amount * 0.6;
cout << "扣款 " << amount * 0.6 << " 元,当前余额为 " << balance << " 元" << endl;
}
// 显示卡类和折扣率
void showCardInfo() {
cout << "卡类:学生卡,折扣率:60%" << endl;
}
};
// 老年卡类
class ElderlyCard : public BoardingCard {
public:
ElderlyCard(double _balance) : BoardingCard("老年卡", _balance) {}
// 刷卡消费
void consume(double amount) {
if (balance < amount) {
cout << "余额不足,请充值" << endl;
return;
}
balance -= amount * 0.5;
cout << "扣款 " << amount * 0.5 << " 元,当前余额为 " << balance << " 元" << endl;
}
// 显示卡类和折扣率
void showCardInfo() {
cout << "卡类:老年卡,折扣率:50%" << endl;
}
};
int main() {
// 创建一个普通卡,余额为 50 元
NormalCard normalCard(50);
normalCard.showCardInfo(); // 显示卡类和折扣率
normalCard.consume(10); // 刷卡消费 10 元
normalCard.checkBalance(); // 查询余额
normalCard.recharge(100); // 充值 100 元
normalCard.checkBalance(); // 查询余额
// 创建一个学生卡,余额为 30 元
StudentCard studentCard(30);
studentCard.showCardInfo(); // 显示卡类和折扣率
studentCard.consume(15); // 刷卡消费 15 元
studentCard.checkBalance(); // 查询余额
studentCard.recharge(50); // 充值 50 元
studentCard.checkBalance(); // 查询余额
// 创建一个老年卡,余额为 20 元
ElderlyCard elderlyCard(20);
elderlyCard.showCardInfo(); // 显示卡类和折扣率
elderlyCard.consume(8); // 刷卡消费 8 元
elderlyCard.checkBalance(); // 查询余额
elderlyCard.recharge(30); // 充值 30 元
elderlyCard.checkBalance(); // 查询余额
return 0;
}
```
运行结果:
```
卡类:普通卡,折扣率:95%
扣款 9.5 元,当前余额为 40.5 元
当前余额为 40.5 元
充值成功,当前余额为 140.5 元
当前余额为 140.5 元
卡类:学生卡,折扣率:60%
扣款 9 元,当前余额为 21 元
当前余额为 21 元
充值成功,当前余额为 71 元
当前余额为 71 元
卡类:老年卡,折扣率:50%
扣款 4 元,当前余额为 16 元
当前余额为 16 元
充值成功,当前余额为 46 元
当前余额为 46 元
```
阅读全文