Содержание
Введение
1. Постановка задачи
1.1 Организационно-экономическая сущность задачи
1.2 Структура входных и выходных данных
2. Вычислительная система
2.1 Используемые технические средства
2.2 Инструменты разработки
3. Проектирование задачи
3.1 Описание модели данных
3.2 Объектно-ориентированный анализ
3.3 Концептуальный прототип
4 Описание программы
4.1 Концептуальный прототип
4.2 Организация данных
4.3 Реализация функций
5. Тестирование
5.1 Тесты на использование
5.2 Функциональное тестирование
5.3 Полное тестирование
6. Описание применения
6.1 Требования к программному и аппаратному обеспечениюкомпьютера
6.2 Требования к приложению
6.3 Функциональное назначение и область применения программы
6.4 Руководство пользователя
Заключение
Приложение
Введение
В современном мире огромнуюроль играют информационные технологии и сегодня уже не вызывает сомнения, чтокомпьютеры будут играть важную роль в будущей цивилизации человечества. Ужесейчас их внедрение приводит к коренному изменению технологии во многихотраслях современного производства. И от того, в какой степени и как будутрешены проблемы компьютеризации обучения детей и молодежи теперь, существеннозависит подготовленность подрастающего поколения к жизни в будущем обществе.
Компьютер быстро вошел внашу жизнь. Еще несколько лет назад было редкостью увидеть какой-нибудьперсональный компьютер – они были, но были очень дорогие, и даже не каждаяфирма могла иметь у себя в офисе компьютер. Теперь в каждом третьем доме естькомпьютер, который уже глубоко вошел в жизнь человека.
Современныевычислительные машины представляют одно из самых значительных достиженийчеловеческой мысли, влияние, которого на развитие научно-технического прогрессатрудно переоценить. Области применения ЭВМ непрерывно расширяются.
С помощью компьютерных системосуществляется введение документации, обеспечивается электронная почта и связьс банками данных. Сети ЭВМ связывают разных пользователей, расположенных водном учреждении или находящихся в различных регионах страны.
В данное время существуетглобальная проблема за контролем документооборота учета сотрудников вкакой-либо организации. Данные могут легко уничтожиться либо потеряться, чтоможет привести к нежелательным последствиям. Эта проблема усугубляется приколлективном использовании информации о сотрудниках, когда надо найтидокументы, созданные другим сотрудником, и, наконец, она становится практическиневыполнимой в том случае, если документы утеряны.
Огромный недостаток вбумажных носителях заключается в том, что много времени тратится на поиск необходимыхдля работы данных.
В такой ситуацииединственно правильным решением является ведение учета и хранение информации осотрудниках с помощью ПЭВМ в Базе данных, которой в необходимости можно легкообменяться и утеря информации будет практически невозможна.
Для более эффективного иполного учета состояния дисциплинарной практики в УВД Миноблисполкома мною былоразработано ПС, очень удобное и легкое в применении и не требующего углубленныхзнаний компьютера.
Данная пояснительнаязаписка является полным описанием разработанного ПС и разбита на ряд глав посодержательному признаку.
Первый раздел “Постановказадачи” исследует предметную область; определяет круг задач, которые должныбыть автоматизированы или модифицированы; включает описание бизнес-процессов;определяет функциональные требования и как решается задача в настоящее время.Также первый раздел включает модель, которая отображает функциональнуюструктуру объектов, то есть производимые ими действия и связи между этимидействиями в виде диаграммы вариантов использования, диаграммы деятельности,диаграммы компонентов.
Во втором разделе“Вычислительная система” находятся данные о требованиях к аппаратномуобеспечению и конфигурации, операционным ресурсам, приводится характеристикаоперативной системы, выбор и обоснование среды разработки приложения.
В разделе “Проектированиезадачи ” находятся сведения о требованиях к пользовательскому интерфейсу.Описывается структура пользовательского интерфейса – система меню, диалоговыхокон и элементов управления. В разделе находятся сведения о логической ифизической структуре данных в контексте среды разработки. Содержится информацияо разработанных функциях, которые закреплены за определенными элементамиуправления, структура и описание функций пользователя в рамках средыразрабатываемого приложения. Содержится информация о взаимосвязях функций, осоставе модулей и принципах объединения функций в модули. В конце разделаприводятся листинги всех модулей с комментариями и указанием элементовуправления, которые инициируют их выполнение.
Четвертый раздел“Описание программного средства” содержит общие сведения об обозначении иименовании приложения, программное обеспечение, необходимое дляфункционирования программы, принципы инсталляции программного средства. Находятсясведения о классах решаемых задач и назначение программы. Также четвертыйраздел включает информацию о входных и выходных данных, их характер,организацию, формат и описание.
В пятом разделе “Методикаиспытаний” содержаться сведения о требованиях к техническим средствам дляпроведения испытаний, требования к характеристикам программы применительно кусловиям эксплуатации, требования к информационной и программной совместимости.Также в разделе находится информация о порядке проведения испытаний, то есть офункциональном и полном тестировании.
Шестой раздел“Применение” содержит сведения о назначении программного средства, областиприменения, классе решаемых задач, ограничениях, накладываемых на областьприменения. Содержит требования к необходимым для данного программного средстватехническим и программным ресурсам. В разделе находится информация о структуреи методике использования справочной системы.
Приложения кпояснительной записке содержат текст программы и отчет журнала “Приложение”.
В графической частипроекта представлены: диаграмма вариантов использования, диаграмма классов,диаграмма последовательности и диаграмма деятельности.
1 Постановка задачи
1.1Организационно-экономическая сущностьзадачи
Разрабатываемыйпрограммный продукт на тему: “Автоматизация учета правонарушений в УВДМиноблисполкома”, предназначен для учета сотрудников УВД, нарушившихдисциплинарные нормы.
Для конкретной постановкизадачи и формулирования требований к разрабатываемому приложению требуетсяисследовать предметную область проекта и цели, поставленные перед проектом. Цельюпроекта является контроль сотрудников и принятия мер для прекращения нарушениядисциплины.
Программный продуктдолжен обрабатывать и хранить информацию. Приложение должно выполнятьнеобходимый поиск по заданному критерию и выводить найденную информации напечать.
Проанализировавпредметную область определяется круг задач, которые будут автоматизированы вразрабатываемой программе. Созданный продукт должен выполнять следующиефункции: ведение учета сотрудников, поиск по заданному критерию, формированиеотчетов, автоматическое снятие взыскания через год после его наложения.
Разрабатываемая программабудет использоваться в УВД Миноблисполкома постоянно. Это обусловлено тем, чтоблагодаря ей будет осуществлен контроль работников организации. Широкоеприменение получат функции автоматического снятия взыскания и автоматизацииввода информации.
Исходя из анализапредметной области разрабатываемое приложение должно содержать:
— БДсотрудников, получивших взыскания;
— возможностьдобавления, редактирование и удаления записи;
— выбордолжности, звания, областей, службы и подразделения из блока;
— запросыпо блокам по фамилии, области, службе, подразделению, по должностям и поприказу;
— отчетыпо запросам с возможностью предварительного просмотра и выводом на печать;
— автоматическоеснятие взыскания через год;
— досрочноеснятие взыскания.
Описание бизнес-процессов(функций) используемых в разрабатываемом продукте представлено на диаграммевариантов использования, которая представлена в графической части на 1 листе.
Основное приложениедолжно широко использовать технологию диалоговых окон для приведения к минимумуошибок пользователя при работе с приложением. Приложение должно иметь хорошоразвитую справочную систему.
При разработке программыи построения алгоритмов для решения его задач разработчик должен соблюдатьследующие правила:
— структура алгоритма недолжна быть слишком сложной;
— алгоритмы программыдолжны быть легко модифицированы;
— алгоритмы не должнывлиять на не корректную работоспособность всей программы.
В настоящее время в УВДМиноблисполкома учет сотрудников ведется в программе Excel, в которой формировать запросы, отчеты, а такжеснимать записи с учета необходимо вручную. В связи с этим данное ПС создавалосьдля улучшения оперативной работы учета сотрудников, нарушивших дисциплинарныенормы, экономии времени ведения учета, а также для автоматизации действиячеловека, т.е. замены ручного труда на действия с помощью ПЭВМ.
В данном программном продуктепланируется создавать отчеты и диаграммы по результатам дисциплины, как по УВД,так и по области в целом, вести статистику изменения показателей по сравнению спрошлым годом, все это преследует цель постоянного контроля сотрудников ипринятия мер для избежания нарушения дисциплины в УВД Миноблисполкома.
1.2Структура входных и выходных данных
При проектировании моделиприложения было выявлено, что наиболее предпочтительным будет хранение информациио сотрудниках в таблицах Microsoft Office Access. Данные файлы будут типизированными,то есть строго определенного типа, состоящие из записей, которые в свою очередьсостоят из полей определенного типа. Количество полей и их тип определяются наэтапе проектирования исходя из требований к хранимой в файлах информации.
В приложении будутсозданы две таблицы для хранения информации.
Первый таблица будетсодержать сведения о сотрудниках управления и области, а вторая информацию оснятых с учета сотрудниках. Данные таблицы будут содержать следующие поля:
— ФИО;
— звание;
— область ил УВД;
— служба;
— подразделение;
— должность;
— взыскание;
— чей приказ;
— номер приказа;
— дата приказа;
— краткое описаниепроступка.
В приложении “DisPract” входными данными будут являться информацияо сотрудниках, в соответствии с полями таблиц.
Выходными документами вданной программе являются отчёты, а также данные, отображаемые в DBGrid. По нажатию на кнопку “Отчет” илиподменю “Печать” пользователь может вывести отчёт на печать или предварительноего просмотреть, пример отчета приведен на рисунке 1. В отчётах по запросамбудут входить только те записи, которые удовлетворяют заданному критерию.
Длясоздания отчетов используется технология Rave Reports, которая являетсяавторизованным членом Комитета открытых систем и разрабатывает программноеобеспечение для Delphi. Вее основе лежит идея отделения процесса разработки от процесса создания отчетаза счет использования промежуточного документа, который называется проектомотчета. Проект отчета создается с помощью среды Rave (Report Authoring VisualEnvironment — визуальная среда автора отчета), а в создаваемую программувнедряется так называемая машина генератора отчета, которая по данным, полученнымиз файла проекта, создает документ отчета. Пример отчета
/>
Рисунок — 1
2. Вычислительная система
2.1 Используемыетехнические средства
Минимальнымитребованиями к аппаратному и программному обеспечению, необходимому длякорректной работы программы являются:
— процессор:Pentium II 400 МГц и выше;
объемоперативной памяти: 32 Мбайт и выше;
— операционная система: Windows 98, Windows Me, Windows XP;
— свободноеместо на жестком диске 20 Мбайт и выше;
— наличиемонитора VGA с разрешением не менее 800x600 точек;
— наличиеманипулятора “мышь”;
— CD-ROM 10х;
— клавиатураIBM PC любой модификации;
— принтер.
2.2 Инструментыразработки
Для разработки программыразработчиком были выбраны следующие инструменты разработки:
— операционная система Microsoft Windows XP Professional;
— интегрированная средаDelphi 7;
— пакет Rational Rose.
Возможности операционнойсистемы Windows XP Professional позволяют использовать ее как основнуюоперационную систему для современных настольных компьютеров и компьютеровNotebook, используемых на предприятиях любого типа. При создании этой системыкорпорация Майкрософт сохранила все полезные возможности Windows 98 — технологию Plug and Play, простой и понятный пользовательский интерфейс,широкие возможности управления. Кроме того, их дополнили система безопасности,средства управления и обеспечения надежности, характерные для системы WindowsNT. Развертывание системы Windows XP Professional как на одном компьютере, таки в рамках всемирной сети позволяет повысить эффективность использованиякомпьютерных технологий при одновременном снижении общей стоимости владения.
Delphi – это мощная среда визуального,объектно-ориентированного программирования, позволяющая решать множество задач,в частности это комбинация нескольких важнейших технологий:
– Высокопроизводительныйкомпилятор в машинный код;
–объектно-ориентированная модель компонент;
– визуальное (а,следовательно, и скоростное) построение приложений из программных прототипов;
– Масштабируемые средствадля построения баз данных.
Компилятор, встроенный вDelphi, обеспечивает высокую производительность, необходимую для построенияприложений в архитектуре “клиент-сервер”. Этот компилятор в настоящее времяявляется самым быстрым в мире, его скорость компиляции составляет свыше 120тысяч строк в минуту на компьютере 486DX33. Он предлагает легкость разработки ибыстрое время проверки готового программного блока, характерного для языковчетвертого поколения (4GL) и в то же время обеспечивает качество кода,характерного для компилятора 3GL.
Основной упор в моделиDelphi делается на максимальном использовании кода. Это позволяет разработчикамстроить приложения весьма быстро из заранее подготовленных объектов, а такжедает им возможность создавать свои собственные объекты для среды Delphi.Никаких ограничений по типам объектов, которые могут создавать разработчики, несуществует. Действительно, все в Delphi написано на нем же, поэтомуразработчики имеют доступ к тем же объектам и инструментам, которыеиспользовались для создания среды разработки. В результате нет никакой разницымежду объектами, поставляемыми Borland или третьими фирмами, и объектами,которые вы можете создать.
Объекты БД в Delphiоснованы на SQL и включают в себя полную мощь Borland Database Engine. В составDelphi также включен Borland SQL Link, поэтому доступ к СУБД Oracle, Sybase,Informix и InterBase происходит с высокой эффективностью. Кроме того, Delphiвключает в себя локальный сервер Interbase для того, чтобы можно былоразработать расширяемые на любые внешние SQL-сервера приложения в офлайновомрежиме.
Данный дипломный проектбыл выполнен на языке программирования Borland Delphi 7.0 на основе такой технологии как ADO. Таблицы и отчеты разрабатывались вприложении Rave Reports. Для более понятного и удобного интерфейсаиспользовались такие компоненты как DBGrid, DBedit, Dbtext. Запросы создавались с помощью компонента ADOQuery, а доступ к набору данных через ADOTable. А отчёты на основе запросов спомощью компонентов RvQueryConnection.
CASE-средство RationalRose было выбрано, так как оно позволяет разрабатывать проектную документацию ввиде диаграмм и спецификаций. Rational Rose — CASE-средство фирмы RationalSoftware Corporation — предназначено для автоматизации этапов анализа ипроектирования ПО, а также для генерации кодов на различных языках и выпуска проектнойдокументации. Rational Rose использует синтез-методологиюобъектно-ориентированного анализа и проектирования, основанную на подходах трехведущих специалистов в данной области: Буча, Рамбо и Джекобсона. Разработаннаяими универсальная нотация для моделирования объектов (UML — Unified ModelingLanguage) претендует на роль стандарта в области объектно-ориентированногоанализа и проектирования. Кроме того, Rational Rose содержит средствареинжиниринга программ, обеспечивающие повторное использование программныхкомпонент в новых проектах.
3.Проектирование задачи
3.1 Описаниемодели данных
Теоретическойосновой этой модели стала теория отношений, основу которой заложили два логика— американец Чарльз Содерс Пирс (1839-1914) и немец Эрнст Шредер (1841-1902). Вруководствах по теории отношений было показано, что множество отношенийзамкнуто относительно некоторых специальных операций, то есть образует вместе сэтими операциями абстрактную алгебру. Это важнейшее свойство отношений былоиспользовано в реляционной модели для разработки языка манипулирования данными,связанного с исходной алгеброй. Американский математик Э. Ф. Кодд в 1970 годувпервые сформулировал основные понятия и ограничения реляционной модели,ограничив набор операций в ней семью основными и одной дополнительнойоперацией. Предложения Кодда были настолько эффективны для систем баз данных,что за эту модель он был удостоен престижной премии Тьюринга в областитеоретических основ вычислительной техники.
Основнойструктурой данных в модели является отношение, именно поэтому модель получиланазвание реляционной (от английского relation — отношение).
В соответствии с наиболее распространенной трактовкой,принадлежащей К. Дейту, реляционная модель данных состоит из трех частей –структурной части, целостной части и манипуляционной.
Структурная часть описывает, какие объекты рассматриваютсяреляционной моделью. Определяется, что единственной структурой данных,используемой в реляционной модели, являются n-арные отношения.
Целостная часть описывает ограничения специального вида,которые должны выполнять для любых отношений в любых реляционных базах данных –это целостность сущностей и целостность ссылок или внешних ключей.
Манипуляционная часть описывает два эквивалентных способаманипулирования реляционными данными – реляционную алгебру и реляционноеисчисление.
Данных относятся логические, строковые и численные. Однакоэто жесткое требование практически не накладывает никаких ограничений,поскольку трактуется следующим образом: в реляционных операциях не должнаучитываться внутренняя структура данных. Тем не менее, должны быть описаныдействия, которые можно производить с определенным типом данных как с единымцелым. Так для данных числового типа разрешена операция сложения, для строковыхже данных аналогом сложения будет операция конкатенации или присоединения.
С понятием типа данных тесно связано понятие домена. Доменявляется семантическим понятием и рассматривается как подмножество значенийнекоторого типа данных, имеющих определенный смысл. Домен характеризуетсяследующими свойствами:
— домен имеет в пределах базы данных уникальное имя;
— домен определен на некотором простом типе данных или надругом домене;
— домен может иметь некоторое логическое условие, позволяющееописать подмножества данных, допустимых для данного домена;
— домен несет определенную смысловую нагрузку.
Число атрибутов в отношении называют степенью или арностьюотношения.
Мощность множества кортежей отношения называют мощностьюотношения.
Таким образом, заголовок отношения описывает декартовопроизведение доменов, на котором задано отношение. Заголовок статичен и неменяется во время работы с базой данных. Если в отношении изменены, добавленыили удалены атрибуты, то результатом этих действий будет появление нового отношения.Тело отношения представляет собой набор кортежей, то есть подмножестводекартова произведения доменов. Именно тело отношения является отношением вматематическом смысле. Тело отношения может изменяться во время работы с базойданных.
Реляционной базой данных называется набор отношений.
Схемой реляционной базы данных называется набор заголовковвходящих в неё отношений.
3.2Объектно-ориентированный анализ
Основным классом,использующемся в проекте, будет класс TForm. Данный класс будет использоватьсядля размещения на нем компонентов – элементов создаваемого приложения. КлассTForm будет включать следующие классы, предназначенные для создания интерфейсав программе: TLabel, TEdit, TMemo, TButton, TStringGrid и другие. Классиспользуется для обозначения множества объектов, которые обладают одинаковойструктурой, поведением и отношениями с объектами из других классов.
Диаграмма классов служитдля представления статической структуры модели системы в терминологии классовобъектно-ориентированного программирования. Диаграмма может отражать различныевзаимосвязи между отдельными сущностями предметной области, такими как объектыи подсистемы, а также описывать их внутреннюю структуру и типы отношений. Наданной диаграмме не указывается информация о временных аспектахфункционирования системы. Диаграмма классов представлена в графической части налисте 2.
Для моделированияпроцесса выполнения операций используются диаграмма деятельности. Каждоесостояние на диаграмме деятельности соответствует выполнению некоторойэлементарной операции, переход в следующее состояние срабатывает только призавершении этой операции. Диаграмма деятельности представлена в графическойчасти на листе 4.
Для описания реальныхсущностей предназначена диаграмма компонентов. Диаграмма компонентов описываетобъекты реального мира – компоненты программного обеспечения. Эта диаграммапозволяет определить архитектуру разрабатываемой системы, установив зависимостимежду программными компонентами, в роли которых может выступать исходный, бинарныйи исполняемый код.
На главной форме имеетсятри вкладки:
на первой компонентDataSource1 типа TDataSourceявляется промежуточным звеном между компонентом ADOQuery1 типа ADOQuery,соединенным с таблицей БД сотрудников Аппарата УВД, и визуальным компонентом DBGrid1, с помощью которого пользовательвзаимодействует с этой таблицей; на второй компонент DataSource2 типа TDataSource является промежуточным звеном междукомпонентом ADOQuery2 типа ADOQuery, соединенным с таблицей БД сотрудников всехобластей УВД и визуальным компонентом DBGrid2, с помощью которого пользователь взаимодействует с этой таблицей; натретьей компонент DataSource3 типа TDataSource является промежуточным звеном между компонентом ADOTable2 типа ADOTable, соединенным с таблицей БД сотрудников Аппарата УВД,и визуальным компонентом DBGrid3,с помощью которого пользователь взаимодействует с этой таблицей;
Компоненты DBGrid1, DBGrid2, DBGrid3отображает содержимое таблицы БД в виде сетки, в которой столбцы соответствуютполям, а строки – записям таблицы. Эти компоненты связываются со своимисточниками данных через свойство DataSource. Аналогично взаимодействует DBGrid1 формы поиска данных с компонентом ADOQuery3 черезDataSource4.
Для компонента ADOConnection1 также с помощью свойства ConnectionString нужно установить соединение схранилищем данных.
В таблице 3.2 приведеныкомпоненты, используемые для работы с таблицами и запросами БД, их основныесвойства и значения этих свойств.
Таблица 3.2 — Значениясвойств компонентовКомпонент Свойства Значения ADOConnection1 ConnectionString Pr.mdb ADOQuery1 Connection ADOConnection1 ADOQuery2 Connection ADOConnection1 ADOQuery3 Connection ADOConnection1 ADOTable2 Connection ADOConnection1 ADOTable1 Connection ADOConnection1 DataSource1 DataSet ADOQuery1 DataSource2 DataSet ADOQuery2 DataSource3 DataSet ADOTable2 DataSource4 DataSet ADOQuery3 DBGrid1 (Главная форма) DataSource DataSource1 DBGrid2 (Главная форма) DataSource DataSource2 DBGrid3 (Главная форма) DataSource DataSource3 DBGrid1 (Форма поиска данных) DataSource dsrType /> /> /> /> />
Диаграмма компонентов представленав графической части на листе 3.
3.3 Концептуальныйпрототип
Разработанный программныйпродукт “Учет дисциплинарной практики в УВД Миноблисполкома” представляет собойфайл “DisPract.exe”.
При двойном нажатиикнопки мыши на файл запускается файл, состоящий из главного окна, изображенногона рисунке 3.1
/>
Рисунок 3.1 – Главноеокно программы
На главном окне есть тривкладки с тремя таблицами: информация о сотрудниках УВД, областных сотрудникахи сотрудниках снятых с учета. В зависимости от того, на какой вы вкладке в данныймомент находитесь, с той вы будите и работать, а именно редактировать запись,удалять ее, добавлять новый, осуществлять поиски и выводить данные на печать.
Для добавления новогосотрудника нужно нажать кнопку “Добавление новой записи”, находящуюся в нижнейчасти главного окна, после чего откроется новое окно “Добавление записи”,изображенное на рисунке 3.2.
Для редактированиясотрудника нужно нажать кнопку “Редактирование записи”, после чего на экранепоявится окно “Редактирование записи” аналогичное окну представленному на рисунке3.2.
/>
Рисунок 3.2 – Окно“Добавление записи”
Для удаления записинажмите кнопку “Удаление записи”, после чего программа спросит о том,действительно ли вы хотите удалить запись, если вы нажмите “Ok”, то запись будет удалена.
В данном программномпродукте предусмотрена такая возможность как досрочное снятие. Онопредназначено для того, чтобы раньше установленного срока (равняется одномугоду с даты подписания приказа) снять запись с учета, после чего она будетавтоматически занесена в Базу данных сотрудников снятых с учета. Еслисотрудника не снимать досрочно, он будет снят через год после того, как егопоставили на учет.
Досрочное снятиесотрудника осуществляется двумя способами:
– выбрать необходимуюзапись на нужной вкладке и нажать “Файл-Досрочное снятие”;
– выбрать “Поиск-пофамилии”, затем ввести фамилию сотрудника, которого необходимо снять с учета инажать кнопку “Выбрать”, после чего в новом окне нажать на кнопку “Досрочноеснятие”.
Далее программа откроетновое окно, где можно ввести новую дату и номер снятия приказа (рисунок 3.3). Послевнесения изменений нажмите на кнопку “Записать” и внесенные измененияприменятся к записи и вы можете это увидеть, перейдя на третью вкладку главногоокна.
/>
Рисунок 3.3 – Окно“Досрочное снятие”
Данный программныйпродукт осуществляет поиск по фамилии, по званию, по области, по службе, поподразделения, по должности и по месту приказа. Для выполнения поиска пофамилии следует выбрать “Поиск-по фамилии”, после выбора откроется окно (рисунок 3.4), где необходимо ввести фамилию или выбрать ее из списка.
После выбора фамилиипрограмма выдаст результата поиска в новом окне (рис. 3.5) Если ни одной записине найдено, то программа выдаст сообщение, в котором будет сказано, что в Базеданных нет сотрудников, удовлетворяющих критерию запроса. Аналогично действуюти выше перечисленные запросы.
/>
Рис. 3.3.4 Окно “Выборфамилии для поиска”
/>
Рис. 3.3.5 Окно “Выборфамилии для поиска”
3.4 Функции:логическая и физическая организация и элементы управления
Приисследовании диаграммы вариантов использования были выявлены основныефункциональные требования поставленной задачи, которые нужно было реализовать впроекте. Для реализации требований, поставленных перед автором проекта, в программебыл создан ряд процедур, которые обеспечивают их корректное выполнение.Процедуры, используемые в программе, не являются встроенными в языкпрограммирования, а реализованы автором.
Многие процедуры впрограмме взаимосвязаны между собой. Взаимосвязь процедур используется как длявозможности дальнейшей обработки уже обработанной информации другимипроцедурами, так и для возможности существования некоторых процедур посредствам других. Исходя из диаграммы вариантов использования, самой главнойфункцией в программе является ввод информации, поиск и контроль снятиявзыскания.
Для реализации даннойфункции было создано ряд процедур, которые представлены ниже:
· процедурасортировки информации областников или аппарата управления и автоматическоеснятие взыскания
procedureTForm2.FormActivate(Sender: TObject);
var k:integer;
begin
withdatamodule4.ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('select* from Pract');
sql.Add('whereRugo=«Аппарат УВД»');
Open;
ifRecordCount 0 then
begin
datamodule4.DataSource1.DataSet:=datamodule4.adoquery1;
end
else
begin
end;
end;
withdatamodule4.ADOQuery2 do begin
Close;
SQL.Clear;
SQL.Add('select* from Pract');
sql.Add('whereRugo«Аппарат УВД»');
Open;
ifRecordCount 0 then
begin
datamodule4.DataSource2.DataSet:=datamodule4.adoquery2;
end
else
begin
end;
end;
datamodule4.ADOTable1.Open;
datamodule4.ADOTable2.Open;
while notdatamodule4.ADOTable1.Eof do
begin
k:=0;
ifdatamodule4.ADOTable1dataspr.Value
begin
datamodule4.ADOTable2.Insert;
datamodule4.ADOTable2['Fam']:=datamodule4.ADOTable1fam.Value;
datamodule4.ADOTable2['Imia']:=datamodule4.ADOTable1imia.Value;
datamodule4.ADOTable2['otc']:=datamodule4.ADOTable1otc.Value;
datamodule4.ADOTable2['zvanie']:=datamodule4.ADOTable1zvanie.Value;
datamodule4.ADOTable2['rugo']:=datamodule4.ADOTable1rugo.Value;
datamodule4.ADOTable2['sl']:=datamodule4.ADOTable1sl.Value;
datamodule4.ADOTable2['podr']:=datamodule4.ADOTable1podr.Value;
datamodule4.ADOTable2['dolj']:=datamodule4.ADOTable1dolj.Value;
datamodule4.ADOTable2['vzisk']:=datamodule4.ADOTable1vzisk.Value;
datamodule4.ADOTable2['chpr']:=datamodule4.ADOTable1chpr.Value;
datamodule4.ADOTable2['nompr']:=datamodule4.ADOTable1nompr.Value;
datamodule4.ADOTable2['datapr']:=datamodule4.ADOTable1datapr.Value;
datamodule4.ADOTable2['opis']:=datamodule4.ADOTable1opis.Value;
datamodule4.ADOTable2['nomspr']:=datamodule4.ADOTable1nomspr.Value;
datamodule4.ADOTable2['dataspr']:=datamodule4.ADOTable1dataspr.Value;
datamodule4.ADOTable2.Post;
datamodule4.ADOTable1.Delete;
k:=1;
end;
datamodule4.ADOTable1.Next;
if k=1 thendatamodule4.ADOTable1.Prior;
end;
datamodule4.ADOTable1.Close;
datamodule4.ADOTable2.Close;
datamodule4.ADOTable2.Active:=true;
end;
· процедура поискапо фамилии (аналогично выполняются и другие запросы)
procedureTForm2.N6Click(Sender: TObject);
var
fam:string[30];
begin
form6.Caption:='Поиск по фамилии';
form6.bsSkinButton2.Visible:=true;
ifpagecontrol1.ActivePage=tabsheet1 then begin
fam:=InputBox('Выборкаинформации из БД','Укажите фамилию, по которой необходимо выполнить поиск','');
if fam'' then
begin
withdatamodule4.ADOQuery3 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromPract'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (Fam like"'+fam+ '%") and (Rugo=«Аппарат УВД»)'); //выбор данных изтаблицы, где
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery3;
end
else
begin
ShowMessage('В БДсотрудников нет записей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
ifpagecontrol1.ActivePage=tabsheet2 then begin
fam:=InputBox('Выборкаинформации из БД','Укажите фамилию, по которой необходимо выполнить поиск','');
if fam'' then
begin
withdatamodule4.ADOQuery3 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromPract'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (Fam like"'+fam+ '%") and (Rugo«Аппарат УВД»)'); //выборданных из таблицы, где
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery3;
end
else
begin
ShowMessage('В БДсотрудников нет записей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
ifpagecontrol1.ActivePage=tabsheet3 then begin
fam:=InputBox('Выборкаинформации из БД','Укажите фамилию, по которой необходимо выполнить поиск','');
if fam'' then
begin
withdatamodule4.ADOQuery3 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromSnVzisk'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (Fam like"'+fam+ '%")'); //выбор данных из таблицы, где
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery3;
end
else
begin
ShowMessage('В БДсотрудников нет записей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
form6.Show;
end;
· процедура редактирования записи
procedureTForm2.bsSkinButton3Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then begin
ifdatamodule4.ADOQuery1.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOQuery1;
form5.DateTimePicker1.Date:=datamodule4.ADOQuery1Datapr.Value;
end;
ifpagecontrol1.ActivePage=tabsheet2 then begin
ifdatamodule4.ADOQuery2.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOQuery2;
form5.DateTimePicker1.Date:=datamodule4.ADOQuery2Datapr.Value;
end;
ifpagecontrol1.ActivePage=tabsheet3 then begin
ifdatamodule4.ADOtable2.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOTable2;
form5.DateTimePicker1.Date:=datamodule4.ADOTable2Datapr.Value;
end;
end;
· процедура удаления записи
procedureTForm2.bsSkinButton2Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then begin
ifdatamodule4.ADOQuery1.IsEmpty then exit;
ifdatamodule4.ADOQuery1 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOQuery1.Delete;
datamodule4.ADOQuery1.Requery;
end;
ifpagecontrol1.ActivePage=tabsheet2 then begin
ifdatamodule4.ADOQuery2.IsEmpty then exit;
ifdatamodule4.ADOQuery2 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOQuery2.Delete;
datamodule4.ADOQuery2.Requery;
end;
if pagecontrol1.ActivePage=tabsheet3then begin
ifdatamodule4.ADOTable2.IsEmpty then exit;
ifdatamodule4.ADOTable2 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOTable2.Delete;
datamodule4.ADOTable2.Requery;
end;
end;
· процедура добавления записи
procedureTForm3.Button1Click(Sender: TObject);
vars,b:string;
a:integer;
begin
s:=datetostr(datetimepicker1.Date);
a:=strtoint(copy(s,7,4));
a:=a+1;
b:=copy(s,1,6);
s:=b+inttostr(a);
datamodule4.ADOQuery1.Insert;
datamodule4.ADOQuery1['Fam']:=edit1.Text;
datamodule4.ADOQuery1['Imia']:=edit2.Text;
datamodule4.ADOQuery1['Otc']:=edit3.Text;
datamodule4.ADOQuery1['Zvanie']:=edit4.Text;
datamodule4.ADOQuery1['Rugo']:=combobox2.Text;
datamodule4.ADOQuery1['Sl']:=edit6.Text;
datamodule4.ADOQuery1['Podr']:=edit7.Text;
datamodule4.ADOQuery1['Dolj']:=edit8.Text;
datamodule4.ADOQuery1['Vzisk']:=combobox1.Text;
datamodule4.ADOQuery1['Chpr']:=combobox3.Text;
datamodule4.ADOQuery1['Nompr']:=edit11.Text;
datamodule4.ADOQuery1['Datapr']:=datetimepicker1.Date;
datamodule4.ADOQuery1['Opis']:=edit13.Text;
datamodule4.ADOQuery1['Dataspr']:=strtodate(s);
datamodule4.ADOQuery1.Post;
form3.Hide;
end;
Полный листинг программыпредставлен в приложении А.
4. Описание программного средства
4.1 Общие сведения
Программное средство «Автоматизацияучета правонарушений в УВД Миноблисполкома» облегчает работу по ведению учета сотрудниковУВД, нарушивших дисциплинарные нормы. Здесь планируется создавать отчеты идиаграммы по результатам дисциплины как по УВД так и по области в целом, вестистатистику изменения показателей по сравнению с прошлым годом, все этопреследует цель постоянного контроля сотрудников и принятия мер для прекращениянарушения дисциплины в УВД Миноблисполкома.
При желании пользователя информацияпо поиску данных может быть легко сформирован в отчет и при необходимостивыведен на печать.
На компьютере,использующем разрабатываемую программу, должна быть установлена версия ОСWindows (98, 2000, XP Home Edition, XP Professional). Данное требованиеобъясняется тем, что приложения созданные с помощью Delphi 7 рекомендуетсяиспользовать на компьютере, на котором установлена одна из перечисленных ОС.
Для установки не обходимос диска скопировать папку DisPract, а для запуска программы необходимо запустить файл DisPract.exe. После запуска программы пользователь может совершатьнеобходимые операции над базой путем выбора соответствующих пунктов меню иликнопок расположенных на форме.
Для получения информациио программе, а также помощи необходимо выбрать соответствующие пункты меню илипри нажатии на кнопку. Пункт помощь предназначен для предоставленияпользователю краткой информации об использовании программы, а также дляописания всех нюансов программы. Пункт о программе или об авторе предназначендля предоставления пользователю информации о назначение программы,разработчике, среде разработки, а так же адресе электронной почты разработчика.
Для закрытия программынеобходимо воспользоваться пунктом меню выход или соответствующий кнопкой“Выход”, расположенной в любом окне программы.
4.2 Функциональноеназначение
В приложении “DisPract” были реализованы следующие функции:
· возможностьдобавления, редактирование и удаления записи;
· выбор должности,звания, областей, службы и подразделения из блока;
· запросы по блокампо фамилии, области, службе, подразделению, по фамилии; по должностям; поприказу;
· отчеты позапросам с возможностью предварительного просмотра и выводом на печать;
· автоматическоеснятие взыскания через год;
· досрочное снятиевзыскания.
Программныйпродукт хранит информацию о сотрудниках в таблицах Microsoft Office Access, это позволяет легко обмениваться данными междуразличными пользователями, для это необходимо скопировать в папке DisPract файл pr.mdb.
/>5. Программа и методикаиспытаний
/>/>
5.1 Цельиспытаний
Отладка программы – этодеятельность, направленная на обнаружение и исправление ошибок в ПС сиспользованием процессов выполнения его программ. Его цель – проверкасинтаксической и логической правильности программы, а также определение того, чтопрограмма функционирует на всем диапазоне допустимых данных.
В процессе отладки программывыделяются этапы:
– трансляция исходноготекста программы – выполняется перевод программы, понятной человеку, на язык,понятный компьютеру. В ней последовательно выполняются лексический, синтаксический,семантический анализ, генерация промежуточного кода, оптимизация промежуточногокода, генерация внутреннего представления;
– компоновка программы –создает готовую для работы программу, которая называется также исполняемойпрограммой или загрузочным модулем. При этом решаются две основные задачи: еслинеобходимо использование специальных функций, например математических, то ихпрограммные модули выбираются из библиотеки подпрограмм соответствующей системыпрограммирования и вставляются в объектный модуль; объектный модульпреобразуется в соответствии с реальными адресами основной памяти, куда будетразмещаться программа для выполнения;
– выполнение программы с цельюопределения логических ошибок – осуществляется после успешной компоновки или походу интерпретации каждого оператора. При этом выявляются такие ошибки, как,например, деление на ноль или вычисление логарифма отрицательного числа. Здесьже апробируется корректность описания используемых переменных и законченностьциклов;
– тестирование программы – имеетцелью определение работоспособности программы на всем требуемом диапазонеисходных данных. Программистом составляется представительная выборка исходнойинформации, которая позволит определить корректность программы при любыхвходных параметрах.
Основная цельтестирования обнаружения ошибок – выявление всех отклонений результатовфункционирования реальной программы от заданных значений. Задача состоит вобнаружении максимального числа ошибок, в качестве которых принимается любоеотклонение от заданных.
Поле тестирования дляобнаружения ошибок применяется тестирование для их диагностики локализации.Основная задача – точно установить место искажения программы или данных,явившегося причиной отклонения результатов от заданных.
После локализации иустранения, обнаруженных ошибок применяется контрольное тестирование, задачакоторого состоит в подтверждении правильности выполнения корректировкипрограммы.
/>/>/>
5.2 Методы отладки программы
Статическое тестированиеявляется наиболее формализованным и автоматизируемым методом проверки программ.В качестве эталонов применяются правила структурного построения программныхмодулей и обработки данных. Проверка степени этих правил проводится безиспользования объектного кода программы путем формального анализа текстапрограммы на языке программирования. Операторы и операнды текста программ приэтом анализируется в символьном виде, поэтому такой метод называют символьнымтестированием.
Динамическоетестирование, особенностью этого метода является проверка исполнения тестовпрограмм в объектном коде. При этом контролируется каждая комбинация исходныхзаданных данных, выходных данных и соответствующая ей комбинация результатовфункционирования программы. Это позволяет выполнить отклонение результатов отзаданных с фиксированием конкретных значений исходных и результирующих данных,при которых это отклонение обнаружено.
Стохастическоетестирование основано на генерации тестовых наборов, а именно множестваслучайных величин. В результате возможно более широкое варьирование исходныхданных.
Тестирование в реальномвремени. В процессе такого тестирования проверяются исполнение программ, иобработка исходных данных с учетом времени их поступления, длительности иприоритетности обработки, динамики использования памяти и взаимодействие сдругими программами и так далее. При обнаружении отклонений результатовисполнения программ от предполагавшихся значений для локализации ошибокфиксируется время и переходит к детерминированному тестированию.
/>/>
5.3 Тестирование программы
Тестирование программывключало в себя несколько компонентов:
– проверка правильностивзаимодействия элементов интерфейса;
– тестирование методовобработки данных;
– тестированиеоптимизационных алгоритмов.
Так как в процессетестирования важно убедиться в правильности работы программы, как в стандартныхситуациях, так и в тех, которые, по мнению разработчика либо маловероятны, либоневозможны в принципе, то к этому процессу отнеслись весьма серьезно.
Поэтому был смоделированряд ситуаций, которые опытный пользователь вряд ли допустит, но вполне можноожидать от новичка. Эти случаи, в основном, касались задания исходных данных.
Особенностью тестированиелюбой расчетной программы является наличие тестов для проверки корректностиреализации расчетных алгоритмов, а также таких свойств как точность, количествошагов и время расчетов.
/>/>/>
5.4 Выявление ошибок
Выявление ошибок иначеназывают тестированием. Некоторые ошибки проявляются после первого же запускапрограммы на выполнение, а некоторые проявляются в чисто случайные моментыработы программы. Эти ошибки считаются самыми сложными.
Также существует такойряд ошибок, которые связаны с неправильным распределением ресурсов компьютера.Они в основном скрыты но при увеличении загрузки системных ресурсов могутпоявится.
Процесс нахождения иисправления ошибок может длиться бесконечно, поэтому в основном применяютбета-тестирование. Ошибки, выявленные на этапе бета-тестирования, фиксируются иустраняются в коммерческой версии продукта. Еще одним положительным моментомбета-тестирования является то, что оно позволяет оценить программу с точкизрения удобства ее использования, собрать критические замечания пользователей иучесть их в конечном варианте программы.
После того, как ошибказафиксирована, необходимо выяснить причину ее возникновения и найти в исходномтексте программы то место, в котором она возникает, т.е. нужно ее локализировать.
В общем случае причинаошибки может быть связана с недопониманием задачи, недостатками проектирования,ошибками, допущенными при кодировании и многими другими несоответствиями.
Самыми распространеннымиошибками являются ошибки кодирования, а именно: использование переменных безпредварительной инициализации, выход за границы диапазона при работе состроками либо массивами, неверный расчет числа итераций цикла, переполнениеразрядной сетки при выполнении арифметических операций, накопление погрешностивычислений в операциях с вещественными числами и др.
При исправлении ошибоксамое главное не наделать новых и не спешить, а обдуманно проанализироватьошибку, чем в дальнейшем к ней возвращаться.
Отладка программыосуществлялась встроенными средствами среды Delphi. С помощью встроенного компилятора были обнаруженысинтаксические ошибки, которые тут же исправлялись с помощью встроенного редакторатекста программы.
В ходе разработки данногопрограммного продукта возникали вопросы и ошибки. В процессе тестирования иотладки все ошибки были устранены, что может свидетельствовать оработоспособности программы.
После чего было проведенорегрессионное тестирование которое проводиться после основного, когдаисправлены все ошибки программы и внесены в нее изменений.
В результате испытаний наконтрольных примерах было доказано, что данная программа работает согласнозаданного алгоритма.
/>/>6.Область применения программы
6.1 Назначение программыДанная программаразрабатывалась по заказу УВД Миноблисполкома для ведения учета сотрудников,нарушивших дисциплинарные нормы. На данный моментпробная версия программы проходит апробацию в УВД Миноблисполкома.
Данное программноесредство облегчает работу по ведению учета сотрудников УВД, нарушивших дисциплинарныенормы. Здесь планировалось создавать отчеты и диаграммы по результатам дисциплиныкак по УВД так и по области в целом, вести статистику изменения показателей посравнению с прошлым годом, все это преследует цель постоянного контролясотрудников и принятия мер для прекращения нарушения дисциплины в УВДМиноблисполкома. Все эти требования, на мой взгляд были достигнуты в ходеразработки приложения.
6.2 Условия применения
Правильнаяработоспособность программы гарантируется только в тех случаях, если:
· программаиспользуется на компьютере, минимальные аппаратные и программные требованиякоторого удовлетворяют системным требованиям ранее оговоренными авторомпроекта;
· пользователь,который использует программу, намерено не пытается изменить или удалить файлыотносящиеся к приложению;
· некорректновыходит из программного средства, при чем в памяти компьютера процесспродолжает выполнятся.
При соблюдении этихтребований работа с программой не доставит никаких неудобств и будет обеспеченаправильная работоспособность.
6.3 Справочная система
Справочная система имеет трираздела:
· Работа с данными
· Поиск информации
· Выходнаяинформация
Первый раздел “Работа сданными” содержит информацию при работе с записями: добавление, удаление,редактирование и досрочное снятие взыскания.
Второй раздел “Поискинформации” подробно описывает как выполнить необходимый поиск по заданномукритерию, в справке используется также наглядное описание, что даже неопытномупользователю не составит труда выполнить запрос.
В разделе “Выходнаяинформация” находится информация по формированию отчета.
Для использования справкивыберите пункт меню на главной форме “Справка”, а затем “Помощь”.
При открытии справкизагружается главная страница, где показан основной нюанс программы.
На рисунке 6.1представлено содержание справочной системы приложения.
/>
Рисунок 6.1 – Структурасправочной системы
/>ЗАКЛЮЧЕНИЕ
Результатомданной дипломной работы было создание автоматизированного учета правонарушенийв УВД Миноблисполкома.
Данныйпродукт содержит информацию о сотрудниках. С помощью него можно без проблемнайти того или иного сотрудника по заданным критериям, а также вывести этуинформацию на печать.
Программанайдет широкое применение не только среди работников отдела кадров, но и средимногих сотрудников УВД.
Разрабатываемаяавтоматизированная система будет отличаться от других аналогичных программныхсредств тем, что она проста в обращении, имеет удобный, а самое главное простойв использовании интерфейс.
Всеосновные требования, предъявляемые к программному продукту, в полной меререализованы в данной разработке.
/>ЛИТЕРАТУРА
1. Вьюкова Н.И., Галатенко В.А., ХодулевА.Б. Систематический подход к программированию.–М.: Наука., 1988. – 208 с.
2. Калверт Ч. Delphi Энциклопедияпользователя: Пер. с англ./Чарлз Калверт.- ДиаСофт, К.:, 2000.
3. Коннолли Т., Бегг К., Страчан А. Базыданных: Проектирование, реализация и сопровождение. Теория и практика. Изданиевторое, исправленное, дополненное. – Издательство “Питер”, Санкт-Петербург –2002г.
4. Культин Н.Б. Delphi в задачах и примерах. – БХВ-Петербург, СПб., 2004. – 288 с.: ил.
5. Офицеров Д.В. и др. Программированиена персональных ЭВМ: Практикум: Учеб. пособие. – Мн.: Выш.шк., 1993. –256 с.
6. Пономаренко Сергей. Базы данных вDelphi 7. Самоучитель. – Издательство «Питер», Санкт-Петербург – 2003 г.
7. Форонов В.В. Программирование базданных в Delphi 7. Учебный курс.-СПб.: Питер, 2006.-459 с.: ил.
ПРИЛОЖЕНИЕ А
(обязательное)
Текст программы
unit Unit1; //загрузочная форма
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ComCtrls, ExtCtrls, jpeg;
type
TForm1 =class(TForm)
Image1:TImage;
Timer1:TTimer;
ProgressBar1:TProgressBar;
procedureTimer1Timer(Sender: TObject);
procedureFormActivate(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form1:TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedureTForm1.Timer1Timer(Sender: TObject);
var
i,k:Integer;
begin
k:=250;
timer1.Enabled:=true;
for i:=0 to60 do
begin
ProgressBar1.Position:=ProgressBar1.Position+2;
Sleep(30);
if i mod 10=0then begin
k:=k-30;
form1.AlphaBlendValue:=k;
end;
end;
ProgressBar1.Position:=0;
form2.Show;
form1.Hide;
timer1.Enabled:=false;
form2.PageControl1.ActivePage:=form2.TabSheet1;
end;
procedureTForm1.FormActivate(Sender: TObject);
begin
timer1.Enabled:=true;
end;
end.
unit Unit2;//главная форма отображения информации
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, Buttons, ComCtrls, Grids, DBGrids, Menus, bsSkinCtrls,
bsSkinData,BusinessSkinForm,ShellAPI;
type
TForm2 =class(TForm)
PageControl1:TPageControl;
TabSheet1:TTabSheet;
TabSheet2:TTabSheet;
DBGrid1:TDBGrid;
DBGrid2:TDBGrid;
TabSheet3:TTabSheet;
DBGrid3:TDBGrid;
bsBusinessSkinForm1:TbsBusinessSkinForm;
bsSkinData1:TbsSkinData;
bsCompressedStoredSkin1:TbsCompressedStoredSkin;
bsSkinButton1:TbsSkinButton;
bsSkinButton2:TbsSkinButton;
bsSkinButton3:TbsSkinButton;
bsSkinButton4:TbsSkinButton;
bsSkinMainMenu1:TbsSkinMainMenu;
bsSkinMainMenuBar1:TbsSkinMainMenuBar;
N12:TMenuItem;
N17:TMenuItem;
N18:TMenuItem;
N19:TMenuItem;
N20:TMenuItem;
N21:TMenuItem;
N22:TMenuItem;
N23:TMenuItem;
N24:TMenuItem;
N25:TMenuItem;
N26:TMenuItem;
N27:TMenuItem;
N28:TMenuItem;
N29:TMenuItem;
N31:TMenuItem;
N32:TMenuItem;
procedureBitBtn2Click(Sender: TObject);
procedureBitBtn1Click(Sender: TObject);
procedureFormActivate(Sender: TObject);
procedureBitBtn3Click(Sender: TObject);
procedureBitBtn4Click(Sender: TObject);
procedureN3Click(Sender: TObject);
procedureN6Click(Sender: TObject);
procedureN7Click(Sender: TObject);
procedureN8Click(Sender: TObject);
procedureN9Click(Sender: TObject);
procedureN10Click(Sender: TObject);
procedureN11Click(Sender: TObject);
procedureN13Click(Sender: TObject);
procedurebsSkinButton1Click(Sender: TObject);
procedurebsSkinButton2Click(Sender: TObject);
procedurebsSkinButton3Click(Sender: TObject);
procedurebsSkinButton4Click(Sender: TObject);
procedureN20Click(Sender: TObject);
procedureN22Click(Sender: TObject);
procedureN23Click(Sender: TObject);
procedureN24Click(Sender: TObject);
procedureN25Click(Sender: TObject);
procedureN26Click(Sender: TObject);
procedureN32Click(Sender: TObject);
procedureN27Click(Sender: TObject);
procedureN17Click(Sender: TObject);
procedureN31Click(Sender: TObject);
procedureN18Click(Sender: TObject);
procedureN29Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form2:TForm2;
implementation
uses Unit1,Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10,
Unit11,Unit12, Unit13, Unit14, Unit15;
{$R *.dfm}
procedureTForm2.BitBtn2Click(Sender: TObject);
begin
Form1.close;
form2.Close;
form3.Close;
form5.Close;
form6.Close;
form7.Close;
form8.Close;
form9.Close;
form10.Close;
form11.close;
form12.close;
form13.close;
end;
procedureTForm2.BitBtn1Click(Sender: TObject);
begin
form3.Show;
end;
procedureTForm2.FormActivate(Sender: TObject);
var k:integer;
begin
withdatamodule4.ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('select* from Pract');
sql.Add('whereRugo=«Аппарат УВД»');
Open;
ifRecordCount 0 then
begin
datamodule4.DataSource1.DataSet:=datamodule4.adoquery1;
end
else
begin
end;
end;
withdatamodule4.ADOQuery2 do begin
Close;
SQL.Clear;
SQL.Add('select* from Pract');
sql.Add('whereRugo«Аппарат УВД»');
Open;
ifRecordCount 0 then
begin
datamodule4.DataSource2.DataSet:=datamodule4.adoquery2;
end
else
begin
end;
end;
datamodule4.ADOTable1.Open;
datamodule4.ADOTable2.Open;
while notdatamodule4.ADOTable1.Eof do
begin
k:=0;
if datamodule4.ADOTable1dataspr.Value
begin
datamodule4.ADOTable2.Insert;
datamodule4.ADOTable2['Fam']:=datamodule4.ADOTable1fam.Value;
datamodule4.ADOTable2['Imia']:=datamodule4.ADOTable1imia.Value;
datamodule4.ADOTable2['otc']:=datamodule4.ADOTable1otc.Value;
datamodule4.ADOTable2['zvanie']:=datamodule4.ADOTable1zvanie.Value;
datamodule4.ADOTable2['rugo']:=datamodule4.ADOTable1rugo.Value;
datamodule4.ADOTable2['sl']:=datamodule4.ADOTable1sl.Value;
datamodule4.ADOTable2['podr']:=datamodule4.ADOTable1podr.Value;
datamodule4.ADOTable2['dolj']:=datamodule4.ADOTable1dolj.Value;
datamodule4.ADOTable2['vzisk']:=datamodule4.ADOTable1vzisk.Value;
datamodule4.ADOTable2['chpr']:=datamodule4.ADOTable1chpr.Value;
datamodule4.ADOTable2['nompr']:=datamodule4.ADOTable1nompr.Value;
datamodule4.ADOTable2['datapr']:=datamodule4.ADOTable1datapr.Value;
datamodule4.ADOTable2['opis']:=datamodule4.ADOTable1opis.Value;
datamodule4.ADOTable2['nomspr']:=datamodule4.ADOTable1nomspr.Value;
datamodule4.ADOTable2['dataspr']:=datamodule4.ADOTable1dataspr.Value;
datamodule4.ADOTable2.Post;
datamodule4.ADOTable1.Delete;
k:=1;
end;
datamodule4.ADOTable1.Next;
if k=1 thendatamodule4.ADOTable1.Prior;
end;
datamodule4.ADOTable1.Close;
datamodule4.ADOTable2.Close;
datamodule4.ADOTable2.Active:=true;
end;
procedureTForm2.BitBtn3Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then begin
ifdatamodule4.ADOQuery1.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOQuery1;
form5.DateTimePicker1.Date:=datamodule4.ADOQuery1Datapr.Value;
end;
ifpagecontrol1.ActivePage=tabsheet2 then begin
ifdatamodule4.ADOQuery2.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOQuery2;
form5.DateTimePicker1.Date:=datamodule4.ADOQuery2Datapr.Value;
end;
ifpagecontrol1.ActivePage=tabsheet3 then begin
ifdatamodule4.ADOtable2.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOTable2;
form5.DateTimePicker1.Date:=datamodule4.ADOTable2Datapr.Value;
end;
end;
procedureTForm2.BitBtn4Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then begin
ifdatamodule4.ADOQuery1.IsEmpty then exit;
ifdatamodule4.ADOQuery1 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOQuery1.Delete;
datamodule4.ADOQuery1.Requery;
end;
ifpagecontrol1.ActivePage=tabsheet2 then begin
ifdatamodule4.ADOQuery2.IsEmpty then exit;
ifdatamodule4.ADOQuery2 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOQuery2.Delete;
datamodule4.ADOQuery2.Requery;
end;
ifpagecontrol1.ActivePage=tabsheet3 then begin
ifdatamodule4.ADOTable2.IsEmpty then exit;
ifdatamodule4.ADOTable2 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOTable2.Delete;
datamodule4.ADOTable2.Requery;
end;
end;
procedureTForm2.N3Click(Sender: TObject);
begin
form1.Close;
form2.Close;
form3.Close;
form5.Close;
form6.Close;
form7.Close;
form8.Close;
form9.Close;
form10.Close;
form11.Close;
form12.Close;
form13.Close;
end;
procedureTForm2.N7Click(Sender: TObject);
begin
form6.Caption:='Поиск по званию';
form8.Show;
end;
procedureTForm2.N8Click(Sender: TObject);
begin
form6.Caption:='Поиск по области';
form9.show;
end;
procedureTForm2.N9Click(Sender: TObject);
begin
form6.Caption:='Поиск по службе';
form10.show;
end;
procedureTForm2.N10Click(Sender: TObject);
begin
form6.Caption:='Поиск поподразделению';
form11.show;
end;
procedureTForm2.N11Click(Sender: TObject);
begin
form6.Caption:='Поиск подолжности';
form12.show;
end;
procedureTForm2.N13Click(Sender: TObject);
begin
form6.Caption:='Поиск поместу приказа';
form13.show;
end;
procedureTForm2.bsSkinButton1Click(Sender: TObject);
begin
Form1.close;
form2.Close;
form3.Close;
form5.Close;
form6.Close;
form7.Close;
form8.Close;
form9.Close;
form10.Close;
form11.close;
form12.close;
form13.close;
form14.Close;
form15.Close;
end;
procedureTForm2.bsSkinButton2Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then begin
ifdatamodule4.ADOQuery1.IsEmpty then exit;
ifdatamodule4.ADOQuery1 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOQuery1.Delete;
datamodule4.ADOQuery1.Requery;
end;
if pagecontrol1.ActivePage=tabsheet2then begin
ifdatamodule4.ADOQuery2.IsEmpty then exit;
ifdatamodule4.ADOQuery2 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOQuery2.Delete;
datamodule4.ADOQuery2.Requery;
end;
ifpagecontrol1.ActivePage=tabsheet3 then begin
ifdatamodule4.ADOTable2.IsEmpty then exit;
ifdatamodule4.ADOTable2 = nil then Exit;
if MessageBox(0,'Вы действительнохотите удалить?','Подтверждение',
33) IDOKthen Exit;
datamodule4.ADOTable2.Delete;
datamodule4.ADOTable2.Requery;
end;
end;
procedureTForm2.bsSkinButton3Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then begin
ifdatamodule4.ADOQuery1.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOQuery1;
form5.DateTimePicker1.Date:=datamodule4.ADOQuery1Datapr.Value;
end;
ifpagecontrol1.ActivePage=tabsheet2 then begin
ifdatamodule4.ADOQuery2.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOQuery2;
form5.DateTimePicker1.Date:=datamodule4.ADOQuery2Datapr.Value;
end;
ifpagecontrol1.ActivePage=tabsheet3 then begin
ifdatamodule4.ADOtable2.IsEmpty then exit;
form5.Show;
form5.DataSource1.DataSet:=datamodule4.ADOTable2;
form5.DateTimePicker1.Date:=datamodule4.ADOTable2Datapr.Value;
end;
end;
procedureTForm2.bsSkinButton4Click(Sender: TObject);
begin
form3.Show;
end;
procedureTForm2.N20Click(Sender: TObject);
begin
form1.Close;
form2.Close;
form3.Close;
form5.Close;
form6.Close;
form7.Close;
form8.Close;
form9.Close;
form10.Close;
form11.Close;
form12.Close;
form13.Close;
form14.Close;
form15.Close;
end;
procedureTForm2.N22Click(Sender: TObject);
begin
form6.Caption:='Поиск по фамилии';
form6.bsSkinButton2.Visible:=true;
form14.show;
end;
procedureTForm2.N23Click(Sender: TObject);
begin
form6.Caption:='Поиск по званию';
form8.Show;
end;
procedureTForm2.N24Click(Sender: TObject);
begin
form6.Caption:='Поиск по области';
form9.show;
end;
procedureTForm2.N25Click(Sender: TObject);
begin
form6.Caption:='Поиск по службе';
form10.show;
end;
procedureTForm2.N26Click(Sender: TObject);
begin
form6.Caption:='Поиск поподразделению';
form11.show;
end;
procedureTForm2.N32Click(Sender: TObject);
begin
form6.Caption:='Поиск подолжности';
form12.show;
end;
procedureTForm2.N27Click(Sender: TObject);
begin
form6.Caption:='Поиск поместу приказа';
form13.show;
end;
procedureTForm2.N17Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then begin
form7.DataSource1.DataSet:=datamodule4.ADOQuery1;
form7.Show;
end;
ifpagecontrol1.ActivePage=tabsheet2 then begin
form7.DataSource1.DataSet:=datamodule4.ADOQuery2;
form7.Show;
end;
ifpagecontrol1.ActivePage=tabsheet3 then begin
form7.DataSource1.DataSet:=datamodule4.ADOTable2;
form7.Show;
end;
end;
procedureTForm2.N31Click(Sender: TObject);
begin
form15.show;
end;
procedureTForm2.N18Click(Sender: TObject);
begin
ifpagecontrol1.ActivePage=tabsheet1 then datamodule4.RvProject1.Execute;
ifpagecontrol1.ActivePage=tabsheet2 then datamodule4.RvProject2.Execute;
end;
procedureTForm2.N29Click(Sender: TObject);
begin
shellExeCute(handle,nil,'Справка.chm',nil,nil,sw_restore);
end;
end.
unit Unit3; //форма добавления записи
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Menus, StdCtrls, Buttons, ComCtrls, bsSkinCtrls, bsSkinData,
BusinessSkinForm,bsdbctrls, Mask, bsSkinBoxCtrls;
type
TForm3 =class(TForm)
Label2:TLabel;
Label3: TLabel;
Label7:TLabel;
Label8:TLabel;
Label9:TLabel;
Label10:TLabel;
Label11:TLabel;
Edit11:TEdit;
Edit13:TEdit;
Edit4: TEdit;
PopupMenu1:TPopupMenu;
N1,N2, N3,N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19,N20:TMenuItem;
ComboBox1:TComboBox;
ComboBox2:TComboBox;
PopupMenu2:TPopupMenu;
N21,N22,N23,N24,N25,N26, N27, N28, N29,N30,N31,N32,N33,N34,N35,N36,N37,N38,N39,N40,N41,N42,N43,N44,N45,N46,N47,N48,N49,N50,N51,N52,N53,N54,N55,N56,N57,N58,N59,N60,N61: TMenuItem;
DateTimePicker1:TDateTimePicker;
ComboBox3:TComboBox;
bsBusinessSkinForm1:TbsBusinessSkinForm;
bsSkinData1:TbsSkinData;
bsCompressedStoredSkin1:TbsCompressedStoredSkin;
bsSkinButton1:TbsSkinButton;
Label1:TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label4:TLabel;
Edit6: TEdit;
Label5:TLabel;
Edit7: TEdit;
Label6:TLabel;
Edit8: TEdit;
bsSkinButton2:TbsSkinButton;
Label12:TLabel;
Label13:TLabel;
Label14:TLabel;
procedureN2Click(Sender: TObject);
procedureN3Click(Sender: TObject);
procedureN4Click(Sender: TObject);
procedureN5Click(Sender: TObject);
procedureN6Click(Sender: TObject);
procedureN7Click(Sender: TObject);
procedureN8Click(Sender: TObject);
procedureN10Click(Sender: TObject);
procedureBitBtn1Click(Sender: TObject);
procedureButton1Click(Sender: TObject);
procedureFormActivate(Sender: TObject);
procedurebsSkinButton1Click(Sender: TObject);
procedurebsSkinButton2Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form3:TForm3;
implementation
uses Unit4;
{$R *.dfm}
procedureTForm3.N2Click(Sender: TObject);
begin
edit4.Text:='рядовой милиции';
end;
procedureTForm3.N3Click(Sender: TObject);
begin
edit4.Text:='младший сержантмилиции';
end;
procedureTForm3.N4Click(Sender: TObject);
begin
edit4.Text:='сержант ';
end;
procedureTForm3.N5Click(Sender: TObject);
begin
edit4.Text:='старший сержат';
end;
procedureTForm3.N6Click(Sender: TObject);
begin
edit4.Text:='старшина милиции';
end;
procedureTForm3.N7Click(Sender: TObject);
begin
edit4.Text:='прапорщик';
end;
procedureTForm3.N8Click(Sender: TObject);
begin
edit4.Text:='старший прапорщик';
end;
procedureTForm3.N10Click(Sender: TObject);
begin
edit4.Text:='младший лейтенант милиции';
end;
……….
procedureTForm3.BitBtn1Click(Sender: TObject);
begin
form3.Hide;
end;
procedureTForm3.Button1Click(Sender: TObject);
vars,b:string;
a:integer;
begin
s:=datetostr(datetimepicker1.Date);
a:=strtoint(copy(s,7,4));
a:=a+1;
b:=copy(s,1,6);
s:=b+inttostr(a);
datamodule4.ADOQuery1.Insert;
datamodule4.ADOQuery1['Fam']:=edit1.Text;
datamodule4.ADOQuery1['Imia']:=edit2.Text;
datamodule4.ADOQuery1['Otc']:=edit3.Text;
datamodule4.ADOQuery1['Zvanie']:=edit4.Text;
datamodule4.ADOQuery1['Rugo']:=combobox2.Text;
datamodule4.ADOQuery1['Sl']:=edit6.Text;
datamodule4.ADOQuery1['Podr']:=edit7.Text;
datamodule4.ADOQuery1['Dolj']:=edit8.Text;
datamodule4.ADOQuery1['Vzisk']:=combobox1.Text;
datamodule4.ADOQuery1['Chpr']:=combobox3.Text;
datamodule4.ADOQuery1['Nompr']:=edit11.Text;
datamodule4.ADOQuery1['Datapr']:=datetimepicker1.Date;
datamodule4.ADOQuery1['Opis']:=edit13.Text;
datamodule4.ADOQuery1['Dataspr']:=strtodate(s);
datamodule4.ADOQuery1.Post;
form3.Hide;
end;
procedureTForm3.FormActivate(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
combobox1.Text:='';
edit6.Text:='';
combobox2.Text:='';
edit7.Text:='';
edit8.Text:='';
combobox3.Text:='';
edit11.Text:='';
datetimepicker1.Date:=date();
edit13.Text:='';
end;
procedureTForm3.bsSkinButton1Click(Sender: TObject);
vars,b:string;
a:integer;
begin
if(edit1.Text='') or (edit2.Text='') or (edit3.Text='') or (combobox2.Text='') or(combobox3.Text='') then
begin
ShowMessage('Введите всеобязательные' +#13 + 'поля');
exit;
end
else begin
s:=datetostr(datetimepicker1.Date);
a:=strtoint(copy(s,7,4));
a:=a+1;
b:=copy(s,1,6);
s:=b+inttostr(a);
datamodule4.ADOQuery1.Insert;
datamodule4.ADOQuery1['Fam']:=edit1.Text;
datamodule4.ADOQuery1['Imia']:=edit2.Text;
datamodule4.ADOQuery1['Otc']:=edit3.Text;
datamodule4.ADOQuery1['Zvanie']:=edit4.Text;
datamodule4.ADOQuery1['Rugo']:=combobox2.Text;
datamodule4.ADOQuery1['Sl']:=edit6.Text;
datamodule4.ADOQuery1['Podr']:=edit7.Text;
datamodule4.ADOQuery1['Dolj']:=edit8.Text;
datamodule4.ADOQuery1['Vzisk']:=combobox1.Text;
datamodule4.ADOQuery1['Chpr']:=combobox3.Text;
datamodule4.ADOQuery1['Nompr']:=edit11.Text;
datamodule4.ADOQuery1['Datapr']:=datetimepicker1.Date;
datamodule4.ADOQuery1['Opis']:=edit13.Text;
datamodule4.ADOQuery1['Dataspr']:=strtodate(s);
datamodule4.ADOQuery1.Post;
form3.Hide;
end;
end;
procedureTForm3.bsSkinButton2Click(Sender: TObject);
begin
form3.Hide;
end;
end.
unit Unit4; //модуль компонент
interface
uses
SysUtils,Classes, DB, ADODB, RpBase, RpSystem, RpRave, RpDefine, RpCon,
RpConDS;
type
TDataModule4= class(TDataModule)
ADOQuery1:TADOQuery;
ADOQuery2:TADOQuery;
DataSource1:TDataSource;
DataSource2:TDataSource;
ADOConnection1:TADOConnection;
ADOTable1:TADOTable;
DataSource3:TDataSource;
ADOQuery1Fam:TWideStringField;
ADOQuery1Imia:TWideStringField;
ADOQuery1Otc:TWideStringField;
ADOQuery1Zvanie:TWideStringField;
ADOQuery1Rugo:TWideStringField;
ADOQuery1Sl:TWideStringField;
ADOQuery1Podr:TWideStringField;
ADOQuery1Dolj:TWideStringField;
ADOQuery1Vzisk:TWideStringField;
ADOQuery1Chpr:TWideStringField;
ADOQuery1Nompr:TWideStringField;
ADOQuery1Datapr:TDateTimeField;
ADOQuery1Opis:TWideStringField;
ADOQuery1Nomspr:TWideStringField;
ADOQuery1Dataspr:TDateTimeField;
ADOQuery2Fam:TWideStringField;
ADOQuery2Imia:TWideStringField;
ADOQuery2Otc:TWideStringField;
ADOQuery2Zvanie:TWideStringField;
ADOQuery2Rugo:TWideStringField;
ADOQuery2Sl:TWideStringField;
ADOQuery2Podr:TWideStringField;
ADOQuery2Dolj:TWideStringField;
ADOQuery2Vzisk:TWideStringField;
ADOQuery2Chpr:TWideStringField;
ADOQuery2Nompr:TWideStringField;
ADOQuery2Datapr:TDateTimeField;
ADOQuery2Opis:TWideStringField;
ADOQuery2Nomspr:TWideStringField;
ADOQuery2Dataspr:TDateTimeField;
ADOTable1Fam:TWideStringField;
ADOTable1Imia:TWideStringField;
ADOTable1Otc:TWideStringField;
ADOTable1Zvanie:TWideStringField;
ADOTable1Rugo:TWideStringField;
ADOTable1Sl:TWideStringField;
ADOTable1Podr:TWideStringField;
ADOTable1Dolj:TWideStringField;
ADOTable1Vzisk:TWideStringField;
ADOTable1Chpr:TWideStringField;
ADOTable1Nompr:TWideStringField;
ADOTable1Datapr:TDateTimeField;
ADOTable1Opis:TWideStringField;
ADOTable1Nomspr:TWideStringField;
ADOTable1Dataspr:TDateTimeField;
ADOQuery3:TADOQuery;
DataSource4:TDataSource;
ADOTable2:TADOTable;
ADOTable2Fam:TWideStringField;
ADOTable2Imia:TWideStringField;
ADOTable2Otc:TWideStringField;
ADOTable2Zvanie:TWideStringField;
ADOTable2Rugo:TWideStringField;
ADOTable2Sl:TWideStringField;
ADOTable2Podr:TWideStringField;
ADOTable2Dolj:TWideStringField;
ADOTable2Vzisk:TWideStringField;
ADOTable2Chpr:TWideStringField;
ADOTable2Nompr:TWideStringField;
ADOTable2Datapr:TDateTimeField;
ADOTable2Opis:TWideStringField;
ADOTable2Nomspr:TWideStringField;
ADOTable2Dataspr:TDateTimeField;
RvDataSetConnection1:TRvDataSetConnection;
RvProject1:TRvProject;
RvSystem1: TRvSystem;
RvDataSetConnection2:TRvDataSetConnection;
RvProject2:TRvProject;
RvProject3:TRvProject;
RvDataSetConnection3:TRvDataSetConnection;
ADOQuery4:TADOQuery;
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
DataModule4:TDataModule4;
implementation
{$R *.dfm}
end.
unit Unit5; //форма редактирования записи
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB,StdCtrls, DBCtrls, ComCtrls, Mask, Buttons, Menus,
bsSkinData,BusinessSkinForm, bsSkinCtrls;
type
TForm5 =class(TForm)
Label2:TLabel;
Label3:TLabel;
Label7:TLabel;
Label8:TLabel;
Label9:TLabel;
Label10:TLabel;
Label11:TLabel;
DateTimePicker1:TDateTimePicker;
DBEdit4:TDBEdit;
DBComboBox1:TDBComboBox;
DBComboBox2:TDBComboBox;
DBEdit9:TDBEdit;
DBEdit10:TDBEdit;
DataSource1:TDataSource;
bsBusinessSkinForm1:TbsBusinessSkinForm;
bsSkinData1:TbsSkinData;
bsCompressedStoredSkin1:TbsCompressedStoredSkin;
Label1:TLabel;
DBEdit1:TDBEdit;
DBEdit2:TDBEdit;
DBEdit3:TDBEdit;
Label4:TLabel;
DBEdit5:TDBEdit;
Label5:TLabel;
DBEdit6:TDBEdit;
Label6:TLabel;
DBEdit7:TDBEdit;
bsSkinButton1:TbsSkinButton;
bsSkinButton2:TbsSkinButton;
DBComboBox3:TDBComboBox;
procedureButton1Click(Sender: TObject);
procedureBitBtn1Click(Sender: TObject);
procedurebsSkinButton1Click(Sender: TObject);
procedurebsSkinButton2Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form5:TForm5;
implementation
uses Unit4;
{$R *.dfm}
procedureTForm5.Button1Click(Sender: TObject);
begin
DataSource1.DataSet.Edit;
DataSource1.DataSet.FieldValues['Datapr']:=DateTimePicker1.Date;
DataSource1.DataSet.Post;
form5.Hide;
end;
procedure TForm5.BitBtn1Click(Sender:TObject);
begin
form5.Hide;
end;
procedureTForm5.bsSkinButton1Click(Sender: TObject);
vars,b:string;
a:integer;
begin
s:=datetostr(datetimepicker1.Date);
a:=strtoint(copy(s,7,4));
a:=a+1;
b:=copy(s,1,6);
s:=b+inttostr(a);
DataSource1.DataSet.Edit;
DataSource1.DataSet.FieldValues['Datapr']:=DateTimePicker1.Date;
DataSource1.DataSet.FieldValues['Dataspr']:=strtodate(s);
DataSource1.DataSet.Post;
form5.Hide;
end;
procedureTForm5.bsSkinButton2Click(Sender: TObject);
begin
form5.Hide;
end;
end.
unit Unit6; //форма отображения найденной информации
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, Buttons, Grids, DBGrids, bsSkinCtrls, bsSkinData,
BusinessSkinForm;
type
TForm6 =class(TForm)
DBGrid1:TDBGrid;
bsBusinessSkinForm1:TbsBusinessSkinForm;
bsSkinData1:TbsSkinData;
bsCompressedStoredSkin1:TbsCompressedStoredSkin;
bsSkinButton1:TbsSkinButton;
bsSkinButton2:TbsSkinButton;
bsSkinButton3:TbsSkinButton;
procedureBitBtn1Click(Sender: TObject);
procedureBitBtn2Click(Sender: TObject);
procedurebsSkinButton1Click(Sender: TObject);
procedurebsSkinButton2Click(Sender: TObject);
procedurebsSkinButton3Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form6:TForm6;
implementation
uses Unit4,Unit2, Unit1, Unit3, Unit5, Unit7;
{$R *.dfm}
procedureTForm6.BitBtn1Click(Sender: TObject);
begin
dbgrid1.Columns[0].Visible:=true;
dbgrid1.Columns[1].Visible:=true;
dbgrid1.Columns[2].Visible:=true;
dbgrid1.Columns[3].Visible:=true;
dbgrid1.Columns[4].Visible:=true;
dbgrid1.Columns[5].Visible:=true;
dbgrid1.Columns[6].Visible:=true;
dbgrid1.Columns[7].Visible:=true;
dbgrid1.Columns[8].Visible:=true;
dbgrid1.Columns[9].Visible:=true;
dbgrid1.Columns[10].Visible:=true;
dbgrid1.Columns[11].Visible:=true;
dbgrid1.Columns[12].Visible:=true;
form2.show;
form6.Hide;
form6.bsSkinButton2.Visible:=false;
end;
procedureTForm6.BitBtn2Click(Sender: TObject);
begin
form7.DataSource1.DataSet:=datamodule4.ADOQuery3;
form7.Show;
end;
procedureTForm6.bsSkinButton1Click(Sender: TObject);
begin
dbgrid1.Columns[0].Visible:=true;
dbgrid1.Columns[1].Visible:=true;
dbgrid1.Columns[2].Visible:=true;
dbgrid1.Columns[3].Visible:=true;
dbgrid1.Columns[4].Visible:=true;
dbgrid1.Columns[5].Visible:=true;
dbgrid1.Columns[6].Visible:=true;
dbgrid1.Columns[7].Visible:=true;
dbgrid1.Columns[8].Visible:=true;
dbgrid1.Columns[9].Visible:=true;
dbgrid1.Columns[10].Visible:=true;
dbgrid1.Columns[11].Visible:=true;
dbgrid1.Columns[12].Visible:=true;
form2.show;
form6.Hide;
form6.bsSkinButton2.Visible:=false;
end;
procedureTForm6.bsSkinButton2Click(Sender: TObject);
begin
form7.DataSource1.DataSet:=datamodule4.ADOQuery3;
form7.Show;
end;
procedureTForm6.bsSkinButton3Click(Sender: TObject);
begin
datamodule4.RvProject3.Execute;
end;
end.
unit Unit7; //форма досрочного снятия сотрудника
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, Mask, DBCtrls, DB, ComCtrls, bsSkinCtrls, bsSkinData,
BusinessSkinForm;
type
TForm7 =class(TForm)
DBEdit1:TDBEdit;
DBEdit2:TDBEdit;
DBEdit3:TDBEdit;
DataSource1:TDataSource;
Edit1: TEdit;
DateTimePicker1:TDateTimePicker;
Label1:TLabel;
Label2:TLabel;
Label3:TLabel;
Label4:TLabel;
Label5:TLabel;
bsBusinessSkinForm1:TbsBusinessSkinForm;
bsSkinData1:TbsSkinData;
bsCompressedStoredSkin1:TbsCompressedStoredSkin;
bsBusinessSkinForm2:TbsBusinessSkinForm;
bsSkinData2:TbsSkinData;
bsCompressedStoredSkin2:TbsCompressedStoredSkin;
bsBusinessSkinForm3:TbsBusinessSkinForm;
bsSkinData3:TbsSkinData;
bsCompressedStoredSkin3:TbsCompressedStoredSkin;
bsBusinessSkinForm4:TbsBusinessSkinForm;
bsSkinData4:TbsSkinData;
bsCompressedStoredSkin4:TbsCompressedStoredSkin;
bsSkinButton1:TbsSkinButton;
bsSkinButton2:TbsSkinButton;
procedureButton2Click(Sender: TObject);
procedureButton1Click(Sender: TObject);
procedurebsSkinButton1Click(Sender: TObject);
procedurebsSkinButton2Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form7:TForm7;
implementation
uses Unit4,Unit6, Unit5;
{$R *.dfm}
procedureTForm7.Button2Click(Sender: TObject);
begin
form6.show;
form7.Hide;
end;
procedureTForm7.Button1Click(Sender: TObject);
begin
DataSource1.DataSet.Edit;
DataSource1.DataSet.FieldValues['Nomspr']:=edit1.Text;
DataSource1.DataSet.FieldValues['Dataspr']:=DateTimePicker1.Date;
DataSource1.DataSet.Post;
form7.Hide;
end;
procedureTForm7.bsSkinButton1Click(Sender: TObject);
begin
DataSource1.DataSet.Edit;
DataSource1.DataSet.FieldValues['Nomspr']:=edit1.Text;
DataSource1.DataSet.FieldValues['Dataspr']:=DateTimePicker1.Date;
DataSource1.DataSet.Post;
form7.Hide;
end;
procedureTForm7.bsSkinButton2Click(Sender: TObject);
begin
form7.Hide;
end;
end.
unit Unit8; //Поиск по званию (аналогично Unit9-по области; Unit10-по службе; Unit11-по подразделению; Unit12-по должности; Unit13-по месту приказа; Unit14-по фамилии)
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, bsSkinCtrls, bsSkinData, BusinessSkinForm;
type
TForm8 =class(TForm)
ComboBox1:TComboBox;
bsBusinessSkinForm1:TbsBusinessSkinForm;
bsSkinData1:TbsSkinData;
bsCompressedStoredSkin1:TbsCompressedStoredSkin;
bsSkinButton1:TbsSkinButton;
bsSkinButton2:TbsSkinButton;
procedureButton1Click(Sender: TObject);
procedureFormActivate(Sender: TObject);
procedurebsSkinButton1Click(Sender: TObject);
procedurebsSkinButton2Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form8:TForm8;
implementation
uses Unit6,Unit4, Unit2, Unit3;
{$R *.dfm}
procedureTForm8.Button1Click(Sender: TObject);
var zv:string[30];
begin
form8.Hide;
form6.Caption:='Поиск позванию';
zv:=form8.ComboBox1.Text;
ifForm2.PageControl1.ActivePage=form2.tabsheet1 then begin
if zv'' then
begin
withdatamodule4.ADOQuery3 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromPract'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (Zvanielike "'+zv+ '%") and (Rugo=«Аппарат УВД»)'); //выбор данныхиз таблицы, где
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery3;
end
else
begin
ShowMessage('В БДсотрудников нет записей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
if form2.PageControl1.ActivePage=form2.tabsheet2then begin
if zv'' then
begin
withdatamodule4.ADOQuery3 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromPract'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (Zvanie like"'+zv+ '%") and (Rugo«Аппарат УВД»)'); //выборданных
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery3;
end
else
begin
ShowMessage('В БДсотрудников нет записей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
ifform2.pagecontrol1.ActivePage=form2.tabsheet3 then begin
if zv'' then
begin
withdatamodule4.ADOQuery3 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromSnVzisk'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (zvanielike "'+zv+ '%")'); //выбор данных из таблицы, где
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery3;
end
else
begin
ShowMessage('В БДсотрудников нет записей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
form6.Show;
end;
procedureTForm8.FormActivate(Sender: TObject);
begin
combobox1.Text:='';
end;
procedureTForm8.bsSkinButton1Click(Sender: TObject);
var zv:string[30];
begin
form8.Hide;
form6.Caption:='Поиск позванию';
zv:=form8.ComboBox1.Text;
ifForm2.PageControl1.ActivePage=form2.tabsheet1 then begin
if zv'' then
begin
form6.Show;
form6.bsSkinButton3.Visible:=true;
withdatamodule4.ADOQuery4 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromPract'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (Zvanielike "'+zv+ '%") and (Rugo=«Аппарат УВД»)'); //выбор данных
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery4;
end
else
begin
form6.hide;
ShowMessage('В БД сотрудников нетзаписей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
ifform2.PageControl1.ActivePage=form2.tabsheet2 then begin
if zv'' then
begin
form6.Show;
form6.bsSkinButton3.Visible:=true;
withdatamodule4.ADOQuery4 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromPract'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (Zvanielike "'+zv+ '%") and (Rugo«Аппарат УВД»)'); //выборданных
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery4;
end
else
begin
form6.hide;
ShowMessage('В БД сотрудников нетзаписей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
ifform2.pagecontrol1.ActivePage=form2.tabsheet3 then begin
if zv'' then
begin
form6.Show;
form6.bsSkinButton3.Visible:=false;
withdatamodule4.ADOQuery3 do begin
Close;
SQL.Clear; //очищениепредыдущего запроса
SQL.Add('select * fromSnVzisk'); //выбирает все данные из таблицы Sotr1
SQL.Add('where (zvanielike "'+zv+ '%")'); //выбор данных
Open;
if RecordCount 0 then //чтение записей пока не дойдет до последней
begin
datamodule4.DataSource4.DataSet:=datamodule4.adoquery3;
end
else
begin
form6.hide;
ShowMessage('В БД сотрудников нетзаписей, удовлетворяющих' +
#13 + 'критериюзапроса.'); exit;
end;
end;
end;
end;
end;
procedureTForm8.bsSkinButton2Click(Sender: TObject);
begin
form8.Hide;
end;
end.
unit Unit15; //форма информации о программе
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, bsSkinCtrls, bsSkinData, BusinessSkinForm;
type
TForm15 =class(TForm)
bsBusinessSkinForm1:TbsBusinessSkinForm;
bsSkinData1:TbsSkinData;
bsCompressedStoredSkin1:TbsCompressedStoredSkin;
bsSkinButton1:TbsSkinButton;
Label1:TLabel;
Label2:TLabel;
Label3:TLabel;
Label4:TLabel;
procedurebsSkinButton1Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form15:TForm15;
implementation
{$R *.dfm}
procedureTForm15.bsSkinButton1Click(Sender: TObject);
begin
form15.Hide;
end;
end.