Cześć,
chcę napisać mała apkę w C# pod konsolą. Jest to tylko dla nauki, ten program nie musi robić nic ciekawego, po prostu chcę przećwiczyć sobie na przykładach język C#.
Napisałem takie dwie klasy jak poniżej.
Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MojaApka
{
class Program
{
static void Main()
{
Console.WriteLine("\n\t - MOJA APKA - \n");
Console.WriteLine("\n\tWybierz odpowiednią opcję z menu:\n");
Console.WriteLine("\t1. Kalkulator\n");
Console.WriteLine("\t2. Zarządzanie punktami\n");
Console.WriteLine("\t3. Tablice\n");
Console.WriteLine("\t4. Klasy abstrakcyjne\n");
Console.WriteLine("\t0. Zakończenie programu\n");
String odczytLinii = Console.ReadLine();
int wyborOpcji = Int32.Parse(odczytLinii);
switch(wyborOpcji)
{
case 1 :
Kalkulator Oblicz = new Kalkulator();
Console.Clear();
Console.Write("Podaj pierwsza liczbe: ");
String odczytLiczbyPierwszej = Console.ReadLine();
Oblicz.ustawWartoscLiczbyPierwszej(odczytLiczbyPierwszej);
Console.Write("\nPodaj druga liczbe: ");
String odczytLiczbyDrugiej = Console.ReadLine();
Oblicz.ustawWartoscLiczbyDrugiej(odczytLiczbyDrugiej);
Console.WriteLine("\nWybierz typ działania:");
Console.WriteLine("1. dodawanie");
Console.WriteLine("2. odejmowanie");
Console.WriteLine("3. mnożenie");
Console.WriteLine("4. dzielenie\n");
String odczytDzialania = Console.ReadLine();
int wyborDzialania = Int32.Parse(odczytDzialania);
if (wyborDzialania == 1)
Oblicz.dodajLiczby();
else if (wyborDzialania == 2)
Oblicz.odejmijLiczby();
else if (wyborDzialania == 3)
Oblicz.pomnozLiczby();
else if (wyborDzialania == 4)
Oblicz.podzielLiczby();
break;
case 2 :
Console.WriteLine("Wybrano opcję 2.");
break;
case 3:
Console.WriteLine("Wybrano opcję 3.");
break;
case 4:
Console.WriteLine("Wybrano opcję 4.");
break;
case 0 :
Console.WriteLine("Naciśnij jakiś klawisz aby zakonczyc program...");
Console.ReadKey();
System.Diagnostics.Process.GetCurrentProcess().Kill();
break;
default:
Console.WriteLine("Zły wybór!");
break;
}
Console.ReadKey();
}
}
}
Kalkulator.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MojaApka
{
class Kalkulator
{
private int liczbaPierwsza = 0;
private int liczbaDruga = 0;
public void ustawWartoscLiczbyPierwszej(String odczytLiczbyPierwszej)
{
this.liczbaPierwsza = Int32.Parse(odczytLiczbyPierwszej);
}
public int pobierzWartoscLiczbyPierwszej()
{
return liczbaPierwsza;
}
public void ustawWartoscLiczbyDrugiej(String odczytLiczbyDrugiej)
{
this.liczbaDruga = Int32.Parse(odczytLiczbyDrugiej);
}
public int pobierzWartoscLiczbyDrugiej()
{
return liczbaDruga;
}
public void dodajLiczby()
{
Console.WriteLine("\nWynik dodawania to: {0}", liczbaPierwsza + liczbaDruga);
}
public void odejmijLiczby()
{
Console.WriteLine("\nWynik odejmowania to: {0}", liczbaPierwsza - liczbaDruga);
}
public void pomnozLiczby()
{
Console.WriteLine("\nWynik mnozenia to: {0}", liczbaPierwsza * liczbaDruga);
}
public void podzielLiczby()
{
Console.WriteLine("\nWynik dzielenia to: {0}", liczbaPierwsza / liczbaDruga);
}
}
}
Moje pytania:
- Proszę o uwagi na temat błędów jakie zrobiłem w konstrukcji i logice programu (na razie działa tylko kalkulator - opcja 1).
- Jak uniknąć tego, że całą "obsługę" opcji 1. robię w switch-case? W C pisałem sobie oddzielną funkcję i od razu wychodziłem z switch-case i tam pisałem obsługę a tu czy należałoby wyjść czy to nie jest aż tak duży błąd?
- Jak to zrobić, żeby po wykonaniu działania program z powrotem wracał do "menu"? Czyli wychodził ze switch-case do początku programu tak jakby?
Proszę o wszystkie uwagi, przepiszę apke na nowo :)