Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #include <string>
- //************************************** Osoba ******************************
- class Osoba // Klasa Bazowa
- {
- protected:
- string Imie;
- string Nazwisko;
- string Data;
- string Adres;
- public:
- Osoba() {} // konstruktor domyslny
- Osoba(string i, string n, string d, string Adres) {}
- };
- //************************************** Lekarz ******************************
- class Lekarz : public Osoba // Dziedzicze po Osobie
- {
- string Specjalnosc;
- int Pensja;
- public:
- Lekarz() {} // konstruktor domyslny
- Lekarz(string i, string n, string d, string a, string s, int p)
- {
- Imie = i;
- Nazwisko = n;
- Data = d;
- Adres = a;
- Specjalnosc = s;
- Pensja = p;
- }
- };
- //************************************** Kontakt ******************************
- class Kontakt
- {
- string Telefon;
- string Mail;
- public:
- Kontakt() {} // konstruktor domyslny
- Kontakt(string telefon, string mail)
- {
- Telefon = telefon;
- Mail = mail;
- }
- Kontakt (Kontakt & wzor) // konstruktor kopiujacy
- {
- Telefon = wzor.Telefon;
- Mail = wzor.Mail;
- }
- };
- //************************************** SprawdzImieINazwisko ******************************
- bool SprawdzImieINazwisko(string napis)
- {
- // sprawdz Czy pierwszy znak to DUZA Litera
- if(napis[0] > 64 && napis[0] < 91) // Wykorzystanie kodow ASCI
- {
- for(int i=1; i<napis.length(); i++) // sprawdzaj kazda litere w stringu począwszy od 2giej
- if(napis[i] < 96 || napis[i] > 123) // Jezeli znak nie jest mala litera
- return false;
- }
- else
- return false;
- return true; // jezeli wszystko dobrze zwroc true
- // funkcje mozna rozbudowac jeszcze o inne warunki, ale nie bede zasmiecac kodu
- }
- class rejestr : Osoba // dziedziczy po osobie
- {
- private:
- string Imie;
- string Nazwisko;
- string Data;
- string Adres;
- Kontakt Komunikacja;
- public:
- friend bool SprawdzImieINazwisko(string napis); // Dzieki Przyjazni mamy dostep do prywatnych skladnikow klasy
- rejestr *nastepny;
- rejestr(string imie, string nazwisko ,string data, string adres, string telefon, string mail) : Imie(imie), Nazwisko(nazwisko), Data(data), Adres(adres), Komunikacja(telefon,mail) {} // konstruktor z lista inicjalizacyjna
- rejestr(string imie, string nazwisko, string data, string adres) // jakis inny konstruktor
- {
- Imie = imie;
- Nazwisko = nazwisko;
- Data = Data;
- Adres = adres;
- }
- rejestr(rejestr & wzor) // konstruktor kopiujacy
- {
- Imie = wzor.Imie;
- Nazwisko = wzor.Nazwisko;
- Data = wzor.Data;
- Adres = wzor.Adres;
- cout << "Jestem konstruktorem kopiujacym\n"; // na dowod;
- }
- rejestr() // konstruktor domyslny
- {
- while(1) // Petla wykonuje sie w nieskonczonosc
- {
- cout<<"Podaj imie: ";
- cin>>Imie;
- if(SprawdzImieINazwisko(Imie)) // chyba ze podamy prawidlowe dane
- break; // breakiem opuszczamy wtedy petle
- else
- cout << "Podaj Prawidlowe dane!\n";
- }
- while(1) // analogicznie jak wyzej
- {
- cout<<"Podaj nazwisko: ";
- cin>>Nazwisko;
- if(SprawdzImieINazwisko(Imie))
- break;
- else
- cout << "Podaj Prawidlowe dane!\n";
- }
- cout<<"Podaj date urodzenia: ";
- cin>> Data;
- cout<<"Podaj adres: ";
- cin.sync();
- getline(cin, Adres);
- nastepny=NULL;
- }
- void setImie(string imie)
- {
- Imie = imie;
- }
- string getImie()
- {
- return Imie;
- }
- void setNazwisko(string nazwisko)
- {
- Nazwisko = nazwisko;
- }
- string getNazwisko()
- {
- return Nazwisko;
- }
- void setData(string data)
- {
- Data = data;
- }
- string getData()
- {
- return Data;
- }
- void setAdres(string adres)
- {
- Adres = adres;
- }
- string getAdres()
- {
- return Adres;
- }
- void wypisz()
- {
- cout<<"Imie: "<<Imie<<"\tNazwisko :"<<Nazwisko
- <<"\tData: "<<Data<<"\tAdres: "<<Adres<<endl;
- }
- };
- void dodaj_pacjenta(rejestr**korzen)
- {
- rejestr *nowa = new rejestr;
- rejestr *pomoc = (*korzen), *pomoc1 = NULL;
- while (pomoc != NULL && (pomoc->getNazwisko()).compare(nowa->getNazwisko()) == -1)
- {
- pomoc1 = pomoc;
- pomoc = pomoc->nastepny;
- }
- if (pomoc != NULL && (pomoc->getNazwisko()).compare(nowa->getNazwisko()) == 0)
- {
- cout << "Pacjent " << nowa->getNazwisko() << " juz istanieje w rejestrze\n";
- delete nowa;
- }
- else if ((*korzen) == NULL || (pomoc == (*korzen) && (pomoc->getNazwisko()).compare(nowa->getNazwisko()) == 1))
- {
- nowa->nastepny = (*korzen);
- (*korzen) = nowa;
- }
- else
- pomoc1->nastepny = nowa;
- nowa->nastepny = pomoc;
- }
- void wypisz_pacjenta(rejestr *korzen)
- {
- cout << "Zawartosc wizytownika:\n";
- while(korzen != NULL)
- {
- korzen->wypisz();
- korzen = korzen->nastepny;
- }
- }
- void wyszukaj_pacjenta(rejestr *korzen,string a)
- {
- while (korzen!=NULL && (korzen->getNazwisko()).compare(a)!=0)
- korzen=korzen->nastepny;
- if (korzen==NULL)
- cout<<"Nie ma takiego pacjenta "<<a<<endl;
- else
- korzen ->wypisz();
- }
- bool usun_pacjenta(rejestr **korzen, string a)
- {
- if ((*korzen) == NULL)
- return false;
- rejestr *pomoc = (*korzen), *pomoc1 = NULL;
- while(pomoc != NULL && (pomoc->getNazwisko()).compare(a) != 0)
- {
- pomoc1 = pomoc;
- pomoc = pomoc->nastepny;
- }
- if (pomoc == NULL)
- return false;
- else if (pomoc == (*korzen))
- {
- (*korzen) = (*korzen)->nastepny;
- delete pomoc;
- }
- else
- {
- pomoc1->nastepny = pomoc->nastepny;
- delete pomoc;
- }
- return true;
- }
- int main()
- {
- char instrukcja;
- string Nazwisko;
- rejestr *korzen = NULL;
- cout << "MENU - mozliwe operacje na rejestrze\n"
- << "d - dodanie pacjenta\n"
- << "w - wypisanie wszystkich wizytowek\n"
- << "u - usuniecie pacjenta\n"
- << "s - wyszukanie pacjenta\n";
- while (cin >> instrukcja)
- {
- switch (instrukcja)
- {
- case 'd':
- dodaj_pacjenta(&korzen);
- break;
- case 's':
- cout << "Podaj nazwisko: ";
- cin >> Nazwisko;
- wyszukaj_pacjenta(korzen, Nazwisko);
- break;
- case 'w':
- wypisz_pacjenta(korzen);
- break;
- case 'u':
- cout << "Podaj nazwisko: ";
- cin >> Nazwisko;
- if (!usun_pacjenta(&korzen, Nazwisko))
- cout << "Nie odnaleziono pacjenta z podanym nazwiskiem" << endl;
- else
- cout << "Pacjent z podanym nazwiskiem zostal usuniety" << endl;
- break;
- default:
- cout << "Musisz wybrac jedna z opcji: d - dodawanie, w - wypisanie zawartosci, s - wyszukanie lub u - usuwanie\n";
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement