Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

This assignment is in C++ Please post code This is the starter code #include #include #include #include using namespace std; class Item { public: void

This assignment is in C++

Please post code

This is the starter code

#include #include #include #include using namespace std; class Item { public: void SetName(string nm) { name = nm; }; void SetQuantity(int qnty) { quantity = qnty; }; virtual void Print() { cout << name << " " << quantity << endl; }; virtual ~Item() { return; }; protected: string name; int quantity; }; class Produce : public Item { // Derived from Item class public: void SetExpiration(string expir) { expiration = expir; }; void Print() { cout << name << " x" << quantity << " (Expires: " << expiration << ")" << endl; }; private: string expiration; }; // Print all items in the inventory void PrintInventory(vector inventory); // Dialogue to create a new item, then add that item to the inventory vector AddItemToInventory(vector inventory); // Dialogue to update the quantity of an item, then update that item in the inventory vector UpdateItemQtyInInventory(vector inventory); // Dialogue to remove a specific item, then remove that specific item from the inventory vector RemoveItemFromInventory(vector inventory); int main() { vector inventory; string usrInptOptn = "default"; while (true) { // Get user choice cout << " Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit: "; getline(cin, usrInptOptn); // Process user choice if (usrInptOptn.size() == 0) { continue; } else if (usrInptOptn.at(0) == 'p') { PrintInventory(inventory); } else if (usrInptOptn.at(0) == 'a') { inventory = AddItemToInventory(inventory); } else if (usrInptOptn.at(0) == 'u') { inventory = UpdateItemQtyInInventory(inventory); } else if (usrInptOptn.at(0) == 'r') { inventory = RemoveItemFromInventory(inventory); } else if (usrInptOptn.at(0) == 'q') { cout << " Good bye." << endl; break; } } return 0; } void PrintInventory(vector inventory) { unsigned int i = 0; if (inventory.size() == 0) { cout << "No items to print." << endl; } else { for (i=0; iPrint(); } } return; } vector AddItemToInventory(vector inventory) { Produce* prdc; string usrInptName = ""; string usrInptQntyStr = ""; istringstream inSS; int usrInptQnty = 0; string usrInptExpr = ""; cout << "Enter name of new produce: "; getline(cin, usrInptName); cout << "Enter quantity: "; getline(cin, usrInptQntyStr); inSS.str(usrInptQntyStr); inSS >> usrInptQnty; inSS.clear(); cout << "Enter expiration date: "; getline(cin, usrInptExpr); prdc = new Produce; prdc->SetName(usrInptName); prdc->SetQuantity(usrInptQnty); prdc->SetExpiration(usrInptExpr); inventory.push_back(prdc); return inventory; } vector UpdateItemQtyInInventory(vector inventory) { string usrIndexChoiceStr = ""; unsigned int usrIndexChoice = 0; istringstream inSS; string usrInptQntyStr = ""; int usrInptQnty = 0; if (inventory.size() == 0) { cout << "No items to update." << endl; } else { PrintInventory(inventory); do { cout << "Update which item #: "; getline(cin, usrIndexChoiceStr); inSS.str(usrIndexChoiceStr); inSS >> usrIndexChoice; inSS.clear(); } while ( !(usrIndexChoice < inventory.size()) ); cout << "Enter new quantity: "; getline(cin, usrInptQntyStr); inSS.str(usrInptQntyStr); inSS >> usrInptQnty; inSS.clear(); inventory.at(usrIndexChoice)->SetQuantity(usrInptQnty); } return inventory; } vector RemoveItemFromInventory(vector inventory) { istringstream inSS; string usrIndexChoiceStr = ""; unsigned int usrIndexChoice = 0; string usrInptQntyStr = ""; if (inventory.size() == 0) { cout << "No items to remove." << endl; } else { PrintInventory(inventory); do { cout << "Remove which item #: "; getline(cin, usrIndexChoiceStr); inSS.str(usrIndexChoiceStr); inSS >> usrIndexChoice; inSS.clear(); } while ( !(usrIndexChoice < inventory.size()) ); inventory.erase( inventory.begin() + usrIndexChoice ); } return inventory; }

Pointers/Inheritance - Inventory system

In this assignment, youll make an inventory system for a stores items, including produce and

books. The starter program is an inventory system for only produce.

1. Include the price of an item by adding to the Item class the protected data member int

priceInDollars that stores the price in dollars of an individual item.

Write a public function SetPrice with a single int parameter prcInDllrs and returns nothing.

SetPrice assigns the value of prcInDllrs to priceInDollars.

Modify the AddItemToInventory to prompt the user to Enter the price per item: $, then set the

Produces price to the userentered value.

Modify Produces Print function output to include the items individual price. Here is an example

output for 20 grape bundles at $3 each that expire on May 22.

Grape bundle x20 for $3 (Expires: May 22)

2. Add a new class Book that derives from Item. The Book class has a private data member that

is a string named author. The Book class has a public function member SetAuthor with the

parameter string authr that sets the private data member authors value. SetAuthor returns

nothing.

The class Book overloads the Print member function with a similar output as the Produces Print

function, except Expires is replaced with Author and the variable expiration is replaced with

author. Here is an example output for 22 copies of

To Kill a Mockingbird

by Harper Lee that

sells for $5 each:

To Kill a Mockingbird x22 for $5 (Author: Harper Lee)

3. Modify the AddItemToInventory function to allow the user to choose between adding a book (b)

and produce (p). If the user does not enter b or p, then output Invalid choice then return the

AddItemToInventory function.

4. Create a class named Inventory. The Inventory class should have one private data member:

vector inventory. The Inventory class has four public function members that have no

parameters and return nothing: PrintInventory, AddItemToInventory, UpdateItemQtyInInventory,

and RemoveItemFromInventory.

Development suggestion: First convert only the PrintInventory function to be a member function

of Inventory with the other functions disabled (commented out). Then, convert the other functions

one by one.

5. Add to the Inventory class a private data member int totalInvPriceInDollars that stores the total

inventory price in dollars.

Write a private member function SumInv in Inventory class that has no parameters and returns

nothing. The SumInv function should set the total inventory value as a price in dollars. Since the

Inventory class cannot access an Items quantity and priceInDollars, youll need to write a public

member function GetTotalValueAsPrice to the Item class that returns the multiplication of the

Items quantity and priceInDollars.

The SumInv function should be called at the end (but before the return statement) of each

Inventory member function that modifies the inventory: AddItemToInventory,

UpdateItemQtyInInventory, and RemoveItemFromInventory.

Modify the PrintInventory function to also output the total inventory value in dollars. Here is an

example:

0 Grapes x2 for $3 (Expires: May)

1 To Kill a Mockingbird x4 for $5 (Author: Harper Lee)

Total inventory value: $26

Here is an example program execution (user input is highlighted here for clarity):

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

a

Enter choice of adding (b)ook or (p)roduce:

p

Enter name of new produce:

Grape bundle

Enter quantity:

20

Enter expiration date:

May 12

Enter the price per item: $

2

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

p

0 - Grape bundle x20 for $2 (Expires: May 12)

Total inventory value: $40

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

a

Enter choice of adding (b)ook or (p)roduce:

b

Enter name of new book:

Illiad

Enter quantity:

10

Enter author:

Homer

Enter the price per item: $

5

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

p

0 - Grape bundle x20 for $2 (Expires: May 12)

1 - Illiad x10 for $5 (Author: Homer)

Total inventory value: $90

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

a

Enter choice of adding (b)ook or (p)roduce:

b

Enter name of new book:

To Kill a Mockingbird

Enter quantity:

2

Enter author:

Harper Lee

Enter the price per item: $

10

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

u

0 - Grape bundle x20 for $2 (Expires: May 12)

1 - Illiad x10 for $5 (Author: Homer)

2 - To Kill a Mockingbird x2 for $10 (Author: Harper Lee)

Total inventory value: $110

Update which item #:

2

Enter new quantity:

25

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

p

0 - Grape bundle x20 for $2 (Expires: May 12)

1 - Illiad x10 for $5 (Author: Homer)

2 - To Kill a Mockingbird x25 for $10 (Author: Harper Lee)

Total inventory value: $340

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

r

0 - Grape bundle x20 for $2 (Expires: May 12)

1 - Illiad x10 for $5 (Author: Homer)

2 - To Kill a Mockingbird x25 for $10 (Author: Harper Lee)

Total inventory value: $340

Remove which item #:

1

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

p

0 - Grape bundle x20 for $2 (Expires: May 12)

1 - To Kill a Mockingbird x25 for $10 (Author: Harper Lee)

Total inventory value: $290

Enter (p)rint, (a)dd, (u)pdate, (r)emove, or (q)uit:

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Machine Learning And Knowledge Discovery In Databases European Conference Ecml Pkdd 2019 Wurzburg Germany September 16 20 2019 Proceedings Part 2 Lnai 11907

Authors: Ulf Brefeld ,Elisa Fromont ,Andreas Hotho ,Arno Knobbe ,Marloes Maathuis ,Celine Robardet

1st Edition

3030461467, 978-3030461461

More Books

Students also viewed these Databases questions

Question

6. Identify seven types of hidden histories.

Answered: 1 week ago

Question

What is the relationship between humans and nature?

Answered: 1 week ago