Advertisement
Guest User

POO

a guest
Oct 28th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. #define m 50
  4. using namespace std;
  5.  
  6. class Persoana {
  7.  
  8. protected:
  9. char *nume, *pren;
  10. int varsta;
  11.  
  12. public:
  13.  
  14. Persoana() {
  15. nume = new char[m];
  16. pren = new char[m];
  17. }
  18.  
  19. ~Persoana() {
  20. if(nume != NULL)
  21. delete nume;
  22. if(pren != NULL)
  23. delete pren;
  24. }
  25.  
  26. };
  27.  
  28. class Angajat : public Persoana {
  29.  
  30. Angajat *rad, *urm;
  31.  
  32. protected:
  33. char *depart;
  34. int vechime;
  35.  
  36. public :
  37.  
  38. //doar se aloca memorie pentru campurile persoanei si angajatului
  39. Angajat() : Persoana() {
  40. depart = new char[m];
  41. }
  42.  
  43.  
  44. Angajat(char *nm, char *pr, int v, char *dep, int vech) {
  45. depart = new char[m];
  46. strcpy(nume, nm);
  47. strcpy(pren, pr);
  48. varsta = v;
  49. strcpy(depart, dep);
  50. vechime = vech;
  51. rad = NULL;
  52. }
  53.  
  54. ~Angajat() {
  55. if(depart != NULL)
  56. delete depart;
  57. }
  58.  
  59. void citireAngajat() {
  60. cout << "Introduceti numele: ";
  61. cin.getline(nume, m);
  62. cout << "Introduceti prenumele: ";
  63. cin.getline(pren, m);
  64. cout << "Introduceti varsta: ";
  65. cin >> varsta;
  66. cin.ignore();
  67. cout << "Introduceti departamentul: ";
  68. cin.getline(depart, m);
  69. cout << "Introduceti vechimea: ";
  70. cin >> vechime;
  71. }
  72.  
  73. void adaugareAngajat() {
  74. citireAngajat();
  75. Angajat *ang = new Angajat(nume, pren, varsta, depart, vechime);
  76. ang->urm = rad;
  77. rad = ang;
  78. }
  79.  
  80. void afisareAngajati() {
  81. Angajat *a = rad;
  82.  
  83. cout << "\n-----Informatii despre angajati-----\n\n";
  84. while(a != NULL) {
  85. cout << "\tNume: " << a-> nume << endl;
  86. cout << "\tPrenume: " << a->pren << endl;
  87. cout << "\tVarsta: " << a->varsta << endl;
  88. cout << "\tDepartament: " << a->depart << endl;
  89. cout << "\tVechime: " << a->vechime << endl << endl;
  90.  
  91. a = a ->urm;
  92. }
  93. }
  94. };
  95.  
  96.  
  97. class Sef : public Angajat {
  98.  
  99. int angajati;
  100. char *proiect;
  101. Sef *rad, *urm;
  102.  
  103. public:
  104. Sef() : Angajat() {
  105. proiect = new char[m];
  106. }
  107.  
  108. Sef(char *nm, char *pr, int v, char *dep, int vech, int ang, char *proi) : Angajat(nm, pr, v, dep, vech){
  109. proiect = new char[m];
  110. angajati = ang;
  111. strcpy(proiect, proi);
  112. rad = NULL;
  113. }
  114.  
  115. ~Sef() {
  116. if(proiect != NULL)
  117. delete proiect;
  118. }
  119.  
  120. void adaugareSef() {
  121. citireAngajat();
  122. cout<< "Introduceti numarul de angajati: ";
  123. cin >> angajati;
  124. cin.ignore();
  125. cout << "Introduceti proiectul: ";
  126. cin.getline(proiect, m);
  127.  
  128. Sef *sf = new Sef(nume, pren, varsta, depart, vechime, angajati, proiect);
  129. sf->urm = rad;
  130. rad = sf;
  131.  
  132. }
  133.  
  134. void afisareSefi() {
  135.  
  136. cout << "\n-----Informatii despre sefi-----\n\n";
  137. Sef *a = rad;
  138. while(a != NULL) {
  139. cout << "\tNume: " << a-> nume << endl;
  140. cout << "\tPrenume: " << a->pren << endl;
  141. cout << "\tVarsta: " << a->varsta << endl;
  142. cout << "\tDepartament: " << a->depart << endl;
  143. cout << "\tVechime: " << a->vechime << endl;
  144. cout<< "\tNumar de angajati: " << a->angajati << endl;
  145. cout << "\tNumele proiectului: " << a->proiect << endl << endl;
  146.  
  147. a = a ->urm;
  148. }
  149. }
  150.  
  151. };
  152.  
  153.  
  154.  
  155.  
  156. void meniu()
  157. {
  158. cout<< "\n\t------MENIU------\n";
  159. cout<< "\t1.Adaugare angajat\n";
  160. cout<< "\t2.Afisare angajati\n";
  161. cout<< "\t3.Adaugare sef\n";
  162. cout<< "\t4.Afisare sefi\n";
  163. cout<<"\n\tAlegeti optiunea dorita: ";
  164. }
  165.  
  166.  
  167. int main()
  168. {
  169. int opt;
  170. Angajat *a = new Angajat();
  171. Sef *s = new Sef();
  172.  
  173. do {
  174. meniu();
  175. cin >> opt;
  176. cin.ignore();
  177.  
  178. switch(opt) {
  179. case 1:
  180. a ->adaugareAngajat();
  181. break;
  182.  
  183. case 2:
  184. a->afisareAngajati();
  185. break;
  186. case 3:
  187. s ->adaugareSef();
  188. break;
  189. case 4:
  190. s ->afisareSefi();
  191. break;
  192.  
  193. }
  194. }while(opt != 0);
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement