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.
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)
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
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.
C++:
#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)
C++:
//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);
//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);
//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
Zuletzt bearbeitet: