Write a program to help a local restaurant automate its breakfast billing system. The program should do the following:
Assume that the restaurant offers the following breakfast items (the price of each item is shown to the right of the item):
Welcome to Johnny’s Resturant —-Today’s Menu—- 1: Plain Egg $1.45 2: Bacon and Egg $2.45 3: Muffin $0.99 4: French Toast $1.99 5: Fruit Basket $2.49 6: Cereal $0.69 7: Coffee $0.50 8: Tea $0.75 You can make up to 8 single order selections Do you want to make selection Y/y (Yes), N/n (No): Y Enter item number: 1 Select another item Y/y (Yes), N/n (No): Y Enter item number: 2 Select another item Y/y (Yes), N/n (No): N Welcome to Johnny’s Resturant Plain Egg $1.45 Bacon and Egg $2.45 Tax $0.20 Amount Due $4.10
Format your output with two decimal places. The name of each item in the output must be left justified. You may assume that the user selects only one item of a particular type.
Here is my program but i need it to be able to select multple items instead of just one:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
const int NO_OF_ITEMS = 8;
struct menuItemType
{
string menuItem;
double menuPrice;
};
void getData(ifstream& inFile, menuItemType mList[], int listSize);
void showMenu(menuItemType mList[], int listSize);
voidprintCheck(menuItemType mList[],int listSize,
int cList[],int cListLength);
voidmakeSelection(int listSize,
int cList[],int& cListLength);
bool isItemSelected(int cList[], int cListLength, int itemNo);
int main()
{
menuItemType menuList[NO_OF_ITEMS];
int choiceList[NO_OF_ITEMS];
int choiceListLength;
ifstream inFile;
cout << fixed << showpoint << setprecision(2);
inFile.open(“Ch9_Ex4Data.txt”);
if (!inFile)
{
cout << “Cannot open the input file. Program Terminates!”
<< endl;
return1;
}
getData(inFile, menuList, NO_OF_ITEMS);
showMenu(menuList, NO_OF_ITEMS);
makeSelection(NO_OF_ITEMS,
choiceList, choiceListLength);
printCheck(menuList, NO_OF_ITEMS,
choiceList, choiceListLength);
return0;
}
void getData(ifstream& inFile, menuItemType mList[], int listSize)
{
char ch;
for (int i =0; i < listSize; i++)
{
getline(inFile, mList[i].menuItem);
inFile >> mList[i].menuPrice;
inFile.get(ch);
}
}
void showMenu(menuItemType mList[], int listSize)
{
cout << “Welcome to Johnny’s Resturant” << endl;
cout << “—-Today’s Menu—-” << endl;
for (int i =0; i < listSize; i++)
cout << i+1 << “: ” << left << setw(15) << mList[i].menuItem
<< right <<” $”<< mList[i].menuPrice << endl;
cout << endl;
}
voidprintCheck(menuItemType mList[],int listSize,
int cList[],int cListLength)
{
int i;
double salesTax;
double amountDue =0;
cout << “Welcome to Johnny’s Resturant” << endl;
for (i =0; i < cListLength; i++)
{
cout << left << setw(15) << mList[cList[i]].menuItem
<< right <<” $”<<setw(4) << mList[cList[i]].menuPrice << endl;
amountDue += mList[cList[i]].menuPrice;
}
salesTax = amountDue * .05;
cout << left <<setw(15) <<“Tax “<< right <<” $”
<< salesTax << endl;
amountDue = amountDue + salesTax;
cout << left << setw(15) << “Amount Due ” << right
<<” $”<< amountDue << endl;
}
voidmakeSelection(int listSize,
int cList[],int& cListLength)
{
int selectionNo =0;
int itemNo;
char response;
cListLength = 0;
cout << “You can make up to ” << listSize
<<” single order selections”<< endl;
cout << “Do you want to make selection Y/y (Yes), N/n (No): “;
cin >> response;
cout << endl;
while ((response ==’Y’|| response ==’y’) &&
cListLength < 8)
{
cout << “Enter item number: “;
cin >> itemNo;
cout << endl;
if (!isItemSelected(cList,cListLength,itemNo))
cList[cListLength++] = itemNo – 1;
else
cout << “Item already selected” << endl;
cout << “Select another item Y/y (Yes), N/n (No): “;
cin >> response;
cout << endl;
}
}
bool isItemSelected(int cList[], int cListLength, int itemNo)
{
bool found =false;
for (int i =0; i < cListLength; i++)
if (cList[i] == itemNo)
{
found = true;
break;
}
return found;
}