Just post is a new courier service company which services all provinces in the South Africa. They charge
their customers based on the weight of the parcel as indicated in the table below. However, if kilograms
are above 50, the cost is charged according to the number of hours it took to deliver. Although the time
is entered in minutes but they are charged R95.00 per hour. Clients may also add some extras to the
delivery such as insurance which is charged 8.5% and priority is charged at 5% of the charge.
Distance Weight Cost (R)
Local Under 5 kg R125.00
Local 5 kg up to 20 kg R175.00
Local Over 20 Kg R250.00
Long Under 5 kg R390.00
Long 5 kg up to 20 kg R450.00
Write a program that will assist with calculating the postage amount.
2.1 Create a C++ source file called Postage and save it in a file called Postage.cpp.
2.2 Create the following functions:
Functions:
Function Description Marks
2.2.1 enterPostageDetails() This function will receive five parameters that will consists of
the minutes, the weight of a parcel, the distance, a status
indicate if the parcel is a priority and if it will be insured.
The function will then prompt the user for the following as
indicated in Figure 2.1 and Figure 2.2:
the minutes,
the weight of a parcel, the distance,
priority (Y/y Or N/n) and an insurance indication (Y/y
Or N/n
2.2.2 determineCost() This function will receive three parameter that will consists of
the distance, weight and time in hours.
The function must then determine and return the postage cost
for that particular distance using the information above and
the information on Table 1.
11
2.2.3 convertTime() This function will receive one parameter that will consists of
the delivery time in minutes.
This function must then convert the given time from minutes
to hours and it must then return the number of hours in that
given time.
7
2.2.4 calcAmtDue() This function will receive six parameter that will consists of the
postage cost, an indication whether the insurance is the taken
and whether the parcel is priority or not, the insurance
amount, priority amount as well as the amount due.
This function must then calculate the insurance, priority
amount and the amount due respectively.
7
2.2.5 main() Add necessary pre-processor directives.
NB: The functions must be implemented below the main.
Declare all necessary constants and variables.
Allow the program to randomly generate an invoice
number, the range must be from 105 to 550.
Prompt the user for the postage details by calling the
correct function.
Calculate the postage cost as well as the amount due
by calling the correct functions.
Display the postage details as indicated in Figure 2.3
and Figure 2.4.
This process must be repeated until there are no
parcels to deliver (See Figure 2.4).
Display the number of deliveries for both Local or
Long distances and the total revenue when the
program terminates (See Figure 2.5)
#include <iostream>
using namespace std;
void enterPostageDetails(int minutes, int weight, string distance, char insurance, char priority) {
cout << "Enter the number of minutes it took to deliver: ";
cin >> minutes;
cout << "Enter the weight of the product: ";
cin >> weight;
cout << "Enter the distance(Local, Long): ";
cin >> distance;
cout << "Enter the status of insurance (Y/y Or N/n): ";
cin >> insurance;
cout << "Enter the status of priority (Y/y Or N/n): ";
cin >> priority;
}
float convertTime (int minutes) {
float Hours;
Hours = (float) minutes / 60;
return Hours;
}
float determineCost(string distance, int weight, float timeHours) {
float costProduct;
if (weight <= 50) {
if (weight <= 5) {
if (distance == "Local") {
costProduct = 125.00;
}
if (distance == "Long") {
costProduct = 390.00;
}
}
if (weight > 5 && weight <= 20) {
if (distance == "Local") {
costProduct = 175.00;
}
if (distance == "Long") {
costProduct = 450.00;
}
}
if (weight > 20) {
if (distance == "Local") {
costProduct = 250.00;
}
if (distance == "Long") {
costProduct = 500.00;
}
}
}
else {
costProduct = 95 * timeHours;
}
return costProduct;
}
void calcAmtDue (float costProduct, char insurance, char priority) {
float insuranceCost, priorityCost;
if (tolower(insurance) == 'y') {
insuranceCost = costProduct * 0.085;
cout << "the amount of insurance: " << insuranceCost;
}
if (tolower(insurance) == 'n') {
cout << "no insurance";
}
if (tolower(priority) == 'y') {
priorityCost = costProduct * 0.05;
cout << "the amount of priority: " << priorityCost;
}
if (tolower(priority) == 'n') {
cout << "no insurance";
}
costProduct += insuranceCost + priorityCost;
cout << "total product cost: " << costProduct;
}
int main () {
int minutes, weight;
string distance;
char insurance, priority;
enterPostageDetails(minutes, weight, distance, insurance, priority);
float timeHours;
timeHours = convertTime(minutes);
float costProduct;
costProduct = determineCost(distance, weight, timeHours);
calcAmtDue(costProduct, insurance, priority);
}
Comments
Leave a comment