写一个C++代码首先,你可以定义一个公交卡(boardingcard)的结构体,当输入为“老年卡”,“学生卡“,”普通卡”“”时显示不同的卡类,及购票金额·(老年卡购票金额=原价50%,学生卡购票金额=原价60%,普通卡购票金额=原价95%);具体实现步骤::创建并实现公交卡类构造函数,公交卡充值函数,公交卡余额查询函数,公交卡刷卡消费函数,创建纯虚函数用于完成刷卡种类显示和设置折扣率的操作)
时间: 2024-03-15 19:44:28 浏览: 59
利用抽象类编写实现公交卡类售票管理程序。当输入为“老年卡”,“学生卡”,“普通卡”时,显示不同的卡类以及购票金额
好的,以下是C++代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 公交卡类
class BoardingCard {
protected:
string type; // 卡类型
double balance; // 余额
double discount; // 折扣率
public:
BoardingCard(string t) { // 构造函数
type = t;
if (type == "老年卡") discount = 0.5;
else if (type == "学生卡") discount = 0.6;
else if (type == "普通卡") discount = 0.95;
else discount = 1;
balance = 0;
}
virtual void showType() = 0; // 显示卡类型的纯虚函数
virtual void setDiscount(double d) = 0; // 设置折扣率的纯虚函数
void recharge(double amount) { // 充值函数
balance += amount;
cout << "成功充值" << amount << "元,当前余额为" << balance << "元" << endl;
}
void queryBalance() { // 余额查询函数
cout << "当前余额为" << balance << "元" << endl;
}
void consume(double amount) { // 刷卡消费函数
if (amount * discount <= balance) { // 判断余额是否充足
balance -= amount * discount;
cout << "成功消费" << amount << "元,当前余额为" << balance << "元" << endl;
}
else {
cout << "余额不足,无法消费" << endl;
}
}
};
// 老年卡类
class ElderlyCard : public BoardingCard {
public:
ElderlyCard() : BoardingCard("老年卡") {} // 构造函数
void showType() { // 显示卡类型
cout << "卡类型:老年卡,购票金额为原价的50%" << endl;
}
void setDiscount(double d) {} // 设置折扣率(空函数)
};
// 学生卡类
class StudentCard : public BoardingCard {
public:
StudentCard() : BoardingCard("学生卡") {} // 构造函数
void showType() { // 显示卡类型
cout << "卡类型:学生卡,购票金额为原价的60%" << endl;
}
void setDiscount(double d) {} // 设置折扣率(空函数)
};
// 普通卡类
class NormalCard : public BoardingCard {
public:
NormalCard() : BoardingCard("普通卡") {} // 构造函数
void showType() { // 显示卡类型
cout << "卡类型:普通卡,购票金额为原价的95%" << endl;
}
void setDiscount(double d) {} // 设置折扣率(空函数)
};
int main() {
BoardingCard* card; // 定义公交卡指针
string type;
double amount;
// 根据输入的卡类型创建不同类型的公交卡对象
cout << "请输入卡类型(老年卡、学生卡、普通卡):" << endl;
cin >> type;
if (type == "老年卡") card = new ElderlyCard();
else if (type == "学生卡") card = new StudentCard();
else if (type == "普通卡") card = new NormalCard();
card->showType(); // 显示卡类型
// 充值
cout << "请输入充值金额:" << endl;
cin >> amount;
card->recharge(amount);
// 查询余额
card->queryBalance();
// 消费
cout << "请输入消费金额:" << endl;
cin >> amount;
card->consume(amount);
delete card; // 释放内存
return 0;
}
```
运行结果:
```
请输入卡类型(老年卡、学生卡、普通卡):
老年卡
卡类型:老年卡,购票金额为原价的50%
请输入充值金额:
100
成功充值100元,当前余额为100元
当前余额为100元
请输入消费金额:
60
成功消费60元,当前余额为70元
```
阅读全文