Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <time.h>
- #include <iomanip>
- #include <conio.h>
- #include <cstdio>
- #include <cstring>
- #include <sstream>
- using namespace std;
- struct czyt
- {
- char PESEL[11];
- char imie[20];
- char nazwisko[20];
- };
- struct ksiazki
- {
- int ID;
- char autor[50];
- char tytul[50];
- bool czywyp;
- char wypPESEL[11];
- int czas;
- };
- void wyszukiwanie_ksi(string bazaa)
- {
- ksiazki out;
- char szukana[200];
- cout<<"Podaj fraze do wyszukania: ";
- cin>>szukana;
- cout<<endl;
- ifstream baza(bazaa,ios::binary | ios::out);
- if(baza.is_open())
- {
- for(int i=1;;i++)
- {
- baza.read(reinterpret_cast<char*>(&out),sizeof(out));
- if(baza.eof()) break;
- char inttochar[10];
- stringstream konwersja;
- konwersja << out.ID;
- konwersja>>inttochar;
- if(strstr(out.autor,szukana) || strstr(out.tytul,szukana) || strstr(inttochar,szukana))
- cout<<i<<". "<<endl<<"Autor: "<<out.autor<<endl<<"Tytul: "<<out.tytul<<endl<<"Numer katalogowy: "<<out.ID<<endl<<endl;
- }
- }
- else
- cout<<"Nie udalo sie otworzyc bazy danych"<<endl;
- baza.close();
- }
- void wyszukiwanie_czyt(string bazaa)
- {
- czyt out;
- char szukana[200];
- cout<<"Podaj fraze do wyszukania: ";
- cin>>szukana;
- cout<<endl;
- ifstream baza(bazaa,ios::binary | ios::out);
- if(baza.is_open())
- {
- for(int j=1;;j++)
- {
- baza.read(reinterpret_cast<char*>(&out),sizeof(out));
- if(baza.eof()) break;
- char inttochar[10];
- stringstream konwersja;
- konwersja <<fixed<<setprecision(0)<<out.PESEL;
- konwersja>>inttochar;
- cout<<endl<<inttochar<<endl;
- if(strstr(out.imie,szukana) || strstr(out.nazwisko,szukana) || strstr(inttochar,szukana))
- cout<<noshowpoint << setprecision( 6 )<<j<<". "<<endl<<"Imie: "<<out.imie<<endl<<"Nazwisko: "<<out.nazwisko<<endl<<"PESEL: "<<out.PESEL<<endl<<endl;
- }
- }
- else
- cout<<"Nie udalo sie otworzyc bazy danych"<<endl;
- baza.close();
- }
- void wyswietl_ksiazki(string bazaa)
- {
- ifstream ksiazkabaza(bazaa,ios::binary | ios::out);
- if(ksiazkabaza.is_open())
- {
- ksiazki ksiazka;
- for(int i=1;;i++)
- {
- ksiazkabaza.read(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(ksiazkabaza.eof()) break;
- cout<<endl<<i<<". "<<"Autor: "<<ksiazka.autor<<" Tytul: "<<ksiazka.tytul<<" Numer katalogowy: "<<ksiazka.ID<<endl;
- if(ksiazka.czywyp==true)
- {
- cout<<"Ksiazka wypozyczona przez nr PESEL "<<fixed<<setprecision(0)<<ksiazka.wypPESEL<<". Do oddania pozostalo ";
- cout<<(time(NULL)-ksiazka.czas)/86400<<" dni."<<endl;
- }
- }
- }
- ksiazkabaza.close();
- }
- bool wyswietl_czyt(string bazaa)
- {
- czyt czytelnik;
- ifstream czytbaza(bazaa,ios::binary | ios::out);
- if(czytbaza.is_open())
- {
- for(int i=1;;i++)
- {
- czytbaza.read(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- if(czytbaza.eof()) break;
- cout<<endl<<i<<". "<<"Imie: "<<czytelnik.imie<<" Nazwisko: "<<czytelnik.nazwisko<<" PESEL: "<<fixed<<setprecision(0)<<czytelnik.PESEL<<endl;
- }
- }
- else
- {
- cout<<"Nie udało sie uzyskac dostepu do bazy danych"<<endl;
- }
- cout<<endl;
- czytbaza.close();
- }
- int main()
- {
- const char Zero[2]="0";
- int wyjscie=1,wyb,kwyjscie=1,cwyjscie=1;
- string switchint;
- char PESELq[11];
- czyt czytelnik;
- ksiazki ksiazka;
- while (wyjscie)
- {
- cout<<endl<<"[1]. Ksiazki."<<endl<<"[2]. Czytelnicy."<<endl<<"[3]. Wypozycz ksiazke."<<endl<<"[4]. Zwroc ksiazke."<<endl<<"[5]. Lista wypozyczonych ksiazek."<<endl<<"[6]. Wyjdz"<<endl;
- cout<<endl;
- int switchtoint=0;
- cin>>switchint;
- istringstream(switchint)>>switchtoint;
- switch(switchtoint)
- {
- default:
- {
- break;
- }
- case 1:
- {
- while(kwyjscie)
- {
- cout<<endl<<"[1]. Dodaj ksiazke."<<endl<<"[2]. Edytuj ksiazke"<<endl<<"[3]. Usun ksiazke."<<endl<<"[4]. Wyswietl ksiazki."<<endl<<"[5]. cofnij"<<endl<<"[6]. Wyszukaj"<<endl;
- cout<<endl;
- switchtoint=0;
- cin>>switchint;
- istringstream(switchint)>>switchtoint;
- switch(switchtoint)
- {
- default:
- {
- break;
- }
- case 1:
- {
- ofstream ksiazkibaza("ksiazki.dat",ios::binary | ios::in | ios::app);
- if(ksiazkibaza.is_open())
- {
- do
- {
- cout<<endl;
- cout<<"Podaj autora"<<endl;
- cin.getline(ksiazka.autor,sizeof(ksiazka.autor));
- cin.getline(ksiazka.autor,sizeof(ksiazka.autor));
- cout<<"Podaj tytul"<<endl;
- cin.getline(ksiazka.tytul,sizeof(ksiazka.tytul));
- cout<<"Podaj numer katalogowy"<<endl;
- cin>>ksiazka.ID;
- ksiazka.czywyp=false;
- ksiazka.wypPESEL=Zero;
- ksiazka.czas=0;
- ksiazkibaza.write(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- cout<<"Czy chcesz wprowadzic nastepna ksiazke?"<<endl<<"NIE - Wprowadz [0] TAK - Wprowadz inna liczbe."<<endl;
- cin>>wyb;
- }while(wyb!=0);
- ksiazkibaza.close();
- break;
- }
- else
- {
- cout<<"Wystapil blad podczas dostepu do bazy danych"<<endl;
- break;
- }
- break;
- }
- case 2:
- {
- wyswietl_ksiazki("ksiazki.dat");
- cout<<endl<<"Wybierz ksiazke do edycji: ";
- cin>>wyb;
- cout<<endl;
- ofstream ksiazkaa("ksiazki.dat",ios::binary | ios::in);
- ksiazkaa.seekp(sizeof(struct ksiazki)*(wyb-1));
- cout<<"Podaj autora"<<endl;
- cin>>ksiazka.autor;
- cout<<"Podaj tytul"<<endl;
- cin>>ksiazka.tytul;
- cout<<"Podaj numer katalogowy"<<endl;
- cin>>ksiazka.ID;
- ksiazkaa.write(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- ksiazkaa.close();
- break;
- }
- case 3:
- {
- wyswietl_ksiazki("ksiazki.dat");
- cout<<endl<<"Wybierz ksiazke do usuniecia: ";
- cin>>wyb;
- ofstream temp("temp.dat",ios::binary | ios::in | ios::app);
- ifstream ksiazki1("ksiazki.dat",ios::binary);
- for(int i=1;;i++)
- {
- ksiazki1.read(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(ksiazki1.eof()) break;
- if(i!=wyb)
- temp.write(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- }
- temp.close();
- ksiazki1.close();
- remove("ksiazki.dat");
- rename("temp.dat","ksiazki.dat");
- cout<<"\nUsunieto.\n";
- break;
- }
- case 4:
- {
- wyswietl_ksiazki("ksiazki.dat");
- break;
- }
- case 5:
- {
- cout<<endl;
- kwyjscie=0;
- break;
- }
- case 6:
- {
- wyszukiwanie_ksi("ksiazki.dat");
- break;
- }
- }
- }
- kwyjscie=1;
- break;
- }
- case 2:
- {
- while(cwyjscie)
- {
- cout<<endl<<"[1]. Dodaj czytelnika."<<endl<<"[2]. Edytuj czytelnika"<<endl<<"[3]. Usun czytelnika."<<endl<<"[4]. Wyswietl czytelnikow."<<endl<<"[5]. Wyszukaj."<<endl<<"[6]. Cofnij."<<endl;
- cout<<endl;
- switchtoint=0;
- cin>>switchint;
- istringstream(switchint)>>switchtoint;
- switch(switchtoint)
- {
- default:
- {
- break;
- }
- case 1:
- {
- ofstream czytbaza("czytelnicy.dat",ios::binary | ios::in | ios::app);
- if(czytbaza.is_open())
- {
- int x=0;
- do
- {
- cout<<endl;
- cout<<"Podaj Imie"<<endl;
- cin.getline(czytelnik.imie,sizeof(czytelnik.imie));
- cin.getline(czytelnik.imie,sizeof(czytelnik.imie));
- cout<<"Podaj Nazwisko "<<endl;
- cin.getline(czytelnik.nazwisko,sizeof(czytelnik.nazwisko));
- while(x==0)
- {
- cout<<"Podaj numer PESEL"<<endl;
- cin>>czytelnik.PESEL;
- if(strlen(czytelnik.PESEL)==11)
- x=1;
- }
- x=0;
- czytbaza.write(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- cout<<"Czy chcesz wprowadzic nastepnego czytelnika?"<<endl<<"NIE - Wprowadz [0] TAK - Wprowadz inna liczbe."<<endl;
- cin>>wyb;
- }while(wyb!=0);
- czytbaza.close();
- break;
- }
- }
- case 2:
- {
- ifstream czytbaza("czytelnicy.dat",ios::binary);
- if(czytbaza.is_open())
- {
- for(int i=1;;i++)
- {
- czytbaza.read(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- if(czytbaza.eof()) break;
- cout<<endl<<i<<". "<<"Imie: "<<czytelnik.imie<<" Nazwisko: "<<czytelnik.nazwisko<<" PESEL: "<<fixed<<setprecision(0)<<czytelnik.PESEL<<endl;
- }
- }
- else
- {
- cout<<"Wystapil blad podczas dostepu do bazy danych"<<endl;
- break;
- }
- czytbaza.close();
- cout<<endl<<"Wybierz czytelnika do edycji: ";
- cin>>wyb;
- cout<<endl;
- ofstream czytt("czytelnicy.dat",ios::binary | ios::in);
- czytt.seekp(sizeof(struct czyt)*(wyb-1));
- cout<<"Podaj Imie"<<endl;
- cin>>czytelnik.imie;
- cout<<"Podaj Nazwisko "<<endl;
- cin>>czytelnik.nazwisko;
- cout<<"Podaj numer PESEL"<<endl;
- cin>>czytelnik.PESEL;
- czytt.write(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- czytt.close();
- break;
- }
- case 3:
- {
- wyswietl_czyt("czytelnicy.dat");
- cout<<endl<<"Wybierz czytelnika do usuniecia: ";
- cin>>wyb;
- ofstream temp("temp.dat",ios::binary | ios::in | ios::app);
- ifstream czytelnikbaza1("czytelnicy.dat",ios::binary);
- for(int i=1;;i++)
- {
- czytelnikbaza1.read(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- if(czytelnikbaza1.eof()) break;
- if(i!=wyb)
- temp.write(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- }
- temp.close();
- czytelnikbaza1.close();
- remove("czytelnicy.dat");
- rename("temp.dat","czytelnicy.dat");
- cout<<"Usunieto."<<endl;
- break;
- }
- case 4:
- {
- wyswietl_czyt("czytelnicy.dat");
- break;
- }
- case 5:
- {
- wyszukiwanie_czyt("czytelnicy.dat");
- break;
- }
- case 6:
- {
- cwyjscie=0;
- break;
- }
- }
- }
- cwyjscie=1;
- break;
- }
- case 3:
- {
- int mark;
- bool marek;
- wyswietl_ksiazki("ksiazki.dat");
- cout<<endl<<"Wprowadz numer katalogowy ksiazki do wypozyczenia: ";
- cin>>wyb;
- ifstream ksiazkabaza1("ksiazki.dat",ios::binary | ios::out);
- for(int i=1;;i++)
- {
- ksiazkabaza1.read(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(ksiazkabaza1.eof())
- {
- cout<<"##### Nie udalo sie znalezc ksiazki o podanym numerze katalogowym lub jest ona juz wypozyczona. #####"<<endl;
- cout<<endl;
- ksiazkabaza1.close();
- break;
- marek=false;
- }
- if(ksiazka.ID==wyb)
- {
- if(ksiazka.czywyp==false)
- {
- cout<<"Znaleziono ksiazke."<<endl;
- cout<<endl;
- mark=i;
- marek=true;
- break;
- }
- }
- }
- ksiazkabaza1.close();
- if(marek==true)
- {
- ifstream czytbaza("czytelnicy.dat",ios::binary | ios::out);
- if(czytbaza.is_open())
- {
- for(int j=1;;j++)
- {
- czytbaza.read(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- if(czytbaza.eof()) break;
- cout<<endl<<j<<". "<<"Imie: "<<czytelnik.imie<<" Nazwisko: "<<czytelnik.nazwisko<<" PESEL: "<<fixed<<setprecision(0)<<czytelnik.PESEL<<endl;
- }
- czytbaza.close();
- cout<<endl<<"Podaj numer PESEL czytelnika lub jego ID z listy."<<endl;
- cin>>PESELq;
- if(strlen(PESELq)==11)
- {
- cout<<"Podano pesel"<<endl;
- ifstream czytbaza1("czytelnicy.dat",ios::binary | ios::out);
- if(czytbaza1.is_open())
- {
- for(int k=1;;k++)
- {
- czytbaza1.read(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- if(czytbaza1.eof())
- {
- cout<<"Nie znaleziono czytelnika o podanym numerze PESEL."<<endl;
- break;
- }
- if(czytelnik.PESEL==PESELq)
- {
- cout<<czytelnik.imie<<endl<<czytelnik.nazwisko<<endl<<czytelnik.PESEL<<endl<<endl;
- cout<<"Czy na pewno chcesz wypozyczyc ksiazke o numerze katalogowym "<<ksiazka.ID<<" dla podanego czytelnika? TAK = [1] NIE = [0]"<<endl;
- cin>>wyb;
- if(wyb==0)
- {
- break;
- }
- if(wyb==1)
- {
- ofstream ksiazkabaza("ksiazki.dat",ios::binary | ios::in);
- if(ksiazkabaza.is_open())
- {
- cout<<"Ksiazka zostala wypozyczona"<<endl;
- cout<<endl;
- ksiazkabaza.seekp(sizeof(struct ksiazki)*(mark-1));
- ksiazka.czywyp=true;
- ksiazka.wypPESEL=czytelnik.PESEL;
- ksiazka.czas=time(NULL);
- ksiazkabaza.write(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- ksiazkabaza.close();
- break;
- }
- else
- {
- cout<<"Wystapil blad podczas dostepu do bazy danych"<<endl;
- ksiazkabaza.close();
- break;
- }
- }
- }
- if(ksiazka.czywyp==true)
- {
- cout<<"Ksiazka ktora probujesz wypozyczyc jest juz obecnie wypozyczona."<<endl;
- break;
- }
- }
- czytbaza1.close();
- }
- }
- if(PESELq<100000000000)
- {
- if(ksiazka.czywyp==true)
- {
- cout<<"Ksiazka ktora probujesz wypozyczyc jest juz obecnie wypozyczona."<<endl;
- break;
- }
- if(ksiazka.czywyp==false)
- {
- bool found;
- ifstream czytbaza("czytelnicy.dat",ios::binary | ios::out);
- if(czytbaza.is_open())
- {
- for(int i=1;;i++)
- {
- czytbaza.read(reinterpret_cast<char*>(&czytelnik),sizeof(czytelnik));
- if(czytbaza.eof())
- {
- cout<<"Nie znaleziono czytelnika o podanym numerze ID"<<endl;
- found=false;
- break;
- }
- if(i==PESELq)
- {
- found=true;
- break;
- }
- }
- }
- czytbaza.close();
- if(found==true)
- {
- cout<<czytelnik.imie<<endl<<czytelnik.nazwisko<<endl<<czytelnik.PESEL<<endl<<endl;
- cout<<"Czy na pewno chcesz wypozyczyc ksiazke o numerze katalogowym "<<ksiazka.ID<<" dla podanego czytelnika? TAK = [1] NIE = [0]"<<endl;
- cin>>wyb;
- if(wyb==0)
- {
- break;
- }
- if(wyb==1)
- {
- ofstream ksiazkabaza("ksiazki.dat",ios::binary | ios::in);
- if(ksiazkabaza.is_open())
- {
- cout<<"Ksiazka zostala wypozyczona"<<endl;
- cout<<endl;
- ksiazkabaza.seekp(sizeof(struct ksiazki)*(mark-1));
- ksiazka.czywyp=true;
- ksiazka.wypPESEL=czytelnik.PESEL;
- ksiazka.czas=time(NULL);
- ksiazkabaza.write(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- ksiazkabaza.close();
- break;
- }
- else
- {
- cout<<"Wystapil blad podczas dostepu do bazy danych"<<endl;
- ksiazkabaza.close();
- break;
- }
- }
- }}
- }
- }
- }break;
- }
- case 4:
- {
- bool found;
- cout<<"Podaj numer katalogowy ksiazki do zwrotu"<<endl;
- cin>>wyb;
- int mark;
- ifstream ksiazkabaza("ksiazki.dat",ios::binary | ios::out);
- if(ksiazkabaza.is_open())
- {
- for(int i=1;;i++)
- {
- ksiazkabaza.read(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(ksiazkabaza.eof())
- {
- cout<<"Ksiazka ktora probujesz zwrocic jest juz oddana lub numer katalogowy jest blednie podany."<<endl;
- break;
- found=false;
- }
- if(ksiazka.czywyp==true && ksiazka.ID==wyb)
- {
- cout<<"Ksiazka wypozyczona przez nr PESEL "<<fixed<<setprecision(0)<<ksiazka.wypPESEL<<". Do oddania pozostalo ";
- cout<<(time(NULL)-ksiazka.czas)/86400<<" dni.";
- found=true;
- mark=i;
- break;
- }
- }
- }ksiazkabaza.close();
- if(found==true)
- {
- cout<<endl;
- cout<<"Czy chcesz przyjac zwrot tej ksiazki? TAK = [1], NIE = [0]"<<endl;
- cin>>wyb;
- if(wyb==1)
- {
- ofstream temp("temp.dat",ios::binary | ios::in | ios::app);
- ifstream ksiazki1("ksiazki.dat",ios::binary);
- for(int i=1;;i++)
- {
- ksiazki1.read(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(ksiazki1.eof()) break;
- if(i!=wyb)
- temp.write(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(i==mark)
- {
- ksiazka.czywyp=false;
- ksiazka.czas=0;
- ksiazka.wypPESEL=0;
- temp.write(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- }
- }
- temp.close();
- ksiazki1.close();
- remove("ksiazki.dat");
- rename("temp.dat","ksiazki.dat");
- cout<<"\nUsunieto.\n"<<endl;
- break;
- }
- }
- break;
- if(found==false)
- {
- break;
- }
- }
- case 5:
- {
- cout<<endl<<"#########################################################################"<<endl<<"=========================== ZALEGLE KSIAZKI ============================="<<endl<<"#########################################################################"<<endl;
- ifstream ksiazkabaza("ksiazki.dat",ios::binary | ios::out);
- if(ksiazkabaza.is_open())
- {int c=1;
- for(int i=1;;i++)
- {
- ksiazkabaza.read(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(ksiazkabaza.eof()) break;
- if(ksiazka.czywyp==true)
- {
- if(30-((time(NULL)-ksiazka.czas)/86400)<=0)
- {
- cout<<endl<<c<<". "<<"Autor: "<<ksiazka.autor<<" Tytul: "<<ksiazka.tytul<<" Numer katalogowy: "<<ksiazka.ID<<endl;
- cout<<"Ksiazka wypozyczona przez nr PESEL "<<fixed<<setprecision(0)<<ksiazka.wypPESEL<<". Ksiazka zalegla o: ";
- cout<<(30-((time(NULL)-ksiazka.czas)/86400)*(-1))<<" dni."<<endl;
- c++;
- }
- }
- }
- }
- ksiazkabaza.close();
- cout<<endl<<"#########################################################################"<<endl<<"======================== NIE ZALEGLE KSIAZKI ============================"<<endl<<"#########################################################################"<<endl;
- ifstream ksiazkabaza1("ksiazki.dat",ios::binary | ios::out);
- if(ksiazkabaza1.is_open())
- {int c=1;
- for(int i=1;;i++)
- {
- ksiazkabaza1.read(reinterpret_cast<char*>(&ksiazka),sizeof(ksiazka));
- if(ksiazkabaza1.eof()) break;
- if(ksiazka.czywyp==true)
- {
- if(30-((time(NULL)-ksiazka.czas)/86400)>0)
- {
- cout<<endl<<c<<". "<<"Autor: "<<ksiazka.autor<<" Tytul: "<<ksiazka.tytul<<" Numer katalogowy: "<<ksiazka.ID<<endl;
- cout<<"Ksiazka wypozyczona przez nr PESEL "<<fixed<<setprecision(0)<<ksiazka.wypPESEL<<". Do oddania pozostalo ";
- cout<<30-((time(NULL)-ksiazka.czas)/86400)<<" dni."<<endl;
- c++;
- }
- }
- }
- }
- ksiazkabaza1.close();
- break;
- }
- case 6:
- {
- wyjscie=0;
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement