Czy ktoś mogłby pomoc mam problem z ponizszym kodem nie wiem czemu nie zapisuje do pliku itd .
Program ma dopisywac ksiazki do listy oraz zapisywac do pliku txt.
//
// main.cpp
// iBiblioteka2
//
// Created by Bogdan Budnik on 11-05-15.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#include <iostream>
#include <stdlib.h>
#include <string>
#include <fstream>
#include <vector>
#include <algorithm>
#include <list>
#include <cstdio>
using namespace std;
//////////////////////////////////////////////////////////////////////////////////////////////////////
class Ksiazka
{
private:
string autor; //autor kiazki
string tytul; //tytul ksiazki
int numer; //numer katalogowy
string data; //data wyporzyczenia ()
int stan; //0 - dostepna, 1 - wypozyczona
public:
Ksiazka () {}
Ksiazka (string a, string t, int n, string d, int s = 0);
string OdczytAutor ();
string OdczytTytul ();
int OdczytNumer ();
string OdczytData ();
int OdczytStan ();
void Zmiana_stanu ();
friend int operator== (Ksiazka a, Ksiazka b);
friend int operator< (Ksiazka a, Ksiazka b);
void Wczytaj (istream& we, bool r = false);
void Wypisz (ostream &wy, bool r = false);
friend istream& operator>> (istream& we, Ksiazka &k);
friend ostream& operator<< (ostream& wy, Ksiazka k);
};
//////////////////////////////////////////////////////////////////////////////////////////////////////
class Ksiazki
{
private:
vector <Ksiazka> baza;
vector <Ksiazka>::iterator i;
public:
Ksiazki ();
void Wypisz ();
void Dodaj (Ksiazka a);
void Usun (Ksiazka a);
void Edytuj (int numer);
void Zmien (int numer); //zmiana stanu
Ksiazka Szukaj (int numer);
void Szukaj (string autor, vector<Ksiazka> &temp);
~Ksiazki ();
};
//////////////////////////////////////////////////////////////////////////////////////////////////////
using namespace std;
Ksiazka::Ksiazka (string a, string t, int n, string d, int s)
{
autor = a;
tytul = t;
numer = n;
data = d;
stan = s;
}
string Ksiazka::OdczytAutor ()
{
return autor;
}
string Ksiazka::OdczytTytul ()
{
return tytul;
}
int Ksiazka::OdczytNumer ()
{
return numer;
}
string Ksiazka::OdczytData ()
{
return data;
}
int Ksiazka::OdczytStan ()
{
return stan;
}
void Ksiazka::Zmiana_stanu ()
{
if (stan == 1) stan = 0;
else stan = 1;
}
void Ksiazka::Wczytaj (istream &we, bool r)
{
autor = "";
tytul = "";
numer = 0;
data = "";
stan = 0;
char temp [601];
if (r) cout << "Podaj imie i nazwisko autora:\t";
we.getline (temp, 300);
autor = temp;
if (r) cout << "Podaj tytul ksiazki:\t";
we.getline (temp, 300);
tytul = temp;
if (r) cout << "Podaj numer katalogowy:\t";
we >> numer;
we.ignore ();
if (r) cout << "Podaj date wprowadzenia:\t";
we >> data;
if (r) stan = 0;
else
{
we >> stan;
we.ignore ();
}
}
void Ksiazka::Wypisz (ostream &wy, bool r)
{
if (r) cout << "Imie i nazwisko autora:\t";
wy << autor << endl;
if (r) cout << "Tytul ksiazki:\t";
wy << tytul << endl;
if (r) cout << "Numer katalogowy:\t";
wy << numer << endl;
if (r) cout << "Data wprowadzenia:\t";
wy << data << endl;
if (r)
{
if (stan == 0) cout << "Ksiazka dostepna\n";
else cout<< "Ksiazka wypozyczona\n";
}
else wy << stan << endl;
}
istream& operator>> (istream& we, Ksiazka &k)
{
k.Wczytaj (we, true);
return we;
}
ostream& operator<< (ostream& wy, Ksiazka k)
{
k.Wypisz (wy, true);
return wy;
}
int operator== (Ksiazka a, Ksiazka b)
{
if (a.numer != 0 && b.numer != 0)
{
if (a.numer == b.numer) return 1;
}
else
{
if (a.autor == b.autor) return 1;
}
return 0;
}
int operator< (Ksiazka a, Ksiazka b)
{
if (a.numer < b.numer) return 1;
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
using namespace std;
Ksiazki::Ksiazki ()
{
Ksiazka a;
ifstream plik ("/Users/bogdanbudnik/Desktop/Dane/iBiblioteka2/iBiblioteka2/ksiazki.txt");
while (!plik.eof ())
{
a.Wczytaj (plik);
if (a.OdczytNumer () != 0) baza.push_back (a);
}
plik.close ();
}
void Ksiazki::Wypisz ()
{
for (i = baza.begin () ; i < baza.end () ; i++)
cout << *i << endl;
}
void Ksiazki::Dodaj (Ksiazka a)
{
baza.push_back (a);
cout << "Ksiazka wprowadzona\n";
}
void Ksiazki::Zmien (int numer)
{
Ksiazka a ("", "", numer, "");
i = find (baza.begin (), baza.end (), a);
if (i != baza.end ()) i -> Zmiana_stanu ();
}
void Ksiazki::Usun (Ksiazka a)
{
i = find (baza.begin (), baza.end (), a);
if (i != baza.end ())
{
baza.erase (i);
cout << "Ksiazka usunieta z bazy!\n";
}
else cout << "Nie ma w bazie ksiazki o takich danych!\n";
}
void Ksiazki::Edytuj (int numer)
{
Ksiazka t ("", "", numer, "");
i = find (baza.begin (), baza.end (), t);
if (i != baza.end ())
{
cin >> *i;
cout << "Ksiazka zmodyfikowany!\n";
}
else cout << "Nie ma w bazie ksiazki o takich danych!\n";
}
Ksiazka Ksiazki::Szukaj (int numer)
{
Ksiazka t ("", "", numer, "");
i = find (baza.begin (), baza.end (), t);
if (i != baza.end ())
{
return *i;
}
else
{
cout << "Nie ma w bazie ksiazki o takich danych!\n";
Ksiazka z ("", "", 0, "");
return z;
}
}
void Ksiazki::Szukaj (string autor, vector<Ksiazka> &temp)
{
Ksiazka t (autor, "", 0, "");
temp.clear ();
i = find (baza.begin (), baza.end (), t);
while (i != baza.end ())
{
temp.push_back (*i);
i = find (i + 1, baza.end (), t);
}
}
Ksiazki::~Ksiazki ()
{
ofstream plik ("/Users/bogdanbudnik/Desktop/Dane/iBiblioteka2/iBiblioteka2/ksiazki.txt");
for (i = baza.begin (); i < baza.end () ; i++)
{
i->Wypisz (plik);
}
plik.close ();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
int main (int argc, const char * argv[]) {
int menu;
do{
cout<<"##########################################################"<<endl;
cout<<"############# MENU ###################"<<endl;
cout<<"##########################################################"<<endl;
cout<<"########## AUTOR: BOGDAN BUDNIKK WSKSIM ################"<<endl;
cout<<"##########################################################"<<endl<<endl<<endl;
cout<<"##########################################################"<<endl;
cout<<"WPROWADZ JEDNA Z PODANYCH OPCJI:"<<endl;
cout<<"##########################################################"<<endl;
cout<<"1 -DODAJ KSIAZKE DO BAZY"<<endl;
cout<<"2 -Pokaz liste"<<endl;
cout<<"3 -EDYTUJ"<<endl;
cout<<"4 -USUN"<<endl;
cout<<"5 -SZUKAJ W BAZIE PO NUMERZE"<<endl;
cout<<"5 -SZUKAJ W BAZIE PO AUTORZE"<<endl;
cout<<"##########################################################"<<endl<<endl<<endl;
Ksiazka a;
Ksiazki ksiaze;
cin>>menu;
switch(menu){
case 1:
cin>> a;
cin.ignore ();
ksiaze.Dodaj(a);
break;
case 2:
ksiaze.Wypisz();
break;
default: break;
}
}while (menu!=0);
return 0;}