Bekomme Ausgabe einer gespeicherten Datei nicht hin



  • Schreibe gerade ein Programm zur Bücherverwaltung. Habe alles soweit fertig(klappt auch bis auf`s BuecherLaden), nur mit der Ausgabe(BuecherLaden) meiner zuvor gespeicherten Datei klappt es nicht so richtig. Ich möchte die Datei mit gesamten Inhalt ausgeben, zB:

    Buch Nr. 1
    Titel: blabla
    Autor: ebenso
    ISBN-Nr: 123
    Preis:12.3

    Irgendwo steckt in meinem Programm der Fehler, kann mir da einer von Euch helfen?
    schon mal Danke an Euch alle

    // Implementierungsdatei des Moduls 'textfiles.h'
    // textfiles.cpp
    
    #include <iostream>
    #include <iomanip>
    #include <fstream>
    #include <string>
    
    using namespace std;
    #include "textfiles.h"
    
    int eingabe_m;
    string eingabe, ausgabe;
    
    //Variablen für die Datei einlesen
    ifstream strom;				//strom zum Lesen des Dateistroms
    ofstream schreiben;
    
    string dateiname;
    
    //Variablen für die Anzahl der Bücher im Schrank
    unsigned anzahl_buecher;	//anzahl_buecher Anzahl der Buecher im Schrank
    unsigned aktuelle_buecher;	//aktuelle_buecher Zählvariable für Schleifen
    const int max_buecher=200;	//maximale Anzahl der Buecher im Buecherschrank
    
    //Variablen für die Titel Suche
    string autor, verlag, titel;
    string nummer;
    string isbn;
    string E_jahr; 
    string preis;
    
    //Suche nach dem Buchautor
    string Such_Autor; //Variable zum Suchen des Autornamens
    
    //-----------------------------------------------------------------------------
    
    //Anlegen einer Struktur zum Speichern für ein Buch
    struct buecher 
    {
    	string titel;			//Variable für den Titel
    	string autor;			//Variable für den Autor
    	string E_jahr;			//Variable für den Erscheinungsjahr
    	string verlag;			//Variable für den Verlag
    	string preis;			//Variable für den Preis
    	string isbn;			//Variable für den ISBN-Nummer
    };
    //-----------------------------------------------------------------------------
    
    //buecherschrank aufstellen
    
    buecher buecherschrank[max_buecher];
    
    //-----------------------------------------------------------------------------
    
    //buecher aus Datei einlesen
    
    void BuecherAnlegen(void)
    {
    
    	//Schleifenzähler für die Anzahl der zu speichernden Bücher.
    
    	cout << "Wieviele Buecher moechten Sie anlegen? ";
    	cin >> anzahl_buecher;
    	cout << endl;
    
    //Schleife zum manuellen Einlesen der Daten
    
    		for (aktuelle_buecher=0; aktuelle_buecher < anzahl_buecher; ++aktuelle_buecher)     
    		{
    
    			cout << "Buch " << aktuelle_buecher + 1 << endl;
    			cout << "--------------------------------------" <<endl;
    
    			cout << "ISBN-Nummer:.......";
    			cin >> buecherschrank[aktuelle_buecher].isbn;
    
    			cout << "Buchtitel..........";
    			cin >> 	buecherschrank[aktuelle_buecher].titel;
    
    			cout << "Autor..............";
    			cin >> 	buecherschrank[aktuelle_buecher].autor;
    
    			cout << "Erscheinungsjahr...";
    			cin >> 	buecherschrank[aktuelle_buecher].E_jahr;
    
    			cout << "Preis..............";
    			cin >> 	buecherschrank[aktuelle_buecher].preis;
    
    			cout << "Verlag.............";
    			cin >> 	buecherschrank[aktuelle_buecher].verlag;
    
    		}
    			cout << endl << endl << endl;
    	TitelSortieren();
    	menueAufruf();
    
    }
    
    //-----------------------------------------------------------------------------
    
    void BuecherAusgeben(void)
    {
    			for (aktuelle_buecher=0; aktuelle_buecher < anzahl_buecher; ++aktuelle_buecher)
    			{
    				cout << "Buch " << aktuelle_buecher + 1 << endl;
    				cout << "ISBN-Nummer:......." << buecherschrank[aktuelle_buecher].isbn << endl;
            		cout << "Buchtitel.........." << buecherschrank[aktuelle_buecher].titel << endl;
    				cout << "Autor.............." << buecherschrank[aktuelle_buecher].autor << endl;
            		cout << "Erscheinungsjahr..." << buecherschrank[aktuelle_buecher].E_jahr << endl;
    				cout << "Preis.............." << buecherschrank[aktuelle_buecher].preis << endl;
            		cout << "Verlag............." << buecherschrank[aktuelle_buecher].verlag << endl;
    				cout << "--------------------------------------" << endl << endl;	
    			}
    
    }
    
    //-----------------------------------------------------------------------------
    
    //buecher im Schrank sortieren
    void TitelSortieren(void)
    {
    	bool tausch ;
        do
        {
            tausch = false;
            for (aktuelle_buecher = 0; aktuelle_buecher < anzahl_buecher-1; ++aktuelle_buecher)
            {
                if (buecherschrank[aktuelle_buecher].titel > buecherschrank[aktuelle_buecher+1].titel)
                {
    			// Variable nur für schleife
    
    			//Speichern der Werte in einer Hilfsvariable (Dreieckstausch)	
    		    titel		=	buecherschrank[aktuelle_buecher].titel;
    			autor 		=	buecherschrank[aktuelle_buecher].autor;  
    			E_jahr		=	buecherschrank[aktuelle_buecher].E_jahr; 
    			verlag		=	buecherschrank[aktuelle_buecher].verlag;
    			preis		=	buecherschrank[aktuelle_buecher].preis;
    			nummer		=	buecherschrank[aktuelle_buecher].isbn;	
    
    			//Vertauschen der Strukturfelder
    			buecherschrank[aktuelle_buecher].titel = buecherschrank[aktuelle_buecher+1].titel;
    			buecherschrank[aktuelle_buecher].autor = buecherschrank[aktuelle_buecher+1].autor;
    			buecherschrank[aktuelle_buecher].E_jahr = buecherschrank[aktuelle_buecher+1].E_jahr;
    			buecherschrank[aktuelle_buecher].verlag = buecherschrank[aktuelle_buecher+1].verlag;
    			buecherschrank[aktuelle_buecher].preis = buecherschrank[aktuelle_buecher+1].preis;
    			buecherschrank[aktuelle_buecher].isbn = buecherschrank[aktuelle_buecher+1].isbn;
    
    			//Zürückschreiben der alten Werte aus den Hilfsvariablen in den Bücherschrank
    			buecherschrank[aktuelle_buecher+1].titel	= titel;
    			buecherschrank[aktuelle_buecher+1].autor	= autor;
    			buecherschrank[aktuelle_buecher+1].E_jahr	= E_jahr;
    			buecherschrank[aktuelle_buecher+1].verlag   = verlag;
    			buecherschrank[aktuelle_buecher+1].preis	= preis;
    			buecherschrank[aktuelle_buecher+1].isbn		= nummer;
    
    			tausch = true;
                }
            }
        }
        while (tausch);
    }
    
    //-----------------------------------------------------------------------------
    
    void AutorSuchen(void)
    {
        cout << "Bitte geben Sie den Nachnamen des Autors ein, den Sie suchen : ";
    	cin >> Such_Autor;
    
    	bool such = false;
    	for (aktuelle_buecher=0; aktuelle_buecher <= anzahl_buecher;)
    	{
    		if(buecherschrank[aktuelle_buecher].autor == Such_Autor)
    		{
    			such = true;
    			break;
    		}
    		else
    			aktuelle_buecher++;
    
    	}
    
    			if (such == false)
    			{
    				cout << "Der Autor "<< Such_Autor << " wurde gefunden"<<endl;
    				cout<<endl;
    			}
    
    			else 
    				cout << "Der Autor " << autor <<" wurde nicht gefunden !";
    
    	menueAufruf();
    }
    
    //-----------------------------------------------------------------------------
    
    //Menue Aufruf
    
    void menueAufruf(void)
    {
    
    cout << "    *****************************************************************" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                     Herzlich Willkommen                       *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *	             Ihre Auswahlmoeglichkeiten:                    *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                1.Buecher   <Anlegen>                          *" << endl;
    cout << "    *                2.Buecher   <Speichern>                        *" << endl;
    cout << "    *                3.Buecher   <Laden>                            *" << endl;
    cout << "    *                4.Autor     <Suchen>                           *" << endl;
    cout << "    *                5.Programm  <Ende>                             *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *****************************************************************" << endl;
    cout<<endl<<endl;
    cout << " Ihre Auswahl: ";
    cin >> eingabe_m;
    
      switch(eingabe_m)
      {
      case 1	:	BuecherAnlegen(); break;
      case 2	:	BuecherSpeichern();break;
      case 3	:	BuecherLaden(); break;
      case 4    :   AutorSuchen(); break;
      case 5	:	cout << "Das Programm wird beendet!";
    		    cout <<endl<<endl;		
      }
    }
    //-----------------------------------------------------------------------------
    
    bool openForReading(ifstream & s, string filename)
    {
        s.clear();
        s.open(filename.c_str());
        return s;
    }
    
    //-----------------------------------------------------------------------------
    void noMoreReading(ifstream & s)
    {
        s.close();
    }
    
    //-----------------------------------------------------------------------------
    bool openForWriting(ofstream & s, string filename)
    {
        s.clear();
        s.open(filename.c_str());
        return s;
    }
    
    //-----------------------------------------------------------------------------
    
    void noMoreWriting(ofstream & s)
    {
        s.close();
    }
    
    //-----------------------------------------------------------------------------
    void ProgrammeEnde(void)
    {
    	cout << "Programm Ende"; 
    }
    
    //-----------------------------------------------------------------------------
    
    void BuecherLaden(void)
    {
    
    	// Dateinamen lesen und Datei öffnen
    		while(cout << endl << "Dateiname: ", cin >> dateiname, !openForReading(strom, dateiname))
    		{
    		cout << "Datei " << dateiname << " kann nicht geoeffnet werden." << endl;
    		};
    		aktuelle_buecher=0;
    		while (strom >> nummer)
        	{
            	eingabe = "";
            	ausgabe = "";
    
            	while(strom >> eingabe && eingabe != "***")
    			{
                	ausgabe += (eingabe += " ") ;            
    			    buecherschrank[aktuelle_buecher].titel	= ausgabe;break;
    
    			  while(strom >> eingabe && eingabe != "***")
    			  {
                	ausgabe += (eingabe += " ") ;            
    			    buecherschrank[aktuelle_buecher].autor = ausgabe;break;
    
    			   while(strom >> eingabe && eingabe != "***")
    			   {
                	ausgabe += (eingabe += " ") ;            
    			    buecherschrank[aktuelle_buecher].E_jahr	= ausgabe;break;
    
    			    while(strom >> eingabe && eingabe != "***")
    				{
                	  ausgabe += (eingabe += " ") ;            			
    			      buecherschrank[aktuelle_buecher].verlag = ausgabe;break;
    
                     while(strom >> eingabe && eingabe != "***")
    				 {
                	   ausgabe += (eingabe += " ") ;            
    			       buecherschrank[aktuelle_buecher].preis = ausgabe;break;
    
    			       while(strom >> eingabe && eingabe != "***")
    				   {
                	     ausgabe += (eingabe += " ") ;            
    			         buecherschrank[aktuelle_buecher].isbn = ausgabe;break;
    				   }
    				 }
    				}
    			   }
    			  }		
    			}
    
    		aktuelle_buecher++;        
    		}
            anzahl_buecher = aktuelle_buecher;
    		cout << "Es wurde(n) " << anzahl_buecher << " Buch(Buecher) eingelesen." << endl << endl;
            BuecherAusgeben();
    		noMoreReading(strom);
    menueAufruf();
    }
    
    //-----------------------------------------------------------------------------
    
    void BuecherSpeichern(void)
    {	
    	//Schleife  Bücher zu speichern.
    	cout << endl;
    	cout << "Dateiname angeben: " ;
    	cin >> dateiname; 
    	openForWriting(schreiben, dateiname);
    
    	for(aktuelle_buecher = 0; aktuelle_buecher < anzahl_buecher; aktuelle_buecher++ )
    	{
    
    	schreiben	
    	<< "Buch Nr." << aktuelle_buecher + 1 << endl
    	<< "----------------------------------------------" << endl
    	<< "Titel: " << buecherschrank[aktuelle_buecher].titel	<< "***" << endl
    	<< "Autor: " <<buecherschrank[aktuelle_buecher].autor	<< "***" << endl
    	<< "Erscheinungsjahr: " << buecherschrank[aktuelle_buecher].E_jahr	<< "***" << endl
    	<< "Verlag: " << buecherschrank[aktuelle_buecher].verlag	<< "***" << endl
    	<< "Preis: " << buecherschrank[aktuelle_buecher].preis	<< "***" << endl
    	<< "ISBN-Nummer: " << buecherschrank[aktuelle_buecher].isbn << endl	<< endl;
    	//schreiben bewirkt hier genau das gleiche wie ein cout. 
    	//Allerdings wird die Ausgabe in die Datei umgeleitet.
        }
    	noMoreWriting(schreiben);
    	cout<<"fertig"<<endl<<endl;
    
    }		
    
    //------------------------------------------------------------------
    //------------------------------------------------------------------
    
    // menue.cpp (Main)
    
    #include <iostream>
    #include <string>
    #include <iomanip>
    #include <fstream>
    
    using namespace std;
    
    #include "textfiles.h"
    
    int main()
    {
    
    cout << "    *****************************************************************" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                     Herzlich Willkommen                       *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *	             Ihre Auswahlmoeglichkeiten:                    *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                1.Buecher   <Anlegen>                          *" << endl;
    cout << "    *                2.Buecher   <Speichern>                        *" << endl;
    cout << "    *                3.Buecher   <Laden>                            *" << endl;
    cout << "    *                4.Autor     <Suchen>                           *" << endl;
    cout << "    *                5.Programm  <Ende>                             *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *                                                               *" << endl;
    cout << "    *****************************************************************" << endl;
    cout <<endl<<endl;	
    
    	int eingabe_m;
    	cout << "Eingabe: ";
    	cin >> eingabe_m;
    
    	switch(eingabe_m)
    {
    case 1	:	BuecherAnlegen(); break;
    case 2	:	BuecherSpeichern();break;
    case 3	:	BuecherLaden(); break;
    case 4  :   AutorSuchen(); break;
    case 5	:	cout << "Das Programm wird beendet!";
    		    cout <<endl<<endl;		
    
    }
    
    	return 0;
    }
    
    //---------------------------------------------------------------------
    //---------------------------------------------------------------------
    
    // Schnittstellendatei des Moduls 'textfiles.h'
    // textfiles.h
    
    // Öffnen eines Eingabestroms aus einer Textdatei
    // Parameter: s - Eingabestrom
    //            filename - Name der Textdatei
    // Rückgabe:  'true' bei erfolgreichem Öffnen, 'false' sonst
    bool openForReading(ifstream & s, string filename);
    //----------------------------------------------------------------------------------------------
    
    // Schließen des Eingabestroms
    // Parameter: s - Eingabestrom
    // Rückgabe:  ---
    void noMoreReading(ifstream & s);
    //----------------------------------------------------------------------------------------------
    
    // Öffnen eines Ausgabestroms in eine Textdatei
    // (existierende Textdatei wird zerstört)
    // Parameter: s - Eingabestrom
    //            filename - Name der Textdatei
    // Rückgabe:  'true' bei erfolgreichem Öffnen, 'false' sonst
    bool openForWriting(ofstream & s, string filename);
    //----------------------------------------------------------------------------------------------
    
    // Schließen des Eingabestroms
    // Parameter: s - Eingabestrom
    // Rückgabe:  ---
    void noMoreWriting(ofstream & s);
    //----------------------------------------------------------------------------------------------
    
    //Akten aus Datei einlesen
    //Parameter: Dateiname
    //Rückgabe: Anzahl Akten
    void BuecherAnlegen(void);
    //----------------------------------------------------------------------------------------------
    
    //Bücher im Schrank nach Titel sortieren
    // Parameter: ---
    // Rückgabe:  ---
    void TitelSortieren(void);
    //----------------------------------------------------------------------------------------------
    
    //Bücher im Schrank nach Autor suchen
    void AutorSuchen(void);
    //----------------------------------------------------------------------------------------------
    
    //Menü aufrufen
    void menueAufruf(void);
    //----------------------------------------------------------------------------------------------
    void BuecherSpeichern(void);
    void BuecherLaden(void);	
    void ProgrammeEnde(void);
    void BuecherAusgeben(void);
    

Anmelden zum Antworten