/GestioneAnagrafe.java
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}