| # ParcelSortX - Smart Package Sorting and Routing Simulation | |
| **ParcelSortX** is a simulation project developed in Java with a Swing-based GUI. It was created for an academic *Data Structures* course and demonstrates the effective use of classic data structures such as Queue, Stack, AVL Tree, Hash Table, and Circular Linked List. | |
| --- | |
| ## 📦 Project Overview | |
| In each simulation tick, new parcels are randomly generated and first placed into a queue. They are then sorted into destination cities using an AVL tree structure. Misrouted parcels are sent to a stack and reprocessed at intervals. All parcel data is tracked via a hash table, and terminal rotation (active city) is managed through a circular linked list. | |
| --- | |
| ## 🧱 Data Structures Used | |
| - **Queue (ArrivalBuffer):** Stores newly arriving parcels. | |
| - **Stack (ReturnStack):** Holds misrouted parcels to be reprocessed. | |
| - **AVL Tree (CityBST):** Organizes parcels based on destination city, each city has its own priority queue. | |
| - **Hash Table:** Tracks parcel status and enables quick access. | |
| - **Circular Linked List:** Manages the rotation of active terminal cities. | |
| --- | |
| ## 🚀 How to Use | |
| 1. Open the project with **IntelliJ IDEA**. | |
| 2. In the `src/` directory, run the `ParcelSortXGUI.java` main method. | |
| 3. (Optional) Create a `config.txt` file to customize the simulation. Example: | |
| ``` | |
| MAX TICKS=30 | |
| QUEUE CAPACITY=20 | |
| TERMINAL ROTATION INTERVAL=5 | |
| PARCEL PER TICK MIN=1 | |
| PARCEL PER TICK MAX=3 | |
| MISROUTING RATE=0.1 | |
| CITY LIST=Istanbul,Ankara,Izmir,Bursa | |
| ``` | |
| 4. Monitor the simulation via the GUI. | |
| 5. Upon completion, the system generates two output files: `report.txt` and `log.txt`. | |
| --- | |
| ## 🔄 Simulation Flow | |
| - Parcels are randomly generated and added to the arrival queue. | |
| - They are sorted into the AVL tree based on destination city. | |
| - Highest-priority parcels are dispatched to the currently active terminal. | |
| - Misrouted parcels are pushed to the return stack. | |
| - Return parcels are retried up to 3 times before being canceled. | |
| - Parcel statuses are continuously tracked via a hash table. | |
| - At the end, summary and logs are exported automatically. | |
| --- | |
| ## 🖥️ Interface Features | |
| - Dark-themed Swing-based graphical user interface. | |
| - Real-time visual simulation of parcel flow and data structures. | |
| - ASCII-based structural representation. | |
| - Final simulation report displayed in a separate window in HTML format. | |
| --- | |
| ## 📁 File Structure | |
| ``` | |
| src/ | |
| ├── ParcelSortX.java # Simulation engine and core logic | |
| ├── ParcelSortXGUI.java # GUI entry point and layout | |
| config.txt # (Optional) Simulation configuration file | |
| report.txt # Automatically generated summary report | |
| log.txt # Step-by-step simulation log | |
| ``` | |
| --- | |
| ## 👩💻 Author | |
| - **elifbasboga** | [Hugging Face Profile](https://huggingface.co/elifbasboga) | |
| --- | |
| ## 📄 License | |
| This project is intended for educational use only. Not for commercial distribution. | |