2022年车辆管理系统 .pdf
《2022年车辆管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年车辆管理系统 .pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+ 项目:车辆管理系统目标:写一个小程序,要求到用标准模板库中的list容器和迭代器,可以使用到多继承来进行实验。1.1 General(概述) 1.在写代码之前要仔细阅读作业要求2.要求对不正确的输入做检查3.在你写完一个类之后,要紧接着写这个类的测试函数,因此,当你调试你写的代码的时候,你能够很容易的对你的代码做重复检查。这样才能够保证你当前写的代码能够准确无误的执行。 可能出于某些原因你要对你写过的代码作一此些修改,这样你重新测试你修改的代码就相比照较容易。4.添加完成你的任务所需要的函数。1.2 Introduction(简介): 渥太华这个城市正在创建一个有关交通工具的“数据库”
2、,来为它的议会 (委员会 )做预算提供较好的参考。 这个城市有许多不同种类的机动车辆:客车,货车,卡车,紧急车辆 (救护,消防等 ),在对这个城市了解之后,要求你设计一个有下列图要求的层次的系统。2 Implement the following functions for each class: 为每个类实现以下函数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 24 页2.1 (Vehicle类) (属性:所有的属性要求为私有的)char licensePlate属性:车的车牌 (执照)作为它的id, 一个车牌最多可由8组成。cha
3、r *type 属性:车辆类型 (例如:汽车,卡车,消防车)char *make 属性:车辆的制造商double gasTankSize属性:总油量double fuelConsumption属性:单位路程耗油量函数: R1. 构造函数 vehicle (char *type, char* licensePlate, double gasTankSize, double fuelConsumption) Tppe 的默认值为: car licensePlate 的默认值为: ottawa01 gasTankSize 的默认值为: 100 fuelConsumption的默认值为: 10 所有其
4、他不在构造函数中的参数要求置0或置空R2. void setMake(char *make); 设置制造商 的值R3. setFuelData (double gasTankSize, double fuelConsumption) 设置燃料的有关信息 (总油量,单位路程耗油量) R4. setType (char *type) 设置车辆类型R5. setLicensePlate (char *license) 设置车辆的车牌R6. virtual printSpecifications() - 打印车辆的具体信息 ,例如:制造商、类型,车牌,燃油量和油箱容积R7. virtual doubl
5、e computeTravelDistance() 这个函数计算车辆可能行使的距离,计算公式为: gasTankSize * fuelConsumption(总油量 *单位路程耗油量 ) Class LoadVehicle:( LoadVehicle类) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 24 页Attributes(属性) int numberOfWheels contains the number of wheels that the vehicle has. int numberOfWheels属性:车辆的车轮个数d
6、ouble loadCapacity the load weight that the vehicle can carry (in kg) double loadCapacity:车辆的负荷double towingCapacity the total weight that the vehicle can tow (in kg) double towingCapacity:车辆能够拖曳的重量Functions R8. loadVehicle (char *type, int numberOfWheels, double loadCapacity, double towingCapacity,
7、 double gasTankSize, double fuelConsumption). A constructor for the class. The default values for numberOfWheels, loadCapacity and towingCapacity are 6, 500kg and 5000kg respectively. The default values for gasTankSize and fuelConsumption are 200 and 6 respectively. The constructor will initialize a
8、ll the fields of the class as required. All other member variables that are not initialized should be set to the default values of the base class(es), or, if no default values exist, to 0 or NULL. 这个类的构造函数,各个属性的默认值:loadCapacity 的默认值: 6, 500kg towingCapacity 的默认值: 5000kg gasTankSize 的默认值: 200 fuelCon
9、sumption 的默认值: 6 其他没有初始化的成员变量应该设置为基类的默认值一致,如果没有默认值, 则应置0或置空R9. setLoadData (double towingCapacity, double loadCapacity) 设置负荷 ,拖曳量R10. printSpecifications() print the specification of the vehicle (the vehicle specification from the vehicle class, the towing capacity, the load capacity and the number
10、of wheels). 打印出车辆的具体信息,包括从基类继承的和它自身的。R11. double computeTravelDistance every pair of wheels above four reduces the travel distance by 5% (travelDistance = gasTankSize*fuelConsumption*(100- (numberOfWheels-4)/2*5)/100). For example: if the gasTankSize if 100 litres, the 精选学习资料 - - - - - - - - - 名师归纳总
11、结 - - - - - - -第 3 页,共 24 页fuelConsumption is 10 km/l and there are 10 wheels then the travelDistance= 100*10*(100-(10-4)/2*5)/100 = 1000*85/100 = 850km. 超过4个车轮,每增加两个车轮,车辆可行使的车程以5%减少. 例如:总油量为 100公升,耗油量为 10km/公升,该车车辆有 10个车轮,它可行使的车程为:100 * 10 * (100-(10-4)/2 * 5)/100 = 1000*85/100 = 850km. 2.3 Class p
12、assengerVehicle: (passengerVehicle类) Attributes int numberOfPassengers contains the number of passengers that the vehicle can Carry int numberOfPassengers属性:车辆可搭乘的乘客的数量Functions(函数) R12. passengerVehicle(char *type, int numPassengers, double gasTankSize, double fuelConsumption) The default values fo
13、r numPassengers is 5. The default values for gasTankSize and fuelConsumption are 100 and 11 respectively. The constructor will initialize all the fields of the class as required using default values of base classes. All other variables that are not initialized are set to 0 or NULL. 该类的构造函数,成员变量的默认值:
14、numPassengers 的默认值:5 gasTankSize 的默认值: 100 fuelConsumption 的默认值: 11 要用基类的构造函数对要求有默认值的属性进行初始化,没其他没有初始化的成员要置0或置空R13. setNumPassengers(int numPassengers) 设置可搭乘的乘客人数R14. printSpecifications() print the specification of the vehicle (the vehicle specification from the vehicle class, and the number of pass
15、engers). 打印车辆的具体信息R15. computeTravelDistance()超过5个人每多搭乘 1个人行程将以 2.5%减少例如:总油量为 100公升,燃油量为 10km/公升,有 7个乘客 ,则可行使的路程为:100*10*(100-(7-5)*2.5)/100 = 1000*95/100 = 950km. 2.4 Class emergencyVehicle(emergencyVehicle类) Attributes(属性) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 24 页int numWorkers属性:为
16、每辆车分配的工作人员char *driver属性:为车辆分配的驾驶员char *station属性:车辆停靠的车站Functions R16. emergencyVehicle(char *type, char*driver, char *station, int numPassengers,double gasTankSize, double fuelConsumption) 构造函数,部分属性平的默认值:fornumPassengers 的默认值: 5 gasTankSize 的默认值: 100 fuelConsumption 的默认值: 11 wheels 的默认值: 6 其他没有给初始
17、值的属性要求置0或置空 . R17. setAssignment(char *driver, char *station)设置分配 (司机,停靠站 ) R18. printSpecifications() 打印的车辆车辆标准规格从车辆类,该loadvehcile ,客运车辆和emergencyequipment 类。打印车辆的具体信息R19. computeTravelDistance() 行程是 loadVehicle 和passengerVehicle 中较小的行程2.5 Class EmgergencyEquipmen(紧急设备类) Attributes 属性int sirenNoise
18、Distance 汽笛能够被听到的距离 ,默认为 500m int numBeds 可以同时供应病人的床位,默认值为2 Functions R20. emergencyEquipment(int sirenNoiseDistance, int numBeds) 构造函数给汽笛的可听见距离,床位初始化R21. getBedsNum() 返回床位数R22. printSpecifications() 打印汽笛的可听见距离,床位数2.6 Container class(容器类) 要求使用标准模板库中的list容器,list容器要求可以存储指向对象的指针,这样所有不同类型的车辆可以在同一个容器中(it
19、erator-迭代器 的使用) 2.7 Decision class(决策类) 使用相应的迭代器对容器遍历,使用dynamic casting运行时类型信息进行不同类之间的类型转型(如将指向不同派生类对象的基类指针转为派生类对象指针),可以对相应不同类的精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 24 页成员函数的调用,这个类由城市的议会用来做决定Attributes 属性list& vehicleList:各类车辆的指针Functions方法R23. decision(list&) 构造函数:接收存储各类车辆信息的容器R24. p
20、rintVehiclesSpecifications -打印所有车辆的具体信息R25. printEmergencyVehicles() -单独打印紧急车辆的紧急数据信息R26. int numberLongDistanceEmergencyVehicles() 打印不用中途加油能够行使 800km 以上的紧急车辆的数量R30. int numBeds() - 确定以防紧急事件这个城市能够调遣的移动床位的数量R27. int numPassengers() 确定以防紧急事件这个城市可转移的乘客人数. 2.8 Testing(测试) 主函数要求能够获得供议会做决定的计算结果int main()
21、list vehicleList; LoadVehicle* lv1 = new LoadVehicle();back(lv1); PassengerVehicle* pv1 = new PassengeVehicle();back(pv1); .EmergencyVehicle* ev1 = new EmergencyVehicle();back(ev1); .Decision decision(vehicleList); (); () ; () ; () ; (); delete lv1; delete pv1; delete ev1; return 0; 11. 写一个学生类, 从 pe
22、rson 类继承, 增加的属性为成绩f 和评语 label字符串。person: name,age,print() #include 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 24 页class person private: char *name; int age; public: person(char *name=,int age=0) this-name=name; this-age=age; void print() cout :name 年龄: age; person()coutPerson destructorend
23、l; ; class student:public person private: double f; char *label; public: student(char *n=,int a=0,double b=0,char *c=):person(n,a),f(b),label(c) void print() person:print(); cout 成绩: f 评语: labelendl; student()coutStuent destructorendl; ; void main() person a1; student d1(张三 ,16,89.5, 优秀 ); a1=d1; a1
24、.print(); coutendl; d1.person:print(); coutendl; d1.print(); 运行结果:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 24 页:张三年龄: 16 :张三年龄: 16 :张三年龄: 16 成绩: 89.5 评语:优秀Stuent destructor Person destructor Press any key to continue exercise15 12. Person 为基类:虚函数为dailywork() Person() 定义三个子类:Student Docto
25、r(char* label) Driver(char* label) 主函数:定义基类指针数组,动态创建子类对象,调用成员函数,删除创建的对象。#include class Person public: Person(char *name=,int age=0) this-name=name; this-age=age; virtual void dailywork()cout: name 年龄: age; virtual Person()couterson destructorendl; private: char *name; int age; ; class Student:public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年车辆管理系统 2022 车辆 管理 系统
限制150内