public static void Main(string[] args) { var Bestellingen = new LijstBestellingen().getBestellingen(); var Gerechten = new LijstGerechten().getGerechten(); var Klanten = new LijstKlanten().getKlanten(); var Desserts = new LijstDesserts().getDesserts(); var Dranken = new LijstDranken().getDranken(); List <Gerecht> dishes = new List <Gerecht>(); List <Dessert> nagerechten = new List <Dessert>(); List <Extra> supplementen = new List <Extra>(); List <Bestelling> BestellingenFromFile = new List <Bestelling>(); // Lijst van alle bestellingen Console.WriteLine("Lijst van alle bestellingen:"); foreach (var gerecht in Gerechten) { if (gerecht.Naam.ToUpper().StartsWith("PIZ")) { Action <string, decimal, List <String> > pizza = (naam, prijs, onderdelen) => new Pizza(naam, prijs, onderdelen); } else { Action <string, decimal, string> pasta = (naam, prijs, omschrijving) => new Pasta(naam, prijs, omschrijving); } } int teller = 1; foreach (var bestelling in Bestellingen) { Console.WriteLine($"Bestelling {teller}:"); Console.WriteLine(bestelling); Console.WriteLine("************************************************"); teller++; } Console.WriteLine(); Console.ReadKey(); // Lijst van bestellingen van Jan Janssen en het totaalbedrag ervan Console.WriteLine("Bestellingen van klant Jan Janssen:"); Console.WriteLine(); decimal eindtotaalJanJanssen = 0.0m; var bestellingenJanJanssen = from bestellingJanJanssen in Bestellingen where (bestellingJanJanssen.Klant.Naam == Klanten[0].Naam) select new { klantJanJanssen = bestellingJanJanssen.Klant, gerechtJanJanssen = bestellingJanJanssen.BesteldGerecht, drankJanJanssen = bestellingJanJanssen.Drank, dessertJanJanssen = bestellingJanJanssen.Dessert, aantalJanJanssen = bestellingJanJanssen.Aantal, bedragJanJanssen = bestellingJanJanssen.Bedrag }; if (bestellingenJanJanssen != null) { foreach (var bestellingJanJanssen in bestellingenJanJanssen) { if (bestellingJanJanssen.klantJanJanssen != null) { Console.WriteLine($"Klant: {bestellingJanJanssen.klantJanJanssen}"); } if (bestellingJanJanssen.gerechtJanJanssen != null) { Console.WriteLine($"Gerecht: {bestellingJanJanssen.gerechtJanJanssen}"); } if (bestellingJanJanssen.drankJanJanssen != null) { Console.WriteLine($"Drank: {bestellingJanJanssen.drankJanJanssen}"); } if (bestellingJanJanssen.dessertJanJanssen != null) { Console.WriteLine($"Dessert: {bestellingJanJanssen.dessertJanJanssen}"); } Console.WriteLine($"Aantal: {bestellingJanJanssen.aantalJanJanssen}"); Console.WriteLine($"Bedrag van deze bestelling: {bestellingJanJanssen.bedragJanJanssen} euro"); Console.WriteLine(); eindtotaalJanJanssen += bestellingJanJanssen.bedragJanJanssen; } Console.WriteLine($"Het totaal bedrag van alle bestellingen van klant Jan Janssen: {eindtotaalJanJanssen} euro"); Console.ReadKey(); } // Alle bestellingen, gegroepeerd per klant. // Voor de bekende klanten: totaalbedrag van alle bestellingen tonen. Console.WriteLine(); Console.WriteLine("Bestellingen gegroepeerd per klant"); Console.WriteLine("+ totaalbedrag van alle bestellingen voor de bekende klanten"); Console.WriteLine(); decimal eindtotaalPerKlant = 0.0m; var bestellingenPerKlant = from order in Bestellingen group order by order.Klant; foreach (var perKlant in bestellingenPerKlant) { foreach (var bekendeKlant in perKlant) { if (bekendeKlant.Klant.Naam != "Onbekende klant") { Console.WriteLine($"Bestellingen van {bekendeKlant.Klant.Naam}"); Console.WriteLine(); Console.WriteLine($"Klant: {bekendeKlant.Klant.Naam}"); if (bekendeKlant.BesteldGerecht != null) { Console.WriteLine($"Gerecht: {bekendeKlant.BesteldGerecht}"); } if (bekendeKlant.Drank != null) { Console.WriteLine($"Drank: {bekendeKlant.Drank}"); } if (bekendeKlant.Dessert != null) { Console.WriteLine($"Dessert: {bekendeKlant.Dessert}"); } Console.WriteLine($"Aantal: {bekendeKlant.Aantal}"); Console.WriteLine($"Bedrag van deze bestelling: {bekendeKlant.Bedrag} euro"); Console.WriteLine(); eindtotaalPerKlant += bekendeKlant.Bedrag; } else { Console.WriteLine("Onbekende klanten:"); Console.WriteLine(); Console.WriteLine($"Klant: {bekendeKlant.Klant.Naam}"); if (bekendeKlant.BesteldGerecht != null) { Console.WriteLine($"Gerecht: {bekendeKlant.BesteldGerecht}"); } if (bekendeKlant.Drank != null) { Console.WriteLine($"Drank: {bekendeKlant.Drank}"); } if (bekendeKlant.Dessert != null) { Console.WriteLine($"Dessert: {bekendeKlant.Dessert}"); } Console.WriteLine($"Aantal: {bekendeKlant.Aantal}"); Console.WriteLine($"Bedrag van deze bestelling: {bekendeKlant.Bedrag} euro"); Console.WriteLine(); } } if (eindtotaalPerKlant != 0) { Console.WriteLine($"Het totaal bedrag van alle bestellingen van klant {perKlant.Key}: {eindtotaalPerKlant} euro"); Console.WriteLine(); eindtotaalPerKlant = 0; } Console.WriteLine("***********************************************"); Console.WriteLine(); Console.ReadKey(); } // DEEL 2 string directorynaam = @"C:\Data\"; try { // wegschrijven klanten using (var schrijver = new StreamWriter(directorynaam + "klanten.txt", false)) { foreach (var client in Klanten) { schrijver.WriteLine(client.OpslaanKlanten()); } } } catch (IOException) { Console.WriteLine("Fout bij het wegschrijven van de klanten"); } catch (Exception ex) { Console.WriteLine(ex.Message); } try { // wegschrijven gerechten using (var schrijver = new StreamWriter(directorynaam + "gerechten.txt", false)) { var gerechtenDistinct = (from dish in Gerechten select dish).Distinct(); foreach (var dish in gerechtenDistinct) { schrijver.WriteLine(dish.opslaanGerecht()); } } } catch (IOException) { Console.WriteLine("Fout bij het wegschrijven van de gerechten"); } catch (Exception ex) { Console.WriteLine(ex.Message); } try { // wegschrijven bestellingen using (var schrijver = new StreamWriter(directorynaam + "bestellingen.txt", false)) { foreach (var order in Bestellingen) { schrijver.WriteLine(order.opslaanBestelling()); } } } catch (IOException) { Console.WriteLine("Fout bij het wegschrijven van de bestellingen"); } catch (Exception ex) { Console.WriteLine(ex.Message); } try { // klanten inlezen Console.WriteLine("Klanten inlezen"); List <Klant> klantenlijst = new List <Klant>(); string klantRegel; int klantNr; string klantNaam; using (var lezer = new StreamReader(directorynaam + "klanten.txt")) { while ((klantRegel = lezer.ReadLine()) != null) { string[] data = klantRegel.Split(new Char[] { '#' }); klantNr = int.Parse(data[0]); klantNaam = data[1]; klantenlijst.Add( new Klant { KlantID = klantNr, Naam = klantNaam }); } } } catch (IOException) { Console.WriteLine("Fout bij het lezen van het klantenbestand"); } catch (Exception ex) { Console.WriteLine(ex.Message); } try { // gerechten inlezen Console.WriteLine("Gerechten inlezen"); string gerechtType; string gerechtNaam; decimal gerechtPrijs; string gerechtRegel; using (var lezer = new StreamReader(directorynaam + "gerechten.txt")) { while ((gerechtRegel = lezer.ReadLine()) != null) { string[] data = gerechtRegel.Split(new Char[] { '#' }); gerechtType = data[0]; gerechtNaam = data[1]; gerechtPrijs = decimal.Parse(data[2]); if (gerechtType.ToUpper() != "PIZZA") { dishes.Add(new Pasta(data[1], decimal.Parse(data[2]), data[3])); } else { List <string> gerechtOnderdelen = new List <string>(); if (gerechtRegel.IndexOf("#") > 2) { foreach (string ingrediënt in data) { gerechtOnderdelen.Add(ingrediënt); } } dishes.Add(new Pizza(data[1], decimal.Parse(data[2]), gerechtOnderdelen)); } } } } catch (IOException) { Console.WriteLine("Fout bij het lezen van het gerechtenbestand"); } catch (Exception ex) { Console.WriteLine(ex.Message); } try { // bestellingen inlezen Console.WriteLine("Bestellingen inlezen"); Klant client = null; string bestelRegel; string naamGerecht; Grootte afmeting; BesteldGerecht besteldgerecht = null; Dessert nagerecht = null; List <Klant> clientList = new List <Klant>(); Drank consumptie = null; using (var lezer = new StreamReader(directorynaam + "bestellingen.txt")) { while ((bestelRegel = lezer.ReadLine()) != null) { // klant string[] data = bestelRegel.Split(new Char[] { '#' }); int klantNr = int.Parse(data[0]); besteldgerecht = null; client = new Klant(0, "Onbekende klant"); var gevondenKlant = Klanten.Where(k => k.KlantID == klantNr).FirstOrDefault(); if (gevondenKlant != null) { client.KlantID = gevondenKlant.KlantID; client.Naam = gevondenKlant.Naam; } //foreach (var klant in Klanten) //{ // klantNr = klant.KlantID; // client = klant; // if (klantNr != 0) // { // client.Naam = klant.Naam; // } // else // { // client = new Klant(0, "Onbekende klant"); // } //} // gerecht afmeting = Grootte.Klein; if (data[1].Length > 0) { // gerecht naam string[] besteldGerechtData = data[1].Split(new Char[] { '-' }); naamGerecht = besteldGerechtData[0]; Gerecht gekozenDish = dishes.Where(d => d.Naam == naamGerecht).First(); // gerecht afmeting afmeting = (Enum.Grootte)System.Enum.Parse(typeof(Grootte), besteldGerechtData[1]); // gerecht extra's var supplement = new List <Extra>(); if (Convert.ToInt32(besteldGerechtData[2]) != 0) { for (int tel = 1; tel <= Convert.ToInt32(besteldGerechtData[2]); tel++) { Extra toebehoren = (Extra)System.Enum.Parse(typeof(Extra), besteldGerechtData[tel + 2]); supplement.Add(toebehoren); } } besteldgerecht = new BesteldGerecht(gekozenDish, afmeting, supplement); } //foreach (var dish in dishes) //{ // naamGerecht = dish.Naam; // decimal prijs = dish.Prijs; // besteldgerecht = new BesteldGerecht(dish, afmeting, supplement); //} // dranken if (data[2] != null) { var drankData = data[2].Split(new Char[] { '-' }); if (drankData[0] == "F") { consumptie = new Frisdrank((Enum.Drank)System.Enum.Parse(typeof(Enum.Drank), drankData[1])); } else if (drankData[0] == "W") { consumptie = new Warmedrank((Enum.Drank)System.Enum.Parse(typeof(Enum.Drank), drankData[1])); } else { consumptie = null; } } // nagerecht if (data[3].Length > 0) { nagerecht = new Dessert((Enum.Dessert)System.Enum.Parse(typeof(Enum.Dessert), data[3])); } else { nagerecht = null; } // aantal ==> data[4] Bestelling order = new Bestelling(besteldgerecht, consumptie, nagerecht, int.Parse(data[4]), client); BestellingenFromFile.Add(order); } } } catch (IOException) { Console.WriteLine("Fout bij inlezen bestellingen"); } catch (Exception ex) { Console.WriteLine(ex.Message); } foreach (var order in BestellingenFromFile) { Console.WriteLine(order.ToString()); Console.WriteLine("-----------------------"); } }
static void Main(string[] args) { List <Gerecht> gerechten = null; List <Klant> klanten = null; List <Drank> dranken = null; List <BesteldGerecht> besteldeGerechten = null; List <Bestelling> bestellingen = null; List <Dessert> desserts = null; try { //Lijsten gerechten = new List <Gerecht> { new Pizza("Pizza Margherita", 8m, new List <string> { "Tomatensaus", "Mozzarella" }), //0 new Pizza("Pizza Napoli", 10m, new List <string> { "Tomatensaus", "Mozzarella", "Ansjovis", "Kappers", "Olijven" }), //1 new Pizza("Pizza Lardiera", 9.50m, new List <string> { "Tomatensaus", "Mozzarella", "Spek" }), //2 new Pizza("Pizza Vegetariana", 9.50m, new List <string> { "Tomatensaus", "Mozzarella", "Groenten" }), //3 new Pasta("Spaghetti Bolognese", 12m, "met gehaktsaus"), //4 new Pasta("Spaghetti Carbonara", 13m, "spek, roomsaus en parmezaanse kaas"), //5 new Pasta("Penne Arrabbiata", 14m, "met pittige tomatensaus"), //6 new Pasta("Lasagne", 15m) //7 }; klanten = new List <Klant> { new Klant(1, "Jan Janssen"), //0 new Klant(2, "Piet Peeters") //1 }; dranken = new List <Drank> { new Frisdrank(Enum.Drank.Water), //0 new Frisdrank(Enum.Drank.Limonade), //1 new Frisdrank(Enum.Drank.CocaCola), //2 new Warmedrank(Enum.Drank.Koffie), //3 new Warmedrank(Enum.Drank.Thee) //4 }; desserts = new List <Dessert> { new Dessert(Enum.Dessert.Cake), new Dessert(Enum.Dessert.Ijs), new Dessert(Enum.Dessert.Tiramisu) }; besteldeGerechten = new List <BesteldGerecht> { new BesteldGerecht(gerechten[0], Grootte.Groot, new List <Extra> { Extra.Kaas, Extra.Look }), //0 new BesteldGerecht(gerechten[0]), //1 new BesteldGerecht(gerechten[1], Grootte.Groot), //2 new BesteldGerecht(gerechten[7], Grootte.Klein, new List <Extra> { Extra.Look }), //3 new BesteldGerecht(gerechten[5]), //4 new BesteldGerecht(gerechten[4], Grootte.Groot, new List <Extra> { Extra.Kaas }), //5 }; bestellingen = new List <Bestelling> { new Bestelling(besteldeGerechten[0], dranken[0], desserts[1], 2, klanten[0]), new Bestelling(besteldeGerechten[1], dranken[0], desserts[2], 1, klanten[1]), new Bestelling(besteldeGerechten[2], dranken[4], desserts[1], 1, klanten[1]), new Bestelling(besteldeGerechten[3]), new Bestelling(besteldeGerechten[4], dranken[2], klant: klanten[0]), new Bestelling(besteldeGerechten[5], dranken[2], desserts[0], 1, klanten[1]), new Bestelling(drank: dranken[3], aantal: 3, klant: klanten[1]), new Bestelling(dessert: desserts[2], klant: klanten[0]) }; Console.WriteLine("1. Alle bestellingen"); LijnTrekker.TrekLijn(); //Alle Bestellingen var bestellingNr = 1; foreach (var gerecht in bestellingen) { Console.WriteLine($"Bestelling: {bestellingNr++}"); Console.WriteLine(gerecht); LijnTrekker.TrekLijn(); } //Alle bestellingen van Jan Janssen Clear("bestellingen van Jan Janssen"); var bestellingenJan = from bestelling in bestellingen where bestelling.Klant.Naam == klanten[0].Naam select bestelling; Console.WriteLine("2. Alle bestellingen van Jan Janssen"); LijnTrekker.TrekLijn(); Console.WriteLine($"Bestellingen van klant {klanten[0].Naam}\n"); foreach (var bestelling in bestellingenJan) { Console.WriteLine(bestelling); Console.WriteLine(); } var totaalBedrag = bestellingenJan.Sum(t => t.BerekenBedrag()); Console.WriteLine($"Het totaal bedrag van alle bestelingen van klant {klanten[0].Naam}: {totaalBedrag} euro"); LijnTrekker.TrekLijn(); Clear("bestellingen gegroepeerd per klant"); //Alle bestellingen gesorteerd per klant Console.WriteLine("3. Alle bestellingen gegroepeerd per klant"); LijnTrekker.TrekLijn(); var bestellingenPerKlant = from bestelling in bestellingen group bestelling by bestelling.Klant.Naam; foreach (var klant in bestellingenPerKlant) { if (klant.Key != "Onbekende Klant") { Console.WriteLine($"Bestellingen van klant {klant.Key}:\n"); } else { Console.WriteLine($"{klant.Key}en:\n"); } foreach (var bestelling in klant) { Console.WriteLine(bestelling); Console.WriteLine(); } totaalBedrag = klant.Sum(t => t.BerekenBedrag()); if (klant.Key != "Onbekende Klant") { Console.WriteLine($"Het totaal bedrag van alle bestelingen van klant {klant.Key}: {totaalBedrag} euro"); } LijnTrekker.TrekLijn(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Clear("ingelezen gegevens"); Console.WriteLine("4. Alle ingelezen gegevens"); LijnTrekker.TrekLijn(); string locatie = @"C:\Data\"; //WegSchrijven try { using (var schrijver = new StreamWriter(locatie + "Klanten.txt")) { foreach (var klant in klanten) { schrijver.WriteLine(klant.WegSchrijven()); } } using (var schrijver = new StreamWriter(locatie + "Gerechten.txt")) { foreach (var gerecht in gerechten) { schrijver.WriteLine(gerecht.WegSchrijven()); } } using (var schrijver = new StreamWriter(locatie + "Bestellingen.txt")) { foreach (var bestelling in bestellingen) { schrijver.WriteLine(bestelling.WegSchrijven()); } } } catch (IOException) { Console.WriteLine("Fout bij het schrijven naar het bestand"); } catch (Exception ex) { Console.WriteLine(ex.Message); } //Inlezen try { bestellingen = new List <Bestelling>(); gerechten = new List <Gerecht>(); klanten = new List <Klant>(); List <Extra> extras; Bestelling bestelling; Gerecht gerecht; Drank drank; Dessert dessert; Klant klant; string regel; using (var lezer = new StreamReader(locatie + "Klanten.txt")) { while ((regel = lezer.ReadLine()) != null) { string[] klantgegevens = regel.Split('#'); var klantId = int.Parse(klantgegevens[0]); var klantnaam = klantgegevens[1]; klant = new Klant(klantId, klantnaam); klanten.Add(klant); } } using (var lezer = new StreamReader(locatie + "Gerechten.txt")) { while ((regel = lezer.ReadLine()) != null) { string[] gerechtGegevens = regel.Split('#'); var naam = gerechtGegevens[1]; var prijs = decimal.Parse(gerechtGegevens[2]); var onderdelen = new List <string>(); if (gerechtGegevens[0] == "pizza") { int aantalOnderdelen = gerechtGegevens.Length - 3; for (int i = 3; i < aantalOnderdelen + 3; i++) { onderdelen.Add(gerechtGegevens[i]); } var pizza = new Pizza(naam, prijs, onderdelen); gerechten.Add(pizza); } else if (gerechtGegevens[0] == "pasta") { if (gerechtGegevens[3] != null) { var omschrijving = gerechtGegevens[3]; var pasta = new Pasta(naam, prijs, omschrijving); gerechten.Add(pasta); } else { var pasta = new Pasta(naam, prijs); gerechten.Add(pasta); } } } } using (var lezer = new StreamReader(locatie + "Bestellingen.txt")) { while ((regel = lezer.ReadLine()) != null) { BesteldGerecht besteldgerecht = null; gerecht = null; extras = null; drank = null; dessert = null; string[] bestellingGegevens = regel.Split('#'); var klantId = int.Parse(bestellingGegevens[0]); klant = klanten.Find(item => item.KlantId == klantId); if (bestellingGegevens[1] != "") { string[] arrBesteldgerecht = bestellingGegevens[1].Split('-'); if (arrBesteldgerecht[0] != "") { gerecht = gerechten.Find(item => item.Naam == arrBesteldgerecht[0]); } Grootte grootte = (Grootte)System.Enum.Parse(typeof(Grootte), arrBesteldgerecht[1]); int aantalExtras = int.Parse(arrBesteldgerecht[2]); if (aantalExtras != 0) { extras = new List <Extra>(); for (int i = 0; i < aantalExtras; i++) { Extra extra = (Extra)System.Enum.Parse(typeof(Extra), arrBesteldgerecht[i + 3]); extras.Add(extra); } } besteldgerecht = new BesteldGerecht(gerecht, grootte, extras); } if (bestellingGegevens[2] != "") { string[] arrDranken = bestellingGegevens[2].Split('-'); var drankNaam = (Enum.Drank)System.Enum.Parse(typeof(Enum.Drank), arrDranken[1]); if (arrDranken[0] == "F") { drank = new Frisdrank(drankNaam); } else { drank = new Warmedrank(drankNaam); } } if (bestellingGegevens[3] != "") { var dessertNaam = (Enum.Dessert)System.Enum.Parse(typeof(Enum.Dessert), bestellingGegevens[3]); dessert = new Dessert(dessertNaam); } bestelling = new Bestelling(besteldgerecht, drank, dessert, int.Parse(bestellingGegevens[4]), klant); bestellingen.Add(bestelling); } } /* * Console.WriteLine("Gerechten:\n"); * for (int i = 0; i < gerechten.Count; i++) * { * Console.WriteLine(gerechten[i]); * } * LijnTrekker.TrekLijn(); */ /* * Console.WriteLine("Klanten:\n"); * for (int i = 0; i < klanten.Count; i++) * { * Console.WriteLine(klanten[i]); * } * LijnTrekker.TrekLijn(); */ for (int i = 0; i < bestellingen.Count; i++) { Console.WriteLine(bestellingen[i]); LijnTrekker.TrekLijn(); } } catch (IOException) { Console.WriteLine("Fout bij het lezen van het bestand"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }