12周 任务3 关于驾驶摩托车

#include <iostream>      
#include<conio.h>      
#include <windows.h>      
using namespace std;    
enum vehicleStaus {rest, running};  //车辆状态:泊车、行进      
class vehicle //车辆类      
{    
protected:    
    int maxSpeed;       //最大车速      
    int currentSpeed;   //当前速度      
    int weight;         //车重      
    vehicleStaus status; //rest-泊车状态;running-行进状态      
public:    
    vehicle(int maxS, int w):maxSpeed(maxS),weight(w)    
    {    
        currentSpeed=0;    
         status=rest;    
    } //构造函数,初始时,当前速度总为且处在停车状态      
    void start();  //由rest状态到running, 初速为1;      
    void stop(); //由running状态到rest, 当前速度小于5时,才允许停车      
    void speed_up();  //加速,调用1次,速度加1      
    void slow_down(); //减速,调用1次,速度减1,速度为0时,停车      
};    
    
//对车辆类成员函数的定义      
void vehicle::start() //由rest状态到running, 初速为1;      
{    
   status=running;    
    currentSpeed=1;    
}    
   
    
void vehicle::stop() //由running状态到rest, 当前速度小于5时,才允许停车      
    
{    
    if(currentSpeed>5)    
   {    
      cout<<"当前车速太大,请减速后停车........"<<endl;   
      return;  
   }    
    status=rest;    
}    
   
void vehicle::speed_up()  //加速,调用1次,速度加1      
{    
    if(currentSpeed == 0)      
  {      
        cout << "请先启动车辆......." << endl;    
        return;  
    }      
  if(currentSpeed >= maxSpeed)      
   {      
       cout << "请不要超速行驶......" << endl;  
       return;  
   }      
    else      
   {      
      currentSpeed += 1;  
      return;  
   }    
}    
   
void vehicle::slow_down() //减速,调用1次,速度减1,速度为0时,停车      
{    
  if(currentSpeed  == 1)      
    {      
       currentSpeed --;      
       status = rest;    
       return;  
   }      
   if(currentSpeed < 1)      
   {      
     cout << "请先启动车辆......." << endl;      
       currentSpeed --;      
        status = rest;     
        return;  
   }      
    else      
  {      
       currentSpeed --;      
   }      
   
}    
   
class bicycle :virtual public vehicle    
{     
protected:    
    double height; //车高      
public:    
    bicycle(int maxS=10, int w=50, int h=0.7):vehicle(maxS, w), height(h){}   //定义构造函数      
};    
   
class motorcar : virtual public vehicle   
{     
protected:    
    int seatNum; //座位数      
   int passengerNum; //乘客人数      
public:    
   motorcar(int maxS=150, int w=1500, int s=5, int p=1):vehicle(maxS, w),seatNum(s), passengerNum(p){}   //定义构造函数      
   void addPassenger(int p);     
};    
void motorcar::addPassenger(int p=1)     
{    
   if(currentSpeed != 0)   
   {  
     cout<<"请停车后在上车......."<<endl;    
     return;  
   }  
        if(passengerNum+p>seatNum)    
       {    
        cout<<"请勿超载......"<<endl;    
       passengerNum = seatNum;   
       return;  
  
   }    
   if(passengerNum + p <= 0)      
   {      
       cout << "请司机不要离开岗位......" << endl;      
        passengerNum = 1;      
        currentSpeed = 0;      
       status = rest;    
       return;  
   }    
    else     
       passengerNum+=p;    
}    
   
   
class motorcycle:public bicycle , public motorcar //摩托车类的基类为自行车类和机动车类      
{    
public:    
   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){}   //定义构造函数       
   void show(); //显示摩托车的运行状态      
};    
void motorcycle :: show() //显示摩托车的运行状态        
{      
    cout << "状态:" ;      
    if(status)cout << "行进";  //枚举中running值为1,rest值为0     
   else cout << "泊车";      
    cout << "         " << "车速:" << currentSpeed << "/" << maxSpeed << "         " << "当前乘员:" << passengerNum << "/" << seatNum << endl;      
}      
int main( )    
{    
    motorcycle m;    
   bool end=false;    
   while (!end)  
   {    
       cout<<"请操作:1-启动 2-加速 3-减速 4-有人上车 5-有人下车 6-停车0-结束"<<endl;    
       char keydown = _getch(); //_getch()返回键盘上读取的字符,应包含头文件<conio.h>      
       switch(keydown)    
       {    
      case '1':     
            cout<<"操作(启动)\t"; m.start(); break;    
       case '2':                             
            cout<<"操作(加速)\t"; m.speed_up(); break;    
      case '3':                              
            cout<<"操作(减速)\t"; m.slow_down(); break;    
       case '4':                            
           cout<<"操作(有人上车)\t"; m.addPassenger(); break;    
       case '5':                          
            cout<<"操作(有人下车)\t"; m.addPassenger(-1); break;    
       case '6':                          
           cout<<"操作(停车)\t"; m.stop(); break;    
       case '0':                   
          end=true; break;    
       }    
       m.show();    
       cout<<endl;    
        Sleep(200);  //要包含头文件<windows.h>      
    }    
    system("pause");    
    return 0;    
}    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值