A feature-rich command-line dictionary application built with modern C++ (C++11). The system supports Role-Based Access Control (RBAC) for Admin and User roles, dynamic vocabulary suggestions, custom definition mappings, and an integrated Leitner Box learning mechanism for effective flashcard-style study.
| Role | Access Level | Available Actions & Capabilities |
|---|---|---|
| Admin | Privileged | Full CRUD operations (Add, Edit, Delete), review user vocabulary suggestions, and inspect global dictionary records. |
| User | Standard | Search terms, submit word suggestions, attach custom meanings, and manage personal Leitner learning boxes. |
The application incorporates a Leitner box algorithm, enabling users to shift vocabulary entries into spaced-repetition study queues to maximize memory retention and long-term learning.
Vocabulary records and associated definitions are persisted locally via words.txt using a key-value delimited format:
word : meaning1, meaning2, meaning3
| Component | Format Constraint | Description |
|---|---|---|
| Term Key | Plain text string | Primary index key for dictionary lookups |
| Delimiter | : | Separates the target term from its definitions |
| Meanings | Comma-separated list | Multi-value definition strings mapped to the primary term |
For initial configuration and testing, log in with the following default admin credentials:
| Parameter | Value |
|---|---|
| Username | Admin |
| Password | Admin |
*OS: Windows (uses Windows console routines) *Compiler: Any C++ compiler supporting C++11 or higher (g++, MSVC, Clang).
Compile the source code into an executable binary:
Compile using GCC
g++ main.cpp -std=c++11 -o dictionary
Run executable (Windows)
dictionary.exe- Initialization: Ensure words.txt is present in the working directory alongside the compiled binary.
- Authentication: Select either Admin or User login mode at start.
- Admin Operations: Access management options to curate vocabulary or approve user-submitted terms.
- User Operations: Search terms, add custom definition overlays, and push difficult words to the local Leitner learning pipeline.