Ce cuprinde specificația proiectului?
Acest document descrie proiectul final al Modulului 5: tema, cerințele pe niveluri de notă, criteriile de evaluare și termenul de predare. Proiectul demonstrează toate competențele dobândite: funcții proprii, liste, fișiere text și interfață grafică.
Tema proiectului
Tema: Aplicație modulară completă în Python: gestionarea notelor cu funcții proprii, liste, fișiere text și interfață simplă.
Descrierea aplicației: utilizatorul introduce notele unei clase (numere întregi de la 1 la 10), iar aplicația le validează, le salvează într-un fișier text, calculează statistici (media, minimul, maximul, numărul de note peste medie) și afișează un raport complet, atât pe ecran, cât și într-un fișier de ieșire.
Analogia din viața reală:
Directorul unei școli nu ține notele în minte: el are un catalog (fișierul text), un profesor de matematică (funcția de medie) și un secretar (funcția de raport). Fiecare are un rol clar, iar împreună produc situația școlară a clasei. Exact așa este construită aplicația ta.
Cerințele pe niveluri de notă
| Nivel | Cerințe obligatorii | Tehnici folosite |
|---|---|---|
| Nota 5-6 Funcționalitate de bază | Meniu simplu de alegere; citirea notelor; calculul mediei, minimului și maximului; afișarea rezultatelor pe ecran | funcții proprii cu def și return, liste, structuri de decizie și repetitive |
| Nota 7-8 Validări și fișiere | Toate cerințele de la nota 5-6; validarea notelor în intervalul 1-10 cu refuzul valorilor greșite; salvarea notelor în fișier text; raportul scris și în fișier; numărarea notelor peste medie | validare cu buclă while, open/write/close, funcții suplimentare |
| Nota 9-10 Modularizare avansată | Toate cerințele de la nota 7-8; un modul (funcție) pentru fiecare sarcină, cu nume clare; interfață grafică simplă Tkinter pentru introducerea și afișarea notelor; statistici suplimentare (sortarea notelor, histogramă); documentație completă | arhitectură modulară, Tkinter (Tk, Label, Entry, Button, messagebox), docstring-uri și comentarii pe pași |
Reține: nivelul de notă se stabilește prin cerințele îndeplinite, nu prin cantitatea de cod. Un program de nota 10 este scurt, clar și complet documentat, nu lung și confuz.
Regula anti-AI - susținerea orală obligatorie
Atenție - regulă obligatorie:
Nota se acordă DOAR în urma susținerii orale în fața profesorului, unde elevul explică codul linie cu linie și răspunde la întrebări despre funcționarea programului. Un program care nu poate fi explicat de autor nu primește punctaj, indiferent de funcționalitatea lui. Programele generate integral cu instrumente de inteligență artificială, fără înțelegerea codului, sunt considerate nepredate.
Ce se verifică la susținere: rolul fiecărei funcții, funcționarea buclelor și a condițiilor, modul în care circulă datele între funcții, motivul pentru care fișierul se închide cu close(), comportarea programului la date greșite și posibile îmbunătățiri.
Criteriile de evaluare
| Criteriu | Detalii | Pondere |
|---|---|---|
| Corectitudinea funcțiilor | def, parametri, return, apeluri corecte | 30% |
| Validarea datelor | refuzul notelor în afara intervalului 1-10 | 15% |
| Fișiere text | salvare, citire, raport, close() corect | 15% |
| Interfața grafică (nivel superior) | Tkinter: fereastră, casete, butoane, mesaje | 15% |
| Documentația | docstring-uri, comentarii pe pași, structură lizibilă | 10% |
| Susținerea orală | explicarea codului linie cu linie, răspunsuri la întrebări | 15% |
Termen de predare: termenul se comunică în clasă cu cel puțin două săptămâni înainte de susținere; predarea se face prin prezentarea codului sursă, a fișierelor de date generate și a susținerii orale.
Structura recomandată a proiectului
def citire_note():
n = int(input())
v = list(map(int, input().split()))
return v
def validare(x):
return 1 <= x <= 10
def media(lista):
return sum(lista) / len(lista)
def minim(lista):
m = lista[0]
for x in lista:
if x < m:
m = x
return m
def maxim(lista):
m = lista[0]
for x in lista:
if x > m:
m = x
return m
def raport(lista):
print("Media:", round(media(lista), 2))
print("Minimul:", minim(lista))
print("Maximul:", maxim(lista))
note = citire_note()
raport(note)
Sfaturi: dezvoltă proiectul în etape - întâi funcționalitatea de bază (nota 5-6), apoi validările și fișierele (nota 7-8), apoi interfața grafică și documentația (nota 9-10). Testează fiecare etapă înainte de a trece la următoarea.