#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
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.