Project 3 Advanced Taxi System Objective To gain experience

Project 3 Advanced Taxi System Objective

To gain experience and practice using classes.

Problem

As a concierge at a local hotel, you would like to simplify your work when ordering taxi rides for your customers. Write a program that will place orders with local taxi companies for your customers.

Specifications

For your program, implement two classes and a struct. You will have a class for taxi companies, a class for times, and a struct for orders. The class and struct attributes and methods should be as follows:

Time

-int h, m

stores the time in 24h mode

-void rollForward()

-int getH()

converts h to 12-hour mode, used by print

-int getM()

returns m, used by print

+Time(int h, int m)

constructor, sets h and m

+Time()

constructor, doesn’t set anything

+void setTime()

asks the user to input time in 24h mode

+void print()

nicely prints the time in 12h mode

Trip

int miles

Time pickup

string passenger

Taxi

-string name

stores the name of the taxi company

-vector< Trip > trips

stores the list of trips ordered with the company

-double rateMiles

stores the charge per mile

-double rateTrips

stores the charge per trip (flat rate)

+Taxi(string n, double rM, double rT)

constructor that sets the name, and rates

+string getName()

returns the company’s name

+double calculateTrip(Trip t)

calculates the cost of the trip passed as argument

+double calculateCart()

calculates cost of all pending orders

+void addTrip(Trip t)

adds a trip to the list of orders

+void showTripx()

prints the total pending cost and shows all trips

In int main, you should start by establishing an array of three taxi companies. The following properties should be given to each taxi company:

Build a menu system that will allow the user to order a trip, view their cart, or exit.

Ordering a trip should ask the user for the passenger’s name, the number of miles to be driven, and use the Time class method to get the time of the pickup. Create a Trip instance with those pieces of information. Next, display a submenu for the user to choose a taxi company from which to order. Show the cost the trip would be with each company using the calculateTrip class method. Use a for loop to iterate over your taxi company array rather than re-writing the same basic menu option for each company. When the user selects a company to place the order with, us the addTrip class method of the corresponding taxi company to add the Trip instance you created earlier.

Viewing the cart should use a for loop to iterate over the companies in the array, calling the showTrips class method for each.

Sample Output: Normal Operation (user input in italics)

>2
Active Trips:

>1
What is the passenger\'s first name? Bob
How many miles would you like to travel? 10
Enter the time with whitespace separating the hours and minutes: 5 45 Which company would you like to place the Trip with?
1. Checker Cab - $30.00
2. GTS Lawrence - $7.00
3. Jayhawk Taxi - $9.00
>2

>2
Active Trips:

Name

Charge per mile

Charge per trip

Checker Cab

0

30

GTS Lawrence

0.20

5

Jayhawk Taxi

0.80

1

$ 7.00 pending with GTS Lawrence
Trip scheduled for Bob covering 10 miles with pickup at 05:45 am

>1
What is the passenger\'s first name? Jane
How many miles would you like to travel? 100
Enter the time with whitespace separating the hours and minutes: 18 20 Which company would you like to place the Trip with?
1. Checker Cab - $30.00
2. GTS Lawrence - $25.00
3. Jayhawk Taxi - $81.00
>2
===Main Menu===
1. Order a trip
2. View Cart
3. Exit
>2
Active Trips:

Trip scheduled for Bob covering 10 miles with pickup at 05:45 am

Trip scheduled for Jane covering 100 miles with pickup at 06:20 pm $ 0.00 pending with Jayhawk Taxi

>1
What is the passenger\'s first name? Sam
How many miles would you like to travel? 4
Enter the time with whitespace separating the hours and minutes: 10 13

Which company would you 1. Checker Cab - $30.00 2. GTS Lawrence - $5.80 3. Jayhawk Taxi - $4.20 >3

>2
Active Trips:
$ 0.00 pending with Checker Cab $ 32.00 pending with GTS Lawrence

Trip scheduled for Bob covering 10 miles with pickup at 05:45 am

Trip scheduled for Jane covering 100 miles with pickup at 06:20 pm $ 4.20 pending with Jayhawk Taxi

Trip scheduled for Sam covering 4 miles with pickup at 10:13 am

>1
What is the passenger\'s first name? Zoe
How many miles would you like to travel? 200
Enter the time with whitespace separating the hours and minutes: 23 59 Which company would you like to place the Trip with?
1. Checker Cab - $30.00

2. GTS Lawrence - $45.00 3. Jayhawk Taxi - $161.00 >1

>2
Active Trips:
$ 30.00 pending with Checker Cab

Trip scheduled for Zoe covering 200 miles with pickup at 11:59 pm $ 32.00 pending with GTS Lawrence

Trip scheduled for Bob covering 10 miles with pickup at 05:45 am

Trip scheduled for Jane covering 100 miles with pickup at 06:20 pm $ 4.20 pending with Jayhawk Taxi

Trip scheduled for Sam covering 4 miles with pickup at 10:13 am

>3 Exiting...

Notes

You will likely need the vector, iomanip, and iostream libraries.

Deviating from the public / private requirements outlined above will incur penalties. Part of

what we are trying to learn in this project is lost if everything is public or global.

You should not need any more or any fewer class methods or attributes to accomplish this

project.

Time

-int h, m

stores the time in 24h mode

-void rollForward()

-int getH()

converts h to 12-hour mode, used by print

-int getM()

returns m, used by print

+Time(int h, int m)

constructor, sets h and m

+Time()

constructor, doesn’t set anything

+void setTime()

asks the user to input time in 24h mode

+void print()

nicely prints the time in 12h mode

Solution

Given below are files for the question along with output. Please do rate the answer if it helped. Thank you.

Time.h

#ifndef Time_h
#define Time_h
class Time
{
int h, m; //24 hour format
int getH(); //convert to 12 hr format
int getM(); //return minutes

public:

Time(int h, int m);
Time();
void setTime();
void print();
};

#endif /* Time_h */

Time.cpp

#include \"Time.h\"
#include <iomanip>
#include <iostream>
using namespace std;

int Time::getH()
{
int hrs;
if(h == 0)
hrs = 12;
else if(h > 12)
hrs = h - 12;
else
hrs = h;
return hrs;
}


int Time::getM() //return minutes
{
return m;
}

Time::Time(int h, int m)
{
if(h >=0 && h <= 23)
this->h = h;
else
this->h = 0;

  
if(m >=0 && m <= 59)
this->m = m;
else
this->m = 0;

}

Time::Time()
{
this->h = 0;
this->m = 0;
}

void Time::setTime()
{
cout << \"Enter the time with whitespace separating the hours and minutes: \";
cin >> h >> m;
}
void Time::print()
{
string ampm = \"am\";
if(h >= 12)
ampm = \"pm\";
  
cout << setw(2) << setfill(\'0\') << getH() << \":\" << setw(2) << getM() << \" \" << ampm;
cout << setfill(\' \');
}

Taxi.h

#ifndef Taxi_h
#define Taxi_h
#include <vector>
#include <iostream>
#include \"Time.h\"
using namespace std;
typedef struct
{
int miles;
Time pickup;
string passenger;
}Trip;

class Taxi
{
string name;
vector<Trip> trips;
double rateMiles;
double rateTrips;
public:
Taxi(string n, double rM, double rT);
string getName();
double calculateTrip(Trip t);
double calculateCart();
void addTrip(Trip t);
void showTripx();
  
};

#endif /* Taxi_h */

Taxi.cpp

#include \"Taxi.h\"

Taxi::Taxi(string n, double rM, double rT)
{
name = n;
rateMiles = rM;
rateTrips = rT;
}
string Taxi::getName()
{
return name;
}
double Taxi::calculateTrip(Trip t)
{
double amount = rateTrips + t.miles * rateMiles;
return amount;
}

double Taxi::calculateCart()
{
double total = 0;
for(int i = 0; i < trips.size(); i++)
total += calculateTrip(trips[i]);
return total;
}
void Taxi::addTrip(Trip t)
{
trips.push_back(t);
}
void Taxi::showTripx()
{
double amount = calculateCart();
cout << \"$\" << amount << \" pending with \" << name << endl;
for(int i = 0; i < trips.size(); i++)
{
Trip t = trips[i];
cout << \"\\tTrip scheduled for \" << t.passenger << \" covering \" << t.miles << \" miles at \";
t.pickup.print();
cout << endl;
}
cout << endl;
}

TaxiMain.cpp

#include \"Taxi.h\"
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
void orderTrip(vector<Taxi> &taxis);
void viewCart(vector<Taxi> &taxis);

int main()
{
  
vector<Taxi> taxis;
taxis.push_back(Taxi(\"Checker Cab\", 0, 30));
taxis.push_back(Taxi(\"GTS Lawrence\", 0.20, 5));
taxis.push_back(Taxi(\"Jayhawk Taxi\", 0.80, 1));
int choice = 0;
cout << fixed << setprecision(2);
while(choice != 3)
{
cout << \"=== Main Menu ===\" << endl;
cout << \"1. Order a trip\" << endl;
cout << \"2. View Cart\" << endl;
cout << \"3. Exit\" << endl;
cout << \"> \";
cin >> choice;
switch(choice)
{
case 1:
orderTrip(taxis);
break;
case 2:
viewCart(taxis);
break;
case 3:
break;
default:
cout << \"Invalid chocie . Try again\" << endl;
}
}
  
  
return 0;
}

void orderTrip(vector<Taxi> &taxis)
{
  
Trip trip;
int choice;
cout << \"What is the passenger name? \";
cin >> trip.passenger;
  
cout << \"How many miles would you like to travel ? \";
cin >> trip.miles;
  
trip.pickup.setTime();
  
cout << \"Which company would you like to place the Trip with? \" << endl;
for(int i = 0; i < 3; i++)
{
cout << (i+1) << taxis[i].getName() << \" - \" << taxis[i].calculateTrip(trip) << endl;
}
cout << \"> \";
cin >> choice;
if(choice >= 1 && choice <= 3)
taxis[choice - 1].addTrip(trip);
else
cout << \"Invalid choice!\" << endl;
}

void viewCart(vector<Taxi> &taxis)
{
cout << \"Active Trips:\" << endl;
for(int i = 0; i < 3; i ++)
taxis[i].showTripx();
  
cout << endl;
}

output

=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 2
Active Trips:
$0.00 pending with Checker Cab

$0.00 pending with GTS Lawrence

$0.00 pending with Jayhawk Taxi


=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 1
What is the passenger name? Bob
How many miles would you like to travel ? 10
Enter the time with whitespace separating the hours and minutes: 5 45
Which company would you like to place the Trip with?
1Checker Cab - 30.00
2GTS Lawrence - 7.00
3Jayhawk Taxi - 9.00
> 2
=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 2
Active Trips:
$0.00 pending with Checker Cab

$7.00 pending with GTS Lawrence
   Trip scheduled for Bob covering 10 miles at 05:45 am

$0.00 pending with Jayhawk Taxi


=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 1
What is the passenger name? Jane
How many miles would you like to travel ? 100
Enter the time with whitespace separating the hours and minutes: 18 20
Which company would you like to place the Trip with?
1Checker Cab - 30.00
2GTS Lawrence - 25.00
3Jayhawk Taxi - 81.00
> 2
=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 2
Active Trips:
$0.00 pending with Checker Cab

$32.00 pending with GTS Lawrence
   Trip scheduled for Bob covering 10 miles at 05:45 am
   Trip scheduled for Jane covering 100 miles at 06:20 pm

$0.00 pending with Jayhawk Taxi


=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 1
What is the passenger name? Sam
How many miles would you like to travel ? 4
Enter the time with whitespace separating the hours and minutes: 10 13
Which company would you like to place the Trip with?
1Checker Cab - 30.00
2GTS Lawrence - 5.80
3Jayhawk Taxi - 4.20
> 3
=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 2
Active Trips:
$0.00 pending with Checker Cab

$32.00 pending with GTS Lawrence
   Trip scheduled for Bob covering 10 miles at 05:45 am
   Trip scheduled for Jane covering 100 miles at 06:20 pm

$4.20 pending with Jayhawk Taxi
   Trip scheduled for Sam covering 4 miles at 10:13 am


=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 1
What is the passenger name? Zoe
How many miles would you like to travel ? 200
Enter the time with whitespace separating the hours and minutes: 23 59
Which company would you like to place the Trip with?
1Checker Cab - 30.00
2GTS Lawrence - 45.00
3Jayhawk Taxi - 161.00
> 1
=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 2
Active Trips:
$30.00 pending with Checker Cab
   Trip scheduled for Zoe covering 200 miles at 11:59 pm

$32.00 pending with GTS Lawrence
   Trip scheduled for Bob covering 10 miles at 05:45 am
   Trip scheduled for Jane covering 100 miles at 06:20 pm

$4.20 pending with Jayhawk Taxi
   Trip scheduled for Sam covering 4 miles at 10:13 am


=== Main Menu ===
1. Order a trip
2. View Cart
3. Exit
> 3

Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo
Project 3 – Advanced Taxi System Objective To gain experience and practice using classes. Problem As a concierge at a local hotel, you would like to simplify yo

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site