Acest proiect implementează o aplicație orientată pe obiecte în C++ care simulează fluxul de lucru al unui service pentru repararea electrocasnicelor.
Aplicația gestionează angajații, electrocasnicele și cererile de reparație și simulează modul în care reparațiile sunt alocate și procesate în timp.
-
gestionarea angajaților:
- tehnicieni
- recepționeri
- supervizori
-
gestionarea electrocasnicelor:
- mărci
- modele
- specificații tehnice
-
procesarea cererilor de reparație
-
alocarea automată a cererilor către tehnicienii disponibili
-
simularea procesului de reparare în timp
-
generarea de rapoarte și statistici
-
validarea datelor de intrare și gestionarea erorilor
-
scenarii de test folosind fișiere de intrare CSV
Sistemul simulează procesul de reparare în timp.
La fiecare unitate de timp aplicația:
- procesează cererile de reparație active
- reduce durata rămasă pentru reparațiile în curs
- finalizează cererile pentru care reparația s-a terminat
- alocă cererile aflate în așteptare tehnicienilor disponibili
Angajat.*– clase pentru angajațiTehnician.*,Receptioner.*,Supervizor.*– tipuri de angajațiElectrocasnic.*– clasa de bază pentru aparateFrigider.*,Masina_de_spalat.*,Televizor.*– tipuri de aparateCerere_reparatie.*– gestionarea cererilorService_Manager.*– logica principală a service-uluiMeniu.*– interfața aplicațieimain.cpp– punctul de intrare în program
Fișierele de test se găsesc în directorul tests/.
Acest folder contine 5 fisiere de test care verifica functionalitatile principale ale aplicatiei FixItNow, testand atat cazuri normale, cat si situatii care genereaza erori.
Scop: Test functional complet - demonstrare toate functionalitatile de baza
Continut:
- Angajati: 8 (2 supervizori, 2 receptioneri, 4 tehnicieni)
- Electrocasnice: 8 aparate (3 frigidere Samsung, 2 masini de spalat Arctic, 3 TV-uri)
- Cereri: 12 cereri valide si 1 invalida cu complexitati variate (1-4)
Verifica:
- Import complet din fisier CSV
- Service functional (minim 3 tehnicieni, 1 receptioner, 1 supervizor)
- Alocare automata cereri la tehnicieni
- Incarcarea relativ egala cu cereri a tehnicienilor
- Simulare completa cu finalizare cereri
- Generare toate cele 3 rapoarte CSV
Scop: Verificare incarcare relativ egala a tehnicienilor
Continut:
- Angajati: 5 (1 supervizor, 1 receptioner, 3 tehnicieni specializati pe Televizor:LG)
- Electrocasnice: 1 TV LG OLED55
- Cereri: 21 cereri TV LG cu complexitati 1-3
Verifica:
- Algoritm de asignare corect (durata totala minima)
- Fiecare tehnician primeste aproximativ 7 cereri (21/3=7) cu diferente de maxim 1-2 cereri
- Tehnicienii nu primesc mai mult de 3 cereri simultan
Scop: Test demisie tehnician cu cereri active in timpul simularii
Continut:
- Angajati: 6 (1 supervizor, 1 receptioner, 4 tehnicieni)
- Electrocasnice: 1 frigider Samsung, 1 TV LG, 1 masina de spalat Arctic
- Cereri: 11 cereri cu complexitati 3-5 (pentru durate lungi)
Verifica:
- Demisie tehnician in timpul lucrului
- Tehnician marcat inactiv (nu mai primeste cereri noi)
- Tehnicianul continua sa finalizeze cererile active
- Tehnician sters automat cand nu mai are cereri active
- Cereri in asteptare realocate la tehnicienii ramasi
- Cerere care va ramane in asteptare, deoarece nu mai exista tehnician specializat
Cum se foloseste:
- Incarca fisierul
- Porneste simulare pas cu pas
- Dupa 2-3 tic-uri, apasa M sau m (meniu in simulare)
- Alege optiunea 1 (Demisie angajat)
- Introdu CNP: 1950303123456 (Georgescu)
- Continua simularea (ENTER)
- Se observa ca tehnicianul:
- Nu mai primeste cereri noi
- Continua sa proceseze cererile active
- E sters automat la finalizare
Scop: Test gestionare erori - continuare procesare dupa erori
Continut:
- Angajati invalizi: cazuri diferite de eroare
- CNP prea scurt
- CNP cifra 1 invalida (3, 7)
- CNP luna invalida (00, 13)
- CNP zi invalida (00, 32, 30 feb)
- CNP cod judet invalid (48, 99)
- Nume/prenume < 3 caractere sau > 30 caractere
- Varsta la angajare < 16 ani
- Tehnician fara specializari
- Angajati valizi: 5 (pentru comparatie)
- Cereri invalide: 5 (modele inexistente, complexitate 0)
- Cereri valide: 3
Verifica:
- Mesaje eroare clare pentru fiecare linie invalida
- Afisare numar linie si cauza erorii
- Continuare procesare dupa erori (nu se opreste)
- Angajatii valizi sunt adaugati corect
- Raport aparate nereparabile functional
Scop: Test service nefunctional - angajati insuficienti
Continut:
- Angajati: 4 (1 supervizor, 1 receptioner, doar 2 tehnicieni )
- Electrocasnice: 2
- Cereri: 2
Verifica:
- Functia
poate_functiona()returneazafalse - Mesaj clar: "Service-ul NU poate functiona"
- Explicatie cauza: "minim 3 tehnicieni necesari"
- Aplicatia nu se blocheaza, doar afiseaza avertisment
Procesare cereridin meniu nu va functiona pana nu sunt adaugati destui angajati
Programul poate fi compilat folosind un compilator C++ standard:
g++ *.cpp -o fixitnow
./fixitnow