Проектирование информационно-аналитической системы для повышения безопасности полетов (на примере компании "Аэрофлот")

Главные понятия учета и анализа повторяемости авиационных инцидентов. Стратегии технической эксплуатации воздушных судов. Разработка информационно-аналитической системы для отчетности предпосылок к летному происшествию. Разработка схемы хранилища данных.

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

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

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

Рисунок 13 - Расчет порогового значения 1 уровня

Если для самолета было получено такое значение, то это не означает, что его необходимо списывать. Авиаперевозчику просто важно быть более внимательным, ведь данный самолет подвержен риску повторной поломки, что может повлечь за собой тяжелые последствия. В данном случае нормированный коэффициент не применяется, т.е. он равняется 1.

Для определения критичного показателя (порогового значения 2 уровня), нормированный коэффициент рассчитывается иначе. Необходимо результат умножить на нормированный коэффициент, который получился исходя из общего возраста парка самолетов, соотнесенный к среднему значению. Для этого была выбрана медиана набора возрастов воздушных судов, которая впоследствии была разделена на средний возраст самолетов рассматриваемого парка.

Нормированный коэффициент в данном случае равняется 2,045455. Итоговый результат составляет - 0,237343 (рисунок 13), что свидетельствует о необходимости списания данного самолета.

Рисунок 14 - Расчет порогового значения 2 уровня

3.4 Пример работы с информационно-аналитической системой

Для непосредственной работы с OLAP - кубом, можно воспользоваться как стандартной программой Microsoft Excel, так и компонентами «DevExpress» для бизнес-анализа.

В рамках данной работы был выбран второй вариант и спроектировано приложения в рамках среды «Microsoft Visual Studio». Стартовое окно приложения выглядит следующим образом (рисунок 15).

Рисунок 15 - Стартовое окно приложения

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

Рисунок 16 - Сводная таблица, пример 1

Второй пример анализа, который можно сделать при помощи данного средства, зависимость частоты инцидентов от причин и фаз полета самолета (рисунок 17).

Рисунок 17 - Сводная таблица, пример 2

Основным преимуществом данного метода является возможность множественного выбора и комбинирования показателей. Последним примером является вывод информации по количеству авиационных инцидентов по различным производителям самолетов и причинам (рисунок 18).

Рисунок 18 - Сводная таблица, пример 3

Для наглядности и удобства работы с данным алгоритмом было разработано Windows-приложение на объектно-ориентированном языке программирования C# с использованием инструментов WinForms. Для работы с разработанным алгоритмом необходимо перейти на вкладку «Анализ безопасности». Открывается следующая форма (рисунок 19).

Рисунок 19 - Вкладка "Анализ безопасности"

Окно имеет три области, которые представлены таблицами и другими различными элементами. Слева вверху находится блок общей статистики (выводится информация о общем количестве инцидентов, средний возраст самолетов и т.п.), а также два элемента работы с данными. Если поставить галочку на поле «Причина инцидента», то появляется возможность выбора той группы причины, по которой необходимо получить информацию (рисунок 20).

Рисунок 20 - Выбор причины инцидента

Чуть правее расположен ползунок, где можно выставить значение среднего возраста самолета. После выбора необходимых параметров, при нажатии на кнопку «Применить» таблица, расположенная ниже, заполняется значениями, которые удовлетворяют заданным критериям (рисунок 21).

Рисунок 21 - Общая информация по инцидентам

Помимо информации о номере и модели самолета, здесь выводится информация о плановых и фактических показателях наработки по часам и количеству посадок, проценты выполнения данных показателей, а также возраст и количество инцидентов. Если нажать на кнопку «Подробнее», то автоматически заполнятся ряд показателей и таблица в правом верхнем углу (рисунок 22). Показатели будут рассчитаны для выделенного номера самолета в левой таблице и с учётом только тех инцидентов, которые произошли из-за технических сбоев. Также будет представлено значение коэффициента эксплуатации (Кэ).

Рисунок 22 - Данные по выбранному самолету

При нажатии на кнопку «Рассчитать показатель для всех рейсов», заполняется нижняя таблица значениями коэффициента эксплуатации (Кэ) для каждого рейса с учетом указаний пороговых значений (рисунок 23).

Рисунок 23 - Расчет показателя «К» для всех рейсов

Как можно заметить, не один самолет не достиг порогового значения 2 уровня. Однако самолет под номером «89032» является «лидером» в данном рейтинге, причем его показатель больше преследователя примерно на 0,04, что в рамках данного анализа является большим значением. Если более подробно рассмотреть показатели для данного самолета, то необходимо выбрать его номер и вернутся во вторую таблицу (рисунок 24).

Рисунок 24 - Данные по выбранному рейсу №2

Здесь можно заметить, что несмотря на сравнимо малые показатели наработки как по часам, так по посадкам, количество поломок существенное. Причем, необходимо также сказать о том, что поломки разного рода. Все это может говорить о том, что вероятно самолет изначально был произведен с конструктивно-производственными недостатками, и дальнейшая эксплуатация его небезопасна для пассажиров. Справедливости ради стоит отметить, что за 4 года процент наработки очень мал, а значит авиаперевозчик не эксплуатирует данный самолет по максимуму.

На рисунке 25 показан пример воздушного судна (рейс «0963»), у которого показатели наработки более 95%, т.е. самолет почти отработал свой ресурс. Однако, за свои 9 лет эксплуатации он побывал всего в 4 инцидентах, при этом технические неисправности, которые случались с ним, не являются столь опасными и критичными (например, индикация задымления и появление трещин). Поэтому данное воздушное судно пригодно для эксплуатации сверх назначенного ресурса.

В общем рейтинге самолетов рейс «0963» далек от лидеров, показатель эксплуатации даже не достиг 1 порогового уровня - все это говорит о возможности дальше эксплуатировать воздушное судно.

Рисунок 25. Данные по выбранному рейсу №3

3.5 Автоматизированный анализ рисков, связанных с технической эксплуатацией воздушного судна

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

Составим запрос, который отобразит количество инцидентов, произошедших по техническим причинам для разных производителей самолетов (рисунок 26).

Результатом данного запроса будет следующая таблица (рисунок 27).

Рисунок 27. Результат запроса на вывод причин инцидентов по каждому производителю самолетов

Зеленым цветом выделены минимальные показатели, оранжевым и красным - максимальные. Можно заметить, что абсолютно для всех производителей самолетов проблемным местом являются двигатели. В целом количество инцидентов, случающихся с самолетами «Airbus S.A.S.» заметно больше чем с другими, однако это связано с использованием «Аэрофлотом» большего количества самолетов данного производителя.

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

Рисунок 29. Результат запроса на вывод количества причин инцидентов по каждой фазе полетов

Наконец, возможно произвести расчет для конкретного самолета и для любой группы причин вероятности возникновения инцидента во время различных фаз полета. Например, возьмем самолет с номером «89014» и группу причин «технический фактор».

Рисунок 31. Результат запроса на вывод количества инцидентов по фазам полета

Можно заметить, что во время взлета для выбранного рейса произошло более 28% всех инцидентов, случившимся с ним за все время проверки. Такого рода информация позволит авиакомпании выработать специальную методику для конкретного воздушного судна, которая позволит экипажу быть более подготовленным к нештатным ситуациям во время определенной стадии полета.

Отображение таких таблиц также реализовано в интерфейсе разработанной информационно-аналитической системы (рисунок 32).

Рисунок 32. Отображение общей статистики по авиационным инцидентам

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

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

Выбрав нужную модель самолета (рисунок 33), можно получить сведения о наиболее слабых его элементах. Например, для самолетов модели «A320-214» наиболее проблемным элементом являются двигатели, которые довольно часто выходят из строя. Данная информация в дальнейшем поможет компании обратить большее внимание именно на этот элемент воздушного судна.

Рисунок 33. Анализ рисков по моделям самолетов

Аналогичный анализ можно провести для различных производителей самолетов. В качестве примера, на рисунке 34 представлен пример вывода информации о причинах инцидентов для всех самолетов производителя «Sukhoi Civil Aircraft Company». Как и в предыдущем примере, основная причина авиационных инцидентов - неполадки в работе двигателей.

Рисунок 34. Анализ рисков по производителям самолетов

Заключение

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

Для достижения поставленной цели были выполнены следующие задачи:

1. Рассмотрены технические документы, регламентирующие порядок расследования авиационных инцидентов и стратегии эксплуатации воздушных судов.

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

3. Разработана функциональная модель процесса учета и анализа повторяемости авиационных инцидентов.

4. Разработано хранилище данных для сбора информации об авиационных инцидентах.

5. Разработаны алгоритмы учета и анализа повторяемости авиационных инцидентов.

6. Проведен автоматизированный анализ рисков, связанных с технической эксплуатацией воздушных судов сверх назначенного ресурса.

7. Разработана информационно-аналитическая система для проведения анализа воздушных судов.

Для анализа были исследованы актуальные данные компании «Аэрофлот», при этом разработанная информационно-аналитическая система применима для других компаний-авиаперевозчиков. В дальнейшем возможно добавление больше числа аналитических отчетов, получаемых в ходе работы с системой.

Список использованных источников

1. Постановление Правительства Российской Федерации от 2 декабря 1999 года N 1329 «Об утверждении Правил расследования авиационных происшествий и авиационных инцидентов с государственными воздушными судами в Российской Федерации» (с изменениями на 30 января 2008 года).

2. Диго С.М. Базы данных. Проектирование и создание: Учебно-методический комплекс. - М.: Изд. центр ЕАОИ. 2008. - 171 с.

3. Сардаров Я.Б. Информационная система автоматизированного учёта и обработки показателей безопасности полётов // Достижения и инновации в современной науке - 2016. - №4. - С. 20-28.

4. Чинючин Ю.М., Полякова И.Ф. Основы технической эксплуатации и ремонта авиационной техники часть I - Московский Государственный Технический Университет Гражданской Авиации, 2004. - 81с.

Аннотация

Главная проблема, затрагиваемая в данной работе, заключается в повышении безопасности полетов путем разработки алгоритма оценивания пригодности воздушных судов к перевозкам пассажиров.

В рамках работы рассмотрены существующие стратегии эксплуатации воздушных судов, проанализированы основные документы, регламентирующие правила расследования авиационных инцидентов, проведен анализ существующих информационно-аналитических систем для учета и анализа авиационных инцидентов, разработана функциональная модель процесса учета и анализа повторяемости авиационных инцидентов с использованием методологии IDEF0, созданы хранилище данных для учета авиационных инцидентов в «MS SQL Sever 2012» и Windows - приложение, которое позволяет производить анализ их повторяемости. Данное приложение были реализовано в среде «Microsoft Visual Studio 2012» на объектно-ориентированном языке программирования C# с использованием технологии многомерной обработки и анализа данных - OLAP. Помимо этого, был проведен автоматизированный анализ рисков, связанных с технической эксплуатацией воздушных судов сверх назначенного ресурса. С использованием методологии ARIS были разработаны алгоритмы учета и анализа повторяемости авиационных инцидентов, на основании которых принимается решение о продолжении эксплуатации воздушного судна сверх назначенного ресурса.

Данная работа проводилась на примере компании «Аэрофлот», все используемые данные для анализа были найдены в открытых источниках, в том числе сети «Интернет».

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

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

Приложение

Код программы.

namespace WindowsFormsApplication1

{

public partial class Form_Start : Form

{

DataSet DataSetAir1 = new DataSet();

DataSet DataSetAir2 = new DataSet();

DataSet DataSetAir3 = new DataSet();

DataSet DataSetAir4 = new DataSet();

DataSet DataSetAir5 = new DataSet();

DataSet DataSetAir6 = new DataSet();

DataSet DataSetAir7 = new DataSet();

DataSet DataSetAir8 = new DataSet();

DataSet DataSetAir9 = new DataSet();

DataSet DataSetAir10= new DataSet();

SqlConnection connecttosql = new SqlConnection("Data Source = АРТЁМ-HP; Initial Catalog = AirIncidents; Integrated Security = TRUE;");

SqlDataAdapter DataAdapterAir1 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir2 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir3 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir4 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir5 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir6 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir7 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir8 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir9 = new SqlDataAdapter();

SqlDataAdapter DataAdapterAir10 = new SqlDataAdapter();

BindingSource tblNamesBSAir1 = new BindingSource();

BindingSource tblNamesBSAir2 = new BindingSource();

BindingSource tblNamesBSAir3 = new BindingSource();

BindingSource tblNamesBSAir4 = new BindingSource();

BindingSource tblNamesBSAir5 = new BindingSource();

BindingSource tblNamesBSAir6 = new BindingSource();

BindingSource tblNamesBSAir7 = new BindingSource();

BindingSource tblNamesBSAir8 = new BindingSource();

BindingSource tblNamesBSAir9 = new BindingSource();

BindingSource tblNamesBSAir10 = new BindingSource();

public Form_Start()

{

InitializeComponent();

}

private void Form_Start_Load(object sender, EventArgs e)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу "airIncidentsDataSet3.AircraftManufacturer". При необходимости она может быть перемещена или удалена.

this.aircraftManufacturerTableAdapter.Fill(this.airIncidentsDataSet3.AircraftManufacturer);

// TODO: данная строка кода позволяет загрузить данные в таблицу "airIncidentsDataSet.GroupCauses". При необходимости она может быть перемещена или удалена.

this.groupCausesTableAdapter.Fill(this.airIncidentsDataSet.GroupCauses);

}

private void button3_Click(object sender, EventArgs e)

{

connecttosql.Close();

connecttosql.Open();

string sqlAir1 = "select count(ID_Event) from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where NameGroup = 'Технический фактор'";

string sqlAir2 = "select avg (2017-YearManufacture) from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where NameGroup = 'Технический фактор'";

SqlCommand cc = new SqlCommand(sqlAir1, connecttosql);

SqlCommand cc1 = new SqlCommand(sqlAir2, connecttosql);

string n = cc.ExecuteScalar().ToString();

string n1 = cc1.ExecuteScalar().ToString();

labelAirCount1.Text = n;

labelAirCount2.Text = n1;

connecttosql.Close();

if (checkBox8.Checked == false)

{

connecttosql.Open();

DataAdapterAir1.SelectCommand = new SqlCommand("select RTRIM(RegNumber) as 'Номер',NameModel as 'Модель',2017-YearManufacture as 'Возраст, лет', count (ID_Event) as 'Кол-во инцидентов',PlannedResourceTime as 'План, час', FactResourceTime as 'Факт, час', FactResourceTime*1000/PlannedResourceTime*0.1 as '% наработки по час.',PlannedResourceLanding as 'План, кол-во посадок', FactResourceLanding as 'Факт, кол-во посадок', FactResourceLanding*1000/PlannedResourceLanding*0.1 as '% наработки по посадкам' from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where 2017-YearManufacture>= '" + trackBarAir.Value + "' group by NameModel, RegNumber, YearManufacture, PlannedResourceTime, PlannedResourceLanding, FactResourceTime, FactResourceLanding order by count (ID_Event) desc", connecttosql);

DataSetAir1.Clear();

DataAdapterAir1.Fill(DataSetAir1);

dgAir2Table.DataSource = DataSetAir1.Tables[0];

tblNamesBSAir1.DataSource = DataSetAir1.Tables[0];

connecttosql.Close();

}

else

{

connecttosql.Open();

DataAdapterAir1.SelectCommand = new SqlCommand("select RTRIM(RegNumber) as 'Номер',NameModel as 'Модель',2017-YearManufacture as 'Возраст, лет', count (ID_Event) as 'Кол-во инцидентов',PlannedResourceTime as 'План, час', FactResourceTime as 'Факт, час', FactResourceTime*1000/PlannedResourceTime*0.1 as '% наработки по час.',PlannedResourceLanding as 'План, кол-во посадок', FactResourceLanding as 'Факт, кол-во посадок', FactResourceLanding*1000/PlannedResourceLanding*0.1 as '% наработки по посадкам' from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where NameGroup = '" + comboBox1.Text + "' and 2017-YearManufacture>= '" + trackBarAir.Value + "' group by NameModel, RegNumber, YearManufacture, PlannedResourceTime, PlannedResourceLanding, FactResourceTime, FactResourceLanding order by count (ID_Event) desc", connecttosql);

DataSetAir1.Clear();

DataAdapterAir1.Fill(DataSetAir1);

dgAir2Table.DataSource = DataSetAir1.Tables[0];

tblNamesBSAir1.DataSource = DataSetAir1.Tables[0];

connecttosql.Close();

}

}

private void trackBar1_Scroll(object sender, EventArgs e)

{

connecttosql.Open();

string sqlAir1 = "select 2017-avg(YearManufacture)from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft where ID_Event>0";

SqlCommand cc1 = new SqlCommand(sqlAir1, connecttosql);

string n1 = cc1.ExecuteScalar().ToString();

labelYearAir.Text = Convert.ToString(trackBarAir.Value);

this.trackBarAir.Maximum = int.Parse(n1);

this.trackBarAir.Minimum = 1;

connecttosql.Close();

}

private void button4_Click(object sender, EventArgs e)

{try{

labelRegNumberAir.Text = dgAir2Table[0, dgAir2Table.CurrentRow.Index].Value.ToString();

connecttosql.Open();

DataAdapterAir2.SelectCommand = new SqlCommand("select NameCause as 'Причина', count(ID_Event) as 'Кол-во' from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where RegNumber='" + labelRegNumberAir.Text + "' and NameGroup = 'Технический фактор' group by NameCause order by count (ID_Event) desc", connecttosql);

DataSetAir2.Clear();

DataAdapterAir2.Fill(DataSetAir2);

dgAir3Table.DataSource = DataSetAir2.Tables[0];

tblNamesBSAir2.DataSource = DataSetAir2.Tables[0];

connecttosql.Close();

connecttosql.Open();

string sql = "select FactResourceTime*1000/PlannedResourceTime*0.1 from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft where RegNumber='" + labelRegNumberAir.Text + "' and ID_Event>0";

string sql1 = "select FactResourceLanding*1000/PlannedResourceLanding*0.1 from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft where RegNumber='" + labelRegNumberAir.Text + "' and ID_Event>0";

string sql2 = "select count(ID_Event) from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where NameGroup = 'Технический фактор' and RegNumber='" + labelRegNumberAir.Text + "' ";

string sql3 = "select 2017-YearManufacture as 'Возраст, лет' from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft where RegNumber='" + labelRegNumberAir.Text + "' ";

string sql4 = "select (((2017-YearManufacture)/8.0)*(count(ID_Event))/62)/(CASE WHEN ((FactResourceTime*10/PlannedResourceTime*0.1) >= (FactResourceLanding*10/PlannedResourceLanding*0.1)) Then (FactResourceTime*10/PlannedResourceTime*0.1)WHEN ((FactResourceLanding*10/PlannedResourceLanding*0.1) >= (FactResourceTime*10/PlannedResourceTime*0.1)) Then (FactResourceLanding*10/PlannedResourceLanding*0.1) END) from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where NameGroup = 'Технический фактор' and RegNumber='" + labelRegNumberAir.Text + "' group by PlannedResourceTime, PlannedResourceLanding, FactResourceTime, FactResourceLanding, YearManufacture";

SqlCommand cc = new SqlCommand(sql, connecttosql);

SqlCommand cc1 = new SqlCommand(sql1, connecttosql);

SqlCommand cc2 = new SqlCommand(sql2, connecttosql);

SqlCommand cc3 = new SqlCommand(sql3, connecttosql);

SqlCommand cc4 = new SqlCommand(sql4, connecttosql);

var n = cc.ExecuteScalar().ToString();

var n1 = cc1.ExecuteScalar().ToString();

var n2 = cc2.ExecuteScalar().ToString();

var n3 = cc3.ExecuteScalar().ToString();

var n4 = cc4.ExecuteScalar().ToString();

label22.Text = n;

label23.Text = n1;

label24.Text = n2;

label25.Text = n3;

label27.Text = n4;

connecttosql.Close();

}

catch { }

}

private void button5_Click(object sender, EventArgs e)

{

connecttosql.Open();

DataAdapterAir3.SelectCommand = new SqlCommand("select RegNumber as 'Номер',(((2017-YearManufacture)/8.0)*(count(ID_Event))/62)/(CASE WHEN ((FactResourceTime*10/PlannedResourceTime*0.1) >= (FactResourceLanding*10/PlannedResourceLanding*0.1)) Then (FactResourceTime*10/PlannedResourceTime*0.1)WHEN ((FactResourceLanding*10/PlannedResourceLanding*0.1) >= (FactResourceTime*10/PlannedResourceTime*0.1)) Then (FactResourceLanding*10/PlannedResourceLanding*0.1)END)as 'Показатель K', case when (((2017-YearManufacture)/8.0)*(count(ID_Event))/62)/(CASE WHEN ((FactResourceTime*10/PlannedResourceTime*0.1) >= (FactResourceLanding*10/PlannedResourceLanding*0.1)) Then (FactResourceTime*10/PlannedResourceTime*0.1)WHEN ((FactResourceLanding*10/PlannedResourceLanding*0.1) >= (FactResourceTime*10/PlannedResourceTime*0.1)) Then (FactResourceLanding*10/PlannedResourceLanding*0.1)END)>0.237343 then 'Пороговое значение 2 уровня!'when (((2017-YearManufacture)/8.0)*(count(ID_Event))/62)/(CASE WHEN ((FactResourceTime*10/PlannedResourceTime*0.1) >= (FactResourceLanding*10/PlannedResourceLanding*0.1)) Then (FactResourceTime*10/PlannedResourceTime*0.1)WHEN ((FactResourceLanding*10/PlannedResourceLanding*0.1) >= (FactResourceTime*10/PlannedResourceTime*0.1)) Then (FactResourceLanding*10/PlannedResourceLanding*0.1) END)<0.116034 then '' when (((2017-YearManufacture)/8.0)*(count(ID_Event))/62)/(CASE WHEN ((FactResourceTime*10/PlannedResourceTime*0.1) >= (FactResourceLanding*10/PlannedResourceLanding*0.1)) Then (FactResourceTime*10/PlannedResourceTime*0.1)WHEN ((FactResourceLanding*10/PlannedResourceLanding*0.1) >= (FactResourceTime*10/PlannedResourceTime*0.1)) Then (FactResourceLanding*10/PlannedResourceLanding*0.1) END)>0.116034 then 'Пороговое значение 1 уровня!' end as 'Справка' from AircraftModel inner join AirIncident on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group where NameGroup = 'Технический фактор' group by PlannedResourceTime, PlannedResourceLanding, FactResourceTime, FactResourceLanding, YearManufacture, RegNumber order by (((2017-YearManufacture)/8.0)*(count(ID_Event))/62)/(CASE WHEN ((FactResourceTime*10/PlannedResourceTime*0.1) >= (FactResourceLanding*10/PlannedResourceLanding*0.1)) Then (FactResourceTime*10/PlannedResourceTime*0.1)WHEN ((FactResourceLanding*10/PlannedResourceLanding*0.1) >= (FactResourceTime*10/PlannedResourceTime*0.1)) Then (FactResourceLanding*10/PlannedResourceLanding*0.1) END) desc", connecttosql);

DataSetAir3.Clear();

DataAdapterAir3.Fill(DataSetAir3);

dg4.DataSource = DataSetAir3.Tables[0];

tblNamesBSAir3.DataSource = DataSetAir3.Tables[0];

connecttosql.Close();

}

private void button1_Click(object sender, EventArgs e)

{

connecttosql.Open();

DataAdapterAir4.SelectCommand = new SqlCommand("select NamePhaseOfFlight as 'Фаза полета', count (ID_Event) as 'Кол-во инцидентов',count (ID_Event)*1000/97*0.1 as '%' from AirIncident inner join PhaseOfFlight on AirIncident.ID_PhaseOfFlight = PhaseOfFlight.ID_PhaseOfFlight inner join DateOfIncident on AirIncident.ID_Date = DateOfIncident.ID_Date where Year_D >= '" + numericUpDown1.Value + "' and Year_D <= '" + numericUpDown2.Value + "' group by NamePhaseOfFlight order by count (ID_Event) desc", connecttosql);

DataSetAir4.Clear();

DataAdapterAir4.Fill(DataSetAir4);

dgAir5Table.DataSource = DataSetAir4.Tables[0];

tblNamesBSAir4.DataSource = DataSetAir4.Tables[0];

DataAdapterAir5.SelectCommand = new SqlCommand("select NameGroup as 'Причины', count (ID_Event) as 'Кол-во инцидентов',count (ID_Event)*1000/97*0.1 as '%' from AirIncident inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group inner join DateOfIncident on AirIncident.ID_Date = DateOfIncident.ID_Date where Year_D >= '" + numericUpDown1.Value + "' and Year_D <= '" + numericUpDown2.Value + "' group by NameGroup order by count (ID_Event) desc", connecttosql);

DataSetAir5.Clear();

DataAdapterAir5.Fill(DataSetAir5);

dg6.DataSource = DataSetAir5.Tables[0];

tblNamesBSAir5.DataSource = DataSetAir5.Tables[0];

DataAdapterAir6.SelectCommand = new SqlCommand("select NameManufacturer as 'Производитель самолетов', count (ID_Event) as 'Кол-во инцидентов',count (ID_Event)*1000/97*0.1 as '%' from AirIncident inner join AircraftModel on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join AircraftManufacturer on AircraftModel.ID_Manufacturer = AircraftManufacturer.ID_Manufacturer inner join DateOfIncident on AirIncident.ID_Date = DateOfIncident.ID_Date where Year_D >= '" + numericUpDown1.Value + "' and Year_D <= '" + numericUpDown2.Value + "' group by NameManufacturer order by count (ID_Event) desc", connecttosql);

DataSetAir6.Clear();

DataAdapterAir6.Fill(DataSetAir6);

dg7.DataSource = DataSetAir6.Tables[0];

tblNamesBSAir6.DataSource = DataSetAir6.Tables[0];

DataAdapterAir7.SelectCommand = new SqlCommand("select NameModel as 'Модель самолета', count (ID_Event) as 'Кол-во инцидентов',count (ID_Event)*1000/97*0.1 as '%' from AirIncident inner join AircraftModel on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join TypeEngine on AircraftModel.ID_Engine = TypeEngine.ID_Engine inner join DateOfIncident on AirIncident.ID_Date = DateOfIncident.ID_Date where Year_D >= '" + numericUpDown1.Value + "' and Year_D <= '" + numericUpDown2.Value + "' group by NameModel order by count (ID_Event) desc", connecttosql);

DataSetAir7.Clear();

DataAdapterAir7.Fill(DataSetAir7);

dg8.DataSource = DataSetAir7.Tables[0];

tblNamesBSAir7.DataSource = DataSetAir7.Tables[0];

DataAdapterAir10.SelectCommand = new SqlCommand("select NameEngine as 'Двигатель', count (ID_Event) as 'Кол-во инцидентов',count (ID_Event)*1000/97*0.1 as '%' from AirIncident inner join AircraftModel on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join TypeEngine on AircraftModel.ID_Engine = TypeEngine.ID_Engine inner join DateOfIncident on AirIncident.ID_Date = DateOfIncident.ID_Date where Year_D >= '" + numericUpDown1.Value + "' and Year_D <= '" + numericUpDown2.Value + "' group by NameEngine order by count (ID_Event) desc", connecttosql);

DataSetAir10.Clear();

DataAdapterAir10.Fill(DataSetAir10);

dg11.DataSource = DataSetAir10.Tables[0];

tblNamesBSAir10.DataSource = DataSetAir10.Tables[0];

connecttosql.Close();

}

private void button2_Click(object sender, EventArgs e)

{

label14.Text = dg7[0, dg7.CurrentRow.Index].Value.ToString();

connecttosql.Open();

DataAdapterAir8.SelectCommand = new SqlCommand("select top(5) NameCause as 'Причины', count (ID_Event) as 'Кол-во инцидентов' from AirIncident inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join AircraftModel on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join AircraftManufacturer on AircraftModel.ID_Manufacturer = AircraftManufacturer.ID_Manufacturer inner join DateOfIncident on AirIncident.ID_Date = DateOfIncident.ID_Date where NameManufacturer = '" + label14.Text + "' and Year_D >= '" + numericUpDown1.Value + "' and Year_D <= '" + numericUpDown2.Value + "' group by NameCause order by count (ID_Event) desc", connecttosql);

DataSetAir8.Clear();

DataAdapterAir8.Fill(DataSetAir8);

dg9.DataSource = DataSetAir8.Tables[0];

tblNamesBSAir8.DataSource = DataSetAir8.Tables[0];

connecttosql.Close();

}

private void button6_Click(object sender, EventArgs e)

{

label28.Text = dg8[0, dg8.CurrentRow.Index].Value.ToString();

connecttosql.Open();

DataAdapterAir9.SelectCommand = new SqlCommand("select top(5) NameCause as 'Причины', count (ID_Event) as 'Кол-во инцидентов' from AirIncident inner join CausesOfIncidents on AirIncident.ID_Cause = CausesOfIncidents.ID_Cause inner join GroupCauses on CausesOfIncidents.ID_Group = GroupCauses.ID_Group inner join AircraftModel on AirIncident.ID_Aircraft = AircraftModel.ID_Aircraft inner join TypeEngine on AircraftModel.ID_Engine = TypeEngine.ID_Engine inner join DateOfIncident on AirIncident.ID_Date = DateOfIncident.ID_Date where NameGroup = 'Технический фактор' and NameModel = '" + label28.Text + "' and Year_D >= '" + numericUpDown1.Value + "' and Year_D <= '" + numericUpDown2.Value + "' group by NameCause order by count (ID_Event) desc", connecttosql);

DataSetAir9.Clear();

DataAdapterAir9.Fill(DataSetAir9);

dg10.DataSource = DataSetAir9.Tables[0];

tblNamesBSAir9.DataSource = DataSetAir9.Tables[0];

connecttosql.Close();

}

private void splitter1_SplitterMoved(object sender, SplitterEventArgs e)

{

}

}

}

Формы Windows-приложения

Алгоритм анализа повторяемости авиационных инцидентов.

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

...

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

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