/*Filename: P_Supplemental_11.java
* Created: November 7, 2012
* Author: Dustin Hunt
* Purpose: Create a form using a border layout with a FileChooser and two buttons*/
package p_supplemental_11;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class P_Supplemental_11 extends JFrame {
JPanel jpnl1 = new JPanel();
JPanel southPanel = new JPanel();
JButton jbtReadFile1 = new JButton("Get Student Names");
JButton jbtReadFile2 = new JButton("Get Student Grades");
JTextField jtxtFilePath = new JTextField();
JLabel jlblDesc = new JLabel("Click a button to open each file!");
JTextArea jtxtAfileContents = new JTextArea();
P_Supplemental_11() {
this.setLayout(new BorderLayout(5, 10));
jpnl1.setLayout(new GridLayout(2, 2));
jpnl1.add(jlblDesc);
//jpnl1.add(jtxtFilePath);
southPanel.add(jbtReadFile1);
southPanel.add(jbtReadFile2);
add(southPanel, BorderLayout.SOUTH);
add(jpnl1, BorderLayout.NORTH);
add(jtxtAfileContents, BorderLayout.CENTER);
jbtReadFile1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jbtReadFileActionPerformed(evt);
}
});
jbtReadFile2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jbtReadFileActionPerformed2(evt);
}
});
} // end constructor
class Student {
private int stuId;
private String stuName;
private ArrayList<Double> grades;
Student(int idIn, String nameIn) {
this.stuId = idIn;
this.stuName = nameIn;
} // end student class
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public ArrayList<Double> getGrades() {
return grades;
}
public void setGrades(ArrayList grades) {
this.grades = grades;
}
} // end class Student
ArrayList<Student> students = new ArrayList();
private void jbtReadFileActionPerformed(ActionEvent evt) {
try {
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
java.io.File file = fileChooser.getSelectedFile();
Scanner input = new Scanner(file);
StringBuilder output = new StringBuilder();
while(input.hasNext()) {
students.add(new Student(input.nextInt(),input.nextLine()));
} // end while
jtxtAfileContents.setText(output.toString());
input.close();
} // end if
}// end action method for jbtReadFile button
catch (FileNotFoundException ex) {
Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void jbtReadFileActionPerformed2(ActionEvent evt) {
try {
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
java.io.File file = fileChooser.getSelectedFile();
Scanner input = new Scanner(file);
while (input.hasNext()) {
students.add(new Student(input.nextInt(), input.nextLine()));
} // end while
for (int o = 0; o < students.size(); o++) {
students.get(o).setGrades(collectGrades(students.get(o).getStuId()));
StringBuilder output = new StringBuilder();
output.append(students.get(o).getStuId());
output.append(students.get(o).getStuName());
output.append(averageGrade(students.get(o).getGrades()));
jtxtAfileContents.setText(output.toString());
}
} // end for
} // end action method for jbtReadFile button
catch (FileNotFoundException ex) {
Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static ArrayList<Double> collectGrades(int inId) {
ArrayList<Double> outGrade = new ArrayList();
try {
File inFile = new File("c:/temp/studentScores.txt");
Scanner input = new Scanner(inFile);
while (input.hasNext()) {
int tmpInt = input.nextInt();
double tmpDbl = input.nextDouble();
if (tmpInt == inId) {
outGrade.add(tmpDbl);
} // end if
} // end while
} catch (FileNotFoundException ex) {
Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null, ex);
} // end catch
return outGrade;
} // end method
public static double averageGrade(ArrayList<Double> gradeIn) {
double outAvg = 0.0;
for (int y = 0; y < gradeIn.size(); y++) {
outAvg += gradeIn.get(y);
} // end for
return outAvg / gradeIn.size();
}
public static void main(String[] args) {
P_Supplemental_11 frame = new P_Supplemental_11();
frame.setTitle("P_Supplemenetal_10");
frame.setSize(410, 520);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
} // end main
} // end public class P_Supp_11