Advertisement
Garusek

final version obiektówka

May 13th, 2015
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.41 KB | None | 0 0
  1.  
  2.  
  3.  
  4. #include <iostream>
  5. using namespace std;
  6. #include <string>
  7.  
  8.  
  9. //************************************** Osoba ******************************
  10. class Osoba // Klasa Bazowa
  11. {
  12. protected:
  13. string Imie;
  14. string Nazwisko;
  15. string Data;
  16. string Adres;
  17. public:
  18. Osoba() {} // konstruktor domyslny
  19. Osoba(string i, string n, string d, string Adres) {}
  20. };
  21.  
  22. //************************************** Lekarz ******************************
  23. class Lekarz : public Osoba // Dziedzicze po Osobie
  24. {
  25. string Specjalnosc;
  26. int Pensja;
  27.  
  28. public:
  29. Lekarz() {} // konstruktor domyslny
  30. Lekarz(string i, string n, string d, string a, string s, int p)
  31. {
  32. Imie = i;
  33. Nazwisko = n;
  34. Data = d;
  35. Adres = a;
  36. Specjalnosc = s;
  37. Pensja = p;
  38. }
  39. };
  40. //************************************** Kontakt ******************************
  41. class Kontakt
  42. {
  43. string Telefon;
  44. string Mail;
  45.  
  46. public:
  47. Kontakt() {} // konstruktor domyslny
  48.  
  49. Kontakt(string telefon, string mail)
  50. {
  51. Telefon = telefon;
  52. Mail = mail;
  53. }
  54.  
  55. Kontakt (Kontakt & wzor) // konstruktor kopiujacy
  56. {
  57. Telefon = wzor.Telefon;
  58. Mail = wzor.Mail;
  59. }
  60. };
  61.  
  62. //************************************** SprawdzImieINazwisko ******************************
  63. bool SprawdzImieINazwisko(string napis)
  64. {
  65. // sprawdz Czy pierwszy znak to DUZA Litera
  66. if(napis[0] > 64 && napis[0] < 91) // Wykorzystanie kodow ASCI
  67. {
  68. for(int i=1; i<napis.length(); i++) // sprawdzaj kazda litere w stringu począwszy od 2giej
  69. if(napis[i] < 96 || napis[i] > 123) // Jezeli znak nie jest mala litera
  70. return false;
  71. }
  72. else
  73. return false;
  74.  
  75. return true; // jezeli wszystko dobrze zwroc true
  76. // funkcje mozna rozbudowac jeszcze o inne warunki, ale nie bede zasmiecac kodu
  77. }
  78.  
  79. class rejestr : Osoba // dziedziczy po osobie
  80. {
  81.  
  82. private:
  83. string Imie;
  84. string Nazwisko;
  85. string Data;
  86. string Adres;
  87. Kontakt Komunikacja;
  88.  
  89. public:
  90. friend bool SprawdzImieINazwisko(string napis); // Dzieki Przyjazni mamy dostep do prywatnych skladnikow klasy
  91. rejestr *nastepny;
  92.  
  93.  
  94.  
  95. 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
  96.  
  97. rejestr(string imie, string nazwisko, string data, string adres) // jakis inny konstruktor
  98. {
  99. Imie = imie;
  100. Nazwisko = nazwisko;
  101. Data = Data;
  102. Adres = adres;
  103. }
  104.  
  105. rejestr(rejestr & wzor) // konstruktor kopiujacy
  106. {
  107. Imie = wzor.Imie;
  108. Nazwisko = wzor.Nazwisko;
  109. Data = wzor.Data;
  110. Adres = wzor.Adres;
  111. cout << "Jestem konstruktorem kopiujacym\n"; // na dowod;
  112. }
  113.  
  114.  
  115. rejestr() // konstruktor domyslny
  116. {
  117. while(1) // Petla wykonuje sie w nieskonczonosc
  118. {
  119. cout<<"Podaj imie: ";
  120. cin>>Imie;
  121. if(SprawdzImieINazwisko(Imie)) // chyba ze podamy prawidlowe dane
  122. break; // breakiem opuszczamy wtedy petle
  123. else
  124. cout << "Podaj Prawidlowe dane!\n";
  125. }
  126. while(1) // analogicznie jak wyzej
  127. {
  128. cout<<"Podaj nazwisko: ";
  129. cin>>Nazwisko;
  130. if(SprawdzImieINazwisko(Imie))
  131. break;
  132. else
  133. cout << "Podaj Prawidlowe dane!\n";
  134. }
  135.  
  136. cout<<"Podaj date urodzenia: ";
  137. cin>> Data;
  138. cout<<"Podaj adres: ";
  139. cin.sync();
  140. getline(cin, Adres);
  141. nastepny=NULL;
  142. }
  143.  
  144.  
  145. void setImie(string imie)
  146. {
  147. Imie = imie;
  148. }
  149. string getImie()
  150. {
  151. return Imie;
  152. }
  153. void setNazwisko(string nazwisko)
  154. {
  155. Nazwisko = nazwisko;
  156. }
  157. string getNazwisko()
  158. {
  159. return Nazwisko;
  160. }
  161. void setData(string data)
  162. {
  163. Data = data;
  164. }
  165. string getData()
  166. {
  167. return Data;
  168. }
  169. void setAdres(string adres)
  170. {
  171. Adres = adres;
  172. }
  173. string getAdres()
  174. {
  175. return Adres;
  176. }
  177.  
  178. void wypisz()
  179. {
  180. cout<<"Imie: "<<Imie<<"\tNazwisko :"<<Nazwisko
  181. <<"\tData: "<<Data<<"\tAdres: "<<Adres<<endl;
  182. }
  183.  
  184. };
  185.  
  186. void dodaj_pacjenta(rejestr**korzen)
  187. {
  188. rejestr *nowa = new rejestr;
  189. rejestr *pomoc = (*korzen), *pomoc1 = NULL;
  190.  
  191. while (pomoc != NULL && (pomoc->getNazwisko()).compare(nowa->getNazwisko()) == -1)
  192. {
  193. pomoc1 = pomoc;
  194. pomoc = pomoc->nastepny;
  195. }
  196.  
  197. if (pomoc != NULL && (pomoc->getNazwisko()).compare(nowa->getNazwisko()) == 0)
  198. {
  199. cout << "Pacjent " << nowa->getNazwisko() << " juz istanieje w rejestrze\n";
  200. delete nowa;
  201. }
  202. else if ((*korzen) == NULL || (pomoc == (*korzen) && (pomoc->getNazwisko()).compare(nowa->getNazwisko()) == 1))
  203. {
  204. nowa->nastepny = (*korzen);
  205. (*korzen) = nowa;
  206. }
  207. else
  208. pomoc1->nastepny = nowa;
  209. nowa->nastepny = pomoc;
  210. }
  211. void wypisz_pacjenta(rejestr *korzen)
  212. {
  213. cout << "Zawartosc wizytownika:\n";
  214.  
  215. while(korzen != NULL)
  216. {
  217. korzen->wypisz();
  218. korzen = korzen->nastepny;
  219. }
  220. }
  221. void wyszukaj_pacjenta(rejestr *korzen,string a)
  222. {
  223. while (korzen!=NULL && (korzen->getNazwisko()).compare(a)!=0)
  224. korzen=korzen->nastepny;
  225. if (korzen==NULL)
  226. cout<<"Nie ma takiego pacjenta "<<a<<endl;
  227. else
  228. korzen ->wypisz();
  229. }
  230.  
  231. bool usun_pacjenta(rejestr **korzen, string a)
  232. {
  233. if ((*korzen) == NULL)
  234. return false;
  235. rejestr *pomoc = (*korzen), *pomoc1 = NULL;
  236. while(pomoc != NULL && (pomoc->getNazwisko()).compare(a) != 0)
  237. {
  238. pomoc1 = pomoc;
  239. pomoc = pomoc->nastepny;
  240. }
  241.  
  242. if (pomoc == NULL)
  243. return false;
  244. else if (pomoc == (*korzen))
  245. {
  246. (*korzen) = (*korzen)->nastepny;
  247. delete pomoc;
  248. }
  249. else
  250. {
  251. pomoc1->nastepny = pomoc->nastepny;
  252. delete pomoc;
  253. }
  254. return true;
  255. }
  256.  
  257.  
  258. int main()
  259. {
  260.  
  261. char instrukcja;
  262. string Nazwisko;
  263. rejestr *korzen = NULL;
  264. cout << "MENU - mozliwe operacje na rejestrze\n"
  265. << "d - dodanie pacjenta\n"
  266. << "w - wypisanie wszystkich wizytowek\n"
  267. << "u - usuniecie pacjenta\n"
  268. << "s - wyszukanie pacjenta\n";
  269. while (cin >> instrukcja)
  270. {
  271. switch (instrukcja)
  272. {
  273. case 'd':
  274. dodaj_pacjenta(&korzen);
  275. break;
  276. case 's':
  277. cout << "Podaj nazwisko: ";
  278. cin >> Nazwisko;
  279. wyszukaj_pacjenta(korzen, Nazwisko);
  280. break;
  281. case 'w':
  282. wypisz_pacjenta(korzen);
  283. break;
  284. case 'u':
  285. cout << "Podaj nazwisko: ";
  286. cin >> Nazwisko;
  287. if (!usun_pacjenta(&korzen, Nazwisko))
  288. cout << "Nie odnaleziono pacjenta z podanym nazwiskiem" << endl;
  289. else
  290. cout << "Pacjent z podanym nazwiskiem zostal usuniety" << endl;
  291. break;
  292. default:
  293. cout << "Musisz wybrac jedna z opcji: d - dodawanie, w - wypisanie zawartosci, s - wyszukanie lub u - usuwanie\n";
  294. break;
  295. }
  296. }
  297. return 0;
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement