W projekcie P04Zawodnicy wklej klasy: ZawodnicyManager.cs, Zawodnik.cs

Klase ZawodnicyManager.cs zmodyfikuj:

  • Ustaw metode WczytajZawodników na private
  • Dodaj nowa metodę prywatną WczytajZawodnikówHTML, która wczytuje zawodników ze strony podanej jako pole sciezka
  • Dodaj nową metodę public o nazwie WczytajDane(), która analizuje pole sciezka i sprawdza czy jest to ścieżka lokalna czy webowa i na podstawie tego wywołuje albo metodę: WczytajZawodników albo WczytajZawodnikówHTML

W klasie program.cs wywołaj ZawodnicyManager podając albo ścieżkę lokalną albo webową

Rozwiązanie

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace P04Zawodnicy
{
    class ZawodnicyManager
    {
        private string sciezka; 

        public ZawodnicyManager(string sciezka)
        {
            this.sciezka = sciezka;
        }

        private List<Zawodnik> WczytajZawodników()
        {
            string[] wiersze = File.ReadAllLines(sciezka,Encoding.Default);
            List<Zawodnik> lista = new List<Zawodnik>();
            for (int i = 1; i < wiersze.Length; i++)
            {
                Zawodnik z = new Zawodnik(wiersze[i]);
                lista.Add(z);
            }
            return lista;
        }

        private List<Zawodnik> WczytajZawodnikówHTML()
        {
            WebClient wc = new WebClient();
            string zrodlo = wc.DownloadString(sciezka);
            //  string[] wiersze = zrodlo.Split('\n');
            string[] wiersze = 
                zrodlo.Split(new string[] { Environment.NewLine },StringSplitOptions.RemoveEmptyEntries);

            List<Zawodnik> lista = new List<Zawodnik>();
            for (int i = 1; i < wiersze.Length; i++)
            {
                Zawodnik z = new Zawodnik(wiersze[i]);
                lista.Add(z);
            }
            return lista;

        }

        public List<Zawodnik> WczytajDane()
        {
            if (sciezka.Contains("http"))
                return WczytajZawodnikówHTML();
            else
                return WczytajZawodników();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace P04Zawodnicy
{
    class Program
    {
        static void Main(string[] args)
        {
            ZawodnicyManager zm1 =
                new ZawodnicyManager("http://tomaszles.pl/wp-content/uploads/2018/04/zawodnicy.txt");

            List<Zawodnik> zawodnicy1= zm1.WczytajDane();

            ZawodnicyManager zm2 =
              new ZawodnicyManager(@"c:\dane\zawodnicy.txt");

            List<Zawodnik> zawodnicy2 = zm2.WczytajDane();


            for (int i = 0; i < zawodnicy1.Count; i++)
            {
                Console.WriteLine(zawodnicy1[i].Imie + " " + zawodnicy1[i].Nazwisko);
            }

            foreach (var item in zawodnicy2)
            {
                Console.WriteLine(item.Imie + " " + item.Nazwisko);
            }
            Console.ReadKey();

        }
    }
}