Hilfe bei einem Programm/Neuling



  • 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?


Anmelden zum Antworten