PageRenderTime 24ms CodeModel.GetById 11ms app.highlight 9ms RepoModel.GetById 2ms app.codeStats 0ms

/GestioneAnagrafe.java

https://bitbucket.org/tyrion/anagrafe
Java | 118 lines | 96 code | 14 blank | 8 comment | 18 complexity | 06036e82a87b0892df3b3cf5651953e7 MD5 | raw file
  1import fiji.io.*;
  2
  3class GestioneAnagrafe {
  4
  5    public static void main(String[] args) {
  6        System.out.println("Premere T per eseguire i test, C per creare un'Anagrafe");
  7        System.out.print(":");
  8        char comando = Lettore.in.leggiChar();
  9
 10        if (comando == 'T') {
 11            Test.testStudente();
 12            Test.testNodoLista();
 13            Test.testAnagrafe();
 14            Test.testGestioneAnagrafe();
 15        } else if (comando == 'C') {
 16            Anagrafe anagrafe = aggiungiDaTastiera();
 17            System.out.println("\nStampo l'Anagrafe:\n");
 18            stampa(anagrafe);
 19        }
 20    }
 21
 22
 23    public static void stampa(Anagrafe anagrafe) {
 24        stampa(anagrafe.getStudenti());
 25    }
 26
 27    public static void stampa(NodoLista s) {
 28        if (s == null)
 29            System.out.println();
 30        else {
 31            System.out.println(s.info);
 32            stampa(s.next);
 33        }
 34    }
 35
 36    // Data un'Anagrafe e un corso, restituisce una lista con tutti gli
 37    // studenti frequentanti quel corso.
 38    public static NodoLista stessoCorso(Anagrafe a, String corso) {
 39        NodoLista nuova, appoggio, n;
 40        nuova = new NodoLista();
 41        appoggio = nuova;
 42        n = a.getStudenti();
 43
 44        while(n != null) {
 45            if (n.info.getCorso().equals(corso)) {
 46                nuova.next = new NodoLista(n.info, null);
 47                nuova = nuova.next;
 48            }
 49            n = n.next;
 50        }
 51        return appoggio.next;
 52    }
 53
 54    // Data un'Anagrafe e un cognome, restituisce una lista di studenti con
 55    // quel cognome.
 56    public static NodoLista stessoCognome(Anagrafe a, String cognome) {
 57        NodoLista nuova, appoggio, n;
 58        nuova = new NodoLista();
 59        appoggio = nuova;
 60        n = a.getStudenti();
 61
 62        while (n != null) {
 63            if (n.info.getCognome().equals(cognome)) {
 64                nuova.next = new NodoLista(n.info, null);
 65                nuova = nuova.next;
 66            }
 67            n = n.next;
 68        }
 69        return appoggio.next;
 70    }
 71
 72    // Data un'Anagrafe e un corso, calcola ricorsivamente e restituisce
 73    // il totale degli studenti frequentanti quel corso.
 74    // Usa un metodo privato di appoggio.
 75    public static int totaleCorso(Anagrafe a, String corso) {
 76        return totaleCorso(a.getStudenti(), corso);
 77    }
 78
 79    private static int totaleCorso(NodoLista nodo, String corso) {
 80        int totale;
 81        if (nodo == null)
 82            totale = 0;
 83        else if (nodo.info.getCorso().equals(corso))
 84            totale = 1 + totaleCorso(nodo.next, corso);
 85        else
 86            totale = totaleCorso(nodo.next, corso);
 87        return totale;
 88    }
 89
 90
 91    // Crea e restituisce un'Anagrafe leggendo gli studenti da tastiera.
 92    public static Anagrafe aggiungiDaTastiera() {
 93        Anagrafe a;
 94        char aggiungi;
 95        String cognome, nome, corso;
 96        int anno, matricola;
 97        Studente studente;
 98        a = new Anagrafe();
 99        aggiungi = 's';
100        while(aggiungi == 's'){
101            System.out.print("Scrivi il cognome dello studente: ");
102            cognome = Lettore.in.leggiString();
103            System.out.print("Scrivi il nome dello studente: ");
104            nome = Lettore.in.leggiString();
105            System.out.print("Scrivi l'anno dello studente: ");
106            anno = Lettore.in.leggiInt();
107            System.out.print("Scrivi il corso dello studente: ");
108            corso = Lettore.in.leggiString();
109            System.out.print("Scrivi la matricola dello studente: ");
110            matricola = Lettore.in.leggiInt();
111            studente = new Studente(cognome, nome, anno, corso, matricola);
112            a.aggiungiStudente(studente);
113            System.out.print("Vuoi aggiungere un'altro studente? [s/N]: ");
114            aggiungi = Lettore.in.leggiChar();
115        }
116        return a;
117    }
118}