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(); } } }