// A few libraries that we need.
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JFrame;
import java.awt.BorderLayout;
public class StudentTest
{
public static void main(String args[])
{
// Integers.
int totalStudents = 0;
// Input, input, input, name.
String input, name;
// Options for the menu.
int option = 0;
// Lets keep track of the number of students added.
int studentsAdded = 0;
// We get the grades in an array.
int grades[] = new int[3];
JFrame frame = new JFrame();
JFrame frame1 = new JFrame();
JTextArea textArea = new JTextArea(10, 70);
//JScrollPane scrollPanel = new JScrollPane(textArea);
// Can't edit it.
textArea.setEditable(false);
// We want a nice menu.
MenuController menu = new MenuController();
// Nice headers.
menu.addMenuHeader("Welcome to BMCC Student Grades Management Center");
// This is what we are allowed to do.
menu.addMenuItem("Add a Student");
menu.addMenuItem("Students Grades Report");
menu.addMenuItem("Students Highest Grades Report");
menu.addMenuExitItem("Exit");
// Before anything else lets just find out how many students we want to add.
do
{
input = JOptionPane.showInputDialog("How many students do you want to manage?");
// /JOptionPane.showMessageDialog(null, input);
if (input.equals(""))
JOptionPane.showMessageDialog(null, "You must enter a valid number.");
else
totalStudents = Integer.parseInt(input);
}
while (input.equals(""));
// We want students.
Student stu[] = new Student[totalStudents];
do
{
// Lets tell them how many students they have added.
menu.addMenuFooter("You have added " + studentsAdded + " out of " + totalStudents + ".");
// Lets get the input.
input = JOptionPane.showInputDialog(menu.getMenuItemsString());
if (input == null)
break;
else
option = Integer.parseInt(input);
// Lets add the student.
if (option == 1)
{
if (studentsAdded >= totalStudents)
{
JOptionPane.showMessageDialog(null, "You can't add anymore students.");
continue;
}
name = readName();
grades = readGrades();
stu[studentsAdded++] = new Student(name, grades);
}
else if (option == 2)
{
// Get the students.
//textArea.setText("");
//textArea.append(getStudentsReport(stu, studentsAdded));
JScrollPane scrollPanel = new JScrollPane(getStudentsReport(stu, studentsAdded));
// Some settings for the frame.
frame.add(scrollPanel, BorderLayout.CENTER);
frame.setSize(600, 200);
frame.setVisible(true);
frame.setTitle("Students Grades by Juan Hernandez");
//JOptionPane.showMessageDialog(null, scrollPanel);
}
else if (option == 3)
{
// Get the students.
//textArea.setText("");
//textArea.append(getStudentsHighestGradeReport(stu, studentsAdded));
//JOptionPane.showMessageDialog(null, scrollPanel);
JScrollPane scrollPanel1 = new JScrollPane(getStudentsHighestGradeReport(stu, studentsAdded));
// Some settings for the frame.
frame1.add(scrollPanel1, BorderLayout.CENTER);
frame1.setSize(400, 200);
frame1.setVisible(true);
frame1.setAlwaysOnTop(true);
frame1.setTitle("Students Highest Grades by Juan Hernandez");
}
else if (option != 4)
JOptionPane.showMessageDialog(null, "Please select a valid option.");
}
while (option != menu.getExitStep());
}
/**
* Reads and returns the name from the keyboard.
* @return
*/
public static String readName()
{
return JOptionPane.showInputDialog("Enter the name of the student: ");
}
/**
* Gets 3 grades for the students.
* @return the grades in an array.
*/
public static int[] readGrades()
{
// We store in an array to return in an array.
int grades[] = new int[3];
for (int i = 0; i < grades.length; i++)
grades
= Integer.parseInt(JOptionPane.showInputDialog("Enter grade: " + (i + 1) + ": "));
return grades;
}
/**
* Generates a report of grades for the students.
* @param stu
* @param studentsAdded
* @return
*/
public static JTable getStudentsReport(Student stu[], int studentsAdded)
{
// The objects for the table.
Object columnNames[] = {"Name", "Grade 1", "Grade 2", "Grade 3", "Average", "Performance"};
// Lets do some work to just render the rows used.
Object rowData[][] = new Object[stu.length > studentsAdded ? studentsAdded : stu.length][columnNames.length];
for (int i = 0; i < stu.length; i++)
{
// If we want to check the reports before we add all the students,
// then we need to exit before the end of the array.
if (i == studentsAdded && i < stu.length)
break;
// Add the data.
rowData rowData[1] = stu.getGrades(0);
rowData[2] = stu.getGrades(1);
rowData[3] = stu.getGrades(2);
rowData[4] = stu.findAverage();
rowData[5] = stu.whatLetterGrade(stu.findAverage());
}
// Table time.
JTable table = new JTable(rowData, columnNames);
return table;
}
public static JTable getStudentsHighestGradeReport(Student stu[], int studentsAdded)
{
//String students = "\tSTUDENTS HIGHEST GRADES by Juan Hernandez";
//students += "\nNAME\t\tGRADE";
Object columnNames1[] = {"Name", "Grade"};
Object rowData1[][] = new Object[stu.length > studentsAdded ? studentsAdded : stu.length][columnNames1.length];
for (int i = 0; i < stu.length; i++)
{
// If we want to check the reports before we add all the students,
// then we need to exit before the end of the array.
if (i == studentsAdded && i < stu.length)
break;
rowData1 rowData1[1] = stu.getHighestGrade(stu.getGrades());
}
JTable table1 = new JTable(rowData1, columnNames1);
return table1;
}
}