This project is a menu-driven Java application that manages students, courses, enrollments, marks, and transcripts.
It demonstrates Object-Oriented Programming, Design Patterns, Exception Handling, Streams & Lambdas, File Handling (NIO.2), and recursive utilities.
- Open terminal in the project folder (where
CCRMQuick.javais saved). - Compile the program:
- Add Student / Add Course → Create new records.
- Enroll Student → Register a student in a course (max 18 credits rule).
- Record Marks → Enter marks for a student.
- Print Transcript → Show GPA and grades.
- Export → Save student & course data as CSV files.
- Backup & Size → Create timestamped backup and calculate folder size.
- Search by Instructor → Filter courses using streams/lambdas.
- Show Sample Data → View seeded students and courses.
| Concept | Where it is used |
|---|---|
| Abstraction | Person is an abstract class. |
| Encapsulation | Student has private fields with controlled methods. |
| Inheritance | Student extends Person. |
| Polymorphism | Overridden toString() and toCSV(). |
| Custom Exception | MaxCreditLimitExceededException. |
| Builder Pattern | Course.Builder creates Course objects. |
| Singleton Pattern | DataStore ensures one shared instance. |
| Streams & Lambdas | Search courses by instructor using filter() and collect(). |
| NIO.2 File Handling | Export and backup using Files.write(), Files.walk(). |
| Recursive Utility | Folder size calculation in computeSizeRecursive(). |
| Inner/Nested Classes | Student.ProfilePrinter, Course.Builder. |
- Program main menu in terminal.
- Transcript printed for a student.
exports/folder withstudents.csvandcourses.csv.backups/folder with timestamped backup.
- Run the program and capture required screenshots.
- Ensure
exports/andbackups/are created. - Zip the project folder: