Ask C/C++ Expert


Home >> C/C++

Object Oriented Development

Introduction 

This assignment follows the same application as the first three assignments where we examined  the problem of managing the accounts and inventory for a bookstore. In this assignment, we  focus on different types of inventory and you are required to develop a solution using the C++ language that has the following features:

Handles different types of inventory;

Record the Purchases and Sales based on the type of item and an assigned mark-up;

And

Uses a pointer array of inventory to store the different items in.

Requirements

This assignment requires you to write C++ code to implement four classes

Note that while some of these classes are related to those developed in the second assignments, the functionality of those assignments has been significantly reduced to focus  on polymorphism and templates, e.g., both SalesRegister and Publisher classes are  emoved.

The classes you must develop are:

A Template SimpleList class:

The SimpleList class must have the following features:

o Attribute/s to store the constant array pointer list of the Inventory objects and the count to keep track current element.

o Accessor and/or manipulator methods where appropriate

o AddElement function will check to make sure the current item is not reached the size before adding the parameter object on to the arraylist

o A constructor to initialise the Simple Item array list object

o A Print() has an output operator to format appropriately the data stored on the simple lis (sensible field widths should be used).

o A GetCount() return the current number of item on the array

o A GetItem(int position) return the item element on the array list at the parameter position.

An Inventory class:

This is an abstract class which has 4 pure virtual functions:

o A GetItemData() function allows to prompt user for the item details ;

o A RecordSales() function will update the sold quantity for the inventory if the stock is higher  or equal to the sold quantity parameter;

o A RecordPurchase() function will update the purchase quantity for the inventory by the sold  quantity parameter;

o A Print() function display the inventory item details and purchased and sold information

A StockItem class is inherited from the Inventory class:

Has cost price, mark-up, sold quantity and purchase quantity attributes;

Has a custom constructor, accessor and mutator functions for the above description attributes;  and

And four other virtual functions to implement the RecordSales() and throw exception if there is not enough stock for the transaction record, GetData(), RecordPurchase() and Print() which described in the Inventory class. A GeneralItem class is inherited from the StockItem class :

Has the item description attribute;

The GetData() function will prompt the user to input the item description attribute and the markup attribute from the StockItem;

Has a custom constructor, accessor and mutator functions for the above description attributes; and

And the Print() display description attributes and all StockItem details.

A BookItem class is inherited from the GeneralItem class :

Has the extra Book Author, Publisher and Year attributes;

The GetData() function will prompt the user to input the author, publisher, year details and the markup attribute from the StockItem;

Has a custom constructor, accessor and mutator functions for the above description attributes; and

And the Print() display described attributes and all StockItem details.

THE INVENTORY SYSTEM UML

Inventory {abstract}

BookItem

StockItem

Provided Code - main()

#include

#include

#include

#include

using namespace std;

#include "Inventory.h"

#include "StockItem.h"

#include "GeneralItem.h"

#include "BookItem.h"

#include "SimpleList.h"

#define SIZE 5

void menu()

{

int choice;

cout << "1. Add record\n";

cout << "2. Record Purchase\n";

cout << "3. Record Sale\n";

cout << "4. Print\n";

cout << "5. Exit\n";

cout << "Option? ";

cin >> choice;

if( choice < 1 || choice > SIZE)

throw(string("Invalid choice"));

else throw(choice);

}

int main()

{

// Inventory *list[SIZE];

SimpleList list;

int cont = 1;

while(cont)

{

try

{

menu();

}

catch(string msg)

{

cout << msg << "\n";

}

catch(int i)

{

int type;

int qty;

float price;

Inventory* item;

switch(i)

{

case 1:

if( list.GetCount() < SIZE)

{

cout << "1. Book Item 2. General Item: ";

cin >> type;

if(type == 1) item = new BookItem;

else item = new GeneralItem;

item->GetData();

list.AddElement(item);

}

else cout << "Over Load\n";

break;

case 2:

if( list.GetCount() == 0) cout << "No Inventory\n";

else

{

for(type = 0; type < list.GetCount(); type++) // list data

{

cout << "List [" << type+1 << "]:\n";

list.GetItem(type)->Print();

}

do

{

cout << "Which List Purchase? ";

cin >> type;

} while(type < 0 || type > list.GetCount());

cout << "Purchase Qty: ";

cin >> qty;

cout << "Cost Price: ";

cin >> price;

item = (Inventory*) list.GetItem(type-1);

item->RecordPurchase(qty, price);

}

break;

case 3:

if( list.GetCount() == 0) cout << "No Inventory\n";

else

{

for(type = 0; type < list.GetCount(); type++)

{

cout << "List [" << type+1 << "]:\n";

list.GetItem(type)->Print();

}

do

{

cout << "Which List Sold? ";

cin >> type;

} while(type < 0 || type > list.GetCount());

cout << "Sold Qty: ";

cin >> qty;

try

{

item = (Inventory*) list.GetItem(type-1);

item->RecordSell(qty);

}

catch(string msg) { cout << msg << "\n"; }

}

break;

case 4:

if( list.GetCount() == 0) cout << "No Inventory\n";

else list.Print();

/* replace the loop to display the Inventory items

{

for(type = 0; type < list.GetCount(); type++)

{

cout << "List [" << type+1 << "]:\n";

list.GetItem(type)->Print();

}

} */

break;

case 5:

for(type = 0; type < list.GetCount(); type++) delete list.GetItem(type);

cont = 0;

break;

default: return 0;

} // end switch

} // end catch

} // end while

return 0;

}

Your assignment must also satisfy the following requirements:

You must use polymorphism in your solution to record the sales, purchases, get data and print functions;

You do not need to consider exceptions for this assignment (they will return in the final assignment);

Tabs (\t) can be used for formatting purposes;

You must use the main() function, above. Note that not all functions required above may be invoked by the provided main(); and

All floating point data should be displayed to two decimal places. For information on how to set the number of decimal places, see the Manipulators Session 1 pp9 Study Guide. You do not need to restore the number of decimal places.

Attachment:- Ass4_C,C++.rar

C/C++, Programming

  • Category:- C/C++
  • Reference No.:- M91929268
  • Price:- $85

Guranteed 48 Hours Delivery, In Price:- $85

Have any Question?


Related Questions in C/C++

Question 1find the minimum and maximum of a list of numbers

Question: 1. Find the Minimum and Maximum of a List of Numbers: 10 points File: find_min_max.cpp Write a program that reads some number of integers from the user and finds the minimum and maximum numbers in this list. Th ...

Software development fundamentals assignment 1 -details amp

Software Development Fundamentals Assignment 1 - Details & Problems - In this assignment, you are required to answer the short questions, identify error in the code, give output of the code and develop three C# Console P ...

What are the legal requirements with which websites must

What are the legal requirements with which websites must comply in order to meet the needs of persons with disabilities? Why is maximizing accessibility important to everyone?

There are several ways to calculate the pulse width of a

There are several ways to calculate the pulse width of a digital input signal. One method is to directly read the input pin and another method (more efficient) is to use a timer and pin change interrupt. Function startTi ...

Assignment word matchingwhats a six-letter word that has an

Assignment: Word Matching What's a six-letter word that has an e as its first, third, and fifth letter? Can you find an anagram of pine grave. Or how about a word that starts and ends with ant (other than ant itself, of ...

1 implement the binary search tree bst in c using the node

1. Implement the Binary Search Tree (BST) in C++, using the Node class template provided below. Please read the provided helper methods in class BST, especially for deleteValue(), make sure you get a fully understanding ...

Assign ment - genetic algorithmin this assignment you will

ASSIGN MENT - GENETIC ALGORITHM In this assignment, you will use your C programming skills to build a simple Genetic Algorithm. DESCRIPTION OF THE PROGRAM - CORE REQUIREMENTS - REQ1: Command-line arguments The user of yo ...

Project - space race part a console Project - Space Race Part A: Console Implementation

Project - Space Race Part A: Console Implementation INTRODUCTION This assignment aims to give you a real problem-solving experience, similar to what you might encounter in the workplace. You have been hired to complete a ...

Why do researcher drop the ewaste and where does it end

Why do researcher drop the ewaste and where does it end up?

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As