1. /*
    2. *Copyright (c) 2015,烟台大学计算机学院
    3. *All rights reserved.
    4. *文件名称:text.cpp
    5. *作者:李德彪
    6. *完成日期:2015年5月16日
    7. *版本号:v1.0
    8. *
    9. *问题描述:为各个类增加构造函数以及其他函数,并自行编制main函数,完成初步测试
    10. *输入描述: 无
    11. *程序输出:此次测试信息
  1. #include <iostream>
  2. #include<conio.h>
  3. #include <windows.h>
  4. using namespace std;
  5. enum VehicleStaus {rest, running};  //车辆状态:泊车、行进
  6. class Vehicle //车辆类
  7. {
  8. protected:
  9. int maxSpeed;       //最大车速
  10. int currentSpeed;   //当前速度
  11. int weight;         //车重
  12. VehicleStaus status; //rest-泊车状态;running-行进状态
  13. public:
  14. Vehicle(int maxS, int w); //构造函数,初始时,当前速度总为0且处在停车状态
  15. void start();  //由rest状态到running, 初速为1
  16. void stop(); //由running状态到rest, 当前速度小于5时,才允许停车
  17. void speed_up();  //加速,调用1次,速度加1
  18. void slow_down(); //减速,调用1次,速度减1,速度为0时,停车
  19. };
  20. //构造函数,初始时,当前速度总为0且处在停车状态
  21. Vehicle::Vehicle(int maxS, int w):maxSpeed(maxS), currentSpeed(0),weight(w), status(rest) {}
  22. //启动:由rest状态到running, 初速为1
  23. void Vehicle::start()
  24. {
  25. if (status==rest)
  26. {
  27. status=running;
  28. currentSpeed=1;
  29. }
  30. else
  31. cout<<"车辆已经行驶!"<<endl;
  32. }
  33. //由running状态到rest, 当前速度小于5时,才允许停车
  34. void Vehicle::stop()
  35. {
  36. if (status==running)
  37. if(currentSpeed<5)
  38. {
  39. status=rest;
  40. currentSpeed=0;
  41. }
  42. else
  43. cout<<"车速太快!先减速再停车……"<<endl;
  44. else
  45. cout<<"车辆未启动!"<<endl;
  46. }
  47. //加速,调用1次,速度加1
  48. void Vehicle::speed_up()
  49. {
  50. if (status==running)
  51. if(currentSpeed<maxSpeed)
  52. ++currentSpeed;
  53. else
  54. cout<<"请不要超速行驶……"<<endl;
  55. else
  56. cout<<"车辆未启动!"<<endl;
  57. }
  58. //减速,调用1次,速度减1,速度为0时,停车
  59. void Vehicle::slow_down()
  60. {
  61. if (status==running)
  62. {
  63. if(currentSpeed>0)
  64. --currentSpeed;
  65. }
  66. else
  67. cout<<"车辆未启动!"<<endl;
  68. if(currentSpeed==0)
  69. status=rest;
  70. }
  71. class Bicycle :virtual public Vehicle //()自行车类
  72. {
  73. protected:
  74. double height; //车高
  75. public:
  76. Bicycle(int maxS=10, int w=50, int h=0.7);   //定义构造函数
  77. };
  78. Bicycle::Bicycle(int maxS, int w, int h):Vehicle(maxS, w),height(h) {}
  79. class Motorcar : virtual public Vehicle//()机动车类
  80. {
  81. protected:
  82. int seatNum; //座位数
  83. int passengerNum; //乘客人数
  84. public:
  85. Motorcar(int maxS=150, int w=1500, int s=5, int p=1);   //定义构造函数
  86. void addPassenger(int p=1);   //搭载乘客,超员要拒载,有人下车时,p为负数。当然车上乘客至少有1个(司机)。上下车时要保证安全……
  87. };
  88. //定义构造函数
  89. Motorcar::Motorcar(int maxS, int w, int s, int p): Vehicle(maxS, w),seatNum(s),passengerNum(p) {}
  90. //搭载乘客,超员要拒载,有人下车时,p为负数。当然车上乘客至少有1个(司机)。上下车时要保证安全……
  91. void Motorcar::addPassenger(int p)
  92. {
  93. if (status==running)
  94. {
  95. cout<<"车辆正在行驶,停车后再上下车!"<<endl;
  96. }
  97. else
  98. {
  99. passengerNum+=p;
  100. if(passengerNum>seatNum)
  101. {
  102. passengerNum=seatNum;
  103. cout<<"涉嫌超员,已清理后达到满员!"<<endl;
  104. }
  105. else if (passengerNum<1)
  106. {
  107. passengerNum=1;
  108. cout<<"请司机不要离开岗位!"<<endl;
  109. }
  110. }
  111. }
  112. class Motorcycle: public Bicycle, public Motorcar //()摩托车类
  113. {
  114. public:
  115. Motorcycle(int maxS=90, int w=100, int s=3, int p=1, int h=0.7);   //定义构造函数
  116. void show(); //显示摩托车的运行状态
  117. };
  118. //定义构造函数
  119. Motorcycle::Motorcycle(int maxS, int w, int s, int p, int h):Vehicle(maxS, w),Bicycle(maxS, w, h),Motorcar(maxS, w, s, p) {}
  120. //显示摩托车的运行状态
  121. void Motorcycle::show()
  122. {
  123. cout<<"状态:";
  124. if(status==rest)
  125. cout<<"泊车;\t";
  126. else
  127. cout<<"行进;\t";
  128. cout<<"车速:"<<currentSpeed<<" / "<< maxSpeed <<"\t当前乘员:"<<passengerNum<<" / "<< seatNum << endl;
  129. }
  130. int main( )
  131. {
  132. Motorcycle m;
  133. bool end=false;
  134. while (!end)
  135. {
  136. cout<<"请操作:1-启动  2-加速  3-减速  4-有人上车  5-有人下车  6-停车 0-结束"<<endl;
  137. char keydown= _getch(); //_getch()返回键盘上读取的字符,应包含头文件<conio.h>
  138. switch(keydown)
  139. {
  140. case '1':
  141. cout<<"选中的操作是1-启动\t";
  142. m.start();
  143. break;
  144. case '2':
  145. cout<<"选中的操作是2-加速\t";
  146. m.speed_up();
  147. break;
  148. case '3':
  149. cout<<"选中的操作是3-减速\t";
  150. m.slow_down();
  151. break;
  152. case '4':
  153. cout<<"选中的操作是4-有人上车\t";
  154. m.addPassenger();
  155. break;
  156. case '5':
  157. cout<<"选中的操作是5-有人下车\t";
  158. m.addPassenger(-1);
  159. break;
  160. case '6':
  161. cout<<"选中的操作是6-停车\t";
  162. m.stop();
  163. break;
  164. case '0':
  165. end=true;
  166. break;
  167. }
  168. m.show();
  169. cout<<endl;
  170. Sleep(200);  //要包含头文件<windows.h>
  171. }
  172. return 0;
  173. }
  174. #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. 第十一周——摩托车继承自行车和机动车 (1)

    [cpp] vi /* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:text.cpp *作者:李德彪 *完成日期:2015年5月 ...

  2. C++实践参考——摩托车继承自行车和机动车

    [项目 - 摩托车继承自行车和机动车] 在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示. 下载可执行文件链 ...

  3. 第十、十一周项目五 - 摩托车继承自行车和机动车

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月10日*版 本 号:v1. ...

  4. 第12周项目2—摩托车继承自行车和机动车

    问题及代码: /** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作 者:李盈盈* 完成日期:2015年 0 ...

  5. 摩托车继承自行车和机动车

    /**Copyright (c) 2016,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者: 武聪*完成日期:2016年5月26日*版本号:v1.0** ...

  6. 第十周第十一周上机实践项目-项目5-摩托车继承自行车和机动车

    /*copyright(c)2016.烟台大学计算机学院* All rights reserved,* 文件名称:text.Cpp* 作者:刘涛* 完成日期:2016年5月9日* 版本号:vc++6. ...

  7. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章

    java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...

  8. Java语言程序设计(基础篇) 第十一章 继承和多态

    第十一章 继承和多态 11.1 引言 面向对象的编程允许你从已经存在的类中定义新的类,这称为继承. 11.2 父类和子类 1.继承使得你可以定义一个通用的类(既父类),之后扩充该类为一个更加特定的类( ...

  9. 鸟哥的Linux私房菜(服务器)- 第二十一章、文件服务器之三: FTP 服务器

    第二十一章.文件服务器之三: FTP 服务器 最近更新日期:2011/08/08 FTP (File Transfer Protocol) 可说是最古老的协议之一了,主要是用来进行档案的传输,尤其是大 ...

最新文章

  1. 建校百年,哈工大计算机学部成立!NLP专家刘挺挑大梁
  2. NB-IoT与eMTC差异全解析
  3. 回溯 Rust 2020:正成为最受欢迎的编程语言
  4. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
  5. 图像处理:matplotlib
  6. Python D6 if分支结构
  7. shell中的$()、${}、$(())、(())
  8. iQOO高层专访:打造性能旗舰 用户满意度为先
  9. 强悍的命令行 —— less(与 more、cat 的区别)
  10. 帮助开发者快速创建响应式布局的Boilerplate - Responsive Boilerp...
  11. Spring源码下载及构建技巧
  12. java移位操作示例
  13. iOS系统自带的视频播放器
  14. alpha-beta剪枝算法原理(附代码)
  15. 【FPGA】基于VGA的图像显示
  16. sql2000 sp3、sql2000 sp4升级补丁下载和安装须知:
  17. checksum命令 linux_Linux命令大全完整版
  18. 袁创:文本编辑器中文字断行及排版算法研究
  19. Mysql语法大全(命令行)(简洁、明了、全面)
  20. 毕设论文数据分析记录-part2:相关性分析

热门文章

  1. 爆款电商直播间如何打造?
  2. POI 控制 excel 生成图表的方式(二)
  3. 学习 有道云笔记 的笔记
  4. 5G#DVEV (Development environment-开发环境)
  5. Windows 权限的继承性、累加性、优先性、交叉性和四项基本原则
  6. 实习or在校学习or签约or考公务员or……
  7. 黑莓平板模拟器(BlackBerry PlayBook simulator)Linux安装方法
  8. 网络爬虫day1:python中的request模块基本使用
  9. 易盛api接口 mysql_易盛9.0行情API接口公共授权.PDF
  10. NPOI在Word中的简单用法汇总