Project 3
Aim:
Build an object-oriented library which can be used to track automobile maintenance. There can be different car types such as petrol, diesel, gas, electric etc., This library should be able to support at least three of the car types.
The code is:
#include
#include
using namespace std;
class Vehicle{
protected:
string make,model;
int year;
long int odometer;
public:
Vehicle(string _make = "", string _model="",int _year=0, int _odo=0){
make = _make;
model = _model;
year = _year;
odometer = _odo;
}
string getMake(){
return make;
}
string getModel(){
return model;
}
int getYear(){
return year;
}
long int getOdo(){
return odometer;
}
void setModel(string val){
model = val;
}
void setMake(string val){
make = val;
}
void setYear(int val){
year = val;
}
void setOdo(int val){
odometer = val;
}
void checkTireRotation(){
int remainder = odometer-50000;
if (remainder>0)
cout<<"Please replace tires"<<endl; else="" cout<<"tire="" in="" good="" condition.="" remaining:="" "<<(0-remainder)<<endl;="" }="" void="" checkoil(){="" int="" remainder="odometer-5000;" if="" (remainder="">0)
cout<<"Oil changed"<<endl; else="" cout<<"oil="" change="" not="" reqd"<<endl;="" }="" void="" getcarinformation(){="" checkchargerpower(){="" int="" distance="getOdo();" if="" (distance="">400)
cout<<"Recharge battery"<<endl; else="" cout<<"batteries="" are="" good="" to="" go"<<endl;="" }="" enum="" type{="" gas,="" diesel,="" electric="" };="" vehicle="" v[10];="" int="" vehcount="0;" gascar:public="" vehicle{="" public:="" void="" gettype(){="" getfueltype(){="" dieselcar="" :public="" electriccar="" checktirerotation(){="" fuelvehicle:="" public="" checkoil(){="" virtual="" getfueltype()="0;" string="" getnewmake(){="" make;="" cout<<"enter="" make:="" "<<endl;="" cin="">>make;
return make;
}
string getNewModel(){
string model;
cout<<"Enter model: "<<endl; cin="">>model;
return model;
}
long int getNewOdometer(){
long int odo;
cout<<"Enter odometer reading: "<<endl; cin="">>odo;
return odo;
}
int getYear(){
int year;
cout<<"Enter year of manufacture: "<<endl; cin="">>year;
return year;
}
int getNewType(){
int type=-1;
do {
cout<<"Enter 0: GAS\n1.DIESEL\n2.ELECTRIC"<<endl; cin="">>type;
}while(type<0||type>2);
return type;
}
void addVehicle(){
int type = getNewType();
string make = getNewMake();
string model = getNewModel();
long int odo = getNewOdometer();
int year = getYear();
v[vehCount].setMake(make);
v[vehCount].setModel(model);
v[vehCount].setOdo(odo);
v[vehCount].setYear(year);
vehCount++;
cout<<"Added vehicle"<<endl; }="" void="" updatevehicle(){="" int="" selection;="" string="" make;="" bool="" flag="false;" cout<<"enter="" the="" make="" of="" vechicle="" you="" need="" to="" update:="" "<<endl;="" cin="">>make;
for(int i=0;i<vehcount;i++){ if(v[i].getmake()="=" make){="" flag="true;" cout<<"enter="" the="" parameter="" to="" be="" updated:="" 1.="" year\n2.="" odometer="" reading"<<endl;="" cin="">>selection;
if(selection==1){
int newYear = getYear();
v[i].setYear(newYear);
}
else if(selection==2){
long int newOdo = getNewOdometer();
v[i].setOdo(newOdo);
}
else
cout<<"Invalid selection"<<endl; }="" if(!flag)="" cout<<"car="" make="" not="" found"<<endl;="" void="" removevehicle(){="" int="" selection;="" string="" make;="" bool="" flag="false;" cout<<"enter="" the="" of="" vechicle="" you="" need="" to="" update:="" "<<endl;="" cin="">>make;
for(int i=0;i<vehcount;i++){ if(v[i].getmake()="=" make){="" flag="true;" v[i].setmake("");="" v[i].setmodel("");="" v[i].setyear(0);="" v[i].setodo(0);="" }="" if(!flag)="" cout<<"car="" make="" not="" found"<<endl;="" void="" listvehicles(){="" cout<<"make\tmodel\todo\tyear"<<endl;="" for(int="" i="0;i<vehCount;i++){" if(v[i].getyear()!="0)" cout<<v[i].getmake()<<"\t"<<v[i].getmodel()<<"\t"<<v[i].getodo()<<"\t"<<v[i].getyear()<<endl;="" checktirerotation(){="" int="" selection;="" string="" make;="" bool="" cout<<"enter="" the="" of="" vechicle="" you="" need="" to="" check="" tire="" rotation:="" "<<endl;="" cin="">>make;
for(int i=0;i<vehcount;i++){ if(v[i].getmake()="=" make){="" v[i].checktirerotation();="" }="" void="" oilchange(){="" int="" selection;="" string="" make;="" bool="" flag="false;" cout<<"enter="" the="" make="" of="" vechicle="" you="" need="" to="" check="" oil:="" "<<endl;="" cin="">>make;
for(int i=0;i<vehcount;i++){ if(v[i].getmake()="=" make){="" v[i].checkoil();="" }="" void="" checkcharge(){="" int="" selection;="" string="" make;="" bool="" flag="false;" cout<<"enter="" the="" make="" of="" vechicle="" you="" need="" to="" check="" battery:="" "<<endl;="" cin="">>make;
for(int i=0;i<vehcount;i++){ if(v[i].getmake()="=" make){="" v[i].checkchargerpower();="" }="" int="" main(){="" short="" selection;="" cout<<"chose="" the="" required="" option:\n0.="" quit.\n1.="" list="" inventory.\n2.="" add="" vehicle.\n";="" cout<<"3.="" update="" vehicle\n4.="" remove="" vehicle\n5.="" tire="" rotation\n6.="" oil="" change\n7.="" recharge\n";="" cin="">>selection;
while(selection!=0){
switch(selection){
case 1: listVehicles();
break;
case 2: addVehicle();
break;
case 3: updateVehicle();
break;
case 4: removeVehicle();
break;
case 5: checkTireRotation();
break;
case 6: oilChange();
break;
case 7: checkCharge();
break;
default: cout<<"Invalid selection"<<endl; }="" cout<<"chose="" the="" required="" option"<<endl;="" cin="">>selection;
}
return 0;
}</endl;></vehcount;i++){></vehcount;i++){></vehcount;i++){></vehcount;i++){></endl;></vehcount;i++){></endl;></endl;></endl;></endl;></endl;></endl;></endl;></endl;>