Projekt: Kurs walut

28 lipca 2012 o 23:04 Autor:

Nazwa: Kurs walut

Wstęp

Program „Kurs walut” powstał po części dlatego, że zdarzają mi się sytuacje, w których potrzebuję znać aktualny kurs najpopularniejszych walut np. podczas korzystania z platformy Steam, a nie mam akurat włączonej przeglądarki lub szukanie kursu wymagałoby przełączenie aktywnego okna. Mała ilość kodu potrzebnego w tym programie pozwoliła mi ukończyć go dosłownie w kilka chwil, a jak wiadomo ukończone projekty najlepiej motywują do dalszej pracy.

Okno aplikacji:

Jak widać interfejs jest bardzo prosty i zawiera jedynie niezbędne elementy.

Działanie

Program w trakcie uruchamiania wywołuje funkcję pobierającą aktualny średni kurs wybranych walut ze strony Narodowego Banku Polskiego. Przycisk Odśwież umożliwia ponowne pobranie kursu. Jest on dodany ponieważ NBP aktualizuje wartości ok. godziny 12 tak więc jeśli uruchomiliśmy program wcześniej to będzie on wyświetlał dane z dnia poprzedniego.

Jednak największą zaletą programu w porównaniu do wyszukiwarki internetowej jest możliwość zminimalizowania go do systemowego traya. Po najechaniu kursorem na jego ikonkę wyświetlą się aktualne kursy:

Zaś po kliknięciu prawym przyciskiem myszy ukaże się menu kontekstowe:

Na którym zobaczyć można oprócz cen poszczególnych walut również datę aktualizacji tych danych. Menu to umożliwia także pobranie aktualnych wartości (odpowiednik przycisku Odśwież z okna aplikacji) oraz maksymalizację okna lub zamknięcie programu.

Technologie

– C# / .NET

Do pobierania nazwy pliku z listą dostępnych kursów walut na poszczególne dni (plik dir.txt dostępny ze strony NBP – http://www.nbp.pl/Kursy/xml/dir.txt) wykorzystany został komponent WebClient i funkcja DownloadFile() w nim zawarta.

Ponieważ informacje o kursach walut podawane są w formie pliku xml konieczne było jego parsowanie. Do tego zadania użyte zostały klasy XPathDocument, XPathNavigator i XPathIterator.

Problemy i proponowane rozwiązania

Jak na razie jedynym dostrzegalnym problemem w działaniu programu jest długi czas pobierania informacji o kursach, a ponieważ pobierane są one m.in. podczas uruchamiania aplikacji wydłuża to znacznie ten proces. Prawdopodobnymi przyczynami jest duża objętość pliku dir.txt, z którego trzeba wyciągnąć informacje o ostatnim pliku z kursami walut ponieważ zawiera on listę wszystkich dostępnych kursów jakie opublikował Narodowy Bank Polski, jak również (chociaż zapewne w mniejszym stopniu) samo parsowanie dokumentu xml.

Jednym z możliwych rozwiązań tego problemu mogłoby być wywoływanie funkcji pobierającej dane w osobnym wątku, który nie powodowałby sytuacji, w której aplikacja czekałaby na pobranie kursów.

Kolejnym sposobem, który mógłby też zostać połączony z zaprezentowanym przed chwilą może być zmiana sposobu pobierania nazwy pliku z aktualnymi kursami. Zamiast pobierać plik dir.txt można na podstronie NBP zawierającej kursy odszukać link do aktualnego pliku xml (http://www.nbp.pl/home.aspx?f=/kursy/kursya.html , link Powyższa tabela w formacie .xml dostępny poniżej tabeli z aktualnym kursem walut).

Możliwe modyfikacje

Dodanie możliwości wyboru wyświetlanych walut zwiększyłoby uniwersalność programu i pozwoliłoby dostosować go w zależności od aktualnych potrzeb.

Przy obecnej metodzie pobierania nazwy pliku z danymi małym nakładem pracy można dodać opcję wyświetlania kursów z poprzednich dni, np. wykorzystując do tego celu komponent reprezentujący kalendarz ,na którym użytkownik wybierałby interesujący go dzień.

Ostatnią z proponowanych zmian jest opcja pobierania danych w stałych odstępach czasu (np. co 24 godziny), jednak aby nie zatrzymywała działania programu podczas pobierania nowych danych konieczne jest dodanie do programu drugiego wątku.

Wymagania

– .NET Framework 4.0

Download

– Gotowy program: Pobierz

– Kompletna solucja środowiska Visual Studio 2010: Pobierz

4 komentarze

  • Magdalena pisze:

    Witaj,
    Mam pytanie, czy robisz projekty WCF za zamówienie? Potrzebny mi na wczoraj. Daj znać jak jesteś zainteresowany

    • MarekZajac pisze:

      Niestety w tym momencie nie zajmuję się tego typu projektami. Jeszcze mam za małą wiedzę z tego zakresu, żeby w miarę sprawnie poruszać się w tej technologii.

  • Norbi pisze:

    Bardzo fajny program.
    czy mozna by bylo zrekonstruowac takl ten program azeby wyswietlalo sie na pulpicie na pelnym ekranie duza czcionka kursy walut z proporcja np -2 +2 od aktualnego sredniego kursu. chce wstawic monitor w okno i jak ludzie zatrzymuja sie na pasach mogliby widziec aktualny kurs i to zachecaloby ich do wejscia do kantoru.
    pozdrawiam.

    • MarekZajac pisze:

      Proszę się odezwać do mnie na maila (contact@zajacmarek.com) i myślę, że w tej sprawie możemy się dogadać ;)
      Pozdrawiam, Marek

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *