#include #include #include 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<<" "<cena<<" "<< wskaznik1->data.dzien<<" "<data.miesiac<<" "<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; }