开学刚刚一个月,学习Java也已经有三周。
老师给了下面的实验题目:
某教师需要一个学生成绩计算应用程序。每个学生总评成绩是由平时成绩、期中成绩、期末成绩 和其它成绩组成,其所占比例为:平时成绩30%,期中成绩30%、期末成绩40%,其它成绩为附加成 绩,不能超过10分,是直接添加到上述三项成绩计算的结果中。
目的是:
1.熟悉Java应用程序结构。
2.熟悉伪代码的使用。
3.熟悉使用if控制语句。
4.熟悉使用运算符。
5.熟悉事件处理类的编写方法
首先,简单画下流程图(当然,这些图是我画的,不知有误没有)。
接下来就是伪代码了,伪代码就是用通俗的语言表述代码:
开始
输入成绩:平时成绩,期中成绩,期末成绩,其它成绩
判断平时成绩,期中成绩,期末成绩在0到100之间,其他成绩在0到10之间
计算
输出
这样就行了吧。
下面呢就是示例代码了。
示例代码package me.shage.eleven.first;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import me.shage.eleven.first.ElevenInventory.Btn_Click;
public class Results extends JFrame{
private JTextField txtUsually;
private JTextField txtInterim;
private JTextField txtFinal;
private JTextField txtOther;
private JTextField txtSum;
private JButton btnCal;
public Results()
{
this.setLayout(null);
JLabel lbU=new JLabel("平时成绩");
lbU.setBounds(20, 10, 60, 21);
this.add(lbU);
txtUsually=new JTextField("0");
txtUsually.setBounds(80, 10, 25, 21);
this.add(txtUsually);
JLabel lbI=new JLabel("期中成绩");
lbI.setBounds(110, 10, 60, 21);
this.add(lbI);
txtInterim=new JTextField("0");
txtInterim.setBounds(170, 10, 25, 21);
this.add(txtInterim);
JLabel lbF=new JLabel("期末成绩");
lbF.setBounds(200, 10, 60, 21);
this.add(lbF);
txtFinal=new JTextField("0");
txtFinal.setBounds(260, 10, 25, 21);
this.add(txtFinal);
JLabel lbO=new JLabel("其它成绩");
lbO.setBounds(290, 10, 60, 21);
this.add(lbO);
txtOther=new JTextField("0");
txtOther.setBounds(350, 10, 25, 21);
this.add(txtOther);
JLabel lbS=new JLabel("总成绩");
lbS.setBounds(20, 35, 60, 21);
this.add(lbS);
txtSum=new JTextField("0");
txtSum.setBounds(80, 35, 40, 21);
this.add(txtSum);
btnCal=new JButton("计算");
btnCal.setBounds(300, 35, 60, 21);
this.add(btnCal);
btnCal.addActionListener(new Btn_Click());
this.setSize(420, 112);
this.setVisible(true);
}
class Btn_Click implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double sumResults;
double usuallyResults;
double interimResults;
double finalResults;
double otherResults;
usuallyResults=Double.valueOf(txtUsually.getText());
interimResults=Double.valueOf(txtInterim.getText());
finalResults=Double.valueOf(txtFinal.getText());
otherResults=Double.valueOf(txtOther.getText());
if(usuallyResults>100||usuallyResults<0)
{
JOptionPane.showMessageDialog(null, "平时成绩无效,请重新输入有效分数!");
}
else if(interimResults>100||interimResults<0)
{
JOptionPane.showMessageDialog(null, "期中成绩无效,请重新输入有效分数!");
}
else if(finalResults>100||finalResults<0)
{
JOptionPane.showMessageDialog(null, "期末成绩无效,请重新输入有效分数!");
}
else if(otherResults>10||otherResults<0)
{
JOptionPane.showMessageDialog(null, "其它成绩不能大于10分,请重新输入有效分数!");
}
else
{
sumResults=usuallyResults*0.3+interimResults*0.3+finalResults*0.4+otherResults;
DecimalFormat sum = new DecimalFormat("0.0");//保留一位小数
txtSum.setText(String.valueOf(sum.format(sumResults)));
}
}
}
}