Программирование в Windows | Контрол. Анализ продаж ABC

Этот раздел сайта предназначен для программирования программ под Windows. Дается описание различных видов интерфейса, а также можно найти коды на C#, VB.NET, T-SQL. Формы можно скомпилировать в виде Exe или DLL файлов. Это позволит запускать их из разных программ, например, Microsoft Access, Excel и bat файлов

Контрол. Анализ продаж ABC

Контрол (Control) - специальный элемент Micrsoft Visual Studio применяется при разработке интерфейса форм Windows. Сущность таких элементов заключается в том, что разработав один раз такой элемент, далее можно применить многократно. Чаще всего он имеет параметры, которые используются для его настройки.

Рассмотрим "Контрол. Анализ продаж ABC". Алгоритм ABC означает, что в продажах товаров и услуг приносят прибыль разные группы элементов. Группа А - 80% продаж, Группа B - 16% продаж, Группа С - 4% продаж. Интересно знать, что же дает основную прибыль компании. Фактически этот графический контрол-элемент позволяет руководству компании быстро оценить продажи за разные промежутки времени и принять правильные решения по торговле.

При разработке контрол-элемента используется библиотека LinQ и  Chart из Microsoft Visual Studio. Пример программы на C# дан ниже. Обратите внимание как можно отформатировать график в рублях и его цвет. Например, при больших объемах продаж лучше информацию выводить в тысячах или даже миллионах рублей.

       protected void LoadChartRes()
        {
            try
            {
                DataTable dt = GetDataFromGrid();

                int n = Convert.ToInt32(comboBoxMaxCount.Text);
                string[] x = (from p in dt.AsEnumerable()
                              select "Группа " + p.Field<string>("Группа ABC")).Take(n).ToArray();
                Decimal[] y1 = (from p in dt.AsEnumerable()
                                select p.Field<Decimal>("Сумма_ALL")).Take(n).ToArray();
                Decimal[] y2 = (from p in dt.AsEnumerable()
                                select p.Field<Decimal>("Кол_ALL")).Take(n).ToArray();


                ChartRes.Series[0].IsValueShownAsLabel = true;
                ChartRes.Series[0].Points.DataBindXY(x, y1);
                ChartRes.Series[0].LabelForeColor = Color.DarkGreen;
                ChartRes.Series[0].LabelFormat = "{### ### ### ##0} руб.";
                ChartRes.Series[0].Font = new System.Drawing.Font("Ariel", 14f);

                ChartRes.ChartAreas[0].AxisX.LabelStyle.Font = new System.Drawing.Font("Ariel", 14f); // По оси Y
                ChartRes.ChartAreas[0].AxisY.LabelStyle.Format = "{### ### ### ##0}";

                ChartRes.Series[1].IsValueShownAsLabel = true;
                ChartRes.Series[1].Points.DataBindXY(x, y2);
                ChartRes.Series[1].LabelForeColor = Color.Blue;
                ChartRes.Series[1].LabelFormat = "Кол-во = {### ### ### ##0}";
                ChartRes.Series[1].Font = new System.Drawing.Font("Ariel", 12f);
  

                if (ChartRes.Series.Count > 2)
                {
                   ChartRes.Series.RemoveAt(2);
                }
 

                // 3D график
                ChartRes.ChartAreas[0].Area3DStyle.Enable3D = checkBoxChart3D.Checked;
                if (comboBoxChartView.Text == null) comboBoxChartView.Text = "Bar";
                SeriesChartType ChartType = SeriesChartType.Bar;
                switch (comboBoxChartView.Text)
                {
                    case "Бар":
                        ChartType = SeriesChartType.Bar;
                        break;
                    case "Колонки":
                        ChartType = SeriesChartType.Column;
                        break;
                    case "Сплайн":
                        ChartType = SeriesChartType.Spline;
                        break;
                    case "Площадь":
                        ChartType = SeriesChartType.Area;
                        break;
                    case "Круг":
                        ChartType = SeriesChartType.Pie;
                        break;
                }
                for (int i = 0; i < ChartRes.Series.Count; i++)
                {
                    ChartRes.Series[i].ChartType = ChartType;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Случилась незапланированная ошибка в расчетах. Измените параметры.\nСистемное сообщение. " + ex.Message, "Построение графика", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

 

 

Добавить комментарий

Loading