• 0311软件工程复利软件单利及期望值的实现


    package ch1;
    
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.GridLayout;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.text.NumberFormat;
    
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    
    import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;
    
    
    
    
    
    public class fuli extends JFrame {
    
    	private static final long serialVersionUID = 3347254632537686808L;
    	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 toolbar = new JPanel();
    	public fuli() {
    		setTitle("复利存款应用程序");
    		creatComponents(); // 创建零件
    		layoutComponents(); // 设计零件
    		registerHandlers(); // 鼠标监控
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		pack();
    	}
    
    	private void creatComponents() {
    		a1 = new JLabel("本 金 ");
    		a2 = new JLabel("年利率 ");
    		a3 = new JLabel("年 数 ");
    		a4 = new JLabel("期望值");
    		b1 = new JTextField(10);
    		b2 = new JTextField(10);
    		b3 = new JTextField(10);
    		b4 = 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 panel6 = new JPanel();
    		panel6.add(a4);
    		panel6.add(b4);
    
    		JPanel leftpanel = new JPanel(new GridLayout(3, 1));
    		leftpanel.add(panel1);
    		leftpanel.add(panel2);
    		leftpanel.add(panel3);
    
    		leftpanel.add(panel6);
    		JScrollPane panel5 = new JScrollPane(text);
    		panel5.setPreferredSize(new Dimension(400, 200));
    
    		toolbar.add(c1);
    		toolbar.add(c2);
    		toolbar.add(c3);
    
    		
    		add(leftpanel);
    		add(panel5);
    		add(toolbar, BorderLayout.EAST);
    
    	}
    
    	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;
    			double amount;
    			double rate;
    			int n;
    			NumberFormat currencyformatter = NumberFormat.getCurrencyInstance(); // 字符串转化为数字
    			String output = "年" + "/" + "复利存款";
    			int year =1;
    			rate = Double.parseDouble(b2.getText());
    			n = Integer.parseInt(b3.getText());
    			if(b1.getText().equals(""))
    			{
    				if (b4.getText().equals(""))
    				{
    					JOptionPane.showMessageDialog(null, "请输入本金或者期望值");
    					
    				}
    				else{
    					amount = Double.parseDouble(b4.getText());
    					principal=0;
    					while (year <= n) {
    						principal=amount/(Math.pow(1 + rate, year));
    						year = year + 1;
    					}
    					
    					output="本金"+currencyformatter.format(principal) + "
    ";
    					text.setText(output);
    				}
    			}
    			else {
    				principal = Double.parseDouble(b1.getText()); // 字符串转化为数字
    				
    				if (b4.getText().equals("")) {
    					while (year <= n) {
    						amount = principal * Math.pow(1 + rate, year);
    						output += String.valueOf(year) + "			"
    								+ currencyformatter.format(amount) + "
    ";
    						year = year + 1;
    					}
    
    					text.setText(output);
    				}
    				else{
    					JOptionPane.showMessageDialog(null, "本金和期望值输入一个即可");
    				}
    			}
    			
    		}
    	}
    
    	private class c2ActionEventHander implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			b1.setText("");
    			b2.setText("");
    			b3.setText("");
    			b4.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;
    			
    			rate = Double.parseDouble(b2.getText());
    			n = Integer.parseInt(b3.getText());
    			if(b1.getText().equals(""))
    			{
    				if (b4.getText().equals(""))
    				{
    					JOptionPane.showMessageDialog(null, "请输入本金或者期望值");
    					
    				}
    				else{
    					amount = Double.parseDouble(b4.getText());
    					principal=0;
    					while (year <= n) {
    						principal = amount / (1 + rate* year);
    						year = year + 1;
    					}
    					
    					output="本金"+currencyformatter.format(principal) + "
    ";
    					text.setText(output);
    				}
    			}
    			else {
    				principal = Double.parseDouble(b1.getText()); // 字符串转化为数字
    				
    				if (b4.getText().equals("")) {
    					while (year <= n) {
    						amount = principal * (1 + rate* year);
    						output += String.valueOf(year) + "			"
    								+ currencyformatter.format(amount) + "
    ";
    						year = year + 1;
    					}
    
    					text.setText(output);
    				}
    				else{
    					JOptionPane.showMessageDialog(null, "本金和期望值输入一个即可");
    				}
    			}
    			
    		}
    	}
    	
    	
    	
    
    
    	public static void main(String[] args) {
    		int Windowswidth=500;
    		int Windowsheight=400;
    		fuli frame = new fuli();
    		frame.setVisible(true);
    		frame.setSize(Windowswidth, Windowsheight);
    		frame.setResizable(false);
    		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
    		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
    		frame.setLocation((width-Windowswidth )/ 2, (height-Windowsheight)/ 2);        //窗口居中
    		
    	}
    }
    

      界面及运行结果

  • 相关阅读:
    github分支规范
    前端工程师为什么要学习编译原理?
    现代编译原理——第六章:中间树 IR Tree 含源码
    现代编译原理——第五章:活动记录
    现代编译原理——第四章:语义分析以及源码
    现代编译原理——第三章:抽象语法树以及源码
    现代编译原理——第二章:语法分析之LL(K)
    现代编译原理——第1章:词法分析
    现代编译原理——第0章
    优雅的数组降维——Javascript中apply方法的妙用
  • 原文地址:https://www.cnblogs.com/15linzhijie/p/5267540.html
Copyright © 2020-2023  润新知