Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.61 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <fstream>
  4. #include <cstring>
  5.  
  6. using namespace std;
  7.  
  8. struct Dosoby
  9. {
  10.     char nazwisko[40];
  11.     int wiek;
  12.     char miejscowosc[40];
  13.     char zainteresowania[40];
  14.     void wczytaj(){
  15.         cout<<"podaj nazwisko: "<<endl;
  16.         cin>>nazwisko;
  17.         cout<<"podaj wiek: "<<endl;
  18.         cin>>wiek;
  19.         cout<<"podaj miejscowosc: "<<endl;
  20.         cin>>miejscowosc;
  21.         cout<<"podaj zainteresowania: "<<endl;
  22.         cin.sync();
  23.         cin.getline(zainteresowania,40);
  24.     }
  25.     void wypisz(){
  26.         cout<<"podaj nazwisko:" << nazwisko<<endl;
  27.         cout<<"podaj wiek:" <<wiek<<endl;
  28.         cout<<"podaj miejscowosc: "<<miejscowosc<<endl;
  29.         cout<<"podaj zainteresowania: "<<zainteresowania<<endl;
  30.     }
  31. };
  32.  int liczbarekordow()
  33. {
  34.     Dosoby osoby;
  35.  
  36.     ifstream baza("plik.bin",ios::binary);
  37.     if(!baza.good()){
  38.         cout << "Nie moge otworzyc bazy"<<endl;
  39.         return 0;
  40.     }
  41.     int i = 0;
  42.     while(true){
  43.         baza.read(reinterpret_cast<char*>(&osoby),sizeof(osoby));
  44.         if(baza.eof()){
  45.                 break;
  46.         };
  47.         ++i;
  48.     }
  49.  
  50.     baza.close();
  51.     return i;
  52. }
  53.  
  54. void dodawanie()
  55. {
  56.  
  57. Dosoby osoby;
  58. osoby.wczytaj();
  59. osoby.wypisz();
  60. ofstream baza("plik.bin", ios::binary|ios::app);
  61. baza.write(reinterpret_cast<char*>(&osoby),sizeof(osoby));
  62. baza.close();
  63. }
  64.  
  65. void wyswietlenie()
  66. {
  67.     Dosoby osoby;
  68.  
  69.     ifstream baza("plik.bin",ios::binary);
  70.     if(!baza.good()){
  71.         cout << "Nie moge otworzyc bazy"<<endl;
  72.         return;
  73.     }
  74.     for(int i=1;;i++){
  75.         baza.read(reinterpret_cast<char*>(&osoby),sizeof(osoby));
  76.         if(baza.eof()){
  77.                 break;
  78.         };
  79.         cout<<i<<endl;
  80.         osoby.wypisz();
  81.     }
  82.  
  83.     baza.close();
  84. }
  85. void usuniecie()
  86. {
  87.  
  88.     int ile=liczbarekordow();
  89.     wyswietlenie();
  90.     if(ile>0)
  91.     {
  92.         Dosoby usun;
  93.         Dprodukt tmp;
  94.  
  95.         fstream plik;
  96.         plik.open("plik.bin", ios::binary | ios::in);
  97.         if(plik.is_open())
  98.         {
  99.             int wybor = - 1;
  100.             cout<<"Podaj numer produktu ktory chcesz usunac \n";
  101.  
  102.             do
  103.             {
  104.                 cin.clear();
  105.                 cin.sync();
  106.             }while(!(cin>>wybor) || wybor < 0 || wybor > ile);
  107.             if (wybor == 0 || wybor<0 || wybor > ile)
  108.             {
  109.                 plik.close();
  110.                 return;
  111.  
  112.             }
  113.             plik.seekp(sizeof(struct Dprodukt)*(wybor-1), ios::beg);
  114.             plik.read(reinterpret_cast<char*>(&usun),sizeof(usun));
  115.             plik.seekp(ios::beg);
  116.  
  117.             fstream kopia;
  118.             kopia.open ("osoby.bin.kopia", ios :: binary | ios::in | ios :: out | ios::trunc);
  119.  
  120.             while(true)
  121.             {
  122.                 plik.read(reinterpret_cast<char*>(&tmp), sizeof(tmp));
  123.                 if (plik.eof())
  124.                 {
  125.                     plik.close ();
  126.                         plik.open ( "plik.bin", ios::binary | ios::out | ios::trunc );
  127.                         kopia.seekp ( ios::beg );
  128.                         break;
  129.                 }
  130.                 else if (!strcmp(usun.nazwisko,tmp.nazwisko) == 0)
  131.                 {
  132.                     kopia.write(reinterpret_cast<char*>(&tmp),sizeof(tmp));
  133.                 }
  134.             }
  135.             while(true)
  136.             {
  137.                 kopia.read(reinterpret_cast<char*>(&tmp),sizeof(tmp));
  138.                 if(kopia.eof())
  139.                 {
  140.                     plik.close();
  141.                     kopia.close();
  142.                     remove("osoby.bin.kopia");
  143.                     if(liczbarekordow()<=0) remove ("plik.bin");
  144.                     break;
  145.                 }
  146.                 plik.write(reinterpret_cast<char*>(&tmp),sizeof(tmp));
  147.             }
  148.             cout<<"usunieto osoby"<<endl;
  149.          }
  150.          else
  151.          {
  152.             cout<<"Blad otwarcia pliku"<<endl;
  153.          }
  154.  
  155.     }
  156. }
  157.  
  158.  
  159. int main()
  160. {
  161.     bool do_exit = false;
  162.     do{
  163.         cout<<"*************** HURTOWNIA *******************"<<endl;
  164.         cout<<"1. Dodanie produktu"<<endl;
  165.         cout<<"2. Usuniecie produktu"<<endl;
  166.         cout<<"3. Wyswietlenie bazy hurtownii"<<endl;
  167.  
  168.         cout<<"0. Exit"<<endl;
  169.         int n;
  170.         cout<<endl;
  171.         cout<<"Podaj opcje"<<endl;
  172.         cin>>n;
  173.         switch(n){
  174.             case 1:
  175.             dodawanie();
  176.             break;
  177.  
  178.             case 2:
  179.             usuniecie();
  180.             break;
  181.  
  182.             case 3:
  183.             wyswietlenie();
  184.             break;
  185.  
  186.  
  187.         }
  188.     }while(!do_exit);
  189.  
  190.     system ("pause");
  191.     return 0;
  192.  
  193.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement