Коллекция "Склад", включающий до 20 объектов класса "Товар": нарисовать график статистического учета - C#
Формулировка задачи:
Добрый день,уважаемые программисты.
Задача:
В коллекции «Склада», включающей до 20 объектов класса «Товар», предусмотреть подсчет стоимости и количества объектов «Товар» по из типу, например, «Канцелярский товар», «Хозяйственный товар» или «Продукт» (всего до 6 различных типов). Напечатать исходную коллекцию и результаты статистического учета.
Задача выполнена,но результат(статистического учета) нужно показать ввиде графика или диаграммы.
Тут я вообщем завис
Код формы1
График хотелось бы отобразить на второй форме. Хотелось бы увидеть пример. Если не получается - объясните как можно будет отобразить результат.
Неадыкваты лесом из темы.
Заранее благодарю.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace WindowsFormsApplication10
{
public partial class Form1 : Form
{
[Serializable]
public class Tovar
{
public string tip;
public int stoim;
public int kolvo;
public static int erunda;
public Tovar(int kolvo,int stoim)
{
this.stoim = stoim;
this.kolvo = kolvo;
}
}
public ArrayList tovar = new ArrayList();
public bool flag;
public void zapf()
{
// Form2 f2 = new Form2();
// Создаем поток для сериализации:
FileStream StreamOut = new FileStream("tovar.dat",
FileMode.Create, FileAccess.Write);
// Используем двоичный формат:
BinaryFormatter fmt = new BinaryFormatter();
fmt.Serialize(StreamOut, tovar); // Сериализуем объекты
StreamOut.Close(); // Закрываем поток
}
public void vvod()
{
int i = 0;
// Создаем поток для десериализации:
FileStream StreamIn = new FileStream("tovar.dat",
FileMode.Open, FileAccess.Read);
// Используем двоичный формат:
BinaryFormatter fmt = new BinaryFormatter();
tovar = (ArrayList)fmt.Deserialize(StreamIn);//Десериализуем
Tovar.erunda = 0;
foreach (Tovar t in tovar)
{ Tovar.erunda++; i++; }
Tovar.erunda--;
StreamIn.Close();
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int a, b;
if (radioButton1.Checked == true)
{
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
Tovar tv0 = new Tovar(a, b);
tv0.tip = "Канцелярский товар,";
tovar.Add(tv0);
richTextBox1.AppendText("ТИП:" + tv0.tip + " С Количеством:" + tv0.kolvo + ", Стоимостью:" + tv0.stoim + "\r\n");
}
if (radioButton2.Checked == true)
{
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
Tovar tv1 = new Tovar(a, b);
tv1.tip = "Хозяйственный товар,";
tovar.Add(tv1);
richTextBox1.AppendText("ТИП:" + tv1.tip + " С Количеством:" + tv1.kolvo + ", Стоимостью:" + tv1.stoim + "\r\n");
}
if (radioButton3.Checked == true)
{
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
Tovar tv2 = new Tovar(a, b);
tv2.tip = "Продукт,";
tovar.Add(tv2);
richTextBox1.AppendText("ТИП:" + tv2.tip + " С Количеством:" + tv2.kolvo + ", Стоимостью:" + tv2.stoim + "\r\n");
}
if (radioButton4.Checked == true)
{
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
Tovar tv3 = new Tovar(a, b);
tv3.tip = "Строительный товар,";
tovar.Add(tv3);
richTextBox1.AppendText("ТИП:" + tv3.tip + " С Количеством:" + tv3.kolvo + ", Стоимостью:" + tv3.stoim + "\r\n");
}
if (radioButton5.Checked == true)
{
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
Tovar tv4 = new Tovar(a, b);
tv4.tip = "Запчасти,";
tovar.Add(tv4);
richTextBox1.AppendText("ТИП:" + tv4.tip + " С Количеством:" + tv4.kolvo + ", Стоимостью:" + tv4.stoim + "\r\n");
}
if (radioButton6.Checked == true)
{
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
Tovar tv5 = new Tovar(a, b);
tv5.tip = "Промышленный товар,";
tovar.Add(tv5);
richTextBox1.AppendText("ТИП:" + tv5.tip + " С Количеством:" + tv5.kolvo + ", Стоимостью:" + tv5.stoim + "\r\n");
}
}
private void button2_Click(object sender, EventArgs e)
{
zapf();
MessageBox.Show("Запись произведена успешно =)");
}
private void button3_Click(object sender, EventArgs e)
{
vvod();
MessageBox.Show("Чтение прозведено успешно =)");
}
private void button4_Click(object sender, EventArgs e)
{
flag = true;
foreach (Tovar T1 in tovar)
{
richTextBox1.AppendText("ТИП:" + T1.tip + " С Количеством:" + T1.kolvo + ", Стоимостью:" + T1.stoim + "\r\n");
}
}
private void button5_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
}
}
}Решение задачи: «Коллекция "Склад", включающий до 20 объектов класса "Товар": нарисовать график статистического учета»
textual
Листинг программы
var list = new List<Tovar>(tovar.Count);
list.AddRange(tovar.Cast<Tovar>());
var types = list.GroupBy(x => x.tip);
chart1.Series.Clear();
foreach (var type in types)
{
chart1.Series.Add(type.Key);
foreach (var good in type)
chart1.Series[type.Key].Points.Add(good.stoim);
}