HarshKumarSahni/IIITD_CourseRegistration
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
IIITDSystem Overview This project is an enhanced version of a university course registration system. The main objective is to introduce advanced concepts like generic programming, object classes, and exception handling. The existing functionalities from the previous version of the system are retained and built upon, ensuring proper integration of new features with the object-oriented programming principles covered in class. Key Features 1. Generic Feedback System Concept: Generic Programming Functionality: Students can provide feedback for the courses they have completed. This feedback system supports both numeric ratings (e.g., 1-5) and textual comments (e.g., "Great course!"). Professors' Interface: Professors are able to view feedback and ratings provided by students for their courses. Data Storage: A generic class is used to handle different types of feedback, allowing the system to store and retrieve both numeric ratings and textual comments. 2. Teaching Assistant (TA) Role Concept: Object Class and Inheritance Functionality: A new user role, Teaching Assistant (TA), is introduced. The TA role inherits from the Student class and extends its functionality. Permissions: TAs can view and manage student grades but cannot modify course details, a functionality reserved for professors. Inheritance: The TA class is implemented by extending the Student class, inheriting all of its capabilities while adding specific methods related to grade management. 3. Robust Exception Handling Concept: Exception Handling Functionality: Custom exception classes and robust error handling mechanisms are implemented to manage various scenarios: CourseFullException: Thrown when a student attempts to register for a course that is already full. InvalidLoginException: Thrown when a user provides incorrect login credentials. DropDeadlinePassedException: Thrown when a student attempts to drop a course after the drop deadline has passed. Assumptions Course Enrollment Limits: Courses have an enrollment limit, and students are not allowed to register if the limit is reached. Drop Deadline: Each course has a specific deadline for dropping. If the deadline is missed, students will not be able to drop the course and will encounter a DropDeadlinePassedException. Login Credentials: Each user (Student, Professor, Administrator, TA) must provide valid credentials to log in. Invalid credentials result in an InvalidLoginException. Feedback and Rating Visibility: Students can provide both feedback and numeric ratings for courses. This information is visible to professors and administrators. TA Permissions: TAs can assist in managing grades but have restricted access to other course management features. Detailed Functionalities 1. Generic Feedback System A generic feedback class allows for flexible storage of both ratings and textual feedback. Students can rate and provide feedback on the courses they have completed. Professors and administrators can view feedback and ratings through their respective interfaces. 2. Enhanced User Role Management (TA Role) The TA role inherits from the Student class and adds functionality for grade management. TAs can view and manage grades but cannot modify core course details (e.g., timings, prerequisites). 3. Exception Handling CourseFullException: If a student tries to register for a course that is already full, the system will catch and handle this exception, notifying the student that the course is full. InvalidLoginException: If a user attempts to log in with incorrect credentials, the system will throw an InvalidLoginException, ensuring that only valid users can access the system. DropDeadlinePassedException: If a student attempts to drop a course after the designated deadline, the system will throw a DropDeadlinePassedException, ensuring deadlines are enforced. How to Run Login: The system supports different user roles: Student, Professor, TA, and Administrator. Each user must log in with valid credentials. Course Registration: Students can register for courses that have not yet reached their enrollment limit. Drop Course: Students can drop a course before the drop deadline. Provide Feedback/Rating: After completing a course, students can submit feedback and ratings for the course, which will be visible to professors and administrators. Course Management (Professor/TA): Professors can manage enrolled students, view feedback, and see ratings for their courses. TAs can assist in managing grades but have restricted access compared to professors. Exception Handling: All invalid operations (full course, incorrect login, missed drop deadline) are handled gracefully with appropriate error messages. Custom Exceptions CourseFullException: Thrown when a course has reached its enrollment limit. InvalidLoginException: Thrown for invalid login attempts. DropDeadlinePassedException: Thrown when a course drop is attempted after the deadline. Assumptions for Custom Exceptions CourseFullException: Courses have a predefined enrollment limit, which is strictly enforced. InvalidLoginException: Each user (Student, Professor, TA, Admin) has unique credentials that must match during login. DropDeadlinePassedException: Each course has a defined drop deadline, beyond which dropping is not allowed. System Design Overview Users: Student Professor Administrator Teaching Assistant (TA) (inherits from Student) Course Management: Professors can manage their assigned courses, view feedback, and see student ratings. Feedback and Rating: Managed using a generic class, students can submit both textual and numeric feedback, which is visible to professors and administrators. Technologies and Concepts Used Generic Programming: Used for the feedback system. Inheritance: Used to extend the Student class for the new TA role. Exception Handling: Custom exceptions and try-catch blocks for robust error handling. This system provides a comprehensive and extensible platform for managing course registration, feedback, grading, and user roles within a university setting.