Разработка модуля по учету графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо автоматизированной информационной системы АРМ
СИРИУС — сетевая интегрированная российская информационно-управляющая система. Система работает в режиме реального времени и предназначена для анализа, прогноза и принятия решений по организации перевозочного процесса по управлению вагонным и локомотивными парками, погрузкой и выгрузкой подвижного состава. Задача СИРИУС минимизировать расходы. На основе сводного плана рассчитывает технические… Читать ещё >
Разработка модуля по учету графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо автоматизированной информационной системы АРМ (реферат, курсовая, диплом, контрольная)
- Содержание
- Введение
- 1. Описание предметной области
- 1.1 Анализ функциональных возможностей автоматизированной информационной системы АРМ «Нарядчик»
- 1.2 Создание модели модуля информационной системы для учета графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо
- 2. Разработка базы данных и web— интерфейса модуля по учёту графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо автоматизированной информационной системы АРМ «Нарядчик».
- 2.1 Разработка базы данных
- 2.2 Разработка web— интерфейса модуля АИС АРМ «Нарядчик»
- Заключение
- Список литературы
- Приложение Б
- Приложение Б
- Приложение В
Назначение эксплуатационного локомотивного хозяйства заключается в обеспечении железной дороги локомотивами, локомотивными бригадами, и управлении тяговым подвижным составом.
В эксплуатационном локомотивном депо широко используются различного рода информационные системы, в том числе и автоматизированная информационная система АРМ «Нарядчик».
При всех достоинствах данной АИС АРМ «Нарядчик» в ней нет дополнительных функций, которые позволяли бы составлять график труда и отдыха локомотивных бригад, с учетом коэффициента замещения, который включает в себя неявку на рабочее место по следующим причинам: болезни, отпуска, сессии, прогул, отгул.
В АИС АРМ «Нарядчик» не предусмотрена автоматическая расстановка локомотивных бригад по следующим факторам: психологическим, возрастным, должностям. В случае непредвиденных обстоятельств, старший нарядчик тратит много времени на поиск информации о локомотивной бригаде с учетом вышеперечисленных факторов, и вручную составляет новый график.
Поэтому, для написания выпускной квалификационной работы (дипломного проекта) была выбрана тема «Разработка модуля по учету графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо автоматизированной информационной системы АРМ „Нарядчик“».
Цель: расширить функциональные возможности автоматизированной информационной системы АРМ «Нарядчик».
Задачи:
1. выполнить описание предметной области;
2. разработать базу данных и webинтерфейс модуля по учёту графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо автоматизированной информационной системы АРМ «Нарядчик».
Перечисленные недостатки будут учтены в разрабатываемом модуле — такие, как автоматизированные списки работников (машинисты, помощники машинистов), постановка смены, вид работ, номер локомотива. Данная система позволит незатруднительно составить новый график для локомотивной бригады.
1. Описание предметной области
1.1 Анализ функциональных возможностей автоматизированной информационной системы АРМ «Нарядчик»
Локомотивное депо входит в состав Западно-Сибирской дирекции, которая, в свою очередь, входит в главный состав центральной дирекции тяги.
В локомотивном депо используется автоматизированная информационная система (АИС), такая как АРМ «Нарядчик».
Обязанности Нарядчика — обеспечивать планирование прибывающих локомотивных бригад по графику работы или на следующую смену с учетом отработанного времени и планирования положенного домашнего времени; своевременно обеспечивать вызов локомотивных бригад на явку под поезда; обеспечивать ведение отчетной документации в бумажном или в электронном виде; осуществлять контроль продолжительности рабочего времени по участкам обслуживания выполнения норм отдыха в пунктах оборота и домашнего отдыха, предоставлять начальнику депо маршрутов с нарушениями; заполнять и контролировать правильность маршрута машиниста; обеспечивать предоставление выходных дней и ежегодных отпусков по графику; планировать и организовывать «именным» графикам; контролировать и обеспечивать равномерную загрузку локомотивных бригад, регулировать количество часов на сверхурочные работы и недоработки.
Работа программы АРМ «Нарядчик» представляет собой ввод информации по работникам локомотивных бригад эксплуатационного локомотивного депо. В данной программе отображаются личные данные работника, данные о проделанной работе.
Нарядчик локомотивных бригад непосредственно работает в АИС АРМ «Нарядчик», в которой делает пере закрепление локомотивных бригад, создает ежедневное расписание по твердым явкам (которые работают день/ночь), устанавливает бригады на «явки». При отправлении бригады в поездку и при сдаче маршрута корректируют в журнале явок; производит отчеты по регулировки часов, производит «постановку» в наряд следующие сутки (рис.1).
Рис. 1 Журнал явок в программе АРМ Нарядчик
Графики труда и отдыха можно представить в виде таблицы (рис.2). График сменности составляется вручную (в Exel) индивидуально на каждого работника ежемесячно с учетом календарных дней, месячной нормой, выходных и праздничных дней. В данных графиках указывается:
— Место работы, серия и номер локомотива;
— Смена;
— Должность;
— ФИО, табельный номер;
— Дневные, ночные смены;
— Дни выходных;
— Месячная норма часов;
— Фактически отработанные часы по графику;
— Ночные часы;
— Количество праздничных часов (при наличии);
— Начало и окончание работы, продолжительность смены в часах.
Данные графики согласовываются с заместителем начальника депо по эксплуатации, с начальником резерва локомотивных бригад, с профсоюзным органом и утверждается начальником депо. Графики учета рабочего времени заверяются вышеуказанными лицами, росписями и штампом профсоюза.
Работники знакомятся заранее (за 2 месяца) с графиком смен и ставят личную подпись под графиком.
Рис. 2 График рабочего времени локомотивных бригад
План предусматривает определение общего числа выдач локомотивных бригад по пунктам их приписки с разложением по графику отправления с трехчасовым периодом. Ответственным за составление сменно-суточного плана является начальник ДЦУП региональной дирекции управления движением. автоматизированный информационный система интерфейс Сменно-суточное планирование производится на основании размеров движения поездов и в соответствии с месячным наряд-заказом на выдачу локомотивных бригад, разработанным и утвержденным для каждой территориальной дирекции тяги.
— На основании сменно-суточного плана поездной работы ответственным работником территориальной дирекции управления движением формируется суточный приказ на выдачу локомотивных бригад (далее заказ).
— Сформированный заказ передается не позднее, чем за 16 часов до планируемого периода, в виде приказа начальникам эксплуатационного локомотивного депо (далее ТЧЭ).
— После получения приказа руководители ТЧЭ доводят их до работников, ответственных за выдачу локомотивов и локомотивных бригад, для оперативного исполнения.
— Нарядчики ТЧЭ не позднее, чем за 7 часов до планируемого периода, представляют по электронной почте в адрес начальника территориальной дирекции управления движением (далее Д) и начальника территориальной дирекции тяги (далее Т) утвержденный суточный план выдачи локомотивных бригад, подписанный начальниками ТЧЭ, с указанием фамилий локомотивных бригад в наряде, в том числе и оборотных, находящихся на отдыхе.
— Локомотивный диспетчер территориальной дирекции управления движением (далее ТНЦ) не позднее 14−00 часов московского времени передает сменному инженеру дирекции тяги центра управления тяговыми ресурсами (далее ТРЛ ЦУТР) утвержденный суточный план выдачи локомотивных бригад на график отправления по трехчасовому периоду.
— В условиях автоматизации заказ локомотивных бригад формируется в модуле ПЛАН-ЛБ системы АСУТ-Т в виде сменно-суточного плана регулирования локомотивных бригад (далее — СПРБ) и передается приказом на заставку в эксплуатационное локомотивное депо через электронную книгу приказов. В условиях исправно действующего модуля ПЛАН-ЛБ планирование осуществляется исключительно в автоматизированном режиме (все сокращения приведены в приложении 1).
— В 11−00 московского времени в эксплуатационные депо передается уточненный заказ, который должен учитывать выдачу локомотивных бригад:
— на следующие (отчетные) сутки, с подвязкой на графиковые «нитки» отправления по трехчасовому периоду; - по всем пунктам их явки;
— на каждое плечо обслуживания в отдельности;
— по видам тяги (электровозы, тепловозы);
— по видам движения;
— с учетом, находящихся на отдыхе оборотных бригад и следующих в пункт оборота.
— Заказ должен содержать следующую информацию для обеспечения графика движения поездов:
— количество локомотивных бригад, необходимых для вывоза поездов с участковых станций на планируемые сутки, с разбивкой их по трехчасовым периодам;
— количество локомотивных бригад, необходимых для подъема поездов, временно отставленных от движения на промежуточных станциях;
— количество явок локомотивных бригад по вызывной системе, необходимых для смен локомотивных бригад на промежуточных станциях в условиях сложной поездной обстановки;
— количество локомотивных бригад, которое необходимо вернуть пассажирами из пунктов их оборота в депо приписки;
— необходимое количество локомотивных бригад для отправления пассажирами (резервом) в пункты их оборота.
— В течение рабочей смены диспетчер локомотивный центра управления тяговыми ресурсами (далее ДРЛ) и ТРЛ ЦУТР контролируют выполнение заказа эксплуатационными локомотивными депо посредством модуля «План регулирования ЛБ» автоматизированной системы АСУТ-Т или по телефону с целью оперативного принятия управленческих решений в случаях не выполнения сменно-суточного задания.
— При увеличении объема работы по предложению Центра управления тяговыми ресурсами (далее ЦУТР) разрешается увеличение плана постановки локомотивных бригад в наряд после согласования с начальником региональной дирекции тяги. При этом допускается увеличение плана выдачи локомотивных бригад не более, чем на 10% от наряд-заказа, и не более, чем на 2-е суток подряд. После чего не менее 2-х суток подряд сменно-суточный план данного депо не должен превышать количества локомотивных бригад, установленного наряд-заказом.
— В случае, если ТЧЭ не может обеспечить выполнение сменно-суточного плана постановки локомотивных бригад в наряд, дежурный по эксплуатационному локомотивному депо (далее ТЧД) или начальник резерва локомотивных бригад обязаны заблаговременно уведомить об этом ТРЛ и совместно с ним принять следующие меры:
— при организации обслуживания участка накладным способом передислоцировать локомотивные бригады соседних ТЧЭ;
— принять меры, разрешенные нормативными документами, для более интенсивного использования локомотивных бригад.
— Отмена ранее поданной заявки на выдачу локомотивной бригады допускается не менее, чем за 3 часа до наступления времени запланированной явки.
— В случае, непредвиденных обстоятельств (отстранение локомотивной бригады при прохождении пункта пред рейсового медицинского осмотра (далее ПРМО), несвоевременный подвод поездов из-за отказов технических средств, отказ в приемке локомотивов из-за технической неисправности и т. д.) оперативные работники дорожного центра управления перевозками (далее ДЦУП) согласно должностных инструктивных карт принимают необходимые корректирующие меры.
— Обо всех случаях нарушений выдачи локомотивных бригад эксплуатационными локомотивными депо, находящимися в границах полигона, ТРЛ докладывает оперативному дежурному ЦТ по локомотивным бригадам.
— ТРЛ совместно с ДРЛ регулирует наличие локомотивных бригад в пунктах оборота на накладных плечах в границах соседних дирекций и передает оперативные приказы на регулировку за подписью ЦУТР;
— Организация работы локомотивных бригад на участках обслуживания в границах соседних дирекций контролируется ДРЛ и ТРЛ с информированием старшего диспетчера локомотивного Центра управления тяговыми ресурсами (далее СДРЛ) в оперативном режиме (ежесменно) о всех нарушениях СДРЛ докладывает лично на докладах руководителям ЦУТР на 2:45, 08:00, 14:45мск.
— Ответственность за обеспечение сменно-суточного плана на выдачу локомотивных бригад в пределах потребности нормативного графика движения поездов несет дирекция тяги.
— Ответственность за постановку в наряд невостребованных, за плановые сутки и не отмененных установленным порядком локомотивных бригад несет дирекция управления движением.
Выполнение норм подготовительно-заключительных и вспомогательных операций
— Нормативное время подготовительно-заключительных и вспомогательных операций локомотивных бригад разрабатывается территориальными дирекциями тяги на основании методических рекомендаций и нормативного времени выполнения технологических операций, заложенного в графике движения поездов, Норматив времени согласовывается с территориальными дирекциями управления движением и утверждается первыми заместителями начальников региональных центров корпоративного управления.
— Ответственность за выполнение установленного нормативного времени от явки до контрольного поста и от контрольного поста до сдачи маршрута машиниста несет территориальная дирекция тяги.
— Ответственность за выполнение установленного нормативного времени от контрольного поста до отправления и от прибытия до контрольного поста несет территориальная дирекция управления движением.
— Отправление со станций формирования поезда и смены локомотивных бригад с рабочим временем более 2-х часов разрешается только по регистрируемому приказу старшего диспетчера по району управления ДЦУП (далее ДГПРУ). Выдача приказа допускается при условии, что локомотивная бригада будет пропущена по всему участку в пределах установленного режима работы. Приказ передается машинисту по радиосвязи с указанием причины, вызвавшей задержку отправления поезда. Ответственным за передачу приказа является ТНЦ.
Учет при определении ответственности за данное нарушение ДЦУП Грузовое движение — во всех случаях, кроме:
— отправление локомотивной бригады из пункта оборота без отдыха;
— отправление локомотивной бригады со станции, где установленное соответствующим порядком накладное и подготовительное время превышает 2 часа;
Маневровое, Хозяйственное, Передаточно-вывозное движение, в том числе и подталкивание — не учитывается;
Пассажирское движение — только в случае отправления не по графику;
Пригородное движение — только в случае отправления не по графику;
— Случаи нарушения нормативного подготовительно-заключительного и вспомогательного времени локомотивных бригад должны разбираться ежесуточно на всех технологических станциях смены локомотивов и локомотивных бригад комиссией под председательством начальника железнодорожной станции. В состав комиссии входят руководители эксплуатационных и ремонтных локомотивных депо, сервисных локомотивных депо, эксплуатационных вагонных депо, а также руководители других структурных подразделений, по вине которых было допущено нарушение.
— Ежемесячно случаи нарушения нормативного подготовительно-заключительного и вспомогательного времени работы локомотивных бригад должны разбираться руководителями региональных дирекций управления движением, тягой, представителями сервисных компаний под председательством первых заместителей начальников региональных центров корпоративного управления. На разборы приглашаются все причастные структурные подразделения ОАО «РЖД» и сервисных компаний, за кем были отнесены случаи нарушений.
При всех достоинствах данной системы «учета графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо» нет дополнительных функций, которые позволяли бы составлять график с учетом коэффициента замещения, который включает в себя неявку на рабочее место по следующим причинам: болезни, отпуска, сессии, прогул, отгул.
В системе «учета графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо» не предусмотрена автоматическая расстановка локомотивных бригад по следующим факторам: психологическим, возрастным, должностям.
В случае непредвиденных обстоятельств, старший нарядчик тратит много времени на поиск информации о локомотивной бригаде с учетом вышеперечисленных факторов, и вручную составляет новый график.
Разработка модуля по учету графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо позволит сэкономить время и переведет ручной труд в автоматизированный.
Данный модуль позволит встроиться в ИС АРМ «Нарядчик» и иметь аналогичный внешний вид.
Перечисленные недостатки будут учтены в разрабатываемом модуле — такие, как автоматизированные списки работников (машинисты, помощники машинистов), постановка смены, вид работ, номер локомотива. Данная система позволит незатруднительно составить новый график для локомотивной бригады.
1.2 Создание модели модуля информационной системы для учета графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо
Перефразировать и сделать ссылку на статью
Об организации труда и отдыха в приказе таком!!! указывается: норма продолжительности рабочего времени на определенных участках работы для различных видов движения, норма между сменного отдыха, нормы подготовительно заключительного времени, шести ступенчатый контроль особенности режима рабочего времени работника с ненормированным рабочим днем, привлечение к сверхурочным работам (только с согласия работника).
Учитывая все нормы и правила можно построить бизнеспроцесс.
Функциональная модель — это набор регламентов, бизнес-процессов, подлежащих автоматизации в рамках разрабатываемой информационной системы.
Регламент бизнес-процесса состоит, из диаграммы бизнес процесса и текстовой части, в которой выполняется описание бизнес-процесса. Диаграмма бизнес-процесса может быть выполнена в одном из допустимых форматов. Принято выполнять диаграммы в формате IDEF0.
После произведенного исследования был выявлен бизнеспроцесс построения графиков труда и отдыха локомотивных бригад.
Рис. 3 Функциональная модель IDEF0
Диаграмма потоков данных (data flow diagram, DFD) — один из основных инструментов структурного анализа и проектирования информационных систем, существовавших до широкого распространения UML. Несмотря на имеющее место в современных условиях смещение акцентов от структурного к объектно-ориентированному подходу к анализу и проектированию систем, «старинные» структурные нотации по-прежнему широко и эффективно используются как в бизнеспроцессе, так и в анализе информационных систем (рис.4).
Рис. 4 Диаграмма потоков данных При разработке графиков труда и отдыха старший Нарядчик вносит данные о локомотивных бригадах, согласовывая с начальником резерва, с профсоюзным органом и утверждается начальником депо. После обработки данных и согласования, локомотивные бригады ознакамливаясь с готовым графиком, подписывают его (личной подписью).
2. Разработка базы данных и webинтерфейса модуля по учёту графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо автоматизированной информационной системы АРМ «Нарядчик»
2.1 Разработка базы данных
Была создана база данных (БД) по имени grafiki в системе управления базами данных (СУБД) MySQL версии 5.5 в операционной системе Windows.
Эта СУБД была выбрана, потому что является бесплатной и широко распространенной, проста в установке и удобна в работе.
Для создания базы данных, таблиц и их первичного наполнения использовалась программа DBForge Studio for MySQL. Она позволяет с помощью графического интерфейса выполнять все операции с БД MySQL.
База данных состоит из 11 реляционных таблиц:
1. grafik — графики работы сотрудников;
2. grafikrows — ряды графиков;
3. grafikhours — данные о часах работы по каждой строке графиков;
4. person — информация о работниках;
5. lokomotiv — данные о локомотивах;
6. lokomotivser — названия серий локомотивов;
7. vidwork — виды работ (маневры, под депо, толкач);
8. monthnorma — данные по месячным нормам рабочего времени;
9. months — перечень месяцев. Нужен для отображения в элементах управления Dropdownbox, чтобы не заполнять значения месяцев вручную;
10. prazddays — перечень праздничных дней. Необходим для расчета количества часов, отработанных в праздничные дни. Эти часы в месячной норме не учитываются, а оплата по ним идет в двойном размере;
11. dolgnost — перечень должностей.
На рис. 5 представлена структурная схема базы данных, составленная с помощью программы DBForge Studio for MySQL. На схеме кроме таблиц также представлены реляционные связи между таблицами.
Структура базы данных разбита в соответствии с требованиями нормализации, а именно 1−3 нормальных форм.
Рис. 5 — Структура базы данных grafiki
На рисунках 2−12 представлена структура таблиц. Первичные ключи обозначены в первом столбце. В каждой таблице в виде первичного ключа используется идентификатор типа INT с автоинкрементом.
В таблице grafik (см. рис.6) все поля обязательны кроме IDLokomotiv, потому что при «работе под депо» локомотив не используется. Используются типы данных INT (11), DATETIME, VARCHAR. Назначение полей приведено в столбце «Комментарий». Каждая строка этой таблицы предназначена для описания общих данных о каждом графике работы. Более подробные данные расположены в двух подчиненных таблицах grafikrows, grafikhours.
Таблица содержит 2 поля являющихся внешними ключами IDLokomotiv, IDVidwork (см. Рис.5) для связи с таблицами lokomotiv, vidwork.
Рис. 6 — Структура таблицы grafik
Таблица grafikrows описывает данные для 8 сотрудников, то есть 4 локомотивных бригад, которые формируют 4 смены для работы на одном локомотиве. Таблица подчинена таблице grafik.
Рис. 7 — Структура таблицы grafikrows
Таблица grafikhours для каждой строки графика указанной в таблице grafikrows описывает в текстовом формате значение запланированных часов работы. Если в данный день работник не работает, то записи в таблице нет. Если в месяц сотрудник отработает 10 дней, то по данной строке графика в этой таблице будет 10 записей, а не 30(количество дней в месяце). Если по графику сотрудник должен работать, но по какой-то причине он не работает (выработка месячной нормы и т. д.) в таблице появляется запись с видом смены «X». Значения отработанных часов заносятся следующим образом: 12 — в день, 12/н — в ночь, Х — не работает смену, которая должна быть рабочей у сотрудника по графику «день-ночь-48».
Рис. 8 — Структура таблицы grafikhours
Таблица person содержит основные сведения о сотрудниках.
Рис. 9 — Структура таблицы person
Таблица lokomotiv содержит основные сведения о локомотивах, используемых сотрудниками в работе.
Рис. 10 — Структура таблицы lokomotiv
В таблице lokomotivser описываются названия и коды серий локомотивов. Таблица относится к разряду НСИ.
Рис. 11 — Структура таблицы lokomotivser
Таблица vidwork содержит перечень видов работ (маневры, толкач, под депо).Таблица относится к разряду НСИ.
Рис. 12 — Структура таблицы vidwork
Таблица monthnorma относится к НСИ и содержит в себе данные о норме часов в месяц. Эти данные используются для сравнения фактически отработанных часов с нормой.
Рис. 13 — Структура таблицы monthnorma
Таблица prazddays относится к НСИ и содержит перечень праздничных дней. Это используется для расчета времени отработанного в праздничные дни, так как эти часы в норму не в ходят, но оплачиваются в двойном размере.
Рис. 14 — Структура таблицы prazddays
Таблица dolgnost относится к НСИ. Она содержит перечень должностей сотрудников.
Рис. 15 — Структура таблицы dolgnost
Рис. 16 — Структура таблицы months
2.2 Разработка webинтерфейса модуля АИС АРМ «Нарядчик»
Программный модуль был разработан с помощью среды Microsoft Visual Web Developer 2010 Express, входящего в Microsoft Visual Studio 2010 Express. В качестве языка программирования был выбран C#. В Visual Studio также используются языки Visual Basic, C++, J#, но C# считается более распространенным среди разработчиков. Также он легче в освоении, чем язык C++.
Программа представляет собой веб-приложение с базой данных на основе СУБД MySQL. Программа, является редактором графиков работы локомотивных бригад.
Приложение состоит из 5 веб-форм (см. рис.17−22):
— grafik. aspx — основная форма программы. На ней присутствует список графиков, а также таблица с данными по выбранному графику. Заголовки праздничных дней на графике выделяются красным цветом (см. рис.17). Для того, чтобы отредактировать строку графика необходимо нажать кнопку в первой ячейке с номером этой строки. Тогда откроется форма редактирования строки графика editrow. aspx;
— graf_add.aspx — форма для добавления нового графика;
— graf_edt.aspx — форма для редактирования выбранного графика;
— editrow. aspx — форма для редактирования данных указанной строки графика;
— persget. aspx — форма для выбора (смены) сотрудника в графике;
Для передачи параметров между формами используется URL. Параметры указываются после знака «?» в виде пары «параметр=значение». Несколько параметров разделяются знаком «&».
Список графиков представлен в форме grafik. aspx с помощью элемента управления (ЭУ) GridView. Управление этим списком реализовано с помощью кнопок Button с названием Добавить, Редактировать, Удалить.
Таблица с данными текущего графика формируется динамически с помощью ЭУ Table. Программно с помощью кода C# в таблицу добавляются строки и ячейки, а также кнопки с обработчиком её нажатия. Сложность состоит в том, что в каждом месяце разное количество дней, а также в базе данных данные хранятся не по каждому дню месяца, а только по тем, в которые сотрудник работал. Поэтому невозможно было сформировать эту таблицу с помощью элемента GridView, в котором количество столбцов всегда точно известно.
В веб-формах использовались следующие ЭУ: GridView — просмотр табличных данных; DropdownList — поле со списком; TextBox — текстовое поле; Table — таблица; SQLDataSource — невизуальный ЭУ, являющийся источником данных для других списковых или табличных ЭУ (GridView, DropdownList).
Также для изменения данных (обновление, редактирование, удаление) в таблицах БД использовался ЭУ SQLDataSource. В этом случае определялся метод UpdateQuery, InserQuery, DeleteQuery, а также задавали его параметры (см. рис.22).
Для возможности связи с БД из среды разработки Microsoft Visual Web Developer 2010 Express с СУБД MySQL 5.5 был установлен коннектор MySQL Connector for /Net. БД MySQL в кодировке utf-8. C# поддерживает это через определение набора символов charset в строке соединения с БД. Строка соединения с БД grafiki — «GrafikiDBCon» определена в файле конфигурации проекта web. config (см. листинг 1).
Листинг 1
connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
connectionString="server=localhost;user=root;database=grafiki;port=3306;password=12 345;charset=utf8″
providerName="MySql.Data.MySqlClient" />
Рис. 17 — вид формы grafik. aspx
Рис. 18 — вид формы graf_add.aspx
Рис. 19 — вид формы graf_edt.aspx
В форме editrow. aspx редактирование значений отработанных часов реализовано в виде ЭУ таблицы Table, в каждую ячейку которой динамически добавлен ЭУ TextBox по ходу выполнения программы. Таким образом, производится редактирование часовых данных в строке графика.
Рис. 20 — вид формы editrow. aspx
Рис. 21 — вид формы persget. aspx
Рис. 22 — настройка свойства UpdateQuery ЭУ SQLDataSource
Листинг программного приложения приведен в приложении 2.
Заключение
В ходе разработки модуля ИС «Учет графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо» была изучена предметная область, сформированы требования к ИС.
Была построена функциональная модель IDEF0 и диаграмма потоков данных, разработан пользовательский интерфейс для удобной работы нарядчиков.
Разработанный модуль представляет собой дополнение к ИС АРМ «Нарядчик». Модуль «учет графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо» содержит информацию о локомотивных бригадах, локомотивах, график работ (дневные, ночные смены; выходные).
Созданный модуль автоматизировал процедуру сбора, хранения и поиска данных по локомотивным бригадам, локомотивам, что позволит в короткие сроки создать новые графики труда и отдыха, в случае отсутствия работника на рабочем месте.
Практическая ценность работы заключается в том, что данный программный продукт будет использован в локомотивном депо для составления графиков труда и отдыха нарядчиками. Разработанный модуль имеет доступ по http протоколу локальной сети локомотивного депо.
В ходе выполнения выпускной квалификационной работы (дипломного проекта) все задачи решены, и цель в полной мере достигнута.
1. Приказ Министерства путей сообщения Российской Федерации (МПС России) № 7 от 5 марта 2004 года.
2. Кумскова, И. А. Базы данных: учебник/ И. А. Кумскова. -2-е изд., стер.- М.: КноРус, 2012.-488 с.
3. Гагарина, Л. Г. Разработка и эксплуатация автоматизированных систем [Текст]: учеб. пособие/ Л. Г. Гагарина, Д. В. Киселев, Е. Л. Федотова; ред. Л. Г. Гагарина.- М.: Форум: ИНФРА-М, 2011 -384 с.
4. Коваленко, В. В. Проектирование информационных систем: учебное пособие /В.В. Коваленко. — М.:ФОРУМ:ИНФА-М, 2014. 320 с.- (Высшее образование)
5. ГОСТ 34.601−90 «Автоматизированные системы. Стадии создания» [Электронный ресурс]: 2011;2014. URL: http://www.rugost.com/index.php?option=com_content&view=article&id=95:gost-34−601−90-avtomatizirovannye-sistemy-stadii-sozdaniya&catid=22&Itemid=53
6. Пирогов, В. Ю. Информационные системы и базы данных: организация и проектирование: учеб. Пособие.- СПб.: БХВПетербург, 2011.-528 с.: ил.
7. Шаньгин, В. Ф. Информационная безопасность компьютерных систем и сетей: учеб. Пособие.- М.: ИД «ФОРУМ»: ИНФА-М, 2012.-416 с.: ил.
8. Илюшечкин, В. М. Основы использования и проектирования баз данных: учеб. Пособие /В.М. Илюшечкин.- М.: Издательство Юрайт; ИД Юрайт, 2011.-213 с.
9. Хомоненко, А.Д., Цыганков В. М., Мальцев М. Г. Базы данных: Учебник для высших учебных заведений /Под ред.проф. А. Д. Хомоненко.- 6-е изд., доп.- СПб.: КОРОНАВек, 2011. -736 с.
10. Лахатин, А. С. Языки программирования. Учеб. пособие / А. С. Лахатин, Л. Ю. Искакова. — Екатеринбург, 2013. — 548с.: ил.
11. Богатырев, А. Язык программирования С [Электронный ресурс] / А. Богатырев.- электр. дан. — Режим доступа: http://www.refby.com. — Загл. с экрана. (Дата обращения 03.05.2015)
12. Уэйт, М. Язык С. Руководство для начинающих. / М. Уэйт, С. Прага, Д. Мартин. — М.: Мир, 2012. — 521с.: ил.
13. Федорова, Г. Н. Информационные системы: учебник/ Г. Н Федорова. -2-е издание., испр. -М.: Академия, 2011. -208 с.
14. http://forcoder.ru/developing/tehnologiya-razrabotki-programmnyh-produktov-uchebnoe-posobie-804.
15. http://www.litres.ru/k-v-kutikova/n-v-ilina/metodika-proektirovaniya-informacionnyh-sistem-dlya-sfery-gosudarstvennyh-i-municipalnyh-uslug/
16. http://www.litres.ru/s-prata/yazyk-programmirovaniya-s-lekcii-i-uprazhneniya/
Приложение 1
Перечень сокращений
АРС — анкерное рельсовое сцепление. Применяется в высокоскоростном движении.
АС КМО — Автоматизированная система ведения актов комиссионных месячных осмотров и контроля за устранением неисправностей.
АСУ «Экспресс-3» — автоматизированная систему управления пассажирскими перевозками. Продажа билетов, управления основными технологическими процессами пассажирских перевозок, содержит все необходимые данные для управления пассажирскими перевозками.
АСУТ — автоматизированная система управления локомотивным хозяйством (АСУ «Тяги»).
АСУ ТП — автоматизированная система управления технологическими процессами ремонта тягового подвижного состава.
АСУТ-ЦТ — Автоматизированная система управления локомотивным хозяйством корпоративного уровня.
АСУТ-Т АРМ «Приемщик» — Программное обеспечение для автоматизации процессов приемки локомотивов после деповских видов ремонта.
АС ЕРД — Автоматизированная система Единый реестр договоров. Связана с ЕКАСУФР.
АСПТ — Автоматизированная система профессионального тестирования.
АСПО — автоматизированная система пред рейсового осмотра.
АС ДО ОЦО — Автоматизированная система обеспечения деятельности общих центров обслуживания.
АС ЭТД — электронный технологический документооборот
АС ОЗ — автоматизированная система обработки заявок
АРМ ОНД — АРМ анализа Отчетных и поНомерных данных
АРМ ОНСЛ — АРМ Отчеты о наличии и состоянии локомотивов
АС ТРА — Автоматизированная Система ведения базы данных Техническо-Распорядительных Актов
АС КСПР — Автоматизированная Система корпоративная система премирования работников
АБД ТПС — Автоматизированной базы данных тягового подвижного состава
АСУ-СТ — АСУ Станции. Оперативная информационная система, решающая вопросы поездообразования.
АС АПСС — автоматизированная система анализа простоев сортировочной станции
АСОУП — Автоматизированная система оперативного управления перевозками (2-я очередь)
АС ГраТ — автоматизированная система графического тестирования. Данная система является модулем АСУТ и разработана с целью организации тестирования работников локомотивных бригад на знание технико-распорядительных актов (далее — ТРА) станции, электрических и пневматических схем ТПС, повышения персональных знаний работников локомотивных бригад, выявления «узких» мест в знаниях ТРА станции.
АСУ ЖДРМ — используется в ОАО «Желдорреммаш» в состав которого входят локомотиворемонтные заводы.
АСУ ССПС — Автоматизированная система учета рабочего времени и отдыха бригад специального самоходного подвижного состава (мотовозы, дрезины, автомотрисы).
АС РД — автоматизированная система учета локомотивов в резерве Центральной дирекции управления движением.
АС ПУЛ (ЕС ПУЛ) — Полномерный учет локомотивов. Новая автоматизированная система на основе SAP. Заменила АРМ Картотека ТПС АСУТ в июле 2013 г.
АС УБД — автоматизированная система учета и контроля устройств безопасности движения.
АСУ НБД — Автоматизированная система учета и анализа нарушений безопасности движения по расшифровке скоростемерных лент БВИ-М — блок ввода информации малогабаритный. Считыватель кассет регистрации КПД.
БЛОК — Безопасный локомотивный объединенный комплекс ВРК — Вагонно-ремонтная компания ВМД — вагонная модель дороги ГУ-12 — заявка на перевозку грузов. Формируется в АС ЭТРАН.
ГИД — График исполненного движения ГИР — график исполненной работы. Подсистема АСУ СТ.
ДГУДизель-генераторная установка ДТЭЦ (или НТЭЦ) — дорожный топливно-энергетический центр ДИ — дирекция инфраструктуры ДРП — дирекция по ремонту пути ДЗО — дочерние и зависимые общества Диспетчерский круг — участок диспетчерской связи, управляемый одним диспетчером. Протяжение Д. к. составляет обычно около 100 км.
ЕКАСУТР — Единая корпоративная автоматизированная система управления трудовыми ресурсами. на базе SAP HR версии 4.7.
ЕКАСУФР — Единая корпоративная автоматизированная система управления финансами и ресурсами.
ЕКАСУФР включает подсистемы:
УДП — учет доходных поступлений;
ИПБ — исполнение платежного баланса;
СНО — сводная налоговая отчетность;
ТДС — типовая дорожная система.
ЕКАСУИ — Единая корпоративная автоматизированная система управления инфраструктурой.
ЕКТ — Единые корпоративные требования ЕАСД — Единая автоматизированная система документооборота.
ЕСР — единая сетевая разметка. В ней есть к примеру коды станций, которые указываются в индексах грузовых поездов, где указываются ЕСР-коды станций отправления и назначения.
http://propoezda.com/stations/ - ЕСР коды станций.
Система цифрового обозначения железнодорожных станций на территории стран СНГ и Балтии. С помощью кодов ЕСР кодируются станции, открытые для выполнения грузовых операций, производящие перевалку грузов с железнодорожного на речной или морской транспорт и обратно. ЕСР предназначена для унификации разметки перевозочных документов. Код ЕСР также является частью кода железнодорожной станции в АСУЖТ.
Код ЕСР состоит из четырёх цифр, составляющих основную часть кода. Также существует защищённый код ЕСР, в котором к основному коду добавляется пятая — контрольная цифра[2].
Код построен по принципу:
NNYYK,
Где NN — номер сетевого района,
YY — порядковый номер станции в данном сетевом районе,
K — контрольная цифра.
Номер сетевого района. Вся железнодорожная сеть стран СНГ и Балтии разбита на 99 районов по сплошной нумерации. Нумерация районов возрастает с запада на восток. Так, в первый район входят станции Кольского полуострова и Карелии, а в 99-й — острова Сахалин. Железная дорога (как структурное подразделение) может охватывать один или несколько сетевых районов (в том числе часть района). Сетевые районы не пересекают границы государств. Номер первого района, прикреплённого к железной дороге служит цифровым кодом для неё[3]. Например, Куйбышевская железная дорога охватывает 63, 64 и 65 районы и имеет цифровой код 63.
Порядковый номер станции. За каждым участком дороги, входящим в район, закрепляется ряд номеров. Станции на участках нумеруют, как правило, по возрастанию в чётном направлении. Важнейшие станции районов имеют нулевые номера. Например, код ЕСР станции Пенза-3 равен 6300.
Для пограничных и некоторых портовых станций кроме основного кода ЕСР выделены дополнительные номера[1].
Контрольная цифра. Представляет собой число от 0 до 9. Контрольная цифра определяется как остаток от деления на 11 суммы поразрядных произведений соответствующих цифр кода на порядковый номер каждой цифры. Если остаток равен 10, то для расчёта нумерацию цифр начинают с трёх. Если же и в этом случает остаток будет равен 10, то контрольная цифра принимается равной 0. Например, для кода станции 63 567 (Сызрань-1) контрольная цифра рассчитывается следующим образом:
6 3 5 6
1 2 3 4
_________
6+6+15+24 = 51
Число 51 делится с остатком на 11: неполное частное — 4, остаток — 7. Контрольная цифра кода равна 7.
История
ЕСР была введена в 1971 году. В 1984 году код станции ЕСР был дополнен пятым защитным знаком[1].
В 1992 году было произведено изменение границ сетевых районов по границам государств[4].
Код станций АСУЖТ
В кодах станций АСУЖТ основной код ЕСР дополняется пятой и шестой цифрами. Код построен по принципу:
NNYYZK,
Где Z — дополнительная цифра.
Пятая цифра предназначена для кодирования станций, закрытых для грузовых операций (пассажирские станции, остановочные пункты, разъезды и т. п.). Станции, открытые для грузовых операций, определяются как базовые, и пятая цифра в их коде равняется нулю.
Нумерация остальных станций ведётся последовательно от 1 до 9, от базовой, как правило, в чётном направлении.
Шестая цифра кода АСУЖТ является контрольной, и рассчитывается аналогично контрольной цифре кода ЕСР. При этом, для грузовых станций контрольные цифры обоих кодов будут совпадать.
ЕСТП — Единый сетевой технологический процесс.
ЕТБ — единая технологическая база данных.
ЕЖДА — Европейское железнодорожное агентство ИГУПС — Иркутский государственный университет путей сообщения ИСЗП — информационная система учета задержки поездов у сигналов ИКСАР — Интеграционный комплекс систем автоматизации работы ситуационного центра Инфотип — Набор данных, образующих группы с одинаковым содержимым, логическая и техническая группировка связанных друг с другом полей.
Подтип — Дополнительная логическая группировка типов данных, которые ведутся в одном инфо-типе.
ИИинфраструктурный инцидент. Понятие в ИС РЖД, когда происходит отказ в работе информационной системы.
ИСОП (АСУ ШИНА) — Интеграционная сервисно-ориентированная платформа обеспечения непрерывности информационных потоков ОАО «РЖД»
Индекс грузового поезда — Специальный код, состоящий из 10 цифр, присваиваемый всем грузовым поездам на станции их формирования. Первые четыре цифры — единая сетевая разметка (ЕСР) станции формирования поезда, следующие две — порядковый номер состава, сформированного на этой станции, а последние четыре — ЕСР станции назначения поезда…" (Источник: ПТЭ РФ) ЖДРМ — ОАО «Желдорреммаш». В него входят локомотиворемонтные заводы. Они используют в своей работе АСУ ЖДРМ.
ЗИП — запас инвентаря переходного. На локомотиве.
Закрепления:
ВЗвременное закрепление;
ПЗО — постоянное закрепление основное;
ПЗД — постоянное закрепление дополнительное.
КЗМ — Книга замечаний машиниста КИП — контрольно-измерительная поездка КЗП — контрольно-заключительная поездка КПОЖТ — Отраслевой классификатор кодов производственных участков КПД — ключевые показатели деятельности КАС АНТ — Комплексная автоматизированная система учета, контроля, устранения отказов технических средств и анализа их надежности КАСАТ — ПОДСИСТЕМА КАСАНТ по УЧЕТУ, РАССЛЕДОВАНИЮ И АНАЛИЗУ ТЕХНОЛОГИЧЕСКИХ НАРУШЕНИЙ.
КАСКОР — корпоративная автоматизированная система контроля знаний работников ОАО РЖД, связанных с обеспечением безопасности движения поездов на основании методики оценки знаний персонала, связанного с поездной и маневровой работой.
КЛУБ-У. Эти кассеты машинисты сдают оператору при дежурном. Она их считывает через программу. Файлы попадают ей на жесткий диск.
КПЗ — код пункта зарождения информации. КПЗ включает в себя код отправителя сообщения (КОС) и код пункта совершения операции (КСО).
КСО — код пункта совершения операции
КОС — код отправителя сообщения
КСОП — комплексная система учета и анализа показателей работы локомотивных бригад в процессе их обучения и проверки знаний
ЛБ — Локомотивная бригада ЛАЗ — линейный аппаратный зал. В РЦС находится.
МИРИСсистема мониторинга информационных ресурсов и систем МПР — межпоездной ремонт Модель локомотивная
Модель поездная МЛП — модернизация с продлением срока службы локомотива.
МТК — международный транспортный коридор.
МТР — материально-технические ресурсы.
НСУ — напольное считывающее устройство АСИ ПАЛЬМА НКИ — служба корпоративной информатизации Натурка — Натурный лист поезда — перечень всех вагонов в поезде. Если прицепляется локомотив в холодном состоянии, то он попадает в натурный лист поезда. Натурный лист содержит сведения по каждому вагону.
НТЭЦ (или ДТЭЦ) — дорожный топливно-энергетический центр ОАО НИИТКД — Научно-образовательный центр технологии, контроля и диагностики на железнодорожном транспорте (НОЦ ОмГУПС-НИИТКД). Разработчик АПК «Борт».
ОЦОР — Общий центр обслуживания региональный ОЦВ — отраслевой центр внедрения ОРД — организационно-распорядительный документ ОЭ — опытная эксплуатация ОТЛК — объединенная транспортно — логистическая компания ОСЖД — Организация сотрудничества железных дорог ОТЛК — Объединенная транспортно — логистическая компания. СП ОАО РЖД (в лице ОАО Трансконтейнер и ОАО РЖД Логистика), Белоруссии и Казахстана. Цель транзит контейнерных грузов по коридору Китай-Европа до станции Брест.
ПЛАН ЛБ — Автоматизированная система суточного планирования локомотивных бригад ПО — пункт оборота ПТОЛ — пункт технического обслуживания локомотива ПСС — комплекс работ по продлению срока службы локомотива ПНЧ ТСКБМ — Проверка носимых частей, Телемеханической системы контроля бодрствования машиниста ППК — пригородная пассажирская компания Полиграф — автоматизированная система планирования поездообразования. Планирует поезда за 6 часов до отправления.
Росжелдор — Федеральное агентство железнодорожного транспорта Министерства транспорта Российской федерации РД или РДУД — оперативный резерв локомотивов инвентарного парка Дирекции управления движением. На срок от 12 часов до 3 дней. Далее локомотив отставляется в технологический резерв (РТ).
РТ — технологический резерв Дирекции тяги. На РТ ставится по истечении срока РД (от 12 часов до 3 дней), на срок от 3 дней до 3 месяцев. Далее идет уже постановка на консервацию.
РЦС — региональный центр связи РПЛ — регистратор переговоров локомотивный МК РПЛ — модуль контроля РПЛ РПДА — регистратора параметров движения и автоведения электропоездов (РПДА) послужила необходимость снижения энергозатрат на железнодорожном транспорте и создания системы, позволяющей с более высокой точностью и достоверностью измерять расход электроэнергии электропоездами, перейти к электронной системе учета расхода электроэнергии, и проводить диагностику технического состояния электропоездов.
Регистратор параметров движения и автоведения электропоезда предназначен для измерения и регистрации в реальном масштабе времени в течении всей поездки до 30 основных параметров силовых цепей электропоезда и параметров его движения.
Расшифровка зарегистрированных данных позволяет осуществить диагностику технического состояния электропоезда, своевременно провести ремонтные работы, сократить их продолжительность и трудозатраты ремонтного персонала, а также контролировать выполнение расписания движения.
Разработаны и внедряются две модификации регистраторов:
· РПДА — для электропоездов постоянного тока;
· РПДА-ПТ — для электропоездов переменного тока.
РК — регистрационная карточка документа (в ЕАСД).
РЦКУ — региональные центры корпоративного управления. Железные дороги заменят на РКЦУ после реформы РЖД.
РОК — региональные оперативные комиссии. Единственный инструмент обеспечения согласованности подразделений филиалов и ДЗО на региональном уровне.
РУТП — распределенное управление тормозами поезда. Система установлена на локомотиве экспериментальной серии 1102 (аналог 2ЭС10 Гранит, но на переменном токе).
РОС — ремонтно-оперативная связь Сетевой район — см. ЕСР.
СТМ — Синара — Транспортные машины. Дочернее предприятие.
СГУПС — Сибирский государственный университет путей сообщения г. Новосибирск СИС Эффект — система эффективного сервиса Эффект. Используют экономисты.
СИРИУС — сетевая интегрированная российская информационно-управляющая система. Система работает в режиме реального времени и предназначена для анализа, прогноза и принятия решений по организации перевозочного процесса по управлению вагонным и локомотивными парками, погрузкой и выгрузкой подвижного состава. Задача СИРИУС минимизировать расходы. На основе сводного плана рассчитывает технические нормы эксплуатационной работы и обеспечивает исполнение каждой согласованной заявки на перевозку, включая импорт и транзит через Россию. В основе планирования лежит метод ситуационного моделирования взаимосвязанных объектов управления. Он учитывает сложившуюся ситуацию — наличие на объектах погрузочных ресурсов, грузов, заявок, отправок, вагонов, поездов, локомотивов и бригад, положение на местах погрузки и темпы продвижения транспортных потоков.
Метод универсален и может быть применен для любых объектов (в т.ч. транспортных коридоров, морских портов, пограничных пунктов, регионов массовой погрузки угля, руды и т. д.).
Основным направлением развития СИРИУС является организация информационного обеспечения управления перевозками на всех уровнях вертикали управления.
СМЕ — система многих единиц САИ ПС (САИ ПАЛЬМА) — Система автоматической идентификации подвижного состава САИ ПАЛЬМА:
НСУ — напольное считывающее устройство ПСЧ — пункт считывания информации КИ — концентратор информации СИРДП-Е — система интервального регулирования движением поездов на базе радиоканала. Линия оборудована системой МПЦ EBILock 950. Обмен данными между поездами и центром радиоблокировки осуществляется через систему радиосвязи стандарта TETRA. Позволяет отказаться от напольного оборудования на перегонах, повысить пропускную способность линии, сократить энерго и ресурсопотребление, а также износ пути и оборудования.
КБД — кодовыми бортовыми датчиками, который стоит на локомотиве, по которому регистрируется заход/выход в депо локомотива САИ ПС ПАЛЬМА.
КР КЛУБ — кассеты регистрации параметров движения локомотивов системы
Сход локомотива с кольца — смена локомотива, участвующего в тяге, внутри участка обращения локомотивов.
СФТО — система фирменного транспортного обслуживания. На основе бизнес-прогнозов по объемам и видам перевозок и принятых от клиентов заявок на перевозку грузов, СФТО формирует сводный план перевозок.
СРС — специализированная рабочая станция. Компьютер в компактном корпусе для работников ОАО РЖД.
ТН — табельный номер ТТС — транзакционные терминалы самообслуживания ТЧЭ — Тяговая часть эксплуатационная (эксплуатационное локомотивное депо) ТЧР — Тяговая часть ремонтная (ремонтное локомотивное депо) ТУ-28 — Журнал ремонта формы ТУ-28
ТУ-124 — Акт о постановке ТПС на консервацию, резерв железной дороги ТУ-152 — Журнал технического состояния локомотива формы ТУ-152
ТУ-173 — Акт явки локомотивной бригады формы ТУ-173
ТУ-174 — Акт предрейсового медосмотра локомотивной бригады формы ТУ-174
ТУ-184 — Акт о постановке локомотива инвентарного парка ОАО РЖД в резерв Дирекции управления движение (РД) ТУ-185 — Акт о выдаче локомотива инвентарного парка ОАО РЖД из резерва Дирекции управления движение (РД) ТЧ — начальник ТЧ ТЧГ — главный инженер ТЧ ТЧПУ — производственный участок ТЧЗЭ — зам. начальника ТЧ по эксплуатации ТЧЗБ — зам. начальника ТЧ по безопасности ТПС — тяговый подвижной состав ТПЕ — тяговая подвижная единица ТСКБМ — Телемеханическая система контроля бодрствования машиниста ТОР — текущий отцепочный ремонт вагона.
ТПУ — транспортно-пересадочный узел.
УСАВП-Г — Система автоведения грузовых электровозов постоянного тока УСАВП-ГПТ — Система автоведения грузовых электровозов переменного тока Участок обращения локомотивов — часть железнодорожной сети, ограниченная пунктами оборота локомотивов, выезд локомотива за которые запрещен соответствующими технологическими инструкциями.
ФПК — Федеральная пассажирская компания ЦОММ — система централизованной обработки маршрута машиниста.
ЦУСИ — центры управления содержанием инфраструктуры.
ЦЕКОН — Автоматизированная система централизованной подготовки ограничений и нормативов по использованию вагонного и локомотивного парков и организации контроля за их соблюдением.
ЦУТР — центр управления тяговыми ресурсами ЦУСИ — центр управления содержанием инфраструктуры ЭД — электронный документ ЭК — Электронный киоск ЭММ — электронный маршрут машиниста ЭОД — электронный обмен документами.
ЭП — электронная подпись ЭТСО — Электронный терминал самообслуживания АС ЭТРАН — Автоматизированная система централизованной подготовки и оформления перевозочных документов. Электронная транспортная накладная. АС централизованной подготовки и оформления перевозочных документов. Основана на принципах использования электронного документооборота при взаимодействии с пользователями услуг железнодорожного транспорта для организации перевозок грузов. Система впервые включает клиента (грузоотправителя, экспедитора) технологический цикл приема заявок и оформления перевозок, обеспечивая ему возможность: оформить заявку на перевозку, подготовть электронную накладную, получить итоговые документы, увидеть результаты расчетов провозной платы по перевозкам, в определенной степени отследить ход перевозок его грузов со своего рабочего места, также клиенту предоставляется возможность получения информации обо всех грузах, отправленных в его адрес.
ЭкОЗ — Экспертное определение состояния здоровья машиниста. Программа разработчик ЗАО Нейроком.
Электронный паспорт локомотива — автоматизированная система ведения и учета технических паспортов локомотива — их электронных копий.
ЭСУП ТПС — ИНФОРМАЦИОННая СИСТЕМа УЧЕТА ПРОСТОЕВ ТЯГОВОГО ПОДВИЖНОГО СОСТАВА.
ЭЦ — пост ЭЦ. Пост электрической централизации.
IRIS — Международный стандарт железнодорожной промышленности
ЦД | Департамент управления перевозками | |
НСИ | Нормативно-справочная информация | |
АСОУП-2 | Автоматизированная система оперативного управления перевозками | |
ОКДБ | Подсистема АСОУП «Оперативный контроль дислокации бригад» | |
ГИД Урал — ВНИИЖТ | Автоматизированная система ведения и анализа графика исполненного движения (ГИД Урал — ВНИИЖТ) | |
ПТК | Программно-технический комплекс | |
АРМ | Автоматизированное рабочее место | |
АС | Автоматизированная система | |
АСУ | Автоматизированная система управления | |
ЦУП | Центр управления перевозками ОАО «РЖД» | |
ДЦУП | Дорожный центр управления перевозками | |
АСУТ | Автоматизированная система управления локомотивным хозяйством | |
АРМ ТЧБ | АРМ нарядчика локомотивного депо АСУТ | |
АРМ ТЧД | АРМ диспетчера АСУТ | |
АСУТ-Т | Информационно-сигнальная система контроля работы локомотивов и локомотивных бригад (подсистема АСУТ дорожно-регионального уровня) | |
ПЛАН-ЛБ | Автоматизированная система суточного планирования локомотивных бригад | |
СПРБ | Сменно-суточный план регулирования локомотивными бригадами грузового движения | |
ТПРБ | Текущий план регулирования локомотивными бригадами грузового движения | |
ТНЦ | Локомотивный диспетчер ДЦУП | |
ТНЦО | Оператор при ТНЦ | |
ТЧД | Дежурный по локомотивному депо | |
ЛБ | Локомотивная бригада | |
ФИО | Фамилия, имя, отчество | |
СОИ | Система оперативного информирования | |
Сообщение код 90 — о маневрах локомотивов в депо и на станции.
Сообщение 235 — об изменении справочных данных локомотива.
Перечень сокращений и терминов АСОУП — автоматизированной системой оперативного управления перевозками АРМ ТЧЗЭАРМ Заместителя начальника депо по эксплуатации АСУТ.
КИП — Контрольно-инструкторская поездка ОКДБ, ОКДЛ — блок ОКДБ (оперативный контроль дислокации бригад) и ОКДЛ (оперативный контроль дислокации локомотивов) входят в состав АСОУП КПЗ — код пункта зарождения информации. Включает в себя КОС и КСО.
КОС — код отправителя сообщения
КСО — код пункта совершения операции
Сообщения ОКДБ
Сообщение 265 — Нарушение режима работы Сообщение 267 — об операциях с бригадой Сообщение 268 — паспортные данные машиниста Сообщение 269 — Данные приказов Сообщение 270 — Журнал нарядов локомотивных бригад Сообщение 333 — ?
Сообщения ОКДЛ
230 сообщения «Об изменении состояния локомотива»
231 сообщения «Об объединении и разъединении локомотива»
233 сообщения «Об изменении контролируемого парка»
234 сообщения «Корректировка пробегов»
235 сообщения «Об изменении депо приписки локомотива»
Сообщения ИОММ
1750 «Сведения о постановке выпуске локовотивов в НЭПиз НЭПа»
1751 «Сведения о простое локомотивов в ЭП»
ГЭД—готовность к экстренному действию (в условиях интенсивного движения)
ПВ—переключение внимания
ПУ—помехоустойчивость
СТР—стрессоустойчивость
ОБМЭ—оценка бдительности машиниста электропоезда (в условиях интенсивного движения)
СДР—сложная двигательная реакция
ОВ—объём внимания
ABAP/4 (Advanced Buisness application programming 4GL) — язык программирования в SAP R/3.
Приложение 2
Техническое задание
на разработку модуля «Учет графиков труда и отдыха локомотивных бригад эксплуатационного депо»
1 Общие сведения
1.1. Наименование системы
Модуль информационной системы «Учет графиков труда и отдыха локомотивных бригад локомотивного депо».
1.2 Наименования Разработчика и Заказчика работ и их реквизиты
Разработчик:
Кашеварова Анастасия Викторовна
Заказчик:
БИФ КемГУ (полное название)
1.3 Основание для проведения работ
Основанием для проведения работ по созданию модуля ИС «Учета труда и отдыха локомотивных бригад» являются следующие документы:
— задание на ВКР (дипломный проект) БИФ КемГУ
1.4 Сроки начала и окончания работ
Дата начала работ: 01.04.2015
Дата окончания работ: 15.05.2015
1.5 Порядок оформления и предъявления Заказчику результатов работ
Работы по созданию модуля ИС производятся и принимаются поэтапно.
2 Назначение и цели создания системы
2.1. Назначение системы
ИС «Учет труда и отдыха локомотивных бригад эксплуатационного локомотивного депо» предназначена для:
— автоматизации работ при составлении графиков труда и отдыха локомотивных бригад;
— планирования работ по составлению графиков;
— ведения учета и контроля выполнения работ;
— оперативное планирование графиков, в связи с отсутствием работников локомотивного эксплуатационного депо;
— учет рабочего времени на выполнение заданий;
— сбор статистической информации по работам и исполнителям;
2.2. Цели создания системы
Система «Учет графиков труда и отдыха локомотивных бригад эксплуатационного депо» предназначена для расширения функционала ИС АРМ «Нарядчик».
3 Характеристика объектов информатизации
3.1. Краткое описание работы нарядчика
К основным направлениям работы нарядчика относятся:
— обеспечивать планирование прибывающих локомотивных бригад по графику;
— своевременно вызов локомотивных бригад на явку;
— введение отчетной документации в бумажном виде;
— осуществлять контроль продолжительности рабочего времени по участкам обслуживания выполнения норм отдыха в пунктах оборота и домашнего отдыха;
— планировать и организовывать именные графики.
3.2. Работа с отчетами В модуле ИС «учет графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо» предусмотрена возможность построения различных отчетов. Производит отчеты по регулировки часов, производит постановку в наряд следующие сутки. Пользователь имеет возможность вывести отчет на печать или сохранить отчет на диске.
4 Требования к информационной системе
4.1. Базовые принципы разработки модуля При разработке модуля ИС должны использоваться следующие базовые принципы:
— исключение дублирования ввода информации и повышение ее достоверности, за счет отождествления ранее введенной информации;
ИС должна удовлетворять следующим требованиям:
— пользовательский интерфейс системы должен быть сформирован в соответствии с навыками и профилем пользователей;
ИС должна содержать:
— Средства поиска информации;
Выбор прикладного программного обеспечения системы должен удовлетворять следующим критериям:
— Интеграция с базами данных, поддерживающих Web-технологии;
4.2. Требования к архитектуре системы.
Архитектура системы «Система» является трехзвенной. В качестве клиентского приложения выступает стандартный веб-браузер.
4.3. Требования к способам и средствам связи для информационного обмена между компонентами (модулями) ИС
Подсистемы должны взаимодействовать в пределах единой компьютерной сети (Интернет), в которой происходит весь обмен информацией.
4.4. Требования к характеристикам взаимосвязей системы со смежными системами Смежными системами для информационной системы «Учет графиков труда и отдыха» является: «АРМ Нарядчик».
4.5. Требования к режимам функционирования подсистемы Разрабатываемая система должна функционировать 24 часа в сутки, 365 дней в году.
4.6. Требования к пользователям Нарядчик — имеет доступ к просмотру общих данных, а также к просмотру и редактированию личных данных работников локомотивных бригад.
4.7. Требования по эргономике и технической эстетике Основными требованиями по эргономике и технической эстетике является адекватность времени реакции модулей системы на сложность запроса пользователя к базам данных:
— При выполнении стандартных запросов пользователь должен работать с системой в реальном режиме времени.
4.8. Требования к численности и квалификации персонала системы и режиму его работы Для эксплуатации модуля ИС «Учет труда и отдыха» определены следующие роли:
— Системный администратор;
— Администратор баз данных;
— Администратор информационной безопасности;
— Пользователь (нарядчик).
Основными обязанностями системного администратора являются:
— Модернизация, настройка и мониторинг работоспособности комплекса технических средств (серверов, рабочих станций);
— Установка, модернизация, настройка и мониторинг работоспособности системного и базового программного обеспечения;
— Установка, настройка и мониторинг прикладного программного обеспечения;
— Ведение учетных записей пользователей системы.
Системный администратор должен обладать высоким уровнем квалификации и практическим опытом выполнения работ по установке, настройке и администрированию программных и технических средств, применяемых в системе.
Основными обязанностями администратора баз данных являются:
— Установка, модернизация, настройка параметров программного обеспечения СУБД;
— Оптимизация прикладных баз данных по времени отклика, скорости доступа к данным;
— Разработка, управление и реализация эффективной политики доступа к информации, хранящейся в прикладных базах данных.
Администратор баз данных должен обладать высоким уровнем квалификации и практическим опытом выполнения работ по установке, настройке и администрированию используемых в ИС СУБД.
Основными обязанностями администратора информационной безопасности являются:
— Разработка, управление и реализация эффективной политики информационной безопасности системы;
— Управление правами доступа пользователей к функциям системы;
— Осуществление мониторинга информационной безопасности.
Администратор информационной безопасности данных должен обладать высоким уровнем квалификации и практическим опытом выполнения работ по обеспечению информационной безопасности.
Пользователи (нарядчики) системы должны иметь опыт работы с персональным компьютером на базе операционных систем Microsoft Windows на уровне квалифицированного пользователя и свободно осуществлять базовые операции в стандартных Windows.
Роли системного администратора, администратора баз данных и администратора информационной безопасности могут быть совмещены в роль.
Рекомендуемая численность для эксплуатации модуля ИС «Учет труда и отдыха»:
— Администратор — 1 штатная единица;
— Пользователь (нарядчик) — число штатных единиц определяется структурой предприятия.
4.9. Требования к защите информации от несанкционированного доступа Разрабатываемый модуль ИС должен обладать специализированной подсистемой разграничения доступа к информационным ресурсам, функционирующей на основе системы пользователей и пользовательских групп.
4.10. Требования к обмену данными Обмен данными должен происходить по сети в среде Internet с поддержкой протокола TCP/IP;
Все компоненты модуля ИС должны функционировать в пределах единого логического пространства, обеспеченного интегрированными средствами серверов данных и серверов приложений.
4.11. Требования к внешней среде системы Сервер баз данных или сервер приложений должен обеспечивать: возможность доступа к модулю ИС с любого клиентского места.
4.12. Требования к хранению данных База данных «Графики» должна содержать следующие данные:
— Данные о локомотивных бригадах (ФИО, табельный номер, номер колонны);
— Данные о смене (день/ночь).
4.13. Требования к отдельным подсистемам В состав модуля ИС «Учет труда и отдыха» должны входить следующие подсистемы:
— Подсистема хранения данных;
— Подсистема управления нормативно-справочной информацией;
— Подсистема анализа;
— Подсистема интеграции;
— Подсистема формирования отчетности;
Подсистема хранения данных предназначена для хранения оперативных данных системы, данных для формирования графиков, документов системы, сформированных в процессе работы с графиками.
Подсистема приложений операционного управления предназначена для учета работ с работниками локомотивных бригад, ввода информация о локомотивах, входящих в состав локомотивного эксплуатационного депо, их организационном делении и штатном расписании, автоматизации процедур управления графиком локомотивных бригад (ведение полной информации о бригадах, процедуры оценки работников, обучения и т. п.), обеспечение всего спектра работ нарядчиков, автоматическое формирование графиков, справок, учет рабочего времени.
Подсистема управления нормативно-справочной информацией предназначена для централизованного ведения классификаторов и справочников, используемых для обеспечения информационной совместимости подсистем.
Подсистема интеграции должна обеспечивать следующие основные виды взаимодействия со смежными системами:
прием запросов от смежных систем, обработку полученных запросов и предоставление ответов на запросы;
передачу запросов в смежные системы и обработку полученных ответов.
В ходе выполнения проекта должны быть разработаны форматы данных, протоколы и регламенты взаимодействия Системы со смежными системами.
Подсистема должна обеспечивать ведение журналов учета поступивших и обработанных запросов, посланных запросов и полученных ответов смежных систем.
Подсистема формирования отчетности предназначена для создания и формирования отчетов в виде удобном для вывода на печатающие устройства на основе данных ИС АРМ «Нарядчик», проектирования и разработки форм регламентированной отчетности, настройки планового формирования и доставки регламентированных отчетов, формирования и предоставления по запросам пользователей аналитических и статистических отчетов, отображения регламентированных отчетов с помощью веб-интерфейса, вывода подготовленных отчетных форм на печать.
Также модуль ИС «Учет труда и отдыха» должна обеспечивать доступ пользователей к операционным данным БД ИС (путем предоставления сервисов, позволяющих формировать запросы на получение информации ограниченного доступа, в соответствии с уровнем компетентности пользователя Состав и содержание работ по созданию модуля Разработать модель БД, позволяющую хранить и обрабатывать все необходимые данные.
Приемо-сдаточные испытания модуля После завершения всех работ по разработке компонентов, настройке подсистем, модуль ИС должен подвергнутся испытаниям, которые осуществляются в локомотивном эксплуатационном депо г. Белово.
Внесение корректировок в программный продукт, связанных с ошибками в Системе Все ошибки, которые будут выявлены в работе Системы в течении 2 недель устраняются разработчиком.
Тестирование Перед сдачей Модулей и Компонент Заказчику для выявления возможных сбоев в работе модуль подвергается тестированию со стороны нарядчиков в течении 1 недели.
Порядок контроля и приемки Системы Для проверки выполнения заданных функций Системы, определения и проверки соответствия требованиям ТЗ количественных и (или) качественных характеристик Системы, выявления и устранения недостатков в действиях Системы и в разработанной документации, поэтапного контроля над ходом разработки должны быть проведены следующие виды испытаний:
Испытание на рабочем месте нарядчика.
Процедуры тестирования и контроля качества При проведении испытаний должны использоваться следующие типы процедур тестирования и контроля качества:
· функциональное тестирование — тестирование модуля ИС на соответствие функциональным спецификациям;
Общие требования к приемке работ Сроки и место приемки, порядок приемки работ определяются в соответствии с настоящим ТЗ.
Требования к документированию
12.1. Требования к проектной документации Состав и комплектность проектной документации должна соответствовать требованиям ГОСТ 34.201−89.
Приложение 3
Листинг программы
Файл grafik.aspx.cs
using System.Web.UI;
using System.Web.UI.WebControls;
using System. Drawing; //для выбора цвета
using System.Web.Configuration; //для чтения из файла Web. Config
using System. Data; //Содержит объект DataSet
using MySql. Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
using System; //для ссылки на цвета Color. Red к примеру
namespace WebApplication3
{
public partial class WebForm1: System.Web.UI.Page
{
MySqlDataAdapter GrafikDA;
DataSet GrafikDS;
MySqlConnection conn;
string sql, sql2;
String CurIDGr; //текущее значение IDGr графика
int NormaHours; //норма часов для текущего месяца и года
float curHoursSum, curPrazdHours;
protected void Page_Load (object sender, EventArgs e)
{
int id = -1;
//Чтение строки подключения ServiceDBCon из файла Web. Config
SqlDataSource1.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
//Пытаемся считать значения IDGr из параметров URL веб-страницы
if (GridView1.Rows.Count > 0)
{
if (!IsPostBack)
{
if (Request.QueryString[" id" ] == null) GridView1. SelectedIndex = 0;
else
{
//Request.QueryString[" id" ] задан, поэтому выбираем строку
if (GridView1.SelectedIndex < 0) //если строка не выбрана
{
if (this.Request.QueryString[" id" ] ≠ null)
{
id = Convert. ToInt32(this.Request.QueryString[" id" ]); //считываем номер IDGr для из параметра URL
}
//выбираем строку по id из параметра
for (int j = 0; j < GridView1.Rows.Count; j++)
{
if (GridView1.DataKeys[j]. Value. Equals (id))
{
GridView1.SelectRow (j);
}
}
}
}
}
LoadGrafik ();
}
}
protected void btn_Click (object sender, EventArgs e)
{
//Переход на страницу редактирования строки графика. Передаем параметр — идентификатор IDGrRow строки графика
//(sender as Button).Text — название кнопки созданной дианически для редактирования строки графика
//определяем IDGrRow по IDGr и GrafPos (берем из названия кнопки)
//Создаем соединение с БД
conn = new MySqlConnection (WebConfigurationManager.ConnectionStrings[" GrafikiDBCon" ]. ConnectionString);
conn.Open ();
GrafikDS = new DataSet ();
try
{
//Читаем строки графика
sql = «SELECT IDGrRow FROM grafikrows WHERE IDGraf=» + GridView1.SelectedDataKey.Value.ToString () + «AND GrafPos=» + (sender as Button).Text;
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafikrows»);
}
catch (Exception ex)
{
Label1.Text = «Не удалось определить номер строки в графике. «+ ex. ToString ();
Label1.Visible = true;
conn.Close ();
return;
}
Response.Redirect («editrow.aspx?idgr=» + GrafikDS. Tables[" grafikrows" ]. Rows[0][" IDGrRow" ]);
}
protected void GridView1_SelectedIndexChanged (object sender, EventArgs e)
{
//Загружаем выделенный график
LoadGrafik ();
}
protected void LoadGrafik ()
{
//Загрузка таблицы графика
TableRow rowNew;
TableCell celNew;
int[] PrazdDays; //массив с праздничными днями выбранного года, месяца
float Value;
//предварительно очищаем таблицу
Table1.Rows.Clear ();
//если строка не выбрана в GridView, то график не отрисовываем
if (GridView1.SelectedIndex < 0) return;
//если строка не выбрана, выходим из функции
if (GridView1.SelectedDataKey == null)
return;
else
CurIDGr = GridView1.SelectedDataKey.Values[" IDGr" ]. ToString ();
GrafikDS = new DataSet ();
//Создаем соединение с БД
conn = new MySqlConnection (WebConfigurationManager.ConnectionStrings[" GrafikiDBCon" ]. ConnectionString);
conn.Open ();
try
{
//Читаем строки графика
sql = «SELECT grafikrows.*, person.* FROM grafikrows LEFT OUTER JOIN person «+
" ON grafikrows. IDPerson = person. IDPerson WHERE grafikrows. IDGraf = «+ CurIDGr + «ORDER BY grafikrows. GrafPos» ;
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafikrows»);
}
catch (Exception ex)
{
Label1.Text = ex. ToString ();
Label1.Visible = true;
conn.Close ();
return;
}
//Читаем норму часов для выбранного года и месяца
sql2 = «SELECT * FROM monthnorma WHERE NormYear = «+ GridView1.SelectedRow.Cells[2]. Text + «AND NormMonth = «+ GridView1.SelectedRow.Cells[3]. Text + «AND VidNormy=2» ;
GrafikDA = new MySqlDataAdapter (sql2, conn);
GrafikDA.Fill (GrafikDS, «monthnorma»);
if (GrafikDS.Tables[" monthnorma" ]. Rows. Count == 1)
{
NormaHours = Convert. ToInt32(GrafikDS.Tables[" monthnorma" ]. Rows[0][" NormValue" ].ToString ());
}
else
{
NormaHours = 0;
}
//Определяем количество дней в выбранном месяце
Int32 m = Convert. ToInt32(GridView1.SelectedRow.Cells[3]. Text); //месяц
Int32 y = 0;
try
{
y = Convert. ToInt32(GridView1.SelectedRow.Cells[2]. Text); //год
}
catch
{
Label1.Text = «Введите число в поле Год» ;
return;
}
Int32 n = DateTime. DaysInMonth (y, m); //количество дней в выбранном месяце
//Читаем праздничные дни из БД для данного года и месяца. Помещаем их в массив
//Читаем норму часов для выбранного года и месяца с 1 по последнее число месяца
sql2 = «SELECT * FROM praznddays WHERE PrDate >='» + GridView1.SelectedRow.Cells[2]. Text + «-» + GridView1.SelectedRow.Cells[3]. Text + «-01' AND PrDate <='» + GridView1.SelectedRow.Cells[2]. Text + «-» + GridView1.SelectedRow.Cells[3]. Text + «-» + Convert. ToString (n) + «'» ;
GrafikDA = new MySqlDataAdapter (sql2, conn);
GrafikDA.Fill (GrafikDS, «praznddays»);
if (GrafikDS.Tables[" praznddays" ]. Rows. Count > 0)
{
//формируем массив с числами праздничных дней
PrazdDays = new int[GrafikDS.Tables[" praznddays" ]. Rows. Count];
for (int i = 0; i < GrafikDS. Tables[" praznddays" ]. Rows. Count; i++)
{
PrazdDays[i] = Convert. ToDateTime (GrafikDS.Tables[" praznddays" ]. Rows[i][" PrDate" ].ToString ()).Day;
}
}
else
{
PrazdDays = null;
}
//Создаем Заголовок таблицы—————————————————————————————————————;
rowNew = new TableRow ();
// 1. Кнопка
celNew = new TableCell ();
celNew.Text = «Ред.» ;
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew.Cells.Add (celNew);
// 2. Номер смены
celNew = new TableCell ();
celNew.Text = «Смена» ;
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew.Cells.Add (celNew);
//3. Должность
celNew = new TableCell ();
celNew.Text = «Должность» ;
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew.Cells.Add (celNew);
//4. ФИО
celNew = new TableCell ();
celNew.Text = «ФИО» ;
rowNew.Cells.Add (celNew);
celNew.HorizontalAlign = HorizontalAlign. Center;
//5. часы для каждого дня месяца
for (int j = 0; j < n; j++)
{
// создать новую ячейку
celNew = new TableCell ();
celNew.Text = Convert. ToString (j + 1);
celNew.HorizontalAlign = HorizontalAlign. Center;
if (PrazdDays ≠ null)
{
for (int k = 0; k < PrazdDays. Length; k++)
{
if (PrazdDays[k] == j + 1) celNew. BackColor = Color. Red;
}
}
// добавить ячейку к строке таблицы
rowNew.Cells.Add (celNew);
}
//6. Факт. часов
celNew = new TableCell ();
celNew.Text = «Факт» ;
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew.Cells.Add (celNew);
//7. Празд. часов
celNew = new TableCell ();
celNew.Text = «Празд» ;
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew.Cells.Add (celNew);
//8. Факт-Празд.часов
celNew = new TableCell ();
celNew.Text = «Факт-Празд» ;
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew.Cells.Add (celNew);
//9. Факт-Празд.часов
celNew = new TableCell ();
celNew.Text = «Норма» ;
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew.Cells.Add (celNew);
Table1.Rows.Add (rowNew);
// Заполняем основную таблицу—————————————————————————————————————;
for (int i = 0; i < 8; i++)
{
curHoursSum = 0; //текущая сумма фактических часов работы сотрудника
curPrazdHours = 0; //текущая сумма праздничных часов
// создать новую строку таблицы
rowNew = new TableRow ();
//1. Кнопка для редактирования
celNew = new TableCell ();
celNew.HorizontalAlign = HorizontalAlign. Center;
//Программно создаем кнопку в ячейке
Button btn = new Button ();
btn.Text = Convert. ToString (i + 1);
btn.Click += new System. EventHandler (this.btn_Click); //Динамическая привязка метода Click кнопки к методу btn_Click
celNew.Controls.Add (btn);
//Назначаем кнопке метод
rowNew.Cells.Add (celNew);
//2. Номер смены
celNew = new TableCell ();
if (Convert.ToInt32(GrafikDS.Tables[" grafikrows" ]. Rows[i][" GrafPos" ].ToString ()) % 2 == 1)
celNew.Text = GrafikDS. Tables[" grafikrows" ]. Rows[i][" Smena" ].ToString ();
else
celNew.Text = «» ;
rowNew.Cells.Add (celNew);
//3. Должность
celNew = new TableCell ();
if (Convert.ToInt32(GrafikDS.Tables[" grafikrows" ]. Rows[i][" GrafPos" ].ToString ()) % 2 == 1) celNew. Text = «маш-ст» ;
else celNew. Text = «п/м» ;
rowNew.Cells.Add (celNew);
//4. ФИО
celNew = new TableCell ();
if (GrafikDS.Tables[" grafikrows" ]. Rows[i][" IDPerson" ].ToString () ≠ «»)
{
celNew.Text = GrafikDS. Tables[" grafikrows" ]. Rows[i][" Lastname" ].ToString () + «» + GrafikDS. Tables[" grafikrows" ]. Rows[i][" Firstname" ].ToString ().Substring (0, 1) + «.» + GrafikDS. Tables[" grafikrows" ]. Rows[i][" FatherName" ].ToString ().Substring (0, 1) + «. („+ GrafikDS. Tables[“ grafikrows» ]. Rows[i][" Tabnom" ].ToString () + «)» ;
}
rowNew.Cells.Add (celNew);
//читаем данные по часам по сотруднику в набор данных
//Читаем строки графика
sql2 = «SELECT * FROM grafikhours WHERE IDGrRow = „+ GrafikDS. Tables[“ grafikrows» ]. Rows[i][" IDGrRow" ].ToString () + «ORDER BY DayOfMonth» ;
GrafikDA = new MySqlDataAdapter (sql2, conn);
GrafikDA.Fill (GrafikDS, «grafikhours»);
//5. часы для каждого дня месяца
int k = 0;
for (int j = 1; j <= n; j++)
{
// создать новую ячейку
celNew = new TableCell ();
if (GrafikDS.Tables[" grafikhours" ]. Rows. Count == 0)
{
// в БД для данной сторки графика данных нет, потому ставим там пробел
celNew.Text = ««;
}
else
{
if (j ≠ Convert. ToInt32(GrafikDS.Tables[" grafikhours" ]. Rows[k][" DayOfMonth" ].ToString ()))
{
//в БД нет данных по этому дню
celNew.Text = ««;
}
else
{
//в БД есть данные по дням. Пытаемся найти в таблице БД значение для j-го дня
celNew.Text = GrafikDS. Tables[" grafikhours" ]. Rows[k][" GrVal" ].ToString ();
//добавляем значение часов к фактической сумме
if (GrafikDS.Tables[" grafikhours" ]. Rows[k][" GrVal" ].ToString () ≠ «X»)
{
if (float.TryParse (GrafikDS.Tables[" grafikhours" ]. Rows[k][" GrVal" ].ToString ().Replace («/н», «»), out Value))
{
Label1.Visible = false;
curHoursSum += Value;
//также вычисляем праздничные часы по сотруднику
if (PrazdDays ≠ null)
{
for (int t = 0; t < PrazdDays. Length; t++)
{
if (PrazdDays[t] == j) curPrazdHours += Value;
}
}
}
else //Присутствует буква.
{
Label1.Text = «В таблице графика есть значение часов не соотвествующее формату» ;
Label1.Visible = true;
}
}
if (k < GrafikDS. Tables[" grafikhours" ]. Rows. Count — 1) k++;
}
}
// добавить ячейку к строке таблицы
rowNew.Cells.Add (celNew);
}
//очищаем таблицу
GrafikDS.Tables[" grafikhours" ]. Clear ();
//6. Факт. часов
celNew = new TableCell ();
celNew.Text = Convert. ToString (curHoursSum);
rowNew.Cells.Add (celNew);
//7. Празд. часов
celNew = new TableCell ();
celNew.Text = Convert. ToString (curPrazdHours);
rowNew.Cells.Add (celNew);
//8. Факт-Празд.часов
celNew = new TableCell ();
celNew.Text = Convert. ToString (curHoursSum — curPrazdHours);
rowNew.Cells.Add (celNew);
//9. Факт-Празд.часов
celNew = new TableCell ();
if (NormaHours > 0) celNew. Text = Convert. ToString (NormaHours);
rowNew.Cells.Add (celNew);
// добавить строку к таблице
Table1.Rows.Add (rowNew);
}
}
protected void Button1_Click (object sender, EventArgs e)
{
ViewState[" SeltdID" ] = GridView1. SelectedIndex;
//Переход на страницу добавления графика
Response.Redirect («graf_add.aspx»);
}
protected void Button3_Click (object sender, EventArgs e)
{
//Вызываем метод удаления графика
SqlDataSource1.Delete ();
}
protected void Button2_Click (object sender, EventArgs e)
{
ViewState[" SeltdID" ] = GridView1. SelectedIndex;
//Переход на страницу редактирования графика. Передаем один параметр — идентификатор IDGr графика
Response.Redirect («graf_edt.aspx?id=» + GridView1.SelectedDataKey.Value.ToString ());
}
protected void GridView1_Sorted (object sender, EventArgs e)
{
//предварительно очищаем таблицу
Table1.Rows.Clear ();
Label1.Text = «Выберите график в списке» ;
Label1.Visible = true;
}
protected void GridView1_PageIndexChanged (object sender, EventArgs e)
{
//предварительно очищаем таблицу
Table1.Rows.Clear ();
Label1.Text = «Выберите график в списке» ;
Label1.Visible = true;
}
}
}
Файл graf_edt.aspx.cs
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web. Config
using System. Data; //Содержит объект DataSet
using MySql. Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
namespace WebApplication3
{
public partial class WebForm5: System.Web.UI.Page
{
MySqlDataAdapter GrafikDA;
DataSet GrafikDS;
MySqlConnection conn;
String CurIDGr; //значение текущего вновь добавленного в БД графика
String CurSmena, CurGrafPos;
protected void Page_Load (object sender, EventArgs e)
{
SqlDataSource1.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
SqlDataSourceMonths.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
VidWorkSqlDataSource.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
SqlDataSourceLokom.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
if (!IsPostBack)
{
//считываем значения IDGr из параметра URL страницы
CurIDGr = Request. QueryString[" id" ];
//Из БД считываем значения графика
conn = new MySqlConnection (WebConfigurationManager.ConnectionStrings[" GrafikiDBCon" ]. ConnectionString);
conn.Open ();
String sql = «SELECT * FROM grafik WHERE IDGr=» + CurIDGr;
GrafikDS = new DataSet ();
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafik»);
if (GrafikDS.Tables[" grafik" ]. Rows. Count > 0)
{
//ID
TextBox1.Text = CurIDGr;
//год
TextBox2.Text = GrafikDS. Tables[" grafik" ]. Rows[0][" GrYear" ].ToString ();
//месяц
DropDownList1.SelectedValue = GrafikDS. Tables[" grafik" ]. Rows[0][" GrMonth" ].ToString ();
//вид работ
DropDownList2.SelectedValue = GrafikDS. Tables[" grafik" ]. Rows[0][" IDVidWork" ].ToString ();
//локомотив
DropDownList3.SelectedValue = GrafikDS. Tables[" grafik" ]. Rows[0][" IDLokomotiv" ].ToString ();
//начало работы
TextBox3.Text = GrafikDS. Tables[" grafik" ]. Rows[0][" BeginWork" ].ToString ();
}
}
}
protected void Button1_Click (object sender, EventArgs e)
{
String sql;
//Предварительно проверяем, может уже есть такой график в БД
//Создаем соединение с БД
conn = new MySqlConnection (WebConfigurationManager.ConnectionStrings[" GrafikiDBCon" ]. ConnectionString);
conn.Open ();
try
{
//Читаем данные графика из БД
sql = «SELECT * FROM grafik WHERE IDGr=» + TextBox1. Text;
GrafikDS = new DataSet ();
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafik»);
}
catch (Exception ex)
{
Label1.Text = ex. ToString ();
Label1.Visible = true;
conn.Close ();
return;
}
if (GrafikDS.Tables[" grafik" ]. Rows. Count == 0)
{
// Такой график уже есть в БД, добавление невозможно
Label1.Text = «График не найден в БД» ;
Label1.Visible = true;
}
else
{
// график найден в БД
Label1.Visible = false;
//Вызываем метод Update у SqlDataSource1
//В его свойстве UpdateQuery определен запрос Update с привязкой параметров
//к элементам управления. Параметры задаются в событии SqlDataSource1. Updating
SqlDataSource1.Update ();
//Возвращаемся к графику c IDGr=CurIDGr
Response.Redirect («grafik.aspx?id=» + TextBox1. Text);
}
}
protected void Button2_Click (object sender, EventArgs e)
{
//Возвращаемся к графику c IDGr=CurIDGr
Response.Redirect («grafik.aspx?id=» + TextBox1. Text);
}
}
}
Файл graf_add.aspx.cs
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web. Config
using System. Data; //Содержит объект DataSet
using MySql. Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
namespace WebApplication3
{
public partial class WebForm3: System.Web.UI.Page
{
MySqlDataAdapter GrafikDA;
DataSet GrafikDS;
MySqlConnection conn;
String CurIDGr; //значение текущего вновь добавленного в БД графика
String CurSmena, CurGrafPos;
protected void Page_Load (object sender, EventArgs e)
{
if (!IsPostBack)
{
//В поле Год помещаем значение текущего года
TextBox1.Text = DateTime.Now.Year.ToString ();
}
SqlDataSource1.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
SqlDataSource2.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
VidWorkSqlDataSource.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
SqlDataSourceLokom.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
}
protected void Button1_Click (object sender, EventArgs e)
{
String sql;
//Предварительно проверяем, может уже есть такой график в БД
//Создаем соединение с БД
conn = new MySqlConnection (WebConfigurationManager.ConnectionStrings[" GrafikiDBCon" ]. ConnectionString);
conn.Open ();
try
{
//Читаем запись графика из БД
sql = «SELECT * FROM grafik WHERE GrYear=» + TextBox1. Text + «AND GrMonth=» +
DropDownList2.SelectedValue.ToString () + «AND IDVidWork=» + DropDownList1.SelectedValue.ToString () +
" AND IDLokomotiv=" + DropDownList3.SelectedValue.ToString () +
" AND BeginWork='" + TextBox2. Text + «'» ;
GrafikDS = new DataSet ();
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafik»);
}
catch (Exception ex)
{
Label1.Text = ex. ToString ();
Label1.Visible = true;
conn.Close ();
return;
}
if (GrafikDS.Tables[" grafik" ]. Rows. Count > 0)
{
// Такой график уже есть в БД, добавление невозможно
Label1.Text = «Такой график уже есть в БД, добавление невозможно» ;
Label1.Visible = true;
}
else
{
// Такого графика в БД нет. Добавление графика в БД
Label1.Visible = false;
//Вызываем метод Insert у SqlDataSource1
//В его свойстве InsertQuery определен запрос Insert с привязкой параметров
//к элементам управления
SqlDataSource1.Insert ();
//Ещё раз выбираем из БД добавленный график, чтобы определить его IDGr
GrafikDA.Fill (GrafikDS, «grafik»);
if (GrafikDS.Tables[" grafik" ]. Rows. Count > 0)
{
CurIDGr = GrafikDS. Tables[" grafik" ]. Rows[0][" IDGr" ].ToString ();
//Для вновь созданного графика создаем строки в таблице grafikrows
for (int i = 0; i < 8; i++)
{
CurGrafPos = Convert. ToString (i + 1);
CurSmena = Convert. ToString ((i / 2) + 1);
//Вызываем метод Insert у SqlDataSource2
//В его свойстве InsertQuery определен запрос Insert.
// Параметры определяются в событии SqlDataSource2_Inserting
SqlDataSource2.Insert ();
}
//Переход на главную страницу
Response.Redirect («grafik.aspx»);
}
else
{
Label1.Text = «Ошибка. График не найден!» ;
Label1.Visible = true;
}
}
}
protected void SqlDataSource2_Inserting (object sender, SqlDataSourceCommandEventArgs e)
{
//Перед вызовом запроса на вставку программно меняем значение параметра
e.Command.Parameters[" IDGraf" ]. Value = CurIDGr;
e.Command.Parameters[" GrafPos" ]. Value = CurGrafPos;
e.Command.Parameters[" Smena" ]. Value = CurSmena;
}
protected void Button2_Click (object sender, EventArgs e)
{
//Переход на главную страницу
Response.Redirect («grafik.aspx»);
}
}
}
Файл editrow.aspx.cs
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web. Config
using System. Data; //Содержит объект DataSet
using MySql. Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
using System. Drawing;
namespace WebApplication3
{
public partial class WebForm2: System.Web.UI.Page
{
String CurIDGr;
String CurIDGrRow;
String CurIDGRH;
int CurDay;
String CurVal;
MySqlDataAdapter GrafikDA, GrafikDA2;
DataSet GrafikDS;
MySqlConnection conn;
protected void Page_Load (object sender, EventArgs e)
{
Label1.Visible = false;
SqlDataSource1.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
//считываем значения IDGr и IDGrRow из параметров URL веб-страницы
CurIDGrRow = Request. QueryString[" idgr" ];
//Из БД считываем значения графика
conn = new MySqlConnection (WebConfigurationManager.ConnectionStrings[" GrafikiDBCon" ]. ConnectionString);
conn.Open ();
GrafikDS = new DataSet ();
//считываем данные ряда графика
String sql = «SELECT grafikrows. IDGrRow, grafikrows. IDGraf, grafikrows. GrafPos, grafikrows. Smena, grafikrows. IDPerson,» +
" person. LastName, person. FirstName, person. FatherName, person. Tabnom FROM grafikrows LEFT OUTER JOIN person" +
" ON grafikrows. IDPerson = person. IDPerson WHERE grafikrows. IDGrRow=" + CurIDGrRow;
GrafikDA2 = new MySqlDataAdapter (sql, conn);
GrafikDA2.Fill (GrafikDS, «grafikrows»);
if (GrafikDS.Tables[" grafikrows" ]. Rows. Count > 0)
{
CurIDGr = GrafikDS. Tables[" grafikrows" ]. Rows[0][" IDGraf" ].ToString ();
//№ строки в графике
Table2.Rows[0]. Cells[1].Text = GrafikDS. Tables[" grafikrows" ]. Rows[0][" GrafPos" ].ToString ();
//смена
Table2.Rows[1].Cells[1].Text = GrafikDS. Tables[" grafikrows" ]. Rows[0][" Smena" ].ToString ();
//должность
if (Convert.ToInt32(GrafikDS.Tables[" grafikrows" ]. Rows[0][" GrafPos" ]) % 2 == 1)
Table2.Rows[2]. Cells[1].Text = «маш-ст» ;
else
Table2.Rows[2]. Cells[1].Text = «п/м» ;
if (GrafikDS.Tables[" grafikrows" ]. Rows[0][" IDPerson" ].ToString ()≠"")
{
//ФИО (таб. №)
Table2.Rows[3]. Cells[1].Text = GrafikDS. Tables[" grafikrows" ]. Rows[0][" Lastname" ].ToString () + «» + GrafikDS. Tables[" grafikrows" ]. Rows[0][" Firstname" ].ToString ().Substring (0, 1) + «.» + GrafikDS. Tables[" grafikrows" ]. Rows[0][" FatherName" ].ToString ().Substring (0, 1) + «. („+ GrafikDS. Tables[“ grafikrows» ]. Rows[0][" Tabnom" ].ToString () + «)» ;
}
}
//считываем данные графика
sql = «SELECT * FROM grafik LEFT OUTER JOIN vidwork ON grafik. IDVidWork = vidwork. IDVidWork» +
" LEFT OUTER JOIN months ON grafik. GrMonth = months. MonthNum LEFT OUTER JOIN lokomotiv" +
" ON grafik. IDLokomotiv = lokomotiv. LokID WHERE grafik. IDGr=" + CurIDGr;
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafik»);
if (GrafikDS.Tables[" grafik" ]. Rows. Count > 0)
{
//ID
Table1.Rows[0]. Cells[1].Text = CurIDGr;
//год
Table1.Rows[1]. Cells[1].Text = GrafikDS. Tables[" grafik" ]. Rows[0][" GrYear" ].ToString ();
//месяц
Table1.Rows[2].Cells[1].Text = GrafikDS. Tables[" grafik" ]. Rows[0][" MonthNameRu" ].ToString ();
//вид работ
Table1.Rows[3]. Cells[1].Text = GrafikDS. Tables[" grafik" ]. Rows[0][" NameVidWork" ].ToString ();
//локомотив
Table1.Rows[4].Cells[1].Text = GrafikDS. Tables[" grafik" ]. Rows[0][" FullName" ].ToString ();
//начало работы
Table1.Rows[5]. Cells[1].Text = GrafikDS. Tables[" grafik" ]. Rows[0][" BeginWork" ].ToString ();
}
//Определяем количество дней в выбранном месяце
Int32 n = 0;
try
{
n = DateTime. DaysInMonth (Convert.ToInt32(GrafikDS.Tables[" grafik" ]. Rows[0][" GrYear" ]), Convert. ToInt32(GrafikDS.Tables[" grafik" ]. Rows[0][" GrMonth" ])); //количество дней в выбранном месяце
}
catch
{
Label1.Text = «Ошибка при вычислении количества дней в месяце» ;
Label1.Visible = false;
//return;
}
//Заполняем таблицу Table3 с данными за месяц
Table3.Rows.Clear ();
//считываем часовые данные ряда графика
sql = «SELECT * FROM grafikhours WHERE IDGrRow=» + GrafikDS. Tables[" grafikrows" ]. Rows[0][" IDGrRow" ].ToString () + «ORDER BY DayOfMonth» ;
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafikhours»);
TableRow rowNew1, rowNew2;
TableCell celNew;
TextBox txtBox;
String str1;
float Value;
int k = 0;
//Два ряда создаем
rowNew1 = new TableRow (); //для номеров дней
rowNew2 = new TableRow (); //для значений часов работы
for (int i = 0; i < n; i++) //для каждого числа месяца
{
// верхний ряд — день месяца
celNew = new TableCell ();
celNew.Text = Convert. ToString (i + 1);
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew1.Cells.Add (celNew);
// нижний ряд — значение
celNew = new TableCell ();
if (GrafikDS.Tables[" grafikhours" ]. Rows. Count == 0)
{
// в БД для данной строки графика данных нет, потому ставим пустую строку
str1 = «» ;
}
else
{
//в БД есть значение для этого дня
if ((i+1) ≠ Convert. ToInt32(GrafikDS.Tables[" grafikhours" ]. Rows[k][" DayOfMonth" ].ToString ()))
{
//в БД нет данных по этому дню
str1 = «» ;
}
else
{
//в БД есть данные по дням. Пытаемся найти в таблице БД значение для j-го дня
str1 = GrafikDS. Tables[" grafikhours" ]. Rows[k][" GrVal" ].ToString ();
//проверка введенного значения на соответсвие формату
if (str1 ≠ «Х»)
{
if (float.TryParse (GrafikDS.Tables[" grafikhours" ]. Rows[k][" GrVal" ].ToString ().Replace («/н», «»), out Value))
{
Label1.Visible = false;
}
else //Присутствует буква.
{
str1 = «» ;
Label1.Text = «Значение часов работы не соотвествует формату» ;
Label1.Visible = true;
}
}
if (k < GrafikDS. Tables[" grafikhours" ]. Rows. Count — 1) k++;
}
}
//добавляем текстовое поле в ячейку со значением отработанных часов
txtBox = new TextBox ();
txtBox.Text = str1;
txtBox.Width = 30;
txtBox.BackColor = Color. Cyan;
txtBox.ID = «txtBox» + (i+1);
txtBox.AutoPostBack = true;
txtBox.TextChanged += new System. EventHandler (this.txtBox_TextChanged); //определяем обработчик события
celNew.Controls.Add (txtBox);
celNew.HorizontalAlign = HorizontalAlign. Center;
rowNew2.Cells.Add (celNew);
}
//добавляем сформированные ряды в таблицу
Table3.Rows.Add (rowNew1);
Table3.Rows.Add (rowNew2);
}
protected void Button3_Click (object sender, EventArgs e)
{
//Переход на страницу выбора сотрудника
Response.Redirect («persget.aspx?idgr=» + CurIDGrRow);
}
protected void Button1_Click (object sender, EventArgs e)
{
//Нажатие кнопки Применить. Сохраняем изменения. Возвращаемся к графику c IDGr=CurIDGr
Response.Redirect («grafik.aspx?id=» + CurIDGr);
}
protected void txtBox_TextChanged (object sender, EventArgs e)
{
String sql;
//Обработчик изменения значения часов в таблице
if ((sender as TextBox).ID.Substring (0, 6) == «txtBox»)
{
//Извлекаем из ID TextBox-а, число, а также берем его значение
CurDay = Convert. ToInt32(((sender as TextBox).ID.Substring (6)));
CurVal = (sender as TextBox).Text.Trim ().ToUpper ();
//приводим обозначения к единому формату
CurVal = CurVal. Replace («X», «Х»); //замена английской буквы на русскую
CurVal = CurVal. Replace («/Н», «/н»); //меняем большую Н на маленькую
(sender as TextBox).Text = CurVal;
//Проверяем наличие записи в БД
try
{
conn = new MySqlConnection (WebConfigurationManager.ConnectionStrings[" GrafikiDBCon" ]. ConnectionString);
conn.Open ();
GrafikDS = new DataSet ();
//Читаем значение из БД
sql = «SELECT * FROM grafikhours WHERE IDGrRow=» + CurIDGrRow + «AND DayOfMonth=» + CurDay;
GrafikDA = new MySqlDataAdapter (sql, conn);
GrafikDA.Fill (GrafikDS, «grafikhours»);
}
catch (Exception ex)
{
Label1.Text = «Ошибка при записи данных в БД. «+ ex. ToString ();
Label1.Visible = true;
conn.Close ();
return;
}
if (GrafikDS.Tables[" grafikhours" ]. Rows. Count == 0)
{
//И значение часов не пустое
if (CurVal ≠ «»)
{
//Записи нет, поэтому добавляем ее в БД
SqlDataSource1.Insert ();
}
}
else
{
//Запись есть
//новое значение пустое. поэтому удаляем его в БД
if (CurVal == «»)
{
CurIDGRH = GrafikDS. Tables[" grafikhours" ]. Rows[0][" IDGRH" ].ToString ();
SqlDataSource1.Delete ();
}
else
{
//новое значение не пустое, поэтому обновляем её в БД
CurIDGRH = GrafikDS. Tables[" grafikhours" ]. Rows[0][" IDGRH" ].ToString ();
SqlDataSource1.Update ();
}
}
}
}
protected void SqlDataSource1_Inserting (object sender, SqlDataSourceCommandEventArgs e)
{
//Перед вызовом запроса на вставку программно меняем значение параметра
e.Command.Parameters[" IDGrRow" ]. Value = CurIDGrRow;
e.Command.Parameters[" DayOfMonth" ]. Value = CurDay;
e.Command.Parameters[" GrVal" ]. Value = CurVal;
}
protected void SqlDataSource1_Updating (object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters[" IDGRH" ]. Value = CurIDGRH;
e.Command.Parameters[" GrVal" ]. Value = CurVal;
}
}
}
Файл persget.aspx.cs
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web. Config
using System. Data; //Содержит объект DataSet
using MySql. Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
namespace WebApplication3
{
public partial class WebForm4: System.Web.UI.Page
{
String CurIDGrRow;
protected void Page_Load (object sender, EventArgs e)
{
CurIDGrRow = Request. QueryString[" idgr" ];
SqlDataSource1.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
SqlDataSource2.ConnectionString = WebConfigurationManager. ConnectionStrings[" GrafikiDBCon" ]. ConnectionString;
}
protected void Button1_Click (object sender, EventArgs e)
{
int val;
if (int.TryParse (TextBox1.Text, out val))
{
//В качестве фильтра задано число — табельный номер
SqlDataSource1.FilterExpression = «Tabnom=» + TextBox1. Text;
}
else
{
//В качестве фильтра задана строка — фамилия
SqlDataSource1.FilterExpression = «LastName like '» + TextBox1. Text + «%'» ;
}
}
protected void Button3_Click (object sender, EventArgs e)
{
Response.Redirect («persget.aspx?idgr=» + CurIDGrRow);
}
protected void Button2_Click (object sender, EventArgs e)
{
//Вызываем метод обновления для изменения сотрудника в строке графика
//Параметры и их связь с ЭУ заданы внутри свойства UpdateQuery
SqlDataSource2.Update ();
//Переход на страницу выбора сотрудника
Response.Redirect («editrow.aspx?idgr=» + CurIDGrRow);
}
protected void SqlDataSource2_Updating (object sender, SqlDataSourceCommandEventArgs e)
{
//Перед вызовом запроса на обновление программно меняем значение параметра
e.Command.Parameters[" IDGrRow" ]. Value = CurIDGrRow;
}
}
}