Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <fstream>
- #include <cstring>
- using namespace std;
- struct Dosoby
- {
- char nazwisko[40];
- int wiek;
- char miejscowosc[40];
- char zainteresowania[40];
- void wczytaj(){
- cout<<"podaj nazwisko: "<<endl;
- cin>>nazwisko;
- cout<<"podaj wiek: "<<endl;
- cin>>wiek;
- cout<<"podaj miejscowosc: "<<endl;
- cin>>miejscowosc;
- cout<<"podaj zainteresowania: "<<endl;
- cin.sync();
- cin.getline(zainteresowania,40);
- }
- void wypisz(){
- cout<<"podaj nazwisko:" << nazwisko<<endl;
- cout<<"podaj wiek:" <<wiek<<endl;
- cout<<"podaj miejscowosc: "<<miejscowosc<<endl;
- cout<<"podaj zainteresowania: "<<zainteresowania<<endl;
- }
- };
- int liczbarekordow()
- {
- Dosoby osoby;
- ifstream baza("plik.bin",ios::binary);
- if(!baza.good()){
- cout << "Nie moge otworzyc bazy"<<endl;
- return 0;
- }
- int i = 0;
- while(true){
- baza.read(reinterpret_cast<char*>(&osoby),sizeof(osoby));
- if(baza.eof()){
- break;
- };
- ++i;
- }
- baza.close();
- return i;
- }
- void dodawanie()
- {
- Dosoby osoby;
- osoby.wczytaj();
- osoby.wypisz();
- ofstream baza("plik.bin", ios::binary|ios::app);
- baza.write(reinterpret_cast<char*>(&osoby),sizeof(osoby));
- baza.close();
- }
- void wyswietlenie()
- {
- Dosoby osoby;
- ifstream baza("plik.bin",ios::binary);
- if(!baza.good()){
- cout << "Nie moge otworzyc bazy"<<endl;
- return;
- }
- for(int i=1;;i++){
- baza.read(reinterpret_cast<char*>(&osoby),sizeof(osoby));
- if(baza.eof()){
- break;
- };
- cout<<i<<endl;
- osoby.wypisz();
- }
- baza.close();
- }
- void usuniecie()
- {
- int ile=liczbarekordow();
- wyswietlenie();
- if(ile>0)
- {
- Dosoby usun;
- Dprodukt tmp;
- fstream plik;
- plik.open("plik.bin", ios::binary | ios::in);
- if(plik.is_open())
- {
- int wybor = - 1;
- cout<<"Podaj numer produktu ktory chcesz usunac \n";
- do
- {
- cin.clear();
- cin.sync();
- }while(!(cin>>wybor) || wybor < 0 || wybor > ile);
- if (wybor == 0 || wybor<0 || wybor > ile)
- {
- plik.close();
- return;
- }
- plik.seekp(sizeof(struct Dprodukt)*(wybor-1), ios::beg);
- plik.read(reinterpret_cast<char*>(&usun),sizeof(usun));
- plik.seekp(ios::beg);
- fstream kopia;
- kopia.open ("osoby.bin.kopia", ios :: binary | ios::in | ios :: out | ios::trunc);
- while(true)
- {
- plik.read(reinterpret_cast<char*>(&tmp), sizeof(tmp));
- if (plik.eof())
- {
- plik.close ();
- plik.open ( "plik.bin", ios::binary | ios::out | ios::trunc );
- kopia.seekp ( ios::beg );
- break;
- }
- else if (!strcmp(usun.nazwisko,tmp.nazwisko) == 0)
- {
- kopia.write(reinterpret_cast<char*>(&tmp),sizeof(tmp));
- }
- }
- while(true)
- {
- kopia.read(reinterpret_cast<char*>(&tmp),sizeof(tmp));
- if(kopia.eof())
- {
- plik.close();
- kopia.close();
- remove("osoby.bin.kopia");
- if(liczbarekordow()<=0) remove ("plik.bin");
- break;
- }
- plik.write(reinterpret_cast<char*>(&tmp),sizeof(tmp));
- }
- cout<<"usunieto osoby"<<endl;
- }
- else
- {
- cout<<"Blad otwarcia pliku"<<endl;
- }
- }
- }
- int main()
- {
- bool do_exit = false;
- do{
- cout<<"*************** HURTOWNIA *******************"<<endl;
- cout<<"1. Dodanie produktu"<<endl;
- cout<<"2. Usuniecie produktu"<<endl;
- cout<<"3. Wyswietlenie bazy hurtownii"<<endl;
- cout<<"0. Exit"<<endl;
- int n;
- cout<<endl;
- cout<<"Podaj opcje"<<endl;
- cin>>n;
- switch(n){
- case 1:
- dodawanie();
- break;
- case 2:
- usuniecie();
- break;
- case 3:
- wyswietlenie();
- break;
- }
- }while(!do_exit);
- system ("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement