C++编写一个程序,实现公交车卡类售票管理。当输入为“老年卡、“学生卡”和“普通卡”时显示不 同的卡类及购票金额(“老年卡”购票金额=原价50%、学生卡购票金额=原价"60%、“普通卡” 购票金额=原价“95%)。 提示: 第1步:建立公交卡类(boardingCard)的结构。。 第2步:创建并实现公交卡类构造面数、公交卡充值数、公交卡余额查询面数、公交卡 刷卡消费函数、创建纯虚函数用于完成刷卡种类显示和设置折扣率的操作。 第3步:由公交卡类派生普通卡类、学生卡类、老年卡类,并对虚函数进行重新定义。。 第4步定义主函数进行测试。
时间: 2023-12-31 15:24:33 浏览: 16
利用抽象类编写实现公交卡类售票管理程序。当输入为“老年卡”,“学生卡”,“普通卡”时,显示不同的卡类以及购票金额
以下是C++代码实现:
```
#include <iostream>
using namespace std;
//公交卡类
class boardingCard{
protected:
double balance; //余额
public:
boardingCard(double b = 0){balance = b;}
virtual void display() = 0; //刷卡种类显示
virtual double discount() = 0; //设置折扣率
virtual void recharge(double money) {balance += money;} //公交卡充值
virtual double getBalance() {return balance;} //公交卡余额查询
virtual void consume(double money) {balance -= money * discount();} //公交卡刷卡消费
};
//普通卡类
class normalCard : public boardingCard{
public:
normalCard(double b = 0) : boardingCard(b){}
void display() {cout << "普通卡" << endl;}
double discount() {return 0.95;} //折扣率为95%
};
//学生卡类
class studentCard : public boardingCard{
public:
studentCard(double b = 0) : boardingCard(b){}
void display() {cout << "学生卡" << endl;}
double discount() {return 0.6;} //折扣率为60%
};
//老年卡类
class seniorCard : public boardingCard{
public:
seniorCard(double b = 0) : boardingCard(b){}
void display() {cout << "老年卡" << endl;}
double discount() {return 0.5;} //折扣率为50%
};
int main(){
boardingCard *p;
double price = 10; //票价
char type;
cout << "请输入卡类(普通卡:N,学生卡:S,老年卡:E):" << endl;
cin >> type;
switch(type){
case 'N':
p = new normalCard();
break;
case 'S':
p = new studentCard();
break;
case 'E':
p = new seniorCard();
break;
default:
cout << "输入有误!" << endl;
return 0;
}
p->display(); //刷卡种类显示
cout << "购票金额为:" << p->discount() * price << endl; //购票金额
cout << "请输入充值金额:" << endl;
double money;
cin >> money;
p->recharge(money); //公交卡充值
cout << "当前余额为:" << p->getBalance() << endl; //公交卡余额查询
cout << "请输入消费金额:" << endl;
cin >> money;
p->consume(money); //公交卡刷卡消费
cout << "当前余额为:" << p->getBalance() << endl; //公交卡余额查询
delete p;
return 0;
}
```
运行结果:
```
请输入卡类(普通卡:N,学生卡:S,老年卡:E):
S
学生卡
购票金额为:6
请输入充值金额:
100
当前余额为:100
请输入消费金额:
20
当前余额为:88
```
阅读全文