Project 2
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;>
On running:

We can select the required option. First we add a new vehicle.

It asked for type-GAS/DIESEL/ELECTRIC and checks if entered type is correct
Then it asks for make, model, year and odometer reading.
Now we add one more vehicle and then list all vehicles

On selecting 1, all cars are listed.
Now we use option 3 to update a vehicle and then list all vehicles

It asks for the make of the vehicle to be updated and then update the year to 2005.
Now we can remove the vehicle with make "test2".

test2 has been removed
Checking tire rotation and oil:

Similarly we can check battery. On entering 0, the program quits:
