编写一个程序,实现公交车卡类售票管理。当输入为“老年卡、 “学生卡”和“普通卡”时显示不 同的卡类及购票金额 (“老年卡”购票金额=原价“50%、“学生卡”购票金额=原价“60%、“普通卡” 购票金额=原价"95%)。 提示 : 第 1 步:建立公交卡类(boardingCard)的结构。 第 2 步:创建并实现公交卡类构造函数、公交卡充值函数、公交卡余额查询函数、公交卡 刷卡消费函数、创建纯虚函数用于完成刷卡种类显示和设置折扣率的操作。. 第 3 步:由公交卡类派生普通卡类、学生卡类、老年卡类,并对虚函数进行重新定义。 第4 步:定义主函数进行测试。 要求:. 创建工程时 , 工程名以自己的学号命名 ,源程序以自己的名字命名 ,提交的时候提交工 程文件夹。各班学委和班长在规定时间内,共同负责收齐后交给老师。。
时间: 2023-12-31 18:24:21 浏览: 100
好的,这是一个公交车卡类售票管理的程序,需要创建一个公交卡类(boardingCard)的结构,实现不同卡类的购票金额,并且需要派生普通卡类、学生卡类、老年卡类,并对虚函数进行重新定义。以下是代码示例:
```cpp
#include <iostream>
using namespace std;
// 公交卡类
class boardingCard {
protected:
double balance; // 余额
double discount; // 折扣率
public:
boardingCard() { balance = 0; discount = 1.0; }
virtual void show() = 0; // 显示刷卡种类和折扣率
virtual void setDiscount(double d) { discount = d; } // 设置折扣率
void recharge(double amount) { balance += amount; } // 充值
void query() { cout << "当前余额为:" << balance << endl; } // 查询余额
bool pay(double amount) { // 支付
if (balance >= amount) {
balance -= amount;
return true;
}
else {
cout << "余额不足!" << endl;
return false;
}
}
};
// 普通卡类
class normalCard : public boardingCard {
public:
void show() { cout << "普通卡,折扣率为95%。" << endl; setDiscount(0.95); }
};
// 学生卡类
class studentCard : public boardingCard {
public:
void show() { cout << "学生卡,折扣率为60%。" << endl; setDiscount(0.6); }
};
// 老年卡类
class seniorCard : public boardingCard {
public:
void show() { cout << "老年卡,折扣率为50%。" << endl; setDiscount(0.5); }
};
int main() {
int type;
double price;
boardingCard* card = nullptr;
while (true) {
cout << "请选择卡类型(1-普通卡,2-学生卡,3-老年卡):" << endl;
cin >> type;
switch (type) {
case 1:
card = new normalCard();
break;
case 2:
card = new studentCard();
break;
case 3:
card = new seniorCard();
break;
default:
cout << "无效的选择!" << endl;
continue;
}
card->show();
cout << "请输入票价:" << endl;
cin >> price;
price *= card->discount;
cout << "实际票价为:" << price << endl;
card->query();
cout << "请输入充值金额:" << endl;
double amount;
cin >> amount;
card->recharge(amount);
card->query();
cout << "请输入消费金额:" << endl;
cin >> amount;
card->pay(amount);
card->query();
delete card;
cout << "是否继续(Y/N):" << endl;
char c;
cin >> c;
if (c == 'N' || c == 'n') {
break;
}
}
return 0;
}
```
在主函数中,首先让用户选择卡类型,并根据选择创建相应的卡对象(普通卡、学生卡或老年卡),然后调用卡对象的 show() 函数显示刷卡种类和折扣率,输入票价并根据折扣率计算实际票价,查询余额并充值、消费等操作。最后根据用户是否继续选择决定退出程序或者继续进行操作。
阅读全文