A modular, feature-rich C++ CLI application for managing events with admin authentication, smart conflict detection, undo support, and email reminders.
Smart Event Manager is a command-line C++ application that helps you organize personal and professional events with a clean, colorized terminal interface. It uses Object-Oriented Programming, file-based persistence (CSV), and a role-based access system to provide a robust event management experience.
Pranav Chaudhari β 2nd Year, PCCOE
π§ pranavchaudhari2006@gmail.com
π github.com/Pranav-chaudhari-2006
| Technology | Purpose |
|---|---|
| C++17 | Core language with OOP and STL |
STL β vector, stack, map, regex |
Data structures and algorithms |
| fstream / CSV | Persistent file-based event storage |
PowerShell (send_mail.ps1) |
Email reminder dispatch via SMTP |
| ANSI Color Codes | Colorized terminal output |
| MinGW g++ | Compiler toolchain (Windows) |
ACM-TASK/
βββ assets/
β βββ screenshots/ # All UI screenshots
β βββ 01_admin_access.png
β βββ 02_main_menu.png
β βββ 03_add_event.png
β βββ ...
βββ include/ # Header files (.h)
β βββ Event.h # Event class declaration
β βββ EventManager.h # EventManager class declaration
β βββ Utils.h # Utility functions & color codes
βββ src/ # Implementation files (.cpp)
β βββ Event.cpp # Event constructors, getters, serialization
β βββ EventManager.cpp # All event management logic
β βββ main.cpp # Entry point, menu loop, role system
βββ obj/ # Compiled object files (auto-generated)
βββ .clangd # Clangd config (fixes IDE analysis for any IDE)
βββ compile_commands.json # Universal IDE language server config
βββ build.bat # One-click Windows build & run script
βββ Makefile # Alternative make-based build
βββ send_mail.ps1 # PowerShell email dispatch script
βββ events.csv # Auto-generated event data (runtime)
βββ README.md
- Admin β Full access (add, edit, delete, send reminders, statistics, sort, undo)
- User β Read-only access (view all, view today, view by date, search)
- Admin access is protected by a passcode
| Feature | Description |
|---|---|
| Add Event | Create events with ID, name, type, date (DD-MM-YYYY), time (HH:MM), location |
| Edit Event | Modify any field of an existing event by ID |
| Delete Event | Remove an event permanently by ID |
| Sort Events | Sort all events chronologically by date and time |
| Undo Last Operation | Stack-based undo β reverses the last add/edit/delete |
| Feature | Description |
|---|---|
| View All Events | Tabular display of all scheduled events |
| View Today's Events | Automatically filters events for the current date |
| View By Date | Filter events for any specific date |
| Search Events | Keyword search across event name and type (case-insensitive) |
- Conflict Detection β Warns if two events clash at the same date/time
- Duplicate Detection β Prevents adding events with the same ID or identical name+date+time
- Smart Slot Suggestions β Suggests free time slots when a conflict is found
- Date & Time Validation β Enforces
DD-MM-YYYYandHH:MMformats via regex
- View Statistics β Shows total events, breakdown by type, upcoming events count
- Send Reminders β Reads an attendee CSV file and sends email reminders via PowerShell SMTP
- Windows OS
- MinGW g++ with
g++in your PATH - PowerShell (for email feature)
git clone https://github.com/Pranav-chaudhari-2006/ACM-TASK.git
cd ACM-TASK.\build.batThis compiles all source files and launches the application automatically.
g++ -std=c++17 -Wall -Iinclude src/main.cpp src/Event.cpp src/EventManager.cpp -o SmartEventManager.exe
.\SmartEventManager.exeEdit send_mail.ps1 and set your Gmail credentials:
[string]$User = "your_email@gmail.com"
[string]$Pass = "your_app_password" # Gmail App Password, not your regular passwordNote: Use a Gmail App Password, not your main password.
===== Smart Event Manager =====
Admin Menu:
1. Add Event
2. Edit Event
3. Delete Event
4. View All Events
5. View Today
6. View by Date
7. Search Event
8. Send Reminders
9. View Statistics
10. Sort Events (By Date)
11. Undo Last Operation
12. Exit
Enter choice: _
Default Admin Passcode: 1234
This project is licensed under the MIT License β see the LICENSE file for details.












