{"id":27111860,"url":"https://github.com/mauricele/hash-list-example","last_synced_at":"2025-04-07T01:25:05.326Z","repository":{"id":286505021,"uuid":"961584370","full_name":"MauriceLe/Hash-List-Example","owner":"MauriceLe","description":"Beispiel zur Implementierung einer Hash-Liste mit einer stackartigen Struktur zur Verwaltung von Studenten-Daten in Python","archived":false,"fork":false,"pushed_at":"2025-04-06T21:06:12.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T22:19:32.515Z","etag":null,"topics":["example","hash-list","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/MauriceLe.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}},"created_at":"2025-04-06T20:08:08.000Z","updated_at":"2025-04-06T21:52:47.000Z","dependencies_parsed_at":"2025-04-06T22:19:34.470Z","dependency_job_id":"aaf6bbc9-e767-4446-907b-03213aeb5d12","html_url":"https://github.com/MauriceLe/Hash-List-Example","commit_stats":null,"previous_names":["mauricele/hash-list-example"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MauriceLe%2FHash-List-Example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MauriceLe%2FHash-List-Example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MauriceLe%2FHash-List-Example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MauriceLe%2FHash-List-Example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MauriceLe","download_url":"https://codeload.github.com/MauriceLe/Hash-List-Example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247575589,"owners_count":20960805,"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","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":["example","hash-list","python"],"created_at":"2025-04-07T01:25:04.720Z","updated_at":"2025-04-07T01:25:05.315Z","avatar_url":"https://github.com/MauriceLe.png","language":"Python","readme":"# Hash-List Beispiel\r\n\r\nDieses Projekt demonstriert ein einfaches Beispiel zur Implementierung einer Hash-Liste mit einer stackartigen Struktur zur Verwaltung von Studenten-Daten in Python. Der Code implementiert grundlegende Operationen wie Hinzufügen, Entfernen, Modifizieren und Anzeigen von Studenten unter Verwendung einer Hash-basierten Liste.\r\n\r\n## Anforderungen\r\n\r\n- Python 3.x\r\n\r\n## Projektstruktur\r\n\r\n- **main.py**: Das Hauptskript, das die Benutzeroberfläche verwaltet und Operationen auf der `HashList` durchführt.\r\n- **src/Student.py**: Definiert die `Student`-Klasse, die Informationen über Studenten (Vorname, Nachname, ID) speichert.\r\n- **src/HashList.py**: Definiert die `HashList`-Klasse, die die Hash-Tabelle implementiert und Operationen wie Hinzufügen, Löschen und Modifizieren unterstützt.\r\n- **src/StackList.py**: Implementiert eine Stack-Struktur zur Handhabung von Studenten mit demselben Nachnamen (Kollisionen in der Hash-Tabelle).\r\n- **src/StackElement.py**: Repräsentiert ein einzelnes Element in der `StackList`, das einen Studenten und einen Verweis auf das nächste Element im Stack enthält.\r\n- **Data.txt**: Eine Datei, die Studenten-Daten (Vorname, Nachname, ID) enthält, um die Hash-Liste zur Laufzeit zu befüllen.\r\n\r\n## Verwendung\r\n\r\n1. **Programm ausführen**:\r\n   Um das Programm zu starten, führen Sie folgenden Befehl aus:\r\n   ```bash\r\n   python main.py\r\n   ```\r\n\r\n2. **Menüoptionen**:\r\n   Nach dem Start des Programms wird ein Menü angezeigt, in dem Sie eine der folgenden Optionen auswählen können:\r\n   - `1` – Neuen Studenten hinzufügen.\r\n   - `2` – Einen Studenten nach Nachnamen entfernen.\r\n   - `3` – Den Nachnamen eines Studenten ändern.\r\n   - `4` – Alle Studenten anzeigen.\r\n   - `5` – Programm beenden.\r\n\r\n3. **Hinzufügen von Studenten**:\r\n   Beim Hinzufügen eines Studenten werden Sie nach dem Vornamen, Nachnamen und der ID gefragt. Der Student wird dann der `HashList` hinzugefügt.\r\n\r\n4. **Entfernen von Studenten**:\r\n   Um einen Studenten zu entfernen, müssen Sie nur den Nachnamen eingeben.\r\n\r\n5. **Modifizieren von Studenten**:\r\n   Um den Nachnamen eines Studenten zu ändern, müssen Sie den alten Nachnamen und den neuen Nachnamen angeben.\r\n\r\n6. **Datei einlesen**:\r\n   Beim Start des Programms wird die Datei `Data.txt` eingelesen und die Hash-Liste mit den Studenten-Daten befüllt.\r\n\r\n## Code-Überblick\r\n\r\n### `Student.py`\r\n\r\nDie `Student`-Klasse speichert den Vornamen, Nachnamen und die ID eines Studenten. Sie stellt Methoden zur Verfügung, um den Nachnamen des Studenten zu holen und zu setzen sowie die Student-Objekte in eine string-basierte Darstellung zu konvertieren.\r\n\r\n### `HashList.py`\r\n\r\nDie `HashList`-Klasse implementiert die Hash-Tabelle, die die Studenten-Daten speichert. Die Größe der Tabelle wird bei der Initialisierung festgelegt. Die Methode `hash` erzeugt einen Hash-Wert für den Nachnamen eines Studenten. Die Klasse unterstützt das Hinzufügen, Löschen und Modifizieren von Studenten-Daten und verarbeitet Kollisionen mithilfe einer `StackList`.\r\n\r\n### `StackList.py` und `StackElement.py`\r\n\r\nDiese Klassen definieren die Stack-Struktur, die zur Behandlung von Hash-Kollisionen verwendet wird. Wenn mehrere Studenten denselben Nachnamen haben, werden sie im Stack an demselben Index der Hash-Tabelle gespeichert. Die `StackList`-Klasse verwaltet den Stack, und `StackElement` repräsentiert einzelne Elemente (Studenten) im Stack.\r\n\r\n## Beispiel\r\n\r\nHier ein Beispiel, wie das Programm funktioniert:\r\n\r\n```text\r\nReading file took 50ms.\r\n\r\n\r\n[1 = Add student]\r\n[2 = Remove student]\r\n[3 = Modify student]\r\n[4 = Show students]\r\n[5 = End]\r\n\r\nSelect an option: 1\r\nFirst Name: John\r\nLast Name: Doe\r\nID: 123\r\n\r\n[1 = Add student]\r\n[2 = Remove student]\r\n[3 = Modify student]\r\n[4 = Show students]\r\n[5 = End]\r\n\r\nSelect an option: 4\r\nHASHTABLE\r\n1: (John,Doe,123) -\u003e\r\nTAIL\r\n```\r\n\r\n## Funktionsweise\r\n\r\n#### `readFile()`\r\nLiest die Datei `Data.txt` ein und befüllt die Hash-Liste mit Studenten-Objekten. Es misst auch die Zeit, die benötigt wird, um die Datei zu lesen und den zuletzt hinzugefügten Studenten zu löschen.\r\n\r\n#### `printMenu()`\r\nZeigt das Hauptmenü mit den verfügbaren Optionen an.\r\n\r\n#### `userInput()`\r\nVerarbeitet die Benutzereingabe und ordnet sie der entsprechenden Funktion zu.\r\n\r\n#### `options(i)`\r\nOrdnet die Benutzereingabe einer bestimmten Option (Hinzufügen, Löschen, Modifizieren, Anzeigen oder Beenden) zu.\r\n\r\n#### `add()`\r\nFügt einen neuen Studenten zur Hash-Liste hinzu, indem der Benutzer nach dem Vornamen, Nachnamen und der ID des Studenten gefragt wird.\r\n\r\n#### `delete()`\r\nEntfernt einen Studenten aus der Liste anhand des Nachnamens.\r\n\r\n#### `modify()`\r\nÄndert den Nachnamen eines bestehenden Studenten.\r\n\r\n#### `show()`\r\nZeigt alle Studenten an, die derzeit in der Hash-Liste gespeichert sind.\r\n\r\n---\r\n\r\nViel Spaß beim Arbeiten mit dieser Hash-basierten Listen-Implementierung in Python!\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmauricele%2Fhash-list-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmauricele%2Fhash-list-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmauricele%2Fhash-list-example/lists"}