FinestraTrovaAltoBasso

This commit is contained in:
La Programmatrice Verde
2025-12-04 11:31:13 +01:00
parent 19633da71a
commit a5695e7b06
4 changed files with 97 additions and 5 deletions

View File

@@ -55,6 +55,7 @@ public class FinestraInserisciAlunno extends BasicWindow {
GradeAnalyzer.isSaved = false; GradeAnalyzer.isSaved = false;
GradeAnalyzer.isEmpty = false; GradeAnalyzer.isEmpty = false;
double voto = -1; double voto = -1;
int lunghezzaMassimaNomeCognome = 21;
boolean validitaCampoNome = !campoNome.getText().isBlank() && !campoNome.getText().isEmpty(); boolean validitaCampoNome = !campoNome.getText().isBlank() && !campoNome.getText().isEmpty();
boolean validitaCampoCognome = !campoCognome.getText().isBlank() && !campoCognome.getText().isEmpty(); boolean validitaCampoCognome = !campoCognome.getText().isBlank() && !campoCognome.getText().isEmpty();
@@ -64,18 +65,31 @@ public class FinestraInserisciAlunno extends BasicWindow {
GlobalGUI.showErrorMessage("Il nome non può essere vuoto."); GlobalGUI.showErrorMessage("Il nome non può essere vuoto.");
} }
if (campoNome.getText().trim().length() > lunghezzaMassimaNomeCognome) {
GlobalGUI.showErrorMessage(
"Il nome non può superare la lunghezza di " + lunghezzaMassimaNomeCognome + " caratteri.");
}
if (!validitaCampoCognome) { if (!validitaCampoCognome) {
GlobalGUI.showErrorMessage("Il cognome non può essere vuoto."); GlobalGUI.showErrorMessage("Il cognome non può essere vuoto.");
} }
if (campoCognome.getText().trim().length() > lunghezzaMassimaNomeCognome) {
GlobalGUI.showErrorMessage(
"Il cognome non può superare la lunghezza di " + lunghezzaMassimaNomeCognome + " caratteri.");
}
if (!validitaCampoVoto) { if (!validitaCampoVoto) {
GlobalGUI.showErrorMessage("Il voto non può essere vuoto."); GlobalGUI.showErrorMessage("Il voto non può essere vuoto.");
} else { } else {
voto = voto(campoVoto.getText()); voto = voto(campoVoto.getText());
} }
if (voto != -1 && validitaCampoNome && validitaCampoCognome) { if (voto != -1 && validitaCampoNome && validitaCampoCognome
inserisciDati(campoNome.getText().trim(), campoCognome.getText().trim(), && campoNome.getText().trim().length() <= lunghezzaMassimaNomeCognome
&& campoCognome.getText().trim().length() <= lunghezzaMassimaNomeCognome) {
inserisciDati(campoNome.getText(), campoCognome.getText(),
voto); voto);
this.close(); this.close();

View File

@@ -33,7 +33,7 @@ public class FinestraPrincipale extends BasicWindow {
contenutoFinestra.addComponent(new MenuItem("Inserisci dati alunno", contenutoFinestra.addComponent(new MenuItem("Inserisci dati alunno",
() -> GlobalGUI.getGui().addWindowAndWait(new FinestraInserisciAlunno()))); () -> GlobalGUI.getGui().addWindowAndWait(new FinestraInserisciAlunno())));
contenutoFinestra.addComponent(new MenuItem("Trova voto più alto e più basso", contenutoFinestra.addComponent(new MenuItem("Trova voto più alto e più basso",
() -> openWindow("Trova voto più alto e più basso", "Questa è la finestra."))); () -> GlobalGUI.getGui().addWindowAndWait(new FinestraTrovaAltoBasso())));
contenutoFinestra.addComponent(new MenuItem("Promossi", () -> openWindow("Promossi", "Questa è la finestra."))); contenutoFinestra.addComponent(new MenuItem("Promossi", () -> openWindow("Promossi", "Questa è la finestra.")));
contenutoFinestra.addComponent(new EmptySpace()); contenutoFinestra.addComponent(new EmptySpace());

View File

@@ -4,10 +4,88 @@
*/ */
package gradeanalyzer; package gradeanalyzer;
import java.util.ArrayList;
import java.util.Collections;
import com.googlecode.lanterna.TerminalSize;
import com.googlecode.lanterna.graphics.Scrollable;
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.TextBox;
import com.googlecode.lanterna.gui2.TextGUIGraphics;
import com.googlecode.lanterna.gui2.Window;
import com.googlecode.lanterna.gui2.table.Table;
import com.googlecode.lanterna.gui2.table.TableCellRenderer;
/** /**
* *
* @author Verde * @author Verde
*/ */
public class FinestraTrovaAltoBasso { public class FinestraTrovaAltoBasso extends BasicWindow {
public FinestraTrovaAltoBasso() {
super("Trova voto più alto e più basso");
ArrayList<Window.Hint> 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));
Panel pannelloMigliorePeggiore = new Panel(new GridLayout(2));
Panel pannelloValutazioniOrdinate = new Panel(new LinearLayout(Direction.VERTICAL));
ArrayList<Valutazione> copiaValutazioni = new ArrayList<>();
for (Valutazione valutazione : GradeAnalyzer.valutazioni) {
copiaValutazioni.add(valutazione);
}
String[] nomi = new String[GradeAnalyzer.valutazioni.size()];
String[] cognomi = new String[GradeAnalyzer.valutazioni.size()];
double[] voti = new double[GradeAnalyzer.valutazioni.size()];
Collections.sort(copiaValutazioni);
for (int i = 0; i < copiaValutazioni.size(); i++) {
nomi[i] = copiaValutazioni.get(i).getNome();
cognomi[i] = copiaValutazioni.get(i).getCognome();
voti[i] = copiaValutazioni.get(i).getVoto();
}
pannelloMigliorePeggiore.addComponent(new Label("Voto migliore: "));
pannelloMigliorePeggiore.addComponent(
new Label(Double.toString(voti[voti.length - 1])));
pannelloMigliorePeggiore.addComponent(new Label("Voto peggiore: "));
pannelloMigliorePeggiore.addComponent(new Label(Double.toString(voti[0])));
// ---- Creazione tabella ----
Table<String> tabellaVoti = new Table<>("Nome", "Cognome", "Voto");
tabellaVoti.setPreferredSize(new TerminalSize(50, 10)); // larghezza 50, altezza 10
for (int i = 0; i < copiaValutazioni.size(); i++) {
tabellaVoti.getTableModel().addRow(nomi[i], cognomi[i], Double.toString(voti[i]));
}
pannelloValutazioniOrdinate.addComponent(tabellaVoti);
contenutoFinestra.addComponent(pannelloMigliorePeggiore);
contenutoFinestra.addComponent(new EmptySpace());
contenutoFinestra.addComponent(new Label("Tutte le valutazioni, in ordine crescente:"));
contenutoFinestra.addComponent(new EmptySpace());
contenutoFinestra.addComponent(pannelloValutazioniOrdinate);
contenutoFinestra.addComponent(new Button("Indietro", this::close));
this.setComponent(contenutoFinestra);
}
}
} }

View File

@@ -34,9 +34,9 @@ public class GradeAnalyzer {
static final String PATH_VOTI = "./src/gradeanalyzer/data/voti.txt"; static final String PATH_VOTI = "./src/gradeanalyzer/data/voti.txt";
static final String PATH_PROMOSSI = "./src/gradeanalyzer/data/promossi.txt"; static final String PATH_PROMOSSI = "./src/gradeanalyzer/data/promossi.txt";
static final String ERRORE_GENERICO = "Opzione non valida."; static final String ERRORE_GENERICO = "Opzione non valida.";
static ArrayList<Valutazione> valutazioni = valutazioniDaFile();
static boolean isSaved = true; static boolean isSaved = true;
static boolean isEmpty = true; static boolean isEmpty = true;
static ArrayList<Valutazione> valutazioni = valutazioniDaFile();
/* /*
* public static void main(String[] args) { * public static void main(String[] args) {