Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Programm fertig schreiben *hilfe*

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.03.2006, 11:59 Uhr
~Code_Newbie
Gast


Hallo
ich muss ein programm fertig schreiben, von dem ich wenig ahnung habe.
ein paar dinge habe ich bereits hinbekommen aber bei punkt 4 und 5 hab ich keine idee mehr.
wäre nett wenn mir das jemand zu ende machen kann.
schreibe darüber bald ne arbeit und ich würde das gerne gedanklich nachvollziehn können.
danke im vorraus!


------------
Menüpunkt 4:

In einer for-Schleife wird für jeden Mitarbeiter das Gehalt berechnet. Hierzu ist für jeden Mitarbeiter die Methode 'gehalt_berechnen' aufzurufen, die von Ihnen zu schreiben ist. Der Rahmen ist bereits vorgegeben.

Die 'Formel' zu Gehaltsberechnung lautet: monatsarbeitszeit * stundenlohn + ueberstunden * ueberstundenlohn. Der Stundenlohn ergibt sich aus der Tarifgruppe und dem Array 'tariflohn'. Befindet sich der Mitarbeiter in der Tarifgruppe 2, so steht sein Stundenlohn im zweiten Eintrag des Arrays 'tariflohn' (also 11 €/h). Der Überstundenlohn ergibt sich aus dem regulären Stundenlohn vermehrt um einen 20%igen Zuschlag (das Attribut 'zuschlag' hat den Wert 20).

Für die Tarifgruppe 2 und 10 Überstunden ergibt sich also folgendes Gehalt: 168h * 11 €/h + 10h * 13,20 €/h = 1.848 € + 132 € = 1.980 €.

Das Gehalt wird in der Methode 'gehalt_berechnen' in das Attribut 'gehalt' eingetragen. Die Methode liefert kein Ergebnis zurück (Rückgabedatentyp: void).



Menüpunkt 5:

Es wird zunächst ein Mitarbeiter anhand seiner Personalnummer gesucht. Arbeiten Sie mit copy & paste und verwenden Sie Ihre Lösung für den Menüpunkt 2.
Für den gefundenen Mitarbeiter wird die Methode 'tarifgruppe_aendern' aufgerufen. Der Rahmen ist bereits vorgegeben.
Zuvor muss der Benutzer die gewünschte neue Tarifgruppe für diesen Mitarbeiter eingeben. Dieser Wert wird an die Methode 'tarifgruppe_aendern' übergeben. Wenn der Wert kleiner als 1 ist oder größer als die Anzahl der Tarifgruppen ist, liefert die Methode das Ergebnis -1 zurück. Anderenfalls trägt die Methode die neue Tarifgruppe in das Attribut 'tarifgruppe' ein und liefert das Ergebnis 0 zurück. Wie Sie die Anzahl der Tarifgruppen feststellen können, sehen Sie anhand der bereits geschriebene Methode 'getAnzahlTarifgruppen'. Der Rückgabewert wird im Hauptprogramm ausgewertet.
------------



C++:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>

//Name: Marco Winter
//Klassenarbeit, HBFI05B, 17.03.06

typedef char string[30];

class angestellter
    {
   private:
       string nachname;
      string vorname;
      char sex;                      // Das Geschlecht des Mitarbeiters
      int personalnummer;            // Die Personalnummer des Mitarbeiters
      int   tarifgruppe;         // zu welcher Tarifgruppe der Mitarbeiter gehört
      float tariflohn[4];          // Die Stundenlöhne für die vier Tarifgruppen
       float gehalt;              // Monatsarbeitszeit * Stundenlohn + Überstundenlohn
       float monatsarbeitszeit;   // ist der gleiche Wert für alle Mitarbeiter
       float ueberstunden;        // muß zw. 0 und max-ueberstunden liegen
      float max_ueberstunden;      // max. zulässige Anzahl an Überstunden
      float zuschlag;              // Prozentangabe: So viel Zuschlag gibt es für
                                          // Überstunden

   public:
      // Konstruktor
      angestellter();
        // Methoden
      void init(string, string, char, int);
      void ausgeben();
      int getPersonalnummer();
      int getAnzahlTarifgruppen();
      int tarifgruppe_aendern(int);
      int ueberstunden_eingeben();
      void gehalt_berechnen();

    }; // end of class angestellter


int main()
{
const int anzahl_mitarbeiter = 5;
int auswahl, i;
angestellter mitarbeiter[anzahl_mitarbeiter];
mitarbeiter[0].init("Jens","Berger",'m', 4001);
mitarbeiter[1].init("Klaus","Ritter",'m', 4002);
mitarbeiter[2].init("Annette","Peters",'f', 4003);
mitarbeiter[3].init("Isabelle","Sturm",'f', 4004);
mitarbeiter[4].init("Karin","Fink",'f', 4005);

do
    {
   cout<<"\n\n\tDas Menue\n";

   cout<<"\nAlle Mitarbeiter ausgeben (1)";
   cout<<"\nEinen Mitarbeiter ausgeben (2)";
   cout<<"\nAlle Ueberstunden eingeben (3)";
   cout<<"\nAlle Gehaelter berechnen (4)";
   cout<<"\nTarifgruppe eines Mitarbeiters aendern (5)";
   cout<<"\nBeenden (6)";
   cout<<"\n\nIhre Wahl: ";
   cin>>auswahl;
   switch(auswahl)
       {
        case 1: //Alle Mitarbeiter ausgeben (1)
          {
         for (i = 0; i < anzahl_mitarbeiter; i++)
             {
            mitarbeiter[i].ausgeben();
            }
         }
      break;

      case 2:   //Einen Mitarbeiter ausgeben (2)"
         {
         int nummer;
         bool gefunden = false;
         cout<<"\nBitte geben Sie die Personalnummer des Mitarbeits ein: ";
         cin>>nummer;

             for(i =0; i < anzahl_mitarbeiter && !gefunden; i++)
                {
               if (mitarbeiter[i].getPersonalnummer() == nummer)
                   {
                  gefunden = true;
                   mitarbeiter[i].ausgeben();
                  }
               }
               if (gefunden == false)
                   {
                    cout<<"\nEs konnte leider kein Mitarbeiter mit dieser Personalnummer gefunden werden!";
                  }
         }
      break;

      case 3: //Alle Ueberstunden eingeben (3)
          {
          {
         int ergebnis;
         for(i=0;i<anzahl_mitarbeiter;i++)
             {
            ergebnis =mitarbeiter[i].ueberstunden_eingeben();

             switch(ergebnis)
                 {
                case -2:
                    {
                   cout<<"\nSie haben eine zu grosse Anzahl Ueberstunden eingegeben!";
                   }
                break;
                case -1:
                    {
                   cout<<"\nSie haben eine negative Zahl eingegeben. Das ist nicht zulaessig!";
                   }
                break;
                case 0:
                    {
                   cout<<"\nBestaetigung: Die Ueberstunden wurden eingetragen!";
                   }
               break;
                default:
                    {
                   cout<<"\nEs ist ein unbekannter Fehler aufgetreten!";
                   }
                break;
                } //end of switch
            }//   for(i=0;i<anzahl_mitarbeiter;i++)
         }
         }
      break;


      case 4: //Alle Gehaelter berechnen (4)
          {
         for (i = 0; i < anzahl_mitarbeiter; i++)
             {

            }
         cout<<"\n\nEs sind die Gehaelter fuer alle Mitarbeiter berechnet worden!";
        
         }
      break;

      case 5: //Tarifgruppe eines Mitarbeiters aendern (5)
          {
         int nummer, gruppe;
         bool gefunden = false;
         cout<<"\nBitte geben Sie die Personalnummer des Mitarbeits ein: ";

               cout<<"\n\nZu welcher Tarifgruppe soll dieser Mitarbeiter zukuenftig gehoeren?";
               cout<<"\nHinweis: Es kommen die Tarifgruppen 1 bis "<<mitarbeiter[i].getAnzahlTarifgruppen()<<" in Frage";
               cout<<"\n\nIhre Auswahl: ";

                  cout<<"\nFehlerhafte Eingaben. Die Tarifgruppe wurde nicht geaendert!";

                  cout<<"\nBestaetigung: Die Aenderung der Tarifgruppe wurde vorgenommen!";

            cout<<"\nEs konnte leider kein Mitarbeiter mit dieser Personalnummer gefunden werden!";

         }
      break;

      case 6:
          {
         cout<<"\nAuf Wiedersehen!\n";
         }
      break;

      default:
          {
         cout<<"Ihre Eingabe war leider ungueltig!\n";
         cout<<"Weiter mit beliebiger Taste\n";
         getch();
         }
      break;
      } // end of switch
   }
while (auswahl != 6);
getch();
return 0;
}

// Der Konstruktor

angestellter::angestellter()
          {
             tarifgruppe = 2; monatsarbeitszeit = 168; gehalt = 0;
         ueberstunden = 0; max_ueberstunden = 50;
         tariflohn[0] = 9.0; tariflohn[1] = 11.0; tariflohn[2] = 13.0;
         tariflohn[3] = 15.0; zuschlag = 20.0;
         }

// Methoden

void angestellter::init(string Vorname, string Nachname, char Sex, int Nummer)
    {
   strcpy(vorname,Vorname);
   strcpy(nachname,Nachname);
   sex = Sex;
   personalnummer = Nummer;
   tarifgruppe = 2; monatsarbeitszeit = 168; gehalt = 0;
   ueberstunden = 0; max_ueberstunden = 50;
   tariflohn[0] = 9.0; tariflohn[1] = 11.0; tariflohn[2] = 13.0;
   tariflohn[3] = 15.0; zuschlag = 20.0;
   }

void angestellter::ausgeben()
    {
   cout<<"\n\nPersonalnummer: \t"<<personalnummer;
   cout<<"\n\nName: \t\t\t"<<vorname<<" "<<nachname;
   cout<<"\nTarifgruppe: \t\t"<<tarifgruppe;
   cout<<"\nStundenlohn: \t\t"<<tariflohn[tarifgruppe - 1]<<" Euro/h";
   cout<<"\nArbeitszeit: \t\t"<<monatsarbeitszeit<<" h/Woche";
   if (gehalt == 0) cout<<"\nDas Gehalt ist noch nicht berechnet worden";
   else cout<<"\nGehalt: \t\t"<<gehalt;
   cout<<"\nUeberstunden: \t\t"<<ueberstunden;
   cout<<"\nUeberstundenzuschlag: \t"<<zuschlag<<" %\n";
   }

int angestellter::getPersonalnummer()
    {
   return personalnummer;
   }


int angestellter::getAnzahlTarifgruppen()
    {
   return(sizeof(tariflohn)/sizeof(int));
   }

int angestellter::tarifgruppe_aendern(int gruppe)
    {

   }

int angestellter::ueberstunden_eingeben()
    {
   float stunden;
   cout<<"\n\nHinweis: Die maximale Anzahl Ueberstunden betraegt: "<<max_ueberstunden;
   cout<<"\n\nGeben Sie bitte die Uberstunden fuer ";
   if(sex == 'm') cout<<"Herrn ";
   if(sex == 'f') cout<<"Frau ";
   cout<<vorname<<" "<<nachname<<" ein: ";
   cin>>stunden;
   if ( stunden < 0 ) return(-1);
   if ( stunden > max_ueberstunden ) return(-2);
   ueberstunden = stunden;
   return(0);
   }


void angestellter::gehalt_berechnen()
    {
   gehalt ;
   }




C++:

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.03.2006, 15:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Was ist dein genaues Problem mit der Aufgabe? Wiso kommst du nicht weiter oder was genau hast du nicht verstanden?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.03.2006, 15:03 Uhr
~Itschi
Gast



C++:
void angestellter::gehalt_berechnen() {
gehalt =  monatsarbeitszeit * stundenlohn + ueberstunden * ueberstundenlohn;
}

und in deiner schleife in der main:

for (i = 0; i < anzahl_mitarbeiter; i++) {
                mitarbeiter[i].gehalt_berechnen() ;  
}

Nr 5

int angestellter::tarifgruppe_aendern(int gruppe) {
      if(gruppe <= 4 || gruppe < 1) {
                 return -1;
      }else{
                 tarifgruppe = gruppe;
                 return 0;
      }
}

was du damit in der main machen sollst weis ich nicht aber so ungefähr:

//x und g sind int
if(x == mitarbeiter[i].tarifgruppe_aendern(g) {

}


Dieser Post wurde am 24.03.2006 um 18:12 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: