-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
195 lines (183 loc) · 7.12 KB
/
Program.cs
File metadata and controls
195 lines (183 loc) · 7.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
namespace Rap_Finands
{
/**
Dette BANK PROGRAM ER LAVET af Konrad Sommer! Copy(c) Right All rights reserveret 2020
idé og udtænkt af Anne Dam for Voldum Bank I/S
Rap Finands
**/
class Program
{
public static string reginummer = "4242";
public static string datafil = "bank.json"; //Her ligger alt data i
public static List<Konto> konti;
public static float belob;
static void Main(string[] args)
{
Console.WriteLine("Henter alt kontodata");
hent();
if (konti.Count == 0) {
var k = lavKonto();
k.ejer = "Ejvind Møller";
konti.Add(k);
GemTrans(k,"Opsparing",100);
GemTrans(konti[0],"Vandt i klasselotteriet",1000);
GemTrans(konti[0],"Hævet til Petuniaer",-50);
gem();
} else {
}
dos_start();
}
static void dos_start() {
Console.WriteLine("Velkommen til Rap Finans af Konrad Sommer");
Console.WriteLine("Hvad vil du gøre nu?");
bool blivVedogved = true;
while (blivVedogved) {
Console.WriteLine("1. Opret ny konto");
Console.WriteLine("2. Hæv/sæt ind");
Console.WriteLine("3. Se en oversigt");
Console.WriteLine("0. Afslut");
Console.Write(">");
string valg1 = Console.ReadLine();
if (int.TryParse(valg1, out int valg))
//Der var sat et +1 på valg1 dvs. at uanset hvilke tal jeg vælger vil det blive adderet med 1
// Opdatering 2: Jeg har anvendt en TryParse i stedet for blot at parse, da programmet før ville afslutte, hvis der blev indtastet et tegn, der ikke var godkendt, i stedet for en hel talværdi.
switch (valg) {
case 1:
dos_opretKonto();
break;
case 2:
dos_opretTransaktion(dos_findKonto());
break;
case 3:
dos_udskrivKonto(dos_findKonto());
break;
case 0:
blivVedogved = false;
break;
default:
Console.WriteLine("UGYLDIGT VALGT!!");
Console.ReadKey();
break;
}
}
Console.Clear();
}
static Konto dos_findKonto()
{
for (var i = 1; i <= konti.Count;i++)
{
Console.WriteLine(i+". "+konti[i-1].registreringsnr+" "+konti[i-1].kontonr+" ejes af "+konti[i-1].ejer);
}
Console.WriteLine("Vælg et tal fra 1 til "+konti.Count);
Console.Write(">");
int tal = int.Parse(Console.ReadLine());
if (tal < 1 || tal > konti.Count) {
Console.WriteLine("Ugyldigt valg");
Console.Clear();
return null;
}
return konti[tal-1];
}
static void dos_opretTransaktion(Konto k)
{
Console.Write("Tekst: ");
string tekst = Console.ReadLine();
Console.Write("Beløb: ");
float amount = float.Parse(Console.ReadLine());
if (GemTrans(k,tekst,amount)) {
Console.WriteLine("Transkationen blev gemt. Ny saldo på kontoen: "+findSaldo(k));
gem();
} else
Console.WriteLine("Transaktionen kunne ikke gemmes (Der var sikkert ikke penge nok på kontoen)");
}
static Konto dos_opretKonto()
{
Konto k = lavKonto();
Console.Write("Navn på kontoejer:");
k.ejer = Console.ReadLine();
Console.WriteLine("Konto oprettet!");
konti.Add(k);
gem();
return k;
}
public static Konto lavKonto() {
return new Konto();
}
/*
fed metode til at lave helt nye kontonumre ~Konrad
*/
public static string lavEtKontoNummer() {
Random tilfael = new Random();
string nr = tilfael.Next(1,9).ToString();
for (var i = 1; i <= 9; i++) {
nr = nr + tilfael.Next(0,9).ToString();
if (i == 3) nr = nr + " ";
if (i == 6) nr = nr + " ";
}
return nr;
}
static void dos_udskrivKonti() {
Console.WriteLine("================");
foreach (Konto k in konti) {
Console.WriteLine(k.registreringsnr+" "+k.kontonr+" ejes af "+k.ejer);
}
}
static void dos_udskrivKonto(Konto k) {
Console.WriteLine("Konto for "+k.ejer+": "+k.registreringsnr+" "+k.kontonr);
Console.WriteLine("================");
Console.WriteLine("Tekst\t\t\t\tBeløb\t\tSaldo");
foreach (Transaktion t in k.transaktioner) {
Console.Write(t.tekst+"\t\t\t\t");
Console.Write(t.amount+"\t\t");
Console.WriteLine(t.saldo);
}
Console.WriteLine("================\n");
}
public static bool GemTrans(Konto konto, string tekst, float beløb) {
var saldo = findSaldo(konto);
if (saldo + beløb < 0) return false;
var t = new Transaktion();
t.tekst = tekst;
t.amount = belob;
t.saldo = t.amount + saldo;
t.dato = DateTime.Now;
konto.transaktioner.Add(t);
return true;
}
public static float findSaldo(Konto k) {
Transaktion seneste = new Transaktion();
DateTime senesteDato = DateTime.MinValue;
foreach(var t in k.transaktioner) {
if (t.dato > senesteDato) {
senesteDato = t.dato;
seneste = t;
}
}
return seneste.saldo;
}
public static void gem()
{
File.WriteAllText(datafil,JsonConvert.SerializeObject(konti));
File.Delete(datafil); //Fjern debug fil
}
public static void hent()
{
datafil = "debug_bank.json"; //Debug - brug en anden datafil til debug ~Konrad
if (File.Exists(datafil)) {
string json = File.ReadAllText(datafil);
konti = JsonConvert.DeserializeObject<List<Konto>>(json);
} else {
konti = new List<Konto>();
}
}
}
}
/**
Koden er lavet til undervisningbrug på TECHCOLLEGE
Voldum Bank og nævnte personer er fiktive.
~Simon Hoxer Bønding
**/