The School Registration System is a Java-based application designed to simplify course management and registration for students, teachers, and administrators. The system allows students to:
- Register for courses.
- View their course schedules.
- Drop courses.
Administrators can:
- Add, update, or remove courses.
- Manage student enrollments.
- Generate reports on student and course data.
Teachers can:
- View course details, including student lists and schedules.
This project serves as a practical implementation of key object-oriented programming concepts, data structures, and software design patterns, aligning with the Programming Patterns course (420-301-VA) at Vanier College.
- Register and drop courses with real-time feedback on available seats.
- View current and upcoming semester schedules.
- Notifications for important updates or deadlines.
- Add, update, or delete courses.
- View and manage student enrollment.
- Generate reports on course enrollments and student information.
- View course details such as enrolled students and course schedules.
- Access class rosters and attendance records.
- ArrayList and LinkedList for course storage and management.
- Queue for handling student registration requests.
- Use of Comparable and Comparator interfaces for sorting courses by name, schedule, or capacity.
- Efficient filtering of course data using Java Streams.
- Lambda expressions for simplified data processing and comparisons.
- Implementation of generic data structures to handle multiple types of data, ensuring flexibility and scalability.
- Comprehensive unit tests using JUnit to ensure functionality and correctness of all core components, such as student registration, course management, and data manipulation.
- Maven for dependency management and project build automation.
- Integration of external libraries for validation and input handling.
- Java: Core programming language.
- JUnit: For unit testing and quality assurance.
- Maven: For dependency management and building the project.
- Java Streams & Lambda Expressions: To simplify code and make data operations more efficient.
- JDBC (optional): For database connectivity (SQLite/Oracle) if required for advanced features.
- Git: Version control for code collaboration and management.
- Matthew Veroutis
- Matthew Macri
- Phoeuk Thao
Fall 2024 @ Vanier College