The Campus Course & Records Manager (CCRM) is a robust console-based Java application designed to streamline academic data management for colleges and universities. Built with modern Java principles, this project showcases Object-Oriented Programming (OOP), advanced I/O operations, exception handling, and design patterns.
CCRM offers a user-friendly menu-driven command-line interface (CLI) for managing students, courses, enrollments, and grades. It includes powerful file utilities for data import/export and automated backups.
- Add, list, update, and deactivate student records
- Track student details: ID, registration number, full name, email, and enrollment status
- Create, update, and deactivate courses
- Manage course information: code, title, credits, instructor, semester, and department
- Enroll/unenroll students from courses
- Record grades and compute GPA
- Utilizes enums for
SemesterandGrade
- Import student and course data from CSV-like text files
- Export current data to files
- Automated backup system with timestamped folders
- Recursive utility to calculate backup directory size
- OOP Principles: Encapsulation, Inheritance, Abstraction, and Polymorphism
- Advanced Java Concepts:
- I/O: NIO.2
PathandFilesAPIs with Java Streams - Data Structures: Arrays, Collections, and Streams for data manipulation
- Exception Handling: Custom exceptions like
DuplicateEnrollmentExceptionandMaxCreditLimitExceededException - Design Patterns: Singleton (
AppConfig) and Builder (Course) - Date/Time API: Modern handling of timestamps and dates
- I/O: NIO.2
- Java Development Kit (JDK) 17 or higher installed on your system
- Git for cloning the repository
git clone https://github.com/yourusername/ccrm.git
cd ccrmYou can run the project using your IDE (e.g., IntelliJ IDEA, Eclipse) by executing the main class, or use the command line:
# Compile the project
javac -d bin src/edu/ccrm/**/*.java
# Run the application
java -cp bin edu.ccrm.cli.MainMenuTo enable assertions for debugging:
java -ea -cp bin edu.ccrm.cli.MainMenuCCRM_Project/
├── src/
│ └── edu/ccrm/
│ ├── cli/ # Command-line interface menus
│ ├── config/ # Application configuration
│ ├── domain/ # Core business entities
│ ├── exception/ # Custom exceptions
│ ├── io/ # File I/O services
│ ├── service/ # Business logic services
│ │ └── interfaces/ # Service interfaces
│ └── util/ # Utility classes
├── test-data/ # Sample CSV data files
├── CCRM_Project.iml # IntelliJ IDEA project file
└── README.md
Sample data files are provided in the test-data/ directory:
students.csv: Sample student datacourses.csv: Sample course data
Import these files through the CLI to populate the system with test data.
| Feature | Java SE (Standard Edition) | Java EE (Enterprise Edition) | Java ME (Micro Edition) |
|---|---|---|---|
| Purpose | Desktop, console, and applets | Large-scale enterprise applications | Mobile and embedded devices |
| Key APIs | Core libraries (Language, util, I/O) | Servlets, EJB, JPA, etc. | Small-footprint APIs |
| Platform | Standalone applications | Server-side runtimes | Device-specific JVMs |
- JDK (Java Development Kit): Development tools including compiler (
javac) and debugger - JRE (Java Runtime Environment): Runtime environment with JVM and class libraries
- JVM (Java Virtual Machine): Executes Java bytecode, enabling "write once, run anywhere"
| Syllabus Topic | Implementation |
|---|---|
| OOP Concepts | Person.java, Student.java, Instructor.java, Course.java |
| File I/O (NIO.2) | FileService.java, BackupService.java |
| Exceptions | DuplicateEnrollmentException.java, MaxCreditLimitExceededException.java |
| Design Patterns | AppConfig.java (Singleton), Course.Builder (Builder) |
| Java Streams API | CourseService.java, ReportService.java |
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Built with using Java