Автоматизований облік дисциплінарної практики в УВС

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Введення

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 аркуші.

Основне застосування повинне широко використовувати технологію діалогових вікон для приведення до мінімуму помилок користувача при роботі з додатком. Додаток повинен мати добре розвинену довідкову систему.

При розробці програми і побудови алгоритмів для вирішення його завдань розробник повинен дотримуватися таких правил:

- Структура алгоритму не повинна бути занадто складною;

- Алгоритми програми повинні бути легко модифіковані;

- Алгоритми не повинні впливати на не коректну працездатність всієї програми.

В даний час в УВС Міноблісполкома облік співробітників ведеться в програмі Excel, в якій формувати запити, звіти, а також знімати записи з обліку необхідно вручну. У зв'язку з цим дане ПС створювалося для поліпшення оперативної роботи обліку співробітників, які порушили дисциплінарні норми, економії часу ведення обліку, а також для автоматизації дії людини, тобто заміни ручної праці на дії за допомогою ПЕОМ.

У даному програмному продукті планується створювати звіти і діаграми за результатами дисципліни, як по УВС, так і по області в цілому, вести статистику зміни показників у порівнянні з минулим роком, все це має на меті постійного контролю співробітників і вжиття заходів для уникнення порушення дисципліни в УВС Міноблісполкома.

    1. Структура вхідних і вихідних даних

При проектуванні моделі програми було виявлено, що найбільш переважним буде зберігання інформації про співробітників в таблицях Microsoft Office Access. Дані файли будуть типізований, тобто строго певного типу, що складаються із записів, які в свою чергу складаються з полів певного типу. Кількість полів і їх тип визначаються на етапі проектування виходячи з вимог до збереженої у файлах інформації.

У додатку будуть створені дві таблиці для зберігання інформації.

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

- ПІБ;

- Звання;

- Область мул УВС;

- Служба;

- Підрозділ;

- Посада;

- Стягнення;

- Чий наказ;

- Номер наказу;

- Дата наказу;

- Короткий опис проступку.

У додатку "DisPract" вхідними даними будуть інформація про співробітників, відповідно до полями таблиць.

Вихідними документами в даній програмі є звіти, а також дані, що відображаються в DBGrid. Після натискання на кнопку "Звіт" або підменю "Друк" користувач може вивести звіт на друк або попередньо її переглянути, приклад звіту наведено на малюнку 1. У звітах за запитами будуть входити тільки ті записи, які задовольняють заданому критерію.

Для створення звітів використовується технологія Rave Reports, яка є авторизованим членом Комітету відкритих систем і розробляє програмне забезпечення для Delph i. В її основі лежить ідея відділення процесу розробки від процесу створення звіту за рахунок використання проміжного документа, який називається проектом звіту. Проект звіту створюється за допомогою середовища Rave (Report Authoring Visual Environment - візуальне середовище автора звіту), а в створювану програму впроваджується так звана машина генератора звіту, яка за даними, отриманими з файлу проекту, створює документ звіту. Приклад звіту


Малюнок - 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, простий і зрозумілий інтерфейс, широкі можливості управління. Крім того, їх доповнили система безпеки, засоби керування і забезпечення надійності, характерні для системи Windows NT. Розгортання системи 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-засіб Rational Rose було вибрано, тому що воно дозволяє розробляти проектну документацію у вигляді діаграм і специфікацій. Rational Rose - CASE-засіб фірми Rational Software Corporation - призначено для автоматизації етапів аналізу і проектування ПЗ, а також для генерації кодів на різних мовах і випуску проектної документації. Rational Rose використовує синтез-методологію об'єктно-орієнтованого аналізу і проектування, засновану на підходах трьох провідних фахівців у цій галузі: Буча, Рамбо і Джекобсона. Розроблена ними універсальна нотація для моделювання об'єктів (UML - Unified Modeling Language) претендує на роль стандарту в області об'єктно-орієнтованого аналізу і проектування. Крім того, 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, сполученим з таблицею БД співробітників Апарату УВС, і візуальним компонентом DBGrid 1, за допомогою якого користувач взаємодіє з цією таблицею; на другий компонент DataSource2 типу TDataSource є проміжною ланкою між компонентом ADOQuery2 типу ADOQuery, сполученим з таблицею БД співробітників всіх областей УВС і візуальним компонентом DBGrid 2, за допомогою якого користувач взаємодіє з цією таблицею; на третій компонент DataSource3 типу TDataSource є проміжною ланкою між компонентом ADO Table 2 типу ADO Table, сполученим з таблицею БД співробітників Апарату УВС, і візуальним компонентом DBGrid 3, за допомогою якого користувач взаємодіє з цією таблицею;

Компоненти DBGrid 1, DBGrid 2, DBGrid 3 відображає вміст таблиці БД у вигляді сітки, в якій стовпці відповідають полям, а рядки - записами таблиці. Ці компоненти зв'язуються зі своїм джерелами даних через властивість DataSource. Аналогічно взаємодіє DBGrid 1 форми пошуку даних з компонентом ADOQuery3 через DataSource4.

Для компонента ADOConnection 1 також за допомогою властивості ConnectionString потрібно встановити з'єднання з сховищем даних.

У таблиці 3.2 наведені компоненти, що використовуються для роботи з таблицями і запитами БД, їх основні властивості і значення цих властивостей.

Таблиця 3.2 - Значення властивостей компонентів

Компонент

Властивості

Значення

ADOConnection 1

ConnectionString

Pr. Mdb

ADOQuery1

Connection

ADOConnection1

ADOQuery 2

Connection

ADOConnection1

ADOQuery3

Connection

ADOConnection1

ADOTable2

Connection

ADOConnection1

ADOTable1

Connection

ADOConnection1

DataSource1

DataSet

ADOQuery1

DataSource2

DataSet

ADOQuery2

DataSource3

DataSet

ADO Table2

DataSource 4

DataSet

ADOQuery 3

DBGrid1 (Головна форма)

DataSource

DataSource1

DBGrid 2 (Головна форма)

DataSource

DataSource 2

DBGrid 3 (Головна форма)

DataSource

DataSource 3

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 Функції: логічна і фізична організація і елементи управління

При дослідженні діаграми варіантів використання були виявлені основні функціональні вимоги поставленого завдання, які потрібно було реалізувати в проекті. Для реалізації вимог, поставлених перед автором проекту, у програмі був створений ряд процедур, які забезпечують їх коректне виконання. Процедури, що використовуються в програмі, не є вбудованими в мову програмування, а реалізовані автором.

Багато процедури у програмі взаємопов'язані між собою. Взаємозв'язок процедур використовується як для можливості подальшої обробки вже обробленої інформації іншими процедурами, так і для можливості існування деяких процедур по засобах інших. Виходячи з діаграми варіантів використання, найголовнішою функцією в програмі є введення інформації, пошук і контроль зняття стягнення.

Для реалізації даної функції було створено ряд процедур, які представлені нижче:

  • процедура сортування інформації областнікі або апарату управління та автоматичне зняття стягнення

procedure TForm2.FormActivate (Sender: TObject);

var k: integer;

begin

with datamodule4.ADOQuery1 do begin

Close;

SQL.Clear;

SQL.Add ('select * from Pract');

sql.Add ('where Rugo = "Апарат УВС "');

Open;

if RecordCount <> 0 then

begin

datamodule4.DataSource1.DataSet: = datamodule4.adoquery1;

end

else

begin

end;

end;

with datamodule4.ADOQuery2 do begin

Close;

SQL.Clear;

SQL.Add ('select * from Pract');

sql.Add ('where Rugo <> "Апарат УВС "');

Open;

if RecordCount <> 0 then

begin

datamodule4.DataSource2.DataSet: = datamodule4.adoquery2;

end

else

begin

end;

end;

datamodule4.ADOTable1.Open;

datamodule4.ADOTable2.Open;

while not datamodule4.ADOTable1.Eof do

begin

k: = 0;

if datamodule4.ADOTable1dataspr.Value <= date () then

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 then datamodule4.ADOTable1.Prior;

end;

datamodule4.ADOTable1.Close;

datamodule4.ADOTable2.Close;

datamodule4.ADOTable2.Active: = true;

end;

  • процедура пошуку на прізвище (аналогічно виконуються і інші запити)

procedure TForm2.N6Click (Sender: TObject);

var

fam: string [30];

begin

form6.Caption: = 'Пошук по прізвища ';

form6.bsSkinButton2.Visible: = true;

if pagecontrol1.ActivePage = tabsheet1 then begin

fam: = InputBox ('Вибірка інформації з БД', 'Вкажіть прізвище, по якій необхідно виконати пошук','');

if fam <>''then

begin

with datamodule4.ADOQuery3 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from Pract'); / / вибирає всі дані з таблиці 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;

if pagecontrol1.ActivePage = tabsheet2 then begin

fam: = InputBox ('Вибірка інформації з БД', 'Вкажіть прізвище, по якій необхідно виконати пошук','');

if fam <>''then

begin

with datamodule4.ADOQuery3 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from Pract'); / / вибирає всі дані з таблиці 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;

if pagecontrol1.ActivePage = tabsheet3 then begin

fam: = InputBox ('Вибірка інформації з БД', 'Вкажіть прізвище, по якій необхідно виконати пошук','');

if fam <>''then

begin

with datamodule4.ADOQuery3 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from SnVzisk'); / / вибирає всі дані з таблиці 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;

  • процедура редагування запису

procedure TForm2.bsSkinButton3Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then begin

if datamodule4.ADOQuery1.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOQuery1;

form5.DateTimePicker1.Date: = datamodule4.ADOQuery1Datapr.Value;

end;

if pagecontrol1.ActivePage = tabsheet2 then begin

if datamodule4.ADOQuery2.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOQuery2;

form5.DateTimePicker1.Date: = datamodule4.ADOQuery2Datapr.Value;

end;

if pagecontrol1.ActivePage = tabsheet3 then begin

if datamodule4.ADOtable2.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOTable2;

form5.DateTimePicker1.Date: = datamodule4.ADOTable2Datapr.Value;

end;

end;

  • процедура видалення запису

procedure TForm2.bsSkinButton2Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then begin

if datamodule4.ADOQuery1.IsEmpty then exit;

if datamodule4.ADOQuery1 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOQuery1.Delete;

datamodule4.ADOQuery1.Requery;

end;

if pagecontrol1.ActivePage = tabsheet2 then begin

if datamodule4.ADOQuery2.IsEmpty then exit;

if datamodule4.ADOQuery2 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOQuery2.Delete;

datamodule4.ADOQuery2.Requery;

end;

if pagecontrol1.ActivePage = tabsheet3 then begin

if datamodule4.ADOTable2.IsEmpty then exit;

if datamodule4.ADOTable2 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOTable2.Delete;

datamodule4.ADOTable2.Requery;

end;

end;

  • процедура додавання запису

procedure TForm3.Button1Click (Sender: TObject);

var s, 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 - Структура довідкової системи

ВИСНОВОК



Результатом даної дипломної роботи було створення автоматизованого обліку правопорушень в УВС Міноблісполкома.

Даний продукт містить інформацію про співробітників. За допомогою нього можна без проблем знайти того чи іншого співробітника за заданими критеріями, а також вивести цю інформацію на друк.

Програма знайде широке застосування не лише серед працівників відділу кадрів, але і серед багатьох співробітників УВС.

Розробляється автоматизована система буде відрізнятися від інших аналогічних програмних засобів тим, що вона проста в обігу, має зручний, а найголовніше простий у використанні інтерфейс.

Всі основні вимоги, що пред'являються до програмного продукту, повною мірою реалізовані в даній розробці.

ЛІТЕРАТУРА

  • Вьюкова Н.І., Галатенко В.А., ходулі А.Б. Систематичний підхід до программірованію.-М.: Наука., 1988. - 208 с.

  • Калверт Ч. Delphi Енциклопедія користувачів: Пер. з англ. / Чарлз Калверт .- ДіаСофт, К.:, 2000.

  • Конноллі Т., Бегг К., Страчан А. Бази даних: Проектування, реалізація й супровід. Теорія і практика. Видання друге, виправлене, доповнене. - Видавництво "Пітер", Санкт-Петербург - 2002р.

  • Культін Н.Б.. Delphi у завданнях і прикладах. - БХВ-Петербург, СПб., 2004. - 288 с.: Іл.

  1. Офіцерів Д.В. та ін Програмування на персональних ЕОМ: Практикум: Навч. посібник. - Мн.: Виш.шк., 1993. -256 С.

  • Пономаренко Сергій. Бази даних в Delphi 7. Самовчитель. - Видавництво «Пітер», Санкт-Петербург - 2003 р.

  • Форонов В.В. Програмування баз даних в Delphi 7. Навчальний курс.-СПб.: Пітер, 2006.-459 с.: Іл.

ДОДАТОК А

(Обов'язковий)

Текст програми

unit Unit 1; / / завантажувальна форма

interface

uses

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

Dialogs, ComCtrls, ExtCtrls, jpeg;

type

TForm1 = class (TForm)

Image1: TImage;

Timer1: TTimer;

ProgressBar1: TProgressBar;

procedure Timer1Timer (Sender: TObject);

procedure FormActivate (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

uses Unit2;

{$ R *. dfm}

procedure TForm1.Timer1Timer (Sender: TObject);

var

i, k: Integer;

begin

k: = 250;

timer1.Enabled: = true;

for i: = 0 to 60 do

begin

ProgressBar1.Position: = ProgressBar1.Position +2;

Sleep (30);

if i mod 10 = 0 then 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;

procedure TForm1.FormActivate (Sender: TObject);

begin

timer1.Enabled: = true;

end;

end.

unit Unit 2; / / головна форма відображення інформації

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;

procedure BitBtn2Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure BitBtn3Click (Sender: TObject);

procedure BitBtn4Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N6Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure N8Click (Sender: TObject);

procedure N9Click (Sender: TObject);

procedure N10Click (Sender: TObject);

procedure N11Click (Sender: TObject);

procedure N13Click (Sender: TObject);

procedure bsSkinButton1Click (Sender: TObject);

procedure bsSkinButton2Click (Sender: TObject);

procedure bsSkinButton3Click (Sender: TObject);

procedure bsSkinButton4Click (Sender: TObject);

procedure N20Click (Sender: TObject);

procedure N22Click (Sender: TObject);

procedure N23Click (Sender: TObject);

procedure N24Click (Sender: TObject);

procedure N25Click (Sender: TObject);

procedure N26Click (Sender: TObject);

procedure N32Click (Sender: TObject);

procedure N27Click (Sender: TObject);

procedure N17Click (Sender: TObject);

procedure N31Click (Sender: TObject);

procedure N18Click (Sender: TObject);

procedure N29Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form2: TForm2;

implementation

uses Unit1, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10,

Unit11, Unit12, Unit13, Unit14, Unit15;

{$ R *. dfm}

procedure TForm2.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;

procedure TForm2.BitBtn1Click (Sender: TObject);

begin

form3.Show;

end;

procedure TForm2.FormActivate (Sender: TObject);

var k: integer;

begin

with datamodule4.ADOQuery1 do begin

Close;

SQL.Clear;

SQL.Add ('select * from Pract');

sql.Add ('where Rugo = "Апарат УВС "');

Open;

if RecordCount <> 0 then

begin

datamodule4.DataSource1.DataSet: = datamodule4.adoquery1;

end

else

begin

end;

end;

with datamodule4.ADOQuery2 do begin

Close;

SQL.Clear;

SQL.Add ('select * from Pract');

sql.Add ('where Rugo <> "Апарат УВС "');

Open;

if RecordCount <> 0 then

begin

datamodule4.DataSource2.DataSet: = datamodule4.adoquery2;

end

else

begin

end;

end;

datamodule4.ADOTable1.Open;

datamodule4.ADOTable2.Open;

while not datamodule4.ADOTable1.Eof do

begin

k: = 0;

if datamodule4.ADOTable1dataspr.Value <= date () then

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 then datamodule4.ADOTable1.Prior;

end;

datamodule4.ADOTable1.Close;

datamodule4.ADOTable2.Close;

datamodule4.ADOTable2.Active: = true;

end;

procedure TForm2.BitBtn3Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then begin

if datamodule4.ADOQuery1.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOQuery1;

form5.DateTimePicker1.Date: = datamodule4.ADOQuery1Datapr.Value;

end;

if pagecontrol1.ActivePage = tabsheet2 then begin

if datamodule4.ADOQuery2.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOQuery2;

form5.DateTimePicker1.Date: = datamodule4.ADOQuery2Datapr.Value;

end;

if pagecontrol1.ActivePage = tabsheet3 then begin

if datamodule4.ADOtable2.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOTable2;

form5.DateTimePicker1.Date: = datamodule4.ADOTable2Datapr.Value;

end;

end;

procedure TForm2.BitBtn4Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then begin

if datamodule4.ADOQuery1.IsEmpty then exit;

if datamodule4.ADOQuery1 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOQuery1.Delete;

datamodule4.ADOQuery1.Requery;

end;

if pagecontrol1.ActivePage = tabsheet2 then begin

if datamodule4.ADOQuery2.IsEmpty then exit;

if datamodule4.ADOQuery2 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOQuery2.Delete;

datamodule4.ADOQuery2.Requery;

end;

if pagecontrol1.ActivePage = tabsheet3 then begin

if datamodule4.ADOTable2.IsEmpty then exit;

if datamodule4.ADOTable2 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOTable2.Delete;

datamodule4.ADOTable2.Requery;

end;

end;

procedure TForm2.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;

procedure TForm2.N7Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по званню ';

form8.Show;

end;

procedure TForm2.N8Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по області ';

form9.show;

end;

procedure TForm2.N9Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по службу ";

form10.show;

end;

procedure TForm2.N10Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по підрозділу';

form11.show;

end;

procedure TForm2.N11Click (Sender: TObject);

begin

form6.Caption: = 'Пошук за посадою';

form12.show;

end;

procedure TForm2.N13Click (Sender: TObject);

begin

form6.Caption: = 'Пошук за місцем наказу';

form13.show;

end;

procedure TForm2.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;

procedure TForm2.bsSkinButton2Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then begin

if datamodule4.ADOQuery1.IsEmpty then exit;

if datamodule4.ADOQuery1 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOQuery1.Delete;

datamodule4.ADOQuery1.Requery;

end;

if pagecontrol1.ActivePage = tabsheet2 then begin

if datamodule4.ADOQuery2.IsEmpty then exit;

if datamodule4.ADOQuery2 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOQuery2.Delete;

datamodule4.ADOQuery2.Requery;

end;

if pagecontrol1.ActivePage = tabsheet3 then begin

if datamodule4.ADOTable2.IsEmpty then exit;

if datamodule4.ADOTable2 = nil then Exit;

if MessageBox (0, 'Ви дійсно хочете видалити?', 'Підтвердження',

33) <> IDOKthen Exit;

datamodule4.ADOTable2.Delete;

datamodule4.ADOTable2.Requery;

end;

end;

procedure TForm2.bsSkinButton3Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then begin

if datamodule4.ADOQuery1.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOQuery1;

form5.DateTimePicker1.Date: = datamodule4.ADOQuery1Datapr.Value;

end;

if pagecontrol1.ActivePage = tabsheet2 then begin

if datamodule4.ADOQuery2.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOQuery2;

form5.DateTimePicker1.Date: = datamodule4.ADOQuery2Datapr.Value;

end;

if pagecontrol1.ActivePage = tabsheet3 then begin

if datamodule4.ADOtable2.IsEmpty then exit;

form5.Show;

form5.DataSource1.DataSet: = datamodule4.ADOTable2;

form5.DateTimePicker1.Date: = datamodule4.ADOTable2Datapr.Value;

end;

end;

procedure TForm2.bsSkinButton4Click (Sender: TObject);

begin

form3.Show;

end;

procedure TForm2.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;

procedure TForm2.N22Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по прізвища ';

form6.bsSkinButton2.Visible: = true;

form14.show;

end;

procedure TForm2.N23Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по званню ';

form8.Show;

end;

procedure TForm2.N24Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по області ';

form9.show;

end;

procedure TForm2.N25Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по службу ";

form10.show;

end;

procedure TForm2.N26Click (Sender: TObject);

begin

form6.Caption: = 'Пошук по підрозділу';

form11.show;

end;

procedure TForm2.N32Click (Sender: TObject);

begin

form6.Caption: = 'Пошук за посадою';

form12.show;

end;

procedure TForm2.N27Click (Sender: TObject);

begin

form6.Caption: = 'Пошук за місцем наказу';

form13.show;

end;

procedure TForm2.N17Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then begin

form7.DataSource1.DataSet: = datamodule4.ADOQuery1;

form7.Show;

end;

if pagecontrol1.ActivePage = tabsheet2 then begin

form7.DataSource1.DataSet: = datamodule4.ADOQuery2;

form7.Show;

end;

if pagecontrol1.ActivePage = tabsheet3 then begin

form7.DataSource1.DataSet: = datamodule4.ADOTable2;

form7.Show;

end;

end;

procedure TForm2.N31Click (Sender: TObject);

begin

form15.show;

end;

procedure TForm2.N18Click (Sender: TObject);

begin

if pagecontrol1.ActivePage = tabsheet1 then datamodule4.RvProject1.Execute;

if pagecontrol1.ActivePage = tabsheet2 then datamodule4.RvProject2.Execute;

end;

procedure TForm2.N29Click (Sender: TObject);

begin

shellExeCute (handle, nil, "Довідка. chm ', nil, nil, sw_restore);

end;

end.

unit Unit 3; / / форма додавання запису

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;

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure N6Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure N8Click (Sender: TObject);

procedure N10Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure bsSkinButton1Click (Sender: TObject);

procedure bsSkinButton2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form3: TForm3;

implementation

uses Unit4;

{$ R *. dfm}

procedure TForm3.N2Click (Sender: TObject);

begin

edit4.Text: = 'рядовий міліцію ";

end;

procedure TForm3.N3Click (Sender: TObject);

begin

edit4.Text: = 'молодший сержант міліції';

end;

procedure TForm3.N4Click (Sender: TObject);

begin

edit4.Text: = 'сержант';

end;

procedure TForm3.N5Click (Sender: TObject);

begin

edit4.Text: = 'старший сержат ';

end;

procedure TForm3.N6Click (Sender: TObject);

begin

edit4.Text: = 'старшина міліцію ";

end;

procedure TForm3.N7Click (Sender: TObject);

begin

edit4.Text: = 'прапорщик';

end;

procedure TForm3.N8Click (Sender: TObject);

begin

edit4.Text: = 'старший прапорщик ';

end;

procedure TForm3.N10Click (Sender: TObject);

begin

edit4.Text: = 'молодший лейтенант міліцію ";

end;

... ... ....

procedure TForm3.BitBtn1Click (Sender: TObject);

begin

form3.Hide;

end;

procedure TForm3.Button1Click (Sender: TObject);

var s, 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;

procedure TForm3.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;

procedure TForm3.bsSkinButton1Click (Sender: TObject);

var s, 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;

procedure TForm3.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

{Private declarations}

public

{Public declarations}

end;

var

DataModule4: TDataModule4;

implementation

{$ R *. dfm}

end.

unit Unit 5; / / форма редагування запису

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;

procedure Button1Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure bsSkinButton1Click (Sender: TObject);

procedure bsSkinButton2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form5: TForm5;

implementation

uses Unit4;

{$ R *. dfm}

procedure TForm5.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;

procedure TForm5.bsSkinButton1Click (Sender: TObject);

var s, 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;

procedure TForm5.bsSkinButton2Click (Sender: TObject);

begin

form5.Hide;

end;

end.

unit Unit 6; / / форма відображення знайденої інформації

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;

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure bsSkinButton1Click (Sender: TObject);

procedure bsSkinButton2Click (Sender: TObject);

procedure bsSkinButton3Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form6: TForm6;

implementation

uses Unit4, Unit2, Unit1, Unit3, Unit5, Unit7;

{$ R *. dfm}

procedure TForm6.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;

procedure TForm6.BitBtn2Click (Sender: TObject);

begin

form7.DataSource1.DataSet: = datamodule4.ADOQuery3;

form7.Show;

end;

procedure TForm6.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;

procedure TForm6.bsSkinButton2Click (Sender: TObject);

begin

form7.DataSource1.DataSet: = datamodule4.ADOQuery3;

form7.Show;

end;

procedure TForm6.bsSkinButton3Click (Sender: TObject);

begin

datamodule4.RvProject3.Execute;

end;

end.

unit Unit 7; / / форма дострокового зняття співробітника

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;

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure bsSkinButton1Click (Sender: TObject);

procedure bsSkinButton2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form7: TForm7;

implementation

uses Unit4, Unit6, Unit5;

{$ R *. dfm}

procedure TForm7.Button2Click (Sender: TObject);

begin

form6.show;

form7.Hide;

end;

procedure TForm7.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;

procedure TForm7.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;

procedure TForm7.bsSkinButton2Click (Sender: TObject);

begin

form7.Hide;

end;

end.

unit Unit 8; / / Пошук по званню (аналогічно Unit 9-по області; Unit 10-по службі; Unit 11-по підрозділу; Unit 12-за посадою; Unit 13-за місцем наказу; Unit 14-на прізвище)

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;

procedure Button1Click (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure bsSkinButton1Click (Sender: TObject);

procedure bsSkinButton2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form8: TForm8;

implementation

uses Unit6, Unit4, Unit2, Unit3;

{$ R *. dfm}

procedure TForm8.Button1Click (Sender: TObject);

var zv: string [30];

begin

form8.Hide;

form6.Caption: = 'Пошук за званням';

zv: = form8.ComboBox1.Text;

if Form2.PageControl1.ActivePage = form2.tabsheet1 then begin

if zv <>''then

begin

with datamodule4.ADOQuery3 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from Pract'); / / вибирає всі дані з таблиці 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;

if form2.PageControl1.ActivePage = form2.tabsheet2 then begin

if zv <>''then

begin

with datamodule4.ADOQuery3 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from Pract'); / / вибирає всі дані з таблиці 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;

if form2.pagecontrol1.ActivePage = form2.tabsheet3 then begin

if zv <>''then

begin

with datamodule4.ADOQuery3 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from SnVzisk'); / / вибирає всі дані з таблиці Sotr1

SQL.Add ('where (zvanie like "' + 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;

procedure TForm8.FormActivate (Sender: TObject);

begin

combobox1.Text :='';

end;

procedure TForm8.bsSkinButton1Click (Sender: TObject);

var zv: string [30];

begin

form8.Hide;

form6.Caption: = 'Пошук за званням';

zv: = form8.ComboBox1.Text;

if Form2.PageControl1.ActivePage = form2.tabsheet1 then begin

if zv <>''then

begin

form6.Show;

form6.bsSkinButton3.Visible: = true;

with datamodule4.ADOQuery4 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from Pract'); / / вибирає всі дані з таблиці Sotr1

SQL.Add ('where (Zvanie like "' + 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;

if form2.PageControl1.ActivePage = form2.tabsheet2 then begin

if zv <>''then

begin

form6.Show;

form6.bsSkinButton3.Visible: = true;

with datamodule4.ADOQuery4 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from Pract'); / / вибирає всі дані з таблиці Sotr1

SQL.Add ('where (Zvanie like "' + 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;

if form2.pagecontrol1.ActivePage = form2.tabsheet3 then begin

if zv <>''then

begin

form6.Show;

form6.bsSkinButton3.Visible: = false;

with datamodule4.ADOQuery3 do begin

Close;

SQL.Clear; / / очищення попереднього запиту

SQL.Add ('select * from SnVzisk'); / / вибирає всі дані з таблиці Sotr1

SQL.Add ('where (zvanie like "' + 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;

procedure TForm8.bsSkinButton2Click (Sender: TObject);

begin

form8.Hide;

end;

end.

unit Unit 15; / / форма інформації про програму

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;

procedure bsSkinButton1Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form15: TForm15;

implementation

{$ R *. dfm}

procedure TForm15.bsSkinButton1Click (Sender: TObject);

begin

form15.Hide;

end;

end.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Диплом
355.2кб. | скачати


Схожі роботи:
Автоматизований облік власників автомобілей
Автоматизований облік власників автотранспорту
Автоматизований облік радіоточок передавального центру
Автоматизований облік витрачання тонерів та картриджів
Автоматизований облік товарного обороту дистриб`юторів
Автоматизований облік надходження зберігання і збуту продукції на товарній базі
Проходження практики з курсів Податкова система Бухгалтерський облік
Бухгалтерський облік на ВАТ ДОК Червоний Жовтень звіт з практики
Звіт про проходження переддипломної практики за спеціальністю 1810 Бухгалтерський облік на підприємстві
© Усі права захищені
написати до нас