import java.io.*;
import java.util.*;
import fi.jyu.mit.ohj2.*;
public class Naytto {
private Kerho kerho;
public Naytto(Kerho kerho) throws Exception {
if ( kerho == null ) throw new Exception("Kerho täytyy antaa!");
this.kerho = kerho;
}
private static void tulosta(String s, boolean printlf) {
System.out.print(s);
if ( printlf ) System.out.println();
}
private static void tulosta(String s) {
tulosta(s,true);
}
private static void tyhja(int n) {
for (int i=0; i<n; i++) tulosta("");
}
private static void otsikko(char kirjain, String teksti) {
tyhja(4);
tulosta("" + kirjain + ". " + teksti);
tulosta(Mjonot.tayta("=",1+2+teksti.length()));
tyhja(2);
}
void ei_toimi() {
tulosta("Ei toimi vielä!");
IO.odota_jotakin();
}
void avustus(char valinta) {
otsikko(valinta, "Avustus");
ei_toimi();
}
private void tulosta(OutputStream os, final Jasen jasen) {
jasen.tulosta(os);
int jid = jasen.getTunnus_nro();
for (Iterator i=kerho.harrastus_iterator(jid); i.hasNext(); ) {
Harrastus har = (Harrastus)i.next();
har.tulosta(os);
}
}
private boolean kysy_tiedot(Jasen jasen) {
int kenttia = jasen.getKenttia();
int eka = jasen.ekaKentta();
for (int k=eka; k<kenttia; k++ ) {
while ( true ) {
String oletus = jasen.anna(k);
String kysymys = jasen.getKysymys(k);
String vastaus = Syotto.kysy(kysymys,oletus);
vastaus = Mjonot.poista_2_tyhjat(vastaus).trim();
if ( k == eka && vastaus.equals("") ) return false;
if ( vastaus.equals("q") ) return false;
if ( vastaus.equals(".") ) return true;
String virhe = jasen.aseta(k,vastaus);
if ( virhe == null ) break;
System.out.println("Virhe: " + virhe);
}
}
return true;
}
private boolean kysy_uusi_jasen() {
Jasen jasen = new Jasen();
jasen.rekisteroi();
while ( kysy_tiedot(jasen) ) {
tulosta("Lisätäänkö");
tulosta(System.out,jasen);
tulosta(":",false);
if ( IO.kylla_vastaus() ) {
try {
kerho.lisaa(jasen);
return true;
} catch ( SailoException ex ) {
tulosta(ex.getMessage());
}
}
}
kerho.poista(jasen.getTunnus_nro());
return false;
}
void lisaa_uusi_jasen(char valinta) {
otsikko(valinta,"Uuden jäsenen lisäys");
while ( kysy_uusi_jasen() );
}
void etsi_jasenen_tiedot(char valinta)
{
otsikko(valinta,"Etsi jäsenen tiedot");
ei_toimi();
}
void tulosteet(char valinta) {
otsikko(valinta,"Tulosteet");
tulosta("Toimii toistaiseksi vain näytölle");
tulosta("---------------------------------------------------------");
for (Iterator i=kerho.jasen_iterator(); i.hasNext(); ) {
Jasen jasen = (Jasen)i.next();
tulosta("Jäsen nro: " + jasen.getTunnus_nro());
tulosta(System.out,jasen);
tulosta("");
}
tulosta("---------------------------------------------------------");
IO.odota_jotakin();
}
void tietojen_korjailu(char valinta) {
otsikko(valinta,"Tietojen korjailu");
ei_toimi();
}
void paivita_jasenmaksuja(char valinta) {
otsikko(valinta,"Päivitä jäsenmaksuja");
ei_toimi();
}
public void paamenu() {
tulosta("\n\n\n\n");
tulosta("Jäsenrekisteri");
tulosta("==============");
tulosta("");
tulosta("Kerhossa " + kerho.getNimi()+ " on " +
kerho.getJasenia() + " jäsentä.");
tulosta("");
tulosta("Valitse:");
tulosta(" ? = avustus");
tulosta(" 0 = lopetus");
tulosta(" 1 = lisää uusi jäsen");
tulosta(" 2 = etsi jäsenen tiedot");
tulosta(" 3 = tulosteet");
tulosta(" 4 = tietojen korjailu");
tulosta(" 5 = päivitä jäsenmaksuja");
tulosta(" :",false);
}
int paavalinta() {
char nappain;
while ( true ) {
paamenu();
nappain = IO.odota_nappain("?012345",IO.EI_OLETUSTA,IO.MERKKI_ISOKSI);
switch (nappain) {
case '?': avustus(nappain); break;
case '0': return 0;
case '1': lisaa_uusi_jasen(nappain); break;
case '2': etsi_jasenen_tiedot(nappain); break;
case '3': tulosteet(nappain); break;
case '4': tietojen_korjailu(nappain); break;
case '5': paivita_jasenmaksuja(nappain); break;
default : tulosta("Näin ei voi käydä!"); return 1;
}
}
}
void logo() {
tulosta("");
tulosta(" ###################################");
tulosta(" # J Ä S E N R E K I S T E R I #");
tulosta(" # versio 9.95 #");
tulosta(" # Hannu Hanhi #");
tulosta(" ###################################");
}
void ohjeet() {
logo();
tulosta("");
tulosta("Tällä ohjelmalla ylläpidetään kerhon jäsenrekisteriä.");
}
void kiitokset() {
tulosta("");
tulosta("KIITOS KÄYTÖSTÄ JA TERVETULOA UUDELLEEN");
tulosta("");
tulosta("");
}
String lue_kerho() {
tulosta("Anna kerhon nimi>");
ei_toimi();
try {
kerho.lue_tiedostosta("kelmit");
} catch ( SailoException ex ) {
System.out.println(ex.getMessage());
return ex.getMessage();
}
return "";
}
String talleta_kerho() {
logo();
tulosta("");
tulosta("Talletus...");
try {
kerho.talleta();
} catch ( SailoException ex ) {
System.out.println(ex.getMessage());
return ex.getMessage();
}
return "";
}
public static void main(String[] args) {
Kerho kerho = new Kerho();
try {
Naytto naytto = new Naytto(kerho);
naytto.ohjeet();
naytto.lue_kerho();
naytto.paavalinta();
naytto.talleta_kerho();
naytto.kiitokset();
}
catch (Exception ex) {
System.out.println("VIRHE: " + ex.getMessage());
}
}
}