/GestioneAnagrafe.java
https://bitbucket.org/tyrion/anagrafe · Java · 118 lines · 96 code · 14 blank · 8 comment · 18 complexity · 06036e82a87b0892df3b3cf5651953e7 MD5 · raw file
- import fiji.io.*;
- class GestioneAnagrafe {
- public static void main(String[] args) {
- System.out.println("Premere T per eseguire i test, C per creare un'Anagrafe");
- System.out.print(":");
- char comando = Lettore.in.leggiChar();
- if (comando == 'T') {
- Test.testStudente();
- Test.testNodoLista();
- Test.testAnagrafe();
- Test.testGestioneAnagrafe();
- } else if (comando == 'C') {
- Anagrafe anagrafe = aggiungiDaTastiera();
- System.out.println("\nStampo l'Anagrafe:\n");
- stampa(anagrafe);
- }
- }
- public static void stampa(Anagrafe anagrafe) {
- stampa(anagrafe.getStudenti());
- }
- public static void stampa(NodoLista s) {
- if (s == null)
- System.out.println();
- else {
- System.out.println(s.info);
- stampa(s.next);
- }
- }
- // Data un'Anagrafe e un corso, restituisce una lista con tutti gli
- // studenti frequentanti quel corso.
- public static NodoLista stessoCorso(Anagrafe a, String corso) {
- NodoLista nuova, appoggio, n;
- nuova = new NodoLista();
- appoggio = nuova;
- n = a.getStudenti();
- while(n != null) {
- if (n.info.getCorso().equals(corso)) {
- nuova.next = new NodoLista(n.info, null);
- nuova = nuova.next;
- }
- n = n.next;
- }
- return appoggio.next;
- }
- // Data un'Anagrafe e un cognome, restituisce una lista di studenti con
- // quel cognome.
- public static NodoLista stessoCognome(Anagrafe a, String cognome) {
- NodoLista nuova, appoggio, n;
- nuova = new NodoLista();
- appoggio = nuova;
- n = a.getStudenti();
- while (n != null) {
- if (n.info.getCognome().equals(cognome)) {
- nuova.next = new NodoLista(n.info, null);
- nuova = nuova.next;
- }
- n = n.next;
- }
- return appoggio.next;
- }
- // Data un'Anagrafe e un corso, calcola ricorsivamente e restituisce
- // il totale degli studenti frequentanti quel corso.
- // Usa un metodo privato di appoggio.
- public static int totaleCorso(Anagrafe a, String corso) {
- return totaleCorso(a.getStudenti(), corso);
- }
- private static int totaleCorso(NodoLista nodo, String corso) {
- int totale;
- if (nodo == null)
- totale = 0;
- else if (nodo.info.getCorso().equals(corso))
- totale = 1 + totaleCorso(nodo.next, corso);
- else
- totale = totaleCorso(nodo.next, corso);
- return totale;
- }
- // Crea e restituisce un'Anagrafe leggendo gli studenti da tastiera.
- public static Anagrafe aggiungiDaTastiera() {
- Anagrafe a;
- char aggiungi;
- String cognome, nome, corso;
- int anno, matricola;
- Studente studente;
- a = new Anagrafe();
- aggiungi = 's';
- while(aggiungi == 's'){
- System.out.print("Scrivi il cognome dello studente: ");
- cognome = Lettore.in.leggiString();
- System.out.print("Scrivi il nome dello studente: ");
- nome = Lettore.in.leggiString();
- System.out.print("Scrivi l'anno dello studente: ");
- anno = Lettore.in.leggiInt();
- System.out.print("Scrivi il corso dello studente: ");
- corso = Lettore.in.leggiString();
- System.out.print("Scrivi la matricola dello studente: ");
- matricola = Lettore.in.leggiInt();
- studente = new Studente(cognome, nome, anno, corso, matricola);
- a.aggiungiStudente(studente);
- System.out.print("Vuoi aggiungere un'altro studente? [s/N]: ");
- aggiungi = Lettore.in.leggiChar();
- }
- return a;
- }
- }