车辆管理系统.docx
- 文档编号:24072104
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:36
- 大小:28.33KB
车辆管理系统.docx
《车辆管理系统.docx》由会员分享,可在线阅读,更多相关《车辆管理系统.docx(36页珍藏版)》请在冰豆网上搜索。
车辆管理系统
C++项目:
车辆管理系统
目标:
写一个小程序,要求到用标准模板库中的list容器和迭代器,可以使用到多继承来进行实验。
1.1General(概述)
1.在写代码之前要仔细阅读作业要求
2.要求对不正确的输入做检查
3.在你写完一个类之后,要紧接着写这个类的测试函数,因此,当你调试你写的代码
的时候,你能够很容易的对你的代码做重复检查。
这样才能够保证你当前写的代码
能够准确无误的执行。
可能出于某些原因你要对你写过的代码作一此些修改,这样
你重新测试你修改的代码就相对比较容易。
4.添加完成你的任务所需要的函数。
1.2Introduction(简介):
渥太华这个城市正在创建一个有关交通工具的“数据库”,来为它的议会(委员会)做
预算提供较好的参考。
这个城市有许多不同种类的机动车辆:
客车,货车,卡车,
紧急车辆(救护,消防等),在对这个城市了解之后,要求你设计一个有下图要求的层次的系统。
2Implementthefollowingfunctionsforeachclass:
为每个类实现以下函数
2.1(Vehicle类)(属性:
所有的属性要求为私有的)
charlicensePlate[]属性:
车的车牌(执照)作为它的id,一个车牌最多可由8组成。
char*type属性:
车辆类型(例如:
汽车,卡车,消防车)
char*make属性:
车辆的制造商
doublegasTankSize属性:
总油量
doublefuelConsumption属性:
单位路程耗油量
函数:
R1.构造函数vehicle(char*type,char*licensePlate,doublegasTankSize,doublefuelConsumption)
Tppe的默认值为:
car
licensePlate的默认值为:
ottawa01
gasTankSize的默认值为:
100
fuelConsumption的默认值为:
10
所有其他不在构造函数中的参数要求置0或置空
R2.voidsetMake(char*make);
设置制造商的值
R3.setFuelData(doublegasTankSize,doublefuelConsumption)–设置燃料的有关信息(总油量,单位路程耗油量)
R4.setType(char*type)–设置车辆类型
R5.setLicensePlate(char*license)–设置车辆的车牌
R6.virtualprintSpecifications()-打印车辆的具体信息,例如:
制造商、类型,车牌,燃油量和油箱容积
R7.virtualdoublecomputeTravelDistance()–这个函数计算车辆可能行使的距离,
计算公式为:
gasTankSize*fuelConsumption(总油量*单位路程耗油量)
2.2
ClassLoadVehicle:
(LoadVehicle类)
Attributes(属性)
intnumberOfWheels–containsthenumberofwheelsthatthevehiclehas.
intnumberOfWheels属性:
车辆的车轮个数
doubleloadCapacity–theloadweightthatthevehiclecancarry(inkg)
doubleloadCapacity:
车辆的负荷
doubletowingCapacity–thetotalweightthatthevehiclecantow(inkg)
doubletowingCapacity:
车辆能够拖曳的重量
Functions
R8.loadVehicle(char*type,intnumberOfWheels,doubleloadCapacity,double
towingCapacity,doublegasTankSize,doublefuelConsumption).
Aconstructorfortheclass.ThedefaultvaluesfornumberOfWheels,loadCapacityand
towingCapacityare6,500kgand5000kgrespectively.Thedefaultvaluesfor
gasTankSizeandfuelConsumptionare200and6respectively.Theconstructorwill
initializeallthefieldsoftheclassasrequired.Allothermembervariablesthatarenot
initializedshouldbesettothedefaultvaluesofthebaseclass(es),or,ifnodefault
valuesexist,to0orNULL.
这个类的构造函数,各个属性的默认值:
loadCapacity的默认值:
6,500kg
towingCapacity的默认值:
5000kg
gasTankSize的默认值:
200
fuelConsumption的默认值:
6
其他没有初始化的成员变量应该设置为基类的默认值一致,如果没有默认值,则应
置0或置空
R9.setLoadData(doubletowingCapacity,doubleloadCapacity)
设置负荷,拖曳量
R10.printSpecifications()–printthespecificationofthevehicle(thevehicle
specificationfromthevehicleclass,thetowingcapacity,theloadcapacityandthe
numberofwheels).
打印出车辆的具体信息,包括从基类继承的和它自身的。
R11.doublecomputeTravelDistance–everypairofwheelsabovefourreducesthe
traveldistanceby5%(travelDistance=gasTankSize*fuelConsumption*(100-
(numberOfWheels-4)/2*5)/100).Forexample:
ifthegasTankSizeif100litres,the
fuelConsumptionis10km/landthereare10wheelsthenthetravelDistance=
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.3ClasspassengerVehicle:
(passengerVehicle类)
Attributes
intnumberOfPassengers–containsthenumberofpassengersthatthevehiclecan
Carry
intnumberOfPassengers属性:
车辆可搭乘的乘客的数量
Functions(函数)
R12.passengerVehicle(char*type,intnumPassengers,doublegasTankSize,double
fuelConsumption)
–ThedefaultvaluesfornumPassengersis5.Thedefaultvalues
forgasTankSizeandfuelConsumptionare100and11respectively.Theconstructor
willinitializeallthefieldsoftheclassasrequiredusingdefaultvaluesofbase
classes.Allothervariablesthatarenotinitializedaresetto0orNULL.
该类的构造函数,成员变量的默认值:
numPassengers的默认值:
5
gasTankSize的默认值:
100
fuelConsumption的默认值:
11
要用基类的构造函数对要求有默认值的属性进行初始化,没其他没有初始化的成员
要置0或置空
R13.setNumPassengers(intnumPassengers)
设置可搭乘的乘客人数
R14.printSpecifications()–printthespecificationofthevehicle(thevehicle
specificationfromthevehicleclass,andthenumberofpassengers).
打印车辆的具体信息
R15.computeTravelDistance()–超过5个人每多搭乘1个人行程将以2.5%减少
例如:
总油量为100公升,燃油量为10km/公升,有7个乘客,则可行使的路程为:
100*10*(100-(7-5)*2.5)/100=1000*95/100=950km.
2.4ClassemergencyVehicle(emergencyVehicle类)
Attributes(属性)
intnumWorkers属性:
为每辆车分配的工作人员
char*driver属性:
为车辆分配的驾驶员
char*station属性:
车辆停靠的车站
Functions
R16.emergencyVehicle(char*type,char*driver,char*station,intnumPassengers,doublegasTankSize,doublefuelConsumption)
–构造函数,部分属性平的默认值:
fornumPassengers的默认值:
5
gasTankSize的默认值:
100
fuelConsumption的默认值:
11
wheels的默认值:
6
其他没有给初始值的属性要求置0或置空.
R17.setAssignment(char*driver,char*station)设置分配(司机,停靠站)
R18.printSpecifications()–打印的车辆(车辆规范规格从车辆类,该loadvehcile,客运车辆和emergencyequipment类)。
打印车辆的具体信息
R19.computeTravelDistance()–行程是loadVehicle和passengerVehicle中较小的行程
2.5ClassEmgergencyEquipmen(紧急设备类)
Attributes(属性)
intsirenNoiseDistance–汽笛能够被听到的距离,默认为500m
intnumBeds–可以同时供给病人的床位,默认值为2
Functions
R20.emergencyEquipment(intsirenNoiseDistance,intnumBeds)–构造函数给汽笛的可听见距离,床位初始化
R21.getBedsNum()–返回床位数
R22.printSpecifications()–打印汽笛的可听见距离,床位数
2.6Containerclass(容器类)
要求使用标准模板库中的list容器,list容器要求可以存储指向对
象的指针,这样所有不同类型的车辆可以在同一个容器中
(iterator-迭代器的使用)
2.7Decisionclass(决策类)
使用相应的迭代器对容器遍历,使用dynamiccasting(运行时类型信息)进行不同类之间的类型转型
(如将指向不同派生类对象的基类指针转为派生类对象指针),可以对相应不同类的
成员函数的调用,这个类由城市的议会用来做决定
Attributes(属性)
list
各类车辆的指针
Functions(方法)
R23.decision(list
接收存储各类车辆信息的容器
R24.printVehiclesSpecifications-打印所有车辆的具体信息
R25.printEmergencyVehicles()-单独打印紧急车辆的紧急数据信息
R26.intnumberLongDistanceEmergencyVehicles()–打印不用中途加油能够行使800km以上的紧急车辆的数量
R30.intnumBeds()-确定以防紧急事件这个城市能够调遣的移动床位的数量
R27.intnumPassengers()–确定以防紧急事件这个城市可转移的乘客人数.
2.8Testing(测试)
主函数要求能够获得供议会做决定的计算结果
intmain()
{
list
LoadVehicle*lv1=newLoadVehicle(…);
vehicleList.push_back(lv1);
…
PassengerVehicle*pv1=newPassengeVehicle(…);
vehicleList.push_back(pv1);
….
EmergencyVehicle*ev1=newEmergencyVehicle(…);
vehicleList.push_back(ev1);
….
Decisiondecision(vehicleList);
decision.printVehiclesSpecifications();
decision.printEmergencyVehicles();
decision.numberLongDistanceEmergencyVehicles();
decision.numBeds();
decision.numPassengers();
deletelv1;
deletepv1;
deleteev1;
…
return0;
}
11.写一个学生类,从person类继承,增加的属性为成绩f和评语label(字符串)。
person:
name,age,print()
#include
classperson
{
private:
char*name;
intage;
public:
person(char*name="",intage=0)
{
this->name=name;
this->age=age;
}
voidprint()
{
cout<<"姓名:
"< "< } ~person(){cout<<"Persondestructor"< }; classstudent: publicperson { private: doublef; char*label; public: student(char*n="",inta=0,doubleb=0,char*c=""): person(n,a),f(b),label(c){} voidprint() { person: : print(); cout<<" 成绩: "< "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车辆 管理 系统