Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

someone help me with comments. not good at english thanks, thumb up 100% #includ

ID: 3573988 • Letter: S

Question

someone help me with comments. not good at english thanks, thumb up 100%

#include "vehicle.h"

#include "functions.h"

#include <iostream>

using namespace std;

int main(){

vector<Vehicle> cars;

while(1){

int ch;

cout << "Please enter the menu "

"1.Display Inventory "

"2.Add a vehicle "

"3.Update a vehicle "

"4.Delete a vehicle "

"5.Sort inventory by VIN "

"6.Search inventory by Model "

"7.Read inventory from file "

"8.Write inventory to file and exit ";

cin >> ch;

switch(ch)

{

case 1:

if(cars.size() == 0)

{

cout << "Invetory is empty" << endl;

}else

{

displayInventory(cars);

}

break;

case 2:

addVehicle(cars);

break;

case 3:

if(cars.size() == 0)

{

cout << "Invetory is empty" << endl;

}else

{

cout << "Enter the index to update" << endl;

updateVehicle(cars);

break;

}

case 4:

if(cars.size() == 0)

{

cout << "Invetory is empty" << endl;

}else

{

cout << "Enter index to delete a vehicle" << endl;

deleteVehicle(cars);

break;

}

case 5:

if(cars.size() == 0)

{

cout << "Invetory is empty" << endl;

}else

{

sortByVIN(cars);

break;

}

  

case 6:

  

searchByModel(cars);

break;

case 7:

  

readInventory(cars);

break;

case 8:

if(cars.size() == 0){

cout << "Inventory is empty to write ";

break;

}

writeInventoryToFile(cars);

return 0;

default:

cout << "please eneter 1-8 to use this program ";

  

}

}

return 0;

}

#include "vehicle.h"

void Dealer::setName(string name){

this->dealerName = name;

}

void Dealer::setAddress(string address){

this->dealerAddress = address;

}

string Dealer::getName(){

return this->dealerName;

}

string Dealer::getAddress(){

return this->dealerAddress;

}

string Vehicle::getVIN(){

return VIN;

}

string Vehicle::getMake(){

return make;

}

string Vehicle::getModel(){

return model;

}

int Vehicle::getYear(){

return year;

}

double Vehicle::getPrice(){

return price;

}

void Vehicle::setVIN(string VIN){

this->VIN = VIN;

}

void Vehicle::setMake(string make){

this->make = make;

}

void Vehicle::setModel(string model){

this->model = model;

}

void Vehicle::setYear(int year){

this->year = year;

}

void Vehicle::setPrice(double price){

this->price = price;

}

ostream & operator << (ostream& out, Vehicle car1){

out << "VIN: "<< car1.getVIN()<< " " << "Make: " << car1.getMake() << " "

<< "Model: " << car1.getModel() << " " << "Year: "<< car1.getYear() << " " << "Price: $" << car1.getPrice() << " "

<< "Dealer Name: "<< car1.DealerPtr->getName() <<" " << "Dealer Address: " << car1.DealerPtr->getAddress() << endl;

  

return out;

}

#ifndef functions_h

#define functions_h

#include <string>

#include <fstream>

#include <ostream>

#include <algorithm>

#include <vector>

#include <sstream>

#include <iostream>

using namespace std;

void displayInventory(vector<Vehicle> cars)

{

for(int i = 0;i < (unsigned)cars.size(); ++i)

{

cout << "Vehicle: " << i + 1 << endl;

cout << cars[i];

}

}

void addVehicle(vector<Vehicle> &cars)

{

string VIN, make, model, dealerName, dealerAddress, sPrice, sYear;

int year;

double price;

cout << "Please enter VIN, make, model, year, price, dealerName, dealearAddress(hit enter after each entered" << endl;

getline(cin,VIN);

  

while(getline(cin, VIN) && getline(cin, make) && getline(cin, model)

&& getline(cin, sYear) && getline(cin, sPrice)

&& getline(cin, dealerName) && getline(cin, dealerAddress)){

  

istringstream iss(sYear), iss1(sPrice);

iss >> year;

iss1 >> price;

Vehicle car(VIN, make, model, year, price);

  

  

car.DealerPtr = new Dealer();

car.DealerPtr->setName(dealerName);

car.DealerPtr->setAddress(dealerAddress);

cars.push_back(car);

cout << "Enter -1 to stop adding vehicle" << endl;

int d;

cin >> d;

if(d == -1)break;

}

}

void updateVehicle(vector<Vehicle> &cars)

{

int index;

cin >> index;

--index;

string VIN, make, model, dealerName, dealerAddress, Price, Year;

int year;

double price;

if(index >= cars.size()){

cout << "no vehicle found ";

return;

}

else{

getline(cin, VIN);

getline(cin, make);

getline(cin, model);

getline(cin, Year);

getline(cin, Price);

getline(cin, dealerName);

getline(cin, dealerAddress);

Vehicle car(VIN, make, model, year, price);

car.DealerPtr = new Dealer();

car.DealerPtr->setName(dealerName);

car.DealerPtr->setAddress(dealerAddress);

cars[index] = car;

cars.push_back(car);

}

}

void deleteVehicle(vector<Vehicle> &cars)

{

int index;

cin >> index;

--index;

  

  

if(index >= cars.size()){

cout << "no vehicle found ";

return;

}

  

cars.erase(cars.begin() + index);

}

bool ValueCmp(Vehicle & a, Vehicle & b)

{

return a.getVIN() > b.getVIN();

}

void sortByVIN(vector<Vehicle> &cars)

{

if(cars.size() == 0){

cout << "Inventory is empty so can't be sorted" << endl;

return;

}

sort(cars.begin(), cars.end(), ValueCmp);

cout<<"you have successfully sorted inventory"<<endl;

}

void searchByModel(vector<Vehicle> &cars)

{

  

bool check=false;

  

string model;

  

cout<<"Enter model: "<<endl;

  

cin>>model;

  

for(int i=0;i<cars.size();i++)

  

{

  

if(model==cars[i].getModel())

  

{

  

cout<<"Vehicle found"<<endl;

  

cout<<"VIN:"<< cars[i].getVIN()<<endl;

  

cout<<"Make: "<<cars[i].getMake()<<endl;

  

cout<<"Model: "<<cars[i].getModel()<<endl;

  

cout<<"Years: "<<cars[i].getYear()<<endl;

  

cout<<"Price: "<<cars[i].getPrice()<<endl;

  

cout<<"Dealer Name: "<<cars[i].DealerPtr->getName()<<endl;

  

cout<<"Dealer Address: "<<cars[i].DealerPtr->getAddress()<<endl;

  

check=true;

  

break;

  

}

}

}

void readInventory(vector<Vehicle> &cars)

{

ifstream filein;

filein.open("inventory.txt");

  

if(filein.fail())

{

cout << "Error in reading the file";

}

  

string VIN, make, model, dealerName, dealerAddress, sPrice, sYear;

int year;

double price;

  

while(getline(filein, VIN) && getline(filein, make) && getline(filein, model)

&& getline(filein, sYear) && getline(filein, sPrice)

&& getline(filein, dealerName) && getline(filein, dealerAddress))

{

stringstream iss(sYear), iss1(sPrice);

iss >> year;

iss1 >> price;

Vehicle car(VIN, make, model, year, price);

car.DealerPtr = new Dealer();

car.DealerPtr->setName(dealerName);

car.DealerPtr->setAddress(dealerAddress);

cars.push_back(car);

  

}

filein.close();

cout << "File Reading completed" << endl;

}

void writeInventoryToFile(vector<Vehicle> &cars)

{

ofstream outputfile;

outputfile.open("output.txt");

if(!outputfile){

cout << "Error in creating the file";

exit(1);

}

for (int i = 0; i < cars.size(); ++i)

{

outputfile << "Vehicle: " << i + 1 <<endl;

outputfile<< cars[i];

cout << ".. ";

}

  

cout << "Writing of File completed ";

outputfile.close();

  

}

#endif

#ifndef vehicle_h

#define vehicle_h

#include <string>

#include <fstream>

#include <ostream>

using namespace std;

class Dealer{

private:

string dealerName, dealerAddress;

public:

Dealer(){dealerName = "";dealerAddress = "";}

Dealer(string iName){dealerName = iName;dealerAddress = "";}

void setName(string);

void setAddress(string);

string getName();

string getAddress();

};

class Vehicle{

private:

string VIN, make, model;

int year;

double price;

public:

Dealer * DealerPtr;

  

Vehicle(){

VIN = "";

make = "";

model = "";

year = 0;

price = 0.0;

}

  

Vehicle(string iVIN, string iMake, string iModel, int iYear, double iPrice){

VIN = iVIN;

make = iMake;

model = iModel;

year = iYear;

price = iPrice;

}

string getVIN();

string getMake();

string getModel();

int getYear();

double getPrice();

  

void setVIN(string);

void setMake(string);

void setModel(string);

void setYear(int);

void setPrice(double);

  

friend ostream & operator << (ostream &, Vehicle );

};

#endif

Explanation / Answer

Program :

// Header files

#include "vehicle.h"

#include "functions.h"

#include <iostream>

using namespace std;

// main function

int main(){

vector<Vehicle> cars; // vector declaration

while(1){ // This condition always true

int ch; // varible declaration

cout << "Please enter the menu "

"1.Display Inventory "

"2.Add a vehicle "

"3.Update a vehicle "

"4.Delete a vehicle "

"5.Sort inventory by VIN "

"6.Search inventory by Model "

"7.Read inventory from file "

"8.Write inventory to file and exit ";

cin >> ch; // Enter choice

switch(ch) // switch case

{

case 1:

if(cars.size() == 0) // No Inventory

{

cout << "Invetory is empty" << endl;

}else

{

displayInventory(cars); // Declaring function to display inventory

}

break;

case 2:

addVehicle(cars); // Function declaration for add cars

break;

case 3:

if(cars.size() == 0)   // Function declaration if no cars

{

cout << "Invetory is empty" << endl;

}else

{

cout << "Enter the index to update" << endl;   

updateVehicle(cars); // Declaration of update vehicle

break;

}

case 4:

if(cars.size() == 0)   // Function declaration if no cars

{

cout << "Invetory is empty" << endl;

}else

{

cout << "Enter index to delete a vehicle" << endl;

deleteVehicle(cars); // Function declaration delete vehicle

break;

}

case 5:

if(cars.size() == 0)      // Function declaration if no cars

{

cout << "Invetory is empty" << endl;

}else

{

sortByVIN(cars);     // Function declaration to sort VIN

break;

}

case 6:

searchByModel(cars); // Function declaration search by model

break;

case 7:

readInventory(cars);   // Function declaration read inventory

break;

case 8:

if(cars.size() == 0){ // Function declaration if no cars

cout << "Inventory is empty to write ";

break;

}

writeInventoryToFile(cars);   // Function declaration to write inventory to file

return 0;

default:

cout << "please eneter 1-8 to use this program ";   

}

}

return 0;

}

#include "vehicle.h"

void Dealer::setName(string name){ // Use inherirance concept to set name

this->dealerName = name; // Assign dealer name

}

void Dealer::setAddress(string address){ // Use inherirance concept to set address

this->dealerAddress = address; // assign dealer address

}

string Dealer::getName(){   // Use inherirance concept get name

return this->dealerName; // return dealer name

}

string Dealer::getAddress(){ // Use inherirance concept get delar address

return this->dealerAddress; // return dealer address

}

string Vehicle::getVIN(){ // Use inherirance concept to get VIN

return VIN; // return VIN

}

string Vehicle::getMake(){ // Use inherirance concept to get Make

return make; // return make

}

string Vehicle::getModel(){ // Use inherirance concept get model

return model; // return model

}

int Vehicle::getYear(){   // Use inherirance concept get year

return year; // return year

}

double Vehicle::getPrice(){ // Use inherirance concept get price

return price; // return price

}

void Vehicle::setVIN(string VIN){ // Use inherirance concept set VIN

this->VIN = VIN; // Add VIN

}

void Vehicle::setMake(string make){ // Use inherirance concept set making

this->make = make; // Add make

}

void Vehicle::setModel(string model){   // Use inherirance concept set model

this->model = model; // add model

}

void Vehicle::setYear(int year){ // Use inherirance concept set year

this->year = year; // add year

}

void Vehicle::setPrice(double price){ // Use inherirance concept set price

this->price = price; // set price

}

ostream & operator << (ostream& out, Vehicle car1){ // Display the details

out << "VIN: "<< car1.getVIN()<< " " << "Make: " << car1.getMake() << " "

<< "Model: " << car1.getModel() << " " << "Year: "<< car1.getYear() << " " << "Price: $" << car1.getPrice() << " "

<< "Dealer Name: "<< car1.DealerPtr->getName() <<" " << "Dealer Address: " << car1.DealerPtr->getAddress() << endl;

  

return out;

}

#ifndef functions_h

#define functions_h

#include <string>

#include <fstream>

#include <ostream>

#include <algorithm>

#include <vector>

#include <sstream>

#include <iostream>

using namespace std;

void displayInventory(vector<Vehicle> cars)   // Function defnition

{

for(int i = 0;i < (unsigned)cars.size(); ++i)   // Loop runs from 0 number of cars

{

cout << "Vehicle: " << i + 1 << endl;   // Print vehicle number

cout << cars[i];

}

}

void addVehicle(vector<Vehicle> &cars) // Function defnition to add cars

{

string VIN, make, model, dealerName, dealerAddress, sPrice, sYear;

// Declaration variables in string

int year; // Declare year

double price; // Declare price

cout << "Please enter VIN, make, model, year, price, dealerName, dealearAddress(hit enter after each entered" << endl;

getline(cin,VIN); // get VIN

  

while(getline(cin, VIN) && getline(cin, make) && getline(cin, model)

&& getline(cin, sYear) && getline(cin, sPrice)

&& getline(cin, dealerName) && getline(cin, dealerAddress)){

   // while statement using and operation every condition satisfies then run succeding steps

car.DealerPtr = new Dealer();

car.DealerPtr->setName(dealerName); // set name of delar

car.DealerPtr->setAddress(dealerAddress);   // set address of Dealer

cars.push_back(car);   // push operation into the cars

cout << "Enter -1 to stop adding vehicle" << endl;

int d; // Variable declaration to stop the process

cin >> d;

if(d == -1)break; // if user enter -1 then exit from the loop

}

}

void updateVehicle(vector<Vehicle> &cars) // Function defnition to update the details

{

int index;

cin >> index; // Accept the index

--index;

// Variable declaration

string VIN, make, model, dealerName, dealerAddress, Price, Year;

int year;

double price;

if(index > cars.size()){ // Check the index is graeter than size of car

cout << "no vehicle found ";

return;

}

cin.ignore();

cout << "Please Enter new VIN: " << endl;

getline(cin, VIN); // Accept VIN

cout << "Please Enter new make: " << endl;

getline(cin, make); // Accept make

cout << "Please Enter new model: " << endl;

getline(cin, model); // Accept model

cout << "Please Enter new year: " << endl;

getline(cin, Year); // Accept Year

cout << "Please Enter new price: " << endl;

getline(cin, Price); // Accept price

cout << "Please Enter new dealername: " << endl;

getline(cin, dealerName); // Accept Delar name

cout << "Please Enter new dealeraddress: " << endl;

getline(cin, dealerAddress); // Accept Delar address   

Vehicle car(VIN, make, model, year, price); // Function declaration

// Declaration variables to assign values

car.DealerPtr = new Dealer();

car.DealerPtr->setName(dealerName);

car.DealerPtr->setAddress(dealerAddress);

cars[index] = car; // Assign car value

cars.push_back(car); // Perform push operation

}

void deleteVehicle(vector<Vehicle> &cars) // Function defnition

{

int index;

cin >> index; // Accept index   

--index;   

if(index >= cars.size()){ // index is more than the cars

cout << "no vehicle found ";

return;

}

  

cars.erase(cars.begin() + index); // erase the cars

}

bool ValueCmp(Vehicle & a, Vehicle & b) // call by reference

{

return a.getVIN() > b.getVIN(); // return VIN

}

void sortByVIN(vector<Vehicle> &cars) // Function defnition

{

if(cars.size() == 0){ // car size is zero

cout << "Inventory is empty so can't be sorted" << endl;

return;

}

sort(cars.begin(), cars.end(), ValueCmp); // calling to sort

cout<<"you have successfully sorted inventory"<<endl;

}

void searchByModel(vector<Vehicle> &cars) // perform searching by consider the model

{

// variable declaration

bool check=false;

string model;

cout<<"Enter model: "<<endl;

cin>>model; // Accept model

for(int i=0;i<cars.size();i++)

{

if(model==cars[i].getModel()) // check model and car model same   

{

cout<<"Vehicle found"<<endl;   

cout<<"VIN:"<< cars[i].getVIN()<<endl;

cout<<"Make: "<<cars[i].getMake()<<endl; // print car manufacturing

cout<<"Model: "<<cars[i].getModel()<<endl; // print car model

cout<<"Years: "<<cars[i].getYear()<<endl; // print car year

cout<<"Price: "<<cars[i].getPrice()<<endl;   // print car price

cout<<"Dealer Name: "<<cars[i].DealerPtr->getName()<<endl; // print dealer name

  

cout<<"Dealer Address: "<<cars[i].DealerPtr->getAddress()<<endl; // print dealer address

  

check=true; // assign check as true

  

break;

  

}

}

}

void readInventory(vector<Vehicle> &cars)

{

ifstream filein;

filein.open("inventory.txt"); // Open file

   // file operation

if(filein.fail()) // if unable to read the file

{

cout << "Error in reading the file";

}

// Decalaration

string VIN, make, model, dealerName, dealerAddress, sPrice, sYear;

int year;

double price;   

while(getline(filein, VIN) && getline(filein, make) && getline(filein, model)

&& getline(filein, sYear) && getline(filein, sPrice)

&& getline(filein, dealerName) && getline(filein, dealerAddress))

// check the file which contains corrosponding attribetes

{

stringstream iss(sYear), iss1(sPrice);

iss >> year;

iss1 >> price;

Vehicle car(VIN, make, model, year, price); Functiondeclaration

car.DealerPtr = new Dealer();

car.DealerPtr->setName(dealerName); // set dealer name

car.DealerPtr->setAddress(dealerAddress); // set dealer address

cars.push_back(car); // perform push operation into the car

}

filein.close(); // close the file

cout << "File Reading completed" << endl;

}

void writeInventoryToFile(vector<Vehicle> &cars) // Perform write into the file about inventory

{

ofstream outputfile;

outputfile.open("output.txt"); // open the file output.txt

if(!outputfile){ // If the file does not exist

cout << "Error in creating the file";

exit(1); // Exit from the program

}

for (int i = 0; i < cars.size(); ++i) // Loop runs for entire car

{

outputfile << "Vehicle: " << i + 1 <<endl; // output file vehicle numbers

outputfile<< cars[i]; // output file cars

cout << ".. ";

}

cout << "Writing of File completed ";

outputfile.close(); // close the output file

}

#endif

#ifndef vehicle_h

#define vehicle_h

#include <string>

#include <fstream>

#include <ostream>

using namespace std;

class Dealer{

private:

// Declaration variables

string dealerName, dealerAddress;

public:

// Declaration of members of the function

Dealer(){dealerName = "";dealerAddress = "";}

Dealer(string iName){dealerName = iName;dealerAddress = "";}

void setName(string);

void setAddress(string);

string getName();

string getAddress();

};

class Vehicle{

private:

// Declararaion of variables

string VIN, make, model;

int year;

double price;

public:

Dealer * DealerPtr; // Dealer pointer declaration

Vehicle(){

VIN = "";

make = "";

model = "";

year = 0;

price = 0.0;

}

Vehicle(string iVIN, string iMake, string iModel, int iYear, double iPrice){ // Function Defnition

// Assign values

VIN = iVIN;

make = iMake;

model = iModel;

year = iYear;

price = iPrice;

}

// Calling functions

string getVIN();

string getMake();

string getModel();

int getYear();

double getPrice();

void setVIN(string); // set VIN of car

void setMake(string); // set making of car   

void setModel(string); // set model of car  

void setYear(int);   // set year of car

void setPrice(double); // set price of car

friend ostream & operator << (ostream &, Vehicle );

};