From 32296cfa5009ab14119e5aac2fad70c8c6f240d7 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Thu, 4 Dec 2025 11:46:34 +0100 Subject: [PATCH] FinestraPromossi --- src/gradeanalyzer/FinestraPrincipale.java | 15 +----- src/gradeanalyzer/FinestraPromossi.java | 66 ++++++++++++++++++++++- src/gradeanalyzer/GradeAnalyzer.java | 4 +- src/gradeanalyzer/data/voti.txt | 11 ++-- 4 files changed, 75 insertions(+), 21 deletions(-) diff --git a/src/gradeanalyzer/FinestraPrincipale.java b/src/gradeanalyzer/FinestraPrincipale.java index d909886..872c389 100644 --- a/src/gradeanalyzer/FinestraPrincipale.java +++ b/src/gradeanalyzer/FinestraPrincipale.java @@ -10,7 +10,6 @@ import com.googlecode.lanterna.gui2.BasicWindow; import com.googlecode.lanterna.gui2.Button; import com.googlecode.lanterna.gui2.Direction; import com.googlecode.lanterna.gui2.EmptySpace; -import com.googlecode.lanterna.gui2.Label; import com.googlecode.lanterna.gui2.LinearLayout; import com.googlecode.lanterna.gui2.Panel; import com.googlecode.lanterna.gui2.Window; @@ -34,7 +33,7 @@ public class FinestraPrincipale extends BasicWindow { () -> GlobalGUI.getGui().addWindowAndWait(new FinestraInserisciAlunno()))); contenutoFinestra.addComponent(new MenuItem("Trova voto più alto e più basso", () -> GlobalGUI.getGui().addWindowAndWait(new FinestraTrovaAltoBasso()))); - contenutoFinestra.addComponent(new MenuItem("Promossi", () -> openWindow("Promossi", "Questa è la finestra."))); + contenutoFinestra.addComponent(new MenuItem("Promossi", () -> GlobalGUI.getGui().addWindowAndWait(new FinestraPromossi()))); contenutoFinestra.addComponent(new EmptySpace()); @@ -47,16 +46,4 @@ public class FinestraPrincipale extends BasicWindow { this.setComponent(contenutoFinestra); } - - private static void openWindow(String title, String text) { - BasicWindow window = new BasicWindow(title); - - Panel panel = new Panel(new LinearLayout(Direction.VERTICAL)); - panel.addComponent(new Label(text)); - panel.addComponent(new Button("Chiudi", window::close)); - - window.setComponent(panel); - - GlobalGUI.getGui().addWindow(window); - } } \ No newline at end of file diff --git a/src/gradeanalyzer/FinestraPromossi.java b/src/gradeanalyzer/FinestraPromossi.java index 83e18f0..4f45c99 100644 --- a/src/gradeanalyzer/FinestraPromossi.java +++ b/src/gradeanalyzer/FinestraPromossi.java @@ -4,10 +4,74 @@ */ package gradeanalyzer; +import java.util.ArrayList; +import java.util.Collections; + +import com.googlecode.lanterna.TerminalSize; +import com.googlecode.lanterna.gui2.BasicWindow; +import com.googlecode.lanterna.gui2.Button; +import com.googlecode.lanterna.gui2.Direction; +import com.googlecode.lanterna.gui2.EmptySpace; +import com.googlecode.lanterna.gui2.GridLayout; +import com.googlecode.lanterna.gui2.Label; +import com.googlecode.lanterna.gui2.LinearLayout; +import com.googlecode.lanterna.gui2.Panel; +import com.googlecode.lanterna.gui2.Window; +import com.googlecode.lanterna.gui2.table.Table; + /** * * @author Verde */ -public class FinestraPromossi { +public class FinestraPromossi extends BasicWindow { + public FinestraPromossi() { + super("Promossi"); + ArrayList windowHints = new ArrayList<>(); + windowHints.add(Window.Hint.CENTERED); + this.setHints(windowHints); + + if (GradeAnalyzer.isEmpty) { + GlobalGUI.showErrorMessage("Inserire almeno la valutazione di uno studente prima di proseguire."); + this.close(); + } else { + if (!GradeAnalyzer.isSaved) { + GlobalGUI.showNoteMessage("Ci sono dati non salvati."); + GlobalGUI.salvaValutazioni(); + } + Panel contenutoFinestra = new Panel(new LinearLayout(Direction.VERTICAL)); + + final int MINIMO_PROMOZIONE = 6; + ArrayList promossi = new ArrayList<>(); + ArrayList copiaValutazioni = new ArrayList<>(); + for (Valutazione valutazione : GradeAnalyzer.valutazioni) { + copiaValutazioni.add(valutazione); + } + + Collections.sort(copiaValutazioni); + + for (Valutazione valutazione : copiaValutazioni) { + if (valutazione.getVoto() >= MINIMO_PROMOZIONE) { + promossi.add(valutazione); + } + } + + // ---- Creazione tabella ---- + Table tabellaVoti = new Table<>("Nome", "Cognome", "Voto"); + tabellaVoti.setPreferredSize(new TerminalSize(50, 10)); // larghezza 50, altezza 10 + + for (int i = 0; i < promossi.size(); i++) { + tabellaVoti.getTableModel().addRow(promossi.get(i).getNome(), promossi.get(i).getCognome(), Double.toString(promossi.get(i).getVoto())); + } + + GradeAnalyzer.salva(promossi, GradeAnalyzer.PATH_PROMOSSI); + + contenutoFinestra.addComponent(new Label("Tutte le valutazioni dei promossi, in ordine crescente:")); + contenutoFinestra.addComponent(new EmptySpace()); + contenutoFinestra.addComponent(tabellaVoti); + contenutoFinestra.addComponent(new Button("Indietro", this::close)); + + this.setComponent(contenutoFinestra); + } + } } \ No newline at end of file diff --git a/src/gradeanalyzer/GradeAnalyzer.java b/src/gradeanalyzer/GradeAnalyzer.java index 5f4550f..d7c0579 100644 --- a/src/gradeanalyzer/GradeAnalyzer.java +++ b/src/gradeanalyzer/GradeAnalyzer.java @@ -291,7 +291,7 @@ public class GradeAnalyzer { return messaggio; } - static void trovaMigliorePeggiore() { + /* static void trovaMigliorePeggiore() { ArrayList copiaValutazioni = new ArrayList<>(); for (Valutazione valutazione : valutazioni) { copiaValutazioni.add(valutazione); @@ -319,7 +319,7 @@ public class GradeAnalyzer { for (int i = 0; i < nomi.length; i++) { System.out.println(String.format(stringaFormattazione, nomi[i], cognomi[i], Double.toString(voti[i]))); } - } + }*/ static void promossi() { final int MINIMO_PROMOZIONE = 6; diff --git a/src/gradeanalyzer/data/voti.txt b/src/gradeanalyzer/data/voti.txt index d741bd4..e61ade7 100644 --- a/src/gradeanalyzer/data/voti.txt +++ b/src/gradeanalyzer/data/voti.txt @@ -1,4 +1,7 @@ -Mario;Rossi;7 -Anna;Bianchi;5 -Luca;Verdi;6 -Mia;Chan;9 \ No newline at end of file +Mario;Rossi;7.0 +Anna;Bianchi;5.0 +Luca;Verdi;6.0 +Mia;Chan;9.0 +stefano;okaka;7.0 +toto;dinatale;2.0 +Bogdan;Agiorgiuculesi;5.0