3.利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购票金额=原价*95%)。 具体实现步骤: 建立普通卡类(Acard)、学生卡类(Bcard)、老年卡类(Ccard)的结构,他们的基类均为boardingcard,分别在这三个派生类中实现基类中定义的两个虚函数。
时间: 2023-02-16 07:08:24 浏览: 101
你可以这样实现这个程序:
1. 创建一个抽象类 `boardingcard`,它包含两个虚函数:`display_card_type()` 和 `calculate_price()`。
2. 创建三个类 `Acard`、`Bcard` 和 `Ccard`,它们继承自 `boardingcard`。在这三个类中分别实现基类中的两个虚函数。
3. 在主函数中,创建一个指向 `boardingcard` 类的指针,并根据用户输入的卡类型动态创建对应的卡类对象。然后调用两个虚函数显示卡类和计算价格。
例如:
```cpp
#include <iostream>
class boardingcard
{
public:
virtual void display_card_type() = 0;
virtual float calculate_price(float original_price) = 0;
};
class Acard : public boardingcard
{
public:
void display_card_type()
{
std::cout << "普通卡" << std::endl;
}
float calculate_price(float original_price)
{
return original_price * 0.95;
}
};
class Bcard : public boardingcard
{
public:
void display_card_type()
{
std::cout << "学生卡" << std::endl;
}
float calculate_price(float original_price)
{
return original_price * 0.6;
}
};
class Ccard : public boardingcard
{
public:
void display_card_type()
{
std::cout << "老年卡" << std::endl;
}
float calculate_price(float original_price)
{
return original_price * 0.5;
}
};
int main()
{
boardingcard *card = nullptr;
std::string card_type;
float original_price;
std::cout << "请输入卡类型(老年卡、学生卡、普通卡):";
std::cin >> card_type;
std::cout << "请输入原价:";
std::cin >> original_price;