Warteschlange eines Konzertes

sabi001

Neues Mitglied
Hallo ihr Lieben :)

habe eine Aufgabe als Hausaufgabe bekommen.
Programmiert habe ich sie auch schon, bin mir aber sicher dass irgendwas nicht richtig ist.

In dieser Aufgabe soll die Warteschlange eines Konzertes mithilfe einer verketteten Liste modelliert werden.
Jeder Anstehende reprasentiert ein Listenelement. Jedes Listenelement beinhaltet Nutzinformationen { den
Namen und die Ticketnummer { und den Verweis auf seinen Nachfolger. Machen Sie sich, bevor Sie anfangen zu
Programmieren mit den theoretischen Grundlagen von verketteten Listen vertraut.
1. Zunachst mussen die einzelnen Elemente der Warteschlange modelliert werden.
 Legen Sie eine Klasse Gast an.
 Legen Sie in der Klasse Gast zunachst zwei passende Attribute fur den Namen (name) und die
Ticketnummer (nummer) an, die beiden Attribute sollen nur in der eigenen Klasse sichtbar sein.
Versehen Sie beide Attribute mit einer passenden getter-Methode.
 Erganzen Sie einen Konstruktor der zwei Werte fur Name und Nummer ubergeben bekommt und
setzen Sie die Attribute auf diese Werte.
 Leiten Sie von der Klasse Gast eine Klasse Schlangengast ab. Erweitern Sie diese um ein Attribut
nachfolger fur das folgende Listenelement, versehen Sie dieses mit einer getter- und einer setter-
Methode.
 Schreiben Sie einen Konstruktor fur die Klasse Schlangengast, der den Namen und die Ticketnummer
des Gastes ubergeben bekommt und rufen Sie darin den Konstruktor der Oberklasse auf. Initialisieren
Sie nachfolger mit einem passenden Wert.
 Erweitern Sie die Klasse um eine Methode toString() die einen String in folgender Form zuruckgibt:
Name: hName i Ticketnummer: hNummer i
2. Legen Sie als nachstes eine Klasse Warteschlange mit einer main-Methode an und erganzen Sie ein
privates Attribut erster vom Typ Schlangengast incl. einer passenden getter-Methode. In diesem
Attribut wird der Verweis auf das erste Listenelement gespeichert.
3. Nun braucht unsere Warteschlange noch einige Funktionen. Im folgenden werden die zu implementierenden
Funktionen beschrieben. Die Umsetzung der Methoden bleibt bis auf die Einhaltung der Beschreibung
Ihnen uberlassen.
 void loeschen(): In der Methode soll die Liste komplett geloscht werden.
 int laenge(): Rufen Sie in der Methode eine Hilfsmethode int laenge(Schlangengast gast),
die die Lange der Warteschlange rekursiv berechnet.
 void anstellen(String name, int nummer): In der Methode soll sich { wie der Name schon sagt
{ ein neuer Gast hinten in die Warteschlange einreihen. Uberprufen Sie ob schon ein Gast mit dieser
Ticketnummer existiert, falls nicht fugen Sie einen neuen Schlangengast mit dem Namen name und
der Ticketnummer nummer in die Liste ein. Falls die Ticketnummer schon existiert machen Sie eine
Fehlerausgabe auf stderr.
Tipp: Schreiben Sie sich eine Hilfsmethode die uberpruft ob ein Gast mit einer bestimmten Ticketnummer
in der Warteschlange existiert.
 void rausschmeissen(int nummer): Der Gast mit der Ticketnummer nummer soll aus der Warteschlange
geloscht werden. Falls er nicht existiert { ein Loschen also unmoglich ist { machen Sie eine
Fehlerausgabe auf stderr.
 String toString(): Soll den Inhalt der Liste als String zuruckgeben. Verwenden Sie die Methode
toString() der einzelnen Listenelemente.


Java:
public class Gast {
 
	private String name;
	private int nummer;
	
	
	public Gast(String name, int nummer){
	
		this.name = name;
		this.nummer =nummer;
	}
	
	
	public String getName(){
		
		return this.name;
	}
	
	public int getNummer(){
		
		return this.nummer;
	}


}


public class Schlangengast extends Gast{
	 
	public int nachfolger;
	
	

	public Schlangengast(String name, int nummer, int nachfolger) {
		
		super(name, nummer);
		
		this.nachfolger = 1;
		
		
	}
	
	
	public int getNachfolger(){
		
		return this.getNachfolger();
	}
	
	public void setNachfolger(int nachfolger){
		
		this.nachfolger = nachfolger;
	}
	
	public String toString1(String name, int nummer){
		
		System.out.println("Name:" +name+ "Ticketnummer:" +nummer);
		return toString();
	}
	
	
}


public class Warteschlange {
	
	private Schlangengast erster;
	private int nummer;
	
	
	public Schlangengast getErster(){
		
		return getErster();
	}
	
	
	public void loeschenListe(int Gast){
		
		 Gast = 0;
	}
	
	
	
	public int gebeLaenge(Schlangengast gast){
		
		int counter = 0;
		
		if(gast != null){
			
		counter++;
			
		}else{
			
			return 0;
		}
		 
		return counter;
	}
	
	public void anstellenGast(String name, int nummer, Schlangengast erster){
		
		if (erster == null){
			
			this.erster = erster;
			System.out.println("Erster Gast in der Schlange");
			
		} else if(nummer == nummer) {
			nummer = this.nummer;
			System.err.println("Ticketnummer existiert bereits");
			
		}else{
						
			System.out.println("Der Gast hat den Namen" +name+ "und die Ticketnummer" +nummer);
		}
	}
	
	public void rausschmeissenGast(int nummer){
		
		if(nummer == 0){
						
			System.out.println("Gast wird gelöscht");
		}
		else{
			System.err.println("Gast existiert nicht");
		}
	}
	
	public static void main(String[] args) {
		
		Warteschlange.rausschmeissenGast(nummer);
		 
	}

}

Wäre super, wenn mir jemand helfen könnte ;)
 
Zuletzt bearbeitet von einem Moderator:

illusi0n

Mitglied
Hallo,
soll jemand die Aufgaben für dich machen?

Ich kann das Problem nicht erkennen was du mit der Aufgabe hast.
Gibt es eine Fehlermeldung, wenn ja wie lautet diese?
Hast du ein Verständnis oder Logikproblem - wenn ja wo liegt es?

Alle hier in diesem Forum helfen gerne bei einer konkreten Fragestellung, allerdings die Hausarbeiten musst du schon selbst machen.
Wir zeigen dir nur den Weg, ob du ihn benutzt ist deine Sache.
 

tagedieb

Top Contributor
Attribut nachfolger in der Klasse SchlangenGast sollte wahrscheinlich auch vom Typ SchlangenGast sein (referenz auf den Nachfolger).

Somit kannst du durch die Warteschlange durchiterieren..

Java:
SchlangenGast gast = warteschlange.getErster();
while (gast != null) {
  // do something
  gast = gast.getNachfolger();
}

Damit duerfte der Rest der Aufgabe auch kein groesseres Problem mehr darstellen.
 

Neue Themen


Oben