Advertisement
MSlomiany

baza_danych_04_06_2018[FIL]

Jun 3rd, 2018
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.79 KB | None | 0 0
  1. // Baza_danych_04_06_2018[FIL].cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <iomanip>
  7. #include <fstream>
  8. #include <string>
  9. using namespace std;
  10.  
  11. struct osoba {
  12.     char nazwisko[20];
  13.     char imie[20];
  14.     long double konto;
  15. };
  16.  
  17. void utworz()
  18. {
  19.     setlocale(LC_ALL, "");
  20.     fstream baza("dane.bin", ios::binary | ios::out);
  21.     osoba dodana;
  22.     char znak;
  23.     do {
  24.         cout << "Podaj nazwisko" << endl;
  25.         cin >> dodana.nazwisko;
  26.         cout << "Podaj imię" << endl;
  27.         cin >> dodana.imie;
  28.         cout << "Podaj stan konta" << endl;
  29.         cin >> dodana.konto;
  30.         baza.write((char*)&dodana, sizeof(osoba));
  31.         cout << "Czy chcesz dodać kolejną osobę? Jeśli tak kliknij T" << endl;
  32.         cin >> znak;
  33.     } while (znak == 'T' || znak == 't');
  34.     baza.clear();
  35.     baza.close();
  36. }
  37.  
  38. void dopisz()
  39. {
  40.     setlocale(LC_ALL, "");
  41.     fstream baza("dane.bin", ios::binary | ios::app);
  42.     osoba dodana;
  43.     char znak;
  44.     do {
  45.         cout << "Podaj nazwisko" << endl;
  46.         cin >> dodana.nazwisko;
  47.         cout << "Podaj imię" << endl;
  48.         cin >> dodana.imie;
  49.         cout << "Podaj stan konta" << endl;
  50.         cin >> dodana.konto;
  51.         baza.write((char*)&dodana, sizeof(osoba));
  52.         cout << "Czy chcesz dodać kolejną osobę? Jeśli tak kliknij T" << endl;
  53.         cin >> znak;
  54.     } while (znak == 'T' || znak == 't');
  55.     baza.clear();
  56.     baza.close();
  57. }
  58.  
  59. void wypisz(int m)
  60. {
  61.     setlocale(LC_ALL, "");
  62.     fstream baza("dane.bin", ios::binary | ios::in);
  63.     osoba pom;
  64.     int i = 1;
  65.     baza.seekg((m - 1)*sizeof(osoba), ios::beg);
  66.     while (1)
  67.     {
  68.         baza.read((char*)&pom, sizeof(osoba));
  69.         if (baza.good())
  70.         {
  71.             {
  72.                 cout << "Imię: " << pom.imie << endl;
  73.                 cout << "Nazwisko: " << pom.nazwisko << endl;
  74.                 cout << "Stan konta: " << fixed << setw(15) << setprecision(3) << pom.konto << endl;
  75.             }
  76.         }
  77.         else
  78.         {
  79.             if (!baza.eof())
  80.             {
  81.                 cout << "Błąd odczytu" << endl;
  82.             }
  83.             break;
  84.         }
  85.         baza.clear();
  86.     }
  87.     baza.clear();
  88.     baza.close();
  89. }
  90.  
  91. void szukaj(osoba *maksimum)
  92. {
  93.     setlocale(LC_ALL, "");
  94.     osoba pom;
  95.     int i = 0;
  96.     fstream baza("dane.bin", ios::in | ios::binary);   
  97.     while (1)
  98.     {
  99.         baza.read((char*)&pom, sizeof(osoba));
  100.         if (baza.good())
  101.         {
  102.             i++;
  103.             if (i == 1)
  104.             {
  105.                 *maksimum = pom;
  106.             }
  107.             else
  108.             {
  109.                 if (pom.konto > maksimum->konto)
  110.                 {
  111.                     *maksimum = pom;
  112.                 }
  113.             }
  114.         }
  115.         else
  116.         {
  117.             if (!baza.eof())
  118.             {
  119.                 cout << "Błąd odczytu" << endl;
  120.             }
  121.             break;
  122.         }
  123.     }
  124.     baza.clear();
  125.     baza.close();
  126. }
  127.  
  128. void szukajidentyczne(osoba *maksimum)
  129. {
  130.     setlocale(LC_ALL, "");
  131.     osoba pom;
  132.     fstream baza("dane.bin", ios::in | ios::binary);
  133.     while (1)
  134.     {
  135.         baza.read((char*)&pom, sizeof(osoba));
  136.         if (baza.good())
  137.         {
  138.             if (pom.konto == maksimum->konto)
  139.             {
  140.                 cout << "Imię: " << pom.imie << endl;
  141.                 cout << "Nazwisko: " << pom.nazwisko << endl;
  142.                 cout << "Stan konta: " << fixed << setw(15) << setprecision(3) << pom.konto << endl;
  143.             }
  144.         }
  145.         else
  146.         {
  147.             if (!baza.eof())
  148.             {
  149.                 cout << "Błąd odczytu" << endl;
  150.             }
  151.             break;
  152.         }
  153.     }
  154.     baza.clear();
  155.     baza.close();
  156. }
  157.  
  158. void zapisz(long double m)
  159. {
  160.     setlocale(LC_ALL, "");
  161.     osoba pom;
  162.     int i = 0;
  163.     fstream baza("dane.bin", ios::in | ios::binary);
  164.     fstream wynik("wynik.txt", ios::out);
  165.     while (1)
  166.     {
  167.         baza.read((char*)&pom, sizeof(osoba));
  168.         if (baza.good())
  169.         {
  170.             if (pom.konto >= m)
  171.             {
  172.                 wynik << "Imię: " << pom.imie << endl;
  173.                 wynik << "Nazwisko: " << pom.nazwisko << endl;
  174.                 wynik << "Stan konta: " << fixed << setw(15) << setprecision(3) << pom.konto << endl;
  175.                 cout << "Imię: " << pom.imie << endl;
  176.                 cout << "Nazwisko: " << pom.nazwisko << endl;
  177.                 cout << "Stan konta: " << fixed << setw(15) << setprecision(3) << pom.konto << endl;
  178.             }
  179.         }
  180.         else
  181.         {
  182.             if (!baza.eof())
  183.             {
  184.                 cout << "Błąd odczytu" << endl;
  185.             }
  186.             break;
  187.         }
  188.     }
  189.     baza.clear();
  190.     baza.close();
  191. }
  192.  
  193. int main()
  194. {
  195.     setlocale(LC_ALL, "");
  196.     int a, b;
  197.     long double c;
  198.     osoba pom;
  199.     cout << "Wybierz opcję" << endl;
  200.     cout << "1. Utwórz bazę od nowa" << endl;
  201.     cout << "2. Dopisz do bazy" << endl;
  202.     cout << "3. Wyświetl dane z bazy od numeru podanego przez użytkownika" << endl;
  203.     cout << "4. Wyświetl dane osoby o największym stanie konta" << endl;
  204.     cout << "5. Zapisz do pliku tekstowego wyszukani.txt osoby o stanie konta wyższym od podanego progu" << endl;
  205.     cout << "Wybrana opcja: ";
  206.     cin >> a;
  207.     switch (a)
  208.     {
  209.     case 1:
  210.         utworz();
  211.         break;
  212.     case 2:
  213.         dopisz();
  214.         break;
  215.     case 3:
  216.         cout << "Podaj numer rekordu od którego rozpocząć wypisywanie: ";
  217.         cin >> b;
  218.         wypisz(b);
  219.         break;
  220.     case 4:
  221.         szukaj(&pom);
  222.         szukajidentyczne(&pom);
  223.         break;
  224.     case 5:
  225.         cout << "Podaj próg od którego zacząć wypisywanie" << endl;
  226.         cin >> c;
  227.         zapisz(c);
  228.         break;
  229.     default:
  230.         cout << "Podałeś zły numer" << endl;
  231.         break;
  232.     }
  233.     system("PAUSE");
  234.     return 0;
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement