PaiusCatalin9577

FirmaIT - Completed

May 11th, 2015
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.19 KB | None | 0 0
  1. #############################Angajati.h#############################
  2. #pragma once
  3.  
  4. #include<iostream>
  5. #include<string>
  6. #include<cstring>
  7. #include<vector>
  8.  
  9. using namespace std;
  10.  
  11. class Angajati{
  12. private:
  13.     char* post;
  14.     char* numeAngajat;
  15.     unsigned int wage;
  16.     unsigned int varsta;
  17.     unsigned int vechime;
  18. public:
  19.     Angajati();
  20.     Angajati(char*, char*, unsigned int, unsigned int, unsigned int); // all attributes
  21.     ~Angajati();
  22.     void setPost(char*);
  23.     void setNumeAngajat(char*);
  24.     void setWage(unsigned int);
  25.     void setVarsta(unsigned int);
  26.     void setVechime(unsigned int);
  27.     char* getPost();
  28.     char* getNumeAngajat();
  29.     unsigned int getWage();
  30.     unsigned int getVarsta();
  31.     unsigned int getVechime();
  32.     bool operator=(Angajati&);
  33. };
  34. #############################Angajati.cpp#############################
  35. #include"Angajati.h"
  36.  
  37. Angajati::Angajati(){
  38.     strcpy(this->numeAngajat, NULL);
  39.     strcpy(this->post, NULL);
  40.     this->wage = 0;
  41.     this->varsta = 0;
  42.     this->vechime = 0;
  43. }
  44.  
  45. Angajati::Angajati(char* postN, char* numeA, unsigned int wageNR, unsigned int varstaNR, unsigned int vechimeNR){
  46.     this->numeAngajat = new char[50];
  47.     this->post = new char[100];
  48.     strcpy(this->numeAngajat, numeA);
  49.     strcpy(this->post, postN);
  50.     this->wage = wageNR;
  51.     this->varsta = varstaNR;
  52.     this->vechime = vechimeNR;
  53. }
  54.  
  55. Angajati::~Angajati(){}
  56.  
  57. void Angajati::setPost(char * postName){
  58.     this->post = new char[100];
  59.     strcpy(this->post, postName);
  60. }
  61.  
  62. void Angajati::setNumeAngajat(char * numeA){
  63.     this->numeAngajat = new char[50];
  64.     strcpy(this->numeAngajat, numeA);
  65. }
  66.  
  67. void Angajati::setWage(unsigned int number){
  68.     this->wage = number;
  69. }
  70.  
  71. void Angajati::setVarsta(unsigned int number){
  72.     this->varsta = number;
  73. }
  74.  
  75. void Angajati::setVechime(unsigned int number){
  76.     this->vechime = number;
  77. }
  78.  
  79. char* Angajati::getPost(){
  80.     return this->post;
  81. }
  82.  
  83. char* Angajati::getNumeAngajat(){
  84.     return this->numeAngajat;
  85. }
  86.  
  87. unsigned int Angajati::getWage(){
  88.     return this->wage;
  89. }
  90.  
  91. unsigned int Angajati::getVarsta(){
  92.     return this->varsta;
  93. }
  94.  
  95. unsigned int Angajati::getVechime(){
  96.     return this->vechime;
  97. }
  98.  
  99. bool Angajati::operator=(Angajati& AngajatSecundar){
  100.     if (this->numeAngajat == NULL || this->post == NULL || this->wage == 0 || this->varsta == 0)
  101.         return false;
  102.     strcpy(this->post, AngajatSecundar.getPost());
  103.     strcpy(this->numeAngajat, AngajatSecundar.getNumeAngajat());
  104.     this->wage = AngajatSecundar.getWage();
  105.     this->varsta = AngajatSecundar.getVarsta();
  106.     this->vechime = AngajatSecundar.getVechime();
  107.     return true;
  108. }
  109.  
  110. #############################Departament.h#############################
  111. #include"Angajati.h"
  112.  
  113. class Departament{
  114. private:
  115.     char * numeDepartament;
  116.     vector<Angajati> Employers;
  117.     unsigned int employersCount;
  118.     unsigned int employersLimit;
  119. public:
  120.     Departament();
  121.     Departament(char*, unsigned int); // name and limit
  122.     ~Departament();
  123.     bool addEmployed(Angajati&);
  124.     Departament fireEmployed(char*); // dupa nume
  125.     char* getNumeDepartament();
  126.     vector<Angajati> getAngajati();
  127.     void setEmployersLimit(unsigned int);
  128.     unsigned int getEmpCount();
  129.     unsigned int getEmpLimit();
  130.     void setNumeDepartament(char*);
  131.     bool operator =(Departament&);
  132. };
  133. #############################Departament.cpp#############################
  134. #include"Departament.h"
  135.  
  136. Departament::Departament(){
  137.     this->employersLimit = 150;
  138.     this->employersCount = 0;
  139.     this->Employers.clear();
  140.     strcpy(this->numeDepartament, NULL);
  141. }
  142.  
  143. Departament::Departament(char* numeD, unsigned int limit){
  144.     this->Employers.clear();
  145.     this->employersCount = 0;
  146.     this->employersLimit = limit;
  147.     this->numeDepartament = new char[100];
  148.     strcpy(this->numeDepartament, numeD);
  149. }
  150.  
  151. Departament::~Departament(){}
  152.  
  153. bool Departament::addEmployed(Angajati& angajat){
  154.     if (this->employersCount == this->employersLimit)
  155.         return false;
  156.     this->Employers.push_back(angajat);
  157.     this->employersCount++;
  158.     return true;
  159. }
  160.  
  161. Departament Departament::fireEmployed(char* deConcediat){
  162.     if (this->employersCount == 0)
  163.         return *this;
  164.     for (unsigned int i = 0; i < this->Employers.size(); i++){
  165.         if (Employers[i].getNumeAngajat() == deConcediat)
  166.             Employers.erase(Employers.begin() + i);
  167.     }
  168.     return *this;
  169. }// dupa nume
  170.  
  171. char* Departament::getNumeDepartament(){
  172.     return this->numeDepartament;
  173. }
  174.  
  175. vector<Angajati> Departament::getAngajati(){
  176.     return this->Employers;
  177. }
  178.  
  179. void Departament::setEmployersLimit(unsigned int number){
  180.     this->employersLimit = number;
  181. }
  182.  
  183. unsigned int Departament::getEmpCount(){
  184.     return this->employersCount;
  185. }
  186.  
  187. unsigned int Departament::getEmpLimit(){
  188.     return this->employersLimit;
  189. }
  190.  
  191. void Departament::setNumeDepartament(char * numeD){
  192.     this->numeDepartament = new char[100];
  193.     strcpy(this->numeDepartament, numeD);
  194. }
  195.  
  196. bool Departament::operator =(Departament& departament){
  197.     if (departament.getNumeDepartament() == NULL || departament.getEmpLimit() == 0)
  198.         return false;
  199.     strcpy(this->numeDepartament, departament.getNumeDepartament());
  200.     this->employersCount = departament.getEmpCount();
  201.     this->employersLimit = departament.getEmpLimit();
  202.     this->Employers = departament.getAngajati();
  203.     return true;
  204. }
  205.  
  206. #############################FirmaIT.h#############################
  207.  
  208. #include"Departament.h"
  209.  
  210. class FirmaIT{
  211. private:
  212.     char* numeFirma;
  213.     char* adresaFirma;
  214.     vector<Departament> Departamente;
  215.     unsigned int contorDepartamente;
  216.     unsigned int limitaDepartamente;
  217. public:
  218.     FirmaIT();
  219.     FirmaIT(char*, char*, unsigned int); // name, address and limit
  220.     ~FirmaIT();
  221.     bool adaugaDepartament(Departament&);
  222.     FirmaIT inchideDepartament(char*); // dupa nume
  223.     vector<Departament> getDepartamente();
  224.     void setLimitaD(unsigned int);
  225.     unsigned int getLimitaD();
  226.     unsigned int getContorD();
  227.     void setNumeFirma(char*);
  228.     void setAdresaFirma(char*);
  229.     char* getNumeFirma();
  230.     char* getAdresaFirma();
  231.     bool operator =(FirmaIT&);
  232. };
  233.  
  234.  
  235.  
  236. #############################FirmaIT.cpp#############################
  237. #include"FirmaIT.h"
  238.  
  239. FirmaIT::FirmaIT(){
  240.     strcpy(this->numeFirma, NULL);
  241.     strcpy(this->adresaFirma, NULL);
  242.     this->Departamente.clear();
  243.     this->limitaDepartamente = 10;
  244.     this->contorDepartamente = 0;
  245. }
  246.  
  247. FirmaIT::FirmaIT(char* numeD, char* adresaD, unsigned int limita){
  248.     this->numeFirma = new char[30];
  249.     this->adresaFirma = new char[100];
  250.     strcpy(this->numeFirma, numeD);
  251.     strcpy(this->adresaFirma, adresaD);
  252.     this->Departamente.clear();
  253.     this->limitaDepartamente = limita;
  254.     this->contorDepartamente = 0;
  255. }
  256.  
  257. FirmaIT::~FirmaIT(){}
  258.  
  259. bool FirmaIT::adaugaDepartament(Departament& departament){
  260.     if (this->contorDepartamente == this->limitaDepartamente)
  261.         return false;
  262.     this->Departamente.push_back(departament);
  263.     this->contorDepartamente++;
  264.     return true;
  265. }
  266.  
  267. FirmaIT FirmaIT::inchideDepartament(char* deInchis){
  268.     if (this->contorDepartamente == 0)
  269.         return *this;
  270.     for (unsigned int i = 0; i < this->Departamente.size(); i++){
  271.         if (Departamente[i].getNumeDepartament() == deInchis)
  272.             Departamente.erase(Departamente.begin() + i);
  273.     }
  274.     return *this;
  275. } // dupa nume
  276.  
  277. vector<Departament> FirmaIT::getDepartamente(){
  278.     return this->Departamente;
  279. }
  280.  
  281. void FirmaIT::setLimitaD(unsigned int numar){
  282.     this->limitaDepartamente = numar;
  283. }
  284.  
  285. unsigned int FirmaIT::getLimitaD(){
  286.     return this->limitaDepartamente;
  287. }
  288.  
  289. unsigned int FirmaIT::getContorD(){
  290.     return this->contorDepartamente;
  291. }
  292.  
  293. void FirmaIT::setNumeFirma(char* nume){
  294.     this->numeFirma = new char[30];
  295.     strcpy(this->numeFirma, nume);
  296. }
  297.  
  298. void FirmaIT::setAdresaFirma(char* adresa){
  299.     this->adresaFirma = new char[100];
  300.     strcpy(this->adresaFirma, adresa);
  301. }
  302.  
  303. char* FirmaIT::getNumeFirma(){
  304.     return this->numeFirma;
  305. }
  306.  
  307. char* FirmaIT::getAdresaFirma(){
  308.     return this->adresaFirma;
  309. }
  310.  
  311. bool FirmaIT::operator =(FirmaIT& firma){
  312.     if (firma.getAdresaFirma() == NULL || firma.getNumeFirma() == NULL || firma.getLimitaD() == 0)
  313.         return false;
  314.     strcpy(this->numeFirma, firma.getNumeFirma());
  315.     strcpy(this->adresaFirma, firma.getAdresaFirma());
  316.     this->limitaDepartamente = firma.getLimitaD();
  317.     this->contorDepartamente = firma.getContorD();
  318.     this->Departamente = firma.getDepartamente();
  319.     return true;
  320. }
  321.  
  322. #############################main.cpp#############################
  323. #include"FirmaIT.h"
  324.  
  325. void main(void){
  326.     Angajati Emp1("Post", "Nume angajat", 2500, 20, 2);
  327.     Departament Dep1("Nume departament", 15);
  328.     Dep1.addEmployed(Emp1);
  329.     FirmaIT Firm1("Nume firma", "Adresa", 4);
  330.     Firm1.adaugaDepartament(Dep1);
  331.  
  332.     vector<Departament> ListaDepartamente = Firm1.getDepartamente(); // diferentierea e absolut necesara
  333.     vector<Angajati> ListaAngajati1 = Dep1.getAngajati(); // la fel si aici
  334.  
  335.     printf("Firma %s, avand adresa %s, detine %d departamente, iar acestea fiind:\n", Firm1.getNumeFirma(), Firm1.getAdresaFirma(), Firm1.getContorD());
  336.     for (unsigned int i = 0; i < Firm1.getContorD(); i++)
  337.         printf("-%s\n", ListaDepartamente[i].getNumeDepartament());
  338.     printf("Departamentul %s are urmatorii angajati:\n", ListaDepartamente[0].getNumeDepartament());
  339.     for (unsigned int i = 0; i < Dep1.getEmpCount(); i++)
  340.         printf("-Nume: %s, Post: %s, Varsta: %d, Vechime: %d, Salariu: %d\n", ListaAngajati1[i].getNumeAngajat(), ListaAngajati1[i].getPost(), ListaAngajati1[i].getVarsta(), ListaAngajati1[i].getVechime(), ListaAngajati1[i].getWage()); // toate datele despre angajati
  341. }
Add Comment
Please, Sign In to add comment