第十.十一周项目5摩托车继承自行车和机动车


  1. /* 
  2. *Copyright (c) 2016,烟台大学计算机学院 
  3. *All rights reserved. 
  4. *文件名称 : 
  5. *作    者 : 刘默涵
  6. *完成日期 : 2016年5月25号 
  7. *版 本 号 : v6.0 
  8. * 
  9. *问题描述 : 
  10. *输入描述 :   无 
  11. *程序输出 : 
  12. */  
  13.   
  14. #include <iostream>  
  15. #include<iostream>  
  16. #include<conio.h>  
  17. #include <windows.h>  
  18. using namespace std;  
  19. enum vehicleStaus {rest, running};  //车辆状态:泊车、行进  
  20. class vehicle //车辆类  
  21. {  
  22. protected:  
  23.     int maxSpeed;       //最大车速  
  24.     int currentSpeed;   //当前速度  
  25.     int weight;         //车重  
  26.     vehicleStaus status; //rest-泊车状态;running-行进状态  
  27. public:  
  28.     vehicle(int maxS, int w):maxSpeed(maxS),weight(w){}//构造函数,初始时,当前速度总为0且处在停车状态  
  29.     void start();  //由rest状态到running, 初速为1  
  30.     void stop(); //由running状态到rest, 当前速度小于5时,才允许停车  
  31.     void speed_up();  //加速,调用1次,速度加1  
  32.     void slow_down(); //减速,调用1次,速度减1,速度为0时,停车  
  33. };  
  34. void  vehicle::start()  
  35. {  
  36.     status=running;  
  37.     currentSpeed=1;  
  38. }  
  39. void vehicle::stop()  
  40. {  
  41.     status=rest;  
  42.     if(currentSpeed<5)  
  43.         cout<<"允许停车!!!"<<endl;  
  44. }  
  45. void vehicle::speed_up()  
  46. {  
  47.     currentSpeed+=1;  
  48. }  
  49. void vehicle::slow_down()  
  50. {  
  51.     if(currentSpeed>0)  
  52.      currentSpeed-=1;  
  53.     else  
  54.       cout<<"停车!!!"<<endl;  
  55. }  
  56. class bicycle :virtual public vehicle//(1)自行车类的虚基类为车辆类  
  57. {  
  58. protected:  
  59.     double height; //车高  
  60. public:  
  61.     bicycle(int maxS=10, int w=50, int h=0.7):vehicle(maxS,w),height(h){}  //定义构造函数  
  62. };  
  63. class motorcar :virtual public vehicle //(2)机动车类的虚基类也为车辆类  
  64. {  
  65. protected:  
  66.     int seatNum; //座位数  
  67.     int passengerNum; //乘客人数  
  68. public:  
  69.     motorcar(int maxS=150, int w=1500, int s=5, int p=1):vehicle(maxS,w),seatNum(s),passengerNum(p){}  //定义构造函数  
  70.     void addPassenger(int p=1);   //增加搭载的乘客,超员要拒载,有人下车时,p为负数。当然车上乘客至少有1个(司机)。只有车停稳后才能上下客。  
  71. };  
  72. void motorcar::addPassenger(int p)  
  73. {  
  74.     if(status==rest)  
  75.        {  
  76.            passengerNum+=p;  
  77.        }  
  78.     else  
  79.         cout<<"不能下车!!!"<<endl;  
  80. }  
  81. class motorcycle: public bicycle,public motorcar //(3)摩托车类的基类为自行车类和机动车类  
  82. {  
  83. public:  
  84.     motorcycle(int maxS=90, int w=100, int s=3, int p=1, int h=0.7):vehicle(maxS,w),bicycle(maxS,w,h),motorcar(maxS,w,s,p){}//定义构造函数  
  85.     void show(); //显示摩托车的运行状态  
  86. };  
  87. void motorcycle::show()  
  88. {  
  89.     if(status==running)  
  90.         cout<<"running"<<endl;  
  91.     else  
  92.         cout<<"rest"<<endl;  
  93. }  
  94. int main( )  
  95. {  
  96.     motorcycle m;  
  97.     bool end=false;  
  98.     while (!end)  
  99.     {  
  100.         cout<<"请操作:1-启动  2-加速  3-减速  4-有人上车  5-有人下车  6-停车 0-结束"<<endl;  
  101.         char keydown= _getch(); //_getch()返回键盘上读取的字符  
  102.         switch(keydown)  
  103.         {  
  104.         case '1':  
  105.             cout<<"选中的操作是1-启动\t";  
  106.             m.start();  
  107.             break;  
  108.         case '2':  
  109.             cout<<"选中的操作是2-加速\t";  
  110.             m.speed_up();  
  111.             break;  
  112.         case '3':  
  113.             cout<<"选中的操作是3-减速\t";  
  114.             m.slow_down();  
  115.             break;  
  116.         case '4':  
  117.             cout<<"选中的操作是4-有人上车\t";  
  118.             m.addPassenger();  
  119.             break;  
  120.         case '5':  
  121.             cout<<"选中的操作是5-有人下车\t";  
  122.             m.addPassenger(-1);  
  123.             break;  
  124.         case '6':  
  125.             cout<<"选中的操作是6-停车\t";  
  126.             m.stop();  
  127.             break;  
  128.         case '0':  
  129.             end=true;  
  130.             break;  
  131.         }  
  132.         m.show();  
  133.         cout<<endl;  
  134.         Sleep(200);  
  135.     }  
  136.     return 0;  
  137. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值