复利计算-做汉堡,结对2.0-复利计算再升级

package ch;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;

import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class fuli  extends JFrame
{
private JLabel a1;
private JLabel a2;
private JLabel a3;
private JLabel a4;
private JTextField b1;
private JTextField b2;
private JTextField b3;
private JTextField b4;
private JButton c1;
private JButton c2;
private JButton c3;
private JTextArea text;
private JPanel leftpanel = new JPanel();
private AbstractButton leftpanelr= new JRadioButtonMenuItem("每年添加一定的本金");

public double[] a = new double[100];
public double[] b = new double[100];
int input = 0;
public fuli()
{
creatComponents()    ;
layoutComponents();
registerHandlers();
setTitle("复利存款计算器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
}

private void  creatComponents()
{
a1=new JLabel("本  金 ");
a1.setFont(new Font("宋体",Font.BOLD,18));
a2=new JLabel("年利率 ");
a2.setFont(new Font("宋体",Font.BOLD,18));
a3=new JLabel("年  数 ");
a3.setFont(new Font("宋体",Font.BOLD,18));
a4=new JLabel("期望值 ");
a4.setFont(new Font("宋体",Font.BOLD,18));
b1=new JTextField(10);
b2=new JTextField(10);
b3=new JTextField(10);
b4=new JTextField(10);
c1=new JButton("计算");
c1.setFont(new Font("宋体",Font.BOLD,15));
c2=new JButton("清除");
c2.setFont(new Font("宋体",Font.BOLD,15));
c3=new JButton("投资记录");
c3.setFont(new Font("宋体",Font.BOLD,15));

text=new JTextArea();
}
private void layoutComponents()
{
setLayout(new FlowLayout());
JPanel panel1=new JPanel();
panel1.add(a1);
panel1.add(b1);
JPanel panel2=new JPanel();
panel2.add(a2);
panel2.add(b2);
JPanel panel3=new JPanel();
panel3.add(a3);
panel3.add(b3);
JPanel panel4=new JPanel();
panel4.add(c1);
panel4.add(c2);
panel4.add(c3);
JPanel panel6=new JPanel();
panel6.add(a4);
panel6.add(b4);
JPanel  leftpanel=new JPanel(new GridLayout(4,1));
leftpanel.add(panel1);
leftpanel.add(panel2);
leftpanel.add(panel3);
leftpanel.add(panel4);
leftpanel.add(panel6);
JScrollPane panel5=new JScrollPane(text);
panel5.setPreferredSize(new Dimension(400,150));
add(leftpanel);
add(panel5);
}

private void registerHandlers() {
    c1ActionEventHander hander1 = new c1ActionEventHander();
    c1.addActionListener(hander1);
    c2ActionEventHander hander2 = new c2ActionEventHander();
    c2.addActionListener(hander2);
    c3ActionEventHander hander4 = new c3ActionEventHander();
    c3.addActionListener(hander4);
}

private class c1ActionEventHander implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        double principal = 0;
        double amount = 0;
        double rate = 0;
        int n = 0;
        NumberFormat currencyformatter = NumberFormat.getCurrencyInstance(); // 字符串转化为数字
        String output = "年" + "/" + "复利存款";
        int year = 1;
        int result;

        if (b1.getText().equals("") && b2.getText() != null
                && b3.getText() != null && b4.getText() != null) { // 计算本金

            try {
                rate = Double.parseDouble(b2.getText());
                n = Integer.parseInt(b3.getText());
                amount = Double.parseDouble(b4.getText());

            principal = 0;
            while (year <= n) {
                principal = amount / (Math.pow(1 + rate, year));
                year = year + 1;
            }

            output = "本金" + currencyformatter.format(principal) + "\n";
            text.setText(output);
            }
            catch (Exception e2) {
                // TODO: handle exception
            }
        }

        else if (b2.getText().equals("") && b1.getText() != null
                && b3.getText() != null && b4.getText() != null) // 求利率
        {
            try {
                principal = Double.parseDouble(b1.getText()); // b1本金
                n = Integer.parseInt(b3.getText()); // b3年份
                amount = Double.parseDouble(b4.getText()); // b4期望值
            } catch (Exception e2) {
                // TODO: handle exception
            }
            rate = java.lang.StrictMath.pow(amount / principal, 1.0 / n) - 1;
            output = "利率" + rate + "\n";
            text.setText(output);
        }

        else if (b3.getText().equals("") && b1.getText() != null
                && b2.getText() != null && b4.getText() != null) // 求年份
        {
            try {
                principal = Double.parseDouble(b1.getText()); // b1本金
                amount = Double.parseDouble(b4.getText()); // b4期望值
                rate = Double.parseDouble(b2.getText());
            } catch (Exception e2) {
                // TODO: handle exception
            }

            double year2 = Math.log(amount / principal) / Math.log(1 + rate);
            output = "至少年数" + year2 + "\n";
            text.setText(output);
        }

        else if (b4.getText().equals("") && b1.getText() != null
                && b3.getText() != null && b2.getText() != null) // 求期望值
        {
            try {
                rate = Double.parseDouble(b2.getText());
                n = Integer.parseInt(b3.getText());
                principal = Double.parseDouble(b1.getText()); // b1本金
            } catch (Exception e2) {
                // TODO: handle exception
            }

            double tempprincipal = principal;
            result = JOptionPane.showConfirmDialog(null, "是否每年进行投资?");
            if (result == JOptionPane.YES_OPTION) {
                amount=CalculateA(year,n,principal,rate,tempprincipal);
                System.out.println("CalculateA(year,n,principal,rate,tempprincipal)"+year+n+principal+rate+tempprincipal);
                output += String.valueOf(year) + "\t\t\t"
                        + currencyformatter.format(amount) + "\n";
            } else {
                while (year <= n) {
                    amount = principal * Math.pow(1 + rate, year);
                    output += String.valueOf(year) + "\t\t\t"
                            + currencyformatter.format(amount) + "\n";
                    year = year + 1;
                }
            }

            text.setText(output);
            int Isinfo = JOptionPane.showConfirmDialog(null, "是否投资?");
            if (Isinfo == JOptionPane.YES_OPTION) {
                a[input] = principal;

                b[input] = amount;
                input += 1;
            }
        } else if (b1.getText() != null && b4.getText() != null
                && b3.getText() != null && b2.getText() != null) {
            JOptionPane.showMessageDialog(null, "请删除一个数据");
        } else {
            JOptionPane.showMessageDialog(null, "请增加数据");
        }
    }

    public double CalculateA(int years2,int n2,double principal2,double rate2,double tempprincipal2){
        double amount2 = 0;
        while (years2 <= n2) {
            amount2 = principal2 * Math.pow(1 + rate2, years2)
                    + tempprincipal2;

            years2 = years2 + 1;
        }
        return amount2;
    }
    }

public double CalculateA1(int years2,int n2,double principal2,double rate2,double tempprincipal2){
    double amount2 = 0;
    while (years2 <= n2) {
        amount2 = principal2 * Math.pow(1 + rate2, years2)
                + tempprincipal2;
        years2 = years2 + 1;
    }
    return amount2;
}

private double CalculateA(int year, int n, double principal, double rate,
        double tempprincipal) {
    // TODO 自动生成的方法存根
    return 0;
}

private class c2ActionEventHander implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        b1.setText("");
        b2.setText("");
        b3.setText("");
        text.setText("");
    }
}

public static void main(String[] args)
{
    fuli frame=new fuli();
    frame.setVisible(true);
     int Windowswidth = 500;
     int Windowsheight = 400;
     int width = Toolkit.getDefaultToolkit().getScreenSize().width;
     int height = Toolkit.getDefaultToolkit().getScreenSize().height;
  frame.setResizable(false);
  frame.setLocation((width - Windowswidth) / 2,
          (height - Windowsheight) / 2); // 窗口居中
}
private class c3ActionEventHander implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        String output = "交易记录:存入的本金/获得的收益";
        int i = 0;
        while (a[i] != 0) {
            output = output + "\t\t" + a[i] + "/" + b[i] + "\n";
            i += 1;
        }
        text.setText(output);
    }
}
}

  搭档 126林发http://www.cnblogs.com/linfa/

这次更新主要是把界面做出来,界面的优化和把程序进行部分完善等

时间: 2024-10-11 06:23:44

复利计算-做汉堡,结对2.0-复利计算再升级的相关文章

做汉堡-结对

结对1.0 一.对同伴评价: 1.优点: (1)工作认真仔细,有很好的查错能力: (2)人品不错,有耐心,有助人精神,有团队精神: (3)积极查阅资料: 2.需要改进的地方: (1)对操作系统把控不当,造成操作系统的重装和资料损失.其实意外的话是没办法避免的,对这种情况表示理解. 二.共同点: 我和容杰龙都是对编程有着高度热情的编码人员,对程序框架有着共同的认识. 三.展望: 容杰龙是个十分不错的搭档,我很庆幸一开始选对了结对伙伴,以后的结对将会更加顺利和轻松.

复利计算-做汉堡,结对2.0

在合作过程中尽管会出现许许多多的情况,但不可否认的是,这也是一种很愉快的体验,两个人一起完成一个程序. 优点 1.聪明,能想到一些特殊的方法,以及能想到一些其他人不曾想的方法. 2.想法新颖,提出的想法总是能让人眼前一亮. 3.能干,什么都可以做 改进 做事比较拖拉

复利计算-做汉堡,结对2.

To 董小姐:  I know 我编写的代码有点乱,为了能合作更愉快,午觉没睡重编也无所谓的.代码已经重写好了,比起之前的好多了,快认真看看吧,不懂的就问我吧! 目前你就认真地看代码吧!我们的任务还没完成,所以赶紧的哈!下次的任务有你参与会更好,trust me please! 总结: 结对编程初期,由于两人并没有默契,工作起来进度会有点慢.但也使我们明白了一个人编写的代码确实有点乱,有了结队的相互促进,编写出来的代码质量会更加好,可读性更高.

复利计算器--结对2.0

结对项目:复利计算 搭档:30蔡京航  http://www.cnblogs.com/cjh123/ github:https://github.com/alfredzhu/teamwork 客户在大家的引导下,有了更多的想法: 这个数据我经常会填.....帮我预先填上呗?...... 把界面做得简单漂亮好操作一点呗? 能不能帮我转成个APP,我装到手机上就更方便了? 我觉得这个很有用,很多人可能都需要这些功能,做到我的微信公众号上吧? 能不能不要让我填表单,让我发条消息,或者对着手机说句话就可

做汉堡,结对2.0

送他一个汉堡------------------------------------------------------------- "音乐会迟到五分钟"是怎么变成"王屋村的男人没有一个好东西"的? 情侣夫妻婆媳大战中,从鸡毛蒜皮小事上升到人格问题的例子是不是太多了? 学习软件工程还有助于处理家庭矛盾与社会关系哦. 就事论事是一大法宝,就像Tab缩进会带来不便,没必要扯移山学院都自私一样. 经过一番的结对编程,同学院们对Ta有什么想法呢? 用汉堡包的方式评价一下自

复利计算器再升级

一.客户需求 已完成需求: 1.客户说:帮我开发一个复利计算软件. 2.如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢? 4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢? 5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢

为自己的小伙伴做“汉堡”

在学会了做汉堡的原理之后,结合上次的结对编程的经历,我把队友的的情况根据做汉堡原理分析如下: 第一层: 在做结对编程时,根据实际的情况,我与她进行了一个比较,发现我队友存在一些比我更胜一筹的地方:①在对项目的设计包装的问题上,我队友的设计的布局比我设计位置更加恰当:②某些部分的内容考虑得比较深入: 第二层: 缺点:在做项目的过程中,她负责的那部分做出来的时间比较长,未能按预期的时间完成自身负责的那部分. 第三层: 改进:希望她在做项目的过程中,发挥自身存在的优势,能够按照预定的时间完成自己所负责

退役前的做题记录5.0

退役前的做题记录5.0 出于某种原因新开了一篇. [CodeChef]Querying on a Grid 对序列建立分治结构,每次处理\((l,mid,r)\)时,以\(mid\)为源点建立最短路树,这样跨越\(mid\)的点对之间的最短路一定会经过\(mid\),因此两点之间的最短路径就可以描述成最短路树上的两段到根路径.对每棵最短路树处理\(dfs\)序,用树状数组维护权值修改即可. [Wannafly挑战赛4F]线路规划 类似SCOI2016萌萌哒一题,并查集\(f_{i,j}\)表示从

全功能HTRI 7.0换热器计算软件

全功能HTRI 7.0换热器计算软件 HTRI.Xchanger.suite.V6.00换热器计算    能够对圆筒炉和方箱炉的性能进行模拟计算. Xfh 使用Hottel的区域法来计算加热炉各部位的热辐射和工艺侧的性能.与内含的燃烧室和对流室模型一起能够对燃烧式加热炉进行全面的性能评价.能够对板框式换热器进行设计, 核算和模拟计算, 可以使用自定义板型或者内置的制造厂数据库内的板型:Xist 支持包括所有的标准TEMA类型的计算,并且集成了流动导致的震动计算, 管子排布工具等等.进行空冷器和经