/GestioneAnagrafe.java

https://bitbucket.org/tyrion/anagrafe · Java · 118 lines · 96 code · 14 blank · 8 comment · 18 complexity · 06036e82a87b0892df3b3cf5651953e7 MD5 · raw file

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