diff --git a/Fanttikvariaatti/src/harjoitustyofx/KirjakatalogiMain.java b/Fanttikvariaatti/src/harjoitustyofx/KirjakatalogiMain.java
index d76c8c08564e28a31e7a651d3d098b078da4a83c..f957d59e5a03dd8386f089b93adf931663d98f2d 100644
--- a/Fanttikvariaatti/src/harjoitustyofx/KirjakatalogiMain.java
+++ b/Fanttikvariaatti/src/harjoitustyofx/KirjakatalogiMain.java
@@ -7,7 +7,6 @@ import javafx.scene.Scene;
 import javafx.scene.layout.Pane;
 import javafx.fxml.FXMLLoader;
 
-
 /**
  * @author jimis
  * @version 16.2.2025
diff --git a/Fanttikvariaatti/src/rekisteri/Kirja.java b/Fanttikvariaatti/src/rekisteri/Kirja.java
new file mode 100644
index 0000000000000000000000000000000000000000..84b5ff25a6556968e73a3b4f50110e1bbd92828e
--- /dev/null
+++ b/Fanttikvariaatti/src/rekisteri/Kirja.java
@@ -0,0 +1,152 @@
+package rekisteri;
+
+/***
+ * Kirja luokka.
+ * @author jimis
+ * @version 29.3.2025
+ *
+ */
+public class Kirja {
+
+    private String teos = "";
+    private String kirjailija = "";
+    private double hinta;
+    private int sivumaara;
+    
+    /**
+     * Tyhjä muodostaja
+     */
+    public Kirja()
+    {        
+    }
+    
+    /**
+     * Kirja-olion muodostaja.
+     * @param teos teoksien nimi
+     * @param kirjailija kirjailijan nimi
+     * @param hinta kirjan hinta
+     * @param sivumaara sivumäärä
+     */
+    public Kirja(String teos, String kirjailija, double hinta, int sivumaara)
+    {
+        this.teos = teos;
+        this.kirjailija = kirjailija;
+        this.sivumaara = sivumaara;
+        this.hinta = hinta;
+    }
+    
+    /**
+     * Haetaan Teoksen nimi
+     * @return Teoksen nimi
+     */
+    public String getTeos()
+    {
+        return teos;
+    }
+    
+    /**
+     * Haetaan kirjailijan nimi
+     * @return kirjailijan nimi
+     */
+    public String getKirjailija()
+    {
+        return kirjailija;
+    }
+    
+    /**
+     * Haetaan hinta
+     * @return hinta
+     */
+    public double getHinta()
+    {
+        return hinta;
+    }
+    
+    /**
+     * Haetaan sivumaara
+     * @return sivumaara
+     */
+    public int getSivumaara()
+    {
+        return sivumaara;
+    }
+ 
+    
+    /**
+     * Muokataan kirja-olion nimeä
+     * @param uusiNimi uusi Nimi
+     */
+    public void setTeos(String uusiNimi)
+    {
+        teos = uusiNimi;
+        
+    }
+    
+    /**
+     * Muokataan kirja-olion hintaa
+     * @param uusiHinta uusi hinta
+     */
+    public void setHinta(String uusiHinta)
+    {
+        StringBuilder hintateksti =new StringBuilder(uusiHinta);
+        for(int i = 0; i<uusiHinta.length(); i++)
+        {
+            if(uusiHinta.charAt(i) == ',')
+            {
+                hintateksti.setCharAt(i, '.');
+            }
+        }
+        double uusiHintaInt = Double.parseDouble(hintateksti.toString()); 
+        if(uusiHintaInt > 0)
+        {
+            hinta = uusiHintaInt;  
+        }   
+    }
+    
+    /**
+     * Muokataan kirja-olion kirjailijaa
+     * @param uusiKirjailija uusi kirjialija.
+     */
+    public void setKirjailija(String uusiKirjailija)
+    {
+        kirjailija = uusiKirjailija;       
+    }
+    
+    /**
+     * Muokataan kirja-olion sivumäärää
+     * @param uusiSivumaara uusi sivumäärä.
+     */
+    public void setSivumaara(String uusiSivumaara)
+    {
+        try
+        {
+        sivumaara = Integer.parseInt(uusiSivumaara);       
+        }
+        catch(Exception e)
+        {
+            System.out.println("Sivumäärän oltava kokonaisluku");
+        }
+    }
+    
+    /**
+     * Pääohjelma
+     * @param args ei käytössä
+     */
+    public static void main(String args[])
+    {
+        Kirja Kurjat = new Kirja();
+        Kurjat.setHinta("13,50");
+        Kurjat.setSivumaara(null);
+        Kurjat.setTeos("Kurjat");
+        Kurjat.setKirjailija("Victor Hugo");
+        Kurjat.setSivumaara("1050");
+        System.out.println("Kirjan nimi on " + Kurjat.getTeos());
+        System.out.println("Kirjailija on " + Kurjat.getKirjailija());
+        System.out.println("Kirjassa on " + Kurjat.getSivumaara() + " Sivua");
+        System.out.println("Kirjan hinta on " + Kurjat.getHinta()+ "€.");   
+        Kurjat.setHinta("9.25");
+        System.out.println("Kirjan alennettu hinta on " + Kurjat.getHinta()+ "€."); 
+        
+    }
+    
+}
diff --git a/Fanttikvariaatti/src/rekisteri/Kirjat.java b/Fanttikvariaatti/src/rekisteri/Kirjat.java
new file mode 100644
index 0000000000000000000000000000000000000000..d01dd7fce1e6cbe2bfce03c7e1b5e6c6748271d1
--- /dev/null
+++ b/Fanttikvariaatti/src/rekisteri/Kirjat.java
@@ -0,0 +1,5 @@
+package rekisteri;
+
+public class Kirjat {
+
+}
diff --git a/Fanttikvariaatti/src/rekisteri/Lasku.java b/Fanttikvariaatti/src/rekisteri/Lasku.java
new file mode 100644
index 0000000000000000000000000000000000000000..a887a8fbe418b51ec6cf7d35cfc1617452efd608
--- /dev/null
+++ b/Fanttikvariaatti/src/rekisteri/Lasku.java
@@ -0,0 +1,173 @@
+package rekisteri;
+
+/***
+ * Lasku luokka.
+ * @author jimis
+ * @version 29.3.2025
+ *
+ */
+public class Lasku {
+
+    private String sahkoposti = "";
+    private String nimi = "";
+    private boolean maksettu;
+    private double hinta;
+    private final int[] erapaiva = new int[] {1,1,2025};
+    private final int[][] kuukausienMitat = {{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
+    /**
+     * Tyhjä muodostaja
+     */
+    public Lasku()
+    {        
+    }
+    
+    /**
+     * Lasku-olion muodostaja.
+     * @param nimi laskutettavan nimi
+     * @param sahkoposti laskutettavan sähkopostiosoite.
+     * @param hinta ostosten hinta
+     * @param maksettu onko lasku maksettu
+     * @param paiva eräpäivän päivä-osa
+     * @param kk eräpäivän kuukausiosa
+     * @param v eräpäivän vuosiosa.
+     */
+    public Lasku(String nimi, String sahkoposti, double hinta, boolean maksettu, int paiva, int kk, int v)
+    {
+        this.nimi = nimi;
+        this.sahkoposti = sahkoposti;
+        this.hinta = hinta;
+        this.maksettu = maksettu;
+        if(tarkistaPvm(paiva,kk,v) == true)
+        {
+            this.erapaiva[0] = paiva;
+            this.erapaiva[1] = kk;
+            this.erapaiva[2] = v;
+        }
+        else
+        {
+            System.out.println("Syötä kelvollinen päivämäärä.");
+        }
+        return;
+    }
+        
+    /**
+     * Tarkistaa päivämäärän oikeellisuuden
+     * @param paiva päivä
+     * @param kuukausi kuukausi
+     * @param vuosi vuosi
+     * @return totuusarvon päivämäärän olemassaolosta
+     */
+    public boolean tarkistaPvm(int paiva, int kuukausi, int vuosi)
+    {
+        int karkausvuosi = 0;
+        if((paiva <= 0)||(kuukausi <= 0)||(vuosi <= 2025 )) return false;
+        if(kuukausi > 13) return false;
+        if(kuukausi % 4 == 0) karkausvuosi = 1;
+        if(paiva > kuukausienMitat[karkausvuosi][kuukausi-1]) return false;
+        return true;
+    }
+    /**
+     * Haetaan Teoksen nimi
+     * @return Teoksen nimi
+     */
+    public boolean Getmaksettu()
+    {
+        return maksettu;
+    }
+    
+    /**
+     * Haetaan eräpäivää
+     * @return eräpäivä muodossa XX.XX.20XX
+     */
+    public String GetErapaiva()
+    {
+        return erapaiva.toString();
+    }
+    
+    /**
+     * Haetaan hinta
+     * @return hinta
+     */
+    public double getHinta()
+    {
+        return hinta;
+    }
+    
+    /**
+     * Haetaan maksajan nimi
+     * @return nimi
+     */
+    public String getNimi()
+    {
+        return nimi;
+    }
+ 
+    /**
+     * Palautetaan laskuun liitetty sähköposti.
+     * @return Sähköposti
+     */
+    public String getSahkoposti()
+    {
+        return sahkoposti;
+    }
+    /**
+     * Muokataan lasku-olion nimeä
+     * @param uusiNimi uusi Nimi
+     */
+    public void setNimi(String uusiNimi)
+    {
+        nimi = uusiNimi;
+    }
+    
+    /**
+     * Muokataan lasku-olion hintaa
+     * @param uusiHinta uusi hinta
+     */
+    public void setHinta(String uusiHinta)
+    {
+        StringBuilder hintateksti =new StringBuilder(uusiHinta);
+        for(int i = 0; i<uusiHinta.length(); i++)
+        {
+            if(uusiHinta.charAt(i) == ',')
+            {
+                hintateksti.setCharAt(i, '.');
+            }
+        }
+        double uusiHintaDbl = Double.parseDouble(hintateksti.toString()); 
+        if(uusiHintaDbl > 0)
+        {
+            hinta = uusiHintaDbl;  
+        }   
+    }
+    
+    /**
+     * Muokataan kirja-olion kirjailijaa
+     * @param uusiSahkoposti uusi kirjialija.
+     */
+    public void setSahkoposti(String uusiSahkoposti)
+    {
+        if(uusiSahkoposti.contains("@")) sahkoposti = uusiSahkoposti;       
+    }
+    
+    /**
+     * Merkitään lasku maksetuksi
+     */
+    public void asetaMaksetuksi()
+    {
+        this.maksettu = true; 
+    }
+    
+    /**
+     * Pääohjelma
+     * @param args ei käytössä
+     */
+    public static void main(String[] args)
+    {
+     Lasku lasku = new Lasku();
+     lasku.setNimi("Pahani Julmu");
+     System.out.println(lasku.getNimi());
+     lasku.setHinta("13.25");
+    }
+    
+    
+}
diff --git a/Fanttikvariaatti/src/rekisteri/Laskut.java b/Fanttikvariaatti/src/rekisteri/Laskut.java
new file mode 100644
index 0000000000000000000000000000000000000000..a5c56cc5e17ab6ee055ccc91a24af80d61d03f19
--- /dev/null
+++ b/Fanttikvariaatti/src/rekisteri/Laskut.java
@@ -0,0 +1,5 @@
+package rekisteri;
+
+public class Laskut {
+
+}
diff --git a/Fanttikvariaatti/src/rekisteri/RekisteriMain.java b/Fanttikvariaatti/src/rekisteri/RekisteriMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..89900b86aeea65fbc14d49d173892496a12a1b1b
--- /dev/null
+++ b/Fanttikvariaatti/src/rekisteri/RekisteriMain.java
@@ -0,0 +1,5 @@
+package rekisteri;
+
+public class RekisteriMain {
+
+}