diff --git a/src/CourseRegistrationStarter/Course.java b/src/CourseRegistrationStarter/Course.java index 7f13a14..6d9d4cb 100644 --- a/src/CourseRegistrationStarter/Course.java +++ b/src/CourseRegistrationStarter/Course.java @@ -4,6 +4,8 @@ public class Course { private String courseName; private String courseCode; private int capacity; + private boolean canDrop = false; + public Course(String courseName, String courseCode, int capacity) { this.courseName = courseName; @@ -23,6 +25,15 @@ public class Course { return capacity; } + public boolean isDropped() { + return canDrop; + } + + public void setCanDrop(boolean canDrop) { + this.canDrop = canDrop; + + } + public boolean reduceCapacity() { if (capacity > 0) { capacity--; @@ -34,4 +45,11 @@ public class Course { public void increaseCapacity() { capacity++; } + + @Override + public String toString() { + return courseName + " (" + courseCode + ") " + "remaining capacity : " + capacity; + } + } + diff --git a/src/CourseRegistrationStarter/Main.java b/src/CourseRegistrationStarter/Main.java index 8f06373..50389cc 100644 --- a/src/CourseRegistrationStarter/Main.java +++ b/src/CourseRegistrationStarter/Main.java @@ -1,5 +1,9 @@ package CourseRegistrationStarter; +import javax.lang.model.element.NestingKind; +import java.util.Objects; +import java.util.Scanner; + public class Main { public static void main(String[] args) { // TODO: @@ -10,5 +14,99 @@ public class Main { // 5. Register the student in some courses // 6. Drop one course // 7. Print the final registered course list + + Course course1 = new Course("Advanced Programming", "AP1404", 2); + + Course course2 = new Course("Data Structures", "DS140401", 3); + + Course course3 = new Course("Database System", "DS140402", 1); + + Course course4 = new Course("Math2", "M1404", 4); + + Student myStudent = new Student("mohammadReza", "Reza404222"); + + RegistrationSystem mySystem = new RegistrationSystem(); + + mySystem.addCourseToSystem(course1); + mySystem.addCourseToSystem(course2); + mySystem.addCourseToSystem(course3); + mySystem.addCourseToSystem(course4); + + Scanner scanner = new Scanner(System.in); + + while (true) { + + System.out.println("==== Course Registration Menu ===="); + System.out.println("1.Show all courses"); + System.out.println("2.Register course"); + System.out.println("3.Drop course"); + System.out.println("4.Show my courses"); + System.out.println("5.Exit"); + System.out.println("choose an option: "); + + int choice = scanner.nextInt(); + scanner.nextLine(); + + if (choice == 1) { + + System.out.println("All courses on System: "); + mySystem.showAllCourses(); + + } else if (choice == 2) { + + System.out.println("Enter course code to register: "); + String inputCode = scanner.nextLine(); + + Course selected = mySystem.findCourseByCode(inputCode); + + if (selected == null) { + + System.out.println("this code in invalid"); + } else if (selected.isDropped()) { + + System.out.println("you previously dropped this course and you can register again"); + } + else if (myStudent.addCourse(selected) && selected.reduceCapacity()) { + + System.out.println("course " + selected.getCourseName() + " registered successfully"); + + } else { + System.out.println("this course in full"); + } + + } else if (choice == 3) { + + System.out.println("Enter course code to Drop it: "); + String inputCode = scanner.nextLine(); + + Course found = mySystem.findCourseByCode(inputCode); + + if (found == null) { + System.out.println("this course has not registered yet"); + } else { + if (myStudent.dropCourse(found)) { + found.reduceCapacity(); + found.increaseCapacity(); + System.out.println("course dropped successfully"); + } else { + System.out.println("you are not registered in this course"); + } + } + + + } else if (choice == 4) { + + myStudent.showRegisteredCourses(); + + } else if (choice == 5) { + + System.out.println("exiting..."); + break; + } + + } + + scanner.close(); + } } diff --git a/src/CourseRegistrationStarter/RegistrationSystem.java b/src/CourseRegistrationStarter/RegistrationSystem.java index 934f222..07f3357 100644 --- a/src/CourseRegistrationStarter/RegistrationSystem.java +++ b/src/CourseRegistrationStarter/RegistrationSystem.java @@ -9,16 +9,23 @@ public class RegistrationSystem { } public void addCourseToSystem(Course c) { - // TODO: Add the course to the system + courses.add(c); } public Course findCourseByCode(String code) { - // TODO: Search for a course by course code - // Return the matching course if found, otherwise return null + + for (Course c : courses) { + if (c.getCourseCode().equals(code)) + return c; + } + return null; } public void showAllCourses() { - // TODO: Print all courses in the system + + for (Course c : courses) { + System.out.println(c); + } } } diff --git a/src/CourseRegistrationStarter/Student.java b/src/CourseRegistrationStarter/Student.java index 02c11d8..ed9780c 100644 --- a/src/CourseRegistrationStarter/Student.java +++ b/src/CourseRegistrationStarter/Student.java @@ -21,19 +21,36 @@ public class Student { } public boolean addCourse(Course c) { - // TODO: Register the student in the course if capacity allows - // Return true if registration was successful, otherwise false - return false; + + if (c.getCapacity() > 0) { + registeredCourses.add(c); + return true; + } + else + return false; } public boolean dropCourse(Course c) { - // TODO: Remove the course from the student's list - // Restore the course capacity if removal was successful - // Return true if the course was dropped, otherwise false + for (Course a : registeredCourses) { + if(a.getCourseCode().equals(c.getCourseCode())) { + registeredCourses.remove(c); + c.setCanDrop(true); + return true; + } + } return false; } public void showRegisteredCourses() { - // TODO: Print all registered courses + + if (registeredCourses.isEmpty()) { + System.out.println("you have not registered in any courses yet"); + return; + } + + System.out.println("your registered courses: "); + for (Course c : registeredCourses) { + System.out.println(c); + } } } \ No newline at end of file