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