c++ Parking Ticket Simulator For this assignment you will design a set of classe
ID: 3837287 • Letter: C
Question
c++
Parking Ticket Simulator
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.
Create an header and Implementation files for each class
Explanation / Answer
ParkedCar.h:
#pragma once
#include <iostream>
#include <cstring>
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;
};
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;
}
ParkingMeter.h:
#pragma once
//#include"ParkedCar.h"
//#include"ParkingTicket.h"
//#include"PoliceOfficer.h"
#include <iostream>
using namespace std;
class ParkingMeter {
private:
int minutespurchased;
public:
ParkingMeter();
ParkingMeter(int);
~ParkingMeter();
void setparkingmeter(int);
int getparkingmeter() const;
};
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;
}
ParkingTicket.h:
#pragma once
#include <iostream>
#include"ParkedCar.h"
#include"ParkingMeter.h"
#include"PoliceOfficer.h"
#include <iostream>
using namespace std;
class ParkingTicket {
private:
int fine;
ParkingMeter PM;
ParkedCar PC;
PoliceOfficer PO;
public:
ParkingTicket();
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();
};
ParkingTicket.cpp:
#include"ParkingTicket.h"
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()
{
}
void ParkingTicket::reportCarInfo()
{
PC.parkedcardisplay();
}
void ParkingTicket::reportfine()
{
int illegaltime = PC.getparkedminutes() - PM.getparkingmeter();
if (illegaltime> 0 && illegaltime <= 60) {
fine = 25;
}
else {
if (illegaltime > 60)
{
int temp = illegaltime;
fine = 25;
while (temp > 0 || temp > 60)
{
fine += 10;
temp -= 60;
}
}
}
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;
}
PoliceOfficer.h:
#pragma once
#include <iostream>
#include"ParkingTicket.h"
#include"ParkingMeter.h"
#include"ParkedCar.h"
#include <cstdlib>
using namespace std;
class PoliceOfficer {
private:
string name;
string badge;
ParkingMeter PM;
ParkedCar PC;
public:
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;
};
PoliceOfficer.cpp:
#include"ParkedCar.h"
#include"ParkingMeter.h"
#include"ParkingTicket.h"
#include"PoliceOfficer.h"
#include <iostream>
#include <cstring>
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;
}
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;
PT.generateticket();
}
else
{
cout << "No crime has been commited." << endl;
}
}
MainClass.cpp
#include <iostream>
#include"ParkingTicket.cpp"
#include"ParkingMeter.cpp"
#include"ParkedCar.cpp"
#include"PoliceOfficer.cpp"
//#include
using namespace std;
int main()
{
int option;
PoliceOfficer officer;
ParkedCar car;
ParkingMeter meter;
do {
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: ";
getline(cin, amake);
cout << "Model: ";
getline(cin, amodel);
cout << "Color: ";
getline(cin, acolor);
cout << "License Number: ";
getline(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: ";
getline(cin, aname);
cout << "Badge ID: ";
getline(cin, abadge);
officer.setOfficer(aname, abadge);
system("cls");
officer.patrol();
cout << endl;
cout << "Enter 0 to exit or any number to restart: ";
cin >> option;
} while (option != 0);
system("pause");
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.