#ifndef __INC_LecAdm_h__
#define __INC_LecAdm_h__

#include "GenDLList.cc"
#include <string>

class LecAdm {
public:
    // Fuegt neue Vorlesung hinzu
    void AddLecture(std::string lecName);
    
    // Loescht vorhandene Vorlesung 
    void RemoveLecture(std::string lecName);

    // Fuegt neuen Studenten hinzu
    void AddStudent(int matNr, std::string name);

    // Loescht vorhandenen Studenten
    void RemoveStudent(int matNr);

    // Fuegt neue 'hoert'-Beziehung hinzu
    bool AddStudentToLecture(int matNr, std::string lecName);
    
    // Gibt 'true' zurück gdw. Student mit 'matNr' Vorlesung 'lecName' hoert 
	bool IsStudentInLecture(int matNr, std::string lecName); 

private:
	// 1. Deklaration der Typ-Instanz 'IntList'
	typedef GenDLList<int> IntList;

	// 2. Deklaration der Verbundtypen 'Student' und 'Lecture' 
    struct Student {
        int matNr;
        std::string name;
    };

    struct Lecture {
        std::string name;
        IntList listeners;
    };

    // 3. Deklaration der Typ-Instanzen 'StudentList' und 'LectureList'
	typedef GenDLList<Student*> StudentList;
	typedef GenDLList<Lecture*> LectureList;

    // 4. Deklaration der Listen (Datenobjekte) 'students' und 'lectures'
    StudentList students;
    LectureList lectures;	
};

#endif