This Campus Course & Records Manager (CCRM) is a simple Java console application designed to manage students, courses, and enrollments. The project follows a modular structure with separate packages for CLI (MainMenu), domain models (Student, Course, Enrollment, etc.), services (StudentService, CourseService, EnrollmentService), and utilities (FileUtil). Users can add and list students or courses, enroll students in courses, view enrollments, and perform file backup operations. The implementation is based on object-oriented principles with a layered architecture, making the code clean, organized, and easy to extend in the future (e.g., database integration via JDBC).
CCRM-Java-Project
├─ edu/
│ └─ ccrm/
│ ├─ cli/
│ │ └─ MainMenu.java
│ ├─ config/
│ │ └─ AppConfig.java
│ ├─ domain/
│ │ ├─ Course.java
│ │ ├─ CourseCode.java
│ │ ├─ Enrollment.java
│ │ ├─ Grade.java
│ │ ├─ Instructor.java
│ │ ├─ Person.java
│ │ ├─ Semester.java
│ │ └─ Student.java
│ ├─ service/
| | ├─ StudentService.java
│ | ├─ CourseService.java
│ | └─ EnrollmentService.java
│ └─ util/
│ └─ FileUtil.java
├─ screenshots/
└─ README.md
- JDK 17 (or higher)
- VS Code (with Java Extension Pack) / Eclipse IDE
- Open the folder
CCRM-Java-Project
in VS Code. - Navigate to the file: edu.ccrm/cli/MainMenu.java
- Run the program. The menu-driven CLI will appear in the terminal.
- 1995: Java 1.0 by Sun Microsystems
- 2004: Java 5 introduced Generics, Enums
- 2014: Java 8 introduced Streams, Lambdas
- 2017: Oracle switched to 6-month releases
- 2021+: Java 17, 21 (LTS versions)
| Edition | Use Case |
| Java SE | Standard Edition (desktop/console apps) | | Java EE (Jakarta EE) | Enterprise Edition (web apps, servers) | | Java ME | Micro Edition (mobile, embedded devices) |
- JVM: Java Virtual Machine – executes
.class
bytecode - JRE: Java Runtime Environment – JVM + libraries (for running)
- JDK: Java Development Kit – JRE + compiler + tools (for development)
- Download JDK from Oracle.
- Install and set
JAVA_HOME
. - Verify installation: java -version javac -version
| Topic | Where Used |
| Encapsulation | `Student.java` (private fields + getters/setters) |
| Inheritance | `Person → Student, Instructor` |
| Abstraction | `Person.java` (abstract class with abstract method) |
| Polymorphism | `printProfile()` overridden in Student/Instructor |
| Immutable class | `CourseCode.java` |
| Nested class | `Course.Builder` (static nested class) |
| Enum | `Grade.java`, `Semester.java` |
| Lambda & Stream | `courses.forEach(System.out::println)` in `MainMenu.java` |
| Singleton | `AppConfig.java` |
| Builder Pattern | `Course.Builder` |
| Exceptions | `tryBackup()` in `MainMenu.java` |
| Custom Exception | (to be added, e.g., `MaxCreditLimitException`) |
| File I/O (NIO.2) | `FileUtil.java` |
| Recursion | `folderSize()` in `FileUtil.java` |
| Date/Time API | `admissionDate` in `Student.java` |
| Assertions | `assert credits > 0 : "Credits must be positive";|
- File → New → Java Project
- Name project:
CCRM-Java-Project
- Copy source files into
edu/ccrm/...
- Run
MainMenu.java
In code:
assert credits > 0 : "Credits must be positive";