1 import java.io.*;
2 import fi.jyu.mit.ohj2.*;
3
12 public class Jasen {
13 private int tunnus_nro; private String nimi = ""; private String hetu = ""; private String katuosoite = "";
17 private String postinumero = "";
18 private String postiosoite = "";
19 private String kotipuhelin = "";
20 private String tyopuhelin = "";
21 private String autopuhelin = "";
22 private int liittymisvuosi = 0;
23 private double jmaksu = 0;
24 private double maksu = 0;
25 private String lisatietoja = "";
26 private static int seuraava_nro = 1;
27
28 public Jasen() { }
29
30 public int getKenttia() { return 13; }
31 public int ekaKentta() { return 1; }
32
33
38 public String anna(int k) {
39 switch ( k ) {
40 case 0: return ""+tunnus_nro ;
41 case 1: return ""+nimi ;
42 case 2: return ""+hetu ;
43 case 3: return ""+katuosoite ;
44 case 4: return ""+postinumero ;
45 case 5: return ""+postiosoite ;
46 case 6: return ""+kotipuhelin ;
47 case 7: return ""+tyopuhelin ;
48 case 8: return ""+autopuhelin ;
49 case 9: return ""+liittymisvuosi ;
50 case 10: return ""+jmaksu ;
51 case 11: return ""+maksu ;
52 case 12: return ""+lisatietoja ;
53 default: return "Äääliö";
54 }
55 }
56
57
63 public String aseta(int k,String jono) {
64 StringBuffer sb = new StringBuffer(jono);
65 switch ( k ) {
66 case 0: tunnus_nro = Mjonot.erota(sb,'§',tunnus_nro); return null;
67 case 1: nimi = jono ; return null;
68 case 2: hetu = jono ; return null;
69 case 3: katuosoite = jono ; return null;
70 case 4: postinumero = jono ; return null;
71 case 5: postiosoite = jono ; return null;
72 case 6: kotipuhelin = jono ; return null;
73 case 7: tyopuhelin = jono ; return null;
74 case 8: autopuhelin = jono ; return null;
75 case 9:
76 try {
77 liittymisvuosi = Mjonot.erotaEx(sb,'§',liittymisvuosi);
78 } catch (NumberFormatException ex) {
79 return "Liittymisvuosi väärin " + ex.getMessage();
80 }
81 return null;
82 case 10: jmaksu = Mjonot.erota(sb,'§',jmaksu); return null;
83 case 11: maksu = Mjonot.erota(sb,'§',maksu); return null;
84 case 12: lisatietoja = Mjonot.erota(sb,'§',lisatietoja); return null;
85 default: return "ÄÄliö";
86 }
87 }
88
89
94 public String getKysymys(int k) {
95 switch ( k ) {
96 case 0: return "Tunnus nro" ;
97 case 1: return "Jäsenen nimi" ;
98 case 2: return "hetu" ;
99 case 3: return "katuosoite" ;
100 case 4: return "postinumero" ;
101 case 5: return "postiosoite" ;
102 case 6: return "kotipuhelin" ;
103 case 7: return "tyopuhelin" ;
104 case 8: return "autopuhelin" ;
105 case 9: return "liittymisvuosi" ;
106 case 10: return "jmaksu" ;
107 case 11: return "maksu" ;
108 case 12: return "lisatietoja" ;
109 default: return "Äääliö";
110 }
111 }
112
118 public static int rand(int ala, int yla) {
119 double n = (yla-ala)*Math.random() + ala;
120 return (int)Math.round(n);
121 }
122
123
128 public void vastaa_aku_ankka() {
129 String apuhetu = Mjonot.fmt(rand(1,31),2,'0') +
130 Mjonot.fmt(rand(1,12),2,'0') +
131 Mjonot.fmt(rand(1,99),2,'0') + "-" +
132 Mjonot.fmt(rand(1,1000),3,'0') +
133 ( (char)((int)'A'+rand(1,25)));
134
135 nimi = "Ankka Aku";
136 hetu = apuhetu;
137 katuosoite = "Ankkakuja 6";
138 postinumero = "12345";
139 postiosoite = "ANKKALINNA";
140 kotipuhelin = "12-1234";
141 tyopuhelin = "";
142 autopuhelin = "";
143 liittymisvuosi = 1996;
144 jmaksu = 50.00;
145 maksu = 30.00;
146 lisatietoja = "Velkaa Roopelle";
147 }
148
149
153 public void tulosta(PrintStream out) {
154 out.println(Mjonot.fmt(tunnus_nro,3,'0')+ " " + nimi + " " + hetu);
155 out.println(" " + katuosoite + " " + postinumero + " " + postiosoite);
156 out.println(" k: " + kotipuhelin +
157 " t: " + tyopuhelin +
158 " a: " + autopuhelin);
159 out.print(" Liittynyt " + liittymisvuosi + ".");
160 out.println(" Jäsenmaksu " + Mjonot.fmt(jmaksu,4,2) + " mk." +
161 " Maksettu " + Mjonot.fmt(maksu,4,2) + " mk.");
162 out.println(" " + lisatietoja);
163 }
164
165
169 public void tulosta(OutputStream os) {
170 tulosta(new PrintStream(os));
171 }
172
173
177 public int rekisteroi() {
178 tunnus_nro = seuraava_nro;
179 seuraava_nro++;
180 return tunnus_nro;
181 }
182
183 public int getTunnus_nro() { return tunnus_nro; }
184
185
189 public String toString() {
190 StringBuffer sb = new StringBuffer("");
191
192 for (int k=0; k<getKenttia(); k++)
193 sb.append(anna(k) + "|");
194 return sb.toString();
195 }
196
197
203 public void parse(String rivi) {
204 StringBuffer sb = new StringBuffer(rivi);
205 for (int k = 0; k < getKenttia(); k++ )
206 aseta(k,Mjonot.erota(sb,'|'));
207 if ( tunnus_nro >= seuraava_nro ) seuraava_nro = tunnus_nro + 1;
208 }
209
210
214 public static void main(String args[]) {
215 Jasen aku = new Jasen(), aku2 = new Jasen();
216 aku.rekisteroi();
217 aku2.rekisteroi();
218 aku.tulosta(System.out);
219 aku.vastaa_aku_ankka();
220 aku.tulosta(System.out);
221
222 aku2.vastaa_aku_ankka();
223 aku2.tulosta(System.out);
224
225 aku2.vastaa_aku_ankka();
226 aku2.tulosta(System.out);
227
228 System.out.println(aku2.toString());
229 }
230
231 }
232
233
234