Bücherverwaltung



  • Hallo,

    wie der Titel schon vermuten lässt, muss ich eine Bücherverwaltung programmieren (ist mein allererstes C++ Programm, bin daher grad etwas überfordert).
    Hier mal was ich bisher habe:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    struct Buch{
        string autor;
        string titel;
        string verlag;
        int jahr;
    
             void eingabe(string a, string t, string v, int j){
                autor = a;
                titel = t;
                verlag = v;
                jahr = j;
            }
    
            void ausgabe(){
                cout << "\n" << "\n";
                cout << "Die Buchdaten sind: " << "\n" << "\n";
                cout << "Autor:  " << autor << "\n";
                cout << "Titel:  " << titel << "\n";
                cout << "Verlag:  " << verlag << "\n";
                cout << "Erscheinungsjahr:  " << jahr << "\n" << "\n";
                system("PAUSE");
            }
    };
    
    int main(int argc, char *argv[])
    {
        Buch A;
    
        cout <<"Geben Sie bitte folgende Buchdaten ein:"; 
        cout <<endl; 
        cout <<"Autor:  "; 
        cin >> A.autor;    
        cout <<"Titel:  "; 
        cin >> A.titel;      
        cout <<"Verlag: "; 
        cin >> A.verlag; 
        cout <<"Jahr:   "; 
        cin >> A.jahr; 
    
        A.ausgabe();
    
        //cout << "Press the enter key to continue ...";
        //cin.get();
        return EXIT_SUCCESS;
    }
    

    Ich habe "struct" verwendet, weil wir "class" noch nicht hatten und nicht verwenden sollen (aber wenn ich es richtig verstanden hab, macht das ja keinen Unterschied, außer dass alles "public" ist).

    Soweit läuft es auch. Aber wie kann man es hinkriegen, dass man mehrere Bücher eingeben kann, und diese dann als Bibliotheksverzeichnis wieder ausgeben? (so hab ich jedenfalls die Aufgabenstellung verstanden).

    Konstruktoren waren auch noch nicht dran, bin mir daher nicht sicher, ob der Prof das durchgehen lassen würde (kommt man dafür auch ohne aus?)

    Danke für jede Hilfe 🙂



  • Hallo

    Francisca93 schrieb:

    Ich habe "struct" verwendet, weil wir "class" noch nicht hatten und nicht verwenden sollen (aber wenn ich es richtig verstanden hab, macht das ja keinen Unterschied, außer dass alles "public" ist).

    Ja, also default ist alles public.

    Francisca93 schrieb:

    Soweit läuft es auch. Aber wie kann man es hinkriegen, dass man mehrere Bücher eingeben kann, und diese dann als Bibliotheksverzeichnis wieder ausgeben? (so hab ich jedenfalls die Aufgabenstellung verstanden).

    Indem du einen std::vector nimmst und darin die Bücher ablegst. Bzw. da jetzt wohl 'war noch nicht dran' kommt, ein array.

    Francisca93 schrieb:

    Konstruktoren waren auch noch nicht dran, bin mir daher nicht sicher, ob der Prof das durchgehen lassen würde (kommt man dafür auch ohne aus?)

    Ohne (explizit definierten) Konstruktor kommt man natürlich aus. Ist zwar irgendwo blöd, aber deine 'eingabe' Funktion ist quasi dein Konstruktor Ersatz.



  • Francisca93 schrieb:

    Soweit läuft es auch. Aber wie kann man es hinkriegen, dass man mehrere Bücher eingeben kann, und diese dann als Bibliotheksverzeichnis wieder ausgeben?

    Mit richtigem C++ würde man std::vector<Buch> nehmen. Da kannst du dann mit push_back deine Bücher einfügen.

    Anfängerkurse an der Uni sehen std::vector leider oft als "fortgeschritten" an murksen erst mal mit Arrays rum. Dann müsstest du ein Array mit fester Größe anlegen und selber verwalten, wie viel schon drin ist.

    Warum verwendest du cstdlib?
    Es fehlt das include für string.



  • Danke für die schnellen Antworten. Das mit dem Array werd ich mal versuchen. Also wäre das dann ein Array von Strukturen mit (z.B für 100 Bücher) Buch A[100]; ?
    Und dann eine for Schleife um die Eingabe rumlegen?

    cstdlib hab ich so aus dem Skript übernommen. Ist string da denn nicht mit drin?



  • Francisca93 schrieb:

    Also wäre das dann ein Array von Strukturen mit (z.B für 100 Bücher) Buch A[100]; ?

    Ja. Wie gesagt: das ist die schlechte Lösung.

    Francisca93 schrieb:

    Ist string da denn nicht mit drin?

    Nein. Header mit c am Anfang (und ohne .h) enthalten Dinge die zu C gehören. std::string ist C++.


Log in to reply