86228

Проектирование и разработка автоматизированной ИС Аэропорт

Дипломная

Информатика, кибернетика и программирование

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

Русский

2015-04-04

11.53 MB

16 чел.

Проектирование

информационной системы

«Аэропорт»

Пояснительная записка

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 6

1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 8

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

1.1.1 Входные данные для проектирования информационной системы 9

1.1.2 Выходные данные 9

1.1.3 Требования, предъявляемые к разрабатываемой программе 10

1.1.4 Требования к пользовательскому интерфейсу 10

1.2 Сравнение с существующими аналогами 11

1.3 Технология разработки информационной системы 13

1.4 Обоснование выбора среды программирования 15

1.4.1 СУБД MySQL 15

1.4.2 Язык программирования C# 17

1.5 Структура программы 18

1.5.1 Разработка схемы данных 18

1.5.2 Структура интерфейса 23

1.6 Отладка и тестирование программы 36

1.7 Общая характеристика программы 37

1.7.1 Инструкция пользователю 37

2 ЭКОНОМИКА И ОРГАНИЗАЦИЯ ПРОИЗВОДСТВА 47

2.1 Расчет трудоемкости разработки программы 48

2.2 Расчет численности работающих 50

2.3 Расчет фонда заработной платы 52

2.4 Расчет сметной стоимости программы 54

2.4.1 Расчет затрат на материалы 55

2.4.2 Затраты на специальное оборудование 55


2.4.3 Расчет прямой заработной платы 58

2.4.4 Расчет отчислений на социальные нужды 60

2.4.5 Расчет накладных расходов 60

2.4.6 Расчет себестоимости программы 61

2.4.7 Расчет прибыли в зависимости от уровня рентабельности и сметной стоимости 61

2.4.8 Расчет отпускной цены программы 62

3 МЕРОПРИЯТИЯ ПО ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ УСЛОВИЙ ТРУДА, ЭКОБИОЗАЩИТЕ И ПРОТИВОПОЖАРНОЙ ТЕХНИКЕ 63

3.1 Электрическая безопасность 63

3.2 Противопожарная безопасность 65

ЗАКЛЮЧЕНИЕ 67

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 68

ПРИЛОЖЕНИЕ А Таблицы с исходными данными 69

ПРИЛОЖЕНИЕ Б Выходные формы 72

ПРИЛОЖЕНИЕ В Листинги программ 79


ВВЕДЕНИЕ

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

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

Для управления информацией хранимой в базе данных (БД), а также для ее защиты, организации структуры БД и обеспечения выдачи информации по требованиям существуют системы управления базами данных (СУБД). СУБД - это совокупность программных и лингвистических средств общего и специального назначения, обеспечивающих управление созданием и использованием баз данных. В данной работе применяется СУБД  MySQL, которая и обеспечивает сохранность и защиту информации в базе данных.

Целью выпускной работы является проектирование и разработка автоматизированной ИС. Для достижения поставленной задачи в представляемой работе разрабатывается структура базы данных и клиентские приложения для информационной системы "Аэропорт".

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

  1. обеспечить безопаснность доступа к данным и разграничение по правам доступа;
  2. для получения пассажирами информации создать отдельное приложение, через которое невозможно получить доступ к измененнию информации в ИС;
  3. обеспечить возможность хранения информации о пассажирах, самолетах, рейсах, пунктах прибытия и назначения, сотрудниках, отделах и бригадах;
  4. обеспечить возможность формирования рассписания;
  5. разработать удобный интерфейс для комплектования отделов и бригад;
  6. реализовать возможность продажи билетов (печать билета);

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

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

1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

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

Комплекс программ должен состоять из следующих частей:

  1. приложение для сотрудников аэропорта;
  2. приложение для установки на информационные терминалы аэропорта для информирования пассажиров.

Информационная система должна обеспечивать следующий функционал:

  1. для сотрудников:
  2. создание и редактирование расписания рейсов;
  3. обеспечение продажи и возврата билетов;
  4. предоставление информации о пассажирах и сотрудниках (для службы безопасности аэропорта);
  5. поиск пассажиров по паспортным данным;
  6. расчет приблизительной дальности рейса;
  7. учет сотрудников;
  8. предоставление доступа сотрудников к ИС.
  9. для пассажиров:
  10. предоставление информации о рейсах;
  11. информация о наличии билетов на конкретный рейс;
  12. поиск рейса по заданным характеристикам.


1.1.1 Входные данные для проектирования информационной системы

Входными данными является следующая информация, поступающая от сотрудников аэропорта:

  1. пункты прибытия и назначения, их координаты и страна;
  2. номер, производитель, наименование и другие характеристики самолетов;
  3. информация о рейсах (дата вылета и прилета, номер рейса, номер самолета, пункты прибытия и отправления);
  4. данные о проданных билетах;
  5. информация о сотрудниках, отделах и бригадах;

1.1.2 Выходные данные

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

  1. рейсах;
  2. билетах;
  3. пассажирах и сотрудниках;
  4. бригадах и отделах;
  5. пунктах прибытия и назначения;
  6. должностях;
  7. самолетах;
  8. пользователях.


1.1.3 Требования, предъявляемые к разрабатываемой программе

Программа должна быть с простым, понятным и приятным интерфейсом, при этом обеспечивать стабильную и быструю работу пользователя с ИС.

Требования к программному обеспечению:

  1. ОС Windows Vista или более поздняя версия;
  2.  MySQL Server 5.6;
  3.  .NET Framework 4.5;
  4.  MicrosoftOfficeWord 2007 или более поздняя версия.

Требования к аппаратному обеспечению:

  1. процессор с частотой 1,2 ГГц;
  2. ОЗУ 512 Мб;
  3. 50 Мб свободного места на жестком диске;
  4. принтер;
  5. клавиатура, мышь.

1.1.4 Требования к пользовательскому интерфейсу

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


1.2 Сравнение с существующими аналогами

Таблица 1 - Сравнение с существующими аналогами

Наименование ИС, сайта

Достоинства

Недостатки

ИС "Аэропорт"

Невысокая стоимость итогового продукта;

Возможность использовать в различных аэропортах;

Кроссплатформенность (возможность переноса на другие ОС);

Возможность модернизации;

Низкие требования к аппаратному обеспечению;

Проста и понятна в эксплуатации;

Эргономичный интерфейс взаимодействия с пользователем.

Необходимость расширения функционала данной версии.

Интернет-сайт "Пулково аэропорт"

Многофункциональность;

Кроссбраузерность;

Возможность модернизации;

Минимальные требования к аппаратному обеспечению.

Право на использование имеет только одно предприятие;

Высокая стоимость разработки.

Комплексная автоматизированная информационная система «АЭРОПОРТ»

Многофункциональность;

Возможность модернизации.

Высокая стоимость готового продукта;

Модернизация производится только фирмой изготовителем.

В ходе сравнения с другими информационными системами были получены следующие результаты: ввиду того, что данная ИС является учебной версией, необходима ее модернизации для дальнейшего применения. Принцип построения клиентского приложения на языке высокого уровня C# позволяет модифицировать его в короткие сроки с минимальными усилиями. Это достигается за счет модульности приложения и позволяет переписывать именно сам модуль, при этом не меняя код во всей программе. Также есть подобные информационные системы на платформе 1С, но у них имеются недостатки, такие как: высокая стоимость самой платформы и ее обслуживания.


1.3 Технология разработки информационной системы

Автоматизированная информационная система (АИС) — совокупность программно-аппаратных средств, предназначенных для автоматизации деятельности, связанной с хранением, передачей и обработкой информации.

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

1) обследование предметная область, определение информационных потребностей пользователя;

На первом этапе проектирования базы данных необходимо определить цель создания базы данных, основные ее функции и информацию, которую она должна содержать;

2) проектирование концептуальной модели;

Каждая таблица должна содержать информацию только на одну тему. Информация в таблице не должна дублироваться. Не должно быть повторений информации между таблицами;

3) выбор СУБД;

4) построение логической модели данных;

5) тестирование - для проверки работоспособности необходимо заполнить таблицы отладочными данными, проверить на них работу запросов. Рекомендуется также создать черновые выходные формы и отчеты и проверить, выдают ли они требуемую информацию. Кроме того необходимо исключить из таблиц все возможные повторения данных;

6) разработка объектов базы данных, включая интерфейс пользователя;

7) написание инструкции пользователю и программисту, сопровождающему данный продукт;

8) опытная эксплуатация (период использования информационной системы у заказчика).

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


1.4 Обоснование выбора среды программирования

1.4.1 СУБД MySQL

СУБД - это совокупность программных и лингвистических средств общего и специального назначения, обеспечивающих управление созданием и использованием баз данных.

Для реализации базы данных для хранения информации была выбрана свободная реляционная СУБД MySQL. Данная СУБД имеет высокую производительность, позволяя использовать ее там, где необходимо производить обработку больших объемов информации и удобный графический интерфейс, позволяющий быстро создать структуру базы данных (Workbench 6.0). Кроме того неоспоримыми преимуществами данной СУБД являются:

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

Ввиду того, что MySQL является реляционной СУБД, необходимо рассмотреть достоинства и недостатки данной модели данных.

Достоинства реляционной модели данных:

  1. простота, понятность и удобство физической реализации на ЭВМ;
  2. высокая стандартизованность. Существует несколько стандартов, определяющих синтаксис и семантику операторов языка SQL; 
  3. полная независимость данных;
  4. при изменении структуры реляционной БД изменения, которые требуются произвести в прикладных программах, минимальны;
  5. для построения запросов и написания прикладных программ нет необходимости знания конкретной организации БД во внешней памяти.

Недостатки реляционной модели:

  1. избыточность данных по ключевым полям;
  2. трудность понимания структуры данных из-за появления большого количества таблиц в результате логического проектирования. Далеко не всегда предметную область можно представить в виде совокупности таблиц;
  3. ограниченность,  предопределенность набора возможных типов данных атрибутов, их атомарность, что затрудняет использование реляционной модели для некоторых современных приложений.

Функции СУБД:

  1. управление данными во внешней памяти - эта функция включает обеспечение необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей;
  2. управление буферами оперативной памяти - СУБД обычно работают с БД значительного размера, который  существенно больше доступного объема оперативной памяти. При обращении к любому элементу данных будет производиться обмен с внешней памятью со скоростью устройства внешней памяти. Практически единственным способом реального увеличения этой скорости является буферизация данных в оперативной памяти;
  3. управление транзакциями.  Транзакция - это последовательность операций над БД, рассматриваемых СУБД как единое целое;
  4. изменения БД, произведенные этой транзакцией, во внешней памяти;
  5. журнализация и восстановление БД после сбоев.  Одним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается способность  СУБД восстанавливать последнее согласованное состояние БД после любого аппаратного или программного сбоя.

1.4.2 Язык программирования C#

Для решения поставленной задачи и обеспечения оптимальных характеристик  программного продукта был выбран язык  высокого уровня С#. Он позволяет быстро и эффективно разрабатывать программное обеспечение с заданными характеристиками за счет того, что имеет возможность расширяться при помощи дополнительных модулей, примером такого внешнего модуля является коннектор к СУБД MySQL, позволяющий соединить приложение на языке высокого с базой данных, хранящейся на MySQLсервере. C# - это объектно-ориентированный язык программирования, который используется для разработки приложений под платформу Microsoft .Net.

1.5 Структура программы

1.5.1 Разработка схемы данных

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

  1. рейсам (номер, пункт вылета и назначения, стоимость билетов эконом и бизнес класса);
  2. расписание (номер записи, номер рейса, номер самолета, время вылета и прилета, состояние рейса);
  3. сотрудникам (номер сотрудника, ФИО, дата рождения и принятия на работу, номер бригады, номер отдела, номер должности, является ли начальником отдела или старшим бригады, состояние сотрудника);
  4. самолетам (номер, производитель и модель, серийный номер, авиакомпания владелец, количество мест бизнес и эконом класса, номер обслуживающей бригады, размер бака, максимальная дальность полета, номер экипажа);
  5. билетам  (номер билета,  номер записи расписания, ФИО, серия и номер паспорта, дата выдачи, дополнительная информация, дата рождения, гражданство, льготный проезд, эконом или бизнес класс);
  6. пунктам прибытия и назначения (наименование аэропорта, страна, город, широта, долгота);
  7. пользователи (номер сотрудника, логин, пароль);
  8. отдел (номер отдела, название, штат);
  9. бригады (номер бригады, номер отела);
  10. должности (номер должности, наименование, категория доступа);

Для хранения этой информации были разработаны следующие структуры таблиц, приведенные ниже.

Таблица 2 - air

Имя поля

Тип поля

Свойства

Примечание

idair

VARCHAR(10)

PK

Номер самолета

proizv

VARCHAR(45)

-

Марка самолета

serialnomber

VARCHAR(45)

-

Серийный номер

kolmestbizn

INT(5)

-

Количество мест безнес- класса

kolmesteco

INT(5)

-

Количество мест эконом класса

idbrig

INT(11)

-

Номер бригады

bak

INT(11)

-

Размер топливного бака

maxdaln

INT(11)

-

Максимальная дальность полета

aviakomp

VARCHAR(45)

-

Авиакомпания перевозчик

idletnbrig

INT(11)

-

Номер экипажа

Таблица 3 - brigady

Имя поля

Тип поля

Свойства

Примечание

idbrigady

INT(11)

PK

Номер бригады

idotdela

INT(11)

PK

Номер отдела

Таблица 4 - dolzn

Имя поля

Тип поля

Свойства

Примечание

iddolzn

INT(11)

PK

Номер должности

name

VARCHAR(45)

-

Наименование

kat

INT(11)

-

Категория

Таблица 5 - otdel

Имя поля

Тип поля

Свойства

Примечание

idotdel

INT(11)

PK

Номер отдела

name

VARCHAR(45)

-

Наименвание

shtat

INT(11)

-

Штат

Таблица 6 - polzov

Имя поля

Тип поля

Свойства

Примечание

idpolz

INT(11)

PK

Номер пользователя

login

TEXT

-

Логин

pass

TEXT

-

Пароль

Таблица 7 - punkt

Имя поля

Тип поля

Свойства

Примечание

name

VARCHAR(45)

PK

Наименование аэропорта

shirota

DECIMAL(10,4)

-

Широта

dolgota

DECIMAL(10,4)

-

Долгота

strana

VARCHAR(45)

-

Страна

city

VARCHAR(45)

-

Город

Таблица 8 - raspis

Имя поля

Тип поля

Свойства

Примечание

idraspis

INT(11)

PK

Номер расписание

idreysa

VARCHAR(25)

-

Номер рейса

idair

VARCHAR(10)

-

Номер самолета

vrvil

DATETIME

-

Время вылета

vrpril

DATETIME

-

Время прибытия

sost

VARCHAR(45)

-

Состояние рейса

Таблица 9 - reysy

Имя поля

Тип поля

Свойства

Примечание

idreysy

VARCHAR(20)

PK

Номер рейса

idpunotp

VARCHAR(45)

-

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

ippunprib

VARCHAR(45)

-

Пункт прибытия

stoim

DECIMAL(10,2)

-

Стоимость билета эконом - класса

stoimbiz

DECIMAL(10,2)

-

Стомиость билета бизнес - класса

Таблица 10 - sotr

Имя поля

Тип поля

Свойства

Примечание

idsotr

INT(11)

PK

Номер сотрудника

fio

VARCHAR(45)

-

ФИО сотрудника

datarozd

DATE

-

Дата рождения

dataprin

DATE

-

Дата приема на работу

idbrig

INT(11)

-

Номер бригады

idotd

INT(11)

-

Номер отдела

iddolzn

INT(11)

-

Номер должности

nachotd

VARCHAR(3)

-

Начальник отдела

nachbrig

VARCHAR(3)

-

Старший в бригаде

sostsotr

VARCHAR(45)

-

Состояние сотрудника


Таблица 11 - tikets

Имя поля

Тип поля

Свойства

Примечание

idtikets

VARCHAR(40)

PK

Номер билета

idreysa

VARCHAR(20)

-

Номер рейса

fio

VARCHAR(70)

-

ФИО пассажира

sernompasp

VARCHAR(25)

-

Серия и номер паспорта

datavidpasp

DATE

-

Дата выдачи паспорта

dopinf

INT(11)

-

Дополнительная информация

datarozd

VARCHAR(100)

-

Дата рождения

grazd

VARCHAR(20)

-

Гражданство

lgot

CHAR(1)

-

Льготный проезд

econbizn

INT(11)

-

Эконом или бизнес класс

На основе описанных таблиц была построена схема базы данных, представленная на рисунке ниже.

Рисунок 1 - Схема базы данных

1.5.2 Структура интерфейса

Рисунок 2 - Структура интерфейса программы

Таблица 12 - назначение функций

Название модуля

Функция

Назначение

io.cs

public void tab(string s, DataGridView dataGridView, DataSet dataSet, string conn)

заполнение таблицы результатами запроса

public void dan(string s, ComboBox c1, string conn)

заполнение combobox результатами запроса

public void lis(string s, ListBox l, string conn)

заполнение listbox результатами запроса

public void danst(string s, TextBox c1, string conn)

заполнение textbox результатами запроса

internal void exapp()

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

internal void comcler

очистка combobox

internal void zapdel(string ss, string conn)

запрос на удаление

internal void zapupd(string ss, string conn)

запрос на обновление

internal void zapins(string ss, string conn)

запрос на добавление

Продолжение таблицы 12

Название модуля

Функция

Назначение

internal string zapsel(string ss, string conn)

запрос на выборку значения (возвращает данные типа строка)

internal void sotrsost(string s, DataGridViewRow row, string conn)

изменение состояния сотрудника

internal bool rows(DataGridViewRow row)

определение является ли строка пустой

internal void printbilet(string nomber,string conn)

печать билета

Авториза

ция.cs

public f1()

инициализация формы

private void button2_Click(object sender, EventArgs e)

выход из программы

private void button1_Click(object sender, EventArgs e)

авторизация пользователя

бригады.cs

public бригады(Form avt,string sotr)

инициализация формы

private void бригады_Load(object sender, EventArgs e)

заполнение таблиц и выпадающих списков данными, и установка размеров формы

private void button1_Click(object sender, EventArgs e)

выход из программы

private void button2_Click(object sender, EventArgs e)

переход на главную форму

private void button5_Click(object sender, EventArgs e)

кнопка очистить результаты поиска

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

отображение сотрудников с конкретной профессией

private void бригады_FormClosed(object sender, FormClosedEventArgs e)

при закрытии формы осуществляет переход на форму авторизации

Продолжение таблицы 12

Название модуля

Функция

Назначение

диспетчер.cs

диспетчер.cs

public диспетчер(Form avt)

инициализаци формы

private void Form4_Load(object sender, EventArgs e)

заполнение начальными данными таблиц и выпадающих списков

private void button1_Click(object sender, EventArgs e)

выход из программы

private void button2_Click(object sender, EventArgs e)

смена пользователя

private void button4_Click(object sender, EventArgs e)

переход на форму где происходит редактирование данных об авиапарке и пунктах прибытия и назначения

private void button6_Click(object sender, EventArgs e)

очистить

private void button3_Click(object sender, EventArgs e)

создание нового рейса

private void button5_Click(object sender, EventArgs e)

изменение рейса

private void button7_Click(object sender, EventArgs e)

удаление рейса

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)

поиск по дате

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

получение данных по выбранному рейсу

private void button8_Click(object sender, EventArgs e)

переход на форму рейсов

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void comboBox7_SelectedIndexChanged(object sender, EventArgs e)

вывод направления полета выбранного рейса

private void диспетчер_FormClosed(object sender, FormClosedEventArgs e)

закрытие формы

private void диспетчер_Activated(object sender, EventArgs e)

обновление данных при активации формы

диспетчер_рейсы.cs

public диспетчер_рейсы(Form avt,Form rasp)

инициализаци формы

private void Form4_Load(object sender, EventArgs e)

заполнение начальными данными таблиц и выпадающих списков

private void button1_Click(object sender, EventArgs e)

закрыть форму

private void button6_Click(object sender, EventArgs e)

очистить

private void button3_Click(object sender, EventArgs e)

создание нового рейса

private void button5_Click(object sender, EventArgs e)

изменение рейса

private void button7_Click(object sender, EventArgs e)

удаление рейса

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

получение данных по выбранному рейсу

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

аэропорты в выбраном пункте отправления

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)

аэропорты в выбраном пункте назначения

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void диспетчер_рейсы_FormClosed(object sender, FormClosedEventArgs e)

активация предыдущей формы при закрытии текущей

диспетчерский отдел2.cs

public диспетчерский_отдел2(Form avt, Form disp1)

инициализация формы

private void button1_Click(object sender, EventArgs e)

завершение работы программы

private void диспетчерский_отдел2_Load(object sender, EventArgs e)

заполнение таблиц и выпадающих списков исходными данными

private void button7_Click(object sender, EventArgs e)

кнопка очистки

private void button10_Click(object sender, EventArgs e)

кнопка очистки

private void button8_Click(object sender, EventArgs e)

создание нового пункта прибытия/отправления

private void button11_Click(object sender, EventArgs e)

обновление данных о пункте прибытия/отправления

private void button14_Click(object sender, EventArgs e)

удаление пункта прибытия/отправления из базы данных

private void button4_Click(object sender, EventArgs e)

добавление нового самолета

private void button6_Click(object sender, EventArgs e)

обновление данных о самолете

private void button13_Click(object sender, EventArgs e)

удаление самолета из базы данных

private void button12_Click(object sender, EventArgs e)

обновление данных на форме

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

выбор из таблицы самолетов

private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)

выбор из таблицы пунктов

private void диспетчерский_отдел2_FormClosed(object sender, FormClosedEventArgs e)

закрытие формы

комплектованиебригад.cs

public комплектованиебригад(Form avt, Form otdkad, string _con)

инициализация формы

private void комплектованиебригад_Load(object sender, EventArgs e)

данная процедура, изменяющая вид формы и заполняющея таблицу с сотрудниками необходимыми данными

privatevoidкомплектованиебригад_FormClosed(objectsender, FormClosedEventArgse)

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

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

заполнение таблицы, в которой содержатся сотрудники конкретного отдела

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

заполнение таблицы, в которой содержатся сотрудники конкретной бригады

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void button1_Click(object sender, EventArgs e)

перевод сотрудника в выбранный отдел и бригаду

private void sotrbrig_CellClick(object sender, DataGridViewCellEventArgs e)

выбор сотрудника из таблицы

private void button2_Click(object sender, EventArgs e)

назначение сотрудника начальником в отделе

private void button6_Click(object sender, EventArgs e)

процедура перевода сотрудника в выбранный отдел

private void button3_Click(object sender, EventArgs e)

назначение сотруднка старшим в бригады

private void button4_Click(object sender, EventArgs e)

изменение статуса сотрудника на - в отпуске

private void button5_Click(object sender, EventArgs e)

изменение состояния сотрудника на - на больничном

private void button7_Click(object sender, EventArgs e)

возвращение на предыдущую форму

private void button8_Click(object sender, EventArgs e)

назначение начальником отдела

private void button9_Click(object sender, EventArgs e)

назначение старшим в бригаде

отдел кадров.cs

public отдел_кадров(Form avt)

инициализация формы

private void button1_Click_1(object sender, EventArgs e)

завершение работы программы

private void button2_Click(object sender, EventArgs e)

переход на форму авторизации

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void Form2_Load(object sender, EventArgs e)

заполнение объектов формы данными

private void button5_Click(object sender, EventArgs e)

переход на форму отделы

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

выбор сотрудника из таблицы

private void button3_Click(object sender, EventArgs e)

добавление сотрудника

private void button7_Click(object sender, EventArgs e)

удаление сотрудника

private void button6_Click(object sender, EventArgs e)

обновление данных о сотруднике

private void button4_Click(object sender, EventArgs e)

очистить

private void button8_Click(object sender, EventArgs e)

переход на форму комплектования бригад и отделов

private void comboBox10_SelectedIndexChanged(object sender, EventArgs e)

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

private void отдел_кадров_Activated(object sender, EventArgs e)

обновление данных формы при ее активации

private void отдел_кадров_FormClosed(object sender, FormClosedEventArgs e)

закрытие формы

отдел продаж.cs

public отдел_продаж(Form avt)

инициализация формы

private void отдел_продаж_Load(object sender, EventArgs e)

заполнение данными таблиц и выпадающих списков

private void button1_Click(object sender, EventArgs e)

выход из программы

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void button2_Click(object sender, EventArgs e)

смена пользователя

private void button4_Click(object sender, EventArgs e)

вывод рейсов на конкретную дату

private void button3_Click_1(object sender, EventArgs e)

покупка билета

private void button5_Click(object sender, EventArgs e)

переход на форму редактирования данных и возврата билета

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)

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

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

расчет кол-ва мест на выбранном рейсе и генерация номера билета

private void отдел_продаж_FormClosed(object sender, FormClosedEventArgs e)

закрытие формы

private void отдел_продаж_Activated(object sender, EventArgs e)

обновление данных формы при ее активации

private void button6_Click(object sender, EventArgs e)

очистить форму

отдел продаж2.cs

public Form1(Form avt, Form pok)

инициализация формы

private void Form1_Load(object sender, EventArgs e)

заполнение исходными данными таблиц и выпадающих списков

private void monthCalendar2_DateSelected(object sender, DateRangeEventArgs e)

выбор даты полета пассажира

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void comboBox4_SelectionChangeCommitted(object sender, EventArgs e)

выбор номера рейса

private void comboBox3_SelectionChangeCommitted(object sender, EventArgs e)

выбор пассажира

private void button1_Click(object sender, EventArgs e)

закрытие формы

private void button4_Click(object sender, EventArgs e)

изменение информации о пассажире

private void button5_Click(object sender, EventArgs e)

возврат билета

private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)

выбор билета

private void button6_Click(object sender, EventArgs e)

печать изменённого билета

private void Form1_FormClosed(object sender, FormClosedEventArgs e)

закрытие формы

отделы.cs

public отделы(Form avt, Form Otdkad)

инициализация формы

private void отделы_Load(object sender, EventArgs e)

заполнение объектов формы данными

private void button2_Click(object sender, EventArgs e)

закрытие формы

private void отделы_FormClosed(object sender, FormClosedEventArgs e)

переход на форму отдела кадров

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

обработка выбора элемента из таблиц отделы

private void dataGridView3_CellContentClick(object sender, DataGridViewCellEventArgs e)

обработка выбора элемента из таблиц

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void dataGridView4_CellClick(object sender, DataGridViewCellEventArgs e)

обработка выбора элемента из таблиц

private void button9_Click(object sender, EventArgs e)

создание отдела

private void button10_Click(object sender, EventArgs e)

обновление данных выбранного отдела

private void button11_Click(object sender, EventArgs e)

удаление выбранного отдела из базы данных

private void button6_Click(object sender, EventArgs e)

создание бригады

private void button5_Click(object sender, EventArgs e)

изменение данных о бригаде

private void button12_Click(object sender, EventArgs e)

удаление бригады из базы данных

private void button1_Click(object sender, EventArgs e)

создание новой должности

private void button3_Click(object sender, EventArgs e)

изменение данных о должности

private void button4_Click(object sender, EventArgs e)

удаление выбранной должности из базы данных

Служба безопасности.cs

public служба_безопасности(Form avt)

инициализация формы

private void служба_безопасности_Load(object sender, EventArgs e)

заполнение таблиц и выпадающих списков данными

private void button1_Click(object sender, EventArgs e)

выход из программы

private void comboBox3_SelectionChangeCommitted(object sender, EventArgs e)

поиск пассажира по номеру рейса

Продолжение таблицы 12

Название модуля

Функция

Назначение

private void comboBox4_SelectionChangeCommitted(object sender, EventArgs e)

поиск пассажира по фио

private void button5_Click(object sender, EventArgs e)

сброс фильтра поиска

private void button3_Click(object sender, EventArgs e)

обновить данные

private void button2_Click(object sender, EventArgs e)

переход на форму авторизации

private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)

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

private void служба_безопасности_FormClosed(object sender, FormClosedEventArgs e)

при закрытии формы

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

поиск сотрудника по отделу

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

поиск сотрудника фио

private void comboBox6_SelectedIndexChanged(object sender, EventArgs e)

поиск сотрудника по бригаде сотрудника

private void button4_Click(object sender, EventArgs e)

сброс фильтра поиска

пассажир.cs

public пассажир()

инициализация формы


Продолжение таблицы 12

Название модуля

Функция

Назначение

private void Form3_Load(object sender, EventArgs e)

при загрузке формы заполняются выпадающие списки и таблицы данными из бд и устанавливаются размеры формы, заголовки таблиц, запускаются таймеры обновления расписания и вывода времени.

private void timer1_Tick(object sender, EventArgs e)

вывод текущего времени

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)

вывод рейсов на конкретные даты

private void timer2_Tick(object sender, EventArgs e)

обновление расписания по таймеру

private void button5_Click(object sender, EventArgs e)

поиск рейсов по конкретное направление

private void button7_Click(object sender, EventArgs e)

поиск рейсов в конкретную страну

private void timer3_Tick(object sender, EventArgs e)

таймер бездействия

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

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

private void button1_Click(object sender, EventArgs e)

обновление расписания

private void button3_Click(object sender, EventArgs e)

поиск рейсов в обратную сторону


1.6 Отладка и тестирование программы

Тестирование и отладка связаны с процессом поиска и исправления ошибок в программе.

Существуют несколько методов отладки программы:

  1.  метод индукции - анализ программы от частного к общему. Просматриваем симптомы ошибки и определяем данные, которые имеют к ней хоть какое-то отношение. Затем, используя тесты, исключаем маловероятные гипотезы, пока не остается одна, которую мы пытаемся уточнить и доказать;
  2.  метод дедукции - от общего к частному. Выдвигаем гипотезу, которая может объяснить ошибку, пусть и не полностью. Затем при помощи тестов эта гипотеза проверяется и доказывается;
  3.  обратное движение по алгоритму. Отладка начинается там, где впервые встретился неправильный результат. Затем работа программы прослеживается (мысленно или при помощи тестов) в обратном порядке, пока не будет обнаружено место возможной ошибки.

Тестирование программы осуществлялось на группе тестов. В результате был выявлен ряд ошибок, приведенных в таблице 13.

Таблица 13– Ошибки

Ошибки

Способ устранения

Ошибка выполнения запроса Insert into

В программе закрыть выполнение запроса конструкцией try cathc и организовать предупреждение для пользователя об ошибке записи.

Ошибка в запросе продажи билета

Исправлена ошибка при создании строки запроса происходящего по нажатю на кнопку.

Ошибка при поиске обратного билета

Доработан алгоритм поиска билета.

Ввод пустых значений

Исправлены  ошибки данного вида, приводящие к аварийному закрытию программы


1.7 Общая характеристика программы

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

Требования к программному обеспечению:

  1. ОС Windows Vista или более поздняя версия;
  2.  MySQL Server 5.6;
  3.  .NET Framework 4.5;
  4.  MicrosoftOfficeWord 2007 или ,более поздняя версия.

Требования к аппаратному обеспечению:

  1. процессор с частотой 1,2 ГГц;
  2. ОЗУ 512 Мб;
  3. 50 Мб свободного места на жестком диске;
  4. принтер;
  5. клавиатура, мышь.

1.7.1 Инструкция пользователю

Инструция к программе, предназначенной для пассажиров:

Для использования функционалом ИС пассажирами необходимо установить программу на все справочные терминалы аэропорта. Для этого в предоставляемой папке запускаем файл setup.exe и выполняем инсталяцию файла, в результате чего появится ярлык программы в меню "Пуск". Для запуска программы необходимо запустить соответствующий ярлык в меню "Пуск" после чего появится окно программы, представленное на рисунке 3. В нем при старте программы показывается текущее расписание рейсов, помимо этого можно осуществить поиск рейсов в конкретный пункт назначения и дату, конкретную страну и на выбранную дату. При выборе рейса из таблицы имеется возможность поиска рейса в обратную сторону. В этоже время определяется количество мест всего, количество мест эконом класса и бизнес класса.

Рисунок 3 – Скриншот окна программы Пассажиры

Инструция к программе, предназначенной для сотрудников аэропорта:

Работа с данным приложением ведется специалистами. Перед началалом работы с прогаммой производим ее установку, запустив файл "setup.exe" из папки "airport" предоставляемой разработчиком, после чего в меню пуск появится соответствующий ярлык. Для запуска программы необходимо запустить из меню пуск соответствующий ярлык, после чего появится форма авторизации пользователя, представленная на рисунке 4. На ней необходимо ввести логин и пароль, а затем нажать кнопку «Войти»

Рисунок 4 – Форма «авторизация»

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

Если пользователь имеет категорию доступа «Отдел кадров», то он попадает на форму отдела кадров, представленную на рисунку 5.

Рисунок 5 – Форма «отдел кадров»

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

Рисунок 6 - Форма «комплектование бригад»

На форме комплектование бригад осуществляется перевод сотрудников между отделами и бригадами, назначение и снятие сотрудника с должности начальника отдела или старшего в бригаде, а также изменение статуса сотрудника.

Рисунок 7 – Форма «работа с отделами»

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

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

Рисунок 8 -  Форма «диспетчер»

С данной формы, представленной на рисунке 8,  имеется возможность перейти на форму «рейсы» и «самолеты - пункты назначения».

Рисунок 9 – Форма «рейсы»

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

Рисунок 10 – Форма «самолеты - пункты назначения»

На форме «самолеты - пункты назначения» осуществляется создание, редактирование или удаление информации о самолетах и пунктах прибытия или назначения.

Если сотрудник имеет категорию доступа «отдел продаж», то он попадает на форму «отдел продаж». На ней отображается текущее расписание, а также имеется возможность поиска рейса по направлению и дате вылета. Сразу после выбора рейса из табицы расписания отображается количество свободных мест эконом класса, бизнес класса и  сколько всего свободных мест на рейсе. Одновременно с этим создается уникальный номер билета. Для того чтобы осуществить покупку билета необходимо заполнить все поля области «покука билета» и после этого нажать кнопку «купить билет». В результате покупки билета данные будут отправлены на сервер, а на компьютере сотрудника откроется документ в программе MSWord для ввода дополнительных меток и печати билета. В случае если были допущены ошибки или пассажир решил отказаться от полета необходимо перейти на форму «билеты». Форма «отдел продаж» представлена на рисунке 11.

Рисунок 11 – Форма «отдел продаж»

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

Рисунок 12 – Форма «билеты»

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

При авторизации пользователя с категорией доступа «Бригада» сотрудник попадает на форму «бригады», где он может увидеть, с какими самолетами предстоит производить работы. А если сотрудник состоит в экипаже, то на каком самолете ему предстоит лететь. Кроме того имеется возможность отображать сотрудников с заданной должностью.

Рисунок 13 – Форма «бригады»

В случае если сотрудник при входе в систему имеет категорию доступа «служба безопасности» то он попадает, на форму «служба безопасности», представленную на рисунке 14

Рисунок 14 – Форма «служба безопасности»

На данной форме можно осуществлять поиск информации по сотрудникам и всем пассажирам, имеется возможность применять фильтры для поиска.


2 ЭКОНОМИКА И ОРГАНИЗАЦИЯ ПРОИЗВОДСТВА

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

Исходные данные

  1.  выпускаемое изделие - ИС «Аэропорт»;
  2.  трудоемкость разработки программы - 19 чел/дней;
  3.  тип производства - штучное;
  4.  режим работы предприятия - одна смена;
  5.  коэффициент выполнения норм - 1,2;
  6.  коэффициент использования оборудования - 0,96;
  7.  условия работы - нормальные;
  8.  продолжительность рабочей смены - 8 часов;
  9.  коэффициент загрузки специалистов - 0,95;
  10.  1 МРОТ = 5554 руб.;
  11.  премии и вознаграждения - 23% от месячного оклада;
  12.  коэффициент технического ремонта - 0,01;
  13.  балансовая стоимость ЭВМ - 32000 руб.;
  14.  стоимость кВт/ч - 3,50 руб.;
  15.  дополнительная заработная плата - 18%;
  16.  годовая норма амортизации оборудования - 12,5%;
  17.  накладные расходы - 35%;
  18.  уровень рентабельности - 45%;
  19.  коэффициент расходов на носители и материалы - 0,02;
  20.  налог на добавленную стоимость (НДС) - 18%;
  21.  отчисления на социальные нужды - 30% от ФОТ;
  22.  суммарная трудоемкость работ: Т = 4339 чел/час.

2.1 Расчет трудоемкости разработки программы

Этапы составления программного продукта:

  1. техническое задание (ТЗ);
  2. рабочий проект (РП);
  3. внедрение (ВН).

Таблица 14 - Расчет трудоемкости разработанной программы.

Этап

Вид работ

Исполнители

Оценка трудоемкости

Ожидаемое время выполнения (человеко-дней)

Мин.

Наиб. Веро

ятное

Макс.

Техническое задание (ТЗ)

Составление ТЗ

Руководитель

1

1,5

2

1,5

Анализ ТЗ

Техник-программист

1

1

1

1

Разработка программы (РП)

Выбор языка и среды

Техник-программист

1

1

1

1

Разработка интерфейса

Техник-программист

2

3

4

3

Разработка программы

Техник-программист

5

6

7

6

Тестирование программы (ТП)

Отладка и тестирование

Руководитель, Техник-программист

2

3

4

3

Оценка соответствия

Руководитель

1

1

1

1

Внедрение программы (ВП)

Руководитель, Техник-программист

2

2,5

3

2,5

Итого:

19

После составления перечня работ рассчитывается общая трудоемкость разработки программы, которая определяется экспертным методом.

Для каждого действия устанавливаются три экспертные оценки:

  1.  tmin – минимальное время выполнения работы (оценка продолжительности работы при наиболее благоприятном стечении обстоятельств);
  2.  tmax – максимальное время выполнения работы (оценка продолжительности работы при самом неблагоприятном стечении обстоятельств);
  3.  tн.в. – наиболее вероятное время выполнения работы.

Ожидаемое время выполнения работы Тож, чел/дней, определяется по следующей формуле (1).

Вывод:  на разработку технического задания требуется 2,5 чел./дня, на  разработку программы требуется 10 чел./дней, на тестирование программы требуется 4 чел./дня, на внедрения программы требуется 2,5 чел./дня. Таким образом, трудоемкость разрабатываемой программы составила в среднем 19 ч/дн.


2.2 Расчет численности работающих

Можно выделить следующие категории персонала:

  1. руководитель;
  2. специалист;
  3. служащий.

Способы расчета численности работающих:

  1.  согласно штатной ведомости;
  2.  исходя из производственной необходимости;
  3.  исходя из общей трудоемкости и годового фонда рабочего времени.

Таблица 15- Штатная ведомость персонала

Должность

Категория персонала

Количество штатных работников (чел.)

Должностной оклад (руб.)

Руководитель

Руководитель

1

19000

Техник-программист

Специалист

1

12000

 

Численность специалистов Чспец, человек, расчитывается по формуле 2.

,   (2)

где Т – суммарная трудоемкость работ, чел/час;

Фэф  – номинальный фонд рабочего времени, час;

Квн  – коэффициент выполнения норм;

Кз – коэффициент оптимальной нагрузки специалистов.

Номинальный фонд рабочего времени Фэф, час, расчитывается по формуле (3).

где Дк – календарные дни;

Двыход – выходные дни;

Дпраз – праздничные дни;

К – коэффициент использования оборудования.

Исходя из формул (2) и (3), получим следующие значения:

1903,14 час.

человек.


2.3 Расчет фонда заработной платы

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

В ООО «MGSOFT» за основу заработной платы берется оклад (согласно таблице 15), процент премиальных от месячного оклада, а также дополнительная заработная плата – определенный процент от суммы оклада и премии.

Таблица 16 - Расчет фонда оплаты труда (ФОТ).

Должность

Численность (человек)

Мес. Оклад (руб.)

Премия (23% от оклада)

Доп. зар. плата (18% от оклада + премия)

Фонд оплаты труда (ФОТ)

Средне месячная зар. плата (руб.)

Месячный (руб.)

Годовой (руб.)

Руководитель

1

19000

4370

4206,6

27576,6

330919,2

27576,6

Техник- программист

1

12000

2760

2656,8

17416,8

209001,6

17416,8

Итог

2

-

-

-

44993,4

939920,8

44993,4

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

Текущее значение на 2014 год: 38745 р.

Сравнивая ее со средней заработной платой данного предприятия,

можно сделать заключение: в вышеуказанном предприятии средняя заработная плата не значительно ниже, чем средняя заработная плата по Санкт-Петербургу.

2.4 Расчет сметной стоимости программы

Себестоимость – издержки предприятия при производстве, реализации продукции, а также это денежное выражение суммы затрат, необходимых на производство и сбыт данной продукции.

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

Таблица 17 - Расчет сметной стоимости программы

Наименование статей затрат

Сумма (руб.)

Удельный вес затрат

(в % к итогу)

1 Материалы

5769

14,09

2 Затраты на спец. оборудование

928,72

2,27

3 Заработная плата

19593,9

47,85

3.1 Прямая заработная плата

13500

-

3.2 Премия

3105

-

3.3 Доп. Заработная плата

2988,9

-

4 Суммарные отчисления на социальное страхование

5878,17

14,36

5 Накладные расходы

8775

21,43

6 Итого затрат

40994,79

100%

7 Целевая прибыль

17606,26

-

8 Итого сметная стоимость

69090,24

-


2.4.1 Расчет затрат на материалы

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

Таблица 18 - Расчет затрат на материалы

Наименование материальных ценностей

Количество материалов

Цена за единицу (руб.)

Всего (руб.)

1 Бумага для принтера (А4)

1

150

150

2 Картридж HP Q2612A для принтера HP 1020

1

3319

3319

3 Переносной жесткий диск

1

1900

1900

4 Шариковые ручки

20

20

400

5 Итого:

-

-

5769

2.4.2 Затраты на специальное оборудование

Это затраты, связанные с использованием ЭВМ (стоимость машинного времени и продолжительность отладки на стадиях технического и рабочего проекта).

Расчет затрат на спец. оборудование Зспец.об, руб, осуществляется по следующей формуле:

Зспец.об= N * Sм-ч,   (4)

где N – количество часов работы оборудования;

Sм-ч – себестоимость часа работы ЭВМ, руб/час.

Количество часов работы оборудования N, час, часчитываются по следующей формуле (5).

N= Тож* 8,   (5)

где Тож – ожидаемое время выполнения работы, чел/дне й.

Себестоимость часа работы ЭВМ Sм-ч, руб/час, расчитывается по формуле (6).

Sм-ч=Sрм+Sинф+Sэ+Sа,  (6)

где Sрм – затраты на ремонт, руб/час;

Sинф – затраты на носители и материалы, руб/час;

Sэ – затраты на потребляемую энергию, руб/час;

Sа - амортизация вычислительных средств, руб/час.

Затраты на ремонт ЭВМ Sрм, руб/час, определяются по формуле (7)

,        (7)

где Спэвм – первоначальная стоимость ЭВМ, руб;

Рт – коэффициент технического ремонта;

Фг – годовой фонд времени работы ЭВМ = Фэ, час.

Затраты на носители и вспомогательные материалы Sинф., руб/час, расчитываются по следующей формуле (8).

,        (8)

где Рн – коэффициент, учитывающий затраты на носители и вспомогательные материалы.

Затраты на потребляемую электроэнергию от использования средств вычислительной техники, Sэ, руб/час, вычисляются по формуле (9).

, (9)

где qi – число технических средств ЭВМ, шт.;

Ni – потребляемая мощность технических средств, кВт/час;

SкВт/ч – стоимость кВт/час электроэнергии, руб/час.

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

Амортизация – постепенное погашение стоимости основных фондов  по мере их износа. С помощью амортизационных отчислений стоимость основных фондов постепенно переносится на производимую продукцию. Амортизация Sa, руб/час, высчитывается по следующей формуле (10).

где

Используя приведенные выше формулы, получаем следующие значения:

N = 19 * 8 = 152 ч.

Sм-ч = 0,168 + 0,336 + 3,5 + 2,102 = 6,11  руб./час.

Sрм = (32000 * 0,01) / 1903 = 0,168 руб./час.

Sинф = (32000 * 0,02) / 1903 = 0,336 руб./час.

Sэ = 2 * 3,50 * 0,5 = 3,5 руб./час.

Sа = (32000 * 12,5%) / (1903,14 * 100) = 2,102 руб./час.

Зсп.об. = N * Sм-ч  = 152 * 6,11 = 928,72 руб.

2.4.3 Расчет прямой заработной платы

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

Таблица 19 -  Соотношение  трудоемкости выполненных работ по исполнителям.  

Категория исполнителей

Этап

ТЗ

РП

ТП

ВН

Руководитель

60%

10%

50%

60%

Техник-программист

40%

90%

50%

40%

Итого:

100%

100%

100%

100%

Таблица 20 - Расчет прямой заработной платы

Исполнители

Ср. дн. ставка з/пл (руб)

Всего

Стадия разработки

(ч/дн) трудозатрат

з/п (руб)

ТЗ

з/п

(руб)

РП

з/пл (руб)

ТП

з/п (руб)

ВН

з/п (руб)

Руководитель

950

6

5700

1,5

1425

1

950

2

1900

1,5

1425

Техник-программист

600

13

7800

1

600

9

5400

2

1200

1

600

Итого

-

19

13500

2,5

2025

10

6350

4

3100

2,5

2025

Среднедневная зарплата работающих Зсрдн, руб, определяется по
формуле (11).

Зсрдн=Ок/ Nраб.дн,      (11)

где Ок–должностной оклад из таблицы 15;

Nраб.дн. – среднее кол-во рабочих дней в месяце (20 дней).

Расчет прямой заработанной платы Зпр, руб, производится по
формуле (12). Данные необходимые для вычисления Зпр находятся в таблице 20.

Зпр= Зсрднруководож.руководсрднтехнпрогр* *Тож.технпрогр ,  (12)

где Зсрднруковод – среднедневная заработная плата руководителя, руб;

     Тож.руковод – трудоёмкость руководителя, дн;

     Зсрднтехнпрогр – среднедневная заработная плата техника-программиста, руб;

     Тож.технпрогр – трудоёмкость техника-программиста, дн.

Расчет премии Пр, руб, в соответствии с условиями оплаты труда осуществляется по формуле (13).   

Пр = Зпр * 23%,   (13)

Расчет дополнительной заработной платы Здп, руб, в соответствии с условиями оплаты труда рассчитывается по формуле (14).

Здп = 18% * (Зпр + Пр),      (14)

Расчет суммарной заработной платы Зсумм, руб, рассчитывается по формуле (15).

Зсуммпр+Пр+Здп ,       (15)

Исходя из формул (11 – 15) получим:

Зпр=950*6+600*13=13500 руб.

Пр = 13500*23%=3105 руб.

Здп =(13500+3105)*18%=2988,9 руб.

Зсумм=13500+3105+2988,9=19593,9 руб.

2.4.4 Расчет отчислений на социальные нужды

Отчисления на социальные нужды, руб, осуществляются в соответствии с ФЗ в сумме соответствующего 30% (см. исходные данные) от суммарной заработной платы.

Отчисления на социальные нужды =Зсумм * 30%,(16)

Отчисления на социальные нужды= 19593,9 * 30%=5878,17 руб.

2.4.5 Расчет накладных расходов

Накладные расходы включают аренду помещений, отопление и затраты на содержание служб предприятия. Накладные расходы, руб, вычисляются по формуле (17).

Накладные расходы = Зпр*73%, (17)

Накладные расходы =13500  * 0,65 = 8775 руб.

2.4.6 Расчет себестоимости программы

Себестомимость, руб, расчитывается по формуле (18).

Себестоимость = Материалы + Зсп.об. + Зсумм + Отчисления на социальные нужды + Накладные расходы,  (18)

Себестоимость=5769+928,72+19593,9+5878,17+8775=40944,79 руб.

2.4.7 Расчет прибыли в зависимости от уровня рентабельности и сметной стоимости

Прибыль, руб, расчитыается по формуле (19)

Прибыль=Себестоимость * 43%, (19)

Прибыль=40944,79*0,43=17606,26 руб.

Сметная стоимость Смст-ть, руб, рассчитывается по формуле (20):

Смст-ть=Итого затрат+Целевая прибыль,    (20)

Сметная стоимость = 40944,79 +17606,26=58551,05 руб.

2.4.8 Расчет отпускной цены программы

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

Цотпуск= Смст-ть+НДС, (19)

где НДС – налог на добавленную стоимость (18% от сметной стоимости);

Цотпуск=58551,05 +58551,05 *0,18 = 69090,24рублей

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

3 МЕРОПРИЯТИЯ ПО ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ УСЛОВИЙ ТРУДА, ЭКОБИОЗАЩИТЕ И ПРОТИВОПОЖАРНОЙ ТЕХНИКЕ

3.1 Электрическая безопасность

Обычно угроза несчастного случая сопровождается признаками, на которые могут среагировать органы чувств человека. Например: вид движущегося транспорта, падающего предмета, запах газа предупреждает человека об опасности и дает возможность ему принять необходимые меры предосторожности. Коварная особенность электрической энергии заключается в том, что она невидима, не имеет запаха и цвета. Электрический ток поражает внезапно, когда человек оказывается включенным в цепь прохождения тока. Поражение может наступить и через дуговой контакт, при приближении на недопустимо близкое, опасное расстояние к токонесущему проводу высокого напряжения, а также при попадании под шаговое напряжение, возникающее при обрыве и падении на землю провода действующей воздушной линии 380 В и выше.Приблизительно половина несчастных случаев. Связанных с поражением электрическим током, происходит во время профессиональной деятельности пострадавших. По некоторым данным электротравмы составляют около 30 % общего числа всех травм на производстве и, как правило, имеют тяжелые последствия. По частоте смертельных исходов электротравматизм в 15-16 раз превосходит другие виды травм.

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


  1. защитное заземление;
  2. изоляция, ограждение и обеспечение недоступности токоведущих частей;
  3. применение малого напряжения и двойной изоляции.

Вся компьютерная техника питается электротоком напряжением

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

  1. работать только на исправной компьютерной технике;
  2. знать блок-схему используемой компьютерной техники и правила её эксплуатации, порядок включения, выключения и заземления аппарата;
  3. перед включением общего электропитания проверить исходное положение всех выключателей, розеток и вилок и выключить их;
  4. запретить разборку аппарата компьютерной техники учащимися;
  5. при работе с компьютерной техникой пользоваться только внешними элементами управления;
  6. в случае замыкания (появления искр, запаха гари) - отключить электропитание;
  7. замену деталей электроаппаратуры и ее ремонт проводить при выключенных источниках питания;
  8. запрещается определять наличие напряжения путем прикосновения руками к токоведущим деталям аппаратуры;
  9. нельзя менять и ставить предохранители на электроаппаратуру, находящуюся под напряжением;
  10.  соединительные провода автотрансформатора с сетью и усилителя с громкоговорителем не должны находиться па пути выхода зрителей;
  11.  запрещается использовать воду и пенные огнетушители для тушения загоревшейся электроаппаратуры, так как эти средства являются проводниками тока и, следовательно, могут привести к короткому замыканию и поражению током человека, производящего тушение;
  12.  во избежание ожогов нельзя прикасаться к проекционным и радиолампам в течение 10 мин после их выключения;
  13.  не разрешается касаться деталей аппаратуры во время её работы.

3.2 Противопожарная безопасность

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

Площадь на одно рабочее место для взрослых пользователей должна составлять не менее 6 м², а объем не менее 20 м³. Для внутренней отделки помещений должны использоваться диффузно отражающие материалы с коэффициентом отражения: 0,7-0,8 (для потолка), 0,5-0,6 (для стен) и 0,3-0,5 (для пола). Поверхность пола должна быть ровной, без выбоин, нескользкой, удобной для очистки, уборки, обладать антистатическими свойствами. Особое внимание необходимо уделять пожарной безопасности, поскольку пожары в помещениях с компьютерной техникой сопряжены с опасностью для жизни людей и большими материальными потерями.

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

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

ЗАКЛЮЧЕНИЕ

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

Для написания программы необходимо было освоить технологии, которые не изучались в колледже, а именно язык программирования C#.

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

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


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Бьюли А. «Изучаем SQL» изд. СПБ: Символ-Плюс, 2007 г. – 312 с.;
  2. Гарнагина Н.Е., Занько Н.Г. и др. Безопасность и охрана труда. СПб.: МАНЭБ, 2001;
  3. Дрейер М. «C# для школьников: Учебное пособие»пер. под ред. В. Биллига –М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2009. -128с;
  4. Елизаров  Ю. Ф., «Экономика организаций (предприятий) » Москва: Экзамен, 2008;
  5. Зиборов В. В. «Visual C# 2012 на примерах» - СПБ.: БХВ-Петербург, 2013. – 480 с.;
  6. Павловская  Т., «С# Программирование на языке высокого уровня», СПБ.: «ПИТЕР»,2009 г. - 432с;
  7. http://msdn.microsoft.com/ru-ru/library/67ef8sbd.aspx - справочник по C#;
  8.  http://aleko-3.ru/lektrobezopasnost- электробезопасность, общие положения.


ПРИЛОЖЕНИЕ А

Таблицы с исходными данными

Таблица А1 - Таблица air

Таблица А2 - Таблица brigady

Таблица А3 - Таблица dolzn

Таблица А4 - Таблица otdel

Таблица А5 - Таблица punkt

Таблица А6 - Таблица raspis

Таблица А7 - Таблица polzov

Таблица А8 - Таблица reysy

Таблица А9 - Таблица sotr

Таблица А10 - Таблица tikets


ПРИЛОЖЕНИЕ Б

Пользовательские формы

Рисунок Б1 - Печатный билет

Приложение пассажиры:

Рисунок Б2 - Основная форма "Пассажиры"

Приложение airport:

Приложение Б3 - Форма "авторизация"

Рисунок Б4 - Форма "отдел кадров"

Рисунок Б5 - Форма "комплектование бригад"

Рисунок Б6 - Форма "работа с отделами"

Рисунок Б7 - Форма "Бригады"

Рисунок Б8 - Форма "Служба безопасности"

Рисунок Б9 - Форма "Диспетчер"

Рисунок Б10 - Форма "Рейсы"

Рисунок Б11 - Форма "Самолеты и пункты назначения"

Рисунок Б12 - Форма "Отдел продаж билетов"

Рисунок Б13 - Форма "Билеты"
ПРИЛОЖЕНИЕ В

Листинги программ

Листинг программы для работников аэропорта:

io.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using MySql.Data.MySqlClient;

using System.Data;

using System.Windows.Forms;

using Word = Microsoft.Office.Interop.Word;

namespace airport

{

   public class io

   {

       //заполнениетаблицы результатами запроса

       public void tab(string s, DataGridView dataGridView, DataSet dataSet, string conn)

       {

           dataSet.Clear();

           MySqlDataAdapter da = new MySqlDataAdapter(s, conn);

           da.Fill(dataSet);

           dataGridView.DataSource = dataSet.Tables[0];

da.Dispose();

       }

       //

       //заполнение comboBox результатами запроса

public void dan(string s, ComboBox c1, string conn)

       {

           MySqlConnection con = new MySqlConnection(conn);

           MySqlCommand com = new MySqlCommand(s, con);

           con.Open();

           MySqlDataReader data = com.ExecuteReader();

           while (data.Read())

           {

               c1.Items.Add(data.GetString(0));

}

           data.Close();

           con.Close();

       }

       //

       //заполнение listBox результатами запроса

public void lis(string s, ListBox l, string conn)

       {

           MySqlConnection con = new MySqlConnection(conn);

           MySqlCommand com = new MySqlCommand(s, con);

           con.Open();

           MySqlDataReader data = com.ExecuteReader();

           while (data.Read())

           {

               l.Items.Add(data.GetString(0));

}

           data.Close();

           con.Close();

       }

       //

       //заполнение textbox результатами запроса

public void danst(string s, TextBox c1, string conn)

       {

           MySqlConnection con = new MySqlConnection(conn);

           MySqlCommand com = new MySqlCommand(s, con);

           con.Open();

           MySqlDataReader data = com.ExecuteReader();

           while (data.Read())

           {

               c1.Text = data.GetString(0);

}

           data.Close();

           con.Close();

       }

       //

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

       internal void exapp()

       {

           if (DialogResult.Yes == MessageBox.Show("Завершить текущую сессию?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { Application.Exit(); }

}

       //

       //очистка ComboBox

       internal void comcler(ComboBox c1)

       {

           c1.SelectedIndex = -1;

       }

       //

       //запроснаудаление

       internal void zapdel(string ss, string conn)

       {

           MySqlConnection con = new MySqlConnection(conn);

           con.Open();

           MySqlCommand com = new MySqlCommand(ss, con);

           com.ExecuteNonQuery();

           con.Close();

       }

       //

       //запроснаобновление

       internal void zapupd(string ss, string conn)

       {

           MySqlConnection con = new MySqlConnection(conn);

           con.Open();

           MySqlCommand com = new MySqlCommand(ss, con);

           com.ExecuteNonQuery();

           con.Close();

       }

       //

       //запроснадобавление

       internal void zapins(string ss, string conn)

       {

           MySqlConnection con = new MySqlConnection(conn);

           con.Open();

           MySqlCommand com = new MySqlCommand(ss, con);

com.ExecuteNonQuery();

           con.Close();

       }

       //

       //запрос на выборку значения(возвращает данные типа строка)

internal string zapsel(string ss, string conn)

       {

           string rez = "0";

           MySqlConnection con = new MySqlConnection(conn);

           con.Open();

           MySqlCommand com = new MySqlCommand(ss, con);

           MySqlDataReader dan = com.ExecuteReader();

           while (dan.Read()) { rez = dan.GetString(0); }

           dan.Close();

           con.Close();

           return rez;

       }

       //

       //изменениесостояниясотрудника

       internal void sotrsost(string s, DataGridViewRow row, string conn)

       {

           io n1 = new io();

           if (n1.zapsel("select sostsotr from airport.sotr where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "';", conn) == s)

           {

               n1.zapupd("update airport.sotr set sostsotr='Работает' where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "'", conn);

           }

           else

           {

               n1.zapupd("update airport.sotr set sostsotr='" + s + "' where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "'", conn);

           }

       }

       //

       //определениеявляетсялистрокапустой

       internal bool rows(DataGridViewRow row)

       {

           try

           {

               if (row.Cells[0].Value != null) return true;

           }

           catch (Exception) { }

           return false;

       }

       //

       //печатьбилета

       internal void printbilet(string nomber,string conn)

       {

           if (System.IO.Directory.Exists("D:/arcive") == false) System.IO.Directory.CreateDirectory("D:/arcive");

           Word.Application worap = new Word.Application();

           object bilet = Application.StartupPath + "/bilet.docx";

           worap.Documents.Add(ref bilet);

           Word.Document doc = worap.ActiveDocument;

           Word.Table table = doc.Tables[1];

           MySqlConnection con = new MySqlConnection(conn);

           con.Open();

           MySqlCommand com = new MySqlCommand("select d.aviakomp,c.idpunotp,c.ippunprib,a.sernompasp,c.idreysy,b.vrvil,b.vrpril,r.strana,m.strana,a.econbizn,a.fio,c.stoim,c.stoimbiz,a.lgot from airport.tikets a inner join airport.raspis b on a.idreysa=b.idraspis inner join airport.reysy c on b.idreysa=c.idreysy inner join airport.air d on b.idair=d.idair  inner join airport.punkt r on c.idpunotp=r.name inner join airport.punkt m on c.ippunprib=m.name where a.idtikets='" + nomber + "';", con);

           MySqlDataReader dan = com.ExecuteReader();

           while (dan.Read()) {

               string s3;

               if (dan.GetString(7) != dan.GetString(8))

s3 = "международный";

               else

                   s3 = "местный";

string clas;

               if (dan.GetInt32(9)==0)

clas="эконом класс";

               else

                   clas="бизнес класс";

table.Cell(2, 2).Range.Text = dan.GetString(0);

               table.Cell(2, 3).Range.Text = dan.GetString(1) + '-' + dan.GetString(2);

               table.Cell(4, 1).Range.Text = dan.GetString(3);

               table.Cell(5, 2).Range.Text = dan.GetString(10);

               table.Cell(7, 2).Range.Text = dan.GetString(1);//откуда

               table.Cell(7, 3).Range.Text = dan.GetString(0);//перевозчик

               table.Cell(7, 4).Range.Text = dan.GetString(4);//рейс

               table.Cell(7, 5).Range.Text = clas;//класс

               table.Cell(7, 6).Range.Text = dan.GetString(5);//датаивремявылета

               table.Cell(7, 7).Range.Text = s3;

               table.Cell(7, 8).Range.Text = dan.GetString(5);//действителендо

               table.Cell(7, 9).Range.Text = dan.GetString(5);//недействителенпосле

               table.Cell(7, 10).Range.Text = "20 кг";

               table.Cell(8, 2).Range.Text = dan.GetString(2);//куда

               table.Cell(8, 3).Range.Text = dan.GetString(0);

               table.Cell(8, 4).Range.Text = dan.GetString(4);

               table.Cell(8, 5).Range.Text = clas;

               table.Cell(8, 6).Range.Text = dan.GetString(6); ;

               table.Cell(8, 7).Range.Text = s3;

               table.Cell(8, 8).Range.Text = dan.GetString(5);

               table.Cell(8, 9).Range.Text = dan.GetString(5);

               table.Cell(8, 10).Range.Text = "20 кг";

               float cenabil;

               if (dan.GetInt32(9)==0)

                   cenabil=dan.GetFloat(11);

               else

                   cenabil=dan.GetFloat(12);

               table.Cell(9, 2).Range.Text = (cenabil - (dan.GetInt32(13) * cenabil * 0.02) - 200).ToString();

               table.Cell(10, 2).Range.Text = "200 р";

               table.Cell(11, 2).Range.Text = cenabil.ToString();

               table.Cell(10, 3).Range.Text = nomber;//номербилета

               worap.Visible = true;

               worap.ActiveDocument.SaveAs("D:/arcive/"+nomber+".docx");

}

           dan.Close();

           con.Close();

       }

       //

   }

}

авторизация.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using airport;

namespace airport

{

   public partial class f1 : Form

   {

       //инициализацияформы

       public f1() { InitializeComponent(); }

//

       //создание объекта класса io для соединения с сервером бд

       io n1 = new io();

       //

       //константа для соединения с бд

private string stringcon = "Database=airport;DataSource=localhost; User Id=sotr; Password=pass";

       //

       //выходизпрограммы

       private void button2_Click(object sender, EventArgs e) { Application.Exit(); }

       //

       //авторизацияпользователя

       private void button1_Click(object sender, EventArgs e)

       {

           int k = 0;

           try

           {

               k = Convert.ToInt32(n1.zapsel("select kat from airport.dolzn where iddolzn=(select iddolzn from airport.sotr where idsotr=(select idpolz from airport.polzov where login='" + textBox1.Text + "' and pass='" + textBox2.Text + "'))", stringcon));

               string sotr = n1.zapsel("select idpolz from airport.polzov where login='" + textBox1.Text + "' and pass='" + textBox2.Text + "'", stringcon);

               textBox1.Text = ""; textBox2.Text = "";

               textBox1.Focus();

               switch (k)

               {

                   case 0: MessageBox.Show("Неверновведенлогинилипароль", "ошибка", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); break;

                   case 1: диспетчердиспетчер = new диспетчер(this); диспетчер.conn = stringcon; диспетчер.Show(); this.Hide(); break;

                   case 2: отдел_кадровотдел_кадров = new отдел_кадров(this); отдел_кадров.Hide(); отдел_кадров.conn = stringcon; отдел_кадров.Show(); this.Hide(); break;//отделкадров

case 3: служба_безопасности служба_безопасности = new служба_безопасности(this); служба_безопасности.conn = stringcon; служба_безопасности.Show(); this.Hide(); break;

                   case 4: отдел_продаж отдел_продаж = new отдел_продаж(this); отдел_продаж.conn = stringcon; отдел_продаж.Show(); this.Hide(); break;//отдел продаж

                   case 5: бригады бригады = new бригады(this, sotr); бригады.conn = stringcon; бригады.Show(); this.Hide(); break;

               }

           }

           catch (Exception)

           { MessageBox.Show("Не верно введен логин или пароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }

}

       //

   }

}

бригады.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class бригады : Form

   {

       private Form _avt;

       private string _sotr;

       public string conn;

       //инициализация формы

       public бригады(Form avt,string sotr)

       {

           InitializeComponent();

           _sotr = sotr;

           _avt = avt;

       }

       //

       //создание объекта класса io для соедиения с БД

       io n1 = new io();

       //

       //заполнение таблиц и выпадающих списков данными и установка размеров формы

       private void бригады_Load(object sender, EventArgs e)

       {

           this.Height = Screen.PrimaryScreen.WorkingArea.Height;

           this.Width = Screen.PrimaryScreen.WorkingArea.Width;

           n1.tab("select a.idair,a.proizv,a.serialnomber,a.kolmestbizn+a.kolmesteco,a.idbrig,a.bak,a.maxdaln,a.aviakomp,a.idletnbrig from airport.air a where idbrig=(select b.idbrig from airport.sotr b where b.idsotr='" + _sotr + "') or idletnbrig=(select b.idbrig from airport.sotr b where b.idsotr='" + _sotr + "');", dataGridView1, dataSet1, conn);

           n1.tab("select a.fio,b.name from airport.sotr a inner join  airport.dolzn b on a.iddolzn=b.iddolzn where a.idbrig=(select c.idbrig from airport.sotr c where c.idsotr='" + _sotr + "') and a.idotd=(select d.idotd from airport.sotr d where d.idsotr='" + _sotr + "');", dataGridView2, dataSet2, conn);

           n1.dan("select name from airport.dolzn;", comboBox2, conn);

           //табоица сотрудников

           dataGridView2.Columns[0].HeaderText = "ФИО";

           dataGridView2.Columns[1].HeaderText = "Должность";

           //таблица самолетов

           dataGridView1.Columns[0].HeaderText = "Номер самолета";

           dataGridView1.Columns[1].HeaderText = "Производитель и модель";

           dataGridView1.Columns[2].HeaderText = "Серия и номер";

           dataGridView1.Columns[3].HeaderText = "Кол-во мест";

           dataGridView1.Columns[4].HeaderText = "Бригада";

           dataGridView1.Columns[5].HeaderText = "Объем бака";

           dataGridView1.Columns[6].HeaderText = "Дальность полета";

           dataGridView1.Columns[7].HeaderText = "Номер летной бригады";

       }

       //

       //выход из программы

       private void button1_Click(object sender, EventArgs e) { n1.exapp(); }

       //

       

       //переход на главную форму

       private void button2_Click(object sender, EventArgs e) { this.Close(); }

       //

       //кнопка очистить результаты поиска

       private void button5_Click(object sender, EventArgs e)

       {

           n1.tab("select a.fio,b.name from airport.sotr a inner join  airport.dolzn b on a.iddolzn=b.iddolzn where a.idbrig=(select c.idbrig from airport.sotr c where c.idsotr='" + _sotr + "') and a.idotd=(select d.idotd from airport.sotr d where d.idsotr='" + _sotr + "');", dataGridView2, dataSet2, conn);

       }

       //

       //отображение сотрудников с конкретной профессией

       private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

       {

           n1.tab("select a.fio,b.name from airport.sotr a inner join  airport.dolzn b on a.iddolzn=b.iddolzn where a.idbrig=(select c.idbrig from airport.sotr c where c.idsotr='" + _sotr + "') and a.idotd=(select d.idotd from airport.sotr d where d.idsotr='" + _sotr + "') and b.name='"+comboBox2.Text+"';", dataGridView2, dataSet2, conn);

       }

       //

       //активация формы авторизации

       private void бригады_FormClosed(object sender, FormClosedEventArgs e)

       {

           _avt.Show();

       }

       //

   }

}

диспетчер.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class диспетчер : Form

   {

       //описание необходимых переменных

       private Form _avt;

       public string conn;

       private DataGridViewRow row;

       //

       //инициализаци формы

       public диспетчер(Form avt)

       {

           InitializeComponent();

           _avt = avt;

       }

       //

       //создание объекта класса io для соединения с бд

       io n1 = new io();

       //

       //заполнение начальными данными таблиц и выпадающих списков

       private void Form4_Load(object sender, EventArgs e)

       {

           this.Height = Screen.PrimaryScreen.WorkingArea.Height;

           this.Width = Screen.PrimaryScreen.WorkingArea.Width;

           n1.tab("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa;", dataGridView1, dataSet1, conn);

           dataGridView1.Columns[0].HeaderText = "Номер записи";

           dataGridView1.Columns[1].HeaderText = "Номер рейса";

           dataGridView1.Columns[2].HeaderText = "Пункт прибытия";

           dataGridView1.Columns[3].HeaderText = "Пункт назначения";

           dataGridView1.Columns[4].HeaderText = "Номер самолета";

           dataGridView1.Columns[5].HeaderText = "Время вылета";

           dataGridView1.Columns[6].HeaderText = "Время прилета";

           dataGridView1.Columns[7].HeaderText = "Состояние рейса";

       }

       //

       //выход из программы

       private void button1_Click(object sender, EventArgs e) { n1.exapp(); }

       //

       //смена пользователя

       private void button2_Click(object sender, EventArgs e) { this.Close(); }

       //

       //переход на форму где происходит редактирование данных об авиапарке и пунктах прибытия и назначения

       private void button4_Click(object sender, EventArgs e)

       {

           диспетчерский_отдел2 диспетчерский_отдел2 = new диспетчерский_отдел2(_avt, this);

           диспетчерский_отдел2.conn = this.conn;

           диспетчерский_отдел2.ShowDialog();

       }

       //

       //Очистить

       private void button6_Click(object sender, EventArgs e)

       {

           n1.comcler(comboBox7);

           n1.comcler(comboBox1);

           textBox2.Clear();

           textBox3.Clear();

           textBox4.Clear();

           textBox5.Clear();

           comboBox6.SelectedIndex = -1;

           label22.Text = "Состояние:";

           n1.tab("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa;", dataGridView1, dataSet1, conn);

       }

       //

       //создание нового рейса

       private void button3_Click(object sender, EventArgs e)

       {

           try

           {

               if ((comboBox7.Text == "") || (comboBox1.SelectedIndex == -1) || (textBox2.Text == "") || (textBox3.Text == "") || (textBox4.Text == "") || (textBox5.Text == "") || (comboBox6.Text == "")) { }

               else

               {

                   DateTime t, tt; t = dateTimePicker1.Value; tt = dateTimePicker2.Value;

                   n1.zapins("insert into airport.raspis (idreysa,idair,vrvil,vrpril,sost) values('" + comboBox7.Text + "','" + comboBox1.Text + "','" + t.Year + "-" + t.Month + "-" + t.Day + " " + textBox2.Text + ":" + textBox3.Text + ":00','" + tt.Year + "-" + tt.Month + "-" + tt.Day + " " + textBox4.Text + ":" + textBox5.Text + ":00','" + comboBox6.Text + "');", conn);

                   label22.Text = "Состояние: сохранено";

                   DateTime tm, tm2; tm = monthCalendar1.SelectionStart; tm2 = monthCalendar1.SelectionEnd;

                   n1.tab("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa;", dataGridView1, dataSet1, conn);

               }

           }

           catch (Exception) { label22.Text = "Состояние: Ошибка!"; }

           row.Cells.Clear();

       }

       //

       //изменение рейса

       private void button5_Click(object sender, EventArgs e)

       {

           try

           {

               DateTime t, tt, tm, tm2; t = dateTimePicker1.Value; tt = dateTimePicker2.Value; tm = monthCalendar1.SelectionStart; tm2 = monthCalendar1.SelectionEnd;

               n1.zapupd("update airport.raspis set idreysa='" + comboBox7.Text + "',idair='" + comboBox1.Text + "',vrvil='" + t.Year + "-" + t.Month + "-" + t.Day + " " + textBox2.Text + ":" + textBox3.Text + ":00',vrpril='" + tt.Year + "-" + tt.Month + "-" + tt.Day + " " + textBox4.Text + ":" + textBox5.Text + ":00',sost='" + comboBox6.Text + "'  where (idraspis='" + row.Cells[0].Value + "');", conn);

               n1.zapupd("update airport.tikets set idreysa='" + comboBox7.Text + "'  where idreysa='" + row.Cells[0].Value + "';", conn);

               label22.Text = "Состояние: изменения применены!";

               n1.tab("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa;", dataGridView1, dataSet1, conn);

           }

           catch (Exception) { label22.Text = "Состояние: Ошибка!"; }

       }

       //

       //удаление рейса

       private void button7_Click(object sender, EventArgs e)

       {

           if (n1.zapsel("select count(*) from airport.tikets a where a.idreysa='"+row.Cells[0].Value+"'", conn) == "0")

           {

               try

               {

                   DateTime tm, tm2; tm = monthCalendar1.SelectionStart; tm2 = monthCalendar1.SelectionEnd;

                   n1.zapdel("delete from airport.raspis where (idraspis='" + row.Cells[0].Value + "');", conn);

                   label22.Text = "Состояние: Удалено!";

                   n1.tab("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa;", dataGridView1, dataSet1, conn);

               }

               catch (Exception) { label22.Text = "Состояние: Ошибка!"; }

           }

           else

           {

               MessageBox.Show("Ошибка\n Невозможно удалить рейс из расписания, в виду того, что на него проданы билеты. Удаление возможно только после возврата билетов, либо принудительного удаления их из БД.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information);

           }

       }

       //

       //поиск по дате

       private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)

       {

           try

           {

               DateTime tm, tm2; tm = monthCalendar1.SelectionStart; tm2 = monthCalendar1.SelectionEnd;

               n1.tab("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa where ((vrvil>='" + tm.Year + "-" + tm.Month + "-" + tm.Day + " 00:00:00') and (vrvil<='" + tm2.Year + "-" + tm2.Month + "-" + tm2.Day + " 23:59:59')) or ((vrpril>='" + tm.Year + "-" + tm.Month + "-" + tm.Day + " 00:00:00') and (vrpril<='" + tm2.Year + "-" + tm2.Month + "-" + tm2.Day + " 23:59:59'));", dataGridView1, dataSet1, conn);

           }

           catch (Exception) { label22.Text = "Состояние: Ошибка!"; }

       }

       //

       //получение данных по выбранному рейсу

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               row = this.dataGridView1.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa where idraspis='" + row.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       comboBox7.Text = myReader.GetString(1);

                       comboBox1.Text = myReader.GetString(4);

                       DateTime t1 = myReader.GetDateTime(5);

                       dateTimePicker1.Value = t1; textBox2.Text = t1.Hour.ToString(); textBox3.Text = t1.Minute.ToString();

                       DateTime t2 = myReader.GetDateTime(6);

                       dateTimePicker2.Value = t2; textBox4.Text = t2.Hour.ToString(); textBox5.Text = t2.Minute.ToString();

                       try

                       {

                           comboBox6.Text = myReader.GetString(7);

                       }

                       catch (Exception)

                       {

                           comboBox6.SelectedIndex = -1;

                       }

                   }

                   myReader.Close();

                   //расчет расстояния по координатам(имеются погрешности и считает путь по прямой)

                   MySqlConnection con = new MySqlConnection(conn);

                   MySqlCommand com = new MySqlCommand("select b.kolmestbizn+b.kolmesteco,b.bak,b.maxdaln,c.shirota,c.dolgota,d.shirota,d.dolgota from airport.raspis a  inner join airport.reysy m on m.idreysy=a.idreysa inner join airport.air b on a.idair=b.idair inner join airport.punkt c on m.idpunotp=c.name  inner join airport.punkt d on m.ippunprib=d.name where a.idraspis='" + row.Cells[0].Value + "';", con);

                   con.Open();

                   MySqlDataReader myReader1 = com.ExecuteReader();

                   while (myReader1.Read())

                   {

                       textBox7.Text = myReader1.GetString(0);

                       textBox10.Text = myReader1.GetString(1);

                       textBox8.Text = myReader1.GetString(2);

                       double shir1 = myReader1.GetDouble(3);

                       double dolg1 = myReader1.GetDouble(4);

                       double shir2 = myReader1.GetDouble(5);

                       double dolg2 = myReader1.GetDouble(6);

                       double f1 = Convert.ToDouble(shir1) * Math.PI / 180;

                       double f2 = Convert.ToDouble(shir2) * Math.PI / 180;

                       double tp = Math.Abs((Convert.ToDouble(dolg1) * Math.PI / 180) - (Convert.ToDouble(dolg2) * Math.PI / 180));

                       double co1 = Math.Cos(f1); double si1 = Math.Sin(f1);

                       double co2 = Math.Cos(f2); double si2 = Math.Sin(f2);

                       double sit = Math.Sin(tp); double cot = Math.Cos(tp);

                       double a = Math.Sqrt(Math.Pow(co2 * sit, 2) + Math.Pow(co1 * si2 - si1 * co2 * cot, 2));

                       double b = si1 * si2 + co1 * co2 * cot;

                       double rez = 6372795 * Math.Atan2(a, b);

                       textBox6.Text = Convert.ToString(Math.Round(rez / 1000)) + " KM";

                   }

                   myReader1.Close();

                   con.Close();

               }

               catch (Exception ex)

               {

                   MessageBox.Show(ex.Message);

               }

               label22.Text = "Состояние:";

           }

       }

       //

       //переход на форму рейсов

       private void button8_Click(object sender, EventArgs e)

       {

           диспетчер_рейсы рейсы = new диспетчер_рейсы(_avt, this);

           рейсы.conn = this.conn;

           рейсы.ShowDialog();

       }

       //

       //вывод направления полета выбранного рейса

       private void comboBox7_SelectedIndexChanged(object sender, EventArgs e)

       {

           textBox1.Text = n1.zapsel("select a.idpunotp from airport.reysy a where a.idreysy='" + comboBox7.Text + "';", conn) + " - " + n1.zapsel("select a.ippunprib from airport.reysy a where a.idreysy='" + comboBox7.Text + "';", conn);

       }

       //

       //закрытие формы

       private void диспетчер_FormClosed(object sender, FormClosedEventArgs e)

       {

           _avt.Show();

       }

       //

       //обновление данных при активации формы

       private void диспетчер_Activated(object sender, EventArgs e)

       {

           comboBox1.Items.Clear();

           comboBox7.Items.Clear();

           textBox2.Clear();

           textBox3.Clear();

           textBox4.Clear();

           textBox5.Clear();

           comboBox6.Text = "";

           comboBox7.Text = "";

           comboBox1.Text = "";

           label22.Text = "Состояние:";

           n1.tab("select a.idraspis,a.idreysa,b.idpunotp,b.ippunprib,a.idair,a.vrvil,a.vrpril,a.sost from airport.raspis a left join airport.reysy b on b.idreysy=a.idreysa;", dataGridView1, dataSet1, conn);

           try

           {

               n1.dan("select idair from airport.air;", comboBox1, conn);

               n1.dan("select a.idreysy from airport.reysy a;", comboBox7, conn);

           }

           catch (Exception)

           {

               label22.Text = "Состояние: Ошибка!";

           }

       }

       //

   }

}

диспетчер_рейсы.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class диспетчер_рейсы : Form

   {

       //описание необходимых переменных

       private Form _avt;

       private Form _rasp;

       public string conn;

       internal DataGridViewRow reys;

       //

       //инициализаци формы

       public диспетчер_рейсы(Form avt,Form rasp)

       {

           InitializeComponent();

           _avt = avt;

           _rasp = rasp;

       }

       //

       //создание объекта класса io для соединения с бд

       io n1 = new io();

       //

       //заполнение начальными данными таблиц и выпадающих списков

       private void Form4_Load(object sender, EventArgs e)

       {

           n1.tab("select * from airport.reysy;", dataGridView1, dataSet1, conn);

           dataGridView1.Columns[0].HeaderText = "Номер рейса";

           dataGridView1.Columns[1].HeaderText = "Пункт отправления";

           dataGridView1.Columns[2].HeaderText = "Пункт прибытия";

           dataGridView1.Columns[3].HeaderText = "Стоимость билета эконом класса";

           dataGridView1.Columns[4].HeaderText = "Стоимость билета бизнес класса";

           try

           {

               n1.dan("select distinct a.city from airport.punkt a;", comboBox2, conn);

               n1.dan("select distinct a.city from airport.punkt a;", comboBox3, conn);

           }

           catch (Exception)

           {

               label22.Text = "Состояние: Ошибка!";

           }

       }

       //

       //Закрыть форму

       private void button1_Click(object sender, EventArgs e) { this.Close();}

       //

       //Очистить

       private void button6_Click(object sender, EventArgs e)

       {

           textBox1.Clear();

           n1.comcler(comboBox2);

           n1.comcler(comboBox3);

           n1.comcler(comboBox4);

           n1.comcler(comboBox5);

           textBox9.Clear();

           textBox11.Clear();

           label22.Text = "Состояние:";

           n1.tab("select * from airport.reysy;", dataGridView1, dataSet1, conn);

       }

       //

       //создание нового рейса

       private void button3_Click(object sender, EventArgs e)

       {

           try

           {

               if (textBox11.Text.Length == 0) textBox11.Text = "0";

               if (textBox9.Text.Length == 0) textBox9.Text = "0";

               if ((textBox1.Text == "") || (comboBox2.SelectedIndex == -1) || (comboBox3.SelectedIndex == -1) || (textBox9.Text == "") || (textBox11.Text == "")){ }

               else

               {

                   n1.zapins("insert into airport.reysy (idreysy,idpunotp,ippunprib,stoim,stoimbiz) values('" + textBox1.Text + "','" + comboBox4.Text + "','" + comboBox5.Text + "','" + textBox9.Text + "','" + textBox11.Text + "');", conn);

                   label22.Text = "Состояние: сохранено";

                   n1.tab("select * from airport.reysy;", dataGridView1, dataSet1, conn);

               }

           }

           catch (Exception) { label22.Text = "Состояние: Ошибка!"; }

       }

       //

       //изменение рейса

       private void button5_Click(object sender, EventArgs e)

       {

           try

           {

               if (textBox11.Text.Length == 0) textBox11.Text = "0";

               if (textBox9.Text.Length == 0) textBox9.Text = "0";

               n1.zapupd("update airport.reysy set idreysy='" + textBox1.Text + "',idpunotp='" + comboBox4.Text + "',ippunprib='" + comboBox5.Text + "',stoim='" + textBox9.Text + "',stoimbiz='" + textBox11.Text + "'  where (idreysy='" + reys.Cells[0].Value + "');", conn);

               n1.zapupd("update airport.raspis set idreysa='" + textBox1.Text + "' where (idreysa='" + reys.Cells[0].Value + "');", conn);

               label22.Text = "Состояние: изменения применены!";

               n1.tab("select * from airport.reysy;", dataGridView1, dataSet1, conn);

           }

           catch (Exception) { label22.Text = "Состояние: Ошибка!"; }

       }

       //

       //удаление рейса

       private void button7_Click(object sender, EventArgs e)

       {

           if (Convert.ToUInt32(n1.zapsel("select count(*) from airport.raspis a where a.idreysa='" + textBox1.Text + "';", conn)) == 0)

           {

               try

               {

                   n1.zapdel("delete from airport.reysy where (idreysy='" + reys.Cells[0].Value + "');", conn);

                   label22.Text = "Состояние: Удалено!";

                   n1.tab("select * from airport.reysy;", dataGridView1, dataSet1, conn);

               }

               catch (Exception) { label22.Text = "Состояние: Ошибка!"; }

           }

           else label22.Text = "Состояние: Ошибка! Удаление невозможно. В расписании имеются ссылки на данный рейс.";

       }

       //

       //получение данных по выбранному рейсу

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               reys = this.dataGridView1.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select * from airport.reysy where idreysy='" + reys.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       textBox1.Text = myReader.GetString(0);

                       comboBox4.Text = myReader.GetString(1);

                       comboBox5.Text = myReader.GetString(2);

                       comboBox2.Text = n1.zapsel("select city from airport.punkt where name='" + myReader.GetString(1) + "';", conn);

                       comboBox3.Text = n1.zapsel("select city from airport.punkt where name='" + myReader.GetString(2) + "';", conn);

                       textBox9.Text = myReader.GetString(3).Replace(',', '.');

                       textBox11.Text = myReader.GetString(4).Replace(',', '.');

                   }

                   myReader.Close();

               } catch (Exception ex) {MessageBox.Show(ex.Message);}

               label22.Text = "Состояние:";

           }

       }

       //

       //аэропорты в выбраном пункте отправления

       private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

       {

           comboBox4.Items.Clear();

           n1.dan("select name from airport.punkt where city='" + comboBox2.Text + "'", comboBox4, conn);

           comboBox4.SelectedIndex = 0;

       }

       //

       //аэропорты в выбраном пункте назначения

       private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)

       {

           comboBox5.Items.Clear();

           n1.dan("select name from airport.punkt where city='" + comboBox3.Text + "'", comboBox5, conn);

           comboBox5.SelectedIndex = 0;

       }

       private void диспетчер_рейсы_FormClosed (object sender, FormClosedEventArgs e) {_rasp.Focus();}

       //

   }

}

диспетчерскийотдел2.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class диспетчерский_отдел2 : Form

   {

       //объявление рабочих переменных

       private Form _avt;

       private Form _disp;

       public string conn;

       internal DataGridViewRow air;

       internal DataGridViewRow napr;

       //

       //инициализация формы

       public диспетчерский_отдел2(Form avt, Form disp1)

       {

           InitializeComponent();

           _avt = avt;

           _disp = disp1;

       }

       //

       //создание объекта класса io для соединения с бд

       io n1 = new io();

       //

       //завершение работы программы

       private void button1_Click(object sender, EventArgs e)

       {this.Close();}

       //

       //заполнение таблиц и выпадающих списков исходными данными

       private void диспетчерский_отдел2_Load(object sender, EventArgs e)

       {

           try

           {

               n1.tab("select * from airport.air;", dataGridView1, dataSet1, conn);

               dataGridView1.Columns[0].HeaderText = "Номер самолета";

               dataGridView1.Columns[1].HeaderText = "Производитель и модель";

               dataGridView1.Columns[2].HeaderText = "Серия и номер";

               dataGridView1.Columns[3].HeaderText = "Кол-во мест бизнес класса";

               dataGridView1.Columns[4].HeaderText = "Кол-во мест эконом класса";

               dataGridView1.Columns[5].HeaderText = "Бригада";

               dataGridView1.Columns[6].HeaderText = "Объем бака";

               dataGridView1.Columns[7].HeaderText = "Дальность полета";

               n1.tab("select * from airport.punkt;", dataGridView2, dataSet2, conn);

               dataGridView2.Columns[0].HeaderText = "Название";

               dataGridView2.Columns[1].HeaderText = "Широта";

               dataGridView2.Columns[2].HeaderText = "Долгота";

               dataGridView2.Columns[3].HeaderText = "Страна";

               dataGridView2.Columns[4].HeaderText = "Город";

               n1.dan("select a.idbrigady from airport.brigady a left join airport.otdel b on a.idotdela=b.idotdel where b.name='Обслуживания';", comboBox2, conn);

               n1.dan("select a.idbrigady from airport.brigady a left join airport.otdel b on a.idotdela=b.idotdel where b.name='Летный';", comboBox3, conn);

               n1.dan("select distinct aviakomp from airport.air;", comboBox1, conn);

           }

           catch (Exception) { label27.Text = "Состояние: ошибка!!!"; }

       }

       //

       //кнопка отчистки

       private void button7_Click(object sender, EventArgs e)

       {

          textBox12.Clear();

           textBox11.Clear();

           textBox10.Clear();

           textBox9.Clear();

           textBox8.Clear();

           textBox7.Clear();

           textBox1.Clear();

           comboBox2.SelectedIndex = -1;

           comboBox1.SelectedIndex = -1;

           label27.Text = "Состояние:";

       }

       //

       //кнопка отчистки

       private void button10_Click(object sender, EventArgs e)

       {

           textBox20.Clear();

           textBox19.Clear();

           textBox18.Clear();

           textBox17.Clear();

           label27.Text = "Состояние:";

       }

       //

       //пункты прибытия и отправления

       //создание нового

       private void button8_Click(object sender, EventArgs e)

       {

           try

           {

               n1.zapins("insert into airport.punkt (name,shirota,dolgota,strana,city) values('" + textBox20.Text + "','" + textBox19.Text + "','" + textBox18.Text + "','" + textBox17.Text + "','"+textBox2.Text+"');", conn);

                   label27.Text = "Состояние: сохранено";

           }

           catch (Exception) { label27.Text = "Состояние: ошибка!!!"; }

           n1.tab("select * from airport.punkt;", dataGridView2, dataSet2,conn);

       }

       //

       //обновление данных

       private void button11_Click(object sender, EventArgs e)

       {

           try

           {

               n1.zapupd("update airport.punkt set name='" + textBox20.Text + "', shirota='" + textBox19.Text.Replace(',', '.') + "' , dolgota='" + textBox18.Text.Replace(',', '.') + "' , strana='" + textBox17.Text + "', city = '" + textBox2.Text + "' where name='" + napr.Cells[0].Value + "';", conn);

               n1.zapupd("update airport.reysy set idpunotp='" + textBox20.Text + "' where idpunotp='" + napr.Cells[0].Value + "';", conn);

               n1.zapupd("update airport.reysy set ippunprib='" + textBox20.Text + "' where ippunprib='" + napr.Cells[0].Value + "';", conn);

               label27.Text = "Состояние: изменения применены!";

           }

           catch (Exception) { label27.Text = "Состояние: ошибка!!!"; }

           n1.tab("select * from airport.punkt;", dataGridView2, dataSet2, conn);

       }

       //

       //удаление

       private void button14_Click(object sender, EventArgs e)

       {

           try

           {

               if (n1.zapsel("select count(*) from airport.reysy a where a.idpunotp='" + napr.Cells[0].Value + "'", conn) == "0" && n1.zapsel("select count(*) from airport.reysy a where a.ippunprib='" + napr.Cells[0].Value + "'", conn) == "0")

               {

                   n1.zapdel("delete from airport.punkt where name='" + napr.Cells[0].Value + "';", conn);

               }

               else

               {

                   MessageBox.Show("Ошибка!\nНевозможно удалить так как на данный объект имеется ссылка", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);

               }

               label27.Text = "Состояние: удалено!";

           }

           catch (Exception) { label27.Text = "Состояние: ошибка!!!"; }

           n1.tab("select * from airport.punkt;", dataGridView2, dataSet2, conn);

       }

       //

       //

       //самолеты

       //обновление информации

       private void button6_Click(object sender, EventArgs e)

       {

           try

           {

               n1.zapupd("update airport.air set idair='" + textBox12.Text + "', proizv='" + textBox11.Text + "' , serialnomber='" + textBox10.Text + "' , kolmestbizn='" + textBox9.Text + "',kolmesteco='" + textBox1.Text + "' , idbrig='" + comboBox2.SelectedItem.ToString() + "' , bak='" + textBox8.Text + "' , maxdaln='" + textBox7.Text + "', aviakomp='" + comboBox1.Text + "',idletnbrig='"+comboBox3.Text+"' where idair='" + air.Cells[0].Value + "';", conn);

               n1.zapupd("update airport.raspis set idair='" + textBox12.Text + "' where idair='" + air.Cells[0].Value + "';", conn);

               label27.Text = "Состояние: изменения применены!";

           }

           catch (Exception) { label27.Text = "Состояние: ошибка!!!"; }

           n1.tab("select * from airport.air;", dataGridView1, dataSet1, conn);

       }

       //

       //добавление нового

       private void button4_Click(object sender, EventArgs e)

       {

           try

           {

               n1.zapins("insert into airport.air (idair,proizv,serialnomber,kolmestbizn,kolmesteco,idbrig,bak,maxdaln,aviakomp,idletnbrig) values('" + textBox12.Text + "','" + textBox11.Text + "','" + textBox10.Text + "','" + textBox9.Text + "','" + textBox1.Text + "','" + comboBox2.SelectedItem.ToString() + "','" + textBox8.Text + "','" + textBox7.Text + "','" + comboBox1.Text + "','"+comboBox3.Text+"');", conn);

                   label27.Text = "Состояние: изменения применены!";

           }

           catch (Exception) { label27.Text = "Состояние: ошибка!!!"; }

           n1.tab("select * from airport.air;", dataGridView1, dataSet1,conn);

       }

       //

       //удаление

       private void button13_Click(object sender, EventArgs e)

       {

           try

           {

               if (n1.zapsel("select count(*) from airport.raspis a where a.idair='"+air.Cells[0].Value+"'", conn) == "0")

               {

                   n1.zapdel("delete from airport.air where idair='" + air.Cells[0].Value + "';", conn);

                   label27.Text = "Состояние: удалено!";

               }

               else

               {

                   MessageBox.Show("Ошибка!\nНевозможно удалить так как на данный объект имеется ссылка", "Внимание",MessageBoxButtons.OK,MessageBoxIcon.Error);

               }

           }

           catch (Exception) { label27.Text = "Состояние: ошибка!!!"; }

           n1.tab("select * from airport.air;", dataGridView1, dataSet1, conn);

       }

       //

       //

       //обновить

       private void button12_Click(object sender, EventArgs e)

       {

           n1.tab("select * from airport.air;", dataGridView1, dataSet1,conn);

           n1.tab("select * from airport.punkt;", dataGridView2, dataSet2,conn);

       }

       //

       //выбор из таблицы самолетов

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               air = this.dataGridView1.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select * from airport.air where idair='" + air.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       textBox12.Text = myReader.GetString(0);

                       textBox11.Text = myReader.GetString(1);

                       textBox10.Text = myReader.GetString(2);

                       textBox9.Text = myReader.GetUInt32(3).ToString();

                       textBox1.Text = myReader.GetUInt32(4).ToString();

                       comboBox2.SelectedIndex = myReader.GetInt32(5)-1;

                       textBox8.Text = myReader.GetString(6);

                       textBox7.Text = myReader.GetString(7);

                       comboBox1.Text = myReader.GetString(8);

                       comboBox3.Text = myReader.GetString(9);

                   }

               }

               catch (Exception ex)

               {

                   MessageBox.Show(ex.Message);

               }

               label27.Text = "Состояние:";

           }

       }

       //

       //выбор из таблицы пунктов

       private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               napr = this.dataGridView2.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select * from airport.punkt where name='" + napr.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       textBox20.Text = myReader.GetString(0);

                       textBox19.Text = myReader.GetString(1).Replace(',','.');

                       textBox18.Text = myReader.GetString(2).Replace(',','.');

                       textBox17.Text = myReader.GetString(3);

                       textBox2.Text = myReader.GetString(4);

                   }

               }

               catch (Exception ex)

               {

                   MessageBox.Show(ex.Message);

               }

               label27.Text = "Состояние:";

           }

       }

       //

       //закрытие формы

       private void диспетчерский_отдел2_FormClosed(object sender, FormClosedEventArgs e)

       {

           _disp.Focus();

       }

       //

   }

}

комплектованиебригад.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using Microsoft.Office.Interop;

namespace airport

{

   public partial class комплектованиебригад : Form

   {

       //описание необходимых переменных

       internal Form _avt;

       internal Form kadry;

       internal string conn;

       internal DataGridViewRow row;

       //

       //инициализация формы

       public комплектованиебригад(Form avt, Form otdkad, string _con)

       {

           InitializeComponent();

           _avt = avt;

           kadry = otdkad;

           conn = _con;

       }

       //

       //создание объекта класса io обеспечиваюшего соединение и обмен данными с бд

       io n1 = new io();

       //

       //процедура изменяющая вид формы и заполняющея таблицу с сотрудниками

       //необходимыми данными

       private void комплектованиебригад_Load(object sender, EventArgs e)

       {

           //this.Height = Screen.PrimaryScreen.WorkingArea.Height;

           //this.Width = Screen.PrimaryScreen.WorkingArea.Width;

           n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

           sotrbrig.Columns[0].HeaderText = "№ сотрудника";

           sotrbrig.Columns[1].HeaderText = "ФИО";

           sotrbrig.Columns[2].HeaderText = "Отдел";

           sotrbrig.Columns[3].HeaderText = "№ бригады";

           sotrbrig.Columns[4].HeaderText = "Должность";

           sotrbrig.Columns[5].HeaderText = "Начальник отдела";

           sotrbrig.Columns[6].HeaderText = "Старший бригады";

           sotrbrig.Columns[7].HeaderText = "Сосояние";

           n1.dan("select name from airport.otdel", comboBox1, conn);

           button1.Enabled = false;

       }

       //

       //выполняется при закрытии формы и необходима для возвращения на предыдущую форму

       private void комплектованиебригад_FormClosed(object sender, FormClosedEventArgs e)

       {

           kadry.Focus();

       }

       //

       //заполнение таблицы в которой содержатся сотрудники конкретного отдела

       private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

       {

           comboBox2.Text = ""; comboBox2.Items.Clear();

           n1.dan("select idbrigady from airport.brigady a left join airport.otdel b on a.idotdela=b.idotdel where b.name='" + comboBox1.Text + "'", comboBox2, conn);

           n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

           dataGridView1.Columns[0].HeaderText = "ФИО";

           dataGridView1.Columns[1].HeaderText = "Отдел";

           dataGridView1.Columns[2].HeaderText = "№ бригады";

           dataGridView1.Columns[3].HeaderText = "Должность";

           progressBar1.Maximum = Convert.ToInt32(n1.zapsel("select shtat from airport.otdel b where b.name='" + comboBox1.Text + "'", conn));

           progressBar1.Value = progressBar1.Maximum - Convert.ToInt32(n1.zapsel("select b.shtat-count(idsotr) from airport.sotr a right join airport.otdel b on a.idotd=b.idotdel where b.name='" + comboBox1.Text + "';", conn));

           button1.Enabled = false;

       }

       //

       //заполнение таблицы в которой содержатся сотрудники конкретной бригады

       private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

       {

           n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where a.idbrig='" + comboBox2.Text + "' and b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

           if (comboBox2.Text != "") { button1.Enabled = true; } else { button1.Enabled = false; }

       }

       //

       //перевод сотрудника в выбранный отдел и бригаду

       private void button1_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               if (progressBar1.Value < progressBar1.Maximum)

               {

                   n1.zapupd("update airport.sotr set idbrig='" + comboBox2.Text + "', idotd=(select idotdel from airport.otdel where name='" + comboBox1.Text + "') where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "'", conn);

                   n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

                   label6.Text = "сотрудник - " + row.Cells[1].Value + "переведен в отдел: " + comboBox1.Text + ",бригаду № " + comboBox2.Text;

                   progressBar1.Maximum = Convert.ToInt32(n1.zapsel("select shtat from airport.otdel b where b.name='" + comboBox1.Text + "'", conn));

                   progressBar1.Value = progressBar1.Maximum - Convert.ToInt32(n1.zapsel("select b.shtat-count(idsotr) from airport.sotr a right join airport.otdel b on a.idotd=b.idotdel where b.name='" + comboBox1.Text + "';", conn));

                   n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where a.idbrig='" + comboBox2.Text + "' and b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

               }

               else { label6.Text = "ошибка!!! - отдел полностью укомплектован"; }

           }

           else label6.Text = "Не выбран сотрудник";

       }

       //выбор сотрудника из таблицы

       private void sotrbrig_CellClick(object sender, DataGridViewCellEventArgs e)

       { if (e.RowIndex >= 0) { this.row = this.sotrbrig.Rows[e.RowIndex]; } }

       //

       //Назначение сотрудника начальником в отделе

       private void button2_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               if (n1.zapsel("select a.idsotr from airport.sotr a where a.idotd=(select a.idotd from airport.sotr a where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "') and a.nachotd='Да'", conn) != "0")

               { label6.Text = "Ошибка, в данном отделе имеется действующий начальник."; }

               else

               {

                   n1.zapupd("update airport.sotr set nachotd='Да',idbrig='0',nachbrig='Нет' where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "';", conn);

                   label6.Text = "сотрудник - " + row.Cells[1].Value + "назначен начальником в отдел:" + row.Cells[2].Value;

                   n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

                   n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

               }

           }

           else label6.Text = "Не выбран сотрудник.";

       }

       //

       //процедура перевода сотрудника в выбранный отдел

       private void button6_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               if (progressBar1.Value < progressBar1.Maximum)

               {

                   n1.zapupd("update airport.sotr set idbrig='0',idotd=(select idotdel from airport.otdel where name='" + comboBox1.Text + "') where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "';", conn);

                   label6.Text = "сотрудник - " + row.Cells[1].Value + " переведен в отдел: " + comboBox1.Text;

                   n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

                   progressBar1.Maximum = Convert.ToInt32(n1.zapsel("select shtat from airport.otdel b where b.name='" + comboBox1.Text + "'", conn));

                   progressBar1.Value = progressBar1.Maximum - Convert.ToInt32(n1.zapsel("select b.shtat-count(idsotr) from airport.sotr a right join airport.otdel b on a.idotd=b.idotdel where b.name='" + comboBox1.Text + "';", conn));

                   n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

               }

               else { label6.Text = "ошибка!!! - отдел полностью укомплектован"; }

           }

           else label6.Text = "Не выбран сотрудник";

       }

       //

       //назначение сотруднка старшим в бригады

       private void button3_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               if ((n1.zapsel("select a.idbrig from airport.sotr a where a.idbrig=(select a.idbrig from airport.sotr a where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "') and a.nachbrig='Да'", conn) != "0") || (row.Cells[3].Value.ToString() == "0"))

               { label6.Text = "Ошибка"; }

               else

               {

                   n1.zapupd("update airport.sotr set nachbrig='Да' where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "';", conn);

                   label6.Text = "сотрудник - " + row.Cells[1].Value + " назначен старшим  в бригаду № " + row.Cells[3].Value + "\n отдела: " + row.Cells[2].Value;

                   n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

                   n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where a.idbrig='" + comboBox2.Text + "' and b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

               }

           }

           else label6.Text = "Не выбран сотрудник";

       }

       //

       //изменение статуса сотрудника на - в отпуске

       private void button4_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               try {

                   n1.sotrsost("В отпуске", row, conn); label6.Text = "сотрудника - " + row.Cells[1].Value + " изменено";

               }

               catch (Exception)

               {

                   label6.Text = "не выбран сотрудник";

               }

               n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

           }

           else label6.Text = "Не выбран сотрудник";

       }

       //

       //изменение состояния сотрудника на - на больничном

       private void button5_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               try

               {

                   n1.sotrsost("На больничном", row, conn); label6.Text = "сотрудника - " + row.Cells[1].Value + " изменено";

               }

               catch (Exception)

               {

                   label6.Text = "не выбран сотрудник";

               }

               n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

           }

           else label6.Text = "Не выбран сотрудник";

       }

       //

       //возвращение на предыдущую форму

       private void button7_Click(object sender, EventArgs e) { this.Close(); }

       //назначение начальником отдела

       private void button8_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               n1.zapupd("update airport.sotr set nachotd='Нет',idbrig='0',nachbrig='Нет' where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "';", conn);

               label6.Text = "сотрудник - " + row.Cells[1].Value + "Снят с должности начальника отдела: " + row.Cells[2].Value;

               n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

               n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

           }

           else label6.Text = "Не выбран сотрудник";

       }

       //

       //назначение старшим в бригаде

       private void button9_Click(object sender, EventArgs e)

       {

           if (n1.rows(row))

           {

               n1.zapupd("update airport.sotr set nachbrig='Нет' where idsotr='" + row.Cells[0].Value + "' and fio='" + row.Cells[1].Value + "';", conn);

               label6.Text = "сотрудник - " + row.Cells[1].Value + " снят с должности старшего бригады № " + row.Cells[3].Value + "\n отдела: " + row.Cells[2].Value;

               n1.tab("select a.idsotr,a.fio,b.name,a.idbrig,c.name,a.nachotd,a.nachbrig,a.sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", sotrbrig, sotr, conn);

               n1.tab("select a.fio,b.name,a.idbrig,c.name from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn where a.idbrig='" + comboBox2.Text + "' and b.name='" + comboBox1.Text + "';", dataGridView1, brig, conn);

           }

           else label6.Text = "Не выбран сотрудник";

       }

       //

   }

}

отделкадров.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class отдел_кадров : Form

   {

       //объявление необходимых переменных

       private Form _avt;

       public string conn;

       internal DataGridViewRow sotr;

       //

       //инициализация формы

       public отдел_кадров(Form avt) { InitializeComponent(); _avt = avt; }

       //

       //создание объекта класса io для обеспечения связи с бд

       io n1 = new io();

       //

       //завершение работы программы

       private void button1_Click_1(object sender, EventArgs e) { n1.exapp(); }

       //

       //переход на форму авторизации

       private void button2_Click(object sender, EventArgs e) { this.Close(); }

       //

       //заполнение объектов формы исходными данными

       private void Form2_Load(object sender, EventArgs e)

       {

           this.Height = Screen.PrimaryScreen.WorkingArea.Height;

           this.Width = Screen.PrimaryScreen.WorkingArea.Width;

           n1.dan("select distinct name from airport.dolzn;", comboBox8, conn);

           n1.dan("select distinct name from airport.otdel;", comboBox10, conn);

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,a.idbrig,b.name,c.name,a.nachotd,a.nachbrig,sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", dataGridView1, dataSet1, conn);

           dataGridView1.Columns[0].HeaderText = "Номер сотрудника";

           dataGridView1.Columns[1].HeaderText = "ФИО";

           dataGridView1.Columns[2].HeaderText = "Дата рождения";

           dataGridView1.Columns[3].HeaderText = "Дата приема на работу";

           dataGridView1.Columns[4].HeaderText = "Номер бригады";

           dataGridView1.Columns[5].HeaderText = "Отдел";

           dataGridView1.Columns[6].HeaderText = "Код должности";

           dataGridView1.Columns[7].HeaderText = "Начальник отдела";

           dataGridView1.Columns[8].HeaderText = "Старший по бригаде";

           dataGridView1.Columns[9].HeaderText = "Состояние";

       }

       //

       //переход на форму отделы

       private void button5_Click(object sender, EventArgs e)

       {

           отделы отделы = new отделы(_avt, this);

           отделы.conn = this.conn;

           отделы.ShowDialog();

       }

       //

       //выбор сотрудника из таблицы

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

                sotr= this.dataGridView1.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select * from airport.sotr a inner join airport.polzov b on a.idsotr=b.idpolz inner join airport.dolzn c on a.iddolzn=c.iddolzn where a.idsotr='" + sotr.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       textBox8.Text = myReader.GetString(0);//номер сотрудника

                       textBox6.Text = myReader.GetString(1);//фио

                       dateTimePicker4.Value = myReader.GetDateTime(2).Date;//дата рождения

                       dateTimePicker3.Text = myReader.GetString(3);//дата приема на работу

                       comboBox10.Text = n1.zapsel("select a.name from airport.otdel a where a.idotdel='"+myReader.GetInt32(5)+"';", conn);//заполнение номера отдела

                       int br = myReader.GetInt32(4);

                       comboBox9.Items.Clear(); comboBox9.Text ="";

                       n1.dan("select * from airport.brigady a left join airport.otdel b on a.idotdela=b.idotdel where b.name='" + comboBox10.SelectedItem.ToString() + "';", comboBox9, conn);

                       if (br != 0) { comboBox9.Text = br.ToString(); }//заполнение номера бригады

                       else { comboBox9.Text = ""; }

                       comboBox8.Text = myReader.GetString(14);//заполнение должностей

                       textBox1.Text = myReader.GetString(11);//вывод логина

                       textBox2.Text = myReader.GetString(12);//вывод пароля

                       this.comboBox10_SelectedIndexChanged(comboBox10, System.EventArgs.Empty);//расчет кол-ва мест в отделе

                   }

               }

               catch (Exception ex) { MessageBox.Show(ex.Message); }//при ошибке выводися сообщение с кодом ошибки

               label20.Text = "Состояние:";

           }

       }

       //

       //добавление сотрудника

       private void button3_Click(object sender, EventArgs e)

       {

           try

           {

               if (comboBox9.Text == "") comboBox9.Text = "0";

               DateTime t1, t2; t1 = dateTimePicker4.Value; t2 = dateTimePicker3.Value;

               n1.zapins("insert into airport.sotr (idsotr,fio,datarozd,dataprin,idotd,idbrig,iddolzn,nachotd,nachbrig,sostsotr) value('" + textBox8.Text + "','" + textBox6.Text + "','" + t1.Year + "-" + t1.Month + "-" + t1.Day + " 00:00:00','" + t2.Year + "-" + t2.Month + "-" + t2.Day + " 00:00:00',(select idotdel from airport.otdel  where name='" + comboBox10.Text + "'),'" + comboBox9.Text + "','" + (comboBox8.SelectedIndex + 1).ToString() + "','Нет','Нет','Работает'); insert into airport.polzov (idpolz,login,pass) value('" + textBox8.Text + "','" + textBox1.Text + "','" + textBox2.Text + "');", conn);//записываем нового сотрудника в базу данных

               n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,a.idbrig,b.name,c.name,a.nachotd,a.nachbrig,sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", dataGridView1, dataSet1, conn);//обновляем данные в таблице

               label20.Text = "Состояние: Записано";//сообщаем пользователю о состоянии записи

           }

           catch (Exception ex)

           {

               label20.Text = "Состояние: Ошибка при записи:\n " + ex.Message;

           }

       }

       //

       //удаление сотрудника

       private void button7_Click(object sender, EventArgs e)

       {

           try

           {

               n1.zapdel("delete from airport.sotr where idsotr='" + sotr.Cells[0].Value + "';delete from airport.polzov where idpolz='" + sotr.Cells[0].Value + "';", conn);

               n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,a.idbrig,b.name,c.name,a.nachotd,a.nachbrig,sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", dataGridView1, dataSet1, conn);

               label20.Text = "Состояние: Удалено";

           }

           catch (Exception ex)

           {

               label20.Text = "Состояние: Ошибка при записи:\n " + ex.Message;

           }

       }

       //

       //обновление данных о сотруднике

       private void button6_Click(object sender, EventArgs e)

       {

           try

           {

               if (comboBox9.Text == "") comboBox9.Text = "0";

               DateTime t1, t2; t1 = dateTimePicker4.Value; t2 = dateTimePicker3.Value;

               { n1.zapupd("update airport.sotr set idsotr='" + textBox8.Text + "', fio='" + textBox6.Text + "', datarozd='" + t1.Year + "-" + t1.Month + "-" + t1.Day + "',dataprin='" + t2.Year + "-" + t2.Month + "-" + t2.Day + "',idbrig='" + comboBox9.Text + "',idotd=(select idotdel from airport.otdel  where name='" + comboBox10.Text + "'), iddolzn='" + (n1.zapsel("select a.iddolzn from airport.dolzn a where a.name='" + comboBox8.Text + "';", conn)) + "' where idsotr='" + sotr.Cells[0].Value + "';update airport.polzov set login='" + textBox1.Text + "', pass='" + textBox2.Text + "' where idpolz='" + sotr.Cells[0].Value + "';", conn); }

               n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,a.idbrig,b.name,c.name,a.nachotd,a.nachbrig,sostsotr from airport.sotr a left join airport.otdel b on a.idotd=b.idotdel left join airport.dolzn c on a.iddolzn=c.iddolzn;", dataGridView1, dataSet1, conn);

               label20.Text = "Состояние: изменения внесены";

           }

           catch (Exception ex)

           {

               label20.Text = "Состояние: Ошибка при записи:\n " + ex.Message;

           }

       }

       //

       //кнопка очистить

       private void button4_Click(object sender, EventArgs e)

       {

           textBox6.Clear();

           textBox8.Clear();

           textBox7.Clear();

           textBox1.Clear();

           textBox2.Clear();

           dateTimePicker3.Value = DateTime.Now;

           dateTimePicker4.Value = DateTime.Now;

           comboBox9.Items.Clear();

           comboBox9.Text = ""; comboBox8.Text = ""; comboBox10.Text="";

       }

       //

       //переход на форму комплектования бригад и отделов

       private void button8_Click(object sender, EventArgs e)

       {

           комплектованиебригад бр = new комплектованиебригад(_avt, this, this.conn);

           бр.ShowDialog();

           

       }

       //

       //определение кол-ва свободных мест в отделе

       private void comboBox10_SelectedIndexChanged(object sender, EventArgs e)

       {

           try

           {

               comboBox9.Items.Clear();

               n1.dan("select * from airport.brigady a left join airport.otdel b on a.idotdela=b.idotdel where b.name='" + comboBox10.SelectedItem.ToString() + "';", comboBox9, conn);

               textBox7.Text = n1.zapsel("select b.shtat-count(idsotr) from airport.sotr a right join airport.otdel b on a.idotd=b.idotdel where b.name='" + comboBox10.Text + "';", conn);

           }

           catch (Exception ex)

           {

               label20.Text = "Состояние: Ошибка при чтании из БД:\n " + ex.Message;

           }

       }

       //

       //обновление данных формы при ее активации

       private void отдел_кадров_Activated(object sender, EventArgs e)

       {

           dataGridView1.Height = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Height * 0.3);

           dataGridView1.Width = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Width * 0.9);

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,a.idbrig,b.name,c.name,a.nachotd,a.nachbrig,sostsotr from airport.sotr a inner join airport.otdel b on a.idotd=b.idotdel inner join airport.dolzn c on a.iddolzn=c.iddolzn;", dataGridView1, dataSet1, conn);

           comboBox10.Items.Clear();

           comboBox8.Items.Clear();

           n1.dan("select distinct name from airport.dolzn;", comboBox8, conn);

           n1.dan("select distinct name from airport.otdel;", comboBox10, conn);

           button4_Click(this, e);

       }

       //

       //закрытие формы

       private void отдел_кадров_FormClosed(object sender, FormClosedEventArgs e)

       {

           _avt.Show();

       }

       //

   }

}

отдел продаж.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using Word =Microsoft.Office.Interop.Word;

namespace airport

{

   public partial class отдел_продаж : Form

   {

       /*объявление необходимых переменных*/

       private Form _avt;

       public string conn;

       private DataGridViewRow row;

       //

       /*инициализация формы*/

       public отдел_продаж(Form avt)

       {

           InitializeComponent();

           _avt = avt;

       }

       //

       

       /*создание объекта класса io для обеспечения доступа к бд*/

       io n1 = new io();

       //

       /*заполнение данными таблиц и выпадающих списков*/

       private void отдел_продаж_Load(object sender, EventArgs e)

       {

          this.Height = Screen.PrimaryScreen.WorkingArea.Height;

          this.Width = Screen.PrimaryScreen.WorkingArea.Width;

           n1.tab("select a.idraspis,a.idreysa,a.idair,c.proizv,c.aviakomp,b.idpunotp,b.ippunprib,a.vrvil,a.vrpril,a.sost from airport.raspis a  inner join airport.reysy b on a.idreysa=b.idreysy inner join airport.air c on c.idair=a.idair where vrvil>Now();", dataGridView1, dataSet1, conn);

           dataGridView1.Columns[0].HeaderText = "номер записи";

           dataGridView1.Columns[1].HeaderText = "номер рейса";

           dataGridView1.Columns[2].HeaderText = "номер самолета";

           dataGridView1.Columns[3].HeaderText = "тип самолета";

           dataGridView1.Columns[4].HeaderText = "авиакомпания перевозчик";

           dataGridView1.Columns[5].HeaderText = "пункт отправления";

           dataGridView1.Columns[6].HeaderText = "Пункт прибытия";

           dataGridView1.Columns[7].HeaderText = "время вылета";

           dataGridView1.Columns[8].HeaderText = "время прилета";

           dataGridView1.Columns[9].HeaderText = "состояние";

           n1.dan("select distinct idpunotp from airport.reysy;", comboBox1,conn);

           n1.dan("select distinct ippunprib from airport.reysy;", comboBox2,conn);

           button3.Enabled = false;

       }

       //

       /*выход из программы*/

       private void button1_Click(object sender, EventArgs e) { n1.exapp(); }

       //

       /*смена пользователя*/

       private void button2_Click(object sender, EventArgs e) { this.Close(); }

       //

       /*вывод рейсов на конкретную дату*/

       private void button4_Click(object sender, EventArgs e)

       {

           DateTime t = dateTimePicker1.Value;

           try

           {

               n1.tab("select a.idraspis,a.idreysa,a.idair,c.proizv,c.aviakomp,b.idpunotp,b.ippunprib,a.vrvil,a.vrpril,a.sost from airport.raspis a  inner join airport.reysy b on a.idreysa=b.idreysy inner join airport.air c on c.idair=a.idair where (idpunotp='" + comboBox1.Text + "') and (ippunprib='" + comboBox2.Text + "') and (vrvil>='" + t.Year.ToString() + "-" + t.Month.ToString() + "-" + t.Day.ToString() + " 00:00:00') and (vrvil<='" + t.Year.ToString() + "-" + t.Month.ToString() + "-" + t.Day.ToString() + " 23:59:59');", dataGridView1, dataSet1, conn);

               row = dataGridView1.Rows[0];

               DataGridViewCellEventArgs m=new DataGridViewCellEventArgs(0,0);

               dataGridView1_CellClick(button4, m);

           }

           catch (Exception)

           {

               label13.Text = "Состояние: Ошибка ввода данных";

           }

       }

       //

       /*покупка билета*/

       private void button3_Click_1(object sender, EventArgs e)

       {

           //проверка ввода данных в обязательные поля

           if (textBox2.Text == "" || textBox3.Text == "")

           {

               label13.Text = " Состояние: ошибка!!! проверьте поля обязательные для ввода";

           }

           else

               try

               {

                   int chek = 0; float cenabil = 0;

                   DateTime t, tt;

                   t = dateTimePicker2.Value; tt = dateTimePicker3.Value;

                   if (checkBox1.Checked) chek = 1;//определение льготного проезда

                   if (n1.zapsel("select a.* from airport.raspis a  inner join airport.reysy b on a.idreysa=b.idreysy inner join airport.air c on c.idair=a.idair where vrvil>Now() and a.idraspis='" + Convert.ToString(row.Cells[0].Value) + "';", conn) != "0")

                   {

                       if (textBox1.Text != "0")

                       {

                           n1.zapins("insert into airport.tikets (idtikets,idreysa,fio,sernompasp,datavidpasp,dopinf,datarozd,grazd,lgot,econbizn) values('" + textBox7.Text + "','" + row.Cells[0].Value + "','" + textBox2.Text + "','" + textBox3.Text + "','" + t.Year + "-" + t.Month + "-" + t.Day + "','" + textBox4.Text + "','" + tt.Year + "-" + tt.Month + "-" + tt.Day + "','" + textBox5.Text + "','" + (Convert.ToInt32(checkBox1.Checked)).ToString() + "','" + comboBox3.SelectedIndex + "');", conn);

                           

                          if (comboBox3.SelectedIndex == 0)

                          {

                               cenabil = Convert.ToSingle(n1.zapsel("select stoim from airport.reysy a where idreysy='" + row.Cells[1].Value + "';", conn));

                          }

                          else

                          {

                               cenabil = Convert.ToSingle(n1.zapsel("select stoimbiz from airport.reysy a where idreysy='" + row.Cells[1].Value + "';", conn));

                          }

                          textBox6.Text = (cenabil - (chek * cenabil * 0.02)).ToString() + " руб.";

                          label13.Text = "Состояние: успешно";

                         //печать билета

                           n1.printbilet(textBox7.Text, conn);

                       }

                       else

                       {

                           label13.Text = "Состояние: свободных мест нет";

                       }

                   }

                   else

                   {

                       label13.Text = "Состояние: покупка билетов закрыта";

                   }

               }

               catch (Exception ex)

               {

                   label13.Text = " Состояние: не успешно"; MessageBox.Show(ex.ToString());

               }

           button6_Click(button3, e);

       }

       //

       /*переход на форму редактирования данных и возврата билета*/

       private void button5_Click(object sender, EventArgs e)

       {

           Form1 Form1 = new Form1(_avt,this);

           Form1.conn = this.conn;

           Form1.ShowDialog();

       }

       //

       /*выбор класса посадочного места в самолете*/

       private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)

       {

           if (comboBox3.Text == "Бизнес")

           {

               if (Convert.ToInt32(textBox9.Text)!=0) { button3.Enabled=true;}

               checkBox1.Checked = false;

               checkBox1.Enabled = false;

           }

           else

           {

               checkBox1.Enabled = true;

               if (Convert.ToInt32(textBox8.Text) != 0) { button3.Enabled = true; }

           }

       }

       //

       /*расчет кол-ва мест на выбранном рейсе и генерация номера билета*/

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               row = this.dataGridView1.Rows[e.RowIndex];

               try

               {

                   textBox8.Text = n1.zapsel("select a.kolmesteco- count(*) from airport.air a inner join airport.raspis b on a.idair=b.idair left join airport.tikets c on c.idreysa=b.idraspis where idraspis='" + row.Cells[0].Value + "' and c.econbizn=0;", conn);

                   textBox9.Text = n1.zapsel("select a.kolmestbizn- count(*) from airport.air a inner join airport.raspis b on a.idair=b.idair left join airport.tikets c on c.idreysa=b.idraspis where idraspis='" + row.Cells[0].Value + "' and c.econbizn=1;", conn);

                   textBox1.Text = (Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text)).ToString();

                   if ((Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text)) > 0)

                   {

                       textBox7.Text = row.Cells[0].Value + "-" + textBox1.Text + "-" + "vl" + dateTimePicker1.Value.ToShortDateString() + "-pr" + DateTime.Today.ToShortDateString();

                       button3.Enabled = false;

                   }

                   else textBox1.Text = "Отсутствуют";

               }

               catch (Exception ex)

               {

                   MessageBox.Show(ex.Message);

               }

           }

       }

       //

       //закрытие формы

       private void отдел_продаж_FormClosed(object sender, FormClosedEventArgs e)

       {

           _avt.Show();

       }

       private void отдел_продаж_Activated(object sender, EventArgs e)

       {

           comboBox1.Items.Clear();

           comboBox2.Items.Clear();

           n1.tab("select a.idraspis,a.idreysa,a.idair,c.proizv,c.aviakomp,b.idpunotp,b.ippunprib,a.vrvil,a.vrpril,a.sost from airport.raspis a  inner join airport.reysy b on a.idreysa=b.idreysy inner join airport.air c on c.idair=a.idair where vrvil>Now();", dataGridView1, dataSet1, conn);

           n1.dan("select distinct idpunotp from airport.reysy;", comboBox1, conn);

           n1.dan("select distinct ippunprib from airport.reysy;", comboBox2, conn);

       }

       //

       //очистить форму

       private void button6_Click(object sender, EventArgs e)

       {

           comboBox1.Text = "";

           comboBox2.Text = "";

           comboBox3.Text = "";

           textBox1.Clear();

           textBox2.Clear();

           textBox3.Clear();

           textBox4.Clear();

           textBox5.Clear();

           textBox6.Clear();

           textBox7.Clear();

           textBox8.Clear();

           textBox9.Clear();

           DateTimePicker t = new DateTimePicker();

           dateTimePicker1.Value = t.Value;

           dateTimePicker2.Value = t.Value;

           dateTimePicker3.Value = t.Value;

           t.Dispose();

           checkBox1.Checked = false;

       }

       //

   }

}

отдел продаж2.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using Word = Microsoft.Office.Interop.Word;

using System.IO;

namespace airport

{

   public partial class Form1 : Form

   {

       //объявление рабочих переменных

       private Form _avt;

       private Form _pok;

       private DataGridViewRow row;

       public string conn;

       //

       //инициализация формы

       public Form1(Form avt, Form pok)

       {

           InitializeComponent();

           _avt = avt;

           _pok = pok;

       }

       //

       //создание объекта класса io для соединения с бд

       io n1 = new io();

       //

       //заполнение исходными данными таблиц и выпадающих списков

       private void Form1_Load(object sender, EventArgs e)

       {

           n1.tab("select * from airport.tikets;", dataGridView2, dataSet1, conn);

           dataGridView2.Columns[0].HeaderText = "Номер билета";

           dataGridView2.Columns[1].HeaderText = "Номер рейса";

           dataGridView2.Columns[2].HeaderText = "ФИО Пассажира";

           dataGridView2.Columns[3].HeaderText = "Серия и номер паспорта";

           dataGridView2.Columns[4].HeaderText = "Дата выдачи паспорта";

           dataGridView2.Columns[5].HeaderText = "Дополнительная информация";

           dataGridView2.Columns[6].HeaderText = "Дата рождения";

           dataGridView2.Columns[7].HeaderText = "Гражданство";

           dataGridView2.Columns[8].HeaderText = "Льготы(1-да,0-нет)";

           dataGridView2.Columns[9].HeaderText = "1-Бизнесс класс,0-эконом класс)";

           n1.dan("select distinct b.idreysy from airport.raspis a inner join airport.reysy b on a.idreysa=b.idreysy where vrvil>=now();", comboBox4, conn);

       }

       //

       //выбор даты полета пассвжира

       private void monthCalendar2_DateSelected(object sender, DateRangeEventArgs e)

       {

           comboBox4.Items.Clear(); n1.comcler(comboBox4);

           string time = monthCalendar2.SelectionStart.Year.ToString() + "-" + monthCalendar2.SelectionStart.Month.ToString() + "-" + monthCalendar2.SelectionStart.Day.ToString() + " 00:00:00";

           string time1 = monthCalendar2.SelectionEnd.Year.ToString() + "-" + monthCalendar2.SelectionEnd.Month.ToString() + "-" + monthCalendar2.SelectionEnd.Day.ToString() + " 23:59:59";

           n1.tab("select a.* from airport.tikets a  inner join airport.raspis b on a.idreysa=b.idreysa where (b.vrvil>='" + time + "') and (b.vrvil<'" + time1 + "');", dataGridView2, dataSet1, conn);

           n1.dan("select distinct b.idreysy from airport.raspis a inner join airport.reysy b on a.idreysa=b.idreysy where (a.vrvil>='" + time + "') and (a.vrvil<='" + time1 + "');", comboBox4, conn);

       }

       //

       //выбор номера рейса

       private void comboBox4_SelectionChangeCommitted(object sender, EventArgs e)

       {

           comboBox3.Items.Clear(); n1.comcler(comboBox3);

           n1.tab("select a.* from airport.tikets a inner join airport.raspis b on b.idreysa=a.idreysa where (vrvil>='" + monthCalendar2.SelectionStart.Year.ToString() + "-" + monthCalendar2.SelectionStart.Month.ToString() + "-" + monthCalendar2.SelectionStart.Day.ToString() + " 00:00:00') and (vrvil<='" + monthCalendar2.SelectionEnd.Year.ToString() + "-" + monthCalendar2.SelectionEnd.Month.ToString() + "-" + monthCalendar2.SelectionEnd.Day.ToString() + " 23:59:59') and (a.idreysa='" + comboBox4.SelectedItem.ToString() + "');", dataGridView2, dataSet1, conn);

           n1.dan("select a.fio from airport.tikets a inner join airport.raspis b on b.idreysa=a.idreysa where (b.vrvil>='" + monthCalendar2.SelectionStart.Year.ToString() + "-" + monthCalendar2.SelectionStart.Month.ToString() + "-" + monthCalendar2.SelectionStart.Day.ToString() + " 00:00:00') and (b.vrvil<='" + monthCalendar2.SelectionEnd.Year.ToString() + "-" + monthCalendar2.SelectionEnd.Month.ToString() + "-" + monthCalendar2.SelectionEnd.Day.ToString() + " 23:59:59') and (b.idreysa='" + comboBox4.SelectedItem.ToString() + "');", comboBox3, conn);

       }

       //

       //выбор пассажира

       private void comboBox3_SelectionChangeCommitted(object sender, EventArgs e)

       {

           n1.tab("select a.* from airport.tikets a inner join airport.raspis b on b.idreysa=a.idreysa where (b.vrvil>='" + monthCalendar2.SelectionStart.Year.ToString() + "-" + monthCalendar2.SelectionStart.Month.ToString() + "-" + monthCalendar2.SelectionStart.Day.ToString() + " 00:00:00') and (b.vrvil<='" + monthCalendar2.SelectionEnd.Year.ToString() + "-" + monthCalendar2.SelectionEnd.Month.ToString() + "-" + monthCalendar2.SelectionEnd.Day.ToString() + " 23:59:59') and (b.idreysa='" + comboBox4.SelectedItem.ToString() + "') and (a.fio='" + comboBox3.SelectedItem.ToString() + "');", dataGridView2, dataSet1, conn);

           row = dataGridView2.Rows[0];

           DataGridViewCellEventArgs m = new DataGridViewCellEventArgs(0, 0);

           dataGridView2_CellClick(comboBox3, m);

       }

       //

       //Закрытие формы

       private void button1_Click(object sender, EventArgs e) { Close(); }

       //

       //изменение информации о пассажире

       private void button4_Click(object sender, EventArgs e)

       {

           try

           {

               int chek = 0; DateTime t, tt;

               t = dateTimePicker5.Value; tt = dateTimePicker4.Value;

               if (checkBox2.Checked) chek = 1;

               if (textBox8.Text.Length == 0) textBox8.Text = " ";

               n1.zapupd("update airport.tikets set fio='" + textBox10.Text + "', sernompasp='" + textBox9.Text + "', datavidpasp='" + t.Year + "-" + t.Month + "-" + t.Day + "', dopinf='" + textBox8.Text + "', datarozd='" + tt.Year + "-" + tt.Month + "-" + tt.Day + "',grazd='" + textBox7.Text + "', lgot='" + chek.ToString() + "' where idtikets='" + row.Cells[0].Value.ToString() + "' and fio='" + row.Cells[2].Value.ToString() + "' and sernompasp='" + row.Cells[3].Value.ToString() + "';", conn);

               label19.Text = "Состояние: изменения внесены";

           }

           catch (Exception) { label19.Text = "Состояние: изменения не внесены"; }

       }

       //

       //возврат билета

       private void button5_Click(object sender, EventArgs e)

       {

           try

           {

               if (Convert.ToInt32(n1.zapsel("select count(*) from airport.tikets a inner join airport.raspis b on a.idreysa=b.idraspis where b.vrvil>now() and a.idtikets='" + row.Cells[0].Value.ToString() + "'", conn)) == 0)

               { label19.Text = "Состояние: истекло время возврата билета";  }

               else

               {

                   if (n1.zapsel("select econbizn from airport.tikets where idtikets='" + row.Cells[0].Value.ToString() + "';", conn) == "0")

                   {

                       float st = Convert.ToSingle(n1.zapsel("select stoim from airport.reysy a inner join airport.raspis b on a.idreysy=b.idreysa where  b.idraspis='" + row.Cells[1].Value.ToString() + "';", conn));

                       int t = Convert.ToInt32(n1.zapsel("select lgot from airport.tikets where idtikets='" + row.Cells[0].Value.ToString() + "';", conn));

                       textBox6.Text = (st - (t * st * 0.02)).ToString() + "руб";

                   }

                   else

                   {

                       textBox6.Text = n1.zapsel("select stoimbiz from airport.reysy a inner join airport.raspis b on a.idreysy=b.idreysa where  b.idraspis='" + row.Cells[1].Value + "';", conn) + "руб.";

                   }

                   n1.zapdel("delete from airport.tikets where idtikets='" + row.Cells[0].Value + "';", conn);

                   label19.Text = "Состояние: Билет аннулирован";

                   textBox10.Clear();

                   textBox9.Clear();

                   textBox8.Clear();

                   textBox7.Clear();

                   File.Delete("D:/arcive/" + row.Cells[0].Value + ".docx");

               }

           }

           catch (Exception) { label19.Text = "Состояние: не выбран билет"; textBox6.Text = "Ошибка"; }

           n1.comcler(comboBox3);

           n1.comcler(comboBox4);

           comboBox3.Items.Clear();

           n1.tab("select * from airport.tikets;", dataGridView2, dataSet1, conn);

       

       }

       //выбор билета

       private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               row = this.dataGridView2.Rows[e.RowIndex];

               MySqlConnection con = new MySqlConnection(conn);

               MySqlCommand cmd = new MySqlCommand("select * from airport.tikets where idtikets='" + row.Cells[0].Value + "';", con);

               MySqlDataReader myReader;

               try

               {

                   con.Open();

                   myReader = cmd.ExecuteReader();

                   while (myReader.Read())

                   {

                       label26.Text = "Номер билета: " + row.Cells[0].Value;

                       textBox10.Text = Convert.ToString(row.Cells[2].Value);

                       textBox9.Text = Convert.ToString(row.Cells[3].Value);

                       dateTimePicker5.Value = Convert.ToDateTime(row.Cells[4].Value);

                       textBox8.Text = Convert.ToString(row.Cells[5].Value);

                       textBox7.Text = Convert.ToString(row.Cells[7].Value);

                       dateTimePicker4.Value = Convert.ToDateTime(row.Cells[6].Value);

                       if (Convert.ToInt32(row.Cells[8].Value) == 1) checkBox2.Checked = true;

                       comboBox1.SelectedIndex = Convert.ToInt32(row.Cells[9].Value);

                   }

               }

               catch (Exception ex)

               {

                   MessageBox.Show(ex.Message);

               }

           }

       }

       //

       //печать изменного билета

       private void button6_Click(object sender, EventArgs e)

       {

           try

           {

               n1.printbilet(row.Cells[0].Value.ToString(), conn);

               label19.Text = "Состояние: билет напечан";

           }

           catch (Exception)

           {

               label19.Text = "Состояние: ошибка.Выберите билет";

           }

       }

       //

       //закрытие формы

       private void Form1_FormClosed(object sender, FormClosedEventArgs e)

       {

           _pok.Focus();

       }

       //

   }

}

отделы.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class отделы : Form

   {

       //необходимые константы

       public string conn;

       private Form _avt;

       private Form _otdkad;

       internal DataGridViewRow otd;

       internal DataGridViewRow brig;

       internal DataGridViewRow dolzn;

       //

       //инициализация формы

       public отделы(Form avt, Form Otdkad)

       {

           InitializeComponent();

           _avt = avt;

           _otdkad = Otdkad;

       }

       

       //объект класа io для взаимодействия с сервером

       io n1 = new io();

       //изменение размеров формы и заполнения таблиц данными

       private void отделы_Load(object sender, EventArgs e)

       {

           n1.tab("select * from airport.otdel;", dataGridView1, dataSet1, conn);

           dataGridView1.Columns[0].HeaderText = "Номер отдела";

           dataGridView1.Columns[1].HeaderText = "Наименование отдела";

           dataGridView1.Columns[2].HeaderText = "Штат";

           n1.tab("select a.idbrigady, b.name from airport.brigady a inner join airport.otdel b on b.idotdel=a.idotdela;", dataGridView3, dataSet3, conn);

           dataGridView3.Columns[0].HeaderText = "Номер бригады";

           dataGridView3.Columns[1].HeaderText = "Отдел";

           n1.tab("select * from airport.dolzn;", dataGridView4, dataSet4, conn);

           dataGridView4.Columns[0].HeaderText = "Номер должности";

           dataGridView4.Columns[1].HeaderText = "Наименование";

           dataGridView4.Columns[2].HeaderText = "Категория доступа";

           n1.dan("select name from airport.otdel", comboBox2, conn);

       }

       //

       //закрытие формы

       private void button2_Click(object sender, EventArgs e) { this.Close(); }

       //

       //обработка переходов по формам

       //переход на форму отдела кадров

       private void отделы_FormClosed(object sender, FormClosedEventArgs e)

       {

           _otdkad.Focus();

       }

       //

       //обработка выбора элемента из таблиц

       //отделы

       private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               otd = this.dataGridView1.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select * from airport.otdel where idotdel='" + otd.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       nomotd.Text = myReader.GetString(0);

                       naimotd.Text = myReader.GetString(1);

                       shtatotd.Text = myReader.GetString(2);

                   }

               }

               catch (Exception ex)

               {

                   MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

               }

           }

       }

       

       //бригады

       private void dataGridView3_CellContentClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               brig = this.dataGridView3.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select a.idbrigady, b.name from airport.brigady a inner join airport.otdel b on b.idotdel=a.idotdela where idbrigady='" + brig.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       textBox1.Text = myReader.GetString(0);

                       comboBox2.Text = myReader.GetString(1);

                   }

               }

               catch (Exception ex)

               {

                   MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

               }

           }

       }

       

       //должности

       private void dataGridView4_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (e.RowIndex >= 0)

           {

               dolzn = this.dataGridView4.Rows[e.RowIndex];

               MySqlConnection conDataBase = new MySqlConnection(conn);

               MySqlCommand cmdDataBase = new MySqlCommand("select * from airport.dolzn where iddolzn='" + dolzn.Cells[0].Value + "';", conDataBase);

               MySqlDataReader myReader;

               try

               {

                   conDataBase.Open();

                   myReader = cmdDataBase.ExecuteReader();

                   while (myReader.Read())

                   {

                       textBox2.Text = myReader.GetString(0);

                       naimdol.Text = myReader.GetString(1);

                       comboBox1.SelectedIndex = myReader.GetInt32(2) - 1;

                   }

               }

               catch (Exception ex)

               {

                   MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

               }

           }

       }

       //

       //работа с отделами

       //создание

       private void button9_Click(object sender, EventArgs e)

       {

           try

           {

               n1.zapins("insert into airport.otdel (idotdel,name,shtat) value ('" + nomotd.Text + "','" + naimotd.Text + "','" + shtatotd.Text + "');", conn);

           }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

           }

           n1.tab("select * from airport.otdel;", dataGridView1, dataSet1, conn);

       }

       //изменение (с контролем целостности)

       private void button10_Click(object sender, EventArgs e)

       {

           try

           { n1.zapupd("update airport.otdel set idotdel='" + nomotd.Text + "',name='" + naimotd.Text + "',shtat='" + shtatotd.Text + "'  where idotdel='" + otd.Cells[0].Value + "'; update airport.sotr set idotd='" + nomotd.Text + "' where idotd='" + otd.Cells[0].Value + "'; update airport.brigady set idotdela='" + nomotd.Text + "' where idotdela='" + otd.Cells[0].Value + "'; ", conn); }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

           }

           n1.tab("select * from airport.otdel;", dataGridView1, dataSet1, conn);

       }

       //удаление (с контролем целостности)

       private void button11_Click(object sender, EventArgs e)

       {

           try

           {

               if (n1.zapsel("select count(*) from airport.brigady a where a.idotdela='" + otd.Cells[0].Value + "'", conn) != "0")

               {

                   MessageBox.Show("Существуют бригады в данном отделе\nДля того, чтобы удалить отдел необходимо убрать из его штата всех сотрудников и ликвидировать все бригады.", "Ошибка");

               }

               else

               {

                   if (n1.zapsel("select count(*) from airport.sotr a where a.idotd='" + otd.Cells[0].Value + "'", conn) != "0")

                   {

                       MessageBox.Show("В данном отделе имеются сотрудники\nДля того, чтобы удалить отдел необходимо убрать из его штата всех сотрудников и ликвидировать все бригады.", "Ошибка");

                   }

                   else

                   {

                       n1.zapdel("delete from airport.otdel where idotdel='" + otd.Cells[0].Value + "';", conn);

                   }

               }

           }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

           }

           n1.tab("select * from airport.otdel;", dataGridView1, dataSet1, conn);

       }

       //

       //работа с бригадами

       //создание

       private void button6_Click(object sender, EventArgs e)

       {

           try

           { n1.zapins("insert into airport.brigady (idbrigady,idotdela) value ('" + textBox1.Text + "',(select idotdel from airport.otdel  where name='" + comboBox2.Text + "'));", conn); }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n "+ex.Message, "Внимание");

           }

           n1.tab("select a.idbrigady, b.name from airport.brigady a inner join airport.otdel b on b.idotdel=a.idotdela;", dataGridView3, dataSet3, conn);

       }

       //изменение(с контролем целостности)

       private void button5_Click(object sender, EventArgs e)

       {

           try

           {

               n1.zapupd("update airport.brigady set idbrigady='" + textBox1.Text + "', idotdela=(select idotdel from airport.otdel  where name='" + comboBox2.Text + "') where idbrigady='" + brig.Cells[0].Value + "';", conn);

               n1.zapupd("update airport.sotr set idbrig='"+ textBox1.Text +"' where idbrig='" + brig.Cells[0].Value + "';", conn);

           }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

           }

           n1.tab("select a.idbrigady, b.name from airport.brigady a inner join airport.otdel b on b.idotdel=a.idotdela;", dataGridView3, dataSet3, conn);

       }

       //удаление

       private void button12_Click(object sender, EventArgs e)

       {

           if (n1.zapsel("select count(*) from airport.air a where a.idbrig='" + brig.Cells[0].Value + "'", conn) == "0" && n1.zapsel("select count(*) from airport.air a where a.idletnbrig='" + brig.Cells[0].Value + "'", conn) == "0" && n1.zapsel("select count(*) from airport.sotr a where a.idbrig='" + brig.Cells[0].Value + "'", conn) == "0")

           {

               try

               {

                   n1.zapdel("delete from airport.brigady where idbrigady='" + brig.Cells[0].Value + "' and idotdela=(select idotdel from airport.otdel  where name='" + brig.Cells[1].Value + "');", conn);

               }

               catch (Exception)

               {

                   MessageBox.Show("Ошибка при записи", "Внимание");

               }

               n1.tab("select a.idbrigady, b.name from airport.brigady a inner join airport.otdel b on b.idotdel=a.idotdela;", dataGridView3, dataSet3, conn);

           }

           else

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

           }

       }

       //

       //работа с должностями

       //создание

       private void button1_Click(object sender, EventArgs e)

       {

           try

           { n1.zapins("insert into airport.dolzn (iddolzn,name,kat) value ('" + textBox2.Text + "','" + naimdol.Text + "','" + (comboBox1.SelectedIndex + 1).ToString() + "');", conn); }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

           }

           n1.tab("select * from airport.dolzn;", dataGridView4, dataSet4, conn);

       }

       //изменение

       private void button3_Click(object sender, EventArgs e)

       {

           try

           { n1.zapupd("update airport.dolzn set iddolzn='" + textBox2.Text + "',name='" + naimdol.Text + "', kat='" + (comboBox1.SelectedIndex + 1).ToString() + "' where iddolzn='" + dolzn.Cells[0].Value + "'; update from airport.sotr set iddolzn='" + textBox2.Text + "' where iddolzn='" + dolzn.Cells[0].Value + "'", conn); }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");  

           }

           n1.tab("select * from airport.dolzn;", dataGridView4, dataSet4, conn);

       }

       //удаление

       private void button4_Click(object sender, EventArgs e)

       {

           try

           {

               if (n1.zapsel("select count(*) from airport.sotr a where a.iddolzn='" + dolzn.Cells[0].Value + "'", conn) != "0")

               {

                   n1.zapdel("delete from airport.dolzn where iddolzn='" + dolzn.Cells[0].Value + "';", conn);

               }

               else MessageBox.Show("Невозможно удалить должность, которая используется в системе.","Ошибка");

           }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка при записи:\n " + ex.Message, "Внимание");

           }

           n1.tab("select * from airport.dolzn;", dataGridView4, dataSet4, conn);

       }

       //

   }

}

Службабезопасности.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class служба_безопасности : Form

   {

       //объявление переменных необходимых для работы формы

       private Form _avt;

       public string conn;

       //

       //инициализация форму

       public служба_безопасности(Form avt)

       {

           InitializeComponent();

           _avt = avt;

       }

       //

       //объявление

       io n1 = new io();

       //

       //заполнение таблиц и выпадающих списков данными

       private void служба_безопасности_Load(object sender, EventArgs e)

       {

           this.Height = Screen.PrimaryScreen.WorkingArea.Height;

           this.Width = Screen.PrimaryScreen.WorkingArea.Width;

           //dataGridView1.Height = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Height*0.3);

           //dataGridView1.Width = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Width * 0.65);

           //dataGridView2.Height = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Height * 0.3);

           //dataGridView2.Width = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Width * 0.65);

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,b.name,a.nachotd,a.idbrig,a.nachbrig,a.sostsotr from airport.sotr a inner join airport.otdel b on a.idotd=b.idotdel;", dataGridView1, dataSet1, conn);

           n1.tab("select * from airport.tikets;", dataGridView2, dataSet2, conn);

           n1.dan("select a.name from airport.otdel a;", comboBox1, conn);

           n1.dan("select fio from airport.sotr;", comboBox2, conn);

           n1.dan("select distinct idreysa from airport.tikets;", comboBox3,conn);

           dataGridView2.Columns[0].HeaderText = "Номер билета";

           dataGridView2.Columns[1].HeaderText = "Номер рейса";

           dataGridView2.Columns[2].HeaderText = "ФИО Пассажира";

           dataGridView2.Columns[3].HeaderText = "Серия и номер паспорта";

           dataGridView2.Columns[4].HeaderText = "Дата выдачи паспорта";

           dataGridView2.Columns[5].HeaderText = "Дополнительная информация";

           dataGridView2.Columns[6].HeaderText = "Дата рождения";

           dataGridView2.Columns[7].HeaderText = "Гражданство";

           dataGridView2.Columns[8].HeaderText = "Льготы(1-да,0-нет)";

           dataGridView2.Columns[9].HeaderText = "Класс места(1-бизнес,0-эконом)";

           dataGridView1.Columns[0].HeaderText = "Номер сотрудника";

           dataGridView1.Columns[1].HeaderText = "ФИО";

           dataGridView1.Columns[2].HeaderText = "Дата рождения";

           dataGridView1.Columns[3].HeaderText = "Дата приема на работу";

           dataGridView1.Columns[4].HeaderText = "Отдел";

           dataGridView1.Columns[5].HeaderText = "Начальник отдела";

           dataGridView1.Columns[6].HeaderText = "Номер бригады";

           dataGridView1.Columns[7].HeaderText = "Старший бригады";

           dataGridView1.Columns[8].HeaderText = "Состояние сотрудника";

           this.Visible = true;

       }

       //

       //выход из программы

       private void button1_Click(object sender, EventArgs e) { n1.exapp(); }

       //

       //поиск по номеру рейса

       private void comboBox3_SelectionChangeCommitted(object sender, EventArgs e)

       {

           comboBox4.Items.Clear();

           n1.tab("select * from airport.tikets where idreysa='" + comboBox3.SelectedItem.ToString() + "';", dataGridView2, dataSet2,conn);

           n1.dan("select fio from airport.tikets where idreysa='" + comboBox3.SelectedItem.ToString() + "';", comboBox4, conn);

       }

       //

       //поиск по ФИО

       private void comboBox4_SelectionChangeCommitted(object sender, EventArgs e)

       {

           comboBox5.Items.Clear();

           n1.tab("select * from airport.tikets where idreysa='" + comboBox3.SelectedItem.ToString() + "' and fio='" + comboBox4.SelectedItem.ToString() + "';", dataGridView2, dataSet2, conn);

           n1.dan("select sernompasp from airport.tikets where idreysa='" + comboBox3.SelectedItem.ToString() + "' and fio='" + comboBox4.SelectedItem.ToString() + "';", comboBox5, conn);

       }

       //

       //Сброс

       private void button5_Click(object sender, EventArgs e)

       {

           n1.comcler(comboBox3); n1.comcler(comboBox4); n1.comcler(comboBox5);

           comboBox4.Items.Clear(); comboBox5.Items.Clear();

           n1.tab("select * from airport.tikets;", dataGridView2, dataSet2, conn);

       }

       //

       

       //обновить данные

       private void button3_Click(object sender, EventArgs e)

       {

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,b.name,a.nachotd,a.idbrig,a.nachbrig,a.sostsotr from airport.sotr a inner join airport.otdel b on a.idotd=b.idotdel;", dataGridView1, dataSet1, conn);

           n1.tab("select * from airport.tikets;", dataGridView2, dataSet2, conn);

       }

       //

       //переход на форму авторизации

       private void button2_Click(object sender, EventArgs e) { this.Close(); }

       //

       //поиск по серии и номеру паспорта

       private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)

       {

           n1.tab("select * from airport.tikets where idreysa='" + comboBox3.Text + "' and fio='" + comboBox4.Text + "' and sernompasp='"+comboBox5.Text+"';", dataGridView2, dataSet2, conn);

       }

       //

       //при закрытии формы

       private void служба_безопасности_FormClosed(object sender, FormClosedEventArgs e)

       {

           _avt.Show();

       }

       //

       //поиск по отделу

       private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

       {

           comboBox6.Items.Clear(); comboBox2.Text="";

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,b.name,a.nachotd,a.idbrig,a.nachbrig,a.sostsotr from airport.sotr a inner join airport.otdel b on a.idotd=b.idotdel where b.name='"+comboBox1.Text+"'", dataGridView1, dataSet1, conn);

           n1.dan("select a.idbrigady from airport.brigady a inner join airport.otdel b on a.idotdela=b.idotdel where b.name='"+comboBox1.Text+"';", comboBox6, conn);

       }

       //

       //фио сотрудника

       private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

       {

           comboBox6.Items.Clear(); comboBox6.Text = "";

           comboBox1.Text = "";

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,b.name,a.nachotd,a.idbrig,a.nachbrig,a.sostsotr from airport.sotr a inner join airport.otdel b on a.idotd=b.idotdel where a.fio='"+comboBox2.Text+"'", dataGridView1, dataSet1, conn);

       }

       //

       //по бригаде сотрудника

       private void comboBox6_SelectedIndexChanged(object sender, EventArgs e)

       {

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,b.name,a.nachotd,a.idbrig,a.nachbrig,a.sostsotr from airport.sotr a inner join airport.otdel b on a.idotd=b.idotdel where b.name='" + comboBox1.Text + "' and a.idbrig='"+comboBox6.Text+"'", dataGridView1, dataSet1, conn);

           n1.dan("select a.idbrigady from airport.brigady a;", comboBox6, conn);

       }

       //очистить

       private void button4_Click(object sender, EventArgs e)

       {

           comboBox2.Text = "";

           comboBox1.Text = "";

           comboBox6.Text = "";

           comboBox6.Items.Clear();

           n1.tab("select a.idsotr,a.fio,a.datarozd,a.dataprin,b.name,a.nachotd,a.idbrig,a.nachbrig,a.sostsotr from airport.sotr a inner join airport.otdel b on a.idotd=b.idotdel;", dataGridView1, dataSet1, conn);

       }

       //

   }

}

Листинг программы для пассажиров:

пассажир.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace airport

{

   public partial class пассажир : Form

   {

       //строкасоединениясбазойданных

       private string Conn = "Database=airport;DataSource=localhost; User Id=pass; Password=pass";

       private DataGridViewRow row;

       //

       //инициализацияформы

       public пассажир()

{

           InitializeComponent();

       }

       //

       //объект класса io для соединения с бд

       io n1=new io();

       //

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

       //и устанавливаются размеры формы, заголовки таблиц, запускаются таймеры

       //обновления расписания и вывода времени.

private void Form3_Load(object sender, EventArgs e)

       {

           this.Height = Screen.PrimaryScreen.WorkingArea.Height;

           this.Width = Screen.PrimaryScreen.WorkingArea.Width;

           //dataGridView1.Height = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Height * 0.7);

           //dataGridView1.Width = Convert.ToInt32(Screen.PrimaryScreen.WorkingArea.Width * 0.8);

           //this.TopMost = true;

           timer1.Start();

           timer2.Start();

           n1.tab("select a.idraspis,c.idreysy,c.idpunotp,c.ippunprib,b.proizv,b.aviakomp,a.vrvil,a.vrpril,a.sost from airport.raspis a inner join airport.air b on a.idair=b.idair inner join airport.reysy c on a.idreysa=c.idreysy where a.vrvil>Now();", dataGridView1, dataSet1, Conn);

           dataGridView1.Columns[0].HeaderText = "№";

           dataGridView1.Columns[1].HeaderText = "Номеррейса";

           dataGridView1.Columns[2].HeaderText = "Пунктотправления";

           dataGridView1.Columns[3].HeaderText = "Пунктприбытия";

           dataGridView1.Columns[4].HeaderText = "Самолет";

           dataGridView1.Columns[5].HeaderText = "Компанияперевозчик";

           dataGridView1.Columns[6].HeaderText = "Времявылета";

           dataGridView1.Columns[7].HeaderText = "Времяприбытия";

           dataGridView1.Columns[8].HeaderText = "Состояние";

           n1.dan("select distinct city from airport.punkt;", comboBox3, Conn);

           n1.dan("select distinct city from airport.punkt;", comboBox2, Conn);

           n1.dan("select distinct a.strana from airport.punkt a;", comboBox4, Conn);

       }

       //

       //выводтекущеговремени

       private void timer1_Tick(object sender, EventArgs e)

       {

           label4.Text = "Время: "+Convert.ToString(DateTime.Now);

       }

       //

       //выводрейсовнаконкретныедаты

       private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)

       {

           timer2.Stop();

           string time = monthCalendar1.SelectionStart.Year.ToString()+ "-" + monthCalendar1.SelectionStart.Month.ToString() + "-" + monthCalendar1.SelectionStart.Day.ToString() + " 00:00:00";

           string time1 = monthCalendar1.SelectionEnd.Year.ToString() + "-" + monthCalendar1.SelectionEnd.Month.ToString() + "-" + monthCalendar1.SelectionEnd.Day.ToString() + " 23:59:59";

           n1.tab("select a.idraspis,c.idreysy,c.idpunotp,c.ippunprib,b.proizv,b.aviakomp,a.vrvil,a.vrpril,a.sost from airport.raspis a inner join airport.air b on a.idair=b.idair inner join airport.reysy c on a.idreysa=c.idreysy where ((a.vrvil>='" + time + "') and (a.vrvil<='" + time1 + "')) or ((a.vrpril>='" + time + "') and (a.vrpril<='" + time1 + "'));", dataGridView1, dataSet1, Conn);

if (dataGridView1.RowCount == 0)

           {

               label8.Text = "Состояние: Нет рейсов на выбранную вами дату";

           }

           else

           {

               label8.Text = "Состояние: на выбранную дату найдено "+dataGridView1.RowCount+" рейсов.";

           }

           timer3.Start();

       }

       //

       //обновление расписания по таймеру

private void timer2_Tick(object sender, EventArgs e)

{

           button1_Click(timer2, e);

       }

       //

       //поиск рейсов в конкретное направление

private void button5_Click(object sender, EventArgs e)

       {

           try

           {

               timer2.Stop();

               DateTime t = dateTimePicker1.Value;

               n1.tab("select a.idraspis,c.idreysy,c.idpunotp,c.ippunprib,b.proizv,b.aviakomp,a.vrvil,a.vrpril,a.sost from airport.raspis a inner join airport.air b on a.idair=b.idair inner join airport.reysy c on a.idreysa=c.idreysy inner join airport.punkt m on c.idpunotp=m.name inner join airport.punkt n on c.ippunprib=n.name where n.city='" + comboBox3.Text + "' and m.city='" + comboBox2.Text + "' and (a.vrvil>='" + t.Year.ToString() + "-" + t.Month.ToString() + "-" + t.Day.ToString() + " 00:00:00') and (a.vrvil<='" + t.Year.ToString() + "-" + t.Month.ToString() + "-" + t.Day.ToString() + " 23:59:59');", dataGridView1, dataSet1, Conn);

if (dataGridView1.RowCount == 0)

               {

                   label8.Text = "Состояние: Нет рейсов на выбранную вами дату";

               }

               else

               {

                   label8.Text = "Состояние: на выбранную дату найдено " + dataGridView1.RowCount + " рейсов.";

               }

           }

           catch (Exception)

           {

               label8.Text = "Состояние: Нет рейсов на выбранную вами дату";

           }

           timer3.Start();

       }

       //

       //поиск рейсов в конкретную страну

private void button7_Click(object sender, EventArgs e)

       {

           try

           {

               timer2.Stop();

               n1.tab("select a.idreysy,a.idair,a.idpunotp,a.ippunprib,a.vrvil,a.vrpril from airport.reysy a inner join airport.punkt b on a.ippunprib=b.name where (b.strana='" + comboBox4.SelectedItem.ToString() + "') and (vrvil>=NOW());", dataGridView1, dataSet1, Conn);

               if (dataGridView1.RowCount == 0)

               {

                   label8.Text = "Состояние: Нетрейсов";

               }

               else

               {

                   label8.Text = "Состояние: ввыбраннуюстрвнунайдено " + dataGridView1.RowCount + " рейсов.";

               }

           }

           catch (Exception)

           {

               label8.Text = "Состояние: Нетрейсов";

}

           timer3.Start();

       }

       //

       //обновление расписания вызов таймеров

private void timer3_Tick(object sender, EventArgs e)

{

           timer2.Start();

           timer3.Stop();

       }

       //

       //определение кол-ва билетов на выбранном рейсе

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

               row = this.dataGridView1.Rows[e.RowIndex];

               try

               {

                   econ.Text = n1.zapsel("select a.kolmesteco- count(*) from airport.air a inner join airport.raspis b on a.idair=b.idair left join airport.tikets c on c.idreysa=b.idraspis where idraspis='" + row.Cells[0].Value + "' and c.econbizn=0;", Conn);

                   bizn.Text = n1.zapsel("select a.kolmestbizn- count(*) from airport.air a inner join airport.raspis b on a.idair=b.idair left join airport.tikets c on c.idreysa=b.idraspis where idraspis='" + row.Cells[0].Value + "' and c.econbizn=1;", Conn);

                   kolmestvsego.Text = (Convert.ToInt32(econ.Text) + Convert.ToInt32(bizn.Text)).ToString();

               }

               catch (Exception)

               {

                   MessageBox.Show("Ошибкабд", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);

               }

               /*

               MySqlConnection con = new MySqlConnection(Conn);

               MySqlCommand com = new MySqlCommand("select * from airport.reysy where idreysa = '" + row.Cells[0].Value + "';", con);

               MySqlDataReader myReader;

инф_о_рейсеинф_о_рейсе = new инф_о_рейсе();

               try

               {

                   con.Open();

                   myReader = com.ExecuteReader();

                   while (myReader.Read())

                   {

инф_о_рейсе.nmrs = myReader.GetString(0);

                       textBox11.Text = myReader.GetString(1);

                       textBox10.Text = myReader.GetString(2);

                       textBox9.Text = myReader.GetString(3);

                       comboBox2.SelectedIndex = myReader.GetInt32(4)-1;

                       textBox8.Text = myReader.GetString(5);

                       textBox7.Text = myReader.GetString(6);

                       int m = 0;

MySqlConnection con = new MySqlConnection(Conn);

MySqlCommand com1 = new MySqlCommand("select a.kolmest_gruzop - count(c.idtikets) from airport.air a inner join airport.reysy b on a.idair=b.idair left join airport.tikets c on c.idreysa=b.idreysy where idreysy='" + comboBox1.Items[comboBox1.SelectedIndex] + "';", con);

con.Open();

MySqlDataReader data = com.ExecuteReader();

while (data.Read()) { m = data.GetInt32(0); } data.Close();

con.Close();

                   }

               }

               catch (Exception ex)

               {

                   MessageBox.Show(ex.Message);

               }*/

       }

       //

       //обновлениерасписания

       private void button1_Click(object sender, EventArgs e)

       {

           comboBox2.SelectedIndex = -1;

           comboBox3.SelectedIndex=-1;

           comboBox4.SelectedIndex = -1;

           econ.Text = ""; bizn.Text = ""; kolmestvsego.Text = "";

           n1.tab("select a.idraspis,c.idreysy,c.idpunotp,c.ippunprib,b.proizv,b.aviakomp,a.vrvil,a.vrpril,a.sost from airport.raspis a inner join airport.air b on a.idair=b.idair inner join airport.reysy c on a.idreysa=c.idreysy where a.vrvil>Now();", dataGridView1, dataSet1, Conn);

label8.Text = "Состояние: Текущее расписание";

}

       //

       //поискрейсоввобратнуюсторону

       private void button3_Click(object sender, EventArgs e)

       {

     &nbs