Guest User

Untitled

a guest
Jul 17th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.92 KB | None | 0 0
  1. import java.util.Calendar;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.ObjectOutputStream;
  5. import java.io.FileInputStream;
  6. import java.io.ObjectInputStream;
  7. /**
  8.  * @(#)Kirjarekisteri.java
  9.  *
  10.  *
  11.  * @author Mikko Pitkänen
  12.  * @version 1.00 2012/2/15
  13.  *Toimii käyttöjärjestelmänä. Käyttäjä valitsee haluttavat toiminnot ja ohjelma suorittaa ne.
  14.  *@param kirjalista luodaan lista
  15.  *@param bListaTallessa tarkastetaan onko lista tallennettu
  16.  */
  17. public class Kirjarekisteri
  18. {
  19.     private static KirjaLista lista = new KirjaLista();
  20.     /**Boolean tyyppinen muuttuja, joka tutkii onko lista  tallennettu ennnekuin sille tehdään tärkeitä muutoksia */
  21.     private static boolean bListaTallessa = true;
  22.  
  23.     public static void main(String [] args)
  24.     {
  25.         int iValinta = 0; //0 = lopetus. > 0 valinta
  26.         do
  27.         {
  28.             iValinta = valikko();
  29.             switch(iValinta)
  30.             {
  31.                 case 0: System.out.println("Ohjelma päättyy"); break;
  32.                 case 1:LisaaKirja(); break;
  33.                 case 2: poistaKirja(); break;
  34.                 case 3:hae(); break;
  35.                 case 4: tulosta(); break;
  36.                 case 5: avaaLista();break;
  37.                 case 6: tallennaLista(); break;
  38.                 default : System.out.println("Virheellinen valinta"); break;
  39.             }
  40.         }while(iValinta > 0);
  41.     }
  42.  
  43.     /**Lisaa kirja metodi, joka lisaa kirjan listaan
  44.      *@param sNimi Kirjan nimi
  45.      *@param sKirjnimi kirjailija nimi
  46.      *@param iVuosi Julkaisuvuosi
  47.      *@param iPv Lukupäivä
  48.      *@param iKk Lukukuukausi
  49.      *@param iKv Lukuvuosi*/
  50.     public static void LisaaKirja()
  51.     {
  52.         String sNimi = "";
  53.         do
  54.         {
  55.             System.out.println("Anna kirjan nimi");
  56.             sNimi = Kysy.mjono();
  57.         }while(!Kirja.tarkastaNimi(sNimi));
  58.         System.out.println("Anna kirjailijan nimi");
  59.         String sKirjnimi = Kysy.mjono();
  60.         System.out.println("Anna julkaisuvuosi");
  61.         int iVuosi = Kysy.kluku();
  62.         System.out.println("Anna Lukupäivä");
  63.         int iPv = Kysy.kluku();
  64.         System.out.println("Anna lukukuukausi");
  65.         int iKk = Kysy.kluku();
  66.         System.out.println("Anna lukuvuosi");
  67.         int iKv = Kysy.kluku();
  68.  
  69.         Calendar Luku = Calendar.getInstance();
  70.         Luku.clear();
  71.         Luku.set(iKv, iKk-1, iPv);
  72.  
  73.         try
  74.         {
  75.             Kirja lisattava = new Kirja(sNimi, sKirjnimi, iVuosi, Luku);
  76.             lista.lisaaKirja(lisattava);
  77.         }
  78.         catch (Exception virhe)
  79.         {
  80.             System.out.println(virhe.getMessage());
  81.         }
  82.  
  83.         bListaTallessa = false;
  84.  
  85.     }
  86.     /** Poistaa kirjan listalta
  87.      *@param Kirjailija saa arvokseen poistettavan kirjailijan nimen*/
  88.     public static void poistaKirja()
  89.     {
  90.         System.out.println("Poistettavan kirjan kirjailija?");
  91.         String Kirjailija = Kysy.mjono();
  92.         lista.poistaKirja(Kirjailija);
  93.  
  94.     }
  95.     /** hakee kirjan listalta kirjailijan nimen avulla
  96.      *@param tekija saa arvokseen haettavan kirjailijan nimen*/
  97.     public static void hae()
  98.     {
  99.         String tekija = "";
  100.         do
  101.         {
  102.             System.out.println("Anna kirjailijan nimi");
  103.             tekija = Kysy.mjono();
  104.             String tulostettavat = lista.haeKirjat(tekija);
  105.             System.out.println(tulostettavat);
  106.         }while(tekija.length() < 1);
  107.  
  108.     }
  109.     /* tulostaa listan oliot merkkijonona*/
  110.     public static void tulosta()
  111.     {
  112.         if(lista.tulostaKirja() == null)
  113.         {
  114.             System.out.println("Lista on tyhjä");
  115.         }
  116.         else
  117.         {
  118.             System.out.println(lista.tulostaKirja());
  119.         }
  120.     }
  121.     /** Avaa listan tiedostosta
  122.      **/
  123.     public static void avaaLista()
  124.     {
  125.         if(bListaTallessa == false)
  126.         {
  127.             System.out.println("Listalla on muutoksia tallentamatta!. Haluatko tallentaa tekemäsi muutokset?");
  128.             String varmistus = Kysy.mjono();
  129.             if((varmistus.charAt(0)) == 'K' || (varmistus.charAt(0)) == 'k')
  130.             {
  131.                 tallennaLista();
  132.                 System.out.println("Tiedosto tallennettu. Jatketaan tiedoston avaamista");
  133.             }
  134.             else
  135.             {
  136.                 System.out.println("tiedostoa ei tallennettu");
  137.             }
  138.         }
  139.         File fTiedosto;
  140.         boolean bHyvaTiedosto = true;
  141.         /**Tarkastetaan onnistuuko tiedoston avaaminen
  142.          *@Exception Tiedostoa ei löydy
  143.          *@Exception Tiedosto on piilotettu
  144.          *@Exception Tiedostoa ei voi lukea
  145.          **/
  146.         do
  147.         {
  148.             bHyvaTiedosto = true;
  149.             System.out.println("Anna tiedoston nimi");
  150.             String sTiedosto = Kysy.mjono();
  151.             fTiedosto = new File (sTiedosto);
  152.             if(!fTiedosto.exists() || !fTiedosto.isFile())
  153.             {
  154.                 System.out.println("Tiedostoa ei löydy, anna toinen nimi");
  155.                 bHyvaTiedosto = false;
  156.             }
  157.             if(fTiedosto.isHidden())
  158.             {
  159.                 System.out.println("Antamasi Tiedosto on piilotettu");
  160.                 bHyvaTiedosto = false;
  161.             }
  162.             if(!fTiedosto.canRead())
  163.             {
  164.                 System.out.println("Antamaasi tiedostoa ei voi lukea");
  165.                 bHyvaTiedosto = false;
  166.             }
  167.         }while(bHyvaTiedosto == false);
  168.         try
  169.         {
  170.             FileInputStream fisTiedosto = new FileInputStream(fTiedosto);
  171.             ObjectInputStream oisTiedosto = new ObjectInputStream(fisTiedosto);
  172.             lista = (KirjaLista)oisTiedosto.readObject();
  173.             fisTiedosto.close();
  174.             System.out.println("Lista avattu");
  175.         }
  176.         catch(Exception e)
  177.         {
  178.             System.out.println("Ongelma tiedosto käsittelyssä");
  179.         }
  180.  
  181.     }
  182.     /** On vastuussa tiedoston tallentamisesta
  183.      *@Exception Tiedoston tallentaminen ei onnistu*/
  184.     public static void tallennaLista()
  185.     {
  186.         /** Ilmaisee tiedoston nimeä*/
  187.         String sTiedosto = "";
  188.         File fTiedosto ;
  189.  
  190.         do
  191.         {
  192.             System.out.println("Anna tiedoston nimi");
  193.             sTiedosto = Kysy.mjono();
  194.             fTiedosto = new File (sTiedosto);
  195.             if(fTiedosto.exists())
  196.             {
  197.                 bListaTallessa = false;
  198.                 System.out.println("Tiedosto on jo olemamassa anna toinen nimi");
  199.             }
  200.  
  201.         }while(sTiedosto.length() < 1 | fTiedosto.exists());
  202.         try
  203.         {
  204.             FileOutputStream fosTiedosto = new FileOutputStream(fTiedosto);
  205.             ObjectOutputStream obsTiedosto = new ObjectOutputStream(fosTiedosto);
  206.             obsTiedosto.writeObject(lista);
  207.             obsTiedosto.flush();
  208.             obsTiedosto.close();
  209.             fosTiedosto.close();
  210.             System.out.println("Lista tallennettu tiedostoon");
  211.             bListaTallessa = true;
  212.  
  213.         }
  214.         catch(Exception e)
  215.         {
  216.             bListaTallessa = false;
  217.             System.out.println("Ongelma tiedoston käsittelyssä");
  218.         }
  219.  
  220.     }
  221.     public static void lopeta()
  222.     {
  223.         if (bListaTallessa == false)
  224.         {
  225.             tallennaLista();
  226.         }
  227.         System.out.println("Lopetetaan");
  228.     }
  229.     /**Valikko, joka on vastuussa toimintojen näyttämisestä käyttäjälle
  230.      *@param iValinta saa arvokseen käyttäjän antaman toiminnon numeron
  231.      *@return iValinta mututujan arvo palautetaan */
  232.     public  static int valikko()
  233.     {
  234.         int iValinta = 0;
  235.         do
  236.         {
  237.  
  238.             System.out.println("0. Lopeta");
  239.             System.out.println("1. Lisää kirja");
  240.             System.out.println("2. Poista kirja");
  241.             System.out.println("3. Hae kirjat");
  242.             System.out.println("4. Tulosta kirjat");
  243.             System.out.println("5. Avaa kirjalista tiedostosta");
  244.             System.out.println("6. Tallenna kirjalista tiedoon");
  245.             iValinta = Kysy.kluku();
  246.         }while(iValinta < 0 || iValinta > 6 );
  247.         if(iValinta < 0 || iValinta > 6 )
  248.         {
  249.             System.out.println("Virheellinen valinta. Valitse uudelleen");
  250.         }
  251.         return iValinta;
  252.     }
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259. }
Add Comment
Please, Sign In to add comment