Měnová kalkulačka

C# .NET Formuláře WPF Měnová kalkulačka

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V tomto video-tutoriálu bude názorně předveden postup, jak ve WPF C# naprogramovat měnovou kalkulačku převádějící koruny na eura a obráceně podle aktuálního měnového kurzu, který si program automaticky stáhne z webových stránek České Národní Banky.

Začátky jednotlivých částí:
00:03 - Založení WPF projektu
00:18 - Design (XAML)
06:35 - Kód pro převod měny pomocí tlačítek
09:00 - Ošetření vyjímek (blbuvzdornost)
10:53 - Výpočet v reálném čase (zrušení tlačítek)
11:54 - Ošetření zacyklení
15:15 - Stahování aktuálního kurzu z internetu
21:38 - Krokování kódu stahujícího kurzy
22:11 - Závěr


 

Stáhnout

Staženo 646x (56.16 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Článek pro vás napsal Petr
Avatar
Jak se ti líbí článek?
20 hlasů
Ing. Petr Voborník, Ph.D. se specializuje na .NET C# technologie a vyučuje programování na Univerzitě Hradec Králové a na střední škole Podorlické vzdělávací centrum.
Aktivity (2)

 

 

Komentáře
Zobrazit starší komentáře (7)

Avatar
beibovaneki
Redaktor
Avatar
beibovaneki:24.12.2014 16:00

Ahoj, mám takový problém. Stáhnul jsem si tuhle aplikaci a nefunguje mi správně. Kurz se stahuje špatně, protože to asi nebere tu čárku, a proto je pak kurz 1000krát tak velký. Můžete mi poradit, jak byh to spravil?

 
Odpovědět 24.12.2014 16:00
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na beibovaneki
Jan Vargovský:24.12.2014 16:14

Kdyby došlo k chybě při parsování stáhnutého kurzu, tak by se to bralo jako vyhození vyjímky, takže by to nepřevedlo vůbec. Můžeš říct jaké hodnoty dostáváš? Popřípadě si to můžeš otevřít sám, dát tam breakpoint a kouknout se co ti to tam dělá.

 
Odpovědět  +1 24.12.2014 16:14
Avatar
beibovaneki
Redaktor
Avatar
beibovaneki:24.12.2014 17:42

Podle mě to není chyba. Jenom to z toho staženého stringu desetinnou čárku nebere jako desetinnou čárku, ale jako čárku mezi tisícovkami. (př.: 1 EUR = 27,660.00)

 
Odpovědět 24.12.2014 17:42
Avatar
Petr
Redaktor
Avatar
Odpovídá na beibovaneki
Petr:25.12.2014 0:19

Chce-li to místo čáry tečku, pak stačí dát s.Replace(',', '.'). Ale tady bych to spíš typoval na fakt, že některé měny nemají kurz vyjádřený 1:1, ale třeba 1:100 nebo 1:1000. Tento parametr udává hodnota na konci prvního řádku, kde je napsáno "Množství: 1". Je-li tam něco jiného než 1, pak je třeba kurz touto hodnotou vydělit. Metoda počítající i s tímto parametrem by pak mohla vypadat následovně.

private double StahniKurz(string mena)
{
    WebClient wc = new WebClient();
    string s = wc.DownloadString(String.Format(
        "http://www.cnb.cz/miranda2/m2/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/vybrane.txt?mena={0}&od={1}&do={2}",
        mena, DateTime.Today.AddDays(-7).ToString("dd.MM.yyyy"), DateTime.Today.ToString("dd.MM.yyyy"))).TrimEnd();

    int iEnd = s.IndexOf('\n');
    int iStart = s.LastIndexOf(':', iEnd);
    string sMnozstvi = s.Substring(iStart + 1, iEnd - iStart - 1).Trim();
    double mnozstvi = Convert.ToDouble(sMnozstvi);

    s = s.Substring(s.LastIndexOf('|')+1);
    return Convert.ToDouble(s) / mnozstvi;
}
Editováno 25.12.2014 0:20
 
Odpovědět  +1 25.12.2014 0:19
Avatar
beibovaneki
Redaktor
Avatar
Odpovídá na Petr
beibovaneki:25.12.2014 13:20

Díky. Musel jsem tam dát s = s.Replace(',', '.'). Tím poměrem to sice nebylo, ale za to ti taky děkuju.

 
Odpovědět 25.12.2014 13:20
Avatar
bem.jiri12
Člen
Avatar
bem.jiri12:3.6.2015 11:35

pěkné a velmi naučné videjko jako vždy, děkuji moc. A chci se zeptat proč jsou použité dva gridy? Resp. ten původní automaticky vygenerovaný WPFkem nikde nepoužíváš, pouze jsi přes něj roztáhl další grid. Něják sem nepochopil jestli to má nějaký důvod a účel?

 
Odpovědět 3.6.2015 11:35
Avatar
Petr
Redaktor
Avatar
Odpovídá na bem.jiri12
Petr:3.6.2015 12:35

Samozřejmě by bylo možné použít rovnou i hlavní grid okna, ovšem ten má výsadní postavení jako jeho hlavního kontejneru (Content nikoli Children), který je vždy právě jeden. Kdybych jej později chtěl ještě něčím okolo doplnit, osamostatnit do komponenty, posunout třeba jen do rohu okna, transformovat či animovat nebo odstranit to tak by s tím byl problém. Proto jsem vše umístil do samostatného gridu, aby případné další úpravy, byť třeba ani žádné neplánuji, neznamenaly, že kvůli tomu budu tento grid nějak dále dělit a činit další obsah závislý na tom stávajícím.

 
Odpovědět 3.6.2015 12:35
Avatar
Tomáš Kr
Člen
Avatar
Tomáš Kr:2. března 16:49

Zdravím pánové, hraju si s touto kalkulačkou a chtěl jsem funkci stahování kurzivního lístku implementovat do své aplikace. Jenže jsem narazil na to, že po spuštění mi program spadne na tom, že se nelze připojit k serveru. Přitom když se dívám přes wireshark, tak si spolu aplikace a cnb server popovídá. Jenže to je vše,spustím alikaci a vyskočí neošetřená chyba (Vyvolaná výjimka: System.Net.We­bException v System.dll, Ke vzdálenému serveru se nelze připojit). Testoval jsem to jak doma na PC, tak v práci na dvou PC a nic. Nesetkal se s tím někdo?

 
Odpovědět 2. března 16:49
Avatar
Odpovídá na Tomáš Kr
Petr Čech (czubehead):2. března 16:56

Postni to sem jako téma na fórum. A připoj k tomu kód, kterým to provádíš.

Odpovědět 2. března 16:56
Why so serious? -Joker
Avatar
Tomáš Kr
Člen
Avatar
Odpovídá na Petr Čech (czubehead)
Tomáš Kr:3. března 8:18

No je to kod, který jsem si stáhnul v tomto článku pod videem :-) Myslel jsem, že jen blbě vidím a mám ve svém kodu překlep, ale stáhnul jsem tuto kalkulačku a dělá to stejné. Dík, postnu.

 
Odpovědět 3. března 8:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 17. Zobrazit vše