Zum Inhalt

Eigene Aufgabe entwerfen

Note

08.01.2025 15:00 Version 1

Thema: Skiresort-Verwaltung

Beschreibung: Entwickeln Sie ein Programm, das die Verwaltung eines Skiresorts simuliert. Dabei können verschiedene Aspekte wie Skipässe, Skikurse, Liftanlagen und Gästeprofile berücksichtigt werden.

Anforderungen:

  1. Objektorientierung:

  2. Verwenden Sie mehrere Klassen und .cs-Dateien.

  3. Klassen könnten sein: Gast, Skipass, Skikurs, Liftanlage, SkiResort.

  4. Vererbung, Kapselung, Polymorphismus:

  5. Erstellen Sie eine Basisklasse Person (für Mitarbeiter und Gäste).

  6. Nutzen Sie Vererbung, z. B. Gast und Mitarbeiter erben von Person.
  7. Polymorphismus: Nutzen Sie Methoden wie Buchen() oder Zahlen() in verschiedenen Klassen.

  8. Daten aus einer CSV-Datei:

  9. CSV-Datei speichert Daten wie Gästeinformationen oder Skipasspreise.

  10. Diese Daten werden im Programm eingelesen.

  11. In 1–2 Lektionen umsetzbar:

  12. Simulieren Sie grundlegende Funktionen wie:

    • Gast erstellt ein Profil.
    • Skipass wird gekauft.
    • Liftbenutzung wird protokolliert.

Projektstruktur (Beispiel):

Klassen:

  1. Person (Basisklasse):

  2. Eigenschaften: Name, Alter, E-Mail

  3. Methoden: Anmelden(), Abmelden()

  4. Gast (erbt von Person):

  5. Zusätzliche Eigenschaften: SkipassID, SkikursTeilnahme

  6. Methoden: SkipassKaufen(), SkikursBuchen()

  7. Skipass:

  8. Eigenschaften: SkipassID, Typ, Gültigkeitsdauer, Preis

  9. Methoden: Aktivieren(), Deaktivieren()

  10. Skikurs:

  11. Eigenschaften: KursID, Titel, Dauer, Preis

  12. Methoden: Anmelden(), Abmelden()

  13. Liftanlage:

  14. Eigenschaften: LiftID, Name, Kapazität, Status

  15. Methoden: BetriebStarten(), BetriebStoppen()

Dateien:

  • Person.cs: Enthält die Basisklasse und grundlegende Methoden.
  • Gast.cs: Enthält die abgeleitete Klasse mit speziellen Methoden.
  • Skipass.cs: Verwaltung der Skipässe.
  • Skikurs.cs: Verwaltung der Skikurse.
  • Liftanlage.cs: Verwaltung der Liftanlagen.

habe dann den Code ausgeführt der mir ChatGPT gemacht hat ausgeführt:

dann habe ich die csv dateien geladen und im Terminal anzeigen lassen

hier über das Terminal:

der Code:

Program.cs:

using System;

namespace SkiResort
{
    class Program
    {
        static void Main(string[] args)
        {
            // Beispiel: Gast erstellen
            Gast gast = new Gast("Max Müller", 25, "max.mueller@example.com", 0);
            gast.Anmelden();
            gast.SkipassKaufen(1234);
            gast.SkikursBuchen();

            // Beispiel: Skipass erstellen
            Skipass skipass = new Skipass(1234, "Tagesticket", 1, 50.00);
            skipass.Aktivieren();

            // Beispiel: Skikurs erstellen
            Skikurs skikurs = new Skikurs(1, "Anfängerkurs", 2, 100.00);
            skikurs.Anmelden();

            // Beispiel: Liftanlage erstellen
            Liftanlage lift = new Liftanlage(1, "Gondelbahn", 200);
            lift.BetriebStarten();
        }
    }
}

1. Program.cs (Hauptprogramm)

In dieser Datei befinden sich der Einstiegspunkt (Main-Methode) und die Logik, die Objekte erstellt und Methoden aufruft:

  • Gast erstellen: Ein Gast-Objekt wird erstellt und mit einem Namen, Alter, E-Mail und einer Skipass-ID initialisiert. Es meldet sich an, kauft einen Skipass und bucht einen Skikurs.
  • Skipass erstellen: Ein Skipass-Objekt wird mit einer ID, einem Typ (z. B. "Tagesticket"), einer Gültigkeitsdauer und einem Preis erstellt und anschließend aktiviert.
  • Skikurs erstellen: Ein Skikurs-Objekt wird mit einer Kurs-ID, einem Titel, einer Dauer und einem Preis erstellt und der Benutzer meldet sich für diesen Kurs an.
  • Liftanlage erstellen: Eine Liftanlage wird erstellt, in Betrieb genommen, und eine Nachricht über ihren Status wird ausgegeben.

Gast.cs:

using System;

namespace SkiResort
{
    public class Gast : Person
    {
        public int SkipassID { get; set; }
        public bool SkikursTeilnahme { get; set; }

        public Gast(string name, int alter, string email, int skipassID) : base(name, alter, email)
        {
            SkipassID = skipassID;
            SkikursTeilnahme = false;
        }

        public void SkipassKaufen(int skipassID)
        {
            SkipassID = skipassID;
            Console.WriteLine($"{Name} hat einen Skipass mit der ID {SkipassID} gekauft.");
        }

        public void SkikursBuchen()
        {
            SkikursTeilnahme = true;
            Console.WriteLine($"{Name} hat sich für den Skikurs angemeldet.");
        }
    }
}

2. Gast.cs (Gast-Klasse)

  • Vererbung von Person: Die Gast-Klasse erbt von der Person-Klasse und fügt spezifische Eigenschaften für Gäste hinzu.
  • Eigenschaften:
  • SkipassID: Der ID des Skipasses des Gastes.
  • SkikursTeilnahme: Ein boolescher Wert, der angibt, ob der Gast an einem Skikurs teilnimmt.
  • Methoden:
  • SkipassKaufen(): Der Gast kauft einen Skipass und die ID wird gesetzt.
  • SkikursBuchen(): Der Gast nimmt an einem Skikurs teil.

Liftanlagen.cs:

using System;

namespace SkiResort
{
    public class Liftanlage
    {
        public int LiftID { get; set; }
        public string Name { get; set; }
        public int Kapazität { get; set; }
        public bool InBetrieb { get; private set; }

        public Liftanlage(int liftID, string name, int kapazität)
        {
            LiftID = liftID;
            Name = name;
            Kapazität = kapazität;
            InBetrieb = false;
        }

        public void BetriebStarten()
        {
            InBetrieb = true;
            Console.WriteLine($"Die Liftanlage '{Name}' ist jetzt in Betrieb.");
        }

        public void BetriebStoppen()
        {
            InBetrieb = false;
            Console.WriteLine($"Die Liftanlage '{Name}' ist gestoppt.");
        }
    }
}

3. Liftanlage.cs (Liftanlage-Klasse)

  • Eigenschaften:
  • LiftID: Die ID der Liftanlage.
  • Name: Der Name der Liftanlage (z. B. "Gondelbahn").
  • Kapazität: Die Kapazität der Liftanlage (maximale Anzahl von Personen).
  • InBetrieb: Zeigt an, ob die Liftanlage in Betrieb ist.
  • Methoden:
  • BetriebStarten(): Setzt die Liftanlage in den Betriebsmodus und gibt eine Nachricht aus.
  • BetriebStoppen(): Stoppt die Liftanlage und gibt eine Nachricht aus.

Person.cs:

using System;

namespace SkiResort
{
    public class Person
    {
        public string Name { get; set; }
        public int Alter { get; set; }
        public string Email { get; set; }

        public Person(string name, int alter, string email)
        {
            Name = name;
            Alter = alter;
            Email = email;
        }

        public virtual void Anmelden()
        {
            Console.WriteLine($"{Name} hat sich angemeldet.");
        }

        public void Abmelden()
        {
            Console.WriteLine($"{Name} hat sich abgemeldet.");
        }
    }
}

4. Person.cs (Person-Klasse)

  • Basisklasse für Gast: Die Person-Klasse ist eine allgemeine Klasse für alle Personen (z. B. Gäste).
  • Eigenschaften:
  • Name, Alter, Email: Basisinformationen einer Person.
  • Methoden:
  • Anmelden(): Meldet die Person an und gibt eine Nachricht aus.
  • Abmelden(): Meldet die Person ab und gibt eine Nachricht aus.

Skikurs.cs

using System;

namespace SkiResort
{
    public class Skikurs
    {
        public int KursID { get; set; }
        public string Titel { get; set; }
        public int Dauer { get; set; } // in Stunden
        public double Preis { get; set; }

        public Skikurs(int kursID, string titel, int dauer, double preis)
        {
            KursID = kursID;
            Titel = titel;
            Dauer = dauer;
            Preis = preis;
        }

        public void Anmelden()
        {
            Console.WriteLine($"Sie haben sich für den Kurs '{Titel}' angemeldet.");
        }

        public void Abmelden()
        {
            Console.WriteLine($"Sie haben sich vom Kurs '{Titel}' abgemeldet.");
        }
    }
}

5. Skikurs.cs (Skikurs-Klasse)

  • Eigenschaften:
  • KursID: Die ID des Skikurses.
  • Titel: Der Titel des Kurses (z. B. "Anfängerkurs").
  • Dauer: Die Dauer des Kurses in Stunden.
  • Preis: Der Preis des Kurses.
  • Methoden:
  • Anmelden(): Der Benutzer meldet sich für den Skikurs an und eine Nachricht wird ausgegeben.
  • Abmelden(): Der Benutzer meldet sich vom Skikurs ab und eine Nachricht wird ausgegeben.

Skipass:

using System;

namespace SkiResort
{
    public class Skipass
    {
        public int SkipassID { get; set; }
        public string Typ { get; set; }
        public int Gültigkeitsdauer { get; set; } // in Tagen
        public double Preis { get; set; }

        public Skipass(int skipassID, string typ, int gültigkeitsdauer, double preis)
        {
            SkipassID = skipassID;
            Typ = typ;
            Gültigkeitsdauer = gültigkeitsdauer;
            Preis = preis;
        }

        public void Aktivieren()
        {
            Console.WriteLine($"Skipass {SkipassID} wurde aktiviert.");
        }

        public void Deaktivieren()
        {
            Console.WriteLine($"Skipass {SkipassID} wurde deaktiviert.");
        }
    }
}
  1. Skipass.cs (Skipass-Klasse)
  2. Eigenschaften:
  3. SkipassID: Die ID des Skipasses.
  4. Typ: Der Typ des Skipasses (z. B. "Tagesticket").
  5. Gültigkeitsdauer: Die Gültigkeit des Skipasses in Tagen.
  6. Preis: Der Preis des Skipasses.
  7. Methoden:
  8. Aktivieren(): Aktiviert den Skipass und gibt eine Nachricht aus.
  9. Deaktivieren(): Deaktiviert den Skipass und gibt eine Nachricht aus.

Die CSV-Dateien sind in dem gleichen Ordner abgespeichert und werden oben abgespeichert.

Ordnerstruktur