ExploreMate is an intelligent travel itinerary planning software designed to optimize travel plans based on user-defined parameters like budget, time, and places to visit. Built with C++ and a user-friendly Qt-based graphical interface, ExploreMate provides personalized travel suggestions, including alternative routes, to enhance the user's travel experience.
-
Route Planning
- Dynamically calculates and suggests the best travel routes.
- Provides three alternative routes based on user preferences.
-
Custom Parameters
- Optimizes itineraries based on duration, ratings, distance, and connectivity.
-
Graph-Based Travel Network
- Uses a graph representation of locations, with each node containing travel-related attributes:
- Distance
- Duration
- Rating
- Connectivity
- Uses a graph representation of locations, with each node containing travel-related attributes:
-
Qt Integration
- Interactive dropdowns and input fields for location and travel data.
- Intuitive feedback system for user input on destinations.
-
Visualization
- Displays suggested routes in a clear, easy-to-understand format using QString outputs.
-
Graph Module
- Handles graph creation and traversal.
- Implements the
suggestAlternativeRoutesfunction to generate alternative paths.
-
UI (Qt Widgets)
- Dropdown for selecting starting locations.
- Buttons and forms for feedback and user input.
-
Algorithm
- Prioritizes travel to neighboring nodes with the highest calculated value (based on custom weightage of parameters).
- Halts travel if no valid options remain for the given constraints.
- Qt Framework: Install Qt Creator and its necessary components.
- C++ Compiler: Ensure you have a working C++ compiler, such as GCC or MSVC.
- Clone the repository:
git clone https://github.com/PrathamKSrivastav/ExploreMate.git cd ExploreMate - Open the project in QT Creator
- Configure the built settings
- Build and run the application
- Launch the application
- Select the starting location and input travel parameters (e.g., total days).
- View optimized routes along with three alternative suggestions.
- Provide feedback for destinations through the feedback form.
Generates the best route based on:
- Remaining travel days
- Graph parameters (distance, duration, rating, connectivity). Example Output
Dehradun --> Rishikesh --> Chakrata --> Mussoorie
Generates three alternative routes based on:
- Remaining travel days
- Graph parameters (distance, duration, rating, connectivity). Example Output
Route 1: Dehradun -> Rishikesh -> Haridwar
Route 2: Dehradun -> Mussoorie -> Chakrata
Route 3: Dehradun -> Tehri -> Dhanaulti
QString Output Generation This function converts a vector of strings representing a travel path into a readable QString format:
QString pathString;
for (size_t i = 0; i < suggestedPath.size(); ++i) {
pathString.append(QString::fromStdString(suggestedPath[i]));
if (i < suggestedPath.size() - 1) {
pathString.append(" -> ");
}
}
Alternate Routes Handling
Alternative routes (route1, route2, route3) are generated with the following logic:
void suggestAlternativeRoutes(const string ¤tLocation, float totalDays, vector<string> &route1, vector<string> &route2, vector<string> &route3) {
// Implementation ensures three routes are generated based on remaining days and graph traversal.
}
Qt UI Integration The Qt Widget interface facilitates the following:
- Dropdown for selecting the starting location.
- Buttons for generating routes and submitting feedback.
- Integration with Maps API for real-world route suggestions.
- Advanced Budget Optimization considering accommodation and meal costs.
- Enhanced UI with interactive maps and graphical route displays.