Hallo,

hab schon ein ganzes Stück geschafft, nur beim 4. case komm ich einfach nicht weiter. Könnte mir da jemand behilflich sein? Sonstige Fehler?

Download: Aufgabenstellung
Code:
#include <iostream>
#include <windows.h>
using namespace std;

/*****************  Beginn: Klasse: Mitarbeiter   *************************/

class Mitarbeiter {
      
      protected:
      int mitNr;
      string name;
      int zimmerNr;
      int schluessel_nr;
      
      public:
      static int nr;
      Mitarbeiter() {nr++;};
      Mitarbeiter(int, string, int, int);
      virtual void datenausgeben();      // Entscheidet während der  Laufzeit des Programms, welche Methode ausgegeben wird
      int getSchluessel_nr() {
          return schluessel_nr;
      }
      int getMitNr() {
          return mitNr;
      }
      void setSchluesselNr(int sch_nr) {
           schluessel_nr = sch_nr;
      }
};

/*****************  Ende: Klasse: Mitarbeiter   *************************/

Mitarbeiter::Mitarbeiter(int mit, string n, int zimmer, int schl_nr):  mitNr(mit), name(n), zimmerNr(zimmer), schluessel_nr(schl_nr) { nr++; };

void Mitarbeiter::datenausgeben() {
     cout << "Mitarbeiternummer: " << mitNr << endl;
     cout << "Mitarbeitername: " << name << endl;
     cout << "Zimmernummer: " << zimmerNr << endl;
     if (schluessel_nr != 0) {
        cout << "Schluesselnummer: " << schluessel_nr  << endl;
     }
};

int Mitarbeiter::nr = 0;

/*****************  Beginn: Klasse: Abteilungsleiter   *************************/

class Abteilungsleiter: public Mitarbeiter {
      
      private:
      string abtName;
      
      public:
      Abteilungsleiter() {};
      Abteilungsleiter(int mitNr, string mitName, int schl_nr, int  mitZimmer, string abt): Mitarbeiter(mitNr, mitName, mitZimmer, schl_nr),  abtName(abt) {};
      void datenausgeben() {
           cout << "Mitarbeiternummer: " << mitNr <<  endl;
           cout << "Mitarbeitername: " << name <<  endl;
           cout << "Zimmernummer: " << zimmerNr <<  endl;
           cout << "Abteilungsname: " << abtName <<  endl;
           if (schluessel_nr != 0) {
              cout << "Schluesselnummer: " << schluessel_nr  << endl;
           }
      }
};

/*****************  Ende: Klasse: Abteilungsleiter   *************************/

/*****************  Beginn: Klasse: Schlüssel   *************************/

class Schluessel {
      
      private:
      bool normalerSchluessel;
      int zimmerNr;   
      string abteilung;
      int schluessel_nr;
      
      public:
      static int anzahl;
      Schluessel() {anzahl++;};
      // Elementinitialisierungskonstruktor - Abteilungsschlüssel
      Schluessel(bool nS, int nr, string abt, int sch_nr):  normalerSchluessel(nS), zimmerNr(nr), abteilung(abt),  schluessel_nr(sch_nr) {anzahl++;};
      // Elementinitialisierungskonstruktor - Normaler Schlüssel
      Schluessel(bool nS, int nr, int sch_nr): normalerSchluessel(nS),  zimmerNr(nr), schluessel_nr(sch_nr) {anzahl++;};
      
      int getSchluessel_nr() {
          return schluessel_nr;
      }
      
      void datenausgeben() {
           cout <<  "--------------------------------SCHLUESSELDATEN--------------------------------"  << endl << endl;
           if (normalerSchluessel == true) {
              cout << ">> Normaler Schluessel" <<  endl;
           } else {
              cout << ">> Abteilungsschluessel" <<  endl;
              cout << "Abteilung: " << abteilung <<  endl;
           }
           cout << "Zimmernummer: " << zimmerNr <<  endl;
           cout << "Schluesselnummer: " << schluessel_nr  << endl;
      }
};

/*****************  Ende: Klasse: Schlüssel  *************************/

int Schluessel::anzahl = 0;

int main(int argc, char *argv[])
{
    Mitarbeiter *mitarbeiter[100];
    Schluessel *schluessel[100];
    
    int auswahl = 0, mit_nr = 0, sch_nr = 0;
    int nr = 0;
    char antwort = 'j';
    string name = "", abtName = "";
    int zimmerNr = 0;
    int schluesselnr = 0, mitarbeiternr = 0;
    
    do {
        antwort = 'j';
        zimmerNr = 0;
        abtName = "";
        
        cout << endl << " =========================== KEY  MANAGEMENT SYSTEM ============================" << endl;
        Sleep (500);
        cout << endl << "                                      . ";
        Sleep (500);
        cout << ". ";
        Sleep (500);
        cout << ".                                     " <<  endl << endl;
        Sleep (500);
        cout << " [1] Mitarbeiter anlegen" << endl;
        cout << " [2] Schluessel erfassen" << endl;
        cout << " [3] Ausgabe eines Schluessels" << endl;
        cout << " [4] Suchen eines Mitarbeiters" << endl;
        cout << " [5] Ausgabe aller Mitarbeiter, die einen  Schluessel erhalten haben" << endl;
        cout << " [9] Programmende" << endl << endl;
        cout << "Ihre Wahl bitte: ";
        cin >> auswahl;  
        
        switch (auswahl) {
               // Mitarbeiter anlegen
               case 1: cout << endl << "Wollen Sie einen  Abteilungsleiter anlegen (j/n)? ";
                       cin >> antwort;
                       cout << "Name: ";
                       cin >> name;
                       cout << "Zimmernummer: ";
                       cin >> zimmerNr;
                       nr = Mitarbeiter::nr;
                       if (antwort == 'j' || antwort == 'J') {
                          cout << "Abteilung (A, B, C): ";
                          cin >> abtName;
                          mitarbeiter[nr] = new Abteilungsleiter(++nr,  name, 0, zimmerNr, abtName);
                       } else {
                          mitarbeiter[nr] = new Mitarbeiter(++nr, name,  zimmerNr, 0);
                       }
                       break;
               // Schlüssel erfassen
               case 2: cout << endl << "Wollen Sie einen  normalen Schluessel erfassen (j/n)? ";
                       cin >> antwort;
                       cout << "Schluessel fuer die Zimmernummer:  ";
                       cin >> zimmerNr;
                       nr = Schluessel::anzahl;
                       if (antwort == 'n' || antwort == 'N') {
                          cout << "Schluessel fuer die Abteilung  (A, B, C): ";
                          cin >> abtName;
                          schluessel[nr] = new Schluessel(false,  zimmerNr, abtName, ++Schluessel::anzahl);
                       } else {
                          schluessel[nr] = new Schluessel(true,  zimmerNr, ++nr);
                       }
                       break;
               // Ausgabe eines Schlüssels an einen  Mitarbeiter/Abteilungsleiter
               case 3: nr = Schluessel::anzahl;
                       cin.clear();
                       if (nr == 0) {
                          cout << ">> Keine Schluessel  vorhanden!" << endl;
                       } else {
                          cout << endl <<  "------------------ :: FOLGENDE SCHLUESSEL SIND VERFUEGBAR ::  ------------------" << endl;
                          for (int s = 0; s < Schluessel::anzahl;  s++) {
                              schluessel[s]->datenausgeben();
                          }
                          cout << endl << "Schluesselnummer  auswaehlen: ";
                          cin >> schluesselnr;
                          cout << "Mitarbeiternummer eingeben: ";
                          cin >> mitarbeiternr;
                          for (int z = 0; z < Mitarbeiter::nr; z++) {
                              if (mitarbeiter[z]->getMitNr() ==  mitarbeiternr) {
                                  mitarbeiter[z]->setSchluesselNr(schluesselnr);
                              }
                          }
                       }
                       break;
               // Suchen eines Mitarbeiters nach Mitarbeiternummer mit  Ausgabe seiner Daten und des an ihn ausgegebenen Schlüssels
               case 4: 
                       break;
               // Ausgabe sämtlicher Mitarbeiter, die einen Schlüssel  erhalten haben mit Angabe der Schlüsseldaten
               case 5: nr = Mitarbeiter::nr;
                       for (int i = 0; i < nr; i++) {
                           if (mitarbeiter[i]->getSchluessel_nr()  > 0) {
                               mitarbeiter[i]->datenausgeben();
                                   for (int j = 0; j <  Schluessel::anzahl; j++) {
                                       if  (mitarbeiter[i]->getSchluessel_nr() ==  schluessel[j]->getSchluessel_nr()) {
                                            schluessel[j]->datenausgeben();
                                       }
                                   }
                           }
                       }
                       break;
               // Programmende
               case 9: cout << ">> Programm wird beendet..."  << endl << endl;
                       break;
        }
    } while (auswahl != 9);
    
    system("pause");
    return 0;
}