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

 

Введение


Данное приложение было разработано для подсчета статистики фигурного катания. В качестве примера были выбраны статистики олимпийских игр 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)Установить галочку на кнопке «3D»Гистограмма представит данные в 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 (Турин)")

{= "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;

}

}



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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ