Помощь в написании студенческих работ
Антистрессовый сервис

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

ДипломнаяПомощь в написанииУзнать стоимостьмоей работы

В настоящее время направление автоматизированного проектирования, наряду с другими направлениями компьютерных и информационных технологий переживает период подъема. В значительной степени это связано с тем, что возможности современных вычислительных систем обеспечивают широкий круг деятельности по самым разным направлениям. Существует огромная совокупность направлений деятельности, требующих… Читать ещё >

Автоматизация процесса составления графиков работы экипажей подвижного состава трамвайного депо (реферат, курсовая, диплом, контрольная)

Министерство образования и науки РФ Государственное образовательное учреждение высшего профессионального образования

«ИЖЕВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра «Программное обеспечение»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к выпускной квалификационной работе бакалавра на тему:

«Автоматизация процесса составления графиков работы экипажей подвижного состава трамвайного депо»

Дипломник М. В. Калужских студент гр. 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 =, (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.

Схема подсистемы «Автоматизация процесса составления графиков работы экипажей подвижного состава трамвайного депо»

Рис. 4

Продолжение рис. 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 Юшков 35 335 Шамшутдинова

239 4 2585 Медведев 35 297 Русских

268 4 3081 Пешков 35 123 Широбокова

268 4 2738 Сунцова 35 104 Никитина

283 4 3869 Ешкеева 35 003 Ильин

283 4 3516 Михайлов 35 121 Мокрушина

287 4 3078 Коземаслова 35 341 Елисеева

287 4 3071 Званская 35 072 Чухлова

257 4 2672 Корепанов 35 235 Шункова

257 4 3830 Мамилова 35 060 Пчельникова

294 4 3208 Малых 35 001 Кузина

294 4 2664 Оглоблин 35 037 Хлыбова

331 4 3655 Кузьмин 35 285 Вьюшкова

331 4 3012 Новоселов 35 244 Романова

237 4 3099 Иванов 35 999 Петров

237 4 3328 Сидельникова 35 090 Шибаева

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 ('.dataVocations.dat', faAnyFile, sr)=0 then begin

LoadVoc (PVoc,'.dataVocations.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 TermaTO DODiplomaDataVocations. 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}

Показать весь текст
Заполнить форму текущей работой