要求:设计并开发一个可视化的理财计算器;要求能够实现作业一中所有的功能,即能够根据用户输入 的年化收益率,本金,年金,年限等参数计算并在窗口显示出本利和。
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`类中创建该类的对象。这样做使代码更易于阅读和维护。