📅  最后修改于: 2023-12-03 15:06:52.431000             🧑  作者: Mango
这是一个使用Java Swing编写的学生成绩计算器。它可以帮助用户计算他们的平均分数,课程GPA和绩点等信息。这个应用程序是使用MVC模式(Model-View-Controller)开发的,它将数据和用户界面分开,同时保持逻辑一致性。
这个应用程序的GUI界面使用简单的布局来显示文本标签和文本框。它有一个按钮,当按钮按下时,会触发计算平均分数和课程GPA的方法。这个计算器有三个文本框,用户可以在这些文本框中输入他们的三个成绩。右侧还有一个文本区域,用于显示计算后的结果。
这个应用程序是用Java Swing编写的。它使用MVC模式,并且将UI组件和逻辑组件分开。这种设计使应用程序易于扩展和维护。在代码中,我们使用了一些Java Swing组件,例如JLabel,JTextField,JButton 和 JTextArea等,以构建用户界面。我们还使用了事件监听器(ActionListener)来处理用户界面事件和呈现计算后的结果。在Model部分,我们定义了一个NameValue数据结构来保留每门成绩的详细信息。在Controller部分,我们编写了一个方法来计算平均分数,课程GPA和绩点。在View部分,我们编写了一个方法来呈现并更新用户界面。
在当前的实现中,我们只能计算三个成绩的平均分数,这是不够灵活的。我们可以通过增加更多的文本框来使应用程序具有更大的灵活性。此外,我们可以考虑实现“撤销”和“重做”功能,以便用户可以更轻松地更正错误。我们还可以添加一些图表,以便用户可以更好地了解他们的成绩分布。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
private double score1, score2, score3;
private JFrame frame;
private JLabel label1, label2, label3, resultLabel;
private JTextField field1, field2, field3;
private JTextArea resultArea;
private JButton button;
public Calculator() {
frame = new JFrame("Grade Calculator");
label1 = new JLabel("Score 1:");
field1 = new JTextField(6);
label2 = new JLabel("Score 2:");
field2 = new JTextField(6);
label3 = new JLabel("Score 3:");
field3 = new JTextField(6);
button = new JButton("Calculate");
resultLabel = new JLabel("Results:");
resultArea = new JTextArea(10, 20);
}
public void createAndShowGUI() {
JPanel panel = new JPanel();
panel.add(label1);
panel.add(field1);
panel.add(label2);
panel.add(field2);
panel.add(label3);
panel.add(field3);
panel.add(button);
panel.add(resultLabel);
panel.add(resultArea);
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
score1 = Double.parseDouble(field1.getText());
score2 = Double.parseDouble(field2.getText());
score3 = Double.parseDouble(field3.getText());
double average = (score1 + score2 + score3) / 3.0;
double totalPoints = scoreToPoints(score1) + scoreToPoints(score2) + scoreToPoints(score3);
double courseGPA = totalPoints / 9.0;
String output = "Average: " + average + "\nCourse GPA: " + courseGPA;
resultArea.setText(output);
}
});
}
private double scoreToPoints(double score) {
if (score >= 93.0) {
return 4.0;
} else if (score >= 88.0) {
return 3.5;
} else if (score >= 82.0) {
return 3.0;
} else if (score >= 76.0) {
return 2.5;
} else if (score >= 70.0) {
return 2.0;
} else if (score >= 60.0) {
return 1.0;
} else {
return 0.0;
}
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.createAndShowGUI();
}
}