Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Windows.Forms;
- namespace Data_int_2app
- {
- public partial class Form1 : Form
- {
- StatisticsBuilder statisticsBuilder;
- public Form1()
- {
- InitializeComponent();
- // stworzenie obiektu klasy statisticsBuilder
- statisticsBuilder = new StatisticsBuilder();
- // ustawienie danych dla wykresów i pozostałych statystyk
- setDataToLikingDogsChart();
- setDataToNumberOfDogsChart();
- setDataToTop5Chart();
- setOtherStatistics();
- }
- // Zadanie 2
- private void setDataToLikingDogsChart()
- {
- // pobranie statystyk za pomocą metody klasy statisticksBuilder
- var lkdStatistics = statisticsBuilder.getLikingDogsStats();
- // wyczyszczenie serii i obszarów wykresu
- likingDogsChart.Series.Clear();
- likingDogsChart.ChartAreas.Clear();
- // utworzenie nowego obszaru
- likingDogsChart.ChartAreas.Add("nowy");
- // dodanie nowej serii
- likingDogsChart.Series.Add("Lubienie psów");
- // ustawienie wyświetlania liczb na wykresie
- // przypisanie obszaru wykresu do serii
- // ustawienie typu wykresu na wykres kołowy
- likingDogsChart.Series["Lubienie psów"].IsValueShownAsLabel = true;
- likingDogsChart.Series["Lubienie psów"].ChartArea = "nowy";
- likingDogsChart.Series["Lubienie psów"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
- // dodanie danych do wykresu
- likingDogsChart.Series["Lubienie psów"].Points.AddXY("Tak", lkdStatistics["Tak"]);
- likingDogsChart.Series["Lubienie psów"].Points.AddXY("Owszem", lkdStatistics["Owszem"]);
- }
- //Zadanie 3
- private void setDataToNumberOfDogsChart()
- {
- // pobranie statystyk za pomocą metody klasy statisticksBuilder
- var nofdStatistics = statisticsBuilder.getNumberOfDogsStats();
- // wyczyszczenie serii i obszarów wykresu
- numberOfDogsChart.Series.Clear();
- numberOfDogsChart.ChartAreas.Clear();
- // nowy obszar, nowa seria, typ wykresu
- numberOfDogsChart.ChartAreas.Add("nowy");
- numberOfDogsChart.Series.Add("Liczba psów");
- numberOfDogsChart.Series["Liczba psów"].ChartArea = "nowy";
- numberOfDogsChart.Series["Liczba psów"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Bar;
- // dodanie danych do wykresu
- foreach (int nofd in nofdStatistics.Keys)
- {
- numberOfDogsChart.Series["Liczba psów"].Points.AddXY(nofd, nofdStatistics[nofd]);
- }
- }
- //Zadanie 4
- private void setDataToTop5Chart()
- {
- // pobranie statystyk
- var top5Statistics = statisticsBuilder.getTop5Stats();
- // czyszczenie wykresu
- top5Chart.Series.Clear();
- top5Chart.ChartAreas.Clear();
- // nowy obszar, nowa seria, typ wykresu zostaje domyslny
- top5Chart.ChartAreas.Add("nowy");
- top5Chart.Series.Add("Top 5");
- top5Chart.Series["Top 5"].ChartArea = "nowy";
- // dodanie danych do wykresu
- foreach (string top5 in top5Statistics.Keys)
- {
- top5Chart.Series["Top 5"].Points.AddXY(top5, top5Statistics[top5]);
- }
- }
- //Zadanie 5
- private void setOtherStatistics()
- {
- //pobranie satystyk za pomocą metody klasy statisticsBuilder
- var otherStats = statisticsBuilder.getOtherStatistics();
- // przypisanie danych do elementow GUI
- avgQuantity.Text = otherStats["quantity"];
- avgDogs.Text = otherStats["numberOfDogs"];
- lastDate.Text = otherStats["date"];
- }
- private void button1_Click(object sender, EventArgs e)
- {
- //wywolanie metody reloadFromFile
- statisticsBuilder.reloadFromFile();
- //wywołanie kolejnych medo ustawiajacych dane
- setDataToLikingDogsChart();
- setDataToNumberOfDogsChart();
- setDataToTop5Chart();
- setOtherStatistics();
- }
- private void likingDogsChart_Click(object sender, EventArgs e)
- {
- }
- private void chart4_Click(object sender, EventArgs e)
- {
- }
- private void label6_Click(object sender, EventArgs e)
- {
- }
- private void textBox1_TextChanged(object sender, EventArgs e)
- {
- }
- private void label5_Click(object sender, EventArgs e)
- {
- }
- private void label9_Click(object sender, EventArgs e)
- {
- }
- }
- }
- //DRUGA KLASA
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Xml.Linq;
- namespace Data_int_2app
- {
- class StatisticsBuilder
- {
- public List<Order> orders { get; set; }
- public StatisticsBuilder()
- {
- // przy tworzeniu egzemplarza klasy tworzona jest nowa lista i wczytywane dane z pliku
- orders = new List<Order>();
- readFromFile();
- }
- // Zadanie 1
- private void readFromFile()
- {
- // okreslenie sciezki do plki xml w systemie i wczytanie pliku
- System.IO.DirectoryInfo myDirectory = new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.Parent;
- String pathToTheFile = myDirectory.FullName + "\\Is-data-int\\bin\\Debug\\orders.xml";
- XDocument xdoc = XDocument.Load(pathToTheFile);
- // pobranie dzieci znacznika ordersTable
- var items = xdoc.Descendants("ordersTable").Elements();
- // tworzenie w pętli obiektów zamowienia na podstawie danych z pliku i zapisanie ich do listy
- foreach (var item in items)
- {
- Order order = new Order();
- order.quantity = Int32.Parse(item.Element("quantity").Value);
- order.name = item.Element("name").Value;
- order.surname = item.Element("surname").Value;
- order.city = item.Element("city").Value;
- order.street = item.Element("street").Value;
- order.zip = item.Element("zip").Value;
- order.email = item.Element("email").Value;
- order.numberOfDogs = Int32.Parse(item.Element("numberOfDogs").Value);
- order.likingDogs = item.Element("likingDogs").Value;
- order.date = DateTime.Parse(item.Element("date").Value);
- orders.Add(order);
- }
- }
- public void reloadFromFile()
- {
- readFromFile();
- }
- //Zadanie 2
- public Dictionary<String, int> getLikingDogsStats()
- {
- //utworzenie nowego słownika i zainicjalizowanie początkowych wartosci odpowiedzi "Tak" oraz "Owszem" na 0
- var lkdStatistics = new Dictionary<String, int>();
- lkdStatistics["Tak"] = 0;
- lkdStatistics["Owszem"] = 0;
- // zliczanie odpowiedzi w pętli
- foreach (var order in orders)
- {
- if (order.likingDogs == "Tak")
- lkdStatistics["Tak"]++;
- else
- lkdStatistics["Owszem"]++;
- }
- return lkdStatistics;
- }
- //Zadanie 3
- public Dictionary<int, int> getNumberOfDogsStats()
- { // utworznie nowego słownika
- var nofdStatistics = new Dictionary<int, int>();
- // przetwarzanie w listy zamowien w petli
- foreach (var order in orders)
- {
- if (!nofdStatistics.ContainsKey(order.numberOfDogs))
- nofdStatistics[order.numberOfDogs] = 1;
- else
- nofdStatistics[order.numberOfDogs]++;
- }
- return nofdStatistics;
- }
- //Zadanie 4
- public Dictionary<String, int> getTop5Stats()
- {
- // utworzenie nowego słownika
- var top5Statistics = new Dictionary<String, int>();
- // dodanie jako pierwszy parametr imienia i nazwiska oraz daty, jako drugi ilosci zamawianych sztuk
- foreach (var order in orders)
- {
- top5Statistics.Add(order.name + " " + order.surname + " " + order.date, order.quantity);
- }
- // korzystajac z linq posortowanie zbioru malejąco, wyciagniecie 5 pierwszych wynikow, konwersja do slownika
- return top5Statistics.OrderByDescending(x => x.Value).Take(5).ToDictionary(t => t.Key, t => t.Value);
- }
- //Zadanie 5
- public Dictionary<String, String> getOtherStatistics()
- {
- // utworzenie słownika
- var otherStatistics = new Dictionary<String, String>();
- // wylicznie średnich dla sztuk oraz psów
- double sumQuantity = 0.0;
- double sumDogs = 0.0;
- foreach (var order in orders)
- {
- sumQuantity += order.quantity;
- sumDogs += order.numberOfDogs;
- }
- double avgQuantity = sumQuantity / orders.Count;
- double avgDogs = sumDogs / orders.Count;
- // pobranie daty ostatniego zamówienia na liście
- String lastDate = Convert.ToString(orders[orders.Count - 1].date);
- // dodanie danych o ilości zamawianych sztuk, liczbie psów i dacie
- otherStatistics.Add("quantity", Convert.ToString(avgQuantity));
- otherStatistics.Add("numberOfDogs", Convert.ToString(avgDogs));
- otherStatistics.Add("date", lastDate);
- return otherStatistics;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement