In einer Methode einer Klasse die Methode einer anderen Klasse aufrufen ?



  • ok, habe meinen fehler gefunden...habe dummerweise die definition aus meinem vorherigen projekt in die header-datei kopiert und da dort dann eine komplette definition zu sehen war, merkte ich nicht, dass ich gerade in der header schreibe =)....

    eine andere frage. ich würde gern ein objekt als array verwalten, und gern einen zähler verwenden

    a la

    int anzahl;
    
    Hochschule *thm[10];
    
    // und dann mit:
    
    thm[anzahl]  ... weiterarbeiten
    

    wie mache ich diesen zähler global ?!? also so, dass alle klassen und auch main() den aktuellen wert sehen, oder zur not auch bearbetien können ?

    habe versucht ihn in main() mit static int anzahl = 0 zu deklarieren.

    allerdings ist der zähler innerhalb der klassen dann unbekannt.

    muss ich noch eine definition in den klassen erstellen ? wenn ja, haben diese dann einen "eigenen" zähler, oder erkennen sie die veränderung in main () ?

    grüße smuji



  • Smuji schrieb:

    eine andere frage. ich würde gern ein objekt als array verwalten, und gern einen zähler verwenden

    int anzahl;
    
    Hochschule *thm[10];
    
    // und dann mit:
    
    thm[anzahl]  ... weiterarbeiten
    

    wie mache ich diesen zähler global ?!? also so, dass alle klassen und auch main() den aktuellen wert sehen, oder zur not auch bearbetien können ?

    Am besten gar nicht! Vermeide globale Variablen. Vermeide globale Variablen. Vermeide globale Variablen. Schreib "Vermeide globale Variablen." 100x auf einen Zettel. Erst danach solltest du über die Verwendung globaler Variablen nachdenken, dabei aber dich an den 100x geschriebenen Text erinnern.

    Verwende auch keine Arrays + Zähler. Nimm stattdessen einen std::vector<Hochschule*> . Bleibt nur noch die Frage, ob nicht ein std::vector<Hochschule> oder ein std::vector<std::unique_ptr<Hochschule>> sinnvoller wäre.



  • Danke, bin davon auch schon weg gekommen.

    Ich hänge gerade daran, wie ich das mit dem Einschreiben realisieren soll. Also wie letztlich die Ausgabe aussehen soll

    Bsp.:

    Es wird im Menü ausgewählt, dass sich der Student in einen Studiengang einschreiben will.
    Also muss ich verschiedene Methode durchlaufen...

    1. neuen Fachbereich erstellen und ihm über den Konstruktor einen Namen geben
    2. Den Studenten fragen in welchen Studiengang er sich einschreiben will
    3. Seinen Namen abfragen.

    Nun muss ja später eine Ausgabe erzeugt werden a la:

    Hans Müller hat sich im Fachbereich XYZ in den Studiengang ZYX eingeschrieben

    Also brauche ich ja in den Klassen irgendeinen "status" der gesetzt wird, damit ich später die richtige Ausgabe erzeugen kann.

    Bsp.:

    Student wählt Studiengang AEB, also setze ich dort den status auf 1 und später bei der Ausgabe Frage ich über if(status == 1) dann gebe AEB aus, if(status == 2) dann TI und wenn status = 0, dann kein Eintrag ?!?

    Naja, ich probiere es mal so...vllt. fällt mir ja eine bessere lösung noch ein.



  • Du sollst nicht für jeden Studenten einen Fachbereich erstellen. Orientiere dich da an der Realität.

    Man könnte sich z.B. überlegen, ob die Uni über Studenten (einen Vektor von Studenten) verfügt und jeder Student einen Pointer auf den Studiengang den er belegt. (Mal als lockere Anregung zur Umsetzung).



  • ok,

    habe es bald fertig und poste es dann hier...

    allerdings habe ich gerade das problem, dass ich eine abfrage mache:

    Fachbereich *objekt;                                   
    
    	if ((objekt->get_status() == 1) || (objekt->get_status() == 2)) {                     
    	objekt->set_kurs();                                                                                                     
    	}
    

    bitte erstmal nicht über den sinn diskutieren, das machen wir wenn ich fertig bin, mich interessiert nur, warum ich fehler:

    Fehler C2059 Syntaxfehler: "||"

    bekomme, also ich möchte gern eine ODER-abfrage starten, ich habe schon versucht,

    #include <conio.h>
    #include <stdbool.h>

    einzubinden.... oder benutze ich die falschen tasten für das ODER ? oder sitzen meine klammern falsch?

    zumindest geben meine methoden entweder den wert 1 oder 2 zurück.

    EDIT::

    habe es nun versucht mal anders zu lösen, um überhaupt die funktion zu testen:

    void Hochschule::einschreiben_kurs() {
    
    	Fachbereich *objekt;     
    
    	if (objekt->get_status() == 1) {                     
    		objekt->set_kurs();                                                                                                     
    	}
    
    	else if (objekt->get_status() == 2) {
    		objekt->set_kurs();
    	}
    
    	else {
    		cout << "Bitte zuerst in einen Studiengang wählen !!" << endl << endl;                               
    	}
    }
    

    **
    Fehler:

    Fehler C4700 Die nicht initialisierte lokale Variable "objekt" wurde verwendet.**

    was ist denn nun wieder falsch ?



  • Smuji schrieb:

    allerdings habe ich gerade das problem, dass ich eine abfrage mache:

    Fachbereich *objekt;                                   
    
    	if ((objekt->get_status() == 1) || (objekt->get_status() == 2)) {                     
    	objekt->set_kurs();                                                                                                     
    	}
    

    bitte erstmal nicht über den sinn diskutieren

    Das lasse ich mir nicht vorschreiben. Vermeide es, magische Zahlen wie 1, 2, etc. für etwas anderes als offensichtliche Dinge zu verwenden. Welcher Studiengang ist "1", welcher "2"? Wenn du sowas hart verdrahten willst (würde ich von abraten, da sich Studiengänge und Fachbereiche auch ändern können), solltest du wenigstens ein enum verwenden.

    , das machen wir wenn ich fertig bin, mich interessiert nur, warum ich fehler:

    Fehler C2059 Syntaxfehler: "||"

    bekomme, also ich möchte gern eine ODER-abfrage starten,

    Das ist die vollständige Fehlermeldung? Kommt mir aber sehr kurz vor!

    ich habe schon versucht,

    #include <conio.h>
    #include <stdbool.h>

    einzubinden.... oder benutze ich die falschen tasten für das ODER ? oder sitzen meine klammern falsch?

    Die includes haben damit rein gar nichts zu tun! Die Klammern sehen auf den ersten Blick auch richtig aus. Also ist dein Fehler anderswo.

    Edit: zu deinem Edit:
    Das steht doch in der Fehlermeldung des Compilers! Du hast einen nicht initialisierten Pointer auf einen Fachbereich namens objekt dereferenziert. Was soll denn da rauskommen? (welcher Fachbereich soll das sein, es wurde keiner zugewiesen!)



  • erstmal vielen dank für deine ausführliche antwort.

    wie genau meinst du das ? ich verstehe deine antwort nicht ganz.

    "Das steht doch in der Fehlermeldung des Compilers! Du hast einen nicht initialisierten Pointer auf einen Fachbereich namens objekt dereferenziert. Was soll denn da rauskommen? (welcher Fachbereich soll das sein, es wurde keiner zugewiesen!)
    "

    wie muss sowas aussehen ?
    ich vermute ich habe also ziemlich vieles falsch, da die anderen 5 fehlermeldungen mit objekten sich auf andere klassen beziehen.

    ich habe den fehler überall dort wo ich innerhalb der klasse X auf eine methode der klasse Y zuzugreifen

    da bin ich wieder bei meinem alten problem.

    wenn ich in main() eine methode der klasse Ingo aufrufen möchte, kann ich doch einfach:

    Ingo Objekt;
    Objekt.methode();

    machen.

    Nur wenn ich innerhalb einer methode der Klasse Hans bin und dort die Methode der Klasse Ingo aufrufen möchte. Wie mache ich das ?

    Wenn ich dort nun obiges reinschreibe, bekomme ich einen Fehler.

    Daher dachte ich;

    Ingo *Objekt;
    Objekt->methode()



  • Smuji schrieb:

    Nur wenn ich innerhalb einer methode der Klasse Hans bin und dort die Methode der Klasse Ingo aufrufen möchte.

    Versuche erstmal, die Begriffe "Klasse" und "Instanz einer Klasse" auseinanderzuhalten.

    Du möchtest die Methode für ein ganz bestimmtes Objekt (= Instanz der Klasse) aufrufen. Diese Instanz muss also in der Methode bekannt sein. Entweder du übergibst sie der Methode oder die Instanz wird als Member in der Klasse gehalten.



  • ich vermute ich habe viel bockmist getrieben. mit meinem buch komme ich auch nicht ganz weiter....

    was ist denn ein Member ?

    ich zeige mal einen ausschnitt wie ich z.b. mich in einen kurs/PV einschreiben möchte:

    void Hochschule::einschreiben_kurs() {
    
    Fachbereich *objekt;     // da ich nicht von Hochschule direkt in Studiengang springen möchte, sondern dies über die klasse Fachbereich machen möchte, erzeuge ich ein objekt der klasse Fachbereich.
    
    	if (objekt->get_status() == 1) {   // statusabfrage ob bereits in studiengang 1 ODER 2 eingeschrieben, falls nicht, kann ich mich auch in keinen kurs einschreiben
    
    		objekt->set_kurs();   //diese methode erstellt wieder ein objekt der klasse studiengang, welche den student einschreibt                                                                                               
    	}
    
    	else if (objekt->get_status() == 2) {  // mit else if gearbeitet, weil ja(siehe oben) bool nicht funktioniert hat
    		objekt->set_kurs();
    	}
    
    	else {
    		cout << "Bitte zuerst in einen Studiengang wählen !!" << endl << endl;                               // ansonsten erst in studiengang einschreiben
    	}
    }
    

    aufjedenfall bekomme ich in Zeile 5 schon die eben genannte Fehlermeldung, wegen : (objekt->get_status() == 2)



  • Smuji schrieb:

    Fachbereich *objekt;     /* da ich nicht von Hochschule direkt in Studiengang springen möchte, 
    sondern dies über die klasse Fachbereich machen möchte, erzeuge ich ein objekt der klasse Fachbereich.*/
    

    Nee, das tust Du hier eben nicht!
    Du definierst hier nur einen Zeiger, der auf ein Objekt der Klasse Fachbereich zeigen könnte, er tut es aber nicht!



  • hmm....

    und wie würde es richtig aussehen ?!?



  • Na, zB.:

    Fachbereich objekt;
    
    ...
    
    //Zugriff:
    objekt.get_status() ... //anstelle von objekt->get_status()
    


  • Wobei Bellis Antwort nur den Kompilerfehler entfernt.
    Unsinnig bleibt das trotzdem.

    Fachbereich objekt;
    
    if (objekt.get_status() == 1) {
    

    Wer soll denn da auf wundersame weise den Status zwischen Zeile 1 und 3 geändert haben?



  • Genau. Ich hatte in meinem letzten Post noch die Frage gestellt:

    welcher Fachbereich soll das sein, es wurde keiner zugewiesen!

    Diese Frage ist von dir bislang unbeantwortet. Was soll Fachbereich objekt denn sein? Ein generischer Fachbereich? Ein spezieller Fachbereich wie "Naturwissenschaften"?

    Was soll objekt.get_status() denn zurückliefern?! Das bleibt alles völlig unklar. Wieso erzeugst du dort überhaupt einen Fachbereich? Du müsstest dir doch eigentlich irgendwie die Fachbereich-Liste von der Hochschule holen können.



  • hey, erst nochmal vielen Dank für euren Einsatz.

    Ich habe meinen Fehler gefunden.

    Ich habe die ganze Zeit mit * und -> gearbeitet, weil mir auf die herkömmliche Art und Weise das Objekt immer rot unterstrichen wurde.
    Ich konnte mir zwar nicht erklären, warum ich mit * und -> arbeite, aber das war die einzige Möglichkeit keinen roten Unterstrich zu bekommen.

    Nun war ich mal 'ne viertel Stunde an der Luft und tadaa, Fehler gefunden...für Fachbereich gibt es keinen Standardkontruktor.

    Warum ?!? Weil ich ihn iwann gelöscht habe. Vermutlich weil ich ihn nicht benutzt habe. Also habe ich den Standardkonstruktor wiederhergestellt und siehe da, es klappt.

    Ich dachte, wenn ich einen anderen Konstruktor habe, bräuchte ich den Standardkonstruktor nicht mehr und kann ihn löschen, um es übersichtlicher zu machen. Falsch gedacht.

    Nun ja, ich mach dann mal weiter. Ich bin mir sicher, ihr werden nochmal von mir hören 😉



  • Smuji schrieb:

    Ich dachte, wenn ich einen anderen Konstruktor habe, bräuchte ich den Standardkonstruktor nicht mehr und kann ihn löschen, um es übersichtlicher zu machen. Falsch gedacht.

    Logischerweise kannst du nicht das löschen, was gebraucht wird.



  • Smuji schrieb:

    Ich habe meinen Fehler gefunden.

    Du hast nur ein technisches Problem behoben. Die Frage bleibt immer noch, was der Code den eigentlich tun soll. Was soll das get_status bei einem default-konstuierten Fachbereich liefern? Und warum sollte es mal 1, mal 2 und mal noch was anderes ergeben?

    Es bringt nichts, so lange den Code zu ändern, bis er kompiliert, solange du dir nicht endlich Gedanken machst, wie das alles zusammenhängen soll.



  • also der code kompiliert schon. nur er funktioniert noch laaaaaange nicht 🙂

    jetzt beginnt für mich erst das fehler ausmerzen bzw. das "in gang bringen".
    nun kommt schon das erste problem.

    ich habe in der klasse etwas wie:

    class Fachbereich
    {
    	string bezeichnung;
    	int studiengang = 0;
            ...
    

    nun setzt mir meine einschreibmethode - > int studiengang = 1;

    sobald die methode durchlaufen wurde und ich zurück in main() ankomme und mir dort zum test studiengang nochmal ausgebe, hat es wieder den wert = 0;

    bleibt das nicht dauerhaft geändert ?



  • Ohne minimales, kompilierbares Codebeispiel schwer zu sagen, was du programmiert hast. 😉



  • ok, ich will euch eigentlich keine alpträume machen mit meinem code, aber ich poste mal alles was ich bisher so geschrieben habe.

    p.s. beachtet nicht so die kommentare, die sind zum teil noch von vor tagen und falsch, diese wollte ich wenn ich fertig bin noch verändern.

    auch muss ich überprüfen ob nicht ein paar methoden überflüssig sind....

    MAIN

    #include "Header.h"
    #include "main.h"
    
    /*Erstelle folgende Klassen: 
    
    Hochschule (Container für deine Fachbereiche, Methoden zum Hinzufügen und Entfernen von Fachbereichen) 
    Fachbereich (Container für Studiengänge, Methoden zum Hinzufügen und Entfernen von Studiengängen) 
    Studiengang (der spezifische Studiengang, Methoden zum Einschreiben ...) 
    Student
    
    \201 => ü
    \204 => ä
    \224 => ö
    
    */
    
    int main() {
    
    	int auswahl = 0;
    	int zähler = 0;
    	Hochschule *objekt;
    	Fachbereich hans; //test
    
    	objekt = new Hochschule ("Technische Hochschule Mittelhessen");           // neue Hochschule erbaut
    
    	Hochschule *thm[10];                                                                        // konstruktor NULL übergeben an beide werte und nur einer
    
    	do {
    		cout << objekt->get_name() << " - Studentenverwaltung:" << endl << endl;
    		cout << "MENUE:" << endl << endl;
    		cout << "\t 1 = In einen Studiengang einschreiben" << endl << endl;
    		cout << "\t 2 = In einen Kurs einschreiben" << endl << endl;
    		cout << "\t 3 = Noten des Kurses eintragen" << endl << endl;
    		cout << "\t 4 = Ausgabe aller Studierenden" << endl << endl << endl;
    		cout << "\t 5 = Nächster Student" << endl << endl << endl;
    		cout << "Treffen Sie bitte jetzt Ihre Auswahl: " << endl << endl << endl;
    		cin >> auswahl;
    		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    
    		switch (auswahl) {
    
    		case 1:
    			thm[zähler]->einschreiben_sg();                       // öffne hochschule, methode einschreiben_sg
    			break;
    
    		case 2:
    			thm[zähler]->einschreiben_kurs();
    			break;
    
    		case 3:
    			thm[zähler]->eintragen_note();
    			break;
    
    		case 4:
    			for (int i = 0; i <= zähler; i++) {
    				thm[i]->ausgabe();
    			}
    
    			break;
    
    		case 5:
    			zähler++;  // status auf 0 setzen, kurse auf 0 setzen , anzahl fächer wieder 0  zähler, kurs 1-3 auf 0 setzen
    			break;
    		}
    
    	} while ((auswahl > 0) && (auswahl < 6));
    	// cin.fail fehlerhafte eingabe
    
    	cout << "Fehlerhafte Eingabe" << endl << endl;
    	cout << "Programm beendet !!!" << endl << endl;
    	system("pause");
    	return 0;
    }
    

    HEADER:

    #pragma once
    
    #include <iostream>
    #include <string>
    #include <ctime>  // zeitverz. brauch ich nicht ?
    #include <windows.h> // für zeiterzögerung
    
    using namespace std;
    
    class Hochschule
    { 
    	string thm;
    
    public:
    	Hochschule(string);   // konstriktur
    	string get_name();     // bruache ich das ??????????
    
    	void einschreiben_sg();
    	void einschreiben_kurs();	
    	void eintragen_note();
    	void ausgabe();
    };
    
    //--------------------------------------------------------------
    
    class Fachbereich
    {
    	string bezeichnung;
    	string aeb;  // 1
    	string ti;   // 2
    	int studiengang = 0;        // status ob bereits eingeschrieben oder nicht 0 nein, 1 aeb , 2 ti FÜR AUSGABE
    
    public:
    	Fachbereich();
    	Fachbereich(string, string, string);  //konstruktor
    
    	string get_bezeichnung();     // ausgabe WIllkommen in hochschule cpp
    	int get_status();        // brauch ich für xterne abfrage, bevor man in kurs einschreibt, siehe hochschule, einschreiben_kurs
    
    	void set_sg();    // student in     aeb oder ti einschreiben studiengang
    
    	void set_aeb();  // methode zum einschreiben und namen speichern
    	void set_ti();     // methode zum einschreiben und namen speichern
    
    	void set_kurs();  // weiterleitung zu studiengang, da dort die kurse hinterlegt sind
    
    	string get_sg();  // rückgabe stduiengang
    
    };
    
    //-----------------------------------------------------------------
    
    class Studiengang
    {
    	string bezeichnung;
    	int zähler = 0;                   //  man darf max. 2 kurse belegen zähler
    
    	string mathe1;                   // namen
    	string swt1;                      // namen
    	string swt2;                       // namen
    
    	int kurs1 = 0;    // status ob eingeschrieben
    	int kurs2 = 0;
    	int kurs3 = 0;
    
    	//NOTEN
    
    	int note_mathe1 = 0;        // note hinterlegt
    	int note_swt1 = 0;
    	int note_swt2 = 0;
    
    public:
    	Studiengang();
    	Studiengang(string, string, string);
    	void set_bezeichnung(string);
    	string get_bezeichnung();
    
    	void set_mathe1();  // status setzen, eintragen
    	void set_swt1();
    	void set_swt2();
    
    	void set_note();  // note eintragen
    
    	string get_kurs_note();
    
    };
    
    //----------------------------------------------------------------
    
    class Student
    {
    	string name;
    	int status = 0;  // wenn noch keine student ... wenn student dann 1
    
    	                    //NEW STUDENT BEI EINCHRIEBEN
    public:
    	Student();
    	Student(string);
    
    	void set_status();
    	int get_status();
    
    	void set_name();
    	string get_name();
    };
    

    CPP

    #include "Header.h"
    
    Hochschule::Hochschule(string x)                                                                // Konstr. wird in main() aufgerufen und THM erhält Namen
    {
    	thm = x;
    }
    
    string Hochschule::get_name() {                                                                                          // in main() Ausgabe Überschrift
    	return thm;
    }
    
    void Hochschule::einschreiben_sg() {                                    // erstellt neuen FB, übergibt Konstr. FB,AEB,TI und öffnet das Einschreiben in SG
    
    	Fachbereich *objekt;
    	objekt = new Fachbereich("Informationstechnik - Elektrotechnik - Mechatronik", "Allgemeine Elektrotechnik Bachelor", "Technische Informatik");    
    
    	cout << "Willkommen in: \t\t" << objekt->get_bezeichnung() << endl << endl << endl << endl;                         // holt FB-Bezeichnung und Ausgabe 
    
    	objekt->set_sg();                                                                                           // öffnet das Einschreiben in Studiengang
    }
    
    void Hochschule::einschreiben_kurs() {
    
    	Fachbereich objekt;     
    
    	if (objekt.get_status() == 1) {                     // statusabfrage ob bereits in studiengang 1 ODER 2 eingeschrieben
    		objekt.set_kurs();                                                                                                     // dann öffne einschreiben
    	}
    
    	else if (objekt.get_status() == 2) {
    		objekt.set_kurs();
    	}
    
    	else {
    		cout << "Bitte zuerst in einen Studiengang w\204hlen !!" << endl << endl;                               // ansonsten erst in studiengang einschreiben
    	}
    }
    
    void Hochschule::eintragen_note() {    // naja, besser malal
    
    	Studiengang objekt;
    
    	objekt.set_note();
    
    }
    
    void Hochschule::ausgabe() {
    
    	Fachbereich objekt1, objekt2;
    	Student objekt3;
    	Studiengang objekt4;
    
    	cout << "\201bersicht aller Studenten, Studiengänge, Kurse und Noten;" << endl << endl << endl << endl;
    	cout << "Fachbereich: " << objekt1.get_bezeichnung() << endl << endl;
    	cout << "Student: " << objekt3.get_name() <<  endl << endl;
    	cout << "Studiengang: " << objekt2.get_sg() << endl << endl;
    	cout << "Kurse und Noten: " << objekt4.get_kurs_note() << endl << endl;
    
    }
    
    //--------------------------------------------------------------------------------------------
    Fachbereich::Fachbereich(){ 
    }
    
    Fachbereich::Fachbereich(string x, string y, string z)  // konstruktor darf nicht 0 setzen, sonst bei jedem objekt erzeugen wieder = 0
    {
    	bezeichnung = x;
    	aeb = y;
    	ti = z;
    }
    
    string Fachbereich::get_bezeichnung() {                                                                             // für die Ausgabe "Willkomen in IEM"
    	return bezeichnung;
    }
    
    int Fachbereich::get_status() {                                                    // für abfrage VOR kurs einschreiben, ob überhaupt schon in studiengang
    	return studiengang;
    }
    
    void Fachbereich::set_kurs() {    // auswahl studiengang
    
    	int auswahl;
    	Studiengang objekt;
    
    	if (studiengang == 1) {                                                                                             // wenn in AEB, dann swt1 mathe 1
    		cout << "Sie befinden sich im Studiengang Allgemeine Elektrotechnik" << endl << endl;
    		cout << "Sie k\224nnen sich nun in folgende Kurse w\204hlen: " << endl << endl;
    		cout << "\t\t\t\t 1 = Mathe 1" << endl << endl;
    		cout << "\t\t\t\t 2 = SWT 1" << endl << endl;
    		cout << "Bitte w\204hlen Sie eine Nummer aus:" << endl << endl;
    		cin >> auswahl;
    
    		switch (auswahl) {
    
    		case 1:
    			objekt.set_mathe1();
    			break;
    
    		case 2:
    			objekt.set_swt1();
    			break;
    		}
    		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    	}
    
    	else if (studiengang == 2) {                                                                                // wenn in TI, dann swt1, swt2 und mathe 1
    		cout << "Sie m\224chten sich in einen Kurs einschreiben." << endl << endl;
    		cout << "Bitte w\204hlen Sie eine Nummer aus:" << endl << endl;
    		cout << "\t\t\t\t 1 = Mathe 1" << endl << endl;
    		cout << "\t\t\t\t 2 = SWT 1" << endl << endl;
    		cout << "\t\t\t\t 3 = SWT 2" << endl << endl;
    		cin >> auswahl;
    
    		switch (auswahl) {
    
    		case 1:
    			objekt.set_mathe1();
    			break;
    
    		case 2:
    			objekt.set_swt1();
    			break;
    
    		case 3:
    			objekt.set_swt2();
    			break;
    		}
    		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    	}
    
    	else {
    		cout << " IRGENDWAS STIMMT MIT DER EINSCHREIBUNG IM STUDIENGANG NICHT, versuchen erneneutuueuuuuufufufufuf" << endl;
    		system("pause");
    	}
    }
    
    void Fachbereich::set_sg() {                                                                                               // in Studiengang einschreiben
    
    	int auswahl = 0;
    
    	if (studiengang == 0) {                                      // wenn studiengang = 0, ist noch kein studiengang gewählt und man kann sich einschreiben
    		cout << "Sie m\224chten sich in einen Studiengang einschreiben." << endl << endl;
    		cout << "Bitte w\204hlen Sie eine Nummer aus:" << endl << endl;
    		cout << "\t\t\t\t 1 = AEB" << endl << endl;
    		cout << "\t\t\t\t 2 = TI" << endl << endl;
    		cin >> auswahl;
    		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    
    		switch (auswahl) {
    		case 1:
    			set_aeb();                                                                                                  // öffnet das dortige Einschreiben
    			cout << " Sie haben sich erfolgreich in " << aeb << " eingeschrieben." << endl << endl;
    			cout << studiengang;
    			break;
    
    		case 2:
    			set_ti();                                                                                                   // öffnet das dortige Einschreiben
    			cout << " Sie haben sich erfolgreich in " << ti << " eingeschrieben." << endl << endl;
    			break;
    		}
    
    		// ausgabe EINGESCHRIEBEN !!!! mit verzögerung  ausgabe
    	}
    
    	else {
    		cout << "Sie sind bereits in einen Studiengang eingeschrieben !!!" << endl << endl;      // falls studiengang = 1 oder 2, ist schon eingeschrieben
    	}
    }
    
    void Fachbereich::set_aeb() {     // einschreiben in aeb öffnen konstruktor student und übergeben name udn setzen status 1 in stud und 1 in fachbere
    
    	Student *neu;
    	string eingabe;
    
    	cout << "Sie m\224chten sich einschreiben in " << aeb << endl << endl;
    	cout << "Geben Sie bitte Ihren Vor- und Nachnamen ein: " << endl << endl;
    	cin >> eingabe;
    	neu = new Student(eingabe);   // wenn status = 0 -> kein student,   1 -> student name schon gesetzt
    	cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    	studiengang = 1;                         // aeb ist 1
    	neu->set_status();
    }
    
    void Fachbereich::set_ti() {
    
    	Student *neu;
    	string eingabe;
    
    	cout << "Sie m\224chten sich einschreiben in " << ti << endl << endl;
    	cout << "Geben Sie bitte Ihren Vor- und Nachnamen ein: " << endl << endl;
    	cin >> eingabe;
    	neu = new Student(eingabe);
    	cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    	studiengang = 2;
    	neu->set_status();
    
    }
    
    string Fachbereich::get_sg() {  
    
    	if (studiengang == 1) {
    		return aeb;
    	}
    
    	else if (studiengang == 2) {
    		return ti;
    	}
    
    	else {
    		return "leer";                              // darf eigentlich nie vorkommen
    	}
    }
    
    //--------------------------------------------------------------------------
    
    Studiengang::Studiengang() {
    
    }
    
    Studiengang::Studiengang(string x, string y, string z)                     //Konstruktor mit übergabe status
    {
    	mathe1 = x;
    	swt1 = y;
    	swt2 = z;
    }
    
    string Studiengang::get_bezeichnung() {
    	return bezeichnung;
    }
    
    void Studiengang::set_bezeichnung(string y) {
    
    	bezeichnung = y;
    
    	return;
    }
    
    void Studiengang::set_mathe1() {  // ich muss namen nicht überprüfen, da es vorher schon gemacht wird
    
    	Student objekt;
    
    	if (zähler < 2) {
    		cout << "Willkommen " << objekt.get_name() << "in " << mathe1 << endl << endl;
    
    		cout << "Sie werden nun eingeschrieben" << endl << endl;
    
    		// zeitverzögerung
    		kurs1 = 1;
    		cout << "Sie belegen nun den Kurs " << mathe1 << "Viel Erfolg !" << endl << endl;
    
    		zähler++;
    	}
    
    	else {
    		cout << "Sie d\201rfen sich leider nur in 2 Kurse einschreiben" << endl << endl;
    		system("pause");
    	}
    }
    
    void Studiengang::set_swt1() {
    
    	Student objekt;
    
    	if (zähler < 2) {
    		cout << "Willkommen " << objekt.get_name() << "in" << swt1 << endl << endl;
    
    		cout << "Sie werden nun eingeschrieben" << endl << endl;
    
    		// zeitverzögerung
    		kurs2 = 1;
    		cout << "Sie belegen nun den Kurs" << swt1 << "Viel Erfolg !" << endl << endl;
    
    		zähler++;
    	}
    
    	else {
    		cout << "Sie d\201rfen sich leider nur in 2 Kurse einschreiben" << endl << endl;
    		system("pause");
    	}
    }
    
    void Studiengang::set_swt2() {
    
    	Student objekt;
    
    	if (zähler < 2) {
    		cout << "Willkommen " << objekt.get_name() << "in " << swt2 << endl << endl;
    
    		cout << "Sie werden nun eingeschrieben" << endl << endl;
    
    		// zeitverzögerung
    
    		kurs3 = 1;
    		cout << "Sie belegen nun den Kurs " << swt2 << "Viel Erfolg !" << endl << endl;
    
    		zähler++;  // damit man max. 2 kurse belegen kann
    	}
    
    	else {
    		cout << "Sie d\201rfen sich leider nur in 2 Kurse einschreiben" << endl << endl;
    		system("pause");
    	}
    }
    
    void Studiengang::set_note() {
    
    	int note;
    	int auswahl;
    	int rückgabewert;
    
    	Fachbereich objekt;
    	rückgabewert = objekt.get_status();
    
    	if (rückgabewert == 1) {                                         // wenn  AEB eingetragen 
    		cout << "Sie m\224chten eine Note eintragen." << endl << endl;
    		cout << "Bitte w\204hlen Sie den Kurs: " << endl << endl;
    		cout << "\t\t\t\t 1 = Mathe 1" << endl << endl;
    		cout << "\t\t\t\t 2 = Swt 1" << endl << endl;
    		cin >> auswahl;
    
    		switch (auswahl) {
    			case 1:
    				if(kurs1 == 1){                                   //wenn kurs1_status, dann mathe1 eintragen
    					cout << "Welche Note soll eingetragen werden ?" << endl << endl;
    					cin >> note;
    					note_mathe1 = note;
    				}
    
    				else {
    					cout << "Kurs wurde nicht belegt" << endl << endl;
    					}
    
    				break;
    
    			case 2:
    				if (kurs2 == 1) {                              //wenn kurs2_status, dann swt11 eintragen
    					cout << "Welche Note soll eingetragen werden ?" << endl << endl;
    					cin >> note;
    					note_swt1 = note;
    				}
    
    				else {
    				cout << "Kurs wurde nicht belegt" << endl << endl;
    				}
    
    				break;
    		}
    
    	}
    
    	else if (rückgabewert == 2) {                                 //TI eingeschrieben ??
    		cout << "Sie m\224chten eine Note eintragen." << endl << endl;
    		cout << "Bitte w\204hlen Sie den Kurs: " << endl << endl;
    		cout << "\t\t\t\t 1 = Mathe 1" << endl << endl;
    		cout << "\t\t\t\t 2 = Swt 1" << endl << endl;
    		cout << "\t\t\t\t 3 = Swt 2" << endl << endl;
    		cin >> auswahl;
    
    		switch (auswahl) {
    			case 1:
    				if (kurs1 == 1) {                          //wenn kurs1_status, dann mathe1 eintragen
    					cout << "Welche Note soll eingetragen werden ?" << endl << endl;
    					cin >> note;
    					note_mathe1 = note;
    				}
    
    				else {
    					cout << "Kurs wurde nicht belegt" << endl << endl;
    				}
    
    			break;
    
    		case 2:
    			if (kurs2 == 1) {    //wenn kurs2_status, dann swt1 eintragen
    				cout << "Welche Note soll eingetragen werden ?" << endl << endl;
    				cin >> note;
    				note_swt1 = note;
    			}
    
    			else {
    				cout << "Kurs wurde nicht belegt" << endl << endl;
    			}
    
    			break;
    
    		case 3:
    			if (kurs3 == 1) {    //wenn kurs3_status, dann swt2 eintragen
    				cout << "Welche Note soll eingetragen werden ?" << endl << endl;
    				cin >> note;
    				note_swt2 = note;
    			}
    
    			else {
    				cout << "Kurs wurde nicht belegt" << endl << endl;
    			}
    
    			break;
    		}
    	}
    
    	else {
    		cout << "Sie sind weder in einem Studiengang, noch in einem Kurs eingeschrieben" << endl << endl;
    	}
    }
    
    string Studiengang::get_kurs_note() {
    	if (kurs1 == 1) {                   // Mathe 1 mit Note
    		cout << mathe1;
    			if (note_mathe1 != 0) {
    				cout << note_mathe1;
    			}
    			else {
    				cout << "keine Note";
    			}
    	}
    
    	if (kurs2 == 1) {                   // Swt1  mit Note
    		cout << swt1;
    		if (note_swt1 != 0) {
    			cout << note_swt1;
    		}
    		else {
    			cout << "keine Note";
    		}
    	}
    
    	if (kurs3 == 1) {                   // Swt2 mit Note
    		cout << swt2;
    		if (note_swt2 != 0) {
    			cout << note_swt2;
    		}
    		else {
    			cout << "keine Note";
    		}
    	}
    
    	else {
    		return "keine Kurse und keine Noten";
    	}
    }
    
    //--------------------------------------------------------------------------
    Student::Student() {
    
    }
    
    Student::Student(string x) {
    	name = x;
    }
    
    string Student::get_name() {     // bei der Ausgabe benötigt
    	if (status == 1) {
    		return name;
    	}
    
    	else {
    		return "leer";
    	}
    }
    
    void Student::set_name() {
    	return;
    }
    
    void Student::set_status() {   // status auf eins, damit andere wissen, name steht schon
    	status = 1;
    }
    
    int Student::get_status() {
    	return status;
    }
    

Anmelden zum Antworten