Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proiect
Proiect
h
#include<conio.h>
#include<string.h>
#include <iostream>
using namespace std;
template <class T>
class slista
{
public:
T *val;
class slista <T> *urm;
static slista <T> *prim;
slista <T> (T x)
{
val = new T();
val->copiere(x);
urm=NULL;
}
slista <T>* adaugare (T x);
slista<T>(){};
void afisare (slista <T>*)const;
slista<T> * stergere (slista <T> *prim,char *ptr);
slista<T> * cautare (slista <T> *prim,char *ptr1);
slista<T> * ordonare (slista <T> *prim);
};
class lista;
class abonat
{
public:
char *nume;
char *prenume;
char *adresa;
char *nr_telefon;
int nr_birou;
char *adresa_mail;
abonat *urm;
abonat() {};
abonat(char *,char *,char *,char *,int ,char *);
void copiere(abonat w);
virtual void afisare();
};
abonat :: abonat (char *ptr1,char *ptr2,char *ptr3,char *ptr4,int ptr5,char *ptr6)
{
nume=new char[strlen(ptr1)+1];
prenume=new char [strlen(ptr2)+1];
adresa=new char [strlen(ptr3)+1];
nr_telefon=new char [strlen(ptr4)+1];
adresa_mail=new char [strlen(ptr6)+1];
strcpy(nume,ptr1);
strcpy(prenume,ptr2);
strcpy(adresa,ptr3);
strcpy(nr_telefon,ptr4);
nr_birou=ptr5;
strcpy(adresa_mail,ptr6);
urm=NULL;
}
void abonat::copiere(abonat w)
{
nume=new char[strlen(w.nume)+1];
prenume=new char [strlen(w.prenume)+1];
adresa=new char [strlen(w.adresa)+1];
nr_telefon=new char [strlen(w.nr_telefon)+1];
adresa_mail=new char [strlen(w.adresa_mail)+1];
strcpy(nume,w.nume);
strcpy(prenume,w.prenume);
strcpy(adresa,w.adresa);
strcpy(nr_telefon,w.nr_telefon);
nr_birou=w.nr_birou;
strcpy(adresa_mail,w.adresa_mail);
urm=NULL;
}
void abonat::afisare()
{
cout<<"Numele:"<<nume<<endl;
cout<<"Prenumele:"<<prenume<<endl;
cout<<"Adresa:"<<adresa<<endl;
cout<<"Nr telefon:"<<nr_telefon<<endl;
cout<<"Nr birou:"<<nr_birou<<endl;
cout<<"Adresa mail:"<<adresa_mail<<endl;
getch();
}
class institutie
{
public:
char *nume;
institutie *urm;
slista<abonat> *sublista;
institutie(char *ptr1)
{
nume=new char[strlen(ptr1)+1];
strcpy(nume,ptr1);
urm=NULL;
sublista=NULL;
}
virtual void afisare()
{
cout<<nume<<endl;
}
};
lista::adaugare(p);
}
else
{
institutie *q;
cout <<"Numele biroului este" <<endl;
cin >> ptr1;
q=new birou(ptr1);
cout<<"Cati membrii doriti sa adaugati?"<<endl;
cin>>nr;
x2->prim=NULL;
for(j=0;j<nr;j++)
{
cout <<"Numele adaugat este : " <<endl;
cin >> ptr2;
cout <<"Prenumele adaugat este: " <<endl;
cin >> ptr3;
cout <<"Adresa adaugata este :" <<endl;
cin >> ptr4;
cout <<"Nr de telefon adaugat este :" <<endl;
cin >>ptr5;
cout <<"Nr birou adaugat este :" <<endl;
cin >> ptr6;
cout <<"Adresa de email adaugata este :" <<endl;
cin >> ptr7;
abonat o(ptr2,ptr3,ptr4,ptr5,ptr6,ptr7);
x2=x2->adaugare(o);
}
q->sublista=x2;
lista::adaugare(q);
}
}
void stergere2()
{
institutie *r;
char *num;
r=lista::prim1;
num=new char[20];
cout <<"Numele abonatului pe care doriti sa il stergeti este:" <<endl;
cin >>num;
while(r!=NULL)
{
r->sublista=r->sublista->stergere(r->sublista,num);
r=r->urm;
};
}
void cautare2()
{
institutie *r;
slista<abonat> *p;
char inst[20];
char a[20],b[20];
r=lista :: prim1;
cout <<"Introduceti numele sau nr. de telefon al abonatului pe care il cautati " <<endl;
cin >>a;
cout <<"Introduceti biroul sau facultatea in care faceti cautarea" <<endl;
cin >>b;
while((r!=NULL)&&(strcmp(r->nume,b)!=0))
{
r=r->urm;
}
if(r!=NULL)
p=r->sublista->cautare(r->sublista,a);
else cout<<"Nu exista biroul sau facultate in care faceti cautarea"<<endl;
}
while(k!=9)
{
cout <<"1.Adaugare abonat nou." <<endl;
cout <<"2.Afisarea unei institutii "<<endl;
cout <<"3.Stergere" <<endl;
cout <<"4.Cautare dupa nume sau nr.telefon intr-un anumit birou sau facultate" <<endl;
cout <<"5.Schimbare numar de telefon al unui abonat"<<endl;
cout <<"6.Ordonare"<<endl;
cout <<"7.Mutare"<<endl;
cout <<"8.Scriere in fisier"<<endl;
cout <<"9.Iesire"<<endl;
cout <<"Optiunea dumneavoastra este:"<<endl;
cin >>k;
switch(k)
{
case 1:introducere();
break;
case 2:afisare_partiala();
break;
case 3:stergere2();
break;
case 4:cautare2();
break;
case 5:modificare_tel();
break;
case 6:ordonare();
break;
case 7:mutare();
break;
case 8:scriere();
break;
case 9:return 0;
}
}
return 0;
}