Ask Question, Ask an Expert


Ask Programming Language Expert


Design a class-based solution to a problem using multiple data structures.

The Problem:

You need to prepare a program to help an investor figure out which stocks to sell from his/her portfolio. In the USA, the government taxes income from investments. This is called capital gains tax. Your program will determine profit and loss on stock sales, using either of two different accounting methods:
LIFO: Last purchased is the first sold
FIFO: First purchased is the first sold.

To illustrate these methods, suppose you have the following transactions:

Stock Name    Date    Number of shares    Price per share
UMKC             June 1         100                   45.50
UMKC             June 6         100                   46.50
UMKC             June 15       100                   48.50
UMKC             June 22       100                   55.50

Now, let's say you want to sell 125 shares of UMKC stock. You can choose to sell either the oldest or the newest shares. Today's price is $54.00/share. Under the FIFO method, the 125 shares sold are considered to have cost $5712.50 (100 shares at $45.50 and 25 shares at $46.50), earning a profit of $1037.50 for reporting taxable income to the IRS. Under the LIFO method, the 150 shares sold cost $6762.50 (100 shares at $55.50 and 25 at $48.50), which means you will report a loss of $12.50 to the IRS.

The program will allow for the following activities:

1) Stock Purchase--add the number of shares and cost to the portfolio list for that stock in the portfolio. If current portfolio does not have the stock already in inventory, the stock is added to the stock list and the shares added to its inventory.

2) Stock Sale-- deletes the specified number or shares from the portfolio and generates a report ("report.txt") of the accounting method (FIFO, LIFO) that results in the minimum profit (or maximum loss). The method that produces the desired results is also noted as part of the output for this option.

The report file should look like the following:
3. Profit/Loss Report for Sale of UMKC
4. ======================================================
5. FIFO method results in a profit of 1037.50
6. LIFO method results in a loss of -12.50
8. Profit/Loss Report for Sale of PCS
9. ======================================================
10. FIFO method results in a profit of 3250
11. LIFO method results in a profit of 3375

If the sale results in a zero inventory for that stock, the stock is to be deleted from your portfolio.


Your program will read all transaction data from a file (input3.txt).

Each line of the transaction file will include

• stock symbol
• action to be taken (char 'B' or 'S' to indicate a buy or sell)
• the number of shares bought or sold
• the price paid or received.

ex file contents:

IBM B 100 100.00
PCS B 100 100.00
PCS B 75 95.00
IBM B 100 90.00
IBM S 150 95.00
CERN B 200 80.00
PCS S 150 120.00


For all valid transactions, print the transaction to the output file(output3.txt). After each valid transaction, print the total holdings of the portfolio.

Sample output:

Transaction:  CERN  B    200      80.00
Total Holdings:
Name  #Shares  LIFO Value  FIFO Value
CERN      200     1600.00      1600.00
IBM        50       5000.00       4500.00
PSC        25      2500.00        250.00

If a transaction lists a sale of a given stock which is either not in the portfolio, or there are not enough shares owned, then print the transaction to an error file(errors3.txt).

Programming Requirements

Your Portfolio of sorted stock objects must be implemented as a linked list. The data members of a stock object must include a stack and queue (to maintain your parallel systems). For efficiency, you must store pointers to the stack and queue rather than store the stacks and queues themselves in the stock object. You may also want to keep other stock data such as LIFO current value, FIFO current value and share count as data members of a stock object. As you complete your design, other data members and methods may become necessary as well. Make sure that any additional methods you create are defined with the correct access specifier (i.e private or public). Methods for your stock object minimally should include:

1) Constructor-initialized data members. Reminder: Do not initialize data members that are themselves objects of other classes since the associated constructors will be automatically called at instantiation.

2) void addShares(int numberOfShares, double costPerShare)
//adds the number of shares purchased to the stack and queue. Updates share count, FIFO current value and LIFO current value.

3) bool removeShares(int numberOfShares)
// removes the number of shares from both the stack and the queue. Updates share count, LIFO current value and FIFO current value. The method returns true if there were enough shares in inventory to complete the sale, otherwise false is returned and no shares are removed.

4) friend ostream& operator << (ostream&, const Stock&);

The Portfolio class is to be a sorted linked list of stock objects. The minimum set of Portfolio methods include the constructor, add, remove, search and an overloaded insertion operator.

Required data structures:

• an array-based stack class
• a linked queue class

Do NOT use the STL stack or queue classes. Do NOT use a list class anywhere in this program.

You may create other classes in addition to the ones I've mentioned. You must create a UML class diagram showing your classes and their relationships to each other.

Programming Language, Programming

  • Category:- Programming Language
  • Reference No.:- M9723

Have any Question? 

Related Questions in Programming Language

Integrative programmingassignment- managing a user account

Integrative Programming Assignment- Managing a User Account List Objective: To manage a user list that can be modified and saved to a text file. Inputs: • Input text file consisting of pairs of usernames and passwords, s ...

1 implement dfs by using prolog2 implement bfs by using

1. Implement DFS by using PROLOG. 2. Implement BFS by using PROLOG. 3.  Solve the problem of Question 3 in Assignment 1 by using your PROLOG programs of DFS and BFS, respectively. Question 3 from Assignment 1 to Solve wi ...

The given machine description will provide the basis for

The given machine description will provide the basis for this assignment. You will create a virtual machine/operating system for the machine described below that will accept programs in the target machine language. The d ...

Add a swift class file to the project that illustrates and

Add a SWIFT class file to the project that illustrates and contains the following: • The class name is 'Calculator' • Has public variables of the type float called numerator, denominator and total. • Has a method called ...

Write a program to test for the case of a math equation

Write a program to test for the case of a math equation entered via the keyboard using the SWITCH-CASE operator. Types of equations to test for: x + y  x / y   x * y and x - y. The program is to ask for the following: 1. ...

You must do this assignment correctly as described

You must do this assignment correctly as described below.  If you do not follow the directions or break the rules you will receive a 0 score. Simulation of checking tic-tac-toe board for wins by counting X and O in rows, ...

Your problem is as followswrite a program that will ask the

Your problem is as follows: Write a program that will ask the user to enter 4 quiz scores for 3 students.  You will need to fine the lowest quiz grade and drop it out when you calculate the average. You will need to disp ...

Programming assignment 1 grocery storethis assignment

Programming Assignment #1: Grocery Store This assignment attempts to serve as a refresher for concepts that I hope you learned in CS 122. In this assignment, you will be building a simple storefront for a small grocery s ...

1 loops the greatest and the least- write a program with a

1. Loops: The greatest and the least- Write a program with a loop that lets the user to enter a series of integers. The use should enter -99 to signal the end of the series. After all the numbers have been entered, the p ...

Pair programming phase 1talent agency user stories1 user

Pair Programming Phase 1 Talent Agency User Stories 1. User Story 1 As a head office administrator I want to be able to produce formatted output of all the information about our talent agencies so that I can easily incor ...

  • 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

A cola-dispensing machine is set to dispense 9 ounces of

A cola-dispensing machine is set to dispense 9 ounces of cola per cup, with a standard deviation of 1.0 ounce. The manuf

What is marketingbullwhat is marketing think back to your

What is Marketing? • "What is marketing"? Think back to your impressions before you started this class versus how you

Question -your client david smith runs a small it

QUESTION - Your client, David Smith runs a small IT consulting business specialising in computer software and techno

Inspection of a random sample of 22 aircraft showed that 15

Inspection of a random sample of 22 aircraft showed that 15 needed repairs to fix a wiring problem that might compromise

Effective hrmquestionhow can an effective hrm system help

Effective HRM Question How can an effective HRM system help facilitate the achievement of an organization's strate