Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 10

Разработать приложение, позволяющее представлять информацию из текстовых файлов в виде круговых диаграмм

21.09.2015, 11:49. Показов 1790. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: разработать приложение, позволяющее представлять информацию из текстовых файлов, в каждой строке которых записываются данные в формате <имя>=<числовое значение> в виде круговых диаграмм.

Класс объекта для представления информации Chart.

Как считать из файла строку - мне понятно, но возникает вопрос, а куда ее считывать? В массив или в переменную?
И каким образом мне текст отделить от числового значения?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.09.2015, 11:49
Ответы с готовыми решениями:

Разработать приложение, позволяющее создавать окна для представления в древообразном виде файловой структуры
Здравствуйте! Разработать многооконное MDI приложение, позволяющее создавать окна для представления в древообразном виде файловой...

Разработать приложение сервера и приложение клиента, позволяющее общаться между клиентами в режиме online
Привет. Нужна прога на с/с++ Разработать приложение сервера и приложение клиента, позволяющее общаться между клиентами в режиме...

Приложение, позволяющее просматривать информацию о процессе
Нужно создать приложение, позволяющее просматривать информацию о процессе, к системным каталогам Windows. Дополнительные WinAPI функции:...

8
Заблокирован
21.09.2015, 12:02
ma99ot,
1. Использовать Chart обязательно?
2. Покажите пример текстового файла.
0
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 10
21.09.2015, 12:23  [ТС]
1. Использование Chart обязательно.
2. Пример:
Иванов=18
Петров=25
Сидоров=13
Краснов=52


Как я понял задание, сектора на круговой диаграмме - пропорциональны числовым значениям. И подписаны фамилиями.

Ev_Hyper, приложу текстовый файл
Вложения
Тип файла: txt primer.txt (44 байт, 11 просмотров)
0
Заблокирован
21.09.2015, 16:01
Лучший ответ Сообщение было отмечено ma99ot как решение

Решение

ma99ot, один из вариантов:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    public partial class Form1 : Form
    {
        HashSet<Data> values { get; set; }
        public Form1()
        {
            InitializeComponent();
            values = DataWorker.ReadFromFile("primer.txt", Encoding.Default);
            BuildPieChart();
        }
 
        void BuildPieChart()
        {
            chart1.Series.Clear();
            chart1.Series.Add("Pie");
            chart1.Series["Pie"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
            chart1.Series["Pie"].Points.DataBindXY(values.Select(x => x.Name).ToArray(),
                values.Select(x => x.Value).ToArray());
        }
    }
 
 
    public class DataWorker
    {
        public static HashSet<Data> ReadFromFile(string path, Encoding encoding)
        {
            return new HashSet<Data>(
            System.IO.File.ReadLines(path, encoding)
                .Select(x =>
                {
                    var tmp = x.Split('=');
                    return new Data
                    {
                        Name = tmp[0],
                        Value = int.Parse(tmp[1])
                    };
                }));
        }
    }
 
    public class Data
    {
        public string Name { get; set; }
        public int Value { get; set; }
    }
Естественно, никакого контроля за данными не делал.
Можно сразу в словарь читать:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            BuildPieChart2();
        }
        void BuildPieChart2()
        {
            chart1.Series.Clear();
            chart1.Series.Add("Pie");
            chart1.Series["Pie"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
            var dct = System.IO.File.ReadLines("primer.txt", Encoding.Default)
                .Select(x =>
                {
                    var tmp = x.Split('=');
                    return new 
                    {
                        Name = tmp[0],
                        Value = int.Parse(tmp[1])
                    };
                })
                .ToDictionary(x => x.Name, y => y.Value);
            chart1.Series["Pie"].Points.DataBindXY(dct.Keys, dct.Values);
        }
    }
Результат, конечно, будет тот-же.
1
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 10
21.09.2015, 16:38  [ТС]
Ev_Hyper, я извиняюсь за незнание, но пара вопросов у меня есть. Так ли я понимаю: метод split делит строку на подстроки при по знаку '='? И тогда tmp [0] - это подстрока в которой записано все до =, а tmp [1] то что после = соответственно?
0
Заблокирован
21.09.2015, 16:40
ma99ot, все верно
1
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 10
23.09.2015, 21:46  [ТС]
Ev_Hyper, подскажите в чем проблема, понять не могу
Миниатюры
Разработать приложение, позволяющее представлять информацию из текстовых файлов в виде круговых диаграмм  
0
3 / 3 / 4
Регистрация: 03.02.2013
Сообщений: 37
23.09.2015, 22:26
Вы удалили метод вызываемый определенный событием, обычно это клик мыши. Откройте окно Form.Desinger.cs это проще всего сделать перейдя по специальной ссылке "Перейти к коду" которая находится в окне сообщающим вам об ошибке. После того как вы перейдете в окно Form.Desinger.cs нажимайте сочетание клавиш Cntr+z или во вкладке edit команду Undo, после каждого нажатия на Cntr+z или команды Undo во вкладке edit проверяйте окно Form.cs так как оно в скором времени должно будет восстановится.Если же вы закрыли приложения то команда Undo будет вам не доступна. В этом случай перейдите по той же ссылке "Перейти к коду" и удалите строку:
C#
1
this.chart1.Click += new System.EventHandler(this.chart1_Click);
1
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 10
24.09.2015, 00:39  [ТС]
Все работает, теперь хотелось бы что бы в легенде так и остались фамилии, а на диаграмме значение писалось.

C#
1
2
    chart1.Series["Pie"].Points.DataBindXY(values.Select(x => x.Name).ToArray(),
                values.Select(x => x.Value).ToArray());
как я понимаю дело в этой строке, но как изменить непонятно

Добавлено через 39 минут
нашел сам, в функции где создаем диаграмму нужно добавить строку
C#
1
chart1.Series["Pie"].IsValueShownAsLabel = true;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2015, 00:39
Помогаю со студенческими работами здесь

Приложение, позволяющее вносить и хранить информацию об автомобилях
Разработать приложение позволяющее вносить и хранить информацию о автомобилях (марку, цвет, владельца, телефон владельца, дату...

Построение круговых диаграмм
Добрый вечер. Для трехканальной СМО с отказами построить круговые диаграммы: 1. Для каждого канала доли отработанных и отклоненных заявок...

Постороение круговых диаграмм
Необходимо написать программу на &quot;Постороение круговых диаграмм&quot; но это нужно написать без встроенных классов. Также должно быть...

Создание диаграмм (столбчатых и круговых)
Всем привет, начинающий в программировании, школьник конечно-же, информатичка задала мне такое задание, на Delphi написать программу для...

Несколько круговых диаграмм на 1 поле
Добрый день, можно ли как то построить сразу несколько круговых диаграмм на 1 поле диаграммы. Не получить внешний или нижний круг. А именно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru