{"id":30962345,"url":"https://github.com/hassanshehzad1/dsa_projects","last_synced_at":"2025-09-11T19:35:22.275Z","repository":{"id":312393116,"uuid":"1047355156","full_name":"hassanshehzad1/DSA_PROJECTS","owner":"hassanshehzad1","description":"## About - Virtual Pet Sanctuary Simulator  The **Virtual Pet Sanctuary Simulator** is a comprehensive Java-based console application that simulates the management of a virtual animal sanctuary. The project is designed to provide an interactive experience for users in different roles—Manager, CareTaker, and Guest—allowing them to manage, care for","archived":false,"fork":false,"pushed_at":"2025-08-30T08:35:07.000Z","size":161,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-30T10:18:45.109Z","etag":null,"topics":["avl-tree","binary-search-tree","data-structures","data-structures-and-algorithms","dsa","dsa-algorithm","graph","hashing","hashmap","heap","iterator","java","linked-list","queue","searching-algorithms","sorting-algorithms","stack","tree"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hassanshehzad1.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-30T08:24:46.000Z","updated_at":"2025-08-30T08:35:10.000Z","dependencies_parsed_at":"2025-08-30T10:18:46.127Z","dependency_job_id":"4adb6384-a9fc-475c-a65e-861d10912558","html_url":"https://github.com/hassanshehzad1/DSA_PROJECTS","commit_stats":null,"previous_names":["hassanshehzad1/dsa_projects"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hassanshehzad1/DSA_PROJECTS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hassanshehzad1%2FDSA_PROJECTS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hassanshehzad1%2FDSA_PROJECTS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hassanshehzad1%2FDSA_PROJECTS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hassanshehzad1%2FDSA_PROJECTS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hassanshehzad1","download_url":"https://codeload.github.com/hassanshehzad1/DSA_PROJECTS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hassanshehzad1%2FDSA_PROJECTS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274694565,"owners_count":25332674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avl-tree","binary-search-tree","data-structures","data-structures-and-algorithms","dsa","dsa-algorithm","graph","hashing","hashmap","heap","iterator","java","linked-list","queue","searching-algorithms","sorting-algorithms","stack","tree"],"created_at":"2025-09-11T19:35:20.006Z","updated_at":"2025-09-11T19:35:22.264Z","avatar_url":"https://github.com/hassanshehzad1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Virtual Pet Sanctuary Simulator\n\n# Virtual Pet Sanctuary - Complete Documentation\nA Java-based console application that simulates a virtual pet sanctuary. Manage pets, users, events, funds, and adventures using various data structures and file persistence.\n\n## Features\n\n- **User Roles:** Manager, CareTaker, Guest\n- **User Management:** Register, Login, Assign roles\n- **Pet Management:** Add, remove, view, buy, assign, and interact with pets\n- **Event Management:** Trigger, resolve, and manage pet-related events\n- **Funds Management:** Add, track, and undo fund changes\n- **Assignments:** Assign pets to CareTakers\n- **Pet Adventures:** Simulate pet quests using graphs, trees, stacks, and queues\n- **Social Network:** Analyze pet interactions\n- **Persistence:** Data saved in `users.txt`, `pets.txt`, `assignments.txt`, `funds.txt`, `events.txt`\n\n## Data Structures Used\n\n- **ArrayList:** Users, pets, logs\n- **Stack:** Fund history, adventure moves, pet viewing history\n- **Queue:** Event queue, load history, item collection, interaction requests\n- **LinkedList:** Adventure logs, pet lists\n- **PriorityQueue:** Critical pets, adventure prioritization\n- **HashMap:** Quest challenges, adventure maps\n- **Binary Search Tree:** Users and pets organization\n- **Custom Linked List:** Favorite pets, recent pet views\n\n## File Structure\n\n- `Main.java` — Entry point\n- `Sanctuary/` — Sanctuary logic, adventure quests\n- `Pet/` — Pet classes and management\n- `User/` — User, Manager, CareTaker, Guest classes\n- `Event/` — Event and event management\n- `users.txt` — User data\n- `pets.txt` — Pet data\n- `assignments.txt` — Pet assignments to CareTakers\n- `funds.txt` — Sanctuary funds\n- `events.txt` — Event logs\n\n## How to Run\n\n1. **Compile:**\n   ```sh\n   javac Main.java\n   ```\n2. **Run:**\n   ```sh\n   java Main\n   ```\n\n## Usage\n\n- **Main Menu:** Login, Register, Continue as Guest, Exit\n- **Manager:** Add funds, manage pets, assign CareTakers, manage events, analyze social network, manage adventures\n- **CareTaker:** View assigned pets, interact, resolve events, monitor health, manage care queue\n- **Guest:** View/buy pets, mark favorites, view pet events, request interactions\n\n## Sample Data Files\n\n- `users.txt` — Stores users in CSV format\n- `pets.txt` — Stores pets in CSV format\n- `assignments.txt` — CareTaker-pet assignments\n- `funds.txt` — Sanctuary funds (single value)\n- `events.txt` — Event logs\n\n\nThis document combines all module documentation for the Virtual Pet Sanctuary project, including **Sanctuary**, **Pet**, **User**, **Event**, and **Guest** modules.\n\n---\n\n## Sanctuary Module\n\nThe **Sanctuary** module acts as the central hub for managing pets, users, events, funds, and advanced features like pet adventures and social networks.\n\n### File Structure\n\n- `Sanctuary/Sanctuary.java` — Main class for sanctuary operations, funds, and menu navigation.\n- `Sanctuary/PetAdventureQuest.java` — Manages pet adventure quests using multiple data structures.\n- `Sanctuary/PetSocialNetwork.java` — Analyzes and recommends pet social interactions using advanced algorithms and data structures.\n\n### Core Features\n\n#### Sanctuary.java\n\n- **Funds Management:** Tracks and updates sanctuary funds using a static variable and a Stack for undo/redo.\n- **Pet Management:** Uses `PetManager` to add, remove, and manage pets.\n- **User Management:** Uses `UserManager` for user registration, login, and role assignment.\n- **Event Management:** Uses `EventManager` to handle all event-related operations.\n- **Daily Updates:** Simulates daily pet needs and triggers critical events.\n- **History Tracking:** Maintains a Queue for load history and a Stack for fund changes.\n- **Menu Navigation:** Provides the main menu for login, registration, guest access, and exit.\n\n**Example Usage:**\n```java\nSanctuary sanctuary = new Sanctuary(1000.0);\nsanctuary.displayMenu();\n```\n\n#### PetAdventureQuest.java\n\n- **Interactive Quests:** Pets can participate in adventure quests, collecting items, making decisions, and facing challenges.\n- **Data Structures:** Uses HashMap (quest challenges), Stack (move history), Queue (item collection), LinkedList (adventure log), Tree (decision tree), PriorityQueue (low-health pets), Graph (adventure maps), Arrays (challenge storage).\n- **Key Methods:** `runAdventureSimulation`, `scheduleAdventureQuest`, `prioritizeLowHealthPets`, `undoLastMove`, `displayAdventureLog`, `adventureMenu`.\n\n#### PetSocialNetwork.java\n\n- **Social Analysis:** Analyzes and recommends social interactions between pets.\n- **Data Structures:** Graph (adjacency matrix), Stack (interaction history), PriorityQueue (mood), HashMap (preferences), Tree (BST), Queue, LinkedList, Arrays.\n- **Key Methods:** `recommendCompatiblePets`, `scheduleSocialEvent`, `prioritizeLowMoodPets`, `undoLastInteraction`, `displayInteractionLog`, `socialNetworkMenu`.\n\n---\n\n## Pet Module\n\nThe **Pet** module manages all pet-related data, classes, and interactions.\n\n### File Structure\n\n- `Pet/Pet.java` — Abstract base class for all pets.\n- `Pet/Dog.java`, `Pet/Rabbit.java`, `Pet/Horse.java`, `Pet/Lion.java` — Concrete pet subclasses.\n- `Pet/InteractPet.java` — Interface for pet interactions.\n- `Pet/PetManager.java` — Manages all pets, including storage, search, assignment, and file I/O.\n- `Pet/PetNode.java` — Node for singly linked list.\n- `Pet/PetNodeBst.java` — Node for binary search tree.\n- `Pet/PetInteraction.java` — Manages pet-to-pet interactions as a graph.\n\n### Core Classes\n\n#### Pet.java (Abstract)\n\n- **Fields:** `petId`, `petName`, `petType`, `petForSale`, `petAge`, `petPrice`, `petHunger`, `petHealth`, `petMood`, `PetManager petManager`\n- **Key Methods:** `feedPet()`, `playWithPet()`, `healPet()`, `simulateDailyNeeds()`, file I/O, abstract `eat()`, `play()`, `heal()`\n\n#### Pet Subclasses\n\n- **Dog:** `eat()` reduces hunger by 10, `play()` increases mood by 12, `heal()` increases health by 16.\n- **Rabbit:** `eat()` reduces hunger by 8, `play()` increases mood by 10, `heal()` increases health by 14.\n- **Horse:** `eat()` reduces hunger by 12, `play()` increases mood by 15, `heal()` increases health by 18.\n- **Lion:** `eat()` reduces hunger by 15, `play()` increases mood by 8, `heal()` increases health by 20.\n\n#### InteractPet.java\n\n- Interface for `eat()`, `play()`, `heal()`.\n\n#### PetManager.java\n\n- **Data Structures:** Singly Linked List (PetNode), BST (PetNodeBst), HashMap (CareTaker to pets).\n- **Key Methods:** `addPet`, `removePet`, `getPet`, `getPets`, `getPetsForSale`, `displayAllPets`, `assignPetToCareTaker`, file I/O, sorting, filtering.\n\n#### PetInteraction.java\n\n- **Graph:** Manages pet-to-pet interactions using adjacency matrix.\n- **Key Methods:** `addPet`, `addInteraction`, `displayInteraction`, `findCommonInteractions`, `detectInteractionGraph`.\n\n---\n\n## User Module\n\nThe **User** module manages all user-related data, authentication, roles, and user-specific features.\n\n### File Structure\n\n- `User/User.java` — Abstract base class for all users.\n- `User/Manager.java` — Manager role.\n- `User/CareTaker.java` — CareTaker role.\n- `User/UserManager.java` — Manages user registration, login, storage, and role assignment.\n- `User/UserNodeBST.java` — Node for BST for fast user lookup.\n- `User/Interactable.java` — Interface for user-pet interaction.\n- `User/PetHealthNode.java` — (Inner class in CareTaker) Node for BST to track pet health.\n\n### Core Classes\n\n#### User.java (Abstract)\n\n- **Fields:** `userName`, `password`, `email`, `age`, `role`, `lastLogin`, static `totalUser`\n- **Key Methods:** Getters/Setters, `interactWithPet(Pet pet)` (abstract), `toString()`\n\n#### Manager.java\n\n- **Features:** Funds management, pet management, event management, reporting, critical pet prioritization, pet interaction tracking, social network \u0026 adventures.\n- **Example:**\n    ```java\n    Manager manager = new Manager(\"Alice\", \"alice@email.com\", \"password123\", 30, 'M');\n    manager.addFunds(5000);\n    manager.generateReport(petManager);\n    ```\n\n#### CareTaker.java\n\n- **Features:** Assigned pets (doubly linked list), care queue, pet health monitoring (BST), pet interaction, event resolution, navigation, social network \u0026 adventures.\n- **Example:**\n    ```java\n    CareTaker ct = new CareTaker(\"Bob\", \"bob@email.com\", \"password456\", 25, 'C');\n    ct.assignPetToCareTaker(pet);\n    ct.interactWithPet(pet);\n    ```\n\n#### UserManager.java\n\n- **Data Structures:** ArrayList (users), BST (UserNodeBST), Singleton (Manager).\n- **Key Methods:** `register`, `login`, `removeUser`, `getUser`, `isEmailRegistered`, file I/O, search by prefix, count active users.\n\n#### UserNodeBST.java\n\n- Node for BST used in `UserManager`.\n\n#### Interactable.java\n\n- Interface for `interactWithPet(Pet pet)`.\n\n#### PetHealthNode.java\n\n- Node for BST to track assigned pets by health (in CareTaker).\n\n---\n\n## Event Module\n\nThe **Event** module tracks, triggers, resolves, and manages all events in the sanctuary.\n\n### File Structure\n\n- `Event/Event.java` — Defines the Event class.\n- `Event/EventNode.java` — Node for doubly linked list (timeline).\n- `Event/EventManager.java` — Manages all events, dependencies, timeline, undo/redo, file I/O.\n- `Event/EventTriggerable.java` — Interface for event-related actions.\n\n### Core Classes\n\n#### Event.java\n\n- **Fields:** `eventType`, `date`, `description`, `affectedPet`, `isResolved`\n- **Key Methods:** `getEventDetails()`, `isCritical()`, `resolveEvent()`, getters/setters, `toString()`\n\n**Example:**\n```java\nPet bunny = new Rabbit(1, \"bunny\", true, 2, 100.0);\nEvent escape = new Event(\"Escape\", bunny, \"bunny has escaped!\", LocalDateTime.now());\nSystem.out.println(escape.getEventDetails());\nescape.resolveEvent();\n```\n\n#### EventNode.java\n\n- Node for doubly linked list (timeline).\n\n#### EventTriggerable.java\n\n- Interface for `triggerRandomEvent`, `resolveEvent`, `displayEvents`, `getUnresolvedEvent`.\n\n#### EventManager.java\n\n- **Data Structures:** ArrayList (events), Queue (pending events), Stack (undo/redo), HashMap (dependencies), Doubly Linked List (timeline).\n- **Key Methods:** `addEvent`, `triggerRandomEvent`, `resolveEvent`, `displayEvents`, `getUnresolvedEvent`, `displayUnresolvedEvents`, `getEventById`, file I/O, dependencies, undo/redo, timeline, sorting, searching.\n\n**Example Usage:**\n```java\neventManager.triggerRandomEvent(petManager.getAllPets());\neventManager.displayUnresolvedEvents();\neventManager.resolveEventByID(1);\neventManager.undoLastEventAction();\n```\n\n---\n\n## Guest Module\n\nThe **Guest** module allows visitors to browse, buy, and interact with pets using various data structures and algorithms.\n\n### File Structure\n\n- `Guest/Guest.java` — Implements all guest functionalities.\n\n### Core Features\n\n- **Circular Linked List:** For cycling through pets for sale.\n- **Stack:** For pet viewing history.\n- **Doubly Linked List:** For favorite pets navigation.\n- **Singly Linked List:** For recent pet views.\n- **Queue:** For pet interaction requests.\n- **Graph (Adjacency List):** For pet recommendations.\n- **Binary Search:** For searching pets by name.\n- **Insertion Sort:** For sorting pets by age.\n\n### Main Methods\n\n- `viewPetsForSale()`: Displays pets for sale.\n- `cycleToNextPetForSale()`: Cycles to next pet.\n- `markPetAsFavorite()`: Marks pet as favorite.\n- `buyPet()`: Buys a pet.\n- `viewFavoritePets()`: Displays favorite pets.\n- `viewPetEvents(EventManager)`: Displays unresolved pet events.\n- `searchPetByName()`: Searches pet by name.\n- `sortPetsByAge()`: Sorts pets by age.\n- `displayRecentViewedPet()`: Shows recent pet views.\n- `addInteractionRequest(String)`, `displayInteractionRequests()`: Manages interaction requests.\n- `recommendSimilarPets(String)`: Recommends similar pets.\n- `viewPetHistory()`: Shows pet viewing history.\n- `navigateFavoritePets(String)`: Navigates favorite pets.\n- `searchPetsByPriceRange(double, double)`: Searches pets by price range.\n\n---\n\n## Example Main Menu\n\n```\n=== Virtual Pet Sanctuary Simulator ===\n1: Login\n2: Register\n3: Continue as Guest\n0: Exit\nEnter choice:\n```\n\n---\n\n## Notes\n\n- All modules use advanced data structures for efficient management, analytics, and undo/redo.\n- Data is persisted in text files (`users.txt`, `pets.txt`, `events.txt`, etc.).\n- Menus and features are role-based and interactive.\n- The project is extensible for future features.\n\n---\n\n\n## Author\n\n- [Hassan Shehzad]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhassanshehzad1%2Fdsa_projects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhassanshehzad1%2Fdsa_projects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhassanshehzad1%2Fdsa_projects/lists"}