Ergebnis 1 bis 4 von 4
  1. #1
    Gesperrt
    Registriert seit
    19.07.2008
    Beiträge
    251

    Standard C++-Aufgabe macht mich wahnsinnig...

    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;
    }

  2. #2
    Meister des Grills Avatar von c4pone
    Registriert seit
    08.11.2006
    Beiträge
    167

    Standard

    Hmm ich hab deinen Code mal kurz überflogen und würde es so machen
    Pseudo Code:
    Code:
    for()
    {
       if(mitarbeiter[counter].getMitNr() == gesuchte MitNr)
       {
          Gebe Daten aus  
       }
    }
    Zitat Zitat von Barney Stinson
    “Think of me like Yoda, but instead of being little and green I wear suits and I'm awesome. I'm your bro—I'm Broda!”

  3. #3
    Gesperrt
    Registriert seit
    19.07.2008
    Beiträge
    251

    Standard

    Weitere Vorschläge?

  4. #4
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Wenn das einen Mitarbeiter nach einer Nummer suchen soll ist die Aufgabe trivial, da du deine Mitarbeiter ja in einem Array ablegst, wobei Index = Mitarbeiternummer.

    Folglich: Mitarbeiternummer einlesen, mitarbeiter[dieNummer].datenausgeben()
    Um die Schlüsseldaten auszugeben sollte jedes Objekt der Klasse Mitarbeiter zusätzlich noch ein Referenzattribut auf ein Schlüsselobjekt haben. (also der Schlüssel, den der Mitarbeiter besitzt)

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •