1
6 public class TuntiRekisteri {
7
8 public class TaulukkoTaysiException extends Exception { }
9
10 private Henkilo henkilot[];
11 private int lkm = 0;
12
13
17 public TuntiRekisteri(int maxAlkioita) {
18 if (maxAlkioita <= 0) maxAlkioita = 1;
19 henkilot = new Henkilo[maxAlkioita];
20 }
21
22
28 public void lisaaHenkilo(Henkilo henkilo) throws TaulukkoTaysiException {
29 if (lkm >= henkilot.length) throw new TaulukkoTaysiException();
30 if (henkilo == null) return;
31 if (etsiHenkilo(henkilo.getNimi()) != null) return;
32 henkilot[lkm] = henkilo;
33 lkm++;
34 }
35
36
41 public void lisaaTunnit(String nimi, int tunnit) {
42 Henkilo henkilo = etsiHenkilo(nimi);
43 if (henkilo == null) return;
44 henkilo.lisaaTunnit(tunnit);
45 }
46
47
52 public int getTunnit(String nimi) {
53 Henkilo henkilo = etsiHenkilo(nimi);
54 if (henkilo == null) return 0;
55 return henkilo.getTunnit();
56 }
57
58
66 public void poistaHenkilo(String nimi) {
67 int index = 0;
68 while (index < lkm) {
69 if (henkilot[index].getNimi().equals(nimi)) break;
70 index++;
71 }
72
73 lkm--;
74
75 henkilot[index] = henkilot[lkm];
76 henkilot[lkm] = null;
77 }
78
79
85 protected Henkilo etsiHenkilo(String nimi) {
86 for (int i = 0; i < lkm; i++){
87 if (henkilot[i].getNimi().equals(nimi)) return henkilot[i];
88 }
89 return null;
90 }
91
92
96 public static void main(String args[]) {
97 TuntiRekisteri rekisteri = new TuntiRekisteri(5);
98
99 try{
100 rekisteri.lisaaHenkilo(new Henkilo("Marjaana"));
101 rekisteri.lisaaHenkilo(new Henkilo("Liisa"));
102 rekisteri.lisaaHenkilo(new Henkilo("Mikko"));
103
104 rekisteri.lisaaTunnit("Marjaana", 7);
105 rekisteri.lisaaTunnit("Liisa", 6);
106 rekisteri.lisaaTunnit("Mikko", 9);
107
108 rekisteri.lisaaTunnit("Marjaana", 5);
109
110
112 Henkilo matti = new Henkilo("Matti");
113 rekisteri.lisaaHenkilo(matti);
114 matti = null;
115 rekisteri.lisaaTunnit("Matti", 8);
116
117 rekisteri.poistaHenkilo("Liisa");
118 matti = new Henkilo("Liisa");
119 rekisteri.lisaaHenkilo(matti);
120
121 rekisteri.lisaaTunnit("Matti", 8);
122
123 System.out.println("Matin tunnit: " + rekisteri.getTunnit("Matti"));
124 System.out.println("Liisan tunnit: " + rekisteri.getTunnit("Liisa"));
125
126 rekisteri.lisaaHenkilo(new Henkilo("Ville"));
127 rekisteri.lisaaHenkilo(new Henkilo("Kalle"));
128 System.out.println("Villen tunnit: " + rekisteri.getTunnit("Ville"));
129
130 } catch(TaulukkoTaysiException e){
131 System.err.println("Taulukko on täynnä!");
132 }
133 }
134 }
135