编写一个股票买卖收益计算器

论坛 期权论坛 期权     
killerz9   2018-4-26 13:22   6877   4
设计一个股票买卖收益计算器(程序不需要图形界面),要求使用java-queue。

对于股票的买入和卖出过程的解释:假设,第一天,股价是20元,买入了100股。第二天,股价是24元,买入了20股。第三天,股价是36元,买入了200股。然后,在第四天,要卖出150股在股...设计一个股票买卖收益计算器(程序不需要图形界面),要求使用java-queue。

对于股票的买入和卖出过程的解释:假设,第一天,股价是20元,买入了100股。第二天,股价是24元,买入了20股。第三天,股价是36元,买入了200股。然后,在第四天,要卖出150股在股价是30的情况下。所以计算收益时就要考虑:在第一天买了100股,第二天买了20股,第三天买了200股(但是我们从中取出30股,用前三天买的凑成第四天要卖掉的150股)。所以这里就要用到java queue的先进先出协议。

收益=100*(30-20)+20*(30-24)+30*(30-36)=940 元

编写一个queue的队列(LinkedQueue class),这个queue需要使用generic类型,因此任何类型value都可以存储。将此段代码保存在LinkedQueue.java中。(注意这个queue队列可以储存任何类型的value)

编写主程序(CapitalGain class),用于输入和输出,输入和输出的格式如下:
buy x stocks(股票) at $y each.
or
sell x stocks at $y each.
当你输入完,买了多少股票在价格为多少的时候(需要能多次买入),value存储在queue中(调用LinkedQueue class),然后再输入卖出多少股票在价格为多少的时候,最后输出收益情况。(x和y都为整数类型)将此段代码保存为CapitalGain.java.

最好能在程序每一句代码上添加注释。
谢谢了!展开
分享到 :
0 人收藏

4 个回复

正序浏览
5#
山羊吃草草  2级吧友 | 2018-4-30 03:05:56 发帖IP地址来自
胜负彩09081期完全交战记录:勒沃汉堡榜首大战
本期胜负彩为“英超6+德甲7+意甲1”组合,开售时间为2009年10月14日(周三),停售时间为2009年10月17日(周六)21点。注:本期为14场胜负游戏指定派奖期。

1.阿森纳vs伯明翰

两队在历史上总共交战10场,阿森纳6胜3平1负占上风。两队在阿森纳的主场总共交战5场,阿森纳3胜2平0负占上风。两队最近1次交手2比2握手言和,当时盘口为阿森纳让一球/球半。阿森纳最近8场比赛6胜0平2负,赢盘率为50%,近6场走势:赢赢走赢赢输。最近8场比赛2胜1平5负,赢盘率为37.5%,近6场走势:输输输赢输赢。

时间    赛事 主队  比分 客队

2008-02-23 英超 伯明翰 2-2 阿森纳

2008-01-12 英超 阿森纳 1-1 伯明翰

2006-02-04 英超 伯明翰 0-2 阿森纳

2005-10-02 英超 阿森纳 1-0 伯明翰

2005-05-15 英超 伯明翰 2-1 阿森纳

更多内容查看网站

云博网站
https://www 6yun268 com/user_bwyun268/?referral=2983
4#
xionglijun715  4级常客 | 2018-4-30 03:05:55 发帖IP地址来自
很好
3#
sb55154634  2级吧友 | 2018-4-30 03:05:54 发帖IP地址来自
这么快就课程设计了??  呵呵 看到我以前交作业的也苦苦求代码上弄了近1个小时终于弄出来了  我简单调试了你举的那个例子 没问题  其他的你自己调试吧
import java.io.*;
import java.util.*;

public class QueueTest {
public int value;
public int num;

public QueueTest(int value, int num) {
  this.value = value;
  this.num = num;
}

public static void main(String args[]) {
  Queue list = new LinkedList();

  InputStreamReader isr = null;
  BufferedReader br = null;                    //从命令行读取数据用的

  try {
   while(true) {
    System.out.println("1  买股票");
    System.out.println("2  卖股票");
    System.out.println("3  退出");

    isr = new InputStreamReader(System.in);
    br = new BufferedReader(isr);

    int i = -1;
    int value = 0;
    int num = 0;

    try {
     i = Integer.parseInt(br.readLine());         //读取命令操作代号
    } catch(NumberFormatException ne) {
     System.out.println("输入错误");
    }

    if(i == 1) {
     System.out.println("请输入股价");
     isr = new InputStreamReader(System.in);
     br = new BufferedReader(isr);

     try {
      value = Integer.parseInt(br.readLine());
     } catch(NumberFormatException ne) {
      System.out.println("输入错误");
      continue;                                   //读取所输入股价 股票数目
     }

     System.out.println("请输入买入数目");
     isr = new InputStreamReader(System.in);
     br = new BufferedReader(isr);

     try {
      num = Integer.parseInt(br.readLine());
     } catch(NumberFormatException ne) {
      System.out.println("输入错误");
      continue;
     }
     list.add(new QueueTest(value, num));               //向队列中加入购股记录
    }  else if(i == 2) {
     int income = 0;
     System.out.println("请输入股价");
     isr = new InputStreamReader(System.in);
     br = new BufferedReader(isr);

     try {
      value = Integer.parseInt(br.readLine());
     } catch(NumberFormatException ne) {
      System.out.println("输入错误");
      continue;
     }

     System.out.println("请输入卖出数目");
     isr = new InputStreamReader(System.in);
     br = new BufferedReader(isr);

     try {
      num = Integer.parseInt(br.readLine());
     } catch(NumberFormatException ne) {
      System.out.println("输入错误");               //与上同
      continue;
     }

     while (list.peek() != null) {
      QueueTest t = (QueueTest)list.peek();
      if(t.num > num) {
       t.num -= num;
       income += num * (value - t.value);
       System.out.println("收益是:" + income);
       break;                                     //当购股记录股数大于卖出剩余量时,添加收益,退出队列访问
      } else {
       num -= t.num;
       income += t.num * (value - t.value);
       list.poll();                               //当购股记录股数大于卖出剩余量时,添加收益,继续访问
      }
     }
     if (list.peek() == null) {                        //现存股总数小于卖出数,将存货全卖出,输出还需要但没卖出的股数以及收益
      System.out.println("已将剩余全部股票卖出,还缺少卖出股票数目:" + num);
      System.out.println("收益是:" + income);
     }
    } else if(i == 3) {
     return;
    } else {
     System.out.println("输入错误");
    }

   }
  } catch(IOException e) {
   e.printStackTrace();
  } finally {
   try {
    if(br != null) br.close();
    if(isr != null) isr.close();
   } catch(IOException e) {
    e.printStackTrace();
   }
  }

}

}
2#
热心网友  15级至尊 | 2018-4-30 03:05:53 发帖IP地址来自
  股票收益即股票投资收益,是指企业或个人以购买股票的形式对外投资取得的股利,转让、出售股票取得款项高于股票帐面实际成本的差额,股权投资在被投资单位增加的净资产中所拥有的数额等。
  股票收益包括股息收入、资本利得和公积金转增收益。
  股票收益率是反映股票收益水平的指标
  1,是反映投资者以现行价格购买股票的预期收益水平。它是年现金股利与现行市价之比率。
  本期股利收益率=(年现金股利/本期股票价格)*100%
  2,股票投资者持有股票的时间有长有短,股票在持有期间获得的收益率为持有期收益率。
  持有期收益率=[(出售价格-购买价格)/持有年限+现金股利]/购买价格*100%
  3,公司进行拆股必然导致股份增加和股价下降,正是由于拆股后股票价格要进行调整,因而拆股后的持有期收益率也随之发生变化。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP