Skip to content

Kianis534/StudentRegistry-Pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StudentRegistry-Pro: Modern C++17 Contact Management System

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.


💎 Project Philosophy & Open Source Goals

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).

🚀 Key Technical Features

1. High-Precision Search Engine

Unlike basic applications that require an exact name or ID match, this registry features a robust search engine:

  • Partial Match Search: Uses std::string::find and std::string_view for efficient substring scanning. You can find "Abdullah" just by searching "Abdu".
  • Dual-Key Logic: A single search query scans both the Name and the ID fields simultaneously to find all relevant records.
  • Zero-Allocation Views: Uses C++17 std::string_view to pass data around without creating unnecessary memory copies.

2. Advanced STL Implementation

The registry engine is powered by the C++ Standard Template Library (STL) for maximum reliability:

  • ID Validation: Uses std::any_of with 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.

3. Persistent Storage (File Handling)

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.

4. Cyber-Industrial Terminal UI

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.

🛠 Project Components

  • 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.

⚙️ How to Run the Project

This project is built with CMake, making it fully portable. It works on Windows, Linux, and macOS.

Option 1: Using Visual Studio (Recommended for Windows)

  1. Open Visual Studio.
  2. Go to File > Open > Folder... and select this project folder.
  3. Visual Studio will automatically detect the CMakeLists.txt file and configure the project (wait for the progress bar at the bottom to finish).
  4. On the top toolbar, look for the "Startup Item" dropdown (it has a green play button). Select StudentRegistryPro.exe.
  5. Click the Green Play Button or press F5 to build and run.
  6. The application will launch, and your StudentRegistryPro.exe will be generated in the Root Folder of the project.

Option 2: Using the Command Line (All Platforms)

  1. Open your terminal or Command Prompt in the project folder.
  2. Run the following commands:
    mkdir build
    cd build
    cmake ..
    cmake --build .
  3. Once finished, the StudentRegistryPro executable will be in the Main Project Folder. Run it with:
    • Windows: .\StudentRegistryPro.exe
    • Linux/macOS: ./StudentRegistryPro

📂 Repository Architecture

/ (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)

💡 A Message for Fellow Students & Developers

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?

📄 License

This project is open-source and is licensed under the MIT License. It is free to use for educational purposes, and contributions are welcome!

About

A Student Information Management System with Modern C++17 and OOP. Optimized for performance with STL algorithms, pipe-delimited file persistence, and a visually immersive Cyber-Industrial CLI UI. A high-quality learning resource for Students & Beginner developers.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors