import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Die Klasse Kurs definiert Teilnehmerlisten von Kursen.
 * Ein Exemplar der Klasse Kurs hält Informationen über Zeit, Raum 
 * und alle Teilnehmer sowie über den Namen des Lehres.
 * 
 * @author  Michael Kölling und David J. Barnes
 * @version 2006.03.30
 */
public class Kurs{
  // Anfang Attribute
  String lehrer;
  String raum;
  String tagUndZeit;
  ArrayList<Schueler> schuelerliste;
  int teilnehmergrenze;
  // Ende Attribute

  /**
   * Erzeuge einen Kurs mit einer Teilnehmerbegrenzung. Alle 
   * anderen Details werden mit Standardwerten vorbelegt.
   * @param pMaximaleTeilnehmerzahl Anzahl der Teilnehmer
   */
  public Kurs(int pMaximaleTeilnehmerzahl)  {
    lehrer = "N.N.";
    raum = "N.N.";
    tagUndZeit = "N.N.";
    schuelerliste = new ArrayList<Schueler>();
    teilnehmergrenze = pMaximaleTeilnehmerzahl;
  }
  // Anfang Methoden

  /**
   * Trage einen Schueler in diesen Kurs ein.
   * @param pSchuler einzutragendes Schülerobjekt
   */
  public void trageSchuelerEin(Schueler pSchueler) {
    if (this.anzahlSchueler() < teilnehmergrenze){
      schuelerliste.add(pSchueler);
    }
  }

  /**
   * Liefere die Anzahl der in diesen Kurs momentan eingetragenen Schueleren.
   * @return Anzahl der eingetragenen Schüler
   */
  public int anzahlSchueler() {
    return schuelerliste.size();
  }

  /**
   * Setze den Raum für diesen Kurs.
   * @param pRaum Raum des Kurses
   */
  public void setzeRaum(String pRaum) {
    raum = pRaum;
  }

  /**
   * Setze Wochentag und Anfangszeit für diesen Kurs. Der Parameter
   * sollte das Format "montags, 16 Uhr" haben.
   * @param pTermin Termin in der Form "montags, 16 Uhr"
   */
  public void setzeTermin(String pTermin) {
    tagUndZeit = pTermin;
  }

  /**
   * Setze den Namen des lehreren für diesen Laborkurs.
   * @param pLehrer Lehrername
   */
  public void setzeLehrer(String pLehrer)  {
    lehrer = pLehrer;
  }

  /**
   * Gib eine Liste der Teilnehmer zusammen mit den weiteren Details
   * dieses Kurses auf die Konsole aus.
   */
  public void listeAusgeben() {
    System.out.println("Kurs: " + tagUndZeit);
    System.out.println("Lehrer: " + lehrer + "   Raum: " + raum);
    System.out.println("Teilnehmerliste:");
    for (Schueler schueler : schuelerliste) {
      schueler.druckeDaten();
    }
    System.out.println("Teilnehmeranzahl: " + this.anzahlSchueler());
  }
  // Ende Methoden
}
