Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- #define m 50
- using namespace std;
- class Persoana {
- protected:
- char *nume, *pren;
- int varsta;
- public:
- Persoana() {
- nume = new char[m];
- pren = new char[m];
- }
- ~Persoana() {
- if(nume != NULL)
- delete nume;
- if(pren != NULL)
- delete pren;
- }
- };
- class Angajat : public Persoana {
- Angajat *rad, *urm;
- protected:
- char *depart;
- int vechime;
- public :
- //doar se aloca memorie pentru campurile persoanei si angajatului
- Angajat() : Persoana() {
- depart = new char[m];
- }
- Angajat(char *nm, char *pr, int v, char *dep, int vech) {
- depart = new char[m];
- strcpy(nume, nm);
- strcpy(pren, pr);
- varsta = v;
- strcpy(depart, dep);
- vechime = vech;
- rad = NULL;
- }
- ~Angajat() {
- if(depart != NULL)
- delete depart;
- }
- void citireAngajat() {
- cout << "Introduceti numele: ";
- cin.getline(nume, m);
- cout << "Introduceti prenumele: ";
- cin.getline(pren, m);
- cout << "Introduceti varsta: ";
- cin >> varsta;
- cin.ignore();
- cout << "Introduceti departamentul: ";
- cin.getline(depart, m);
- cout << "Introduceti vechimea: ";
- cin >> vechime;
- }
- void adaugareAngajat() {
- citireAngajat();
- Angajat *ang = new Angajat(nume, pren, varsta, depart, vechime);
- ang->urm = rad;
- rad = ang;
- }
- void afisareAngajati() {
- Angajat *a = rad;
- cout << "\n-----Informatii despre angajati-----\n\n";
- while(a != NULL) {
- cout << "\tNume: " << a-> nume << endl;
- cout << "\tPrenume: " << a->pren << endl;
- cout << "\tVarsta: " << a->varsta << endl;
- cout << "\tDepartament: " << a->depart << endl;
- cout << "\tVechime: " << a->vechime << endl << endl;
- a = a ->urm;
- }
- }
- };
- class Sef : public Angajat {
- int angajati;
- char *proiect;
- Sef *rad, *urm;
- public:
- Sef() : Angajat() {
- proiect = new char[m];
- }
- Sef(char *nm, char *pr, int v, char *dep, int vech, int ang, char *proi) : Angajat(nm, pr, v, dep, vech){
- proiect = new char[m];
- angajati = ang;
- strcpy(proiect, proi);
- rad = NULL;
- }
- ~Sef() {
- if(proiect != NULL)
- delete proiect;
- }
- void adaugareSef() {
- citireAngajat();
- cout<< "Introduceti numarul de angajati: ";
- cin >> angajati;
- cin.ignore();
- cout << "Introduceti proiectul: ";
- cin.getline(proiect, m);
- Sef *sf = new Sef(nume, pren, varsta, depart, vechime, angajati, proiect);
- sf->urm = rad;
- rad = sf;
- }
- void afisareSefi() {
- cout << "\n-----Informatii despre sefi-----\n\n";
- Sef *a = rad;
- while(a != NULL) {
- cout << "\tNume: " << a-> nume << endl;
- cout << "\tPrenume: " << a->pren << endl;
- cout << "\tVarsta: " << a->varsta << endl;
- cout << "\tDepartament: " << a->depart << endl;
- cout << "\tVechime: " << a->vechime << endl;
- cout<< "\tNumar de angajati: " << a->angajati << endl;
- cout << "\tNumele proiectului: " << a->proiect << endl << endl;
- a = a ->urm;
- }
- }
- };
- void meniu()
- {
- cout<< "\n\t------MENIU------\n";
- cout<< "\t1.Adaugare angajat\n";
- cout<< "\t2.Afisare angajati\n";
- cout<< "\t3.Adaugare sef\n";
- cout<< "\t4.Afisare sefi\n";
- cout<<"\n\tAlegeti optiunea dorita: ";
- }
- int main()
- {
- int opt;
- Angajat *a = new Angajat();
- Sef *s = new Sef();
- do {
- meniu();
- cin >> opt;
- cin.ignore();
- switch(opt) {
- case 1:
- a ->adaugareAngajat();
- break;
- case 2:
- a->afisareAngajati();
- break;
- case 3:
- s ->adaugareSef();
- break;
- case 4:
- s ->afisareSefi();
- break;
- }
- }while(opt != 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement