Lettori fissi

mercoledì 8 ottobre 2014

21° Applicazione: Gestione voti di una classe.

public class RegistroVoti {

    private String nomeCorso; // nome del corso
    private int voti[]; // array di voti

    public RegistroVoti(String nome, int arrayVoti[]) {

        this.nomeCorso = nome; // inizializza nome corso
        this.voti = arrayVoti; // memorizza voti
    }

    // ------------------------------------------------ Get | Set
    public String getNomeCorso() {
        return nomeCorso;
    }

    public void setNomeCorso(String nomeCorso) {
        this.nomeCorso = nomeCorso;
    }

    public int[] getVoti() {
        return voti;
    }

    public void setVoti(int[] voti) {
        this.voti = voti;
    }

    // ------------------------------------------------ Msg di benvenuto
    public void mostraMsg() {

        System.out.printf("Benvenuto al registro di\n%s!\n\n", getNomeCorso());
    }// fine mostra messaggio

   // ------------------------------------ Elabora voti
    // effettua varie operazioni sui dati
    public void elaboraVoti() {
        // visualizza array voti
        visualizzaVoti();

        // calcola media
        System.out.printf("\nMedia della classe: %.2f\n", calcolaMedia());

        // trova minimo, trova max
        System.out.printf("Voto più basso: %d\nVoto più alto: %d\n\n",
                trovaMin(), trovaMax());

        // visualizza diagramma a barre
        mostraDiagrammaABarre();

    }// fine metodo elebora voti

    // ------------------------------------ Diagramma a barre
    private void mostraDiagrammaABarre() {
        System.out.println("Distribuzione voti: ");
        // salvo freuenza per ognuno dei dieci voti:
        int frequenza[] = new int[11];
       
        // per ogni voto, incrementa la frequenzacorrispondente
        for (int voto : voti) {
            ++frequenza[voto / 10];
        }
       
        // per ogni frequenza di voto, mostra una barra
        for(int cnt = 0; cnt < frequenza.length; cnt++){
            if(cnt == 10) System.out.printf("%5d: ",   100);
            else
                System.out.printf("%02d-%02d: ", cnt * 10, cnt * 10 + 9);
           
            // visualizza barra
            for (int aster = 0; aster < frequenza[cnt]; aster++) {
                System.out.print("*");
            }
           
            System.out.println();
        }// fine for esterno
    }// fine diagramma a barre

    // ------------------------------------ calcola voto massimo
    public int trovaMax() {
        int votoMassimo = voti[0]; // per ipotesi, il primo voto risulta il massimo

        // itero su array voti
        for (int voto : voti) {
            // se il voto letto é minore di votoMinimo
            if (voto > votoMassimo)
                votoMassimo = voto; // assegno a votoMassimo il nuovo voto
        }// fine for

        return votoMassimo;
    }

    // ------------------------------------ calcola voto minimo
    public int trovaMin() {
        int votoMinimo = voti[0]; // per ipotesi, il primo voto risulta il
                                    // minore

        // itero su array voti
        for (int voto : voti) {
            // se il voto letto é minore di votoMinimo
            if (voto < votoMinimo)
                votoMinimo = voto; // assegno a votoMinimo il nuovo voto
        }// fine for

        return votoMinimo;
    }

    // ------------------------------------ calcola media voti
    public double calcolaMedia() {
        int totale = 0;
        // somma voti studenti
        for (int voto : voti) {
            totale += voto;
        }
        return (double) totale / voti.length;
    }

    // ------------------------------------ visualizza voti
    private void visualizzaVoti() {
        System.out.println("I voti sono: ");
        for (int studente = 0; studente < voti.length; studente++) {
            System.out.printf("Studente %2d: %3d\n", studente + 1, voti[studente]);
        }
    }
   
}// fine classe
public class TestRegistroVoti {

    public static void main(String[] args) {
       
        // array voti studenti
        int arrayVoti[] ={87, 68, 94, 100, 83, 78, 85, 91,76, 87};
       
        RegistroVoti mioRegistro = new RegistroVoti("Java_001", arrayVoti);
        mioRegistro.mostraMsg();
        mioRegistro.elaboraVoti();
    }// fine main
   
}// fine classe

Nessun commento:

Posta un commento