Projekt Fuhrparkverwaltung



  • Hallo!

    Ich muss bis Dienstag ein Projekt realisieren und habe leider keine Ahnung von C++. Es geht dabei um eine Fuhrparkverwaltung bestehend aus Fahraufträgen, Fahrzeugen und Fahrern. Fahrauftrag soll die Basisklasse sein und die anderen beiden Klassen sollen von dieser abgeleitet sein.

    Attribute:
    Fahrzeug: ID, Marke, Modell, erforderliche Führerscheinklasse, Datum der nächsten Hauptuntersuchung, Zuladung, Fahrzeugzustand, Reparaturauftrag(bool)
    Fahrer: ID, Verfügbarkeit(bool), Führerscheinklasse, Vorname, Name

    Und nun das wichtige:
    Ein Fahrzeug kann einem Fahrer nur zugeordnet werden, wenn die erforderliche Füherscheinklasse beim Fahrer vorhanden ist.
    Ein Fahrer kann einem Fahrauftrag nur zugeordnet werden, wenn der Fahrer verfügbar ist und die maximale Zuladung des Fahrzeugs nicht überschritten wurde.

    Bisher hab ich folgendes gemacht:
    4 Klassen angelegt: CFahrauftrag, CFahrzeug, CFahrer, CMain

    in der CMain habe ich ein Menü generiert, das beim Auswählen der einzelnen Menüpunkte nur die Methoden aus den anderen Klassen aufrufen soll.

    #include <iostream>
    #include <stdio.h>
    #include <string>
    #include "CFahrzeug.h"
    #include "CFahrauftrag.h"
    #include "CFahrer.h"
    
    using namespace std;
    
    int main()
    {
    	//Objekte der drei Hauptklassen erstellen
    	CFahrzeug fahrzeug = CFahrzeug();
    	CFahrauftrag auftrag = CFahrauftrag();
    	CFahrer fahrer = CFahrer();
    
    	//Eingabestring
    	string eingabe;
    
    	// while(true)
    	{
    		system("cls");
    		cout << "Menue:" << endl;
    		cout << "----------------------------------------" << endl;
    
    		cout << "Fahrauftraege:" << endl;
    		cout << "1. Anzeigen" << endl;
    		cout << "2. Hinzufuegen" << endl;
    		cout << "3. Zugehoerigen Fahrer festlegen" << endl;
    		cout << "4. Bearbeiten" << endl << endl;
    
    		cout << "Fahrzeuge:" << endl;
    		cout << "5. Anzeigen" << endl;
    		cout << "6. Verfuegbare anzeigen" << endl;
    		cout << "7. Tuev-Status anzeigen" << endl;
    		cout << "8. Tuev-Pruefung veranlassen" << endl;
    		cout << "9. Reparaturauftrag veranlassen" << endl;
    		cout << "10. Hinzufuegen" << endl;
    		cout << "11. Bearbeiten" << endl << endl;
    
    		cout << "Fahrer:" << endl;
    		cout << "12. Anzeigen" << endl;
    		cout << "13. Verfuegbare anzeigen" << endl;
    		cout << "14. Hinzufuegen" << endl;
    		cout << "15. Zugehoeriges Fahrzeug festlegen" << endl;
    		cout << "16. Bearbeiten" << endl << endl;
    
    		cout << "Allgemein:" << endl;
    		cout << "17. Daten aus Textdatei lesen (oeffnen)" << endl;
    		cout << "18. Daten in Textdatei schreiben (speichern)" << endl << endl;
    
    		cout << "b. Beenden" << endl;
    		cout << "----------------------------------------" << endl << endl;
    
    		cout << "Bitte Menuepunkt auswaehlen: ";
    		cin >> eingabe;
    
    		//Auswertung der Eingabe
    		switch(eingabe[0])
    		{	
    			//1. Alle Fahrauftraege anzeigen
    			case '1':
    				// auftrag.zeigeListe();
    				break;
    
    			//2. Fahrauftrag hinzufügen
    			case '2':
    				// auftrag.speicherNeuenDatensatz();
    				break;
    
    			//3. Zugehoerigen Fahrer festlegen
    			case '3':
    				// auftrag.setzeFahrer(fahrer.getFahrerListe());
    				break;
    
    			//4. Fahrauftrag bearbeiten
    			case '4':
    				// auftrag.aenderFahrauftragZustand();
    				break;
    
    			//5. Alle Fahrzeuge anzeigen
    			case '5':
    				fahrzeug.zeigeListe();
    				break;
    
    			//6. Verfuegbare Fahrzeuge anzeigen
    			case '6':
    				// fahrzeug.zeigeVerfuegbareFahrzeuge();
    				break;
    
    			//7. Tuev-Status anzeigen
    			case '7':
    				// fahrzeug.zeigeTuevStatus();
    				break;
    
    			//8. Tuev-Pruefung veranlassen
    			case '8':
    				// fahrzeug.veranlasseTuevPruefung();
    				break;
    
    			//9. Reparaturauftrag veranlassen
    			case '9':
    				// fahrzeug.veranlasseReparatur();
    				break;
    
    			//10. Fahrzeug hinzufügen
    			case '10':
    				// fahrzeug.speicherNeuenDatensatz();
    				break;
    
    			//11. Fahrzeug bearbeiten
    			case '11':
    				// fahrzeug.bearbeiteFahrzeug();
    				break;
    
    			//12. Alle Fahrer anzeigen
    			case '12':
    				// fahrer.zeigeListe();
    				break;
    
    			//13. Verfuegbare Fahrer anzeigen
    			case '13':
    				// fahrer.zeigeVerfuegbareFahrer();
    				break;
    
    			//14. Fahrer hinzufuegen
    			case '14':
    				// fahrer.speicherNeuenDatensatz();
    				break;
    
    			//15. Zugehoeriges Fahrzeug festlegen
    			case '15':
    				// fahrer.zuweisungAuftrag(fahrer.getFahrauftragListe());
    				break;
    
    			//16. Fahrer bearbeiten
    			case '16':
    				// fahrer.bearbeiteFahrer();
    				break;
    
    			//17. Daten aus Textdatei lesen (oeffnen)
    			case '17':
    				// lesen();
    				break;
    
    			//18. Daten in Textdatei schreiben (speichern)
    			case '18':
    				// schreiben();
    				break;
    
    			//b. Beenden
    			case 'b':
    				system("cls");
    				cout << "Vielen Dank fuer die Benutzung dieses Programms" << endl << endl;
    				break;	
    		}
    	}
    }
    

    Hier ist auch schon mein erstes Problem. Wie kann ich beim Beenden das Konsolenfenster schließen?

    Mein zweites Problem ist etwas größer. Wir sollen den Code ja möglichst komplett in C++ schreiben. Die Daten der Fahraufträge, Fahrzeuge und Fahrer sollen in 3 Textdateien gespeichert werden.
    Ich habe mir also überlegt einen Vector zu benutzen, da das auch viele meiner Kollegen gemacht haben.

    Meine erste Aufgabe ist jetzt, die Daten aus der Textdatei zu laden (ich habe selbst welche reingeschrieben / Die Attibute sind durch ; getrennt).
    Diese sollen in einen Vektor geladen werden und später wieder formatiert ausgegeben werden. Auch will ich sie einzeln manipulieren können.

    Daszu habe ich mir folgendes überlegt: (steht in der CFahrzeug)

    //DatenstromObjekt erstellen (Datei öffnen)
    	ifstream myfile;
    	myfile.open ("fahrzeuge.txt");
    
    	//Datei Zeilenweise auslesen und Datensätze in Liste schreiben
    	while(!myfile.eof())
    	{
    		//Zeile einlesen
    		getline(myfile, zeile);
    
    		CFahrzeug *auto1 = new CFahrzeug();
    		// Erstes Trennzeichen suchen
    		size_t i = zeile.find(";");
    
    		auto1->fahrzeugId = zeile.substr(0, i);
    //Schleife verlassen, wenn Ende erreicht
    		if (zeile.size() == 0)
    			break;
    
    		//Objekt in Liste speichern
    		FahrzeugVektor.push_back(auto1);
    

    Wie kann ich das realisieren. Wahrscheinlich nicht mit Adressen, da das Zeug ja später an einer anderen Stelle im Hauptspicher stehen kann. Wie kann ich in einer Schleife die Attribute in den Vektor einlesen und nachher wieder darauf zugreifen.

    Ich wär über ein wenig Hilfe sehr dankbar!

    Grüße



  • Kann mir keiner helfen? Ist wirklich dringend...


Anmelden zum Antworten