diff --git a/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore b/harjoitustyo/.idea/.idea.harjoitustyo/.idea/.gitignore index bb9f4a08ded28185949d6cc11d62f78b2cc6cc35..9bae0a89ed814675b27d0c01df89e929e23cf1ea 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 d577b6a13f2ef303e8ef62bdc32ec0b0e465b9e2..cddf1863cf228052875afd5c37471719425862b2 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 737dbde24d0fe7a08d2ef7ef5803e858da5b4a85..0000000000000000000000000000000000000000 --- 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 c3738e6eca09a035c07a21c29e92deb844e09483..76577400005dfe755d279e71d29d7f3d498ac55d 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 7841507631090524480fa9612effe904bdaadcea..daa0e7087b9e3e6928b241ffd8e19cfb4b411ef5 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 0000000000000000000000000000000000000000..1b79f38e25b24dcac0318f3371793a6ec204a71b --- /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 0000000000000000000000000000000000000000..28a2f61ec5f14d3ce26eadd947f254ee3bdd259e --- /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 3a6048699c3801cad0ca372c0a137dd067b5b24b..0000000000000000000000000000000000000000 --- 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 f550cdfe08cb981f752d6ad9f68b9cb6625deee6..0000000000000000000000000000000000000000 --- 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>