Автоматизация процесса составления графиков работы экипажей подвижного состава трамвайного депо
Разработка автоматизированной системы, предназначенной для составления месячных графиков работы экипажей подвижного состава трамвайного депо. Формирования отчетных документов, используемых подразделениями внутри предприятия. Описание алгоритмов работы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 06.04.2013 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Министерство образования и науки РФ
Государственное образовательное учреждение высшего
профессионального образования
«ИЖЕВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Программное обеспечение»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к выпускной квалификационной работе бакалавра на тему:
«Автоматизация процесса составления графиков работы экипажей подвижного состава трамвайного депо»
Дипломник М.В. Калужских студент гр. 8-78-11
Руководитель М.Л. Романов
Нормоконтролер: В.Я. Баранова
Зав. кафедрой ПО И.О. Архипов к.т.н., доцент
Ижевск 2010
Реферат
Пояснительная записка состоит из __ страниц, включающих 14 рисунков и 6 таблиц, позволяющих наиболее полно составить представление о предметной области и решаемых задачах.
Ключевые слова: база данных, система составления графиков, база данных, печатные формы, графики.
Система Составления графиков работы подвижного состава трамвайного депо, далее просто система, предназначена для автоматизации процесса составления месячных графиков работы экипажей подвижного состава трамвайного депо, для формирования различного вида отчетных документов, используемых различными подразделениями внутри предприятия.
Пояснительная записка описывает одну из подсистем системы составления графиков, а именно автоматизации процесса составления графиков работы экипажей подвижного состава трамвайного депо.
Введение
В настоящее время направление автоматизированного проектирования, наряду с другими направлениями компьютерных и информационных технологий переживает период подъема. В значительной степени это связано с тем, что возможности современных вычислительных систем обеспечивают широкий круг деятельности по самым разным направлениям. Существует огромная совокупность направлений деятельности, требующих автоматизации. Для многих из них разработан мощный математический аппарат, однако реализация, как правило, выполняется для задач обобщенного характера, не учитывающих специфичных требований той или иной области применения. Такое положение приводит к тому, что конкретные задачи автоматизации решаются на местах, с учетом конкретных требований и не получают широкого распространения. Попытка применения программы для обобщенной задачи или программы из смежной области деятельности связана со значительными финансовыми затратами на их приобретение и внедрение.
Данная ситуация наблюдается и в задаче составления графиков работы подвижного состава предприятий общественного транспорта. Эта задача является частным случаем задачи составления расписаний и различается для разных видов транспорта.
В настоящее время на предприятиях общественного транспорта города Ижевска рассматриваемая задача не автоматизирована - все графики составляются вручную квалифицированным персоналом: начальниками маршрутов или инженерами по эксплуатации, что на мой взгляд нерационально. Вместе с тем, на предприятии МУП ИжГЭТ учет персонала, работающего в составе экипажей подвижного состава, планирование технических осмотров и ремонтов подвижного состава, составление расписаний движения подвижного состава ведется на компьютерах, в системе автоматизированного планирования движения. В данной ситуации, внедрение системы составления графиков работы подвижного состава трамвайного депо является логичным направление развития существующей системы.
Внедрение в эксплуатацию рассматриваемой системы позволит сократить время составления графиков в сотни раз (на составление одного графика у начальника маршрута уходит от одного до трех дней, а ЭВМ с помощью данной подсистемы формирует тот же график менее чем за минуту) и освободить инженерный персонал от этой работы, поручив ее любому пользователю ЭВМ, как то оператор ЭВМ или техник по учету рабочего времени.
Все эти предпосылки и послужили толчком к написанию системы составления графиков работы подвижного состава трамвайного депо.
1. Разработка системы составления графиков работы подвижного состава трамвайного депо
1.1 Обоснование целесообразности разработки системы
1.1.1 Назначение системы составления графиков работы подвижного состава трамвайного депо
Система составления графиков работы подвижного состава трамвайного депо, далее просто система, предназначена для автоматизации процесса составления месячных графиков работы экипажей подвижного состава трамвайного депо, в рамках трамвайного депо МУП ИжГЭТ, для формирования различного вида отчетных документов, используемых различными подразделениями внутри предприятия.
Данная система разрабатывается в рамках единой системы автоматизированного планирования движения.
В настоящее время процесс составления рассматриваемых графиков абсолютно не автоматизирован, все работы ведутся вручную, хранятся в единственном бумажном экземпляре. Вместе с тем, на предприятии МУП ИжГЭТ учет персонала, работающего в составе экипажей подвижного состава, планирование технических осмотров и ремонтов подвижного состава, составление расписаний движения подвижного состава ведется на компьютерах, что позволяет получить для рассматриваемой задачи все исходные данные в электронном виде, минуя стадию ручного ввода данных.
С внедрением системы ожидается снижение трудоемкости и повышение скорости и качества работ по составлению графиков, резкое уменьшение количества допускаемых ошибок и освобождение от этой рутинной работы начальников маршрутов и инженеров по эксплуатации. Все это повышает производительность труда работников, и соответственно, эффективность работы парка в целом.
Выходными документами в системе служат месячные графики работы экипажей подвижного состава утвержденного образца и месячные наряды водителей.
Все документы соответствуют утвержденным образцам.
Время формирования и печати отчетных документов зависит от объема базы данных, обрабатываемого периода времени и общей производительности вычислительной системы (ЭВМ).
Конечными пользователями системы являются работники отдела эксплуатации трамвайного депо и отдела эксплуатации управления МУП ИжГЭТ.
Разработанная система обеспечивает выполнение следующих задач:
1) заполнение и корректировку БД по подвижному составу трамвайного депо;
2) автоматизация процесса составления графиков работы экипажей подвижного состава;
3) формирование и печать необходимых документов.
Для разработки системы использованы соответствующие нормативные документы по составлению графиков работы экипажей подвижного состава общественного электротранспорта, действующие положения, инструкции и руководства по использованию рабочего времени.
1.1.2 Обоснование цели создания подсистемы
Основанием для разработки системы является облегчение и ускорение труда работников отдела эксплуатации трамвайного депо и, как следствие, повышение производительности труда в нем.
Система предназначена для автоматизированного составления графиков работы экипажей подвижного состава трамвайного депо и оперативного обеспечения работников отдела эксплуатации месячными нарядами водителей.
Внедрение подсистемы позволяет:
1) существенно снизить трудоемкость процесса составления графиков;
2) повысить производительность труда работников отдела эксплуатации;
3) повысить качество и скорость получения необходимых данных.
Исходя из вышеперечисленных пунктов, можно сделать вывод, что внедрение данной подсистемы является не только желаемым, но и необходимым. Это повысит качество работы сотрудников отдела эксплуатации, уменьшит их затраты времени на составление графиков и нарядов водителей, что естественным положительным образом отразиться на работе отдела эксплуатации в целом.
1.1.3 Обоснование состава решаемых задач
Система должна обеспечить выполнение следующих операций:
1) импорт исходных данных из других подсистем системы, их корректировку;
2) проверка импортированных данных на корректность и их передача в информационную базу;
3) ввод справочной информации для составления графика (вид сменности, кол-во рабочих смен в день и т.д.);
4) ограничение доступа к данным по паролю;
5) выполнение запросов к информационной базе на составление графиков и нарядов водителей;
6) выдача графиков и нарядов водителей на принтер, в файл или на дисплей;
7) выполнение резервного копирования информационной базы для предотвращения потери введенных данных;
8) предоставление пользователям системы удобного интерфейса.
Добавление таких моментов, как корректность информации и стандартность печатных форм диктуется соответствующими нормативными актами предприятия. Задачи по удобному интерфейсу и ограничению доступа ставятся, прежде всего, для облегчения освоения программы и предотвращения несанкционированного доступа к данным.
1.2 Аналитический обзор
Проведенные мною исследования в области создания программного обеспечения для создания графиков работы подвижного состава показали, что на данный момент (июнь 2010), чрезвычайно мало программных продуктов, решающих задачи из данной предметной области и ни один из найденных программных продуктов не может быть применен к системе городского электротранспорта.
1.3 Основные требования к системе
1.3.1 Основные цели создания системы
Основополагающей причиной создания системы Составления графиков работы подвижного состава трамвайного депо, является большая потребность в автоматизации процесса составления таких графиков в отделе эксплуатации трамвайного депо, и, как следствие, цель - автоматизация процесса составления графиков работы подвижного состава трамвайного депо.
Работа по составлению графиков очень утомительна и рутинна и выполняется непосредственно человеком, что дает малую производительность и многочисленные недоработки и ошибки в расчетах. Эти ошибки связаны как с монотонностью и однообразностью работы, так и с человеческим фактором. Автоматизация этих механизмов дает повышение производительности, при чем не только одного сотрудника, непосредственно занятого составлением графиков, но и отдела эксплуатации в целом, а также значительное уменьшение количества ошибок в расчетах.
Кроме вышеуказанной цели создания системы можно выделить еще ряд целей:
1) хранение, возможность просмотра и распечатки ранее составленных графиков;
2) формирование печатных форм документов (графиков, нарядов водителей) в соответствии с установленным стандартом;
1.3.2 Функциональное назначение системы
Функциональным предназначением системы является как можно более полная автоматизация процессов составления графиков работы подвижного состава трамвайного депо. К основным функциям системы можно отнести следующие:
1) автоматическое составление графиков работы экипажей подвижного состава на основании данных, импортированных из других систем;
2) накопление составленных графиков и их просмотр;
3) формирование и выдача печатных форм месячных нарядов водителей;
4) достижение полного и дружественного интерфейса с пользователем системы независимо от уровня его подготовленности.
1.3.3 Условия эксплуатации системы
К особенностям эксплуатации разрабатываемой системы можно отнести следующие условия работы:
1) система работает с большими объемами данных, что требует высокой скорости при обработке команд пользователя;
2) разнообразие дополнительных функций, реализуемых системой, требует грамотно и детально проработанного интерфейса;
3) в виду того, что система хранит ряд важной информации, необходимо ограничить доступ к таблицам базы данных.
Система должна отвечать следующим условиям эксплуатации:
1) все пользователи системы должны иметь собственный уровень доступа в зависимости от решаемых задач;
2) работа пользователя с системой должна отличаться простотой, дружественностью и надежностью, так как уровень подготовленности сотрудников, работающих с системой, может сильно отличаться;
3) подсистема должна работать на большинстве аппаратного и программного обеспечения и настраиваться на большинство типов внешних устройств, таких как принтер и графический адаптер.
Подготовленность пользователя не играет большой роли при работе с системой, но скорость работы пары пользователь-подсистема при неопытности или неподготовленности пользователя может резко упасть. Поэтому для повышения производительности работы желательно наличие у пользователя навыков работы в ОС Windows.
1.3.4 Требования к функциональной структуре системы
Функциональная структура системы составления графиков работы подвижного состава трамвайного депо представлена на рис.1.
Она представляет собой комплекс взаимосвязанных частей и средств передачи данных между ними.
Можно выделить следующие части системы:
1) блок “Импорт исходных данных” - предназначен для импорта из других подсистем системы таких данных, как состав экипажа подвижного состава, поездные расписания, даты осмотров;
2) блок “Корректировка импортированных данных” - осуществляет изменение/просмотр импортированных данных;
3) блок “База данных” - файл базы данных.
4) блок “Диспетчер резервного копирования и восстановления после сбоев” - выполняет резервное копирование файлов базы данных для обеспечения возможности восстановления информации.
5) блок “Резервная копия базы данных” - архив файлов базы данных на выделенном сервере или в месте, указанном пользователем при выполнении резервного копирования.
6) блок “Файл настроек системы” - файл с различной конфигурационной информацией.
7) блок “Запрос данных для составления графика” - выполняет запрос к базе данных на необходимую для составления графика информацию и на основе нее составляет месячный график работы подвижного состава заданного маршрута.
8) блок “Просмотр и корректировка” - просмотр и корректировка составленного графика; просмотр графика из архива; просмотр и корректировка календарных данных.
9) блок “Документ” - управляет печатью составленного или взятого из архива графика.
10) блок “Файл календарных данных” - файл, хранящий данные о календаре текущего месяца с указанием выходных (праздничных) и будних дней.
11) блок “Архив графиков” - архив файлов составленных графиков.
Рис. 1
1.3.5 Требования к техническому обеспечению
Техническое обеспечение систем зачастую бывает несколько завышенным, чтобы сделать так называемый запас надежности. Для разработанной системы будем руководствоваться в первую очередь минимумом, при котором система сохраняет свою нормальную работоспособность при средней производительности.
Так как система работает с большими объемами данных, находящимися на жестком диске ПК, то наиболее критичными будут требования к той аппаратной части, которая напрямую отвечает за скорость обработки данных.
Таким образом, выделяются следующие требования к техническому обеспечению системы:
1) рабочее место должно быть оснащено персональным компьютером типа IBM PC или любым совместимым с ним;
2) персональная ЭВМ должна иметь процессор типа Intel или совместимый с ним (не ниже Pentium 100);
3) оперативная память должна составлять не менее 16 Мб, рекомендуемый объем оперативной памяти - 32 Мб;
4) жесткий диск должен иметь свободное пространство не
5) менее 10 Мб;
6) для удобства работы желательно иметь манипулятор типа «мышь»;
7) интерфейс системы настроен на разрешение 800Х600, поэтому рекомендуется наличие видеоадаптера поддерживающего данный режим;
8) для печати документов необходимо наличие принтера формата А4.
1.3.6 Требования к информационному обеспечению
Информационное обеспечение системы подразумевает совокупность информации, необходимой и достаточной для нормального функционирования подсистемы и выполнения подсистемой возложенных на нее функций и задач. Функциями информационного обеспечения являются определение оптимальных объемов информации и оптимальной структуры данных, своевременное обновление и обслуживание данных, направление потоков данных.
Информационное обеспечение должно обладать развитой структурой и связями внутри системы, с возможностью установления связей с внешними системами. Задачи подсистемы характеризуются достаточно большими объемами информации. Поэтому информационная база и средства ее обслуживания должны способствовать максимально быстрому поиску необходимых данных, нахождению взаимосвязанных данных.
Информационная база должна содержать массивы, описывающие следующие кадровые данные:
1) данные об экипаже подвижного состава (водитель, кондуктор);
2) данные о подвижном составе (с разбиением по маршрутам);
3) данные о поездных расписаниях;
4) данные о зарегистрированных пользователях системы.
При проектировании информационной базы необходимо учесть следующие моменты:
1) при разработке структуры баз данных, использовать метод реляционного моделирования;
2) логические структуры базы данных не должны зависеть от структуры носителя;
3) открытость, модифицируемость и модульность (наращиваемость) структуры базы данных и самой базы;
Таким образом, основными требованиями к информационному обеспечению являются:
1) достоверность и полнота информации, необходимой для решения задач подсистемы и выдаваемой по запросам пользователей;
2) высокая эффективность методов и средств сбора данных, хранения, накопления, обновления, поиска и отображения информации;
3) простой и удобный интерфейс с пользователем для доступа к данным информационной базы;
4) авторизация работы с данными с различным уровнем доступа, для устранения возможности несанкционированного доступа.
1.3.7 Требования к программному обеспечению
Главным требованием системы составления графиков работы подвижного состава трамвайного депо является наличие на ЭВМ BDE (Borland Database Engine), который является управляющей для разработанной подсистемы.
Эксплуатация системы составления графиков работы подвижного состава трамвайного депо возможна только при соблюдении следующих требований к программному обеспечению:
1) персональный компьютер должен работать под управлением ОС Windows 9x /NT/2000/XP или совместимой с ней;
2) необходимо наличие BDE (версии не ниже 5.01)
3) все устройства должны быть оснащены драйверами для корректной работы с ними (принтер, монитор, мышь);
4) если работа с подсистемой осуществляется в локальной сети, то необходим один из следующих протоколов для работы: TCP/IP, SPX или NetBIOS.
Этот перечень обязательных требований может быть дополнен сервисными программными продуктами для облегчения работы и/или повышения производительности.
1.3.8 Перспективность подсистемы, возможности ее развития
Разработанная система автоматизирует лишь часть работ, однако, только это уже освобождает специалистов отдела эксплуатации от рутинной работы, позволяя заниматься им вместо нее аналитической деятельностью. Разработанная система может найти свое применение и в других видах общественного транспорта как то троллейбусный и автобусный.
Гибкость и настраиваемость системы дает ей широкие перспективы развития (для реализации выполнения новой функции системы, нужно лишь добавить соответствующий программный модуль).
1.4 Основные технические решения проекта системы
1.4.1 Описание организации информационной базы
К информационной базе предъявляются особенно жесткие требования, так как именно информационная база является главным источником данных в подсистеме. Поэтому информационная база должна обеспечивать максимально быстрый доступ к имеющимся данным, обновление этих данных, защиту от несанкционированного доступа.
База данных разрабатываемой системы состоит из совокупности таблиц, которые несут основную информационную нагрузку и являются хранилищем информации. Пользователь имеет доступ к таблицам и имеет право изменять, добавлять, удалять, корректировать, просматривать информацию из таблиц, если у него соответствующим образом настроены права доступа.
Таблицы хранятся на жестком диске в файле, связь и работу с ними осуществляет BDE.
В разработанной системе определены следующие таблицы:
1) таблица маршрутов (marshruty.dbf);
2) таблица поездных расписаний (raspis.DBF);
3) таблица трамваев (tramv.DBF);
4) таблица экипажей трамваев (workers.DBF);
5) таблица зарегистрированных пользователей (Users.DBF);
Структура таблиц базы данных, с описанием информационных полей и их назначения приведена в приложении 1.
Взаимосвязь таблиц показана на рис.2. Форматом баз данных выбран формат баз данных dBase IV. Этот выбор обоснован наличием эффективных средств BDE для работы с данными, такими как:
1) встроенная система оптимизации работы с базами данных;
2) поддержка национальных символов;
3) система визуальных компонентов для интерфейса пользователя.
1.4.3 Описание системы программного обеспечения
Программное обеспечение в системе Составления графиков работы подвижного состава трамвайного депо не подразделяется на какие-либо части.
Разработанная система является самостоятельным приложением, работающим под управлением операционной системы семейства Microsoft Windows (при наличии BDE).
Все алгоритмы разработанной системы написаны в среде программирования Delphi (также все экранные формы, отчеты).
Отладка написанной подсистемы производилась непосредственно в среде Delphi 7.0.
Рис. 2
2. Разработка подсистемы - Автоматизация процесса составления графиков работы экипажей подвижного состава трамвайного депо
2.1 Описание постановки задачи
2.1.1 Характеристика задачи
В настоящее время процесс составления графиков абсолютно не автоматизирован. Графики составляются вручную на единственном для каждого маршрута бумажном носителе, что затрудняет их хранение и анализ.
Подсистема «Составления графиков работы подвижного состава» выполняет все необходимые действия для составления месячного графика работы подвижного состава выбранного маршрута, его сохранение в файл на выбранном пользователем носителе и печать составленного графика.
2.1.2 Входная информация
На вход задачи могут поставлены данные из следующих таблиц БД:
1) таблица маршрутов (marshruty);
2) таблица трамваев (tramv);
3) таблица поездных расписаний (raspis);
4) таблица экипажей трамваев (workers);
5) таблица зарегистрированных пользователей (users);
На вход задачи так же подается файл календарных данных (vocations).
2.1.3 Выходная информация
Выходной информацией данной подсистемы являются графики работы подвижного состава выбранного маршрута, структура которых представлена на рис. 3.
Рис. 3
2.1.4 Математическая постановка задачи
График работы экипажей ПС представим в виде матрицы Gm,n, где
m - число столбцов матрицы, соответствующее количеству дней в месяце;
n - число строк, соответствующее кол-ву единиц подвижного состава.
Элементами данной матрицы являются кортежи, соответствующие поездным расписаниям, представлены в формуле 1.
Gm,n = <N, K>, (1)
где Gm,n.N - начало работы водителя, по данному расписанию (в мин.);
Gm,n.K - конец работы водителя по данному расписанию (в мин.).
Все доступные расписания составляют множество R = {Ri},
где i = 1..m.
Учитывая приведенные выше обозначения, определим условия, выполнение которых определяет правильно составленный график:
Любой столбец матрицы G составлен из элементов множества R таким образом, что любой элемент Ri встречается в данном столбце только один раз.
Данное условие определяется тем фактом, что в один день на линии не могут работать по одному расписанию несколько (более одного) трамваев.
Для всех элементов матрицы G должно выполняться:
Gi,j.N = Gi-1,j.K - 840 (2)
где i = 1..m;
j = 1..n.
Данное условие определяется тем фактом, что промежуток между рабочими сменами водителей должен быть не менее 10 часов.
Для всех строк матрицы G должно выполняться:
(3)
2.2 Описание алгоритма
2.2.1 Назначение и характеристика алгоритма
Алгоритм предназначен для составления месячного графика работы экипажей подвижного состава, соответствующего требованиям.
2.2.2 Используемая информация
При решении задачи используется информация о количестве единиц ПС обрабатываемого маршрута, о поездных расписаниях данного маршрута и их количестве.
2.2.3 Результаты решения
В результате решения данного алгоритма всем экипажам ПС обрабатываемого маршрута на каждый день месяца будет установлено поездное расписание с учетом требований.
2.2.4 Алгоритм решения
Введем следующие переменные:
R - список расписаний данного маршрута;
R.D - продолжительность работы водителя по данному расписанию;
DL - список значений отработанного водителями времени;
DL.S - отработанное водителем время;
DL.N - порядковый номер водителя;
G - составляемый график, представляющий собой матрицу размерностью Nd x Nr, элементами которой являются значения из R;
Nr - количество водителей;
Nd - количество дней в обрабатываемом месяце;
tek, i - вспомогательные переменные.
1. Заполнить R;
2. Упорядочить R по убыванию Ri.D;
3. tek::= 1;
4. DLi.S::= 0; DLi.N::= i, для i = 1..Nr;
5. Упорядочить DL по возрастанию DLi.S;
6. Gtek,i::= RDli.N, для i = 1..Nr;
7. Упорядочить DL по возрастанию DLi.N;
8. DLi.S::= DLi.S + Gtek,i.D;
9. tek::= tek + 1;
10. Если tek Nd, то переход к п.4;
11. Конец.
2.3 Описание программы
2.3.1 Функциональное назначение
Описываемая программа предназначена для автоматизации процесса составления месячных графиков работы подвижного состава трамвайного депо. Программа предназначена для автоматизации работы сотрудников отдела эксплуатации трамвайного депо, занятых составлением графиков.
Программа выполняет автоматическое составление месячных графиков работы подвижного состава.
Для выполнения программы необходимы:
1) компьютер типа IBM PC или любым совместимым с ним, имеющий процессор типа Intel или совместимый с ним (не ниже Pentium 100);
2) оперативная память должна составлять не менее 16 Мб;
3) жесткий диск должен иметь свободное пространство не
менее 10 Мб;
4) манипулятор типа «мышь»;
5) видеоадаптер и монитор, поддерживающие разрешение 800х600 пиксел;
6) для печати документов необходимо наличие принтера формата А4.
7) набор библиотек Borland Database Engine (BDE) версии 5.0 или выше.
2.3.2 Описание информации
На вход задачи могут поставлены данные из следующих таблиц БД:
1) таблица маршрутов (marshruty);
2) таблица трамваев (tramv);
3) таблица поездных расписаний (raspis);
4) таблица экипажей трамваев (workers);
5) таблица зарегистрированных пользователей (users);
На вход задачи так же подается файл календарных данных (vocations).
Выходной информацией данной задачи являются графики работы подвижного состава выбранного маршрута.
2.3.3 Используемые подпрограммы
Модуль AllViewForm.pas:
FormActivate - установление связи с таблицами БД при отображении формы;
FormClose - закрытие таблиц по завершению работы с формой;
MarshNoComboChange - смена маршрута, по которому просматриваются данные.
Модуль DataForAllView.pas:
Подпрограммы отсутствуют.
Модуль DateFunc.pas:
mdy2date - строковое представление даты из численного;
DayOfTheWeek - получение дня недели по дате;
Date2julian - получение даты в числовом представлении из строкового.
Модуль GraphOKForm.pas:
StartBtnClick - составление графика.
Модуль MainForm.pas:
MonthFilling - заполнение календаря текущего месяца;
DayAdd - добавление(удаление) выходного дня в календаре;
FormShow - запуск аутентификации, установка состояния элементов управления формы в зависимости от подключившегося пользователя;
MarshNoComboChange - изменение маршрута составления графика;
N2Click - вызов справки из меню;
FormCreate - загрузка сохраненного календаря или его создание при открытии формы;
YearBClick - смена года в календаре;
MonthBClick - смена месяца в календаре;
McalendarDrawCell - прорисовка ячейки календаря;
McalendarMouseUp - добавление/удаление выходного дня в календаре «мышью»;
FormClose - закрытие формы, сохранение календаря;
McalendarKeyPress - добавление/удаление выходного дня в календаре по нажатию клавиши «пробел»;
N1Click - запуск формы редактирования зарегистрированных пользователей;
N15Click - импорт расписаний;
N18Click - просмотр таблицы «Расписания»;
N19Click - просмотр таблицы «Работники»;
N16Click - импорт данных об экипажах ПС;
FormActivate - загрузка доступных маршрутов при активации формы;
N3Click - просмотр всей хранящейся в БД информации;
N17Click - импорт данных о ПС;
N20Click - просмотр данных о ПС;
OKBtnClick - запуск формы составления графиков.
Модуль RaspViewForm.pas:
Button1Click - чтение списка доступных маршрутов при загрузке формы;
MarshNoComboChange - выборка расписаний в соответствии с выбранным маршрутом;
FormClose - закрытие таблицы «Расписания» при закрытии формы.
Модуль TrollViewForm.pas:
FormActivate - чтение списка доступных маршрутов при загрузке формы;
FormClose - закрытие таблицы «Трамваи» при закрытии формы;
MarshNoComboChange - выборка расписаний в соответствии с выбранным маршрутом.
Модуль UVocations.pas:
FindVoc - выяснение статуса дня (выходной/рабочий) в календаре;
AddVoc - добавление выходного дня в календарь;
DelVoc - удаление выходного дня из календаря;
SaveVoc - сохранение календаря в файл;
LoadVoc - загрузка календаря из файла.
2.3.4 Описание логики
Логика программы приведена в виде укрупненной схемы программы, представленной на рис. 4.
Схема подсистемы «Автоматизация процесса составления графиков работы экипажей подвижного состава трамвайного депо»
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Рис. 4
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Продолжение рис. 4
2.4 Описание контрольного примера
2.4.1 Назначение
Данный контрольный пример служит для проверки корректности работы подсистемы «Автоматизации процесса составления графиков работы экипажей подвижного состава трамвайного депо».
2.4.2. Исходные данные
Пусть в таблице «Пользователи» БД хранится информация о зарегистрированных пользователях, как представлено в табл. 1.
Таблица 1
Зарегистрированные пользователи подсистемы
Сокращенное имя |
Пароль (зашифрованный) |
Фамилия |
Имя |
Отчество |
|
albina |
yw7-wOURkU |
Будина |
Альбина |
Юрьевна |
|
farit |
w0agTm4jEd |
Шакиров |
Фарит |
Исмагилович |
|
root |
fg4q7PqhY4 |
Флейшман |
Андрей |
Рейнгольдович |
Запустим программу. В ответ на запрос имени пользователя введем root, а в ответ на запрос пароля введем «ibNr0Er=GN». В результате на экран должна быть выведена основная форма программы, со всеми доступными к использованию пунктами меню. При выборе пункта меню `Админ' должно быть показано содержимое таблицы «Пользователи» в соответствии с табл.1.
В основной форме программы должен быть показан календарь на текущий месяц (июнь), причем даты, соответствующие дням недели «суббота» и «воскресенье» должны быть помечены красным цветом.
Пусть данные для импорта из других подсистем системы представлены в виде текстовых файлов следующего содержания:
1) Данные о работниках, поставляемые подсистемой «Кадры»:
239 4 3305 Юшков 35335 Шамшутдинова
239 4 2585 Медведев 35297 Русских
268 4 3081 Пешков 35123 Широбокова
268 4 2738 Сунцова 35104 Никитина
283 4 3869 Ешкеева 35003 Ильин
283 4 3516 Михайлов 35121 Мокрушина
287 4 3078 Коземаслова 35341 Елисеева
287 4 3071 Званская 35072 Чухлова
257 4 2672 Корепанов 35235 Шункова
257 4 3830 Мамилова 35060 Пчельникова
294 4 3208 Малых 35001 Кузина
294 4 2664 Оглоблин 35037 Хлыбова
331 4 3655 Кузьмин 35285 Вьюшкова
331 4 3012 Новоселов 35244 Романова
237 4 3099 Иванов 35999 Петров
237 4 3328 Сидельникова 35090 Шибаева
2) Данные о поездных расписаниях, поставляемые подсистемой «Расписания»:
5 101.10 06:09 19:40 11:57 1
5 102.10 05:31 19:18 11:54 0
5 103.10 05:45 19:32 11:51 0
5 104.10 05:59 19:46 11:54 0
5 105.10 06:12 20:00 11:56 0
5 106.10 06:27 19:29 11:10 0
5 107.10 05:55 19:03 10:24 0
5 108.10 05:55 19:03 10:24 0
5 101.11 06:09 19:40 11:57 0
5 102.11 05:31 19:18 11:54 0
5 103.11 05:45 19:32 11:51 0
5 104.11 05:59 19:46 11:54 0
5 105.11 06:12 20:00 11:56 1
5 106.11 06:27 19:29 11:10 0
5 107.11 05:55 19:03 10:24 0
5 108.11 05:55 19:03 10:24 0
3) Данные о подвижном составе, поставляемые подсистемой «Подвижной состав»:
4 239 1 9 17 25
4 268 2 10 18 26
4 283 3 11 19 27
4 287 4 12 20 28
4 257 5 13 21 29
4 294 6 14 22 30
4 331 7 15 23 0
4 237 8 16 24 0
Произведем импорт данных из приведенных выше файлов. После этого, данные должны быть занесены в поля таблиц «Работники», «Расписания» и «Трамваи».
В основной форме, с помощью выпадающего списка «Маршрут» выберем значение «4» и нажмем кнопку «ОК». На экран должна быть выведена форма составления графиков. В данной форме нажмем кнопку «Старт», после чего должна быть успешно проведена проверка данных на целостность и составлен график работы подвижного состава маршрута №4 на июнь месяц, соответствующий.
Заключение
Дипломная работа посвящена разработке системы составления графиков работы подвижного состава трамвайного депо.
В ходе проделанной работы была изучена база данных dBase и среда программирования Delphi 7, что позволило наиболее полно использовать их функции для создания данной работы.
Результатом выпускной квалификационной работы стала подсистема автоматизации процесса составления графиков работы экипажей подвижного состава трамвайного депо. Данная подсистема позволила осуществить следующие задачи:
1. получение данных для составления графиков;
2. проверка данных на корректность;
3. разработка модуля составления графиков;
4. разработка модуля корректировки и просмотра составленных графиков;
5. вывод графиков на печать.
Разработанная подсистема входит в состав системы составления графиков работы подвижного состава трамвайного депо, которая автоматизирует данный процесс, который до этого составлялся вручную. Система повышает работоспособность предприятия МУП ИжГЭТ.
Список литературы
1. Рубенкинг Н.Д. Язык программирования Delphi для «чайников». - Киев.: Диалектика, 2006.
2.Тексейра С., Пачеко К. Delphi 6. Руководство разработчика, том 1.: Пер. с англ.: Уч. пос. -- М.: Издательский дом “Вильямс”, 2000.
3. Тексейра С., Пачеко К. Delphi 6. Руководство разработчика, том 2.: Пер. с англ.: Уч. пос. -- М.: Издательский дом “Вильямс”, 2004.
4. Конопка Р. Создание оригинальных компонент в среде Delphi: Пер. с англ./Рей Конопка.- К.: НИПФ - "ДиаСофт Лтд.", 1996.
5. Лишнер Р.Секреты Delphi 2: Пер. с англ./Рэй Лишнер.- К.: НИПФ - "ДиаСофт Лтд.", 1996.
6. Кириллов В.В. Основы проектирования реляционных баз данных. Учебное пособие. - СПб.: ИТМО, 2007.
7. Диго С.М. Проектирование и использование БД: Учебник для студентов вузов. - М.: Финансы и статистика, 1995.
8. Кириллов В.В. Основы проектирования баз данных. - М.: Финансы и статистика, 1997.
9. Ульман Дж., Уидом Дж. Введение в системы баз данных. - М.: Лори, 2000.
автоматизированная система трамвайное депо
Приложение 1
СТРУКТУРА ФАЙЛОВ БАЗЫ ДАННЫХ
Таблица П.1.1
Структура таблицы raspis.dbf
Наименование поля |
Тип |
Ключ |
Описание |
|
MARSH |
Числовой |
Да |
Номер маршрута |
|
RASP |
Числовой |
Номер расписания |
||
VYH |
Числовой |
Признак расписания выходного дня |
||
NACH |
Числовой |
Начало работы |
||
KON |
Числовой |
Конец работы |
||
LONG |
Числовой |
Длительность работы |
||
OSM |
Числовой |
Признак осмотрового расписания |
Таблица П.1.2
Структура таблицы tramv.dbf
Наименование поля |
Тип |
Ключ |
Описание |
|
TRAM |
Числовой |
Да |
Номер ПС |
|
MARSH |
Числовой |
Закрепленный маршрут |
||
OSM1 |
Числовой |
Дата (число) первого осмотра |
||
OSM2 |
Числовой |
Дата (число) второго осмотра |
||
OSM3 |
Числовой |
Дата (число) третьего осмотра |
||
OSM4 |
Числовой |
Дата (число) четвертого осмотра |
Таблица П.1.3
Структура таблицы workers.dbf
Наименование поля |
Тип |
Ключ |
Описание |
|
TR_NO |
Числовой |
Да |
Номер ПС |
|
MARSH |
Числовой |
Маршрут |
||
VOD_NO |
Числовой |
Табельный номер водителя |
||
VOD_NAME |
Символьный (20) |
Фамилия водителя |
||
KOND_NO |
Числовой |
Табельный номер кондуктора |
||
KOND_NAME |
Символьный (20) |
Фамилия кондуктора |
Таблица П.1.4
Структура таблицы marshruty.dbf
Наименование поля |
Тип |
Ключ |
Описание |
|
MARSH_NO |
Числовой |
Да |
Номер маршрута |
Таблица П.1.5
Структура таблицы users.dbf
Наименование поля |
Тип |
Ключ |
Описание |
|
LOGIN |
Символьный (10) |
Да |
Сокращенное имя пользователя |
|
PWD |
Символьный (10) |
Зашифрованный пароль |
||
FAM |
Символьный (15) |
Фамилия |
||
NAME |
Символьный (15) |
Имя |
||
OTCH |
Символьный (15) |
Отчество |
Приложение 2
ТЕКСТ ПРОГРАММЫ
П.2.1. Текст модуля Diploma.dpr
program Diploma;
uses
Forms,
MainForm in 'MainForm.pas' {MainFrm},
LoginForm in 'LoginForm.pas' {LoginFrm},
DateFunc in 'DateFunc.pas',
UVocations in 'UVocations.pas',
UsersEditForm in 'UsersEditForm.pas' {UsersEditFrm},
UsersMng in 'UsersMng.pas' {UsersMngFrm},
PwdCrypt in 'PwdCrypt.pas',
RaspViewForm in 'RaspViewForm.pas' {RaspViewFrm},
WorkViewForm in 'WorkViewForm.pas' {WorkView},
AllViewForm in 'AllViewForm.pas' {AllView},
TrollViewForm in 'TrollViewForm.pas' {TrollView},
DataForAllView in 'DataForAllView.pas' {AllTablesDataModule: TDataModule},
GraphOKForm in 'GraphOKForm.pas' {RaspOut};
{$R *.res}
begin
Application.Initialize;
Application.Title:= '¦T+';
Application.CreateForm(TMainFrm, MainFrm);
Application.CreateForm(TLoginFrm, LoginFrm);
Application.CreateForm(TUsersEditFrm, UsersEditFrm);
Application.CreateForm(TUsersMngFrm, UsersMngFrm);
Application.CreateForm(TRaspViewFrm, RaspViewFrm);
Application.CreateForm(TWorkView, WorkView);
Application.CreateForm(TAllView, AllView);
Application.CreateForm(TTrollView, TrollView);
Application.CreateForm(TAllTablesDataModule, AllTablesDataModule);
Application.CreateForm(TRaspOut, RaspOut);
Application.Run;
end.
П.2.2. Текст модуля AllViewForm.pas
unit AllViewForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DataForAllView, jpeg, ExtCtrls, StdCtrls, DB,
DBTables;
type
TAllView = class(TForm)
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DBGrid3: TDBGrid;
Image1: TImage;
MarshNoCombo: TComboBox;
MarshTable: TTable;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure MarshNoComboChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AllView: TAllView;
implementation
{$R *.dfm}
procedure TAllView.FormActivate(Sender: TObject);
var i: integer;
begin
with AllTablesDataModule do begin
RaspTable.Active:=true;
MarshTable.Active:=true;
WorkersTable.Active:=true;
TrollTable.Active:=true;
end;
MarshNoCombo.Items.Clear;
MarshTable.Active:=true;
MarshTable.First;
for i:=1 to MarshTable.RecordCount do begin
MarshNoCombo.Items.Add(IntToStr(MarshTable.FieldValues['MARSH_NO']));
{if i<>MarshTable.RecordCount} MarshTable.Next;
end;
MarshNoCombo.ItemIndex:=0;
MarshTable.Active:=false;
AllTablesDataModule.Trolls.DataSet.Filter:='Marsh='+MarshNoCombo.Text;
end;
procedure TAllView.FormClose(Sender: TObject; var Action: TCloseAction);
begin
with AllTablesDataModule do begin
RaspTable.Active:=false;
MarshTable.Active:=false;
WorkersTable.Active:=false;
TrollTable.Active:=false;
end;
end;
procedure TAllView.MarshNoComboChange(Sender: TObject);
begin
AllTablesDataModule.Trolls.DataSet.Filter:='Marsh='+MarshNoCombo.Text;
end;
end.
П.2.3. Текст модуля DataForAllView.pas
unit DataForAllView;
interface
uses
SysUtils, Classes, DB, DBTables;
type
TAllTablesDataModule = class(TDataModule)
RaspTable: TTable;
MarshTable: TTable;
WorkersTable: TTable;
TrollTable: TTable;
Rasp: TDataSource;
Marsh: TDataSource;
Workers: TDataSource;
Trolls: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;
var
AllTablesDataModule: TAllTablesDataModule;
implementation
{$R *.dfm}
end.
П.2.4. Текст модуля UVocations.pas
unit UVocations;
interface
type
VocationsData = record
VocNum: SmallInt;
Days: array [1..31] of string[2];
end;
Vocations = Array [0..12,2001..2015] of VocationsData;
PVocations = ^Vocations;
var
PVoc: PVocations;
function FindVoc(siMonth: Smallint; siYear: Smallint; PVoc: PVocations; SDay:string; var Index: smallint):boolean;
procedure AddVoc(siMonth: Smallint; siYear: Smallint; PVoc: PVocations; SDay:string);
procedure DelVoc(siMonth: Smallint; siYear: Smallint; PVoc: PVocations; SDay:string);
procedure SaveVoc(PVoc: PVocations; Destination: string);
procedure LoadVoc(PVoc: PVocations; Destination: string);
implementation
Procedure LoadVoc(PVoc: PVocations; Destination: string);
var
F: file of VocationsData;
Voc: Vocations;
i,j,k: smallint;
Begin
AssignFile(f,Destination);
reset(f);
For i:=1 to 12 do
for j:=2002 to 2015 do begin
Read(f,Voc[i,j]);
for k:=1 to Voc[i,j].VocNum do AddVoc(i,j,PVoc,Voc[i,j].Days[k]);
end;
closefile(f);
end;
procedure SaveVoc(PVoc: PVocations;
Destination: string);
Var F: file of VocationsData;
i,j: smallint;
begin
AssignFile(F,Destination);
Rewrite(f);
For i:=1 to 12 do
for j:=2002 to 2015 do Write(f,PVoc^[i,j]);
closefile(f);
end;
function FindVoc(siMonth: Smallint;
siYear: Smallint;
PVoc: PVocations;
SDay: string;
var Index: smallint):boolean;
var i: smallint;
begin
result:=false;
for i:=1 to PVoc^[siMonth,siYear].VocNum do
if PVoc^[siMonth,siYear].Days[i]=Sday then begin
result:=true;
Index:=i;
break;
end
end;
procedure AddVoc(siMonth: Smallint;
siYear: Smallint;
PVoc: PVocations;
SDay: string);
var id: smallint;
begin
if (sday<>'')and not findvoc(siMonth, siYear, PVoc, SDay,id) then begin
inc(PVoc^[siMonth,siYear].VocNum);
PVoc^[siMonth,siYear].Days[PVoc^[siMonth,siYear].VocNum]:=Sday;
end;
end;
procedure DelVoc(siMonth: Smallint;
siYear: Smallint;
PVoc: PVocations;
SDay: string);
var i, index: smallint;
begin
if FindVoc(siMonth,siYear,PVoc,SDay,index) then begin
for i:=index to PVoc^[siMonth,siYear].VocNum-1 do
PVoc^[siMonth,siYear].Days[i]:= PVoc^[siMonth,siYear].Days[i+1];
Dec(PVoc^[siMonth,siYear].VocNum);
end;
end;
end.
П.2.5. Текст модуля WorkViewForm.pas
unit WorkViewForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, jpeg, ExtCtrls, StdCtrls;
type
TWorkView = class(TForm)
WorkTable: TTable;
WorkSource: TDataSource;
WorkGrid: TDBGrid;
Image1: TImage;
MarshNoCombo: TComboBox;
MarshTable: TTable;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure MarshNoComboChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
WorkView: TWorkView;
implementation
{$R *.dfm}
procedure TWorkView.FormActivate(Sender: TObject);
var i: integer;
begin
WorkSource.DataSet.Active:=True;
MarshNoCombo.Items.Clear;
MarshTable.Active:=true;
MarshTable.First;
for i:=1 to MarshTable.RecordCount do begin
MarshNoCombo.Items.Add(IntToStr(MarshTable.FieldValues['MARSH_NO']));
{if i<>MarshTable.RecordCount} MarshTable.Next;
end;
MarshNoCombo.ItemIndex:=0;
MarshTable.Active:=false;
WorkSource.DataSet.Filter:='Marsh='+MarshNoCombo.Text;
end;
procedure TWorkView.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WorkSource.DataSet.Active:=False;
end;
procedure TWorkView.MarshNoComboChange(Sender: TObject);
begin
WorkSource.DataSet.Filter:='MARSH='+MarshNoCombo.Text;
end;
end.
П.2.6. Текст модуля GraphOKForm.pas
unit GraphOKForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, DBCtrls, DB, DBTables, Grids,
DBGrids, dbcgrids, Buttons;
type
TRaspOut = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
ProgressBar1: TProgressBar;
Label1: TLabel;
GroupBox2: TGroupBox;
Label2: TLabel;
Label3: TLabel;
VyhCnt: TEdit;
WorkCnt: TEdit;
Panel2: TPanel;
StartBtn: TButton;
procedure VyhCntChange(Sender: TObject);
procedure WorkCntChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
RaspOut: TRaspOut;
iVyh,iWork: integer;
implementation
{$R *.dfm}
procedure TRaspOut.VyhCntChange(Sender: TObject);
var c1,c2: integer;
begin
val(VyhCnt.Text,iVyh,c1); val(WorkCnt.Text,iWork,c2);
c1:=c1+c2;
if c1=0 then StartBtn.Enabled:=true
else StartBtn.Enabled:=false;
end;
procedure TRaspOut.WorkCntChange(Sender: TObject);
var c1,c2: integer;
begin
val(VyhCnt.Text,iVyh,c1); val(WorkCnt.Text,iWork,c2);
c1:=c1+c2;
if c1=0 then StartBtn.Enabled:=true
else StartBtn.Enabled:=false;
end;
end.
П.2.7. Текст модуля MainForm.pas
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ComCtrls, ExtCtrls, jpeg, Buttons, Grids, DateUtils,
datefunc, ImgList, UVocations, DB, DBTables;
type
TMainFrm = class(TForm)
MainMenu: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
MarshNoCombo: TComboBox;
OKBtn: TBitBtn;
BackGround: TImage;
MCalendar: TStringGrid;
YearLabel: TLabel;
YearB: TUpDown;
MonthLabel: TLabel;
MonthB: TUpDown;
RaspTable: TTable;
OpenDialog: TOpenDialog;
ImageList1: TImageList;
N7: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
WorkTable: TTable;
MarshTable: TTable;
N3: TMenuItem;
TrollTable: TTable;
procedure MonthFilling(IYear: SmallInt; IMonth:Smallint);
procedure DayAdd(ACol: integer; ARow: Integer);
procedure FormShow(Sender: TObject);
procedure MarshNoComboChange(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure YearBClick(Sender: TObject; Button: TUDBtnType);
procedure MonthBClick(Sender: TObject; Button: TUDBtnType);
procedure MCalendarDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure MCalendarMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure MCalendarKeyPress(Sender: TObject; var Key: Char);
procedure N1Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TRaspInfo = record
M: shortint;
V: shortint;
S: shortint;
N: integer;
Nach: string[5];
Kon: string[5];
Dlit: string[5];
osm: shortint;
end;
TWorkInfo = record
T: cardinal;
M: cardinal;
NV: cardinal;
NK: cardinal;
FV: string[20];
FK: string[20];
end;
TTrollInfo = record
T: cardinal;
M: cardinal;
o1: byte;
o2: byte;
o3: byte;
o4: byte;
end;
Const
Monthes: array[1..12]of string[15]=(
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь'
);
Days: array[1..12]of smallint=(
31,28,31,30,31,30,31,31,30,31,30,31);
var
MainFrm: TMainFrm;
TekMonth,TekYear: SmallInt;
//Vocations: Array [1..12,2002..2015] of VocationsData;
VocLoaded: Boolean;
PVoc: PVocations;
implementation
uses LoginForm, UsersEditForm, RaspViewForm, WorkViewForm, AllViewForm,
TrollViewForm, GraphOKForm;
{$R *.dfm}
procedure TMainFrm.DayAdd(ACol: integer; ARow: Integer);
var id: SmallInt;
begin
if findvoc(TekMonth,TekYear,PVoc,MCalendar.Cells[ACol,ARow],id)//and(MCalendar.Cells[ACol,ARow]>'')
then DelVoc(TekMonth,TekYear,PVoc,MCalendar.Cells[ACol,ARow])
else AddVoc(TekMonth,TekYear,PVoc,MCalendar.Cells[ACol,ARow]);
end;
procedure TMainFrm.MonthFilling(IYear: SmallInt; IMonth:Smallint);
var i,j,row: integer;
// id: SmallInt;
s: string[2];
begin
//Days[TekMonth]
for i:=0 to 7 do
for j:=1 to 6 do
MCalendar.Cells[i,j]:='';
j:=DayOfTheWeek(mdy2date(TekMonth,1,TekYear));
row:=1;
for i:=1 to Days[TekMonth] do begin
str(i,s);
MCalendar.Cells[j,row]:=s;
inc(j);
if not VocLoaded and(j>5) then AddVoc(TekMonth,TekYear,Pvoc,s);
if j=7 then begin
j:=0;
inc(row);
end;
end;
end;
procedure TMainFrm.FormShow(Sender: TObject);
begin LoginFrm.ShowModal;
If LoginFrm.LoginEdit.Text='root' then N1.Enabled:=true;
Caption:=Caption+' для '+LoginFrm.LoginEdit.Text;
end;
procedure TMainFrm.MarshNoComboChange(Sender: TObject);
begin
If Text='' then OKBtn.Enabled:=False
else OKBtn.Enabled:=True;
end;
procedure TMainFrm.N2Click(Sender: TObject);
begin
MessageBox(Handle,'Когда-нибудь здесь будет справка...','',
MB_OK or MB_ICONINFORMATION or MB_APPLMODAL);
end;
procedure TMainFrm.FormCreate(Sender: TObject);
var s: string;
sr: TSearchRec;
begin
new(PVoc);
MCalendar.Rows[0].Add('Пн'); MCalendar.Rows[0].Add('Вт');
MCalendar.Rows[0].Add('Ср'); MCalendar.Rows[0].Add('Чт');
MCalendar.Rows[0].Add('Пт'); MCalendar.Rows[0].Add('Сб');
MCalendar.Rows[0].Add('Вс');
TekYear:=currentyear();
str(TekYear,s);
YearLabel.Caption:=s;
YearB.Position:=TekYear;
TekMonth:=Monthoftheyear(date);
MonthB.Position:=TekMonth;
MonthLabel.Caption:=Monthes[TekMonth];
if FindFirst('.\data\Vocations.dat',faAnyFile,sr)=0 then begin
LoadVoc(PVoc,'.\data\Vocations.dat');
VocLoaded:=True;
end else VocLoaded:=False;
MonthFilling(TekYear,TekMonth);
end;
procedure TMainFrm.YearBClick(Sender: TObject; Button: TUDBtnType);
var s: string;
begin
TekYear:=YearB.Position;
str(TekYear,s);
YearLabel.Caption:=s;
MonthFilling(TekYear,TekMonth);
end;
procedure TMainFrm.MonthBClick(Sender: TObject; Button: TUDBtnType);
begin
TekMonth:=MonthB.Position;
MonthLabel.Caption:=Monthes[TekMonth];
MonthFilling(TekYear,TekMonth);
end;
procedure TMainFrm.MCalendarDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var id: smallint;
begin
if ARow>0 then
if findvoc(TekMonth,TekYear,PVoc,MCalendar.Cells[Acol,Arow],id)
then MCalendar.Canvas.Brush.Color:=clRed
else MCalendar.Canvas.Brush.Color:=clWhite
else MCalendar.Canvas.Brush.Color:=clLtGray;
Mcalendar.Canvas.fillrect(rect);
Mcalendar.Canvas.TextOut(Rect.Left+(Mcalendar.ColWidths[ACol] -
Mcalendar.Canvas.TextWidth(Mcalendar.cells[ACol,Arow]))div 2,
Rect.Top+(Mcalendar.RowHeights[ARow] -
Mcalendar.Canvas.TextHeight(Mcalendar.cells[ACol,Arow]))div 2,Mcalendar.cells[ACol,Arow]);
if (MCalendar.Row = ARow) and (MCalendar.Col=ACol) and (MCalendar = ActiveControl) then
MCalendar.Canvas.DrawFocusRect(Rect);
end;
procedure TMainFrm.MCalendarMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var Acol,Arow: integer;
begin
Mcalendar.MouseToCell(x,y,ACol,ARow);
DayAdd(ACol,ARow);
MCalendar.Refresh;
end;
procedure TMainFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SaveVoc(PVoc,'d:\Staffa kar Terma\- TO DO -\Diploma\Data\Vocations.Dat');
freemem(PVoc);
end;
procedure TMainFrm.MCalendarKeyPress(Sender: TObject; var Key: Char);
begin
if key=' ' then begin
DayAdd(MCalendar.Col, Mcalendar.Row);
MCalendar.Refresh;
end;
end;
procedure TMainFrm.N1Click(Sender: TObject);
begin
UsersEditFrm.ShowModal;
end;
function StrConvert_rasp(s: string): TraspInfo;
const tabulator: char = #9;
var Data:array [1..6] of string;
id,k,i: integer;
outp: TRaspInfo;
tmp: real;
begin
id:=1;k:=1;
{разбиваем строку на подстроки}
for i:=1 to length(s) do
if (s[i]=tabulator) or (i=length(s)) then begin
if i=length(s) then data[k]:=copy(s,id,i-id+1)
else data[k]:=copy(s,id,i-id);
k:=k+1;
id:=i+1;
end;
{преобразуем}
val(data[1],outp.M,k); {# marsh}
val(data[2],tmp,k);
k:=round((tmp*100)) mod 10; outp.V:=k; {vocation?}
k:=round((tmp*10)) mod 10; outp.S:=k; {smena}
Подобные документы
Анализ функциональных возможностей автоматизированной информационной системы АРМ "Нарядчик". Разработка базы данных и web-интерфейса модуля по учёту графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо АИС АРМ "Нарядчик".
дипломная работа [1,8 M], добавлен 06.07.2015Анализ организационно-управленческой структуры предприятия. Основные цели автоматизированной системы управления. Описание типов документов, используемых в работе бухгалтерии. Выявление проблемных ситуаций, выбор проблемы, ее решение путем автоматизации.
курсовая работа [87,3 K], добавлен 26.04.2014Проект автоматизированной системы утверждения учебных планов и графиков учебных процессов. Структура и принципы работы с документами. Установка и алгоритм работы программного продукта. Методика его испытаний и расчет экономической эффективности.
дипломная работа [3,9 M], добавлен 17.03.2011Бизнес-процессы при ручном и автоматизированном выполнении работы заполнения и печати писем руководителю организации. Описание базы данных и пошаговое выполнение работы, использование макросов в среде Microsoft Excel, создание автоматизированных списков.
курсовая работа [763,0 K], добавлен 09.12.2010Обзор программного обеспечения для оформления контрольных документов, выбор средства реализации системы автоматизации оформления сопровождающей документации. Создание, наладка и тестирование программы для автоматизации работы с рекламными шаблонами.
дипломная работа [2,0 M], добавлен 17.06.2017Оптико-электронная система идентификации объектов подвижного состава железнодорожного транспорта. Автоматический комплекс распознавания автомобильных номеров. Принципы и этапы работы систем оптического распознавания. Особенности реализации алгоритмов.
дипломная работа [887,3 K], добавлен 26.11.2013Разработка требований к программному обеспечению. Проектирование пользовательского интерфейса. Представление информационной системы в архитектуре "клиент-серверная". Проектирование программных модулей. Создание структуры пооперационного перечня работ.
курсовая работа [3,1 M], добавлен 09.08.2011Описание автоматизированной информационной системы автотранспортного предприятия. Область применения системы, ее функциональное содержание и возможности. Требования к программной и аппаратной части, алгоритм работы. Сценарий работы с пользователем.
курсовая работа [638,6 K], добавлен 18.09.2014Разработка подсистемы отдела кадров, предназначенной для работы с базой данных в виде типизированного файла с расширением txt. Анализ возможности редактировать записи, осуществления выборки данных на основе правил отбора и построения графиков и диаграмм.
контрольная работа [125,3 K], добавлен 08.06.2011Требования к структуре и функционированию информационной системы. Входная и выходная информация подсистемы управления проектами. Описание "TheSystem", предназначенной для обеспечения процесса учета кадров, контроля работы сотрудников предприятия.
дипломная работа [3,1 M], добавлен 07.03.2012