Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <conio.h>
  4. using namespace std;
  5.  
  6. typedef struct adresa {
  7. string localitate, tara, strada;
  8. int cod_postal, numar;
  9. };
  10. typedef struct date_contact
  11. {
  12. int numar_telefon;
  13. string adresa_email, site, facebook;
  14. };
  15. typedef enum { piscina = 0, restaurant = 1, sala_conferinte = 2, sala_sport = 3 }dotari;
  16. class Lista;
  17. class Agentie
  18. {
  19. private:
  20. int id_cazare;
  21. string nume_cazare;
  22. bool loc_parcare;
  23. string numar_camere, numar_camere_ocupate;
  24. int numar_locuri;
  25. int pret_cazare;
  26. int tip;
  27. date_contact d;
  28. adresa a;
  29. Agentie *urm;
  30. public:
  31. Agentie(int t, int id, string nume, string localit, int cod, string tar, string str, int nr, int nr_tlf, string email, string sit, string fb, bool loc, int nr_cam, int nr_loc, int nr_cam_ocup, int pr)
  32. {
  33. tip = t;
  34. id_cazare = id;
  35. nume_cazare = nume;
  36. a.localitate = localit;
  37. a.cod_postal = cod;
  38. a.tara = tar;
  39. a.strada = str;
  40. a.numar = nr;
  41. d.adresa_email = email;
  42. d.site = sit;
  43. d.facebook = fb;
  44. loc_parcare = loc;
  45. numar_camere = nr_cam;
  46. numar_locuri = nr_loc;
  47. numar_camere_ocupate = nr_cam_ocup;
  48. pret_cazare = pr;
  49. urm = NULL;
  50. }
  51. virtual void afisare()
  52. {
  53. cout << "-------------------------------- \n";
  54. if (tip == 1)
  55. cout << "tip hotel ! \n";
  56. if (tip == 2)
  57. cout << "tip pensiune ! \n";
  58. cout << "Id-ul cazarii: " << id_cazare << endl;
  59. cout << "Nume:" << nume_cazare << endl;
  60. cout << "Localitatea: " << a.localitate << endl;
  61. cout << "Tara: " << a.tara << endl;
  62. cout << "Strada: " << a.strada << endl;
  63. cout << "Codul postal: " << a.cod_postal << endl;
  64. cout << "Numar: " << a.numar << endl;
  65. cout << "Numarul de telefon: " << d.numar_telefon << endl;
  66. cout << "Email: " << d.adresa_email << endl;
  67. cout << "Site: " << d.site << endl;
  68. cout << "Facebook: " << d.facebook << endl;
  69. cout << "Locuri de parcare(0/1): " << loc_parcare << endl;
  70. cout << "Numar camere: " << numar_camere << endl;
  71. cout << "Numarul de locuri dintr-o camera: " << numar_locuri << endl;
  72. cout << "Numar camere ocupate: " << numar_camere_ocupate << endl;
  73. cout << "Pretul: " << pret_cazare << endl;
  74. }
  75. friend class Lista;
  76. };
  77. class Hotel : public Agentie
  78. {
  79. private:dotari dot;
  80. int numar_stele;
  81. public:
  82. Hotel(int t, int id, string nume, string localit, int cod, string tar, string str, int nr, int nr_tlf, string email, string sit, string fb, bool loc, int nr_cam, int nr_loc, int nr_cam_ocup, int pr, dotari d, int nr_stel) :Agentie(t, id, nume, localit, cod, tar, str, nr, nr_tlf, email, sit, fb, loc, nr_cam, nr_loc, nr_cam_ocup, pr)
  83. {
  84. dot = d;
  85. numar_stele = nr_stel;
  86. }
  87. virtual void afisare()
  88. {
  89. Agentie::afisare();
  90. if (dot == 0)
  91. cout << "Dotare: piscina" << endl;
  92. if (dot == 1)
  93. cout << "Dotare: restaurant" << endl;
  94. if (dot == 2)
  95. cout << "Dotare: sala de conferinte" << endl;
  96. if (dot == 3)
  97. cout << "Dotare: sala de sport" << endl;
  98. cout << "Nr stele: " << numar_stele << endl;
  99. }
  100. friend class Lista;
  101. };
  102. class Pensiune : public Agentie
  103. {
  104. private:int numar_margarete;
  105. bool bb;
  106. public:
  107. Pensiune(int t, int id, string nume, string localit, int cod, string tar, string str, int nr, int nr_tlf, string email, string sit, string fb, bool loc, int nr_cam, int nr_loc, int nr_cam_ocup, int pr, int nr_marg, bool brb) :Agentie(t, id, nume, localit, cod, tar, str, nr, nr_tlf, email, sit, fb, loc, nr_cam, nr_loc, nr_cam_ocup, pr)
  108. {
  109. numar_margarete = nr_marg;
  110. bb = brb;
  111. }
  112. virtual void afisare()
  113. {
  114. Agentie::afisare();
  115. if (bb == 1)
  116. cout << "Aveti inclusa optiunea bed and breakfast \n";
  117. if (bb = 0)
  118. cout << "nu aveti bed and breakfast \n";
  119. cout << "Numarul de margarete este :" << numar_margarete << endl;
  120. }
  121. friend class Lista;
  122. };
  123. class Lista
  124. {
  125. public: Agentie *head;
  126. void adaugare(Agentie *a);
  127. void afisare_lista();
  128. void afisare_cond(string s, string t);
  129. void stergere(string n);
  130. };
  131. void Lista::adaugare(Agentie *a)
  132. {
  133. Agentie *p;
  134. p = head;
  135. if (p == NULL)
  136. head = a;
  137. else
  138. {
  139. if (p->nume_cazare.compare(a->nume_cazare) > 0)
  140. {
  141. a->urm = head;
  142. head = a;
  143. }
  144. else {
  145. while (p->urm != NULL && p->urm->nume_cazare.compare(a->nume_cazare) < 0)
  146. p = p->urm;
  147. a->urm = p->urm;
  148. p->urm = a;
  149. }
  150. }
  151. }
  152. void Lista::afisare_lista()
  153. {
  154. Agentie *q;
  155. q = head;
  156. if (q == NULL)
  157. cout << "Nu se afla niciun nod in lista";
  158. else
  159. {
  160. while (q != NULL)
  161. {
  162. q->afisare();
  163. q = q->urm;
  164. system("pause");
  165. }
  166. }
  167.  
  168. }
  169. class Myexception
  170. {
  171. public:
  172. string plm;
  173. int plt;
  174. Myexception()
  175. {
  176. plm = "0";
  177. plt = 0;
  178. }
  179. Myexception(string x, int y)
  180. {
  181. plm = x;
  182. plt = y;
  183.  
  184. }
  185.  
  186. };
  187. void introducere(Lista &l, int x)
  188. {
  189. Agentie *a;
  190. int id_cazare;
  191. string nume_cazare;
  192. bool loc_parcare;
  193. int numar_camere, numar_camere_ocupate;
  194. int numar_locuri;
  195. int pret_cazare;
  196. int tip;
  197. string localitate, tara, strada;
  198. int cod_postal, numar;
  199. int numar_telefon;
  200. string adresa_email, site, facebook;
  201. int numar_margarete;
  202. bool bb;
  203. int numar_stele;
  204. int dot;
  205.  
  206. cout << "id de cazare :";
  207. cin >> id_cazare;
  208. cout << "Nume: ";
  209. cin >> nume_cazare;
  210. cout << "Localitate: ";
  211. cin >> localitate;
  212. cout << "Tara: ";
  213. cin >> tara;
  214. cout << "Strada: ";
  215. cin >> strada;
  216. cout << "Codul postal: ";
  217. cin >> cod_postal;
  218. cout << "Numarul: ";
  219. cin >> numar;
  220. cout << "Numarul de telefon: ";
  221. cin >> numar_telefon;
  222. cout << "Emailul: ";
  223. cin >> adresa_email;
  224. cout << "Adresa site-ului: ";
  225. cin >> site;
  226. cout << "Adresa de facebook: ";
  227. cin >> facebook;
  228. cout << "Locuri de parcare(0/1): ";
  229. cin >> loc_parcare;
  230. cout << "Numarul total de camere: ";
  231. cin >> numar_camere;
  232. cout << "Numarul de locuri dintr-o camera: ";
  233. cin >> numar_locuri;
  234. cout << "Numarul de camere ocupate: ";
  235. cin >> numar_camere_ocupate;
  236.  
  237. try
  238. {
  239. cout << "Pretul cazarii: ";
  240. cin >> pret_cazare;
  241. if (pret_cazare<0)
  242. throw Myexception("pretul este <0", pret_cazare);
  243. }
  244. catch (Myexception y) { // Prinde eroarea
  245. do {
  246. cout << "Introduceti pretul (valoare pozitiva): ";
  247. cin >> pret_cazare;
  248. } while (pret_cazare<0);
  249. }
  250. if (x == 0)
  251. {
  252. Hotel *h;
  253. cout << "introduceti tipul de dotare : 0/1/2/3";
  254. cin >> dot;
  255. dotari dota = static_cast<dotari>(dot);
  256.  
  257. cout << "introduceti numarul de stele :";
  258. cin >> numar_stele;
  259. h = new Hotel(1, id_cazare, nume_cazare, localitate, cod_postal, tara, strada, numar, numar_telefon, adresa_email, site, facebook, loc_parcare, numar_camere, numar_locuri, numar_camere_ocupate, pret_cazare, dota, numar_stele);
  260. a = h;
  261. l.adaugare(a);
  262. }
  263. if (x == 1)
  264. {
  265. Pensiune *penis;
  266. cout << "Numarul de margarete :";
  267. cin >> numar_margarete;
  268. cout << "Bed and breakfast 0/1";
  269. cin >> bb;
  270. penis = new Pensiune(2, id_cazare, nume_cazare, localitate, cod_postal, tara, strada, numar, numar_telefon, adresa_email, site, facebook, loc_parcare, numar_camere, numar_locuri, numar_camere_ocupate, pret_cazare, numar_margarete, bb);
  271. a = penis;
  272. l.adaugare(a);
  273. }
  274.  
  275. }
  276. void Lista::afisare_cond(string tara1, string loc)
  277. {
  278. Agentie *p;
  279. p = head;
  280. if (p)
  281. {
  282. while (p)
  283. {
  284. if (p->loc_parcare == 1)
  285. {
  286. if (p->a.tara.compare(tara1) == 0 && p->a.localitate.compare(loc) == 0)
  287. {
  288. p->afisare();
  289. _getch();
  290. }
  291.  
  292. }
  293. p = p->urm;
  294. }
  295. }
  296. }
  297. void Lista::stergere(string nume1)
  298. {
  299. Agentie *p;
  300. p = head;
  301. if (p)
  302. {
  303. if (p->nume_cazare.compare(nume1) == 0)
  304. head = NULL;
  305. else while (p->urm != NULL && p->urm->nume_cazare.compare(nume1) != 0)
  306. p = p->urm;
  307. if (p->urm!=NULL)
  308. p->urm = p->urm->urm;
  309. }
  310.  
  311. }
  312. int main()
  313. {
  314. int opt;
  315. Lista l;
  316. l.head = NULL;
  317. string tara, localitate;
  318. string nume1;
  319. do
  320. {
  321. system("CLS");
  322.  
  323. cout << "1.Adaugare oferta hotel.\n";
  324. cout << "2.Adaugare oferta pensiune.\n";
  325. cout << "3.Afisare oferte.\n";
  326. cout << "4.Afisare cazari cu parcare proprie dintr-o anumita localitate si tara\n";
  327. cout << "5.Stergere cazare.\n";
  328. cout << "0.Iesire.\n";
  329. cout << "Dati optiunea dvs: ";
  330. cin >> opt;
  331. cout << "\n";
  332.  
  333. switch (opt)
  334. {
  335. case 1: introducere(l, 0);
  336. break;
  337. case 2: introducere(l, 1);
  338. break;
  339. case 3: l.afisare_lista();
  340. break;
  341. case 4 :
  342. cout << "introdu tara si localitatea:";
  343. cin >> tara;
  344. cin >> localitate;
  345. l.afisare_cond(tara, localitate);
  346. break;
  347. case 5 :
  348. cin >> nume1;
  349. l.stergere(nume1);
  350. l.afisare_lista();
  351. break;
  352. }
  353. } while (opt != 0);
  354. return 0;
  355. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement