StudentRegistry-Pro is a professional-grade, high-performance student information management system. Originally developed as a university mini-project, it has been fully refactored to meet modern software engineering standards. This project serves as an educational resource for students learning Object-Oriented Programming (OOP) and as a high-quality template for building robust command-line applications using C++17.
The primary goal of this repository is to provide students and developers with a clean, well-documented example of a "Student Management System" that goes beyond basic textbook code. By focusing on memory safety, efficient filing, and modern C++ features, this project offers:
- A Learning Template: Ideal for students looking to understand how to separate data logic from user interface.
- Professional Refactoring: Demonstrates how to take a legacy procedural project and transform it into a modern, object-oriented system.
- Production Standards: Implements real-world concepts like data delimiters, partial-match searching, and RAII (Resource Acquisition Is Initialization).
Unlike basic applications that require an exact name or ID match, this registry features a robust search engine:
- Partial Match Search: Uses
std::string::findandstd::string_viewfor efficient substring scanning. You can find "Abdullah" just by searching "Abdu". - Dual-Key Logic: A single search query scans both the
Nameand theIDfields simultaneously to find all relevant records. - Zero-Allocation Views: Uses C++17
std::string_viewto pass data around without creating unnecessary memory copies.
The registry engine is powered by the C++ Standard Template Library (STL) for maximum reliability:
- ID Validation: Uses
std::any_ofwith lambda expressions to verify that no duplicate Student IDs are entered. - Efficient Deletion: Implements the Erase-Remove Idiom (
std::remove_if+erase) to delete records in a single pass. - Professional Sorting: Provides one-click sorting for both alphabetical (Name) and numerical (ID) order using
std::sort.
The system automatically synchronizes with a local flat-file database (registry.txt):
- Pipe Delimiter: Uses the
|symbol to separate data. This ensures your data won't break if a student's address contains a comma or a space. - Auto-Sync: Automatically loads all data on startup and prompts to save changes on exit.
A modern and interactive CLI experience:
- Unicode Art & Boxes: Uses professional box-drawing characters (┌ ─ ┐) for a structured menu layout.
- ANSI Colors: Color-coded status alerts (Green for success, Red for errors, Cyan for UI).
- Dynamic Animations: Real-time loading indicators for a "live" system feel.
Student.h: A modern, header-only entity class using move semantics for efficiency.Directory.h / .cpp: The core management engine. It handles all searching, sorting, and file I/O operations.UIUtils.h: A dedicated styling utility for terminal colors, ASCII rendering, and UI animations.Source.cpp: The main entry point. It manages the application event loop and validates user input.
This project is built with CMake, making it fully portable. It works on Windows, Linux, and macOS.
- Open Visual Studio.
- Go to File > Open > Folder... and select this project folder.
- Visual Studio will automatically detect the
CMakeLists.txtfile and configure the project (wait for the progress bar at the bottom to finish). - On the top toolbar, look for the "Startup Item" dropdown (it has a green play button). Select
StudentRegistryPro.exe. - Click the Green Play Button or press F5 to build and run.
- The application will launch, and your
StudentRegistryPro.exewill be generated in the Root Folder of the project.
- Open your terminal or Command Prompt in the project folder.
- Run the following commands:
mkdir build cd build cmake .. cmake --build .
- Once finished, the
StudentRegistryProexecutable will be in the Main Project Folder. Run it with:- Windows:
.\StudentRegistryPro.exe - Linux/macOS:
./StudentRegistryPro
- Windows:
/ (Root)
├── CMakeLists.txt # Professional build config (Binary-to-Root)
├── .gitignore # Optimized for GitHub Desktop
├── README.md # In-depth technical documentation
├── Source.cpp # Application Entry & UI Controller
├── Directory.cpp # Registry Engine Implementation
├── Directory.h # Registry Engine Interface
├── Student.h # C++17 Header-only Entity
├── UIUtils.h # Terminal Styling & Color Framework
└── registry.txt # Local Database (Auto-generated/Excluded from Git)
I hope this project provides a valuable reference for your own learning journey! This repository was created to bridge the gap between basic academic exercises and professional software standards.
Feel free to fork the repository, experiment with the C++17 features, and use these patterns in your own studies. If you find this project helpful, please consider giving it a ⭐ to help others find it!
Happy Coding! 🚀
Would you like me to help you format any other sections of your README, such as the installation steps or the tech stack list?
This project is open-source and is licensed under the MIT License. It is free to use for educational purposes, and contributions are welcome!