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

#ifndef functions_h #define functions_h #include <string> #include <fstream> #in

ID: 3574037 • Letter: #

Question

#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;

}

cin.ignore();

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

getline(cin, VIN);

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

getline(cin, make);

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

getline(cin, model);

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

getline(cin, Year);

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

getline(cin, Price);

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

getline(cin, dealerName);

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

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

comments pls

Explanation / Answer

Program :

#ifndef functions_h // Header files

#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]; // print the cars

}

}

void addVehicle(vector<Vehicle> &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); // Calling dunction

  

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

istringstream iss(sYear), iss1(sPrice);

iss >> year;

iss1 >> price;

Vehicle car(VIN, make, model, year, price); // Calling function Vehicle car send parameters

// Decalaration of variables

car.DealerPtr = new Dealer();

car.DealerPtr->setName(dealerName);

car.DealerPtr->setAddress(dealerAddress);

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()){

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;   

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"); // 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))

{

stringstream iss(sYear), iss1(sPrice); // calling function

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){ // If file not found

cout << "Error in creating the file";

exit(1);

}

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

{

outputfile << "Vehicle: " << i + 1 <<endl; // write car id

outputfile<< cars[i]; // write cars

cout << ".. ";

}

  

cout << "Writing of File completed ";

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

}