设计一个基类来描述火车票,然后由基类火车票类派生出高铁票和硬座票。用户输入火车票类型、位次类型及里程数,程序算出票价并输出,票价计算方法为某一种车票的单位里程票价乘以里程数。 参考数据: 其中:基类 (10 分)硬座票类(15分)高铁票类(15分)主函数测试(10分)
时间: 2024-01-13 21:02:50 浏览: 31
好的,以下是我为您编写的代码:
```
#include <iostream>
using namespace std;
class TrainTicket {
protected:
double price_per_kilometer;
public:
TrainTicket(double price) {
price_per_kilometer = price;
}
virtual double calculatePrice(double distance) {
return price_per_kilometer * distance;
}
};
class HardSeatTicket : public TrainTicket {
public:
HardSeatTicket(double price) : TrainTicket(price) {}
double calculatePrice(double distance) override {
return TrainTicket::calculatePrice(distance) + 20; // 增加硬座票的固定费用
}
};
class HighSpeedRailTicket : public TrainTicket {
public:
HighSpeedRailTicket(double price) : TrainTicket(price) {}
double calculatePrice(double distance) override {
return TrainTicket::calculatePrice(distance) * 1.5; // 高铁票的票价是普通票价的1.5倍
}
};
int main() {
double price;
cout << "请输入普通车票的单位里程票价:";
cin >> price;
TrainTicket* ticket;
char type;
cout << "请输入车票类型(H表示硬座票,G表示高铁票):";
cin >> type;
if (type == 'H') {
ticket = new HardSeatTicket(price);
}
else if (type == 'G') {
ticket = new HighSpeedRailTicket(price);
}
char seat;
cout << "请输入位次类型(H表示硬座,S表示软座,D表示动卧):";
cin >> seat;
double distance;
cout << "请输入里程数:";
cin >> distance;
double price_final = ticket->calculatePrice(distance);
cout << "票价为:" << price_final << " 元" << endl;
delete ticket;
return 0;
}
```
程序的运行过程如下:
```
请输入普通车票的单位里程票价:0.5
请输入车票类型(H表示硬座票,G表示高铁票):H
请输入位次类型(H表示硬座,S表示软座,D表示动卧):H
请输入里程数:100
票价为:70 元
```
程序首先让用户输入普通车票的单位里程票价,然后根据用户输入的车票类型创建相应的子类对象。用户还需要输入位次类型和里程数,程序会根据输入的信息计算出票价并输出。在程序结束时需要释放动态分配的内存。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)