Skip to content
Snippets Groups Projects
Commit 766d4631 authored by Vesikukka Teemu's avatar Vesikukka Teemu
Browse files

harjoitustyon muutoksien palautus

parent 95df0ccf
No related branches found
No related tags found
No related merge requests found
......@@ -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
......

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

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
......@@ -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");
}
......
......@@ -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>
500
PVM Tapahtuma Summa
\ No newline at end of file
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");
}
}
<?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>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment