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

Student Grade Book Application – Keep track of students (with a student class th

ID: 3844641 • Letter: S

Question

Student Grade Book Application – Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class.

I need to use the graphics component of java and am currently unsure of how to start

what i've done so far is below

though I believe that it is utter trash

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.border.Border;

import javax.swing.border.EtchedBorder;

import javax.swing.border.TitledBorder;

public class GradeBookDisplay extends JFrame{

private JRadioButton test;

private JRadioButton assignment;

private ActionListener listener;

JTextField scoreOutOf = new JTextField();

JTextField studentScore = new JTextField();

public GradeBookDisplay(){

class ButtonListener implements ActionListener{

public void actionPerformed(ActionEvent e) {

setNewAverage();

}

}

listener = new ButtonListener();

createControlPanel();

}

//Allows teacher to set the inputed score as a Test or Assignment

public JPanel testOrAssignment(){

test = new JRadioButton("Test");

test.addActionListener(listener);

assignment = new JRadioButton("Assignment");

test.addActionListener(listener);

ButtonGroup group = new ButtonGroup();

group.add(test);

group.add(assignment);

JPanel panelTorA = new JPanel();

panelTorA.add(test);

panelTorA.add(assignment);

panelTorA.setBorder( new TitledBorder(new EtchedBorder(), "Test or Assignment?"));

return panelTorA;

}

public void createControlPanel(){

JPanel scoreType = testOrAssignment();

JPanel controlPanel = new JPanel();

controlPanel.setLayout(new GridLayout(1,1));

scoreOutOf.setBorder( new TitledBorder(new EtchedBorder(), "Out of how many?"));

studentScore.setBorder( new TitledBorder(new EtchedBorder(), "Student Score:"));

controlPanel.add(scoreType);

controlPanel.add(scoreOutOf);

controlPanel.add(studentScore);

add(controlPanel, BorderLayout.NORTH);

int ROWS = 10;

int COLUMNS = 20;

JTextArea textArea = new JTextArea(ROWS, COLUMNS);

add(textArea, BorderLayout.CENTER);

}

Explanation / Answer

package com.swapniljathar; import javax.swing.JOptionPane; import java.util.*; public class GradeBook { public static void main(String[] args){ //INITIALIZE ARRAYLISTS TO DYNAMICALLY HOLD STUDENT NAMES/AVERAGES FOR FINAL OUTPUT ArrayList nameList = new ArrayList(); ArrayList averageList = new ArrayList(); //INITIALIZE COUNTER VARIABLES int studentCounter=0,gradeCount=1; //INITIALIZE VARIABLES FOR HANDLING AND RECEIVING USER INPUT int confirmTest; int grade=0, test=0; String studentName=""; //INITIALIZE CALCULATION VARIABLES AND HELPERS double studentTestAvg=0; double avgSum=0; double classAvg=0; double totalAvg=0; int tempAvg=0; //ROUNDING CONSTANT USED TO ROUND MARK AVERAGES TO TWO DECIMAL PLACES final double ROUNDING_CONSTANT =0.005; //BEGIN PROGRAM AND PROMPT USER FOR INPUT JOptionPane.showMessageDialog(null,"Welcome to the GradeBook Application"); JOptionPane.showMessageDialog(null,"To begin entering student grades press OK"); //DO-WHILE LOOP TO ACCEPT n USERS do{ gradeCount=1; studentName = JOptionPane.showInputDialog("Enter the student's name"); nameList.add(studentName); studentCounter++; studentTestAvg=0; //USER INPUT - THE STUDENT MARK ON THE TEST AND TEST TOTAL ARE RECEIVED SEPARATELY - 4 MARKS MUST BE ENTERED FOR EACH STUDENT do{ grade=Integer.parseInt(JOptionPane.showInputDialog("Enter "+studentName+"'s Test "+gradeCount+" mark")); test=Integer.parseInt(JOptionPane.showInputDialog("Enter the total available marks for Test "+gradeCount)); studentTestAvg +=((double)grade/test)*100; gradeCount++; }while (gradeCount