Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <fstream>
- #include <string>
- using namespace std;
- struct Obiekt //deklaracja struktury
- {
- string wykonawca;
- string tytul;
- int liczba_utworow;
- string czas_nagrania;
- };
- void Dodaj(struct Obiekt Baza[], int n); //prototyp funkcji, która przyjmuje argumenty typu struct oraz int
- void Odczyt(struct Obiekt Baza[], int n);
- void Zapisz(struct Obiekt Baza[], int n);
- void Wyswietl_Baze();
- int main()
- {
- Obiekt Plyty[150]; //tworzenie obiektu struktury o nazwie Plyty
- int ile;
- cout << "Ile plyt chcesz wprowadzic do bazy danych?\n";
- while (!(cin >> ile)) //pętla się powtarza, dopóki nie zostanie wprowadzona liczba
- {
- cout << "Podaj liczbe! \n";
- cin.clear(); //czysci flage bledu
- cin.ignore(); //czyści strumień z pozostałości
- }
- Dodaj(Plyty, ile); //wywolanie funkcji Dodaj z argumentami Plyty, ktory jest obiektem typu struct, oraz ile, ktory jest typu int
- cout << "\nWprowadzone dane: \n";
- Odczyt(Plyty, ile);
- Zapisz(Plyty, ile);
- cout << "\nDane w bazie: \n";
- Wyswietl_Baze();
- return 0;
- }
- void Dodaj(struct Obiekt Baza[], int n) //funkcja, ktora od uzytkownika pobiera dane wejsciowe dotyczace plyty
- {
- for (int i = 0; i < n; i++)
- {
- cout << "Podaj nazwe wykonawcy: ";
- cin >> Baza[i].wykonawca; //wprowadzenie danych typu string do obiektu struktury
- cout << "Podaj tytul: ";
- cin >> Baza[i].tytul;
- cout << "Liczba utworow: ";
- while (!(cin >> Baza[i].liczba_utworow)) //powtarzaj, dopoki Baza[i]/liczba_utworow nie bedzie liczba
- {
- cout << "Podaj liczbe!\n";
- cin.clear();
- cin.ignore();
- }
- cout << "Czas nagrania: ";
- while (!(cin >> Baza[i].czas_nagrania))
- {
- cout << "Podaj liczbe!\n";
- cin.clear();
- cin.ignore();
- }
- }
- }
- void Odczyt(struct Obiekt Baza[], int n) //funkcja odczytuajaca wpisane dane do konsoli
- {
- for (int i = 0; i < n; i++)
- {
- cout << "Wykonawca: " << Baza[i].wykonawca << endl;
- cout << "Tytul: " << Baza[i].tytul << endl;
- cout << "Liczba utworow: " << Baza[i].liczba_utworow << endl;
- cout << "Czas nagrania: " << Baza[i].czas_nagrania << endl;
- }
- }
- void Zapisz(struct Obiekt Baza[], int n) //funkcja zapisujaca wczytane dane do pliku "plik.txt"
- {
- fstream plik; //delklaracja zmiennej plikowej typu fstream
- plik.open("plik.txt", ios::app); //plik.open() otwiera plik o nazwie "plik.txt", a klasa ios::app powoduje dopisanie do pliku zawartosci
- if (plik.good() == true) //jesli plik zostal otworzony poprawnie
- {
- for (int i = 0; i < n; i++)
- {
- plik << "Wykonawca:" << Baza[i].wykonawca << endl; //wprowadz do pliku nazwe wykonawcy
- plik << "Tytul:" << Baza[i].tytul << endl;
- plik << "Liczba_utworow:"<< Baza[i].liczba_utworow << endl;
- plik << "Czas_nagrania:" << Baza[i].czas_nagrania << endl << endl;
- }
- }
- else //jesli nie został otworzony poprawnie, wyskoczy komunikat
- {
- cout << "Plik nie zostal otwarty prawidlowo!\n";
- }
- plik.close(); //zamknij plik
- }
- void Wyswietl_Baze()
- {
- fstream plik;
- string linia;
- plik.open("plik.txt", ios::in); //klasa ios::in pozwala na odczyt z pliku "plik.txt";
- if (plik.good() == true)
- {
- while (!plik.eof()) //powtarzaj petle, dopoki nie napotka konca pliku
- {
- getline(plik, linia); //pobierz wiersz z pliku
- cout << linia << endl; //wyświetlenie wiersza
- }
- plik.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement