1 import java.io.*;
2 import java.util.*;
3 import kerho.*;
4
5 import fi.jyu.mit.ohj2.*;
6
28 public class Naytto {
29
30
33 private Kerho kerho;
34 private Jasen nykyhenkilo = null;
35
36
42 public Naytto(Kerho kerho) throws Exception {
43 if ( kerho == null ) throw new Exception("Kerho täytyy antaa!");
44 this.kerho = kerho;
45 }
46
47
52 private static void tulosta(String s, boolean printlf) {
53 System.out.print(s);
54 if ( printlf ) System.out.println();
55 }
56
57
61 private static void tulosta(String s) {
62 tulosta(s,true);
63 }
64
65
69 private static void tyhja(int n) {
70 for (int i=0; i<n; i++) tulosta("");
71 }
72
73
86 private static void otsikko(char kirjain, String teksti) {
87 tyhja(4);
88 tulosta("" + kirjain + ". " + teksti);
89 tulosta(Mjonot.tayta("=",1+2+teksti.length()));
90 tyhja(2);
91 }
92
93
96 void ei_toimi() {
97 tulosta("Ei toimi vielä!");
98 IO.odota_jotakin();
99 }
100
101
105 void avustus(char valinta) {
106 otsikko(valinta, "Avustus");
107 ei_toimi();
108 }
109
110
116 private void tulosta(OutputStream os, final Jasen jasen) {
117 jasen.tulosta(os);
118 int jid = jasen.getTunnus_nro();
119 for (Iterator i=kerho.harrastus_iterator(jid); i.hasNext(); ) {
120 Harrastus har = (Harrastus)i.next();
121 har.tulosta(os);
122 }
123 }
124
125
130 private boolean kysy_tiedot(Jasen jasen) {
131
132 int kenttia = jasen.getKenttia();
133 int eka = jasen.ekaKentta();
134
135 for (int k=eka; k<kenttia; k++ ) {
136 while ( true ) {
137 String oletus = jasen.anna(k);
138 String kysymys = jasen.getKysymys(k);
139 String vastaus = Syotto.kysy(kysymys,oletus);
140 vastaus = Mjonot.poista_2_tyhjat(vastaus).trim();
141 if ( k == eka && vastaus.equals("") ) return false;
142 if ( vastaus.equals("q") ) return false;
143 if ( vastaus.equals(".") ) return true;
144 String virhe = jasen.aseta(k,vastaus);
145 if ( virhe == null ) break;
146 System.out.println("Virhe: " + virhe);
147 }
148
149 }
150 return true;
151
152
162 }
164
165
166
172 private boolean kysy_uusi_jasen() {
173 Jasen jasen = new Jasen();
174 jasen.rekisteroi();
175 while ( kysy_tiedot(jasen) ) {
176 tulosta("Lisätäänkö");
177 tulosta(System.out,jasen);
178 tulosta(":",false);
179 if ( IO.kylla_vastaus() ) {
180 try {
181 kerho.lisaa(jasen);
182 nykyhenkilo = jasen;
183 return true;
184 } catch ( kerho.SailoException ex ) {
185 tulosta(ex.getMessage());
186 }
187 }
188 }
189 kerho.poista(jasen.getTunnus_nro());
190 return false;
191 }
192
193
197 void lisaa_uusi_jasen(char valinta) {
198 otsikko(valinta,"Uuden jäsenen lisäys");
199 while ( kysy_uusi_jasen() );
200 }
201
202
206 void etsi_jasenen_tiedot(char valinta)
207 {
208 otsikko(valinta,"Etsi jäsenen tiedot");
209 if ( nykyhenkilo != null ) {
211 System.out.println("Nykyinen henkilö:");
212 tulosta(System.out,nykyhenkilo);
213 }
214
215 String sallitut = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ";
216 Jasen apujasen = new Jasen();
217 sallitut = sallitut.substring(0,apujasen.getKenttia());
218
219 char c;
220
221 while ( true ) {
222 System.out.print("Valitse kenttä jonka mukaan etsitään (?=kenttälista uudel.) : ");
223 c = IO.odota_nappain("?"+sallitut,'q',IO.MERKKI_ISOKSI);
224 if ( c == 'q' ) return;
225 if ( c != '?') break;
226
227 for ( int k = apujasen.ekaKentta(); k < apujasen.getKenttia(); k++) {
228 System.out.println(" " + sallitut.charAt(k) + " = " + apujasen.getKysymys(k));
229 }
230
231 }
232
233 int k = sallitut.indexOf(c);
234
235 String kysymys = apujasen.getKysymys(k);
236 String vastaus = Syotto.kysy(kysymys,"");
237 if ( vastaus.equals("") ) return;
238 if ( vastaus.equalsIgnoreCase("q") ) return;
239
240 List loytyneet = kerho.etsi(k,vastaus);
241
242 System.out.println("Tähän täsmää " + loytyneet.size() + " jäsentä:");
243
244 for (Iterator i=loytyneet.iterator(); i.hasNext(); ) {
245 Jasen jasen = (Jasen)i.next();
246 nykyhenkilo = jasen;
247 tulosta(System.out,jasen);
248 IO.odota_jotakin();
249 }
250
251
252 }
253
254
255
259 void tulosteet(char valinta) {
260 otsikko(valinta,"Tulosteet");
261 tulosta("Toimii toistaiseksi vain näytölle");
262 tulosta("---------------------------------------------------------");
263
264 for (Iterator i=kerho.jasen_iterator(); i.hasNext(); ) {
265 Jasen jasen = (Jasen)i.next();
266 tulosta("Jäsen nro: " + jasen.getTunnus_nro());
267 tulosta(System.out,jasen);
268 tulosta("");
269 }
270
271 tulosta("---------------------------------------------------------");
272 IO.odota_jotakin();
273 }
274
275
276
280 void tietojen_korjailu(char valinta) {
281 otsikko(valinta,"Tietojen korjailu");
282 ei_toimi();
283 }
284
285
286
290 void paivita_jasenmaksuja(char valinta) {
291 otsikko(valinta,"Päivitä jäsenmaksuja");
292 ei_toimi();
293 }
294
295
296
299 public void paamenu() {
300 tulosta("\n\n\n\n");
301 tulosta("Jäsenrekisteri");
302 tulosta("==============");
303 tulosta("");
304 tulosta("Kerhossa " + kerho.getNimi()+ " on " +
305 kerho.getJasenia() + " jäsentä.");
306 tulosta("");
307 tulosta("Valitse:");
308 tulosta(" ? = avustus");
309 tulosta(" 0 = lopetus");
310 tulosta(" 1 = lisää uusi jäsen");
311 tulosta(" 2 = etsi jäsenen tiedot");
312 tulosta(" 3 = tulosteet");
313 tulosta(" 4 = tietojen korjailu");
314 tulosta(" 5 = päivitä jäsenmaksuja");
315 tulosta(" :",false);
316 }
317
318
323 int paavalinta() {
324 char nappain;
325
326 while ( true ) {
327
328 paamenu();
329
330 nappain = IO.odota_nappain("?012345",IO.EI_OLETUSTA,IO.MERKKI_ISOKSI);
331
332 switch (nappain) {
333 case '?': avustus(nappain); break;
334 case '0': return 0;
335 case '1': lisaa_uusi_jasen(nappain); break;
336 case '2': etsi_jasenen_tiedot(nappain); break;
337 case '3': tulosteet(nappain); break;
338 case '4': tietojen_korjailu(nappain); break;
339 case '5': paivita_jasenmaksuja(nappain); break;
340 default : tulosta("Näin ei voi käydä!"); return 1;
341 }
342
343 }
344 }
345
346
349 void logo() {
350 tulosta("");
351 tulosta(" ###################################");
352 tulosta(" # J Ä S E N R E K I S T E R I #");
353 tulosta(" # versio 9.95 #");
354 tulosta(" # Hannu Hanhi #");
355 tulosta(" ###################################");
356 }
357
358
359
362 void ohjeet() {
363 logo();
364 tulosta("");
365 tulosta("Tällä ohjelmalla ylläpidetään kerhon jäsenrekisteriä.");
366 }
367
368
369
372 void kiitokset() {
373 tulosta("");
374 tulosta("KIITOS KÄYTÖSTÄ JA TERVETULOA UUDELLEEN");
375 tulosta("");
376 tulosta("");
377 }
378
379
380
385 String lue_kerho() {
386 tulosta("Anna kerhon nimi>");
387 ei_toimi();
388 try {
389 kerho.lue_tiedostosta("kelmit");
390 } catch ( SailoException ex ) {
391 System.out.println(ex.getMessage());
392 return ex.getMessage();
393 }
394
395 return "";
396 }
397
398
399
404 String talleta_kerho() {
405 logo();
406
407 tulosta("");
408
409 tulosta("Talletus...");
410 try {
411 kerho.talleta();
412 } catch ( SailoException ex ) {
413 System.out.println(ex.getMessage());
414 return ex.getMessage();
415 }
416
417 return "";
418 }
419
420
421
425 public static void main(String[] args) {
426 Kerho kerho = new Kerho();
427
428 try {
429 Naytto naytto = new Naytto(kerho);
430
431 naytto.ohjeet();
432
433 naytto.lue_kerho();
434
435 naytto.paavalinta();
436
437 naytto.talleta_kerho();
438
439 naytto.kiitokset();
440 }
441 catch (Exception ex) {
442 System.out.println("VIRHE: " + ex.getMessage());
443 }
444 }
445
446 }
447
448