diff --git a/src/main/java/lannguyen/Instructor.java b/src/main/java/lannguyen/Instructor.java new file mode 100644 index 0000000..c024dd8 --- /dev/null +++ b/src/main/java/lannguyen/Instructor.java @@ -0,0 +1,42 @@ +package lannguyen; + +import java.util.ArrayList; + +///Instructor extends Person +//// +////Additional fields: department +////Methods: getSummary(), createAnnouncement(String message) +////Instructor should also be able to hold a list of assigned Student objects with the ability to add students and print a roster. +//// +////Dr. Rivera's Roster: +//// - Jordan Smith | Grade Level: 2 | GPA: 3.8 +//// - Marcus Brown | Grade Level: 1 | GPA: 2.9 +/// +public class Instructor extends Person { + String department; + + private ArrayList students; + + public Instructor(String firstName, String lastName, String department) { + super(firstName, lastName); + this.department = department; + this.students = new ArrayList<>(); + } + + public void addStudent(Student student) { + students.add(student); + } + + public void printRoster() { + System.out.println(getFullName() + "'s Roster:"); + for (Student s : students) { + System.out.println(" - " + s.getSummary()); + } + } + + @Override + public String getSummary() { + return "[Instructor] " + getFullName() + + " | Department: " + department; + } +} \ No newline at end of file diff --git a/src/main/java/lannguyen/Person.java b/src/main/java/lannguyen/Person.java new file mode 100644 index 0000000..9b8da22 --- /dev/null +++ b/src/main/java/lannguyen/Person.java @@ -0,0 +1,45 @@ +package lannguyen; +//Fields: id, firstName, lastName, email +//Method: getSummary() +/*Requirements +All fields must be private +All classes require a constructor +Person must be abstract +getSummary() must be overridden in each subclass +No instanceof checks in your loop*/ + +abstract class Person { + private int id; + private String firstName; + private String lastName; + private String email; + + public Person(String firstName, String lastName) { + + this.firstName = firstName; + this.lastName = lastName; + + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFullName() { + return firstName + " " + lastName; + } + + public abstract String getSummary(); +} \ No newline at end of file diff --git a/src/main/java/lannguyen/School.java b/src/main/java/lannguyen/School.java new file mode 100644 index 0000000..5e7bfa4 --- /dev/null +++ b/src/main/java/lannguyen/School.java @@ -0,0 +1,35 @@ +package lannguyen; + +import java.util.ArrayList; +import java.util.List; +//School class that holds a list of Student objects and a list of Instructor objects. +// It should support adding both and printing a full directory. +class School { + + private ArrayList students; + private ArrayList instructors; + + public School() { + students = new ArrayList<>(); + instructors = new ArrayList<>(); + } + + public void addStudent(Student student) { + students.add(student); + } + + public void addInstructor(Instructor instructor) { + instructors.add(instructor); + } + + public void printDirectory() { + System.out.println("School Directory: "); + + for (Student s : students) { + System.out.println(s.getSummary()); + } + for (Instructor i : instructors) { + System.out.println(i.getSummary()); + } + } +} \ No newline at end of file diff --git a/src/main/java/lannguyen/Student.java b/src/main/java/lannguyen/Student.java new file mode 100644 index 0000000..b3b9355 --- /dev/null +++ b/src/main/java/lannguyen/Student.java @@ -0,0 +1,50 @@ +package lannguyen; +//Student extends Person +// +//Additional fields: gradeLevel, gpa +//Methods: getSummary(), isOnHonorRoll() + +public class Student extends Person { + int gradeLevel; + double gpa; + + public int getGradeLevel() { + return gradeLevel; + } + + public void setGradeLevel(int gradeLevel) { + this.gradeLevel = gradeLevel; + } + + public double getGpa() { + return gpa; + } + + public void setGpa(double gpa) { + this.gpa = gpa; + } + + public Student(String firstName, String lastName, int gradeLevel, double gpa) { + super(firstName, lastName); + this.gradeLevel = gradeLevel; + this.gpa = gpa; + + } + public boolean isHonorRoll() { + return gpa >= 3.5; + } + + @Override + public String getSummary() { + return "[Student] " + getFullName() + + " | Grade Level: " + gradeLevel + + " | GPA: " + gpa + + " | Honor Roll: " + + (isHonorRoll() ? "Yes" : "No"); + } + } + + + + + diff --git a/src/main/java/lannguyen/main.java b/src/main/java/lannguyen/main.java new file mode 100644 index 0000000..1eddbce --- /dev/null +++ b/src/main/java/lannguyen/main.java @@ -0,0 +1,38 @@ +package lannguyen; +//Dr. Rivera's Roster: +// - Jordan Smith | Grade Level: 2 | GPA: 3.8 +// - Marcus Brown | Grade Level: 1 | GPA: 2.9 +//In your Main class, create a mix of Student and Instructor objects, store them in a single list, and print each one's summary. +//Example Output + +/// // [Student] Jordan Smith | Grade Level: 2 | GPA: 3.8 | Honor Roll: Yes +/// // [Student] Marcus Brown | Grade Level: 1 | GPA: 2.9 | Honor Roll: No +/// // [Instructor] Dr. Rivera | Department: Computer Science +/// +public class main { + public static void main(String[] args) { + + Student s1 = new Student("Jordan", "Smith", 2, 3.8); + Student s2 = new Student("Marcus", "Brown", 1, 2.9); + + Instructor inst1 = new Instructor("Dr.", "Rivera", "Computer Science"); + + // Add students to instructor roster + inst1.addStudent(s1); + inst1.addStudent(s2); + + // Create school and add all + School mySchool = new School(); + mySchool.addStudent(s1); + mySchool.addStudent(s2); + mySchool.addInstructor(inst1); + + // Print full directory + mySchool.printDirectory(); + + System.out.println("================================"); + + // Optional: Print instructor roster + inst1.printRoster(); + } +} \ No newline at end of file