W trakcie laboratorium będziemy sukcesywnie modyfikowali program obsługi kont bankowych, który zaczęliśmy pisać w trakcie Ćwiczenia 9.
Należy pobrać ze strony WWW: pliki KontoBankoweSzkielet.cs i UtworzKonto_public.cs. Pobrany program należy zapisać w katalogu nowo utworzonego projektu (~\TestKonta1) pod nazwami KontoBankowe.cs i UtworzKonto.cs. Z projektu usunąć domyślnie stworzoną klasę, a dodać klasy KontoBankowe i UtworzKonto.
UWAGA: Przed dokonaniem jakichkolwiek modyfikacji proszę sprawdzić, czy ściągnięte programy można skompilować i uruchomić.
Poniżej został podany odpowiedni fragment kodu:
public void Ustaw(long numer, double saldo){
numerKonta = numer;
stanKonta = saldo;
typKonta = "biezace";
}
4. Po
tych zmianach można skompilować plik z klasą KontoBankowe.cs.
try{
noweKonto.numerKonta=long.Parse(Console.ReadLine());
Console.Write("Proszę
podać typ konta: ");
noweKonto.typKonta=Console.ReadLine();
Console.Write("Proszę
podać saldo konta: ");
noweKonto.stanKonta=double.Parse(Console.ReadLine());}
6. Powyższy kod proszę zmodyfikować w następujący sposób:
long tLong=long.Parse(Console.ReadLine());
Console.Write("Proszę
podać typ konta: ");
string tString=Console.ReadLine();
Console.Write("Proszę
podać saldo konta: ");
double
tDouble=double.Parse(Console.ReadLine());
noweKonto.Ustaw(tLong, tDouble, tString);
Wykonane zmiany uniemożliwiają bezpośrednie odwoływanie się do pól klasy.
Po wprowadzeniu zmian należy skompilować plik, w którym znajduje się metoda Main (UtworzKonto.cs).
class KontoBankowe{
...
public double Wplata(double kwota){
stanKonta += kwota;
return stanKonta;
}
...
}
Uwaga: Metoda Wplata mogłaby również nie zwracać żadnej wartości, bo stanKonta jest już uaktualniany w tej metodzie.
class UtworzKonto{
...
public static void TestWplaty(KontoBankowe konto)
{
Console.Write("Proszę
podać kwotę wpłaty: ");
try
{
double kwota=double.Parse(Console.ReadLine());
konto.Wplata(kwota);
}
catch(System.FormatException
e)
{
Console.WriteLine("Wystąpił
wyjątek podczas czytania z klawiatury:"+e);
}
}
...
}
class UtworzKonto{
...
public static void Main (String[] arg){
KontoBankowe kowalski = NoweKontoBankowe();
WypiszKonto(kowalski);
TestWplaty(kowalski);
WypiszKonto(kowalski);
KontoBankowe nowak = NoweKontoBankowe();
WypiszKonto(nowak);
TestWplaty(nowak);
WypiszKonto(nowak);
}
...
}
Po wykonaniu tych czynności należy skompilować, a następnie przetestować program podając różne kwoty wpłaty.
class KontoBankowe{
...
public bool Wyplata(double kwota){
bool dostepneSrodki = stanKonta >= kwota;
if(dostepneSrodki){
stanKonta -= kwota;
}
return dostepneSrodki;
}
...
}
class UtworzKonto{
...
public static void TestWyplaty(KontoBankowe konto){
Console.Write("Prosze podac kwote do wypłacenia: ");
try{
double kwota = double.Parse(Console.ReadLine());
if(!konto.Wyplata(kwota) ){
Console.WriteLine("Brak wystarczajacych srodkow na koncie");
}
}
catch(
System.FormatException e){
Console.WriteLine("Wystapil wyjatek w czasie czytania z klawiatury: " + e) ;
}
}
....
}
class UtworzKonto{
...
public static void Main (String[] arg){
KontoBankowe kowalski = NoweKontoBankowe();
WypiszKonto(kowalski);
TestWplaty(kowalski);
WypiszKonto(kowalski);
TestWyplaty(kowalski);
WypiszKonto(kowalski);
KontoBankowe nowak = NoweKontoBankowe();
WypiszKonto(nowak);
TestWplaty(nowak);
WypiszKonto(nowak);
TestWyplaty(nowak);
WypiszKonto(nowak);
}
...
}