1: // @author Frank M. Carrano, Timothy M. Henry
2: // @version 5.0
3: public void buy(int sharesBought, double pricePerShare)
4: {
5: StockPurchase purchase = new StockPurchase(sharesBought, pricePerShare);
6: ledger.addToBack(purchase);
7: } // end buy
9: public double sell(int sharesSold, double pricePerShare)
10: {
11: double saleAmount = sharesSold * pricePerShare;
12: double totalCost = 0;
14: while (sharesSold > 0)
15: {
16: StockPurchase transaction = ledger.removeFront();
17: double shareCost = transaction.getCostPerShare();
18: int numberOfShares = transaction.getNumberOfShares();
20: if (numberOfShares > sharesSold)
21: {
22: totalCost = totalCost + sharesSold * shareCost;
23: int numberToPutBack = numberOfShares - sharesSold;
24: StockPurchase leftOver = new StockPurchase(numberToPutBack, shareCost);
25: ledger.addToFront(leftOver); // Return leftover shares
26: // Note: Loop will exit since sharesSold will be <= 0 later
27: }
28: else
29: totalCost = totalCost + numberOfShares * shareCost;
30:
31: sharesSold = sharesSold - numberOfShares;
32: } // end while
34: return saleAmount - totalCost; // Gain or loss
35: } // end sell