Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h> ///permite executia functiei system(...)
- #include <cstdlib>
- #include <vector>
- using namespace std;
- class Persoana
- {
- protected: ///membri protected pentru ca facem mostenire
- int id;
- string nume;
- static int n; ///Variabila statica folosita pentru a numara cate persoane avem declarate.
- public:
- Persoana (int id, string nume);
- Persoana(Persoana &p);
- virtual ~Persoana(); ///destructor virtual
- virtual void citire(istream &in);
- virtual void afisare(ostream &out);
- friend istream& operator>>(istream&, Persoana&);
- friend ostream& operator<<(ostream&, Persoana&);
- static void numarObiecte() /// metoda statica de afisare a numarului de obiecte
- {
- cout<<n;
- }
- string get_nume()
- {
- return nume;
- }
- int get_id()
- {
- return id;
- }
- };
- Persoana::Persoana(int x,string z="")
- {
- id=x;
- nume=z;
- }
- Persoana::Persoana(Persoana &p)
- {
- this->id = p.id;
- this->nume = p.nume;
- }
- Persoana::~Persoana()
- {
- }
- void Persoana::citire(istream &in)
- {
- int x;
- cout<<"ID:";
- in>>x;
- id=x;
- cout<<"Nume:";
- in.get();
- string z;
- getline(in,z); ///citire string pana la enter (permite sa avem spatii)
- nume=z;
- }
- void Persoana::afisare(ostream &out)
- {
- out<<"ID: "<<id<<"\n";
- out<<"Nume: "<<nume<<"\n";
- }
- istream& operator>>(istream& in,Persoana& p)
- {
- p.citire(in);
- return in;
- }
- ostream& operator<<(ostream& out, Persoana& p)
- {
- p.afisare(out);
- return out;
- }
- ///----------------------------------------------------------------------------
- class Abonat:public Persoana
- {
- protected: ///protected pentru ca mai derivam o data
- string nr_telefon;
- public:
- Abonat(int, string, string);
- ~Abonat(); ///dupa cate observati nu este nevoie sa avem virtual in derivata (doar daca e cazul)
- virtual void citire(istream &in);
- virtual void afisare(ostream &out);
- friend istream& operator>>(istream&, Abonat&);
- friend ostream& operator<<(ostream&, Abonat&);
- };
- Abonat::Abonat(int x,string z = " ", string nr=""):Persoana(x,z) ///apelam constructorul din baza
- {
- nr_telefon=nr; ///adaugam ce e de adaugat
- }
- Abonat::~Abonat()
- {
- }
- void Abonat::citire(istream &in)
- {
- Persoana::citire(in);
- cout<<"Dati nr de telefon: ";
- in>>nr_telefon;
- }
- void Abonat::afisare(ostream &out)
- {
- Persoana::afisare(out);
- out<<"Numar telefon: ";
- out<<nr_telefon<<"\n";
- }
- istream& operator>>(istream& in,Abonat& p)
- {
- p.citire(in);
- return in;
- }
- ostream& operator<<(ostream& out, Abonat& p)
- {
- p.afisare(out);
- return out;
- }
- ///-----------------------------------------------------------------------
- class Abonat_Skype:public Abonat
- {
- ///aici avem membri privati
- string id_skype;
- public:
- Abonat_Skype(int, string, string, string);
- ~Abonat_Skype();
- void citire(istream &in);
- void afisare(ostream &out);
- friend istream& operator>>(istream&, Abonat_Skype&);
- friend ostream& operator<<(ostream&, Abonat_Skype&);
- };
- Abonat_Skype::Abonat_Skype(int x,string z="",string nr="",string id=""):Abonat(x,z,nr)
- {
- id_skype=id;
- }
- Abonat_Skype::~Abonat_Skype()
- {
- }
- void Abonat_Skype::citire(istream &in)
- {
- Abonat::citire(in);
- cout<<"Dati id Skype: ";
- in>>id_skype;
- }
- void Abonat_Skype::afisare(ostream &out)
- {
- Abonat::afisare(out);
- out<<"Id Skype: ";
- out<<id_skype<<"\n";
- }
- istream& operator>>(istream& in,Abonat_Skype& p)
- {
- p.citire(in);
- return in;
- }
- ostream& operator<<(ostream& out, Abonat_Skype& p)
- {
- p.afisare(out);
- return out;
- }
- ///---------------------------------------------------------------
- class Abonat_Skype_Romania:public Abonat_Skype
- {
- ///aici avem membrii privati
- string adresa_mail;
- public:
- Abonat_Skype_Romania(int, string, string, string,string);
- ~Abonat_Skype_Romania();
- void citire(istream &in);
- void afisare(ostream &out);
- friend istream& operator>>(istream&, Abonat_Skype_Romania&);
- friend ostream& operator<<(ostream&, Abonat_Skype_Romania&);
- };
- Abonat_Skype_Romania::Abonat_Skype_Romania(int x,string z="",string nr="",string id="",string adresa=""):Abonat_Skype(x,z,nr,id)
- {
- adresa_mail=adresa;
- }
- Abonat_Skype_Romania::~Abonat_Skype_Romania()
- {
- }
- void Abonat_Skype_Romania::citire(istream &in)
- {
- Abonat::citire(in);
- cout<<"Adresa mail ";
- in>>adresa_mail;
- }
- void Abonat_Skype_Romania::afisare(ostream &out)
- {
- Abonat::afisare(out);
- out<<"Adresa mail: ";
- out<<adresa_mail<<"\n";
- }
- istream& operator>>(istream& in,Abonat_Skype_Romania& p)
- {
- p.citire(in);
- return in;
- }
- ostream& operator<<(ostream& out, Abonat_Skype_Romania& p)
- {
- p.afisare(out);
- return out;
- }
- ///---------------------------------------------------------------------
- class Abonat_Skype_Extern:public Abonat_Skype
- {
- ///aici avem membrii privati
- string tara;
- public:
- Abonat_Skype_Extern(int, string, string, string,string);
- ~Abonat_Skype_Extern();
- void citire(istream &in);
- void afisare(ostream &out);
- friend istream& operator>>(istream&, Abonat_Skype_Extern&);
- friend ostream& operator<<(ostream&, Abonat_Skype_Extern&);
- };
- Abonat_Skype_Extern::Abonat_Skype_Extern(int x,string z="",string nr="",string id="",string t=""):Abonat_Skype(x,z,nr,id)
- {
- tara=t;
- }
- Abonat_Skype_Extern::~Abonat_Skype_Extern()
- {
- }
- istream& operator>>(istream& in,Abonat_Skype_Extern& p)
- {
- p.citire(in);
- return in;
- }
- ostream& operator<<(ostream& out, Abonat_Skype_Extern& p)
- {
- p.afisare(out);
- return out;
- }
- void Abonat_Skype_Extern::citire(istream &in)
- {
- Abonat::citire(in);
- cout<<"Tara ";
- in>>tara;
- }
- void Abonat_Skype_Extern::afisare(ostream &out)
- {
- Abonat::afisare(out);
- out<<"Tara: ";
- out<<tara<<"\n";
- }
- ///---------------------------------------------------------------
- class Agenda
- {
- private:
- vector <Abonat*> p;
- int space;
- public:
- Agenda ();
- Agenda(int s_space){ space = s_space;
- }
- ~Agenda();
- void citire(istream &in);
- void afisare(ostream &out);
- friend istream& operator>>(istream&, Agenda&);
- friend ostream& operator<<(ostream&, Agenda&);
- Abonat& operator[](string);
- };
- Agenda::Agenda()
- {
- }
- //Agenda(Agenda&);
- Agenda::~Agenda()
- {
- }
- istream& operator>>(istream& in,Agenda& p)
- {
- p.citire(in);
- return in;
- }
- ostream& operator<<(ostream& out, Agenda& p)
- {
- p.afisare(out);
- return out;
- }
- void Agenda::citire(istream &in)
- {
- for(int i=0; i<space; i++){
- Abonat* x = new Abonat(i);
- in>>(*x);
- p.push_back(x);
- }
- }
- void Agenda::afisare(ostream &out)
- {
- int i=0;
- for(i=0; i<sizeof(p)/sizeof(Abonat); i++)
- cout<<p[i];
- }
- Abonat &Agenda:: operator[](string s)
- {
- int i=0;
- for(i=0; i<sizeof(p)/sizeof(Abonat); i++)
- if(s == p[i]->get_nume() )
- {
- return *p[i];
- }
- }
- void menu()
- {
- int choice;
- bool MenuAbonati = true;
- int numar_abonati = 0;
- Agenda *lista_abonati;
- while (MenuAbonati != false)
- {
- cout<< "Guita Bianca Oana 211 - Proiect - Nume proiect: Tema 4"<<endl;
- cout<<" "<<"MENIU:"<<endl;
- cout<< "****************************\n";
- cout<<" 1. Adaugati abonati \n";
- cout<<" 2. Iesiti din meniu \n";
- cin>>choice;
- switch(choice)
- {
- while(choice>=1 && choice<3)
- if(numar_abonati != 0)
- {cout<<"ID NUME NR. TELEFON \n";
- }
- else
- cout<<"Nu avem ce abonati sa afisam"<<endl;
- case 1:
- cout<<" Alegeti numarul de abonati pe care doriti sa ii adaugati?\n";
- int i;
- cin>>numar_abonati;
- lista_abonati = new Agenda(numar_abonati);
- cin>>(*lista_abonati);
- break;
- case 2:
- if (choice == 2)
- {
- cout<<"EXIT! ";
- }
- if (choice<1||choice>3)
- {
- cout<<"Selectie invalida";
- }
- cout<<endl;
- exit(0);
- break;
- }
- }
- }
- int main()
- {
- menu();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement