From 766d4631ada1990ce65767b90f4bb156efe6f367 Mon Sep 17 00:00:00 2001
From: Vesikukka Teemu <teemu.t.vesikukka@student.jyu.fi>
Date: Mon, 31 Mar 2025 00:45:26 +0300
Subject: [PATCH] harjoitustyon muutoksien palautus

---
 .../.idea/.idea.harjoitustyo/.idea/.gitignore |   4 +-
 harjoitustyo/harjoitustyo.sln                 |  29 ++-
 harjoitustyo/harjoitustyo.sln.ctbackup        |  16 --
 .../pankkiautomaatti/Pankkiautomaatti.cs      | 181 +++++++++---------
 .../pankkiautomaatti/pankkiautomaatti.csproj  |  12 +-
 harjoitustyo/pankkiautomaatti/saldo.txt       |   1 +
 harjoitustyo/pankkiautomaatti/tiliote.txt     |   1 +
 .../PankkiautomaattiTest.cs                   |  21 --
 .../pankkiautomaattiTest.csproj               |  15 --
 9 files changed, 117 insertions(+), 163 deletions(-)
 delete mode 100644 harjoitustyo/harjoitustyo.sln.ctbackup
 create mode 100644 harjoitustyo/pankkiautomaatti/saldo.txt
 create mode 100644 harjoitustyo/pankkiautomaatti/tiliote.txt
 delete mode 100644 harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs
 delete mode 100644 harjoitustyo/pankkiautomaattiTest/pankkiautomaattiTest.csproj

diff --git a/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore b/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore
index bb9f4a0..9bae0a8 100644
--- a/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore
+++ b/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore
@@ -3,9 +3,9 @@
 /workspace.xml
 # Rider ignored files
 /projectSettingsUpdater.xml
-/contentModel.xml
-/.idea.harjoitustyo.iml
+/.idea.Harjoitustyo.iml
 /modules.xml
+/contentModel.xml
 # Editor-based HTTP Client requests
 /httpRequests/
 # Datasource local storage ignored files
diff --git a/harjoitustyo/harjoitustyo.sln b/harjoitustyo/harjoitustyo.sln
index d577b6a..cddf186 100644
--- a/harjoitustyo/harjoitustyo.sln
+++ b/harjoitustyo/harjoitustyo.sln
@@ -1,23 +1,16 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pankkiautomaatti", "pankkiautomaatti\pankkiautomaatti.csproj", "{5F68F6A3-2942-4E05-B7C1-DDB329F75448}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "pankkiautomaattiTest", "pankkiautomaattiTest\pankkiautomaattiTest.csproj", "{DF473C3E-752D-45D2-A9CC-0AAEE9BF18FE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pankkiautomaatti", "Pankkiautomaatti\Pankkiautomaatti.csproj", "{14D5A824-81F6-4AE6-B17B-4BB1BD694219}"
 EndProject
 Global
-  GlobalSection(SolutionConfigurationPlatforms) = preSolution
-    Debug|Any CPU = Debug|Any CPU
-    Release|Any CPU = Release|Any CPU
-  EndGlobalSection
-  GlobalSection(ProjectConfigurationPlatforms) = postSolution
-    {5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-    {5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Debug|Any CPU.Build.0 = Debug|Any CPU
-    {5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Release|Any CPU.ActiveCfg = Release|Any CPU
-    {5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Release|Any CPU.Build.0 = Release|Any CPU
-    {DF473C3E-752D-45D2-A9CC-0AAEE9BF18FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-    {DF473C3E-752D-45D2-A9CC-0AAEE9BF18FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-    {DF473C3E-752D-45D2-A9CC-0AAEE9BF18FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-    {DF473C3E-752D-45D2-A9CC-0AAEE9BF18FE}.Release|Any CPU.Build.0 = Release|Any CPU
-  EndGlobalSection
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{14D5A824-81F6-4AE6-B17B-4BB1BD694219}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{14D5A824-81F6-4AE6-B17B-4BB1BD694219}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{14D5A824-81F6-4AE6-B17B-4BB1BD694219}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{14D5A824-81F6-4AE6-B17B-4BB1BD694219}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
 EndGlobal
diff --git a/harjoitustyo/harjoitustyo.sln.ctbackup b/harjoitustyo/harjoitustyo.sln.ctbackup
deleted file mode 100644
index 737dbde..0000000
--- a/harjoitustyo/harjoitustyo.sln.ctbackup
+++ /dev/null
@@ -1,16 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pankkiautomaatti", "pankkiautomaatti\pankkiautomaatti.csproj", "{5F68F6A3-2942-4E05-B7C1-DDB329F75448}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5F68F6A3-2942-4E05-B7C1-DDB329F75448}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-EndGlobal
diff --git a/harjoitustyo/pankkiautomaatti/Pankkiautomaatti.cs b/harjoitustyo/pankkiautomaatti/Pankkiautomaatti.cs
index c3738e6..7657740 100644
--- a/harjoitustyo/pankkiautomaatti/Pankkiautomaatti.cs
+++ b/harjoitustyo/pankkiautomaatti/Pankkiautomaatti.cs
@@ -3,10 +3,9 @@ using System.Text;
 using System.Linq;
 using System.Collections.Generic;
 using System.IO;
-using System.Runtime.CompilerServices;
 
 /// @author Teemu Vesikukka
-/// @version 15.10.2023
+/// @version 28.03.2025
 /// <summary>
 /// Käyttäjä voi hoitaa pankkiasioita ohjelman kautta
 /// </summary>
@@ -18,85 +17,107 @@ public class Pankkiautomaatti
     /// </summary>
     public static void Main()
     {
-        double luku = 0.00;
         Aloitus();
         
-        if (PinKoodi() == true)
+        if (PinKoodi2() == true)
         {
-            Valikko();
+            double alkusaldo = AlkuSaldo();
+            List<string> tiliote = new List<string>();
+            tiliote = File.ReadAllLines("Tiliote.txt").ToList();
+            Valikko(alkusaldo, tiliote);
         }
         Lopetus();
     }
-
-    /// <summary>
-    /// Aliohjelma joka aloittaa pyytamalla asiakkaan kortin
-    /// </summary>
+    
     public static void Aloitus()
     {
         Console.WriteLine("Tervetuloa!");
         Console.WriteLine("Syota kortti ole hyva");
     }
+    /// <summary>
+    /// Aliohjelma lukee tekstitiedostosta tilin saldon
+    /// </summary>
+    /// <returns>saldo</returns>
+    public static double AlkuSaldo()
+    {
+        const string POLKU = @"C:\Users\Vespa\Desktop\gradia\ohjelmointi1_jyu_2025\harjoitustyo\Harjoitustyo\Pankkiautomaatti\saldo.txt";
+        string[] luetutRivit = File.ReadAllLines(POLKU);
+        double saldo = Convert.ToDouble(luetutRivit[0]);
+        return saldo;
+    }
+    
+    /// <summary>
+    /// Aliohjelma vie tekstitiedostoon tilin saldon
+    /// </summary>
+    /// <param name="loppuSaldo"></param>
+    public static void LoppuSaldo(double loppuSaldo)
+    {
+        string [] saldo = new string[1];
+        saldo[0] = loppuSaldo.ToString();
+        const string POLKU = @"C:\Users\Vespa\Desktop\gradia\ohjelmointi1_jyu_2025\harjoitustyo\Harjoitustyo\Pankkiautomaatti\saldo.txt";
+        File.WriteAllLines(POLKU, saldo);
+     
+    }
 
+    public static void LoppuTiliote(List<string> tiliote)
+    {
+        const string POLKU = @"C:\Users\Vespa\Desktop\gradia\ohjelmointi1_jyu_2025\harjoitustyo\Harjoitustyo\Pankkiautomaatti\tiliote.txt";
+        File.WriteAllLines(POLKU, tiliote);
+    }
+    
     /// <summary>
     /// Aliohjelma joka pyytaa asiakkaalta pin-koodin ja koodin
     /// ollessa oikein paastaa asiakkaan kayttamaan tilia
     /// </summary>
-    /// <returns>alse or true</returns>
+    /// <returns>palauttaa totuusarvon onko pinkoodi oikein</returns>
     /// <example>
     /// <pre name="test">
     /// PinKoodi(),"1234"===true;
-    /// PinKoodi(),"1111"===false;
     /// </pre>
     /// </example>
-    public static bool PinKoodi()
+    public static bool PinKoodi2()
     {
-        int yritykset = 0;
-        bool onkoOikein = false;
-        string pinkoodi = "1234";
-        while (yritykset <= 3 && onkoOikein == false)
+        int yritykset = 1;
+        int pinkoodi = 1234;
+        bool onkoOikien = true;
+        Console.WriteLine("Anna pin koodi >" );
+        int koodi = Convert.ToInt32(Console.ReadLine());
+        yritykset++;
+        if (koodi.Equals(pinkoodi))
         {
-            if (yritykset <= 1)
+            onkoOikien = true;
+        }
+        else
+        {
+            while (yritykset <= 3)
             {
-                Console.Write("Anna pin koodi: ");
-                string syote = Console.ReadLine();
+                Console.WriteLine("Pinkoodi väärin");
+                Console.WriteLine("Anna pin koodi >" );
+                int koodi2 = Convert.ToInt32(Console.ReadLine());
                 yritykset++;
-                if (syote.Equals(pinkoodi))
+                if (koodi2.Equals(pinkoodi))
                 {
-                    Console.WriteLine("Pin kood oikein");
-                    onkoOikein = true;
+                    onkoOikien = true;
                     break;
                 }
-            }
-            else
-            {
-                Console.WriteLine("Pin koodi vaarin!");
-                Console.WriteLine("Yritä uudelleen: ");
-                string syote = Console.ReadLine();
-                yritykset++;
-                if (syote.Equals(pinkoodi))
-                {
-                    Console.WriteLine("Pin koodi oikein!");
-                    onkoOikein = true;
-                }
                 else
                 {
                     Console.WriteLine("Annoit kolme kertaa pin koodin vaarin");
                     Console.WriteLine("Kortti on otettu talteen");
-                    onkoOikein = false; 
+                    onkoOikien = false; 
                 }
             }
-            return onkoOikein;
         }
-        return onkoOikein;
+        return onkoOikien;
     }
-
-    //int syote = Convert.ToInt32(Console.ReadLine());
+    
     /// <summary>
-    /// Aliohjelma joka on ohjelman paavalikko
+    /// Päävalikko josta hoidetaan tiliasiat
     /// </summary>
-    public static void Valikko()
+    /// <param name="alkusaldo"></param>
+    public static void Valikko(double alkusaldo, List<string> tiliote)
     {
-        double saldo = alkuSaldo(600.00);
+        double saldo = alkusaldo;
         while (true)
         {
             Console.WriteLine("Jos haluat saldon kirjoita saldo: ");
@@ -111,18 +132,20 @@ public class Pankkiautomaatti
             }
             else if (tapahtuma == "ote")
             {
-                tulostaTilitapahtumat();
+                tulostaTiliote(tiliote, saldo);
             }
             else if (tapahtuma == "otto")
             {
-                saldo = Nosto(saldo);
+                saldo = Nosto(saldo, tiliote);
             }
             else if (tapahtuma == "talletus")
             {
-                saldo = Talletus(saldo);
+                saldo = Talletus(saldo, tiliote);
             }
             else if(tapahtuma == "stop")
             {
+                LoppuSaldo(saldo);
+                LoppuTiliote(tiliote);
                 break;
             }
         }
@@ -133,13 +156,7 @@ public class Pankkiautomaatti
     /// </summary>
     /// <param name="saldo">parametrina viedaan saldo</param>
     /// <returns>palauttaa tilin saldon</returns>
-    /// <example>
-    /// <pre name="test">
-    /// saldo = 200.00
-    /// 
-    /// </pre>
-    /// </example>
-    public static double Nosto(double saldo)
+    public static double Nosto(double saldo, List<string> tiliote)
     {
         Console.WriteLine("Kuinka paljon haluat nostaa: ");
         double nosto = Convert.ToDouble(Console.ReadLine());
@@ -147,7 +164,8 @@ public class Pankkiautomaatti
         if (saldo > 0.00 && nosto < saldo)
         {
             saldo = saldo - nosto;
-            tiliTapahtumat(nosto);
+            string rivi = DateTime.Now.ToString("dd/MM/yyyy")+ "\totto" + "\t" + " - "+ nosto.ToString();
+            tiliote.Add(rivi);
         }
         else
         {
@@ -161,26 +179,19 @@ public class Pankkiautomaatti
     /// </summary>
     /// <param name="saldo">parametrina viedaan alkuperäinen saldo</param>
     /// <returns>palauttaa lisatyn saldon</returns>
-    public static double Talletus(double saldo)
+    public static double Talletus(double saldo, List<string> tiliote)
     {
         Console.Write("Kuinka paljon haluat tallettaa tilille: ");
         double talletus = Convert.ToDouble(Console.ReadLine());
+        //double talletus = double.Parse(Console.ReadLine());
 
-        saldo = saldo - talletus;
-        tiliTapahtumat(talletus);
-        return talletus;
-    }
-    /// <summary>
-    /// Aliohjelma joka tuo asiakkaan tilin alkusaldon pin-koodin ollessa oikein
-    /// </summary>
-    /// <param name="luku">parametrina tuotu luku</param>
-    /// <returns>palauttaa saldon</returns>
-    public static double alkuSaldo(double luku)
-    {
-        double[] saldo = new double[1];
-        return saldo[0] = luku;
+        saldo = saldo + talletus;
+        string rivi = DateTime.Now.ToString("dd/MM/yyyy")+ "\ttalletus" + "\t" + " + " +talletus.ToString();
+        tiliote.Add(rivi);
         
+        return saldo;
     }
+  
     /// <summary>
     /// Aliohjelma joka tulostaa tlin saldon
     /// </summary>
@@ -192,46 +203,38 @@ public class Pankkiautomaatti
         Console.WriteLine("Paavalikkoon paase painamalla enter");
         string syote = Console.ReadLine();
     }
-    /// <summary>
-    /// Funktio joka palauttaa tilitapahtuminen taulukon
-    /// </summary>
-    /// <param name="maara">Parametrina annettu talletus tai nosto</param>
-    /// <returns>Palauattaa merkkijonotaulukon tilitapahtumista</returns>
-    public static string[] tiliTapahtumat(double maara)
-    {
-        string [] taulu = new string[30];
-        string lisays = maara.ToString();
-        taulu.Append(lisays);
-        return taulu;
-    }
+    
     /// <summary>
     /// Aliohjelma joka tulostaa tilitapahtumat
     /// </summary>
-    public static void tulostaTilitapahtumat()
+    public static void tulostaTiliote(List<string> tiliote, double saldo)
     {
-        double luku= 0;
-        string[] taulu = tiliTapahtumat(luku);
-        int viimeinen = taulu.Length - 1;
+        int viimeinen = tiliote.Count - 1;
         string temp;
-        for (int i = 0,j = viimeinen; i < j; i++,j--)
+        for (int i = 1,j = viimeinen; i < j; i++,j--)
         {
-            temp = taulu[i];
-            taulu[i] = taulu[j];
-            taulu[j] = temp;
+            temp = tiliote[i];
+            tiliote[i] = tiliote[j];
+            tiliote[j] = temp;
         }
 
-        for (int i = 0; i < taulu.Length; i++)
+        for (int i = 0; i < tiliote.Count; i++)
         {
-            Console.WriteLine(taulu[i] + " euroa");
+            string rivi = tiliote[i];
+            Console.WriteLine("{0, 2} ", rivi);
         }
+        
+        Console.WriteLine("Tilin saldo: {0,10:f2}\t", saldo);
         Console.WriteLine("alkuvalikkoon paaset painamalla enter");
         string merkki = Console.ReadLine();
     }
+    
     /// <summary>
     /// Aliohjelma joka tulostaa naytolle ohjelmastapoistuttaessa
     /// </summary>
     public static void Lopetus()
     {
+        
         Console.WriteLine("Kiitos kaynnista");
         Console.WriteLine("Tervetuloa uudelleen");
     }
diff --git a/harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj b/harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj
index 7841507..daa0e70 100644
--- a/harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj
+++ b/harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj
@@ -2,9 +2,17 @@
 
     <PropertyGroup>
         <OutputType>Exe</OutputType>
-        <TargetFramework>net7.0</TargetFramework>
+        <TargetFramework>net8.0</TargetFramework>
         <ExternalConsole>true</ExternalConsole>
-        <RootNamespace>main</RootNamespace>
     </PropertyGroup>
 
+    <ItemGroup>
+      <None Update="saldo.txt">
+        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+      </None>
+      <None Update="tiliote.txt">
+        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+      </None>
+    </ItemGroup>
+
 </Project>
diff --git a/harjoitustyo/pankkiautomaatti/saldo.txt b/harjoitustyo/pankkiautomaatti/saldo.txt
new file mode 100644
index 0000000..1b79f38
--- /dev/null
+++ b/harjoitustyo/pankkiautomaatti/saldo.txt
@@ -0,0 +1 @@
+500
diff --git a/harjoitustyo/pankkiautomaatti/tiliote.txt b/harjoitustyo/pankkiautomaatti/tiliote.txt
new file mode 100644
index 0000000..28a2f61
--- /dev/null
+++ b/harjoitustyo/pankkiautomaatti/tiliote.txt
@@ -0,0 +1 @@
+PVM     Tapahtuma   Summa
\ No newline at end of file
diff --git a/harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs b/harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs
deleted file mode 100644
index 3a60486..0000000
--- a/harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Text;
-using System.Linq;
-using System.Collections.Generic;
-using System.IO;
-using System.Runtime.CompilerServices;
-using NUnit.Framework;
-using static Pankkiautomaatti;
-
-	[TestFixture]
-	[DefaultFloatingPointTolerance(0.000001)]
-	public  class TestPankkiautomaatti
-	{
-		[Test]
-		public  void TestPinKoodi46()
-		{
-			Assert.AreEqual(true, PinKoodi(),"1234", "in method PinKoodi, line 47");
-			Assert.AreEqual(false, PinKoodi(),"1111", "in method PinKoodi, line 48");
-		}
-	}
-
diff --git a/harjoitustyo/pankkiautomaattiTest/pankkiautomaattiTest.csproj b/harjoitustyo/pankkiautomaattiTest/pankkiautomaattiTest.csproj
deleted file mode 100644
index f550cdf..0000000
--- a/harjoitustyo/pankkiautomaattiTest/pankkiautomaattiTest.csproj
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Project Sdk="Microsoft.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net7.0</TargetFramework>
-        <IsPackable>false</IsPackable>
-    </PropertyGroup>
-    <ItemGroup>
-        <PackageReference Include="NUnit" Version="3.13.1"/>
-        <PackageReference Include="NUnit3TestAdapter" Version="3.17.0"/>
-        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3"/>
-    </ItemGroup>
-    <ItemGroup>
-        <ProjectReference Include="..\pankkiautomaatti\pankkiautomaatti.csproj"/>
-    </ItemGroup>
-</Project>
-- 
GitLab