From 4110b0b6520222d6e8e85773947f3f7d0355c3b7 Mon Sep 17 00:00:00 2001 From: makikovaughan Date: Tue, 29 Nov 2022 09:20:10 -0500 Subject: [PATCH 1/3] push to main --- .idea/misc.xml | 2 +- JavaFinalProject.iml | 17 +++++++ src/com/generation/Main.java | 1 - src/com/generation/model/Student.java | 16 +++++- src/com/generation/service/CourseService.java | 1 + .../generation/service/StudentService.java | 35 +++++++++++++ src/com/generation/utils/PrinterHelper.java | 49 +++++++++++-------- .../generation/service/CourseServiceTest.java | 24 +++++++++ .../service/StudentServiceTest.java | 38 ++++++++++++++ 9 files changed, 160 insertions(+), 23 deletions(-) create mode 100644 test/com/generation/service/CourseServiceTest.java create mode 100644 test/com/generation/service/StudentServiceTest.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 4e2f650..e3cffb8 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/JavaFinalProject.iml b/JavaFinalProject.iml index c90834f..f9f9807 100644 --- a/JavaFinalProject.iml +++ b/JavaFinalProject.iml @@ -4,8 +4,25 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/com/generation/Main.java b/src/com/generation/Main.java index 9e24556..4f9a655 100644 --- a/src/com/generation/Main.java +++ b/src/com/generation/Main.java @@ -69,7 +69,6 @@ private static void enrollStudentToCourse( StudentService studentService, Course courseService.enrollStudent( courseId, student ); studentService.enrollToCourse( studentId, course ); System.out.println( "Student with ID: " + studentId + " enrolled successfully to " + courseId ); - } private static void showCoursesSummary( CourseService courseService, Scanner scanner ) diff --git a/src/com/generation/model/Student.java b/src/com/generation/model/Student.java index 0897ebe..5b58808 100644 --- a/src/com/generation/model/Student.java +++ b/src/com/generation/model/Student.java @@ -21,9 +21,12 @@ public Student( String id, String name, String email, Date birthDate ) super( id, name, email, birthDate ); } - public void enrollToCourse( Course course ) + + public void enrollToCourse(Course course ) { //TODO implement this method + //this.courses.add(course); + registerApprovedCourse(course); } public void registerApprovedCourse( Course course ) @@ -35,6 +38,17 @@ public void registerApprovedCourse( Course course ) public boolean isAttendingCourse( String courseCode ) { //TODO implement this method + + //Use for loop to check if the courses arraylist's course code matches to the parameter course. + for(String courseId : approvedCourses.keySet()) + for(int i = 0; i < courses.size(); i++) { + if(courses.get(i).getCode().equals(courseCode) ) { + System.out.println(courses.get(i).getCode()); + return true; + } + } + + //If it does not match, return false return false; } diff --git a/src/com/generation/service/CourseService.java b/src/com/generation/service/CourseService.java index 24df98b..10e18c5 100644 --- a/src/com/generation/service/CourseService.java +++ b/src/com/generation/service/CourseService.java @@ -95,4 +95,5 @@ public void showSummary() } } } + } diff --git a/src/com/generation/service/StudentService.java b/src/com/generation/service/StudentService.java index f980e40..467df72 100644 --- a/src/com/generation/service/StudentService.java +++ b/src/com/generation/service/StudentService.java @@ -3,13 +3,18 @@ import com.generation.model.Course; import com.generation.model.Student; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; public class StudentService { private final Map students = new HashMap<>(); + //Keep track of the courses that each student registered. + private final Map> enrolledStudents = new HashMap<>(); + public void subscribeStudent( Student student ) { students.put( student.getId(), student ); @@ -27,6 +32,33 @@ public Student findStudent( String studentId ) public void showSummary() { //TODO implement + System.out.println( "List of Students:" ); + + //Enhanced for loop for the students + for ( String key : students.keySet()) { + Student student = students.get(key); + List courseList = enrolledStudents.get(student.getId()); + + //Print out the student information + System.out.print(student); + if (courseList != null) { + System.out.println(courseList); + } else { + System.out.println("[{}]"); + } + System.out.println(); + } + } + + //Keeping track of the course for the student + public void addEnrollStudents(String studentId, Course course) { + + if ( !enrolledStudents.containsKey( studentId ) ) + { + enrolledStudents.put( studentId, new ArrayList<>() ); + } + enrolledStudents.get(studentId).add( course ); + } public void enrollToCourse( String studentId, Course course ) @@ -34,6 +66,9 @@ public void enrollToCourse( String studentId, Course course ) if ( students.containsKey( studentId ) ) { students.get( studentId ).enrollToCourse( course ); + + //Keeping the information of enrolled course for the student + addEnrollStudents(studentId, course); } } diff --git a/src/com/generation/utils/PrinterHelper.java b/src/com/generation/utils/PrinterHelper.java index 6f1ca9b..8e94050 100644 --- a/src/com/generation/utils/PrinterHelper.java +++ b/src/com/generation/utils/PrinterHelper.java @@ -26,26 +26,35 @@ public static void showMainMenu(){ } public static Student createStudentMenu( Scanner scanner ) - throws ParseException { - System.out.println( "|-------------------------------------|" ); - System.out.println( "| . 1 Register Student |" ); - System.out.println( "|-------------------------------------|" ); - System.out.println( "| Enter student name: |" ); - String name = scanner.next(); - System.out.println( "| Enter student ID: |" ); - String id = scanner.next(); - System.out.println( "| Enter student email: |" ); - String email = scanner.next(); - System.out.println( "| Enter student birth date(mm/dd/yyyy)|" ); - DateFormat formatter = new SimpleDateFormat( "mm/dd/yyyy"); - //TODO validate date format and catch exception to avoid crash - Date birthDate = formatter.parse( scanner.next()); - System.out.println( "|-------------------------------------|" ); - Student student = new Student( id, name, email, birthDate ); - System.out.println( "Student Successfully Registered! " ); - System.out.println(student); - return student; - } + System.out.println("|-------------------------------------|"); + System.out.println("| . 1 Register Student |"); + System.out.println("|-------------------------------------|"); + System.out.println("| Enter student name: |"); + String name = scanner.next(); + System.out.println("| Enter student ID: |"); + String id = scanner.next(); + System.out.println("| Enter student email: |"); + String email = scanner.next(); + System.out.println("| Enter student birth date(mm/dd/yyyy)|"); + DateFormat formatter = new SimpleDateFormat("mm/dd/yyyy"); + //TODO validate date format and catch exception to avoid crash + //Initialize the birthday + Date birthDate = null; + //While the invalid format is added, birthDate is null + while(birthDate == null) { + try { + birthDate = formatter.parse(scanner.next()); + } catch (ParseException e) { + System.err.println("ParseException: " + e.getMessage()); + System.out.println("| Enter student birth date(mm/dd/yyyy)|"); + } + } + Student student = new Student(id, name, email, birthDate); + System.out.println("|-------------------------------------|"); + System.out.println("Student Successfully Registered! "); + System.out.println(student); + return student; + } } diff --git a/test/com/generation/service/CourseServiceTest.java b/test/com/generation/service/CourseServiceTest.java new file mode 100644 index 0000000..7511101 --- /dev/null +++ b/test/com/generation/service/CourseServiceTest.java @@ -0,0 +1,24 @@ +package com.generation.service; + +import com.generation.model.Course; +import com.generation.model.Module; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class CourseServiceTest { + + //Declare courseService variable for the test + CourseService courseService = new CourseService(); + + ////Only method's type that is not void can be tested. So, I created two for getting course information below + @Test + void getCourse() { + assertEquals(courseService.getCourse("INTRO-CS-1").getCredits(), 9); + } + + @Test + void getCourse2() { + assertEquals(courseService.getCourse("INTRO-CS-4").getName(), "Algorithm Design and Problem Solving - Advanced"); + } +} \ No newline at end of file diff --git a/test/com/generation/service/StudentServiceTest.java b/test/com/generation/service/StudentServiceTest.java new file mode 100644 index 0000000..0a4077c --- /dev/null +++ b/test/com/generation/service/StudentServiceTest.java @@ -0,0 +1,38 @@ +package com.generation.service; + +import com.generation.model.Student; +import org.junit.jupiter.api.Test; +import java.util.Date; +import static org.junit.jupiter.api.Assertions.*; + + +class StudentServiceTest { + + //Declare instances for tests + Date date = new Date(12/12/1212); + Date date2 = new Date(11/11/1111); + Student student = new Student("1", "Makiko", "makiko@gmail.com", date); + Student student2 = new Student("2", "Randy", "randyo@gmail.com", date2); + StudentService studentService = new StudentService(); + + //Only method's type that is not void can be tested. So, I created two for find students below + @Test + void findStudent() { + + //Add the student in the students(Map) + studentService.subscribeStudent(student); + + //Test the method + assertEquals(studentService.findStudent(student.getId()).getId(), "1"); + } + + @Test + void findStudent2() { + //Add the student in the students(Map) + studentService.subscribeStudent(student2); + + //Test the method + assertEquals(studentService.findStudent(student2.getId()).getName(), "Randy"); + } + +} \ No newline at end of file From 53a7289668100f1352b557269b7a4e638d8bf6c8 Mon Sep 17 00:00:00 2001 From: makikovaughan Date: Tue, 29 Nov 2022 09:34:53 -0500 Subject: [PATCH 2/3] push to main --- src/com/generation/model/Student.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/com/generation/model/Student.java b/src/com/generation/model/Student.java index 5b58808..dc03171 100644 --- a/src/com/generation/model/Student.java +++ b/src/com/generation/model/Student.java @@ -25,7 +25,6 @@ public Student( String id, String name, String email, Date birthDate ) public void enrollToCourse(Course course ) { //TODO implement this method - //this.courses.add(course); registerApprovedCourse(course); } @@ -38,18 +37,13 @@ public void registerApprovedCourse( Course course ) public boolean isAttendingCourse( String courseCode ) { //TODO implement this method - - //Use for loop to check if the courses arraylist's course code matches to the parameter course. - for(String courseId : approvedCourses.keySet()) - for(int i = 0; i < courses.size(); i++) { - if(courses.get(i).getCode().equals(courseCode) ) { - System.out.println(courses.get(i).getCode()); - return true; - } + if(approvedCourses.containsKey(courseCode)) { + return true; + } + else { + return false; } - //If it does not match, return false - return false; } @Override From cfbd2343be2de7dd4a97f7970f0da1eef3c77f46 Mon Sep 17 00:00:00 2001 From: makikovaughan Date: Tue, 29 Nov 2022 17:20:36 -0500 Subject: [PATCH 3/3] Modified my codes --- src/com/generation/model/Student.java | 12 +++++++++- .../generation/service/StudentService.java | 24 +++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/com/generation/model/Student.java b/src/com/generation/model/Student.java index dc03171..a447b65 100644 --- a/src/com/generation/model/Student.java +++ b/src/com/generation/model/Student.java @@ -25,7 +25,17 @@ public Student( String id, String name, String email, Date birthDate ) public void enrollToCourse(Course course ) { //TODO implement this method - registerApprovedCourse(course); + if(!(isAttendingCourse(course.getCode()))) { + //Initially I did correctly. I overthought add all registered courses to approvedCourses. + //Modified back again + courses.add(course); + + //Used for isAttendingCourse + registerApprovedCourse(course); + } + else { + System.out.println("The student has been enrolled"); + } } public void registerApprovedCourse( Course course ) diff --git a/src/com/generation/service/StudentService.java b/src/com/generation/service/StudentService.java index 467df72..df36430 100644 --- a/src/com/generation/service/StudentService.java +++ b/src/com/generation/service/StudentService.java @@ -13,7 +13,7 @@ public class StudentService private final Map students = new HashMap<>(); //Keep track of the courses that each student registered. - private final Map> enrolledStudents = new HashMap<>(); + private final Map> enrolledStudents = new HashMap<>(); public void subscribeStudent( Student student ) { @@ -22,7 +22,7 @@ public void subscribeStudent( Student student ) public Student findStudent( String studentId ) { - if ( students.containsKey( studentId ) ) + if ( students.containsKey( studentId )) { return students.get( studentId ); } @@ -53,11 +53,27 @@ public void showSummary() //Keeping track of the course for the student public void addEnrollStudents(String studentId, Course course) { - if ( !enrolledStudents.containsKey( studentId ) ) + + if ( (enrolledStudents.containsKey( studentId ) )) { + ArrayList courseList = enrolledStudents.get(studentId); + System.out.println("CourseList" + courseList); + + //For avoiding ConcurrentModificationException,used for loop + boolean flag = false; + for(int i = 0; i < courseList.size(); i++) { + if (courseList.get(i).getCode().equals(course.getCode())) { + flag = true; + } + } + if(!(flag)) { + enrolledStudents.get(studentId).add( course ); + } + } + else { enrolledStudents.put( studentId, new ArrayList<>() ); + enrolledStudents.get(studentId).add( course ); } - enrolledStudents.get(studentId).add( course ); }