Статистика фигурного катания

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    466,94 Кб
  • Опубликовано:
    2012-08-25
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Статистика фигурного катания

Введение

Данное приложение было разработано для подсчета статистики фигурного катания. В качестве примера были выбраны статистики олимпийских игр 2006 в Турине и 2010 в Ванкувере.

Постановка задачи

Необходимо разработать приложение для Windows, реализующее расчет и визуализацию статистики фигурного катания, с использованием интегрированной среды разработки Microsoft Visual Studio C#.

Подход к решению

В этом проекте использовались реальные расчетные данные статистики олимпиад и вычислялись они следующим образом: общий результат является сумой баллов короткой и произвольной программ. В свою очередь, короткая и произвольная программы получаются в результате суммирования технических результатов и оценок компонентов.

Технический результат - это результат, полученный судьями за техничное исполнение (точность, синхронность, качество движений и т.д.) всех элементов программы и получается в результате суммирования всех средних оценок судей за каждый элемент.

Оценка компонентов - это оценка, полученная судьями за каждый элемент программы с точки зрения артистичности, ритмики, музыкальности исполнения и т.д. Она вычисляется путем суммирования всех средних оценок судей за каждый элемент.

Теоретическая часть

В графическом представлении расчеты выглядят следующим образом:















Рис. 1

Для реализации интерфейса пользователя предлагается следующее решение:

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

Форма «Form1»

Рис. 2

В главном меню приложения расположены:

Выплывающий список выбора олимпийских игр (1)

Выплывающий список выбора разновидности катания (2)

Ссылка открытия окна графической визуализации (3)

Таблица статистики (4)

Форма «Form2»

Рис. 3

На данной форме расположены:

Таблица исходных данных(1).

Форма «Form3» (2D)

Рис. 4

На данной форме расположены:

Кнопка перевода графики в 3-х мерное измерение

Элемент графической визуализации

Форма «Form3» (3D)

Рис. 5

На данной форме расположены: см. «Форма «Form3» (3D)»

Диаграмма классов

Рис. 6

Экспериментальная часть

Тестирование

Таблица 1 - «Запуск приложения»

Процедура проверки

Ожидаемый результат

Запустить исполняемый файл проекта Курсовая работа (Фигурное катание).exe

Приложение запускается, открывается окно главного меню (Рисунок №1)


Таблица 2 - «Просмотр общих сведений статистики»

Процедура проверки

Ожидаемый результат

Выбрать олимпийские игры и тип катания из выплывающих списков

Таблица заполняется данными статистики, ссылка «Графическое представление данных» разблокируется (П1.1)

Таблица 3 - «Просмотр подробных сведений статистики»

Процедура проверки

Ожидаемый результат

Выполнить действия таблицы №2

Таблица заполняется данными статистики, ссылка «Графическое представление данных» разблокируется (П1.1)

Дважды кликнуть на любого фигуриста из таблицы

Открывается окно с подробной информацией о каждом выступлении фигуриста (П1.2)


Таблица 4 - «Просмотр графического представления статистики в 2D»

Процедура проверки

Ожидаемый результат

Выполнить действия таблицы №2

Таблица заполняется данными статистики, ссылка «Графическое представление данных» разблокируется (П1.1)

Кликнуть на ссылку «Графическое представление данных»

Открывается окно с построенной гистограммой (П1.3)


Таблица 5 - «Просмотр графического представления статистики в 3D»

Процедура проверки

Ожидаемый результат

Выполнить действия таблицы №3

Открывается окно с построенной гистограммой (П1.3)

Гистограмма представит данные в 3-х мерной плоскости (П1.4)


Протокол тестирования

Процедура проверки

Ожидаемый результат

Запуск приложения

Выполнено. Замечаний нет

Просмотр общих сведений статистики

Выполнено. Замечаний нет

Просмотр подробных сведений статистики

Выполнено. Замечаний нет

Просмотр графического представления статистики в 2D

Выполнено. Замечаний нет

Просмотр графического представления статистики в 3D

Выполнено. Замечаний нет


Руководство пользователя

Запуск приложения

Запустите файл «Курсовая работа (Фигурное катание).exe» в директории приложения.

Просмотр общих сведений статистики

Выберите олимпийские игры и вид катания из выплывающих списков

Просмотр подробных сведений статистики

Выведите общие сведения статистики

Дважды кликните на какого либо фигуриста в таблице

Просмотр графического представления статистики в 2D

Выведите общие сведения статистики

Нажмите ссылку «Графическое представление данных»

Просмотр графического представления статистики в 3D

Выведите данные в графическом представлении

Установите галочку на кнопке «3D»

Выход из приложения

Нажмите кнопку «X» в верхнем правом углу главного меню

Примеры работы программы приведены в приложении №1.

Заключение

В результате выполнения данного курсового проекта были реализованы следующие пункты:

Разработано программное обеспечение, реализующее расчет и визуализацию фигурного катания

Разработана программная документация

Проведена отладка и тестирование приложения

По результатам испытаний было выявлено:

Ограничение на работу приложения в системах с отсутствием установленной программной платформы Microsoft .NET Framework 4

Неудобная работа на мониторах с низким разрешением.

Таким образом, разработанная программа полностью соответствует требованиям, изложенным в задании на курсовую работу.

Приложение

программа листинг приложение статистика

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.IO;System.Linq;System.Text;System.Windows.Forms;Курсовая_работа__Фигурное_катание_

{

public partial class Form1 : Form

{Form1()

{();

}Lenght = 90;void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{(comboBox2.Text != "")

{.Enabled = true;.Rows.Clear();cl = new Calculation();<List<string>> Data;(comboBox1.Text == "Олимпийские игры 2006 (Турин)")

{= cl.ReadData("2006", comboBox2.Text);

}

{= cl.ReadData("2010", comboBox2.Text);

}[] a = new string[8];(int i = 0; i < Data[1].Count; i++)

{[0] = Data[0][i];[1] = Data[1][i];[2] = Data[2][i];[3] = Data[3][i];[4] = Data[4][i];[5] = Data[5][i];[6] = Data[6][i];[7] = Data[7][i];.Rows.Add(a);

}

}

}void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

{(comboBox1.Text != "")

{.Enabled = true;.Rows.Clear();cl = new Calculation();<List<string>> Data;(comboBox1.Text == "Олимпийские игры 2006 (Турин)")

{= cl.ReadData("2006", comboBox2.Text);

}

{= cl.ReadData("2010", comboBox2.Text);

}[] a = new string[8]; (int i = 0; i < Data[1].Count; i++)

{[0] = Data[0][i];[1] = Data[1][i];[2] = Data[2][i];[3] = Data[3][i];[4] = Data[4][i];[5] = Data[5][i];[6] = Data[6][i];[7] = Data[7][i];.Rows.Add(a);

}.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);

}

}void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)

{f = new Form2();Year;

if (comboBox1.Text == "Олимпийские игры 2006 (Турин)")

}

{= "2010";

}sr = File.OpenText("Олимпиада " + Year + ".txt");s = "";(s != this.dataGridView1.CurrentRow.Cells[2].Value.ToString())

{= sr.ReadLine();

}[] row = { "Имя", s };.dataGridView1.Rows.Add(row);[0] = "Тип катания";[1] = comboBox2.Text;.dataGridView1.Rows.Add(row);[0] = "Страна";[1] = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();.dataGridView1.Rows.Add(row);[0] = "Занятое место";[1] = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();.dataGridView1.Rows.Add(row);

row[0] = "Занятое место в короткой программе";

row[1] = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();.dataGridView1.Rows.Add(row);

row[0] = "Занятое место в произвольной программе";

row[1] = this.dataGridView1.CurrentRow.Cells[5].Value.ToString();.dataGridView1.Rows.Add(row);[0] = "Общие баллы";[1] = this.dataGridView1.CurrentRow.Cells[7].Value.ToString();.dataGridView1.Rows.Add(row);[0] = "Баллы короткой программы";[1] = this.dataGridView1.CurrentRow.Cells[4].Value.ToString();.dataGridView1.Rows.Add(row);[0] = "Баллы произвольной программы";[1] = this.dataGridView1.CurrentRow.Cells[6].Value.ToString();.dataGridView1.Rows.Add(row);.ReadLine();.ReadLine();.ReadLine();

s = sr.ReadLine();[0] = "Короткая программа, технический результат";

row[1] = "";.dataGridView1.Rows.Add(row);

int i = 1;(s != "Оценка компонентов")

{[0] = "Средний балл элемента №"+i+"";

row[1] = s;.dataGridView1.Rows.Add(row);

s = sr.ReadLine();++;

}[0] = "Короткая программа, оценки компонентов";

row[1] = "";.dataGridView1.Rows.Add(row);= sr.ReadLine();= 1;(s != "Произвольная программа")

{[0] = "Средний балл элемента №" + i + "";

row[1] = s;.dataGridView1.Rows.Add(row);= sr.ReadLine();++;

}= sr.ReadLine();

s = sr.ReadLine();[0] = "Произвольная программа, технический результат";

row[1] = "";.dataGridView1.Rows.Add(row);

i = 1;(s != "Оценка компонентов")

{[0] = "Средний балл элемента №" + i + "";

row[1] = s;.dataGridView1.Rows.Add(row);

s = sr.ReadLine();++;

}[0] = "Произвольная программа, оценки компонентов";

row[1] = "";.dataGridView1.Rows.Add(row);= sr.ReadLine();= 1;((s.IndexOf("***") == -1) && (s.IndexOf("///") == -1) &&

(s.IndexOf("|||") == -1) && (s.IndexOf("\\") == -1) && (s != "11"))

{[0] = "Средний балл элемента №" + i + "";

row[1] = s;.dataGridView1.Rows.Add(row);++;= sr.ReadLine();(s == null)

{= "11";

}

}.ShowDialog();

}void timer1_Tick(object sender, EventArgs e)

{

}void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{f = new Form3();(int i = 0; i < 8; i++)

{

f.chart1.Series["Общий результат"]. Points.AddXY(this.dataGridView1.Rows[i].Cells[2].Value.ToString(), .ToDouble(this.dataGridView1.Rows[i].Cells[7].Value.ToString()));

f.chart1.Series["Короткая программа"]. Points.AddXY(this.dataGridView1.Rows[i].Cells[2].Value.ToString(),.ToDouble(this.dataGridView1.Rows[i].Cells[4].Value.ToString()));.chart1.Series["Произвольная программа"]. Points.AddXY(this.dataGridView1.Rows[i].Cells[2].Value.ToString(),.ToDouble(this.dataGridView1.Rows[i].Cells[6].Value.ToString()));

}.ShowDialog();

}

}Calculation

{List<List<string>> ReadData(string YearOlympic, string Type)

{sr = File.OpenText("Олимпиада " + YearOlympic + ".txt");s1 = "";<List<string>> Data = new List<List<string>>();.Add(new List<string>());.Add(new List<string>());.Add(new List<string>());.Add(new List<string>());.Add(new List<string>());.Add(new List<string>());.Add(new List<string>());.Add(new List<string>());(s1 != null)

{= sr.ReadLine();(s1 != null)

{(s1 == Type)

{= sr.ReadLine();[2].Add(s1);= sr.ReadLine();[1].Add(s1);

s1 = sr.ReadLine();

s1 = sr.ReadLine();= sr.ReadLine();EstimatesComponents = 0, TechnicalResult = 0, ShortProgram, FreeSkating;(s1 != "Оценка компонентов")

{= CalculationData(TechnicalResult, Convert.ToDouble(s1));= sr.ReadLine();

}= Math.Round(TechnicalResult, 2);= sr.ReadLine();(s1 != "Произвольная программа")

{= CalculationData(EstimatesComponents, Convert.ToDouble(s1));= sr.ReadLine();

}= Math.Round(EstimatesComponents, 2);= TechnicalResult + EstimatesComponents;= Math.Round(ShortProgram, 2);= 0; EstimatesComponents = 0;= sr.ReadLine();= sr.ReadLine();(s1 != "Оценка компонентов")

{= CalculationData (TechnicalResult, Convert.ToDouble (s1));= sr.ReadLine();

}= Math.Round(TechnicalResult, 2);= sr.ReadLine();

while ((s1.IndexOf("***") == -1) && (s1.IndexOf("///") == -1) &&

(s1.IndexOf("|||") == -1) && (s1.IndexOf("\\") == -1) && (s1 != "11"))

{= CalculationData(EstimatesComponents, Convert.ToDouble(s1));= sr.ReadLine();(s1 == null)

{= "11";

}

}= Math.Round(EstimatesComponents, 2);= TechnicalResult + EstimatesComponents;= Math.Round(FreeSkating, 2);[4].Add(ShortProgram.ToString());[6].Add(FreeSkating.ToString());Total = ShortProgram + FreeSkating;[7].Add(Total.ToString());

}

{((s1.IndexOf("***") == -1) && (s1.IndexOf("///") == -1) &&

(s1.IndexOf("|||") == -1) && (s1.IndexOf("\\") == -1) && (s1 != "11"))

{= sr.ReadLine();(s1 == null)

{= "11";

}

}

}

}.Close();<List<double>> point = Points(Data);= Ranks(point, Data);Data;

}double CalculationData(double Summ, double Assessment)

{Summ + Assessment;

}List<List<double>> Points(List<List<string>> Data)

{<List<double>> point = new List<List<double>>();.Add(new List<double>());.Add(new List<double>());.Add(new List<double>());(int i = 0; i < Data[1].Count; i++)

{[0].Add(Convert.ToDouble(Data[4][i]));[1].Add(Convert.ToDouble(Data[6][i]));

point[2].Add(Convert.ToDouble(Data[7][i]));

}point;

}List<List<string>> Ranks(List<List<double>> point, List<List<string>> Data)

{<List<double>> rank = new List<List<double>>();.Add(new List<double>());.Add(new List<double>());.Add(new List<double>());.Add(new List<double>());[2].Sort();[2].Reverse();(int i = 0; i < Data[1].Count; i++)

{[0].Add((Search(point[2], Convert.ToDouble(Data[7][i])) + 1).ToString());

}[0].Sort();[0].Reverse();(int i = 0; i < Data[1].Count; i++)

{[3].Add((Search(point[0], Convert.ToDouble(Data[4][i])) + 1).ToString());

}[1].Sort();[1].Reverse();(int i = 0; i < Data[1].Count; i++)

{[5].Add((Search(point[1], Convert.ToDouble(Data[6][i])) + 1). ToString());

}Data;

}int Search(List<double> mass, double element)

{(int i = 0; i < mass.Count; i++)

{(mass[i] == element)

{i;

}

}0;

}

}


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!