第十一章——摩托车继承自行车和机动车 (2)
- /*
- *Copyright (c) 2015,烟台大学计算机学院
- *All rights reserved.
- *文件名称:text.cpp
- *作者:李德彪
- *完成日期:2015年5月16日
- *版本号:v1.0
- *
- *问题描述:为各个类增加构造函数以及其他函数,并自行编制main函数,完成初步测试
- *输入描述: 无
- *程序输出:此次测试信息
- #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时,停车
- };
- //构造函数,初始时,当前速度总为0且处在停车状态
- Vehicle::Vehicle(int maxS, int w):maxSpeed(maxS), currentSpeed(0),weight(w), status(rest) {}
- //启动:由rest状态到running, 初速为1
- void Vehicle::start()
- {
- if (status==rest)
- {
- status=running;
- currentSpeed=1;
- }
- else
- cout<<"车辆已经行驶!"<<endl;
- }
- //由running状态到rest, 当前速度小于5时,才允许停车
- void Vehicle::stop()
- {
- if (status==running)
- if(currentSpeed<5)
- {
- status=rest;
- currentSpeed=0;
- }
- else
- cout<<"车速太快!先减速再停车……"<<endl;
- else
- cout<<"车辆未启动!"<<endl;
- }
- //加速,调用1次,速度加1
- void Vehicle::speed_up()
- {
- if (status==running)
- if(currentSpeed<maxSpeed)
- ++currentSpeed;
- else
- cout<<"请不要超速行驶……"<<endl;
- else
- cout<<"车辆未启动!"<<endl;
- }
- //减速,调用1次,速度减1,速度为0时,停车
- void Vehicle::slow_down()
- {
- if (status==running)
- {
- if(currentSpeed>0)
- --currentSpeed;
- }
- else
- cout<<"车辆未启动!"<<endl;
- if(currentSpeed==0)
- status=rest;
- }
- class Bicycle :virtual public Vehicle //()自行车类
- {
- 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//()机动车类
- {
- 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) {}
- //搭载乘客,超员要拒载,有人下车时,p为负数。当然车上乘客至少有1个(司机)。上下车时要保证安全……
- 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 //()摩托车类
- {
- 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()返回键盘上读取的字符,应包含头文件<conio.h>
- 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;
- }
#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, 初速为1void stop(); //由running状态到rest, 当前速度小于5时,才允许停车void speed_up(); //加速,调用1次,速度加1void slow_down(); //减速,调用1次,速度减1,速度为0时,停车 };//构造函数,初始时,当前速度总为0且处在停车状态 Vehicle::Vehicle(int maxS, int w):maxSpeed(maxS), currentSpeed(0),weight(w), status(rest) {}//启动:由rest状态到running, 初速为1 void Vehicle::start() {if (status==rest){status=running;currentSpeed=1;}elsecout<<"车辆已经行驶!"<<endl; } //由running状态到rest, 当前速度小于5时,才允许停车 void Vehicle::stop() {if (status==running)if(currentSpeed<5){status=rest;currentSpeed=0;}elsecout<<"车速太快!先减速再停车……"<<endl;elsecout<<"车辆未启动!"<<endl; }//加速,调用1次,速度加1 void Vehicle::speed_up() {if (status==running)if(currentSpeed<maxSpeed)++currentSpeed;elsecout<<"请不要超速行驶……"<<endl;elsecout<<"车辆未启动!"<<endl; } //减速,调用1次,速度减1,速度为0时,停车 void Vehicle::slow_down() {if (status==running){if(currentSpeed>0)--currentSpeed;}elsecout<<"车辆未启动!"<<endl;if(currentSpeed==0)status=rest; }class Bicycle :virtual public Vehicle //()自行车类 { 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//()机动车类 { 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) {}//搭载乘客,超员要拒载,有人下车时,p为负数。当然车上乘客至少有1个(司机)。上下车时要保证安全…… 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 //()摩托车类 { 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";elsecout<<"行进;\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()返回键盘上读取的字符,应包含头文件<conio.h>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; }
第十一章——摩托车继承自行车和机动车 (2)相关推荐
- 第十一周——摩托车继承自行车和机动车 (1)
[cpp] vi /* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:text.cpp *作者:李德彪 *完成日期:2015年5月 ...
- C++实践参考——摩托车继承自行车和机动车
[项目 - 摩托车继承自行车和机动车] 在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示. 下载可执行文件链 ...
- 第十、十一周项目五 - 摩托车继承自行车和机动车
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月10日*版 本 号:v1. ...
- 第12周项目2—摩托车继承自行车和机动车
问题及代码: /** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作 者:李盈盈* 完成日期:2015年 0 ...
- 摩托车继承自行车和机动车
/**Copyright (c) 2016,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者: 武聪*完成日期:2016年5月26日*版本号:v1.0** ...
- 第十周第十一周上机实践项目-项目5-摩托车继承自行车和机动车
/*copyright(c)2016.烟台大学计算机学院* All rights reserved,* 文件名称:text.Cpp* 作者:刘涛* 完成日期:2016年5月9日* 版本号:vc++6. ...
- java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章
java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...
- Java语言程序设计(基础篇) 第十一章 继承和多态
第十一章 继承和多态 11.1 引言 面向对象的编程允许你从已经存在的类中定义新的类,这称为继承. 11.2 父类和子类 1.继承使得你可以定义一个通用的类(既父类),之后扩充该类为一个更加特定的类( ...
- 鸟哥的Linux私房菜(服务器)- 第二十一章、文件服务器之三: FTP 服务器
第二十一章.文件服务器之三: FTP 服务器 最近更新日期:2011/08/08 FTP (File Transfer Protocol) 可说是最古老的协议之一了,主要是用来进行档案的传输,尤其是大 ...
最新文章
- 建校百年,哈工大计算机学部成立!NLP专家刘挺挑大梁
- NB-IoT与eMTC差异全解析
- 回溯 Rust 2020:正成为最受欢迎的编程语言
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
- 图像处理:matplotlib
- Python D6 if分支结构
- shell中的$()、${}、$(())、(())
- iQOO高层专访:打造性能旗舰 用户满意度为先
- 强悍的命令行 —— less(与 more、cat 的区别)
- 帮助开发者快速创建响应式布局的Boilerplate - Responsive Boilerp...
- Spring源码下载及构建技巧
- java移位操作示例
- iOS系统自带的视频播放器
- alpha-beta剪枝算法原理(附代码)
- 【FPGA】基于VGA的图像显示
- sql2000 sp3、sql2000 sp4升级补丁下载和安装须知:
- checksum命令 linux_Linux命令大全完整版
- 袁创:文本编辑器中文字断行及排版算法研究
- Mysql语法大全(命令行)(简洁、明了、全面)
- 毕设论文数据分析记录-part2:相关性分析
热门文章
- 爆款电商直播间如何打造?
- POI 控制 excel 生成图表的方式(二)
- 学习 有道云笔记 的笔记
- 5G#DVEV (Development environment-开发环境)
- Windows 权限的继承性、累加性、优先性、交叉性和四项基本原则
- 实习or在校学习or签约or考公务员or……
- 黑莓平板模拟器(BlackBerry PlayBook simulator)Linux安装方法
- 网络爬虫day1:python中的request模块基本使用
- 易盛api接口 mysql_易盛9.0行情API接口公共授权.PDF
- NPOI在Word中的简单用法汇总