Witam! Mam do napisania program, który m.in. z pliku tekstowego będzie wyświetlał listę,dodawał elementy itp., czyli w tym przypadku dane o płytach dvd. Wszystko było by ok, gdyby nie to, że program nieprawidłowo wyświetla mi dane z pliku. Wyświetla pojedyncze wyrazy a nie całe linijki. Podobnie przy dodawaniu elementów do listy. Nie piszcie tylko, trzeba użyć getline() czy coś w tym stylu, bo próbowałm to ogarnąć, ale mi nie idzie. Proszę o konkretną pomoc, jak konkretnie w kodzie użyć tego by wszystko działało.
Tu są dane, jakie miałam w pliku dvd.txt :
Ogniem i mieczem
Jerzy Hoffman
Izabella Scorupco
Michał Żebrowski
Aleksandr Domogarow
1999
Pan Tadeusz
Andrzej Wajda
Bogusław Linda
Michał Żebrowski
Daniel Olbrychski
1999
Potop
Jerzy Hoffman
Daniel Olbrychski
Małgorzata Braunek
Tadeusz Łomnicki
1974
Pan Wołodyjowski
Jerzy Hoffman
Tadeusz Łomnicki
Magdalena Zawadzka
Daniel Olbrychski
1969
A tu kod mojego programu:
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;
struct dvd
{string tytul;
string rezyser;
string aktor1;
string aktor2;
string aktor3;
int rok;};
typedef struct element
{ struct dvd p;
struct element *next;
}Element;
typedef Element *Lista;
void logowanie(string login, string haslo)
{
}
void wyswietl(Lista a)
{//UWAGA! Działać ma na liście, nie tylko na pliku!
cout<<"\n";
while(a)
{
cout<<(a->p).tytul<<endl;
cout<<(a->p).rezyser<<endl;
cout<<(a->p).aktor1<<endl;
cout<<(a->p).aktor2<<endl;
cout<<(a->p).aktor3<<endl;
cout<<(a->p).rok<<endl;
a=a->next;
cout<<"\n";
}
}
Lista dodaj_ost(struct dvd a, Lista b)
{
Lista p;
Lista pocz=b;
p=new Element;
p->p=a;
p->next=NULL;
if(!b)
return p;
Lista c;
while(b)
{
c=b;
b=b->next;
} c->next=p;
return pocz;
}
Lista przenies(Lista b)//funkcja przenosi elementy z pliku na liste
{
struct dvd z;
ifstream plik;
plik.open("dvd.txt");
if(!plik)
{
cout<<"Blad otwarcia pliku\n";
return b;
}
while(plik.good())
{
{plik>>z.tytul;
plik>>z.rezyser;
plik>>z.aktor1;
plik>>z.aktor2;
plik>>z.aktor3;
plik>>z.rok;
}
b=dodaj_ost(z,b);//dodaje element z pliku na koniec listy
}return b;
}
void przenies2(Lista b)//zapisuje liste w pliku
{
ofstream plik("listazap.txt");
while(b)
{
plik<<(b->p).tytul<<endl;
plik<<(b->p).rezyser<<endl;
plik<<(b->p).aktor1<<endl;
plik<<(b->p).aktor2<<endl;
plik<<(b->p).aktor3<<endl;
plik<<(b->p).rok<<endl;
b=b->next;
}}
int main()
{Lista b=NULL; int x; struct dvd z;
cout<<"Witaj w wyszukiwarce plyt DVD!\n";
//Logowanie,jeszce do zrobienia, jeśli poprawnie się zaloguje to idziemy do while, a jak nie to nadal próbujemy się logować
b=przenies(b);
while(1)
{ cout<<"\n";
cout<<"\n";
cout<<"Aby kontynuowac wybierz numer zadania, jakie chcesz wykonac:\n";
cout<<endl;
cout<<"0-Wyszukaj dane o filmie przy pomocy tytulu\n";//nie koniecznie
cout<<"1-Wyszukaj filmy podanego rezysera\n";//sortowanie wg rezysera (?)
cout<<"2-Wyszukaj filmy, w ktorych gral dany aktor\n";
cout<<"3-Wyszukaj filmy z danego przedzialu czasowego\n";
cout<<"4-Wyswietl wszystkie filmy\n";
cout<<"5-Dodaj film do bazy\n";
cout<<"6- Usun film z bazy\n"; //Wykonalne tylko dla administratora
cout<<"7-Edytuj dane o filmie\n"; //Wykonalne tylko dla administratora
cout<<"8-Zmien haslo\n";
cout<<"9-Dodaj uzytkownika\n"; //Wykonalne tylko dla administratora
cout<<"10-Usun uztkownika\n"; //Wykonalne tylko dla administratora
cout<<"11-Zakoncz program\n\n";
cin>>x;
switch(x)
{ case 0:break;
case 1:break;
case 2:break;
case 3:break;
case 4:{wyswietl(b);break;}
case 5:{ cout<<"Podaj tytul:\n";
cin>>z.tytul;
cout<<"Podaj imie i nazwisko rezysera:\n";
cin>>z.rezyser;
cout<<"Podaj imie i nazwisko aktora, grajacego w filmie:\n";
cin>>z.aktor1;
cout<<"Podaj imie i nazwisko aktora, grajacego w filmie:\n";
cin>>z.aktor2;
cout<<"Podaj imie i nazwisko aktora, grajacego w filmie:\n";
cin>>z.aktor3;
cout<<"Podaj rok premiery filmu:\n";
cin>>z.rok;
b=dodaj_ost(z,b); break;}
case 6:break;
case 7:break;
case 8:break;
case 9:break;
case 10:break;
case 11:przenies2(b);return 0;
default:cout<<"\nPodaj poprawny numer zadania"; break;
//Zapisz listę w pliku, zapisz dane o uzytkownikach w pliku
}
}
}
}