Jump to content

Archived

This topic is now archived and is closed to further replies.

nyac55

C# - program konto bankowe?

Recommended Posts

Witam. Obecnie mam zrobić program: coś jak konto bankowe -> 3 funkcje wpłać ,wypłać ,zmień PIN oraz konto ów powinno umożliwić nam posiadanie wielu kart. Mam pytanie ,jak powinienem umożliwić użytkownikowi utworzenie tych wielu kart (bo to będą obiekty klasy konto bankowe)?

Link to comment
Share on other sites

Na razie mam taki fragment nie zawierający jeszcze obiektowości. Zawiera błędy itd.:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication15
{
class Program
{
public static string imie, nazwisko;
public static int x,kwota=5,pin=4444;
public static double saldo=0;

static double wplac(double saldo,int kwota)
{

saldo = saldo + kwota;
return saldo;
}

static double wyplac(double saldo ,int kwota)
{
saldo = saldo - kwota;
return saldo;
}

static void dane()
{
Console.WriteLine("Podaj imię i nazwisko\n");
imie=Console.ReadLine();
nazwisko=Console.ReadLine();
Console.WriteLine("Imie: "+imie+"\nNazwisko: "+nazwisko);

}

static void zm_pin()
{
Console.WriteLine("Teraz możesz zmienić PIN");
pin=Convert.ToInt32(Console.ReadLine());
}

static void Main(string[] args)
{
double saldo=70;
int kwota=5;
dane();
Console.WriteLine("Wybierz akcję: 1. Wpłać ,2. Wypłać ,3. Zmień PIN ");
x = Convert.ToInt32(Console.ReadKey()); // tutaj pojawia się błąd ,ale dopiero po uruchomieniu //programu
switch (x)
{
case 1:
Console.WriteLine("Wpłać");
wplac(saldo, kwota);
break;
case 2:
Console.WriteLine("Wypłać");
wyplac(saldo, kwota);
break;
case 3:
Console.WriteLine("Zmień PIN");
zm_pin();
break;
default:
Console.WriteLine("Nie wybrano żadnej akcji lub błąd systemu! ");
break;
}
Console.ReadKey();

}
}
}

Wersja nieco poprawiona. Nie zawiera jeszcze obiektów. Pojawia się jakiś błąd przy x po uruchomieniu?

Link to comment
Share on other sites

Przeczytałem to co podałeś. Lecz dalej nie wiem o co chodzi. Klasa ConsoleKeyInfo odczytuje stan klawisza ,więc stowrzyłem zmienną z i do niej wpisałem znak wprowadzany z klawiatury ,następnie wartość z rzutowaną wrzuciłem pod x ,lecz dalej mam ten sam błąd.


ConsoleKeyInfo z;
dane();
Console.WriteLine("Wybierz akcję: 1. Wpłać ,2. Wypłać ,3. Zmień PIN ");
z=Console.ReadKey();
x = Convert.ToChar(z);

Link to comment
Share on other sites

Breakpoint? <-> (to jest to samo ,tylko uruchomiło się autoamtycznie)?(1) Jak uruchomiłem program to linia: x=Convert.ToChar(z) podświetliła się na żółto ,gdy najechałem na z {System.ConosleKeyInfo}.

Czy chodzi o to ,że próbuję obiekt nie konwertowalny przenieść na konwertowalny?(2)

Link to comment
Share on other sites

Breakpoint = punkt zatrzymania programu. Polecam obejrzeć np

Gdy najedziesz na "z" możesz rozwijać podgląd i zobaczyć, co jest w środku.

Convert nie wie w jaki sposób zamienić ConsoleKeyInfo na tekst. Aby konwersja mogła zajść, środowisko musi wiedzieć, jak zmienić typ obiektu.

Link to comment
Share on other sites

U mnie jest key: D1 ,D2 lub D3 w zależności czy nacisnę 1 ,2 czy 3. Niżej numer z tablicy kodów ASCII oraz znak jaki to jest. Niżej modyfikator(klawisz modyfikujący) - jak się nie pojawi jest 0 ,a jak się pojawi to pisze np. Shift.

_________

Widzę to po ustawieniu breakpointu i uruchomieniu programu -> nigdy przed uruchomieniem. Czy tak powinno być z tym breakpointem?

Link to comment
Share on other sites

Tak, dzięki breakpointom możesz oglądać stan programu w momencie zatrzymania. I w ten sposób możesz odkryć, że we właściwości KeyChar znajduje się tekstowa forma wciśniętego klawisza, więc zamiast konwertować wystarczy napsać x = z.KeyChar.

Link to comment
Share on other sites

Ok ,dzięki -> nie wiedziałem jak to wydobyć. smile_prosty.gif

____________

Teraz muszę popracować nad obiektami i listą obiektów.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication15
{
class Program
{
public static string imie, nazwisko;
public static int x,kwota=5,pin=4444;
public static double saldo=0;
static double wplac(double saldo,int kwota)
{
saldo = saldo + kwota;
return saldo;
}
static double wyplac(double saldo ,int kwota)
{
saldo = saldo - kwota;
return saldo;
}
static void dane()
{
Console.WriteLine("Podaj imię i nazwisko\n");
imie=Console.ReadLine();
nazwisko=Console.ReadLine();
Console.WriteLine("Imie: "+imie+"\nNazwisko: "+nazwisko);
}
static void zm_pin()
{
Console.WriteLine("Teraz możesz zmienić PIN");
pin=Convert.ToInt32(Console.ReadLine());
}
static void dod_karte()
{
for(int i=1;i<new;i++)
{
Program karta = new Program();
}
}
static void Main(string[] args)
{
double saldo=70;
int kwota=5;
char x;
List<Program> karta = new List<Program>();

ConsoleKeyInfo z;
dane();
Console.WriteLine("Wybierz akcję: 1. Wpłać ,2. Wypłać ,3. Zmień PIN ");
z=Console.ReadKey();
x = z.KeyChar;
switch (x)
{
case ('1'):
Console.WriteLine("Wpłać");
wplac(saldo, kwota);
break;
case ('2'):
Console.WriteLine("Wypłać");
wyplac(saldo, kwota);
break;
case ('3'):
Console.WriteLine("Zmień PIN");
zm_pin();
break;
default:
Console.WriteLine("Nie wybrano żadnej akcji lub błąd systemu! ");
break;
}
Console.ReadKey();
}
}
}

Dodałem co nie co do kodu ,ale teraz nie wiem jak dodać do listy obiekty ,ile ich będzie itd. Czy mogę np. spytać użytkownika ile ma być tych kart ,a następnie w klasie program w metodzie dod_karty() tworzyć obiekty ,a następnie je zwracać??

Proszę o porady.

Link to comment
Share on other sites

 Program karta = new Program();

To jest bez sensu. Chcesz mieć listę kart, więc stwórz klasę Karta.

Nazwy metod wielką literą, bez podkreślników - pascal case. Zobacz na tabelkę: http://msdn.microsoft.com/en-us/library/x2dbyw72(v=vs.71).aspx

Wszystko poza Main powinno wylecieć do osobnej klasy np KontoBankowe.

Link to comment
Share on other sites


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication15
{
class karta // KLASA KARTA
{
public static string imie, nazwisko;
public static int x, kwota, pin, ile = 2;
public static double saldo;
static double Wplac(double saldo, int kwota)
{
saldo = saldo + kwota;
return saldo;
}
static double Wyplac(double saldo, int kwota)
{
saldo = saldo - kwota;
return saldo;
}
static void Dane()
{
Console.WriteLine("Podaj imię i nazwisko\n");
imie = Console.ReadLine();
nazwisko = Console.ReadLine();
Console.WriteLine("Imie: " + imie + "\nNazwisko: " + nazwisko);
}
static void Zm_pin()
{
Console.WriteLine("Teraz możesz zmienić PIN");
pin = Convert.ToInt32(Console.ReadLine());
}
static void Dod_karte()
{
for (int i = 1; i < ile; i++)
{
Program karta = new Program();
}
}
class Program // KLASA GŁÓWNA PROGRAMu GŁÓWNEGO
{
static void Main(string[] args)
{
double saldo = 70;
int kwota = 5, ile = 2;
char x;
Console.WriteLine("Ile masz kart?");
ile = Convert.ToInt32(Console.ReadLine());
Dod_karte();
List<karta> karta = new List<karta>();
{

ConsoleKeyInfo z;
Dane();
Console.WriteLine("Wybierz akcję: 1. Wpłać ,2. Wypłać ,3. Zmień PIN ");
z = Console.ReadKey();
x = z.KeyChar;
switch (x)
{
case ('1'):
Console.WriteLine("Wpłać");
Wplac(saldo, kwota);
break;
case ('2'):
Console.WriteLine("Wypłać");
Wyplac(saldo, kwota);
break;
case ('3'):
Console.WriteLine("Zmień PIN");
Zm_pin();
break;
default:
Console.WriteLine("Nie wybrano żadnej akcji lub błąd systemu! ");
break;
}
Console.ReadKey();
}
}
}
}
}

Co powinienem teraz zrobić ,bo trochę się gubię??

Link to comment
Share on other sites



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...