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   /**
101    * Testiohjelma jäsenelle.
102    * @param args ei käytössä
103    */
104   public static void main(String args[]) {
105     Jasen aku = new Jasen(), aku2 = new Jasen();
106     aku.rekisteroi();
107     aku2.rekisteroi();
108     aku.tulosta(System.out);
109     aku.vastaa_aku_ankka();
110     aku.tulosta(System.out);
111 
112     aku2.vastaa_aku_ankka();
113     aku2.tulosta(System.out);
114 
115     aku2.vastaa_aku_ankka();
116     aku2.tulosta(System.out);
117   }
118 
119 }
120 
121 
122