You are on page 1of 4

header.

#pragma once

using namespace std;

class CData{
int an, luna, zi;
public:
CData(int z, int l, int a):zi(z), luna(l),an(a){};
CData():zi(0),luna(0),an(0){};
int getAn(){return an;}
int getLuna(){return luna;}
int getZi(){return zi;}
int maiMare(CData d);
};

class CPersoana{
char nume[20],prenume[20];
CData *dataNasterii;
public:
CPersoana(char nume[], char prenume[], CData *dn);
~CPersoana(){delete dataNasterii;}
char *getNume(){return nume;}
char *getPrenume(){return prenume;}
CData *getData(){return dataNasterii;}
void afisare();
};

class CAngajat:public CPersoana


{
private:
CData *dataAngajare;
int salariu;
public:
CAngajat(char nume[], char prenume[], CData *dn,CData *da, int sal);
~CAngajat(){delete dataAngajare;}
CData *getDataAngajare(){return dataAngajare;}
int getSalariu(){return salariu;}
int getVarstaAngajare();
void afisarePerioadaMuncita(CData &dataCurenta);
void afisareAngajat();
};

functii.cpp

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "header.h"

using namespace std;


int CData::maiMare(CData d)
{
int ok=0;
if(an>d.an)
ok=1;
else
if(an==d.an)
if(luna>d.luna)
ok=1;
else
if(luna==d.luna)
if(zi>d.zi)
ok=1;
return ok;
}

CPersoana::CPersoana(char nume[], char prenume[], CData *dn)


{
strcpy(this->nume, nume);
strcpy(this->prenume,prenume);
dataNasterii=new CData(*dn);
}

void CPersoana::afisare()
{
cout<<"Nume\n"<<nume;
cout<<"\nPrenume\n"<<prenume<<endl;
cout<<dataNasterii->getZi();
cout<<dataNasterii->getLuna();
cout<<dataNasterii->getAn();
}

CAngajat::CAngajat(char nume[], char prenume[], CData *dn,CData *da, int


sal):CPersoana(nume, prenume,dn)
{
dataAngajare=new CData(da->getZi(),da->getLuna(),da->getAn());
salariu=sal;

int CAngajat::getVarstaAngajare()

int cat;
cat=dataAngajare->getAn()-(this->getData())->getAn();
return cat;
}

void CAngajat::afisarePerioadaMuncita(CData &dataCurenta)


{
int zile=0, luni=0, ani=0;
CData *da=getDataAngajare();
if(dataCurenta.getZi()>da->getZi())
zile=dataCurenta.getZi()-da->getZi();
else
{
zile=dataCurenta.getZi()-da->getZi()+30;
luni=luni-1;
}

if(dataCurenta.getLuna()>da->getLuna())
luni+=dataCurenta.getLuna()-da->getLuna();
else
{
luni+=dataCurenta.getLuna()-da->getLuna()+12;
//dataCurenta.getan()=dataCurenta.getan()-1;
ani=ani-1;
}
ani+=dataCurenta.getAn()-da->getAn();
cout<<zile<<"."<<luni<<"."<<ani<<endl;
}

void CAngajat::afisareAngajat()
{
CPersoana::afisare();
CData *da=getDataAngajare();
cout<<"data angajarii:"<<da->getZi()<<"/"<<da->getLuna()<<"/"<<da-
>getAn()<<"/"<<endl;
cout<<"salariu:"<<getSalariu()<<endl;
}

main.cpp

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "header.h"

using namespace std;

int main()
{

char n[20],p[20];
int z,l,a;
CData *dn,*da, dc(29,1,2008);
int sal,k;
cin>>n;

cout<<endl;
cin>>p;
cout<<endl;
cout<<"salariu:"<<endl;
cin>>sal;
cout<<"data nasterii"<<endl;
cin>>z>>l>>a;
dn=new CData(z,l,a);
cout<<"data angajarii"<<endl;
cin>>z>>l>>a;
da=new CData(z,l,a);
CAngajat *an=new CAngajat(n,p,dn,da,sal);

k=an->getVarstaAngajare();
cout<<k<<endl;
an->afisarePerioadaMuncita(dc);
an->afisareAngajat();

_getch();
return 0;
}

You might also like