Автоматизация сопровождает человеческое общество с момента его зарождения, она внутренне присуща его развитию. В методологии ее определяют как замещение процессов человеческой деятельности процессами технических
В последние годы возникла концепция распределенных систем управления предприятием, где предусмотрена локальная обработка информации. Для реализации идеи распределенного управления необходимо создание для каждого уровня управления и каждой предметной области автоматизированных рабочих мест (АРМ) на базе профессиональных персональных ЭВМ.
Анализируя сущность АРМ, специалисты определяют их чаще всего как профессионально-ориентированные малые вычислительные системы, расположенные непосредственно на рабочих местах специалистов и предназначенные для автоматизации их работ.
Для каждого объекта управления нужно предусмотреть автоматизированные рабочие места, соответствующие их функциональному назначению. Однако принципы создания АРМ должны быть общими: системность, гибкость, устойчивость, эффективность.
Для поддержания деятельности организации существует комплексная система автоматизации, которая позволяет собирать, анализировать и доводить до пользователей наиболее качественную и подробную информацию по заданной области.
Задачами данной системы являются:
- сбор, анализ и доведение информации до каждой группы пользователей;
- автоматизация информации, хранящейся на бумажных носителях;
- уменьшения объема хранимой информации;
- быстрота и удобство получения необходимой информации.
Актуальность данной работы заключается в необходимости комплексной автоматизации рабочих мест диспетчеров.
Целью дипломной работы является разработка и внедрение модуля комплексной системы АРМ диспетчера по транспорту, позволяющей автоматизировать работу диспетчера, по учету и контролю выполнения заявок, регистрации заявок, созданию итоговых отчетов.
Для реализации цели были поставлены следующие задачи:
- изучить существующую информационную систему организации;
- выбрать программное обеспечение для разработки;
- разработать структуру программы;
- оценить экономическую эффективность создаваемого программного продукта.
Программный продукт, описанный в данной работе, еще раз доказывает, что автоматизированная деятельность — это упрощение работы человека, достоверность обрабатываемой информации, правильность расчета показателей, правильность принятия решения, а вследствие, всего это успешное функционирование предприятий.
Курсовая работа системы автоматизации производства и ремонта вагонов
... применяемых на предприятиях по производству и ремонту вагонов и компьютерных технологиях обучения. При изложении материалов учебника авторы руководствовались общностью принципов автоматизации по теории систем автоматического управления, теории производительности и эффективности. По этой причине ...
1. Постановка задачи
Этап 1.
Анализ задачи.
Этап 2.
Проектирование автоматизированного рабочего места диспетчера по транспорту:
- Проектирование инфологической модели.
- Проектирование даталогической модели.
- Построение физической модели сайта.
- В системе должна храниться информация о водителях, данные о автотранспорте предприятия, а также нормах расхода топлива.
Этап 3.
Разработка автоматизированной системы диспетчера по транспорту. (Проектирование АРМ)
Необходимо реализовать следующие функции:
1. Установить программное обеспечение;
2. Создание таблиц с данными о водителях и автотранспорте, с возможностью добавления, удаления и редактирования;
3. Создание модуля учета ГСМ (учет выдачи ГСМ, учет расхода ГСМ);
4. Подготовка данных для статистических отчетов:
- ведомость работы автотранспорта;
- ведомость работы водителей;
- диаграмма состояния технических средств;
- журнал путевых листов.
2. Анализ задачи
После анализа предметной области были получены IDEF0-диаграммы, которые отражают последовательность разработки автоматизированной системы. IDEF0 используется для создания функциональной модели, отображающей структуру и функции системы, а также потоки информации и материальных объектов, связывающие эти функции [3].
Рис. 1. Диаграмма А0. Обработка путевых листов
Рис. 2. Декомпозиция диаграммы А0. Обработка путевых листов
2.1
Диаграмма А0. Обработка путевых листов
Рассмотрим диаграмму A0 «Обработка путевых листов» (Рис. 1).
На ней отражена последовательность разработки автоматизированной системы.
Работы обозначают поименованные процессы, функции или задачи, которые происходят в течение определенного времени и имеют распознаваемые результаты. Работы изображаются в виде прямоугольников. Все работы должны быть названы и определены. Имя работы должно быть выражено отглагольным существительным, обозначающим действие [4].
В нашем случае работой является «Обработка путевых листов». При создании новой модели автоматически создается контекстная диаграмма с единственной работой, изображающей систему в целом.
Вход (Input) — материал или информация, которые используются или преобразуется работой для получения результата (выхода).
Информационные материалы — это то, что перерабатывается в процессе «Обработке путевых листов» для получения результата.
Выход (Output) — материал или информация, которые производятся выводятся на сайте. Каждая информация должна имеет стрелку выхода. На рисунке 1. стрелка «Выходные данные (отчетность)» является выходом для работы «Обработки путевых листов».
Механизм (Mechanism) — ресурсы, которые выполняют работу. Стрелка механизма рисуется как входящая в нижнюю грань работы. На рисунке 1. стрелки «Диспетчер», «Администратор» является механизмом для работы «Обработки информации».
2.1.1 Выводы
Контроль за деятельностью работы автоматизированной системы осуществляют вышестоящие организации, у которых существуют свои требования (Законодательные акты и руководство пользователя).
Производственный календарь и графики работы. Табельный учет
... больничного пособия, отпускных. табельный учет трудовой Что такое производственный календарь? Производственный календарь - это своеобразный ... регистрации поможет при суммированном учете выявить сверхурочные работы. Метод регистрации отклонений. ... учета рабочего времени. В нем нет граф для данных по оплате труда. Такая форма применяется в организации, где установлена автоматизированная обработка ...
Поэтому в разрабатываемое приложение должна иметься возможность добавления, редактирования, удаления, структуризации информации. Быстрого нахождения нужной информации её сохранения в общедоступные компьютерные форматы, для оперативной работы.
2.2 Декомпозиция диаграммы А0. Обработка путевых листов
Рассмотрим декомпозицию диаграммы A0 «Обработка путевых листов» (Рис. 2).
На ней отражена последовательность создания путевых листов.
- Ввод данных о водителях;
- Ввод данных о транспорте;
- Расчет ГСМ;
- Создание путевых листов.
2.2.1 Выводы
Для удобства диспетчера в использовании автоматизированной системы сортировка пунктов меню была создана в нужной последовательности:
- Ввод данных о водителях — общая информация о водителях.
Ввод данных о транспорте — информация о транспорте предприятия (марки автомобилей, государственные номера, общий пробег);
- Расчет ГСМ — ведется учет выдачи ГСМ, учет расхода ГСМ;
- Создание Путевых листов — обрабатывается вся поступившая информация.
2.3 Обзор существующих систем
2.3.1 «1С: Управление Автотранспортом»
В качестве обзора существующих программ, рассмотрена программа «1С: Управление Автотранспортом».
«1С: Управление Автотранспортом» обеспечивает комплексную поддержку бизнес-процессов в транспортных организациях и подразделениях, позволяет получать и использовать информацию, необходимую для принятия управленческих решений и обеспечения учета деятельности организации.
Программа «1С: Управление автотранспортом Стандарт» состоит из восьми основных подсистем:
- подсистема диспетчерская;
- подсистема ПТО;
- подсистема учета ГСМ;
- подсистема учета ремонтов;
- подсистема складского учета;
- подсистема взаиморасчетов;
- подсистема учета работы водителей;
- подсистема учета затрат.
Подсистема диспетчерская
Подсистема диспетчерская предназначена для принятия заказов на автотранспорт, выписки разнарядки на выпуск ТС и формирование маршрутных листов, формирования и обработки путевых листов.
Заказы на автотранспорт могут приниматься как от сторонних контрагентов, так и от внутренних подразделений компании. В заказе указываются маршрут перевозки, параметры груза, требования к транспортному средству. В программе предусмотрено отслеживание частично выполненных заказов.
Рис. 3. Разнарядка на выпуск ТС
Программа позволяет выписывать и обрабатывать путевые листы
- Грузового автомобиля повременный (Форма №4-П);
- Грузового автомобиля сдельный (Форма №4-С);
- Специального автомобиля (Форма №3 спец);
- Междугородного автомобиля (Форма №4-М);
- Строительной машины (ЭСМ2);
- Автобуса необщего пользования (форма №6 спец);
- Легкового автомобиля (Форма №3);
- Путевые листы индивидуальных предпринимателей.
Подсистема ПТО
Проектирование информационной подсистемы ОАО «Автобаза №2»
... их эксплуатации устанавливается объем технического обслуживания и ремонта, а также технические средства, необходимые для их осуществления. Коэффициент технической готовности, характеризующий исправность подвижного ... облегчить условия работы персонала. Именно поэтому существует необходимость в ее создании. Темой данного дипломного проекта является «Проектирование информационной подсистемы «Автобазы ...
Основное назначение подсистемы ПТО — ведение справочника транспортных средств, учет выработки ТС и оборудования, контроль сроков замены шин и аккумуляторов, планирование технического обслуживания, учет ДТП, контроль окончания сроков действия таких документов, как полисы ОСАГО, медицинские справки, водительские удостоверения и др.
Карточка автомобиля содержит подробную информацию о технических характеристиках:
Рис. 4. Транспортное средство
В программе ведется учет дорожно-транспортных происшествий (ДТП).
В соответствующих документах заносятся данные автомобиля и водителя, участвовавшие в ДТП, список остальных сторонних участников ДТП, данные экспертизы ущерба и страховой компании. Аналитические отчеты позволяют проанализировать причины аварийности, частоту участия в ДТП водителей, сравнить затраты на восстановительный ремонт с суммами выплат страховых компаний.
Рис. 5. Регистрация ДТП: Дорожно-транспортное происшествие
Подсистема учет ГСМ
Подсистема предназначена для настройки норм расхода ГСМ, учета поступления, выдачи и расхода ГСМ.
Поступление и выдача ГСМ оформляется документами «Поступление товаров» и «Заправка ГСМ», расчет расхода топлива ведется в путевых листах. В случае возврата топлива с автомобиля на склад предусмотрены специальные документы на слив ГСМ.
В программе реализованы возможности оформления заправок
Со склада;
- За наличные;
- По пластиковой карте;
- По талонам;
- От поставщика.
Для случаев заправок по пластиковым картам в программе реализованы дополнительные возможности учета — загрузки данных из отчетов с детализациями заправок и автоматическое сравнение с данными, введенными на основании квитанций водителей.
Подсистема учета ремонтов и сервисного обслуживания
Подсистема предназначена для учета заказов на ремонт и сервисное обслуживание транспортных средств, учета выполненных ремонтов и планового ТО, замены шин и аккумуляторов, дополнительной комплектации. Программа позволяет вести учет ремонтов, выполненных как на собственной ремонтной зоне, так и в сторонних автосервисах.
Заказы на ремонт регистрируются документами «Предварительный заказ на ремонт», в которых указывается автомобиль, причина обращения, перечень неисправностей и запасных частей. В случае проведения ремонта в стороннем автосервисе, предварительный заказ на ремонт может быть распечатан в виде в следующем виде (Рис. 6):
Рис. 6. Заказ на ремонт
Подсистема складского учета
Подсистема предназначена для проведения складских операций: поступления товаров и материалов на склад, внутреннее перемещение между складами, списание, проведение инвентаризаций. Списание материалов может быть выполнено одним из способов: ФИФО, ЛИФО и по среднему.
Технология создания баз данных в программе Microsoft Access
... обслуживанию информационной системы Сравнительная характеристика Microsoft Office Access и Open Office Base база данные office access Существует множество программ для создания баз данных. Я выбрала две программы, ... от несанкционированного доступа. Пароли устанавливаются конечными пользователями или администраторами БД. Учет и хранение паролей производится самой СУБД. Обычно пароли хранятся в ...
В отдельный складской учет вынесен учет шин, аккумуляторов, аптечек и прочей комплектации, так как такую комплектацию необходимо учитывать в разрезе каждой единицы. Для шин и аккумуляторов ведется учет подробной технической информации (Рис. 7):
Подсистема учета оказанных транспортных услуг
В подсистеме управления взаиморасчетами реализованы функции учета прейскурантов и тарифов, расчет стоимости услуг транспортных услуг, формирования счетов, актов и реестров за оказанные услуги.
Расчет стоимости оказанных транспортных услуг выполняется при обработке путевых листов в товарно-транспортных документов (аналоги талонов заказчиков, ТТН).
Программа автоматически рассчитывается стоимость услуг на основании введенных тарифов (Рис. 8):
Рис. 8. Товарно-транспортный документ
Подсистема учета работы водителей
В данной подсистеме реализуются две основные задачи: учет выработки и рабочего времени водителей и начисление заработной платы по путевым листам.
Расчет рабочего времени водителей выполняется при обработке путевых и ремонтных листов. Кроме этого предусмотрена возможность специальными документами вводить различные отклонения в использовании водителями рабочего времени. На основании этих данных автоматически формируется табель учета рабочего времени — унифицированная форма Т13.
Расчет начислений по заработной плате водителей в программе ведется различными способами:
- По сдельным тарифам от выработки;
- Процентом от выручки;
- Процентом от других начислений;
- Фиксированной суммой;
- Доплата за ночные часы.
Подсистема учета затрат
В данной подсистеме реализуются две основные задачи: учет выработки и рабочего времени водителей и начисление заработной платы по путевым листам.
Расчет рабочего времени водителей выполняется при обработке путевых и ремонтных листов. Кроме этого предусмотрена возможность специальными документами вводить различные отклонения в использовании водителями рабочего времени. На основании этих данных автоматически формируется табель учета рабочего времени — унифицированная форма Т13.
Расчет начислений по заработной плате водителей в программе ведется различными способами:
- По сдельным тарифам от выработки;
- Процентом от выручки;
- Процентом от других начислений;
- Фиксированной суммой;
- Доплата за ночные часы.
Для образовательного учреждения проанализированные системы не подходят по причинам высокой стоимости приобретения и сопровождение.
Кроме того они не решают всех поставленных задач и требуют существенной доработки для конкретного заказчика.
Поэтому целесообразно разрабатывать собственную систему с учётом специфики работы образовательного учреждения.
2.4 Выбор инструментальных средств
2.4.1 Клиент серверные СУБД
Microsoft SQL Server
Microsoft SQL Server — система управления реляционными базами данных, разработанная корпорацией Microsoft. Используется для небольших и средних по размеру баз данных, и в последние 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 — мощная и надежная бесплатная система управления данными, обеспечивающая функциональное и надежное хранилище данных для веб-сайтов и настольных приложений.
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.
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 Server 2003 и Windows Vista. Существует также порт MySQL к OpenVMS. Важно отметить, что компания MySQL AB предоставляет для свободной загрузки не только исходные коды СУБД, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули, которые можно загрузить с зеркал, представленных на официальном сайте.
MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы.NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.
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 Developer’s Public License), которые совпадают с условиями Mozilla Public License 1.1. Firebird полностью бесплатен для использования и распространения (в том числе и коммерческого).
Раскрытие исходного кода вашего продукта не требуется, вне зависимости от используемой модели лицензирования. Однако, в случае, если вы модифицировали исходный код сервера, то необходимо сделать доступным исходный код ваших модификаций.
2.4.2 Объектно-ориентированный язык программирования
Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется строго типизированный объектно-ориентированный язык, в основе которого Object Pascal. Во-вторых, были получены ранее навыки работы в среде Delphi и принято решение использовать полученные знания при создании программы, а также изучить новые возможности Delphi 7. Кроме того, главным достоинством Delphi является продуктивность, т.е. на сегодняшний день работа в Delphi — самый продуктивный метод создания приложения для Windows. Продуктивность данной среды разработки определяется следующими пятью важнейшими аспектами:
- качеством визуальной среды разработки;
- скоростью работы компилятора и быстродействием откомпилированных программ;
- мощностью языка программирования и его сложностью;
- гибкостью и масштабируемостью используемой архитектуры баз данных;
- наличием поддерживаемых средой разработки шаблонов проектирования и использования.
С# (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# не просто суммой их достоинств, а языком программирования нового поколения.
Для разработки автоматизированного рабочего места была выбрана среда программирования С# (C Sharp) , так как она полностью удовлетворяет запросам поставленной задачи, в наличии имеется лицензионный программный продукт и соответствующие знания по его применению.
А так же клиент серверное СУБД SQL Server 2012 Express, она идеально подходящая для обучения, разработки и размещения настольных, небольших серверных и веб-приложений, и для распространения программного обеспечения независимыми производителями.
3. Решение задачи, .1 Проектирование автоматизированного рабочего места, .1.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 Формы
2.1 Главная форма
Главная форма предназначена для управления работой всеми информационными ресурсами: водители, автомобили, ГСМ, диспетчерская. Вид данной формы приведен на рисунке 12. С данной формы можно переходить на второстепенные формы.
Рисунок 12. Главная форма
3.2.2 Вкладка «Водители»
При нажатии вкладки «Водители» можно открыть две формы «Учет выработки», которая позволяет просмотреть общее время работы водителя, время выезда и время возвращения на предприятием (рис 13), и форма «Список водителей», которая позволяет выполнять основные действия с анкетными данными водителей (рис 14).
Рисунок 13. Форма «Учет выработки».
Рисунок 14. Форма «Список водителей»
Интерфейс системы разрабатывался исходя из требований пользователя, разработчиками были учтены все индивидуальные требования заказчика, система была утверждена для работы заказчиком.
Одновременно ведется доработка системы, расширение её конфигурационных возможностей для более функционального использования в работе. Интерфейс аналогично будет изменяться при модернизации системы.
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.
В ходе тестирования были проверены все функции системы. Ошибок на данном этапе разработки выявлено не было.
Заключение
В результате проделанной работы было дано понятие автоматизированного рабочего места диспетчера, на основании этого формулировался постановка задачи. Произведен обзор аналогичных систем, с описание их функционала. Так же рассматривался инструментарий для разработки АРМ. Исходя из вышесказанного, была разработана база данных системы. С помощью выбранного инструментария было спроектировано модули автоматизированной системы: главной страницы, процессы обработки путевых листов.
Результатом работы стала готовая система, соответствующая всем поставленным задачам.
Источники информации
[Электронный ресурс]//URL: https://inzhpro.ru/diplomnaya/avtomatizatsiya-biznesa-taksi/
1.
2. http://www.mir-koda.ru/article_c_sharp.php
. http://mysql.ru/docs/mysql-man-4.0-ru/introduction.html
. http://progopedia.ru/language/csharp/
5. http://ru.wikipedia.org/wiki/Проектирование_баз_данных
. http://ru.wikipedia.org/wiki/Microsoft_SQL_Server
. C#. Учебный курс, Герберт Шилдт, 2003 г.
. Методология функционального моделирования IDEF0. Руководящий документ. Издание официальное. Госстандарт России. Москва. (РД IDEF 0 — 2000).
Приложение 1, Программный код
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 («Данные сохранены»);
}
catch (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= «http://schemas.microsoft.com/SQLServer/reporting/reportdesigner» xmlns= «http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition»>
<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>
<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 = «Автомобили»;. 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;._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, «», «», «»));
}