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