Autor Beitrag
Disastro
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 12.02.09 13:43 
Hi all,

Ich habe mir ein Buch gekauft und wende gewiesse Übungen gleich an. Ich habe nun mit einem
simplen und kleinen Währungsrechner begonnen, der die Möglichkeit bieten solle CHF in Euro und Dollar umzurechnen.

Der Code sieht folgendermassen aus:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Umrechner
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Wählen Sie eine Option\n\n1.Euro in CHF\n2.Dollar in CHF\n");
            string Optiongo = Console.ReadLine();
            int Option = System.Convert.ToInt16(Optiongo);
            switch(Option) 
            {
            case 1:
                Console.WriteLine("Geben Sie den Betrag in EUR ein");
                string BetragEUR;

                BetragEUR = Console.ReadLine();
                double BetragEURCHF = System.Convert.ToDouble(BetragEUR)*1.50;
                Console.WriteLine("Das ergibt " +BetragEURCHF+ " Schweizer Franken");
                Console.ReadLine();
                break;
            case 2:
                Console.WriteLine("Geben Sie den Betrag in Dollar ein");
                string BetragDollar;
                BetragDollar = Console.ReadLine();
                double BetragDollarCHF = System.Convert.ToDouble(BetragDollar) * 1.15;
                Console.WriteLine("Das ergibt " + BetragDollarCHF + " Schweizer Franken");
                Console.ReadLine();
                break;
            }
        }
    }
}


Nun meine Fragen:

1. Wie kann ich die Möglichkeit bieten, in den einzelnen Cases zurück zum Menü zu kehren?
2. Wie könnte ich mein Code optmieren und was zum Beispiel besser machen? Ich bin irgendwie der Meinung, dass ich das convertieren der Variabeln in diesem Skript nicht zwingend benötige.
3. Ein Ziel wäre es, die Wechselkurse direkt über das Internet zu aktualisieren. Ist das bei Konsolenanwendungen auch machbar, oder wäre hier die Variante Windows Form doch geeigneter? Wie realisiere ich das? Ich habe eine leichte Ahnung von PHP und vermute, dass ich dies via XML realisieren kann.

Vielen Dank im Voraus für eure Antworten.

Gruss
Disastro

Moderiert von user profile iconKha: Code- durch C#-Tags ersetzt
Console.Beep()
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
BeitragVerfasst: Do 12.02.09 13:55 
Es wäre angebracht ,dass du die Umberechnungen als extra methoden schreibst und dann einfach im case die methode aufrufst (sieht ordendlicher aus und du findest dich besser im Code zurecht).
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
...
case 1:                
Umrechnen_in_Franken();
break;
...


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
//Methode um in Franken umzurechnen
static void Umrechnen_in_Franken()
{
      Console.WriteLine("Geben Sie den Betrag in EUR ein");                
      string BetragEUR;                
      BetragEUR = Console.ReadLine();                
      double BetragEURCHF = System.Convert.ToDouble(BetragEUR)*1.50;                
      Console.WriteLine("Das ergibt " +BetragEURCHF+ " Schweizer Franken");
      Console.ReadLine();
}


zu frage 1: mach ne do-while schleife rum und frage einfach immer ab ob der user beenden will.
Console.Beep()
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
BeitragVerfasst: Do 12.02.09 14:23 
zu 2. ja, du kannst es etwas vereinfachen

statt:
ausblenden C#-Quelltext
1:
2:
string Optiongo = Console.ReadLine();            
int Option = System.Convert.ToInt16(Optiongo);

schreib:
ausblenden C#-Quelltext
1:
int Option=Convert.ToInt32(Console.ReadLine());					

Schon hast du eine Zeile gespart^^
Und bei der Umrechnung solltest du selbst gucken was du da vereinfachen kannst.

Vorsicht: du solltest noch try/catch einbauen sonst schmeist das Programm den Benutzer bei einer Ausnahme raus

siehe openbook.galileocomp....de/csharp/kap04.htm für Infos
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 12.02.09 15:33 
user profile iconConsole.Beep() hat folgendes geschrieben Zum zitierten Posting springen:
Vorsicht: du solltest noch try/catch einbauen sonst schmeist das Programm den Benutzer bei einer Ausnahme raus

Mein Standardvorschlag ist, dass anstelle von Convert.ToXxx möglichst Parse, ParseExact, TryParse, TryParseExact verwendet werden sollte. Das erspart die Prüfung nach Exceptions:

ausblenden C#-Quelltext
1:
2:
int Option = 0;
if (int.TryParse(Console.ReadLine(), out Option)) {...}


Ansonsten habe ich keine Einwände gegen Beeps Vorschläge. Eher würde ich empfehlen, das Ganze als WinForms-Anwendung zu erstellen, was ja auch für die praktische Nutzung viel schöner wäre.

Gruß Jürgen