#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Data {
int dzien;
int miesiac;
int rok;
Data(int dzien1, int miesiac1, int rok1) :dzien(dzien1), miesiac(miesiac1), rok(rok1) {};
void Wypisz() {
cout << dzien << "-" << miesiac << "-" << rok << endl;
}
};
struct utwor
{
string nazwa_utworu;
utwor *nastepny;
};
struct album
{
string nazwa;
float cena;
album * nastepny;
utwor *wskaznik_utwory;
Data data;
album(string nazwa1, int cena1, int dzien1, int miesiac1, int rok1) :wskaznik_utwory(NULL),nastepny(NULL), nazwa(nazwa1), cena(cena1), data(Data(dzien1, miesiac1, rok1)) {};
};
struct wykonawca {
string imie;
string nazwisko;
album * wydane_albumy;
wykonawca * nastepny;
wykonawca(string imie1, string nazwisko1) : imie(imie1),wydane_albumy(NULL),nastepny(NULL), nazwisko(nazwisko1) {};
void Danewykonawycy() {
cout << nazwisko << endl;
cout << imie << endl;
}
};
void dodanie_albumu(album * wskaznik, string nazwa,int cena,int dzien,int miesiac,int rok)
{
if (wskaznik == NULL) {
wskaznik = new album(nazwa,cena,dzien,miesiac,rok);
return;
}
album* wskaznik1 = wskaznik;
while (wskaznik1->nastepny != NULL)
{
wskaznik1 = wskaznik1->nastepny;
}
wskaznik1->nastepny = new album(nazwa, cena, dzien, miesiac, rok);
cout << "dodano " << nazwa << endl;
//sortowanie_albumow(wskaznik);
}
void nazwa_pliku(string &nazwa_pliku)
{
cout << "podaj nazwę pliku albo wciśnij n jesli chcesz stworzyc nowa baze danych " << endl;
cin >> nazwa_pliku;
}
bool otwarcie_pliku(const string nazwa, ifstream &plik1)
{
plik1.open(nazwa);
if (plik1.good() == true && plik1.is_open())
{
cout << "udało sie" << endl;
return true;
}
else
{
cout << "Otwieranie pliku się nie powiodło!";
return false;
}
}
//void sortowanie_albumow(album *&wskaznik)
//{
// album * wskaz = wskaznik;
// if (wskaznik->nastepny != NULL)
// {
// if (wskaznik->nastepny->nazwa < wskaznik->nazwa)
// {
// album * wskaz = wskaznik;
// wskaz = wskaz->nastepny;
// wskaznik->nastepny = wskaznik->nastepny->nastepny;
// wskaz->nastepny = wskaznik;
// wskaznik = wskaz;
// }
// }
// else
// {
// return;
// }
// album * wskaznik1 = wskaznik;
// while (wskaznik1->nastepny->nastepny != NULL)
// {
// if (wskaznik1->nastepny->nastepny->nazwa < wskaznik1->nastepny->nazwa)
// {
// wskaz = wskaznik1;
// wskaz = wskaz->nastepny;
// wskaznik1->nastepny = wskaznik1->nastepny->nastepny;
// wskaz->nastepny = wskaz->nastepny->nastepny;
// wskaznik1->nastepny->nastepny = wskaz;
// wskaznik1->nastepny->nastepny = wskaz;
// sortowanie_albumow(wskaznik);
// }
// else
// {
// wskaznik1 = wskaznik1->nastepny;
// }
// }
//}
//void sortowanie_wykonawcow(wykonawca * & wskaznik) {
// wykonawca * wskaznik2 = wskaznik;
// if (wskaznik != NULL && wskaznik->nastepny != NULL) {
// if (wskaznik->nastepny->nazwisko < wskaznik->nazwisko) {
// wykonawca * wskaznik2 = wskaznik;
// wskaznik2 = wskaznik2->nastepny;
// wskaznik->nastepny = wskaznik->nastepny->nastepny;
// wskaznik2->nastepny = wskaznik;
// wskaznik = wskaznik2;
// }
// }
// else {
// return;
// }
// wykonawca * wskaznik1 = wskaznik;
// while (wskaznik1->nastepny->nastepny != NULL) {
// if (wskaznik1->nastepny->nastepny->nazwisko < wskaznik1->nastepny->nazwisko) {
// wskaznik2 = wskaznik1;
// wskaznik2 = wskaznik2->nastepny;
// wskaznik1->nastepny = wskaznik1->nastepny->nastepny;
// wskaznik2->nastepny = wskaznik2->nastepny->nastepny;
// wskaznik1->nastepny->nastepny = wskaznik2;
// sortowanie_wykonawcow(wskaznik);
// }
// else
// {
// wskaznik1 = wskaznik1->nastepny;
// }
// }
//
//}
//
//void sortowanie_wykonawcow( wykonawca* & wskaznik) {
// wykonawca * wskaznik2 = wskaznik;
// if (wskaznik != NULL && wskaznik->nastepny != NULL) {
// if (wskaznik->nastepny->nazwisko < wskaznik->nazwisko) {
// wykonawca * wskaznik2 = wskaznik;
// wskaznik2 = wskaznik2->nastepny;
// wskaznik->nastepny = wskaznik->nastepny->nastepny;
// wskaznik2->nastepny = wskaznik;
// wskaznik = wskaznik2;
// }
// }
// else {
// return;
// }
// wykonawca * wskaznik1 = wskaznik;
// while (wskaznik1->nastepny->nastepny != NULL) {
// if (wskaznik1->nastepny->nastepny->nazwisko < wskaznik1->nastepny->nazwisko) {
// wskaznik2 = wskaznik1;
// wskaznik2 = wskaznik2->nastepny;
// wskaznik1->nastepny = wskaznik1->nastepny->nastepny;
// wskaznik2->nastepny = wskaznik2->nastepny->nastepny;
// wskaznik1->nastepny->nastepny = wskaznik2;
// sortowanie_wykonawcow(wskaznik);
// }
// else
// {
// wskaznik1 = wskaznik1->nastepny;
// }
// }
//
//}
//void wyswietl_albumy(album* & wskaznik) {
// album * wskaznik1 = wskaznik;
// cout << endl;
// while (wskaznik != NULL) {
// cout << wskaznik->nazwa << endl;
// while(wskaznik!=NULL)
// cout << "utwory" << wskaznik->utwory << endl;;
// cout << "cena " << wskaznik->cena << endl;
// wskaznik = wskaznik->nastepny;
// cout << endl;
// }
// wskaznik = wskaznik1;
//}
//void wyswietl_wykonawcow(wykonawca* & wskaznik) {
// wykonawca * wskaznik1 = wskaznik;
// cout << endl;
// while (wskaznik1 != NULL) {
// cout << wskaznik1->nazwisko << endl;
// cout << wskaznik1->imie << endl;
// wyswietl_albumy(wskaznik1->wydane_albumy);
// wskaznik1 = wskaznik1->nastepny;
// cout << endl;
// }
//}
//void dodaj_album_z_pliku(album * &muzyka, string nazwa, string utwory, int cena) {
// if (muzyka == NULL) {
// muzyka = new album(nazwa,utwory, cena);
// return;
// }
// album * muzyka1 = muzyka;
// while (muzyka->nastepny != NULL) {
// muzyka = muzyka->nastepny;
// }
// muzyka->nastepny = new album(nazwa,utwory,cena);
// muzyka = muzyka1;
//}
void dodaj_wykonawce(wykonawca * & lista, string nazwisko, string imie) {
if (lista == NULL) {
cout << "dodano " << imie << nazwisko << endl;
lista = new wykonawca(nazwisko, imie);
return;
}
wykonawca* lista1 = lista;
while (lista1->nastepny != NULL)
{
lista1 = lista1->nastepny;
}
lista1->nastepny = new wykonawca(nazwisko, imie);
cout << "dodano " << imie << nazwisko << endl;
//sortowanie_wykonawcow(lista);
}
void dodaj_album_do_wykonawcy(wykonawca *&wskaznik, string imie, string nazwisko, string nazwa1, int cena, int dzien, int miesiac, int rok)
{
if (wskaznik == NULL)
{
return;
}
if (wskaznik->imie == imie && wskaznik->nazwisko == nazwisko)
{
dodanie_albumu(wskaznik->wydane_albumy,nazwa1,cena,dzien,miesiac,rok);
}
wykonawca *wskaznik1 = wskaznik;
while (wskaznik1->nastepny = NULL)
{
if (wskaznik1->nastepny->imie == imie && wskaznik1->nastepny->nazwisko == nazwisko)
dodanie_albumu(wskaznik1->wydane_albumy, nazwa1, cena, dzien, miesiac, rok);
else
wskaznik1 = wskaznik1->nastepny;
}
}
void czytaj_z_pliku(wykonawca * & wykonawca1, ifstream & plik)
{ wykonawca *wskaznik1 = wykonawca1;
string słowo, nazwa1, nazwisko, imie, utwor1;
int cena, dzien, miesiac, rok;
while (plik) {
słowo = " ";
plik >> słowo;
if (słowo == "Wykonawca") {
plik >> imie;
plik >> nazwisko;
dodaj_wykonawce(wykonawca1, nazwisko, imie);
}
else if (słowo == "Album") {
cout << "jesr" << endl;
plik >> nazwa1;
plik >> cena;
plik >> dzien;
plik >> miesiac;
plik >> rok;
dodaj_album_do_wykonawcy(wykonawca1,imie,nazwisko,nazwa1,cena,dzien,miesiac,rok);
/* while (słowo3 == "Utwor")
{
plik >> utwor1;
}
*/
cout << endl;
}
}
}
void wyswietl_utwory(utwor *& wskaznik)
{
utwor * wskaznik1 = wskaznik;
while (wskaznik1 != NULL)
{
cout << wskaznik1->nazwa_utworu << endl;
wskaznik1 = wskaznik1->nastepny;
}
}
void wyswietl_albumy(album *& wskaznik)
{
album * wskaznik1 = wskaznik;
while (wskaznik1 != NULL)
{
cout << wskaznik1->nazwa<<" "<<wskaznik1->cena<<" "<< wskaznik1->data.dzien<<" "<<wskaznik1->data.miesiac<<" "<<wskaznik1->data.rok<< endl;
wyswietl_utwory(wskaznik1->wskaznik_utwory);
wskaznik1 = wskaznik1->nastepny;
}
}
void wyswietl_wykonawcy(wykonawca *& wskaznik)
{
wykonawca * wskaznik1 = wskaznik;
while (wskaznik1 != NULL)
{
cout << " " << wskaznik1->imie << " " << wskaznik1->nazwisko << endl;
wyswietl_albumy(wskaznik1->wydane_albumy);
wskaznik1 = wskaznik1->nastepny;
}
}
int main()
{
ifstream plik_do_odczytu;
string cos;
wykonawca * wykonawca1 = NULL;
nazwa_pliku(cos);
bool otwarcie_pliku1;
otwarcie_pliku1 = otwarcie_pliku(cos, plik_do_odczytu);
if (cos == "q" || otwarcie_pliku1) {
if (otwarcie_pliku1) {
czytaj_z_pliku(wykonawca1,plik_do_odczytu);
}
}
wyswietl_wykonawcy(wykonawca1);
wyswietl_albumy(wykonawca1->wydane_albumy);
system("pause");
return 0;
}