Автоматизация учета работы автотранспортного предприятия

 











ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ:

Автоматизация учета работы автотранспортного предприятия

Содержание


Введение

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

. Формализация

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

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

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

. Методика разработки проекта

.1. Алгоритмизация задачи

.1.1. Описание алгоритма

.1.2 Структурная схема

.2. Программирование

.3. Аномалии и защитное программирование

.4. Тестирование и отладка

. Анализ результатов решения

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

. Экономическая часть

Заключение

Литература

Приложение

Введение


Автотранспортное предприятие МП ОПАТП осуществляет пассажирские перевозки, сопровождая плановые рейсы формированием определенной документации: формирование маршрутного журнала, листа-дохода кондукторов, учёт рабочего времени водителей.

На каждый рейс выдаётся «Путевой лист», который после окончания рабочего дня сдаётся диспетчеру.

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

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

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


Задачей дипломного проекта является разработка программного приложения «Автоматизация учёта работы автотранспортного предприятия», которое позволит:

·Систематизировать учет необходимых данных о выполненных маршрутах

·Определить общий доход, полученный от реализации билетов

·Осуществлять быстрый поиск информации о водителях выполнивших плановый рейс

·Проводить автоматизированное рецензирование документации

·Формировать и выводить на печать необходимые документы и отчетные формы

Приложение будет разработано в среде Microsoft Visual Studio 2005(C#.NET), с использованием Microsoft SQL Server 2005.

2. Формализация


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

Для создания базы данных, таблиц, представлений и хранимых процедур был написан SQL-сценарий, текст которого представлен в пункте V. «Приложение».

Схема данных:


Рис. 1


Как правило, разработка проекта реализации задачи выполняется в несколько этапов и начинается с анализа той информации, которая является выходной (таблицы Microsoft SQL Server), итоговая (конечная) форма для Microsoft Visual Studio 2005(C#.NET). Только после выяснения структуры и состава этой информации, формулировки запросов для получения отчетов можно сделать вывод о структуре и составе таблиц данных. Необходимым этапом формализации задачи является нормализация базы данных, которая, по сути, представляет собой процесс оптимизации хранения и использования информации в таблицах.

3. Описание среды программирования


Программа была разработана в среде Microsoft Visual Studio 2005 (C#.NET), с использованием Microsoft SQL Server 2005.

Microsoft SQL Server 2005

Большинство приложений баз данных со временем разрастаются, становятся более сложными и число их пользователей также растет. Microsoft SQL Server обеспечивает высокую производительность. SQL Server обеспечивает поддержку очень крупных баз данных, размером до одного терабайта. программное приложение водитель маршрутServer весьма эффективно работает в среде Microsoft Windows NT, обрабатывая запросы параллельно (с использованием естественных потоков команд в пределах одного процесса для обработки запросов пользователя) и снижая до минимума требования к памяти при добавлении пользователей.

Приложение Microsoft SQL Server с самого начала разрабатывалось как база данных в архитектуре клиент/сервер. Данные и индексы располагаются на одном сервере, доступ к которому часто осуществляется через сеть с нескольких клиентских компьютеров. SQL Server снижает загруженность сети, выполняя обработку запросов базы данных на сервере перед отправкой результатов на клиентский компьютер. Таким образом, создаваемые приложения в архитектуре клиент/сервер могут выполнять обработку там, где она выполняется лучше всего - на сервере.

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

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

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

С помощью Microsoft SQL Server можно выполнять динамическое резервное копирование (добавочное или полное) базы данных во время ее использования. Таким образом, пользователи избавлены от необходимости выходить из базы данных для резервного копирования данных. Это позволяет использовать базу данных 24 часа в сутки, семь дней в неделю.

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

Microsoft Visual Studio 2005(C#.NET)

Специально для платформы .NET Microsoft был разработан новый язык программирования С#. С# - это язык программирования, синтаксис которого очень похож на синтаксис Java (но не идентичен ему). Например, в С# (как в Java) определение класса состоит из одного файла (*.cs), в отличие от C++, где определение класса разбито на заголовок (*.h) и реализацию (*.срр). Однако называть С# клоном Java было бы неверно. Как С#, так и Java основаны на синтаксических конструкциях C++. Если Java во многих отношениях можно назвать очищенной версией C++, то С# можно охарактеризовать как очищенную версию Java.

Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов как C++, С# позволяет производить перегрузку операторов для созданных вами типов (Java не поддерживает ни ту, ни другую возможность). С# - это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++. Подводя итоги, еще раз выделим основные особенности С#.

·Указатели больше не нужны. В программах на С#, как правило, нет необходимости в работе с ними (однако если вам это потребуется, пожалуйста, - возможности для работы с указателями в вашем распоряжении).

·Управление памятью производится автоматически.

·В С# предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов.

·В С# осталась возможность перегружать операторы, унаследованные от C++. При этом значительная часть возникавших при этом сложностей ликвидирована.

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

·Также предусмотрена полная поддержка аспектно-ориентированных программных технологий (таких как атрибуты). Это позволяет присваивать типам характеристики (что во многом напоминает COM IDL) для описания в будущем поведения данной сущности. Возможно, самое важное, что необходимо сказать про язык С#, - это то, что он генерирует код, предназначенный для выполнения только в среде выполнения .NET. Например, вы не сможете использовать С# для создания классического СОМ-сервера. Согласно терминологии Microsoft код, предназначенный для работы в среде выполнения .NET, - это управляемый код (managed code). Двоичный файл, который содержит управляемый файл, называется сборкой (assembly).


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


Для клиентского приложения:

·процессор частотой 600 МГц

·операционная система Windows XP или выше

·ОЗУ 512 Мб

·свободное место на жестком диске 100 Мб для приложения

Для сервера:

·процессор частотой 1 ГГц или выше

·операционная система Windows Server 2003

·ОЗУ 1 Гб


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


Для работы программы необходимо, чтобы на компьютере были установлены:

.Операционная система Windows XP, Windows 7, Server 2003

2..NET Framework 2.0

.Установленный и работающий Microsoft SQL Server 2005

4. Методика разработки программы


Приложение разрабатывалось на основе схемы базы данных приведённой на Рисунке 1 в пункте 2. «Формализация».

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


4.1 Алгоритмизация задачи


4.1.1 Описание алгоритма

С целью повышения надёжности и эффективности программного продукта, применялся метод нисходящего проектирования, и проходила следующие этапы:

·Определение входных и выходных данных;

·Выбор языка программирования;

·Поиск по различным критериям.

В ходе разработки программного продукта были созданы следующие таблицы:


Таблица №1 «Drivers»

Имя поляТип данныхФормат/размер поляОбязательное полеIDDriver (ключевое поле)intСчетчикДаLastNamechar(80)Текст/80ДаFirstNamechar(80)Текст/80ДаPatronymicchar(80)Текст/80ДаBirthdaydatetimeДатаДаPassportNumberchar(10)Текст/10ДаDrivingLicencechar(10)Текст/10ДаIDBusintЦелоеДа

Таблица №2 «Conductors»

Имя поляТип данныхФормат/размер поляОбязательное полеIDConductor (ключевое поле)intСчетчикДаLastNamechar(80)Текст/80ДаFirstNamechar(80)Текст/80ДаPatronymicchar(80)Текст/80ДаBirthdaydatetimeДатаДаPassportNumberchar(10)Текст/10Да

Таблица №3 «Buses»

Имя поляТип данныхФормат/размер поляОбязательное полеIDBus (ключевое поле)intСчетчикДаBreandchar(80)Текст/80ДаStateNumberchar(10)Текст/10ДаSpeedometerintЦелоеДа

Таблица №4 «Routes»

Имя поляТип данныхФормат/размер поляОбязательное полеIDRoute (ключевое поле)intСчетчикДаNameRoutechar(80)Текст/80ДаDirectionchar(200)Текст/200ДаLengthintЦелоеДаTripsintЦелоеДаRevenuemoneyЦелоеДаFuelintЦелоеДаExitTimedatetimeВремяДаReturnTimedatetimeВремяДа

Таблица №5 «Distance»

Имя поляТип данныхФормат/размер поляОбязательное полеIDRecord (ключевое поле)intСчетчикДаIDBusintЦелоеДаDatedatetimeДатаДаDistanceintЦелоеДаТаблица №6 «Revenue»

Имя поляТип данныхФормат/размер поляОбязательное полеIDRecord (ключевое поле)intСчетчикДаIDConductorintЦелоеДаDatadatetimeДатаДаPlannedRevenuemoneyЦелоеДаActualRevenuemoneyЦелоеДаIDRouteintЦелоеДаIDDriverintЦелоеДаChangeintЦелоеДа

Таблица №7 «WaySheets»

Имя поляТип данныхФормат/размер поляОбязательное полеIDSheet (ключевое поле)intСчетчикДаNumberSheetchar(10)Текст/10ДаIDDriverintЦелоеДаIDConductorintЦелоеДаIDBusintЦелоеДа

Таблица №8 «WaySheet»

Имя поляТип данныхФормат/размер поляОбязательное полеIDSheet (ключевое поле)intСчетчикДаNumberSheetchar(80)Текст/80ДаDatedatetimeДатаДаDateDaychar(20)Текст/20ДаBrendBuschar(20)Текст/20ДаStateNumberBuschar(10)Текст/10ДаDriverchar(80)Текст/80ДаIDDriverintЦелоеДаConductorchar(80)Текст/80НетIDConductorintЦелоеНетNameRoutechar(80)Текст/80НетChangeintЦелоеНетExitInRouteintЦелоеНетDistanceintЦелоеНетPlannedTripintЦелоеНетActualTripintЦелоеНетPlannedExitdatetimeВремяНетActualExitdatetimeВремяНетPlannedReturndatetimeВремяНетActualReturndatetimeВремяНетPlannedSpendFuelintЦелоеНетActualSpendFuelintЦелоеНетRepairsdatetimeВремяНетTO2datetimeВремяНетStoppingdatetimeВремяНетReservedatetimeВремяНетSpeedometerExitintЦелоеНетSpeedometerReturnintЦелоеНетPlannedRevenuemoneyЦелоеНетActualRevenuemoneyЦелоеНет

Таблица №8 «WorkedTime»

Имя поляТип данныхФормат/размер поляОбязательное полеIDRecord (ключевое поле)intСчетчикДаIDDriverintЦелоеДаWorkedTimedatetimeВремяДаDatedatetimeДатаДаIDBusintЦелоеДаIDRouteintЦелоеДаPlannedTripintЦелоеДаActualTripintЦелоеДаDistanceintЦелоеДаSpendFuelintЦелоеДаChangeintЦелоеДаExitInRouteintЦелоеДаReservedatetimeВремяНетStoppingdatetimeВремяНетRepairsdatetimeВремяНетTO2datetimeВремяНет

4.1.2 Структурная схема




























4.2 Программирование


В соответствии с структурной схемой, приведенной выше в пункте 4.1.2. в представленной программе разработаны программные модули на

Microsoft Visual Studio 2005(C#.NET).

Тексты программных модулей приведены в пункте V. «Приложение».


4.3 Аномалии и защитное программирование


Описание аномалииРеакции на аномалиюСпособ защитыПопытка добавить значение NULLВывод текстового сообщения без изменения структурыЗащищено программноВвод в числовые поля текстовых значенийЗапрет ввода текстовых значений в числовые поляЗащищено программноВвод в текстовые поля цифровых значенийЗапрет ввода цифровых значений в текстовые поляЗащищено программноВвод неправильного значения времени (вроде 45:85) Проверка введённого значения с диапазоном от 00:00 до 23:59. При несоответствии отображение значка ошибки возле текстового поля и передача ему фокуса ввода. Защищено программноВвод несуществующей записи в базе о водителе, кондукторе, автобусе или маршрутеВыбор из спискаЗащищено программно

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


Тестирование - процесс многократного выполнения программы с целью выявления ошибок. Отладка - исправление ошибок, найденных с помощью тестирования.

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

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

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

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

5. Анализ результатов решения


В соответствии с пунктом 4.4 тестирование и отладка производились непосредственно во время разработки проекта. После завершения работы над программой было еще раз произведено полное тестирование.

Все найденные ошибки были успешно устранены.

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

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


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

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

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

Запуск программы

Запуск программы осуществляется двойным нажатием левой клавиши мыши на ярлыке программы. После запуска программного продукта на экране появится «Главная форма», которая выглядит следующим образом:


Рис. 2


Описание главного меню программы.

Рис. 3 Меню «Справочники»


Меню «Справочники» существует для быстрого доступа к формам, на которых находится интересующая вас информация.


Рис. 4 Справочник №1: Водители


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

Рис. 5


На форме «Новый водитель» можно добавить данные о новом водителе.


Рис. 6 Справочник №2: Автобусы


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


Рис. 7

На форме «Новый автобус» можно добавить данные о новом автобусе.


Рисунок 8 Справочник №3: Кондуктора


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


Рис. 9


На форме «Новый кондуктор» можно добавить данные о новом кондукторе.


Рис. 10 Справочник №4: Маршруты

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


Рис. 11


На форме «Новый маршрут» можно добавить данные о новом маршруте.


Рис. 12 Справочник №5: Отработанное время водителей


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


Рис. 13

На форме «Поиск» можно выбрать один или несколько критериев для поиска.


Рис. 14 Справочник №6: Пробег автобусов


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


Рис. 15


На форме «Поиск» можно выбрать один или несколько критериев для поиска.


Рис. 16 Справочник №7: Пробег автобусов


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


Рис. 17


На форме «Поиск» можно выбрать один или несколько критериев для поиска.


Рис. 18 Справочник №6: Пробег автобусов

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


Рис. 19


На форме «Поиск» можно выбрать один или несколько критериев для поиска.


Рис. 20 Меню «Документы»


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

Рис. 21


Рисунок 10 Меню «Отчёты»


Отчеты в данном программном приложении созданы при помощи Reporting Services.

Reporting Services

Службы SQL Server 2005 Reporting Services (SSRS) представляют собой платформу отчетов на основе сервера, которая обеспечивает комплексное ведение отчетов для данных из реляционных и многомерных источников данных. Службы Reporting Services включают компоненты для разработки: полный набор инструментов, который можно использовать для создания отчетов и управления ими, и API-интерфейс, позволяющий разработчикам выполнять интеграцию и расширение данных, а также обработку отчетов в пользовательских приложениях. Создаваемые отчеты могут основываться на реляционных или многомерных данных SQL Server, служб Analysis Services, Oracle или любого другого поставщика данных Microsoft .NET Framework, такого как ODBC или OLE DB.

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

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


Рис. 30 Реестр путёвок водителей

В данном отчёте приводится информация о работе кондуктора за период времени.


Рис. 31 Лист-дохода кондукторов


В данном отчёте приводится информация о выручки всех кондукторов.


Рис. 32 Сводный журнал по маркам

В данном отчёте предоставляется информация об автобусах.

Меню «Помощь»

В этом меню можно посмотреть «Справку» и открыть окно «О программе»


Рис. 4


7. Экономическая часть


Для того чтобы данный проект был реализован на МП ОПАТП необходимо подсчитать годовой экономический эффект от внедрения программного продукта Автоматизация учёта работы автотранспортного предприятия.

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

Распределение трудоемкости по стадиям разработки внедрению проекта приведено в таблице №1.


Этап разработкиХарактеристикаТрудоёмкость (час.)Постановка задачиПредпроектное обследование. Разработка, утверждение, технико-экономическое обследование.11Составление технического проектаУточнение структуры и формы представления входных и выходных данных (алгоритм и структура), Разработка плана мероприятий по проекту. Согласование утверждение технического проекта.42Составление рабочего проектаНаписание программы на языке программирования. Первоначальная отладка, тестирование. Разработка согласование и утверждения порядка и методики испытания. Корректировка программы.87Документирование и внедрениеРазработка программной документации. Сдача программы и программной документации.26ИТОГО:166 ч.

Расчет коэффициентов

Коэффициент сложности задачи C - характеризует сложность данной программы по отношению к типовой задаче, сложность которой принята за 1 (величина C лежит в пределах от 0,5 до 1). Так как в данной программе разработаны формы, имеющие в себе наиболее удобный поиск информации, всевозможные отчёты, для данной программы C = 0,8.

Коэффициент P увеличения объёма работ за счёт внесения изменений в алгоритм или программу по результатам уточнения установок. Коэффициент меняется от 0,1 до 0,5. Заказчик четко описал конечный результат, который должен выдаваться данным программным обеспечением, однако некоторые изменения и доработки все же придётся внести. Необходимо принять во внимание, что в данном случае заказчик не имел глубоких компьютерных знаний и не мог изначально объяснить задачу в целом. Это приводило к неоднократным доработкам, модернизациям и корректировке. Лучше всего взять среднее значение коэффициента равное 0,3.

Коэффициент В - коэффициент увеличения затрат труда вследствие недостаточного описания задач. Коэффициент меняется от 1 до 1,5. Так как задача имеет достаточное описание для работы с ней, возьмем коэффициент равный 1.

Коэффициент квалификации разработчика К определяется в зависимости от стажа работы и составляет: для работающих до двух лет - 0,8; от трех лет до пяти лет - 1,0; от пяти до восьми - 1,2; более восьми лет - 1,5. Поскольку стажа работы по специальности у меня нет, возьмем К = 0,8.

Расчет затрат предприятия.

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


З/Посн = оклад * С * (Р+1) * В * К = (9000 руб. * 0,8 * (0,3 + 1) * 1 * 0,8) = 7488 руб. - в месяц


Поскольку дополнительная заработная плата в виде премии работнику за это время не выплачивалась, то суммарная заработная плата (ЗПсум) будет равна основной заработной плате:


З/Псум = З/Посн = 7488 руб.


Страховые отчисления берутся в размере 34% от основной заработной платы:


Со = З/Посн * 34%

Со = 7488 руб. * 34% = 2545,92 руб.


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


З/Побщ = (ЗПосн + страховые отчисления) * 166 / (8ч * 22дня) = (7488 + 2545,92) * 166 /( 8 * 22) = 9463,8 руб.


Содержание и эксплуатация вычислительной техники

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

.Стоимость потребляемой электроэнергии

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

.Техническое обслуживание, или затраты на ремонт

Стоимость 1 КВТ/час электроэнергии составляет 4 руб.

Один компьютер потребляет в среднем 300 Вт в час.

За год отчисления за электроэнергию, потребляемую одной ЭВМ, составляет:


ч. * 22дня * 12мес. * 0,3КВт/ч. * 4 руб. = 2534,4 руб.


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

Затраты на амортизацию = стоимость ПК/срок полезного использования.

Стоимость компьютера равна 22000руб. Количество лет полезного использования 4 года.

Поскольку компьютер по-прежнему находится в эксплуатации, отчисления составят: 22000 руб. / 4 года = 5500 руб.

Затраты на ремонт ПЭВМ составляют 5% от его стоимости:


/100*5 = 1100 руб.


Фвт - действительный фонд времени работы вычислительного комплекса.


Фвт = Фном - Фпроф.


Фном - номинальный фонд работы ПК.

Фпроф - годовые затраты времени на профилактические работы. (5% от Фном)


Фном = 8 *22 *12 = 2112 часов в год.

Фпроф = 2112 /100*5 = 106 часов в год.

Фвт = 2112 - 106 = 2006 часов.


Стоимость 1 часа работы ПК = (стоимость электроэнергии в год + стоимость амортизации за год + затраты на ремонт за год) / Фвт.


Стоимость 1 часа работы ПК = (2534,4 + 5500 + 1100)/2006 = 4,6 руб.

Содержание и эксплуатация ПК = Стоимость 1 часа работы ПК * Число часов отладки = 4,6 * 155 = 713 руб.


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


Затраты на разработку и внедрение проекта приведены в таблице №2.

№Наименование статьи расходовЗатраты (руб.)1Зарплата суммарная исполнителя7488 руб.2Страховые отчисления2545,92 руб. ? 2546 руб. 3Затраты на эксплуатацию ПК, используемого для написания программы713 руб.Итого:10034 руб.

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

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

Для ведения расчетов введем следующие обозначения:

Т1- время, затрачиваемое на операции до внедрения программного продукта;

Т2- время, затрачиваемое на операции после внедрения программного продукта.

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


Т1 = 20мин. или 0,33часа.


.После внедрения программы время сократится, и будет составлять 12 мин., за счет уменьшения времени выполнения операций и простоты использования программы:

Т2 = 12мин. или 0,2ч.


?t = 20 - 12 = 8мин. или 0,133 часа.


3.Рассчитаем стоимость выполняемых работ сотрудника притом, что в месяц он работает 8ч*22дня = 176 часов. Должностной оклад сотрудника автотранспортного предприятия 11000 рублей. Следовательно, стоимость 1 часа работы = 11000/176 = 62,5руб.


Страховые взносы, начисляемы на з/п = 11000*0,34/176 = 21,25 руб.


Определяем суммарные затраты работника с учетом страховых взносов = 62,5 + 21,25 = 83,75 руб. в час - Рсумм.

.Расчет годовой экономии экономического эффекта и срока окупаемости.

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


?Т = 0,2 * 10 * 22 * 12 = 528 часа.


Рассчитывается размер годовой экономии от внедрения программного продукта: ?Т * Рсумм = 528 * 83,75 = 44220 руб.

Экономический эффект составляет величину, равную годовой экономии средств за вычетом затрат на разработку и реализацию программного продукта = 44220 - 10034 = 34186руб.


Расчет срока окупаемости = 10034/44220 = 0,23 года.


Вывод: разработанное и реализованное программное приложение окупится менее, чем за 3 месяца, что является приемлемым в качестве срока окупаемости затрат по автоматизации рабочего процесса.

Заключение


В данном дипломном проекте было разработано программное приложение в среде Microsoft Visual Studio 2005(C#.NET) с использованием базы данных Microsoft SQL Server 2005, которое автоматизирует учет работы автотранспортного предприятия и значительно экономит рабочее время сотрудника организации (диспетчера).

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

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

Срок окупаемости программы составляет 3 месяца.

Литература


1)#"center">Приложение


SQL- сценарий

USE master

----// Создание БД с параметрами по умолчанию //-----DATABASE AutotransportationAutotransportation

----// Создание таблиц //-----TABLE WaySheets

(int IDENTITY(1,1) PRIMARY KEY,char(80) NOT NULL,datetime NOT NULL,int NOT NULL,int NOT NULL,int NULL

)TABLE WaySheet

(int IDENTITY(1,1) PRIMARY KEY,char(80) NOT NULL,datetime NOT NULL,char(20) NOT NULL,char(20) NOT NULL,char (10) NOT NULL,char(80) NOT NULL,int NOT NULL,char(80) NULL,int NULL,char(80) NULL,int NULL,int NULL,int NULL,int NULL,int NULL,char(5) NULL,char(5) NULL,char(5) NULL,char(5) NULL,int NULL,int NULL,char(5) NULL,char(5) NULL,char(5) NULL,char(5) NULL,int NULL,int NULL,money NULL,money NULL

)TABLE Drivers

(int IDENTITY(300,1) PRIMARY KEY,char(80) NOT NULL,char(80) NOT NULL,char(80) NOT NULL,datetime NOT NULL,char(10) NOT NULL,char(10) NOT NULL,int NOT NULL

)TABLE WorkedTime

(int IDENTITY(1,1) PRIMARY KEY,int NOT NULL,datetime NULL,datetime NOT NULL,int NOT NULL,int NOT NULL,int NULL,int NULL,int NULL,int NULL,int NULL,int NULL,int NULL,datetime NULL,datetime NULL,datetime NULL,datetime NULL

)TABLE Conductors

(int IDENTITY(200,1) PRIMARY KEY,char(80) NOT NULL,char(80) NOT NULL,char(80) NOT NULL,datetime NOT NULL,char(10) NOT NULL

)TABLE Revenue

(int IDENTITY(1,1) PRIMARY KEY,int NOT NULL,datetime NOT NULL,money NOT NULL,money NOT NULL,int NOT NULL,int NOT NULL,int NOT NULL,int NOT NULL

)TABLE Buses

(int IDENTITY(1,1) PRIMARY KEY,char(80) NOT NULL,char(6) NOT NULL,int NOT NULL

)TABLE Distance

(int IDENTITY(1,1) PRIMARY KEY,int NOT NULL,datetime NOT NULL,int NOT NUlL

)TABLE Routes

(int IDENTITY(1,1) PRIMARY KEY,char(80) NOT NULL,char(200) NULL,int NOT NULL,int NOT NULL,money NOT NULL,int NOT NULL,datetime NOT NULL,datetime NOT NULL

)

----// Создание представлений //-----VIEW SearchDriversView ASRTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS DriverDriversVIEW SearchConductorView ASRTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS ConductorConductorsVIEW SearchBusView ASRTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' AS BusBusesVIEW WaySheetsView ASRTRIM(NumberSheet) AS NumberSheet, Date,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WaySheets.IDDriver) AS Driver,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WaySheets.IDBus) AS Bus,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Conductors WHERE Conductors.IDConductor = WaySheets.IDConductor) AS ConductorWaySheetsVIEW WaySheets1View ASRTRIM(NumberSheet) AS NumberSheet, Date, IDDriver,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WaySheets.IDDriver) AS Driver,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WaySheets.IDBus) AS Bus,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Conductors WHERE Conductors.IDConductor = WaySheets.IDConductor) AS ConductorWaySheetsVIEW WaySheetWiew ASRTRIM(NumberSheet) AS NumberSheet, Date, RTRIM(DateDay) AS DateDay, RTRIM(BrendBus) AS BrendBus, StateNumberBus,(Driver) AS Driver, IDDriver, RTRIM(Conductor) AS Conductor, IDConductor, RTRIM(NameRoute) AS NameRoute, Change,, Distance, PlannedTrip, ActualTrip, PlannedExit, ActualExit, PlannedReturn, ActualReturn, PlannedSpendFuel,, Repairs, TO2, Stopping, Reserve, SpeedometerExit, SpeedometerReturn, PlannedRevenue, ActualRevenueWaySheetVIEW BusesView ASRTRIM(Brend) AS Brend, RTRIM(StateNumber) AS StateNumber, SpeedometerBusesVIEW ConductorsView ASIDConductor, RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS Conductor,(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumberConductorsVIEW Conductors1View ASIDConductor, RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS Conductor,(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumberConductorsVIEW DriversView ASIDDriver, RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' AS Driver,(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumber,(DrivingLicence, 1, 4) + ' ' + SUBSTRING(DrivingLicence,5, 6) AS DrivingLicence,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Drivers.IDBus = Buses.IDBus) AS BusDriversVIEW Drivers1View ASIDDriver, RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' AS Driver,(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumber,(DrivingLicence, 1, 4) + ' ' + SUBSTRING(DrivingLicence,5, 6) AS DrivingLicence,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Drivers.IDBus = Buses.IDBus) AS BusDriversVIEW DistanceView AS

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Distance.IDBus = Buses.IDBus) AS Bus,, DistanceDistanceVIEW RevenueView AS

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Revenue.IDConductor = Conductors.IDConductor) AS Conductor,, PlannedRevenue, ActualRevenue,

(SELECT RTRIM(NameRoute) FROM Routes WHERE Revenue.IDRoute = Routes.IDRoute) AS NameRoute,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Drivers WHERE Revenue.IDDriver = Drivers.IDDriver) AS Driver,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = Revenue.IDBus) AS Bus,RevenueVIEW Revenue1View AS

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Revenue.IDConductor = Conductors.IDConductor) AS Conductor,, PlannedRevenue, ActualRevenue, IDConductor,

(SELECT RTRIM(NameRoute) FROM Routes WHERE Revenue.IDRoute = Routes.IDRoute) AS NameRoute,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Drivers WHERE Revenue.IDDriver = Drivers.IDDriver) AS Driver,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = Revenue.IDBus) AS Bus,RevenueVIEW WorkedTimeView AS

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WorkedTime.IDDriver) AS Driver,, Date,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Conductors.IDConductor = WorkedTime.IDConductor) AS Conductor,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WorkedTime.IDBus) AS Bus,

(SELECT RTRIM(NameRoute) FROM Routes WHERE WorkedTime.IDRoute = Routes.IDRoute) AS NameRoute,, ActualTrip, Distance, SpendFuel, Change, ExitInRoute, Reserve, Stopping, Repairs, TO2WorkedTimeVIEW WorkedTime1View AS

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WorkedTime.IDDriver) AS Driver,, Date, IDDriver, IDConductor,

(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Conductors.IDConductor = WorkedTime.IDConductor) AS Conductor,

(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WorkedTime.IDBus) AS Bus,

(SELECT RTRIM(NameRoute) FROM Routes WHERE WorkedTime.IDRoute = Routes.IDRoute) AS NameRoute,, ActualTrip, Distance, SpendFuel, Change, ExitInRoute, Reserve, Stopping, Repairs, TO2WorkedTimeVIEW RoutesView ASRTRIM(NameRoute) AS NameRoute, RTRIM(Direction) AS Direction, Length, Trips, Revenue, Fuel, ExitTime, ReturnTimeRoutes

----// Создание хранимых процедур //-----

---- Процедура добавления нового автобуса -----

-Параметры передаваемые хранимой процедуреPROCEDURE NewBus @brend char(80), @statenumber char(10), @spedometer int

-Добавление нового товараINTO Buses(Brend, StateNumber, Speedometer)(@brend, @statenumber, @spedometer)

---- Процедура добавления нового водителя -----

-Параметры хранимой процедурыPROCEDURE NewDriver @lastName char(80), @firstName char(80), @patronymic char(80), @birthday datetime,

@passportSerial char(4), @passportNumber char(6), @drivingLicenceSerial char(4), @drivingLicenceNumber char(6),

@brendBus char(80), @stateNumberBus char(10)

-Обьявляем переменую для хранения IDBus@idBus int

-Получение кода автобуса и присваем IDBus переменой@idBus = (SELECT IDBus FROM Buses WHERE Brend = @brendBus AND StateNumber = @stateNumberBus)

-Обьявляем переменые для хранения PassportNumber и DrivingLicence@passport char(10)@drivingLicence char(10)

-Получаем PassportNumber и DrivingLicence и присваиваем переменым@passport = @passportSerial + @passportNumber@drivingLicence = @drivingLicenceSerial + @drivingLicenceNumber

-Теперь добавляем нового водителяINTO Drivers(LastName, FirstName, Patronymic, Birthday, PassportNumber, DrivingLicence, IDBus)(@lastName, @firstName, @patronymic, @birthday, @passport, @drivingLicence, @idBus)

---- Процедура добавления нового кондуктора -----

-Параметры хранимой процедурыPROCEDURE NewConductor @lastName char(80), @firstName char(80), @patronymic char(80), @birthday datetime,

@passportSerial char(4), @passportNumber char(6)

-Обьявляем переменую для хранения PassportNumber@passport char(10)

-Получаем PassportNumber и присваиваем переменой@passport = @passportSerial + @passportNumber

-Добавляем нового кондуктораINTO Conductors (LastName, FirstName, Patronymic, Birthday, PassportNumber)(@lastName, @firstName, @patronymic, @birthday, @passport)

---- Процедура добавления нового маршрута -----

-Параметры хранимой процедурыPROCEDURE NewRoute @nameRoute char(80), @direction char(200), @length int, @trips int

-Добавляем нового маршрутаINTO Routes (NameRoute, Direction, Length, Trips)(@nameRoute, @direction, @length, @trips)

---- Процедура удаление водителя -----

-Параметры хранимой процедурыPROCEDURE RemoveDriver @number int

- Удаляем водителя по табельному номеруFROM DriversDrivers.IDDriver = @number

---- Процедура удаление кондуктора -----

-Параметры хранимой процедурыPROCEDURE RemoveConductor @lastName char(20), @firstName char(20), @patronymic char(30)

- Объявляем переменную для хранения IDConductor@number int

- Получаем IDConductor и присваиваем переменой@number = (SELECT IDConductor FROM Conductors WHERE Conductors.LastName = @lastName AND.FirstName = @firstName AND Conductors.Patronymic = @patronymic)

- Удаляем кондуктора по IDConductorFROM ConductorsConductors.IDConductor = @number

---- Процедура удаление автобуса -----

-Параметры хранимой процедурыPROCEDURE RemoveBus @stateNumber char(10)

- Удаляем автобус по StateNumber(Гос. номеру)FROM BusesBuses.StateNumber = @stateNumber

---- Процедура удаление маршрута -----

-Параметры хранимой процедурыPROCEDURE RemoveRoute @nameRoute char(20)

- Удаляем маршрут по NameRout(Названию маршрута)FROM RoutesRoutes.NameRoute = @nameRoute

--- Процедура добавления путевого листа, если нет простоя ----

-Параметры хранимой процедуры--PROCEDURE AddWaySheet @number char(10), @date datetime, @dateDay char(20), @brendBus char(20), @stateNumberBus char(10), @driverName char(20), @driverNumber char(6), @conductorName char(20), @conductorNumber char(6), @nameRoute char(80), @change int, @exitInRoute int, @distance int, @plannedTrip int, @actualTrip int, @plannedExit char(5), @actualExit char(5), @plannedReturn char(5), @actualReturn char(5), @plannedSpendFuel int, @actualSpendFuel int, @reserve char(5), @speedometerExit int, @speedometerReturn int, @plannedRevenue money, @actualRevenue money

- Объявление переменых для хранения IDDriver, IDConductor, IDBus и IDRoute --@idDriver int@idConductor int@idBus int@idRoute int

- Обьявление переменых для вычисления отработоного времени --@exit datetime@return datetime

- Объявление переменой для хранения отработанного времени --@workedTime datetime

- Присвоение значений переменым --@idDriver = CONVERT(int, SUBSTRING(@driverNumber, 3, 3))@idConductor = CONVERT(int, SUBSTRING(@conductorNumber, 3, 3))@idBus = (SELECT IDBus FROM Buses WHERE Buses.StateNumber = @stateNumberBus)@idRoute = (SELECT IDRoute FROM Routes WHERE Routes.NameRoute = @nameRoute)@exit = CONVERT(datetime, @actualExit, 108)@return = CONVERT(datetime, @actualReturn, 108)@workedTime = @return - @exit

- Добавление записей в таблицу WaySheets --INTO WaySheets (NumberSheet, Date, IDDriver, IDBus, IDConductor)('Путевой лист ' + @number, @date, @idDriver, @idBus, @idConductor)

- Добавление записей в таблицу WaySheet --INTO WaySheet (NumberSheet, Date, DateDay, BrendBus, StateNumberBus, Driver, IDDriver, Conductor, IDConductor,NameRoute, Change,ExitInRoute, Distance, PlannedTrip, ActualTrip, PlannedExit, ActualExit, PlannedReturn, ActualReturn, PlannedSpendFuel, ActualSpendFuel, Reserve, SpeedometerExit, SpeedometerReturn, PlannedRevenue, ActualRevenue)('Путевой лист ' + @number, @date, @dateDay, @brendBus,@stateNumberBus, @driverName, @idDriver, @conductorName,@idConductor, @nameRoute, @change, @exitInRoute, @distance, @plannedTrip, @actualTrip, @plannedExit, @actualExit, @plannedReturn, @actualReturn, @plannedSpendFuel, @actualSpendFuel, @reserve,speedometerExit,@speedometerReturn,@plannedRevenue, @actualRevenue)

- Добавление записей в таблицу Revenue --INTO Revenue (IDConductor, Date, PlannedRevenue, ActualRevenue, IDRoute, IDDriver, IDBus, Change)(@idConductor, @date, @plannedRevenue, @actualRevenue, @idRoute, @idDriver, @idBus, @change)

- Добавление Записей в таблицу Distance --INTO Distance (IDBus, Date, Distance)(@idBus, @date, @distance)

- Обновление спидометра в таблийе Buses --BusesSpeedometer = @speedometerReturnBuses.IDBus = @idBus

- Проверяется есть ли Резерв --(@reserve = '00:00')

- Добавление записей в таблицу WorkedTime --INTO WorkedTime (IDDriver, WorkedTime, Date, IDConductor, IDBus, IDRoute, PlannedTrip, ActualTrip,Distance, SpendFuel, Change,ExitInRoute, Reserve, Stopping, Repairs, TO2)(@idDriver, @workedTime, @date, @idConductor, @idBus, @idRoute, @plannedTrip, @actualTrip, @distance,@actualSpendFuel, @change, @exitInRoute, NULL, NULL, NULL, NULL)

- Добавление записей в таблицу WorkedTime --INTO WorkedTime (IDDriver, WorkedTime, Date, IDConductor, IDBus, IDRoute, PlannedTrip, ActualTrip,Distance, SpendFuel, Change, ExitInRoute, Reserve, Stopping, Repairs, TO2)(@idDriver, @workedTime, @date, @idConductor, @idBus, @idRoute, @plannedTrip, @actualTrip, @distance,@actualSpendFuel, @change, @exitInRoute, CONVERT(datetime, @reserve, 108), NULL, NULL, NULL)

--- Процедура добавления путевого листа, если есть простой ----

- Параметры хранимой процедуры --PROCEDURE AddWaySheetStopping @number char(10), @date datetime, @dateDay char(20), @brendBus char(20), @stateNumberBus char(10),

@driverName char(20), @driverNumber char(6), @repairs char(5), @TO2 char(5), @stopping char(5)

- Обьявление переменх --@idDriver int@idBus int

- Присвоение значений переменым --@idDriver = CONVERT(int, SUBSTRING(@driverNumber, 3, 3))@idBus = (SELECT IDBus FROM Buses WHERE Buses.StateNumber = @stateNumberBus)

- Добавление записей в таблицу WaySheets --INTO WaySheets (NumberSheet, Date, IDDriver, IDBus, IDConductor)('Путевой лист ' + @number, @date, @idDriver, @idBus, NULL)

- Проверяется был ли Ремонт --(@repairs != '00:00')

- Добавление записей в таблицу WorkedTime --INTO WorkedTime (IDDriver, Date, IDBus, Repairs)(@idDriver, @date, @idBus, @repairs)

- Проверяется было ли ТО2 --(@TO2 != '00:00')

- Добавление записей в таблицу WorkedTime --INTO WorkedTime (IDDriver,Date, IDBus, TO2)(@idDriver, @date, @idBus, @TO2)

- Проверяется был ли Простой --(@stopping != '00:00')

- Добавление записей в таблицу WorkedTime --INTO WorkedTime (IDDriver, Date, IDBus, Stopping)(@idDriver, @date, @idBus, @stopping)

----// Создание функций //-----

--- Функции для получения времени из типа данных datetime в виде 00:00

- Функция получения часов из типа данных datetime --FUNCTION dbo.get_hour (@startTime datetime)int@hour int@hour = DATEPART(hour, @startTime)(@hour)

- Функция получения минут из типа данных datetime --FUNCTION dbo.get_minute (@startTime datetime)int@minute int@minute = DATEPART(minute, @startTime)(@minute)

- Функция возвращяющая время в виде 00:00 типа char(5) --FUNCTION dbo.get_time (@hour int, @minute int)char(5)@computeHour int@computeMinute int@hourOFminute int@time char(5)@hourOFminute = @minute/60@computeMinute = @minute%60@computeHour = @hour + @hourOFminute@time = RTRIM(CONVERT(char, @computeHour)) + ':' + RTRIM(CONVERT(char, @computeMinute))(@time)

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

- Если не нужно суммировать время, то функцию SUM не следует писать

- SELECT dbo.get_time(SUM(dbo.get_hour(<Имя_поля_таблицы>)), SUM(dbo.get_minute(<Имя_поля_таблицы>)))

Приложение


Главная форма

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;Autotransportation

{partial class FormMain : Form

{FormMain()

{();.IsMdiContainer = true;

}void driversToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormDrivers)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormDrivers")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormDrives = new FormDrivers();.MdiParent = this;_AddToolStrip();.Show();

}

}void busesToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormBuses)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormBuses")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormBuses = new FormBuses();.MdiParent = this;_AddToolStrip();.Show();

}

}void conductorsToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormConductors)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormConductors")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormConductors = new FormConductors();.MdiParent = this;_AddToolStrip();.Show();

}

}void routesToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormRoutes)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormRoutes")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormRoutes = new FormRoutes();.MdiParent = this;_AddToolStrip();.Show();

}

}void пробегАвтобусовToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormDistance)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormDistance")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormDistance = new FormDistance();.MdiParent = this;_AddToolStrip();.Show();

}

}void выручкаКондукторовToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormRevenue)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormRevenue")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormRevenue = new FormRevenue();.MdiParent = this;_AddToolStrip();.Show();

}

}void отработанноеВремяВодителейToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormWorkedTime)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormWorkedTime")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormWorkedTime = new FormWorkedTime();.MdiParent = this;_AddToolStrip();.Show();

}

}void путивыеЛистыToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormWaySheets)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormWaySheets")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormWaySheets = new FormWaySheets();.MdiParent = this;_AddToolStrip();.Show();

}

}void путивойЛистToolStripMenuItem_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormDocument)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormDocument")

{= x;

}

}(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

{FormDocument = new FormDocument();.MdiParent = this;_AddToolStrip();.Show();

}

}void FormDrivers_AddToolStrip()

{item = new ToolStripButton();FormDrivers = new FormDrivers();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormDrivers.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormDrivers.Name;.Text = FormDrivers.Text;.Image = FormDrivers.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormDrives_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormDrivers.Name;.Text = FormDrivers.Text;.Image = FormDrivers.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormDrives_Click);.Items.Add(item);

}

}toolStripFormDrives_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormDrivers)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormDrivers")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormDrivers_RemoveToolStrip()

{FormDrives = new FormDrivers();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FormDrives.Name)

{.Items.RemoveAt(x);

}

}

}void FormBuses_AddToolStrip()

{item = new ToolStripButton();FormBuses = new FormBuses();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormBuses.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormBuses.Name;.Text = FormBuses.Text;.Image = FormBuses.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormBuses_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormBuses.Name;.Text = FormBuses.Text;.Image = FormBuses.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormBuses_Click);.Items.Add(item);

}

}toolStripFormBuses_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormBuses)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormBuses")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormBuses_RemoveToolStrip()

{FormBuses = new FormBuses();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FormBuses.Name)

{.Items.RemoveAt(x);

}

}

}void FormConductors_AddToolStrip()

{item = new ToolStripButton();FormConductors = new FormConductors();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormConductors.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormConductors.Name;.Text = FormConductors.Text;.Image = FormConductors.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormConductors_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormConductors.Name;.Text = FormConductors.Text;.Image = FormConductors.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormConductors_Click);.Items.Add(item);

}

}toolStripFormConductors_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormConductors)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormConductors")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormConductors_RemoveToolStrip()

{FormConductors = new FormConductors();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FormConductors.Name)

{.Items.RemoveAt(x);

}

}

}void FormRoutes_AddToolStrip()

{item = new ToolStripButton();FormRoutes = new FormRoutes();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormRoutes.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormRoutes.Name;.Text = FormRoutes.Text;.Image = FormRoutes.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormRoutes_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormRoutes.Name;.Text = FormRoutes.Text;.Image = FormRoutes.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormRoutes_Click);.Items.Add(item);

}

}toolStripFormRoutes_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormRoutes)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormRoutes")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormRoutes_RemoveToolStrip()

{FR = new FormRoutes();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FR.Name)

{.Items.RemoveAt(x);

}

}

}void FormDistance_AddToolStrip()

{item = new ToolStripButton();FormDistance = new FormDistance();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormDistance.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormDistance.Name;.Text = FormDistance.Text;.Image = FormDistance.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormDistance_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormDistance.Name;.Text = FormDistance.Text;.Image = FormDistance.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormDistance_Click);.Items.Add(item);

}

}toolStripFormDistance_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormDistance)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormDistance")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormDistance_RemoveToolStrip()

{FD = new FormDistance();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FD.Name)

{.Items.RemoveAt(x);

}

}

}void FormRevenue_AddToolStrip()

{item = new ToolStripButton();FormRevenue = new FormRevenue();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormRevenue.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormRevenue.Name;.Text = FormRevenue.Text;.Image = FormRevenue.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormRevenue_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormRevenue.Name;.Text = FormRevenue.Text;.Image = FormRevenue.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormRevenue_Click);.Items.Add(item);

}

}toolStripFormRevenue_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormRevenue)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormRevenue")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormRevenue_RemoveToolStrip()

{FR = new FormRevenue();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FR.Name)

{.Items.RemoveAt(x);

}

}

}void FormWorkedTime_AddToolStrip()

{item = new ToolStripButton();FormWorkedTime = new FormWorkedTime();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormWorkedTime.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormWorkedTime.Name;.Text = FormWorkedTime.Text;.Image = FormWorkedTime.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormWorkedTime_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormWorkedTime.Name;.Text = FormWorkedTime.Text;.Image = FormWorkedTime.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormWorkedTime_Click);.Items.Add(item);

}

}toolStripFormWorkedTime_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormWorkedTime)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormWorkedTime")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormWorkedTime_RemoveToolStrip()

{FWT = new FormWorkedTime();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FWT.Name)

{.Items.RemoveAt(x);

}

}

}void FormWaySheets_AddToolStrip()

{item = new ToolStripButton();FormWaySheets = new FormWaySheets();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormWaySheets.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormWaySheets.Name;.Text = FormWaySheets.Text;.Image = FormWaySheets.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormWaySheets_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormWaySheets.Name;.Text = FormWaySheets.Text;.Image = FormWaySheets.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormWaySheets_Click);.Items.Add(item);

}

}toolStripFormWaySheets_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormWaySheets)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormWaySheet")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormWaySheets_RemoveToolStrip()

{FWS = new FormWaySheets();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FWS.Name)

{.Items.RemoveAt(x);

}

}

}void FormDocument_AddToolStrip()

{item = new ToolStripButton();FormDocument = new FormDocument();(toolStrip1.Items.Count != 0)

{haveButton = true;(ToolStripButton oldButton in this.toolStrip1.Items)

{(oldButton.Name == "toolStrip" + FormDocument.Name)

{= false;;

}

}(haveButton)

{.Name = "toolStrip" + FormDocument.Name;.Text = FormDocument.Text;.Image = FormDocument.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormDocument_Click);.Items.Add(item);

}

}

{.Name = "toolStrip" + FormDocument.Name;.Text = FormDocument.Text;.Image = FormDocument.Icon.ToBitmap();.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;.CheckState = CheckState.Indeterminate;.Click += new EventHandler(toolStripFormDocument_Click);.Items.Add(item);

}

}toolStripFormDocument_Click(object sender, EventArgs e)

{OpenForm = false;(Form Child in this.MdiChildren)

{(Child is FormDocument)

{= true;

}

}(OpenForm)

{index = 0;(int x = 0; x < this.MdiChildren.Length; x++)

{(MdiChildren[x].Name == "FormDocument")

{= x;

}

}(this.ActiveMdiChild == this.MdiChildren[index])

{.MdiChildren[index].WindowState = FormWindowState.Minimized;

}

{(MdiChildren[index].Visible == true)

{.MdiChildren[index].Activate();

}

{.MdiChildren[index].WindowState = FormWindowState.Normal;.MdiChildren[index].Visible = true;

}

}

}

}void FormDocument_RemoveToolStrip()

{FDoc = new FormDocument();(int x = 0; x < toolStrip1.Items.Count; x++)

{(toolStrip1.Items[x].Name == "toolStrip" + FDoc.Name)

{.Items.RemoveAt(x);

}

}

}void ВыходToolStripMenuItem_Click(object sender, EventArgs e)

{();

}void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

{FormAbout = new FormAbout();.ShowDialog();

}void реестрПутёвокВодителейToolStripMenuItem_Click(object sender, EventArgs e)

{FormWaySheetDrivers = new FormWaySheetDrivers();.Show();

}void работаКондукторовToolStripMenuItem_Click(object sender, EventArgs e)

{FormWorkConductor = new FormWorkConductor();.Show();

}void листдоходаКондукторовToolStripMenuItem_Click(object sender, EventArgs e)

{FormRevenueConductors = new FormRevenueConductors();.Show();

}void сводныйЖурналПоМаркамToolStripMenuItem_Click(object sender, EventArgs e)

{FormMagazineBus = new FormMagazineBus();.Show();

}

}

}


ПОЯСНИТЕЛЬНАЯ ЗАПИСКА ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ: Автоматизация учета работы автотранспортного предприятия Содерж

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

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

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

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

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