GestioneStudenti.java
Created with JBuilder |
import javabook.*;
class GestioneStudenti {
// Attributi costanti
private static final String[] VOCE_MENU =
{ "Inserimento studente",
"Informazioni studente",
"Ricerca (per matricola)",
"Ricerca (per corso di Laurea)",
"Termina" };
private static final int MAX_ESAMI = 60;
// Attributi variabili
private static AnagraficaStudenti anagraficaStudenti;
private static MainWindow finestra;
public static void main(String[] args)
{
// Crea e visualizza la finestra dell'applicazione
finestra = new MainWindow("Gestione Studenti");
finestra.show();
// Inizializza l'anagrafica studenti
InputBox richiediDati = new InputBox(finestra, "Inizializzazione");
int numeroMaxStudenti =
richiediDati.getInteger("Numero massimo di studenti?");
anagraficaStudenti = new AnagraficaStudenti(numeroMaxStudenti);
// Ripeti fino a quando l'utente non desidera terminare
boolean ripeti = true;
while (ripeti) {
// Crea e visualizza il menu principale
ListBox menuPrincipale = new ListBox(finestra, "Menu Principale");
for (int i = 0; i < VOCE_MENU.length; ++i) {
menuPrincipale.addItem(VOCE_MENU[i]);
}
String scelta = menuPrincipale.getSelectedItem();
if (scelta != null) {
// Gestisce la scelta dell'utente
if (scelta.equals(VOCE_MENU[0])) {
aggiungiStudente();
} else if (scelta.equals(VOCE_MENU[1])) {
informazioniStudente();
} else if (scelta.equals(VOCE_MENU[2])) {
ricercaStudentePerMatricola();
} else if (scelta.equals(VOCE_MENU[3])) {
ricercaStudentiPerCorso();
} else {
ripeti = false;
}
}
}
System.exit(0);
}
// Metodo per gestire IO di aggiunta studente
private static void aggiungiStudente()
{
// Creazione della maschera di ingresso
String[] etichette =
{ "Nome", "Cognome", "Matricola", "Corso di Laurea" };
MultiInputBox richiediStudente =
new MultiInputBox(finestra, etichette);
// Richiesta e gestione dati
String[] datiInseriti = richiediStudente.getInputs();
int matricola = Integer.parseInt(datiInseriti[2]);
// Creazione di un nuovo studente e inserimento nell'anagrafica
Studente nuovoStudente =
new Studente(datiInseriti[0],
datiInseriti[1],
matricola,
datiInseriti[3],
MAX_ESAMI);
boolean ok = anagraficaStudenti.aggiungi(nuovoStudente);
MessageBox mb = new MessageBox(finestra);
if (ok) {
mb.show("Inserimento effettuato!");
} else {
mb.show("Capacità dell'anagrafica esaurita!");
}
}
// Metodo per gestire IO relativo alle informazioni sullo studente
private static void informazioniStudente()
{
// Le voci del menu studente
final String[] MENU_STUDENTE =
{ "Aggiungi Esame",
"Calcolo crediti conseguiti",
"Calcolo media esami sostenuti",
"Termina" };
// Richiede lo studente di cui modificare i dati
Studente studente = ricercaStudentePerMatricola();
if (studente != null) {
boolean ripeti = true;
while (ripeti) {
// Crea e visualizza le possibili scelte
ListBox menuStudente = new ListBox(finestra, "Menu Studente");
for (int i = 0; i < MENU_STUDENTE.length; ++i) {
menuStudente.addItem(MENU_STUDENTE[i]);
}
String scelta = menuStudente.getSelectedItem();
// Gestisce la scelta dell'utente
if (scelta != null) {
if (scelta.equals(MENU_STUDENTE[0])) {
richiediDatiEsame(studente);
} else if (scelta.equals(MENU_STUDENTE[1])) {
MessageBox mb = new MessageBox(finestra);
mb.show("Il totale dei crediti conseguiti fino ad ora è " +
studente.calcolaTotaleCrediti());
} else if (scelta.equals(MENU_STUDENTE[2])) {
MessageBox mb = new MessageBox(finestra);
mb.show("La media degli esami sostenuti è " +
studente.calcolaMediaEsami());
} else {
ripeti = false;
}
}
}
}
}
// Metodo per gestire IO di informazioni relative al singolo esame
private static void richiediDatiEsame(Studente studente)
{
// Creazione della maschera di ingresso
String[] etichette =
{ "Denominazione", "Crediti", "Votazione" };
MultiInputBox richiediEsame =
new MultiInputBox(finestra, etichette);
// Richiesta e gestione dati
String[] datiInseriti = richiediEsame.getInputs();
int crediti = Integer.parseInt(datiInseriti[1]);
int voto = Integer.parseInt(datiInseriti[2]);
// Creazione di un nuovo studente e inserimento nell'anagrafica
Esame nuovoEsame =
new Esame(datiInseriti[0], crediti, voto);
boolean ok = studente.aggiungiEsame(nuovoEsame);
MessageBox mb = new MessageBox(finestra);
if (ok) {
mb.show("Inserimento effettuato!");
} else {
mb.show("Capacità del piano di studi esaurita!");
}
}
// Metodo per gestire IO di ricerca per matricola
// Restituisce anche lo studente trovato, o null nel
// caso che lo studente non sia nell'anagrafica
private static Studente ricercaStudentePerMatricola()
{
// Creazione della maschera di ingresso
InputBox richiediMatricola =
new InputBox(finestra, "Ricerca studente");
// Richiesta dati
int matricola = richiediMatricola.getInteger("Matricola dello studente?");
// Ricerca dello studente nell'anagrafica
Studente studente = anagraficaStudenti.cercaPerMatricola(matricola);
OutputBox ob =
new OutputBox(finestra, "Risultato della ricerca");
if (studente != null) {
visualizzaDatiStudente(studente, ob);
}else {
ob.printLine("Lo studente con matricola " + matricola +
" non è presente nell'anagrafica studenti!");
}
ob.show();
ob.waitUntilClose();
return studente;
}
// Metodo per la ricerca di studenti afferenti ad un corso di laurea
private static void ricercaStudentiPerCorso()
{
// Creazione della maschera di ingresso
InputBox richiediCorso =
new InputBox(finestra, "Ricerca studenti per corso");
// Richiesta dati
String corso = richiediCorso.getString("Corso di Laurea?");
// Estrazione delle auto da revisionare
AnagraficaStudenti studentiDelCorso =
anagraficaStudenti.cercaStudentiDelCorso(corso);
// Creazione della maschera di uscita
OutputBox uscitaDati =
new OutputBox(finestra, "Studenti del corso " + corso);
if (studentiDelCorso.restituisciNumeroStudenti() > 0) {
studentiDelCorso.iniziaScansione();
Studente studente = studentiDelCorso.prossimoStudente();
while (studente != null) {
visualizzaDatiStudente(studente, uscitaDati);
studente = studentiDelCorso.prossimoStudente();
}
} else {
uscitaDati.printLine("Non vi sono studenti in questo corso di laurea");
}
uscitaDati.show();
uscitaDati.waitUntilClose();
}
// Metodo per visualizzare i dati di un automezzo
private static void visualizzaDatiStudente(
Studente s,
OutputBox ob)
{
ob.printLine("Nome: " + s.restituisciNome());
ob.printLine("Cognome: " + s.restituisciCognome());
ob.printLine("Matricola: " + s.restituisciMatricola());
ob.printLine("Corso: " + s.restituisciCorso());
ob.printLine("Esami superati: ");
}
}
GestioneStudenti.java
Created with JBuilder |