Часть 1
106
{
// создаем поток для чтения
sr = new System.IO.StreamReader(
Application.StartupPath + "\\usd.dat");
// cоздаем массив
d = new double[10];
// читаем данные из файла
int i = 0;
string t = sr.ReadLine();
while ((t != null) && (i < d.Length))
{
// записываем считанное число в массив
d[i++] = Convert.ToDouble(t);
t = sr.ReadLine();
}
// закрываем поток
sr.Close();
// задаем функцию обработки события Paint
this.Paint +=
new PaintEventHandler(drawDiagram);
}
// обработка исключений:
// - файл данных не найден
catch (System.IO.FileNotFoundException ex)
{
MessageBox.Show( ex.Message + "\n" +
"("+ ex.GetType().ToString() +")",
"График",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
// - другие исключения
catch (Exception ex)
Примеры и задачи
107
{
MessageBox.Show(ex.ToString(), "",
MessageBoxButtons.OK,MessageBoxIcon.Stop);
}
}
private void Form1_SizeChanged(object sender,
EventArgs e)
{
this.Refresh();
}
}
}
Круговая диаграмма
В окне программы Круговая диаграмма (рис. 1.24) отобража-
ются результаты социологического опроса.
Рис. 1.24. Окно программы Круговая диаграмма
Часть 1
108
Исходные данные (вопрос, варианты ответа и количество отве-
тов) загружаются из текстового файла. Программа (листинг 1.22)
обрабатывает данные (вычисляет долю каждой категории в об-
щей сумме) и строит диаграмму.
Листинг 1.22. Модуль формы программы Круговая диаграмма
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// заголовок диаграммы
string header;
// количество элементов данных
int N = 0;
double[] dat; // ряд данных
double[] p; // доля категории в общей сумме
// подписи данных
private string[] title;
public Form1()
{
Примеры и задачи
109
InitializeComponent();
try
{
System.IO.StreamReader sr;
sr = new System.IO.StreamReader(
Application.StartupPath + "\\date.dat",
System.Text.Encoding.GetEncoding(1251));
// считываем заголовок диаграммы
header = sr.ReadLine();
// считываем данные о количестве записей
// и инициализируем массивы
N = Convert.ToInt16(sr.ReadLine());
dat = new double[N];
p = new double[N];
title = new string[N];
// читаем данные
int i = 0;
string st;
st = sr.ReadLine();
while ((st != null) && (i < N))
{
title[i] = st;
st = sr.ReadLine();
dat[i++] = Convert.ToDouble(st);
//i++;
st = sr.ReadLine();
}
Do'stlaringiz bilan baham: |