- #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;
- }