From 95df0ccfc5491c84bb742e770bbb910af1e2951f Mon Sep 17 00:00:00 2001
From: Vesikukka Teemu <teemu.t.vesikukka@student.jyu.fi>
Date: Wed, 13 Dec 2023 10:10:29 +0200
Subject: [PATCH] uusi

---
 .../.idea/.idea.harjoitustyo/.idea/.gitignore |  13 +
 .../.idea.harjoitustyo/.idea/indexLayout.xml  |   8 +
 harjoitustyo/harjoitustyo.sln                 |  23 ++
 harjoitustyo/harjoitustyo.sln.ctbackup        |  16 ++
 .../pankkiautomaatti/Pankkiautomaatti.cs      | 238 ++++++++++++++++++
 .../pankkiautomaatti/pankkiautomaatti.csproj  |  10 +
 .../PankkiautomaattiTest.cs                   |  21 ++
 .../pankkiautomaattiTest.csproj               |  15 ++
 8 files changed, 344 insertions(+)
 create mode 100644 harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore
 create mode 100644 harjoitustyo/.idea/.idea.harjoitustyo/.idea/indexLayout.xml
 create mode 100644 harjoitustyo/harjoitustyo.sln
 create mode 100644 harjoitustyo/harjoitustyo.sln.ctbackup
 create mode 100644 harjoitustyo/pankkiautomaatti/Pankkiautomaatti.cs
 create mode 100644 harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj
 create mode 100644 harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs
 create mode 100644 harjoitustyo/pankkiautomaattiTest/pankkiautomaattiTest.csproj

diff --git a/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore b/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore
new file mode 100644
index 0000000..bb9f4a0
--- /dev/null
+++ b/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/projectSettingsUpdater.xml
+/contentModel.xml
+/.idea.harjoitustyo.iml
+/modules.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/harjoitustyo/.idea/.idea.harjoitustyo/.idea/indexLayout.xml b/harjoitustyo/.idea/.idea.harjoitustyo/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/harjoitustyo/.idea/.idea.harjoitustyo/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="UserContentModel">
+    <attachedFolders />
+    <explicitIncludes />
+    <explicitExcludes />
+  </component>
+</project>
\ No newline at end of file
diff --git a/harjoitustyo/harjoitustyo.sln b/harjoitustyo/harjoitustyo.sln
new file mode 100644
index 0000000..d577b6a
--- /dev/null
+++ b/harjoitustyo/harjoitustyo.sln
@@ -0,0 +1,23 @@
+
+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}"
+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
+EndGlobal
diff --git a/harjoitustyo/harjoitustyo.sln.ctbackup b/harjoitustyo/harjoitustyo.sln.ctbackup
new file mode 100644
index 0000000..737dbde
--- /dev/null
+++ b/harjoitustyo/harjoitustyo.sln.ctbackup
@@ -0,0 +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
+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
new file mode 100644
index 0000000..c3738e6
--- /dev/null
+++ b/harjoitustyo/pankkiautomaatti/Pankkiautomaatti.cs
@@ -0,0 +1,238 @@
+using System;
+using System.Text;
+using System.Linq;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.CompilerServices;
+
+/// @author Teemu Vesikukka
+/// @version 15.10.2023
+/// <summary>
+/// Käyttäjä voi hoitaa pankkiasioita ohjelman kautta
+/// </summary>
+public class Pankkiautomaatti
+{
+    /// <summary>
+    /// Pääohjelma joka kysyy pin-koodin kayttajalta ja pin-koodin ollessa oikein, paastaa
+    /// asiakkaan omalle tilille
+    /// </summary>
+    public static void Main()
+    {
+        double luku = 0.00;
+        Aloitus();
+        
+        if (PinKoodi() == true)
+        {
+            Valikko();
+        }
+        Lopetus();
+    }
+
+    /// <summary>
+    /// Aliohjelma joka aloittaa pyytamalla asiakkaan kortin
+    /// </summary>
+    public static void Aloitus()
+    {
+        Console.WriteLine("Tervetuloa!");
+        Console.WriteLine("Syota kortti ole hyva");
+    }
+
+    /// <summary>
+    /// Aliohjelma joka pyytaa asiakkaalta pin-koodin ja koodin
+    /// ollessa oikein paastaa asiakkaan kayttamaan tilia
+    /// </summary>
+    /// <returns>alse or true</returns>
+    /// <example>
+    /// <pre name="test">
+    /// PinKoodi(),"1234"===true;
+    /// PinKoodi(),"1111"===false;
+    /// </pre>
+    /// </example>
+    public static bool PinKoodi()
+    {
+        int yritykset = 0;
+        bool onkoOikein = false;
+        string pinkoodi = "1234";
+        while (yritykset <= 3 && onkoOikein == false)
+        {
+            if (yritykset <= 1)
+            {
+                Console.Write("Anna pin koodi: ");
+                string syote = Console.ReadLine();
+                yritykset++;
+                if (syote.Equals(pinkoodi))
+                {
+                    Console.WriteLine("Pin kood oikein");
+                    onkoOikein = 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; 
+                }
+            }
+            return onkoOikein;
+        }
+        return onkoOikein;
+    }
+
+    //int syote = Convert.ToInt32(Console.ReadLine());
+    /// <summary>
+    /// Aliohjelma joka on ohjelman paavalikko
+    /// </summary>
+    public static void Valikko()
+    {
+        double saldo = alkuSaldo(600.00);
+        while (true)
+        {
+            Console.WriteLine("Jos haluat saldon kirjoita saldo: ");
+            Console.WriteLine("Jos haluat tiliotteen kirjoita ote");
+            Console.WriteLine("Jos haluat nostaa kirjoita otto");
+            Console.WriteLine("Jos haluat pysayttaa kirjoita stop");
+            Console.WriteLine("Jos haluat tallettaa tilille rahaa kirjoita talletus");
+            string tapahtuma = Console.ReadLine();
+            if (tapahtuma == "saldo")
+            {
+                tulostaSaldo(saldo);
+            }
+            else if (tapahtuma == "ote")
+            {
+                tulostaTilitapahtumat();
+            }
+            else if (tapahtuma == "otto")
+            {
+                saldo = Nosto(saldo);
+            }
+            else if (tapahtuma == "talletus")
+            {
+                saldo = Talletus(saldo);
+            }
+            else if(tapahtuma == "stop")
+            {
+                break;
+            }
+        }
+    }
+    /// <summary>
+    /// Aliohjelma joka ottaa tililta rahaa asiakkaan nostaessa tililta rahaa
+    /// Tilin saldon ollessa liian pieni tililta ei pysty nostamaan rahaa
+    /// </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)
+    {
+        Console.WriteLine("Kuinka paljon haluat nostaa: ");
+        double nosto = Convert.ToDouble(Console.ReadLine());
+        
+        if (saldo > 0.00 && nosto < saldo)
+        {
+            saldo = saldo - nosto;
+            tiliTapahtumat(nosto);
+        }
+        else
+        {
+            Console.WriteLine("Tilillä ei ole katetta");
+        }
+
+        return saldo;
+    }
+    /// <summary>
+    /// Aliohjelma joka lisaa tilille asiakkaan lisaaman summan
+    /// </summary>
+    /// <param name="saldo">parametrina viedaan alkuperäinen saldo</param>
+    /// <returns>palauttaa lisatyn saldon</returns>
+    public static double Talletus(double saldo)
+    {
+        Console.Write("Kuinka paljon haluat tallettaa tilille: ");
+        double talletus = Convert.ToDouble(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;
+        
+    }
+    /// <summary>
+    /// Aliohjelma joka tulostaa tlin saldon
+    /// </summary>
+    /// <param name="saldo">parametrina viety tilin saldo</param>
+    public static void tulostaSaldo(double saldo)
+    {
+        //double[] saldo = Saldo();
+        Console.WriteLine("Tililla on rahaa " + "+ " + saldo + " euroa");
+        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()
+    {
+        double luku= 0;
+        string[] taulu = tiliTapahtumat(luku);
+        int viimeinen = taulu.Length - 1;
+        string temp;
+        for (int i = 0,j = viimeinen; i < j; i++,j--)
+        {
+            temp = taulu[i];
+            taulu[i] = taulu[j];
+            taulu[j] = temp;
+        }
+
+        for (int i = 0; i < taulu.Length; i++)
+        {
+            Console.WriteLine(taulu[i] + " euroa");
+        }
+        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");
+    }
+}
\ No newline at end of file
diff --git a/harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj b/harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj
new file mode 100644
index 0000000..7841507
--- /dev/null
+++ b/harjoitustyo/pankkiautomaatti/pankkiautomaatti.csproj
@@ -0,0 +1,10 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <OutputType>Exe</OutputType>
+        <TargetFramework>net7.0</TargetFramework>
+        <ExternalConsole>true</ExternalConsole>
+        <RootNamespace>main</RootNamespace>
+    </PropertyGroup>
+
+</Project>
diff --git a/harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs b/harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs
new file mode 100644
index 0000000..3a60486
--- /dev/null
+++ b/harjoitustyo/pankkiautomaattiTest/PankkiautomaattiTest.cs
@@ -0,0 +1,21 @@
+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
new file mode 100644
index 0000000..f550cdf
--- /dev/null
+++ b/harjoitustyo/pankkiautomaattiTest/pankkiautomaattiTest.csproj
@@ -0,0 +1,15 @@
+<?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