This is a simple console-based Learning Management System (LMS) developed in C++ as part of my course Software Design and Architecture semester project . It simulates a basic structure of an LMS that handles user login, course management, and user-specific functionality. The project was developed to practice core C++ concepts including file handling, OOP, and layered architecture.
- Role-based system: Admin and Student
- Console-based interactive menus
- Text-file based data storage (no database)
- Simulates course assignments, views, and management features
- Built with a basic 3-layered architecture
This LMS follows a layered architecture, dividing the codebase into the following conceptual layers:
-
UI Layer
- Handles user interaction via console menus and prompts.
- Takes input, displays output.
-
Domain Layer
- Contains core logic (e.g. role verification, course handling, student records).
- Uses OOP concepts like classes and structs.
-
Data Layer
- Handles file operations (
fstream). - Stores and retrieves data from
.txtfiles.
- Handles file operations (
⚠️ Note: The architecture is implemented in a basic way and currently contains several flaws, hard-coded logic, and lacks separation of concerns in some areas.
- 🔁 Repetition in code logic
- 💾 File handling is not well abstracted
- 🧩 Domain logic is mixed with UI code
- 🔐 No proper error handling or input validation
- 📦 Needs separation into multiple
.cpp/.hfiles per layer - 🧪 No automated testing or debugging utilities
This version is a work in progress and needs significant modification and refactoring to follow clean architecture principles more strictly.
- Refactor into clear modular structure (
UI,Domain,Datafolders) - Replace text file storage with structured formats (JSON or database)
- Add more features (grades, assignments, attendance, admin dashboard)
- Improve UI experience (maybe even migrate to GUI or web)
- Clone this repo:
git clone https://github.com/rabeehakamran/Learning-Management-System.git