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

Форма "Form1", "Form2", "Form3" (2D) и "Form3" (3D), диаграмма классов. Тестирование, его протокол, руководство пользователя. Просмотр общих и подробных сведений статистики, графического представления в 2D и 3D, выход из приложения, листинг программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.08.2012
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

Данное приложение было разработано для подсчета статистики фигурного катания. В качестве примера были выбраны статистики олимпийских игр 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;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Курсовая_работа__Фигурное_катание_

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

double Lenght = 90;

private void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{

if (comboBox2.Text != "")

{

linkLabel1.Enabled = true;

dataGridView1.Rows.Clear();

Calculation cl = new Calculation();

List<List<string>> Data;

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

{

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

}

else

{

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

}

string[] a = new string[8];

for (int i = 0; i < Data[1].Count; i++)

{

a[0] = Data[0][i];

a[1] = Data[1][i];

a[2] = Data[2][i];

a[3] = Data[3][i];

a[4] = Data[4][i];

a[5] = Data[5][i];

a[6] = Data[6][i];

a[7] = Data[7][i];

dataGridView1.Rows.Add(a);

}

}

}

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

{

if (comboBox1.Text != "")

{

linkLabel1.Enabled = true;

dataGridView1.Rows.Clear();

Calculation cl = new Calculation();

List<List<string>> Data;

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

{

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

}

else

{

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

}

string[] a = new string[8];

for (int i = 0; i < Data[1].Count; i++)

{

a[0] = Data[0][i];

a[1] = Data[1][i];

a[2] = Data[2][i];

a[3] = Data[3][i];

a[4] = Data[4][i];

a[5] = Data[5][i];

a[6] = Data[6][i];

a[7] = Data[7][i];

dataGridView1.Rows.Add(a);

}

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

}

}

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)

{

Form2 f = new Form2();

string Year;

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

{

Year = "2006";

}

else

{

Year = "2010";

}

StreamReader sr = File.OpenText("Олимпиада " + Year + ".txt");

string s = "";

while (s != this.dataGridView1.CurrentRow.Cells[2].Value.ToString())

{

s = sr.ReadLine();

}

string[] row = { "Имя", s };

f.dataGridView1.Rows.Add(row);

row[0] = "Тип катания";

row[1] = comboBox2.Text;

f.dataGridView1.Rows.Add(row);

row[0] = "Страна";

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

f.dataGridView1.Rows.Add(row);

row[0] = "Занятое место";

row[1] = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();

f.dataGridView1.Rows.Add(row);

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

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

f.dataGridView1.Rows.Add(row);

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

row[1] = this.dataGridView1.CurrentRow.Cells[5].Value.ToString();

f.dataGridView1.Rows.Add(row);

row[0] = "Общие баллы";

row[1] = this.dataGridView1.CurrentRow.Cells[7].Value.ToString();

f.dataGridView1.Rows.Add(row);

row[0] = "Баллы короткой программы";

row[1] = this.dataGridView1.CurrentRow.Cells[4].Value.ToString();

f.dataGridView1.Rows.Add(row);

row[0] = "Баллы произвольной программы";

row[1] = this.dataGridView1.CurrentRow.Cells[6].Value.ToString();

f.dataGridView1.Rows.Add(row);

sr.ReadLine();

sr.ReadLine();

sr.ReadLine();

s = sr.ReadLine();

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

row[1] = "";

f.dataGridView1.Rows.Add(row);

int i = 1;

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

{

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

row[1] = s;

f.dataGridView1.Rows.Add(row);

s = sr.ReadLine();

i++;

}

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

row[1] = "";

f.dataGridView1.Rows.Add(row);

s = sr.ReadLine();

i = 1;

while (s != "Произвольная программа")

{

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

row[1] = s;

f.dataGridView1.Rows.Add(row);

s = sr.ReadLine();

i++;

}

s = sr.ReadLine();

s = sr.ReadLine();

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

row[1] = "";

f.dataGridView1.Rows.Add(row);

i = 1;

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

{

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

row[1] = s;

f.dataGridView1.Rows.Add(row);

s = sr.ReadLine();

i++;

}

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

row[1] = "";

f.dataGridView1.Rows.Add(row);

s = sr.ReadLine();

i = 1;

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

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

{

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

row[1] = s;

f.dataGridView1.Rows.Add(row);

i++;

s = sr.ReadLine();

if (s == null)

{

s = "11";

}

}

f.ShowDialog();

}

private void timer1_Tick(object sender, EventArgs e)

{

}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

Form3 f = new Form3();

for (int i = 0; i < 8; i++)

{

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

Convert.ToDouble(this.dataGridView1.Rows[i].Cells[7].Value.ToString()));

f.chart1.Series["Короткая программа"]. Points.AddXY(this.dataGridView1.Rows[i].Cells[2].Value.ToString(),

Convert.ToDouble(this.dataGridView1.Rows[i].Cells[4].Value.ToString()));

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

Convert.ToDouble(this.dataGridView1.Rows[i].Cells[6].Value.ToString()));

}

f.ShowDialog();

}

}

class Calculation

{

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

{

StreamReader sr = File.OpenText("Олимпиада " + YearOlympic + ".txt");

string s1 = "";

List<List<string>> Data = new List<List<string>>();

Data.Add(new List<string>());

Data.Add(new List<string>());

Data.Add(new List<string>());

Data.Add(new List<string>());

Data.Add(new List<string>());

Data.Add(new List<string>());

Data.Add(new List<string>());

Data.Add(new List<string>());

while (s1 != null)

{

s1 = sr.ReadLine();

if (s1 != null)

{

if (s1 == Type)

{

s1 = sr.ReadLine();

Data[2].Add(s1);

s1 = sr.ReadLine();

Data[1].Add(s1);

s1 = sr.ReadLine();

s1 = sr.ReadLine();

s1 = sr.ReadLine();

double EstimatesComponents = 0, TechnicalResult = 0, ShortProgram, FreeSkating;

while (s1 != "Оценка компонентов")

{

TechnicalResult = CalculationData(TechnicalResult, Convert.ToDouble(s1));

s1 = sr.ReadLine();

}

TechnicalResult = Math.Round(TechnicalResult, 2);

s1 = sr.ReadLine();

while (s1 != "Произвольная программа")

{

EstimatesComponents = CalculationData(EstimatesComponents, Convert.ToDouble(s1));

s1 = sr.ReadLine();

}

EstimatesComponents = Math.Round(EstimatesComponents, 2);

ShortProgram = TechnicalResult + EstimatesComponents;

ShortProgram = Math.Round(ShortProgram, 2);

TechnicalResult = 0; EstimatesComponents = 0;

s1 = sr.ReadLine();

s1 = sr.ReadLine();

while (s1 != "Оценка компонентов")

{

TechnicalResult = CalculationData (TechnicalResult, Convert.ToDouble (s1));

s1 = sr.ReadLine();

}

TechnicalResult = Math.Round(TechnicalResult, 2);

s1 = sr.ReadLine();

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

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

{

EstimatesComponents = CalculationData(EstimatesComponents, Convert.ToDouble(s1));

s1 = sr.ReadLine();

if (s1 == null)

{

s1 = "11";

}

}

EstimatesComponents = Math.Round(EstimatesComponents, 2);

FreeSkating = TechnicalResult + EstimatesComponents;

FreeSkating = Math.Round(FreeSkating, 2);

Data[4].Add(ShortProgram.ToString());

Data[6].Add(FreeSkating.ToString());

double Total = ShortProgram + FreeSkating;

Data[7].Add(Total.ToString());

}

else

{

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

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

{

s1 = sr.ReadLine();

if (s1 == null)

{

s1 = "11";

}

}

}

}

}

sr.Close();

List<List<double>> point = Points(Data);

Data = Ranks(point, Data);

return Data;

}

private double CalculationData(double Summ, double Assessment)

{

return Summ + Assessment;

}

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

{

List<List<double>> point = new List<List<double>>();

point.Add(new List<double>());

point.Add(new List<double>());

point.Add(new List<double>());

for (int i = 0; i < Data[1].Count; i++)

{

point[0].Add(Convert.ToDouble(Data[4][i]));

point[1].Add(Convert.ToDouble(Data[6][i]));

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

}

return point;

}

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

{

List<List<double>> rank = new List<List<double>>();

rank.Add(new List<double>());

rank.Add(new List<double>());

rank.Add(new List<double>());

rank.Add(new List<double>());

point[2].Sort();

point[2].Reverse();

for (int i = 0; i < Data[1].Count; i++)

{

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

}

point[0].Sort();

point[0].Reverse();

for (int i = 0; i < Data[1].Count; i++)

{

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

}

point[1].Sort();

point[1].Reverse();

for (int i = 0; i < Data[1].Count; i++)

{

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

}

return Data;

}

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

{

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

{

if (mass[i] == element)

{

return i;

}

}

return 0;

}

}

Размещено на Allbest.ru


Подобные документы

  • Анализ предметной области. Диаграмма классов. Проектирование программного продукта "Часы". Тестирование и отладка, руководство программиста. Описание работы приложения. Руководство оператора, модель жизненного цикла. Файл Times.cs, Arrow.cs, Form1.cs.

    курсовая работа [1,7 M], добавлен 20.04.2015

  • Блок-схема модулей программы. Главная цель бизнеса ООО "Регион". Протокол тестирования продукта. Руководство пользователя программы. Расчет цены предложения и минимального количества копий тиражирования. Образец отчета "Книга продаж", листинг программы.

    дипломная работа [1,0 M], добавлен 18.09.2014

  • Разработка веб-приложений на основе Servlet API. Основные способы передачи данных от пользователя. Краткая справка по необходимым программным компонентам. Составление программы интернет-чата на основе протокола HTTP. Диаграмма классов веб-приложения.

    лабораторная работа [1,1 M], добавлен 01.05.2014

  • Создание тестовой программы на определение доминирующего полушария мозга у человека с применением наиболее распространенного языка Visual Basic for Applications. Выбор технических и программных средств. Интерфейс программы, ее тестирование и листинг.

    курсовая работа [222,5 K], добавлен 08.01.2015

  • Структурная схема получения гороскопа по дате рождения. Листинг исходных кодов программы и руководство пользователя. Ввод данных с помощью объекта класса QDateEdit. Разработка пользовательского интерфейса. Выбор стратегии тестирования и отладка программы.

    курсовая работа [1,0 M], добавлен 31.05.2015

  • Диаграмма консольного приложения табулирования функции. Отличие консольного приложения и приложения и GUI. Диаграмма классов для JFrameи JPanel. Создание простейшего фрейма в Java. Компоновка элементов интерфейса внутри фрейма. Цикл обработки событий.

    лекция [693,8 K], добавлен 01.05.2014

  • Обнаружение аномальных данных в одномерных выборках. Метод D-статистики и Титьена-Мура, графический метод диаграмма "ящик с усами". Описание алгоритмов верификации данных. Руководство для программиста. Анализ данных на основе критерия D-статистики.

    курсовая работа [938,4 K], добавлен 24.06.2013

  • Словесное описание алгоритма программы. Открытие файла процедурой Rewrite, его проверка на наличие ошибок при открытии. Особенности построения диаграммы. Листинг программы, ее тестирование и отладка. Выполнение процедуры CloseFile при закрытии файла.

    контрольная работа [17,3 K], добавлен 11.06.2010

  • Клиент-серверная архитектура проектируемой программы по проверке знаний студентов, структура базы данных. Разработка ее программно-интерфейсной реализации в среде Delphi. Установка и запуск приложения, информация для пользователя, листинг программы.

    дипломная работа [2,1 M], добавлен 20.06.2011

  • Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).

    курсовая работа [901,8 K], добавлен 11.02.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.