Bücherdatenbank



  • Guten Morgen,

    ich habe in meinem C++ Praktikum wieder eine Aufgabe bekommen wo ich wieder nicht ganz weiter komme. Also ich soll eine Art Bücherdatenbank schreiben die die Werte Vorname, Name, Buchtitel, Erscheinjahr, Preis einliest und dann als Liste ausgibt.
    Habe nichts passendes in Büchern, Internet etc. gefunden.

    z.B. so:

    Vorname Name Buchtitel Erscheinjahr Preis

    Wie erstelle ich solche Listen, welche ich dann auch noch später sortieren kann.

    Hier ist meine Aktueller Quellcode:

    #include <iostream>
    
    using namespace std;
    
    #define MAX 10			
    
    int main (void)
    {
    struct buecher  		
    {
      char name[30];
      char vorname[40];
      char buchtitel[40];
      int erscheinjahr;
      float preis;
    };
    
      struct buecher adr[MAX];
      int anzahl = 1;
      int index;
    
      printf("Bitte geben Sie die Anzahl der Datensätze an: ");
      scanf("%d",&anzahl);
      printf("\n");
    
      for (index = 0; index < anzahl; index++)
      {
        printf("Bitte Namen eingeben           : ");
        scanf("%s",&(adr[index].name));
    
        printf("Bitte Vorname eingeben         : ");
        scanf("%s",&(adr[index].vorname));
    
        printf("Bitte den Buchtitel eingeben    : ");
        scanf("%s",&(adr[index].buchtitel));
    
        printf("Bitte das Erscheinjahr eingeben  : ");
        scanf("%d",&(adr[index].erscheinjahr));
    
        printf("Bitte den Preis eingeben: ");
        scanf("%f",&(adr[index].preis));
    
        printf("\n");
      }
    
    for (index = 0; index < anzahl; index++)
      {
        printf("%d. Name Vorname          : %s %s \n  ",index,adr[index].name, adr[index].vorname);
        printf("%d. Buchtitel Erscheinjahr : %s %d \n  ",index,adr[index].buchtitel, adr[index].erscheinjahr);
        printf("%d. Preis                  : %.2f \n \n  ",index,adr[index].preis);
      }
    }
    

    Über eure Hilfe würde ich mich sehr freuen.

    grüß

    derWoodi



  • Hallo,
    schau Dir doch mal die Beispiele zu verketteten Listen an, da gabs in letzter Zeit einige.

    Gruß Alex



  • Außerdem scheinst du mit C zu arbeiten und nicht mit C++. Das sollte man schonmal als erstes Wissen, dass es da nen Unterschied gibt, könnte sonst mal peinlich werden...



  • KUrpfuscher schrieb:

    Außerdem scheinst du mit C zu arbeiten und nicht mit C++. Das sollte man schonmal als erstes Wissen, dass es da nen Unterschied gibt, könnte sonst mal peinlich werden...

    Nö:

    #include <iostream>
    

    Er arbeitet schon mit C++; Ist ist auch nicht sehr verwerflich, printf und scanf zu verwenden!

    Aber back to topic. Such mal nach Telefonbuch C++, das ist genau das selbe wie du brauchst. Davon gibt's bestimmt 100te im Netz, z.B. von Volkhard.



  • Also mein Dozent meinte printf würde zwar gehen aber es wäre besser cin.getline bzw. cin und cout zu benutzen. Nun habe ich das Programm umgeschrieben und eine tabellarische Ausgabe hinbekommen doch cin scheint die Datentypen ( die ich am Anfang deklarierthabe) nicht am Ende zu übernehmen. Es kommt also immer nur Zahlenwirrwar raus. Wie kann ich cin.getline bzw. cin bzw cout sagen was für ein Datentyp das jeweilige Feld ist?

    Kann mir da einer Weiterhelfen?

    Hier der neue Quelltext:

    #include <iostream>
    #include <iomanip>
    #define MIN 10
    using namespace std;
    
    const int anzahl = 10;
    
    struct buecher  		
    {
      char name[40];
      char vorname[40];
      char buchtitel[40];
      int erscheinungsjahr;
      float preis;
    };
    
    int main ()
    
    {
     struct buecher bue[MIN];
     int anzahl = 1;
     int b;
    
     cout<< "Bitte geben Sie die Anzahl der Datensätze an: ";
     cin >> anzahl;
     cout<< "\n";
    
      for (b = 0; b < anzahl; b++)
      {
          cout << "Bitte Name eingeben: " ;
          cin.getline(bue[anzahl].name,39);
     cout<< "\n";
          cout << "Bitte Vorname eingeben: ";
          cin.getline(bue[anzahl].vorname,39);
     cout<< "\n";
          cout << "Bitte den Buchtitel eingeben:"  ;
          cin.getline(bue[anzahl].buchtitel,39);
     cout<< "\n";
          cout << "Bitte das Erscheinungsjahr eingeben: ";
          cin>> bue[anzahl].erscheinungsjahr;
     cout<< "\n";
          cout<< "Bitte den Preis eingeben: " ;
          cin>> bue[anzahl].preis;
    
      }
    
      cout<< "\n" << endl;
    cout.width (42);
    cout << " Name\t\t\tBuchtitel\t\tErscheinungsjahr\t\tPreis"
    <<endl; 
    
    for (int a = 0; a < anzahl; a++)
      {
    
      cout << setw (10) << bue[a].name                            
    
    	   << setw (10) << bue[a].vorname
    
    	   << setw (10) << bue[a].buchtitel               
    
    	  << setw (10) << bue[a].erscheinungsjahr      
    
    	   << setw (10) << bue[a].preis                            
    	  <<endl;  
    }
    }
    

    gruß

    derWoodi



  • keiner eine Idee?



  • Kann mir keiner sagen wie ich die Datentypen bei cout bzw cin deklariere?

    gruß

    derWoodi


Anmelden zum Antworten