Permalänk

banksimulation C#

Hej.

Jag håller på med programering1 och ska skapa ett program som simulerar en bank.

Någon här inne som kan hjälpa mig om detta är helt fel?
Hur ska programmet spara pengar i saldot som kommer från en insättning eller uttag?

Någon som har några bra tips.

Console.WriteLine("[i]nsättning");
Console.WriteLine("[u]ttag");
Console.WriteLine("[r]räntebetalning");
Console.WriteLine("[s]aldo");
Console.WriteLine("[a]vsluta");

Console.Write("Vad vill du göra?");
string Meny = Console.ReadLine();

int money = 0;
int balance =0;
int total = 0;
int withdrawal = 0;
int deposit = 0;

{ switch (Meny)

{
case "i":

Console.WriteLine("Deposit: ");
deposit = Convert.ToInt32(Console.Read());
total += deposit = Convert.ToInt32(Console.Read());
return;

case "u":

Console.WriteLine("Withdrawl: ");
withdrawal = Convert.ToInt32(Console.Read());
total -= withdrawal = Convert.ToInt32(Console.Read());
return;

case "r":
int account = 0;

Console.WriteLine("Ammount to save: ");
string strPengar = Console.ReadLine();
money = int.Parse(strPengar);

Console.WriteLine("How many years: ");
string strYear = Console.ReadLine();
int year = int.Parse(strYear);

Console.WriteLine("Interest in %: ");
string strInterest = Console.ReadLine();
int interest = int.Parse(strInterest);

total = account + money * 12 + (money * 12 * interest / 100);
Console.WriteLine("Efter " + year + " år är totalen: " + total);
return;

case "s":

Console.WriteLine("Det här är ditt saldo:");
return;

case "a":
break;

default:
Console.WriteLine("För in rätt kommando");
break;

Permalänk
Avstängd
Skrivet av henrik-linust:

Hej.

Jag håller på med programering1 och ska skapa ett program som simulerar en bank.

Någon här inne som kan hjälpa mig om detta är helt fel?
Hur ska programmet spara pengar i saldot som kommer från en insättning eller uttag?

Någon som har några bra tips.

HELP PLEASE!

case "i":

Console.WriteLine("Deposit: ");
deposit = Convert.ToInt32(Console.Read());
balance += deposit;
deposit = balance;
return;

case "u":

Console.WriteLine("withdrawl: ");
withdrawal = Convert.ToInt32(Console.Read());
balance -= withdrawal = Convert.ToInt32(Console.Read());
withdrawal -= balance;
return;

case "s":

Console.WriteLine("Det här är ditt saldo:");
return;

Ett uppenbart fel är att du först lägger till deposit till balance och sen sätter deposit till balance. Det borde inte påverka något men är helt onödigt. Samma för withdrawal. Sen behöver du ju skriva ut balance i din sista utskrift.

Permalänk
Medlem

Vet inte om jag helt förstår frågan. Men för att kunna spara ett saldo behöver du en variabel som utgör saldot och som du adderar eller subtraherar på utifrån om det är en insättning eller ett uttag som görs. Och det är väl det som du kallar balance i koden ovan. Ett tips är att du vill ha samma kod både för insättning och för uttag med ända skillnaden är det ena är plus och det andra ska vara minus. Så börja med att bara fokusera på insättning och när du ser att det fungerar lägger du upp möjligheten till uttag.

Permalänk
Hedersmedlem

Du behöver ta med mer av din kod så att man kan se var du har skapat variablerna.
Det är också bra om du är lite mer specifik med vad du har för problem. Vi hjälper gärna till med specifika problem, men ingen kommer göra din skoluppgift till dig.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Skrivet av snajk:

Ett uppenbart fel är att du först lägger till deposit till balance och sen sätter deposit till balance. Det borde inte påverka något men är helt onödigt. Samma för withdrawal. Sen behöver du ju skriva ut balance i din sista utskrift.

Skrivet av Herr K:

Vet inte om jag helt förstår frågan. Men för att kunna spara ett saldo behöver du en variabel som utgör saldot och som du adderar eller subtraherar på utifrån om det är en insättning eller ett uttag som görs. Och det är väl det som du kallar balance i koden ovan. Ett tips är att du vill ha samma kod både för insättning och för uttag med ända skillnaden är det ena är plus och det andra ska vara minus. Så börja med att bara fokusera på insättning och när du ser att det fungerar lägger du upp möjligheten till uttag.

Skrivet av giplet:

Du behöver ta med mer av din kod så att man kan se var du har skapat variablerna.
Det är också bra om du är lite mer specifik med vad du har för problem. Vi hjälper gärna till med specifika problem, men ingen kommer göra din skoluppgift till dig.

Jag har nu lagt in hela programmet. Tycker allt är så J***A snurrigt!

Tar åt mig det ni har skrivit så länge och kämpar på!

Men om jag fattar det rätt behöver jag också få in en loop som kör hela programmet.

Permalänk
Medlem
Skrivet av henrik-linust:

Jag har nu lagt in hela programmet. Tycker allt är så J***A snurrigt!

Tar åt mig det ni har skrivit så länge och kämpar på!

Men om jag fattar det rätt behöver jag också få in en loop som kör hela programmet.

Är själv väldigt mycket nybörjare men mitt råd skulle vara att inte utföra själva arbetet direkt i switch funktionen.
Lägg till exempel insättningskoden i en egen funktion istället.

case "i":
deposit_func(); //kalla på deposit som utför arbetet
return;

private void deposit_func()
{
Console.WriteLine("Deposit: ");
deposit = Convert.ToInt32(Console.Read());
total += deposit = Convert.ToInt32(Console.Read());
}

För loopen borde du finns det säkert mycket snyggare men här är ett förslag.

int run = 0;
do
{
*Den del av koden du vill repetera här. Tänk på att inte initiera variablerna varje gång*
}
while (run== 0);

Sen använder du case "a" för att sätta run till 1 och avbryta loopen.
case "a":
shutdown();
break;

private void shutdown()
{
Console.WriteLine("Tack för att du använder henrik-linust bank ab");
run = 1;
}

Permalänk
Skrivet av johnlennonx:

Är själv väldigt mycket nybörjare men mitt råd skulle vara att inte utföra själva arbetet direkt i switch funktionen.
Lägg till exempel insättningskoden i en egen funktion istället.

case "i":
deposit_func(); //kalla på deposit som utför arbetet
return;

private void deposit_func()
{
Console.WriteLine("Deposit: ");
deposit = Convert.ToInt32(Console.Read());
total += deposit = Convert.ToInt32(Console.Read());
}

För loopen borde du finns det säkert mycket snyggare men här är ett förslag.

int run = 0;
do
{
*Den del av koden du vill repetera här. Tänk på att inte initiera variablerna varje gång*
}
while (run== 0);

Sen använder du case "a" för att sätta run till 1 och avbryta loopen.
case "a":
shutdown();
break;

private void shutdown()
{
Console.WriteLine("Tack för att du använder henrik-linust bank ab");
run = 1;
}

Super tack för svar! Ska knappa lite så får vi se vad som händer!
Att ge sig in på Programmering va nog mitt största misstag känns de som!

Permalänk
Hedersmedlem
Skrivet av henrik-linust:

Men om jag fattar det rätt behöver jag också få in en loop som kör hela programmet.

Ja. Mer eller mindre hela programmet kommer att vara i loopen då. Men fundera lite över vilka bitar som ska vara utanför. Du vill bara ha de rader som måste utföras flera gånger inuti loopen. Även om vissa saker kan vara riskfria att ha i loopen så är det oftast bättre att tänka så; Vad MÅSTE vara med? Blir mindre risk för fel då.

Kan även tipsa om att använda code-taggar för att få snygg formatering på kod i sitt meddelande.
[ code ] [ /code ] (ta bort mellanslagen)

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Skrivet av giplet:

Ja. Mer eller mindre hela programmet kommer att vara i loopen då. Men fundera lite över vilka bitar som ska vara utanför. Du vill bara ha de rader som måste utföras flera gånger inuti loopen. Även om vissa saker kan vara riskfria att ha i loopen så är det oftast bättre att tänka så; Vad MÅSTE vara med? Blir mindre risk för fel då.

Kan även tipsa om att använda code-taggar för att få snygg formatering på kod i sitt meddelande.
[ code ] [ /code ] (ta bort mellanslagen)

Super. Tack för svar. Bra med tips för en beginner som mig!

Permalänk
Medlem
Skrivet av henrik-linust:

Super tack för svar! Ska knappa lite så får vi se vad som händer!
Att ge sig in på Programmering va nog mitt största misstag känns de som!

Det handlar bara om att komma in i tankesättet och det gör du steg för steg. Även om du inte känner att du utvecklar dig så kommer du inse vilka enorma steg du tagit varje gång du kollar en månad tillbaka och ser vad du tyckte var kämpigt då (och garanterat fylls av skam när du ser hur du till slut löste saken i fråga - det är tyvärr en del i processen ;D).

Permalänk

Summa kardemumma: Allt verkar funka. Enda problemet är att när programmet ska räkna ut räntan på sparade pengar så vill den inte räkna.

int deposit = 0;
int balance = 0;
int amount = 0;

bool isRunning = true;
while (isRunning)

{
Console.WriteLine("[D]eposit");
Console.WriteLine("[W]ithdrawal");
Console.WriteLine("[I]nterest");
Console.WriteLine("[B]alance");
Console.WriteLine("[Q]uit");
Console.Write("Vad vill du göra?");
string Meny = Console.ReadLine();

switch (Meny)

{
case "d":
case "D":

Console.WriteLine("Deposit: ");
deposit = int.Parse(Console.ReadLine());
balance = deposit + balance;
break;

case "w":
case "W":

Console.WriteLine("Withdrawal: ");
int withdrawal = int.Parse(Console.ReadLine());
balance = balance - withdrawal;
Console.WriteLine("Deposit amount" + (balance));
break;

case "i":
case "I":

Console.WriteLine("Yearly Deposit : ");
int yearlyDeposit = int.Parse(Console.ReadLine());

Console.WriteLine("How many years? ");
int year = int.Parse(Console.ReadLine());

Console.WriteLine("Interest in %: ");
double interest = Convert.ToDouble(Console.ReadLine()) / 100;
break;

double total = 0;
year = 0;

for (int i = 0; i < year; i++)
{
total = total + yearlyDeposit;
double increase = total * interest;
total = total += increase;

Console.WriteLine("År " + i + " Total: " + total + " Ökning: " + increase);

break;
}

case "b":
case "B":

Console.WriteLine("Det här är ditt saldo:" + balance);
break;

case "q":
case "Q":
Console.WriteLine("Tack för att du använder Haaaaaaanky private banking!! ");
isRunning = false;
break;

default:
Console.WriteLine("För in rätt kommando");
break;

Permalänk
Medlem
Skrivet av henrik-linust:

Enda problemet är att när programmet ska räkna ut räntan på sparade pengar så vill den inte räkna.

Du verkar sätta år till 0 precis innan du går in i uträkningen av ränta.

Permalänk
Skrivet av johnlennonx:

Du verkar sätta år till 0 precis innan du går in i uträkningen av ränta.

Jag får verkligen inte ihop det. Vad ska jag ändra på?
Blir så trött när jag inte förstår!

Permalänk
Medlem
Skrivet av henrik-linust:

Jag får verkligen inte ihop det. Vad ska jag ändra på?
Blir så trött när jag inte förstår!

Om du inte lärt dig att använda debuggern redan så är det dags nu. Sätt en breakpoint inuti din loop och kör koden i debug-läget så kommer du snart se vad som går fel.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Skrivet av noMad17:

Om du inte lärt dig att använda debuggern redan så är det dags nu. Sätt en breakpoint inuti din loop och kör koden i debug-läget så kommer du snart se vad som går fel.

Det har jag dålig koll på. Har bara hållit på med kursen i typ 10 dagar. Går så J***A fort framåt.
Konstig studieplan för en nybörjare!

Permalänk
Medlem

Som någon redan påpekade, varför sätter du year = 0 innan for-loopen?

year = 0; for (int i = 0; i < year; i++) {

Använd även [ code ] ... [ /code ] taggarna (utan mellanrum i taggen såklart) så det blir lättare att läsa.

Permalänk

Jadu. Den som visste det! Har läst programmering i 10 dagar så har dålig koll på saker o ting , haha.

Dock när jag körde Debug så fick jag varning på min " double total = 0; "

Permalänk
Skrivet av Pake:

Som någon redan påpekade, varför sätter du year = 0 innan for-loopen?

year = 0; for (int i = 0; i < year; i++) {

Använd även [ code ] ... [ /code ] taggarna (utan mellanrum i taggen såklart) så det blir lättare att läsa.

Hur tycker du jag ska göra om loopen? Kom gärna med en lösning.

Permalänk
Hedersmedlem
Skrivet av henrik-linust:

Hur tycker du jag ska göra om loopen? Kom gärna med en lösning.

Som sagt, ingen kommer att göra jobbet åt dig.

Du har redan fått tips som kommer att ge dig lösningen. Varför sätter du year = 0 precis innan loopen. Vad finns i year innan den raden och vad finns efter. Vad ger det för effekt på loopen?

Be din lärare visa hur debuggern fungerar. Det borde vara det första man går igenom på kursen eftersom den är en ovärderlig tillgång för all programmering.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av henrik-linust:

Jag får verkligen inte ihop det. Vad ska jag ändra på?
Blir så trött när jag inte förstår!

Initiera year till 0 innan du läser in värden från konsolen.
Som koden är nu så läser du först in från konsolen men sen sätter du den till 0 igen precis innan loopen.

Om du bara hållt på i 10 dagar så bli inte rädd om allt känns förvirrande just nu, det viktiga är att hela tiden försöka förstå varför saker händer.

Permalänk
Skrivet av giplet:

Som sagt, ingen kommer att göra jobbet åt dig.

Du har redan fått tips som kommer att ge dig lösningen. Varför sätter du year = 0 precis innan loopen. Vad finns i year innan den raden och vad finns efter. Vad ger det för effekt på loopen?

Be din lärare visa hur debuggern fungerar. Det borde vara det första man går igenom på kursen eftersom den är en ovärderlig tillgång för all programmering.

Jag får knappa lite så hoppas jag att jag klurar ut vad felet är!

Det stod lite om debug i början av boken men inget mer än att det används för att felsöka och att detta tas upp längre fram i boken. Inte fått några instruktioner på hur det används men jag får hoppa lite i boken så kanske jag får ett svar på hur debug funkar.

Pluggar på distans och har frågat läraren om saker men får inga vettiga svar.
Därför jag sökte mig hit till sweclockers i hopp om hjälp! Får ju många bra tips så jag löser nog det här

Tack!!

Permalänk
Medlem
Skrivet av henrik-linust:

Det stod lite om debug i början av boken men inget mer än att det används för att felsöka och att detta tas upp längre fram i boken. Inte fått några instruktioner på hur det används men jag får hoppa lite i boken så kanske jag får ett svar på hur debug funkar.

Microsoft har en kort genomgång av debuggern som går igenom saker steg för steg. Det är väl värt att lägga lite tid på att lära dig hur debuggern fungerar, du kommer ha stor hjälp av den och det är något av det första man bör lära sig (men något som många nybörjarkurser hoppar över av någon outgrundlig anledning).

Permalänk
Skrivet av johnlennonx:

Initiera year till 0 innan du läser in värden från konsolen.
Som koden är nu så läser du först in från konsolen men sen sätter du den till 0 igen precis innan loopen.

Om du bara hållt på i 10 dagar så bli inte rädd om allt känns förvirrande just nu, det viktiga är att hela tiden försöka förstå varför saker händer.

Om du kollar i Case "i" så har jag ett break; och sedan ett break; i uträkningen.
Det va det som spökade tillsammans med att jag hade "year = 0;" före loopen.

Satte BREAK; efter uträkningen utanför kodblocken och tog bort YEAR = 0;

Tack för the help!!

Permalänk
Medlem
Skrivet av henrik-linust:

Om du kollar i Case "i" så har jag ett break; och sedan ett break; i uträkningen.
Det va det som spökade tillsammans med att jag hade "year = 0;" före loopen.

Satte BREAK; efter uträkningen utanför kodblocken och tog bort YEAR = 0;

Tack för the help!!

Ah breaken missade jag helt när jag läste.
Härligt att du fått ordning på det.

Rekommenderar dig att titta på den här uppgiften igen om en månad för att inse hur mycket du då har lärt dig.

Permalänk
Skrivet av johnlennonx:

Ah breaken missade jag helt när jag läste.
Härligt att du fått ordning på det.

Rekommenderar dig att titta på den här uppgiften igen om en månad för att inse hur mycket du då har lärt dig.

Även de mest erfarna programmerarna kan göra fel
Ja, nu är det löst. Behöver skriva psuedokod och flödeschema också så det är bara kämpa på.

Ja, kursen är bara 5 veckor KORT så jag hoppas att sista veckan kan jag kolla tillbaka och småskratta lite åt mig själv!

Permalänk
Medlem

@henrik-linust
Hoppas du får blodad tand.

Visa signatur

CPU: 5900x. Mem:64GB@3200 16-17-17-34-1T. (ImDIsk)
GPU: 1080 Ti@ca 6-7%OC. Sound: SB-Z -> toslink (DTS)-> old JVC. MB Realtek to Z-2300 for VOIP.

Permalänk
Hedersmedlem

*Obegripliga inlägg raderade*

Visa signatur

Danskjävel så krattar som en skrivare...