From 501f7c4636e654484875a75844c07ae572d65e06 Mon Sep 17 00:00:00 2001
From: spicjrxz <jimi.r.n.spice@student.jyu.fi>
Date: Sat, 29 Mar 2025 21:46:41 +0200
Subject: [PATCH] =?UTF-8?q?Yksikk=C3=B6=20ja=20monikkoluokat=20lis=C3=A4tt?=
 =?UTF-8?q?y=20ohjelmaan.=20Yksik=C3=B6iss=C3=A4=20muodostajat=20ja=20gets?=
 =?UTF-8?q?et-metodit.=20Lasku-oliossa=20p=C3=A4iv=C3=A4m=C3=A4=C3=A4r?=
 =?UTF-8?q?=C3=A4tarkistin.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/harjoitustyofx/KirjakatalogiMain.java |   1 -
 Fanttikvariaatti/src/rekisteri/Kirja.java     | 152 +++++++++++++++
 Fanttikvariaatti/src/rekisteri/Kirjat.java    |   5 +
 Fanttikvariaatti/src/rekisteri/Lasku.java     | 173 ++++++++++++++++++
 Fanttikvariaatti/src/rekisteri/Laskut.java    |   5 +
 .../src/rekisteri/RekisteriMain.java          |   5 +
 6 files changed, 340 insertions(+), 1 deletion(-)
 create mode 100644 Fanttikvariaatti/src/rekisteri/Kirja.java
 create mode 100644 Fanttikvariaatti/src/rekisteri/Kirjat.java
 create mode 100644 Fanttikvariaatti/src/rekisteri/Lasku.java
 create mode 100644 Fanttikvariaatti/src/rekisteri/Laskut.java
 create mode 100644 Fanttikvariaatti/src/rekisteri/RekisteriMain.java

diff --git a/Fanttikvariaatti/src/harjoitustyofx/KirjakatalogiMain.java b/Fanttikvariaatti/src/harjoitustyofx/KirjakatalogiMain.java
index d76c8c0..f957d59 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 0000000..84b5ff2
--- /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 0000000..d01dd7f
--- /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 0000000..a887a8f
--- /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 0000000..a5c56cc
--- /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 0000000..89900b8
--- /dev/null
+++ b/Fanttikvariaatti/src/rekisteri/RekisteriMain.java
@@ -0,0 +1,5 @@
+package rekisteri;
+
+public class RekisteriMain {
+
+}
-- 
GitLab