Розробка гнучкої системи автоматизації розрахунку учбового навантаження

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    2,85 Мб
  • Опубликовано:
    2012-09-27
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Розробка гнучкої системи автоматизації розрахунку учбового навантаження

Міністерство освіти та науки України

Криворізький інститут

Кременчуцького університету економіки, інформаційних технологій та управління

Кафедра Технічної кібернетики



ДИПЛОМНА РОБОТА

зі спеціальності

.091402 Гнучкі комп’ютеризовані системи та робототехніка

ПОЯСНЮВАЛЬНА ЗАПИСКА

Розробка гнучкої системи автоматизації розрахунку учбового навантаження

Студент групи ГКС-03-з

Вітряк Олена Сергіївна

Керівник роботи доц., к. ф-м. н.

Китова Валентина Олексіївна

Консультанти:

зі спеціальної частини доц. Вдовиченко І.Н.

з програмної частини проф., д.т.н. Мурашко А.Г.

з економічної частини доц., к.е.н. Тимко Є.В.

з охорони праці доц., к.т.н. Климович Г.Б.

Завідувач кафедри ТК доц., к.т.н. Старіков О.М.

Кривий Ріг 2008р.

Міністерство освіти та науки України

Криворізький інститут

Кременчуцького університету економіки, інформаційних технологій та управління

Кафедра Технічної кібернетики

Спеціальність 7.091402 Гнучкі комп’ютеризовані системи та робототехніка

ЗАТВЕРДЖУЮ

Зав. кафедрою доц., к.т.н. Старіков О.М.

_______________________

«31» жовтня 2007 р.

ЗАВДАННЯ

на дипломну роботу студента

Вітряк Олени Сергіївни

. Тема роботи: Розробка гнучкої системи автоматизації розрахунку учбового навантаження_______________________ затверджена наказом по інституту від " 29 " жовтня 2007 р. № 65Са-01_____________

. Термін здачі студентом закінченої роботи 01.06.08.____________________________________

. Вихідні дані до роботи: Вимоги до кінцевого програмного продукту, вихідні масиви даних

. Зміст розрахунково-пояснювальної записки (перелік питань, що підлягають розробці) Постановка завдання, Теоретичні дослідження основ проектування баз даних; Програмування додатків MS OFFICE в DELPHI; Програмна реалізація та опис функціональних можливостей системи;___ Економічне обґрунтування доцільності розробки програмного продукту; Охорона праці________

. Перелік графічного матеріалу (з точними вказівками обов'язкових креслень)

1. Логіко-функціональна схема роботи системи_________________

. Схема зв’язку між таблицями баз даних_____________________

. Схема ієрархії форм системи______________________________

. Приклади вікон системи в різних режимах роботи_____________

. Об'єктна модель MS Excel ________________________________

. Об’єктна модель MS Word ________________________________

. Об'єктна модель елементів управління MS Word_______________

КАЛЕНДАРНИЙ ПЛАН

№ п/п

Найменування етапів дипломної роботи

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

Примітки

1.

Отримання завдання на дипломну роботу

31.10.07


2.

Огляд існуючих рішень

20.02.08


3.

Обґрунтування вибраного рішення

03.03.08


4.

Програмна частина (постановка задачі, створення програмного забезпечення, опис алгоритму рішення задачі, проектування та опис інтерфейсу користувача, опис програми)

30.04.08


5.

Оформлення пояснювальної записки

15.05.08


6.

Оформлення графічної документації

25.05.08


7.

Оформлення електронних додатків до диплому

27.05.08


8.

Представлення дипломної роботи до захисту

01.06.08



Студент-дипломник _________________

                                              (підпис)

Керівник роботи          _________________

                                    (підпис)

Анотація

Метою даної дипломної роботи є розробка гнучкої комп'ютеризованої системи, призначеної для автоматизації розрахунку учбового навантаження. Система реалізована в середовищі Delphi 6 із застосуванням технології ADO.

Аннотация

Целью данной дипломной работы является разработка гибкой компьютеризированной системы, предназначенной для автоматизации расчета учебной нагрузки. Система реализована в среде Delphi 6 с применением технологии ADO.

The summary

The purpose of the given degree work is development of the flexible computerized system intended for automation of the educational loading calculation. The system is realized in the environment of Delphi 6 with the use of ADO technology.

ВСТУП

- одна з наймогутніших систем, що дозволяють на найсучаснішому рівні створювати як окремі прикладні програми, так і розгалужені програмні комплекси, призначені для роботи в корпоративних мережах і в Інтернет. Одне з головних завдань Delphi - розробка додатків для роботи з базами даних. У цій області Delphi займає самі передові позиції, працюючи з будь-якими системами управління базами даних.

Про Delphi говорять як про середовище швидкого створення програм. Це технологія візуального програмування, яка дозволила звести проектування призначеного для користувача інтерфейсу до простих і наочних процедур. Для завдання яких-небудь властивостей елементу системи зовсім не обов'язково писати масивні текстові рядки, досить змінити цю властивість в інспекторі об'єктів (так званому моніторі властивостей вибраного елементу). Ця зміна автоматично доповнить або модифікує програмний код.

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

Розроблена гнучка система автоматизації розрахунку учбового навантаження була реалізована з використанням контроллерів автоматизації MS Office. Відомо, що при створенні додатків розробка інтерфейсу користувача вимагає великих витрат часу, особливого підходу, досвіду і знань. Тому найбільш оптимальним підходом є використання існуючих інструментів побудови інтерфейсу, які є загальновідомими і загальнодоступними. Такими інструментами можуть служити програмні продукти компанії Microsoft, зокрема MS Office. Використання додатків MS Office як елементів інтерфейсу має наступні переваги:

·    Додатки MS Office увібрали в себе багатий досвід взаємодії користувача персонального комп'ютера і програмного продукту і є універсальними інструментами, які можуть бути інтегровані в додатки, що створюються в різних середовищах розробки;

·        Переважна більшість користувачів володіють навиками роботи в MS Word і MS Excel;

·        Багато бухгалтерських і правових систем володіють великими наборами різних шаблонів документів, які можна використовувати при проектуванні власних додатків;

·        Документи MS Word і MS Excel, як і додатки MS Word і MS Excel, мають чіткі об'єктні моделі і можуть управлятися як внутрішніми, так і зовнішніми програмами.

Ці факти служать аргументами на користь того, щоб використовувати дані продукти як універсальний інтерфейс для програмних продуктів, що розробляються.- один з найбільш популярних і ефективних інструментів розробки додатків, і можливість інтегрувати засоби MS Office в проекти, що розробляються в цьому середовищі, - безперечний тому доказ.

1. ПОСТАНОВКА ЗАВДАННЯ

1.1 Найменування та область використання


Найменування розробки: гнучкої системи автоматизації розрахунку учбового навантаження. Дана розробка може бути застосована для автоматизації розрахунку учбового навантаження на кафедрі технічної кібернетики Криворізького інституту КУЕІТУ.

1.2 Підстава для створення


Підставою для розробки є наказ № 65Са-01 від 29 жовтня 2007 р. по Криворізькому інституту КУЕІТУ.

Початок робіт: 31.10.07. Закінчення робіт: 01.06.08.

1.3 Характеристика розробленого програмного забезпечення


Гнучка система автоматизації була реалізована в середі Delphi 6.0. з використанням технології доступу до файлів баз даних ADO. Для функціонування системи потрібна інсталяція MS Office.

До складу системи входять:

·      Nagruzka.exe - виконавчий файл розробленої системи;

·        baza.mdb - файл, що містить таблиці баз даних, і який може бути розташований на будь-якому комп’ютері, що підключений до локальної мережі;

·        шаблони документів.

 

1.4 Мета й призначення


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

1.5 Загальні вимоги до розробки


Вимоги до програмного забезпечення:

·    Робота в середовищі операційних систем Windows 2000/XP;

·        Відсутність додаткових вимог до розміщення здійснених файлів;

·        Простота й зрозумілість інтерфейсу.

Мінімальні вимоги до апаратного забезпечення:

·    IBM-сумісний комп'ютер, не нижче Pentium IІ, RAM-128Mb, SVGA-800*600*16bit;

·        Вільний простір на жорсткому диску не менш 2Мб;

Додаткове програмне забезпечення: інсталяція пакету MS Office.

1.6 Джерела розробки


Джерелами розробки дипломної роботи є:

·    довідкова література;

·        наукова література;

·        технічна література;

·        програмна документація.

2. ТЕОРЕТИЧНІ ДОСЛІДЖЕННЯ ОСНОВ ПРОЕКТУВАННЯ БАЗ ДАНИХ

 

2.1 Моделі представлення даних


Залежно від виду організації даних розрізняють наступні основні моделі представлення даних в БД:

ієрархічну;

мережеву;

реляційну;

об'єктно-орієнтовану.

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

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

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

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

2.2 База даних як складова частина інформаційної системи


База даних (БД) - це сукупність взаємозв'язаних даних, що зберігаються разом. Основними та невід'ємними властивостями БД є такі:

для даних допускається така мінімальна надлишковість, яка сприяє їх оптимальному використанню в одному чи кількох застосуваннях;

незалежність даних від програм;

для пошуку та модифікації даних використовуються спільні механізми;

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

Прокоментуємо додатково підкреслені слова та вирази у вищенаведеному описі, порівнюючи в основному з близьким попередником БД - файловими системами (ФС).

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

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

Вимога мінімізації надлишковості полягає у мінімальній кількості копій для одних і тих же даних з урахуванням орієнтації на кілька застосувань. Ці надлишкові копії використовуються для підтримки зв'язків між даними. Як приклад, розглянемо відомості, що зберігаються у відділі кадрів деякого підприємства про своїх співробітників. Користувачами цієї інформації виступають адміністрація, профспілкова організація та бухгалтерія підприємства. Адміністрацію цікавлять дані про кваліфікацію, професійний рівень і досвід роботи, профспілки використовують відомості соціально-побутового характеру, а бухгалтерія оброблює ті дані, що потрібні для нарахувань заробітної плати та підрахунку податків, інших нарахувань та відрахувань. Хоча інформація і різнорідна, але все ж має значну спільну частину. Всім користувачам потрібні службовий номер, прізвище, ім'я, по-батькові співробітника, його рік народження, дані про умови праці. Інформація про сімейний стан та склад сім'ї використовується бухгалтерією і профспілками. Якщо для зберігання даних застосувати технологію ФС, то можливі два крайні варіанти: а)незалежні один від одного файли, відсортовані згідно з потребами того чи іншого користувача, передбачають значну надлишковість даних; б)всі дані знаходяться у одному файлі, відсортованому так, як потрібно одному з користувачів (наприклад, адміністрації) - надлишковість при цьому практично відсутня, але зручно працювати тільки одному з користувачів. Концепція БД займає проміжне становище між вищеописаними крайніми позиціями.

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

Про незалежність даних часто говорять, як про одну з основних властивостей БД. Під цим поняттям розуміється можливість зміни структури даних без зміни програм, що її використовують, а також рівень самоінтерпретованості даних. Міра незалежності даних тісно пов'язана з ступенем необхідної деталізації відомостей про організацію їх зберігання. Проілюструємо цю ситуацію дещо абстрагованим прикладом. Припустимо, що ви збираєтесь переглянути фільм у кінотеатрі, а для того, щоб прибути на місце плануєте скористатись послугами таксі. Поінформованість та досвід водія таксі відповідають мірі незалежності. У одному випадку Вам достатньо вказати лише назву фільму, а все інше зробить водій. У іншому випадку Вам потрібно буде визначити назву кінотеатру. Наступне зниження рівня - це адреса кінотеатру, а ще далі - вказівки по дорозі типу "їхати прямо, звернути наліво, а через 500 метрів - направо і т.п.". Аналогічно і користувачу при підвищенні ступеня незалежності даних треба менше задавати (і знати) "процедурної" інформації щодо доступу до даних. Зауважимо, що певний (хоч і досить низький) рівень незалежності мають сучасні ФС: при доступі до файлу достатньо вказати його ім'я, а інформація про треки та сектори непотрібна, але зміна розміру запису вимагає корекції всіх програм, що звертались до цього файла.

Під цілісністю БД розуміють несуперечливість між собою даних, що в ній зберігаються. Наприклад, для кадрових відомостей рік народження співробітника не може бути більшим року призначення на посаду або поточного року. Щоб запобігти виникненню таких ситуацій при модифікації і поповненнях БД, співвідношення між даними контролюються спеціальними засобами підтримки цілісності БД. Специфікація подібних умов, що накладаються на дані і відслідковуються при будь-яких їх оновленнях, покладаються на спеціальну службу Адміністратора бази даних (АБД), а системи управління базами даних (СУБД) надають інструментальні засоби, які забезпечують службі АБД можливість виконання її функцій.

За критерієм виразової потужності інструментальні засоби специфікації умов цілісності можна підрозділити на такі групи:

·    порівняння поля запису (або атрибута) з константою або з іншим полем цього ж запису; приклад такої умови наводився вище;

·        порівняння поля запису з полем або кількома полями інших записів;

·        порівняння поля запису з множиною (підмножиною) значень полів всього файлу або навіть кількох файлів.

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

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

·    оперативно одержувати інформацію про місце знаходження комп’ютера;

·        вести облік пристроїв які підключені або входять до складу комп’ютера;

·        організувати процеси перемішання комп’ютерів їх частин або пристроїв;

·        вести облік програм які установлені на цьому комп’ютері;

·        вести облік профілактик які були зроблені на цьому комп’ютері.

2.2.1 Моделі представлення даних

У залежності від виду організації даних розрізняють наступні основні моделі представлення даних у БД:

·    ієрархічну;

·        мережну;

·        реляційну;

·        обє’ктно-орієнтовану.

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

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

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

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

Реляційна модель одержала свою назву від англійського терміна relation (відношення) і була запропонована в 70-х роках співробітником фірми IBM Эдгаром Коддом. Реляційна БД являє собою сукупність таблиць, зв'язаних відносинами. Достоїнствами реляційної моделі даних є простота, гнучкість структури, зручність реалізації на комп'ютері, наявність теоретичного опису. Дана розробка заснована на реляційних базах даних.

2.2.2 Реляційний спосіб доступу до даних

Реляційний спосіб доступу до даних ґрунтується на операціях із групами записів. Для завдання операцій використовуються засоби мови структурованих запитів - SQL (Structured Query Language), тому реляційний спосіб доступу називають також SQL-орієнтованим. Для його реалізації в програмних продуктах Delphi як набір даних повинні застосовуватися такі компоненти, як Query чи storedProc, що дозволяють виконати SQL-запит.

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

Стосовно до локальних БД використання реляційного способу доступу не дає істотної переваги, але й у цьому випадку за допомогою SQL-запиту можна:

·   формувати склад полів набору даних при виконанні додатка; включати в набір даних полючи і запису з декількох таблиць; відбирати запису за складними критеріями;

·        сортувати набір даних по будь-якому полю, у тому числі неіндексованому;

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

Основи мови SQL

Мова SQL орієнтована на виконання дій з таблицями БД і даними в цих таблицях, а також деяких допоміжних дій. На відміну від процедурних мов програмування, у неї немає операторів керування обчислювальним процесом (циклів, переходів, розгалуження) і засобів уведення-висновку. Складену мовою SQL програму також називають SQL-запитом.

Мова SQL звичайно інтегрується в інші засоби (оболонку), використовуючись в інтерактивному режимі. Так, у системі керування базами даних, що має інтерактивний інтерфейс, користувач може працювати, нічого не знаючи про мову SQL, незалежно від того, яка БД використовується: віддалена чи локальна . Такі СУБД, як Microsoft Access, Visual FoxPro чи Paradox, самі виконують дії, зв'язані з програмуванням запитів на SQL, пропонуючи користувачу засоби візуальної побудови запитів, наприклад, Query By Example (QBE) - запит за зразком.

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

Розрізняють два види SQL-запитів: статичний і динамічний. Статичний SQL-запит включається у вихідний код на етапі розробки й у процесі виконання додатка не змінюється. Розроблювач може змінити SQL-запит шляхом використання параметрів, якщо такі маються в його тексті.

Код динамічного SQL-запиту формується чи змінюється при роботі програми. Такі запити звичайно застосовуються у випадку, коли при виконанні запиту потрібно враховувати дії користувача.

Прийнята нами класифікація не є однозначною. Так, у деяких випадках SQL-запити з параметрами теж відносять до розряду динамічних.

Мова SQL має кілька стандартів, з яких найбільш розповсюдженими серед виробників програмних продуктів є стандарти SQL-89 і SQL-92. Стандарт SQL92, підтриманий Американським національним інститутом стандартів (ANSI - American National Standards Institute) і Міжнародною організацією по стандартизації (ISO - International Standard Organization), також називають стандартом ANSI чи/ISO. Наявність декількох стандартів і різна їхня інтерпретація породили безліч діалектів мови SQL, що у більшому чи меншому ступені відрізняються друг від друга.

У мові SQL можна виділити наступні основні підмножини операторів:

·  визначення даних;

·        обробки даних;

·        керування привілеями (доступом до даних); керування транзакціями.

Розглянемо основні можливості, реалізовані у Delphi версії мови SQL. Ця версія трохи відрізняється від стандарту SQL-92, наприклад, у ній не можна працювати з переглядами і керувати привілеями.

У додатках Delphi для виконання операторів SQL можна використовувати набір даних Query. Нагадаємо, що текст SQL-запиту є значенням властивості sql компонента Query і формується при розробці додатка, чи під час його виконання. Компонент Query забезпечує виконання SQL-запиту й одержання відповідного набору даних. Формування набору даних виконується при активізації компонента Query шляхом виклику методу Оpen чи установкою властивості Active значення True. Іноді при відпрацьовуванні SQL-запиту немає необхідності одержувати набір даних, наприклад, при видаленні, чи вставці модифікації записів. У цьому випадку більш переважно виконувати запит викликом методу ExecSQL. При роботі в мережі виклик цього методу робить необхідну модифікацію набору даних, не передаючи в визиваючу програму (комп'ютер) запис набору даних, що істотно знижує навантаження на мережу.

Крім того, набрати і виконати в інтерактивному режимі текст SQL-запиту дозволяють інструментальні програми, що поставляються разом з Delphi 5, наприклад такі, як Database Desktop, SQL Explorer і SQL Builder. Відзначимо, що перші дві програми викликаються за допомогою однойменних команд меню Tools і Database, відповідно, а візуальний будівник запитів SQL Builder викликається через контекстне меню компонента Query.

Перевірка синтаксису і відпрацьовування запиту, убудованого в додаток (найчастіше за допомогою компонента Query), виробляються на етапі виконання програми. При наявності синтаксичних помилок у тексті SQL-запиту генерується виняткова ситуація, інтерпретувати яку часом непросто. Для налагодження SQL-запитів зручно використовувати програми з розвитим інтерфейсом, наприклад Database Desktop. Після налагодження текст запиту вставляється в розроблювальний додаток. При такому підході значно скорочується час створення запитів і істотно зменшується імовірність появи динамічних помилок.

Як результат виконання SQL-запиту може повертатися набір даних, що складають відібрані з його допомогою запис. Цей набір даних називають результуючим.

Зарезервовані слова мови SQL пишемо рядковими, а імена - прописними буквами. Регістр букв не впливає на інтерпретацію операторів мови. Крапка з комою наприкінці SQL-операторів необов'язкова. Елементи в списках, наприклад, імена полів і таблиць, повинні бути розділені комами.

Імена таблиць і полів (стовпців) полягають в одиночні чи подвійні апострофи, наприклад, "First Name". Якщо ім'я не містить пробілів і інших спеціальних символів, то апострофи можна не вказувати.

У SQL-запиті допускаються коментарі, що пояснюють текст програми. Коментар обмежується символами /* і */.

Функції мови SQL

Мова SQL, як і інші мови, надає для використання ряд функцій, з яких найбільш уживані наступні:

Агрегатні чи статистичні функції:() - середнє значення;

МАХ () - максимальне значення;() - мінімальне значення;() - сума;() - кількість значень;(*) - кількість ненульових значень.

Функції роботи з рядками:(Str) - перетворення символів рядка Str до верхнього регістра;(Str) - перетворення символів рядка Str до нижнього регістра;(Str) - видалення пробілів на початку і наприкінці рядка Str;(Str FROM n1 to n2) - виділення з рядка str підрядка,
 що містить у собі символи, починаючи з номера (позиції) n1 і закінчуючи номером n2;( <Expression> AS <Type>) - приведення виразу Expression до типу Type;

конкатенація (зчеплення) двох рядків.

Функції декодування дати і часу:(<Елемент> FROM <вираз>) - з вираження, що містить значення чи дати часу, витягається значення, що відповідає
 зазначеному елементу. Як елемент дати чи часу можна
 вказувати значення: YEAR, MONTH, DAY, HOUR, MINUTE чи SECOND.

Відбір даних з таблиць

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

Оператор SELECT - найважливіший оператор мови SQL. Він використовується для добору записів, що задовольняють складним критеріям пошуку, і має наступний формат:[DISTINCT] {* I <Список полів>)<Список таблиць>

[WHERE <Умови добору >]

[ORDER BY <Список полів для сортування >]

[GROUP BY <Список полів для групування >]

[HAVING <Умови групування>]

[UNION <Вкладений оператор SELECT>]

Результат виконання SQL-запиту, заданого оператором SELECT, являє собою вибірку записів, що відповідають заданим у ньому умовам. При розгляді оператора SELECT будемо припускати, що SQL-запит набраний і виконаний за допомогою компонента Query. У цьому випадку результатом виконання запиту є відповідний цьому компонент набору даних.

У такому результуючому наборі даних можуть бути дозволені чи заборонені повторювані записи (тобто однакові значення, що мають, усіх полів). Цим режимом керує DISTINCT. Якщо він відсутній, то в наборі даних дозволяються повторювання записів.

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

Список полів визначає склад полів результуючого набору даних, ці поля можуть належати різним таблицям. У списку повинне бути задане хоча б одне поле. Якщо в набір даних потрібно уключити всі поля таблиці (таблиць), то замість перерахування імен полів можна вказати символ "*". Якщо список містить поля декількох таблиць, то для вказівки приналежності полів до тієї чи іншої таблиці використовують складене ім'я, що включає в себе ім'я таблиці й ім'я полючи, розділені крапкою: <Ім'я таблиці>.<Ім'я поля>

Операнд WHERE задає умови (критерії) добору, яким повинні задовольняти запису в результуючому наборі даних. Вираження, що описує умови добору, є логічним. Його елементами можуть бути імена полів, операції порівняння, арифметичні і логічні операції, дужки, спеціальні функції LIKE, NULL, IN і інші.

Операнд GROUP BY дозволяє виділяти групи записів у результуючому наборі даних. Групою є записи з однаковими значеннями в полях, перерахованих за операндом GROUP BY. Виділення груп потрібно для виконання групових операцій над записами, наприклад, для визначення кількості якого-небудь товару на складі.

Операнд HAVING діє разом з операндом GROUP BY і використовується для добору записів усередині груп. Правила запису умов групування аналогічні правилам формування умов вибору в WHERE. Операнд ORDER BY містить список полів, що визначають порядок сортування записів результуючого набору даних. За замовчуванням сортування по кожному полю виконується в порядку зростання значень; якщо необхідно задати для полів сортування по зменшенню, то після імені цього поля вказується описувач DESC.

Оператори SELECT можуть мати складну структуру і бути вкладеними друг у друга. Для об'єднання операторів використовується операнд UNION, у якому розташовується вкладений оператор SELECT, названий також підзапитом. Результуючий набір даних представляють записи, відібрані в результаті виконання умов добору, заданих операндами WHERE обох операторів.

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

Статичний і динамічний запити

Як уже відзначалося, у залежності від способу формування SQL-запит може бути:

·   статичним;

·        динамічним.

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

Динамічний SQL-запит формується чи змінюється при виконанні додатка.

2.2.3 Таблиці

Таблиці - фундаментальні об'єкти реляційної бази даних, у яких зберігається основна частина програмних даних. Окрема таблиця найчастіше зберігає інформацію з конкретної теми (наприклад, відомості компанії, чи адреси замовників). Інформація в таблиці організується в рядки (запису) і стовпці (поля). Таблиці присутні два компоненти: структура таблиці і дані таблиць.

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

Структура таблиці включає наступну інформацію:

Ім'я таблиці - Ім'я, по якому до таблиці можна звернутися у властивостях, методах і операторах SQL.

Стовпці таблиці - Категорії інформації, збереженої в таблиці. Кожен стовпець має ім'я і тип даних. Табличні і стовпцеві обмеження - Обмеження цілісності, визначені на рівні таблиці чи на рівні стовпця.

Кожен вертикальний стовпець таблиці STUDENTS представляє один елемент даних для кожного зі студентів. Наприклад, у стовпці GROUP містяться номери груп, у яких розташовані студенти. У стовпці DATE містяться дати народження кожного студента.

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

На перетинанні кожного рядка з кожним стовпцем таблиці міститься одне значення даних. Наприклад, у другому рядку в стовпці FAMILY міститься значення "ІВАНОВ". У стовпці PODGRP того ж рядка міститься значення 1, що є номером підгрупи, у якій знаходиться даний студент.

Усі значення, що містяться в тому самому стовпці, є даними одного типу. Наприклад, у стовпці FAMILY містяться тільки слова, у стовпці DATE містяться дати, а в стовпці NUMBER містяться цілі числа, що представляють ідентифікатори студентів. Безліч значень, що можуть міститися в стовпці, називається доменом цього стовпця. Доменом стовпця FAMILY є безліч прізвищ студентів. Доменом стовпця DATE є будь-як дата.

У кожного стовпця в таблиці є своє ім'я, що звичайно служить заголовком стовпця. Усі стовпці в одній таблиці повинні мати унікальні імена, однак дозволяється привласнювати однакові імена стовпцям, розташованим у різних таблицях. На практиці такі імена стовпців, як NUMBER, FAMILY, NAME, GROUP, DATE, PODGRP, часто зустрічаються в різних таблицях однієї бази даних.

Стовпці таблиці упорядковані ліворуч праворуч, і їхній порядок визначається при створенні таблиці. У будь-якій таблиці завжди є як мінімум один стовпець. У стандарті ANSI/ISO не вказується максимально припустиме число стовпців у таблиці, однак майже у всіх комерційних СУБД ця межа існує і звичайно складає приблизно 255 стовпців.

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

У таблиці може міститися будь-яка кількість рядків. Цілком припустиме існування таблиці з нульовою кількістю рядків. Така таблиця називається порожньою. Порожня таблиця зберігає структуру, визначену її стовпцями, просто в ній не містяться дані. Стандарт ANSI/ISO не накладає обмежень на кількість рядків у таблиці, і в багатьох СУБД розмір таблиць обмежений лише вільним дисковим простором комп'ютера. В інших СУБД мається максимальна межа, однак він дуже високий - біля двох мільярдів рядків, а іноді і більше.

2.2.4 Ключові поля

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

Оскільки рядки в реляційній таблиці не упорядковані, не можна вибрати рядок по його номеру в таблиці. У таблиці немає "першого", "останнього" чи "тринадцятого" рядка. Тоді яким чином можна вказати в таблиці конкретний рядок, наприклад рядок для студента з прізвищем Іванов?

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

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

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

Таблиця ORDERS являє приклад таблиці, у якій первинний ключ являє собою комбінацію стовпців. Такий первинний ключ називається складеним ключем.

Він застосовується у випадках, коли неможливо гарантувати унікальність значень кожного окремого поля. Стовпець NSTUD містить ідентифікатори студентів, перерахованих у таблиці, а стовпець NORDER містить номера, наказам. Може показатися, що стовпець NORDER міг би й один виконувати роль первинного ключа, однак ніщо не заважає одному студенту кілька разів потрапити під відрахування і потім відновитися на факультеті. Таким чином, як первинний ключ таблиці ORDERS необхідно використовувати комбінацію стовпців NSTUD і NORDER. Для кожного зі студентів, що містяться в таблиці, комбінація значень у цих стовпцях буде унікальною.

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

Хоча первинні ключі є важливою частиною реляційної моделі даних, у перших реляційних СУБД (System/R, DB2, Oracle і інших) не була забезпечена явно їхня підтримка. Як правило, проектувальники бази даних самі стежили за тим, щоб у всіх таблиць були первинні ключі, однак у самих СУБД не було можливості визначити для таблиці первинний ключ. І тільки в СУБД DB2 Version 2, що з'явилася в квітні 1988 року, компанія IBM реалізувала підтримку первинних ключів. Після цього подібна підтримка була додана в стандарт ANSI/ISO.

 

2.2.5 Індекси

Індекси - об'єкти бази даних, що забезпечують швидкий доступ до окремих рядків у таблиці. Індекс створюється з метою підвищення продуктивності операцій запитів і сортування дані таблиці. Індекси також використовуються для підтримки в таблицях деяких типів ключових обмежень; ці індекси часто створюються автоматично при визначенні обмеження.

Індекс - незалежний об'єкт, логічно окремий від таблиці; створення чи видалення індексу ніяк не впливає на визначення даних індексованої таблиці. Він зберігає високо оптимізовані версії всіх значень одного чи більше стовпців таблиці. Коли значення запитується з індексованого стовпця, процесор (ядро) бази даних використовує індекс для швидкого перебування, необхідного значення. Індекси повинні постійно підтримуватися, щоб відбивати останні зміни індексованих стовпців таблиці.

Створити індекси, як і ключі, можна по одному чи декільком полям.

Складені індекси дозволяють при доборі даних групувати записи, у яких перші поля можуть мати однакові значення. Індексувати поля потрібно для виконання частих пошуків, сортувань чи об'єднань з полями з інших таблиць у запитах. Ключові поля таблиці індексуються автоматично. Не можна індексувати поля з типом даних поле МЕМО, чи об'єкту OLE. Для інших полів індексування використовується, якщо поле має текстовий, числовий, грошовий тип чи тип дати/часу і потрібно здійснювати пошук і сортування значень у полі. Якщо передбачається, що буде часто виконуватися сортування чи пошук одночасно по двох і більш полях, можна створити складений індекс. Наприклад, якщо для того самого запиту часто встановлюється критерій для полів Ім'я і Прізвище, то для цих двох полів має сенс створити складений індекс. При сортуванні таблиці по складеному індексі спочатку здійснюється сортування по першому полю, визначеному для даного індексу. Якщо в першому полі містяться записи з повторюваними значеннями, то сортування здійснюється по другому полю і т.д.

 

2.2.6 Зовнішні ключі

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

Зовнішній ключ, як і первинний ключ, теж може являти собою комбінацію стовпців. На практиці зовнішній ключ завжди буде складеним ( що складається з декількох стовпців), якщо він посилається на складений первинний ключ в іншій таблиці. Очевидно, що кількість стовпців і їхній типи даних у первинному і зовнішньому ключах збігаються.

Якщо таблиця зв'язана з декількома іншими таблицями, вона може мати кілька зовнішніх ключів. Реляційна модель даних має всі можливості мережної моделі по частині вираження складних відносин.

Зовнішні ключі є невід'ємною частиною реляційної моделі, оскільки реалізують відносини між таблицями бази даних. До нещастя, підтримка зовнішніх ключів була відсутня в перших реляційних СУБД. Вона була введена в системі DB2 Version 2 і тепер мається у всіх комерційних СУБД.

3. ПРОГРАМУВАННЯ ДОДАТКІВ MS OFFICE В DELPHI

 

3.1 Загальні принципи створення контролерів автоматизації MS Office

- це середовище, в якому більшість завдань можна вирішувати без якого-небудь програмування. Але вся цінність застосувань Office для розробника полягає в тому, що все, що можна зробити руками, можна зробити програмним шляхом з використанням засобів VBA (Visual Basic for Application). Крім того, додатки Office поставляють сервера COM, які надають інтерфейс доступу до додатку і його об'єктів. Завдяки цьому, розробник в середовищі Delphi має можливість, створивши контролер автоматизації, управляти сервером. Насправді додаток розглядається як сукупність об'єктів зі своїми методами, властивостями, подіями, які забезпечують скелет додатку. Програміст Office є не творцем додатку, як, наприклад це робиться в Delphi, а він бере участь в створенні системи документів. Таким чином, ДОКУМЕНТ, а не програма є метою розробки. Спадкоємство - могутній інструмент побудови нового класу, проте програмістам відомий ще один спосіб отримання класу - вбудовування. Як і спадкоємство, вбудовування транзитивне відношення. У об'єктній моделі Office немає спадкоємства в повному розумінні цього слова, а є тільки вбудовування.

Завжди існує кореневий об'єкт, він завжди називається Application. Кожний додаток Office має свій власний кореневий об'єкт - Word.Application, Excel.Application. Не дивлячись на це в об'єкт Application вбудовується вся решта об'єктів (учасники), які є властивостями головного об'єкту. У учасників можуть бути свої учасники і так далі.

Як тільки відкривається новий документ, будь то PowerPoint, Excel, Word, автоматично створюється каркас нового документа, який є набором бібліотек з класами.

Об'єкти цих класів будуть доступні в даному документі. Завданням розробника контролера автоматизації є дати доступ до кореневого об'єкту сервера, збудувати ланцюжок доступу до об'єктів - учасників (вбудованих об'єктів), правильно передати параметри.

Однією з чудових особливостей багатозадачних операційних систем є підтримка взаємодії і обміну інформацією між різними програмами. Операційна система (ОС) Windows - не виключення з цього правила і надає безліч механізмів такої підтримки. Робота ОС Windows передбачає передачу і обробку повідомлень як між ОС і додатками, так і між додатками, а також використання динамічних бібліотек. Цей механізм був використаний ще в перших версіях Windows і відобразився на методах розробки додатків для цієї ОС. Основою програмування в перших версіях Windows стало програмування об'єктів, тому що будь-яка програма цієї ОС була об'єктом. З розвитком операційної системи розвивалися і механізми взаємодії програм.

Розвиток йшов від обміну повідомленнями, використання DLL (Dynamic Link Library, бібліотеки процедур і функцій, що динамічно підключаються) і механізму DDE (Dynamic Data Exchange, динамічний обмін даними) до сучасних технологій, заснованих на OLE (Object Linking and Embedding, зв’язок та впровадження об'єктів), COM (Component Object Model, компонентна модель об'єктів), DCOM (Distributed Component Object Model, розподілена компонентна модель об'єктів). Цей перехід був обґрунтований тим, що стало недостатнім використання тільки функцій і процедур, що надаються зовнішніми програмами і бібліотеками. На перший план вийшла необхідність управління цілими об'єктами, які є додатками або документами і розташовані як в одному адресному просторі програми, що управляє, так і поза цим простором або навіть на іншому комп'ютері локальної мережі. Така постановка завдання спричинила за собою революційні зміни як в структурі ОС Windows, так і в програмах, призначених для розробки додатків.

Додатки MS Office є об'єктами-серверами, які можуть управлятися зовнішніми програмами, і тут не останню роль грають механізми СОМ і OLE.

Модель СОМ надає можливість створення багато разів використовуваних об'єктів в різних додатках, що підтримують цей інтерфейс. Об'єктами СОМ є додатки-сервери, спеціальним чином оформлені і зареєстровані в системі. Вони можуть бути представлені у форматі ЕХЕ- або DLL-модулів. Ці сервери можуть завантажуватися і виконуватися як в адресному просторі додатку, так і у вигляді самостійного процесу, або на іншому комп'ютері мережі (розподілена модель СОМ - DCOM). Вони повинні бути написані на будь-якій мові, що підтримує інтерфейс СОМ.

Розвиток технології СОМ продовжує її підмножину - технологія OLE Automation (автоматизація OLE). Її відмінність в тому, що вона дозволяє використовувати можливості СОМ не тільки мовам-компіляторам, але і інтерпретаторам, і забезпечує зв'язок з методами, що викликаються, на стадії виконання додатку. Такий спосіб виклику називається пізнім зв’язуванням. Методи при такому способі виклику виконуються повільніше, причому наперед не можна перевірити правильність написання об'єктів і їх методів. Перевагою такого методу є незалежність вибору середовища розробки від об'єкту, який потрібно програмувати.

Середовище Delphi підтримує виклики методів серверів автоматизації. Сервер автоматизації є програмою, яка може управлятися зовнішньою програмою - контролером автоматизації.

Сервером в даному випадку є Word або Excel, а контролер розробляється програмістом.

Для цього використовуються змінні типу Variant, які містять посилання на об'єкти автоматизації.

На етапі виконання програми серверу автоматизації передається команда у вигляді рядка, заздалегідь записаного в змінну типу Variant. Розглянемо як приклад наступний фрагмент програми:

Завантаження Internet Explorer

Uses ComObj;

Var IE:variant;TMainForm.Button1Click(Sender: TObject);:=CreateOleObject('InternetExplorer.Application');.Visible:=true;;

Змінна IE типу Variant не має ніяких властивостей і методів, але, проте, програма відкомпілюється і виконуватиметься. Якщо ми замість властивості Visible напишемо будь-яку іншу властивість, яка не підтримує IE, то компілятор помилки не видасть, а на стадії виконання відбудеться помилка. Це особливості пізнього зв’язування - властивості і методи перевіряються в самому додатку-сервері на стадії виконання. Можна додати, що весь цей механізм працює за рахунок COM API.

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

Перейдемо безпосередньо до контроллерів автоматизації. З вже сказаного зрозуміло, що контроллер автоматизації - це програма, яка "уміє" управляти додатками MS Office і процесом створення документів в середовищі Word і Excel. Для того, щоб все це працювало коректно, програма-контроллер повинна виконати наступні функції:

·    Перевірити, запущений додаток (Word, Excel) чи ні.

·        Якщо додаток не запущено, запустити його.

·        Виконати ряд необхідних маніпуляцій із додатком, документом.

·        Закрити документ і додаток.

·        Очистити пам'ять.

3.2 Об'єктна модель MS Word


Текстовий процесор MS Word і табличний процесор MS Excel, що входить, до складу MS Office, є об'єктами СОМ. Це означає, що будь-яка програма, написана для сучасних версій Windows, може управляти цими об'єктами, якщо вона підтримує інтерфейс СОМ.

Як видно з рис. 3.1, об'єктна модель MS Word має деревовидну структуру, на вершині якої знаходиться об'єкт Application. Колекції (Collection), що входять до складу об'єктної моделі, є списками однотипних об'єктів, доступ до яких здійснюється по індексу. Окремі об'єкти можуть містити колекції, в свою чергу елементи колекції є звичайними об'єктами. Доступ до будь-якого об'єкту або елементу колекції можливий тільки через кореневий об'єкт Application. На рис. 3.1 об'єктна модель зображена в укрупненому вигляді. Можна виділити і детальніше розглянути деякі частини цієї моделі, наприклад, елемент колекції Documents - об'єкт Document (документ). На рис. 3.2 представлена структура об'єкту Document в тому вигляді, який дає уявлення про його основні елементи і їх взаємозв'язок.

Рис. 3.1 Об’єктна модель MS Word

До складу об'єкту Document входять як елементи, що описують його в цілому, так і елементи, що є змістом документа. Наприклад, колекція властивостей, що описують призначені для користувача характеристики документа (назва, тема, автор і ін.), відноситься до документа в цілому і візуально не відображається в документі. Колекція таблиць - елемент, який є частиною змісту документа і відображається на його сторінках. У свою чергу елемент колекції може містити свої об'єкти і колекції. Наприклад, кожна таблиця містить колекції рядків і стовпців, а також елементи типу "комірка". Колекції можуть включати не тільки повністю однотипні елементи, але і елементи, які можуть істотно відрізнятися один від одного. Колекція форм (Shapes) містить елементи, однотипні за способом створення і розміщення, а за змістом - різні.

Рис. 3.2 Об’єктна модель документу MS Word

Елемент колекції Shapes може містити напис (Textbox), зовнішній об'єкт (OLEObject), лінію (Line), полілінию (Polyline) і інші типи об'єктів. Основний об'єкт документа це, звичайно, текст. Для доступу до тексту можна використовувати колекцію Words або об'єкт Range.

Елементи колекції Words - об'єкти, які відображають слова в тексті і містять їх характеристики. Об'єкт Range описує текст або частину тексту цілком. На рис. 3.3 приведений загальний вид структури об'єктної моделі елементів управління MS Word.

Як видно з рис. 3.3, всі елементи управління MS Word зібрані в одну колекцію, що має деревовидну структуру, кожен вузол якої може містити як об'єкти, так і вкладені колекції. Цю структуру можна настроювати і доповнювати. Користувач і програміст, використовуючи певні інструменти, можуть додати, видалити, модифікувати або активізувати будь-який вузол або об'єкт цієї структури. При цьому будуть виконані методи, відповідні активізованим елементам управління.

Рис. 3.3 Об'єктна модель елементів управління MS Word

Як вже сказано, доступ до документів і застосувань можна здійснювати через об'єкти, що стоять на вершині об'єктної моделі застосувань MS Office. Через них ми дістаємо доступ до внутрішньої структури документів і додатків, тому при створенні контролерів автоматизації ми можемо використовувати тільки їх.

 

3.3 Об'єктна модель MS Excel


Об'єктна модель MS Excel за загальними принципами ідентична об'єктній моделі MS Word. Ця модель також має ієрархічну структуру, в корені якої знаходиться об'єкт Application (ExcelApplication), через який забезпечується доступ до будь-якої колекції або внутрішнього об'єкту додатку MS Excel або до компонентів відкритих робочих книг. Загальна структура об'єктної моделі MS Excel представлена на рис. 3.4.

Рис. 3.4 Об'єктна модель MS Excel

Як вже сказано, вершиною об'єктної моделі MS Excel є об'єкт Application, що безпосередньо включає такі об'єкти і колекції, як Selection - поточний виділений об'єкт, WorkBooks - колекція відкритих робочих книг, колекції різних елементів управління, діалогових вікон і інші властивості додатку MS Excel. Об'єкт Selection має властивості поточного виділеного об'єкту, тому немає сенсу розглядати тут структуру моделі цього об'єкту. Якщо виділена комірка, то Selection = Комірка, якщо діаграма, то Selection = Діаграма. Коли виділена область комірок, Selection = Колекції стовпців і рядків. Колекція робочих книг є списком відкритих робочих книг, доступ до яких здійснюється по індексу. Кожен елемент такої колекції є об'єктом "робоча книга". Панелі управління, меню, кнопки, діалоги і інші об'єкти, призначені для управління додатком, зібрані у відповідні колекції елементів управління.

Основним елементом об'єкту "робоча книга" є колекція робочих листів. Елементом колекції є окремий робочий лист, який може бути звичайним листом (у вигляді таблиці) або бути у вигляді діаграми. У останньому випадку він нічого, окрім діаграми, містити не може. Розглянемо варіант листа у вигляді таблиці (рис. 3.5).

Рис.3.5 Об'єктна модель листа робочої книги

Основний об'єкт робочого листа, з яким доводиться працювати, - комірка. Комірка як об'єкт сама володіє безліччю властивостей і об'єктів, що входять в неї. З них найбільш важливими і часто використовуваними є: текст, шрифт, стиль тексту, межі, заливка. Щоб дістати доступ до них, необхідно дістати доступ до самої комірки, а потім змінювати її властивості. Комірки об'єднані у області комірок Range. Властивості області комірок багато в чому співпадають з властивостями самої комірки, але є і відмінності, що полягають в завданні координат і розмірів області. Комірки об'єднані в рядки і стовпці. Об'єднання рядків і стовпців є колекціями, доступ до яких проводиться по числовому індексу або по буквеному позначенню стовпця. На робочому листі можуть розташовуватися зовнішні об'єкти: малюнки, фрагменти документів Word, звуки, відеозаписи і інші об'єкти, які об'єднані в колекцію зовнішніх OLE-об'єктів. Прорисовка або, точніше, відтворення цих об'єктів повністю виконується зовнішніми програмами, зареєстрованими в системі як OLE-сервери. Доступ до таких об'єктів проводиться через елементи колекції OLEObjects, а доступ до їх властивостей можливий тільки через ці OLE-сервери. Застосування Excel володіє великим набором власних графічних об'єктів, які можна розмістити на робочому листі. Ми можемо використовувати малюнки, написи, геометричні фігури, діаграми, які звичайно об'єднані в колекції. Наприклад, колекція ChartObjects містить набір діаграм, які розташовуються на робочому або на окремому листі. Кожна діаграма, у свою чергу, також містить набір об'єктів і колекцій.

Щоб переконатися в гнучкості, універсальності і великих можливостях для програмування об'єктів MS Office, розглянемо ще одну колекцію об'єктів, присутню як в Word, так і в Excel. Це колекція діалогів (діалогових вікон), які користувач звичайно відкриває натисненням тієї або іншої кнопки або вибором команди меню. Вона належить об'єкту Application. У об'єктній моделі всі діалоги представлені у вигляді елементів колекції Dialogs, доступ до яких забезпечується через числовий індекс. За допомогою параметрів методу Show елементу колекції відбуваються передача параметрів в діалог і його виконання - така модель діалогів для додатків Excel (рис. 3.6, а), для додатків Word модель діалогу дещо відрізняється. Відмінність полягає в тому, що в Word параметри передаються через властивості об'єкту-елементу колекції (мал. 3.6, б).

Рис. 3.6 Об’єктні моделі Знайти в Excel (а) и Знайти та змінити в Word (б)

У об'єкту Item() разом з типовими властивостями і методами присутні властиві тільки йому властивості і методи. Наприклад, у діалогу Знайти і замінити є властивість Find, що визначає текст для пошуку - до запуску діалогу.

У Excel об'єкт колекції Dialogs дещо відрізняється від діалогів Word. Розглянемо об'єктну модель колекції діалогів для Ехсel в цілому (рис. 3.7).

Рис. 3.7 Об’єктна модель діалогів MS Excel

На цьому малюнку представлена тільки мала частина всіляких діалогів колекції - показані діалоги, найбільш часто використовувані програмістами і користувачами. Звичайно в діалог передаються значення, які встановлюють значення елементів управління, а повертаються значення True або False, залежно від результату дії користувача.

Додатки зі складу MS Office, наприклад Word і Excel, є взаємозв'язані об'єкти і колекції об'єктів. Кожен об'єкт або колекція включає безліч параметрів і інших об'єктів, колекцій. У свою чергу, самі об'єкти і колекції мають господаря (Parent), до складу якого вони входять. На вершині об'єктної моделі знаходяться об'єкти WordApplication для текстового процесора Word і Excel.Application - для табличного процесора Excel. Через ці об'єкти, в основному, і здійснюється зв'язок цих додатків із зовнішніми програмами.

комп'ютеризований розрахунок учбовий навантаження

4. ПРОГРАМНА РЕАЛІЗАЦІЯ І ОПИС ФУНКЦІОНАЛЬНИХ МОЖЛИВОСТЕЙ ПРОЕКТОВАНОЇ СИСТЕМИ

 

4.1 Предметна область і задачі, покладені на гнучку систему автоматизації


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

Дана розробка може бути застосована для автоматизації розрахунку учбового навантаження на кафедрі технічної кібернетики Криворізького інституту КУЕІТУ.

 

4.2 Апаратні вимоги, та вимоги до системного програмного забезпечення


При проектуванні гнучкої інтегрованої системи приймалися до уваги наступні вимоги.

. Оптимальний склад технічних засобів, при яких працює програма:

·    ПК типу IBM PC або сумісний з ним, продуктивністю не менше 600 МГц;

·        Оперативна пам'ять не менше 128 МГбайт;

·        Монітор із SVGA адаптером;

·        НЖМД не менше 4,3 Гбайт;

·        НГМД 3,5 дюйми;

·        Компакт-дисковий носій (CD);

·        Струменевий або лазерний принтер формату А4;

·        Клавіатура, маніпулятор типу "миша".

. Система не повинна мати прив’язки до апаратної частини для можливого переносу її на нову платформу через моральне старіння комп’ютерної техніки;

. Програмна оболонка повинна мати інтуїтивно зрозумілий інтерфейс;

Система повинна функціонувати під керуванням операційних систем Windows 98 та Windows 2000, або Windows ХР.

 

4.3 Розробка логіко-функціональной схеми системи


Логіко-функціональна схема системи наведена на рис.4.1.

Рис. 4.1 Логіко-функціональна схема системи

 

4.4 Опис інтерфейсу користувача


Робота з системою починається з формування довідників. Вікно довідника професорсько-викладацького складу кафедри має наступний вигляд

Рис. 4.2 Вікно довідника „Професорсько-викладацький склад кафедри”

Список викладачів відсортований згідно абетки. Внизу вікна ми можемо побачити загальну кількість викладачів. Система також дозволяє експортувати список викладачів в файл формату MS Word (додаток Б).

При подвійному клацанні на відповідному записі з'являється вікно з докладною інформацією. Вікно картки викладача має наступний вигляд:

Рис. 4.3 Вікно картки викладача

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

Довідник «Контингент студентів» містить перелік груп з вказівкою числа студентів. У вікні передбачена фільтрація по спеціальностях. Шифр спеціальності, а також форму навчання (денну або заочну) можна обрати із випадаючого списку.

Рис. 4.4 Вікно довідника „Контингент студентів”

Довідник дисциплін являє собою перелік всіх дисциплін, закріплених за кафедрою. Тут також є можливість експорту таблиці в Word.

Рис. 4.5 Вікно довідника дисциплін

Довідник посад містить відомості про назву посад та кількість годин на ставку.

Рис.4.6 Вікно довідника посад

Вікно редагування семестрового плану має наступний вигляд:

Рис. 4.7 Вікно „Семестровий план”

Тут є дві вкладки, які відповідають денному і заочному відділенню. У свою чергу вони розбиті на 2 семестри навчального року.

Щоб додати дисципліну в список необхідно натиснути на кнопку Додати. На екрані з’явиться вікно, де необхідно ввести дані навчального плану для дисципліни. Тут необхідно вибрати з довідника найменування дисципліни, спеціальність і заповнити всю решту полів, які містять інформацію про семестр, в якому вивчається дисципліна, кількість аудиторних годин, наявність курсових проектів чи робіт та форму контролю.

Рис. 4.8 Вікно вводу даних навчального плану

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

Кнопка Експорт в Excel дозволяє сформувати готовий документ і потім вивести його на друк.

Окрім безпосереднього розрахунку навантаження система передбачає формування наступних звітів:

. Якісний і кількісний склад кафедри (тобто скільки професорів, доценти працюють на кафедрі)

. Контингент студентів спеціальності ГКС

. Склад кафедри. Тут також указуються дисципліни, які веде викладач і кількість лекційних годин.

. Кадрове забезпечення спеціальності. В даному випадку вказані викладачі тільки кафедри технічної кібернетики. Викладачів інших кафедр треба заносити в таблицю уручну.

Всі звіти формуються на основі шаблонів MS Word. Форми звітів наведені в Додатку Б. За допомогою підпункту меню Файл - Відкрити базу даних користувач системи має можливість змінити шлях до розташування фалу бази даних.

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

Рис.4.9 Діалогове вікно відкриття файлу бази даних

Підпункт меню Файл - Резервна копіювання дозволяє у будь - який момент зберегти резервну копію бази даних у форматі mdb. Діалогове вікно зберігання резервної копії наведено на рис.

4.5 Програмна реалізація гнучкої системи автоматизації

Система створена засобами середовища програмування Delphi 6.0 і відповідає всім необхідним вимогам, які пред'являлися в постановці завдання до дипломної роботи і виконує повне коло задач, перерахованих вище.

Додаток використовує базу даних в форматі mdb за наступною схемою

Рис.4.11 Схема взаємозв’язку таблиць бази даних

Типи та призначення полів відповідних таблиць бази даних наведені на малюнках.

Рис.4.12 Структура таблиці sp_prep - довідника кадрового составу

Рис.4.13 Структура таблиці sp_pos - довідника посад

Рис.4.14 Структура таблиці sp_disc - довідника дисциплін

Рис.4.15 Структура таблиці sp_spec - довідника спеціальностей

Рис.4.16 Структура таблиці kontingent, що містить інформацію про кількість студентів в групах

Рис.4.17 Структура таблиці semestrovka, що містить дані про семестровий навчальний план

Рис.4.18 Структура таблиці nagruzka, що містить дані про навантаження викладачів

Програми містить 10 форм, за допомогою яких користувач має змогу заносити та змінювати інформацію у базі даних та застосовуючи надані засоби фільтрування даних вибирати потрібні дані. Ієрархія форм наведена на рис. 4.19.

Рис. 4.19 Ієрархія форм системи

Усі не візуальні компоненти, що призначені для роботи з базою даних розташовані на DataModule7.

Рис. 4.20 Вікно DataModule2

Інформація про розташування файла бази даних зберігається у системному реєстрі і зчитується в глобальну змінну basename за допомогою процедур, що містяться в модулі registry в події створення DataModule2.:=tregistry.Create(key_read); //створення ключа.RootKey:=HKEY_CURRENT_USER;reg.OpenKey('\software\nagruzka\path',false) //відкриття ключа реєстру для зчитування:=reg.ReadString('text') //зчитування значення ключа як текстового параметру:='.\baza.mdb'; //якщо відповідний ключ в реєстрі не знайдений, система буде шукати файл бази в каталозі, в якому розташований виконавчий файл.ADOConnection1.Connected:=false;.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+'Data Source='+basename+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";';

...(‘Файл не найден’);.Terminate; //якщо файл бази не знайдено, система припиняє роботу;.Free;

Програмна реалізація довідника викладачів була здійснена наступним чином. Відсортований за абеткою список викладачів формується на основіsp_prep.prizv, sp_prep.name, sp_prep.f_name, sp_prep.kod_pr, sp_pos.posada, sp_pos.stavka, sp_prep.shtsp_prep INNER JOIN sp_pos ON sp_prep.kod_pos = sp_pos.kod_posBY sp_prep.prizv;

При подвійному клацанні мишею по відповідному запису дані можна відредагувати.Tsp_pr.DBGrid1DblClick(Sender: TObject);.ADOTable1.Locate('kod_pr',DataModule7.ADOTable3kod_pr.AsInteger,[]); // установка покажчика на запис в таблиці, яка відповідає вибраному в списку прізвищу.ADOTable1.edit; //перехід в режим редагування_vikl.ShowModal; //поява форми, що містить інформацію про викладача;

При закритті форми, що містить інформацію про викладача, данні автоматично оновлюютьсяTinf_vikl.BitBtn1Click(Sender: TObject);.ADOTable1date_r.AsDateTime:=DateTimePicker1.Date;.ADOTable1date_post.AsDateTime:=DateTimePicker2.Date;.ADOTable1.Post;.ADOTable3.Close;.ADOTable3.Open;;;

Експорт даних в MS Word реалізований за допомогою наступної процедури:

procedure Tsp_pr.BitBtn2Click(Sender: TObject);=1;i,j,k:integer;:string; mypagenumber:variant; mypagenumbers:variant;,mysection,table:variant;:=createoleobject('word.application'); //створення об'єкту Word.documents.add; //додавання документу.activewindow.activepane.view.zoom.percentage:=100; //масштаб відобра-ження вікна документу - 100%:=w.activedocument.range.sections.item(1); //встановлення поточного розділу документу:=mysection.headers.item(1).pagenumbers; //автоматична нуме-рація сторінок звіту:=mysection.headers.item(1).pagenumbers.add(pagenumberalignment:=

wdalignPageNumberRight,firstpage:=true); //встановлення параметрів нумерації - вгорі сторінки, по центру, номер на першій сторінці

myrange:=w.activedocument.range(w.activedocument.range.end-1,w.activedocument.range.end-1);.paragraphformat.alignment:=1; //вирівнювання тексу абзацу по цен-ту.select; //виділення поточного абзацу.selection.font.bold:=1; //текст "жирний".selection.font.underline:=1; //текст підкреслений.activedocument.range.insertafter('Викладачі кафедри'); //вставка заголовка зві-ту.activedocument.range.insertafter(#13); //додавання пустих строк.activedocument.range.insertafter(#13);:=w.activedocument.range(w.activedocument.range.end-1,w.activedocument.range.end-1);.activedocument.tables.add(range:=myrange,numrows:=1,numcolumns:=6); //додавання в документ таблиці - 1 рядок та 5 стовпців:=w.activedocument.tables.item(1);.AutoFormat(Format:=20,:=true,:=false,:=false,:=false,:= false,:=false,:= false,:=false,:=false); //форматування таблиці за основі заданого типу Ав-тоформату.rows.item(1).range.paragraphformat.alignment:=1; //вирівнювання по-середині.rows.item(1).shading.backgroundpatterncolorindex:=16; //заливка ко-мірки таблиці.rows.item(1).select; //обираємо 1-й рядок.selection.font.bold:=1;.selection.font.underline:=0; //текст підкресленийi:=1 to table.columns.count do //формування заголовківi of // i - порядковий номер стовпця

: begin.columns.item(i).width:=20; //встановлюємо ширину стовпця.cell(1,i).range.text:='№'; //виводимо заголовок;

: begin.columns.item(i).width:=100; //встановлюємо ширину стовпця.cell(1,i).range.text:='Призвіще'; //виводимо заголовок;

: begin.columns.item(i).width:=100;.cell(1,i).range.text:='Ім''я';;

: begin.columns.item(i).width:=100;.cell(1,i).range.text:='Побатькові';;

: begin.columns.item(i).width:=90;.cell(1,i).range.text:='Посада';;

: begin.columns.item(i).width:=80;.cell(1,i).range.text:='Примітка';;;.rows.add; //додаємо рядок у таблицю.rows.item(2).shading.backgroundpatterncolorindex:=0; //відключення за-ливки.rows.item(2).select;.rows.item(2).range.paragraphformat.alignment:=3;.selection.font.bold:=0;:=2;.ADOtable3.first;DataModule7 donot ADOtable3.eof do //перебір усіх записів набору

//формування таблиці - занесення відповідних значень набору у комірки таблиці

table.cell(ADOtable3.recno+1,1).range.text:=inttostr(adotable3.recno);.cell(ADOtable3.recno+1,2).range.text:=adotable3prizv.asstring;.cell(ADOtable3.recno+1,3).range.text:=adotable3name.asstring;.cell(ADOtable3.recno+1,4).range.text:=adotable3f_name.asstring;.cell(ADOtable3.recno+1,5).range.text:=adotable3posada.asstring;adotable3sht.asboolean then.cell(ADOtable3.recno+1,6).range.text:='штатник'table.cell(ADOtable3.recno+1,6).range.text:='сумісник';:=k+1; //номер рядка

ADOtable3.next; //перехід на наступну запис

table.rows.add; //додавання рядку у таблицю

end;.rows.item(k).delete;.activedocument.range.insertafter(#13);.activedocument.range.insertafter(#13); //візуалізація документу.visible:=true;;

Інші довідники системи реалізовані схожим чином. В довіднику „Контингент” фільтрація по спеціальностям реалізована наступним чином. При появі форми на основі довідника спеціальностей формується випадаючий список.Tsp_kont.FormShow(Sender: TObject);.Items.Clear; //очищення спискуDataModule7 do.First;not ADOTable6.Eof do //перебираємо всі записи таблиці - довідника спеціальностей.Items.Add(ADOTable6shifr.AsString);//заносимо шифр спеціальності до списку.Next; //перехід на наступний запис;;;

Якщо перемикач „Фільтрація” включений, виконується наступний код:Tsp_kont.CheckBox1Click(Sender: TObject);.ADOTable6.Locate('shifr',ComboBox1.Text,[]);//пошук відповідного запису в таблиці-довіднику спеціальностей.ADOTable7.Filter:='kod_sp='+inttostr(DataModule7.ADOTable6kod_sp.AsInteger);//фільтрація таблиці-довіднику контингенту по коду спеціальності.ADOTable7.Filtered:=CheckBox1.Checked;;

Формування семестрового плану здійснюється з використанням 4-х SQL-запитів. Наведемо текст запиту, що відповідає денній формі навчання, 1 семестр навчального року:semestrovka.semestr, semestrovka.f_nav, sp_disc.n_disc, sp_spec.shifr, semestrovka.lek, semestrovka.lab, semestrovka.prakt, semestrovka.k_r, semestrovka.k_p, semestrovka.f_kontr, semestrovka.kod_sp, semestrovka.kod_dis, semestrovka.kod_semestr, semestrovka.lek_ost, semestrovka.lr_ost, semestrovka.pr_ost, semestrovka.kons, semestrovka.praktika, semestrovka.dek, semestrovka.inshe, semestrovka.eks_kons, semestrovka.eks, semestrovka.zalik, semestrovka.kurs(sp_disc INNER JOIN semestrovka ON sp_disc.kod_d = semestrovka.kod_dis) INNER JOIN sp_spec ON semestrovka.kod_sp = sp_spec.kod_sp(((semestrovka.semestr)=1 Or (semestrovka.semestr)=3 Or (semestrovka.semestr)=5 Or (semestrovka.semestr)=7 Or (semestrovka.semestr)=9) AND ((semestrovka.f_nav)=True));

Інші запити (денна форма - 2 семестр, заочна форма - 1 семестр, , заочна форма - 2 семестр) мають подібну структуру.

Інтерфейс вікна „Семестровий план” реалізований за допомогою двох компонентів TabControl. Перший з них відповідає за розподіл між денною та заочною формою навчання, другий між 1 та 2 семестром навчального року. При зміні вкладки відбувається переключення між відповідними наборами.Tsem_plan.TabControl2Change(Sender: TObject);(TabControl1.TabIndex=0) and (TabControl2.TabIndex=0) //денна форма, 1 семестрDataSource1.DataSet:=DataModule7.sem_1_d(TabControl1.TabIndex=0) and (TabControl2.TabIndex=1) //денна форма, 2 семестрDataSource1.DataSet:=DataModule7.sem_2_d(TabControl1.TabIndex=1) and (TabControl2.TabIndex=0)//заочна форма, 1 семестрDataSource1.DataSet:=DataModule7.sem_1_z//заочна форма, 2 семестр.DataSet:=DataModule7.sem_2_z;;

Експорт даних в MS Excel відбувається з використанням шаблону, що повинен знаходитись в тому ж каталозі, що й виконавчий файл системи. Пошук та заміну текстових констант здійснює наступна функція:FindAndInsert(FindText,replacementText:string):boolean;range:variant;:=e.cells.replace(what:=findtext,replacement:=replacementtext);;

Вихідний документ має 4 листа, кожен з яких відповідає набору даних. Далі наведений фрагмент коду, за допомогою якого відбувається формування документу.Tsem_plan.BitBtn3Click(Sender: TObject);workbook,cell,range:variant;,kurs:integer;:=createoleobject('excel.application'); //створення об’єкту Excel

workbook:=e.workbooks.add(extractfiledir(application.ExeName)+'\Нагрузка.xlt'); //відкриття файлу шаблона.sem_1_d.First; i:=0; //вивід даних на лист, що виповідає денній формі, 1 семеструnot DataModule7.sem_1_d.Eof do //перебір усіх записів набору:=workbook.worksheets[1].cells[i+5,1];:=workbook.worksheets[1].range[cell,cell];.value:= DataModule7.sem_1_d.RecNo; //номер дисципліни:=workbook.worksheets[1].cells[i+5,2];:=workbook.worksheets[1].range[cell,cell];.value:= DataModule7.sem_1_dn_disc.AsString; //назва дисципліни:=workbook.worksheets[1].cells[i+5,15];:=workbook.worksheets[1].range[cell,cell];datamodule7 do beginsem_1_dlek.AsInteger<>0 then.value:= DataModule7.sem_1_dlek.AsInteger; //кількість годин лекцій:=workbook.worksheets[1].cells[i+5,16];:=workbook.worksheets[1].range[cell,cell];sem_1_dkons.AsInteger<>0 then.value:= DataModule7.sem_1_dkons.AsInteger; //кількість годин консультацій:=workbook.worksheets[1].cells[i+5,17];:=workbook.worksheets[1].range[cell,cell];sem_1_dlab.AsInteger<>0 then.value:= DataModule7.sem_1_dlab.AsInteger; //кількість годин лаб. робіт:=workbook.worksheets[1].cells[i+5,18];:=workbook.worksheets[1].range[cell,cell];sem_1_dprakt.AsInteger<>0 then.value:= DataModule7.sem_1_dprakt.AsInteger; //кількість годин практ. робіт:=workbook.worksheets[1].cells[i+5,20];:=workbook.worksheets[1].range[cell,cell];sem_1_dkurs.AsInteger<>0 then.value:= DataModule7.sem_1_dkurs.AsInteger; //кількість годин курс проекту або роботи:=workbook.worksheets[1].cells[i+5,21];:=workbook.worksheets[1].range[cell,cell];sem_1_dzalik.AsInteger<>0 then.value:= DataModule7.sem_1_dzalik.AsInteger; //кількість годинна залік:=workbook.worksheets[1].cells[i+5,22];:=workbook.worksheets[1].range[cell,cell];sem_1_deks.AsInteger<>0 then.value:= DataModule7.sem_1_deks.AsInteger; //кількість годин на екзамен:=workbook.worksheets[1].cells[i+5,23];:=workbook.worksheets[1].range[cell,cell];sem_1_deks_kons.AsInteger<>0 then.value:= DataModule7.sem_1_deks_kons.AsInteger; ////кількість годин на екз. консультації

//визначення курсу, на якому викладається дисциплінаADOTable5semestr.AsInteger of

,2:kurs:=1;

,4:kurs:=2;

,6:kurs:=3;

,8:kurs:=4;

:kurs:=5;;

//пошук відповідного запису в довіднику контингенту студентівADOTable5f_nav.AsBoolean then.Locate('kod_sp;kurs;f_nav',VarArrayOf([ADOTable5kod_sp.AsInteger,kurs,'д']),[]).Locate('kod_sp;kurs;f_nav',VarArrayOf([ADOTable5kod_sp.AsInteger,kurs,'з']),[]);:=workbook.worksheets[1].cells[i+5,4];:=workbook.worksheets[1].range[cell,cell];.value:= ADOTable7kurs.AsInteger; // курс, на якому вивчається дисципліна:=workbook.worksheets[1].cells[i+5,5];:=workbook.worksheets[1].range[cell,cell];.value:= ADOTable7kol_st.AsInteger;//кількість студентів.Locate('kod_sp',ADOTable7kod_sp.AsInteger,[]);:=workbook.worksheets[1].cells[i+5,3];:=workbook.worksheets[1].range[cell,cell];.value:= ADOTable6shifr.AsString; //шифр спеціальності.sem_1_d.Next;;:=i+1;;.visible:=true; //візуалізація документу;

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

Далі наведено код, за допомогою якого відбувається формування звіту про контингент студентів.Tmain.N111Click(Sender: TObject);:=createoleobject('word.application'); //створення об’єкту WORD

w.documents.add(extractfiledir(application.ExeName)+'\Контингент студентів.dot'); //відкриття шаблону('#D1', inttostr(datamodule7.d1kol_st.AsInteger)); //пошук в документі текстової константи та заміна її на відповідне значення, в даному випадку це є кількість студентів('#D2', inttostr(datamodule7.d2kol_st.AsInteger));('#D3', inttostr(datamodule7.d3kol_st.AsInteger));('#D4', inttostr(datamodule7.d4kol_st.AsInteger));('#D5', inttostr(datamodule7.d5kol_st.AsInteger));('#Z1', inttostr(datamodule7.z1kol_st.AsInteger));('#Z2', inttostr(datamodule7.z2kol_st.AsInteger));('#Z3', inttostr(datamodule7.z3kol_st.AsInteger));('#Z4', inttostr(datamodule7.z4kol_st.AsInteger));('#Z5', inttostr(datamodule7.z5kol_st.AsInteger));('#A', inttostr(datamodule7.d1kol_st.AsInteger+.d2kol_st.AsInteger+datamodule7.d3kol_st.AsInteger+datamodule7.d4kol_st.AsInteger+datamodule7.d5kol_st.AsInteger));('#B', inttostr(datamodule7.z1kol_st.AsInteger+.z2kol_st.AsInteger+datamodule7.z3kol_st.AsInteger+datamodule7.z4kol_st.AsInteger+datamodule7.z5kol_st.AsInteger));.visible:=true; //візуалізація документу;

При виконанні даної процедури були використана FindAndInsert, що дозволяє знаходити рядок FindText і підставляти на її місце рядок ReplacementText:

function FindAndInsert(FindText,replacementText:string):boolean;wdReplaceAll=2;.selection.find.text:=findtext;.selection.find.replacement.text:=replacementtext;:=w.selection.find.execute(replace:=wdreplaceAll);

end;

Вивід кількості студентів по групам відбувається за допомогою SQL-запитів, кожен з яких відповідає потоку студентів. Далі наведений текст SQL-запиту, що виповідає першому курсу денного відділення спеціальності ГКС.kontingent.kol_st, kontingent.f_nav, kontingent.kurs, sp_spec.shifrkontingent INNER JOIN sp_spec ON kontingent.kod_sp = sp_spec.kod_sp(((kontingent.f_nav)="д") AND ((kontingent.kurs)=1) AND ((sp_spec.shifr)="ГКС"));

Реалізація виводу інших звітів також базується на використанні SQL-запитів. Далі наведений текст деяких з них.

Кількість викладачів-штатниківsp_prep.shtsp_prep(((sp_prep.sht)=True));

Кількість викладачів-сумісників:sp_prep.shtsp_prep(((sp_prep.sht)=False));

Сумісники-кандидати наук:sp_prep.sht, sp_prep.n_stsp_prep(((sp_prep.sht)=False) AND ((sp_prep.n_st)="к.т.н."));

Штатники-кандидати наук:sp_prep.n_st, sp_prep.sht, sp_prep.nauk_zvsp_prep(((sp_prep.n_st)="к.т.н.") AND ((sp_prep.sht)=True) AND ((sp_prep.nauk_zv)<>"професор"));

Штатники-професора:sp_prep.sht, sp_prep.nauk_zvsp_prep(((sp_prep.sht)=True) AND ((sp_prep.nauk_zv)="професор"));

Професора-сумісники:sp_prep.sht, sp_prep.nauk_zvsp_prep(((sp_prep.sht)=False) AND ((sp_prep.nauk_zv)="професор"));

5. ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ


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

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

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

В розробці користуємося мовою програмування Borland Delphi v.6.0.

Необхідні для розробки програмного продукту засоби обчислювальної техніки:

·  IBM-сумісний комп'ютер, не нижче Pentium IІ, RAM-128Mb;

·  Монітор із SVGA адаптером;

·        НЖМД не менше 4,3 Гбайт;

·        НГМД 3,5 дюйми;

·        Компакт-дисковий носій (CD);

·        Клавіатура, маніпулятор типу "миша".

5.1 Визначення витрат на створення програмного продукту


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

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

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

витрати на оплату машинного часу, затраченого при розробці програми.

Витрати на оплату праці розроблювачів програми

Витрати на оплату праці розроблювачів програми визначаються множенням трудомісткості створення програми, вираженої в годинах, на середньо-годинну оплату програміста:


Де Зрозр - середньо-годинна оплата програміста,розр. - трудомісткість створення програми, що містить у собі витрати праці на наступні дії:

·      Знайомство з проблемою й визначення шляхів її вирішення;

·        Розробка структури інформаційної системи;

·        Розробка моделі бази даних «Деканат»;

·        Розробка програмного продукту «Деканат»;

·        Налагодження програми на ПК;

·        Підготовка документації по задачі.

Витрачений час на вирішення поставленої задачі розрахуємо за календарним планом виконання робіт (табл. 5.1)

Таблиця 5.1

Календарний план виконання робіт по створенню програми

Найменування етапів виконання робіт

Кількість затрачених годин

Знайомство з проблемою і визначення шляхів її вирішення

35

Розробка структури інформаційної системи

50

Розробка моделі бази даних

25

Розробка програмного продукту

75

Налагодження програми на ПК

3

Підготовка документації по програмному забезпеченню

25


Таким чином, користуючись календарним планом виконання робіт, можемо розрахувати сумарну трудомісткість.

розр.= tпробл.+ tстр..+ tмод.+ tпрогр.+ tнал.+ ttдок

де tпробл. - час на знайомство з проблемою й визначення шляхів її вирішення,стр. - час на розробку структури інформаційної системи,мод. - час на розробку моделі бази даних;прогр... - час на розробку програмного продукту,нал..- час на налагодження програми на ПК,док...- час на підготовку документації по задачі,розр. = 35+50+25+75+3+25 = 213 [люд./годин]

Для визначення середньої годинної оплати програміста необхідно спочатку визначити його річний фонд грошового забезпечення. Це можна зробити, знаючи місячне грошове забезпечення програміста. Воно складає приблизно 1200,00 гривень. Крім того він отримує раз на рік матеріальну допомогу на оздоровлення в розмірі 360 гривень та щомісячну премію в розмірі 420 гривень.

Таким чином, річний фонд грошового забезпечення програміста складає 19 800 гривень.

Нарахування на ФОП:

1.   Безробіття 1,3%

2.       Пенсійний фонд 33,2%

.        Соцзабезпечення тимчасової непрацездатності 1,6%

4.           Соцзабезпечення від нещасних випадків 1,16%

Підсумок: 37,26%

Далі визначимо число робочих годин у році, за формулою:

(p) = (N - N(п) - N(в)) * 8

де N - загальне число днів у році,(п) - число святкових днів у році,(в) - число вихідних днів у році,

Число святкових днів у році - 10, вихідних - 104. Отже, число робочих годин у році дорівнює:(p) = ( 365 - 10 - 104) * 8 = 2008 [години]

Середньо годинна оплата програміста визначається співвідношенням:

Срозр. = ФЗПсн / n(p)

Де ФЗПсн - річний фонд грошового забезпечення,

Срозр. = 19800 / 2008 = 9,86 [гривень]

Отже, витрати на оплату праці ( Зрозр. ) розроблювачів програми складають:

Зрозр. = 213 * 9,86 = 2100,18 [гривень]

Зрозр.нарах.= 2100,18 + 2100,18 * 37,26% = 2882,70 [гривень]

5.2 Витрати, пов'язані з розробкою програми на ПК


Витрати, пов'язані з розробкою програми на ПК, визначаються, як добуток години використання ПК для розробки програми на собівартість машинного часу обчислювальної техніки. Собівартість ( СПК ) однієї години роботи ПК дорівнює відношенню річних поточних витрат на експлуатацію ПК ( ЗгПК ) до річного фонду годин ( ТгПК ) корисної роботи ПК.

СПК = ЗгПК / ТгПК

Розрахунок річного фонду тривалості робочого часу ПК (у годинах)

Визначивши дійсний річний фонд тривалості робочого часу ЕОМ у годинах, маємо можливість оцінити собівартість машинного часу. Дійсний річний фонд тривалості робочого часу ЕОМ дорівнює числу робочих годин у році для оператора, за винятком часу затраченого на профілактику й ремонт ЕОМ. Час профілактики: щомісячно - 5 годин; щорічно - 6 діб.

ТгПК = n(p) - (6 * 8 + 5 * 12),

ТгПК = 2008 - (6 * 8 + 5 * 12) = 1900 [години]

Річні поточні витрати на експлуатацію визначаються за формулою:

ЗгПК = ЗгАМ + ЗгЭЛ + ЗгРЕМ + ЗгМАТ + ЗгДР

Де ЗгАМ - річні відрахування на амортизацію,

ЗгЭЛ - річні витрати на електроенергію для ПК,

ЗгРЕМ - річні витрати на ремонт ПК,

ЗгМАТ - річні витрати на додаткові комплектуючі ПК,

ЗгДР - інші витрати.

Амортизаційні відрахування

Основні фонди підлягають розподілу на групи. У нашому випадку, комп’ютер, група 4 (ЕОМ, інші машини призначені для автоматичної обробки інформації, а також пов’язані з ними засоби зчитування або друку інформації та інші). Амортизація основних фондів групи 4 відбувається до досягнення балансової вартості групи нульового значення. Для основних фондів групи 4 - амортизація відбувається з кварталу, наступного за кварталом придбання матеріальних цінностей.

Заключний етап в нарахуванні податкової амортизації - це щоквартальний розрахунок суми амортизації. Норми амортизації встановлені у відсотках до балансової вартості 4 групи основних фондів і складають 60% на рік, так як нарахування амортизації відбувається щоквартально, то норма амортизаційних відрахувань у квартал складає (60% / 4 ) = 15%.

Згідно податкового методу нарахування амортизації, загальна сума річних амортизаційних відрахувань визначається за формулою :

ЗгАМ = ЦПК * НА

Де ЦПК - балансова вартість ПК,

НА - норма амортизаційних відрахувань, що дорівнює 15% (у квартал).

Балансова вартість ПК :

Цпк = Цр * ( 1+ Кун )

Де Цр - ринкова вартість ПК,

Кун - коефіцієнт, що враховує витрати на установку й налагодження, рівний 12%.

Ринковою вартістю ПК, будемо вважати ту вартість до якої входить повна комплектація ПК, вона становитиме 5000 грн.

Цпк = 5000 * ( 1 + 0.12 ) = 5600 [гривень],

кв. = 5600 * 0,15 = 840 [гривень],

кв. = (5600 - 840) * 0.15 = 714 [гривень],

кв. = (5600 - 840 - 714) * 0.15 = 606,90 [гривень],

кв. = (5600 - 840 - 714 - 606,90) * 0,15 = 515,87 [гривень],

ЗгАМ = 840 + 714 + 606,90 + 515,87 = 2676,77 [гривень]

Витрати на електроенергію, споживану ПК

Витрати на електроенергію, затрачену ПК, визначаються за формулою:

ЗгЭЛ = РчПК * ТгПК * ЦЭЛ * А

Де PчПК - потужність ПК ( PчПК = 0.3 [кВт.]),

ТгПК - річний фонд корисного часу роботи машини,

ЦЭЛ - вартість 1 квт/годину електроенергії (ЦЭЛ = 0,24 [грн.]),

А - коефіцієнт інтенсивного використання ПК ( 0.9 - 1 ).

Таким чином, кількість витрат на електроенергію, споживану ПК, складає:

ЗгЭЛ = 0.3 * 1900 * 0,24 * 1.0 = 136,80 [гривень]

Витрати на поточний і профілактичний ремонт

Витрати на поточний і профілактичний ремонт приймаються рівними 6% від вартості ПК:

ЗгРЕМ = ЦПК * 0.06,

ЗгРЕМ = 5600* 0.06 = 336 [гривень]

Витрати на матеріали

Витрати на матеріали - витрати, необхідні для забезпечення експлуатації ПК, приймаються рівними 2% від вартості ПК.

ЗгМАТ = ЦПК * 2%,

ЗгМАТ = 5600 * 0.02 = 112 [гривень]

Непрямі витрати.

Непрямі витрати, пов'язані з експлуатацією ПК, приймаються рівними 5 - 10% вартості ПК.

ЗгДР = ЦПК * 5%,

ЗгДР = 5600 * 0.05 = 280 [гривень]

Повні витрати на експлуатацію ПК

Повні витрати на експлуатацію ПК протягом року складають:

ЗгПК= 2676,77 + 136,80 + 336 + 112 + 280 = 3541,57 [гривень]

Собівартість однієї години роботи машини ( CПК ) складає:

СПК = 3541,57 / 1900 =1,86 [гривень]

Витрати машинного часу.

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

·  написання програми за готовою схемою алгоритму;

·        налагодження програми на ПК;

·        підготовки документації по задачі.

Таким чином, витрати машинного часу склали (tмаш):маш = tпрог.+ tотл. + tдок,маш = 75 + 3 + 25 = 103 [чол./часів]

Витрати на оплату машинного часу можна розрахувати за формулою:

Змаш = tмаш * СПК,

Змаш = 103* 1,86 = 191,58 [гривень]

Загальні витрати на створення програмного комплексу

Зразом = З розр. + З маш,

Зразом = 2882,70 + 191,58 = 3074,28 [гривень]

 

5.3 Визначення планованої економії від упровадження програмного продукту


При визначенні планованої окупності приймемо, що витрати на даний програмний комплекс понесла установа, без мети наступного комерційного поширення продукту.

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

Зменшення часу досягається за рахунок зручного розподілу збереження оброблюваних даних. Усі дані зберігаються в окремому каталозі й при необхідності легко доступні для повторної обробки й аналізу.

Таблиця 5.2

З/П до автоматизації

Кількість чоловік

Місячна З/П, грн.

Премія 40% та рай. Коєф. 15%, грн.

Всього З/П за рік, грн.

Працівник 1

1

1000

610

(1000*12+610*12) = 19320

Працівник 2

1

1000

610

(1000*12+610*12) = 19320

Відрахування на ФОП

2

19320 + 19320 = 38640

37,16%

14358,624

ВСЬОГО:




52998,62


Річний фонд заробітної плати двох штатних одиниць

У результаті впровадження даного програмного комплексу економія трудових ресурсів складає 1 штатну одиницю з річним фондом заробітної плати 26499,31грн. Річна економія складає:

Е = Зразом_прац - Зразом - ЗгПК

Де Зразом_прац - річний фонд заробітної плати 1-го працівника,

Зразом - загальні витрати на створення програмного комплексу,

ЗгПК - повні витрати на експлуатацію ПК протягом року.

Е = 26499,31 - 3074,28 -3541,57 = 19883,46 [гривень]

6. ОХОРОНА ПРАЦІ


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

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

Законодавство України про охорону праці базується на:

Конституція України, яка гарантує права громадян на працю, відпочинок, охорону здоров’я, медичну допомогу і страхування;

Закон України „Про охорону праці”, де вказано, що державна політика в області охорони праці базується на пріоритеті життя і здоров’я людей в умовах їх трудової діяльності. Відповідальність за створення нормальних і безпечних умов труда несе роботодавець незалежно від форми власності підприємства чи установи які здійснюють розробку виробництва та застосування ПЕОМ і ПК;

Норми штучного та природного освітлення визначені СНиП;

Закон України „Про забезпечення санітарного та епідемічного благополуччя населення” де вказані основні вимоги гігієни та санітарії;

Параметри мікроклімату на робочих місцях регламентовані Держстандартом і ДСН;

Категорія робіт по величині загальних енергозатрат встановлена ДСН;

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

Кодекс законів про працю (КЗпП) де викладені окремі вимоги охорони праці;

Пожежна безпека викладена в законі України „Про пожежну безпеку” і „Правила про пожежну безпеку в Україні”

Крім того є ряд Державних стандартів, правил, норм, інструкцій та інших нормативних документів, регламентуючих питання охорони праці.

6.1 Аналіз небезпечних і шкідливих факторів


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

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

Нанесення травми людині в умовах виробництва обумовлене наявністю небезпечних виробничих чинників:

підвищенні значення електричного струму, статичної електрики та рівня електромагнітних випромінювань;

підвищений рівень рентгенівських випромінювань;

підвищений рівень шуму;

несприятливі мікрокліматичні умови;

недостатнє або надмірне освітлення;

психофізіологічні шкідливі і небезпечні виробничі чинники.

6.1.1 Аналіз шкідливих і небезпечних факторів

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

-й - речовини надзвичайно шкідливі;

-й - речовини високо шкідливі;

-й - речовини помірно шкідливі;

-й - речовини мало шкідливі.

Гранично припустима концентрація (ГПК) шкідливих речовин у повітрі робочої зони - обов'язкові санітарні нормативи для використання при проектуванні виробничих будинків, технологічних процесів, устаткування й вентиляції а також для попереджувального й поточного санітарного нагляду.

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

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

На організм людини і обладнання ПЕОМ великий вплив виявляє відносна вологість. При відносній вологості повітря більш 75-80% знижується опір ізоляції, змінюються робочі характеристики елементів, зростає інтенсивність відмов елементів ПЕОМ. Швидкість руху повітря і запиленість повітряного середовища виявляють вплив на функціональну діяльність людини і роботу приладів ПЕОМ.

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

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

6.1.2 Психофізіологічні шкідливі і небезпечні виробничі чинники

Психофізіологічні шкідливі і небезпечні виробничі чинники по характеру дії поділяються на фізичні і нервово-психічні перевантаження.

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

6.1.3 Характеристика приміщення

Відповідно діючим нормативним документам (СН 512-78 и ДСанПіН 3.3.007-98) площа приміщення 13,0 м²; об’єм - 20 м³. Стіна, стеля, підлога приміщення виготовляються з матеріалів, дозволених для оформлення приміщень санітарно-епідеміологічним наглядом. Підлога приміщення вкрита діелектричним килимком, випробуваним на електричну міцність.

Висота робочої поверхні столу для персонального комп’ютера (ПК) - 690 мм, ширина повинна забезпечувати можливість виконання операцій в зоні досягнення моторного ходу; висота столу 725 мм, ширина 800 мм, глибина 900 мм. Простір для ніг: висота 600 мм, ширина 500 мм, глибина на рівні колін 500 мм, на рівні витягнутої ноги 650мм.

Ширина й глибина сидіння 400 мм, висота поверхні сидіння 450 мм, кут нахилу поверхні від 15º вперед до 5º назад. Поверхня сидіння плоска, передній край закруглений.

Заземлення конструкцій, які знаходяться в приміщенні надійно захищені діелектричними щитками. В приміщенні з ПЕОМ кожен день проводиться вологе прибирання.

В доступних місцях знаходяться аптечки першої медичної допомоги.

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

6.1.4 Аналіз метеорологічних умов праці, системи вентиляції

Для забезпечення безпеки життєдіяльності працівників у приміщенні варто підтримувати необхідну якість повітря, тобто оптимальні (у крайньому випадку припустимі) параметри мікроклімату, сталість газового складу й відсутність (у крайньому випадку не вище ГПК) шкідливих домішок у повітрі. Для цього необхідно подавати в ці приміщення певну кількість чистого зовнішнього повітря, потреба в якому регламентується СНиП 2.04.05-91. Для підтримки певних параметрів мікроклімату використовується опалення, вентиляція, кондиціювання, що є найважливішою частиною інженерного спорудження.

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

Системи опалення - це комплекс елементів, необхідних для опалення приміщень в холодний період року, нормованої температури повітря не нижче встановленої Держстандарт 12.1. 005-88 і СНиП 2.04. 05-91. У приміщеннях з електронно-обчислювальною технікою передбачають центральне опалення в сполученні із приточною вентиляцією або кондиціювання повітря при одне- і двозмінному режимах роботи, а при трьохзмінному - тільки повітряне опалення.

Кондиціювання - це автоматична підтримка в закритих приміщеннях всіх або окремих параметрів повітря з метою забезпечення оптимальних мікрокліматичних умов.

Згідно СНиП 2.04. 05-91 система вентиляції, кондиціювання повітря й повітряного опалення передбачена для суспільних, адміністративно побутових і виробничих категорій.

6.1.5 Рівень шуму та електромагнітних випромінювань

При роботі на ПЕОМ людина наражається на шумовий вплив з боку багатьох джерел, наприклад, шум викликаний роботою принтера (70 дБ), вентиляторів і кондиціонерів (до 100 дБ).

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

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

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

Джерелами випромінювання електромагнітних полів (ЕМП) в ПЕОМ є система відхилення випромінювання монітору, а також елементи блоків живлення системного модуля, монітору, принтера.

Систематичний вплив на працюючого ЕМП з рівнями, що перевищують допустимі, призводить до порушення стану його здоров’я. При цьому можуть виникати зміни в нервовій, серцево-судинній та інших системах організму людини. При впливі ЕМП значної інтенсивності на організм можуть виникати поразки кришталиків ока, нервово-психічні захворювання і трофічні явища (випадення волосся, ломкість нігтів). Ступінь шкідливого впливу ЕМП на організм людини визначається напругою електромагнітного поля, довжиною хвилі і тривалістю перебування організму в зоні діяльності ЕМП.

6.1.6 Рентгенівське випромінювання

Електронно-променеві трубки, які працюють при напрузі понад 6 кВ є джерелами „м’якого” рентгенівського випромінювання. При напрузі понад 10 кВ рентгенівське випромінювання виходить за межі скляного балону і розсіюється в навколишньому просторі виробничого приміщення.

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

6.1.7 Освітлення

Значення освітлення в процесі життєдіяльності і особливо виробничої діяльності сучасного суспільства величезне. Організація раціонального освітлення робочих місць - одне з основних питань охорони праці. Залежно від джерела світла виробниче освітлення може бути трьох видів: природне, штучне і суміщене.

Для природного освітлення характерна висока дифузна (неуважність) денного світла від небозводу, що вельми сприятливе для зорових умов роботи. Природне освітлення підрозділяють на бічне, здійснюване через світлові віконні отвори; верхнє, здійснюване через аераційні і зенітні ліхтарі, отвори в перекриттях; комбіноване - бічне з верхнім. Природне освітлення характеризується тим, що створювана освітленість змінюється в надзвичайно широких межах залежно від часу дня, року, метеорологічних чинників. Тому природне освітлення неможливе кількісно задавати величиною освітленості. Як нормована величина для природного освітлення прийнята відносна величина - коефіцієнт природної освітленості (КЕО), який є вираженим у відсотках відношенням освітленості в даній крапці усередині приміщення до одночасного значення зовнішньої горизонтальної освітленості, створюваної світлом повністю відкритого небозводу, тобто


Штучне освітлення передбачається у всіх виробничих і побутових приміщеннях, де не досить природного світла, а також для освітлення приміщень в нічний час. По функціональному призначенню штучне освітлення підрозділяють на робоче, аварійне, евакуаційне, охоронне, чергове. Робоче освітлення забезпечує зорові умови нормальний роботи, проходу людей і руху транспорту. Аварійне освітлення влаштовують для продовження роботи при раптовому відключенні робочого освітлення. При цьому нормована освітленість повинна складати 5 % від робочого освітлення. Евакуаційне освітлення передбачається для евакуації людей з приміщень при аваріях в місцях, небезпечних для проходу людей, на сходових клітках (повинно бути в приміщеннях не менше 0,5, а на відкритих територіях - не менше 0,2 лк).

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

Штучне освітлення може бути загальним (рівномірним або локалізованим) і комбінованим (до загального додається місцеве). Застосування тільки місцевого освітлення забороняється.

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

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

6.1.8 Промислова естетика приміщень

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

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

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

У виробничому інтер'єрі колір також відіграє попереджуючу роль, використовується для зображення технологічних символів і всіляких сигналів. Наприклад, при будівництві промислових об'єктів трубопроводи різного призначення (для води, кислоти, газу) пофарбовані в різний колір. Усім відомі сигнально-попереджуючі кольори: червоний - стоп, небезпечно; жовтий - можлива небезпека; зелений - повна безпека. З економічної точки зору раціональне фарбування робочих приміщень і встаткування підвищує продуктивність праці на 5-20%, зменшує число нещасних випадків.

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

Основні принципи ергономічної організації робочого місця - комфорт і мінімізація навантажень. Зрозуміло, принципам ергономіки повинна відповідати й використовувані меблі. Наприклад, зручне крісло, у якому можна без шкоди для здоров'я працювати тривалий час, повинне бути оснащений підлокітниками й підголівником, що знімають навантаження з м'язів плечового поясу. Пружна спинка анатомічної форми зменшує навантаження на хребет. У результаті конструкція рівномірно підтримує все тіло. Також крісло повинне регулюватися по висоті й глибині сидіння, залежно від ваги й росту людини.

Серед столів найбільш ергономічною визнана криволінійна кутова форма. За рахунок увігнутості більша частина їхньої площі виявляється використовуваної, оскільки попадає в зону охоплення руками людини, рівну 35-40 см.

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

6.2 Заходи щодо нормалізації шкідливих і небезпечних факторів

 

.2.1 Захист від електромагнітних випромінювань

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

Для зниження електромагнітного впливу на людину-оператора використовуються також раціональні режими роботи, при яких норма роботи на ПЕОМ не повинна перевищувати 50 % робочого часу.

6.2.2 Захист від ураження електричним струмом

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

застосуванням малої напруги;

ізоляцією струмоведучих мереж;

обґрунтуванням і оптимальним вибором елементної бази, що виключає передумови поразки електричним струмом;

правильного компонування, монтажу приладів і елементів;

дотриманням умов безпеки при настанові і заміні приладів і інше.

Захист від небезпечних впливів електричного струму при експлуатації обчислювальних комплексів забезпечені:

застосування захисного заземлення або обнуління;

ізоляцією струмопровідних частин;

дотриманням умов безпеки при настанові і заміні агрегатів;

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

6.2.3 Захист від статичної електрики

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

На робочих місцях всі металеві та електропровідні неметалеві обладнання заземлені.

6.2.4 Захист від шуму та вібрації

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

Зниження виробничого шуму в приміщеннях, де розміщені ПЕОМ, досягається за рахунок акустичної обробки приміщення - зменшення енергії відбитих хвиль, збільшення еквівалентної площі звукопоглинаючих поверхонь, наявність в приміщеннях штучних звукопоглиначів.

З метою зниження шуму в самих джерелах встановлюються віброгасячі і шумогасячі прокладки або амортизатори. В якості засобів звукопоглинання застосовуються не горючі або тяжко горючі спеціальні перфоровані плити, панелі, мінеральна вата з максимальним коефіцієнтом поглинання в межах частот 31.5-8000 Гц.

 

6.2.5 Оздоровлення повітряного середовища

Для створення нормальних умов роботи програмістів і операторів ПЕОМ в машинному залі використовується система кондиціювання, що забезпечує необхідні оптимальні мікрокліматичні параметри і чистоту повітря.

В холодні періоди року температура повітря, швидкість його руху і відносна вологість повітря відповідно складають: 22-24 С°; 0,1 м/с; 40-60%; в теплі періоди року температура повітря - 23-25 Сº; відносна вологість 40-60 %; швидкість руху повітря - 0,1 м/с.

6.2.6 Захист від рентгенівського випромінювання

Електронно-променеві трубки, магнетрони, тиратрони та інші електровакуумні прилади, що працюють при напрузі вище 6 кВ, є джерелами „м’якого” рентгенівського випромінювання. При технічній експлуатації апаратури, в якій напруга вище 15 кВ, використовують засоби захисту для відвертання рентгенівського опромінення операторів і інженерно-технічних робітників, бо при такій напрузі рентгенівське випромінювання розсіюється в навколишньому просторі виробничого приміщення.

Шкідливий вплив рентгенівських променів зв’язаний з тим, що порушення міжмолекулярних зв’язків тканинної речовини може призвести до порушення нормальної течії біохімічних процесів і обміну речовин.

Засобами захисту від „м’якого” рентгенівського випромінювання є застосування поляризаційних екранів, а також використання в роботі моніторів, що мають біо-керамічне покриття і низький рівень радіації. В якості засобів захисту від чинності м’яких рентгенівських променів застосовуються екрани з сталевого листа (0,5-1 мм) або алюмінію (3 мм), спеціальної гуми.

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

6.2.7 Забезпечення раціонального освітлення

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

достатнє, щоб очі без напруги могли розрізняти деталі;

постійна напруга в мережі не коливається більше ніж на 4%;

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

не викликає дії, яка сліпить органи зору працюючого (зменшення блищання джерел, що відбивають світло, досягається застосуванням світильників, які розсіюють світло);

не викликає різких тіней на робочих місцях.

Задачею розрахунку є визначення необхідної потужності електричної освітлювальної установки для створення у виробничому приміщенні заданої освітленості. При проектуванні освітлювальної установки необхідно вирішити наступні основні питання:

вибрати тип джерела світла - рекомендуються газорозрядні лампи, за винятком місць, де температура повітря може бути менш +5°С і напруга в мережі падати нижче 90 % номінального, а також місцевого освітлення (у цих випадках застосовуються лампи розжарювання);

визначити систему освітлення (загальна локалізована або рівномірна, комбінована);

вибрати тип світильників з урахуванням характеристик світорозподілення, умов середовища (конструктивного виконання) та інше;

розподілити світильники і визначити їх кількість (світильники можуть матися в своєму розпорядженні рядами, в шаховому порядку, ромбоподібно);

визначити норму освітленості на робочому місці.

Для розрахунку штучного освітлення використовують в основному три методи. Найчастіше її розраховують по світловому потоку. Для цього визначається світловий потік кожної лампи по нормуючій мінімальній горизонтальній освітленості Еmin (лк) з вираження:

=(Emin·S·K·z) / n1·n·N

де F - світловий потік лампи в світильнику, лм;- площа приміщення, м2;- коефіцієнт запасу;- коефіцієнт нерівномірного освітлення;- коефіцієнт використання світлового потоку;- кількість ламп в світильнику;- число світильників.

= А·В/Нр·(А+В)

де А і В - довжина і ширина освітленого приміщення, м;

Нр - висота підвісу світильника над робітничою поверхнею, м.

У випадку застосування люмінесцентних ламп потрібна кількість світильників N, яка визначається за формулою:

=Emin·S·K·z/F·n1·n

Поділивши число світильників N на число вибраних рядів світильників, визначають число світильників у кожному ряду.

Нехай зал має розміри А=8м, В=5м, h=3м, стеля обладнується світильниками Л201Б з люмінесцентними лампами ЛБ80, технічні характеристики ламп і світильників наведені в таблицях 6.1, 6.2 (згідно Держстандарту 6825-74)

Таблиця 6.1 Технічні характеристики ламп

Тип

Потужність, Вт

Напруга, В

Світловий потік (номін.)

Довжина, мм

Діаметр, мм

ЛБ80

80

110

5220

1500

40

Таблиця 6.2 Технічні характеристики світильників

Серія

Модифікація

Кількість* потужність, шт, Вт

Розміри, мм

Номер групи

Прим.




Довжина

Ширина

Висота



Л201Б

3

2·8

1575

354

127

9

Стеля


Рівень робітничої поверхні над полом 0,8 м, при цьому Нр=2,2 м.

Показник приміщення рівний:=40/2,2 (8+5)=1,3986

По довіднику визначаємо значення коефіцієнта n1 (для значень Рс=0,5, Рп=0,3): n1=0,7. Значення коефіцієнта нерівномірного освітлення приймаємо рівним 1,1, а коефіцієнта запасу - 1,5. При загальному типі освітлення значення Emin=400 лк. Знаючи значення світлового потоку кожної лампи, можемо визначити необхідну кількість світильників:=400·8·5·1,5·1,1/5220·0,7·2=3(штук)

Загальна потужність освітлювальної установки рівна:

Р=2·80·3=480(Вт)

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

 

6.3 Пожежна безпека


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

По класифікації приміщень з ПЕОМ по пожежній небезпеці відносяться до категорії В (СНиП 2.09.02-85), що характеризуються наявністю твердих горючих і важко горючих речовин і матеріалів, а також легкозаймистих матеріалів.

В зв’язку з цим можна виділити ряд заходів для пожежної безпеки:

не палити і не використовувати нагрівальні прилади в приміщеннях з ПЕОМ;

не від’єднувати і не приєднувати кабелі, усувати несправності за наявності напруги в мережі;

не визначати наявність напруги в ланцюзі, замиканням клем.

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

Для виявлення пожеж в приміщенні встановлені датчики, що спрацьовують при появі диму, підвищенні температури і відкритого вогню.

Технологічні об’ємні підлоги виконуються з негорючих або тяжко горючих матеріалів з межею вогнестійкості не менше 0,5 г. Підпільні простори під об’ємними підлогами відділяють негорючими перегородками з межею вогнестійкості не менше 0,75 г на ділянки площею не більш 250 м2.

Для гасіння можливих пожеж передбачена наявність первинних засобів пожежогасіння, згідно «Правил пожежної безпеки в Україні» так і пожежні крани із брезентовими рукавами, пожежні щити (1 щит на 5000м2).

В кожній кімнаті знаходяться вогнегасники. Вогнегасники діляться на хімічні, пінні, повітряно-пінні, СО2 - вогнегасники і порошкові.

Вогнегасники допускаються до експлуатації якщо їхні технічні характеристики відповідають нормативним значенням, встановленим експлуатаційно-технічною документацією. Зменшення змісту вогнегасячої речовини і тиску у вогнегасниках не повинне перевищувати 10 % від встановленого номінального значення.

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

Первинні засоби пожежогасіння: ручні вогнегасники в кількості 2 шт.

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

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

ЕПС складаються з таких основних частин: сповіщувачів, встановлених в приміщеннях; приймальної станції, яка знаходиться в черговій кімнаті пожежної команди; блока поживи від сіті та від акумулятора (резервний); системи переключення з одної поживи на іншу; електропровідній сіті, яка з’єднує сповіщувачі з приймальною станцією.

В кімнаті з ПЕОМ розміщений сповіщувач (датчик) тепловий легкоплавкий. При збільшенні температури легкоплавкий сплав розплавляється і пружинячі пластинки, розмикаючись, вмикають ланцюг сигналізації.

ВИСНОВКИ

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

Одним з головних завдань Delphi є розробка додатків для роботи з базами даних. У цій області Delphi займає самі передові позиції, працюючи з будь-якими системами управління базами даних. В цілому Delphi - прекрасний інструмент, як для програмістів-початківців, так і для асів програмування.

Метою даної дипломної роботи є розробка гнучкої комп'ютеризованої системи для автоматизації розрахунку учбового навантаження. Система дозволяє повністю автоматизувати процес формування семестрових планів, карток учбового навантаження та інших документів звітності.- це середовище, в якому більшість завдань можна вирішувати без якого-небудь програмування. Але вся цінність застосувань Office для розробника полягає в тому, що все, що можна зробити руками, можна зробити програмним шляхом з використанням засобів VBA (Visual Basic for Application). Крім того, додатки Office поставляють сервера COM, які надають інтерфейс доступу до додатку і його об'єктів. Завдяки цьому, розробник в середовищі Delphi має можливість, створивши контроллер автоматизації, управляти сервером. Використання контроллерів автоматизації COM серверів значно спростило процес розробки інтерфейсу користувача і виведення інформації проектованої системи. Використовуючи могутню мову Delphi 6 і відкритий інтерфейс серверів MS Office можна будувати дуже великі і серйозні додатки, що працюють спільно.

СПИСОК ЛІТЕРАТУРИ

1.     Бобровский С. Delphi 5 - CПб.: Питер, 2000

2.       Гаевский А. Разработка программных приложений на Delphi 6 - М.: Киев, 2000.

.        Галисеев, Г.В. Программирование в среде Delphi 8 for .NET. Самоучитель. :- М.: Издательский дом "Вильяме", 2004.

.        Глинский Я.Н., Анохин В.Е., Ряжская В.А. Turbo Pascal 7.0 и Delphi. Учебное пособие. СПб.: ДиаСофтЮП, 2003. - 208 с.

.        Гофман В., Хомоненко А. Delphi 6. CПб.: БХВ-Петербург, 2004.

.        Грибачев К. Г. Delphi и Model Driven Architecture. Разработка приложений баз данных. - СПб.. Питер, 2004.

.        Грибачев К. Тонкие базы данных и инструменты для их разработки в Delphi и C++Builder. - КомпьютерПресс, 2003, № 7, 8.

.        Дарахвелидзе П. Г., Марков Е. П. Delphi - среда визуального программирования. СПб.: BHV- Санкт-Петербург, 1999.-352с.

.        Елманова Н., Трепалин С., Тенцер А. Delphi 6 и технология COM. - CПб.: Питер, 2002. - 640 с.

.        Калверт Ч. Delphi 5. Энциклопедия пользователя. СПб.: ДиаСофтЮП, 2003.

.        Климова Л. М. "Delphi 7. Самоучитель. М.: ИД КУДИЦ-ОБРАЗ, 2005. - 480с.

.        Корняков В.Н. Программирование документов и приложений MS Office в Delphi. - CПб.: БХВ-Петербург, 2005. - 496 с.

.        Коцюбинский А.О., Грошев С.В. Язык программирования Delphi 5 - М.: "Издательство Триумф", 1999

.        Леонтьев В. Delphi 5 - М.: Москва "Олма-Пресс", 1999

.        Мадрел Тео. Разработка пользовательского интерфейса/ Пер. с англ.- М.:ДМК,2001.

16.   Матросов А. В. и др. MS Office ХР: разработка приложений / Матро-

сов А. В., Новиков Ф. А., Усаров Г. Е., Харитонова И. А. / Под ред. Ф. А. Новикова. - СПб.: БХВ-Петербург, 2003.

17.   Немнюгин С.А. Программирование - CПб.: Питер, 2000.

18.     Озеров В. Delphi. Советы программистов (2-е издание). - СПб.: Символ- Плюс, 2002.

.        Пономарев В. Самоучитель Delphi 7. CПб.: БХВ-Петербург, 2005.

.        Ревнич Ю. В. Нестандартные приемы программирования на Delphi. - СПб.: БХВ-Петербург, 2005.

.        Ремизов Н. Delphi - CПб.: Питер, 2000

.        Симонович С.В., Евсеев Г.А. Занимательное программирование: Delphi. М.: АСТ-ПРЕСС Кнрга, 2001. - 368 с.

.        Фараонов В. Система программирования Delphi. CПб.: БХВ-Петербург, 2005.

.        Ханекамп Д.. Вилькен П. Программирование под Windows/ Пер. с нем. -М.: ЭКОМ, 1996.

.        Хомоненко А.Д Delphi 7. CПб.: БХВ-Петербург, 2005.-1216с. :ил.

Додаток

Лістинг програми

unit data_module;

interface, Classes, DB, ADODB,Variants;

= class(TDataModule): TADOConnection;: TADOTable;kod_pr: TAutoIncField;prizv: TWideStringField;name: TWideStringField;f_name: TWideStringField;n_st: TWideStringField;sht: TBooleanField;: TADOTable;date_r: TDateTimeField;date_post: TDateTimeField;: TADOTable;prizv: TWideStringField;name: TWideStringField;f_name: TWideStringField;tema_dis: TWideStringField;zv_kaf: TWideStringField;baz_vus: TWideStringField;kvalif: TWideStringField;spec: TWideStringField;god_dip: TWideStringField;god_zah: TWideStringField;god_zv: TWideStringField;kod_pr: TAutoIncField;kod_pos: TIntegerField;: TADOTable;kod_pos: TAutoIncField;posada: TWideStringField;stavka: TIntegerField;pos: TStringField;: TADOTable;kod_semestr: TAutoIncField;kod_dis: TIntegerField;semestr: TIntegerField;kod_sp: TIntegerField;lek: TIntegerField;lab: TIntegerField;prakt: TIntegerField;naz_dis: TStringField;: TADOTable;kod_sp: TAutoIncField;nazva: TWideStringField;shifr: TWideStringField;spec: TStringField;f_kontr: TWideStringField;k_r: TBooleanField;k_p: TBooleanField;: TADOTable;kod_potoka: TAutoIncField;kod_sp: TIntegerField;kurs: TIntegerField;kol_st: TIntegerField;spec: TStringField;ch_kons: TFloatField;f_nav: TBooleanField;_1_d: TADOTable;_2_d: TADOTable;_1_z: TADOTable;_1_dsemestr: TIntegerField;_1_df_nav: TBooleanField;_1_dn_disc: TWideStringField;_1_dshifr: TWideStringField;_1_dlek: TIntegerField;_1_dlab: TIntegerField;_1_dprakt: TIntegerField;_1_dk_r: TBooleanField;_1_dk_p: TBooleanField;_1_df_kontr: TWideStringField;_1_dkod_sp: TIntegerField;_1_dkod_dis: TIntegerField;_2_dsemestr: TIntegerField;_2_df_nav: TBooleanField;_2_dn_disc: TWideStringField;_2_dshifr: TWideStringField;_2_dlek: TIntegerField;_2_dlab: TIntegerField;_2_dprakt: TIntegerField;_2_dk_r: TBooleanField;_2_dk_p: TBooleanField;_2_df_kontr: TWideStringField;_2_dkod_sp: TIntegerField;_2_dkod_dis: TIntegerField;_1_zsemestr: TIntegerField;_1_zf_nav: TBooleanField;_1_zn_disc: TWideStringField;_1_zshifr: TWideStringField;_1_zlek: TIntegerField;_1_zlab: TIntegerField;_1_zprakt: TIntegerField;_1_zk_r: TBooleanField;_1_zk_p: TBooleanField;_1_zf_kontr: TWideStringField;_1_zkod_sp: TIntegerField;_1_zkod_dis: TIntegerField;_2_z: TADOTable;_2_zsemestr: TIntegerField;_2_zf_nav: TBooleanField;_2_zn_disc: TWideStringField;_2_zshifr: TWideStringField;_2_zlek: TIntegerField;_2_zlab: TIntegerField;_2_zprakt: TIntegerField;_2_zk_r: TBooleanField;_2_zk_p: TBooleanField;_2_zf_kontr: TWideStringField;_2_zkod_sp: TIntegerField;_2_zkod_dis: TIntegerField;kod_d: TAutoIncField;n_disc: TWideStringField;posada: TWideStringField;stavka: TIntegerField;_1_dkod_semestr: TAutoIncField;_2_dkod_semestr: TAutoIncField;_1_zkod_semestr: TAutoIncField;_2_zkod_semestr: TAutoIncField;: TADOTable;kod_zap: TAutoIncField;kod_pr: TIntegerField;kod_semestr: TIntegerField;lek: TIntegerField;lab: TIntegerField;prakt: TIntegerField;kons: TIntegerField;eks_kons: TIntegerField;eks: TIntegerField;zalik: TIntegerField;uch_pr: TIntegerField;k_r_p: TIntegerField;dek: TIntegerField;insh: TIntegerField;n_dis: TStringField;_1_dlek_ost: TIntegerField;_1_dlr_ost: TIntegerField;_1_dpr_ost: TIntegerField;lek_ost: TIntegerField;lr_ost: TIntegerField;pr_ost: TIntegerField;kr_ost: TIntegerField;kons_ost: TIntegerField;_2_dlek_ost: TIntegerField;_2_dlr_ost: TIntegerField;_2_dpr_ost: TIntegerField;_1_zlek_ost: TIntegerField;_1_zlr_ost: TIntegerField;_1_zpr_ost: TIntegerField;_2_zlek_ost: TIntegerField;_2_zlr_ost: TIntegerField;_2_zpr_ost: TIntegerField;f_nav: TWideStringField;kons: TIntegerField;_1_dkons: TIntegerField;_2_dkons: TIntegerField;_1_zkons: TIntegerField;_2_zkons: TIntegerField;praktika: TIntegerField;dek: TIntegerField;inshe: TIntegerField;eks_kons: TIntegerField;eks: TIntegerField;zalik: TIntegerField;_1_dpraktika: TIntegerField;_1_ddek: TIntegerField;_1_dinshe: TIntegerField;_1_deks_kons: TIntegerField;_1_deks: TIntegerField;_1_dzalik: TIntegerField;_2_dpraktika: TIntegerField;_2_ddek: TIntegerField;_2_dinshe: TIntegerField;_2_deks_kons: TIntegerField;_2_deks: TIntegerField;_2_dzalik: TIntegerField;_1_zpraktika: TIntegerField;_1_zdek: TIntegerField;_1_zinshe: TIntegerField;_1_zeks_kons: TIntegerField;_1_zeks: TIntegerField;_1_zzalik: TIntegerField;_2_zpraktika: TIntegerField;_2_zdek: TIntegerField;_2_zinshe: TIntegerField;_2_zeks_kons: TIntegerField;_2_zeks: TIntegerField;_2_zzalik: TIntegerField;kurs: TIntegerField;_1_dkurs: TIntegerField;_2_dkurs: TIntegerField;_1_zkurs: TIntegerField;_2_zkurs: TIntegerField;nauk_zv: TWideStringField;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;: TADOTable;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;kol_st: TIntegerField;f_nav: TWideStringField;kurs: TIntegerField;sht: TBooleanField;ADOTable5CalcFields(DataSet: TDataSet);ADOTable8BeforePost(DataSet: TDataSet);ADOTable5BeforePost(DataSet: TDataSet);sem_1_dCalcFields(DataSet: TDataSet);ADOTable2AfterPost(DataSet: TDataSet);ADOTable2AfterDelete(DataSet: TDataSet);

{ Private declarations }

{ Public declarations };

: TDataModule7;

U_sem_plan, Unit4;

{$R *.dfm}

TDataModule7.ADOTable5CalcFields(DataSet: TDataSet);koef:real;

{ adotable7.Active:=true;ADOTable5f_nav.AsBoolean then.Locate('kurs;f_nav', vararrayof([(ADOTable5semestr.AsInteger+1) div 2,'д']),[]);:=ADOTable7kol_st.AsInteger/30;ch_kons.AsFloat:=koef* (ADOTable5lek.AsInteger+ADOTable5lab.AsInteger+ADOTable5prakt.AsInteger)/100*6;};

TDataModule7.ADOTable8BeforePost(DataSet: TDataSet);kod_pr.AsInteger:=ADOTable3kod_pr.AsInteger;

;

TDataModule7.ADOTable5BeforePost(DataSet: TDataSet);kurs:integer;sem_plan.TabControl1.TabIndex=0 thenf_nav.AsBoolean:=trueADOTable5f_nav.AsBoolean:=false;

ADOTable5semestr.AsInteger of

,2:kurs:=1;

,4:kurs:=2;

,6:kurs:=3;

,8:kurs:=4;

:kurs:=5;;ADOTable5f_nav.AsBoolean then.Locate('kod_sp;kurs;f_nav',VarArrayOf([ADOTable5kod_sp.AsInteger,kurs,'д']),[]);kons.AsFloat:=ADOTable7kol_st.AsInteger/30*(ADOTable5lek.AsInteger+ADOTable5lab.AsInteger+ADOTable5prakt.AsInteger)/100*6;eks_kons.AsFloat:=ADOTable7kol_st.AsInteger/30*2;ADOTable5f_kontr.AsString='е' theneks.AsFloat:=0.33* ADOTable7kol_st.AsIntegerzalik.AsFloat:= ADOTable7kol_st.AsInteger/30*2;ADOTable5k_r.AsBoolean thenkurs.AsFloat:=ADOTable7kol_st.AsInteger*3-2*ADOTable7kol_st.AsInteger*0.33;ADOTable5k_p.AsBoolean thenkurs.AsFloat:=ADOTable7kol_st.AsInteger*4-2*ADOTable7kol_st.AsInteger*0.33.Locate('kod_sp;kurs;f_nav',VarArrayOf([ADOTable5kod_sp.AsInteger,kurs,'з']),[]);kons.AsFloat:=ADOTable7kol_st.AsInteger/30*(ADOTable5lek.AsInteger+ADOTable5lab.AsInteger+ADOTable5prakt.AsInteger)/100*12;eks_kons.AsFloat:=ADOTable7kol_st.AsInteger/30*2;ADOTable5f_kontr.AsString='е' theneks.AsFloat:=0.33* ADOTable7kol_st.AsIntegerzalik.AsFloat:= ADOTable7kol_st.AsInteger/30*2;ADOTable5k_r.AsBoolean thenkurs.AsFloat:=ADOTable7kol_st.AsInteger*3-2*ADOTable7kol_st.AsInteger*0.33;ADOTable5k_p.AsBoolean thenkurs.AsFloat:=ADOTable7kol_st.AsInteger*4-2*ADOTable7kol_st.AsInteger*0.33;

;

;

TDataModule7.sem_1_dCalcFields(DataSet: TDataSet);x,kurs:integer;

;

TDataModule7.ADOTable2AfterPost(DataSet: TDataSet);_dis.Label1.Caption:='Загальна кількість '+inttostr(DataModule7.ADOTable2.recordcount);;

TDataModule7.ADOTable2AfterDelete(DataSet: TDataSet);_dis.Label1.Caption:='Загальна кількість '+inttostr(DataModule7.ADOTable2.recordcount);;

.

U_inf_vikl;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,,data_module, DB, StdCtrls, Mask, DBCtrls, ComCtrls, ExtCtrls,;

_vikl = class(TForm): TDataSource;: TGroupBox;: TPanel;: TGroupBox;: TDBEdit;: TDBEdit;: TDBEdit;: TDateTimePicker;: TDateTimePicker;: TDBEdit;: TLabel;: TLabel;: TDBEdit;: TBitBtn;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TGroupBox;: TLabel;: TDBComboBox;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TDBCheckBox;: TDBLookupComboBox;: TDataSource;: TLabel;: TDBComboBox;BitBtn1Click(Sender: TObject);FormShow(Sender: TObject);

{ Private declarations }

{ Public declarations };

_vikl: Tinf_vikl;

Unit2;

{$R *.dfm}

Tinf_vikl.BitBtn1Click(Sender: TObject);.ADOTable1date_r.AsDateTime:=DateTimePicker1.Date;.ADOTable1date_post.AsDateTime:=DateTimePicker2.Date;.ADOTable1.Post;.ADOTable3.Close;.ADOTable3.Open;

;

;

Tinf_vikl.FormShow(Sender: TObject);.SetFocus;.Date:=DataModule7.ADOTable1date_r.AsDateTime;.Date:=DataModule7.ADOTable1date_post.AsDateTime;;.

U_kartka;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, Grids, DBGrids,data_module, DB, ExtCtrls, StdCtrls,, DBCtrls;

= class(TForm): TTabControl;: TDBGrid;: TDataSource;: TPanel;: TDBGrid;: TPanel;: TBitBtn;: TPanel;: TPanel;: TEdit;: TEdit;: TStaticText;: TStaticText;: TStaticText;: TDBNavigator;: TLabel;DBGrid1EditButtonClick(Sender: TObject);

{ Private declarations }

{ Public declarations };

: Tkartka;

U_sem_plan;

{$R *.dfm}

DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);DrawFlags: Integer;

;

Tkartka.DBGrid1EditButtonClick(Sender: TObject);_plan.DBGrid1.Columns[3].FieldName:='lek_ost';_plan.DBGrid1.Columns[4].FieldName:='lab_ost';_plan.DBGrid1.Columns[5].FieldName:='prakt_ost';_plan.DBGrid1.Columns[6].FieldName:='kons_ost'; fl:=false;.sem_1_d.Close;.sem_1_d.Open;.sem_2_d.Close;.sem_2_d.Open;.sem_1_z.Close;.sem_1_z.Open;.sem_2_z.Close;.sem_2_z.Open;

_plan.Panel2.Visible:=true;_plan.ShowModal;;

.

U_sem_plan;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, Grids, DBGrids, ExtCtrls, DBCtrls,data_module, DB,, Buttons,comobj;

_plan = class(TForm): TTabControl;: TTabControl;: TDBGrid;: TDataSource;: TPanel;: TBitBtn;: TStatusBar;: TBitBtn;: TBitBtn;: TPanel;: TBitBtn;: TBitBtn;BitBtn1Click(Sender: TObject);TabControl2Change(Sender: TObject);BitBtn2Click(Sender: TObject);DBGrid1DblClick(Sender: TObject);DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;: Integer; Column: TColumn; State: TGridDrawState);DBGrid1CellClick(Column: TColumn);BitBtn4Click(Sender: TObject);BitBtn3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };

_plan: Tsem_plan;,fl:boolean;_lek:integer;:variant;

U_vvod_sem;

{$R *.dfm}

Tsem_plan.BitBtn1Click(Sender: TObject);

// if DataModule7.adotable5lek_ost.AsInteger=0 then exit;.ADOTable8.Edit;(TabControl1.TabIndex=0) and (TabControl2.TabIndex=0)begin.ADOTable5.Locate('kod_semestr',DataModule7.sem_1_dkod_semestr.AsInteger,[])

(TabControl1.TabIndex=0) and (TabControl2.TabIndex=1)begin.ADOTable5.Locate('kod_semestr',DataModule7.sem_2_dkod_semestr.AsInteger,[])

(TabControl1.TabIndex=1) and (TabControl2.TabIndex=0).ADOTable5.Locate('kod_semestr',DataModule7.sem_1_zkod_semestr.AsInteger,[])

.ADOTable5.Locate('kod_semestr',DataModule7.sem_2_zkod_semestr.AsInteger,[])

;

.ADOTable8kod_semestr.AsInteger:= DataModule7.ADOTable5kod_semestr.AsInteger;.ADOTable8lek.AsInteger :=DataModule7.adotable5lek_ost.AsInteger;.adotable5.Edit;.adotable5lek_ost.AsInteger:=0; DataModule7.adotable5.Post;;;

Tsem_plan.TabControl2Change(Sender: TObject);(TabControl1.TabIndex=0) and (TabControl2.TabIndex=0)DataSource1.DataSet:=DataModule7.sem_1_d(TabControl1.TabIndex=0) and (TabControl2.TabIndex=1)DataSource1.DataSet:=DataModule7.sem_2_d(TabControl1.TabIndex=1) and (TabControl2.TabIndex=0)DataSource1.DataSet:=DataModule7.sem_1_z.DataSet:=DataModule7.sem_2_z;;

Tsem_plan.BitBtn2Click(Sender: TObject);.ADOTable5.Insert;_sem.Edit1.Text:=''; flag:=false;_sem.ShowModal;

;

Tsem_plan.DBGrid1DblClick(Sender: TObject);x:integer;:string;.ADOTable5.edit;(TabControl1.TabIndex=0) and (TabControl2.TabIndex=0)begin x:=DataModule7.sem_1_dkod_semestr.AsInteger;:= DataModule7.sem_1_dn_disc.AsString;(TabControl1.TabIndex=0) and (TabControl2.TabIndex=1)x:=DataModule7.sem_2_dkod_semestr.AsInteger;:= DataModule7.sem_2_dn_disc.AsString;end(TabControl1.TabIndex=1) and (TabControl2.TabIndex=0)begin x:=DataModule7.sem_1_zkod_semestr.AsInteger;:= DataModule7.sem_1_zn_disc.AsString;end:=DataModule7.sem_2_zkod_semestr.AsInteger ;:= DataModule7.sem_2_zn_disc.AsString;;.ADOTable5.Locate('kod_semestr',x,[]);_sem.Edit1.Text:=s;:=true;_sem.ShowModal;;

Tsem_plan.DBGrid1DrawColumnCell(Sender: TObject;Rect: TRect; DataCol: Integer; Column: TColumn;: TGridDrawState);:string;:trect;fl=true then exit;:=string(DataSource1.DataSet.FieldValues['lek_ost']);:=rect;(column.FieldName='lek_ost') and

(DataSource1.DataSet.FieldValues['lek_ost']=0)dbgrid1.Canvas do.Color:=clBlue;;(rect);(r.Left,r.Top,s);;;;

Tsem_plan.DBGrid1CellClick(Column: TColumn);.ADOTable8.Filter:='kod_semestr='+string(DataSource1.DataSet.FieldValues['kod_semestr']);.ADOTable8.Filtered:=true;.Panels[0].Text:='';not DataModule7.ADOTable8.Eof do.ADOTable1.Locate('kod_pr',DataModule7.ADOTable8kod_pr.AsInteger,[]);.Panels[0].Text:=StatusBar1.Panels[0].Text+DataModule7.ADOTable1prizv.AsString;.ADOTable8.Next;;.ADOTable8.Filtered:=false;

;

Tsem_plan.BitBtn4Click(Sender: TObject);.ADOTable5.Locate('kod_semestr',string(DataSource1.DataSet.FieldValues['kod_semestr']),[]);.ADOTable5.Delete;.sem_1_d.Close;.sem_1_d.Open;.sem_2_d.Close;.sem_2_d.Open;.sem_1_z.Close;.sem_1_z.Open;.sem_2_z.Close;.sem_2_z.Open;;FindAndInsert(FindText,replacementText:string):boolean;range:variant;:=e.cells.replace(what:=findtext,replacement:=replacementtext);;

Tsem_plan.BitBtn3Click(Sender: TObject);workbook,cell,range:variant;,kurs:integer;:=createoleobject('excel.application');:=e.workbooks.add(extractfiledir(application.ExeName)+'\Нагрузка.xlt');.sem_1_d.First; i:=0;not DataModule7.sem_1_d.Eof do:=workbook.worksheets[1].cells[i+5,1];:=workbook.worksheets[1].range[cell,cell];.value:= DataModule7.sem_1_d.RecNo;

:=workbook.worksheets[1].cells[i+5,2];:=workbook.worksheets[1].range[cell,cell];

.value:= DataModule7.sem_1_dn_disc.AsString;:=workbook.worksheets[1].cells[i+5,15];:=workbook.worksheets[1].range[cell,cell];datamodule7 do beginsem_1_dlek.AsInteger<>0 then.value:= DataModule7.sem_1_dlek.AsInteger;:=workbook.worksheets[1].cells[i+5,16];:=workbook.worksheets[1].range[cell,cell];sem_1_dkons.AsInteger<>0 then.value:= DataModule7.sem_1_dkons.AsInteger;

:=workbook.worksheets[1].cells[i+5,17];:=workbook.worksheets[1].range[cell,cell];sem_1_dlab.AsInteger<>0 then.value:= DataModule7.sem_1_dlab.AsInteger;

:=workbook.worksheets[1].cells[i+5,18];:=workbook.worksheets[1].range[cell,cell];sem_1_dprakt.AsInteger<>0 then.value:= DataModule7.sem_1_dprakt.AsInteger;

:=workbook.worksheets[1].cells[i+5,20];:=workbook.worksheets[1].range[cell,cell];sem_1_dkurs.AsInteger<>0 then.value:= DataModule7.sem_1_dkurs.AsInteger;

:=workbook.worksheets[1].cells[i+5,21];:=workbook.worksheets[1].range[cell,cell];sem_1_dzalik.AsInteger<>0 then.value:= DataModule7.sem_1_dzalik.AsInteger;

:=workbook.worksheets[1].cells[i+5,22];:=workbook.worksheets[1].range[cell,cell];sem_1_deks.AsInteger<>0 then.value:= DataModule7.sem_1_deks.AsInteger;

:=workbook.worksheets[1].cells[i+5,23];:=workbook.worksheets[1].range[cell,cell];sem_1_deks_kons.AsInteger<>0 then.value:= DataModule7.sem_1_deks_kons.AsInteger;

ADOTable5semestr.AsInteger of

,2:kurs:=1;

,4:kurs:=2;

,6:kurs:=3;

,8:kurs:=4;

:kurs:=5;;ADOTable5f_nav.AsBoolean then.Locate('kod_sp;kurs;f_nav',VarArrayOf([ADOTable5kod_sp.AsInteger,kurs,'д']),[]).Locate('kod_sp;kurs;f_nav',VarArrayOf([ADOTable5kod_sp.AsInteger,kurs,'з']),[]);:=workbook.worksheets[1].cells[i+5,4];:=workbook.worksheets[1].range[cell,cell];.value:= ADOTable7kurs.AsInteger;

:=workbook.worksheets[1].cells[i+5,5];:=workbook.worksheets[1].range[cell,cell];.value:= ADOTable7kol_st.AsInteger;

.Locate('kod_sp',ADOTable7kod_sp.AsInteger,[]);:=workbook.worksheets[1].cells[i+5,3];:=workbook.worksheets[1].range[cell,cell];.value:= ADOTable6shifr.AsString;.sem_1_d.Next;;:=i+1;;.visible:=true;;

.

U_vikl;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,,data_module, DB, Grids, DBGrids;

= class(TForm): TDataSource;: TDBGrid;DBGrid1DblClick(Sender: TObject);

{ Private declarations }

{ Public declarations };

: Tvikl;

U_kartka;

{$R *.dfm}

Tvikl.DBGrid1DblClick(Sender: TObject);fam:string;

//if DataModule7.ADOTable8.Locate('kod_pr',DataModule7.ADOTable3kod_pr.AsInteger,[])

// then.ADOTable8.Filter:='kod_pr='+inttostr(DataModule7.ADOTable3kod_pr.AsInteger);.ADOTable8.Filtered:=true;:=DataModule7.ADOTable3prizv.AsString+' '+DataModule7.ADOTable3name.AsString+' ' +DataModule7.ADOTable3f_name.AsString;.StaticText1.Caption:=fam;.StaticText2.Caption:=DataModule7.ADOTable3posada.AsString;.StaticText3.Caption:=inttostr(DataModule7.ADOTable3stavka.AsInteger);

.ShowModal;;

.

U_vvod_sem;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,,data_module, DB, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls;

_sem = class(TForm): TDataSource;: TPanel;: TSpeedButton;: TEdit;: TLabel;: TDBLookupComboBox;: TLabel;: TDBEdit;: TLabel;: TPanel;: TDBEdit;: TDBCheckBox;: TDBComboBox;: TLabel;: TLabel;: TDBEdit;: TDBEdit;: TDBCheckBox;: TLabel;: TLabel;: TPanel;: TBitBtn;SpeedButton1Click(Sender: TObject);BitBtn1Click(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);FormShow(Sender: TObject);

{ Private declarations }

{ Public declarations };

_sem: Tvvod_sem;

Unit4, U_sem_plan;

{$R *.dfm}

Tvvod_sem.SpeedButton1Click(Sender: TObject);_dis.ShowModal;Tvvod_sem.BitBtn1Click(Sender: TObject);

;;

Tvvod_sem.FormClose(Sender: TObject; var Action: TCloseAction);flag=false then(sem_plan.TabControl1.TabIndex=0) then.ADOTable5f_nav.AsBoolean:=true.ADOTable5f_nav.AsBoolean:=false;

// DataModule7.ADOTable5lek_ost.AsInteger:= DataModule7.ADOTable5lek.AsInteger;DataModule7.ADOTable5.State in [dsedit,dsInsert] then

.ADOTable5.Post;.sem_1_d.Close;.sem_1_d.Open;.sem_2_d.Close;.sem_2_d.Open;.sem_1_z.Close;.sem_1_z.Open;.sem_2_z.Close;.sem_2_z.Open;

_plan.TabControl2Change(sender);

;Tvvod_sem.FormShow(Sender: TObject);.ADOTable5k_r.AsBoolean:=false;.ADOTable5k_p.AsBoolean:=false;

;.

Unit1;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Menus, AxCtrls, OleCtrls, VCF1, ComCtrls,comobj;

= class(TForm): TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TStatusBar;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TOpenDialog;: TSaveDialog;N2Click(Sender: TObject);N3Click(Sender: TObject);N4Click(Sender: TObject);FormShow(Sender: TObject);N111Click(Sender: TObject);N13Click(Sender: TObject);N10Click(Sender: TObject);N11Click(Sender: TObject);N7Click(Sender: TObject);N8Click(Sender: TObject);N12Click(Sender: TObject);N18Click(Sender: TObject);N15Click(Sender: TObject);N16Click(Sender: TObject);

{ Private declarations }

{ Public declarations };

: Tmain;:variant;Unit2, Unit3, Unit4, Unit5, Unit6, U_sp_pos, U_sem_plan, U_vikl,_module;

{$R *.dfm}

FindAndInsert(FindText,replacementText:string):boolean;wdReplaceAll=2;.selection.find.text:=findtext;.selection.find.replacement.text:=replacementtext;:=w.selection.find.execute(replace:=wdreplaceAll);;

Tmain.N2Click(Sender: TObject);_pr.ShowModal;

Tmain.N3Click(Sender: TObject);_kont.ShowModal;

Tmain.N4Click(Sender: TObject);_dis.ShowModal;

Tmain.FormShow(Sender: TObject);

// parol.ShowModal;;

Tmain.N111Click(Sender: TObject);:=createoleobject('word.application');.documents.add(extractfiledir(application.ExeName)+'\Контингент студентів.dot');('#D1', inttostr(datamodule7.d1kol_st.AsInteger));('#D2', inttostr(datamodule7.d2kol_st.AsInteger));('#D3', inttostr(datamodule7.d3kol_st.AsInteger));('#D4', inttostr(datamodule7.d4kol_st.AsInteger));('#D5', inttostr(datamodule7.d5kol_st.AsInteger));('#Z1', inttostr(datamodule7.z1kol_st.AsInteger));('#Z2', inttostr(datamodule7.z2kol_st.AsInteger));('#Z3', inttostr(datamodule7.z3kol_st.AsInteger));('#Z4', inttostr(datamodule7.z4kol_st.AsInteger));('#Z5', inttostr(datamodule7.z5kol_st.AsInteger));('#A', inttostr(datamodule7.d1kol_st.AsInteger+datamodule7.d2kol_st.AsInteger+datamodule7.d3kol_st.AsInteger+datamodule7.d4kol_st.AsInteger+datamodule7.d5kol_st.AsInteger));('#B', inttostr(datamodule7.z1kol_st.AsInteger+datamodule7.z2kol_st.AsInteger+datamodule7.z3kol_st.AsInteger+datamodule7.z4kol_st.AsInteger+datamodule7.z5kol_st.AsInteger));

.visible:=true;

;Tmain.N13Click(Sender: TObject);_pos.ShowModal;

Tmain.N10Click(Sender: TObject);

{sem_plan.DBGrid1.Columns[3].FieldName:='lek';_plan.DBGrid1.Columns[4].FieldName:='lab';_plan.DBGrid1.Columns[5].FieldName:='prakt';_plan.DBGrid1.Columns[6].FieldName:='chas_k';}

:=true;_plan.Panel2.Visible:=false;_plan.ShowModal ;;

Tmain.N11Click(Sender: TObject);.ShowModal;;

Tmain.N7Click(Sender: TObject);:=createoleobject('word.application');.documents.add(extractfiledir(application.ExeName)+'\Склад кафедри.doc');.visible:=true;;Tmain.N8Click(Sender: TObject);:=createoleobject('word.application');.documents.add(extractfiledir(application.ExeName)+'\Якісний та кількісний склад.dot');('#Z', inttostr(datamodule7.ADOTable1.RecordCount));('#D', inttostr(datamodule7.ADOTable9.RecordCount));('#K', inttostr(datamodule7.ADOTable10.RecordCount));('#I', inttostr(datamodule7.ADOTable11.RecordCount-datamodule7.ADOTable10.RecordCount-datamodule7.ADOTable9.RecordCount));('#SD', inttostr(datamodule7.ADOTable12.RecordCount));('#SK', inttostr(datamodule7.ADOTable13.RecordCount));('#SI', inttostr(datamodule7.ADOTable14.RecordCount-datamodule7.ADOTable13.RecordCount-datamodule7.ADOTable12.RecordCount));.visible:=true;.visible:=true;;Tmain.N12Click(Sender: TObject);:=createoleobject('word.application');.documents.add(extractfiledir(application.ExeName)+'\Кадрове забезпечення спеціальності.doc');.visible:=true;

;

Tmain.N18Click(Sender: TObject);;

Tmain.N15Click(Sender: TObject);OpenDialog1 doexecute then;;

Tmain.N16Click(Sender: TObject);saveDialog1 doexecute then;;

.

Unit3;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, DBCtrls,data_module, DB, Grids, DBGrids;

_kont = class(TForm): TPanel;: TDBNavigator;: TDBGrid;: TDataSource;: TPanel;: TComboBox;: TCheckBox;FormShow(Sender: TObject);CheckBox1Click(Sender: TObject);ComboBox1Change(Sender: TObject);

{ Private declarations }

{ Public declarations };

_kont: Tsp_kont;

{$R *.dfm}

Tsp_kont.FormShow(Sender: TObject);.Items.Clear;DataModule7 do.First;not ADOTable6.Eof do.Items.Add(ADOTable6shifr.AsString);.Next;;;;

Tsp_kont.CheckBox1Click(Sender: TObject);.ADOTable6.Locate('shifr',ComboBox1.Text,[]);.ADOTable7.Filter:='kod_sp='+inttostr(DataModule7.ADOTable6kod_sp.AsInteger);;.ADOTable7.Filtered:=CheckBox1.Checked;;

Tsp_kont.ComboBox1Change(Sender: TObject);.Checked:=false;;

.

Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DBCtrls, Grids, DBGrids, ExtCtrls, DB, Menus,data_module,, Buttons,comobj;

_dis = class(TForm): TPanel;: TDBGrid;: TDBNavigator;: TDataSource;: TBitBtn;: TBitBtn;: TLabel;BitBtn1Click(Sender: TObject);FormShow(Sender: TObject);BitBtn2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };

_dis: Tsp_dis;:variant;

U_vvod_sem;

{$R *.dfm}Tsp_dis.BitBtn1Click(Sender: TObject);

// datamodule7.ADOTable5.Locate('kod_semestr',ADOTable8kod_semestr.AsInteger,[]);.ADOTable5kod_dis.AsInteger:=DataModule7.adotable2kod_d.asinteger;_sem.Edit1.Text:=DataModule7.ADOTable2n_disc.AsString;;;Tsp_dis.FormShow(Sender: TObject);.Caption:='Загальна кількість '+inttostr(DataModule7.ADOTable2.recordcount);;

Tsp_dis.BitBtn2Click(Sender: TObject);=1;i,j,k:integer;:string; mypagenumber:variant; mypagenumbers:variant;,mysection,table:variant;:=createoleobject('word.application'); //створення об'єкту Word.documents.add; //додавання документу.activewindow.activepane.view.zoom.percentage:=100; //масштаб відобра-ження вікна документу - 100%:=w.activedocument.range.sections.item(1); //встановлення поточного розділу документу:=mysection.headers.item(1).pagenumbers; //автоматична нуме-рація сторінок звіту:=mysection.headers.item(1).pagenumbers.add(pagenumberalignment:=wdalignPageNumberRight,firstpage:=true); //встановлення параметрів нумерації - вгорі сторінки, по центру, номер на першій сторінці:=w.activedocument.range(w.activedocument.range.end-1,w.activedocument.range.end-1);.paragraphformat.alignment:=1; //вирівнювання тексу абзацу по цен-ту.select; //виділення поточного абзацу.selection.font.bold:=1; //текст "жирний".selection.font.underline:=1; //текст підкреслений.activedocument.range.insertafter('Перелік дисциплін кафедри'); //вставка заголовка зві-ту.activedocument.range.insertafter(#13); //додавання пустих строк.activedocument.range.insertafter(#13);

:=w.activedocument.range(w.activedocument.range.end-1,w.activedocument.range.end-1);.activedocument.tables.add(range:=myrange,numrows:=1,numcolumns:=2); //додавання в документ таблиці - 1 рядок та 5 стовпців:=w.activedocument.tables.item(1);

.AutoFormat(Format:=20,:=true,:=false,:=false,:=false,:= false,:=false,:= false,:=false,:=false); //форматування таблиці за основі заданого типу Ав-тоформату.rows.item(1).range.paragraphformat.alignment:=1; //вирівнювання по-середині.rows.item(1).shading.backgroundpatterncolorindex:=16; //заливка ко-мірки таблиці.rows.item(1).select; //обираємо 1-й рядок.selection.font.bold:=1;.selection.font.underline:=0; //текст підкресленийi:=1 to table.columns.count do //формування заголовківi of // i - порядковий номер стовпця

: begin.columns.item(i).width:=20; //встановлюємо ширину стовпця.cell(1,i).range.text:='№'; //виводимо заголовок;

: begin.columns.item(i).width:=450; //встановлюємо ширину стовпця.cell(1,i).range.text:='Назва дисципліни'; //виводимо заголовок;

;.rows.add; //додаємо рядок у таблицю.rows.item(2).shading.backgroundpatterncolorindex:=0; //відключення за-ливки.rows.item(2).select;.rows.item(2).range.paragraphformat.alignment:=3;.selection.font.bold:=0;:=2; DataModule7.ADOtable2.first;DataModule7 donot ADOtable2.eof do //перебір усіх записів набору

//формування таблиці - занесення відповідних значень набору у комірки таблиці

table.cell(ADOtable2.recno+1,1).range.text:=inttostr(adotable2.recno);

.cell(ADOtable2.recno+1,2).range.text:=adotable2n_disc.asstring;

:=k+1; //номер рядка

ADOtable2.next; //перехід на наступну запис

table.rows.add; //додавання рядку у таблицю

end;.rows.item(k).delete;.activedocument.range.insertafter(#13);.activedocument.range.insertafter(#13); //візуалізація документу

.visible:=true;

;

.

Unit5;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons,inifiles;

= class(TForm): TEdit;: TBitBtn;FormCreate(Sender: TObject);BitBtn1Click(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);

{ Private declarations }

{ Public declarations };

: Tparol;:tinifile;:ansistring;:boolean;

Unit1;

{$R *.dfm}

Tparol.FormCreate(Sender: TObject);i:integer;:char;:=false;:=tinifile.Create(extractfilepath(paramstr(0))+'ini.ini');:=ini.ReadString('security','parol','');.Free;

i:=1 to length(s) do:=s[i];:=char(ord(ch)-1);[i]:=ch;;;Tparol.BitBtn1Click(Sender: TObject);Edit1.Text<>s then('═σΓσ≡φ√Θ ∩α≡εδⁿ!'); Edit1.Text:=''; Edit1.SetFocus;begin f:=true; close; end;;

Tparol.FormClose(Sender: TObject; var Action: TCloseAction);not f then main.Close;;

end.

Похожие работы на - Розробка гнучкої системи автоматизації розрахунку учбового навантаження

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!