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

14. Parking Ticket Simulator (must be in c++ and must work with visual studios 2

ID: 3750833 • Letter: 1

Question

14. Parking Ticket Simulator (must be in c++ and must work with visual studios 2017, also must show output)

For this assignment you will design a set of classes that work together to simulate a police officer issuing a parking ticket. The classes you should design are: •  
The ParkedCar Class: This class should simulate a parked car. The class’s responsibilities are: –  
To know the car's make, model, color, license number, and the number of minutes that the car has been parked •  
The ParkingMeter Class: This class should simulate a parking meter. The class’s only responsibility is: –  
To know the number of minutes of parking time that has been purchased •  
The ParkingTicket Class: This class should simulate a parking ticket. The class’s responsibilities are: –  
To report the make, model, color, and license number of the illegally parked car
–  
To report the amount of the fine, which is $25 for the first hour or part of an hour that the car is illegally parked, plus $10 for every additional hour or part of an hour that the car is illegally parked
–  
To report the name and badge number of the police officer issuing the ticket •  
The PoliceOfficer Class: This class should simulate a police officer inspecting parked cars. The class’s responsibilities are: –  
To know the police officer’s name and badge number
–  
To examine a ParkedCar object and a ParkingMeter object, and determine whether the car's time has expired
–  
To issue a parking ticket (generate a ParkingTicket object) if the car’s time has expired
Write a program that demonstrates how these classes collaborate.

Explanation / Answer

main.cpp

#include<string>
#include"ParkedCar.h"
#include"ParkingMeter.h"
#include"PoliceOfficer.h"
#include<iostream>
using namespace std;

int main()
{
    ParkedCar car;
    ParkingMeter meter;
  
    string aname, abadge, amake, amodel, alicensenumber, acolor;
    int aminutespurchased, aparkedminutes;
  
    cout << "--------------------------------" << endl;
    cout << " ~Parking Ticket Simulator~" << endl;
    cout << "--------------------------------" << endl;
    cout << endl;
    cout << "Vehicle Information:" << endl;
    cout << "Make: ";
    cin>>amake;
  
    cout << "Model: ";
    cin>>amodel;
  
    cout << "Color: ";
  
    cin>>acolor;
    cout << "License Number: ";
  
    cin>>alicensenumber;
    cout << "Parked Minutes: ";
    cin>> aparkedminutes;
    car.set(amake, amodel, acolor, alicensenumber, aparkedminutes);
    cout << "Minutes Purchased: ";
    cin >> aminutespurchased;
    meter.setparkingmeter(aminutespurchased);
  
    cout << endl;
    cout << "Officer Information:" << endl;
    cout << "Name: ";
    cin>>aname;
    cout << "Badge ID: ";
    cin>>abadge;
    PoliceOfficer officer(aname, abadge,amake,amodel,acolor,alicensenumber,aparkedminutes,aminutespurchased);
    system("cls");
    officer.patrol();
    cout << endl;
  
    return 0;
}

ParkedCar.cpp


#include"ParkedCar.h"

ParkedCar::ParkedCar()
{
    make=" ";
    model = " ";
    color = " ";
    licensenumber = " ";
    parkedminutes = 0;
}
ParkedCar::ParkedCar(string amake, string amodel, string acolor, string alicensenumber, int aparkedminutes)
{
    make = amake;
    model = amodel ;
    color = acolor;
    licensenumber = alicensenumber;
    parkedminutes = aparkedminutes;
}
ParkedCar::~ParkedCar() {}
void ParkedCar::setmake(string amake)
{
    make = amake;
}
void ParkedCar::setmodel(string amodel)
{
    model = amodel;
  
}
void ParkedCar::setcolor(string acolor)
{
    color = acolor;
  
}
void ParkedCar::setlicensenumber(string alicensenumber)
{
    licensenumber = alicensenumber;
  
}
void ParkedCar::setparkedminutes(int aparkedminutes)
{
    parkedminutes = aparkedminutes;
}
void ParkedCar::set(string amake, string amodel, string acolor, string alicensenumber, int aparkedminutes)
{
    make = amake;
    model = amodel;
    color = acolor;
    licensenumber = alicensenumber;
    parkedminutes = aparkedminutes;
}

string ParkedCar::getmake() const
{
    return make;
}
string ParkedCar::getmodel()const
{
    return model;
}
string ParkedCar::getcolor()const
{
    return color;
}
string ParkedCar::getlicensenumber()const
{
    return licensenumber;
}
int ParkedCar::getparkedminutes()const
{
    return parkedminutes;
}
void ParkedCar::parkedcardisplay() const
{
    cout << "Make: " << make << endl;
    cout << "Model: " << model << endl;
    cout << "Color: " << color << endl;
    cout << "License Number: " << licensenumber << endl;
}

ParkedCar.h

#ifndef PARKEDCAR_H
#define PARKEDCAR_H

#include<iostream>
#include<string>
using namespace std;

class ParkedCar
{
private:
    string make;
    string model;
    string color;
    string licensenumber;
    int parkedminutes;
  
public:
    ParkedCar();
    ParkedCar(string, string, string, string, int);
    ~ParkedCar();
    void setmake(string);
    void setmodel(string);
    void setcolor(string);
    void setlicensenumber(string);
    void setparkedminutes(int);
    void set(string, string, string, string, int);
  
    string getmake() const;
    string getmodel()const;
    string getcolor()const;
    string getlicensenumber()const;
    int getparkedminutes()const;
    void parkedcardisplay() const;
};

#endif

ParkingMeter.cpp

#include"ParkingMeter.h"

ParkingMeter::ParkingMeter()
{
    minutespurchased = 0;
}
ParkingMeter::ParkingMeter(int aminutespurchased)
{
    minutespurchased = aminutespurchased;
}
ParkingMeter::~ParkingMeter() {}
void ParkingMeter::setparkingmeter(int aminutespurchased)
{
    minutespurchased = aminutespurchased;
}
int ParkingMeter::getparkingmeter() const
{
    return minutespurchased;
}

ParkingMeter.h

#ifndef PARKINGMETER_H
#define PARKINGMETER_H

#include<iostream>
using namespace std;

class ParkingMeter {
private:
    int minutespurchased;
public:
    ParkingMeter();
    ParkingMeter(int);
    ~ParkingMeter();
    void setparkingmeter(int);
    int getparkingmeter() const;
};
#endif


ParkingTicket.cpp

#include"ParkingTicket.h"
#include"PoliceOfficer.h"
#include <cmath>

ParkingTicket::ParkingTicket()
{
    fine = 0;
}
ParkingTicket::ParkingTicket(string aname, string abadge, string amake, string amodel, string acolor, string alicensenumber, int aparkedminutes, int aminutespurchased)
{
    PC.set(amake, amodel, acolor, alicensenumber, aparkedminutes);
    PM.setparkingmeter(aminutespurchased);
    //PO.setOfficer(aname, abadge);
}

ParkingTicket::ParkingTicket(PoliceOfficer PO)
{
    PC.set(PO.getCar().getmake(),PO.getCar().getmodel(),PO.getCar().getcolor(),PO.getCar().getlicensenumber(),PO.getCar().getparkedminutes());
    PM.setparkingmeter(PO.getMeter().getparkingmeter());
    //PO.setOfficer(PO.getname(),PO.getbadge());
}
ParkingTicket::~ParkingTicket()
{
}
void ParkingTicket::reportCarInfo()
{
    PC.parkedcardisplay();
}
void ParkingTicket::reportfine()
{
  
    int difference = abs(PC.getparkedminutes() - PM.getparkingmeter());
    int hour = 60; //60 mins = 1 hour
  
    if (PC.getparkedminutes() > PM.getparkingmeter()) {
      
        double extra_hours = (double) difference / (double) hour;
      
        if(extra_hours <= 1) {
            fine = 25;
        } else if(extra_hours > 1 ) {
            int h = (int) round(extra_hours);
          
            fine = 25 + (h-1) * 10;
        }
    }
  
    cout << "Fine: $" << getfine() << endl;
}
void ParkingTicket::reportOfficer()
{
    PO.displayofficer();
}
int ParkingTicket::getfine() const
{
    return fine;
}

void ParkingTicket::generateticket()
{
    cout << endl;
    cout << "-----------------------------" << endl;
    cout << " ~ILLEGAL PARKING TICKET~" << endl;
    cout << "-----------------------------" << endl;
    reportCarInfo();
    reportfine();
    //reportOfficer();
    cout << endl;
}

ParkingTicket.h

#ifndef PARKINGTICKET_H
#define PARKINGTICKET_H


#include<iostream>
#include"PoliceOfficer.h"
#include<string>

using namespace std;
class ParkingTicket {
private:
    int fine;
    ParkedCar PC;
    ParkingMeter PM;
    PoliceOfficer PO;
  
public:
    ParkingTicket();
    ParkingTicket(PoliceOfficer PO);
    ParkingTicket(string aname, string abadge, string amake, string amodel, string acolor, string alicensenumber, int aparkedminutes, int aminutespurchased);
    ~ParkingTicket();
    int getfine() const;
    void generateticket();
    void reportCarInfo();
    void reportfine();
    void reportOfficer();
  
};
#endif


PoliceOfficer.cpp

#include"PoliceOfficer.h"
#include"ParkingTicket.h"
#include<iostream>
#include<string>
using namespace std;

PoliceOfficer::PoliceOfficer()
{
  
    badge = " ";
    name = " ";
}
PoliceOfficer::PoliceOfficer(string aname, string abadge, string amake, string amodel, string acolor, string alicensenumber, int aparkedminutes, int aminutespurchased)
{
    PC.set(amake, amodel, acolor, alicensenumber, aparkedminutes);
    PM.setparkingmeter(aminutespurchased);
    setOfficer(aname, abadge);
}
PoliceOfficer::~PoliceOfficer()
{
}

void PoliceOfficer::setname(string aname)
{
    name = aname;
}
void PoliceOfficer::setbadge(string abadge)
{
    badge = abadge;
}
void PoliceOfficer::setOfficer(string aname, string abadge)
{
    badge = abadge;
    name = aname;
}
string PoliceOfficer::getname() const
{
    return name;
}
ParkedCar PoliceOfficer::getCar()
{
    return PC;
}
ParkingMeter PoliceOfficer::getMeter()
{
    return PM;
}
string PoliceOfficer::getbadge() const
{
    return badge;
}
void PoliceOfficer::displayofficer() const
{
    cout << "Name: " << getname() << endl;
    cout << "Badge ID: " << getbadge() << endl;
}
void PoliceOfficer::patrol()
{
  
    if (PC.getparkedminutes() > PM.getparkingmeter()) /*parked minutes >= minutes purchased*/
    {
        ParkingTicket PT(*this);
        PT.generateticket();
        displayofficer();
    }
    else
    {
        cout << "No crime has been commited." << endl;
    }
}

PoliceOfficer.h

#ifndef POLICEOFFICER_H
#define POLICEOFFICER_H


#include<iostream>
#include"ParkedCar.h"
#include"ParkingMeter.h"
#include<string>
using namespace std;

class PoliceOfficer {
  
private:
    string name;
    string badge;
    ParkedCar PC;
    ParkingMeter PM;
  
  
  
public:
    ParkedCar getCar();
    ParkingMeter getMeter();
    PoliceOfficer();
    PoliceOfficer(string aname, string abadge, string amake, string amodel, string acolor, string alicensenumber, int aparkedminutes, int aminutespurchased);
    ~PoliceOfficer();
    void setname(string);
    void setbadge(string);
    void setOfficer(string, string);
    string getname() const;
    string getbadge() const;
  
    void patrol();
    void displayofficer() const;
};
#endif

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote