Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

nyac55

C# - program konto bankowe?

Polecane posty

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 do komentarza
Udostępnij na innych stronach

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 do komentarza
Udostępnij na innych stronach

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 do komentarza
Udostępnij na innych stronach

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 do komentarza
Udostępnij na innych stronach

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 do komentarza
Udostępnij na innych stronach

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 do komentarza
Udostępnij na innych stronach

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 do komentarza
Udostępnij na innych stronach

 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 do komentarza
Udostępnij na innych stronach


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 do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...