Advertisement
Guest User

dint

a guest
Dec 11th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.98 KB | None | 0 0
  1. using System;
  2. using System.Windows.Forms;
  3.  
  4. namespace Data_int_2app
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         StatisticsBuilder statisticsBuilder;
  9.  
  10.         public Form1()
  11.         {
  12.             InitializeComponent();
  13.             // stworzenie obiektu klasy statisticsBuilder
  14.             statisticsBuilder = new StatisticsBuilder();
  15.  
  16.             // ustawienie danych dla wykresów i pozostałych statystyk
  17.             setDataToLikingDogsChart();
  18.             setDataToNumberOfDogsChart();
  19.             setDataToTop5Chart();
  20.             setOtherStatistics();
  21.         }
  22.         // Zadanie 2
  23.         private void setDataToLikingDogsChart()
  24.         {
  25.             // pobranie statystyk za pomocą metody klasy statisticksBuilder
  26.             var lkdStatistics = statisticsBuilder.getLikingDogsStats();
  27.  
  28.             // wyczyszczenie serii i obszarów wykresu
  29.             likingDogsChart.Series.Clear();
  30.             likingDogsChart.ChartAreas.Clear();
  31.  
  32.             // utworzenie nowego obszaru
  33.             likingDogsChart.ChartAreas.Add("nowy");
  34.             // dodanie nowej serii
  35.             likingDogsChart.Series.Add("Lubienie psów");
  36.  
  37.             // ustawienie wyświetlania liczb na wykresie
  38.             // przypisanie obszaru wykresu do serii
  39.             // ustawienie typu wykresu na wykres kołowy
  40.             likingDogsChart.Series["Lubienie psów"].IsValueShownAsLabel = true;
  41.             likingDogsChart.Series["Lubienie psów"].ChartArea = "nowy";
  42.             likingDogsChart.Series["Lubienie psów"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
  43.  
  44.             // dodanie danych do wykresu
  45.             likingDogsChart.Series["Lubienie psów"].Points.AddXY("Tak", lkdStatistics["Tak"]);
  46.             likingDogsChart.Series["Lubienie psów"].Points.AddXY("Owszem", lkdStatistics["Owszem"]);
  47.         }
  48.         //Zadanie 3
  49.         private void setDataToNumberOfDogsChart()
  50.         {
  51.             // pobranie statystyk za pomocą metody klasy statisticksBuilder
  52.             var nofdStatistics = statisticsBuilder.getNumberOfDogsStats();
  53.  
  54.             // wyczyszczenie serii i obszarów wykresu
  55.             numberOfDogsChart.Series.Clear();
  56.             numberOfDogsChart.ChartAreas.Clear();
  57.  
  58.             // nowy obszar, nowa seria, typ wykresu
  59.             numberOfDogsChart.ChartAreas.Add("nowy");
  60.             numberOfDogsChart.Series.Add("Liczba psów");
  61.             numberOfDogsChart.Series["Liczba psów"].ChartArea = "nowy";
  62.             numberOfDogsChart.Series["Liczba psów"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Bar;
  63.  
  64.             // dodanie danych do wykresu
  65.             foreach (int nofd in nofdStatistics.Keys)
  66.             {
  67.                 numberOfDogsChart.Series["Liczba psów"].Points.AddXY(nofd, nofdStatistics[nofd]);
  68.             }
  69.         }
  70.         //Zadanie 4
  71.         private void setDataToTop5Chart()
  72.         {
  73.             // pobranie statystyk
  74.             var top5Statistics = statisticsBuilder.getTop5Stats();
  75.  
  76.             // czyszczenie wykresu
  77.             top5Chart.Series.Clear();
  78.             top5Chart.ChartAreas.Clear();
  79.  
  80.             // nowy obszar, nowa seria, typ wykresu zostaje domyslny
  81.             top5Chart.ChartAreas.Add("nowy");
  82.             top5Chart.Series.Add("Top 5");
  83.             top5Chart.Series["Top 5"].ChartArea = "nowy";
  84.  
  85.             // dodanie danych do wykresu
  86.             foreach (string top5 in top5Statistics.Keys)
  87.             {
  88.                 top5Chart.Series["Top 5"].Points.AddXY(top5, top5Statistics[top5]);
  89.             }
  90.         }
  91.         //Zadanie 5
  92.         private void setOtherStatistics()
  93.         {
  94.             //pobranie satystyk za pomocą metody klasy statisticsBuilder
  95.             var otherStats = statisticsBuilder.getOtherStatistics();
  96.  
  97.             // przypisanie danych do elementow GUI
  98.             avgQuantity.Text = otherStats["quantity"];
  99.             avgDogs.Text = otherStats["numberOfDogs"];
  100.             lastDate.Text = otherStats["date"];
  101.         }
  102.  
  103.         private void button1_Click(object sender, EventArgs e)
  104.         {  
  105.             //wywolanie metody reloadFromFile
  106.             statisticsBuilder.reloadFromFile();
  107.             //wywołanie kolejnych medo ustawiajacych dane
  108.             setDataToLikingDogsChart();
  109.             setDataToNumberOfDogsChart();
  110.             setDataToTop5Chart();
  111.             setOtherStatistics();
  112.         }
  113.  
  114.         private void likingDogsChart_Click(object sender, EventArgs e)
  115.         {
  116.  
  117.         }
  118.  
  119.         private void chart4_Click(object sender, EventArgs e)
  120.         {
  121.  
  122.         }
  123.  
  124.         private void label6_Click(object sender, EventArgs e)
  125.         {
  126.  
  127.         }
  128.  
  129.         private void textBox1_TextChanged(object sender, EventArgs e)
  130.         {
  131.  
  132.         }
  133.  
  134.         private void label5_Click(object sender, EventArgs e)
  135.         {
  136.  
  137.         }
  138.  
  139.         private void label9_Click(object sender, EventArgs e)
  140.         {
  141.  
  142.         }
  143.     }
  144. }
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154. //DRUGA KLASA
  155.  
  156.  
  157.  
  158. using System;
  159. using System.Collections.Generic;
  160. using System.IO;
  161. using System.Linq;
  162. using System.Xml.Linq;
  163.  
  164. namespace Data_int_2app
  165. {
  166.     class StatisticsBuilder
  167.     {
  168.         public List<Order> orders { get; set; }
  169.  
  170.         public StatisticsBuilder()
  171.         {
  172.             // przy tworzeniu egzemplarza klasy tworzona jest nowa lista i wczytywane dane z pliku
  173.             orders = new List<Order>();
  174.             readFromFile();
  175.         }
  176.  
  177.         // Zadanie 1
  178.         private void readFromFile()
  179.         {
  180.             // okreslenie sciezki do plki xml w systemie i wczytanie pliku
  181.             System.IO.DirectoryInfo myDirectory = new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.Parent;
  182.             String pathToTheFile = myDirectory.FullName + "\\Is-data-int\\bin\\Debug\\orders.xml";
  183.             XDocument xdoc = XDocument.Load(pathToTheFile);
  184.             // pobranie dzieci znacznika ordersTable
  185.             var items = xdoc.Descendants("ordersTable").Elements();
  186.  
  187.             // tworzenie w pętli obiektów zamowienia na podstawie danych z pliku i zapisanie ich do listy
  188.             foreach (var item in items)
  189.             {
  190.                 Order order = new Order();
  191.                 order.quantity = Int32.Parse(item.Element("quantity").Value);
  192.                 order.name = item.Element("name").Value;
  193.                 order.surname = item.Element("surname").Value;
  194.                 order.city = item.Element("city").Value;
  195.                 order.street = item.Element("street").Value;
  196.                 order.zip = item.Element("zip").Value;
  197.                 order.email = item.Element("email").Value;
  198.                 order.numberOfDogs = Int32.Parse(item.Element("numberOfDogs").Value);
  199.                 order.likingDogs = item.Element("likingDogs").Value;
  200.                 order.date = DateTime.Parse(item.Element("date").Value);
  201.                 orders.Add(order);
  202.             }
  203.         }
  204.         public void reloadFromFile()
  205.         {
  206.             readFromFile();
  207.         }
  208.         //Zadanie 2
  209.         public Dictionary<String, int> getLikingDogsStats()
  210.         {
  211.             //utworzenie nowego słownika i zainicjalizowanie początkowych wartosci odpowiedzi "Tak" oraz "Owszem" na 0
  212.             var lkdStatistics = new Dictionary<String, int>();
  213.             lkdStatistics["Tak"] = 0;
  214.             lkdStatistics["Owszem"] = 0;
  215.            
  216.             // zliczanie odpowiedzi w pętli
  217.             foreach (var order in orders)
  218.             {
  219.                 if (order.likingDogs == "Tak")
  220.                     lkdStatistics["Tak"]++;
  221.                 else
  222.                     lkdStatistics["Owszem"]++;
  223.             }
  224.             return lkdStatistics;
  225.         }
  226.         //Zadanie 3
  227.         public Dictionary<int, int> getNumberOfDogsStats()
  228.         {   // utworznie nowego słownika
  229.             var nofdStatistics = new Dictionary<int, int>();
  230.             // przetwarzanie w listy zamowien w petli
  231.             foreach (var order in orders)
  232.             {
  233.                 if (!nofdStatistics.ContainsKey(order.numberOfDogs))
  234.                     nofdStatistics[order.numberOfDogs] = 1;
  235.                 else
  236.                     nofdStatistics[order.numberOfDogs]++;
  237.             }
  238.             return nofdStatistics;
  239.         }
  240.         //Zadanie 4
  241.         public Dictionary<String, int> getTop5Stats()
  242.         {
  243.             // utworzenie nowego słownika
  244.             var top5Statistics = new Dictionary<String, int>();
  245.             // dodanie jako pierwszy parametr imienia i nazwiska oraz daty, jako drugi ilosci zamawianych sztuk
  246.             foreach (var order in orders)
  247.             {
  248.                 top5Statistics.Add(order.name + " " + order.surname + " " + order.date, order.quantity);
  249.             }
  250.             // korzystajac z linq posortowanie zbioru malejąco, wyciagniecie 5 pierwszych wynikow, konwersja do slownika
  251.             return top5Statistics.OrderByDescending(x => x.Value).Take(5).ToDictionary(t => t.Key, t => t.Value);
  252.         }
  253.         //Zadanie 5
  254.         public Dictionary<String, String> getOtherStatistics()
  255.         {
  256.             // utworzenie słownika
  257.             var otherStatistics = new Dictionary<String, String>();
  258.  
  259.             // wylicznie średnich dla sztuk oraz psów
  260.             double sumQuantity = 0.0;
  261.             double sumDogs = 0.0;
  262.             foreach (var order in orders)
  263.             {
  264.                 sumQuantity += order.quantity;
  265.                 sumDogs += order.numberOfDogs;
  266.             }
  267.             double avgQuantity = sumQuantity / orders.Count;
  268.             double avgDogs = sumDogs / orders.Count;
  269.  
  270.             // pobranie daty ostatniego zamówienia na liście
  271.             String lastDate = Convert.ToString(orders[orders.Count - 1].date);
  272.             // dodanie danych o ilości zamawianych sztuk, liczbie psów i dacie
  273.             otherStatistics.Add("quantity", Convert.ToString(avgQuantity));
  274.             otherStatistics.Add("numberOfDogs", Convert.ToString(avgDogs));
  275.             otherStatistics.Add("date", lastDate);
  276.  
  277.             return otherStatistics;
  278.         }
  279.     }
  280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement