Teoria - Structuri în C++
Ce sunt structurile?
Structurile în C++ sunt tipuri de date definite de utilizator care permit gruparea mai multor variabile de tipuri diferite sub un singur nume. Sunt perfecte pentru organizarea datelor related și crearea de sisteme simple de gestionare.
Avantajele structurilor:
- Organizarea logică a datelor
- Reutilizarea codului
- Funcții membre pentru operații specifice
- Încapsularea datelor relacionate
- Cod mai curat și mai ușor de întreținut
Funcții membre în structuri
Funcțiile membre permit definirea operațiilor specifice pentru structură direct în interiorul acesteia. Acestea pot accesa direct membrii structurii și fac codul mai organizat.
Analiza Codului Original
Structurile definite în codul tău:
- Student - stochează datele unui student (id, nume, email, vârstă)
- Carte - stochează informații despre o carte (id, nume, dată, student_id)
- Biblioteca - gestionează colecția de cărți (array, funcții CRUD)
- Scoala - coordonează întregul sistem (meniu, input/output)
Probleme identificate în cod:
-
int emailîn Student - ar trebui să fiechar email[100] - Lipsa validării inputului utilizatorului
- Nu există opțiunea de ieșire din program (loop infinit)
- Cazul 3 din meniu nu este implementat
- Numele greșit "bibioteca" în loc de "biblioteca"
Funcționalități bine implementate:
- Adăugarea de cărți pentru un student
- Afișarea cărților unui student specific
- Căutarea unei cărți după ID
- Ștergerea unei cărți din bibliotecă
- Structura meniului interactiv
Exerciții Ușoare - Nivel Începător
Cinema - Gestionare Bilete
Creează un sistem simplu pentru un cinema cu filme și bilete.
Structuri necesare:
- Film: id, nume, durata, gen
- Bilet: id, film_id, loc, pret, nume_client
- Cinema: array-uri pentru filme și bilete
Funcționalități:
- Adăugare film nou
- Rezervare bilet pentru un film
- Afișare toate filmele disponibile
- Căutare bilete după numele clientului
Restaurant - Meniu și Comenzi
Sistem pentru gestionarea meniului și comenzilor unui restaurant.
Structuri necesare:
- Produs: id, nume, pret, categorie
- Comanda: id, produs_id, cantitate, nume_client, masa
- Restaurant: array-uri pentru produse și comenzi
Funcționalități:
- Adăugare produs în meniu
- Plasare comandă pentru o masă
- Afișare meniu după categorii
- Calculare total comandă
Parcare - Gestionare Locuri
Sistem simplu pentru gestionarea unei parcări auto.
Structuri necesare:
- Masina: numar, marca, model, culoare
- LocParcare: numar, ocupat, masina (dacă ocupat)
- Parcare: array cu locurile de parcare
Funcționalități:
- Parcare mașină pe primul loc liber
- Scoatere mașină din parcare
- Afișare starea parcării
- Căutare mașină după număr
Farmacie - Evidența Medicamentelor
Sistem pentru gestionarea stocului unei farmacii.
Structuri necesare:
- Medicament: id, nume, pret, stoc, data_expirare
- Vanzare: id, medicament_id, cantitate, total
- Farmacie: array-uri pentru medicamente și vânzări
Funcționalități:
- Adăugare medicament în stoc
- Vânzare medicament
- Verificare stoc disponibil
- Afișare medicamente pe punctul să expire
Librărie - Cărți și Vânzări
Sistem pentru o librărie cu evidența cărților și vânzărilor.
Structuri necesare:
- Carte: id, titlu, autor, pret, stoc
- Client: id, nume, email, telefon
- Vanzare: id, carte_id, client_id, data
- Librarie: array-uri pentru toate entitățile
Funcționalități:
- Adăugare carte nouă
- Înregistrare client nou
- Vânzare carte la client
- Căutare cărți după autor
Școală - Clase și Note
Sistem pentru gestionarea notelor elevilor dintr-o clasă.
Structuri necesare:
- Elev: id, nume, prenume, clasa
- Nota: id, elev_id, materie, valoare, data
- Scoala: array-uri pentru elevi și note
Funcționalități:
- Adăugare elev nou
- Adăugare notă pentru un elev
- Calculare medie elev la o materie
- Afișare toate notele unui elev
Sfaturi pentru exercițiile ușoare:
- Începe cu structurile simple și adaugă câmpurile necesare
- Implementează funcția de afișare pentru fiecare structură
- Folosește array-uri pentru colecții (maxim 100 elemente)
- Adaugă un meniu simplu cu 3-4 opțiuni
- Nu uita să validezi inputul utilizatorului
Exerciții Avansate
Magazin Online Complex
Sistem complet pentru un magazin online cu clienți, produse, comenzi și categorii.
Structuri necesare:
- Produs: id, nume, pret, stoc, categorie_id
- Client: id, nume, email, telefon, adresa
- Comanda: id, client_id, produse[], total, status
- Categorie: id, nume, descriere
- Magazin: toate array-urile și funcțiile
Evidența Angajaților
Sistem HR pentru gestionarea angajaților, departamentelor și salariilor.
Funcționalități avansate:
- Calculare salariu mediu pe departament
- Promovare angajat
- Istoric modificări salariu
- Rapoarte statistice
Sistem Hoteliere
Platform completă pentru rezervări hoteliere cu camere, oaspeți, servicii suplimentare.
Funcționalități complexe:
- Rezervări cu date de check-in/out
- Calculare preț cu servicii extra
- Istoric rezervări
- Statistici ocupare
Soluții Complete
Soluția: Cinema - Gestionare Bilete
Soluția: Restaurant - Meniu și Comenzi
Codul Original Complet Corectat
Îmbunătățiri majore aduse:
- Corectat tipul email din int în char[100]
- Adăugat inițializarea studentului la început
- Implementat complet opțiunea 3 (ștergere)
- Adăugat validări pentru toate inputurile
- Adăugat opțiuni noi: afișare toate cărțile, căutare
- Adăugat opțiunea de ieșire din program
- Mesaje informative și interfață mai prietenoasă
- Verificări de securitate (un student nu poate șterge cărțile altuia)