Advertisement
Guest User

Zad4

a guest
Mar 29th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.75 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7. using System.Runtime.Serialization.Formatters.Binary;
  8.  
  9. namespace ConsoleApplication4
  10. {
  11.     [Serializable]
  12.     class Produkt
  13.     {
  14.         private int id;
  15.         private String nazwa;
  16.         private decimal cena;
  17.         private String opis;
  18.  
  19.         public Produkt(int id, String nazwa, decimal cena, String opis)
  20.         {
  21.             this.id = id;
  22.             this.nazwa = nazwa;
  23.             this.cena = cena;
  24.             this.opis = opis;
  25.         }
  26.         public Produkt(List<Produkt> listaProduktow, String nazwa, decimal cena, String opis)
  27.         {
  28.             if (listaProduktow.Count==0)
  29.             {
  30.                 this.id = listaProduktow.Count + 1;
  31.             }
  32.             else
  33.             {
  34.                 this.id = listaProduktow.Last().GetId() + 1;
  35.             }
  36.             this.nazwa = nazwa;
  37.             this.cena = cena;
  38.             this.opis = opis;
  39.         }
  40.  
  41.         public int GetId()
  42.         {
  43.             return id;
  44.         }
  45.         public void SetId(int id)
  46.         {
  47.             this.id = id;
  48.         }
  49.  
  50.         public String GetNazwa()
  51.         {
  52.             return nazwa;
  53.         }
  54.         public void SetNazwa(String nazwa)
  55.         {
  56.             this.nazwa = nazwa;
  57.         }
  58.  
  59.         public decimal GetCena()
  60.         {
  61.             return cena;
  62.         }
  63.         public void SetCena(decimal cena)
  64.         {
  65.             this.cena = cena;
  66.         }
  67.  
  68.         public String GetOpis()
  69.         {
  70.             return opis;
  71.         }
  72.         public void SetOpis(String opis)
  73.         {
  74.             this.opis = opis;
  75.         }
  76.     }
  77.     class Program
  78.     {
  79.         static Boolean appExit = false;
  80.  
  81.         static private List<Produkt> listaProduktow = new List<Produkt>();
  82.        
  83.         static void InicjalizacjaKolekcji()
  84.         {
  85.             listaProduktow.Add(new Produkt(listaProduktow, "Komputer", 2100.20m, "opis.........."));
  86.             listaProduktow.Add(new Produkt(listaProduktow, "Laptop", 4200.20m, "opis.........."));
  87.             listaProduktow.Add(new Produkt(listaProduktow, "Telewizor", 4200.20m, "opis.........."));
  88.             listaProduktow.Add(new Produkt(listaProduktow, "Rzutnik", 1200.20m, "opis.........."));
  89.             listaProduktow.Add(new Produkt(listaProduktow, "Projektor", 200.20m, "opis.........."));
  90.             listaProduktow.Add(new Produkt(listaProduktow, "Drukarka", 500.20m, "opis.........."));
  91.             listaProduktow.Add(new Produkt(listaProduktow, "Tablet", 1200.20m, "opis.........."));
  92.             listaProduktow.Add(new Produkt(listaProduktow, "Drukarka HP", 500.20m, "opis.........."));
  93.             listaProduktow.Add(new Produkt(listaProduktow, "Tablet MSI", 1500.20m, "opis.........."));
  94.             listaProduktow.Add(new Produkt(listaProduktow, "Laptop Asus", 5700.20m, "opis.........."));
  95.         }
  96.  
  97.         static void WyswietlMenu()
  98.         {
  99.             System.Console.WriteLine("1    Pokaż całą kolekcję");
  100.             System.Console.WriteLine("2    Filtruj według nazwy");
  101.             System.Console.WriteLine("3    Filtruj według ceny");
  102.             System.Console.WriteLine("4    Sortuj według nazwy rosnąco");
  103.             System.Console.WriteLine("5    Sortuj według nazwy malejąco");
  104.             System.Console.WriteLine("6    Sortuj według ceny rosnąco");
  105.             System.Console.WriteLine("7    Sortuj według ceny malejąco");
  106.             System.Console.WriteLine("8    Dodaj produkt");
  107.             System.Console.WriteLine("9    Edytuj produkt");
  108.             System.Console.WriteLine("0    Usuń produkt");
  109.             System.Console.WriteLine("Z    Zapis kolekcji (serializacja)");
  110.             System.Console.WriteLine("O    Odczyt kolekcji (deserializacja)");
  111.             System.Console.WriteLine("ESC  Koniec");
  112.         }
  113.  
  114.         static void WyswietlDane(List<Produkt> listaProduktowWynikowa)
  115.         {
  116.             System.Console.WriteLine("| Id:        " + "| Nazwa:     " + "| Cena:      " + "| Opis:      |");
  117.  
  118.             foreach (Produkt produkt in listaProduktowWynikowa)
  119.             {
  120.                 String kolumna = "|x           ";
  121.                 int kolumnaDlugosc = kolumna.Length;
  122.  
  123.                 int i = kolumna.Length;
  124.                 String kolumnaId = kolumna.Replace("x", produkt.GetId().ToString()).Substring(0, kolumnaDlugosc);
  125.                 String kolumnaNazwa = kolumna.Replace("x", produkt.GetNazwa()).Substring(0, kolumnaDlugosc);
  126.                 String kolumnaCena = kolumna.Replace("x", produkt.GetCena().ToString()).Substring(0, kolumnaDlugosc);
  127.                 String kolumnaOpis = kolumna.Replace("x", produkt.GetOpis()).Substring(0, kolumnaDlugosc);
  128.                 System.Console.WriteLine(kolumnaId + kolumnaNazwa + kolumnaCena + kolumnaOpis + "|");
  129.             }
  130.             System.Console.WriteLine("Koniec listy");
  131.         }
  132.  
  133.         static List<Produkt> SortujWgNazwy(List<Produkt> listaDoPrzetwarzania, String sortowanie)
  134.         {
  135.             List<Produkt> listaPosortowana = new List<Produkt>();
  136.             if (sortowanie.Equals("asc"))
  137.             {
  138.                 var listaPosortowanaLINQ = from produkt in listaDoPrzetwarzania orderby produkt.GetNazwa() ascending select produkt;
  139.                 foreach (Produkt produkt in listaPosortowanaLINQ)
  140.                 {
  141.                     listaPosortowana.Add(produkt);
  142.                 }
  143.                 return listaPosortowana;
  144.             }
  145.             else
  146.             {
  147.                 var listaPosortowanaLINQ = from produkt in listaDoPrzetwarzania orderby produkt.GetNazwa() descending select produkt;
  148.                 foreach (Produkt produkt in listaPosortowanaLINQ)
  149.                 {
  150.                     listaPosortowana.Add(produkt);
  151.                 }
  152.                 return listaPosortowana;
  153.             }
  154.         }
  155.  
  156.         static List<Produkt> SortujWgCeny(List<Produkt> listaDoPrzetwarzania, String sortowanie)
  157.         {
  158.             List<Produkt> listaPosortowana = new List<Produkt>();
  159.             if (sortowanie.Equals("asc"))
  160.             {
  161.                 var listaPosortowanaLINQ = from produkt in listaDoPrzetwarzania orderby produkt.GetCena() ascending select produkt;
  162.                 foreach (Produkt produkt in listaPosortowanaLINQ)
  163.                 {
  164.                     listaPosortowana.Add(produkt);
  165.                 }
  166.                 return listaPosortowana;
  167.             }
  168.             else
  169.             {
  170.                 var listaPosortowanaLINQ = from produkt in listaDoPrzetwarzania orderby produkt.GetCena() descending select produkt;
  171.                 foreach (Produkt produkt in listaPosortowanaLINQ)
  172.                 {
  173.                     listaPosortowana.Add(produkt);
  174.                 }
  175.                 return listaPosortowana;
  176.             }
  177.         }
  178.        
  179.         static List<Produkt> FiltrujWgNazwy(List<Produkt> listaDoPrzetwarzania)
  180.         {
  181.             System.Console.Write("Podaj fragment nazwy: ");
  182.             String nazwaFiltr = System.Console.ReadLine();
  183.  
  184.             List<Produkt> listaFiltrowana = new List<Produkt>();
  185.             var listaFiltrowanaLINQ = from produkt in listaDoPrzetwarzania where produkt.GetNazwa().Contains(nazwaFiltr) orderby produkt.GetNazwa() ascending select produkt;
  186.             foreach (Produkt produkt in listaFiltrowanaLINQ)
  187.             {
  188.                 listaFiltrowana.Add(produkt);
  189.             }
  190.             return listaFiltrowana;
  191.         }
  192.        
  193.         static List<Produkt> FiltrujWgCeny(List<Produkt> listaDoPrzetwarzania)
  194.         {
  195.             System.Console.Write("Podaj cenę minimalną: ");
  196.             String cenaFiltr = System.Console.ReadLine();
  197.  
  198.             List<Produkt> listaFiltrowana = new List<Produkt>();
  199.             decimal cenaFiltrPoKonwersji = Decimal.Parse(cenaFiltr);
  200.  
  201.             var listaFiltrowanaLINQ = from produkt in listaDoPrzetwarzania where produkt.GetCena() >= cenaFiltrPoKonwersji orderby produkt.GetNazwa() ascending select produkt;
  202.             foreach (Produkt produkt in listaFiltrowanaLINQ)
  203.             {
  204.                 listaFiltrowana.Add(produkt);
  205.             }
  206.             return listaFiltrowana;
  207.         }
  208.  
  209.         static void DodajProdukt()
  210.         {
  211.             System.Console.Write("Podaj nazwę [do 10 znaków]: ");
  212.             String nazwa = System.Console.ReadLine();
  213.             System.Console.Write("Podaj cenę: ");
  214.             String cena = System.Console.ReadLine();
  215.             decimal cenaPoKonwersji = Decimal.Parse(cena);
  216.             System.Console.Write("Opis [do 10 znaków]: ");
  217.             String opis = System.Console.ReadLine();
  218.  
  219.             listaProduktow.Add(new Produkt(listaProduktow, nazwa, cenaPoKonwersji, opis));
  220.  
  221.             Console.Clear();
  222.             WyswietlMenu();
  223.             WyswietlDane(listaProduktow);
  224.         }
  225.  
  226.         static void EdytujProdukt()
  227.         {
  228.             System.Console.Write("Podaj id produktu: ");
  229.             String id = System.Console.ReadLine();
  230.             decimal idPoKonwersji = Decimal.Parse(id);
  231.  
  232.             Produkt produktDoEdycji = listaProduktow.Find(produkt => produkt.GetId() == idPoKonwersji);
  233.  
  234.             System.Console.Write("Nazwa: " + produktDoEdycji.GetNazwa() + " : ");
  235.             String nazwaNowa = System.Console.ReadLine();
  236.  
  237.             System.Console.Write("Cena: " + produktDoEdycji.GetCena().ToString() + " : ");
  238.             String cenaNowaString = System.Console.ReadLine();
  239.             decimal cenaNowa = Decimal.Parse(cenaNowaString);
  240.  
  241.             System.Console.Write("Opis: " + produktDoEdycji.GetOpis() + " : ");
  242.             String opisNowy = System.Console.ReadLine();
  243.  
  244.             produktDoEdycji.SetNazwa(nazwaNowa);
  245.             produktDoEdycji.SetCena(cenaNowa);
  246.             produktDoEdycji.SetOpis(opisNowy);
  247.  
  248.             int indexNaLiscie = listaProduktow.FindIndex(produkt => produkt.GetId() == idPoKonwersji);
  249.             listaProduktow[indexNaLiscie] = produktDoEdycji;
  250.  
  251.             Console.Clear();
  252.             WyswietlMenu();
  253.             WyswietlDane(listaProduktow);
  254.         }
  255.  
  256.         static void UsunProdukt()
  257.         {
  258.             System.Console.Write("Podaj id produktu: ");
  259.             String id = System.Console.ReadLine();
  260.             decimal idPoKonwersji = Decimal.Parse(id);
  261.  
  262.             var produktWyszukiwanyLINQ = from produkt in listaProduktow where produkt.GetId() == idPoKonwersji select produkt;
  263.  
  264.             if (produktWyszukiwanyLINQ.Count()>0)
  265.             {
  266.                 Produkt produktDoUsuniecia = produktWyszukiwanyLINQ.Single();
  267.                 listaProduktow.Remove(produktDoUsuniecia);
  268.             }
  269.             Console.Clear();
  270.             WyswietlMenu();
  271.             WyswietlDane(listaProduktow);
  272.         }
  273.  
  274.         static void ZapisDoPliku()
  275.         {
  276.             BinaryFormatter binaryFormatter = new BinaryFormatter();
  277.             using (Stream fStream = new FileStream("listaProduktów.dat", FileMode.Create, FileAccess.Write, FileShare.None))
  278.             {
  279.                 binaryFormatter.Serialize(fStream, listaProduktow);
  280.             }
  281.         }
  282.  
  283.         static void OdczytZPliku()
  284.         {
  285.             BinaryFormatter binaryFormatter = new BinaryFormatter();
  286.             using (Stream fStream = new FileStream("listaProduktów.dat", FileMode.Open, FileAccess.Read, FileShare.None))
  287.             {
  288.                 listaProduktow = (List<Produkt>)binaryFormatter.Deserialize(fStream);
  289.             }
  290.         }
  291.  
  292.  
  293.         static void Main(string[] args)
  294.         {
  295.             InicjalizacjaKolekcji();
  296.             WyswietlMenu();
  297.  
  298.             while (!appExit)
  299.             {
  300.                 System.Console.WriteLine("Wiecha Wojciech");
  301.                 System.ConsoleKeyInfo consoleKeyInfo = System.Console.ReadKey();
  302.                 System.Console.WriteLine(consoleKeyInfo.KeyChar);
  303.  
  304.                 Console.Clear();
  305.  
  306.                 WyswietlMenu();
  307.  
  308.                 switch(consoleKeyInfo.Key)
  309.                 {
  310.                     case ConsoleKey.D1:
  311.                         WyswietlDane(listaProduktow);
  312.                         break;
  313.                     case ConsoleKey.D2:
  314.                         WyswietlDane(FiltrujWgNazwy(listaProduktow));
  315.                         break;
  316.                     case ConsoleKey.D3:
  317.                         WyswietlDane(FiltrujWgCeny(listaProduktow));
  318.                         break;
  319.                     case ConsoleKey.D4:
  320.                         WyswietlDane(SortujWgNazwy(listaProduktow,"asc"));
  321.                         break;
  322.                     case ConsoleKey.D5:
  323.                         WyswietlDane(SortujWgNazwy(listaProduktow, "desc"));
  324.                         break;
  325.                     case ConsoleKey.D6:
  326.                         WyswietlDane(SortujWgCeny(listaProduktow, "asc"));
  327.                         break;
  328.                     case ConsoleKey.D7:
  329.                         WyswietlDane(SortujWgCeny(listaProduktow, "desc"));
  330.                         break;
  331.                     case ConsoleKey.D8:
  332.                         DodajProdukt();
  333.                         break;
  334.                     case ConsoleKey.D9:
  335.                         EdytujProdukt();
  336.                         break;
  337.                     case ConsoleKey.D0:
  338.                         UsunProdukt();
  339.                         break;
  340.                     case ConsoleKey.Z:
  341.                         ZapisDoPliku();
  342.                         break;
  343.                     case ConsoleKey.O:
  344.                         OdczytZPliku();
  345.                         break;
  346.                     case ConsoleKey.Escape:
  347.                         System.Console.WriteLine("Koniec aplikacji");
  348.                         appExit = true;
  349.                         break;
  350.                        
  351.                 }
  352.             }
  353.         }
  354.     }
  355. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement