1.0 2.0 3.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.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 JTextArea text;
private JPanel toolbar = new JPanel();
private AbstractButton mrButton;
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));
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);
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);
}

private class c1ActionEventHander implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        double principal;
        double amount;
        double rate;
        int n;
        NumberFormat currencyformatter = NumberFormat.getCurrencyInstance();
        String output = "年" + "/" + "复利存款";
        int year = 1;          
        if (b1.getText().equals("")&& b2.getText() != null
                && b3.getText() != null && b4.getText() != null) {
            
            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);
            
        }

        else if (b2.getText().equals("") && b1.getText() != null
                && b3.getText() != null && b4.getText() != null) 
        {
            principal = Double.parseDouble(b1.getText()); 
            rate =0;
            n = Integer.parseInt(b3.getText()); 
            amount = Double.parseDouble(b4.getText()); 
            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) 
        {
            principal = Double.parseDouble(b1.getText());
            amount = Double.parseDouble(b4.getText());
            rate = Double.parseDouble(b2.getText());
            int n2=1;
              while(principal<amount){
                  principal=principal * Math.pow(1 + rate, n2);
                  n2+=1;
              }
              output = "至少年数" + n2+"\n";
              text.setText(output);
        }

        else if (b4.getText().equals("") && b1.getText() != null
                && b3.getText() != null && b2.getText() != null) // 求期望值
        {
            rate = Double.parseDouble(b2.getText());
            n = Integer.parseInt(b3.getText());
            principal = Double.parseDouble(b1.getText()); // b1本金
            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);
        }
    }

}

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); // 窗口居中
}
}

  

 

所用语言与工具:Java

代码行:251行

工作量(人时):3个小时

计算还不能进行,做出了初步的框架。鼠标键盘监听没弄出来,导致按键无效。经过这两个星期的学习,发现知识点基本都是差不多的,计算公式的不同,导致了结果的不同

 

posted @ 2016-03-17 22:14  25陈庆祥  阅读(220)  评论(0编辑  收藏  举报