1   import java.io.*;
2   import fi.jyu.mit.ohj2.*;
3   /**
4    * Kerhon jäsen joka osaa mm. itse huolehtia tunnus_nro:staan.
5    *
6    * @author Vesa Lappalainen
7    * @version 1.0, 22.02.2003
8    */
9   public class Jasen {
10    private int tunnus_nro;
11    private String nimi             = "";
12    private String hetu             = "";
13    private String katuosoite       = "";
14    private String postinumero      = "";
15    private String postiosoite      = "";
16    private String kotipuhelin      = "";
17    private String tyopuhelin       = "";
18    private String autopuhelin      = "";
19    private int    liittymisvuosi   = 0;
20    private double jmaksu           = 0;
21    private double maksu            = 0;
22    private String lisatietoja      = "";
23    private static int seuraava_nro = 1;
24  
25    public Jasen() {  }
26  
27    /**
28     * Arvotaan satunnainen kokonaisluku välille [ala,yla]
29     * @param ala arvonnan alaraja
30     * @param yla arvonnan yläraja
31     * @return satunnainen luku väliltä [ala,yla]
32     */
33    public static int rand(int ala, int yla) {
34      double n = (yla-ala)*Math.random() + ala;
35      return (int)Math.round(n);
36    }
37  
38    /**
39     * Apumetodi, jolla saadaan täytettyä testiarvot jäsenelle.
40     * Henkilötunnus arvotaan, jotta kahdella jäsenellä ei olisi
41     * samoja tietoja.
42     */
43    public void vastaa_aku_ankka() {
44      String apuhetu = Mjonot.fmt(rand(1,31),2,'0') +
45                       Mjonot.fmt(rand(1,12),2,'0') +
46                       Mjonot.fmt(rand(1,99),2,'0') + "-" +
47                       Mjonot.fmt(rand(1,1000),3,'0') +
48                       ( (char)((int)'A'+rand(1,25)));
49  
50      nimi           = "Ankka Aku";
51      hetu           = apuhetu;
52      katuosoite     = "Ankkakuja 6";
53      postinumero    = "12345";
54      postiosoite    = "ANKKALINNA";
55      kotipuhelin    = "12-1234";
56      tyopuhelin     = "";
57      autopuhelin    = "";
58      liittymisvuosi = 1996;
59      jmaksu         = 50.00;
60      maksu          = 30.00;
61      lisatietoja    = "Velkaa Roopelle";
62    }
63  
64    /**
65     * Tulostetaan henkilön tiedot
66     * @param out tietovirta johon tulostetaan
67     */
68    public void tulosta(PrintStream out) {
69      out.println(Mjonot.fmt(tunnus_nro,3,'0')+ "  " + nimi + "  " + hetu);
70      out.println("  " + katuosoite + "  " +  postinumero + " " + postiosoite);
71      out.println("  k: " + kotipuhelin +
72                  " t: " + tyopuhelin  +
73                  " a: " + autopuhelin);
74      out.print("  Liittynyt " + liittymisvuosi + ".");
75      out.println("  Jäsenmaksu " + Mjonot.fmt(jmaksu,4,2) + " mk." +
76                  "  Maksettu "   + Mjonot.fmt(maksu,4,2)  + " mk.");
77      out.println("  " + lisatietoja);
78    }
79  
80    /**
81     * Tulostetaan henkilön tiedot
82     * @param os tietovirta johon tulostetaan
83     */
84    public void tulosta(OutputStream os) {
85      tulosta(new PrintStream(os));
86    }
87  
88    /**
89     * Antaa jäsenelle seuraavan rekisterinumeron.
90     * @return jäsenen uusi tunnus_nro
91     */
92    public int  rekisteroi() {
93      tunnus_nro = seuraava_nro;
94      seuraava_nro++;
95      return tunnus_nro;
96    }
97  
98    public int getTunnus_nro() { return tunnus_nro; }
99  
100   public String toString() {
101     return "" +
102     tunnus_nro     + "|" +
103     nimi           + "|" +
104     hetu           + "|" +
105     katuosoite     + "|" +
106     postinumero    + "|" +
107     postiosoite    + "|" +
108     kotipuhelin    + "|" +
109     tyopuhelin     + "|" +
110     autopuhelin    + "|" +
111     liittymisvuosi + "|" +
112     jmaksu         + "|" +
113     maksu          + "|" +
114     lisatietoja    ;
115   }
116 
117   public void parse(String rivi) {
118     StringBuffer sb = new StringBuffer(rivi);
119     tunnus_nro     = Mjonot.erota(sb,'|',tunnus_nro);
120     if ( tunnus_nro >= seuraava_nro ) seuraava_nro = tunnus_nro + 1;
121     nimi           = Mjonot.erota(sb,'|',nimi);
122     hetu           = Mjonot.erota(sb,'|',hetu);
123     katuosoite     = Mjonot.erota(sb,'|',katuosoite);
124     postinumero    = Mjonot.erota(sb,'|',postinumero);
125     postiosoite    = Mjonot.erota(sb,'|',postiosoite);
126     kotipuhelin    = Mjonot.erota(sb,'|',kotipuhelin);
127     tyopuhelin     = Mjonot.erota(sb,'|',tyopuhelin);
128     autopuhelin    = Mjonot.erota(sb,'|',autopuhelin);
129     liittymisvuosi = Mjonot.erota(sb,'|',liittymisvuosi);
130     jmaksu         = Mjonot.erota(sb,'|',jmaksu);
131     maksu          = Mjonot.erota(sb,'|',maksu);
132     lisatietoja    = Mjonot.erota(sb,'|',lisatietoja);
133   }
134 
135   /**
136    * Testiohjelma jäsenelle.
137    * @param args ei käytössä
138    */
139   public static void main(String args[]) {
140     Jasen aku = new Jasen(), aku2 = new Jasen();
141     aku.rekisteroi();
142     aku2.rekisteroi();
143     aku.tulosta(System.out);
144     aku.vastaa_aku_ankka();
145     aku.tulosta(System.out);
146 
147     aku2.vastaa_aku_ankka();
148     aku2.tulosta(System.out);
149 
150     aku2.vastaa_aku_ankka();
151     aku2.tulosta(System.out);
152 
153     System.out.println(aku2.toString());
154   }
155 
156 }
157 
158 
159