The method sellProduct of the Juice Machine programming example gives the user o
ID: 3869547 • Letter: T
Question
The method sellProduct of the Juice Machine programming example gives the user only two chances to enter enough money to buy the product. Rewrite the definition of the method sellProduct so that it keeps prompting the user to enter more money as long as the user has not entered enough money to buy the product. Also, write a program to test your method. Also, move the showSelection and sellProduct functions from the main() program to be members of the cashRegister class and reside in cashRegister implementation file, and add another juice type named "grape". The instructions indicate the requirement for a test program, however, the main() program should be sufficient and an additional test program unnecessary
This is what I have so far:
#include <iostream>
#include "cashRegister.h"
#include "dispenserType.h"
using namespace std;
void showSelection();
void sellProduct(dispenserType& product,
cashRegister& pCounter);
int main()
{
cashRegister counter;
dispenserType orange(100, 50);
dispenserType apple(100, 65);
dispenserType mango(75, 80);
dispenserType strawberryBanana(100, 85);
int choice; //variable to hold the selection
showSelection();
cin >> choice;
while (choice != 9)
{
switch (choice)
{
case 1:
sellProduct(orange, counter);
break;
case 2:
sellProduct(apple, counter);
break;
case 3:
sellProduct(mango, counter);
break;
case 4:
sellProduct(strawberryBanana, counter);
break;
default:
cout << "Invalid selection." << endl;
}//end switch
showSelection();
cin >> choice;
}//end while
return 0;
}//end main
void showSelection()
{
cout << "*** Welcome to Shelly's Juice Shop ***" << endl;
cout << "To select an item, enter " << endl;
cout << "1 for orange juice (50 cents)" << endl;
cout << "2 for apple juice (65 cents)" << endl;
cout << "3 for mango juice (80 cents)" << endl;
cout << "4 for strawberry banana juice (85 cents)" << endl;
cout << "9 to exit" << endl;
}//end showSelection
void sellProduct(dispenserType& product,
cashRegister& pCounter)
{
int amount; //variable to hold the amount entered
int amount2; //variable to hold the extra amount needed
if (product.getNoOfItems() > 0) //if the dispenser is not
//empty
{
cout << "Please deposit " << product.getCost()
<< " cents" << endl;
cin >> amount;
if (amount < product.getCost())
{
cout << "Please deposit another "
<< product.getCost()- amount
<< " cents" << endl;
cin >> amount2;
amount = amount + amount2;
}
if (amount >= product.getCost())
{
pCounter.acceptAmount(amount);
product.makeSale();
cout << "Collect your item at the bottom and "
<< "enjoy." << endl;
}
else
cout << "The amount is not enough. "
<< "Collect what you deposited." << endl;
cout << "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
<< endl << endl;
}
else
cout << "Sorry, this item is sold out." << endl;
Explanation / Answer
Challenge3.cpp
#include <iostream>
#include "cashRegister.h"
#include "dispenserType.h"
using namespace std;
void showSelection();
void sellProduct(dispenserType& product, cashRegister& pCounter);
int main()
{
cashRegister counter;
dispenserType orange(100, 50);
dispenserType apple(100, 65);
dispenserType mango(75, 80);
dispenserType strawberryBanana(100, 85);
dispenserType grape(90,75);
int choice;
counter.showSelection();
cin>>choice;
while (choice != 9)
{
switch (choice)
{
case 1:
counter.sellProduct(orange, counter);
break;
case 2:
counter.sellProduct(apple, counter);
break;
case 3:
counter.sellProduct(mango, counter);
break;
case 4:
counter.sellProduct(strawberryBanana, counter);
break;
case 5:
counter.sellProduct(grape,counter);
break;
case 9:
exit(0);
default:
cout << "Invalid selection." << endl;
}
counter.showSelection();
cin >> choice;
}
return 0;
}
cashRegister.h
#include<iostream>
#include "dispenserType.h"
using namespace std;
class cashRegister
{
public:
cashRegister()
{
}
public:
void showSelection()
{
cout << "*** Welcome to Shelly's Juice Shop ***" << endl;
cout << "To select an item, enter " << endl;
cout << "1 for orange juice (50 cents)" << endl;
cout << "2 for apple juice (65 cents)" << endl;
cout << "3 for mango juice (80 cents)" << endl;
cout << "4 for strawberry banana juice (85 cents)" << endl;
cout << "5.for Grape juice (75 cents)" <<endl;
cout << "9 to exit" << endl;
}
public:
void sellProduct(dispenserType& product, cashRegister& pCounter)
{
int amount;
int amount2;
if (product.getNoOfItems() > 0)
{
cout<< "Please deposit " << product.getCost()<< " cents" << endl;
cin>>amount;
if (amount < product.getCost())
{
cout << "Please deposit another "<< product.getCost()- amount<< " cents" << endl;
cin >> amount2;
amount = amount + amount2;
}
if (amount >= product.getCost())
{
pCounter.acceptAmount(amount);
product.makeSale();
cout << "Collect your item at the bottom and "<< "enjoy." << endl;
}
else
{
cout << "The amount is not enough. "<< "Collect what you deposited." << endl;
}
cout << "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<< endl << endl;
}
else
cout << "Sorry, this item is sold out." << endl;
}
public:
void acceptAmount(int amount)
{
}
};
dispenserType.h
#include<iostream>
using namespace std;
class dispenserType
{
public:
int cost;
int noofitems=0;
public:
dispenserType(int x,int y)
{
cost=y;
noofitems++;
}
public:
int getNoOfItems()
{
return noofitems;
}
public:
int getCost()
{
return cost;
}
public:
void makeSale()
{
}
};
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.