C# :: Aufgabe #55 :: Lösung #3

3 Lösungen Lösungen öffentlich
#55

Aktuellen Aktienkurs auslesen und ausgeben

Fortgeschrittener - C# von Gustl - 08.11.2013 um 19:57 Uhr
Schreibe ein Konsolenprogramm welches den aktuellen Aktienkurs von eine Aktien deiner Wahl ausgibt.
Benutze hierfür eine API. Als kleine Anregung: yahoo finance API
#3
1x
vote_ok
von aheiland (650 Punkte) - 13.03.2015 um 16:13 Uhr
Quellcode ausblenden C#-Code
    class Program
    {
        static void Main(string[] args)
        {
            Random zufall = new Random();
            int found = 0;
            do
            {
                var symbol = "" + (char)zufall.Next('A', 'Z' + 1) + (char)zufall.Next('A', 'Z' + 1);
                var pf = new Finance(symbol).portfolio;
                if (pf != null)
                {
                    found++;
                    Console.WriteLine("Name: " + pf.name);
                    Console.WriteLine("Ask: " + pf.ask + " Bid: " + pf.bid);
                    Console.WriteLine("Open: " + pf.open);
                }
            } while (found < 5);
            Console.WriteLine("Finished");
            Console.ReadKey();
        }
    }

    class Finance
    {
        private string symbol;

        public Finance(string symbol)
        {
            this.symbol = symbol;
        }

        private Portfolio _portfolio;
        public Portfolio portfolio
        {
            get
            {
                if (_portfolio == null) _portfolio = getPortfolio();
                return _portfolio;
            }
        }

        private Portfolio getPortfolio()
        {
            Portfolio pf = new Portfolio();
            try
            {
                var deS = getJsonReader();
                do
                {
                    if (deS.TokenType == JsonToken.PropertyName && deS.ValueType == typeof(String))
                    {
                        var value = Portfolio.Fields.FirstOrDefault(v => v.Equals(deS.Value));
                        if (value != null)
                        {
                            deS.Read();
                            if (value.Equals(Portfolio.Fields.First()) && deS.Value == null)
                            {
                                break;
                            }
                            pf.set(value, (string)deS.Value);
                        }
                    }
                } while (deS.Read());
                deS.Close();
            }
            catch (Exception e) { }
            if (pf.name == null) return null;
            return pf;
        }

        private JsonTextReader getJsonReader()
        {
            var uri = new Uri("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol=%22" + symbol + "%22&format=json&diagnostics=true&env=store://datatables.org/alltableswithkeys");
            return new JsonTextReader(new StreamReader(new WebClient().OpenRead(uri)));
        }

    }    

    class Portfolio
    {
        public static string[] Fields = { "Name", "Ask", "Bid", "Open" };
        public string name { get; private set; }
        public string ask { get; private set; }
        public string bid { get; private set; }
        public string open { get; private set; }

        public void set(string value, string p)
        {
            if (Fields[0].Equals(value))
            {
                name = p;
            }
            if (Fields[1].Equals(value))
            {
                ask = p;
            }
            if (Fields[2].Equals(value))
            {
                bid = p;
            }
            if (Fields[3].Equals(value))
            {
                open = p;
            }
        }
    }

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben