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, NameUnd 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, CMainin 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...