zoukankan      html  css  js  c++  java
  • 汽车收费

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

    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 }

     (使用 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     Vehicle() {};
     11     Vehicle(string N): NO(N) {};
     12     virtual void display() = 0; //输出应收费用
     13     virtual ~Vehicle() {};
     14 };
     15 
     16 class Car: public Vehicle
     17 {
     18     int number, weight;
     19 public:
     20     Car() {};
     21     Car(string N, int Num, int Wei): Vehicle(N), number(Num), weight(Wei) {};
     22     //friend istream& operator >> (istream &input,Car &C);
     23     void display();
     24 };
     25 /*
     26 istream& operator >> (istream &input,Car &C)
     27 {
     28     input>>C.NO>>C.number>>C.weight;
     29     return input;
     30 }
     31 */
     32 void Car::display()
     33 {
     34     cout << NO << " " << number * 8 + weight * 2 << endl;
     35 }
     36 
     37 class Truck: public Vehicle
     38 {
     39     int weight;
     40 public:
     41     Truck() {};
     42     Truck(string N, int W): Vehicle(N), weight(W) {};
     43     //friend istream& operator >> (istream &input,Truck &T);
     44     void display();
     45 };
     46 /*
     47 istream& operator >> (istream &input,Truck &T)
     48 {
     49     input>>T.NO>>T.weight;
     50     return input;
     51 }
     52 */
     53 void Truck::display()
     54 {
     55     cout << NO << " " << weight * 5 << endl;
     56 }
     57 
     58 class Bus: public Vehicle
     59 {
     60     int number;
     61 public:
     62     Bus() {};
     63     Bus(string N, int Num): Vehicle(N), number(Num) {};
     64     //friend istream& operator >> (istream &input,Bus &B);
     65     void display();
     66 };
     67 /*
     68 istream& operator >> (istream &input,Bus &B)
     69 {
     70     input>>B.NO>>B.number;
     71     return input;
     72 }
     73 */
     74 void Bus::display()
     75 {
     76     cout << NO << " " << number * 3 << endl;
     77 }
     78 
     79 int main()
     80 {
     81     int flag, count(0);
     82     Vehicle *pv[10];
     83 
     84     while(cin >> flag, flag)
     85     {
     86         switch(flag)
     87         {
     88             case 1:
     89                 {
     90                     string No;
     91                     int number, weight;
     92                     cin >> No >> number >> weight;
     93                     pv[count++] = new Car(No, number, weight);
     94                     pv[count - 1]->display();
     95                     break;
     96                 }
     97 
     98             case 2:
     99                 {
    100                     string No;
    101                     int weight;
    102                     cin >> No >> weight;
    103                     pv[count++] = new Truck(No, weight);
    104                     pv[count - 1]->display();
    105                     break;
    106                 }
    107 
    108             case 3:
    109                 {
    110                     string No;
    111                     int number;
    112                     cin >> No >> number;
    113                     pv[count++] = new Bus(No, number);
    114                     pv[count - 1]->display();
    115                     break;
    116                 }
    117         }
    118     }
    119 
    120     return 0;
    121 }
  • 相关阅读:
    Scribes:简单而智能的文本编辑器
    [Java 12 IO] IO 总结
    [Java 12 IO] Serializable 初步 ObjectOutputStream ObjectInputStream 将序列化的对象打出来
    IOS数据解析之XML
    IOS数据解析之JSON
    IOS网络请求类(NSURLCollection)
    IOS之多线程
    IOS开发常见注意点
    IOS常用封装总结
    UIScrollView 的常用属性和方法
  • 原文地址:https://www.cnblogs.com/wzzdeblog/p/10753493.html
Copyright © 2011-2022 走看看