1 package kerho;
2 import java.io.OutputStream;
3 import java.util.Iterator;
4
5 import fi.jyu.mit.ohj2.IO;
6 import fi.jyu.mit.ohj2.Mjonot;
7
20 public class Naytto {
21
22
25 private final Kerho kerho;
26
27 private static enum Rivinvaihto {
28
29 EITULE,
30
31 TULEE
32 };
33
34
35
41 public Naytto(Kerho kerho) throws SailoException {
42 if ( kerho == null ) throw new SailoException("Kerho täytyy antaa!");
43 this.kerho = kerho;
44 }
45
46
47
52 private static void tulosta(String s, Rivinvaihto printlf) {
53 System.out.print(s);
54 if ( printlf == Rivinvaihto.TULEE ) System.out.println();
55 }
56
57
58
62 private static void tulosta(String s) {
63 tulosta(s,Rivinvaihto.TULEE);
64 }
65
66
67
71 private static void tulostaEiRV(String s) {
72 tulosta(s,Rivinvaihto.EITULE);
73 }
74
75
76
80 private static void tulostaRivinvaihtoja(int n) {
81 for (int i=0; i<n; i++) tulosta("");
82 }
83
84
85
98 private static void otsikko(char kirjain, String teksti) {
99 tulostaRivinvaihtoja(4);
100 tulosta("" + kirjain + ". " + teksti);
101 tulosta(Mjonot.tayta("=",1+2+teksti.length()));
102 tulostaRivinvaihtoja(2);
103 }
104
105
106
109 private void eiToimi() {
110 tulosta("Ei toimi vielä!");
111 IO.odota_jotakin();
112 }
113
114
115
119 private void avustus(char valinta) {
120 otsikko(valinta, "Avustus");
121 eiToimi();
122 }
123
124
125
130 private void tulosta(OutputStream os, final Jasen jasen) {
131 jasen.tulosta(os);
132 int jid = jasen.getTunnusNro();
133 for (Iterator<Harrastus> i=kerho.harrastusIterator(jid); i.hasNext(); ) {
134 Harrastus har = (Harrastus)i.next();
135 har.tulosta(os);
136 }
137 }
138
139
140
146 private void kysyTiedot(Jasen jasen) {
147 tulosta("Toistaiseksi osaan lisätä vain Aku Ankan");
148 jasen.vastaaAkuAnkka();
149 int lkm = Jasen.rand(0,5);
150 for (int i=0; i<lkm; i++) {
151 Harrastus har = new Harrastus(); har.vastaaPitsinNyplays(jasen.getTunnusNro());
153 kerho.lisaa(har);
154 }
155 }
156
157
158
162 private void lisaaUusiJasen(char valinta) {
163 otsikko(valinta,"Uuden jäsenen lisäys");
164 Jasen jasen = new Jasen();
165 jasen.rekisteroi();
166 kysyTiedot(jasen);
167
168 tulosta("Lisätäänkö");
169 tulosta(System.out,jasen);
170 tulostaEiRV(":");
171
172 if ( !IO.kylla_vastaus() ) {
173 kerho.poista(jasen.getTunnusNro());
174 return;
175 }
176
177 try {
178 kerho.lisaa(jasen);
179 } catch ( SailoException ex ) {
180 tulosta(ex.getMessage());
181 kerho.poista(jasen.getTunnusNro());
182 }
183 }
184
185
186
190 private void etsiJasenenTiedot(char valinta)
191 {
192 otsikko(valinta,"Etsi jäsenen tiedot");
193 eiToimi();
194 }
195
196
197
201 private void tulosteet(char valinta) {
202 otsikko(valinta,"Tulosteet");
203 tulosta("Toimii toistaiseksi vain näytölle");
204 tulosta("---------------------------------------------------------");
205
206 int i = 0;
207 for (Jasen jasen : kerho ) {
208 tulosta("Jäsen nro: " + i++);
210 tulosta(System.out,jasen);
211 tulosta("");
212 }
213
214 tulosta("---------------------------------------------------------");
215 IO.odota_jotakin();
216 }
217
218
219
223 private void tietojenKorjailu(char valinta) {
224 otsikko(valinta,"Tietojen korjailu");
225 eiToimi();
226 }
227
228
229
233 private void paivitaJasenmaksuja(char valinta) {
234 otsikko(valinta,"Päivitä jäsenmaksuja");
235 eiToimi();
236 }
237
238
239
242 private void paamenu() {
243 tulosta("\n\n\n\n");
244 tulosta("Jäsenrekisteri");
245 tulosta("==============");
246 tulosta("");
247 tulosta("Kerhossa " + kerho.getNimi()+ " on " +
248 kerho.getJasenia() + " jäsentä.");
249 tulosta("");
250 tulosta("Valitse:");
251 tulosta(" ? = avustus");
252 tulosta(" 0 = lopetus");
253 tulosta(" 1 = lisää uusi jäsen");
254 tulosta(" 2 = etsi jäsenen tiedot");
255 tulosta(" 3 = tulosteet");
256 tulosta(" 4 = tietojen korjailu");
257 tulosta(" 5 = päivitä jäsenmaksuja");
258 tulostaEiRV(" :");
259 }
260
261
262
267 public int paavalinta() {
268 char nappain;
269
270 while ( true ) {
271
272 paamenu();
273
274 nappain = IO.odota_nappain("?012345",IO.EI_OLETUSTA,IO.MERKKI_ISOKSI);
275
276 switch (nappain) {
277 case '?': avustus(nappain); break;
278 case '0': return 0;
279 case '1': lisaaUusiJasen(nappain); break;
280 case '2': etsiJasenenTiedot(nappain); break;
281 case '3': tulosteet(nappain); break;
282 case '4': tietojenKorjailu(nappain); break;
283 case '5': paivitaJasenmaksuja(nappain); break;
284 default : tulosta("Näin ei voi käydä!"); return 1;
285 }
286
287 }
288 }
289
290
291
294 private void logo() {
295 tulosta("");
296 tulosta(" ###################################");
297 tulosta(" # J Ä S E N R E K I S T E R I #");
298 tulosta(" # versio 9.95 #");
299 tulosta(" # Hannu Hanhi #");
300 tulosta(" ###################################");
301 }
302
303
304
307 public void ohjeet() {
308 logo();
309 tulosta("");
310 tulosta("Tällä ohjelmalla ylläpidetään kerhon jäsenrekisteriä.");
311 }
312
313
314
317 public void kiitokset() {
318 tulosta("");
319 tulosta("KIITOS KÄYTÖSTÄ JA TERVETULOA UUDELLEEN");
320 tulosta("");
321 tulosta("");
322 }
323
324
325
330 public String lueKerho() {
331 tulosta("Anna kerhon nimi>");
332 eiToimi();
333 try {
334 kerho.lueTiedostosta("kelmit");
335 } catch ( SailoException ex ) {
336 System.out.println(ex.getMessage());
337 return ex.getMessage();
338 }
339
340 return "";
341 }
342
343
344
349 public String talletaKerho() {
350 logo();
351
352 tulosta("");
353
354 tulosta("Talletus...");
355 try {
356 kerho.talleta();
357 } catch ( SailoException ex ) {
358 System.out.println(ex.getMessage());
359 return ex.getMessage();
360 }
361
362 return "";
363 }
364
365
366
370 public static void main(String[] args) {
371 Kerho kerho = new Kerho();
372
373 try {
374 Naytto naytto = new Naytto(kerho);
375
376 naytto.ohjeet();
377
378 naytto.lueKerho();
379
380 naytto.paavalinta();
381
382 naytto.talletaKerho();
383
384 naytto.kiitokset();
385 }
386 catch (Exception ex) {
387 System.out.println("VIRHE: " + ex.getMessage());
388 }
389 }
390
391 }
392
393