Java练习题4

要求:设计并开发一个可视化的理财计算器;要求能够实现作业一中所有的功能,即能够根据用户输入 的年化收益率,本金,年金,年限等参数计算并在窗口显示出本利和。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 定义理财计算器类
class FinancialCalculator {
	// 计算本利和的方法
	public double calculateTotal(double principal, double annualPayment, double years, double annualInterestRate) {
		for (int i = 0; i < years; i++) {
			principal = principal * (1 + annualInterestRate) + annualPayment;
		}
		return principal;
	}
}

// 定义理财计算器GUI类
public class FinancialCalculatorGUI extends JFrame {
	private FinancialCalculator calculator; // 定义一个FinancialCalculator类型的成员变量

	public FinancialCalculatorGUI() {
		calculator = new FinancialCalculator(); // 初始化计算器对象

		setTitle("理财计算器"); // 设置窗口标题
		setSize(500, 500); // 设置窗口大小
		setAlwaysOnTop(true); // 设置窗口总是在最上层
		setLocationRelativeTo(null); // 设置窗口居中显示

		JPanel panel = new JPanel(); // 创建一个面板
		panel.setLayout(new GridLayout(5, 2)); // 设置面板布局为5行2列
		add(panel); // 将面板添加到窗口

		// 本金(元)标签与输入框
		JLabel principalLabel = new JLabel("本金(元):");
		JTextField principalField = new JTextField(10);
		principalLabel.setFont(new Font("仿宋", Font.PLAIN, 30));
		panel.add(principalLabel);
		panel.add(principalField);

		// 年金(元)标签与输入框
		JLabel annualPaymentLabel = new JLabel("年金(元):");
		JTextField annualPaymentField = new JTextField(10);
		annualPaymentLabel.setFont(new Font("仿宋", Font.PLAIN, 30));
		panel.add(annualPaymentLabel);
		panel.add(annualPaymentField);

		// 年限标签与输入框
		JLabel yearsLabel = new JLabel("年限:");
		JTextField yearsField = new JTextField(10);
		yearsLabel.setFont(new Font("仿宋", Font.PLAIN, 30));
		panel.add(yearsLabel);
		panel.add(yearsField);

		// 年收益率(%)标签与输入框
		JLabel interestRateLabel = new JLabel("年收益率(%):");
		JTextField interestRateField = new JTextField(10);
		interestRateLabel.setFont(new Font("仿宋", Font.PLAIN, 30));
		panel.add(interestRateLabel);
		panel.add(interestRateField);

		// 计算按钮与结果文本框
		JTextField resultField = new JTextField();
		JButton calculateButton = new JButton("计算");
		calculateButton.setBackground(Color.CYAN);
		panel.add(calculateButton);
		panel.add(resultField);

		// 为计算按钮添加事件监听器
		calculateButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 获取用户输入的参数
				double principal = Double.parseDouble(principalField.getText());
				double annualPayment = Double.parseDouble(annualPaymentField.getText());
				double years = Double.parseDouble(yearsField.getText());
				double annualInterestRate = Double.parseDouble(interestRateField.getText()) / 100;

				// 调用计算器的方法计算本利和并显示结果
				double total = calculator.calculateTotal(principal, annualPayment, years, annualInterestRate);
				resultField.setText(String.format("%.2f", total));
			}
		});
		setVisible(true); // 设置窗口可见
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口关闭时退出程序
	}

	public static void main(String[] args) {
		new FinancialCalculatorGUI(); // 创建并显示理财计算器GUI
	}
}


上述代码创建了一个使用Swing库的理财计算器GUI程序。程序中的注释详细说明了每个组件的功能以及代码的执行过程。我们将计算逻辑封装在`FinancialCalculator`类中,并在`FinancialCalculatorGUI`类中创建该类的对象。这样做使代码更易于阅读和维护。
 

猜你喜欢

转载自blog.csdn.net/m0_62526778/article/details/130045308