43859

Разработка программного обеспечения автоматизированного рабочего места заведующего предметно-цикловой комиссией колледжа педагогического образования

Дипломная

Информатика, кибернетика и программирование

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

Русский

2013-11-08

2.53 MB

77 чел.

PAGE  6

РЕФЕРАТ

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

THE ABSTRACT

In given work is stated material on development automated worker of the place managing subject-cycle commission College of the Pedagogical Formation, Informaticses and Right. The Programme product automates whole activity managing PCK, allowing enlarges capacity of the labour. The Described base of the designing is made analysis designed system quality.

КЛЮЧЕВЫЕ СЛОВА

Delphi 7.0

MS Access 2003

Автоматизированное рабочее место

Базы данных

Информационная система

Безопасность

Проектирование

Программное обеспечение

Спиральная модель


СОДЕРЖАНИЕ

[0.1] П.6. Документированный листинг программы…………………………………..72

[1]
Введение

[1.1] 1.1. Описание работы заведующего ПЦК по анализу данных и составлению отчетов

[1.2] Рис. 1.1. Схема работы с информацией заведующего ПЦК до внедрения ПО

[1.3] 1.3. Обзор существующего программного обеспечения

[1.4] Выводы

[2]
2. Проектирование программного продукта

[2.1] 2.1. Выбор модели жизненного цикла

[2.2] 2.2. Построение концептуальной модели системы

[2.3] Целью разработки любой базы данных является хранение и использование информации о какой-либо предметной области. Для реализации этой цели удобным инструментом может служить реляционная модель базы данных.

[2.4] Выводы

[3]
3. Программная реализация

[3.1] 3.1. Выбор аппаратной и программной платформ

[3.2] 3.2. Выбор среды разработки пользовательского интерфейса

[3.3] 3.3. Выбор способа и средств для организации хранения данных

[3.4] 3.5 Реализация пользовательского интерфейса

[3.5] Выводы

[4]
4. Анализ качества разработанного программного обеспечения

[4.1] 4.1. Показатели качества

[4.2] 4.3. Предложения по сопровождению и улучшению качества программного продукта

[4.3] Выводы

[5]
Заключение

[6]
Библиографический список

[7]
Глоссарий

[8]
Список аббревиатур

[9]
Приложения

[9.1] П.1. Техническое задание на разработку АРМ заведующего ПЦК КПОИиП

[9.2]
П.2. Описание демонстрационного ролика

[9.3]
П.3. Диаграмма потоков данных

[9.4]
П.5. Руководство пользователя

[9.5]
П.6. Документированный листинг программы

П.4. Схема данных…………………………………………………………………65

П.5. Рукаводство пользователя……………………………………………………66

П.6. Документированный листинг программы…………………………………..72

П.7. Материалы внедрения………………………………………………………112


Введение

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

Информационное общество – общество, в котором большинство работающих занято производством, хранением, переработкой и реализацией информации.

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

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

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

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

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

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

Целью данной работы является создание программного продукта (ПП), предоставляющего заведеующему ПЦК КПОИиП возможность хранения, обработки и получения информации о преподавателях КПОИиП и распределении учебной нагрузки между ними.

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

  1.  Проанализировать предметную область и спроектировать базу данных.
  2.  Опредилеть принципы построения пользовательского интерфейса.
  3.  Разработать основные модули системы.
  4.  Провести тестирование и отладку программного продукта.
  5.  Провести внедрение программного продукта.

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

Предмет исследования – автоматизация данного процесса путем создания программного обеспечения (ПО) автоматизированного рабочего места (АРМ) заведующего ПЦК КПОИиП.

Для решения поставленных задач были применены следующие методы исследования: теоретические (анализ предметной области, сбор информации по проблеме исследования, сравнение существующих программных средств для реализации данного процесса); эмпирические (моделирование процесса функционирования заведующего ПЦК, выбор средств разработки, анализ качества разработанного программного продукта); статистические (анализ используемых аппаратных и программных платформ).

Гипотеза исследования

Автоматизация рабочего места заведующего ПЦК КПОИиП, позволяющая избежать рутинной работы, повысит производительность труда, точность и скорость оформление требуемых отчетов, карточек служебных заданий [2].

Новизна работы

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

Практическая значимость

Данный программый продукт позволяет хранить и осуществлять быстрый доступ к требуемым данным о преподавателях КПОИиП и распределении между ними учебной нагрузки, а так же создавать соответствующую отчетность. Его использование позволит устранить следующие недостатки: рутинная (монотонная) работа, дублирование и избыточность информации, несоответствие в выполняемых функциях, несовершенство системы документооборота.

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

Реализация результатов работы

Созданное программное средство внедрено с 20 апреля 2007 года и проходит опытную эксплуатацию в КПОИиП.

Структура и объем работы:

Пояснительная записка к дипломной работе выполнена на 55 страниц машинописного текста (без приложений). Состоит из введения, 4 разделов и заключения.

Список использованных литературных и электронных источников содержит 31 наименований.

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

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

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

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

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

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

  1.  
    ИССЛЕдование предметной области 

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

1.1. Описание работы заведующего ПЦК по анализу данных и составлению отчетов

Основная цель информационной системы – упорядоченное хранение информации и предоставление ее по требованию. К информации может относиться все, что заслуживает внимания пользователя (заведующего ПЦК), использующего систему; иначе говоря, все необходимое для текущей работы данного пользователя.

Информация, касающаяся работы заведующего ПЦК, весьма разнообразна и вытекает из его должностных обязанностей:

  •  анализ проблем и результатов, перспективных возможностей работы по преподаванию дисциплин предметных циклов; хода и развития процесса преподавания дисциплин, соответствия их содержания требованиям государственного общеобразовательного стандарта; формы и содержаня посещённых учебных занятий и других видов деятельности; результатов успеваемости студентов по дисциплинам соответствующего предметного цикла;
  •  прогноз возможностей совершенствования процесса преподавания учебных дисциплин; результатов содержательных и методических нововведений;
  •  планирование работы ПЦК в течение учебного года;
  •  организация процесса разработки и реализации рабочих программ учебных дисциплин; создания дидактических материалов и других средств обучения; разработки необходимой учебно-методической документации по дисциплинам; осуществления систематического контроля за качеством преподавания учебных дисциплин и объективности оценки результатов обучения студентов; посещения учебных занятий, проводимых педагогами колледжа; рыботы по подготовке и проведению экзаменов; научно-исследовательской работы на уровне ПЦК и учебно-исследовательской работы студентов в рамках работы секций (проблемных групп) студенческого научного общества (СНО); процесса повышения профессионального мастерства и квалификации преподавателей в форме методических семинаров ПЦК и обобщения опыта работы педагогов.
  •  составление отчётов о работе ПЦК; информационных и аналитических справок о работе преподавателей в режиме внедрения инноваций; заявок на повышение квалификации преподавателей и участие в научно-практических конференциях;
  •  контроль выполнения учебной нагрузки преподавателями и учебных программ дисциплин; правильного ведения отчётной документации;
  •  координация всей учебно-методической и научно-методической работы преподавателей – членов ПЦК; работы педагогов по выполнению учебных планов и программ; процесса повышения квалификации преподавателей в разных формах;
  •  руководство методической работой по обеспечению учебного процесса необходимыми материалами; осуществлением системы стимулирования участников учебного процесса;
  •  консультация преподавателей по вопросам организации преподавания учебных дисциплин, использования инновационных технологий и новых средств обучения;
  •  участие в организации и проведении педагогических советов на отделении и педагогических советов колледжа.

Обобщая все перечисленное выше, следует отметить, что заведующий ПЦК имеет следующие функции:

  •  организация учебно-воспитательного процесса по дисциплинам соответствующих учебных циклов, руководство им и контроль над развитием этого процесса;
  •  организация учебно-методической деятельности в ПЦК, координация методической и научно-исследовательской деятельности преподавателей по плану ПЦК.

Следовательно, заведующему ПЦК приходится иметь дело с личными делами преподавателей, распределением учебной нагрузки соответственно с рабочими учебными планами КПОИиП между преподавателями, распределением и контролем за проведением преподавателями внеаудиторной и научно-исследовательской работы и т.д.

На рис. 1.1. приведена схема работы заведующего ПЦК с информацией до внедрения ПР

Рис. 1.1. Схема работы с информацией заведующего ПЦК до внедрения ПО

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

Данная работа достаточно кропотлива и продолжительна во времени. Каждая стадия работы представляет собой критически важные потоки. При этом возможно допущение ошибок. Проблему представляет то, что в случае ошибки работу придётся начинать с начала, т.к. получаемые в результате данные представленные в виде отчётов обладают жёсткой логической связью и строгой предопределённой структурой, нарушение которой произойдёт в случае любого из недочётов оператора.

1.2. Методы устранения существующих недостатков

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

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

  1.  для того чтобы предотвратить разрозненность информации необходимо построить программный продукт на единой базе данных;
  2.  у программного продукта должен быть интуитивно понятный пользовательский интерфейс для быстрого и удобного заполнения и поиска нужной информации;
  3.  информация в БД должна быть наглядно отображена для легкого анализа;
  4.  в программном продукте должна быть предуспмотрена защита данных от несанкционированного доступа;
  5.  в программном продукте должна быть предуспмотрена защита от пользователя, с целью недопущения ввода некорректных данных или несознательного разрушения системы неграмотным обращением.

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

Он также призван решать следующие задачи:

– освободить заведующего ПЦК от монотонной, рутинной работы;

– предотвратить дублирование документов хранящихся в разных отделах;

– усовершенствовать структуру потоков информации;

– централизовать хранение и обработку данных;

– обеспечить достоверность информации.

На рис. 1.2. изображена схема получения информации заведующего ПЦК с использованием разработанного программного продукта. В прил. 4 представлена детализированная диаграмма потоков данных заведующего ПЦК после внедрения ПП.

Рис. 1.2. Схема получения информации с использованием ПП

При анализе схем (рис. 1.1. и рис. 1.2.) видно, что до внедрения в работу ПП, получение информации заведующим ПЦК разбито на несколько этапов. После внедрения ПП процесс получения и соответствующей обработки значительно упрощаестя и ускоряется и более того, исключается возможность случайных ошибок.

1.3. Обзор существующего программного обеспечения

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

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

Кроме того, чтобы добиться максимального эффекта при автоматизации работы преподавательа заведующего ПЦК нужно учитывать особенности и специфику работы КПОИиП:

  •  организация учебно-воспитательного процесса (распределение учебной нагрузки преподавателей и заполнение карточки служебных поручений определённого образца);
  •  учёт данных об аттестации и повышении квалификации преподавателями;
  •  организация учебно-методической деятельности в ПЦК.

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

Выводы

  1.  В ходе изучения предметной области – была проанализирована деятельность заведующего ПЦК КПОИиП и доказана необходимость автоматизации его работы.
    1.  Исходя из основных функций выполняемых заведующим ПЦК, были разработаны требования к программному продукту.
      1.  Был проведен анализ существующих программных средств, доказано несоответствие их разработанной системе требований к ПО АРМ заведующего ПЦК КПОИиП.


2.
 Проектирование программного продукта

От правильного подхода к планированию разработки любого программного продукта зависит не только качество полученной разработки, но и время, затраченное на весь цикл разработки. Не менее важным является разработка структуры БД, поскольку от качества этой разработки зависит, насколько просто будет выполняться работа с данными [3].

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

2.1. Выбор модели жизненного цикла

Жизненный цикл (ЖЦ) программного обеспечения – это непрерывный процесс, который начинается с момента принятия решения о необходимости его создания и заканчивается в момент его полного изъятия из эксплутации. Понятие жизненного цикла программного обеспечения является одним из базовых понятий методологии проектирования информационных систем [4].

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

Основными моделями ЖЦ, к настоящему времени получившими наибольшее распространение, являются каскадная и спиральная модели ЖЦ [5].

Каскадная модель характеризуется тем, что весь процесс разработки ПО разбивается на этапы, причем переход с одного этапа на следующий происходит только после того, как будет полностью завершена работа на текущем. Каждый этап завершается выпуском полного комплекта документации, достаточной для того, чтобы разработка была продолжена следующей командой разработчиков. Данная модель хорошо подходит для информационных систем (ИС), для которых с самого начала можно полно и точно сформулировать все требования. Требования «заморожены» в виде технического задания. Взаимодействие с пользователем происходит только при переходах на следующий этап, в результате чего может получиться проект, который не устроит конечного пользователя. Обычно при создании ПО требования в процессе разработки уточняются, и требуется возврат к предыдущим этапам [6].

В спиральной модели основной упор делается на начальные этапы: анализ и проектирование. На этих этапах реализуемость технических решений проверяется путем создания прототипов. Каждый виток спирали соответствует созданию фрагмента или версии комплекса, на нем уточняются цели и характеристики проекта, определяется его качество, и планируются работы следующего витка спирали. Таким образом, углубляются и последовательно конкретизируются детали проекта, и в результате выбирается обоснованный вариант, который доводится до реализации [7].

Ниже приведена спиральная модель представленая в виде схемы (рис. 2.1)

Рис. 2.1. Спиральная модель жизненного цикла

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

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

Спиральная модель жизненного цикла подходит для разрабатываемого программного обеспечения по нескольким причинам:

Использование спиральной модели позволит:

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

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

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

2.2. Построение концептуальной модели системы

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

Работа пользователя состоит из 2-х этапов: ввод исходных данных, просмотр и вывод отчетов на печать.

Ввод данных состоит из следующих шагов:

Ввод информации осуществляется через форму “Сведения о преподавателях”. Также ввод дополнительной информации производится через формы: “Курсы повышения квалификации” и “Внеаудиторная работа”.

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

Изобразим варианты использования при помощи контекстной диаграммы (рис. 2.2.). Диаграммы вариантов использования (use case diagram) описывают функциональное назначение системы или то, что система должна делать [8].

Разработка диаграммы преследует следующие цели:

• определить общие границы и контекст моделируемой предметной области;

• сформулировать общие требования к функциональному поведению проектируемой системы;

• разработать исходную концептуальную модель системы для ее последующей детализации в форме логических и физических моделей;

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

Суть диаграммы вариантов использования состоит в следующем. Проектируемая система представляется в виде множества сущностей или актеров, взаимодействующих с системой с помощью вариантов использования. При этом актером (actor) или действующим лицом называется любая сущность, взаимодействующая с системой извне. Это может быть человек, техническое устройство, программа или любая другая система, которая может служить источником воздействия на моделируемую систему так, как определит сам разработчик. Вариант использования служит для описания сервисов, которые система предоставляет актеру. Диаграмма вариантов использования может дополняться пояснительным текстом, который раскрывает смысл или семантику составляющих ее компонентов [9].

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

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

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

Варианты использования могут применяться как для спецификации внешних требований к проектируемой системе, так и для спецификации функционального поведения уже существующей системы. Множество вариантов использования в целом должно определять все возможные стороны ожидаемого поведения системы. Кроме этого, варианты использования неявно устанавливают требования, определяющие, как актеры должны взаимодействовать с системой, чтобы иметь возможность корректно работать с предоставляемыми сервисами. Для удобства множество вариантов использования может рассматриваться как отдельный пакет [10].

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

Актер представляет собой любую внешнюю по отношению к моделируемой системе сущность, которая взаимодействует с системой и использует ее функциональные возможности для достижения определенных целей. При этом актеры служат для обозначения согласованного множества ролей, которые могут играть пользователи в процессе взаимодействия с проектируемой системой. Каждый актер может рассматриваться как некая отдельная роль относительно конкретного варианта использования. Стандартным графическим обозначением актера на диаграммах является фигурка человечка, под которой записывается имя актера [11].

Актеры взаимодействуют с системой посредством обмена сообщениями с вариантами использования. Сообщение представляет собой запрос актером определенного сервиса системы и получение этого сервиса. Это взаимодействие может быть выражено посредством ассоциаций между отдельными актерами и вариантами использования или классами. Кроме этого, с актерами могут быть связаны интерфейсы, которые определяют, каким образом другие элементы модели взаимодействуют с этими актерами [11].

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

В нашем случае актером является заведующий ПЦК КПОИиП, проводящий работу с данными.

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

Рис. 2.2. Диаграмма вариантов использования

2.3. Проектирование диаграммы потоков данных

Диаграммы потоков данных (DFD) являются основным средством моделирования функциональных требований к проектируемой системе. С их помощью эти требования представляются в виде иерархии функциональных компонентов (процессов), связанных потоками данных [12].  Главная цель такого представления – продемонстрировать, как каждый процесс преобразует свои входные данные в выходные, а так же выявить отношения между этими процессами.

Источники информации (внешние сущности) порождают информационные потоки (потоки данных), переносящие информацию к подсистемам или процессам. Те в свою очередь преобразуют информацию и порождают новые потоки, которые переносят информацию к другим процессам или подсистемам, накопителям данных или внешним сущностям – потребителям информации [12]. Таким образом, основными компонентами диаграмм потоков данных являются:

  •  Внешние сущности
  •  Системы/подсистемы
  •  Процессы
  •  Накопители данных
  •  Потоки данных

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

Рассмотрим диаграмму потоков данных (рис 2.1) для приложения,  подробнее остановимся на всех подсистемах и рассмотрим работу каждой.

Пользовательский интерфейс. Обеспечивает взаимодействие с пользователем.

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

Система хранения настроек пароля пользователя. Предназначен для изменения пароля сотрудника.

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

 Системе формирования отчетов. Обеспечивает самостоятельные запросы в БД.

Система сохранения отчетов. Предназначена для выгрузки подготовленных отчетов на внешний носитель с целью их модификации или распространения.

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

Рис. 2.1. DFD – диаграмма второго уровня приложения

 2.4. Проектирование базы данных

Целью разработки любой базы данных является хранение и использование информации о какой-либо предметной области. Для реализации этой цели удобным инструментом может служить реляционная модель базы данных.

Проектирование информационных систем, включающих в себя базы данных, осуществляется на физическом и логическом уровнях. Решение проблем проектирования на физическом уровне во многом зависит от используемой СУБД и зачастую автоматизированно и скрыто от пользователей.

Логическое проектирование заключается в определении числа и структуры таблиц, формировании запросов к БД, определении типов отчетных документов, разработке алгоритмов обработки информации, создании форм для ввода данных в базе данных и решения ряда других задач [13].

Логическая модель данных является начальным прототипом будущей базы данных. Логическая модель строится в терминах информационных единиц, но без привязки к конкретной СУБД. Более того, логическая модель данных необязательно должна быть выражена средствами именно реляционной модели данных. Основным средством разработки логической модели данных в настоящий момент являются различные варианты ER-диаграмм (Entity-Relationship, диаграммы сущность-связь). Одну и ту же ER-модель можно преобразовать как в реляционную модель данных, так и в модель данных для иерархических и сетевых СУБД, или в постреляционную модель данных. Однако, так как мы рассматриваем именно реляционную СУБД, то можно считать, что логическая модель данных для нас формулируется в терминах реляционной модели данных [13].

Решение задач логического проектирования БД в основном определяется спецификой задач предметной области. Наиболее важной здесь является проблема структуризации данных, ей необходимо уделить максимум внимания. С проектированием базы данных непосредственно связано понятие нормализации.

Нормализация - это набор стандартов проектирования баз данных, называемых нормальными формами. Выделяют пять нормальных форм (НФ) и одну промежуточную НФ, находящуюся между третьей и четвертой НФ. Самой примитивной НФ является первая, а самой лучшей - пятая. Однако, достаточным условием для разработки базы данных является приведение таблиц к третьей НФ. Каждая последующая НФ включает в себя соответствие предыдущим НФ. Таким образом, данные, находящиеся в третьей НФ соответствуют первой и второй НФ [14].

Выполнение правил нормализации обычно приводит к разбиению первичной таблицы на несколько таблиц с меньшим количеством столбцов. Так как при создании проекта таблицы были приведены к третьей НФ, то имеет смысл кратко рассмотреть суть первых трех НФ.

Таблица будет соответствовать 1 НФ, если все её атрибуты будут иметь неделимые значения. Соответствие 2 НФ заключается в соответствии первой НФ и полной функциональной зависимости каждого не ключевого атрибута от его составного ключа. 3 НФ заключается в соответствии 2 НФ и не транзитивной зависимости каждого не ключевого атрибута от первичного ключа.

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

При проектировании структур данных для автоматизированных систем можно выделить три основных подхода:

Сбор информации об объектах решаемой задачи в рамках одной таблицы (одного отношения) и последующая декомпозиция её на несколько взаимосвязанных таблиц на основе процедуры нормализации отношений.

Формулирование знаний о системе (определение типов исходных данных и их взаимосвязей).

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

Рассмотрим проектирование БД для заведующего ПЦК КПОИиП. База данных сформирована таким образом, что в ней происходит логическое деление на несколько основных типов:

  1.  Первичные данные о преподавателях;
  2.  Вторичные данные о преподавателях.

В дополнение ко всему прочему в БД находятся общие справочные таблицы.

Структура базы данных была нормализована и приведена к 3 нормальной форме. Данные располагаются строго структурировано. Связь между всеми таблицами осуществляется способом «один-ко-многим».

  •  Первичные данные о преподавателях. В этой таблице хранится все требуюмые заведующему ПЦК данные о преподавателях. Таковыми являются: фамилия, имя, отчество, дата рождения, пол.
  •  Вторичные данные о преподавателях. Здесь представлены сведения о паспортных данных, дате поступления на работу, учёной степени, должности, разряде и категории. Также сюда относится: информация о курсах повышения квалификации и проводимой преподавателями внеаудиторной работе.

Информационные справочники:

  •  Справочник Пол.
  •  Справочник Список категорий. Содержит список всех видов категорий.
  •  Справочник Список разрядов. Содержит список всех видов разрядов.

В табл. 2.4 приведена логическая структура таблиц базы данных.

Логическая структура таблиц базы данных

Таблица 2.4.

Название таблицы

Имя поля

Тип данных

Сущность

Сведения_о_преподавателе

IDP

Счетчик

Уникальное значение (Первичный ключ)

Фамилия

Текстовый

Фамилия преподавателя

Имя

Текстовый

Имя преподавателя

Отчество

Текстовый

Отчество преподавателя

Дата рождения

Дата/время

Дата рождения преподавателя

Пол

Числовой

Внешний ключ для связи с таблицей Пол

Пол

ID

Счетчик

Уникальное значение (Первичный ключ)

Пол

Текстовый

Название пола

Паспортные_данные

ID

Счетчик

Уникальное значение (Первичный ключ)

Серия

Числовой

Серия паспорта преподавателя

Номер

Числовой

Номер паспорта преподавателя

Кем_выдан

Текстовый

Кем выдан паспорт

Когда_выдан

Дата/время

Дата выдачи паспорта

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

Дата_поступления_на_работу

ID

Счетчик

Уникальное значение (Первичный ключ)

Дата_поступления_на_работу_в_КПОИиП

Дата/время

Дата поступления на работу

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

Учёная_степень

ID

Счетчик

Уникальное значение (Первичный ключ)

Учёная степень

Текстовый

Учёная степень преподавателя

Дата присвоения учёной степени

Дата/время

Дата присвоения учёной степени преподавателю

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

Должность

ID

Счетчик

Уникальное значение (Первичный ключ)

Должность

Текстовый

Должность преподавателя

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

Разряд

ID

Счетчик

Уникальное значение (Первичный ключ)

Разряд

Числовой

Внешний ключ для связи с таблицей Список_разрядов

Дата получения разряда

Дата/время

Дата получения разряда

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

Категория

ID

Счетчик

Уникальное значение (Первичный ключ)

Категория

Числовой

Внешний ключ для связи с таблицей Список_категорий

Дата получения данной категории

Дата/время

Дата получения категории

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

КПК

ID

Счетчик

Уникальное значение (Первичный ключ)

Наименование КПК

Текстовый

Наименование курсов повышения квалификации

Время прохождения

Текстовый

Время прохождения курсов повышения квалификации

Место прохождения

Текстовый

Место прохождения курсов повышения квалификации

Планируемый год прохождения КПК

Числовой

Планируемый год прохождения курсов повышения квалификации

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

Внеаудиторная_работа

ID

Счетчик

Уникальное значение (Первичный ключ)

Виды деятельности

Текстовый

Наименование выдов деятельности

Период работы

Текстовый

Период внеаудиторной работы преподавателя

IDP

Числовой

Внешний ключ для связи с таблицей Сведения_о_преподавателе

Список_категорий

ID

Счетчик

Уникальное значение (Первичный ключ)

Категория

Текстовый

Наименование категории

Список_разрядов

ID

Счетчик

Уникальное значение (Первичный ключ)

Разряд

Текстовый

Наименование разряда

В таблице представленны имена полей, отражены их сущности, а также определены типы и ограничения для каждого поля. ЕR-диаграмма базы данных ПП представленна на рис. 2.3.

Рис. 2.3. ER-диаграмма базы данных.

Выводы

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

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

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


3.
Программная реализация

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

3.1. Выбор аппаратной и программной платформ

Сегодняшний рынок программного обеспечения предъявляет большие требования к создаваемым проектам. Например, для современных программных средств важными требованиями являются переносимость, мультиплатформенность и масштабируемость. Под переносимостью здесь подразумевается возможность использовать программное средство на разных программно-аппаратных платформах без существенной переработки кода. А масштабируемость подразумевает добавление новых функций и свойств программного средства с минимальным изменением всего кода в целом. Идеальным является вариант, который позволяет наращивать мощность вычислительной системы без изменения основного кода, лишь добавляя новые модули [15].

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

При исследовании программно-аппаратной обеспеченности КПОИиП (а именно на него в первую очередь и ориентирован программный комплекс) было выявлено, что 100 % аппаратного обеспечения составляют IBM PC совместимые машины.

Исходя из этого результата, а так же из того, что платформа IBM PC вообще является наиболее распространенной в России, было принято решение разрабатывать ПП именно под эту аппаратную платформу.

Выбор программной платформы базировался на результатах этих же исследований. Проанализировав системное программное обеспечение IBM PC совместимых машин, были получены следующие результаты: 97 % приходиться - ОС Windows XP, 3% - ОС Windows 2003 Server. Исходя из этих результатов, а так же учитывая, что Windows XP является ОС семейства Windows, которая по сравнению с предыдущей версией (Windows 2000) обеспечивает большую надежность, быстродействие и легкость управления, было принято решение разрабатывать ПП с таким расчетом, чтобы обеспечить его функционирование, на программной платформе Windows XP.

3.2. Выбор среды разработки пользовательского интерфейса

В качестве основной среды разработки использовалась среда разработки Borland Delphi 7.0. Delphi 7.0 – одна из самых мощных систем, позволяющих на самом современном уровне создавать как отдельные прикладные программы, так и разветвленные комплексы, предназначенные для работы в корпоративных сетях и в Internet. В качестве основного языка программирования в Delphi применяется Object Pascal. Это объектно-ориентированный язык программирования позволяющий организовать современный подход к построению программ и систем разного уровня сложности [16]. Следующий важный аспект применения Delphi заключается в широком использовании технологии быстрой разработки приложений (RAD). Это позволяет разрабатывать приложения в несколько раз быстрее более традиционных способов разработки. Например, при использовании традиционных методов программирования, создание графического интерфейса программы, включая обработку событий мыши, клавиатуры, включение в программу изображений и звука даже при использовании специальных API занимало довольно большую часть времени программиста и зачастую программный код, отвечающий за интерфейс, занимал около 85-95% от общего кода программы [17].

Одним из методов решения стало появление концепции визуальных языков программирования, где разработка интерфейса приложений упрощалась за счет библиотеки стандартных элементов управления. Такая концепция была впервые реализована в языке Microsoft Visual Basic. Но компания Borland пошла гораздо дальше и расширила ее до RAD. Тем самым, внедрив возможность не только быстро строить из готовых элементов интерфейс приложения, но так же включать другие объекты, реализующие различные аспекты логики программы, например, объекты доступа к базам данных или взаимодействия с сетью [18].

Система Delphi обеспечивает возможность визуального программирования на нем с помощью библиотеки визуальных компонентов VCL.

Библиотека визуальных компонентов (Visual Component Library, VCL) содержит большое количество классов, предназначенных для быстрой разработки приложений. Библиотека написана на Object Pascal и имеет непосредственную связь с интегрированной средой разработки приложений Delphi. Несмотря на название, в VCL содержатся главным образом не визуальные компоненты, однако имеются и визуальные. При этом все компоненты являются классами, но не все классы являются компонентами. Все классы VCL расположены на определенном уровне иерархии и образуют дерево (иерархию) классов [19].

Хотя Delphi не имеет своего формата таблиц БД, тем не менее, обеспечивает мощную поддержку большого количества различных СУБД — как локальных, так и промышленных.

С помощью Delphi 7.0 можно:

  •  создавать законченные приложения самой различной направленности. От чисто вычислительных, до мультимедиа;
  •  быстро создавать профессиональный, мультиязычный оконный интерфейс для любых приложений;
  •  создавать мощные системы работы с локальными и удаленными базами данных любых типов, при этом имеются средства автономной отладки приложений с последующим выходом в сеть;
  •  создавать многозвенные распределенные приложения, основанные на различных технологиях;
  •  создавать приложения, которые управляют другими приложениями, в частности, такими программами, как Word и Excel, Access;
  •  создавать кросс-платформенные приложения, которые можно эксплуатировать как в Windows, так и в Linux;
  •  создавать приложения различных классов для работы в Internet и интранет;
  •  создавать профессиональные программы установки для приложений, учитывающие все требования и специфику операционной системы;
  •  создавать отчеты, библиотеки, компоненты.

Это список, только самых основных возможностей Delphi 7.0. Большинство из них соответствует поставленной перед нами задаче о разработке мультиплатформенного приложения, работающего с большими объемами данных, и взаимодействующего с другими приложениями [20].

3.3. Выбор способа и средств для организации хранения данных

При анализе существующих популярных СУБД наиболее соответствующей одновременно всем необходимым требованиям стала СУБД MS Access.

MS Access – это качественная СУБД, которая приобрела довольно большую популярность во всем мире. Особенно, где дело касается разработки некоммерческих программных проектов по обработке данных. Перечислим основные возможности MS Access [21]:

  •  многопоточность;
  •  поддержка нескольких одновременных запросов;
  •  оптимизация связей с присоединением многих данных за один проход;
  •  записи фиксированной и переменной длины;
  •  ODBC драйвер в комплекте с исходными текстами;
  •  гибкая система привилегий и паролей.
  •  поддержка ключевых и специальных полей в операторе CREATE;
  •  поддержка различных типов чисел (integer, float, double, fixed и т.д.), строк переменной длины и меток времени;
  •  интерфейс с языками C++ и Perl, наличие удобной библиотеки для написания интерфейсов для других языков (например, для Delphi);
  •  основанная на потоках, быстрая система памяти;
  •  утилита проверки и ремонта таблицы (isamchk), а также другие полезные административные утилиты;
  •  все текстовые данные храняться в различных типах кодировок, например в KOI-8-R, cp1251 и т.д. с возможностью их перекодирования «на лету»;
  •  все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках;
  •  ППевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице;
  •  легкость управления таблицей, включая добавление и удаление ключей и полей;
  •  мультиплатформенность, позволяющая переносить базу данных между различными ОС;
  •  относительно небольшие требования к ресурсам системы;
  •  большие возможности в области сохранения целостности данных (включая транзакции).

Достоинством MS Access является то, что она имеет простой графический интерфейс, который позволяет создавать не только базы данных, но простые и сложные приложения. В отличие от многих СУБД, MS Access хранит всю информацию в одном файле, позволяет не только вводить данные, но и контролировать их [22].

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

3.4. Реализация базы данных

Благодаря использованию системы драйверов ADO (ActiveX Data Object), удалось полностью сохранить логическую структуру базы данных.

ADO – это пользовательский интерфейс к любым типам данных, включая реляционные и не реляционные базы данных, электронную почту, системные, текстовые и графические файлы. Связь с данными осуществляется посредством технологии OLE DB. Одно из ключевых преимуществ ADO как превосходного интерфейса для баз данных заключается в его гибкости. Эту гибкость предоставляет набор интерфейсов OLE, обеспечивающих унифицированный доступ приложений к данным из разнообразных источников. Эти интерфейсы поддерживают подходящий для конкретного источника данных объем функциональности СУБД, что делает доступной хранящуюся в нем информацию.

Ниже представленна структура таблиц базы данных:

Таблица «Сведения_о_преподавателе»

Название поля

Тип поля

Размер поля

Индекс

IDP

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Фамилия

Текстовый

20

Имя

Текстовый

15

Отчество

Текстовый

20

Дата рождения

Дата/время

Пол

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Пол»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Пол

Текстовый

15

Таблица «Паспортные_данные»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Серия

Числовой

Длинное целое

Нет

Номер

Числовой

Длинное целое

Нет

Кем_выдан

Текстовый

30

Когда_выдан

Дата/время

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Дата_поступления_на_работу»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Дата_поступления_на_работу_в_КПОИиП

Дата/время

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Учёная_степень»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Учёная степень

Текстовый

20

Дата присвоения учёной степени

Дата/время

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Должность»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Должность

Текстовый

20

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Разряд»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Разряд

Числовой

Длинное целое

Да (Допускаются совпадения)

Дата получения разряда

Дата/время

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Категория»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Категория

Числовой

Длинное целое

Да (Допускаются совпадения)

Дата получения данной категории

Дата/время

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «КПК»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Наименование КПК

Текстовый

20

Время прохождения

Текстовый

20

Место прохождения

Текстовый

30

Планируемый год прохождения КПК

Числовой

Длинное целое

Нет

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Внеаудиторная_работа»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Виды деятельности

Текстовый

20

Период работы

Текстовый

20

IDP

Числовой

Длинное целое

Да (Допускаются совпадения)

Таблица «Список_категорий»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Категория

Текстовый

20

Таблица «Список_разрядов»

Название поля

Тип поля

Размер поля

Индекс

ID

Счетчик

Длинное целое

Да (Совпадения не допускаются)

Разряд

Текстовый

20

3.5 Реализация пользовательского интерфейса

Разработка пользовательского интерфейса была проведена с помощью средств программной среды Borland Delphi 7.0. Интерфейс основан на принципе иерархи форм. При запуске приложения на экране монитора появляется форма ввода пароля (рис. 3.5.1).

Рис. 3.5.1. Форма ввода пароля

После ввода пароля открывается главная форма. Работа в этой форме происходит при помощи кнопок: “Сведения о преподавателях”, “Настройки”, “О программе” и “Выход” (рис. 3.5.2).

Рис. 3.5.2. Главная форма

После нажатия на кнопку “Сведения о преподавателях” открывается следующее окно (рис. 3.5.3).

Рис. 3.5.3. Окно “Сведения о преподавателях”

При нажатии на кнопку “Сведения о преподавателях” откроется форма с данными о них (рис. 3.5.4). В верхней части формы располагаются первичные данные о преподавателях (Ф.И.О., Дата рождения, Пол).

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

На форме имеются кнопки для добавления, удаления записей о преподавателях и осуществления поиска.

Рис. 3.5.4. Окно “Преподаватели”

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

Для добавления, удаления вторичных данных необходимо выбрать соответствующую вкладку (паспортные данные, дата поступления на работу, учёная степень, должность, разряд, категория) и нажать кнопку “Добавить” или “Удалить”.

На форме “Сведения о преподавателях”, при нажатии на кнопку “Курсы повышения квалификации” откроется форма для заполнения данных о пройденных и планируемых курсах (рис. 3.5.5), при нажатии на кнопку “Внеаудиторная работа” откроется форма для заполнения данных о проводимой преподавателями внеаудиторной работе (рис. 3.5.6), а при нажатии на кнопку “Учебная нагрузна преподавателей” откроется форма для заполнения данных об учебной нагрузке на данный учебный год (рис. 3.5.7).

Рис. 3.5.5. Окно “Курсы повышения квалификации”

Рис. 3.5.6. Окно “Внеаудиторная работа

Рис. 3.5.7. Окно “Учебная нагрузна на преподавателей”

Для настройки программы, на главной форме необходимо нажать на кнопку “Настройки”, после чего откроется форма (рис. 3.5.8) на которой и производятся соотвтствующие настройки.

Рис. 3.5.8. Окно “Настройки

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

Выводы

1. Основным средством разработки пользовательского интерфейса на основе анализа его возможностей была выбрана среда Delphi 7.0.

2. Средством организации и хранения данных на основе аналогичного анализа была выбрана СУБД MS ACCESS.

3. Была разработана структура базы данных.

4. Были определены общие принципы построения пользовательского интерфейса. Реализованный интерфейс пользователя понятен и прост в обращении.


4. Анализ качества разработанного программного обеспечения

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

Такое отношение к программному обеспечению неизбежно отразилось на технологии его разработки. Все больший процент времени разработки проекта уделяется заключительным этапам, включающим разного рода отладки, тестирования, проверки. С этим связано появление новой терминологии, прочно утвердившейся даже в непрофессиональной среде. К примеру, термины Бета - тестирование, Бета - версии широко используются не только разработчиками. Показательно, что сегодня многие крупные фирмы - производители ПО делают акцент на надежности. Особенно заметной в этом плане является Microsoft, которая построила на этом свою рекламную кампанию [23].

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

4.1. Показатели качества

Набор критериев оценки качества ПО определен ГОСТом [24] и включает следующие критерии:

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

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

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

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

Эффективность программного средства характеризуется усилиями потраченными для выявления недостатков программного средства или причин его отказов, либо для установления частей, которые должны быть видоизменены кроме того, оно характеризуется усилиями, необходимыми для внесения в него изменений, связанных с устранением дефектов или приведением в соответствие с изменившейся средой функционирования и усилиями, необходимыми для его проверки после проведения какого-либо видоизменения [26].

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

Сопровождаемость – совокупность свойств программною средства, характеризующая усилия, которые необходимы для его модификации. Модификация может осуществляться для устранения дефектов, усовершенствования программного средства или его адаптации к изменениям в условиях функционирования.

Одной из важнейших характеристик качества ПП является надежность.

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

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

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

Достижение приведенных выше показателей качества осуществлялось в соответствии с техническим заданием (П.1), в котором заказчик указал требования к функциональности, надежности, мобильности и удобству использования [27]. В процессе разработки программы все требования предъявленные заказчиком были выполнены.

4.2. Результаты тестовых испытаний

Тестирование является одним из важных этапов жизненного цикла ПП, направленным на повышение качественных характеристик. Тестирование – это процесс многократного выполнения программы с целью обнаружения ошибок. Программа тестируется для того, чтобы повысить уровень ее надежности, т.е. выявить максимальное число ошибок [28].

Программное обеспечение АРМ заведующего ПЦК проходил тестирование в КПОИиП.

 Тестирование на стадии анализа

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

Тестирование на стадии реализации ПП

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

Также было проведено тестирование проекта по модели Миллса [29]. Она предполагает внесение случайным образом ошибок в проект. Эти ошибки протоколируются и держатся в тайне от группы тестирования. По результатам тестирования найденные ошибки делятся на обычные и внесенные искусственно, и, на основе этой информации, определяется его качество. Предполагается, что все ошибки, и естественные, и искусственно внесенные, имеют равную вероятность быть найденными в процессе тестирования.

Соотношение

        (1)

дает возможность оценить N - первоначальное количество ошибок в программе. В данном соотношении, которое называется формулой Миллса, S - количество искусственно внесенных ошибок, n - число найденных собственных ошибок, V - число обнаруженных искусственных ошибок. Для вычисления вероятности отсутствия ошибок используется следующая формула:

        (2)

где К - количество собственных ошибок S - число искусственных ошибок.

Было внесено S = 10 искусственных ошибок. В процессе тестирования было обнаружено 10 искусственных ошибок и 1 собственная ошибка. Вероятность безотказной работы программы получалась равной: 10/12. Ошибка была исправлена. В период опытной эксплуатации программа показала хорошие результаты, и других ошибок обнаружено не было.

Тестирование на стадии внедрения

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

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

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

4.3. Предложения по сопровождению и улучшению качества программного продукта

Сопровождение – процесс, связанный с изменениями программных средств, документации к ним, системного окружения программных средств, вызванными возникшими проблемами или потребностями в модернизации или настройке. На этапе сопровождения предоставляются услуги по сопровождению программного продукта, состоящие в контролируемом изменении ПП с целью сохранения функциональных возможностей [30].

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

В следующих версиях ПП предполагается:

  1.  усовершенствовать пользовательский интерфейс;
  2.  усовершенствовать систему формирования отчетов;
  3.  добавить новые функциональные модули.

Выводы

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


Заключение

1. Разработано программное обеспечение автоматизированного рабочего места заведующего ПЦК КПОИиП, которое позволяет: получить более рациональный вариант решения задач обработки данных о преподавателях; освободить заведующего ПЦК от рутинной работы за счет ее автоматизации; обеспечить достоверной информацией; заменить бумажные носители данных на электронные.

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

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

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

5. Чтобы обеспечить максимально камфортную работу пользователей, большое внимание было уделено разработке пользовательского интерфейса.

6. Разработанное программное средство внедрено и успешно используется в КПОИиП.

7. Спиральная модель жизненного цикла ПО, которая была выбрана при проектировании системы, позволяяет дорабатывать систему в процессе эксплуатации.


Библиографический список

  1.  Егоров Н.В. Информационные технологии. – 2001. № 36. – С.14-16.
  2.  Шкарина Л.Н. Методические рекомендации по выполнению научно-исследовательских работ для студентов информационных специальностей, –Абакан, Издательство Хакасского государственного университета им. Н.Ф. Катанова, 2003.
  3.  Кузнецов С.Д.  Основы современных баз данных. Центр информационных технологий
  4.  Международные стандарты, поддерживающие жизненный цикл программных средств. М., МП "Экономика", 1996.
  5.  Модели жизненного цикла ПО. http://www.citforum.ru/ database/case/glava 1 _2. shtml.
  6.  Проектирование информационных систем http://pmn.narod.ru/disciplins/cis/l02.doc
  7.  Основы методологии проектирования ПС http://rus-lib.ru/book/28/ps/07/014-026.html 
  8.  Рамбо Дж., Якобсон А., Буч Г. UML: специальный справочник. - СПб.: Питер, 2002.-656 с: ил.
  9.  Леоненков А.В. Самоучитель UML. - СПб.: БХВ-Петербург, 2001. - 304 с: ил.
  10.  Харитонова И.А., Михеев В.Д. Microsoft ® Access 2000. - СПб.: БХВ -Санкт-Петербург, 2000. - 1088 с: ил.
  11.  Карпов Б. Microsoft Access 2000: справочник - СПб: Питер, 2001. - 416 с: ил.
  12.  Калянов Г.Н. Консалтинг при автоматизации предприятия. СПб.: Питер, 2001.
  13.  Харитонова И.А., Михеев В.Д.  Microsoft@Access 2003 : учебный курс. – СПб.: издательство «Питер», 2000.
  14.  Элементы  модели "сущность-связь".  http://infosystem.ru/designing/methodology /er/er.html
  15.  Эрик Дж. Брауде. Технология разработки программного обеспечения. http://www.delphimaster.ru/books/978594723663/fragment.html.
  16.  Фаронов В.В. Delphi 6. Учебный курс. - М.: Издатель Молгачева СВ.,

2001.-672 с.

  1.  Кандзюба С.П., Громов, Delphi 6. Базы данных и приложения – М.: «Нолидж», 2001. – 420 с.
  2.  Карпов Б. Visual Basic 6.0: Пер. с англ. - СПб.: БХВ-Петербург, 2001.- 992с.
  3.  Шумаков П.В., Фаронов В.В. Delphi 5 руководство разработчика баз данных. – М.: «Нолидж», 2000.
  4.  Архангельский А.Я., Программирование в Delphi 7. - М.: Бином, 2005. -1152 с.
  5.  Карпов Б. Microsoft Access 2003: справочник - СПб: Питер, 2003. - 416 с
  6.  Системы управления базами данных и знаний: Справ. изд.
    /Наумов А.Н., Вендров А.М., Иванов В.К. и др.; Под ред. Наумова А.Н. М.: Финансы и статистика, 1991.
  7.  ГОСТ 28806-90. Качество программных средств. Термины и определения. М.: Издательство стандартов, 1990.
  8.  ГОСТ   28195-89.   Оценка   качества   программных   продуктов.   Общие положения. М.: Издательство стандартов, 1989.
  9.  Лукач Ю. Тестирование программного обеспечения. www.b-test.narod.ru
  10.  Данилко В. Тестирование программных продуктов  2003. http://www.refportal.ru
  11.  ГОСТ 34.602-89. Информационные технологии. Техническое задание на создание автоматизированной системы. М.: Издательство стандартов, 1990
  12.  Липаев         В.          Оценка         качества         программных         средств. http://www.setevoi.ru/weekly
  13.  Петренко А., Бритвина Е., Грошев С., Монахов А., Петренко О. Тестирование на основе моделей. http://www.citforum.ru/SE/testing/model

  1.  Котляров В.П., Минаев Д.В.. Методы и средства автоматизации тестирования программного проекта. Учебное пособие. – СПб.: Изд-во Санкт-Петербургского государственного технического университета, 1998.
  2.  Метрики качества программного обеспечения http://www.pmprofy.ru/content/rus/67/679-article.asp


Глоссарий

Атрибут – информация, описывающая объект и служащая его идентификатором (поименованная характеристика сущности). В записи данных атрибут представлен типом элемента данных.

База данных - это совокупность сведений о конкретных объектах реального мира в какой-либо предметной области.

Данные – это описание любого явления (или идеи), которое представляется достаточно ценным, чтобы его сформулировать и точно зафиксировать.

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

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

Информация – это приращение знаний, которое может  быть выведено на основе данных.

Ключ – совокупность атрибутов, значение которых однозначно определяют кортеж в отношении.

Ключ базы данных – уникальный идентификатор, связанный с каждым экземпляром записей в базе данных (внутренний системный номер записи).

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

Объект – это «нечто, о чем мы хотим хранить информацию».

Связь – ассоциация между экземплярами примитивных или агрегированных объектов (записей) данных.

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

Схема – графическое или формальное описание логической структуры базы данных.

Тестирование – процесс многократного выполнения программы с целью обнаружения ошибок.

Тип данных – множество операций. Характеризующих определенное множество значений.

Целостность базы данных – свойство базы данных, при выполнении которого база данных содержит полную и непротиворечивую информацию, необходимую и достаточную для корректного функционирования приложений; это свойство сохраняется при всех манипуляциях с данными.

Эффективность – качество выполнения требуемых функций при минимальных затратах аппаратных и программных ресурсов. Для корректной оценки эффективности требуется провести тестирование программного продукта на наличие ошибок.


Список
 аббревиатур

ADO – ActiveX Data Objects

ERD – Entity-Relationship Diagrams

MDI – Multiple Document Interface

SADT – Structured Analysis and Design Technique

АРМ – Автоматизированное Рабочее Место

БД – База Данных

ИС – Информационная Система

НДОУ –  Негосударственное Дошкольное Образовательное Учреждение

ПО – Программное Обеспечение

ПП Программный продукт

ПППрограммное средство

RADRapid Application Development


Приложения

П.1. Техническое задание на разработку АРМ заведующего ПЦК КПОИиП


ГОУ ВПО “Хакасский Государственный университет им. Н.Ф. Катанова”

Колледж педагогического образования, информатики и права

Директор Колледжа педагогического образования информатики и права     и    
Надеева Н.В._____________________                

Студент группы И-42

Деревягин В. В.  ___________________

Разработка программного обеспечения автоматизированного рабочего места заведующего ПЦК КПОИиП

Техническое задание

ЛИСТ УТВЕРЖДЕНИЯ

Листов 6

__________________ Деревягин В. В.

__________________ Дата подписи

г. Абакан, 2006 г.

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

“Хакасский Государственный университет им. Н.Ф. Катанова”

Колледж педагогического образования, информатики и права

Техническое задание

Разработка ПО автоматизированного рабочего места заведующего ПЦК КПОИиП

Листов 6

г. Абакан, 2006 г.

ВВЕДЕНИЕ

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

Целью данной работы является создание программного продукта, предоставляющего пользователю (заведующему ПЦК КПОИиП) возможность хранения, обработки и получения информации о преподавателях КПОИиП и распределении учебной нагрузки между ними.

ОСНОВАНИЯ ДЛЯ РАЗРАБОТКИ

Основанием для разработки ПО автоматизированного рабочего места заведующего ПЦК, является задание на дипломную работу выданное ПЦК ЕНД и М колледжа педагогического образования информатики и права, Хакасского государственного университета им. Н.Ф. Катанова и утвержденное заведующим ПЦК.

НАЗНАЧЕНИЕ РАЗРАБОТКИ

Разрабатываемое программное средство предназначено для обеспечения оперативного ввода, хранения, быстрого доступа к данным о преподавателях КПОИиП, распределении учебной нагрузки между ними, а так же создания соответствующей отчётности.

СОСТАВ ВЫПОЛНЯЕМЫХ ФУНКЦИЙ

Разрабатываемое программное обеспечение АРМ заведующего ПЦК КПОИиП должно обладать следующими функциями:

  •  обеспечение ввода и хранения данных о преподавателях;
  •  предоставление удобного доступа к храмимым данным;
  •  автоматизация процессов редактирования данных о преподавателях;
  •  обеспечение удобного поиска информации о преподавателях;
  •  возможность вывода карточек служебных поручений преподавателя в виде соответствующих отчётов на печать;

ТРЕБОВАНИЯ К ПРОГРММЕ И ПРОГРАММНОМУ ИЗДЕЛИЮ

Требования к автоматизированной системе и функциональным характеристикам

Разрабатываемоя модель должна обладать следующими функциями:

  •  работать под управлением ОС Windows NT/2000/XP;
    •  иметь понятный и простой интерфейс пользователя;
    •  хранить базу данных о преподавателях.

Требования к надёжности

Надежность системы в целом зависит от надежности используемой операционной системы. Кроме того:

  •  система не должна содержать ошибок, искажающих внешние спецификации, обнаруживаемые тестированием;
    •  система не должна переходить в неопределенное состояние при неправильных действиях пользователя.

Условия эксплуатации

  •  Система должна быть рассчитана на пользователя, не знакомого с ЭВМ и управлением операционной системой;
    •  количество манипуляций должно быть минимальным, всвязи с чем, интерфейс следует строить на основе выбора действий с использованием манипулятора мышь;
    •  количество информации, которое необходимо воспринять и переработать пользователю для принятия решений по управлению системой, должно быть минимальным;
    •  система должна реагировать на недопустимые действия пользователя или на неразрешенные сочетания данных, либо игнорируя их, либо выдавая соответствующее предупреждение.

Требования к составу и параметрам технических средств

Для нормальной работы ПП необходимы:

  •  компьютер с процессором Intel Pentium – III 450 Mhz или 100%-совместимым;
    •  оперативная память не менее 64 Mb;
    •  жесткий диск объемом не менее 1 Gb.

Требования к информационной и программной совместимости

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

  1.  cистема должна работать под управлением ОС Windows  98/2000/XP/2003, поэтому требуется совместимость исполняемого модуля и библиотек динамического подключения стандартам, используемым этими ОС на платформе IBM PC.

Требования к маркировке и упаковке

Нет.

Требования к транспортированию и хранению

Нет.

Требования к сопроводительной документации

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

  •  установка;
  •  настройка;
  •  работа с графическим интерфейсом;
  •  описание возможностей модификации.

Стадии и этапы разработки

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

  •  сбор требований к очередной версии продукта;
  •  анализ;
  •  проектирование;
  •  реализация и тестирование;
  •  внедрение.

После завершения очередного витка жизненного цикла, весь процесс повторяется заново.

Порядок контроля и приемки

Испытания программного продукта и контроль качества его работы провести на базе КПОИиП заведующим ПЦК. Во время испытаний проверить работу системы по следующим позициям:

  1.  запуск всех частей программного продукта;
  2.  выполнение пробного заполнения БД;
  3.  выполнение пробного поиска информации в БД.

После разработки, ПО АРМ заведующего ПЦК КПОИиП будет передано в эксплуатацию. Этот факт должен быть засвидетельствован актом внедрения.

Требования к составу и содержанию работ по внедрению программного средства в эксплуатацию

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

Предложения по применению и развитию

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

На дальнейших этапах разработки планируется:

  •  усовершенствовать пользовательский интерфейс;
    •  усовершенствовать систему формирования отчетов;
    •  добавить новые функциональные модули.


П.2. Описание демонстрационного ролика

Представленный демонстрационный ролик содержит презентацию, иллюстрирующую принципы работы с ПО АРМ заведующего ПЦК КПОИиП.

Представленный ролик содержит в себе видеозапись, демонстрирующую следующие этапы работы с ПО АРМ  заведующего ПЦК КПОИиП:

  •  Запуск АРМ;
  •  Идентификация пользователя;
  •  Просмотр данных о преподавателях;
  •  Поиск данных о сотрудниках;
  •  Выбор и просмотр отчетов.


П.3. Диаграмма потоков данных

Рис. П.3.1. Схема потоков данных после внедрения ПОАРМ заведующего ПЦК

Рис. П.3.2. Контекстная диаграмма ПО АРМ заведующего ПЦК


П.4.
Схема данных

Рис. П.4.1 Схема данных ПО АРМ заведующего ПЦК КПОИиП


П.5. Руководство пользователя

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

Рис. 3.5.1. Форма ввода пароля

После ввода пароля открывается главная форма. Работа в этой форме происходит при помощи кнопок: “Сведения о преподавателях”, “Настройки”, “О программе” и “Выход” (рис. 3.5.2).

Рис. 3.5.2. Главная форма

После нажатия на кнопку “Сведения о преподавателях” открывается следующее окно (рис. 3.5.3).

Рис. 3.5.3. Окно “Сведения о преподавателях”

При нажатии на кнопку “Сведения о преподавателях” откроется форма с данными о них (рис. 3.5.4). В верхней части формы располагаются первичные данные о преподавателях (Ф.И.О., Дата рождения, Пол).

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

На форме имеются кнопки для добавления, удаления записей о преподавателях и осуществления поиска.

Рис. 3.5.4. Окно “Преподаватели”

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

Для добавления, удаления вторичных данных необходимо выбрать соответствующую вкладку (паспортные данные, дата поступления на работу, учёная степень, должность, разряд, категория) и нажать кнопку “Добавить” или “Удалить”.

На форме “Сведения о преподавателях”, при нажатии на кнопку “Курсы повышения квалификации” откроется форма для заполнения данных о пройденных и планируемых курсах (рис. 3.5.5), при нажатии на кнопку “Внеаудиторная работа” откроется форма для заполнения данных о проводимой преподавателями внеаудиторной работе (рис. 3.5.6), а при нажатии на кнопку “Учебная нагрузна преподавателей” откроется форма для заполнения данных об учебной нагрузке на данный учебный год (рис. 3.5.7).

Рис. 3.5.5. Окно “Курсы повышения квалификации”

Рис. 3.5.6. Окно “Внеаудиторная работа

Рис. 3.5.7. Окно “Учебная нагрузна на преподавателей”

Для настройки программы, на главной форме необходимо нажать на кнопку “Настройки”, после чего откроется форма (рис. 3.5.8) на которой и производятся соотвтствующие настройки.

Рис. 3.5.8. Окно “Настройки”

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


П.6. Документированный листинг программы

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, ExtCtrls, Buttons, XPMan, AdvGlowButton, ImgList, StdCtrls;

type

 TMain = class(TForm)

   Image1: TImage;

   XPManifest1: TXPManifest;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   AdvGlowButton4: TAdvGlowButton;

   ImageList1: TImageList;

   CheckBox1: TCheckBox;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton4Click(Sender: TObject);

   procedure FormShow(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Main: TMain;

implementation

uses Unit2, Unit9, Unit10;

{$R *.dfm}

procedure TMain.FormCreate(Sender: TObject);

begin

   Main.Position := poScreenCenter;

end;

procedure TMain.AdvGlowButton1Click(Sender: TObject);

begin

   FormSved.ShowModal;

end;

procedure TMain.AdvGlowButton2Click(Sender: TObject);

begin

   Application.Terminate;

end;

procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);

begin

   Application.Terminate;

end;

procedure TMain.AdvGlowButton3Click(Sender: TObject);

begin

   SmenaPass.ShowModal;

end;

procedure TMain.AdvGlowButton4Click(Sender: TObject);

begin

   About.ShowModal;

end;

procedure TMain.FormShow(Sender: TObject);

begin

 if CheckBox1.Checked = true then

 AdvGlowButton3.Enabled := False;

end;

end.

unit Unit2;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, Buttons, AdvGlowButton, jpeg, ExtCtrls, ImgList;

type

 TFormSved = class(TForm)

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   AdvGlowButton4: TAdvGlowButton;

   ImageList1: TImageList;

   Image1: TImage;

   AdvGlowButton5: TAdvGlowButton;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton4Click(Sender: TObject);

   procedure AdvGlowButton5Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 FormSved: TFormSved;

implementation

uses Unit3, Unit4, Unit6, Unit7;

{$R *.dfm}

procedure TFormSved.FormCreate(Sender: TObject);

begin

    Position := poScreenCenter;

end;

procedure TFormSved.AdvGlowButton1Click(Sender: TObject);

begin

   Prepod.ShowModal;

end;

procedure TFormSved.AdvGlowButton2Click(Sender: TObject);

begin

   Kursi.ShowModal;

end;

procedure TFormSved.AdvGlowButton3Click(Sender: TObject);

begin

   VneAudRab.ShowModal;

end;

procedure TFormSved.AdvGlowButton4Click(Sender: TObject);

begin

   UchNagruzka.ShowModal;

end;

procedure TFormSved.AdvGlowButton5Click(Sender: TObject);

begin

 Close;

end;

end.

unit Unit3;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, DB, ADODB, Grids, DBGrids, ComCtrls, ExtCtrls, DBCtrls, StdCtrls,

 Buttons, AdvGlowButton, AdvOfficePager, AdvOfficePagerStylers, BaseGrid,

 AdvGrid, DBAdvGrid, ImgList, Menus, AdvMenus, AdvMenuStylers, asgprint,

 asgprev, AdvEdit, AdvEdBtn, PlannerDatePicker, PlannerDBDatePicker,

 AdvPicture;

type

 TPrepod = class(TForm)

   DataSource1: TDataSource;

   ADOQuery2: TADOQuery;

   DataSource3: TDataSource;

   DataSource4: TDataSource;

   DataSource5: TDataSource;

   DataSource6: TDataSource;

   DataSource7: TDataSource;

   ADOQuery3: TADOQuery;

   ADOQuery4: TADOQuery;

   ADOQuery5: TADOQuery;

   ADOQuery6: TADOQuery;

   ADOQuery7: TADOQuery;

   ADOTable1: TADOTable;

   DBNavigator1: TDBNavigator;

   ADOQuery2ID: TAutoIncField;

   ADOQuery2DSDesigner: TIntegerField;

   ADOQuery2DSDesigner2: TIntegerField;

   ADOQuery2_: TWideStringField;

   ADOQuery2_2: TDateTimeField;

   ADOQuery2IDP: TIntegerField;

   DataSource2: TDataSource;

   ADOQuery3ID: TAutoIncField;

   ADOQuery3_____: TDateTimeField;

   ADOQuery3IDP: TIntegerField;

   ADOQuery4ID: TAutoIncField;

   ADOQuery4DSDesigner: TWideStringField;

   ADOQuery4DSDesigner2: TDateTimeField;

   ADOQuery4IDP: TIntegerField;

   ADOQuery5ID: TAutoIncField;

   ADOQuery5DSDesigner: TWideStringField;

   ADOQuery5IDP: TIntegerField;

   AdvGlowButton4: TAdvGlowButton;

   AdvGlowButton5: TAdvGlowButton;

   AdvGlowButton7: TAdvGlowButton;

   AdvOfficePager1: TAdvOfficePager;

   AdvOfficePagerOfficeStyler1: TAdvOfficePagerOfficeStyler;

   AdvOfficePage1: TAdvOfficePage;

   AdvOfficePage2: TAdvOfficePage;

   AdvOfficePage3: TAdvOfficePage;

   AdvOfficePage4: TAdvOfficePage;

   AdvOfficePage5: TAdvOfficePage;

   AdvOfficePage6: TAdvOfficePage;

   DBNavigator2: TDBNavigator;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   DBNavigator3: TDBNavigator;

   DBNavigator4: TDBNavigator;

   DBNavigator5: TDBNavigator;

   DBNavigator6: TDBNavigator;

   DBNavigator7: TDBNavigator;

   AdvGlowButton9: TAdvGlowButton;

   AdvGlowButton11: TAdvGlowButton;

   AdvGlowButton14: TAdvGlowButton;

   AdvGlowButton16: TAdvGlowButton;

   AdvGlowButton17: TAdvGlowButton;

   AdvGlowButton19: TAdvGlowButton;

   AdvGlowButton20: TAdvGlowButton;

   AdvGlowButton22: TAdvGlowButton;

   ADOTable1IDP: TAutoIncField;

   ADOTable1DSDesigner: TWideStringField;

   ADOTable1DSDesigner2: TWideStringField;

   ADOTable1DSDesigner3: TWideStringField;

   ADOTable1_: TDateTimeField;

   ADOTable1DSDesigner4: TIntegerField;

   ADOTable2: TADOTable;

   ADOTable1IntegerField: TStringField;

   ADOQuery7ID: TAutoIncField;

   ADOQuery7DSDesigner: TIntegerField;

   ADOQuery7DSDesigner2: TDateTimeField;

   ADOQuery7IDP: TIntegerField;

   ADOTable3: TADOTable;

   ADOQuery7Field: TStringField;

   ADOQuery6ID: TAutoIncField;

   ADOQuery6DSDesigner: TIntegerField;

   ADOQuery6DSDesigner2: TDateTimeField;

   ADOQuery6IDP: TIntegerField;

   ADOTable4: TADOTable;

   ADOQuery6StringField: TStringField;

   Timer1: TTimer;

   ImageList1: TImageList;

   AdvGlowButton6: TAdvGlowButton;

   AdvPopupMenu1: TAdvPopupMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   CheckBox1: TCheckBox;

   ImageList2: TImageList;

   AdvMenuOfficeStyler1: TAdvMenuOfficeStyler;

   DBAdvGrid1: TDBAdvGrid;

   AdvGridPrintSettingsDialog1: TAdvGridPrintSettingsDialog;

   N5: TMenuItem;

   AdvPreviewDialog1: TAdvPreviewDialog;

   N6: TMenuItem;

   N7: TMenuItem;

   DBAdvGrid2: TDBAdvGrid;

   ImageList3: TImageList;

   AdvPopupMenu2: TAdvPopupMenu;

   Timer2: TTimer;

   N8: TMenuItem;

   N9: TMenuItem;

   N10: TMenuItem;

   N11: TMenuItem;

   ImageList4: TImageList;

   AdvPicture1: TAdvPicture;

   GroupBox1: TGroupBox;

   PlannerDBDatePicker1: TPlannerDBDatePicker;

   Timer3: TTimer;

   DBAdvGrid3: TDBAdvGrid;

   AdvGlowButton13: TAdvGlowButton;

   AdvPopupMenu3: TAdvPopupMenu;

   N12: TMenuItem;

   N13: TMenuItem;

   N14: TMenuItem;

   N15: TMenuItem;

   Timer4: TTimer;

   DBAdvGrid4: TDBAdvGrid;

   AdvPopupMenu4: TAdvPopupMenu;

   Timer5: TTimer;

   N16: TMenuItem;

   N17: TMenuItem;

   N18: TMenuItem;

   N19: TMenuItem;

   DBAdvGrid5: TDBAdvGrid;

   AdvPopupMenu5: TAdvPopupMenu;

   Timer6: TTimer;

   N20: TMenuItem;

   N21: TMenuItem;

   N22: TMenuItem;

   N23: TMenuItem;

   DBAdvGrid6: TDBAdvGrid;

   AdvPopupMenu6: TAdvPopupMenu;

   N24: TMenuItem;

   N25: TMenuItem;

   N26: TMenuItem;

   N27: TMenuItem;

   Timer7: TTimer;

   DataSource8: TDataSource;

   procedure FormCreate(Sender: TObject);

   procedure DBGrid1CellClick(Column: TColumn);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton4Click(Sender: TObject);

   procedure AdvGlowButton5Click(Sender: TObject);

   procedure AdvGlowButton6Click(Sender: TObject);

   procedure AdvGlowButton7Click(Sender: TObject);

   procedure AdvGlowButton8Click(Sender: TObject);

   procedure AdvGlowButton9Click(Sender: TObject);

   procedure AdvGlowButton10Click(Sender: TObject);

   procedure AdvGlowButton11Click(Sender: TObject);

   procedure AdvGlowButton13Click(Sender: TObject);

   procedure AdvGlowButton14Click(Sender: TObject);

   procedure AdvGlowButton16Click(Sender: TObject);

   procedure AdvGlowButton17Click(Sender: TObject);

   procedure AdvGlowButton19Click(Sender: TObject);

   procedure AdvGlowButton20Click(Sender: TObject);

   procedure AdvGlowButton22Click(Sender: TObject);

   procedure Timer1Timer(Sender: TObject);

   procedure N1Click(Sender: TObject);

   procedure N3Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure DBGrid1DblClick(Sender: TObject);

   procedure DBAdvGrid1DblClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure FormShow(Sender: TObject);

   procedure N5Click(Sender: TObject);

   procedure N6Click(Sender: TObject);

   procedure DBAdvGrid1ClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure DBAdvGrid2DblClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure Timer2Timer(Sender: TObject);

   procedure N8Click(Sender: TObject);

   procedure N10Click(Sender: TObject);

   procedure N11Click(Sender: TObject);

   procedure Timer3Timer(Sender: TObject);

   procedure N12Click(Sender: TObject);

   procedure Timer4Timer(Sender: TObject);

   procedure N14Click(Sender: TObject);

   procedure DBAdvGrid3DblClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure N15Click(Sender: TObject);

   procedure Timer5Timer(Sender: TObject);

   procedure N19Click(Sender: TObject);

   procedure N18Click(Sender: TObject);

   procedure N16Click(Sender: TObject);

   procedure DBAdvGrid4DblClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure Timer6Timer(Sender: TObject);

   procedure N23Click(Sender: TObject);

   procedure N22Click(Sender: TObject);

   procedure DBAdvGrid5DblClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure N20Click(Sender: TObject);

   procedure N26Click(Sender: TObject);

   procedure Timer7Timer(Sender: TObject);

   procedure N24Click(Sender: TObject);

   procedure N27Click(Sender: TObject);

   procedure DBAdvGrid6DblClickCell(Sender: TObject; ARow, ACol: Integer);

 private

   { Private declarations }

 public

   { Public declarations }

   function RefreshAll:string;

 end;

var

 Prepod: TPrepod;

 i:integer;

implementation

uses Unit4, Unit5, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16;

{$R *.dfm}

function TPrepod.RefreshAll:string;

begin

 i := ADOTable1IDP.Value;

 //Паспортные данные

 ADOQuery2.SQL.Clear;

 ADOQuery2.SQL.Text := ('SELECT * FROM Паспортные_данные WHERE IDP like ' + IntToStr(i));

 ADOQuery2.Active:=True;

 //Дата поступления на работу

 ADOQuery3.SQL.Clear;

 ADOQuery3.SQL.Add('SELECT * FROM Дата_поступления_на_работу WHERE IDP like ' + IntToStr(i));

 ADOQuery3.Active:=True;

 //Учёная степень

 ADOQuery4.SQL.Clear;

 ADOQuery4.SQL.Add('SELECT * FROM Учёная_степень WHERE IDP like ' + IntToStr(i));

 ADOQuery4.Active:=True;

 //Должность

 ADOQuery5.SQL.Clear;

 ADOQuery5.SQL.Add('SELECT * FROM Должность WHERE IDP like ' + IntToStr(i));

 ADOQuery5.Active:=True;

 //Разряд

 ADOQuery6.SQL.Clear;

 ADOQuery6.SQL.Add('SELECT * FROM Разряд WHERE IDP like ' + IntToStr(i));

 ADOQuery6.Active:=True;

 //Категория

 ADOQuery7.SQL.Clear;

 ADOQuery7.SQL.Add('SELECT * FROM Категория WHERE IDP like ' + IntToStr(i));

 ADOQuery7.Active:=True;

end;

procedure TPrepod.FormCreate(Sender: TObject);

begin

 DBAdvGrid1.Focused;

 Prepod.Position := poScreenCenter;

 if DBAdvGrid1.Visible = true then

 RefreshAll;

end;

procedure TPrepod.DBGrid1CellClick(Column: TColumn);

begin

 if DBAdvGrid1.CanFocus = true then RefreshAll;

end;

procedure TPrepod.AdvGlowButton1Click(Sender: TObject);

begin

   DBNavigator2.BtnClick(nbInsert);

   AddPassport.AdvGlowButton3.Visible := True;

   AddPassport.AdvGlowButton2.Visible := False;

   AddPassport.ShowModal;

end;

procedure TPrepod.AdvGlowButton3Click(Sender: TObject);

begin

   DBNavigator2.BtnClick(nbDelete);

end;

procedure TPrepod.AdvGlowButton4Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbInsert);

 AddPrepod.AdvGlowButton2.Visible := True;

 AddPrepod.AdvGlowButton3.Visible := False;

 AddPrepod.ShowModal;

end;

procedure TPrepod.AdvGlowButton5Click(Sender: TObject);

begin

 if DBAdvGrid1.SearchFooter.Visible = True then

 DBAdvGrid1.SearchFooter.Visible := False else

 DBAdvGrid1.SearchFooter.Visible := True;

end;

procedure TPrepod.AdvGlowButton6Click(Sender: TObject);

begin

 Close;

end;

procedure TPrepod.AdvGlowButton7Click(Sender: TObject);

begin

   DBNavigator1.BtnClick(nbDelete);

end;

procedure TPrepod.AdvGlowButton8Click(Sender: TObject);

begin

   DBNavigator3.BtnClick(nbInsert);

end;

procedure TPrepod.AdvGlowButton9Click(Sender: TObject);

begin

   ADOQuery3IDP.Value:=i;

   DBNavigator3.BtnClick(nbPost);

end;

procedure TPrepod.AdvGlowButton10Click(Sender: TObject);

begin

   DBNavigator3.BtnClick(nbDelete);

end;

procedure TPrepod.AdvGlowButton11Click(Sender: TObject);

begin

   DBNavigator4.BtnClick(nbInsert);

   AddUchStep.AdvGlowButton2.Visible := True;

   AddUchStep.AdvGlowButton3.Visible := False;

   AddUchStep.ShowModal;

end;

procedure TPrepod.AdvGlowButton13Click(Sender: TObject);

begin

   DBNavigator4.BtnClick(nbDelete);

end;

procedure TPrepod.AdvGlowButton14Click(Sender: TObject);

begin

   DBNavigator5.BtnClick(nbInsert);

   AddDolzhnost.AdvGlowButton1.Visible := True;

   AddDolzhnost.AdvGlowButton3.Visible := False;

   AddDolzhnost.ShowModal;

end;

procedure TPrepod.AdvGlowButton16Click(Sender: TObject);

begin

   DBNavigator5.BtnClick(nbDelete);

end;

procedure TPrepod.AdvGlowButton17Click(Sender: TObject);

begin

   DBNavigator6.BtnClick(nbInsert);

   AddRazryad.AdvGlowButton3.Visible := True;

   AddRazryad.AdvGlowButton2.Visible := False;

   AddRazryad.ShowModal;

end;

procedure TPrepod.AdvGlowButton19Click(Sender: TObject);

begin

   DBNavigator6.BtnClick(nbDelete);

end;

procedure TPrepod.AdvGlowButton20Click(Sender: TObject);

begin

   DBNavigator7.BtnClick(nbInsert);

   AddKategory.AdvGlowButton3.Visible := True;

   AddKategory.AdvGlowButton2.Visible := False;

   AddKategory.ShowModal;

end;

procedure TPrepod.AdvGlowButton22Click(Sender: TObject);

begin

   DBNavigator7.BtnClick(nbDelete);

end;

procedure TPrepod.Timer1Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid1.PopupMenu := AdvPopupMenu1;

   if ADOTable1.IsEmpty then

   begin

     N1.Enabled := False;

     N4.Enabled := False;

     AdvGlowButton5.Enabled := False;

     AdvGlowButton7.Enabled := False;

   end else

   begin

     N1.Enabled := True;

     N4.Enabled := True;

     AdvGlowButton5.Enabled := True;

     AdvGlowButton7.Enabled := True;

   end

 end else

 begin

   AdvGlowButton4.Enabled := False;

   AdvGlowButton7.Enabled := False;

   N1.Enabled := False;

   N3.Enabled := False;    

   N4.Enabled := False;

 end;

end;

procedure TPrepod.N1Click(Sender: TObject);

begin

   AddPrepod.AdvGlowButton2.Visible := False;

   AddPrepod.AdvGlowButton3.Visible := True;

   AddPrepod.ShowModal;

end;

procedure TPrepod.N3Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbInsert);

 AddPrepod.AdvGlowButton2.Visible := True;

 AddPrepod.AdvGlowButton3.Visible := False;

 AddPrepod.ShowModal;

end;

procedure TPrepod.N4Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbDelete);

end;

procedure TPrepod.DBGrid1DblClick(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   AddPrepod.AdvGlowButton2.Visible := False;

   AddPrepod.AdvGlowButton3.Visible := True;

   AddPrepod.ShowModal;

 end;

end;

procedure TPrepod.DBAdvGrid1DblClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if CheckBox1.Checked = False then

 if ADOTable1.IsEmpty then

 begin

 end else

 begin

   AddPrepod.AdvGlowButton2.Visible := False;

   AddPrepod.AdvGlowButton3.Visible := True;

   AddPrepod.ShowModal;

 end;

end;

procedure TPrepod.FormShow(Sender: TObject);

begin

 DBAdvGrid1.SetFocus;

end;

procedure TPrepod.N5Click(Sender: TObject);

begin

 AdvGridPrintSettingsDialog1.Execute;

end;

procedure TPrepod.N6Click(Sender: TObject);

begin

 AdvPreviewDialog1.Execute;

end;

procedure TPrepod.DBAdvGrid1ClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 RefreshAll;

end;

procedure TPrepod.DBAdvGrid2DblClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if CheckBox1.Checked = False then

 if ADOQuery2.IsEmpty then

 begin

 end else

 begin

   AddPassport.AdvGlowButton3.Visible := False;

   AddPassport.AdvGlowButton2.Visible := True;

   AddPassport.ShowModal;

 end;

end;

procedure TPrepod.Timer2Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid2.PopupMenu := AdvPopupMenu2;

   if ADOQuery2.IsEmpty then

   begin

     N8.Enabled := False;

     N11.Enabled := False;

     AdvGlowButton3.Enabled := False;

   end else

   begin

     N8.Enabled := True;

     N11.Enabled := True;

     AdvGlowButton1.Enabled := True;

     AdvGlowButton3.Enabled := True;

   end

 end else

 begin

   AdvGlowButton1.Enabled := False;

   AdvGlowButton3.Enabled := False;

   DBAdvGrid2.PopupMenu.Free;

 end;

end;

procedure TPrepod.N8Click(Sender: TObject);

begin

   AddPassport.AdvGlowButton3.Visible := False;

   AddPassport.AdvGlowButton2.Visible := True;

   AddPassport.ShowModal;

end;

procedure TPrepod.N10Click(Sender: TObject);

begin

   DBNavigator2.BtnClick(nbInsert);

   AddPassport.AdvGlowButton3.Visible := True;

   AddPassport.AdvGlowButton2.Visible := False;

   AddPassport.ShowModal;

end;

procedure TPrepod.N11Click(Sender: TObject);

begin

   DBNavigator2.BtnClick(nbDelete);

end;

procedure TPrepod.Timer3Timer(Sender: TObject);

begin

 if ADOQuery3.IsEmpty then

 begin

   AdvGlowButton9.Enabled := False;

 end else

 begin

   if CheckBox1.Checked = False then

   begin

     PlannerDBDatePicker1.ReadOnly := False;

     if ADOQuery3.State = dsEdit then

     AdvGlowButton9.Enabled := True else

     AdvGlowButton9.Enabled := False;

   end else

   begin

     AdvGlowButton9.Enabled := False;

     PlannerDBDatePicker1.ReadOnly := True;

   end;

 end;

end;

procedure TPrepod.N12Click(Sender: TObject);

begin

   AddUchStep.AdvGlowButton2.Visible := False;

   AddUchStep.AdvGlowButton3.Visible := True;

   AddUchStep.ShowModal;

end;

procedure TPrepod.Timer4Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid3.PopupMenu := AdvPopupMenu3;

   if ADOQuery4.IsEmpty then

   begin

     N12.Enabled := False;

     N15.Enabled := False;

     AdvGlowButton13.Enabled := False;

   end else

   begin

     N12.Enabled := True;

     N15.Enabled := True;

     AdvGlowButton11.Enabled := True;

     AdvGlowButton13.Enabled := True;

   end

 end else

 begin

   AdvGlowButton11.Enabled := False;

   AdvGlowButton13.Enabled := False;

   DBAdvGrid3.PopupMenu.Free;

 end;

end;

procedure TPrepod.N14Click(Sender: TObject);

begin

   DBNavigator4.BtnClick(nbInsert);

   AddUchStep.AdvGlowButton2.Visible := True;

   AddUchStep.AdvGlowButton3.Visible := False;

   AddUchStep.ShowModal;

end;

procedure TPrepod.DBAdvGrid3DblClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if CheckBox1.Checked = False then

 if ADOQuery4.IsEmpty then

 begin

 end else

 begin

   AddUchStep.AdvGlowButton2.Visible := False;

   AddUchStep.AdvGlowButton3.Visible := True;

   AddUchStep.ShowModal;

 end;

end;

procedure TPrepod.N15Click(Sender: TObject);

begin

   DBNavigator4.BtnClick(nbDelete);

end;

procedure TPrepod.Timer5Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid4.PopupMenu := AdvPopupMenu4;

   if ADOQuery5.IsEmpty then

   begin

     N16.Enabled := False;

     N19.Enabled := False;

     AdvGlowButton16.Enabled := False;

   end else

   begin

     N16.Enabled := True;

     N19.Enabled := True;

     AdvGlowButton14.Enabled := True;

     AdvGlowButton16.Enabled := True;

   end

 end else

 begin

   AdvGlowButton14.Enabled := False;

   AdvGlowButton16.Enabled := False;

   DBAdvGrid4.PopupMenu.Free;

 end;

end;

procedure TPrepod.N19Click(Sender: TObject);

begin

   DBNavigator5.BtnClick(nbDelete);

end;

procedure TPrepod.N18Click(Sender: TObject);

begin

   DBNavigator5.BtnClick(nbInsert);

   AddDolzhnost.AdvGlowButton1.Visible := True;

   AddDolzhnost.AdvGlowButton3.Visible := False;

   AddDolzhnost.ShowModal;

end;

procedure TPrepod.N16Click(Sender: TObject);

begin

   AddDolzhnost.AdvGlowButton1.Visible := False;

   AddDolzhnost.AdvGlowButton3.Visible := True;

   AddDolzhnost.ShowModal;

end;

procedure TPrepod.DBAdvGrid4DblClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if CheckBox1.Checked = False then

 if ADOQuery5.IsEmpty then

 begin

 end else

 begin

   AddDolzhnost.AdvGlowButton1.Visible := False;

   AddDolzhnost.AdvGlowButton3.Visible := True;

   AddDolzhnost.ShowModal;

 end;

end;

procedure TPrepod.Timer6Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid5.PopupMenu := AdvPopupMenu5;

   if ADOQuery6.IsEmpty then

   begin

     N20.Enabled := False;

     N23.Enabled := False;

     AdvGlowButton19.Enabled := False;

   end else

   begin

     N20.Enabled := True;

     N23.Enabled := True;

     AdvGlowButton17.Enabled := True;

     AdvGlowButton19.Enabled := True;

   end

 end else

 begin

   AdvGlowButton17.Enabled := False;

   AdvGlowButton19.Enabled := False;

   DBAdvGrid5.PopupMenu.Free;

 end;

end;

procedure TPrepod.N23Click(Sender: TObject);

begin

   DBNavigator6.BtnClick(nbDelete);

end;

procedure TPrepod.N22Click(Sender: TObject);

begin

   DBNavigator6.BtnClick(nbInsert);

   AddRazryad.AdvGlowButton3.Visible := True;

   AddRazryad.AdvGlowButton2.Visible := False;

   AddRazryad.ShowModal;

end;

procedure TPrepod.DBAdvGrid5DblClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if CheckBox1.Checked = False then

 if ADOQuery6.IsEmpty then

 begin

 end else

 begin

   AddRazryad.AdvGlowButton3.Visible := False;

   AddRazryad.AdvGlowButton2.Visible := True;

   AddRazryad.ShowModal;

 end;

end;

procedure TPrepod.N20Click(Sender: TObject);

begin

   AddRazryad.AdvGlowButton3.Visible := False;

   AddRazryad.AdvGlowButton2.Visible := True;

   AddRazryad.ShowModal;

end;

procedure TPrepod.N26Click(Sender: TObject);

begin

   DBNavigator7.BtnClick(nbInsert);

   AddKategory.AdvGlowButton3.Visible := True;

   AddKategory.AdvGlowButton2.Visible := False;

   AddKategory.ShowModal;

end;

procedure TPrepod.Timer7Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid6.PopupMenu := AdvPopupMenu6;

   if ADOQuery7.IsEmpty then

   begin

     N24.Enabled := False;

     N27.Enabled := False;

     AdvGlowButton22.Enabled := False;

   end else

   begin

     N24.Enabled := True;

     N27.Enabled := True;

     AdvGlowButton20.Enabled := True;

     AdvGlowButton22.Enabled := True;

   end

 end else

 begin

   AdvGlowButton20.Enabled := False;

   AdvGlowButton22.Enabled := False;

   DBAdvGrid6.PopupMenu.Free;

 end;

end;

procedure TPrepod.N24Click(Sender: TObject);

begin

   AddKategory.AdvGlowButton2.Visible := True;

   AddKategory.AdvGlowButton3.Visible := False;

   AddKategory.ShowModal;

end;

procedure TPrepod.N27Click(Sender: TObject);

begin

   DBNavigator7.BtnClick(nbDelete);

end;

procedure TPrepod.DBAdvGrid6DblClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if CheckBox1.Checked = False then

 if ADOQuery7.IsEmpty then

 begin

 end else

 begin

   AddKategory.AdvGlowButton2.Visible := True;

   AddKategory.AdvGlowButton3.Visible := False;

   AddKategory.ShowModal;

 end;

end;

end.

unit Unit4;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, Buttons, ComCtrls, ADODB, ExtCtrls, DBCtrls, DB,

 Grids, DBGrids, AdvGlowButton, AdvOfficePager, AdvOfficePagerStylers,

 BaseGrid, AdvGrid, DBAdvGrid, Menus, AdvMenus;

type

 TKursi = class(TForm)

   DataSource1: TDataSource;

   ADOTable1: TADOTable;

   DataSource2: TDataSource;

   ADOQuery1: TADOQuery;

   ADOQuery1ID: TAutoIncField;

   ADOQuery1DSDesigner: TWideStringField;

   ADOQuery1DSDesigner3: TWideStringField;

   ADOQuery1DSDesigner4: TIntegerField;

   ADOQuery1IDP: TIntegerField;

   Label2: TLabel;

   AdvOfficePager1: TAdvOfficePager;

   AdvOfficePage1: TAdvOfficePage;

   AdvOfficePagerOfficeStyler1: TAdvOfficePagerOfficeStyler;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton4: TAdvGlowButton;

   DBNavigator1: TDBNavigator;

   ADOTable1IDP: TAutoIncField;

   ADOTable1DSDesigner: TWideStringField;

   ADOTable1DSDesigner2: TWideStringField;

   ADOTable1DSDesigner3: TWideStringField;

   ADOTable1_: TDateTimeField;

   ADOTable1DSDesigner4: TIntegerField;

   ADOTable2: TADOTable;

   ADOTable1StringField: TStringField;

   ADOQuery1DSDesigner2: TWideStringField;

   CheckBox1: TCheckBox;

   DBAdvGrid1: TDBAdvGrid;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton5: TAdvGlowButton;

   DBAdvGrid2: TDBAdvGrid;

   Timer1: TTimer;

   AdvPopupMenu1: TAdvPopupMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   procedure FormCreate(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure FormShow(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton4Click(Sender: TObject);

   procedure DBAdvGrid1ClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton5Click(Sender: TObject);

   procedure Timer1Timer(Sender: TObject);

   procedure N3Click(Sender: TObject);

   procedure N1Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure DBAdvGrid2DblClickCell(Sender: TObject; ARow, ACol: Integer);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Kursi: TKursi;

 i:integer;

implementation

uses Unit3, Unit5;

{$R *.dfm}

procedure TKursi.FormCreate(Sender: TObject);

begin

 ADOTable1.Active := True;

 Position := poScreenCenter;

 if DBadvGrid1.Visible = true then

 begin

     i := ADOTable1IDP.Value;

     //КПК

     ADOQuery1.SQL.Clear;

     ADOQuery1.SQL.Text := ('SELECT * FROM КПК WHERE IDP like ' + IntToStr(i));

     ADOQuery1.Active:=True;

 end;

end;

procedure TKursi.FormClose(Sender: TObject; var Action: TCloseAction);

begin

   ADOTable1.Active := False;

end;

procedure TKursi.FormShow(Sender: TObject);

begin

   ADOTable1.Active := True;

end;

procedure TKursi.AdvGlowButton2Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbInsert);

 AddKPK.AdvGlowButton1.Visible := True;

 AddKPK.AdvGlowButton2.Visible := False;

 AddKPK.ShowModal;

end;

procedure TKursi.AdvGlowButton4Click(Sender: TObject);

begin

   DBNavigator1.BtnClick(nbDelete);

end;

procedure TKursi.DBAdvGrid1ClickCell(Sender: TObject; ARow, ACol: Integer);

begin

 if DBadvGrid1.CanFocus = true then i := ADOTable1IDP.Value;

 //КПК

 ADOQuery1.SQL.Clear;

 ADOQuery1.SQL.Text := ('SELECT * FROM КПК WHERE IDP like ' + IntToStr(i));

 ADOQuery1.Active:=True;

end;

procedure TKursi.AdvGlowButton1Click(Sender: TObject);

begin

   if DBAdvGrid1.SearchFooter.Visible = True then

   DBAdvGrid1.SearchFooter.Visible := False else

   DBAdvGrid1.SearchFooter.Visible := True;

end;

procedure TKursi.AdvGlowButton5Click(Sender: TObject);

begin

 close;

end;

procedure TKursi.Timer1Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid2.PopupMenu := AdvPopupMenu1;

   if ADOQuery1.IsEmpty then

   begin

     N1.Enabled := False;

     N4.Enabled := False;

     AdvGlowButton4.Enabled := False;

   end else

   begin

     N1.Enabled := True;

     N4.Enabled := True;

     AdvGlowButton2.Enabled := True;

     AdvGlowButton4.Enabled := True;

   end

 end else

 begin

   AdvGlowButton2.Enabled := False;

   AdvGlowButton4.Enabled := False;

   DBAdvGrid2.PopupMenu.Free;

 end;

end;

procedure TKursi.N3Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbInsert);

 AddKPK.AdvGlowButton1.Visible := True;

 AddKPK.AdvGlowButton2.Visible := False;

 AddKPK.ShowModal;

end;

procedure TKursi.N1Click(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 if ADOQuery1.IsEmpty then

 begin

 end else

 begin

   AddKPK.AdvGlowButton1.Visible := False;

   AddKPK.AdvGlowButton2.Visible := True;

   AddKPK.ShowModal;

 end;

end;

procedure TKursi.N4Click(Sender: TObject);

begin

   DBNavigator1.BtnClick(nbDelete);

end;

procedure TKursi.DBAdvGrid2DblClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if CheckBox1.Checked = False then

 if ADOQuery1.IsEmpty then

 begin

 end else

 begin

   AddKPK.AdvGlowButton1.Visible := False;

   AddKPK.AdvGlowButton2.Visible := True;

   AddKPK.ShowModal;

 end;

end;

end.

unit Unit5;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, Buttons, DB, ADODB, AdvGlowButton, jpeg, ExtCtrls,

 AdvPicture, Mask, DBCtrls, AdvPanel;

type

 TAddKPK = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   GroupBox1: TGroupBox;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   DBEdit1: TDBEdit;

   DBEdit2: TDBEdit;

   DBEdit3: TDBEdit;

   DBEdit4: TDBEdit;

   AdvPicture1: TAdvPicture;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddKPK: TAddKPK;

implementation

uses Unit4, Unit3;

{$R *.dfm}

procedure TAddKPK.FormCreate(Sender: TObject);

begin

   Position := poScreenCenter;

end;

procedure TAddKPK.AdvGlowButton3Click(Sender: TObject);

begin

 Kursi.DBNavigator1.BtnClick(nbPrior);

 Kursi.DBNavigator1.BtnClick(nbNext);

 Close;

end;

procedure TAddKPK.AdvGlowButton1Click(Sender: TObject);

begin

   Kursi.ADOQuery1IDP.Value:=i;

   Kursi.DBNavigator1.BtnClick(nbPost);

   Close;

end;

procedure TAddKPK.AdvGlowButton2Click(Sender: TObject);

begin

   Kursi.DBNavigator1.BtnClick(nbPost);

   Close;

end;

procedure TAddKPK.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 Kursi.DBNavigator1.BtnClick(nbPrior);

 Kursi.DBNavigator1.BtnClick(nbNext);

 Close;

end;

end.

unit Unit6;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, ADODB, DB, StdCtrls, ExtCtrls, DBCtrls, ComCtrls, Grids,

 DBGrids, Buttons, AdvGlowButton, Menus, AdvMenus, AdvOfficePager,

 AdvOfficePagerStylers, BaseGrid, AdvGrid, DBAdvGrid;

type

 TVneAudRab = class(TForm)

   Label2: TLabel;

   ADOTable1: TADOTable;

   ADOQuery1: TADOQuery;

   ADOQuery1ID: TAutoIncField;

   ADOQuery1DSDesigner: TWideStringField;

   ADOQuery1DSDesigner2: TWideStringField;

   ADOQuery1IDP: TIntegerField;

   DataSource1: TDataSource;

   DataSource2: TDataSource;

   AdvGlowButton1: TAdvGlowButton;

   AdvOfficePager1: TAdvOfficePager;

   AdvOfficePagerOfficeStyler1: TAdvOfficePagerOfficeStyler;

   AdvOfficePage1: TAdvOfficePage;

   DBNavigator1: TDBNavigator;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton4: TAdvGlowButton;

   ADOTable1IDP: TAutoIncField;

   ADOTable1DSDesigner: TWideStringField;

   ADOTable1DSDesigner2: TWideStringField;

   ADOTable1DSDesigner3: TWideStringField;

   ADOTable1_: TDateTimeField;

   ADOTable1DSDesigner4: TIntegerField;

   ADOTable2: TADOTable;

   ADOTable1Field: TStringField;

   CheckBox1: TCheckBox;

   DBAdvGrid1: TDBAdvGrid;

   AdvGlowButton5: TAdvGlowButton;

   Timer1: TTimer;

   DBAdvGrid2: TDBAdvGrid;

   AdvPopupMenu1: TAdvPopupMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   procedure FormCreate(Sender: TObject);

   procedure FormShow(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton4Click(Sender: TObject);

   procedure N2Click(Sender: TObject);

   procedure DBAdvGrid1ClickCell(Sender: TObject; ARow, ACol: Integer);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton5Click(Sender: TObject);

   procedure Timer1Timer(Sender: TObject);

   procedure Bpvtybnm1Click(Sender: TObject);

   procedure N3Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure N1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 VneAudRab: TVneAudRab;

 i:integer;

implementation

uses Unit17;

{$R *.dfm}

procedure TVneAudRab.FormCreate(Sender: TObject);

begin

   ADOTable1.Active := True;

   Position := poScreenCenter;

   if DBadvGrid1.Visible = true then

   begin

       i := ADOTable1IDP.Value;

       //КПК

       ADOQuery1.SQL.Clear;

       ADOQuery1.SQL.Text := ('SELECT * FROM Внеаудиторная_работа WHERE IDP like ' + IntToStr(i));

       ADOQuery1.Active:=True;

   end;

end;

procedure TVneAudRab.FormShow(Sender: TObject);

begin

   ADOTable1.Active := True;

end;

procedure TVneAudRab.FormClose(Sender: TObject; var Action: TCloseAction);

begin

   ADOTable1.Active := False;

end;

procedure TVneAudRab.AdvGlowButton2Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbInsert);

 AddVAR.AdvGlowButton1.Visible := True;

 AddVAR.AdvGlowButton2.Visible := False;

 AddVAR.ShowModal;

end;

procedure TVneAudRab.AdvGlowButton4Click(Sender: TObject);

begin

   DBNavigator1.BtnClick(nbDelete);

end;

procedure TVneAudRab.N2Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbInsert);

 AddVAR.AdvGlowButton1.Visible := True;

 AddVAR.AdvGlowButton2.Visible := False;

 AddVAR.ShowModal;

end;

procedure TVneAudRab.DBAdvGrid1ClickCell(Sender: TObject; ARow,

 ACol: Integer);

begin

 if DBadvGrid1.CanFocus = true then i := ADOTable1IDP.Value;

 //КПК

 ADOQuery1.SQL.Clear;

 ADOQuery1.SQL.Text := ('SELECT * FROM Внеаудиторная_работа WHERE IDP like ' + IntToStr(i));

 ADOQuery1.Active:=True;

end;

procedure TVneAudRab.AdvGlowButton1Click(Sender: TObject);

begin

   if DBAdvGrid1.SearchFooter.Visible = True then

   DBAdvGrid1.SearchFooter.Visible := False else

   DBAdvGrid1.SearchFooter.Visible := True;

end;

procedure TVneAudRab.AdvGlowButton5Click(Sender: TObject);

begin

close;

end;

procedure TVneAudRab.Timer1Timer(Sender: TObject);

begin

 if CheckBox1.Checked = False then

 begin

   DBAdvGrid2.PopupMenu := AdvPopupMenu1;

   if ADOQuery1.IsEmpty then

   begin

     N1.Enabled := False;

     N4.Enabled := False;

     AdvGlowButton4.Enabled := False;

   end else

   begin

     N1.Enabled := True;

     N4.Enabled := True;

     AdvGlowButton2.Enabled := True;

     AdvGlowButton4.Enabled := True;

   end

 end else

 begin

   AdvGlowButton2.Enabled := False;

   AdvGlowButton4.Enabled := False;

   DBAdvGrid2.PopupMenu.Free;

 end;

end;

procedure TVneAudRab.Bpvtybnm1Click(Sender: TObject);

begin

 AddVAR.AdvGlowButton2.Visible := True;

 AddVAR.AdvGlowButton1.Visible := False;

 AddVAR.ShowModal;

end;

procedure TVneAudRab.N3Click(Sender: TObject);

begin

 DBNavigator1.BtnClick(nbInsert);

 AddVAR.AdvGlowButton1.Visible := True;

 AddVAR.AdvGlowButton2.Visible := False;

 AddVAR.ShowModal;

end;

procedure TVneAudRab.N4Click(Sender: TObject);

begin

   DBNavigator1.BtnClick(nbDelete);

end;

procedure TVneAudRab.N1Click(Sender: TObject);

begin

 AddVAR.AdvGlowButton2.Visible := True;

 AddVAR.AdvGlowButton1.Visible := False;

 AddVAR.ShowModal;

end;

end.

unit Unit7;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, Grids, DBGrids, DB, StdCtrls, ShellAPI, AdvGlowButton,

 AdvOfficeHint, AdvPanel, ExtCtrls, ToolPanels, AdvNavBar, AdvAlertWindow,

 ColListb, slstbox, ADODB, ComCtrls;

type

 TUchNagruzka = class(TForm)

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   DataSource1: TDataSource;

   DBGrid1: TDBGrid;

   Edit1: TEdit;

   Label1: TLabel;

   Label3: TLabel;

   ADOTable1: TADOTable;

   AdvGlowButton4: TAdvGlowButton;

   AdvGlowButton5: TAdvGlowButton;

   ListBox1: TListBox;

   Label2: TLabel;

   ADOTable1IDP: TAutoIncField;

   ADOTable1DSDesigner: TWideStringField;

   ADOTable1DSDesigner2: TWideStringField;

   ADOTable1DSDesigner3: TWideStringField;

   ADOTable1_: TDateTimeField;

   ADOTable1DSDesigner4: TIntegerField;

   ADOTable2: TADOTable;

   ADOTable1Field: TStringField;

   CheckBox1: TCheckBox;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure Edit1KeyDown(Sender: TObject; var Key: Word;

     Shift: TShiftState);

   procedure AdvGlowButton5Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure FormShow(Sender: TObject);

   procedure FormHide(Sender: TObject);

   procedure DBGrid1CellClick(Column: TColumn);

   procedure AdvGlowButton4Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 UchNagruzka: TUchNagruzka;

 SearchRec:TSearchRec;

implementation

   function ShellExecuteA(hWnd: HWND; Operation, FileName, Parameters,

   Directory: PAnsiChar; ShowCmd: Integer): HINST; stdcall; external 'shell32.dll';

{$R *.dfm}

procedure TUchNagruzka.FormCreate(Sender: TObject);

begin

   Label2.Caption := DateTimeToStr(Date);

   ADOTable1.Active := True;

   AdvGlowButton4.Enabled := False;

   Position := poScreenCenter;

   if DBGrid1.Visible = true then

   begin

       ListBox1.Clear;

       If FindFirst('mold\nagruzka\' + ADOTable1DSDesigner.Value +

       ' ' + ADOTable1DSDesigner2.Value + ' ' + ADOTable1DSDesigner3.Value +

       '\*.doc', faAnyFile, SearchRec)=0 then

       begin

         repeat

           ListBox1.items.add(SearchRec.Name);

         until FindNext(SearchRec) <> 0;

         AdvGlowButton4.Enabled := True;

       end else AdvGlowButton4.Enabled := False;

       FindClose(SearchRec);

       ListBox1.ItemIndex := 0;

   end;

end;

procedure TUchNagruzka.AdvGlowButton1Click(Sender: TObject);

begin

   ShellExecuteA(Application.Handle, 'open', 'Карточка служебных заданий.dot', '', 'mold\sved\', SW_SHOWNORMAL);

end;

procedure TUchNagruzka.AdvGlowButton2Click(Sender: TObject);

var

 s:string;

begin

   s:=Edit1.Text;

   if ADOTable1.locate('Фамилия', s,[locaseinsensitive]) then

   Label3.Caption:='Преподаватель найден'

   else Label3.Caption:='Нет такого преподавателя';

end;

procedure TUchNagruzka.Edit1KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

var

 s:string;

begin

   if Key= VK_RETURN then

   begin

       s:=Edit1.Text;

       if ADOTable1.locate('Фамилия', s,[locaseinsensitive]) then

       Label3.Caption:='Преподаватель найден'

       else Label3.Caption:='Нет такого преподавателя';

   end;

end;

procedure TUchNagruzka.AdvGlowButton5Click(Sender: TObject);

begin

   Close;

end;

procedure TUchNagruzka.FormClose(Sender: TObject; var Action: TCloseAction);

begin

   ADOTable1.Active := False;

end;

procedure TUchNagruzka.FormShow(Sender: TObject);

begin

   ADOTable1.Active := True;

end;

procedure TUchNagruzka.FormHide(Sender: TObject);

begin

   ADOTable1.Active := False;

end;

procedure TUchNagruzka.DBGrid1CellClick(Column: TColumn);

begin

   ListBox1.Clear;

   If FindFirst('mold\nagruzka\' + ADOTable1DSDesigner.Value +

       ' ' + ADOTable1DSDesigner2.Value + ' ' + ADOTable1DSDesigner3.Value +

       '\*.doc', faAnyFile, SearchRec)=0 then

   begin

     repeat

       ListBox1.items.add(SearchRec.Name);

     until FindNext(SearchRec) <> 0;

     AdvGlowButton4.Enabled := True;

   end else AdvGlowButton4.Enabled := False;

   FindClose(SearchRec);

   ListBox1.ItemIndex := 0;

end;

procedure TUchNagruzka.AdvGlowButton4Click(Sender: TObject);

var

 put:string;

begin

   put := 'mold\nagruzka\' + ADOTable1DSDesigner.AsString;

   ShellExecuteA(Application.Handle, 'open', PChar(ListBox1.Items[ListBox1.ItemIndex]), '', pchar(put), SW_SHOWNORMAL);

end;

end.

unit Unit8;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, AdvPanel, AdvGlowButton, ExtCtrls, StdCtrls, rtflabel, ImgList,

 sHintManager;

type

 TPassword = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvGlowButton1: TAdvGlowButton;

   AdvPanelStyler1: TAdvPanelStyler;

   Edit1: TEdit;

   Timer1: TTimer;

   RTFLabel1: TRTFLabel;

   Edit2: TEdit;

   Label1: TLabel;

   Label2: TLabel;

   CheckBox1: TCheckBox;

   ImageList1: TImageList;

   Image1: TImage;

   sHintManager1: TsHintManager;

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure FormCreate(Sender: TObject);

   procedure Edit1KeyDown(Sender: TObject; var Key: Word;

     Shift: TShiftState);

   procedure Timer1Timer(Sender: TObject);

   procedure Edit2KeyDown(Sender: TObject; var Key: Word;

     Shift: TShiftState);

 private

   { Private declarations }

 public

   { Public declarations }

   function xortext(text:string):string;

   function ReadOnly:string;

 end;

var

 Password: TPassword;

 pass:string;

 a:textfile;

 c:textfile;

 d:string;

 

implementation

uses Unit1, Unit9, Unit3, Unit4, Unit7, Unit6;

{$R *.dfm}

function TPassword.xortext(text:string):string;

var

 xkey, longkey : string;

 i : integer;

 toto: char;

begin

 xkey:='mda'; //ключ

 for i := 0 to (length(text) div length(xkey)) do

 longkey := longkey + xkey;

 for i := 1 to length(text) do

 begin

   toto := chr((ord(text[i]) XOR ord(longkey[i])));

   result := result + toto;

 end;

end;

function TPassword.ReadOnly:string;

begin

   Main.CheckBox1.Checked := True;

   Kursi.CheckBox1.Checked := True;

   Prepod.CheckBox1.Checked := True;

   UchNagruzka.CheckBox1.Checked := True;

   VneAudRab.CheckBox1.Checked := True;

end;

procedure TPassword.FormCreate(Sender: TObject);

begin

   Position := poScreenCenter;

   If FileExists('system.dll') then

   begin

     AssignFile(c,'system.dll');

     Reset(c);

     Readln(c,d);

     pass:=d;

     CloseFile(c);

   end;

end;

procedure TPassword.AdvGlowButton1Click(Sender: TObject);

begin

 if (Edit1.Text = 'admin') and (xortext(Edit2.Text) = pass) then

 begin

   Hide;

   Main.ShowModal;

 end else

 begin

   ReadOnly;

   Hide;

   Main.ShowModal;

 end;

end;

procedure TPassword.Edit1KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin

 if Key = VK_RETURN then

 if (Edit1.Text = 'admin') and (xortext(Edit2.Text) = pass) then

 begin

   Hide;

   Main.ShowModal;

 end else

 begin

   ReadOnly;

   Hide;

   Main.ShowModal;

 end;

end;

procedure TPassword.Timer1Timer(Sender: TObject);

begin

   if CheckBox1.Checked = true then

   Edit2.PasswordChar := #0 else Edit2.PasswordChar := #42;

end;

procedure TPassword.Edit2KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin

 if Key = VK_RETURN then

 if (Edit1.Text = 'admin') and (xortext(Edit2.Text) = pass) then

 begin

   Hide;

   Main.ShowModal;

 end else

 begin

   ReadOnly;

   Hide;

   Main.ShowModal;

 end;

end;

end.

unit Unit9;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, AdvOfficePager, AdvOfficePagerStylers, rtflabel,

 AdvPanel, AdvGlowButton, ExtCtrls, AdvFontCombo, AdvCombo, AdvAppStyler,

 ImgList;

type

 TSmenaPass = class(TForm)

   AdvOfficePagerOfficeStyler1: TAdvOfficePagerOfficeStyler;

   AdvOfficePager1: TAdvOfficePager;

   AdvOfficePage1: TAdvOfficePage;

   Edit1: TEdit;

   RTFLabel1: TRTFLabel;

   AdvPanel1: TAdvPanel;

   AdvGlowButton1: TAdvGlowButton;

   Edit2: TEdit;

   AdvGlowButton2: TAdvGlowButton;

   AdvPanelStyler1: TAdvPanelStyler;

   Image1: TImage;

   RTFLabel2: TRTFLabel;

   ImageList1: TImageList;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure Edit2KeyDown(Sender: TObject; var Key: Word;

     Shift: TShiftState);

 private

   { Private declarations }

 public

   { Public declarations }

   function xortext(text:string):string;

 end;

var

 SmenaPass: TSmenaPass;

 a,c:textfile;

 d:string;

 pass:string;

implementation

{$R *.dfm}

function TSmenaPass.xortext(text:string):string;

var

 xkey, longkey : string;

 i : integer;

 toto: char;

begin

 xkey:='mda'; //ключ

 for i := 0 to (length(text) div length(xkey)) do

 longkey := longkey + xkey;

 for i := 1 to length(text) do

 begin

   toto := chr((ord(text[i]) XOR ord(longkey[i])));

   result := result + toto;

 end;

end;

procedure TSmenaPass.FormCreate(Sender: TObject);

begin

   Position := poDesktopCenter;

   If FileExists('system.dll') then

   begin

     AssignFile(c,'system.dll');

     Reset(c);

     Readln(c,d);

     Edit1.Text:=xortext(d);

     CloseFile(c);

   end;

end;

procedure TSmenaPass.AdvGlowButton1Click(Sender: TObject);

begin

   pass:=xortext(Edit2.Text);

   AssignFile(a,'system.dll');

   Rewrite(a);

   Writeln(a,pass);

   CloseFile(a);

   Edit2.Text := '';

end;

procedure TSmenaPass.AdvGlowButton2Click(Sender: TObject);

begin

   If FileExists('system.dll') then

   begin

     AssignFile(c,'system.dll');

     Reset(c);

     Readln(c,d);

     Edit1.Text:=xortext(d);

     CloseFile(c);

   end;

end;

procedure TSmenaPass.Edit2KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin

   if Key = VK_RETURN then

   begin

     pass:=xortext(Edit2.Text);

     AssignFile(a,'system.dll');

     Rewrite(a);

     Writeln(a,pass);

     CloseFile(a);

     Edit2.Text := '';

   end;

end;

end.

unit Unit10;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, ExtCtrls, StdCtrls, rtflabel, AdvGlowButton, AdvPanel, ImgList,

 jpeg;

type

 TAbout = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   AdvGlowButton1: TAdvGlowButton;

   Image1: TImage;

   ImageList1: TImageList;

   RTFLabel1: TRTFLabel;

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure FormCreate(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 About: TAbout;

implementation

{$R *.dfm}

procedure TAbout.AdvGlowButton1Click(Sender: TObject);

begin

 close;

end;

procedure TAbout.FormCreate(Sender: TObject);

begin

   Position := poScreenCenter;

end;

end.

unit Unit11;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, AdvGlowButton, AdvPanel, ExtCtrls, StdCtrls, Mask, DBCtrls, DB, ADODB,

 ImgList, AdvEdit, AdvEdBtn, PlannerDatePicker, PlannerDBDatePicker;

type

 TAddPrepod = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   GroupBox2: TGroupBox;

   AdvGlowButton1: TAdvGlowButton;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Label5: TLabel;

   DBEdit1: TDBEdit;

   DBEdit2: TDBEdit;

   DBEdit3: TDBEdit;

   DBLookupComboBox1: TDBLookupComboBox;

   Image1: TImage;

   DataSource1: TDataSource;

   ADOTable1: TADOTable;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   ImageList1: TImageList;

   PlannerDBDatePicker1: TPlannerDBDatePicker;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure FormShow(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddPrepod: TAddPrepod;

implementation

uses Unit3;

{$R *.dfm}

procedure TAddPrepod.FormCreate(Sender: TObject);

begin

 Position := poScreenCenter;

end;

procedure TAddPrepod.AdvGlowButton1Click(Sender: TObject);

begin

 Prepod.DBNavigator1.BtnClick(nbPrior);

 Prepod.DBNavigator1.BtnClick(nbNext);

 Close;

end;

procedure TAddPrepod.AdvGlowButton3Click(Sender: TObject);

begin

   Prepod.DBNavigator1.BtnClick(nbPost);

   Close;

end;

procedure TAddPrepod.AdvGlowButton2Click(Sender: TObject);

begin

   CreateDir('mold\nagruzka\' + Prepod.ADOTable1DSDesigner.Value + ' ' +

   Prepod.ADOTable1DSDesigner2.Value + ' ' + Prepod.ADOTable1DSDesigner3.Value);

   Prepod.DBNavigator1.BtnClick(nbPost);

   Close;

end;

procedure TAddPrepod.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 Prepod.DBNavigator1.BtnClick(nbLast);

 Prepod.DBNavigator1.BtnClick(nbFirst);

 Close;

end;

procedure TAddPrepod.FormShow(Sender: TObject);

begin

 DBEdit1.SetFocus;

end;

end.

unit Unit12;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, AdvGlowButton, StdCtrls, AdvPicture, AdvPanel, ExtCtrls, DBCtrls,

 AdvEdit, AdvEdBtn, PlannerDatePicker, PlannerDBDatePicker, Mask;

type

 TAddPassport = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   GroupBox1: TGroupBox;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   AdvPicture1: TAdvPicture;

   DBEdit1: TDBEdit;

   DBEdit2: TDBEdit;

   DBEdit3: TDBEdit;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   PlannerDBDatePicker1: TPlannerDBDatePicker;

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddPassport: TAddPassport;

implementation

uses Unit3, Unit11;

{$R *.dfm}

procedure TAddPassport.AdvGlowButton1Click(Sender: TObject);

begin

 Prepod.DBNavigator2.BtnClick(nbPrior);

 Prepod.DBNavigator2.BtnClick(nbNext);

 Close;

end;

procedure TAddPassport.FormCreate(Sender: TObject);

begin

 Position := poScreenCenter;

end;

procedure TAddPassport.AdvGlowButton2Click(Sender: TObject);

begin

   Prepod.DBNavigator2.BtnClick(nbPost);

   Close;

end;

procedure TAddPassport.AdvGlowButton3Click(Sender: TObject);

begin

   Prepod.ADOQuery2IDP.Value:=i;

   Prepod.DBNavigator2.BtnClick(nbPost);

   Close;

end;

procedure TAddPassport.FormClose(Sender: TObject;

 var Action: TCloseAction);

begin

 Prepod.DBNavigator2.BtnClick(nbPrior);

 Prepod.DBNavigator2.BtnClick(nbNext);

 Close;

end;

end.

unit Unit13;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, ExtCtrls, DBCtrls, StdCtrls, AdvGlowButton, AdvPanel, AdvPicture,

 AdvEdit, AdvEdBtn, PlannerDatePicker, PlannerDBDatePicker, Mask;

type

 TAddUchStep = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   AdvGlowButton1: TAdvGlowButton;

   GroupBox1: TGroupBox;

   AdvPicture1: TAdvPicture;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   Label1: TLabel;

   DBEdit1: TDBEdit;

   Label2: TLabel;

   PlannerDBDatePicker1: TPlannerDBDatePicker;

   procedure FormCreate(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddUchStep: TAddUchStep;

implementation

uses Unit3, Unit11;

{$R *.dfm}

procedure TAddUchStep.FormCreate(Sender: TObject);

begin

 Position := poScreenCenter;

end;

procedure TAddUchStep.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 Prepod.DBNavigator4.BtnClick(nbPrior);

 Prepod.DBNavigator4.BtnClick(nbNext);

 Close;

end;

procedure TAddUchStep.AdvGlowButton1Click(Sender: TObject);

begin

 Prepod.DBNavigator4.BtnClick(nbPrior);

 Prepod.DBNavigator4.BtnClick(nbNext);

 Close;

end;

procedure TAddUchStep.AdvGlowButton3Click(Sender: TObject);

begin

   Prepod.DBNavigator4.BtnClick(nbPost);

   Close;

end;

procedure TAddUchStep.AdvGlowButton2Click(Sender: TObject);

begin

   Prepod.ADOQuery4IDP.Value:=i;

   Prepod.DBNavigator4.BtnClick(nbPost);

   Close;

end;

end.

unit Unit14;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, ExtCtrls, DBCtrls, AdvGlowButton, StdCtrls, Mask, AdvPanel,

 AdvPicture;

type

 TAddDolzhnost = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   AdvGlowButton3: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton1: TAdvGlowButton;

   GroupBox1: TGroupBox;

   DBEdit1: TDBEdit;

   AdvPicture1: TAdvPicture;

   procedure FormCreate(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddDolzhnost: TAddDolzhnost;

implementation

uses Unit3;

{$R *.dfm}

procedure TAddDolzhnost.FormCreate(Sender: TObject);

begin

  Position := poScreenCenter;

end;

procedure TAddDolzhnost.FormClose(Sender: TObject;

 var Action: TCloseAction);

begin

 Prepod.DBNavigator5.BtnClick(nbPrior);

 Prepod.DBNavigator5.BtnClick(nbNext);

 Close;

end;

procedure TAddDolzhnost.AdvGlowButton2Click(Sender: TObject);

begin

 Prepod.DBNavigator5.BtnClick(nbPrior);

 Prepod.DBNavigator5.BtnClick(nbNext);

 Close;

end;

procedure TAddDolzhnost.AdvGlowButton3Click(Sender: TObject);

begin

   Prepod.DBNavigator5.BtnClick(nbPost);

   Close;

end;

procedure TAddDolzhnost.AdvGlowButton1Click(Sender: TObject);

begin

   Prepod.ADOQuery5IDP.Value:=i;

   Prepod.DBNavigator5.BtnClick(nbPost);

   Close;

end;

end.

unit Unit15;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, AdvPanel, ExtCtrls, AdvEdit, AdvEdBtn, PlannerDatePicker,

 PlannerDBDatePicker, StdCtrls, Mask, DBCtrls, AdvPicture, AdvGlowButton;

type

 TAddRazryad = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   GroupBox1: TGroupBox;

   AdvPicture1: TAdvPicture;

   Label1: TLabel;

   Label2: TLabel;

   DBEdit1: TDBEdit;

   PlannerDBDatePicker1: TPlannerDBDatePicker;

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure FormCreate(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddRazryad: TAddRazryad;

implementation

uses Unit3, Unit11;

{$R *.dfm}

procedure TAddRazryad.AdvGlowButton3Click(Sender: TObject);

begin

   Prepod.ADOQuery6IDP.Value:=i;

   Prepod.DBNavigator6.BtnClick(nbPost);

   Close;

end;

procedure TAddRazryad.AdvGlowButton2Click(Sender: TObject);

begin

   Prepod.DBNavigator6.BtnClick(nbPost);

   Close;

end;

procedure TAddRazryad.AdvGlowButton1Click(Sender: TObject);

begin

 Prepod.DBNavigator6.BtnClick(nbPrior);

 Prepod.DBNavigator6.BtnClick(nbNext);

 Close;

end;

procedure TAddRazryad.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 Prepod.DBNavigator6.BtnClick(nbPrior);

 Prepod.DBNavigator6.BtnClick(nbNext);

 Close;

end;

procedure TAddRazryad.FormCreate(Sender: TObject);

begin

 Position := poScreenCenter;

end;

end.

unit Unit16;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, AdvGlowButton, AdvPanel, ExtCtrls, StdCtrls, AdvEdit, AdvEdBtn,

 PlannerDatePicker, PlannerDBDatePicker, Mask, DBCtrls;

type

 TAddKategory = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   GroupBox1: TGroupBox;

   Label1: TLabel;

   Label2: TLabel;

   PlannerDBDatePicker1: TPlannerDBDatePicker;

   DBLookupComboBox1: TDBLookupComboBox;

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddKategory: TAddKategory;

implementation

uses Unit3, Unit11;

{$R *.dfm}

procedure TAddKategory.AdvGlowButton1Click(Sender: TObject);

begin

 Prepod.DBNavigator7.BtnClick(nbPrior);

 Prepod.DBNavigator7.BtnClick(nbNext);

 Close;

end;

procedure TAddKategory.FormClose(Sender: TObject;

 var Action: TCloseAction);

begin

 Prepod.DBNavigator7.BtnClick(nbPrior);

 Prepod.DBNavigator7.BtnClick(nbNext);

 Close;

end;

procedure TAddKategory.AdvGlowButton2Click(Sender: TObject);

begin

   Prepod.DBNavigator7.BtnClick(nbPost);

   Close;

end;

procedure TAddKategory.AdvGlowButton3Click(Sender: TObject);

begin

   Prepod.ADOQuery7IDP.Value:=i;

   Prepod.DBNavigator7.BtnClick(nbPost);

   Close;

end;

end.

unit Unit17;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, AdvGlowButton, StdCtrls, AdvPanel, ExtCtrls, DBCtrls,

 AdvPicture, Mask;

type

 TAddVAR = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   GroupBox1: TGroupBox;

   AdvGlowButton1: TAdvGlowButton;

   AdvGlowButton2: TAdvGlowButton;

   AdvGlowButton3: TAdvGlowButton;

   DBEdit1: TDBEdit;

   DBEdit2: TDBEdit;

   Label1: TLabel;

   Label2: TLabel;

   AdvPicture1: TAdvPicture;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton3Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 AddVAR: TAddVAR;

implementation

uses Unit6;

{$R *.dfm}

procedure TAddVAR.FormCreate(Sender: TObject);

begin

 Position := poScreenCenter;

end;

procedure TAddVAR.AdvGlowButton3Click(Sender: TObject);

begin

 VneAudRab.DBNavigator1.BtnClick(nbPrior);

 VneAudRab.DBNavigator1.BtnClick(nbNext);

 Close;

end;

procedure TAddVAR.AdvGlowButton2Click(Sender: TObject);

begin

   VneAudRab.DBNavigator1.BtnClick(nbPost);

   Close;

end;

procedure TAddVAR.AdvGlowButton1Click(Sender: TObject);

begin

   VneAudRab.ADOQuery1IDP.Value:=i;

   VneAudRab.DBNavigator1.BtnClick(nbPost);

   Close;

end;

procedure TAddVAR.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 VneAudRab.DBNavigator1.BtnClick(nbPrior);

 VneAudRab.DBNavigator1.BtnClick(nbNext);

 Close;

end;

end.

unit Unit18;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, AdvPicture, AdvGlowButton, StdCtrls, sEdit, rtflabel, AdvPanel,

 ExtCtrls, ShellAPI, ImgList;

type

 TUNRename = class(TForm)

   AdvPanel1: TAdvPanel;

   AdvPanelStyler1: TAdvPanelStyler;

   RTFLabel1: TRTFLabel;

   AdvGlowButton1: TAdvGlowButton;

   AdvPicture1: TAdvPicture;

   Edit1: TEdit;

   Edit2: TEdit;

   AdvGlowButton2: TAdvGlowButton;

   ImageList1: TImageList;

   Timer1: TTimer;

   procedure FormCreate(Sender: TObject);

   procedure AdvGlowButton1Click(Sender: TObject);

   procedure AdvGlowButton2Click(Sender: TObject);

   procedure Timer1Timer(Sender: TObject);

   procedure FormShow(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 UNRename: TUNRename;

implementation

uses Unit7;

{$R *.dfm}

procedure TUNRename.FormCreate(Sender: TObject);

begin

 Position := poScreenCenter;

 Edit2.Text := '';

end;

procedure TUNRename.AdvGlowButton1Click(Sender: TObject);

var

 put:string;

begin

 //Копирование и переименование

 copyfile(

 PChar(extractfilepath(ParamStr(0)) + 'mold\sved\Карточка_служебных_заданий.doc'),

 PChar(extractfilepath(ParamStr(0)) + 'mold\nagruzka\' + Edit1.Text + '\' + Edit2.Text + '.doc'),true);

 //Обновление

 UchNagruzka.ADOTable1.Active:=False;

 UchNagruzka.ADOTable1.Active:=True;

 UchNagruzka.RefreshList;

 //Открытие

 put := extractfilepath(ParamStr(0)) + 'mold\nagruzka\' + Edit1.Text + '\';

 ShellExecuteA(Application.Handle, 'open', PChar(Edit2.text + '.doc'), '', pchar(put), SW_SHOWNORMAL);

 close;

end;

procedure TUNRename.AdvGlowButton2Click(Sender: TObject);

begin

 close;

end;

procedure TUNRename.Timer1Timer(Sender: TObject);

begin

 if Edit2.Text = '' then

 AdvGlowButton1.Enabled := False else

 AdvGlowButton1.Enabled := True;

end;

procedure TUNRename.FormShow(Sender: TObject);

begin

 Edit2.Text := '';

end;

end.


П
.7. Материалы внедрения


 

А также другие работы, которые могут Вас заинтересовать

14726. Анализ дискретной математической модели непрерывного динамического объекта 463.34 KB
  Лабораторная работа №4 Анализ дискретной математической модели непрерывного динамического объекта Цели работы: выполнить анализ заданного непрерывного объекта; выбрать несколько периодов квантования объекта; получить дискретные ММ непрерывного объект
14727. Синтез и исследование динамических наблюдателей состояния линейных объектов управления 224.99 KB
  4 Лабораторная работа №3 Синтез и исследование динамических наблюдателей состояния линейных объектов управления Цель работы: ознакомление с современными методами наблюдения состояния технических объектов в системах управления синтеза соответству...
14728. Исследование эквивалентных преобразований математических моделей динамических систем в пространстве состояний 36.36 KB
  4 Лабораторная работа №2 Исследование эквивалентных преобразований математических моделей динамических систем в пространстве состояний Цели работы: исследовать управляемость и наблюдаемость системы; привести ММ управляемой ДС к основной норм
14729. Анализ и планирование показателей рецептуры в Сети аптек «Винницкая городская аптека» 527.5 KB
  Руководство отделами осуществляют заведующие отделами и их заместители. В штате РПО предусмотрены должности провизоров и фармацевтов. Провизоры выделяются для приема рецептов на лекарства индивидуального изготовления и ГЛС, осуществления контроля качества приготовляемых лекарств
14730. Ознакомительная работа в среде MuLisp. Базовые функции Лиспа. Символы, свойства символов. Средства языка для работы с числами 76 KB
  Лабораторная работа № 1. Тема: Ознакомительная работа в среде MuLisp. Базовые функции Лиспа. Символы свойства символов. Средства языка для работы с числами. Цель: Ознакомиться со средой MuLisp. Изучить базовые функции Лиспа символы и их свойства а также средства для работы с...
14731. Определение функций. Функции ввода-вывода. Вычисления, изменяющие структуру 53 KB
  Лабораторная работа №2. Тема: Определение функций. Функции вводавывода. Вычисления изменяющие структуру. Цель: Получить навыки в написании функций. Изучить функции вводавывода. Функции определяемые пользователем. Функция ввода. Функции вывода. Вы...
14733. Ознакомиться с реализацией рекурсивных структур данных (на примере списков) на языке Lisp 31.5 KB
  Лабораторная работа №7 Цели работы Ознакомиться с реализацией рекурсивных структур данных на примере списков на языке Lisp. Реализовать основные функции работы со списками: создание списка вставка элемента с клавиатуры на позицию по з
14734. Изучение устройства и режимов работы диффузионной системы типа СДО - 125/3 - 12 692 KB
  Изучение устройства и режимов работы диффузионной системы типа СДО 125/3 12 Цель работы: Изучить конструкцию диффузионной системы типа СДО125/312 и особенности эксплуатации при проведении диффузионноокислительных процессов в технологии производства интегральн...