Модуль комплексной системы автоматизации рабочих мест диспетчера по транспорту

 

Содержание


Введение

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

. Анализ задачи

.1 Диаграмма А0. Обработка путевых листов

.1.1 Выводы

.2 Декомпозиция диаграммы А0. Обработка путевых листов

.2.1 Выводы

.3 Обзор существующих систем

.3.1 "1С: Управление Автотранспортом"

.3.1.1 Подсистема диспетчерская

.3.1.2 Подсистема ПТО

.3.1.3 Подсистема учет ГСМ

.3.1.4 Подсистема учета ремонтов и сервисного обслуживания

.3.1.5 Подсистема складского учета

.3.1.6 Подсистема учета оказанных транспортных услуг

.3.1.7 Подсистема учета работы водителей

.3.1.8 Подсистема учета затрат

.3.1.9 Вывод

.4 Выбор инструментальных средств

.4.1 Клиент серверные СУБД

2.4.1.1 Microsoft SQL Server

.4.1.2 InterBase

.4.1.3 MySQL

.4.1.4 Firebird

2.4.2 Объектно-ориентированный язык программирования

.4.2.1 Delphi

.4.2.2 С# (C Sharp)

.4.3 Вывод

. Решение задачи

.1 Проектирование автоматизированного рабочего места

.1.1 Инфологическая модель данных

.1.2 Даталогическая модель данных

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

.3 Формы

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

.3.2 Вкладка "Водители"

.3.3 Вкладка "Автомобили"

.3.4 Вкладка "ГСМ"

.3.5 Вкладка "Диспетчерская"

.3.6 Вывод

. Результат испытания

Заключение

Источники информации

Приложение


Введение


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

В последние годы возникла концепция распределенных систем управления предприятием, где предусмотрена локальная обработка информации. Для реализации идеи распределенного управления необходимо создание для каждого уровня управления и каждой предметной области автоматизированных рабочих мест (АРМ) на базе профессиональных персональных ЭВМ.

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

Для каждого объекта управления нужно предусмотреть автоматизированные рабочие места, соответствующие их функциональному назначению. Однако принципы создания АРМ должны быть общими: системность, гибкость, устойчивость, эффективность.

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

Задачами данной системы являются:

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

. автоматизация информации, хранящейся на бумажных носителях;

. уменьшения объема хранимой информации;

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

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

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

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

. изучить существующую информационную систему организации;

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

. разработать структуру программы;

. оценить экономическую эффективность создаваемого программного продукта.

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


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


Этап 1.

Анализ задачи.

Этап 2.

Проектирование автоматизированного рабочего места диспетчера по транспорту:

. Проектирование инфологической модели.

. Проектирование даталогической модели.

. Построение физической модели сайта.

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

Этап 3.

Разработка автоматизированной системы диспетчера по транспорту. (Проектирование АРМ)

Необходимо реализовать следующие функции:

1.Установить программное обеспечение;

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

.Создание модуля учета ГСМ (учет выдачи ГСМ, учет расхода ГСМ);

.Подготовка данных для статистических отчетов:

- ведомость работы автотранспорта;

ведомость работы водителей;

диаграмма состояния технических средств;

журнал путевых листов.


2. Анализ задачи


После анализа предметной области были получены IDEF0-диаграммы (Рис.1, Рис.2), которые отражают последовательность разработки автоматизированной системы.используется для создания функциональной модели, отображающей структуру и функции системы, а также потоки информации и материальных объектов, связывающие эти функции [3].


Рис.1. Диаграмма А0. Обработка путевых листов.


Рис.2. Декомпозиция диаграммы А0. Обработка путевых листов.


2.1 Диаграмма А0. Обработка путевых листов


Рассмотрим диаграмму A0 "Обработка путевых листов" (Рис.1). На ней отражена последовательность разработки автоматизированной системы.

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

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

Вход (Input) - материал или информация, которые используются или преобразуется работой для получения результата (выхода). Информационные материалы - это то, что перерабатывается в процессе "Обработке путевых листов" для получения результата.

Выход (Output) - материал или информация, которые производятся выводятся на сайте. Каждая информация должна имеет стрелку выхода. На рисунке 1. стрелка "Выходные данные (отчетность)" является выходом для работы "Обработки путевых листов".

Механизм (Mechanism)- ресурсы, которые выполняют работу. Стрелка механизма рисуется как входящая в нижнюю грань работы. На рисунке 1. стрелки "Диспетчер", "Администратор" является механизмом для работы "Обработки информации".


.1.1 Выводы

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

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


.2 Декомпозиция диаграммы А0. Обработка путевых листов


Рассмотрим декомпозицию диаграммы A0 "Обработка путевых листов" (Рис.2). На ней отражена последовательность создания путевых листов.

- Ввод данных о водителях;

Ввод данных о транспорте;

Расчет ГСМ;

Создание путевых листов.


2.2.1 Выводы

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

- Ввод данных о водителях - общая информация о водителях.

Ввод данных о транспорте - информация о транспорте предприятия (марки автомобилей, государственные номера, общий пробег);

Расчет ГСМ - ведется учет выдачи ГСМ, учет расхода ГСМ;

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


.3 Обзор существующих систем


.3.1 "1С: Управление Автотранспортом"

В качестве обзора существующих программ, рассмотрена программа "1С: Управление Автотранспортом".

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

Программа "1С:Управление автотранспортом Стандарт" состоит из восьми основных подсистем:

подсистема диспетчерская;

подсистема ПТО;

подсистема учета ГСМ;

подсистема учета ремонтов;

подсистема складского учета;

подсистема взаиморасчетов;

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

подсистема учета затрат.

автоматизированный диспетчер интерфейс программа

2.3.1.1 Подсистема диспетчерская

Подсистема диспетчерская предназначена для принятия заказов на автотранспорт, выписки разнарядки на выпуск ТС и формирование маршрутных листов, формирования и обработки путевых листов.

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


Рис.3. Разнарядка на выпуск ТС


Программа позволяет выписывать и обрабатывать путевые листы следующих видов:

- Грузового автомобиля повременный (Форма №4-П);

Грузового автомобиля сдельный (Форма №4-С);

Специального автомобиля (Форма №3 спец);

Междугородного автомобиля (Форма №4-М);

Строительной машины (ЭСМ2);

Автобуса необщего пользования (форма №6 спец);

Легкового автомобиля (Форма №3);

Путевые листы индивидуальных предпринимателей.


.3.1.2 Подсистема ПТО

Основное назначение подсистемы ПТО - ведение справочника транспортных средств, учет выработки ТС и оборудования, контроль сроков замены шин и аккумуляторов, планирование технического обслуживания, учет ДТП, контроль окончания сроков действия таких документов, как полисы ОСАГО, медицинские справки, водительские удостоверения и др.

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


Рис.4. Транспортное средство.


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


Рис.5. Регистрация ДТП: Дорожно-транспортное происшествие


.3.1.3 Подсистема учет ГСМ

Подсистема предназначена для настройки норм расхода ГСМ, учета поступления, выдачи и расхода ГСМ.

Поступление и выдача ГСМ оформляется документами "Поступление товаров" и "Заправка ГСМ", расчет расхода топлива ведется в путевых листах. В случае возврата топлива с автомобиля на склад предусмотрены специальные документы на слив ГСМ.

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

Со склада;

За наличные;

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

По талонам;

От поставщика.

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


.3.1.4 Подсистема учета ремонтов и сервисного обслуживания

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

Заказы на ремонт регистрируются документами "Предварительный заказ на ремонт", в которых указывается автомобиль, причина обращения, перечень неисправностей и запасных частей. В случае проведения ремонта в стороннем автосервисе, предварительный заказ на ремонт может быть распечатан в виде в следующем виде (Рис.6):


Рис.6. Заказ на ремонт

2.3.1.5 Подсистема складского учета

Подсистема предназначена для проведения складских операций: поступления товаров и материалов на склад, внутреннее перемещение между складами, списание, проведение инвентаризаций. Списание материалов может быть выполнено одним из способов: ФИФО, ЛИФО и по среднему.

В отдельный складской учет вынесен учет шин, аккумуляторов, аптечек и прочей комплектации, так как такую комплектацию необходимо учитывать в разрезе каждой единицы. Для шин и аккумуляторов ведется учет подробной технической информации (Рис.7):


Рис.7. Учет технической информации


2.3.1.6 Подсистема учета оказанных транспортных услуг

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

Расчет стоимости оказанных транспортных услуг выполняется при обработке путевых листов в товарно-транспортных документов (аналоги талонов заказчиков, ТТН). Программа автоматически рассчитывается стоимость услуг на основании введенных тарифов (Рис.8):


Рис.8. Товарно-транспортный документ


2.3.1.7 Подсистема учета работы водителей

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

Расчет рабочего времени водителей выполняется при обработке путевых и ремонтных листов. Кроме этого предусмотрена возможность специальными документами вводить различные отклонения в использовании водителями рабочего времени. На основании этих данных автоматически формируется табель учета рабочего времени - унифицированная форма Т13.

Расчет начислений по заработной плате водителей в программе ведется различными способами:

По сдельным тарифам от выработки;

Процентом от выручки;

Процентом от других начислений;

Фиксированной суммой;

Доплата за ночные часы.

2.3.1.8 Подсистема учета затрат

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

Расчет рабочего времени водителей выполняется при обработке путевых и ремонтных листов. Кроме этого предусмотрена возможность специальными документами вводить различные отклонения в использовании водителями рабочего времени. На основании этих данных автоматически формируется табель учета рабочего времени - унифицированная форма Т13.

Расчет начислений по заработной плате водителей в программе ведется различными способами:

По сдельным тарифам от выработки;

Процентом от выручки;

Процентом от других начислений;

Фиксированной суммой;

Доплата за ночные часы.


.3.1.9 Вывод

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

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

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


2.4 Выбор инструментальных средств


.4.1 Клиент серверные СУБД


.4.1.1 Microsoft SQL Server

Microsoft SQL Server3 - система управления реляционными базами данных, разработанная корпорацией Microsoft4. Используется для небольших и средних по размеру баз данных, и в последние 5 лет - для крупных баз данных масштаба предприятия, конкурирует с другими СУБД в этом сегменте рынка.

Сервер баз данных Microsoft SQL Server в качестве языка запросов использует версию языка SQL, получившую название Transact-SQL (сокращённо T-SQL). Язык T-SQL является реализацией SQL-92 (стандарт ISO для языка SQL) с множественными расширениями. T-SQL позволяет использовать дополнительный синтаксис для хранимых процедур и обеспечивает поддержку транзакций (взаимодействие базы данных с управляющим приложением).

При взаимодействии с сетью Microsoft SQL Server и Sybase ASE используют протокол уровня приложения под названием Tabular Data Stream (TDS, протокол передачи табличных данных). Протокол TDS также был реализован в проекте FreeTDS с целью обеспечить различным приложениям возможность взаимодействия с базами данных Microsoft SQL Server и Sybase.

Для обеспечения доступа к данным Microsoft SQL Server поддерживает Open Database Connectivity (ODBC) - интерфейс взаимодействия приложений с СУБД.

Также SQL Server поддерживает зеркалирование и кластеризацию баз данных.

В SQL Server 2005 встроена поддержка .NET Framework. Благодаря этому хранимые процедуры БД могут быть написаны на любом языке платформы .NET.

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

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


2.4.1.2 InterBase- СУБД от компании Borland.

В 2000 году компания Borland выпустила версию InterBase 6.0 в открытых кодах - InterBase 6 Open Source Edition, под InterBase Public License (IPL). Не было выпущено ни документации, ни системы тестирования, ни системы сборки проекта - просто груда некомпилируемых исходников. Фактически Borland в тот момент отказался от дальнейшего развития InterBase.

июля 2000 года инициативная группа, отчаявшись добиться от Borland поддержки или хотя бы внятной позиции, скопировала исходные коды InterBase 6 и образовала проект Firebird - полностью Open Source проект, основанный на кодах InterBase 6 Open Source.

В 2001 году компания Borland снова решила развивать InterBase. В следующей версии InterBase (6.5) компания Borland очевидно отказалась от модели бизнеса на основе Open Source. Чуть позже официально полностью была прекращена поддержка InterBase Open Source Edition.

В настоящее время последней версией является InterBase 2009. InterBase 7.5/2007 и Firebird 1.5/2.0 похожи, но уже далеки от полной совместимости - то есть миграция между их форматами баз данных легче, чем между форматами совсем "чужих" баз данных, но все же сопряжена с определенными проблемами.

Основными достоинствами последней версии InterBase являются низкие требования к системе, с одновременной масштабируемостью на несколько процессоров, плюс развитая система мониторинга, временные таблицы, встраиваемая аутентификация пользователей, журналирование. Традиционным достоинством считается кросс-платформенность InterBase поддерживает GNU/Linux, Microsoft Windows, Unix и Solaris.


.4.1.3 MySQL- свободная система управления базами данных (СУБД). MySQL является собственностью компании Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого компания MySQL AB разрабатывает функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server2003 и Windows Vista. Существует также порт MySQL к OpenVMS. Важно отметить, что компания MySQL AB предоставляет для свободной загрузки не только исходные коды СУБД, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули, которые можно загрузить с зеркал, представленных на официальном сайте.

MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы .NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.


2.4.1.4 Firebird- компактная, кроссплатформенная, свободная система управления базами данных (СУБД), работающая на Linux, Microsoft Windows и разнообразных Unix платформах.

В качестве преимуществ Firebird можно отметить многоверсионную архитектуру, обеспечивающую параллельную обработку оперативных и аналитических запросов (это возможно потому, что читающие пользователи не блокируют пишущих), компактность (дистрибутив 5Mb), высокую эффективность и мощную языковую поддержку для хранимых процедур и триггеров.используется в различных промышленных системах (складские и хозяйственные, финансовый и государственный сектора) с 2001 г. Это коммерчески независимый проект C и C++ программистов, технических советников и разработчиков мультиплатформенных систем управления базами данных, основанный на исходном коде, выпущенном корпорацией Borland 25 июля 2000 года в виде свободной версии Interbase 6.0.

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

Наиболее широко используемыми для серверов Firebird операционными системами являются Linux и Microsoft Windows (включая NT) (включая терминальные сервисы MS и Citrix). Другие поддерживаемые платформы - Mac OS X, Solaris, FreeBSD и HP-UX.поддерживает большие базы данных. Базы данных могут быть расположены в нескольких файлах, предельный размер которых зависит от операционной системы. Теоретический предел в настоящее время составляет 64TB для одного файла базы данных, таким образом, главные ограничения накладываются файловой системой и местом на жёстком диске.

Практически база данных объемом 1 ТБ стабильно работает, что доказывает проведенный тест.

Firebird выпускается под условиями IPL (InterBase Public License) и IDPL (Initial Developers Public License), которые совпадают с условиями Mozilla Public License 1.1. Firebird полностью бесплатен для использования и распространения (в том числе и коммерческого). Раскрытие исходного кода вашего продукта не требуется, вне зависимости от используемой модели лицензирования. Однако, в случае, если вы модифицировали исходный код сервера, то необходимо сделать доступным исходный код ваших модификаций.


.4.2 Объектно-ориентированный язык программирования


.4.2.1 Delphi

Delphi - это среда быстрой разработки, в которой в качестве языка программирования используется строго типизированный объектно-ориентированный язык, в основе которого Object Pascal. Во-вторых, были получены ранее навыки работы в среде Delphi и принято решение использовать полученные знания при создании программы, а также изучить новые возможности Delphi 7. Кроме того, главным достоинством Delphi является продуктивность, т.е. на сегодняшний день работа в Delphi - самый продуктивный метод создания приложения для Windows. Продуктивность данной среды разработки определяется следующими пятью важнейшими аспектами:

- качеством визуальной среды разработки;

- скоростью работы компилятора и быстродействием откомпилированных программ;

мощностью языка программирования и его сложностью;

гибкостью и масштабируемостью используемой архитектуры баз данных;

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


.4.2.2 С# (C Sharp)

C# (Си-шарп) - объектно-ориентированный язык программирования для платформы .NET. Разработан в 2000 году Андерсом Хейлсбергом, Скоттом Вилтамутом и Питером Гольде под эгидой Microsoft Research. Основным постулатом С# является высказывание: "всякая сущность есть объект". Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода.

C# был создан специально для технологии ASP.NET. В то же время на C# полностью написана и сама ASP.NET.

C# - это полнофункциональный объектно-ориентированный язык, который поддерживает все три "столпа" объектно-ориентированного программирования: инкапсуляцию, наследование и полиморфизм. Он имеет прекрасную поддержку компонентов, надежен и устойчив благодаря использованию "сборки мусора", обработки исключений, безопасности типов.

Язык C# разрабатывался "с нуля" и вобрал в себя много полезных свойств таких языков, как C++, Java, Visual Basic, а также Pascal, Delphy и др. При этом необходимость обратной совместимости с предыдущими версиями отсутствовала, что позволило языку C# избежать многих отрицательных сторон своих предшественников.

Как и Java, C# разрабатывался для Интернет и примерно 75% его синтаксических возможностей аналогичны языку программирования Java, его также называют "очищенной версией Java. 10% подобны языку программирования C++, а 5% - заимствованы из языка программирования Visual Basic. Объем новых концептуальных идей в языке C# около 10%.

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


.4.3 Вывод

Для разработки автоматизированного рабочего места была выбрана среда программирования С# (C Sharp), так как она полностью удовлетворяет запросам поставленной задачи, в наличии имеется лицензионный программный продукт и соответствующие знания по его применению.

А так же клиент серверное СУБД SQL Server 2012 Express, она идеально подходящая для обучения, разработки и размещения настольных, небольших серверных и веб-приложений, и для распространения программного обеспечения независимыми производителями.


3. Решение задачи


.1 Проектирование автоматизированного рабочего места


.1.1 Инфологическая модель данных

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

Водители (Табельный номер, Фамилия, Имя, Отчество, Номер паспорта, Дата Выдачи паспорта, Место выдачи паспорта, Дата рождения, Номер прав, Дата выдачи прав, Номер лицензии, Дата начала работы, В отпуске)

Доверенности (Водитель, Автомобиль, Дата начала действия, Дата окончания действия)

Автомобили (Государственный номер, Модель, Дата приобретения, Пробег, Состояние ремонта, Статус)

Модели (Идентификатор модели, Производитель, Модель, Тип Кузова, Расход при простое, Расход при работе)

Путевые листы (Номер путевого листа, Автомобиль, Водитель, Организация, Адрес подачи, Время выезда, Время возвращения, Пройдено, Выдано горющего, Остаток горющего при выезде, Остаток горющего при возвращении, Расход по норме, Расход фактический, Дата заполнения)

Поездки (Номер поездки, Номер путевого листа, Код заказчика, Место отправления, Место назначения, Время выезда, Время Возвращения, Пройдено километров)

Описанные выше сущности образуют связи описанные в таблице 3.1


Таблица 3.1. Связи между сущностями

СущностьСвязьСущностьВодители"один ко многим"ДоверенностиВодители"один ко многим"Путевые листыДоверенности"многие к одному"ВодителиДоверенности"многие к одному"АвтомобилиАвтомобили"один ко многим"ДоверенностиАвтомобили"многие к одному"МоделиПутевые листы"многие к одному"ВодителиПутевые листы"один ко многим"ПоездкиПутевые листы"один ко многим"АвтомобилиПоездки"многие к одному"Путевые листы

На рисунке 9. представлена инфологическая модель данных, разработанная при помощи Microsoft Office Visio 2007


Рисунок 9. Инфологическая модель данных


3.1.2 Даталогическая модель данных

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

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

Таблица 3.2. "Водители"

Имя поляТип данныхТабельный номерintФамилияnvarcharИмяnvarcharОтчествоnvarcharНомер паспортаncharДата выдачи паспортаdateМеста выдачи паспортаnvarcharДата рожденияdateНомер правncharДата выдачи правdateНомер лицензииncharДата начала работыdateВ отпускеnvarchar

Таблица 3.3 "Доверенности"

Имя поляТип данныхВодительintАвтомобильncharДата начала действияdateДата окончания действияdate

Таблица 3.3 "Автомобили"

Имя поляТип данныхГосударственный номерncharМодельintДата приобретенияdateПробегbigintСостояние ремонтаtextСтатусnvarchar

Таблица 3.3 "Модели"

Имя поляТип данныхИдентификатор моделиintПроизводительnvarcharМодельnvarcharТип кузоваnvarcharОбъем двигателяrealРасход при простоеrealРасход при работеreal

Таблица 3.3 "Путевые листы"

Имя поляТип данныхНомер путевого листаbigintАвтомобильncharВодительintОрганизацияnvarcharАдрес подачиnvarcharВремя выездаtimeВремя возвращенияtimeПройденоintВыдано горючегоtinyintОстаток горючего при выездеtinyintОстаток горючего при возвращенииtinyintРасход по нормеtinyintРасход фактическийtinyintДата заполненияdate

Таблица 3.3 "Поездки"

Имя поляТип данныхНомер поездкиintНомер путевого листаbigintКод заказчикаnvarcharМесто отправленияnvarcharМесто назначенияnvarcharВремя выездаdatetimeВремя возвращенияdatetimeПройдено километровint

На рисунке 10. представлена датологическая модель данных, разработанная при помощи Microsoft Office Visio 2007

Рисунок 10. Даталогическая модель данных


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


Структура взаимодействия форм представлена на Рисунок 11.


Рисунок 11. Схема взаимодействия форм


.3 Формы


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

Главная форма предназначена для управления работой всеми информационными ресурсами: водители, автомобили, ГСМ, диспетчерская. Вид данной формы приведен на рисунке 12. С данной формы можно переходить на второстепенные формы.


Рисунок 12. Главная форма.


.3.2 Вкладка "Водители"

При нажатии вкладки "Водители" можно открыть две формы "Учет выработки", которая позволяет просмотреть общее время работы водителя, время выезда и время возвращения на предприятием (рис 13), и форма "Список водителей", которая позволяет выполнять основные действия с анкетными данными водителей (рис 14).


Рисунок 13. Форма "Учет выработки".


Рисунок 14. Форма "Список водителей".


.3.3 Вкладка "Автомобили"

При нажатии вкладки "Автомобили" можно открыть три формы: "Транспортные средства" (рис 15), "Доверенности" (рис 16), "Список моделей" (рис 17). В этих формах ведется учет всей необходимой информации. В форме "Технические средства" содержится информация об автомобиле, которая позволяет ввести учет о состоянии автотранспорта (рис 15).


Рисунок 15. Форма "Транспортные средства".

Форма "Доверенности" позволяет просматривать водителей закрепленных за автотранспортом, сроки действия доверенностей водителей на автотранспорт.


Рисунок 16. Форма "Доверенности".


Форма "Справочник моделей" содержит информацию о технических характеристиках автотранспорта.


Рисунок 17. Форма "Список моделей".


.3.4 Вкладка "ГСМ"

При нажатии вкладки "ГСМ" позволяет выполнять учет расхода ГСМ (рис.18), а также вести статистику по перерасходу топлива, использованию автомобилей и по общему количеству отработанных часов водителей.


Рисунок 19. Форма "Учет расхода топлива".


Рисунок 20. Форма "Статистика", вкладка "Использование автомобилей"


Рисунок 20. Форма "Статистика", вкладка "Перерасход топлива"


Рисунок 20. Форма "Статистика", вкладка "Отработано часов"


.3.5 Вкладка "Диспетчерская"

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

В форме "Путевые листы" заполняются все данные о маршруте автотранспорта, ведется учет о движении топлива, фактический и нормативный расход топлива (рис 21), а так же выводиться типовая межотраслевая форма №3 (рис 22).


Рисунок 21. Форма "Путевые листы".


Рисунок 21. "ТМФ № 3"

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


Рисунок 21. "График состояния"


.3.6 Вывод

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

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


4. Результат испытания


Тестирование производилось под управлением операционной системы Microsoft Windows XP Professional Version 2002 Service Pack 3, Microsoft Windows 7.

При использования приложений Microsoft Office Excel 2003, Microsoft Office Excel 2007, Microsoft Office Excel 2010.

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


Заключение


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

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


Источники информации


1.#"justify">Приложение 1


Рис.1. Диаграмма А0. Обработка путевых листов.


Рис.2. Декомпозиция диаграммы А0. Обработка путевых листов.


Приложение 2


Программный код


Program.cs

using System;

using System.Collections.Generic;System.Linq;System.Windows.Forms;avto

{class Program

{

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]void Main()

{.EnableVisualStyles();.SetCompatibleTextRenderingDefault(false);.Run(new Form1());

}

}

}

Ways.cs

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

{partial class ways : Form

{ways(int wayNumber)

{();.Text = wayNumber.ToString();

}void ways_Load(object sender, EventArgs e)

{.поездкиTableAdapter.Fill(this.avtodbDataSet.Поездки);

}void fillByToolStripButton_Click_1(object sender, EventArgs e)

{

{.поездкиTableAdapter.FillBy(this.avtodbDataSet.Поездки, ((long)(System.Convert.ChangeType(numToolStripTextBox.Text, typeof(long)))));

}(System.Exception ex)

{.Windows.Forms.MessageBox.Show(ex.Message);

}

}void toolStripButton1_Click_1(object sender, EventArgs e)

{r1 = new report();.Show();

}void toolStripButton2_Click(object sender, EventArgs e)

{

{.Validate();

поездкиBindingSource.EndEdit();

поездкиTableAdapter.Update(avtodbDataSet);.Show("Данные сохранены");

}(System.Exception ex)

{.Show("Сохранение неудачно");

}

}

}

}

wayLists.cs

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

{partial class wayLists : Form

{wayLists()

{();

}void wayLists_Load(object sender, EventArgs e)

{

// TODO: This line of code loads data into the 'avtodbDataSet.Путевые_листы' table. You can move, or remove it, as needed..путевые_листыTableAdapter.Fill(this.avtodbDataSet.Путевые_листы);

}void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)

{_Click(sender, (EventArgs)e);f1 = new ways(int.Parse(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()));.ShowDialog();

}void saveToolStripButton_Click(object sender, EventArgs e)

{

{.Validate();

путевыеЛистыBindingSource.EndEdit();

путевые_листыTableAdapter.Update(avtodbDataSet);.Show("Данные сохранены");

}(System.Exception ex)

{.Show("Сохранение неудачно");

}

}void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)

{_Click(sender, (EventArgs)e);f1 = new ways(int.Parse(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()));.ShowDialog();

}void toolStripButton1_Click(object sender, EventArgs e)

{_Click(sender, (EventArgs)e);f1 = new ways(int.Parse(dataGridView1.Rows[dataGridView1.SelectedRows[0].Index].Cells[0].Value.ToString()));.ShowDialog();

}

}

}

Report2.rdlc

<?xml version="1.0" encoding="utf-8"?>

<Report xmlns:rd="#"justify"><DataSources>

<DataSource Name="avtodbDataSet">

<ConnectionProperties>

<DataProvider>System.Data.DataSet</DataProvider>

<ConnectString>/* Local Connection */</ConnectString>

</ConnectionProperties>

<rd:DataSourceID>41afd082-fef0-4e0f-926c-d0547939a1f9</rd:DataSourceID>

</DataSource>

</DataSources>

<DataSets>

<DataSet Name="DataSet1">

<Fields>

<Field Name="Дата">

<DataField>Дата</DataField>

<rd:TypeName>System.DateTime</rd:TypeName>

</Field>

<Field Name="Выданное_горючее">

<DataField>Выданное_горючее</DataField>

<rd:TypeName>System.Int32</rd:TypeName>

</Field>

</Fields>

<Query>

<DataSourceName>avtodbDataSet</DataSourceName>

<CommandText>/* Local Query */</CommandText>

</Query>

<rd:DataSetInfo>

<rd:DataSetName>avtodbDataSet</rd:DataSetName>

<rd:SchemaPath>C:\Users\Yahhi\Desktop\avto\avto\avto\avtodbDataSet.xsd</rd:SchemaPath>

<rd:TableName>Путевые листы1</rd:TableName>

<rd:TableAdapterFillMethod>Fill</rd:TableAdapterFillMethod>

<rd:TableAdapterGetDataMethod>GetData</rd:TableAdapterGetDataMethod>

<rd:TableAdapterName>Путевые_листы1TableAdapter</rd:TableAdapterName>

</rd:DataSetInfo>

</DataSet>

</DataSets>

<Body>

<ReportItems>

<Tablix Name="Tablix1">

<TablixBody>

<TablixColumns>

<TablixColumn>

<Width>3.25in</Width>

</TablixColumn>

</TablixColumns>

<TablixRows>

<TablixRow>

<Height>0.29872in</Height>

<TablixCells>

<TablixCell>

<CellContents>

<Textbox Name="Textbox2">

<CanGrow>true</CanGrow>

<KeepTogether>true</KeepTogether>

<Paragraphs>

<Paragraph>

<TextRuns>

<TextRun>

<Value>Выданное горючее</Value>

<Style>

<FontFamily>Tahoma</FontFamily>

<FontSize>11pt</FontSize>

<FontWeight>Bold</FontWeight>

<Color>White</Color>

</Style>

</TextRun>

</TextRuns>

<Style />

</Paragraph>

</Paragraphs>

<rd:DefaultName>Textbox2</rd:DefaultName>

<Style>

<Border>

<Color>#949ca4</Color>

<Style>Solid</Style>

</Border>

<BackgroundColor>#7c8692</BackgroundColor>

<PaddingLeft>2pt</PaddingLeft>

<PaddingRight>2pt</PaddingRight>

<PaddingTop>2pt</PaddingTop>

<PaddingBottom>2pt</PaddingBottom>

</Style>

</Textbox>

</CellContents>

</TablixCell>

</TablixCells>

</TablixRow>

<TablixRow>

<Height>0.29872in</Height>

<TablixCells>

<TablixCell>

<CellContents>

<Textbox Name="Выданное_горючее">

<CanGrow>true</CanGrow>

<KeepTogether>true</KeepTogether>

<Paragraphs>

<Paragraph>

<TextRuns>

<TextRun>

<Value>=Sum(Fields!Выданное_горючее.Value)</Value>

<Style>

<FontFamily>Tahoma</FontFamily>

<Color>#4d4d4d</Color>

</Style>

</TextRun>

</TextRuns>

<Style />

</Paragraph>

</Paragraphs>

<rd:DefaultName>Выданное_горючее</rd:DefaultName>

<Style>

<Border>

<Color>#e5e5e5</Color>

<Style>Solid</Style>

</Border>

<PaddingLeft>2pt</PaddingLeft>

<PaddingRight>2pt</PaddingRight>

<PaddingTop>2pt</PaddingTop>

<PaddingBottom>2pt</PaddingBottom>

</Style>

</Textbox>

</CellContents>

</TablixCell>

</TablixCells>

</TablixRow>

<TablixRow>

<Height>0.29872in</Height>

<TablixCells>

<TablixCell>

<CellContents>

<Textbox Name="Textbox6">

<CanGrow>true</CanGrow>

<KeepTogether>true</KeepTogether>

<Paragraphs>

<Paragraph>

<TextRuns>

<TextRun>

<Value>=Sum(Fields!Выданное_горючее.Value)</Value>

<Style>

<FontFamily>Tahoma</FontFamily>

<FontWeight>Normal</FontWeight>

<Color>White</Color>

</Style>

</TextRun>

</TextRuns>

<Style />

</Paragraph>

</Paragraphs>

<rd:DefaultName>Textbox6</rd:DefaultName>

<Style>

<Border>

<Color>#8ca2ba</Color>

<Style>Solid</Style>

</Border>

<BackgroundColor>#748caa</BackgroundColor>

<PaddingLeft>2pt</PaddingLeft>

<PaddingRight>2pt</PaddingRight>

<PaddingTop>2pt</PaddingTop>

<PaddingBottom>2pt</PaddingBottom>

</Style>

</Textbox>

</CellContents>

</TablixCell>

</TablixCells>

</TablixRow>

</TablixRows>

</TablixBody>

<TablixColumnHierarchy>

<TablixMembers>

<TablixMember />

</TablixMembers>

</TablixColumnHierarchy>

<TablixRowHierarchy>

<TablixMembers>

<TablixMember>

<TablixHeader>

<Size>3.25in</Size>

<CellContents>

<Textbox Name="Textbox3">

<CanGrow>true</CanGrow>

<KeepTogether>true</KeepTogether>

<Paragraphs>

<Paragraph>

<TextRuns>

<TextRun>

<Value>Дата</Value>

<Style>

<FontFamily>Tahoma</FontFamily>

<FontSize>11pt</FontSize>

<FontWeight>Bold</FontWeight>

<Color>White</Color>

</Style>

</TextRun>

</TextRuns>

<Style />

</Paragraph>

</Paragraphs>

<rd:DefaultName>Textbox3</rd:DefaultName>

<Style>

<Border>

<Color>#949ca4</Color>

<Style>Solid</Style>

</Border>

<BackgroundColor>#7c8692</BackgroundColor>

<PaddingLeft>2pt</PaddingLeft>

<PaddingRight>2pt</PaddingRight>

<PaddingTop>2pt</PaddingTop>

<PaddingBottom>2pt</PaddingBottom>

</Style>

</Textbox>

</CellContents>

</TablixHeader>

<TablixMembers>

<TablixMember />

</TablixMembers>

</TablixMember>

<TablixMember>

<Group Name="Дата">

<GroupExpressions>

<GroupExpression>=Fields!Дата.Value</GroupExpression>

</GroupExpressions>

</Group>

<SortExpressions>

<SortExpression>

<Value>=Fields!Дата.Value</Value>

</SortExpression>

</SortExpressions>

<TablixHeader>

<Size>3.25in</Size>

<CellContents>

<Textbox Name="Дата">

<CanGrow>true</CanGrow>

<KeepTogether>true</KeepTogether>

<Paragraphs>

<Paragraph>

<TextRuns>

<TextRun>

<Value>=Fields!Дата.Value</Value>

<Style>

<FontFamily>Tahoma</FontFamily>

<FontWeight>Normal</FontWeight>

<Color>#333333</Color>

</Style>

</TextRun>

</TextRuns>

<Style />

</Paragraph>

</Paragraphs>

<rd:DefaultName>Дата</rd:DefaultName>

<Style>

<Border>

<Color>#aab6c4</Color>

<Style>Solid</Style>

</Border>

<BackgroundColor>#96a4b2</BackgroundColor>

<PaddingLeft>2pt</PaddingLeft>

<PaddingRight>2pt</PaddingRight>

<PaddingTop>2pt</PaddingTop>

<PaddingBottom>2pt</PaddingBottom>

</Style>

</Textbox>

</CellContents>

</TablixHeader>

<TablixMembers>

<TablixMember />

</TablixMembers>

</TablixMember>

<TablixMember>

<TablixHeader>

<Size>3.25in</Size>

<CellContents>

<Textbox Name="Textbox5">

<CanGrow>true</CanGrow>

<KeepTogether>true</KeepTogether>

<Paragraphs>

<Paragraph>

<TextRuns>

<TextRun>

<Value>Total</Value>

<Style>

<FontFamily>Tahoma</FontFamily>

<FontWeight>Normal</FontWeight>

<Color>White</Color>

</Style>

</TextRun>

</TextRuns>

<Style />

</Paragraph>

</Paragraphs>

<rd:DefaultName>Textbox5</rd:DefaultName>

<Style>

<Border>

<Color>#8ca2ba</Color>

<Style>Solid</Style>

</Border>

<BackgroundColor>#748caa</BackgroundColor>

<PaddingLeft>2pt</PaddingLeft>

<PaddingRight>2pt</PaddingRight>

<PaddingTop>2pt</PaddingTop>

<PaddingBottom>2pt</PaddingBottom>

</Style>

</Textbox>

</CellContents>

</TablixHeader>

<KeepWithGroup>Before</KeepWithGroup>

</TablixMember>

</TablixMembers>

</TablixRowHierarchy>

<DataSetName>DataSet1</DataSetName>

<Height>2.27625cm</Height>

<Width>16.51cm</Width>

<Style>

<Border>

<Style>None</Style>

</Border>

</Style>

</Tablix>

</ReportItems>

<Height>6.72917in</Height>

<Style />

</Body>

<Width>6.5in</Width>

<Page>

<PageHeight>29.7cm</PageHeight>

<PageWidth>21cm</PageWidth>

<LeftMargin>2cm</LeftMargin>

<RightMargin>2cm</RightMargin>

<TopMargin>2cm</TopMargin>

<BottomMargin>2cm</BottomMargin>

<ColumnSpacing>0.13cm</ColumnSpacing>

<Style />

</Page>

<rd:ReportID>1abccac8-db98-4136-a087-603ea5677a43</rd:ReportID>

<rd:ReportUnitType>Cm</rd:ReportUnitType>

</Report>

Statistica.cs

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

{partial class statistica : Form

{statistica()

{();

}void statistica_Load(object sender, EventArgs e)

{

// TODO: This line of code loads data into the 'avtodbDataSet.Отработка_водителей' table. You can move, or remove it, as needed..отработка_водителейTableAdapter.Fill(this.avtodbDataSet.Отработка_водителей);

// TODO: This line of code loads data into the 'avtodbDataSet.Автопробег' table. You can move, or remove it, as needed..автопробегTableAdapter.Fill(this.avtodbDataSet.Автопробег);

// TODO: This line of code loads data into the 'avtodbDataSet.Перерасход' table. You can move, or remove it, as needed..перерасходTableAdapter.Fill(this.avtodbDataSet.Перерасход);

}void печатьToolStripMenuItem_Click(object sender, EventArgs e)

{(tabControl1.SelectedIndex == 0)

{f = new pererashod();.ShowDialog();

}if (tabControl1.SelectedIndex == 1)

{f2 = new Form2();.ShowDialog();

}

{f3 = new Form3();.ShowDialog();

}

}void button1_Click(object sender, EventArgs e)

{

печатьToolStripMenuItem_Click(sender, e);

}

}

}

App.config

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

</configSections>

<connectionStrings>

<add name="avto.Properties.Settings.avtodbConnectionString" connectionString="Data Source=YAHHI-ПК\LOCALDB;Initial Catalog=avtodb;Integrated Security=True"="System.Data.SqlClient" />

</connectionStrings>

</configuration>

avtodbDataSet.xsd

/// <summary>

///Update all changes to the dataset.

///</summary>

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]virtual int UpdateAll(avtodbDataSet dataSet) {((dataSet == null)) {new global::System.ArgumentNullException("dataSet");

}((dataSet.HasChanges() == false)) {0;

}(((this._автомобилиTableAdapter != null)

&& (this.MatchTableAdapterConnection(this._автомобилиTableAdapter.Connection) == false))) {new global::System.ArgumentException("All TableAdapters managed by a TableAdapterManager must use the same connection s" +

"tring.");

}(((this._водителиTableAdapter != null)

&& (this.MatchTableAdapterConnection(this._водителиTableAdapter.Connection) == false))) {new global::System.ArgumentException("All TableAdapters managed by a TableAdapterManager must use the same connection s" +

"tring.");

}(((this._доверенностиTableAdapter != null)

&& (this.MatchTableAdapterConnection(this._доверенностиTableAdapter.Connection) == false))) {new global::System.ArgumentException("All TableAdapters managed by a TableAdapterManager must use the same connection s" +

"tring.");

}(((this._моделиTableAdapter != null)

&& (this.MatchTableAdapterConnection(this._моделиTableAdapter.Connection) == false))) {new global::System.ArgumentException("All TableAdapters managed by a TableAdapterManager must use the same connection s" +

"tring.");

}(((this._поездкиTableAdapter != null)

&& (this.MatchTableAdapterConnection(this._поездкиTableAdapter.Connection) == false))) {new global::System.ArgumentException("All TableAdapters managed by a TableAdapterManager must use the same connection s" +

"tring.");

}(((this._путевые_листыTableAdapter != null)

&& (this.MatchTableAdapterConnection(this._путевые_листыTableAdapter.Connection) == false))) {new global::System.ArgumentException("All TableAdapters managed by a TableAdapterManager must use the same connection s" +

"tring.");

}::System.Data.IDbConnection workConnection = this.Connection;((workConnection == null)) {new global::System.ApplicationException("TableAdapterManager contains no connection information. Set each TableAdapterMana" +

"ger TableAdapter property to a valid TableAdapter instance.");

}workConnOpened = false;(((workConnection.State & global::System.Data.ConnectionState.Broken)

== global::System.Data.ConnectionState.Broken)) {.Close();

}((workConnection.State == global::System.Data.ConnectionState.Closed)) {.Open();= true;

}::System.Data.IDbTransaction workTransaction = workConnection.BeginTransaction();((workTransaction == null)) {new global::System.ApplicationException("The transaction cannot begin. The current data connection does not support transa" +

"ctions or the current state is not allowing the transaction to begin.");

}::System.Collections.Generic.List<global::System.Data.DataRow> allChangedRows = new global::System.Collections.Generic.List<global::System.Data.DataRow>();::System.Collections.Generic.List<global::System.Data.DataRow> allAddedRows = new global::System.Collections.Generic.List<global::System.Data.DataRow>();::System.Collections.Generic.List<global::System.Data.Common.DataAdapter> adaptersWithAcceptChangesDuringUpdate = new global::System.Collections.Generic.List<global::System.Data.Common.DataAdapter>();::System.Collections.Generic.Dictionary<object, global::System.Data.IDbConnection> revertConnections = new global::System.Collections.Generic.Dictionary<object, global::System.Data.IDbConnection>();result = 0;::System.Data.DataSet backupDataSet = null;(this.BackupDataSetBeforeUpdate) {= new global::System.Data.DataSet();.Merge(dataSet);

}{

// ---- Prepare for update -----------

//((this._автомобилиTableAdapter != null)) {.Add(this._автомобилиTableAdapter, this._автомобилиTableAdapter.Connection);._автомобилиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection));._автомобилиTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction));(this._автомобилиTableAdapter.Adapter.AcceptChangesDuringUpdate) {._автомобилиTableAdapter.Adapter.AcceptChangesDuringUpdate = false;.Add(this._автомобилиTableAdapter.Adapter);

}

}((this._водителиTableAdapter != null)) {.Add(this._водителиTableAdapter, this._водителиTableAdapter.Connection);._водителиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection));._водителиTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction));(this._водителиTableAdapter.Adapter.AcceptChangesDuringUpdate) {._водителиTableAdapter.Adapter.AcceptChangesDuringUpdate = false;.Add(this._водителиTableAdapter.Adapter);

}

}((this._доверенностиTableAdapter != null)) {.Add(this._доверенностиTableAdapter, this._доверенностиTableAdapter.Connection);._доверенностиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection));._доверенностиTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction));(this._доверенностиTableAdapter.Adapter.AcceptChangesDuringUpdate) {._доверенностиTableAdapter.Adapter.AcceptChangesDuringUpdate = false;.Add(this._доверенностиTableAdapter.Adapter);

}

}((this._моделиTableAdapter != null)) {.Add(this._моделиTableAdapter, this._моделиTableAdapter.Connection);._моделиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection));._моделиTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction));(this._моделиTableAdapter.Adapter.AcceptChangesDuringUpdate) {._моделиTableAdapter.Adapter.AcceptChangesDuringUpdate = false;.Add(this._моделиTableAdapter.Adapter);

}

}((this._поездкиTableAdapter != null)) {.Add(this._поездкиTableAdapter, this._поездкиTableAdapter.Connection);._поездкиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection));._поездкиTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction));(this._поездкиTableAdapter.Adapter.AcceptChangesDuringUpdate) {._поездкиTableAdapter.Adapter.AcceptChangesDuringUpdate = false;.Add(this._поездкиTableAdapter.Adapter);

}

}((this._путевые_листыTableAdapter != null)) {.Add(this._путевые_листыTableAdapter, this._путевые_листыTableAdapter.Connection);._путевые_листыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection));._путевые_листыTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction));(this._путевые_листыTableAdapter.Adapter.AcceptChangesDuringUpdate) {._путевые_листыTableAdapter.Adapter.AcceptChangesDuringUpdate = false;.Add(this._путевые_листыTableAdapter.Adapter);

}

}

//

//---- Perform updates -----------

//((this.UpdateOrder == UpdateOrderOption.UpdateInsertDelete)) {= (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows));= (result + this.UpdateInsertedRows(dataSet, allAddedRows));

}{= (result + this.UpdateInsertedRows(dataSet, allAddedRows));= (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows));

}= (result + this.UpdateDeletedRows(dataSet, allChangedRows));

//

//---- Commit updates -----------

//.Commit();((0 < allAddedRows.Count)) {::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count];.CopyTo(rows);(int i = 0; (i < rows.Length); i = (i + 1)) {::System.Data.DataRow row = rows[i];.AcceptChanges();

}

}((0 < allChangedRows.Count)) {::System.Data.DataRow[] rows = new System.Data.DataRow[allChangedRows.Count];.CopyTo(rows);(int i = 0; (i < rows.Length); i = (i + 1)) {::System.Data.DataRow row = rows[i];.AcceptChanges();

}

}

}(global::System.Exception ex) {.Rollback();

// ---- Restore the dataset -----------(this.BackupDataSetBeforeUpdate) {::System.Diagnostics.Debug.Assert((backupDataSet != null));.Clear();.Merge(backupDataSet);

}{((0 < allAddedRows.Count)) {::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count];.CopyTo(rows);(int i = 0; (i < rows.Length); i = (i + 1)) {::System.Data.DataRow row = rows[i];.AcceptChanges();.SetAdded();

}

}

}ex;

}{(workConnOpened) {.Close();

}((this._автомобилиTableAdapter != null)) {._автомобилиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._автомобилиTableAdapter]));._автомобилиTableAdapter.Transaction = null;

}((this._водителиTableAdapter != null)) {._водителиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._водителиTableAdapter]));._водителиTableAdapter.Transaction = null;

}((this._доверенностиTableAdapter != null)) {._доверенностиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._доверенностиTableAdapter]));._доверенностиTableAdapter.Transaction = null;

}((this._моделиTableAdapter != null)) {._моделиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._моделиTableAdapter]));._моделиTableAdapter.Transaction = null;

}((this._поездкиTableAdapter != null)) {._поездкиTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._поездкиTableAdapter]));._поездкиTableAdapter.Transaction = null;

}((this._путевые_листыTableAdapter != null)) {._путевые_листыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._путевые_листыTableAdapter]));._путевые_листыTableAdapter.Transaction = null;

}((0 < adaptersWithAcceptChangesDuringUpdate.Count)) {::System.Data.Common.DataAdapter[] adapters = new System.Data.Common.DataAdapter[adaptersWithAcceptChangesDuringUpdate.Count];.CopyTo(adapters);(int i = 0; (i < adapters.Length); i = (i + 1)) {::System.Data.Common.DataAdapter adapter = adapters[i];.AcceptChangesDuringUpdate = true;

}

}

}result;

}void InitAdapter() {._adapter = new global::System.Data.SqlClient.SqlDataAdapter();::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping();.SourceTable = "Table";.DataSetTable = "Автомобили";

tableMapping.ColumnMappings.Add("Государственный номер", "Государственный номер");

tableMapping.ColumnMappings.Add("Модель", "Модель");

tableMapping.ColumnMappings.Add("Дата приобретения", "Дата приобретения");

tableMapping.ColumnMappings.Add("Пробег", "Пробег");

tableMapping.ColumnMappings.Add("Состояние ремонта", "Состояние ремонта");

tableMapping.ColumnMappings.Add("Статус", "Статус");._adapter.TableMappings.Add(tableMapping);._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();._adapter.DeleteCommand.Connection = this.Connection;._adapter.DeleteCommand.CommandText = @"DELETE FROM [dbo].[Автомобили] WHERE (([Государственный номер] = @Original_Государственный_номер) AND ((@IsNull_Модель = 1 AND [Модель] IS NULL) OR ([Модель] = @Original_Модель)) AND ((@IsNull_Дата_приобретения = 1 AND [Дата приобретения] IS NULL) OR ([Дата приобретения] = @Original_Дата_приобретения)) AND ([Пробег] = @Original_Пробег) AND ((@IsNull_Статус = 1 AND [Статус] IS NULL) OR ([Статус] = @Original_Статус)))";._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Государственный_номер", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Государственный номер", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Модель", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Модель", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Модель", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Модель", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Дата_приобретения", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Дата приобретения", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Дата_приобретения", global::System.Data.SqlDbType.Date, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Дата приобретения", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Пробег", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Пробег", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Статус", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Статус", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Статус", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Статус", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();._adapter.InsertCommand.Connection = this.Connection;

this._adapter.InsertCommand.CommandText = @"INSERT INTO [dbo].[Автомобили] ([Государственный номер], [Модель], [Дата приобретения], [Пробег], [Состояние ремонта], [Статус]) VALUES (@Государственный_номер, @Модель, @Дата_приобретения, @Пробег, @Состояние_ремонта, @Статус);[Государственный номер], Модель, [Дата приобретения], Пробег, [Состояние ремонта], Статус FROM Автомобили WHERE ([Государственный номер] = @Государственный_номер)";

this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Государственный_номер", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Государственный номер", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Модель", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Модель", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Дата_приобретения", global::System.Data.SqlDbType.Date, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Дата приобретения", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Пробег", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Пробег", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Состояние_ремонта", global::System.Data.SqlDbType.Text, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Состояние ремонта", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Статус", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Статус", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();._adapter.UpdateCommand.Connection = this.Connection;._adapter.UpdateCommand.CommandText = @"UPDATE [dbo].[Автомобили] SET [Государственный номер] = @Государственный_номер, [Модель] = @Модель, [Дата приобретения] = @Дата_приобретения, [Пробег] = @Пробег, [Состояние ремонта] = @Состояние_ремонта, [Статус] = @Статус WHERE (([Государственный номер] = @Original_Государственный_номер) AND ((@IsNull_Модель = 1 AND [Модель] IS NULL) OR ([Модель] = @Original_Модель)) AND ((@IsNull_Дата_приобретения = 1 AND [Дата приобретения] IS NULL) OR ([Дата приобретения] = @Original_Дата_приобретения)) AND ([Пробег] = @Original_Пробег) AND ((@IsNull_Статус = 1 AND [Статус] IS NULL) OR ([Статус] = @Original_Статус)));

SELECT [Государственный номер], Модель, [Дата приобретения], Пробег, [Состояние ремонта], Статус FROM Автомобили WHERE ([Государственный номер] = @Государственный_номер)";

this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Государственный_номер", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Государственный номер", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Модель", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Модель", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Дата_приобретения", global::System.Data.SqlDbType.Date, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Дата приобретения", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Пробег", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Пробег", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Состояние_ремонта", global::System.Data.SqlDbType.Text, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Состояние ремонта", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Статус", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Статус", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Государственный_номер", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Государственный номер", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Модель", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Модель", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Модель", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Модель", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Дата_приобретения", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Дата приобретения", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Дата_приобретения", global::System.Data.SqlDbType.Date, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Дата приобретения", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Пробег", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Пробег", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Статус", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Статус", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Статус", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Статус", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));

}


Содержание Введение . Постановка задачи . Анализ задачи .1 Диаграмма А0. Обработка путевых листов .1.1 Выводы .2 Декомпозиция диаграммы А0

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

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

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

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

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