Практична робота 6

 

         Метою даної практичної роботи буде навчитися представляти у вигляді трьох видів діаграм, а саме гістограму (стовпчаста діаграма), лінійна (функціональна залежність, координати точки два числа) та секторна (зафарбовані частини круга від центру до країв, із естетичних питань ми використаємо із «діркою» посередині)

         Для організації інтерфейсу використаємо вкладки. На кожній із яких будуть компонента діаграми, сітка для вводу значень, та кнопка, яка буде видаляти старі значення діаграми та додавати нові. Тепер наведемо вкладки із підписаними на них компонентами.

Вкладка «Гістограма»

Вкладка «Секторна»

Вкладка «Лінійна»

         З наведених вище малюнків видно, що компоненти для відображення діаграм різні по вигляду, це зв’язано з тим, що серії в них вже налаштовані. Змінити, додати, замінити вигляд серій діаграми можна у властивості Series у властивостях проекту, дана дія викличе на екран вікно налаштування серій показане нижче:

Вікно налаштування серій діаграми

         Також Вам доведеться додати до сітки, яка дозволяє додавати рядки з новими значеннями, додати потрібні стовпці. Зробити це можна у властивості сітки Columns, на вікні відобразиться вікно де і можна буде відредагувати (додати, видалити) стовпці, та перейменувати їх.

         Все, візуальне налаштування завершене, переходимо до коду самого додатку.

public partial class Form1 : Form //клас нашої головної форми

 {

  public Form1()//конструктор

   {

    InitializeComponent();

   }

 

private void button1_Click(object sender, EventArgs e)//кнопка перебудувати гістограму

 {

  chart3.Series[0].Points.Clear();//очищуємо старі стовпці, якщо вони були

  foreach (DataGridViewRow rw in dataGridView1.Rows)//перебираємо сітку із значеннями по рядкам

   {

    if (!rw.IsNewRow)//якщо рядок не новий

     {

      string v="0";string z="";//змінні для зручності

      double r;//v - підпис значення, r - значення, v - текстова мітка

      if (rw.Cells[0].Value!=null)//якщо в клітинці міститься числове значення

        v = rw.Cells[0].Value.ToString();//поміщаємо у змінну v

      if (rw.Cells[1].Value != null)//якщо в клітинці міститься значення підпису

        z = rw.Cells[1].Value.ToString();//поміщаємо у змінну z

      r = Convert.ToDouble(v);//переводимо рядок в число

      DataPoint p;//створюємо нову точку графіку

      p=chart3.Series[0].Points.Add(r);//додаємо чначення

      p.Label = v;//додаємо підпис

      p.AxisLabel = z;//додаємо мітку

     }

   }

 }

 

private void button2_Click(object sender, EventArgs e)//обробник натиску кнопки перебудувати кругову діаграму

 {

  chart2.Series[0].Points.Clear();//очищуємо старі стовпці, якщо вони були

  foreach (DataGridViewRow rw in dataGridView2.Rows)//перебираємо сітку із значеннями по рядкам

   {

    if (!rw.IsNewRow)//якщо рядок не новий

     {

      string v = "0"; string z = "";//змінні для зручності

      double r;//v - підпис значення, r - значення, v - текстова мітка

      if (rw.Cells[0].Value != null)//якщо в клітинці міститься числове значення

        v = rw.Cells[0].Value.ToString();//поміщаємо у змінну v

      if (rw.Cells[1].Value != null)//якщо в клітинці міститься значення підпису

        z = rw.Cells[1].Value.ToString();//поміщаємо у змінну z

      r = Convert.ToDouble(v);//переводимо рядок в число

      DataPoint p;//створюємо нову точку графіку

      p = chart2.Series[0].Points.Add(r);//додаємо чначення

      p.Label = v;//додаємо підпис

      p.LegendText = z;//додаємо мітку

     }

   }

 }

 

private void button3_Click(object sender, EventArgs e)//обробник кнопки перебудувати лінійну діаграму

 {

  chart1.Series[0].Points.Clear();//очищуємо старі стовпці, якщо вони були

  foreach (DataGridViewRow rw in dataGridView3.Rows)//перебираємо сітку із значеннями по рядкам

   {

    if (!rw.IsNewRow)//якщо рядок не новий

     {

      string x = "0"; string z = "";//змінні для зручності z - підпис

      double rx, ry; string y = "0"; //x,y - рядкове представлення координат, rx, ry - рядки зведені до чисел

      if (rw.Cells[0].Value != null)//якщо в клітинці міститься числове значення

        x = rw.Cells[0].Value.ToString();//поміщаємо у змінну x

      if (rw.Cells[1].Value != null)//якщо в клітинці міститься числове значення

        y = rw.Cells[1].Value.ToString();//поміщаємо у змінну y

      if (rw.Cells[2].Value != null)//якщо в клітинці міститься значення підпису

        z = rw.Cells[2].Value.ToString();//поміщаємо у змінну z

      rx = Convert.ToDouble(x);//зводимо коодинати до

      ry = Convert.ToDouble(y);//числового представлення

      DataPoint p = new DataPoint(ry,rx);//створюємо нову точку діаграми, на базу двох координат

      chart1.Series[0].Points.Add(p);//додаємо чначення

      p.Label = z;//додаємо мітку

      p.AxisLabel = y;//додаємо підпис

     }

   }

  }

}

         Ось ми і описали обробники всіх кнопок.

         Для успішної здачі лабораторної роботи Вам потрібно буде доробити у додатку деякі моменти:

·        Всі написи повинні бути українськими.

·        Додати головне меню із пунктом про програму, де обов’язково мусить бути фото автора.

·        Додати ще одну вкладку із діаграмою іншого типу (вибір повністю на Ваш смак), який відрізняється від трьох наведених.

·        Додати вкладку де можна вирахувати значення довільної функції і автоматично додати на графік (функцію вибрати довільну, але не таку як у сусіда)), відобразити можна наприклад так:         

·        Додати до попередньої вкладки кнопку «Очистити значення»