程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 車輛狀態:泊車、行進

車輛狀態:泊車、行進

編輯:C++入門知識

[cpp] 
/* 
* Copyright (c) 2013, 煙台大學計算機學院                     
* All rights reserved.                     
* 文件名稱:test.cpp                     
* 作者:樊露露                    
* 完成日期:2013 年 5 月 27 日                     
* 版本號:v1.0                   
*                     
* 輸入描述:無                     
* 問題描述:                  
* 程序輸出:
* 問題分析:                    
* 算法設計:略                     
*/          
#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); //構造函數,初始時,當前速度總為0且處在停車狀態  
    void start();  //由rest狀態到running, 初速為1  
    void stop(); //由running狀態到rest, 當前速度小於5時,才允許停車  
    void speed_up();  //加速,調用1次,速度加1  
    void slow_down(); //減速,調用1次,速度減1,速度為0時,停車  
}; 
 
vehicle::vehicle(int maxS, int w):maxSpeed(maxS), currentSpeed(0),weight(w), status(rest){}   
 
void vehicle::start() 

    if(status==rest) 
    { 
        status=running; 
        currentSpeed=1; 
    } 
    else   
        cout<<"車輛已經行駛!"<<endl; 

 
void vehicle::stop() 

    if(status==running) 
        if(currentSpeed<5) 
        { 
            status=rest; 
            currentSpeed=0; 
        } 
        else 
            cout<<"車速太快,先減速再停車!"<<endl; 
    else   
        cout<<"車輛未啟動!"<<endl; 

 
void vehicle::speed_up() 

    if (status==running)   
        if(currentSpeed<maxSpeed)   
            ++currentSpeed;   
        else   
            cout<<"請不要超速行駛……"<<endl;   
    else   
        cout<<"車輛未啟動!"<<endl; 

 
void vehicle::slow_down() 

    if (status==running)   
    {   
        if(currentSpeed>0)   
            --currentSpeed;   
    }   
    else   
        cout<<"車輛未啟動!"<<endl; 
    if(currentSpeed==0) 
        status=rest; 

 
class bicycle : virtual public vehicle//(1)自行車類的虛基類為車輛類  
{  
protected: 
    double height; //車高  
public: 
    bicycle(int maxS=10, int w=50, int h=0.7);   //定義構造函數  
}; 
 
bicycle::bicycle(int maxS, int w, int h):vehicle(maxS, w),height(h){}   
 
 
class motorcar : virtual public vehicle//(2)機動車類的虛基類也為車輛類  
{  
protected: 
    int seatNum; //座位數  
    int passengerNum; //乘客人數  
public: 
    motorcar(int maxS=150, int w=1500, int s=5, int p=1);   //定義構造函數  
    void addPassenger(int p=1);   //增加搭載的乘客,超員要拒載,有人下車時,p為負數。當然車上乘客至少有1個(司機)。只有車停穩後才能上下客。  
}; 
 
motorcar::motorcar(int maxS, int w, int s, int p): vehicle(maxS, w),seatNum(s),passengerNum(p){} 
 
void motorcar::addPassenger(int p)   
{   
    if (status==running)   
    {   
        cout<<"車輛正在行駛,停車後再上下車!"<<endl;   
    }   
    else   
    {   
        passengerNum+=p;   
        if(passengerNum>seatNum)   
        {   
            passengerNum=seatNum;   
            cout<<"涉嫌超員,已清理後達到滿員!"<<endl;   
        }   
        else if (passengerNum<1)   
        {   
            passengerNum=1;   
            cout<<"請司機不要離開崗位!"<<endl;   
        }   
    }   
}   
 
 
class motorcycle: public bicycle,public  motorcar  //(3)摩托車類的基類為自行車類和機動車類  
{  
public: 
    //定義構造函數  
    motorcycle(int maxS=90, int w=100, int s=3, int p=1, int h=0.7);    
    void show(); //顯示摩托車的運行狀態  
}; 
 
motorcycle::motorcycle(int maxS, int w, int s, int p, int h):vehicle(maxS, w),bicycle(maxS, w, h),motorcar(maxS, w, s, p){}   
 
void motorcycle::show() 

    cout<<"狀態:";   
    if(status==rest)   
        cout<<"泊車;\t";   
    else   
        cout<<"行進;\t";   
    cout<<"車速:"<<currentSpeed<<" / "<< maxSpeed <<"\t當前乘員:"<<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()返回鍵盤上讀取的字符  
        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>  
    } 
    return 0; 

/*
* Copyright (c) 2013, 煙台大學計算機學院                    
* All rights reserved.                    
* 文件名稱:test.cpp                    
* 作者:樊露露                   
* 完成日期:2013 年 5 月 27 日                    
* 版本號:v1.0                  
*                    
* 輸入描述:無                    
* 問題描述:                 
* 程序輸出:
* 問題分析:                   
* 算法設計:略                    
*/        
#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); //構造函數,初始時,當前速度總為0且處在停車狀態
 void start();  //由rest狀態到running, 初速為1
 void stop(); //由running狀態到rest, 當前速度小於5時,才允許停車
 void speed_up();  //加速,調用1次,速度加1
 void slow_down(); //減速,調用1次,速度減1,速度為0時,停車
};

vehicle::vehicle(int maxS, int w):maxSpeed(maxS), currentSpeed(0),weight(w), status(rest){} 

void vehicle::start()
{
 if(status==rest)
 {
  status=running;
  currentSpeed=1;
 }
 else 
        cout<<"車輛已經行駛!"<<endl;
}

void vehicle::stop()
{
 if(status==running)
  if(currentSpeed<5)
  {
   status=rest;
   currentSpeed=0;
  }
  else
   cout<<"車速太快,先減速再停車!"<<endl;
 else 
  cout<<"車輛未啟動!"<<endl;
}

void vehicle::speed_up()
{
 if (status==running) 
        if(currentSpeed<maxSpeed) 
            ++currentSpeed; 
        else 
            cout<<"請不要超速行駛……"<<endl; 
    else 
        cout<<"車輛未啟動!"<<endl;
}

void vehicle::slow_down()
{
 if (status==running) 
    { 
        if(currentSpeed>0) 
            --currentSpeed; 
    } 
    else 
        cout<<"車輛未啟動!"<<endl;
 if(currentSpeed==0)
  status=rest;
}

class bicycle : virtual public vehicle//(1)自行車類的虛基類為車輛類
{
protected:
 double height; //車高
public:
 bicycle(int maxS=10, int w=50, int h=0.7);   //定義構造函數
};

bicycle::bicycle(int maxS, int w, int h):vehicle(maxS, w),height(h){} 


class motorcar : virtual public vehicle//(2)機動車類的虛基類也為車輛類
{
protected:
 int seatNum; //座位數
 int passengerNum; //乘客人數
public:
 motorcar(int maxS=150, int w=1500, int s=5, int p=1);   //定義構造函數
 void addPassenger(int p=1);   //增加搭載的乘客,超員要拒載,有人下車時,p為負數。當然車上乘客至少有1個(司機)。只有車停穩後才能上下客。
};

motorcar::motorcar(int maxS, int w, int s, int p): vehicle(maxS, w),seatNum(s),passengerNum(p){}

void motorcar::addPassenger(int p) 

    if (status==running) 
    { 
        cout<<"車輛正在行駛,停車後再上下車!"<<endl; 
    } 
    else 
    { 
        passengerNum+=p; 
        if(passengerNum>seatNum) 
        { 
            passengerNum=seatNum; 
            cout<<"涉嫌超員,已清理後達到滿員!"<<endl; 
        } 
        else if (passengerNum<1) 
        { 
            passengerNum=1; 
            cout<<"請司機不要離開崗位!"<<endl; 
        } 
    } 


class motorcycle: public bicycle,public  motorcar  //(3)摩托車類的基類為自行車類和機動車類
{
public:
 //定義構造函數
 motorcycle(int maxS=90, int w=100, int s=3, int p=1, int h=0.7);  
 void show(); //顯示摩托車的運行狀態
};

motorcycle::motorcycle(int maxS, int w, int s, int p, int h):vehicle(maxS, w),bicycle(maxS, w, h),motorcar(maxS, w, s, p){} 

void motorcycle::show()
{
 cout<<"狀態:"; 
    if(status==rest) 
        cout<<"泊車;\t"; 
    else 
        cout<<"行進;\t"; 
    cout<<"車速:"<<currentSpeed<<" / "<< maxSpeed <<"\t當前乘員:"<<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()返回鍵盤上讀取的字符
  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>
 }
 return 0;
}
 
\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved