Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need a java program that accumulates test scores and displays number of scores

ID: 3657041 • Letter: I

Question

I need a java program that accumulates test scores and displays number of scores enterered, best score, worst score, and average score. It also uses a GUI. The code I have so far works but will not accumulate more than one score.

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.text.*;



public class StudentScoresApp

{


public static void main(String[] args)

{

JFrame frame = new StudentScoresFrame();

frame.setVisible(true);


}

}


class StudentScoresFrame extends JFrame

{

public StudentScoresFrame()

{

setTitle("Test Scores");

setSize(250,210);

centerWindow(this);

setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new StudentScoresPanel();

add(panel);



}


private void centerWindow(Window w)

{

Toolkit tk = Toolkit.getDefaultToolkit();

Dimension d = tk.getScreenSize();

setLocation((d.width-w.getWidth())/2, (d.height-w.getHeight())/2);

}

}

class StudentScoresPanel extends JPanel implements ActionListener

{


private JButton scoreButton, exitButton, clearButton;


private JLabel testLabel, numberLabel, averageLabel, bestLabel, worstLabel;


private JTextField testField, numberField, averageField, bestField, worstField;


public StudentScoresPanel()

{


setLayout(new BorderLayout());



JPanel displayPanel = new JPanel();

displayPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));


testLabel = new JLabel("Test score:");

displayPanel.add(testLabel);

testField = new JTextField(10);

displayPanel.add(testField);


numberLabel = new JLabel("Number of scores:");

displayPanel.add(numberLabel);

numberField = new JTextField(10);

numberField.setEditable(false);

numberField.setFocusable(false);

displayPanel.add(numberField);


averageLabel = new JLabel("Average score:");

displayPanel.add(averageLabel);

averageField = new JTextField(10);

averageField.setEditable(false);

averageField.setFocusable(false);

displayPanel.add(averageField);


bestLabel = new JLabel("Best score:");

displayPanel.add(bestLabel);

bestField = new JTextField(10);

bestField.setEditable(false);

bestField.setFocusable(false);

displayPanel.add(bestField);


worstLabel = new JLabel("Worst score:");

displayPanel.add(worstLabel);

worstField = new JTextField(10);

worstField.setEditable(false);

worstField.setFocusable(false);

displayPanel.add(worstField);




JPanel buttonPanel = new JPanel();

buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));


scoreButton = new JButton("Enter Score");

scoreButton.addActionListener(this);

buttonPanel.add(scoreButton);


exitButton = new JButton("Exit");

exitButton.addActionListener(this);

buttonPanel.add(exitButton);


clearButton = new JButton("Clear");

clearButton.addActionListener(this);

buttonPanel.add(clearButton);



add(buttonPanel, BorderLayout.SOUTH);

add(displayPanel, BorderLayout.CENTER);

}


public void actionPerformed(ActionEvent e)

{

Object source = e.getSource();

if (source == exitButton)

System.exit(0);

else if (source == scoreButton)

{

double testScore = Double.parseDouble(testField.getText());

double numberValue = calculateScores(testScore);

double averageValue = calculateScores(testScore);

double bestValue = calculateScores(testScore);

double worstValue = calculateScores(testScore);


NumberFormat output = NumberFormat.getInstance();

output.setMaximumFractionDigits(2);

output.setMinimumFractionDigits(2);


averageField.setText(Double.toString(averageValue));

numberField.setText(Double.toString(numberValue));

bestField.setText(Double.toString(bestValue));

worstField.setText(Double.toString(worstValue));

}

}



private double calculateScores(double testScore)

{

double[] scores = null;

double sum = 0.0;

double max = scores[0];

double min = scores[0];

double bestValue = 0.0;

double worstValue = 0.0;

double averageValue = 0.0;

for (int i = 0; i < scores.length; i++)

{

sum += scores[i];

double numberValue = i;

if( scores[i] > max)

{

max = scores[i];

bestValue = i;

}

if (scores[i] < min)

{

min = scores[i];

worstValue = i;

}

}


averageValue = sum/scores.length;

return averageValue;

}

}

Explanation / Answer

please rate - thanks

an array was not needed

I think I've highlighed all changes

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
public class StudentScoresApp
{
public static void main(String[] args)
{JFrame frame = new StudentScoresFrame();
frame.setVisible(true);
}
}
class StudentScoresFrame extends JFrame
{
public StudentScoresFrame()
{setTitle("Test Scores");
setSize(250,210);
centerWindow(this);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new StudentScoresPanel();
add(panel);
}
private void centerWindow(Window w)
{
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
setLocation((d.width-w.getWidth())/2, (d.height-w.getHeight())/2);
}
}
class StudentScoresPanel extends JPanel implements ActionListener
{ double sum=0;
double averageValue;
double bestValue;
double worstValue;
int n=0;

private JButton scoreButton, exitButton, clearButton;
private JLabel testLabel, numberLabel, averageLabel, bestLabel, worstLabel;
private JTextField testField, numberField, averageField, bestField, worstField;
public StudentScoresPanel()
{
setLayout(new BorderLayout());
JPanel displayPanel = new JPanel();
displayPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
testLabel = new JLabel("Test score:");
displayPanel.add(testLabel);
testField = new JTextField(10);
displayPanel.add(testField);
numberLabel = new JLabel("Number of scores:");
displayPanel.add(numberLabel);
numberField = new JTextField(10);
numberField.setEditable(false);
numberField.setFocusable(false);
displayPanel.add(numberField);
averageLabel = new JLabel("Average score:");
displayPanel.add(averageLabel);
averageField = new JTextField(10);
averageField.setEditable(false);
averageField.setFocusable(false);
displayPanel.add(averageField);
bestLabel = new JLabel("Best score:");
displayPanel.add(bestLabel);
bestField = new JTextField(10);
bestField.setEditable(false);
bestField.setFocusable(false);
displayPanel.add(bestField);
worstLabel = new JLabel("Worst score:");
displayPanel.add(worstLabel);
worstField = new JTextField(10);
worstField.setEditable(false);
worstField.setFocusable(false);
displayPanel.add(worstField);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
scoreButton = new JButton("Enter Score");
scoreButton.addActionListener(this);
buttonPanel.add(scoreButton);
exitButton = new JButton("Exit");
exitButton.addActionListener(this);
buttonPanel.add(exitButton);
clearButton = new JButton("Clear");
clearButton.addActionListener(this);
buttonPanel.add(clearButton);
add(buttonPanel, BorderLayout.SOUTH);
add(displayPanel, BorderLayout.CENTER);
}

public void actionPerformed(ActionEvent e)
{Object source = e.getSource();
if (source == exitButton)
System.exit(0);
else if (source == scoreButton)
{double testScore = Double.parseDouble(testField.getText());
n++;
calculateScores(testScore);
NumberFormat output = NumberFormat.getInstance();
output.setMaximumFractionDigits(2);
output.setMinimumFractionDigits(2);
averageField.setText(Double.toString(averageValue));
numberField.setText(Double.toString(n));
bestField.setText(Double.toString(bestValue));
worstField.setText(Double.toString(worstValue));
}
else if(source==clearButton)
    {averageField.setText("");
      numberField.setText("");
     bestField.setText("");
     worstField.setText("");
     testField.setText("");
     }
}
public void calculateScores(double testScore)
{sum+=testScore;
if(n==1)
   {averageValue=testScore;
    bestValue=testScore;
    worstValue=testScore;
    }
else
   {averageValue = sum/n;
    if(testScore>bestValue)
            bestValue=testScore;
    if(testScore<worstValue)
            worstValue=testScore;
   }
}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote