Angajat
-
Upload
razvan-cristian -
Category
Documents
-
view
214 -
download
0
Transcript of Angajat
-
8/16/2019 Angajat
1/10
#include#include#include#include#include#includeusing namespace std;
class Angajat_abstract{public:int salariu;
virtual long calcul_salariu()//pointer catre functie initializat cu null (functie virtuala pura)
{ return salariu;}
};
class Angajat{protected:
char *nume;long salariu;int varsta;
char* CNP;
public:
//proprietati sau interfete pentru atributele private(set-eri, get-eri)void set_nume(char* val){
nume=new char[strlen(val)+1];strcpy(nume,val);
}
void set_salariul( long val){
salariu=val;}
void set_varsta( int val){
varsta=val;}
void set_CNP(char* val){
CNP=new char[strlen(val)+1];
strcpy(CNP,val);}
char* get_nume(){
return nume;}
long get_salariul(){
-
8/16/2019 Angajat
2/10
return salariu;}
int get_varsta(){
return varsta;}
char* get_CNP(){
return CNP;}
//constructor fara parametrii
Angajat(){
nume=new char[strlen("nume")+1];strcpy(nume,"nume");
CNP=new char[strlen("CNP")+1];strcpy(CNP, "CNP");
salariu=200;varsta=30;
}
//costructor cu parametrii
Angajat(char* nume, long salariu, int varsta,char* CNP){
this->nume=new char[strlen("nume")+1];strcpy(this->nume,"nume");
this->CNP=new char[strlen("CNP")+1];
strcpy(this->CNP,"CNP");
this->salariu=salariu;this->varsta=varsta;
}
//constructor de copiereAngajat (const Angajat & temp){
this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);
this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);
this->salariu=temp.salariu;this->varsta=temp.varsta;
}//destructor~Angajat(){
-
8/16/2019 Angajat
3/10
delete[] nume;delete[] CNP;
}
//supraincarcare opreator "=" pentru atribuireAngajat & operator=(Angajat &temp){
delete [] nume;delete [] CNP;
this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);
this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);
this->salariu=temp.salariu;this->varsta=temp.varsta;
return *this;}
//supraincarcare operator "+" primire suma din salariulong operator +(long suma){
salariu+=suma;return salariu;
}
//supraincarcare operator "-" retinere suma din salariulong operator -(long suma){
salariu-=suma;return salariu;
}
//supraincarcare operator "+" pentru adunare obiectelong operator +(Angajat &a){
return salariu+=a.salariu;}
//supraincarcare operator "-" pentru scadere obiectelong operator -(Angajat &a){
return salariu-=a.salariu;}
//cast conversie Angajat in longoperator long(){
return salariu;}
//cast conversie Angajat in int
-
8/16/2019 Angajat
4/10
operator int(){
return varsta;}
//cast conversie Angajat in char *operator char*(){
return nume;return CNP;
}};
//CLASA 1 DERIVATAclass Angajat_cu_ziua: public Angajat{private:
int timpdelucru;bool angajat_acum;
public:
friend ostream &operator > (istream &in,Angajat_cu_ziua &a);
//constructor fara parametrii
Angajat_cu_ziua():Angajat(){
this->timpdelucru=8;this->angajat_acum=false;
}
//constructor cu parametrii
Angajat_cu_ziua(int timpdelucru, bool angajat_acum, char* nume, long salariu, int varsta, char* CNP): Angajat(nume, salariu, varsta, CNP)
{
this->timpdelucru=timpdelucru;this->angajat_acum=angajat_acum;}
//constructor de copiereAngajat_cu_ziua (const Angajat_cu_ziua &temp):Angajat(temp){
this->timpdelucru=temp.timpdelucru;this->angajat_acum=temp.angajat_acum;
}
//supraincarcare operator "=" pentru atribuire
Angajat_cu_ziua &operator=(Angajat_cu_ziua &temp){
delete [] nume;delete [] CNP;
this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);
this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);
-
8/16/2019 Angajat
5/10
this->salariu=temp.salariu;this->varsta=temp.varsta;this->timpdelucru=temp.timpdelucru;this->angajat_acum=temp.angajat_acum;
return *this;}void set_timpdelucru(int val){
timpdelucru=val;}
void set_angajat_acum(bool val){
angajat_acum=val;}
int get_timpdelucru(){
return timpdelucru;}
bool get_angajat_acum()
{ return angajat_acum;}
};
//CLASA DERIVATA 2class Angajatinacord: public Angajat{private: char* functie;
int experienta;
public:
friend ostream &operator > (istream &in,Angajatinacord &a);
//constructor fara parametrii
Angajatinacord(): Angajat(){
this->functie="manager";this->experienta=10;
}
//constructor cu parametrii
Angajatinacord( char* functie, int experienta, char* nume, long salariu, int varsta, char* CNP): Angajat(nume, salariu, varsta, CNP)
{this->functie=new char[strlen("functie")+1];strcpy(this->functie,"functie");this->experienta=experienta;
}
//constructor de copiere
-
8/16/2019 Angajat
6/10
Angajatinacord (const Angajatinacord &temp):Angajat(temp){
this->functie=new char[strlen(temp.functie)+1];strcpy(this->functie,temp.functie);this->experienta=temp.experienta;
}
Angajatinacord &operator=(Angajatinacord &temp){
delete [] nume;delete [] CNP;delete [] functie;
this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);
this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);
this->salariu=temp.salariu;this->varsta=temp.varsta;
this->functie=new char[strlen(temp.functie)+1];
strcpy(this->functie,temp.functie);this->experienta=temp.experienta;
return *this;}
void set_functie( char* valoare){
functie=valoare;}
void set_experienta( int valoare){
experienta=valoare;}
char* get_functie(){
return functie;}
int get_experienta(){
return experienta;}
//preincrementareAngajatinacord operator++(){
this->set_varsta(this->get_varsta()+1);this->experienta++;return *this;
}
//postincrementareAngajatinacord operator++(int d)
-
8/16/2019 Angajat
7/10
-
8/16/2019 Angajat
8/10
}
istream &operator>> (istream &in, Angajatinacord &a){
char aux[30];coutaux;a.functie=new char[strlen(aux)+1];strcpy(a.functie, aux);couta.experienta;coutaux;a.nume=new char[strlen(aux)+1];strcpy(a.nume, aux);couta.salariu;couta.varsta;coutaux;a.CNP=new char[strlen(aux)+1];strcpy(a.CNP, aux);
return in;}
//CLASA TEMPLATEtemplateclass firma
{private:T* departament;int nr_departament;
public:int get_nr_departament(){
return nr_departament;}
void set_nr_departament(int val){
nr_departamet=val;}
//constructor cu parametriifirma(int n=0){
this->nr_departament=n;if (n==0){ this->departament=NULL;}else
this->departament=new T[n];}
-
8/16/2019 Angajat
9/10
//constructor de copierefirma (firma & F){
this->nr_departament=F.nr_departament;this->departament=new T [this->nr_departament];for(int i=0; inr_departament; i++)
this->departament[i]=F.departament[i];}
//destructor~firma(){
delete[] departament;}
//supraincarcare operator "="firma & operator=(firma & F){
if(this->departament)delete[] this->departament;
this->nr_departament=F.nr_departament;this->departament=new T[this->nr_departament];for(int i=0; inr_departament; i++)
this->departament[i]=F.departament[i];}
};
void scrieInFisier(vector vectorAA, vector vectorAZ){
fstream fisier ("Angajati.txt",ios::out);fisier
-
8/16/2019 Angajat
10/10
vectorAngajatiInAcord.push_back(aa);}
coutnr_ang_ziua;for(int i=0;i>az;vectorAngajatiCuZiua.push_back(az);
}
scrieInFisier(vectorAngajatiInAcord,vectorAngajatiCuZiua);Angajat_cu_ziua a;cin>>a;coutj;cout