1 package kerho;
2 import java.io.OutputStream;
3
4 import fi.jyu.mit.ohj2.IO;
5 import fi.jyu.mit.ohj2.Mjonot;
6
19 public class Naytto {
20
21
24 private final Kerho kerho;
25
26 private static enum Rivinvaihto {
27
28 EITULE,
29
30 TULEE
31 };
32
33
34
40 public Naytto(Kerho kerho) throws SailoException {
41 if ( kerho == null ) throw new SailoException("Kerho täytyy antaa!");
42 this.kerho = kerho;
43 }
44
45
46
51 private static void tulosta(String s, Rivinvaihto printlf) {
52 System.out.print(s);
53 if ( printlf == Rivinvaihto.TULEE ) System.out.println();
54 }
55
56
57
61 private static void tulosta(String s) {
62 tulosta(s,Rivinvaihto.TULEE);
63 }
64
65
66
70 private static void tulostaEiRV(String s) {
71 tulosta(s,Rivinvaihto.EITULE);
72 }
73
74
75
79 private static void tulostaRivinvaihtoja(int n) {
80 for (int i=0; i<n; i++) tulosta("");
81 }
82
83
84
97 private static void otsikko(char kirjain, String teksti) {
98 tulostaRivinvaihtoja(4);
99 tulosta("" + kirjain + ". " + teksti);
100 tulosta(Mjonot.tayta("=",1+2+teksti.length()));
101 tulostaRivinvaihtoja(2);
102 }
103
104
105
108 private void eiToimi() {
109 tulosta("Ei toimi vielä!");
110 IO.odota_jotakin();
111 }
112
113
114
118 private void avustus(char valinta) {
119 otsikko(valinta, "Avustus");
120 eiToimi();
121 }
122
123
124
129 private void tulosta(OutputStream os, final Jasen jasen) {
130 jasen.tulosta(os);
131 }
132
133
134
139 private void kysyTiedot(Jasen jasen) {
140 tulosta("Toistaiseksi osaan lisätä vain Aku Ankan");
141 jasen.vastaaAkuAnkka();
142 }
143
144
145
149 private void lisaaUusiJasen(char valinta) {
150 otsikko(valinta,"Uuden jäsenen lisäys");
151 Jasen jasen = new Jasen();
152 jasen.rekisteroi();
153 kysyTiedot(jasen);
154
155 tulosta("Lisätäänkö");
156 tulosta(System.out,jasen);
157 tulostaEiRV(":");
158
159 if ( !IO.kylla_vastaus() ) {
160 kerho.poista(jasen.getTunnusNro());
161 return;
162 }
163
164 try {
165 kerho.lisaa(jasen);
166 } catch ( SailoException ex ) {
167 tulosta(ex.getMessage());
168 kerho.poista(jasen.getTunnusNro());
169 }
170 }
171
172
173
177 private void etsiJasenenTiedot(char valinta)
178 {
179 otsikko(valinta,"Etsi jäsenen tiedot");
180 eiToimi();
181 }
182
183
184
188 private void tulosteet(char valinta) {
189 otsikko(valinta,"Tulosteet");
190 tulosta("Toimii toistaiseksi vain näytölle");
191 tulosta("---------------------------------------------------------");
192
193 for (int i=0; i<kerho.getJasenia(); i++) {
194 Jasen jasen = kerho.annaJasen(i);
195 tulosta("Jäsen nro: " + i);
196 tulosta(System.out,jasen);
197 tulosta("");
198 }
199
200 tulosta("---------------------------------------------------------");
201 IO.odota_jotakin();
202 }
203
204
205
209 private void tietojenKorjailu(char valinta) {
210 otsikko(valinta,"Tietojen korjailu");
211 eiToimi();
212 }
213
214
215
219 private void paivitaJasenmaksuja(char valinta) {
220 otsikko(valinta,"Päivitä jäsenmaksuja");
221 eiToimi();
222 }
223
224
225
228 private void paamenu() {
229 tulosta("\n\n\n\n");
230 tulosta("Jäsenrekisteri");
231 tulosta("==============");
232 tulosta("");
233 tulosta("Kerhossa " + kerho.getNimi()+ " on " +
234 kerho.getJasenia() + " jäsentä.");
235 tulosta("");
236 tulosta("Valitse:");
237 tulosta(" ? = avustus");
238 tulosta(" 0 = lopetus");
239 tulosta(" 1 = lisää uusi jäsen");
240 tulosta(" 2 = etsi jäsenen tiedot");
241 tulosta(" 3 = tulosteet");
242 tulosta(" 4 = tietojen korjailu");
243 tulosta(" 5 = päivitä jäsenmaksuja");
244 tulostaEiRV(" :");
245 }
246
247
248
253 public int paavalinta() {
254 char nappain;
255
256 while ( true ) {
257
258 paamenu();
259
260 nappain = IO.odota_nappain("?012345",IO.EI_OLETUSTA,IO.MERKKI_ISOKSI);
261
262 switch (nappain) {
263 case '?': avustus(nappain); break;
264 case '0': return 0;
265 case '1': lisaaUusiJasen(nappain); break;
266 case '2': etsiJasenenTiedot(nappain); break;
267 case '3': tulosteet(nappain); break;
268 case '4': tietojenKorjailu(nappain); break;
269 case '5': paivitaJasenmaksuja(nappain); break;
270 default : tulosta("Näin ei voi käydä!"); return 1;
271 }
272
273 }
274 }
275
276
277
280 private void logo() {
281 tulosta("");
282 tulosta(" ###################################");
283 tulosta(" # J Ä S E N R E K I S T E R I #");
284 tulosta(" # versio 9.95 #");
285 tulosta(" # Hannu Hanhi #");
286 tulosta(" ###################################");
287 }
288
289
290
293 public void ohjeet() {
294 logo();
295 tulosta("");
296 tulosta("Tällä ohjelmalla ylläpidetään kerhon jäsenrekisteriä.");
297 }
298
299
300
303 public void kiitokset() {
304 tulosta("");
305 tulosta("KIITOS KÄYTÖSTÄ JA TERVETULOA UUDELLEEN");
306 tulosta("");
307 tulosta("");
308 }
309
310
311
316 public String lueKerho() {
317 tulosta("Anna kerhon nimi>");
318 eiToimi();
319 try {
320 kerho.lueTiedostosta("kelmit");
321 } catch ( SailoException ex ) {
322 System.out.println(ex.getMessage());
323 return ex.getMessage();
324 }
325
326 return "";
327 }
328
329
330
335 public String talletaKerho() {
336 logo();
337
338 tulosta("");
339
340 tulosta("Talletus...");
341 eiToimi();
342 try {
343 kerho.talleta();
344 } catch ( SailoException ex ) {
345 System.out.println(ex.getMessage());
346 return ex.getMessage();
347 }
348
349 return "";
350 }
351
352
353
357 public static void main(String[] args) {
358 Kerho kerho = new Kerho();
359
360 try {
361 Naytto naytto = new Naytto(kerho);
362
363 naytto.ohjeet();
364
365 naytto.lueKerho();
366
367 naytto.paavalinta();
368
369 naytto.talletaKerho();
370
371 naytto.kiitokset();
372 }
373 catch (Exception ex) {
374 System.out.println("VIRHE: " + ex.getMessage());
375 }
376 }
377
378 }
379
380