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:¶
-
Objektorientierung:
-
Verwenden Sie mehrere Klassen und .cs-Dateien.
-
Klassen könnten sein:
Gast,Skipass,Skikurs,Liftanlage,SkiResort. -
Vererbung, Kapselung, Polymorphismus:
-
Erstellen Sie eine Basisklasse
Person(für Mitarbeiter und Gäste). - Nutzen Sie Vererbung, z. B.
GastundMitarbeitererben vonPerson. -
Polymorphismus: Nutzen Sie Methoden wie
Buchen()oderZahlen()in verschiedenen Klassen. -
Daten aus einer CSV-Datei:
-
CSV-Datei speichert Daten wie Gästeinformationen oder Skipasspreise.
-
Diese Daten werden im Programm eingelesen.
-
In 1–2 Lektionen umsetzbar:
-
Simulieren Sie grundlegende Funktionen wie:
- Gast erstellt ein Profil.
- Skipass wird gekauft.
- Liftbenutzung wird protokolliert.
Projektstruktur (Beispiel):¶
Klassen:¶
-
Person (Basisklasse):
-
Eigenschaften:
Name,Alter,E-Mail -
Methoden:
Anmelden(),Abmelden() -
Gast (erbt von Person):
-
Zusätzliche Eigenschaften:
SkipassID,SkikursTeilnahme -
Methoden:
SkipassKaufen(),SkikursBuchen() -
Skipass:
-
Eigenschaften:
SkipassID,Typ,Gültigkeitsdauer,Preis -
Methoden:
Aktivieren(),Deaktivieren() -
Skikurs:
-
Eigenschaften:
KursID,Titel,Dauer,Preis -
Methoden:
Anmelden(),Abmelden() -
Liftanlage:
-
Eigenschaften:
LiftID,Name,Kapazität,Status - 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
Liftanlagewird 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: DieGast-Klasse erbt von derPerson-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: DiePerson-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.");
}
}
}
Skipass.cs(Skipass-Klasse)- Eigenschaften:
SkipassID: Die ID des Skipasses.Typ: Der Typ des Skipasses (z. B. "Tagesticket").Gültigkeitsdauer: Die Gültigkeit des Skipasses in Tagen.Preis: Der Preis des Skipasses.- Methoden:
Aktivieren(): Aktiviert den Skipass und gibt eine Nachricht aus.Deaktivieren(): Deaktiviert den Skipass und gibt eine Nachricht aus.
Die CSV-Dateien sind in dem gleichen Ordner abgespeichert und werden oben abgespeichert.




