Starting out with C++: From Control Structures through Objects (7th edition; Bri
ID: 3689500 • Letter: S
Question
Starting out with C++: From Control Structures through Objects (7th edition; Brief Edition) by Tony Gaddis (isbn: 978-0132772891, pub.: Pearson
C++ Programming:
Parking Ticket Simulator For this assignment you will design a set of classes that work together to simulate a police of cer 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 ParkingTicke 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 ne, which is $25 for the rst 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 of cer 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.
Turn in the following files:
a7main.cpp program
compile and run screenshots
design document
ParkedCar.h
ParkingMeter.h
ParkingTicket.h
PoliceOfficer.h
Explanation / Answer
#include<iostream>
#include<string>
using namespace std;
int m=0, min, k[10], c;
class parkedcar
{
string make;
int model;
string color;
string licnumber;
int minutesparked;
public:
parkedcar()
{
make=" ";
model=0;
licnumber=" ";
color=" ";
minutesparked=0;
}
void setmake(string mk)
{
make=mk;
}
void setmodel(int ml)
{
model=ml;
}
void setcolor(string c)
{
color=c;
}
void setlicnumber(string l)
{
licnumber=l;
}
void setminutesparked(int mnp)
{
minutesparked=mnp;
}
string getmake() const
{
return (make);
}
int getmodel() const
{
return (model);
}
string getcolor() const
{
return (color);
}
string getlicnumber() const
{
return (licnumber);
}
int getminutesparked() const
{
return (minutesparked);
}
void parkedcar:rint()
{
cout<<"Car Make :"<<getmake()<<endl;
cout<<"Car Model :"<<getmodel()<<endl;
cout<<"Car License Number :"<<getlicnumber()<<endl;
cout<<"Car Color :"<<getcolor()<<endl;
}
void print();
};
Parkingtickett.h
class parkingticket: public parkedcar
{
int fine;
int minutes;
void calfine();
public:
void showfine();
void getticket (int min)
{
minutes=min;
calfine();
cout<<endl;
}
int getfine() const
{
return(fine);
}
};
void parkingticket::calfine()
{
if(minutes/60<=0)
{
fine = 45;
}
else
{
int mn;
mn=minutes - 60;
fine = 45 + 30 + 30*(mn/60);
}
}
void parkingticket::showfine()
{
cout<<"Unauthorized parking"<<endl;
cout<<" Time violation "<<minutes/60<<" hours & "<<minutes%60<<" minutes "<<endl;
cout<<" Fine : Rs. "<<getfine()<<endl;
}
parkingticket tck[10];
Parking meter.h
class parkingmeter
{
int minpurchased;
public:
parkingmeter()
{
minpurchased=0;
}
void setminpurchased(int m)
{
minpurchased=m;
}
int getminpurchased() const
{
return(minpurchased);
}
void print()
{
cout<<"Minutes purchased are"<<getminpurchased();
}
};
Policeofficer.h
class policeofficer
{
string name;
string badgenumber;
parkingticket *ticket;
public:
policeofficer()
{
name=" ";
badgenumber=" ";
ticket = NULL;
}
void setname(string n)
{
name=n;
}
void setbadgenumber(string b)
{
badgenumber=b;
}
string getname() const
{
return(name);
}
string getbadgenumber() const
{
return(badgenumber);
}
parkingticket* patrol(parkingticket pc1, parkingmeter pc2)
{
if ( pc1.getminutesparked() < pc2.getminpurchased() ||pc1.getminutesparked() == pc2.getminpurchased() )
{
return NULL;
}
else
{
tck[m].getticket(pc1.getminutesparked() - pc2.getminpurchased());
cout<<"--------"<<endl;
tck[m].showfine();
ticket=&tck[m];
return(ticket);
}
}
void print()
{
cout<<"Name: "<<getname()<<endl;
cout<<"Badge Number: "<<getbadgenumber()<<endl;
}
};
void intro()
{
cout<<"******"<<endl;
cout<<"welcome to parking ticket simulator"<<endl;
cout<<"******"<<endl;
}
void choice()
{
cin>>c;
if(c==0)
{
m++;
}
else if(c==1)
{
}
else
{
cout<<"Invalid Entry, try again :"<<endl;
choice();
}
}
int main()
{
int i=0, y;
intro();
cout<<"parking rates ::"<<endl;
cout<<"Parking rate is Rs.xx for xx minutes"<<endl;
cout<<endl<<endl;
cout<<"FINE RATES ::"<<endl;
cout<<"In case number of minutes car has been parked exceeds the number of minutes purchased, then a fine is applied."<<endl;
cout<<"Rs xx for first hour or part of an hour that the car is illegally parked and Rs xx for every additional hour or part of an hour that the car is illegally parked."<<endl;
cout<<"__________________"<<endl;
policeofficer officer;
string pname, pbadge;
cout<<"OFFICER'S INFORMATION ::"<<endl;
cout<<"Name: ";
cin>>pname;
cout<<"Badge Number: ";
cin>>pbadge;
officer.setname(pname);
officer.setbadgenumber(pbadge);
parkingmeter meter[10];
parkingticket* ticket = NULL;
do
{
intro();
cout<<"PARKED CAR'S INFORMATION ::"<<endl;
string mk;
cout<<"Make :";
cin>>mk;
tck[m].setmake(mk);
int mod;
cout<<"Model :";
cin>>mod;
tck[m].setmodel(mod);
string lic;
cout<<"License number :";
cin>>lic;
y=0;
while(y<=m)
{
if (y!=m)
{
if (lic == tck[y].getlicnumber())
{
cout<<"-----------"<<endl;
cout<<"Car with this License Number already exists"<<endl;
tck[y].print();
cout<<"--------"<<endl;
cout<<"Try to re enter the license number :";
cin>>lic;
}
}
y++;
}
tck[m].setlicnumber(lic);
string col;
cout<<"Color :";
cin>>col;
tck[m].setcolor(col);
int parmin;
cout<<"Minutes in parking :";
cin>>parmin;
tck[m].setminutesparked(parmin);
int purmin;
cout<<"Minutes purchased :";
cin>>purmin;
meter[m].setminpurchased(purmin);
intro();
ticket = officer.patrol(tck[m], meter[m]);
if(ticket==NULL)
{
tck[m].print();
cout<<endl;
cout<<endl;
cout<<"----------------------"<<endl;
cout<<"| No cimes registered |"<<endl;
cout<<"----------------------"<<endl;
}
else
{
cout<<endl<<"Non-permitted vehicle ::"<<endl;
ticket->print();
cout<<"----------"<<endl;
ticket = NULL;
}
k[m] = tck[m].getminutesparked() - meter[m].getminpurchased();
cout<<endl<<endl<<endl<<endl<<endl;
cout<<"_______"<<endl;
cout<<"Enter your choice -"<<endl;
cout<<"0 - Patrol another car 1 - View cars patrolled"<<endl;
choice();
}
while (c == 0);
intro();
for(i=0;i<=m;i++)
{
cout<<" PARKED CAR "<<i+1<<endl<<endl;
tck[i].print();
cout<<endl<<endl;
if (k[i]>0)
{
tck[i].showfine();
cout<<"-----------"<<endl;
}
else
{
cout<<"Vehicle permitted for "<<-k[i]/60<<" hours & "<<-k[i]%60<<"minutes"<<endl;
}
cout<<"==========="<<endl;
}
cout<<"Officer responsible for issuing these tickets and patroling ::"<<endl;
officer.print();
return 0;
};
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.