Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <conio.h>
- using namespace std;
- typedef struct adresa {
- string localitate, tara, strada;
- int cod_postal, numar;
- };
- typedef struct date_contact
- {
- int numar_telefon;
- string adresa_email, site, facebook;
- };
- typedef enum { piscina = 0, restaurant = 1, sala_conferinte = 2, sala_sport = 3 }dotari;
- class Lista;
- class Agentie
- {
- private:
- int id_cazare;
- string nume_cazare;
- bool loc_parcare;
- string numar_camere, numar_camere_ocupate;
- int numar_locuri;
- int pret_cazare;
- int tip;
- date_contact d;
- adresa a;
- Agentie *urm;
- public:
- 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)
- {
- tip = t;
- id_cazare = id;
- nume_cazare = nume;
- a.localitate = localit;
- a.cod_postal = cod;
- a.tara = tar;
- a.strada = str;
- a.numar = nr;
- d.adresa_email = email;
- d.site = sit;
- d.facebook = fb;
- loc_parcare = loc;
- numar_camere = nr_cam;
- numar_locuri = nr_loc;
- numar_camere_ocupate = nr_cam_ocup;
- pret_cazare = pr;
- urm = NULL;
- }
- virtual void afisare()
- {
- cout << "-------------------------------- \n";
- if (tip == 1)
- cout << "tip hotel ! \n";
- if (tip == 2)
- cout << "tip pensiune ! \n";
- cout << "Id-ul cazarii: " << id_cazare << endl;
- cout << "Nume:" << nume_cazare << endl;
- cout << "Localitatea: " << a.localitate << endl;
- cout << "Tara: " << a.tara << endl;
- cout << "Strada: " << a.strada << endl;
- cout << "Codul postal: " << a.cod_postal << endl;
- cout << "Numar: " << a.numar << endl;
- cout << "Numarul de telefon: " << d.numar_telefon << endl;
- cout << "Email: " << d.adresa_email << endl;
- cout << "Site: " << d.site << endl;
- cout << "Facebook: " << d.facebook << endl;
- cout << "Locuri de parcare(0/1): " << loc_parcare << endl;
- cout << "Numar camere: " << numar_camere << endl;
- cout << "Numarul de locuri dintr-o camera: " << numar_locuri << endl;
- cout << "Numar camere ocupate: " << numar_camere_ocupate << endl;
- cout << "Pretul: " << pret_cazare << endl;
- }
- friend class Lista;
- };
- class Hotel : public Agentie
- {
- private:dotari dot;
- int numar_stele;
- public:
- 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)
- {
- dot = d;
- numar_stele = nr_stel;
- }
- virtual void afisare()
- {
- Agentie::afisare();
- if (dot == 0)
- cout << "Dotare: piscina" << endl;
- if (dot == 1)
- cout << "Dotare: restaurant" << endl;
- if (dot == 2)
- cout << "Dotare: sala de conferinte" << endl;
- if (dot == 3)
- cout << "Dotare: sala de sport" << endl;
- cout << "Nr stele: " << numar_stele << endl;
- }
- friend class Lista;
- };
- class Pensiune : public Agentie
- {
- private:int numar_margarete;
- bool bb;
- public:
- 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)
- {
- numar_margarete = nr_marg;
- bb = brb;
- }
- virtual void afisare()
- {
- Agentie::afisare();
- if (bb == 1)
- cout << "Aveti inclusa optiunea bed and breakfast \n";
- if (bb = 0)
- cout << "nu aveti bed and breakfast \n";
- cout << "Numarul de margarete este :" << numar_margarete << endl;
- }
- friend class Lista;
- };
- class Lista
- {
- public: Agentie *head;
- void adaugare(Agentie *a);
- void afisare_lista();
- void afisare_cond(string s, string t);
- void stergere(string n);
- };
- void Lista::adaugare(Agentie *a)
- {
- Agentie *p;
- p = head;
- if (p == NULL)
- head = a;
- else
- {
- if (p->nume_cazare.compare(a->nume_cazare) > 0)
- {
- a->urm = head;
- head = a;
- }
- else {
- while (p->urm != NULL && p->urm->nume_cazare.compare(a->nume_cazare) < 0)
- p = p->urm;
- a->urm = p->urm;
- p->urm = a;
- }
- }
- }
- void Lista::afisare_lista()
- {
- Agentie *q;
- q = head;
- if (q == NULL)
- cout << "Nu se afla niciun nod in lista";
- else
- {
- while (q != NULL)
- {
- q->afisare();
- q = q->urm;
- system("pause");
- }
- }
- }
- class Myexception
- {
- public:
- string plm;
- int plt;
- Myexception()
- {
- plm = "0";
- plt = 0;
- }
- Myexception(string x, int y)
- {
- plm = x;
- plt = y;
- }
- };
- void introducere(Lista &l, int x)
- {
- Agentie *a;
- int id_cazare;
- string nume_cazare;
- bool loc_parcare;
- int numar_camere, numar_camere_ocupate;
- int numar_locuri;
- int pret_cazare;
- int tip;
- string localitate, tara, strada;
- int cod_postal, numar;
- int numar_telefon;
- string adresa_email, site, facebook;
- int numar_margarete;
- bool bb;
- int numar_stele;
- int dot;
- cout << "id de cazare :";
- cin >> id_cazare;
- cout << "Nume: ";
- cin >> nume_cazare;
- cout << "Localitate: ";
- cin >> localitate;
- cout << "Tara: ";
- cin >> tara;
- cout << "Strada: ";
- cin >> strada;
- cout << "Codul postal: ";
- cin >> cod_postal;
- cout << "Numarul: ";
- cin >> numar;
- cout << "Numarul de telefon: ";
- cin >> numar_telefon;
- cout << "Emailul: ";
- cin >> adresa_email;
- cout << "Adresa site-ului: ";
- cin >> site;
- cout << "Adresa de facebook: ";
- cin >> facebook;
- cout << "Locuri de parcare(0/1): ";
- cin >> loc_parcare;
- cout << "Numarul total de camere: ";
- cin >> numar_camere;
- cout << "Numarul de locuri dintr-o camera: ";
- cin >> numar_locuri;
- cout << "Numarul de camere ocupate: ";
- cin >> numar_camere_ocupate;
- try
- {
- cout << "Pretul cazarii: ";
- cin >> pret_cazare;
- if (pret_cazare<0)
- throw Myexception("pretul este <0", pret_cazare);
- }
- catch (Myexception y) { // Prinde eroarea
- do {
- cout << "Introduceti pretul (valoare pozitiva): ";
- cin >> pret_cazare;
- } while (pret_cazare<0);
- }
- if (x == 0)
- {
- Hotel *h;
- cout << "introduceti tipul de dotare : 0/1/2/3";
- cin >> dot;
- dotari dota = static_cast<dotari>(dot);
- cout << "introduceti numarul de stele :";
- cin >> numar_stele;
- 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);
- a = h;
- l.adaugare(a);
- }
- if (x == 1)
- {
- Pensiune *penis;
- cout << "Numarul de margarete :";
- cin >> numar_margarete;
- cout << "Bed and breakfast 0/1";
- cin >> bb;
- 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);
- a = penis;
- l.adaugare(a);
- }
- }
- void Lista::afisare_cond(string tara1, string loc)
- {
- Agentie *p;
- p = head;
- if (p)
- {
- while (p)
- {
- if (p->loc_parcare == 1)
- {
- if (p->a.tara.compare(tara1) == 0 && p->a.localitate.compare(loc) == 0)
- {
- p->afisare();
- _getch();
- }
- }
- p = p->urm;
- }
- }
- }
- void Lista::stergere(string nume1)
- {
- Agentie *p;
- p = head;
- if (p)
- {
- if (p->nume_cazare.compare(nume1) == 0)
- head = NULL;
- else while (p->urm != NULL && p->urm->nume_cazare.compare(nume1) != 0)
- p = p->urm;
- if (p->urm!=NULL)
- p->urm = p->urm->urm;
- }
- }
- int main()
- {
- int opt;
- Lista l;
- l.head = NULL;
- string tara, localitate;
- string nume1;
- do
- {
- system("CLS");
- cout << "1.Adaugare oferta hotel.\n";
- cout << "2.Adaugare oferta pensiune.\n";
- cout << "3.Afisare oferte.\n";
- cout << "4.Afisare cazari cu parcare proprie dintr-o anumita localitate si tara\n";
- cout << "5.Stergere cazare.\n";
- cout << "0.Iesire.\n";
- cout << "Dati optiunea dvs: ";
- cin >> opt;
- cout << "\n";
- switch (opt)
- {
- case 1: introducere(l, 0);
- break;
- case 2: introducere(l, 1);
- break;
- case 3: l.afisare_lista();
- break;
- case 4 :
- cout << "introdu tara si localitatea:";
- cin >> tara;
- cin >> localitate;
- l.afisare_cond(tara, localitate);
- break;
- case 5 :
- cin >> nume1;
- l.stergere(nume1);
- l.afisare_lista();
- break;
- }
- } while (opt != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement