000
21.06.2004, 22:02 Uhr
~Nervenbündel
Gast
|
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
C++: |
// 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; //------------------------------------------------------------------------- //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); } //------------------------------------------------------------------------- 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 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; } noMoreWriting(schreiben); cout<<"fertig"<<endl<<endl; }
|
|