From 48ebb71955e23ee90fc264044e4d7f44d13f3f44 Mon Sep 17 00:00:00 2001 From: Arefe Talebi Date: Tue, 21 Apr 2026 23:02:34 +0330 Subject: [PATCH] workshop 2 --- src/CourseRegistrationStarter/Main.java | 26 +++++++++---- .../RegistrationSystem.java | 12 +++++- src/CourseRegistrationStarter/Student.java | 38 +++++++++++++++++-- 3 files changed, 65 insertions(+), 11 deletions(-) diff --git a/src/CourseRegistrationStarter/Main.java b/src/CourseRegistrationStarter/Main.java index 8f06373..d20ac6f 100644 --- a/src/CourseRegistrationStarter/Main.java +++ b/src/CourseRegistrationStarter/Main.java @@ -3,12 +3,24 @@ package CourseRegistrationStarter; public class Main { public static void main(String[] args) { // TODO: - // 1. Create at least 3 courses - // 2. Create 1 student - // 3. Create a registration system - // 4. Add courses to the system - // 5. Register the student in some courses - // 6. Drop one course - // 7. Print the final registered course list + Course c1 =new Course("Advanced Programming","AP1404",2); + Course c2 =new Course("Data Structures","DS2201",1); + Course c3=new Course("Database Systems","DB3301",3); + + Student s1=new Student("Ali","402222001"); + + RegistrationSystem system= new RegistrationSystem(); + + system.addCourseToSystem(c1); + system.addCourseToSystem(c2); + system.addCourseToSystem(c3); + + s1.addCourse(c1); + s1.addCourse(c2); + + s1.dropCourse(c1); + + s1.showRegisteredCourses(); + system.showAllCourses(); } } diff --git a/src/CourseRegistrationStarter/RegistrationSystem.java b/src/CourseRegistrationStarter/RegistrationSystem.java index 934f222..0151b8f 100644 --- a/src/CourseRegistrationStarter/RegistrationSystem.java +++ b/src/CourseRegistrationStarter/RegistrationSystem.java @@ -10,15 +10,25 @@ 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.getCourseName()+"-"+ c.getCourseCode()+"-capacity:"+c.getCapacity() + ); + } } } diff --git a/src/CourseRegistrationStarter/Student.java b/src/CourseRegistrationStarter/Student.java index 02c11d8..8f176a7 100644 --- a/src/CourseRegistrationStarter/Student.java +++ b/src/CourseRegistrationStarter/Student.java @@ -5,6 +5,7 @@ public class Student { private String name; private String studentId; private ArrayList registeredCourses; + private int maxCourses = 3; public Student(String name, String studentId) { this.name = name; @@ -21,19 +22,50 @@ public class Student { } public boolean addCourse(Course c) { + //bonus1:جلوگیری از ثبت نام تکراری + for (Course course : registeredCourses) { + if (course.getCourseCode().equals(c.getCourseCode())) { + return false; + } + } + //bonus2:محدودیت برای تکرار + if (registeredCourses.size() >= maxCourses) { + return false; + } // TODO: Register the student in the course if capacity allows - // Return true if registration was successful, otherwise false + if (c.getCapacity()>0){ + registeredCourses.add(c); + c.reduceCapacity(); + return true; + } 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 + if (registeredCourses.contains(c)){ + registeredCourses.remove(c); + c.increaseCapacity(); + return true; + } return false; } public void showRegisteredCourses() { // TODO: Print all registered courses + System.out.println("Registered courses for"+name+":"); + for (Course c :registeredCourses){ + System.out.println(c.getCourseName()+"-"+ c.getCourseCode()); + } + } + //bonus3 + public Course findCourseByName(String name){ + + for (Course c: registeredCourses){ + if (c.getCourseName().equalsIgnoreCase(name)){ + return c; + } + } + return null; } } \ No newline at end of file -- 2.54.0