what is the solution for this java programming exercise Java
what is the solution for this java programming exercise?
Java Programming
The final project will be used to solve the problem of gathering information about a person’s financial investments. Investments a person may have include stocks, mutual funds, and real estate. This program will be limited to gathering information about a person’s share assets: stock and mutual fund investments.
The information about a share assets which would need to be known is: the symbol, number of shares owned, price paid per share, and the current price. There are stocks that pay dividends and those that do not. Stocks that pay a dividend would need the amount of dividends paid. The difference between a mutual fund and a stock is that a person can own parts of a share of a mutual fund, while entire shares of stock must be owned. (Hint: An OO concept applies here.) The user should be able to find out the current market value of an asset as well as the profit or loss of the asset.
Design a program that keeps track of a person’s share assets. The program must meet the following requirements:
1. The project must use user defined classes and inheritance.
2. A GUI interface must be used for user I/O.
3. A person may own shares of multiple stocks as well as participate in multiple mutual funds.
4. A given stock asset object should only have information about one asset – stock, dividend stock, or mutual fund.
5. Exception handling must be used where appropriate.
6. The stock and mutual fund information (portfolio) must be stored in a text file.
7. The user should have the option to display the portfolio information contained in the text file.
Solution
Solution:
//StockInfo.java
// class stock to represent the investments
public class StockInfo
{
// declare the required variables
protected String stksymbol;
protected int stk_num_stocks;
protected double stk_purchasePrice;
protected double stk_currentPrice;
// constructor
public StockInfo()
{
stksymbol=null;
stk_num_stocks=0;
stk_purchasePrice=0.0;
stk_currentPrice=0.0;
}
// parameterized constructor
public StockInfo(String stksymbol, int numberofstkUnits, double stk_purchasePrice, double stk_currentPrice)
{
super();
this.stksymbol = stksymbol;
this.stk_num_stocks = numberofstkUnits;
this.stk_purchasePrice = stk_purchasePrice;
this.stk_currentPrice = stk_currentPrice;
}
// method to return stock symbol
public String get_stkSymbol()
{
return stksymbol;
}
// method to set the stock symbol
public void set_stkSymbol(String stksymbol) {
this.stksymbol = stksymbol;
}
// method to get number of stocks
public int getNumberOfStocks() {
return stk_num_stocks;
}
// method to set number of stocks
public void setNumStocks(int numberofstkUnits) {
this.stk_num_stocks = numberofstkUnits;
}
// method to get the stock purchase price
public double getstkPurchasePrice() {
return stk_purchasePrice;
}
// method to set the stock purchase price
public void setPurchasePrice(double stk_purchasePrice) {
this.stk_purchasePrice = stk_purchasePrice;
}
// method to get the current stock price
public double getstkCurrentPrice() {
return stk_currentPrice;
}
// method to set the current stock price
public void setCurrentPrice(double stk_currentPrice) {
this.stk_currentPrice = stk_currentPrice;
}
// method to get the stock investment value
public double getstkInvestmentValue()
{
return (stk_num_stocks*stk_purchasePrice);
}
// method to get the stock current investment value
public double getstkCurrentInvestmentValue()
{
return (stk_num_stocks*stk_currentPrice);
}
// method to get the overall stock gain
public double getOverallstkGain()
{
return (getstkCurrentInvestmentValue()-getstkInvestmentValue());
}
// method to print the values as string
public String toString()
{
String stkString=null;
stkString=\"Symbol:\"+get_stkSymbol()+\" \"
+\"Number of stocks:\"+getNumberOfStocks()+\" \"
+\"Purchase price:\"+getstkPurchasePrice()+\" \"
+\"Investments:\"+getstkInvestmentValue()+\" \"
+\"Current price:\"+getstkCurrentPrice()+\" \"
+\"Current Value:\"+getstkCurrentInvestmentValue()+\" \"
+\"Overall gain:\"+getOverallstkGain();
return stkString;
}
}
// StockDividend.java
//class represent the dividend of a stock
class StockDividend extends StockInfo
{
private double stkdividend;
// constructor
public StockDividend() {
super();
stkdividend=0.0;
}
// parameterized constructor
public StockDividend(String stksymbol, int numberofstkUnits, double stk_purchasePrice, double stk_currentPrice, double stkdividend) {
super(stksymbol, numberofstkUnits, stk_purchasePrice, stk_currentPrice);
this.stkdividend=stkdividend;
}
// method to return the dividend of a stock
public double getstkDividend() {
return stkdividend;
}
// method to set the dividend of a stock
public void setDividend(double stkdividend) {
this.stkdividend = stkdividend;
}
// method to set the over all dividend of a stock
public double getOverallDividend()
{
return (stk_num_stocks*stkdividend);
}
// method to get overall stock gain
@Override
public double getOverallstkGain() {
return (super.getOverallstkGain()+(getNumberOfStocks()*getstkDividend()));
}
// method to print the values as string
public String toString()
{
String stkString=null;
stkString=\"Symbol:\"+get_stkSymbol()+\" \"
+\"Number of stocks:\"+getNumberOfStocks()+\" \"
+\"Purchase price:\"+getstkPurchasePrice()+\" \"
+\"Investments:\"+getstkInvestmentValue()+\" \"
+\"Current price:\"+getstkCurrentPrice()+\" \"
+\"Current Value:\"+getstkCurrentInvestmentValue()+\" \"
+\"Dividend:\"+getstkDividend()+\" \"
+\"Total stkdividend paid:\"+getOverallDividend()+\" \"
+\"Overall gain:\"+getOverallstkGain();
return stkString;
}
}
// MutualFundInvest.java
// class to represent the mutual fund
class MutualFundInvest extends StockInfo
{
// declare the required variables
private double numberofstkUnits;
// constructor
public MutualFundInvest() {
stksymbol=null;
numberofstkUnits=0.0;
stk_purchasePrice=0.0;
stk_currentPrice=0.0;
}
// parameterized constructor
public MutualFundInvest(String stksymbol, double numberofstkUnits, double stk_purchasePrice, double stk_currentPrice) {
this.stksymbol=stksymbol;
this.numberofstkUnits=numberofstkUnits;
this.stk_purchasePrice=stk_purchasePrice;
this.stk_currentPrice=stk_currentPrice;
}
// method to get number of mutualFunds units
public double getNum_mutUnits() {
return numberofstkUnits;
}
// method to get number of mutualFunds units
public void setNum_mutUnits(double numberofstkUnits) {
this.numberofstkUnits = numberofstkUnits;
}
// method to get mutualFunds investment value
@Override
public double getstkInvestmentValue() {
return (numberofstkUnits*stk_purchasePrice);
}
// method to get mutualFunds current value
@Override
public double getstkCurrentInvestmentValue() {
return (numberofstkUnits*stk_currentPrice);
}
// method to get mutualFunds gain value
@Override
public double getOverallstkGain() {
return (getstkCurrentInvestmentValue()-getstkInvestmentValue());
}
// method to print the values as string
public String toString()
{
String MfundString=null;
MfundString=\"Symbol:\"+get_stkSymbol()+\" \"
+\"Number of units:\"+getNum_mutUnits()+\" \"
+\"Purchase price:\"+getstkPurchasePrice()+\" \"
+\"Investments:\"+getstkInvestmentValue()+\" \"
+\"Current price:\"+getstkCurrentPrice()+\" \"
+\"Current Value:\"+getstkCurrentInvestmentValue()+\" \"
+\"Overall gain:\"+getOverallstkGain();
return MfundString;
}
}
// Inv_Portfolio.java
-------------------------------
import java.util.ArrayList;
import java.util.Iterator;
import java.io.PrintWriter;
// class Inv_Portfolio to get persons investment details
public class Inv_Portfolio {
private ArrayList<StockInfo> stocksdet;
private ArrayList<StockDividend> dvntStocks;
private ArrayList<MutualFundInvest> mutualFnd;
// constructor
public Inv_Portfolio() {
// Auto-generated constructor
stocksdet=new ArrayList<StockInfo>();
dvntStocks=new ArrayList<StockDividend>();
mutualFnd=new ArrayList<MutualFundInvest>();
}
// method to get stock details
public ArrayList<StockInfo> getStocksdet() {
return stocksdet;
}
// method to get dividend of a stock
public ArrayList<StockDividend> getDividendStocksdet() {
return dvntStocks;
}
// mnethod to get mutualFunds information
public ArrayList<MutualFundInvest> getMutualFundsdet() {
return mutualFnd;
}
// method to add the stocks details
public void addStock(StockInfo stock)
{
stocksdet.add(stock);
}
// method to add the dividend of stocks
public void addDividendStock(StockDividend stock)
{
dvntStocks.add(stock);
}
// method to add the mutualFunds
public void addMutualFunddet(MutualFundInvest fund)
{
mutualFnd.add(fund);
}
// method to get the stock values
public double getStocksValuedet()
{
double value=0.0;
Iterator<StockInfo> iterator=stocksdet.iterator();
while(iterator.hasNext())
{
StockInfo stock=iterator.next();
value+=stock.getstkCurrentInvestmentValue();
}
return value;
}
// method to return the dividend of stocks
public double getDividendStocksdetail()
{
double value=0.0;
Iterator<StockDividend> iterator=dvntStocks.iterator();
while(iterator.hasNext())
{
StockDividend stock=iterator.next();
value+=stock.getstkCurrentInvestmentValue();
}
return value;
}
// method to return mutual fund value
public double getMutualFundsdetail()
{
double value=0.0;
Iterator<MutualFundInvest> iterator=mutualFnd.iterator();
while(iterator.hasNext())
{
MutualFundInvest fund=iterator.next();
value+=fund.getstkCurrentInvestmentValue();
}
return value;
}
// method to return overall value of a profile
public double getPortfolio()
{
return (getStocksValuedet()+getDividendStocksdetail()+getMutualFundsdetail());
}
public String toString()
{
String portfolioString=null;
portfolioString=\"Stocks value:\"+getStocksValuedet()+\"\ \"
+\"Dividend stocks value:\"+getDividendStocksdetail()+\"\ \"
+\"Mutual funds value:\"+getMutualFundsdetail()+\" \"
+\"Overall value:\"+getPortfolio();
return portfolioString;
}
// method to save the portfolio details into file
public void savePortfolio(String portfolioFileName)
{
try
{
PrintWriter pwrtr = new PrintWriter(\"portfolio.txt\", \"UTF-8\");
pwrtr.println(getStocksValuedet()+\"\\t\" +getDividendStocksdetail()+\"\\t\" +getMutualFundsdetail()+\"\\t\" +\"\\t\" + getPortfolio());
pwrtr.close();
} catch (Exception e)
{
System.out.println(\"File write error\")
}
}
}
Note:
GUI design not included inthis solution due to time bound.






