package pr02; import java.util.*; import java.text.*; public class Course { private String title; private String courseName; private Name instructor; private String semester; private int numQuizzes; private int numLabs; private int numExams; private ArrayList students; private DecimalFormat fmt; public Course(String title, String name, Name inst, String sem, int nLabs, int nQuizzes, int nExams) { this.title = title; courseName = name; instructor = inst; semester = sem; numLabs = nLabs; numQuizzes = nQuizzes; numExams = nExams; students = new ArrayList(); fmt = new DecimalFormat("0.00"); } public String getTitle() { return title; } public String getCourseName() { return courseName; } public Name getInstructor() { return instructor; } public String getSemester() { return semester; } public int getNumLabs() { return numLabs; } public int getNumQuizzes() { return numQuizzes; } public int getNumExams() { return numExams; } public int getNumberOfStudents() { return students.size(); } public void addStudent(String fName, String mInitial, String lName, String id) { Student s; if (findStudentPosition(id) != -1) return; s = new Student(new Name(fName,mInitial,lName), id, numLabs, numQuizzes, numExams); students.add(s); } public void removeStudent(String id) { int pos; pos = findStudentPosition(id); if (pos == -1) return; students.remove(pos); } public void setLabGrade(String id, int which, double score) { int pos; pos = findStudentPosition(id); if (pos == -1) return; students.get(pos).setLabGrade(which ,score); } public void setQuizGrade(String id, int which, double score) { int pos; pos = findStudentPosition(id); if (pos == -1) return; students.get(pos).setQuizGrade(which,score); } public void setExamGrade(String id, int which, double score) { int pos; pos = findStudentPosition(id); if (pos == -1) return; students.get(pos).setExamGrade(which,score); } // search a student by name, id or position private int findStudentPosition(String id) { for (int i=0; i students.get(i).getCourseAverage()) min = students.get(i).getCourseAverage(); return min; } public double getAverage() { if (students.size() == 0) return 0; double sum = 0; for (int i=0; i< students.size(); i++) { sum += students.get(i).getCourseAverage(); } return sum/students.size(); } public void printByName() { sortByName(); System.out.println("Ordered by name"); System.out.println(toString()); } private void sortByName() { // use an insertion sort for (int i=1; i 0 && key.getName().compareTo(students.get(pos-1).getName())<0) { students.set(pos, students.get(pos-1)); pos--; } students.set(pos, key); } public void printById() { sortByID(); System.out.println("Ordered by ID"); System.out.println(toString()); } private void sortByID() { // use an insertion sort for (int i=1; i 0 && key.getId().compareTo(students.get(pos-1).getId())<0) { students.set(pos, students.get(pos-1)); pos--; } students.set(pos, key); } public void printByCourseAverage() { sortByCourseAverage(true); System.out.println("Ordered by Course Average"); System.out.println(toString()); } public void sortByCourseAverage(boolean ascending) { // use an insertion sort for (int i=1; i 0 && key.getCourseAverage()