java个人项目,股票资金模拟

第一个版本在学习java面向对象之前编写,比较初级,直接在控制台输入参数,在main方法中完成数据的模拟与输出

package stocktradingsimulation;
/*
此程序用于虚拟股票交易数值结果,模拟四只股票的交易情况
@author:wisdomcodeinside
@version:1.0.0.1
*/

import java.util.Scanner;
import java.math.BigDecimal;
class StockTradingSimulation {
	public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
		//输入数据
        System.out.println("请输入第一只股票的买入价格");
        double stockBuy1 = scan.nextDouble();
		System.out.println("请输入第一只股票的现价");
        double stockNow1 = scan.nextDouble();
		System.out.println("请输入第一只股票的数量");
        int stockNum1 = scan.nextInt();
		 System.out.println("请输入第二只股票的买入价格");
        double stockBuy2 = scan.nextDouble();
		System.out.println("请输入第二只股票的现价");
        double stockNow2 = scan.nextDouble();
		System.out.println("请输入第二只股票的数量");
        int stockNum2 = scan.nextInt();
		 System.out.println("请输入第三只股票的买入价格");
        double stockBuy3 = scan.nextDouble();
		System.out.println("请输入第三只股票的现价");
        double stockNow3 = scan.nextDouble();
		System.out.println("请输入第三只股票的数量");
        int stockNum3 = scan.nextInt();
        System.out.println("请输入第四只股票的买入价格");
        double stockBuy4 = scan.nextDouble();
		System.out.println("请输入第四只股票的现价");
        double stockNow4 = scan.nextDouble();
		System.out.println("请输入第四只股票的数量");
        int stockNum4 = scan.nextInt();
		System.out.println("请输入可用资金");
        double accountAvailableFunds = scan.nextDouble();
		System.out.println("请输入资金余额");
        double accountBalance = scan.nextDouble();//输入数据
        //计算数据
        double stockCost1 =stockBuy1 * stockNum1;
        BigDecimal b1 = new BigDecimal(stockCost1);
        stockCost1 = b1.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockCost2 = stockBuy2 * stockNum2;
		BigDecimal b2 = new BigDecimal(stockCost2);
		stockCost2 = b2.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockCost3 = stockBuy3 * stockNum3;//股票总成本
		BigDecimal b3 = new BigDecimal(stockCost3);
		stockCost3 = b3.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockNowPrice1 = stockNow1 * stockNum1;
		BigDecimal b4 = new BigDecimal(stockNowPrice1);
		stockNowPrice1 = b4.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockNowPrice2 = stockNow2 * stockNum2;
		BigDecimal b5 = new BigDecimal(stockNowPrice2);
		stockNowPrice2 = b5.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockNowPrice3 = stockNow3 * stockNum3;//股票现市值
		BigDecimal b6 = new BigDecimal(stockNowPrice3);
		stockNowPrice3 = b6.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockProfit1 = stockNum1 * (stockNow1 - stockBuy1);
		BigDecimal b7 = new BigDecimal(stockProfit1);
		stockProfit1 = b7.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockProfit2 = stockNum2 * (stockNow2 - stockBuy2);
		BigDecimal b8 = new BigDecimal(stockProfit2);
		stockProfit2 = b8.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockProfit3 = stockNum3 * (stockNow3 - stockBuy3);//股票总盈利
		BigDecimal b9 = new BigDecimal(stockProfit3);
		stockProfit3 = b9.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
        double stockProfitMargin1 = (stockProfit1 / stockCost1)* 100;
        BigDecimal b10 = new BigDecimal(stockProfitMargin1);
        stockProfitMargin1 = b10.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockProfitMargin2 = (stockProfit2 / stockCost2)* 100;
		BigDecimal b11 = new BigDecimal(stockProfitMargin2);
        stockProfitMargin2 = b11.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockProfitMargin3 = (stockProfit3 / stockCost3)* 100;//股票利润率
		BigDecimal b12 = new BigDecimal(stockProfitMargin3);
        stockProfitMargin3 = b12.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
        
        double stockCost4 =stockBuy4 * stockNum4;
        BigDecimal b13 = new BigDecimal(stockCost4);
        stockCost4 = b13.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
        double stockNowPrice4 = stockNow4 * stockNum4;
		BigDecimal b14 = new BigDecimal(stockNowPrice4);
		stockNowPrice4 = b14.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockProfit4 = stockNum4 * (stockNow4 - stockBuy4);
		BigDecimal b15 = new BigDecimal(stockProfit4);
		stockProfit4 = b15.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		double stockProfitMargin4 = (stockProfit4 / stockCost4)* 100;
        BigDecimal b16 = new BigDecimal(stockProfitMargin4);
        stockProfitMargin4 = b16.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
        
        
		double sumStockPrice = stockNowPrice1 + stockNowPrice2 + stockNowPrice3 + stockNowPrice4;//股票总市值
		double sumStockProfit = stockProfit1 + stockProfit2 + stockProfit3 + stockProfit4;//股票总盈亏
		double totalAssets = accountBalance + sumStockPrice;//账户总资产
		//数据输出
        System.out.println("人民币总资产(元):\t" + totalAssets);
		System.out.println();
		System.out.println("\t总市值\t\t\t总盈亏");
        System.out.println("\t" + sumStockPrice + "\t\t\t" + sumStockProfit);
        System.out.println();
		System.out.println("\t可用资产\t\t\t资金余额");
		System.out.println("\t" + accountAvailableFunds + "\t\t\t" + accountBalance);
        System.out.println("证券名称\t\t参考盈亏\t\t股份余额\t\t成本价");
		System.out.println("证券市值\t\t盈亏率\t\t股份可用\t\t最新价");
		System.out.println("证券名称1" + "\t\t" + stockProfit1 + "\t\t" + stockNum1 + "\t\t" + stockBuy1);
		System.out.println(stockNowPrice1 + "\t\t" + stockProfitMargin1 + "%" + "\t\t" + stockNum1 + "\t\t" + stockNow1);
		System.out.println("证券名称2" + "\t\t" + stockProfit2 + "\t\t" + stockNum2 + "\t\t" + stockBuy2);
		System.out.println(stockNowPrice2 + "\t\t" + stockProfitMargin2 + "%" + "\t\t" + stockNum2 + "\t\t" + stockNow2);
		System.out.println("证券名称3" + "\t\t" + stockProfit3 + "\t\t" + stockNum3 + "\t\t" + stockBuy3);
		System.out.println(stockNowPrice3 + "\t\t" + stockProfitMargin3 + "%" + "\t\t" + stockNum3 + "\t\t" + stockNow3);
		System.out.println("证券名称4" + "\t\t" + stockProfit4 + "\t\t" + stockNum4 + "\t\t" + stockBuy4);
		System.out.println(stockNowPrice4 + "\t\t" + stockProfitMargin4 + "%" + "\t\t" + stockNum4 + "\t\t" + stockNow4);
	}
}

第二个版本在学习完面向对象之后,创建Stock类,Account类,在类内部完成数值的计算,再创建主类,在主类中完成数据调用与输出。

股票类

package stocktradingsimulation;

import java.math.BigDecimal;

public class Stock {
	private String name;
    private double stockCost;//股票成本
    private double stockPrice;//股票现价
    private double stockNumber;//股票数量
    private double stockValue;//股票市值
    private double stockProfit;//股票盈亏
    private double stockProfitMargin;//盈亏率
    
	public Stock() {
		super();
	}
	
	
	public Stock(String name,double stockCost, double stockPrice, double stockNumber) {
		super();
		this.name = name;
		this.stockCost = stockCost;
		this.stockPrice = stockPrice;
		this.stockNumber = stockNumber;
	}

    
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}

	public double getStockCost() {
		return stockCost;
	}
	public void setStockCost(double stockCost) {
		this.stockCost = stockCost;
	}
	public double getStockPrice() {
		return stockPrice;
	}
	public void setStockPrice(double stockPrice) {
		this.stockPrice = stockPrice;
	}
	public double getstockNumber() {
		return stockNumber;
	}
	public void setstockNumber(double stockNumber) {
		this.stockNumber = stockNumber;
	}

	public double getStockValue() {
		BigDecimal b = new BigDecimal(stockPrice * stockNumber);
		return b.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();		
	}

	public double getStockProfit() {
		BigDecimal b = new BigDecimal(stockNumber * (stockPrice - stockCost));
		return b.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
	}

	public double getStockProfitMargin() {
		BigDecimal b = new BigDecimal(((stockPrice - stockCost) / stockCost) * 100);
		return b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
	}

	@Override
	public String toString() {
		return "Stock [name=" + name + ", stockCost=" + stockCost + ", stockPrice=" + stockPrice + ", stockNumber="
				+ stockNumber + ", stockValue=" + stockValue + ", stockProfit=" + stockProfit + ", stockProfitMargin="
				+ stockProfitMargin + "]";
	}

}

账户类

package stocktradingsimulation;

import java.util.Vector;

public class Account {
	private Vector stockList = new Vector();// 股票数组
	private double accountAvailableFunds;// 可用资产
	private double accountBalance;// 账户余额
	private double sumStockPrice;// 股票总市值
	private double sumStockProfit;// 股票总盈亏
	private double totalAssets;// 账户总资产

	public Account() {
		super();
	}

	public Vector getStockList() {
		return stockList;
	}

	public void setStockList(Vector stockList) {
		this.stockList = stockList;
	}

	public double getAccountAvailableFunds() {
		return accountAvailableFunds;
	}

	public void setAccountAvailableFunds(double accountAvailableFunds) {
		this.accountAvailableFunds = accountAvailableFunds;
	}

	public double getAccountBalance() {
		return accountBalance;
	}

	public void setAccountBalance(double accountBalance) {
		this.accountBalance = accountBalance;
	}
    
	public void setSumStockPrice(double sumStockPrice) {
		this.sumStockPrice = sumStockPrice;
	}

	public double getSumStockPrice() {
	
		double sum = 0.0;
		for (int i = 0; i < stockList.size(); i++) {
			 Stock s = (Stock)stockList.elementAt(i);
			 sum += s.getStockValue();
		}
				
		return sum;
	}

	public void setSumStockProfit(double sumStockProfit) {
		this.sumStockProfit = sumStockProfit;
	}

	public double getSumStockProfit() {
		double sum = 0.0;
		for (int i = 0; i <  stockList.size(); i++) {
			Stock s = (Stock)stockList.elementAt(i);
			sum += s.getStockProfit();
			
		}		
		return sum;
	}
    
	public void setTotalAssets(double totalAssets) {
		this.totalAssets = totalAssets;
	}

	public double getTotalAssets() {			
		return getSumStockPrice() + getAccountBalance();
	}

	public void addStock(String name,double stockCost, double stockPrice, double stockNumber) {
        Stock s = new Stock(name,stockCost,stockPrice,stockNumber);
	    stockList.addElement(s);
	}

	public void deleteStock(int i) {
        stockList.remove(i);
	}
	
	public Stock getStock(int i) {
		return (Stock)stockList.elementAt(i);
	}

}

主类

package stocktradingsimulation;
/*
此程序用于虚拟股票交易数值结果,模拟四只股票的交易情况
@author:wisdomcodeinside
@version:1.0.0.2
*/

import java.util.Scanner;
import java.math.BigDecimal;
class StockTradingSimulationV1 {
	public static void main(String[] args) {
		//输入数据
//		  Scanner scan = new Scanner(System.in);
//		  Account a = new Account();
//		  while(true) {			
//			if(scan.nextLine()== "quit") {
//				break;
//			}
//		    System.out.println("请输入股票名称");
//			String s = scan.next();
//			System.out.println("请输入股票的买入价格");
//			double d = scan.nextDouble();
//			System.out.println("请输入股票的买入数量");
//			double d2 = scan.nextDouble();
//			System.out.println("请输入股票的当前价格");
//			double d3 = scan.nextDouble();
//			a.addStock(s, d, d3, d2);			
//		}
//		System.out.println("请输入可用资产");
//		a.setAccountAvailableFunds(scan.nextDouble(););
//		System.out.println("请输入账户余额");
//		a.setAccountBalance(scan.nextDouble();); 
//		
		
        //创建Account对象
		Account a = new Account();
		a.addStock("证券名1",6.66, 6.77, 20000);
		a.addStock("证券名2",6.10, 6.20, 40000);
		a.addStock("证券名3",7.11, 7.88, 41000);
		a.addStock("证券名4",15.21, 17.30, 40100);
		a.setAccountAvailableFunds(30518.07);
		a.setAccountBalance(30518.07); 
		//数据输出
        System.out.println("人民币总资产(元):\t" + a.getTotalAssets());
		System.out.println();
		System.out.println("\t总市值\t\t\t总盈亏");
        System.out.println("\t" + a.getSumStockPrice() + "\t\t" + a.getSumStockProfit());
        System.out.println();
		System.out.println("\t可用资产\t\t\t资金余额");
		System.out.println("\t" + a.getAccountAvailableFunds() + "\t\t\t" + a.getAccountBalance());
        System.out.println("证券名称\t\t参考盈亏\t\t股份余额\t\t成本价");
		System.out.println("证券市值\t\t盈亏率\t\t股份可用\t\t最新价");
		
		for (int i = 0; i < a.getStockList().size(); i++) {
			Stock s = a.getStock(i);
			System.out.println(s.getName() + "\t\t" + s.getStockProfit() + "\t\t" + s.getstockNumber() + "\t\t" + s.getStockCost());
			System.out.println(s.getStockValue() + "\t\t" + s.getStockProfitMargin() + "%" + "\t\t" + s.getstockNumber() + "\t\t" + s.getStockPrice());
		}
		
	}
}
发布了47 篇原创文章 · 获赞 1 · 访问量 1053

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/104314342