Hilfe bei einem Programm/Neuling
-
Hallo Leute ich bin recht neu auf dieser Seite also verzeiht mir wenn ich noch so manchen Fehler hier auf dieser Seite mache.
Ich hab eine Frage zu einem Programm was wir zurzeit in der Uni machen müssen. Dieses Programm hat hier eine Person schon mal gepostet aber es ist so alt das keiner mehr in diesem Forum darauf antwortet. Deshalb wollte ich fragen ob ihr mir hier antworten könntet. Quelltexte hätte ich alle parat, es würde nur um etwas kleines gehen was mich noch fehlt und ich nicht darauf komme.
Mfg
Sickl3Zz
-
Also die Aufgabenstellung lautet wie folgt
**
Schreiben Sie ein Programm zur Verwaltung von Bus- und Straßenbahnlinien. Jede Linie umfasst Nummer (als Zahl), Typ (Bus oder Bahn), Endstationen und Fahrzeit. Folgende Teilaufgaben sind zu implementieren:Lesen aus Datei,
Anzeige der Linien,
Erfassen neuer Linien,
Löschen von Linien über Angabe der Liniennummer,
Speichern der Linien beim Beenden des Programms.Für den Typ Linie ist eine Klasse zu erstellen, die Menge aller Linien ist in einem Feld von Linien-Instanzen zu verwalten.**
Mein Programm besteht aus 2mal .cpp und 1 .h - wo liegt mein Problem. Das Problem ist das mir noch eine .h Datei fehlt ich aber nicht weiß genau was in der alles stehen muss. Bei großzügiger Intresse bitte melden, dann poste ich die Codes
es geht mir hier nicht drum das ihr mein Zeug macht, es geht eher darum ob mir einer dabei helfen kann
-
Statt eine Leiche aus dem Keller zu holen und zu fragen, ob du fragen darfst, solltest du fragen. Wenn die Frage zu blöd ist, wirst du es schon merken
-
Woher weißt du, dass dir eine Datei fehlt, wenn du doch keine Ahnung hast, was drin stehen soll?
-
main.cpp
#include <iostream> #include <fstream> #include <tokenizer.h> #include <linienbearbeitung.h> void listeanzeigen () { std::string zeile; std::string abschnitt; std::ifstream bubaliste("bubaliste.dat"); while (getline(bubaliste, zeile)) { if (zeile[0]=='#') continue; Tokenizer tok(zeile, '^'); while (tok.anymore()) { abschnitt = tok.next(); std::cout<<abschnitt<<" "; } std::cout<<std::endl; } } int main() { Linienbearbeitung bubanew(0); //->Verwaltungsprogramm int aufg = 0; while (aufg != 4) { std::cout<<"\nAufgabenmanager\n---------------"<<std::endl; //Auswahl std::cout<<"Druecken sie die"<<std::endl; std::cout<<"1 - Zum Anzeigen Bus- und Bahnliste"<<std::endl; std::cout<<"2 - Zum Linien hinzufuegen"<<std::endl; std::cout<<"3 - Zum Linien loeschen"<<std::endl; std::cout<<"4 - Zum Programm beenden"<<std::endl; std::cout<<std::endl; std::cout<<"Was moechten sie tun?"; std::cin>>aufg; std::cout<<std::endl; switch (aufg) { case 1: std::cout<<"Aktuelle Bus- und Bahnliste:"<<std::endl; listeanzeigen(); break; case 2: std::cout<<"Fügen Sie neue Linie hinzu."<<std::endl; bubanew.bubaadd(); break; case 3: std::cout<<"Loeschen Sie eine Linie."<<std::endl; bubanew.bubadel(); break; case 4: std::cout<<"-->Programm wurde beendet!"; break; default: std::cout<<"--->!!!Ungueltige Eingabe!!!<---"<<std::endl; std::cout<<">Bitte probieren sie es erneut.<"<<std::endl; break; } } return 0; }
linienbearbeitung.h
#ifndef LINIENBEARBEITUNG_H #define LINIENBEARBEITUNG_H #include <string> class Linienbearbeitung { private: std::string myBubanummer; std::string myBubatyp; std::string myBubaziel; std::string myBubazeit; public: Linienbearbeitung(int a); bool doubletest(std::string nummer); void bubaadd(); void bubadel(); }; #endif // LINIENBEARBEITUNG_H
und linienbearbeitung.cpp
#include <linienbearbeitung.h> #include <fstream> #include <tokenizer.h> #include <iostream> Linienbearbeitung::Linienbearbeitung(int a) {a=0;} //Duplikatetest bool Linienbearbeitung::doubletest(std::string nummer){ //---> Hier habe ich nur Linienbearbeitung:: eingefügt std::ifstream bubaliste("bubaliste.dat"); std::string dateizeile; while (getline(bubaliste, dateizeile)) { if (dateizeile[0]=='#') continue; Tokenizer tok(dateizeile, '^'); if(tok.next() == nummer) return true; } return false; } void Linienbearbeitung::bubaadd(){ //Eingabe std::cout<<"Neue Liniennummer:"; std::cin>>myBubanummer; std::cout<<"Bus oder Bahn:"; std::cin>>myBubatyp; std::cout<<"Endhaltestelle:"; std::cin>>myBubaziel; std::cout<<"Fahrtzeit:"; std::cin>>myBubazeit; //Duplikate überprüfen if (doubletest(myBubanummer)) { std::cout<<"Die Liniennummer existiert schon!"<<std::endl; } //In Datei schreiben else { std::ofstream hinzufug("bubaliste.dat", std::ios_base::app); hinzufug<<myBubanummer<<"^"<<myBubatyp<<"^"<<myBubaziel<<"^"<<myBubazeit<<"\n"; hinzufug.close(); } } void Linienbearbeitung::bubadel() { std::string delNummer; std::string::size_type delPos1; std::string::size_type delPos2; std::string dateiinhalt; std::string dateizeile; //Eingabe std::cout<<"Welche Liniennummer möchten sie loeschen: "; std::cin>>delNummer; //Test ob vorhanden + löschen if (doubletest(delNummer)) { std::ifstream bubaliste("bubaliste"); while (getline(bubaliste, dateizeile)) { if (dateizeile[0]=='#') continue; dateizeile = std::string(dateizeile)+"\n"; dateiinhalt = dateiinhalt+dateizeile; } delPos1 = dateiinhalt.find(delNummer, 0); delPos2 = dateiinhalt.find("\n", delPos1); dateiinhalt.erase(delPos1, (delPos2+1)-delPos1); std::ofstream dateiinhaltNew("bubaliste.dat"); dateiinhaltNew<<dateiinhalt; dateiinhaltNew.close(); } else std::cout<<"Die Liniennummer existiert nicht!"<<std::endl; }
So meine Frage zu dem alten Post war wie bzw was muss in die tokenizer.h oder verstehe ich etwas falsch
-
manni66 schrieb:
Woher weißt du, dass dir eine Datei fehlt, wenn du doch keine Ahnung hast, was drin stehen soll?
-
Na läuft das alles, kannst es auch mal laufen lassen
-
Jetzt sind wir an dem Punkt mit „blöd“.
-
Es tut mir leid aber ich stehe gerade komplett auf dem Schlauch. Umsonst würde ich nicht fragen ist das erste Mal
-
wieso brauchst du ein Tokenizer?
-
Ich frage doch gerade deshalb. Ich hab das Programm in einem anderen Forum gefunden leider ist dieses inaktiv.
Und meine Frage bezog sich auf diesen tokenizer ob das komplett raus kann oder was auch immer. Ich wollte das Programm verstehen, aber da ich das nicht tue und ich es nicht zu laufen bekomme frage ich ja nach.Sorry das ich nicht gleich den Fehler finde deshalb frag ich ja
-
alles weg.
1. Du brauchst eine struct Buslinie mit den beschriebenen Membern.
2. Dann überlädst du den Ein- und Ausgabeoperator für deine struct.
und dann bist du schon fast fertig.
-
Achso okay, ich werde mal mein Glück probieren
-
Du solltest dir das mit der Uni nochmal überlegen. Mit „abschreiben“ wird das schwierig.
-
Und wie weit bist du?