Ok guys I plan to take an advanced c++ class this summer and I got some assignments from a friend of mine to try before I take the class! I got this one assignment and I really need help on it. I will post my current code that I have and what I need to do and if someone could please help me I would greatly appreciate it!
TASK:
1. Create a car class to hold information
Attributes:
make (you can also think of this as the Manufacturer)
model
color
year
mileage
(Note: All attributes should be private.)
behaviors:
1) Create mutator (Set) and accessor (Get) functions for all attributes of this class.
2) Create a default constructor that initializes all of the attributes to default values (blanks in the case of strings or 0 in the case of numbers.)
3) Make sure to have validation to ensure that the mileage can’t be set less than 0.
4) Create a constructor that takes the make, model, year, color, and mileage values and sets them for a newly created car.
5) Create another function called car_details that prints all of the attributes of the car in an attractive format.
(Example on an output line of a cars details:
“The current car is a 2008 Red Ford Mustang with 5000 miles.”)
2. Create a structure called ListNode that can hold an object of the car class as its value.
3. Create a Linked List to hold the following cars in inventory. Then use a loop to print all of the information about them for the user.
Make Model Color Year Mileage
1) Porsche 911 Silver 2005 45000
2) Ford Mustang Red 2007 12600
3) Voltzwagon Jetta Black 2006 20218
4) Jeep Cherokee White 2000 98322
5) Nisson Sentra red 2002 76046
6) Voltzwagon Beetle Black 2005 28031
4. Change the Jeep Cherokee’s year to be 2001. Change the Sentra’s mileage to be 80000. Use the loop to print out the information for the user.
5. You need to be able to see the average miles for all cars in inventory. Write the code to find the average miles and display it for the user by adding up the miles for all of the cars in inventory and dividing by the size of the Linked List holding inventory. Make sure to test if the Linked List holding the inventory has nothing in it yet to prevent a divide by zero problem!
6. Add the following cars to inventory. Then use a loop to print all of the information about them for the user.
Make Model Color Year Mileage
1) Chevrolet Corvette Black 2003 11903
6) Ford Explorer Grey 2004 73922
7) Honda Civic White 2007 12045
7. Delete the following car out of inventory. Then use a loop to print all of the information about them for the user.
Voltzwagon Jetta Black 2006 20218
(Hint: This is not the last car! You will have to delete this node and set the previous node’s pointer to reference the next object in the list.)
Header File
Code:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <functional>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <sstream>
using namespace std;
//Car Class
class Car
{
protected:
string make; //make
string model; // model
string color; // color
int year; // year
int mileage; // miles on car
public:
//Constructor that will set information for a new car
void New_vehicle (string a, string b, string c, int d, int e)
{make = a; model = b; color = c; year = d; mileage = e;}
Car(); //Default constructor
Car(string, string, string, int, int);
//mutator and accessor functions
void setMake(string);
void setModel(string);
void setColor(string);
void setYear(int);
void setMileage(int);
string getMake();
string getModel();
string getColor();
int getYear();
int getMileage();
//Check mileage to see if valid
void valid_mileage(int);
void car_details();
string string_car_details();
};
//Sets to default values
Car::Car() {
make = " ";
model = " ";
color = " ";
year = 0;
mileage = 0;
}
// My Vehicle set up(Make, model, color, year, mileage)
Car::Car(string make, string model, string color, int year, int mileage) {
this->make = make;
this->model = model;
this->color = color;
this->year = year;
valid_mileage(mileage);
}
void Car::setMake(string make) {
Car::make = make;
}
void Car::setModel(string model) {
Car::model = model;
}
void Car::setColor(string color) {
Car::color = color;
}
void Car::setYear(int year) {
Car::year = year;
}
void Car::setMileage(int mileage) {
valid_mileage(mileage);
}
string Car::getMake() {
return make;
}
string Car::getModel() {
return model;
}
string Car::getColor() {
return color;
}
int Car::getYear() {
return year;
}
int Car::getMileage() {
return mileage;
}
void Car::valid_mileage(int mileage) {
if (mileage>=0)
Car::mileage=mileage;
else {
Car::mileage=0;
cout << "WARNING! You have entered invalid mileage!\n";
}
}
void Car::car_details() {
cout << "The current car is a " << year << ' ' << color << ' '
<< make << ' ' << model << " with " << mileage << " miles.\n\n";
}
string Car::string_car_details() {
stringstream buf;
buf << "The current car is a " << year << ' ' << color << ' '
<< make << ' ' << model << " with " << mileage << " miles.\n\n";
return buf.str();
}
struct ListNode
{
Car Car;
ListNode *next;
};
struct CarList
{
ListNode * root;
CarList() : root(0) {};
void insert(Car);
void del(Car);
void findCar(Car);
void printList();
void car_details();
};
//void CarList::car_details();
//{
//ListNode * current = firstNodeInList;
// while(current != NULL)
//cout << current->Car;
//}
CPP
Code:
#include "CarClass.h"
#include <iostream>
using namespace std;
int main()
{
CarList inventory;
Car carObject;
bool addAnotherCar = true;
ListNode *start_ptr = NULL;
for (int i = 0; i<6; i++) {
cout << "Please enter the make of the vehicle: ";
&Car::getMake;
cout << "Please enter the model of the vehicle: ";
&Car::getModel;
cout << "Please enter the color of the vehicle: ";
&Car::getColor;
cout << "Please enter the year of the vehicle: ";
&Car::getYear;
cout << "Please enter the mileage of the vehicle: ";
&Car::getMileage;
inventory.insert(carObject);
//Information needs to be changed
inventory.car_details();
//Add more cars
//Information about a car to remove
//delete desidred car
inventory.del(carObject);
//Print information
inventory.car_details();
}
return 0;
}
And guys if I am doing this in the entirely wrong way and their is a much easier way then please tell me so that I will know! I want to be ahead of the game before this class starts this summer!