现在要开发一个系统,管理对多种汽车的收费工作。 给出下面的一个基类框架 class Vehicle { protected: string NO;//编号 public: virtual void display()=0;//输出应收费用 } 以Vehicle为基类,构建出Car、Truck和Bus三个派生类。 Car的收费公式为: 载客数*8+重量*2; Truck的收费公式为:重量*5; Bus的收费公式为: 载客数*3; 生成上述类并编写主函数,要求主函数中有一个基类Vehicle指针数组,数组元素不超过10个。 Vehicle *pv[10]; 主函数根据输入的信息,相应建立Car、Truck和Bus类对象,对于Car给出载客数和重量,Truck给出重量,Bus给出载客数。假设载客数和重量均为整数。提示:应用虚函数实现多态。
时间: 2024-01-22 20:20:44 浏览: 142
公路收费系统(c++)
5星 · 资源好评率100%
下面是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
// 车辆基类
class Vehicle {
protected:
string NO; // 编号
public:
virtual void display() = 0; // 输出应收费用
};
// 小汽车类
class Car : public Vehicle {
private:
int passengerNum; // 载客数
int weight; // 重量
public:
Car(string no, int pn, int w) : passengerNum(pn), weight(w) {
NO = no;
}
void display() {
cout << "车牌号:" << NO << ",收费:" << passengerNum * 8 + weight * 2 << "元" << endl;
}
};
// 卡车类
class Truck : public Vehicle {
private:
int weight; // 重量
public:
Truck(string no, int w) : weight(w) {
NO = no;
}
void display() {
cout << "车牌号:" << NO << ",收费:" << weight * 5 << "元" << endl;
}
};
// 巴士类
class Bus : public Vehicle {
private:
int passengerNum; // 载客数
public:
Bus(string no, int pn) : passengerNum(pn) {
NO = no;
}
void display() {
cout << "车牌号:" << NO << ",收费:" << passengerNum * 3 << "元" << endl;
}
};
int main() {
int n = 0; // 车辆数量
Vehicle* pv[10]; // 指向Vehicle对象的指针数组,最多10个元素
char type; // 车辆类型
string no; // 车牌号
int pn, w; // 载客数和重量
while (true) {
cout << "请输入车辆类型(C表示小汽车,T表示卡车,B表示巴士),按0结束:" << endl;
cin >> type;
if (type == '0') break;
cout << "请输入车牌号:" << endl;
cin >> no;
switch (type) {
case 'C':
cout << "请输入载客数和重量:" << endl;
cin >> pn >> w;
pv[n++] = new Car(no, pn, w);
break;
case 'T':
cout << "请输入重量:" << endl;
cin >> w;
pv[n++] = new Truck(no, w);
break;
case 'B':
cout << "请输入载客数:" << endl;
cin >> pn;
pv[n++] = new Bus(no, pn);
break;
default:
cout << "输入错误,请重新输入!" << endl;
break;
}
if (n == 10) break; // 最多只能输入10辆车
}
cout << "收费情况如下:" << endl;
for (int i = 0; i < n; i++) {
pv[i]->display();
}
for (int i = 0; i < n; i++) {
delete pv[i]; // 释放动态分配的内存
}
return 0;
}
```
运行程序,输入车辆信息后,将输出每辆车的收费情况。注意,如果输入的车辆数量超过10辆,则只会处理前10辆车。
阅读全文