Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <fstream>
  4. #include <string>
  5.  
  6. using namespace std;
  7. struct Obiekt //deklaracja struktury
  8. {
  9. string wykonawca;
  10. string tytul;
  11. int liczba_utworow;
  12. string czas_nagrania;
  13. };
  14. void Dodaj(struct Obiekt Baza[], int n); //prototyp funkcji, która przyjmuje argumenty typu struct oraz int
  15. void Odczyt(struct Obiekt Baza[], int n);
  16. void Zapisz(struct Obiekt Baza[], int n);
  17. void Wyswietl_Baze();
  18.  
  19. int main()
  20. {
  21. Obiekt Plyty[150]; //tworzenie obiektu struktury o nazwie Plyty
  22. int ile;
  23. cout << "Ile plyt chcesz wprowadzic do bazy danych?\n";
  24. while (!(cin >> ile)) //pętla się powtarza, dopóki nie zostanie wprowadzona liczba
  25. {
  26. cout << "Podaj liczbe! \n";
  27. cin.clear(); //czysci flage bledu
  28. cin.ignore(); //czyści strumień z pozostałości
  29. }
  30. Dodaj(Plyty, ile); //wywolanie funkcji Dodaj z argumentami Plyty, ktory jest obiektem typu struct, oraz ile, ktory jest typu int
  31. cout << "\nWprowadzone dane: \n";
  32. Odczyt(Plyty, ile);
  33. Zapisz(Plyty, ile);
  34. cout << "\nDane w bazie: \n";
  35. Wyswietl_Baze();
  36.  
  37. return 0;
  38. }
  39.  
  40. void Dodaj(struct Obiekt Baza[], int n) //funkcja, ktora od uzytkownika pobiera dane wejsciowe dotyczace plyty
  41. {
  42. for (int i = 0; i < n; i++)
  43. {
  44. cout << "Podaj nazwe wykonawcy: ";
  45. cin >> Baza[i].wykonawca; //wprowadzenie danych typu string do obiektu struktury
  46. cout << "Podaj tytul: ";
  47. cin >> Baza[i].tytul;
  48. cout << "Liczba utworow: ";
  49. while (!(cin >> Baza[i].liczba_utworow)) //powtarzaj, dopoki Baza[i]/liczba_utworow nie bedzie liczba
  50. {
  51. cout << "Podaj liczbe!\n";
  52. cin.clear();
  53. cin.ignore();
  54. }
  55. cout << "Czas nagrania: ";
  56. while (!(cin >> Baza[i].czas_nagrania))
  57. {
  58. cout << "Podaj liczbe!\n";
  59. cin.clear();
  60. cin.ignore();
  61. }
  62. }
  63. }
  64. void Odczyt(struct Obiekt Baza[], int n) //funkcja odczytuajaca wpisane dane do konsoli
  65. {
  66. for (int i = 0; i < n; i++)
  67. {
  68. cout << "Wykonawca: " << Baza[i].wykonawca << endl;
  69. cout << "Tytul: " << Baza[i].tytul << endl;
  70. cout << "Liczba utworow: " << Baza[i].liczba_utworow << endl;
  71. cout << "Czas nagrania: " << Baza[i].czas_nagrania << endl;
  72. }
  73. }
  74. void Zapisz(struct Obiekt Baza[], int n) //funkcja zapisujaca wczytane dane do pliku "plik.txt"
  75. {
  76. fstream plik; //delklaracja zmiennej plikowej typu fstream
  77. plik.open("plik.txt", ios::app); //plik.open() otwiera plik o nazwie "plik.txt", a klasa ios::app powoduje dopisanie do pliku zawartosci
  78. if (plik.good() == true) //jesli plik zostal otworzony poprawnie
  79. {
  80. for (int i = 0; i < n; i++)
  81. {
  82. plik << "Wykonawca:" << Baza[i].wykonawca << endl; //wprowadz do pliku nazwe wykonawcy
  83. plik << "Tytul:" << Baza[i].tytul << endl;
  84. plik << "Liczba_utworow:"<< Baza[i].liczba_utworow << endl;
  85. plik << "Czas_nagrania:" << Baza[i].czas_nagrania << endl << endl;
  86. }
  87. }
  88. else //jesli nie został otworzony poprawnie, wyskoczy komunikat
  89. {
  90. cout << "Plik nie zostal otwarty prawidlowo!\n";
  91. }
  92. plik.close(); //zamknij plik
  93. }
  94. void Wyswietl_Baze()
  95. {
  96. fstream plik;
  97. string linia;
  98. plik.open("plik.txt", ios::in); //klasa ios::in pozwala na odczyt z pliku "plik.txt";
  99. if (plik.good() == true)
  100. {
  101. while (!plik.eof()) //powtarzaj petle, dopoki nie napotka konca pliku
  102. {
  103. getline(plik, linia); //pobierz wiersz z pliku
  104. cout << linia << endl; //wyświetlenie wiersza
  105. }
  106. plik.close();
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement