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

There are several text files which contain students’ first name, last name, and

ID: 3635915 • Letter: T

Question

There are several text files which contain students’ first name, last name, and GPA. Write a program that combines all student records into one file and displays the highest GPA, the lowest GPA, and the average GPA of all students in the combined file.

Note: Your program must be able to combine any number of source files

a. Coding: Copy and Paste Source Code.
• Write comments for your program
• Program source code

• Run your program with different numbers of arguments, e.g., 2 source files, 3 source files, 4 source files, etc.
• Create source text files and make sure each source file have at least 10 records.


Explanation / Answer

Source Code: import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.text.DecimalFormat; public class GPACalculator extends JFrame { char letterGrade; double credits, creditGrade, GPA, points = 0.0, totalCredits = 0.0; private JButton calcButton, clearButton; private JLabel gradeDisplay, creditsDisplay, messageDisplay; private JTextField gradeField, creditsField; private JPanel panelTop, panelMid, panelLow; private int WINDOW_WIDTH = 300, WINDOW_HEIGHT = 200; boolean result = true, cResult = true; String display; public GPACalculator() { super(”GPA Calculator”); setSize(WINDOW_WIDTH, WINDOW_HEIGHT); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(3, 1)); gradeDisplay = new JLabel(”Grade”); gradeField = new JTextField(4); creditsDisplay = new JLabel(”Credits”); creditsField = new JTextField(4); calcButton = new JButton(”Calculate”); clearButton = new JButton(”Clear”); calcButton.addActionListener(new ButtonListener()); clearButton.addActionListener(new ButtonListener()); panelTop = new JPanel(); panelTop.add(gradeDisplay); panelTop.add(gradeField); panelTop.add(creditsDisplay); panelTop.add(creditsField); messageDisplay = new JLabel(display); panelMid = new JPanel(); panelMid.add(messageDisplay); panelLow = new JPanel(); panelLow.add(calcButton); panelLow.add(clearButton); add(panelTop); add(panelMid); add(panelLow); setVisible(true); letterGrade = ‘ ‘; credits = 0; } public boolean setLetterGrade(char lG) { switch (lG) { case ‘a’: case ‘A’: letterGrade = ‘A’; result = true; break; case ‘b’: case ‘B’: letterGrade = ‘B’; result = true; break; case ‘c’: case ‘C’: letterGrade = ‘C’; result = true; break; case ‘d’: case ‘D’: letterGrade = ‘D’; result = true; break; case ‘f’: case ‘F’: letterGrade = ‘F’; result = true; break; default: result = false; break; } return result; } public boolean setCredits(double cr) { boolean result = true; if (cr < .25 || cr > 6) cResult = false; else cResult = true; return cResult; } public char getLetterGrade() { setLetterGrade(letterGrade); return letterGrade; } public double getCredits() { setCredits(credits); return credits; } public double getCreditGrade(char letterGrade) { if (letterGrade == ‘A’) creditGrade = 4.0; else if (letterGrade == ‘B’) creditGrade = 3.0; else if (letterGrade == ‘C’) creditGrade = 2.0; else if (letterGrade == ‘D’) creditGrade = 1.0; else if (letterGrade == ‘F’) creditGrade = 0.0; else result = false; return creditGrade; } public double calcGPA() { points += getCreditGrade(letterGrade) * credits; totalCredits += credits; GPA = points / totalCredits; return GPA; } private class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent a) { String readGrade, readCredits, buttonAction = a.getActionCommand(); if (buttonAction == “Calculate”) { readGrade = gradeField.getText(); letterGrade = readGrade.charAt(0); setLetterGrade(letterGrade); if (result == false) { display = “Letter grade must be a, b, c, d, or f. ” + “Otherwise, place cursor at beginning of field ” + “and retype the letter.”; messageDisplay.setText(display); } try { readCredits = creditsField.getText(); credits = Double.parseDouble(readCredits); setCredits(credits); if (cResult == false) { display = “Credits must be between .25 and 6 inclusive.”; messageDisplay.setText(display); } } catch (NumberFormatException nfe) { display = “Credits should be a number.”; messageDisplay.setText(display); result = false; } if (result == true && cResult == true) { calcGPA(); messageDisplay.setText(”New GPA is: ” +GPA); } } if (buttonAction == “Clear”) { points = 0.0; totalCredits = 0.0; gradeField.setText(”"); creditsField.setText(”"); display = “”; messageDisplay.setText(display); } } } public static void main (String [] args) { new GPACalculator(); } }