0311单利复利

package ch1;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class fuli extends JFrame {

    private static final long serialVersionUID = 3347254632537686808L;
    private JLabel a1;             //标签
    private JLabel a2;
    private JLabel a3;
    private JTextField b1;           //本金
    private JTextField b2;           //利率
    private JTextField b3;          //年份
    private JButton c1;             
    private JButton c2;
    private JButton c3;

    private JTextArea text;        // 显示纯文本的多行区域

    public fuli() {
        creatComponents();           //创建零件
        layoutComponents();          //设计零件
        registerHandlers();          //鼠标监控
        setTitle("复利存款应用程序");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
    }

    private void creatComponents() {
        a1 = new JLabel("本 金 ");
        a2 = new JLabel("年利率 ");
        a3 = new JLabel("年 数 ");
        b1 = new JTextField(10);
        b2 = new JTextField(10);
        b3 = new JTextField(10);
        c1 = new JButton("复利");
        c2 = new JButton("清除");
        c3=new JButton("单利");
        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 leftpanel = new JPanel(new GridLayout(4, 1));
        leftpanel.add(panel1);
        leftpanel.add(panel2);
        leftpanel.add(panel3);
        leftpanel.add(panel4);
        JScrollPane panel5 = new JScrollPane(text);
        panel5.setPreferredSize(new Dimension(200, 150));
        add(leftpanel);
        add(panel5);
    }

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

    }

    private class c1ActionEventHander implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            double principal=0;
            double amount;
            double rate;
            int n;
            NumberFormat currencyformatter = NumberFormat.getCurrencyInstance();        //字符串转化为数字
            String output = "年" + "/" + "复利存款";
            int year = 1;
            principal = Double.parseDouble(b1.getText());                            //字符串转化为数字
            rate = Double.parseDouble(b2.getText());
            n = Integer.parseInt(b3.getText());
            while (year <= n) {
                amount = principal * Math.pow(1 + rate, year);
                output += String.valueOf(year) + "\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("");
        }
    }

    private class c3ActionEventHander implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            double principal;
            double amount;
            double rate;
            int n;
            NumberFormat currencyformatter = NumberFormat.getCurrencyInstance();
            String output = "年" + "/" + "单利存款";
            int year = 1;
            principal = Double.parseDouble(b1.getText());
            rate = Double.parseDouble(b2.getText());
            n = Integer.parseInt(b3.getText());
            while (year <= n) {
                amount = principal * (1 + rate* year);
                output += String.valueOf(year) + "\t" + currencyformatter.format(amount) + "\n";
                year = year + 1;
            }
            text.setText(output);
        }
    }
    public static void main(String[] args) {
        fuli frame = new fuli();
        frame.setVisible(true);
        frame.setSize(450, 200);
        frame.setResizable(false);
    }
}

 

posted @ 2016-03-11 09:42  15林志杰  阅读(182)  评论(0编辑  收藏  举报