Menu
Coddy logo textTech

Wiederholung - Benutzerverwaltung

Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 68 von 70.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Benutzerverwaltungssystem erstellen – eine praktische Anwendung, wie man sie in vielen realen Programmen findet! Sie werden zwei Klassen erstellen, die zusammenarbeiten: eine, die einzelne Benutzer repräsentiert, und eine andere, die eine Sammlung von ihnen effizient verwaltet.

Sie werden Ihren Code über drei Dateien organisieren:

  • User.lua: Erstellen Sie eine User-Klasse, die einen einzelnen Benutzer im System repräsentiert. Jeder Benutzer hat eine id und einen name. Fügen Sie eine :getInfo()-Methode hinzu, die einen String im Format "ID: {id}, Name: {name}" zurückgibt.
  • UserManager.lua: Erstellen Sie eine Manager-Klasse, die eine Sammlung von Benutzern verwaltet. Überlegen Sie, wie Sie Benutzer für eine effiziente Suche speichern können – die Verwendung der ID des Benutzers als Tabellenschlüssel macht das Finden und Entfernen von Benutzern viel einfacher als das Durchsuchen einer Liste. Ihr Manager benötigt:
    • :addUser(user) — fügt ein User-Objekt zur Sammlung hinzu
    • :removeUser(id) — entfernt einen Benutzer anhand seiner ID
    • :findUser(id) — gibt den User mit der passenden ID zurück, oder nil, falls nicht gefunden
    • :listUsers() — gibt die Informationen für alle Benutzer aus, eine pro Zeile
  • main.lua: Bringen Sie alles zusammen! Erstellen Sie einen UserManager, fügen Sie einige Benutzer basierend auf den erhaltenen Eingaben hinzu, führen Sie Operationen aus und zeigen Sie die Ergebnisse an.

Sie erhalten fünf Eingaben:

  1. ID des ersten Benutzers (eine Zahl)
  2. Name des ersten Benutzers
  3. ID des zweiten Benutzers (eine Zahl)
  4. Name des zweiten Benutzers
  5. ID eines zu suchenden Benutzers (eine Zahl)

In Ihrer Hauptdatei:

  1. Erstellen Sie einen UserManager und fügen Sie beide Benutzer hinzu
  2. Rufen Sie :listUsers() auf, um alle Benutzer auszugeben
  3. Entfernen Sie den ersten Benutzer (unter Verwendung der ersten ID)
  4. Geben Sie "After removal:" aus
  5. Rufen Sie :listUsers() erneut auf
  6. Suchen Sie nach dem Benutzer mit der fünften Eingabe-ID – falls gefunden, geben Sie dessen Info aus; falls nicht gefunden, geben Sie "User not found" aus

Wenn die Eingaben beispielsweise 101, Alice, 102, Bob und 102 sind, sollte die Ausgabe wie folgt aussehen:

ID: 101, Name: Alice
ID: 102, Name: Bob
After removal:
ID: 102, Name: Bob
ID: 102, Name: Bob

Wenn die Eingaben 201, Charlie, 202, Diana und 201 sind, sollte die Ausgabe wie folgt aussehen:

ID: 201, Name: Charlie
ID: 202, Name: Diana
After removal:
ID: 202, Name: Diana
User not found

Beachten Sie im zweiten Beispiel, dass nach dem Entfernen von Benutzer 201 (Charlie) die Suche nach dieser ID "User not found" zurückgibt, da dieser nicht mehr im System ist!

Probier es selbst

-- main.lua: Alles zusammenführen

local User = require('User')
local UserManager = require('UserManager')

-- Eingaben lesen
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())

-- TODO: Eine UserManager-Instanz erstellen

-- TODO: Zwei User-Objekte mit den Eingabedaten erstellen

-- TODO: Beide Benutzer zum Manager hinzufügen

-- TODO: listUsers() aufrufen, um alle Benutzer auszugeben

-- TODO: Den ersten Benutzer entfernen (unter Verwendung von id1)

-- TODO: "After removal:" ausgeben

-- TODO: listUsers() erneut aufrufen

-- TODO: Nach dem Benutzer mit searchId suchen
-- Wenn gefunden, dessen Info ausgeben; wenn nicht gefunden, "User not found" ausgeben

Alle Lektionen in Object Oriented Programming