A command-line based Java application designed to manage students, courses, enrollments, grades, and academic records.
The system provides a simple menu-driven interface that allows an administrator or academic staff member to manage student information, courses, enrollments, grades, reports, and stored data.
- Add new student records
- View all registered students
- Update student information
- Delete student records
- Prevent duplicate student IDs
- Add new courses
- View available courses
- Update course information
- Delete course records
- Prevent duplicate course codes
- Enroll students in courses
- View all enrollments
- Remove enrollments
- Prevent duplicate student-course enrollment
- Validate student and course existence
- Enter marks for enrolled students
- Validate marks between 0 and 100
- Automatically calculate letter grades
- Determine pass/fail status
- Update grades associated with enrollments
- Generate student-specific academic reports
- Display student details
- Display enrolled courses
- Display semester information
- Display assigned grades
- Store student records in CSV files
- Store course records in CSV files
- Store enrollment records in CSV files
- Load saved data when the application starts
- Create backup copies of application data
| Technology | Purpose |
|---|---|
| Java 25 | Application development |
| Java Collections | In-memory data management |
| Java File I/O | Data storage and backup |
| CSV | Persistent data storage |
| Command Line | User interface |
| Git | Version control |
| GitHub | Repository hosting |
The project demonstrates the following Java concepts:
- Classes and Objects
- Encapsulation
- Constructors
- Methods
- Access Modifiers
- Packages
- ArrayList
- Exception Handling
- Input Validation
- File Handling
- Modular Programming
- Object-Oriented Programming
student-course-management-system/
│
├── README.md
├── statement.md
├── TESTING.md
├── .gitignore
│
├── src/
│ └── com/
│ └── scms/
│ ├── Main.java
│ │
│ ├── Student.java
│ ├── Course.java
│ ├── Enrollment.java
│ └── Grade.java
│ │
│ ├── StudentManager.java
│ ├── CourseManager.java
│ ├── EnrollmentManager.java
│ └── FileManager.java
│ │
│ ├── StudentManagerTest.java
│ ├── CourseManagerTest.java
│ └── EnrollmentManagerTest.java
│
├── data/
│ ├── students.csv
│ ├── courses.csv
│ └── enrollments.csv
│
├── diagrams/
│ ├── system-architecture.png
│ ├── workflow-diagram.png
│ ├── use-case-diagram.png
│ ├── class-diagram.png
│ ├── sequence-diagram.png
│ └── storage-er-diagram.png
│
└── screenshots/
├── Screenshot 2026-09-10 225051.png
├── Screenshot 2026-09-10 225348.png
└── Screenshot 2026-09-10 225353.png
---
## ⚙️ **Requirements**
Before running the project, make sure the following are installed:
- **Java JDK 17 or later**
- **Git**
### Check Java Installation
```bash
java -version
javac -version
If both commands print a version number, you're ready to proceed.
git clone https://github.com/meyhul03/student-course-management-system.git
cd student-course-management-systemOn Windows (cmd/PowerShell):
javac -d bin src\com\scms\*.javaOn macOS/Linux:
javac -d bin src/com/scms/*.javajava -cp bin com.scms.MainThis launches the menu-driven command-line interface with options such as Add Student, View Students, Add Course, Enroll Student, Add Grade, Generate Student Report, and Create Backup.
- Enter the number for the menu option you want, then press Enter.
- Follow the on-screen prompts.
- Data is automatically saved to CSV files in
data/after each operation. - Select Create Backup at any time to back up your data.
- Select Exit to close the application.
No additional configuration is required. The data/ directory is created automatically on first run if it doesn't already exist.
javac -d bin src\com\scms\*.java
java -cp bin com.scms.StudentManagerTest
java -cp bin com.scms.CourseManagerTest
java -cp bin com.scms.EnrollmentManagerTest(Use forward slashes on macOS/Linux.) See TESTING.md for full test details.
The repository contains the following documentation resources:
- System Architecture Diagram
- Workflow Diagram
- Use Case Diagram
- Class Diagram
- Sequence Diagram
- Storage / ER Diagram
- Testing Documentation (
TESTING.md) - Application Screenshots
- Provide a simple academic record management system.
- Reduce manual handling of student and course information.
- Manage enrollments and grades in an organized manner.
- Demonstrate practical Java programming concepts.
- Provide persistent local storage using CSV files.
- Provide a simple command-line interface for academic management.
1. Student Management — Add, view, update, delete student records.
2. Course Management — Add, view, update, delete course records.
3. Enrollment Management — Manage student enrollment and prevent duplicates.
4. Grade Management — Accept marks, calculate letter grade and pass/fail status.
5. Report and Data Management — Generate reports, manage CSV storage and backups.
Performance — Should respond quickly for normal student, course, and enrollment operations.
Reliability — Stored records remain available after restarting the application.
Usability — Menu-driven interface with clear options, prompts, and result messages.
Maintainability — Separated into model, manager, storage, and test classes.
Error Handling — Invalid inputs and errors handled without unexpected termination.
- Graphical User Interface
- Database integration using JDBC
- User authentication
- Role-based access control
- Advanced search and filtering
- PDF report generation
- Academic performance analytics
Meyhul V Jaiswal
Programming in Java