// ********************************************* client program import java.util.Scanner; import java.net.*; import java.io.*; public class CompositionDemo6 { public static void main(String[] args) { Student[] classRoster = new Student[5]; // class of 5 students loadData("http://dl.dropbox.com/u/28874140/CompositionDemo6Data.txt", classRoster); // see Mr. Minich to learn how to store your own data text file in the Public folder of your dropbox.com account // display all information for (int i = 0; i < classRoster.length; i++) { System.out.println(classRoster[i]); } // using linear search to find class valedictorian double maxGPA = classRoster[0].computeGPA(); Name nameOfStudentWithMaxGPA = classRoster[0].getName(); for (int i = 1; i < classRoster.length; i++) { double nextStudentGPA = classRoster[i].computeGPA(); if (nextStudentGPA > maxGPA) { maxGPA = nextStudentGPA; nameOfStudentWithMaxGPA = classRoster[i].getName(); } } System.out.println(nameOfStudentWithMaxGPA.getFirstName() + " " + nameOfStudentWithMaxGPA.getLastName() + " is the class valedictorian with a gpa of " + maxGPA); // input a student's name and the name of a class Scanner keyboard = new Scanner(System.in); System.out.print("Enter a student's last name (e.g. Smith): "); String lastName = keyboard.nextLine(); System.out.print("Enter a student's first name: "); String firstName = keyboard.nextLine(); System.out.print("Enter a course (e.g. English): "); String course = keyboard.nextLine(); // display what class period he/she attends that course for (int studentNum = 0; studentNum < classRoster.length; studentNum++) { if (classRoster[studentNum].getName().getLastName().equals(lastName) && classRoster[studentNum].getName().getFirstName().equals(firstName)) { for (int period = 0; period < classRoster[studentNum].getSchedule().length; period++) { if (classRoster[studentNum].getSchedule()[period].equals(course)) { System.out.println("He/she has " + course + " class during period: " + (period + 1)); } } } } // input a student's last name, first name, a class period, and a semester number (1 or 2) System.out.print("Enter a student's last name: "); lastName = keyboard.nextLine(); System.out.print("Enter a student's first name: "); firstName = keyboard.nextLine(); System.out.print("Enter a class period (1, 2, 3, or 4): "); int classPeriod = keyboard.nextInt(); System.out.print("Enter a semester number (1 or 2): "); int semesterNum = keyboard.nextInt(); // display that semester's grade percent for (int studentNum = 0; studentNum < classRoster.length; studentNum++) { if (classRoster[studentNum].getName().getLastName().equals(lastName) && classRoster[studentNum].getName().getFirstName().equals(firstName)) { int grade = classRoster[studentNum].getGrades()[classPeriod - 1][semesterNum - 1]; System.out.println("His/her gpa in that class in that semester was: " + grade); } } // Part 4 // pseudocode: // loop through all students // get this student's grades for each class and each semester // add each grade to the running total // display overall average by dividing running total by the count of grades that were added // Part 5 // pseudocode: // you figure it out // Part 6 // Part 7 keyboard.close(); } private static void loadData(String webPageAddress, Student[] classRoster) { try { URL url = new URL(webPageAddress); Scanner in = new Scanner(url.openStream()); int studentNum = 0; while (in.hasNextLine()) { String first = in.nextLine(); String last = in.nextLine(); int gradeLevel = in.nextInt(); in.nextLine(); String course1 = in.nextLine(); String course2 = in.nextLine(); String course3 = in.nextLine(); String course4 = in.nextLine(); int course1Semester1grade = in.nextInt(); int course1Semester2grade = in.nextInt(); in.nextLine(); int course2Semester1grade = in.nextInt(); int course2Semester2grade = in.nextInt(); in.nextLine(); int course3Semester1grade = in.nextInt(); int course3Semester2grade = in.nextInt();in.nextLine(); int course4Semester1grade = in.nextInt(); int course4Semester2grade = in.nextInt(); if (in.hasNextLine()) in.nextLine(); classRoster[studentNum] = new Student(new Name(first, last), gradeLevel, new String[]{course1, course2, course3, course4}, new int[][]{{course1Semester1grade, course1Semester2grade}, {course2Semester1grade, course2Semester2grade}, {course3Semester1grade, course3Semester2grade}, {course4Semester1grade, course4Semester2grade}}); studentNum++; } in.close(); } catch (MalformedURLException me) { System.err.println(me); } catch (IOException ioe) { System.err.println(ioe); } } } ///////////////////////////////////////////////// Name class class Name { // ************************************ instance fields private String myFirstName; private String myLastName; // ************************************ constructors public Name(String first, String last) { myFirstName = first; myLastName = last; } // ************************************ accessor methods public String getLastName() { return myLastName; } public String getFirstName() { return myFirstName; } // ************************************ modifier methods public void setFirstName(String first) { myFirstName = first; } public void setLastName(String last) { myLastName = last; } // *********************************** interesting methods public String toString() { return myFirstName + " " + myLastName; } } /////////////////////////////////////////// Student class class Student { // ************************************ instance fields private Name myName; private int myGradeLevel; private String[] mySchedule; private int[][] myGrades; // ************************************ constructors public Student(Name name, int gradeLevel, String[] schedule, int[][] grades) { myName = name; myGradeLevel = gradeLevel; mySchedule = schedule; myGrades = grades; } // ************************************ accessor methods public Name getName() { return myName; } public int getGradeLevel() { return myGradeLevel; } public String[] getSchedule() { return mySchedule; } public int[][] getGrades() { return myGrades; } // *********************************** interesting methods public String scheduleList() { String listOfClasses = ""; for (int i = 0; i < mySchedule.length; i++) { listOfClasses = listOfClasses + " " + mySchedule[i]; } return listOfClasses; } public String displayGrades() { String listOfGrades = ""; for (int course = 0; course < mySchedule.length; course++) { listOfGrades = listOfGrades + mySchedule[course] + " "; for (int semester = 0; semester < myGrades[course].length; semester++) { listOfGrades = listOfGrades + "S" + (semester + 1) + "=" + myGrades[course][semester] + " "; } } return listOfGrades; } /** Computes a student's grade point average (gpa). precondition: none postcondition: Returns the sum of all grade percents in myGrade. @return the average of all grade percents in myGrade. */ public double computeGPA() { double sum = 0; // sum of all semester grades double average = 0; // grade point average for (int course = 0; course < myGrades.length; course++) { for (int semester = 0; semester < myGrades[course].length; semester++) { sum += myGrades[course][semester]; } } average = sum / (myGrades.length * myGrades[0].length); return average; } public String toString() { return myName.toString() + " " + myGradeLevel + " " + displayGrades(); } }