车辆行驶类

/*
*Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作    者:马广明
* 完成日期:2014 年 5 月 18 日
* 版 本 号: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且处在停车状态
    {
        maxSpeed=maxS;
        weight=w;
    }
    void start() //由rest状态到running, 初速为1
    {
        status=running;
        currentSpeed=1;
    }
    void stop() //由running状态到rest, 当前速度小5时,才允许停车
    {
        if(currentSpeed>=5)
        {
            cout<<"车辆太快,先减速再停车"<<endl;
        }
        else
        {
            currentSpeed=0;
            status=rest;
        }
    }
    void speed_up()  //加速,调用1次,速度加1
    {
        if(status==rest)
        {
            cout<<"车辆未启动,不能加速。"<<endl;
        }
        else
        {
            currentSpeed++;
        }
    }
    void slow_down() //减速,调用1次,速度减1,速度为0时,停车
    {
        if(status==rest)
        {
            cout<<"车辆未启动,不能减速。"<<endl;
        }
        else
        {
            currentSpeed--;
            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):   //定义构造函数
        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):vehicle(maxS,w)  //定义构造函数
    {
        seatNum=s;
        passengerNum=p;
    }
    void addPassenger(int p=1)   //增加搭载的乘客,超员要拒载,有人下车时,p为负数。当然车上乘客至少有1个(司机)。只有车停稳后才能上下客。
    {
        if(p>=0)
        {
            if(currentSpeed!=0)
                cout<<"车辆正在行驶,不能上车"<<endl;
            else if(passengerNum>=3)
                cout<<"车辆满员"<<endl;
            else
                passengerNum++;
        }
        else
        {

            if(currentSpeed!=0)
                cout<<"车辆正在行驶,不能下车"<<endl;
            else if(passengerNum<=1)
                cout<<"已无乘客可下"<<endl;
            else
                passengerNum--;
        }
    }
};

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)://定义构造函数
        vehicle(maxS,w),bicycle(maxS,w,h),motorcar(maxS,w,s,p) {};
    void show() //显示摩托车的运行状态
    {
        if(status==running)
            cout<<"状态:行进;"<<'\t'<<"车速:"<<currentSpeed<<"/"<<maxSpeed<<'\t'<<"当前成员:"<<passengerNum<<"/"<<seatNum<<endl;
        if(status==rest)
            cout<<"状态:泊车;"<<'\t'<<"车速:"<<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<<"选中的操作是1-启动\t";
            m.start();
            break;
        case '2':
            cout<<"选中的操作是2-加速\t";
            m.speed_up();
            break;
        case '3':
            cout<<"选中的操作是3-减速\t";
            m.slow_down();
            break;
        case '4':
            cout<<"选中的操作是4-有人上车\t";
            m.addPassenger();
            break;
        case '5':
            cout<<"选中的操作是5-有人下车\t";
            m.addPassenger(-1);
            break;
        case '6':
            cout<<"选中的操作是6-停车\t";
            m.stop();
            break;
        case '0':
            end=true;
            break;
        }
        m.show();
        cout<<endl;
        Sleep(200);  //要包含头文件<windows.h>
    }
    return 0;
}

车辆行驶类

时间: 2024-08-29 08:37:16

车辆行驶类的相关文章

基于视频的车辆识别技术

一.智能交通技术概述 智能交通系统(Intelligence Transport System ,ITS)是目前世界交通运输领域的前沿研究课题,它融合了电子信息技术,通信技术,自动控制理论,计算机技术和传统的交通工程学理论等多个学科的理论,并将其应用于现代的交通运输管理体系中,从而实现交通运输服务和管理智能化. 交通监视系统是智能交通系统中的一个重要环节,这一子系统主要负责采集有关道路交通流量的各种参数,例如车流量,车速,车型,排队时间和长度等.目前,道路参数检测的方法很多,主要有超声波检测,红

道路运输车辆卫星定位系统JT/T808服务实现和压测

在工作上的需要接触道路运输车辆卫星定位系统相关应用,由于自己对网络服务的编写比较感兴趣,所以利用空闲时间实现了JT/T808的一些协议和相关服务(不得不说这种协议的设计在解释的确导致性能上的损耗,特别针地托管语言的C#来说就更加容易导致性能问题,不过对于现有硬件资源来说一台简配的PC支撑上几万个终端那还是没什么压力的).主要基于兴趣来写所以JT/T808只实现了几个常用的协议:0x0002,0x0200,0x0100等. 为了更好地进行模拟测试还实现了一个简单的JT/T808模拟器方便进行一些简

Unity3d 赛车车辆各类性能算法

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多Unity3D资源.Unity3D培训视频.Unity3D教程.Unity3D常见问题.Unity3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 在制作前,必须先了解真实车辆的原理: 车辆分前轮驱动,后轮驱动和四驱动.动力由引擎提供,反应的力到轮胎上,因此产生转数,即RPM. 引擎的功率可以由RPM得到公式为 : RPM = 引擎功率60/2pi , 这些都是模拟,只为

科目三考试直线行驶就做好这三点,顺利通过!就三点

很多考生一提起来科目三考试,脑子里马上就会想到直线行驶,就是弄不明白何谓直线行驶?为什么平常练车时候教练说直线行驶指令做的很好,可是考试中一做直线行驶电脑就是报直线行驶不合格呢?到底直线行驶该如何操作才能通过呢? 先看一下新规后直线行驶的评判标准 直线行驶按下列规定评判: a)方向控制不稳,不能保持车辆直线运行的,不合格: b)遇前车制动时不及时采取减速措施的,不合格: c)不适时通过内.外后视镜观察后方交通情况的,扣10分: d)未及时发现路面障碍物或发现路面障碍物未及时采取减速措施的,扣10

雷林鹏分享:Ruby 类和对象

Ruby 类和对象 Ruby 是一种完美的面向对象编程语言.面向对象编程语言的特性包括: 数据封装 数据抽象 多态性 继承 这些特性将在 面向对象的 Ruby 中进行讨论. 一个面向对象的程序,涉及到的类和对象.类是个别对象创建的蓝图.在面向对象的术语中,您的自行车是自行车类的一个实例. 以车辆为例,它包括车轮(wheels).马力(horsepower).燃油或燃气罐容量(fuel or gas tank capacity).这些属性形成了车辆(Vehicle)类的数据成员.借助这些属性您能把

创建类模式大PK

创建类模式包括工厂方法模式. 建造者模式. 抽象工厂模式. 单例模式和原型模式, 它们都能够提供对象的创建和管理职责. 其中的单例模式和原型模式非常容易理解, 单例模式是要保持在内存中只有一个对象, 原型模式是要求通过复制的方式产生一个新的对象, 这两个不容易混淆. 剩下的就是工厂方法模式. 抽象工厂模式和建造者模式了, 这三个之间有较多的相似性.30.1 工厂方法模式VS建造者模式工厂方法模式注重的是整体对象的创建方法, 而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个

机器学习 之 算法介绍

什么是程序(Program) 计算机程序,是指为了得到某种结果而可以由计算机(等具有信息处理能力的装置)执行的代码化指令序列(或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列). 通俗讲,计算机给人干活,但它不是人,甚至不如狗懂人的需要(<小羊肖恩>里的狗是多么聪明可爱又忠诚于主人).那怎么让它干活呢,那就需要程序员用某种编程语言来写程序,编程语言就是计算机能理解的语言,计算机可以执行这些程序(指令),最终完成任务.下边的C++程序是完成n的阶乘: int n = std:

Python自动化开发,Day10 - 进程、线程、协程

本章内容 操作系统发展史介绍 进程与线程的区别 python GIL全局解释器锁 线程 语法 join 线程锁Lock\Rlock\信号量 将线程变为守护进程 Event时间 Queue队列 生产者消费者模型 进程 语法 进程间通讯 进程池 一.操作系统发展史介绍 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存

使用Storm实现实时大数据分析

摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Storm进行实时大数据分析.CSDN在此编译.整理. 简单和明了,Storm让大数据分析变得轻松加愉快. 当今世界,公司的日常运营经常会生成TB级别的数据.数据来源囊括了互联网装置可以捕获的任何类型数据,网站.社交媒体.交易型商业数据以及其它商业环境中创建的数据.考虑到数据的生成量,实时处理成为了许多机