1   package kerho;
2   import fi.jyu.mit.ohj2.IO;
3   /**
4    * Käyttöliittymäluokka Kerho-ohjelmaan
5    * Kerho-ohjelman menujen testaus.  Varsinaiset toiminnot puuttuvat.<br>
6    * Tarvitsee avukseen JAR-paketin:
7    * <a href="http://www.mit.jyu.fi/vesal/kurssit/ohj2/ali/Ali.jar">Ali.jar</a><br>
8    * Aliohjelmien dokumentaatio on:
9    * <a href="http://www.mit.jyu.fi/vesal/kurssit/ohj2/ali/index.html">\kurssit\ohj2\ali</a><br>
10   * <br>
11   *
12   * @author  Vesa Lappalainen
13   * @version 1.0, 09.02.2003
14   */
15  public class Naytto {
16  
17    /**
18     * Viite kerhoon, jota tämä käyttöliittymä käyttää
19     */
20    private Kerho kerho;
21  
22    /**
23     * Käyttöliittymän alustus.  Käyttöliittymälle PITÄÄ kerto mitä
24     * Kerho se käsittelee.
25     * @param kerho jota käsitellään
26     * @throws Exception jos kerhoa ei ole tuotu parametrina
27     */
28    public Naytto(Kerho kerho) throws Exception {
29      if ( kerho == null ) throw new Exception("Kerho täytyy antaa!");
30      this.kerho = kerho;
31    }
32  
33    /**
34     * Apualiohjelma tulostamiseen
35     * @param s tuolsettava merkkijono
36     * @param printlf tulostetaanko (true) rivinvaihto vai ei (false)
37     */
38    private static void tulosta(String s, boolean printlf) {
39      System.out.print(s);
40      if ( printlf ) System.out.println();
41    }
42  
43    /**
44     * Apualiohjelma tulostamiseen
45     * @param s
46     */
47    private static void tulosta(String s) {
48      tulosta(s,true);
49    }
50  
51    /**
52     * Tulostaa "Ei toimi vielä" ja jää odottamaan näppäimen painallusta
53     */
54    private void ei_toimi()  {
55      tulosta("Ei toimi vielä!");
56      IO.odota_jotakin();
57    }
58  
59    /**
60     * Avustustoiminto
61     * @param valinta kirjain jolla toiminto aktivoitiin
62     */
63    private void avustus(char valinta) {
64      tulosta("\n\n\n");
65      tulosta(valinta +  ".  Avustus");
66      tulosta(          "===========");
67      ei_toimi();
68    }
69  
70    /**
71     * Uuden jäsenen lisäys
72     * @param valinta kirjain jolla toiminto aktivoitiin
73     */
74    private void lisaa_uusi_jasen(char valinta) {
75      tulosta("\n\n\n");
76      tulosta(valinta +  ".  Uuden jäsenen lisäys");
77      tulosta(          "========================");
78      tulosta("");
79      ei_toimi();
80    }
81  
82  
83    /**
84     * Jäsenen tietojen etsiminen
85     * @param valinta kirjain jolla toiminto aktivoitiin
86     */
87    private void etsi_jasenen_tiedot(char valinta)
88    {
89      tulosta("\n\n\n");
90      tulosta(valinta +  ".  Etsi jäsenen tiedot");
91      tulosta(          "=======================");
92      ei_toimi();
93    }
94  
95  
96    /**
97     * Ohjelman tulosteet, pitäisi tulla alimenu
98     * @param valinta kirjain jolla toiminto aktivoitiin
99     */
100   private void tulosteet(char valinta) {
101     tulosta("\n\n\n");
102     tulosta(valinta +  ".  Tulosteet");
103     tulosta(          "=============");
104     ei_toimi();
105   }
106 
107 
108   /**
109    * Tietojen korjailu
110    * @param valinta kirjain jolla toiminto aktivoitiin
111    */
112   private void tietojen_korjailu(char valinta) {
113     tulosta("\n\n\n");
114     tulosta(valinta +  ".  Tietojen korjailu");
115     tulosta(          "=====================");
116     ei_toimi();
117   }
118 
119 
120   /**
121    * Jäsenmaksujen päivitys
122    * @param valinta kirjain jolla toiminto aktivoitiin
123    */
124   private void paivita_jasenmaksuja(char valinta) {
125     tulosta("\n\n\n");
126     tulosta(valinta +  ".  Päivitä jäsenmaksuja");
127     tulosta(          "========================");
128     ei_toimi();
129   }
130 
131 
132   /**
133    * Tulostaa ohjelman päämenun
134    */
135   private void paamenu() {
136     tulosta("\n\n\n\n");
137     tulosta("Jäsenrekisteri");
138     tulosta("==============");
139     tulosta("");
140     tulosta("Kerhossa " + kerho.getNimi()+ " on " +
141              kerho.getJasenia() + " jäsentä.");
142     tulosta("");
143     tulosta("Valitse:");
144     tulosta("   ?  = avustus");
145     tulosta("   0  = lopetus");
146     tulosta("   1  = lisää uusi jäsen");
147     tulosta("   2  = etsi jäsenen tiedot");
148     tulosta("   3  = tulosteet");
149     tulosta("   4  = tietojen korjailu");
150     tulosta("   5  = päivitä jäsenmaksuja");
151     tulosta("   :",false);
152   }
153 
154   /**
155    * Silmukka jossa odotetaan näppäint ja suoritetaan vastaava toiminto.
156    * 0:n painaminen lopettaa silmukan ja palaa kutsuvaan ohjelmaan.
157    * @return palauttaa 0 jos kaikki meni hyvin, 1 jos tuli virhe
158    */
159   public int paavalinta() {
160     char nappain;
161 
162     while ( true ) {
163 
164       paamenu();
165 
166       nappain = IO.odota_nappain("?012345",IO.EI_OLETUSTA,IO.MERKKI_ISOKSI);
167 
168       switch (nappain) {
169         case '?': avustus(nappain);                break;
170         case '0': return 0;
171         case '1': lisaa_uusi_jasen(nappain);       break;
172         case '2': etsi_jasenen_tiedot(nappain);    break;
173         case '3': tulosteet(nappain);              break;
174         case '4': tietojen_korjailu(nappain);      break;
175         case '5': paivita_jasenmaksuja(nappain);   break;
176         default : tulosta("Näin ei voi käydä!");  return 1;
177       }
178 
179     }
180   }
181 
182   /**
183    * Tulostaa ohjelman logon
184    */
185   private void logo() {
186     tulosta("");
187     tulosta("      ###################################");
188     tulosta("      #   J Ä S E N R E K I S T E R I   #");
189     tulosta("      #     versio 9.95                 #");
190     tulosta("      #     Hannu Hanhi                 #");
191     tulosta("      ###################################");
192   }
193 
194 
195   /**
196    * Tulostaa ohjelman alkuohjeet
197    */
198   public void ohjeet() {
199     logo();
200     tulosta("");
201     tulosta("Tällä ohjelmalla ylläpidetään kerhon jäsenrekisteriä.");
202   }
203 
204 
205   /**
206    * Tulostaa loppukiitokset
207    */
208   public void kiitokset() {
209     tulosta("");
210     tulosta("KIITOS KÄYTÖSTÄ JA TERVETULOA UUDELLEEN");
211     tulosta("");
212     tulosta("");
213   }
214 
215 
216   /**
217    * Lukee kerhon tiedot levyltä.  Kysyy ensin käyttäjältä tiedoson nimen.
218    * @return palauttaa tyhjän merkkijonon jos kaikki menee hyvin, muuten
219    * virhetekstin
220    */
221   public String lue_kerho() {
222     tulosta("Anna kerhon nimi>");
223     ei_toimi();
224     kerho.lue_tiedostosta("kelmit");
225 
226     return "";
227   }
228 
229 
230   /**
231    * Tallentaa kerhon tiedot levylle.
232    * @return palauttaa tyhjän merkkijonon jos kaikki menee hyvin, muuten
233    * virhetekstin
234    */
235   public String talleta_kerho() {
236     logo();
237 
238     tulosta("");
239 
240     tulosta("Talletus...");
241     ei_toimi();
242 
243     return "";
244   }
245 
246 
247   /**
248    * Ohjelman pääohjelma
249    * @param args komentorivin parametrit, ei käytössä vielä
250    */
251   public static void main(String[] args) {
252     Kerho kerho = new Kerho();
253 
254     try {
255       Naytto naytto = new Naytto(kerho);
256 
257       naytto.ohjeet();
258 
259       naytto.lue_kerho();
260 
261       naytto.paavalinta();
262 
263       naytto.talleta_kerho();
264 
265       naytto.kiitokset();
266     }
267     catch (Exception ex) {
268       System.out.println("VIRHE: " + ex.getMessage());
269     }
270   }
271 
272 }
273 
274