汽车收费

现在要开发一个系统,管理对多种汽车的收费工作。 给出下面的一个基类框架

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给出载客数。假设载客数和重量均为整数

输入格式:每个测试用例占一行,每行给出汽车的基本信息,每一个为当前汽车的类型1为car,2为Truck,3为Bus。接下来为它的编号,接下来Car是载客数和重量,Truck给出重量,Bus给出载客数。最后一行为0,表示输入的结束。 要求输出各车的编号和收费。

(PS:未使用 Vehicle *pv[10]; )

  1 #include<iostream>
  2 #include<string>
  3 using namespace std;
  4 
  5 class Vehicle
  6 { 
  7 protected:
  8     string NO;//编号
  9 public:
 10     virtual void display()=0;//输出应收费用
 11     virtual ~Vehicle(){};
 12 };
 13 
 14 class Car:public Vehicle
 15 {
 16     int number,weight;
 17 public:
 18     Car(){};
 19     friend istream& operator >> (istream &input,Car &C); //重载输入流
 20     void display();
 21 };
 22 
 23 istream& operator >> (istream &input,Car &C)
 24 {
 25     input>>C.NO>>C.number>>C.weight;
 26     return input;
 27 }
 28 
 29 void Car::display()
 30 {
 31     cout<<NO<<" "<<number*8+weight*2<<endl;
 32 }
 33 
 34 class Truck:public Vehicle
 35 {
 36     int weight;
 37 public:
 38     Truck(){};
 39     friend istream& operator >> (istream &input,Truck &T);
 40     void display();
 41 };
 42 
 43 istream& operator >> (istream &input,Truck &T)
 44 {
 45     input>>T.NO>>T.weight;
 46     return input;
 47 }
 48 
 49 void Truck::display()
 50 {
 51     cout<<NO<<" "<<weight*5<<endl;
 52 }
 53 
 54 class Bus:public Vehicle
 55 {    
 56     int number;
 57 public:
 58     Bus(){};
 59     friend istream& operator >> (istream &input,Bus &B);
 60     void display();
 61 };
 62 
 63 istream& operator >> (istream &input,Bus &B)
 64 {
 65     input>>B.NO>>B.number;
 66     return input;
 67 }
 68 
 69 void Bus::display()
 70 {
 71     cout<<NO<<" "<<number*3<<endl;
 72 }
 73 
 74 int main()
 75 {
 76     int flag;
 77     while(cin>>flag,flag)
 78     {
 79         switch(flag)
 80         {
 81         case 1:
 82             {
 83                 Car *p=new Car;
 84                 cin>>*p;
 85                 p->display();
 86                 delete p;
 87                 break;
 88             }
 89         case 2:
 90             {
 91                 Truck *p=new Truck;
 92                 cin>>*p;
 93                 p->display();
 94                 delete p;
 95                 break;
 96             }
 97         case 3:
 98             {
 99                 Bus *p=new Bus;
100                 cin>>*p;
101                 p->display();
102                 delete p;
103                 break;
104             }
105         }
106     }
107     return 0;
108 }

猜你喜欢

转载自www.cnblogs.com/wzzdeblog/p/10753493.html
今日推荐