1 package kerho;
2 import java.io.*;
3 import fi.jyu.mit.ohj2.Mjonot;
4
10 public class Jasen { private int tunnusnro;
12 private String nimi = "";
13 private String hetu = "";
14 private String katuosoite = "";
15 private String postinumero = "";
16 private String postiosoite = "";
17 private String kotipuhelin = "";
18 private String tyopuhelin = "";
19 private String autopuhelin = "";
20 private int liittymisvuosi = 0;
21 private double jmaksu = 0;
22 private double maksu = 0;
23 private String lisatietoja = "";
24 private static int seuraavaNro = 1;
25
26
27
31 public int getKenttia() { return 13; }
32
33
34
38 public int ekaKentta() { return 1; }
39
40
41
45 public Jasen() {
46 }
48
49
54 public String anna(int k) { switch ( k ) {
56 case 0: return ""+tunnusnro ;
57 case 1: return ""+nimi ;
58 case 2: return ""+hetu ;
59 case 3: return ""+katuosoite ;
60 case 4: return ""+postinumero ;
61 case 5: return ""+postiosoite ;
62 case 6: return ""+kotipuhelin ;
63 case 7: return ""+tyopuhelin ;
64 case 8: return ""+autopuhelin ;
65 case 9: return ""+liittymisvuosi ;
66 case 10: return ""+jmaksu ;
67 case 11: return ""+maksu ;
68 case 12: return ""+lisatietoja ;
69 default: return "Äääliö";
70 }
71 }
72
73
74
80 public String aseta(int k,String jono) { String tjono = jono.trim();
82 StringBuffer sb = new StringBuffer(tjono);
83 switch ( k ) {
84 case 0: tunnusnro = Mjonot.erota(sb,'§',tunnusnro); return null;
85 case 1: nimi = tjono ; return null;
86 case 2: hetu = tjono ; return null;
87 case 3: katuosoite = tjono ; return null;
88 case 4: postinumero = tjono ; return null;
89 case 5: postiosoite = tjono ; return null;
90 case 6: kotipuhelin = tjono ; return null;
91 case 7: tyopuhelin = tjono ; return null;
92 case 8: autopuhelin = tjono ; return null;
93 case 9:
94 try {
95 liittymisvuosi = Mjonot.erotaEx(sb,'§',liittymisvuosi);
96 } catch (NumberFormatException ex) {
97 return "Liittymisvuosi väärin " + ex.getMessage();
98 }
99 return null;
100 case 10: jmaksu = Mjonot.erota(sb,'§',jmaksu); return null;
101 case 11: maksu = Mjonot.erota(sb,'§',maksu); return null;
102 case 12: lisatietoja = Mjonot.erota(sb,'§',lisatietoja); return null;
103 default: return "ÄÄliö";
104 }
105 }
106
107
112 public String getKysymys(int k) { switch ( k ) {
114 case 0: return "Tunnus nro" ;
115 case 1: return "Jäsenen nimi" ;
116 case 2: return "hetu" ;
117 case 3: return "katuosoite" ;
118 case 4: return "postinumero" ;
119 case 5: return "postiosoite" ;
120 case 6: return "kotipuhelin" ;
121 case 7: return "tyopuhelin" ;
122 case 8: return "autopuhelin" ;
123 case 9: return "liittymisvuosi" ;
124 case 10: return "jmaksu" ;
125 case 11: return "maksu" ;
126 case 12: return "lisatietoja" ;
127 default: return "Äääliö";
128 }
129 }
130
131
137 public static int rand(int ala, int yla) {
138 double n = (yla-ala)*Math.random() + ala;
139 return (int)Math.round(n);
140 }
141
142
143
147 public void vastaaAkuAnkka(String apuhetu) {
148 nimi = "Ankka Aku";
149 hetu = apuhetu;
150 katuosoite = "Ankkakuja 6";
151 postinumero = "12345";
152 postiosoite = "ANKKALINNA";
153 kotipuhelin = "12-1234";
154 tyopuhelin = "";
155 autopuhelin = "";
156 liittymisvuosi = 1996;
157 jmaksu = 50.00;
158 maksu = 30.00;
159 lisatietoja = "Velkaa Roopelle";
160 }
161
162
163
168 public void vastaaAkuAnkka() {
169 String apuhetu = Mjonot.fmt(rand(1,31),2,'0') +
170 Mjonot.fmt(rand(1,12),2,'0') +
171 Mjonot.fmt(rand(1,99),2,'0') + "-" +
172 Mjonot.fmt(rand(1,1000),3,'0') +
173 ( (char)((int)'A'+rand(0,25)));
174 vastaaAkuAnkka(apuhetu);
175 }
176
177
178
182 public void tulosta(PrintStream out) {
183 out.println(Mjonot.fmt(tunnusnro,3,'0')+ " " + nimi + " " + hetu);
184 out.println(" " + katuosoite + " " + postinumero + " " + postiosoite);
185 out.println(" k: " + kotipuhelin +
186 " t: " + tyopuhelin +
187 " a: " + autopuhelin);
188 out.print(" Liittynyt " + liittymisvuosi + ".");
189 out.println(" Jäsenmaksu " + Mjonot.fmt(jmaksu,4,2) + " mk." +
190 " Maksettu " + Mjonot.fmt(maksu,4,2) + " mk.");
191 out.println(" " + lisatietoja);
192 }
193
194
195
199 public void tulosta(OutputStream os) {
200 tulosta(new PrintStream(os));
201 }
202
203
218 public int rekisteroi() {
219 tunnusnro = seuraavaNro;
220 seuraavaNro++;
221 return tunnusnro;
222 }
223
224
225
229 public int getTunnusnro() { return tunnusnro; }
230
231
232
236 @Override
237 public String toString() {
238 StringBuffer sb = new StringBuffer("");
239 String erotin = "";
240 for (int k=0; k<getKenttia(); k++) {
241 sb.append(erotin); sb.append(anna(k));
242 erotin = "|";
243 }
244 return sb.toString();
245 }
246
247
248
268 public void parse(String rivi) {
269 StringBuffer sb = new StringBuffer(rivi);
270 for (int k = 0; k < getKenttia(); k++ )
271 aseta(k,Mjonot.erota(sb,'|'));
272 if ( tunnusnro >= seuraavaNro ) seuraavaNro = tunnusnro + 1;
273 }
274
275
276
277
281 public static void main(String args[]) {
282 Jasen aku = new Jasen(), aku2 = new Jasen();
283 aku.rekisteroi();
284 aku2.rekisteroi();
285 aku.tulosta(System.out);
286 aku.vastaaAkuAnkka();
287 aku.tulosta(System.out);
288
289 aku2.vastaaAkuAnkka();
290 aku2.tulosta(System.out);
291
292 aku2.vastaaAkuAnkka();
293 aku2.tulosta(System.out);
294 }
295
296
297 }
298
299
300