Облік відвідуваності в робочий час

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

скачати

Федеральне агентство з освіти
федеральне Державне освітній заклад
середньої професійної освіти
Бєжецький промислово-економічний коледж

Завдання на дипломне проектування

за фахом: «Менеджмент»

Студента групи: П - 411

П.І.Б.

Тема роботи: Облік відвідуваності в робочий час

Дата видачі завдання: «» 2008р.
Термін виконання: «» 2008р.
Завдання склав викладач:
___________
Розглянуто та схвалено
на засіданні методичної комісії
«Математика, інформатика
і обчислювальна техніка »
Протокол № ___ від «___» __________ 2008.
Голова комісії: _________
2008

1. ТЕОРЕТИЧНА ЧАСТИНА.
1.1. Аналіз вимог, що пред'являються до організації навчального процесу в ссузів, і способів вирішення поставленого завдання.
1.2. Обгрунтування і теоретичний аналіз обраного способу вирішення завдання. Опис предметної області та моделі досліджуваного об'єкта.
1.3. Опис процесу розробки програмного забезпечення з автоматизації навчального процесу в коледжі і готового програмного продукту.
1.4. Опис результатів дослідження створеного програмного забезпечення з автоматизації навчального процесу в коледжі.
1.5. Складання програмної та експлуатаційної документації.
1.6. Опис і оцінка отриманих результатів.
2. ПРАКТИЧНА ЧАСТИНА.
2.1. Розробка програмного забезпечення для організації навчального процесу в коледжі, в якому необхідно:
- Спроектувати логічну модель бази даних
- Спроектувати фізичну модель бази даних
- Організувати введення кількості пропущених годин за кожен день з поважних (хвороба, відпускні) і неповажних причин по кожній спеціальності, групі, студенту
- Передбачити можливість коригування даних
- Організувати можливість підведення підсумків відвідуваності по кожному студенту, по кожній групі, спеціальності і в цілому по коледжу (процентне співвідношення пропущених годин через хворобу, з поважних причин, з неповажних причин, кількість прогулів на 1 людину, загальна кількість пропущених годин по групі, по спеціальності, по коледжу)
- Передбачити можливість порівняння підсумкових даних з підсумками попереднього місяця
- Забезпечити формування списків студентів, що мають найбільшу кількість пропущених годин за підсумками поточного місяця, з початку навчального року
- Забезпечити формування звіту (див додаток)

ЗМІСТ
Введення
1. Спосіб вирішення поставленого завдання
2 Проектування бази даних
2.1 Розробка бази даних
3 Середовище розробки програмного продукту
3.1 Робота з базами даних Access в Delphi
3.2 Компоненти доступу до даних
3.3 Доступ до даних
3.4 Створення звітів в Delphi
3.5 Створення запитів на мові SQL
4 Процес розробки програмного забезпечення
5 Програмна та експлуатаційна документація
Висновок
Список використаної літератури

ВСТУП
У зв'язку з повсюдно комп'ютеризацією, в тому числі і коледжу, сучасне життя немислима без ефективного управління. Важливою категорією є системи обробки інформації, від яких багато в чому залежить ефективність роботи будь-якого підприємства чи установи. Така система повинна:
- Забезпечувати отримання загальних і деталізованих звітів за підсумками роботи;
- Дозволяти легко визначати тенденції зміни найважливіших показників;
- Забезпечувати отримання інформації, критичною по часу, без істотних затримок;
- Виконувати точний і повний аналіз даних.
Для ефективного управління підприємствами, фірмами та організаціями різних широко впроваджуються системи автоматизованого управління, ядром яких є бази даних (БД). При великому обсязі інформації та складності, вироблених з нею операцій проблема ефективності засобів організації зберігання, доступу та обробки даних придбає особливе значення. Враховуючи важливість і значимість баз даних в сучасному житті, дуже серйозні вимоги пред'являються до кваліфікації фахівців, що створюють додатки на їх основі.
Сучасні СУБД в основному є додатками Windows, так як дана середовище дозволяє більш повно використовувати можливості персональної ЕОМ. Серед найбільш яскравих представників систем управління базами даних можна відзначити: Lotus Approach, Microsoft Access, Borland dBase, Borland Paradox, Microsoft Visual FoxPro, Microsoft Visual Basic, а також баз даних Microsoft SQL Server і Oracle, що використовуються в додатках, побудованих за технологією "клієнт -сервер ». Фактично, у будь-якої сучасної СУБД існує аналог, що випускається іншою компанією, що має аналогічну область застосування і можливості, будь-який додаток здатна працювати з багатьма форматами представлення даних, здійснювати експорт та імпорт даних завдяки наявності великої кількості конвертерів. Загальноприйнятими, також, є технологи, що дозволяють використовувати можливості інших додатків, наприклад, текстових процесорів, пакетів побудови графіків і т.п., і вбудовані версії мов високого рівня (найчастіше - діалекти SQL або VBA) і засоби візуального програмування інтерфейсів розробляються. Тому вже не має істотного значення на якій мові і на основі якого пакету написано конкретний додаток, і який формат даних в ньому використовується.
Таким чином, на сьогоднішній день розробник не пов'язаний рамками якого-небудь конкретного пакету, а в залежності від поставленої задачі може використовувати найрізноманітніші програми. Тому, більш важливим є загальний напрямок розвитку СУБД та інших засобів розробки додатків.

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

2 ПРОЕКТУВАННЯ БАЗИ ДАНИХ
Для розробки програмного продукту перш за все необхідно спроектувати та розробити базу даних.
Метою розробки будь-якої бази даних є зберігання і використання інформації про будь-якої предметної області. Для реалізації цієї мети є наступні інструменти:
1) Реляційна модель даних - зручний спосіб представлення даних предметної області;
2) Мова SQL - універсальний спосіб маніпулювання такими даними.
При розробці бази даних зазвичай виділяється декілька рівнів моделювання, за допомогою яких відбувається перехід від предметної області до конкретної реалізації бази даних засобами конкретної СУБД. Можна виділити такі рівні:
- Сама предметна область;
- Модель предметної області;
- Логічна модель даних;
- Фізична модель даних;
- Власне база даних і додатки.
Предметна область - це частина реального світу, дані про яку ми хочемо відобразити в базі даних. Наприклад, в якості предметної області можна вибрати бухгалтерію будь-якого підприємства, відділ кадрів, банк, магазин і т.д. Предметна область нескінченна і містить як суттєво важливі поняття і дані, так і малозначні або взагалі не значущі дані. Так, якщо в якості предметної області вибрати облік товарів на складі, то поняття "накладна" і "рахунок-фактура" є суттєво важливими поняттями, а те, що співробітниця, приймаюча накладні, має двох дітей - це для обліку товарів неважливо. Однак, з точки зору відділу кадрів дані про наявність дітей є суттєво важливими. Таким чином, важливість даних залежить від вибору предметної області. [5]
Модель предметної області. Модель предметної області - це наші знання про предметну область. Знання можуть бути як у вигляді неформальних знань в мозку експерта, так і виражені формально за допомогою яких-небудь засобів. В якості таких засобів можуть виступати текстові описи предметної області, набори посадових інструкцій, правила ведення справ у компанії і т.п. Досвід показує, що текстовий спосіб подання моделі предметної області вкрай неефективний. Набагато більш інформативними і корисними при розробці баз даних є описи предметної області, виконані за допомогою спеціалізованих графічних нотацій. Є велика кількість методик опису предметної області. Модель предметної області описує швидше процеси, що відбуваються в предметній області і дані, використовувані цими процесами. Від того, наскільки правильно змодельована предметна область, залежить успіх подальшої розробки додатків. [5]
Логічна модель даних. На наступному, більш низькому рівні знаходиться логічна модель даних предметної області. Логічна модель описує поняття предметної області, їх взаємозв'язок, а також обмеження на дані, які накладаються предметною областю. Приклади понять - "співробітник", "відділ", "проект", "зарплати". Приклади взаємозв'язків між поняттями - "співробітник числиться рівно в одному відділі", "співробітник може виконувати кілька проектів", "над одним проектом може працювати декілька співробітників". Приклади обмежень - "вік співробітника не менше 16 і не більше 60 років". [5]
Логічна модель даних є початковим прототипом майбутньої бази даних. Логічна модель будується в термінах інформаційних одиниць, але без прив'язки до конкретної СУБД. Більш того, логічна модель даних необов'язково повинна бути виражена засобами саме реляційної моделі даних.
Рішення, прийняті на попередньому рівні, при розробці моделі предметної області, визначають деякі межі, в межах яких можна розвивати логічну модель даних, в межах же цих кордонів можна приймати різні рішення. Наприклад, модель предметної області складського обліку містить поняття "склад", "накладна", "товар". При розробці відповідної реляційної моделі ці терміни обов'язково повинні бути використані, але різних способів реалізації отут багато - можна створити одне відношення, в якому будуть присутні як атрибутів "склад", "накладна", "товар", а можна створити три окремих відносини, по одному на кожне поняття. [5]
Фізична модель даних. На ще більш низькому рівні знаходиться фізична модель даних. Фізична модель даних описує дані засобами конкретної СУБД. Фізична модель даних реалізована засобами саме реляційної СУБД. Відносини, розроблені на стадії формування логічної моделі даних, перетворюються в таблиці, атрибути стають стовпцями таблиць, для ключових атрибутів створюються унікальні індекси, домени перетворюються в типи даних, прийняті в конкретній СУБД.
Обмеження, наявні в логічної моделі даних, реалізуються різними засобами СКБД, наприклад, за допомогою індексів, декларативних обмежень цілісності, тригерів, збережених процедур. При цьому прийняті на рівні логічного моделювання визначають деякі межі, в межах яких можна розвивати фізичну модель даних. Точно також, у межах цих кордонів можна приймати різні рішення. Наприклад, відносини, що містяться в логічної моделі даних, повинні бути перетворені в таблиці, але для кожної таблиці можна додатково оголосити різні індекси, що підвищують швидкість звернення до даних. Багато що тут залежить від конкретної СУБД. [5]
Власне база даних і додатки. Як результат попередніх етапів з'являється власне сама база даних. База даних реалізована у конкретній програмно-апаратної основі, і вибір цієї основи дозволяє істотно підвищити швидкість роботи з базою даних. Наприклад, можна вибирати різні типи комп'ютерів, змінювати кількість процесорів, об'єм оперативної пам'яті, дискові підсистеми і т.п. Дуже велике значення має також налаштування СКБД в межах обраної програмно-апаратної платформи.
Але рішення, прийняті на попередньому рівні - рівні фізичного проектування, визначають межі, в межах яких можна приймати рішення щодо вибору програмно-апаратної платформи і настройки СУБД.
Таким чином зрозуміло, що рішення, прийняті на кожному етапі моделювання та розробки бази даних, позначатимуться на подальших етапах. Тому особливу роль відіграє прийняття правильних рішень на ранніх етапах моделювання. [5]
2.1 Розробка бази даних
Для створення бази даних був використаний Microsoft Access. Додаток Microsoft Access є потужною і високопродуктивною системою управління базою даних (СКБД)
База даних - це сукупність структурованих і взаємозалежних даних і методів, що забезпечують додавання вибірку і відображення даних.
Реляційна база даних. Практично всі СУБД дозволяють додавати нові дані в таблиці. З цієї точки зору СУБД не відрізняються від програм електронних таблиць (Excel), які можуть емулювати деякі функції баз даних. [11]
Access - потужна програма Windows. При цьому продуктивність СУБД органічно поєднуються з усіма зручностями та перевагами Windows.
Як реляційна СУБД Access забезпечує доступ до всіх типів даних і дозволяє одночасно використовувати декілька таблиць бази даних. Можна використовувати таблиці, створені в середовищі Paradox або dBase.
Access спеціально спроектований для створення багатокористувацьких додатків, де файли бази даних є розділяютьсяресурсами в мережі. У Access реалізована надійна система захисту від несанкціонованого доступу до файлів.
База даних зберігатися в одному файлі, але професійні користувачі вважають за краще розділяти базу даних на два файли: в одному зберігаються об'єкти даних (таблиці, запити), в іншому об'єкти докладання (форми, звіти, макроси, модулі).
В останніх версіях Access представлений новий формат файлу (MDE)-бібліотеки, за допомогою якого можна створювати додатки, не включаючи VBA-код. [11]
Основні функції:
1) Організація даних. Створення таблиць і керування ними;
2) Зв'язування таблиць і забезпечення доступу до даних. Access дозволяє пов'язувати таблиці по співпадаючим значенням полів, з метою подальшого з'єднання декількох таблиць в одну;
3) Додавання та зміна даних. Ця функція вимагає розробки та реалізації представлених даних, відмінних від табличних (форми);
4) Подання даних. Access дозволяє створювати різні звіти на основі даних таблиць та інших об'єктів бази даних;
5) Макроси. Використання макросів дозволяє автоматизувати повторювані операції. В останніх версіях Access макроси використовують для сумісності;
6) Захист бази даних. Ці засоби дозволяють організувати роботу програми в багатокористувацької середовищі і запобігти несанкціонований доступ до баз даних;
7) Засоби друку. За допомогою цієї функції Access дозволяє роздрукувати практично все, що можна побачити в базі даних;
Access так само дозволяє створювати дистрибутивні диски для розповсюдження готового додатку (за допомогою Office Developer Edition Tools). Поширення увазі постачання всіх необхідних файлів на будь-якому носії.
Пакет ODE Tools включає майстер установки, що автоматизує створення засобів розповсюдження і програми установки. Він так само дозволяє виконання програми на комп'ютерах, на яких не встановлено Access.
Елементи бази даних:
1) Таблиці. У базі даних інформація зберігається у вигляді двовимірних таблиць.
Можна так само імпортувати і зв'язувати таблиці з інших СУБД або систем управління електронними таблицями. Одночасно можуть бути відкриті 1024 таблиці;
2) Запити. За допомогою запитів можна здійснити вибірку даних з якого-небудь критерію з різних таблиць. У запит можна включати до 255 полів;
3) Форми. Форми дозволяють відображати дані з таблиць і запитів у більш зручному для сприйняття вигляді. За допомогою форм можна додавати і змінювати дані, що містяться в таблицях. У форми дозволяють включати модулі;
4) Звіти. Звіти призначені для друку даних, що містяться в таблицях і запитах, в гарно оформленому вигляді. Звіти так само дозволяють включати модулі;
5) Макроси
6) Модулі. Модулі містять VBA-код, що використовується для написання процедур обробки подій таких, як, наприклад, натискання кнопки у формі або звіті, для створення функцій налаштування, для автоматичного виконання операцій над об'єктами бази даних та програмного управління операціями, тобто додавання VBA-коду дозволяє створити повну базу даних з налаштованим меню, панелями інструментів та іншими можливостями. Модулі знімають з користувача програми на необхідності пам'ятати послідовність вибору об'єктів бази даних для виконання тієї або іншої дії і підвищують ефективність роботи;
До складу Access входить безліч майстрів, розбудовників і надбудов, які дозволяють спростити процес створення об'єктів бази даних.
Процес створення об'єкта бази даних за допомогою майстра ділиться на кілька кроків, на кожному з яких можна встановити необхідні характеристики створюваного об'єкта. Майстер таблиць дозволяє створити нову таблицю на основі 33 зразків таблиць ділового застосування і 20 зразків таблиць особистого застосування (для англійської версії Access відповідно 77 і 44). Багато таблиці бази даних створені на основі зразків Майстра таблиць.
Використання Майстра таблиць служить відмінним прикладом, що дозволяє зрозуміти загальну процедуру роботи з майстрами Access. Створення таблиць на основі зразків Майстра таблиць має обмежені можливості у справжніх додатках. У більшості випадків для створення таблиць використовується імпорт або зв'язування даних з іншими базами даних або електронними таблицями.
Якщо імпортувати або зв'язати дані не можна, то найчастіше таблиці створюються в режимі конструктора, який дозволяє визначити необхідну структуру таблиці. У режимі конструктора таблиць можна побачити назви, типи даних, опису призначення, а також деякі додаткові властивості полів таблиці. Те, що з'являється у верхній частині вікна таблиці, відкритої в режимі конструктора, називається бланком структури таблиці або просто бланком таблиці. У нижній частині вікна таблиці, відкритої в режимі конструктора, виводяться властивості полів таблиці, а також короткий опис активного властивості таблиці.
Access дає можливість створення таблиць безпосередньо в режимі таблиці. При цьому Access створює пусту таблицю на основі таблиці, використовуваної за замовчуванням, зі структурою, що має 20 полів і 30 порожніх записів. Після цього можна вводити дані прямо в таблицю. При її збереженні Access аналізує дані і вибирає той тип для кожного поля, який найбільше відповідає введених даних. Створення таблиць в режимі таблиці має обмежене застосування. Поля таблиці не мають змістовних імен, так що майже завжди потрібно буде редагувати структуру, щоб перейменувати поля.
Крім того, з прикладу Access не завжди може правильно визначити тип даних. Таблиці, які створені в режимі таблиці, не можуть включати об'єкти OLE і мемо-поля. Якщо є бажання мати такі поля, вам потрібно змінити структуру таблиці. При створенні таблиці в режимі таблиці не відбувається економії часу в порівнянні з традиційним способом визначення полів та встановлення їх властивостей у структурі порожній таблиці.
При розробці структури таблиці необхідно вказати, яку інформацію вона повинна містити. Після того як визначена інформація, яка повинна бути включена в таблицю, її варто розбити по полях. Цей процес включає в себе вибір імені поля, яке в таблиці повинне бути унікальним. Необхідно включати в ім'я поля як можна більше інформації про його вміст, але в той же час намагатися уникати довгих імен. Зазвичай при розробці баз даних у різних таблицях могли бути поля з однаковими іменами (найчастіше таблиці зв'язувалися по цих полях). Access також дозволяє використовувати однакові імена полів у різних таблицях, але через те, що Access використовує імена полів при визначенні умов цілісності даних, краще не допускати повторення імен полів. [11]
Одним з основних принципів розробки реляційних баз даних є те, що всі дані, що містяться в полі таблиці, повинні мати один і той же тип. Для кожного поля таблиці необхідно задати тип даних. За замовчуванням використовується тип даних «Текстовий». При завданні типу даних поля можна також вказати розмір, формат і інші параметри, що впливають на відображення значення поля і точність числових даних.
Основні типи даних:
1) Текстовий. Текст або числа, які потребують проведення розрахунків;
2) МЕМО. Поле цього типу призначено для зберігання невеликих текстових даних (до 64000 символів). Поле цього типу не може бути ключовим або проіндексованим;
3) Числовий. Цей тип даних містить безліч підтипів. Від вибору підтипу (розміру) залежить точність обчислень;
4) Лічильник. Унікальні, послідовно зростаючі числа, автоматично вводяться при додаванні нового запису в таблицю;
5) Логічний. Логічні значення, а так само поля, які можуть містити одне з двох можливих значень;
6) Грошовий. Грошові значення і числові дані, які використовуються в математичних обчисленнях;
7) Дата / час. Дата і час зберігаються в спеціальному фіксованому форматі;
8) Поле об'єкту OLE. Включає звукозапис, малюнок і інші типи даних. Поле цього типу не може бути ключовим або проіндексованим. [11]

3 середа РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ
Для розробки програмно продукту була вибрана мова програмування Delphi.
Мова програмування Delphi - це комбінація кількох найважливіших технологій:
- Високопродуктивний компілятор в машинний код;
- Об'єктно-орієнтована модель компонент;
- Візуальне (а, отже, і швидкісне) побудова додатків з програмних прототипів;
- Масштабовані кошти для побудови баз даних. [2]
Компілятор, вбудований в Delphi, забезпечує високу продуктивність, необхідну для побудови додатків в архітектурі "клієнт-сервер". Він пропонує легкість розробки і швидкий час перевірки готового програмного блоку, характерного для мов четвертого покоління (4GL) і в той же час забезпечує якість коду, характерного для компілятора 3GL. Крім того, Delphi забезпечує швидку розробку без необхідності писати вставки на С або ручного написання коду (хоча це можливо).
Delphi мало чим відрізняється від проектування в интерпретирующей середовищі, проте після виконання компіляції ми отримуємо код, який виконується в 10-20 разів швидше, ніж те ж саме, зроблене за допомогою інтерпретатора. У Delphi компіляція проводиться безпосередньо у рідній машинний код, в той час як існують компілятори, що перетворюють програму у так званий p-код, який потім інтерпретується віртуальною p-машиною. Це не може не позначитися на фактичному швидкодії готового додатку. [2]
Основний акцент у моделі Delphi робиться на максимальному реіспользованіі коду. Це дозволяє розробникам будувати програми досить швидко з заздалегідь підготовлених об'єктів, а також дає їм можливість створювати свої власні об'єкти для середовища Delphi. Ніяких обмежень по типах об'єктів, які можуть створювати розробники, не існує. Все в Delphi написано на ньому ж, тому розробники мають доступ до тих же об'єктів та інструментів, які використовувалися для створення середовища розробки. У результаті немає ніякої різниці між об'єктами, що поставляються Borland або третіми фірмами, і об'єктами, які можна створити.
У стандартну поставку Delphi входять основні об'єкти, які утворюють вдало підібрану ієрархію з 270 базових класів. Але якщо виникне необхідність у вирішенні якоїсь специфічної проблеми на Delphi, варто переглянути список вільно розповсюджуваних або комерційних компонент, розроблених третіми фірмами, кількість цих фірм в даний час перевищує число 250. Багато в чому це пояснюється тим, що традиційно в середовищі Windows було досить складно реалізовувати користувальницький інтерфейс. Подієва модель в Windows завжди була складна для розуміння і налагодження. Але саме розробка інтерфейсу в Delphi є найпростішим завданням для програміста.
Середовище Delphi включає в себе повний набір візуальних інструментів для швидкісної розробки додатків (RAD - rapid application development), що підтримує розробку користувальницького інтерфейсу і підключення до корпоративних баз даних. VCL - бібліотека візуальних компонент, включає в себе стандартні об'єкти побудови користувальницького інтерфейсу, об'єкти управління даними, графічні об'єкти, об'єкти мультимедіа, діалоги та об'єкти управління файлами, управління DDE і OLE. Єдине, що можна поставити в провину Delphi, це те, що готових компонент, що поставляються Borland, могло б бути і більше. Однак, розробки інших фірм, а також вільно поширювані програмістами freeware-компоненти вже заповнили цей недолік. [2]
Відповідний стандарт компонент називався VBX. І цей стандарт так само підтримується в Delphi. Однак, візуальні компоненти в Delphi мають більшу гнучкість.
У Delphi візуальні компоненти пишуться на об'єктному паскалі, на тому ж паскалі, на якому пишеться алгоритмічна частина програми. І візуальні компоненти Delphi виходять відкритими для надбудови і переписування.
Об'єкти БД в Delphi засновані на SQL і включають в себе повну міць Borland Database Engine. До складу Delphi також включено Borland SQL Link, тому доступ до СУБД Oracle, Sybase, Informix і InterBase відбувається з високою ефективністю.
Крім того, Delphi включає в себе локальний сервер Interbase для того, щоб можна було розробити розгортаються на будь-які зовнішні SQL-сервера програми в офлайновом режимі. Розробник в середовищі Delphi, який проектує інформаційну систему для локальної машини (наприклад, невелику систему обліку медичних карток для одного комп'ютера), може використовувати для зберігання інформації файли формату. Dbf (як в dBase або Clipper) або. Db (Paradox). Якщо ж він буде використовувати локальний InterBase for Windows 4.0 (це локальний SQL-сервер, що входить в постачання), то його застосування без жодних змін буде працювати і в складі великої системи з архітектурою клієнт-сервер.
Одне і те ж додаток можна використовувати як для локального, так і для більш серйозного клієнт-серверного варіантів. [10]
Випущено дві версії Delphi - одна (Delphi Client-Server) для розробників додатків в архітектурі "клієнт-сервер", а інша (Delphi for Windows) призначена для решти програмістів. Вона призначена корпоративним розробникам, які бажають розробляти високопродуктивні програми для робочих груп і корпоративного застосування.
Клієнт-серверна версія включає в себе такі особливості:
- SQL Links: спеціально написані драйвери для доступу до Oracle, Sybase, Informix, InterBase;
- Локальний сервер InterBase: SQL-сервер для Windows. СУБД для розробки в корпоративних додатків на комп'ютері, не підключеному до локальної мережі;
- ReportSmith Client / server Edition: генератор звітів для SQL-серверів;
- Team Development Support: надає версионном контроль за допомогою PVCS компанії Intersolve (купується окремо) або за допомогою інших програмних продуктів версійного контролю;
- Visual Query Builder - це засіб візуального побудови SQL-запитів;
- Ліцензія на право розповсюдження додатків в архітектурі клієнт-сервер, виготовлених за допомогою Delphi;
- Вихідні тексти всіх візуальних компонентів.
Delphi for Windows представляє з себе підмножина Delphi Client-Server і призначений для розробників високопродуктивних персональних додатків, що працюють з локальними СУБД типу dBase і Paradox.Delphi Desktop Edition пропонує таку ж середовище для швидкої розробки і першокласний компілятор як і клієнт-серверна версія (Client / Server Edition). Це середовище дозволяє розробнику швидко виготовляти персональні програми, що працюють з персональними СУБД типу dBase і Paradox. Delphi дозволяє також створювати розробнику DLL, яка може бути викликана з Paradox, dBase, C + + або яких-небудь інших готових програм.
У продукт, випущений компанією Borland для Delphi в RAD Pack for Delphi входить набір корисних додатків, які допоможуть розробнику при освоєнні і використанні Delphi. Це підручник з Об'єктний Паскаль, інтерактивний відладчик самої останньої версії, Borland Visual Solutions Pack (набір VBX для реалізації редакторів, електронних таблиць, комунікаційні VBX, VBX з діловою графікою і т.п.), Resource WorkShop для роботи з ресурсами Borland Pascal 7.0, а також експерт для перетворення ресурсів BP 7.0 у форми Delphi.
У першу чергу Delphi призначений для професіоналів-розробників корпоративних інформаційних систем. Деякі продукти, призначені для швидкісної розробки додатків (RAD - rapid application development) чудово працюють при виготовленні досить простих додатків, однак, розробник стикається з непередбаченими труднощами, коли намагається зробити щось дійсно складне. [10]
Delphi призначений не тільки для програмістів-професіоналів. Керівники підприємств, які планують виділення коштів на придбання програмних продуктів, повинні бути впевнені в тому, що плановані інвестиції окупляться. Програміст на паскалі здатний практично відразу професійно освоїти Delphi. Фахівцеві, раніше використовував інші програмні продукти, доведеться важче, проте найперше працює додаток він зможе написати впродовж першого ж години роботи на Delphi. Відкрита технологія Delphi є потужним гарантом того, що інвестиції, зроблені в Delphi, будуть збережені протягом багатьох років. [3]
Локальний сервер InterBase - це інструмент призначений тільки для автономного налагодження додатків. Насправді він представляє з себе скорочений варіант обробника SQL-запитів InterBase, в який не включені деякі можливості справжнього сервера InterBase. Відсутність цих можливостей з лишком компенсується перевагою автономного налагодження програм.
Team Development Support - засіб підтримки розробки проекту в групі. Дозволяє істотно полегшити управління великими проектами. Це зроблено у вигляді можливості підключення такого продукту як Intersolve PVCS 5.1 безпосередньо до середовища Delphi.
Високопродуктивний компілятор в машинний код - на відміну від більшості Паскаль - компіляторів, транслюють у p-код, в Delphi програмний текст компілюється безпосередньо в машинний код, в результаті чого Delphi-додатки виконуються в 10-20 разів швидше (особливо додатки, що використовують математичні функції ). Готове додаток може бути виготовлено або у вигляді виконуваного модуля, або у вигляді динамічної бібліотеки, яку можна використовувати у програмах, написаних на інших мовах програмування.
Завдяки такій архітектурі програми, виготовлені за допомогою Delphi, працюють надійно і стійко. Delphi підтримує використання вже існуючих об'єктів, включаючи DLL, написані на С і С + +, OLE сервера, VBX, об'єкти, створені за допомогою Delphi. Delphi має повністю об'єктну орієнтацію, розробники можуть створювати свої повторно використовувані об'єкти для того, щоб зменшити витрати на розробку.
Delphi пропонує розробникам - як у складі команди, так і індивідуальним - відкриту архітектуру, що дозволяє додавати компоненти, де б вони не були виготовлені, і оперувати цими нововведеними компонентами у візуальному побудувачеві. Розробники можуть додавати CASE-інструменти, кодові генератори, а також авторські help'и, доступні через меню Delphi.
Two-way tools - однозначна відповідність між візуальним проектуванням і класичним написанням тексту програми. Це означає, що розробник завжди може бачити код, відповідний тому, що він побудував за допомогою візуальних інструментів і навпаки.
Візуальний будівник інтерфейсів (Visual User-interface builder) дає можливість швидко створювати клієнт-серверні додатки візуально, просто вибираючи компоненти з відповідної палітри.
Бібліотека об'єктів включає в себе стандартні об'єкти побудови користувальницького інтерфейсу, об'єкти управління даними, графічні об'єкти, об'єкти мультимедіа, діалоги та об'єкти управління файлами, управління DDE і OLE.
Delphi використовує структурний об'єктно-орієнтована мова (Object Pascal), який поєднує з виразну потужність і простоту програмування, характерну для мов 4GL, і ефективність мови 3GL. Програмісти негайно можуть почати виробляти працюючі додатки, і їм не доведеться для цього вивчати особливості програмування подій в Windows. Delphi повністю підтримує передові програмні концепції включаючи інкапсуляцію, успадкування, поліморфізм і керування подіями.
Це дуже важлива особливість для розробників в середовищі Windows, оскільки у вже існуючі Windows-програми програміст може інтегрувати те, що розробить за допомогою Delphi. [2]
3.1 Робота з базами даних Access в Delphi
У Delphi є ряд компонентів, що призначені тільки для роботи MS Access з, ці компоненти знаходяться на вкладці ADO.
Щоб обробляти деяку структуру даних для неї повинна бути написана програма, постачальник цих даних відповідно до системними вимогами, така програма називається OLE DB Provider. Такі постачальники сьогодні реалізовані для різних структур даних і різних СУБД. За допомогою технології OLE DB можна однотипним чином обробляти складну та специфічну інформацію. Однак робота з OLE DB досить складна, тому фірма Microsoft розробила нову технологію ADO, що представляє собою набір простих компонентів. Якщо планується створити новий додаток, орієнтовану на роботу з даними і незалежна не від конкретної СУБД і не від способу зберігання інформації, то краще використовувати технологію ADO. [5]
Технологія Microsoft ActiveX Data Objects (ADO) забезпечує універсальний доступ до джерел даних з додатків БД. Таку можливість надають функції набору інтерфейсів, створені на основі загальної моделі об'єктів СОМ і описані в специфікації OLE DB.
Технологія ADO і інтерфейси OLE DB забезпечують для додатків єдиний спосіб доступу до джерел даних різних типів (Мал. 1). Наприклад, додаток, що використовує ADO, може застосовувати однаково складні операції і до даних, що зберігаються на корпоративному сервері SQL, і до електронних таблиць, і локальним СУБД. Запит SQL, спрямований будь-якого джерела даних через ADO, буде виконаний. [5]
За сервери БД турбуватися не варто, обробка запитів SQL - це їх основна обов'язком. OLE DB являє собою набір спеціалізованих об'єктів СОМ, стандартні функції обробки даних, і спеціалізовані функції конкретних джерел даних і інтерфейсів, що забезпечують передачу даних між об'єктами.
Відповідно до термінології ADO, будь-яке джерело даних (база даних, електронна таблиця, файл) називається сховищем даних, з яким за допомогою провайдера даних взаємодіє додаток. Мінімальний набір компонентів додатка може включати об'єкт з'єднання, об'єкт набору даних, об'єкт процесора запитів. Технологія ADO в цілому включає в себе не тільки самі об'єкти OLE DB, а й механізми, що забезпечують взаємодію об'єктів з даними і додатками. На цьому рівні найважливішу роль відіграють провайдери ADO, координують роботу додатків з сховищами даних різних типів.
Провайдери ADO забезпечують з'єднання програми, що використовує дані через ADO, з джерелом даних (сервером SQL, локальної СУБД і файлової системою. Для кожного типу сховища даних повинен існувати провайдер ADO.
Провайдер «знає» про місцезнаходження сховища даних та її зміст, вміє звертатися до даних із запитами та інтерпретувати повертається службову інформацію та результати запитів з метою їх передачі з додатком. [5]
Механізм доступу до даних через ADO і численні об'єкти, і інтерфейси реалізовані в VCL Delphi у вигляді набору компонентів, розташованих на сторінці ADO. Всі необхідні інтерфейси, що забезпечують роботу компонентів, оголошені і описані у файлах OleDB.pas і ADODB.pas.
Така архітектура дозволяє зробити набір об'єктів і інтерфейсів відкритим і розширюваним. Набір об'єктів і відповідний провайдер може бути створений для будь-якого сховища даних без внесення змін у вихідну структуру ADO.
Оскільки технологія ADO заснована на стандартних інтерфейсах СОМ, які є системним механізмом Windows, це скорочує загальний обсяг працюючого програмного коду і дозволяє передавати програми БД без допоміжних програм і бібліотек.
На закладці ADO розташовані компоненти:
1) Компоненти з'єднання:
- ADOConnection;
- ADOCommand;
2) Стандартні компоненти:
- ADODataSet - універсальний набір даних;
- ADOTable - таблиця БД;
- ADOQuery - запит SQL;
- ADOStoredProc - збережена процедура.
На сторінці ADO Палітри компонентів Delphi, окрім компонентів сполуки є стандартні компоненти, що позначають набір даних та адаптовані для роботи з сховищем даних ADO.
Компонент ADOConnection увібрав можливості перечіслітеля, джерела даних та сесії з можливостями обслуговування транзакцій. Текстові команди ADO реалізовані в компоненті ADOCommand. Набори рядів можна отримати за допомогою компонентів ADOTable, ADOQuery, AOostoredProc.
Кожен з них реалізує спосіб доступу до конкретного типу представлення даних в сховищі. Стосовно компонентів Delphi, сукупність повертаються із сховища даних рядків будемо називати набором записів. Набір властивостей і методів компонентів ADO забезпечує реалізацію всіх необхідних додатком БД функцій. Способи використання компонентів ADO трохи відрізняються від стандартних компонентів VCL доступу до даних. Однак при необхідності розробник може використовувати всі можливості інтерфейсів ADO, звертаючись до них через відповідні об'єкти ADO. Посилання на об'єкти є в компонентах. [10]
Механізм з'єднання з сховищем даних ADO.
Перед створенням з'єднання необхідно визначити його параметри. Для цього, як вже говорилося, призначено властивість ConnectionString.
Набір параметрів змінюється в залежності від типу використовуваного провайдера і може налаштовуватися як вручну, так і за допомогою редактора. Для того щоб викликати редактор з'єднань, необхідно двічі клацнути на компоненті TADOConnection.
У результаті буде активовано діалогове вікно. У цьому вікні можна налаштувати з'єднання, використовуючи поле Use Connection String, або завантажити параметри з'єднання з файлу в розділі Use Data Link File. Параметри з'єднання зберігаються у файлах UDL, що представляють собою звичайні текстові файли, що містять установки з'єднання.
Для того щоб настроїти з'єднання зданим провайдером, необхідно натиснути на кнопку Build. З'явиться вікно, в якому буде опубліковано список доступних провайдерів.
На вкладці Provider можна вибрати відповідний провайдер даних OLE DB для конкретного джерела даних. У списку провайдерів також присутні провайдери, призначені для доступу до конкретних службам операційної системи. На вкладці Connection необхідно вказати шлях до бази даних або сервер. Вкладка Advanced призначена для вказівки режиму доступу, аналогічно властивості Mode. Вкладка АН призначена для більш «тонкої» налаштування специфічних властивостей провайдера. Для подальшої роботи потрібно вибрати провайдер Microsoft Jet 4.0 OLE DB Provider. Потім потрібно перейти на вкладку Connection. З'явиться вікно.
У вікні необхідно вказати шлях до бази даних. У полі Select or enter a database name потрібно вказати шлях до демонстраційної базі dbdemos.mdb. Після вказівки шляху до бази даних та завдання решти необхідних параметрів потрібно перевірити створене з'єднання за допомогою кнопки Test Connection. Якщо параметри з'єднання вказані вірно, з'явиться повідомлення Test connection succeeded. Після закриття цього вікна у рядку з'єднання буде відображена інформація, за допомогою якої провайдер зможе отримати доступ до даних.
Компонент TADOQuery TADOQuery дозволяє виконувати SQL-запити при роботі з даними через ADO. З'єднання з сховищем даних здійснюється стандартним методом. Текст запиту міститься у властивості SQL.
Параметри запиту містяться у властивості Parameters. У випадку, якщо компонент повертає набір даних, його слід відкривати методом Open або привласнити властивості Active значення True. Якщо запит не повинен повертати набір даних (оператори INSERT, UPDATE, DELETE і CREATE TABLE), то запит слід виконувати викликом методу ExecSQL. Метод повертає число оброблених запитом записів.
Властивість RowsAffected містить число записів, які зачепила останній виконувався запит.
Компонент TADOTable використовується для доступу до сховищ даних ADO та подання інформації з них в табличному вигляді. Компонент надає прямий доступ до кожного запису і її полях, наслідуючи властивості і методи класу TCustomADODataSet. Компонент зв'язується з базою даних через властивості Connection або ConnectionString.
Ім'я таблиці вказується у властивості TableName. Властивість TableDirect вказує, яким чином набір даних зв'язується з сховищем даних. Так як не всі провайдери підтримують пряме з'єднання з набором даних, то в деяких випадках для зв'язку зі сховищем даних доводиться використовувати SQL-оператори. При установці властивості значення True компонент використовує фонові SQL-запити для доступу до даних.
Використовуючи властивість Readonly, можна встановити обмеження «тільки для читання» на цю таблицю, заборонивши, таким чином, можливість змінювати дані. У властивості MasterSource вказується компонент TDataSource, використовуваний для створення відносини посилальної цілісності Master-Detail.
Метод GetlndexNames повертає список індексів, доступних компоненту як список.
Компонент TDataSource - цей компонент зв'язується з набором даних. Цей зв'язок здійснюється через властивість DataSet, яке містить інформацію про поточний стан набору даних. У цього компонента існує набір властивостей і методів, які полегшують роботу з ним.
Властивість AutoEdit автоматично переводить набір даних в стан редагування, якщо має значення True, коли пов'язаний елемент введення отримує фокус.
Метод Edit переводить зв'язаний набір даних у стан редагування. Метод-обробник OnDataChange викликається при редагуванні даних у зв'язаному візуальному компоненті.
Метод-обробник події OnUpdateData викликається перед тим, як змінені дані будуть збережені в наборі даних. Оброблювач викликається перед виконанням методу Post.
Метод-обробник події OnStateChange викликається, коли змінюється стан пов'язаного набору даних.
Набір даних - масив записів, отриманий додатком за власним запитом, називається набором даних. Набір даних як об'єкт веде свій початок від класу TDataSet і успадковує його властивості. [10]
3.2 Компоненти доступу до даних
Компоненти доступу до даних є невізуальними компонентами. Таблиці БД розташовуються на диску і є фізичними об'єктами. Для операцій з даними, що містяться в таблицях, використовуються набори даних. У термінах системи Delphi набір даних представляє собою сукупність записів, взятих з однієї або декількох таблиць БД. Записи, що входять в набір даних, відбираються за певними правилами, при цьому в окремих випадках набір даних може включати в себе всі записи з пов'язаної з ним таблиці або не містити жодного запису. Набір даних є логічною таблицею, з якою можна працювати при виконанні програми. Взаємодія таблиці і набору даних нагадує взаємодія фізичного файлу, файлової змінної. [5]
У Delphi для роботи з наборами даних служать компоненти DBTable і ADOTable, DBQuery і ADOQuery, DataAccess, DataControl, DecisionQuery і StoredProc.
Компонент StoredProc використовується для виклику збережених процедур при організації взаємодії з віддаленими БД, а компонент UpDateSQL забезпечує роботу з кешовані змінами в записах. Компонент DecisionQuery застосовується при побудові систем прийняття рішень. Найбільш універсальними і, відповідно, часто використовуваними є компоненти Table і Query, що задають набори даних. [5]
Базові можливості доступу до БД забезпечує клас DataSet, що представляє набори даних у вигляді сукупності рядків і стовпців (записів і полів). Цей клас надає основні засоби навігації та редагування наборів даних.
Компонент DataSet призначений для представлення набору даних зі сховища даних ADO. Він простий у використанні, маючи лише кілька власних властивостей і методів.
Це єдиний компонент ADO, інкапсулює набір даних, для якого опубліковані властивості, що дозволяють керувати командою ADO. У результаті компонент являє собою гнучкий інструмент, який дозволяє (в залежності від типу команди та її тексту) отримувати дані з таблиць, запитів SQL, збережених процедур, файлів і т. д. [5]
Компоненти Table і Query є похідними від класу ADODataSet нащадка класу DataSet. Вони демонструють схожі з базовими класами характеристики і поведінку, але кожен них має і свої особливості.
Компонент АDOTаblе забезпечує використання в додатках Delphi таблиць БД, підключених через провайдери OLE DB. За своїм функціональним можливостям і застосуванню він подібний до стандартного табличному компоненту. В основі компонента лежить використання команди ADO, але її властивості налаштовані заздалегідь і зміні не підлягають.
Інші властивості і методи компонента забезпечують застосування індексів. Так як не всі провайдери ADO забезпечують пряме використання таблиць БД, то для доступу до них може знадобитися запит SQL.
Компонент Table являє собою набір даних, який в деякий момент часу може бути пов'язаний тільки з однією таблицею БД. Цей набір даних формується на базі навігаційного способу доступу до даних, тому компонент Table рекомендується використовувати для локальних БД, таких як dBase і Paradox. При роботі з віддаленими БД слід використовувати компонент Query. Зв'язок між таблицею і компонентом Table встановлюється через його властивості Table Name, яке задає ім'я таблиці.
При завданні значення властивості Table Name вказується ім'я файлу та розширення ім'я файлу. На етапі розробки програми імена всіх таблиць доступні в спадному списку Інспектора об'єктів. У цей список потрапляють таблиці, файли яких розташовані в каталозі, зазначеному у властивості Table Name.
Компонент ADOQuery забезпечує застосування запитів SQL при роботі з даними через ADO. За своєю функціональністю він подібний до стандартного компоненту запиту.
Компонент Query представляє собою набір даних, записи якого формуються в результаті виконання SQL-запиту і засновані на реляційному способі доступу до даних. При роботі з віддаленими БД рекомендується використовувати набір даних Query. При роботі з віддаленими базами даних слід звертатися до засобів мови SQL. Це відноситься і до таких операцій, як переміщення по набору даних або вставка в нього записів. Якщо ж для компонента Query використовуються методи типу Next і Insert, то замість реляційного способу доступу до даних буде застосовано навігаційний. У результаті набору даних Query буде мало чим відрізнятися від набору даних Table. На відміну від компонента Table. Набір даних Query може включати в себе записи більш ніж однієї таблиці БД. Текст запиту, на підставі якого в набір даних відбираються записи, міститься у властивості SQL типу Strings. Запит включає в себе команди на мові SQL і виконується при відкритті набору даних. Запит SQL іноді називається SQL-програмою. SQL-запит можна формувати і змінювати динамічно, вносячи зміни до його тексту безпосередньо при виконанні програми. [5]
Компоненти для роботи з даними розташовані на сторінці DataControls палітри компонентів і призначені для побудови інтерфейсної частини програми. Вони використовуються для навігації по набору даних, а також для відображення і редагування записів. [5]
Одні візуальні компоненти для роботи з даними призначені для виконання операцій з полями окремого запису, вони відображають і дозволяють редагувати значення поля поточного запису. До таких компонентів належать, наприклад, однорядковий редактор Edit і графічний огляд Image.
Інші компоненти служать для відображення і редагування відразу декількох записів. Прикладами таких компонентів є сітки DBGrid і DBCtrlGrid, що виводять запису набору даних в табличному вигляді. Візуальні компоненти для роботи з даними схожі на відповідні компоненти сторінок Standard і Additional і відрізняються, в основному, тим, що орієнтовані на роботу з БД і мають додаткові властивості DataSource і Datafield. Перше з них вказує на джерело даних, а друге - на поле набору даних, з яким пов'язаний візуальний компонент. Наприклад, Edit відображає строкове значення, дозволяючи користувачеві змінювати його.
Для всіх візуальних компонентів, призначених для відображення і редагування значень полів, при зміні користувачем їхнього вмісту набір даних автоматично переводиться в режим редагування. Вироблені за допомогою цих компонентів зміни автоматично зберігаються в пов'язаних з ними полях при настанні певних подій.
При програмному зміні вмісту ці візуальних компонентів набір даних автоматично в режим редагування не перекладається. Для цієї мети в коді повинен попередньо викликатися метод Edit набору. Щоб зберегти зміни в полі (полях) поточного запису, ми повинні забезпечити відповідні дії, наприклад, виклик методу Post або перехід до іншого запису набору даних. [5]
У бібліотеці візуальних компонентів для всіх компонентів, в тому числі і призначених для роботи з даними, базовим є класу Control. Він забезпечує основні функціональні атрибути такі, як положення і розміри елемента, його заголовок, колір та інші параметри. Клас Control включає в себе загальні для візуальних компонентів властивості, події і методи. У цілому візуальні компоненти можна розділити на дві групи: віконні та неокони.
Віконний елемент керування являє собою спеціалізоване вікно, призначене для вирішення конкретного завдання. До таких елементів відносяться, наприклад, поля редагування, командні кнопки, смуги прокручування.
Такі компоненти, як Edit, DBEdit, Memo або DBMemo при отриманні фокусу вводу відображають у своїй області курсор редагування. Компоненти, не пов'язані з редагуванням інформації, отримання фокусу введення звичайно відображають за допомогою за допомогою пунктирного чорного прямокутника.
До неокони елементам управління базовим є клас GraphiControl, вироблений безпосередньо від класу Control. Неокони елементи управління на можуть отримувати фокус вводу. Їх перевагою є менш витрачання ресурсів.
Властивості дозволяють управляти зовнішнім виглядом та поведінкою компонентів при проектуванні і при виконанні програми. Зазвичай установка значень більшості властивостей компонентів виконується на етапі проектування за допомогою інспектора об'єктів.
Властивість Name вказує на ім'я компонента, що використовується для управління компонентів під час виконання програми. Кожен новий компонент, що поміщається на форму, отримує ім'я за замовчуванням, автоматично утворене шляхом додавання до назви компонента його номера в порядку приміщення на форму. На етапі розробки програми ми можемо змінювати ім'я компонента на більш осмислене і відповідне призначенням компонента.
Властивість Aling визначає спосіб вирівнювання компонента на самій формі, на якій воно знаходиться. Вирівнювання використовується у випадку, коли потрібно, щоб будь-якої інтерфейсний елемент займав певне положення.
Властивість Caption містить рядок для написи заголовка компонента. Окремі символи в заголовку можуть бути підкреслені, вони означають комбінації клавіш швидкого доступу.
Властивість Color визначає колір фону. Часто зручно задавати кольори за допомогою констант. Відображувані колір залежить від параметрів відеокарти і монітора, в першу чергу від встановленого кольорового вирішення.
Візуальні компоненти здатні генерувати і обробляти досить велика кількість подій різних видів. До найбільш загальних груп подій можна віднести наступні дії:
- Вибір керуючого елемента;
- Переміщення покажчика миші;
- Натискання клавіш клавіатури;
- Отримання і втрата керуючим елементом фокусу введення;
- Переміщення об'єктів методом drag-and-drop.
Існують і більш складні події, що вимагають передачі додаткових параметрів, наприклад подія, пов'язана з переміщенням покажчика миші, передає координати покажчика.
3.3 Доступ до даних
Навігаційний спосіб доступу полягає в обробки кожного запису набору даних. Перевагою цього способу є простота кодування операції, а основний недолік полягає в тому, що додаток отримує всі записи набору незалежно від того, скільки їх насправді потрібно обробити. Це призводить до великого навантаження на мережу, особливо при інтенсивному обміні даними. Тому застосування навігаційного способу доступу звичайно обмежується локальними БД.
При навігаційному способі доступу операції виконуються з окремими записами. Кожен набір даних має покажчик поточного запису, то є записи, з полями якої можуть бути виконані такі операції, як редагування або видалення. Компоненти Table і Query дозволяють управляти положенням цього покажчика. [5]
Навігаційний спосіб доступу дає можливість здійснювати наступні операції:
- Сортування записів;
- Навігація по набору даних;
- Редагування записів;
- Вставка і видалення записів;
- Фільтрація записів;
- Пошук записів.
Редагування записів полягає в зміні значень їх полів. Редагувала, може бути тільки поточний запис, тому перед діями, пов'язаними з редагуванням, зазвичай виконуються операції з пошуку і переміщення на необхідну запис. Після того. Як покажчик поточного запису встановлений на потрібний запис, і набір даних знаходиться в режимі перегляду, для редагування запису слід:
- Перевести набір даних в редагування;
- Змінити значення полів запису;
- Підтвердити зміни або відмовитися від них.
Метод Insert переводить набір даних в режим вставки і додає до нього нову порожню запис. Щоб додати записи потрібно:
- Перевести набір даних в режим запису;
- Задати значення полів нового запису;
- Підтвердити зміни або відмовитися від них.
Видалення поточного запису виконує метод Delete, який працює тільки з модифікуються набором даних. У разі успішного видалення запису поточної стає наступний запис, якщо ж віддалялася останній запис, то курсор переміщається на попередній запис, яка після видалення стає останньою. На відміну від деяких СУБД, в Delphi видаляється запис дійсно видаляється з набору даних.
Порядок розташування записів може бути невизначеним. За замовчуванням записи не відсортовані або сортуються. З відсортованими наборами записів працювати більш зручно. Сортування полягає в упорядкуванні записів за певним полю в порядку зростання або убування містяться в ньому значень. Сортування можна виконувати і по декількох полях. [5]
При сортування по двох полях запису спочатку впорядковуються за значеннями першого поля, а потім групи записів з однаковим значенням першого поля сортуються по другому полю. Сортування наборів даних Table і Query виконується різними способами. Сортування наборів даних Table виконується автоматично за поточним індексом. При зміні індексу відбувається автоматичне переупорядочивание записів. Таким чином, сортування можлива по полях, для яких створено індекс.
Для сортування за кількома полями потрібно створювати індекс, що включає ці поля. Напрямок сортування визначається параметром ixDescending поточного індексу, за замовчуванням він вимкнений, та впорядкування виконується в порядку зростання значень. Якщо для індексу ознака ixDescending включений, то сортування виконується в порядку убування значень. Поля, за якими сортуються запису, встановлюються через властивостей IndexName.
Переміщення по набору даних полягає в управлінні покажчиком поточного запису. Цей покажчик визначає запис, з якою будуть виконуватися такі операції, як редагування або видалення.
Перед переміщення покажчика поточного запису набір даних автоматично переводиться в режим перегляду. Якщо поточна запис перебувала в режимах редагування або вставки, то перед переміщенням покажчика зроблені в запису зміни вступають в силу, для чого набір даних автоматично викликає метод CheckBrowseMode. Для переміщення покажчика поточного запису в наборі даних використовуються методи:
- Процедура First - установка на перший рядок;
- Процедура Next - установка на наступний рядок;
- Процедура Last - установка на останній рядок;
- Процедура Prior - установка на попередній рядок.
При переміщенні по записах набору даних пов'язані з ним візуальні компоненти відображають зміни даних, причому зміна відображення може відбуватися досить швидко.
Побічним ефектом виконання ряду операцій з наборами даних є зміна положення покажчика поточного запису. Часто цей ефект ненадійний, тому що після виконання такої операції покажчик знаходиться не в тому місці, де був до початку операції. При цьому доводиться знову відшукувати потрібну запис і ставити на неї вказівник, що незручно навіть при невеликій кількості записів.
Фільтрація записів - це завдання обмежень для записів, що відбираються в набір даних. Набір даних являє собою записи, набрані з однієї або декількох таблиць. Склад записів в наборі даних в даний момент часу залежить від встановлених обмежень, у тому числі і від фільтрів. Система Delphi дає можливість здійснювати фільтрацію записів:
- За висловом;
- За діапазоном.
За замовчуванням фільтрація записів не ведеться, і набір даних Table містить всі записи пов'язаної з ним таблиці БД, а в набір даних Query включаються всі записи, що задовольняють SQL-запиту, що міститься у властивості SQL. Фільтрація схожа на SQL-запити, але є менш потужним засобом. У порівнянні з SQL-запитами фільтрація менш ефективна, так як обмежується кількість записів, видимих ​​в наборі.
При використанні фільтрації за висловом набір даних обмежується записами, що задовольняють висловом фільтра, що задає умови відбору записів.
Перевагою фільтрації за висловом є те, що вона може бути застосовна до будь-яких полях, в тому числі і неіндексовані. У зв'язку з тим, що в процесі відбору проглядаються всі записи таблиці, фільтрація за висловом ефективна при невеликій кількості записів.
Для завдання вираження фільтра представляє собою конструкцію, до складу якої можуть входити наступні елементи:
- Імена полів таблиці;
- Літерали;
- Операції порівняння;
- Арифметичні операції;
- Логічні операції;
- Круглі і квадратні дужки.
Якщо ім'я поля містить прогалини, то його укладають у квадратні дужки. Імена змінних у виразі фільтра використовувати не можна. Якщо у виразі фільтра потрібно включити значення змінної або властивості будь-якого компоненту, то це значення повинно бути перетворено у послідовну тип. Операції порівняння представляють собою звичайні відносини <,>,=,<=,>=,<>. Арифметичними є операції +, -, * і /. В якості логічних операцій можна використовувати AND, OR і NOT. Круглі дужки застосовуються для зміни порядку виконання арифметичних і логічних операцій.
Набір даних Table допускається два способи завдання умови фільтрації: су допомогою виразу фільтра Filter і в обробнику події OnFilterRecord.
У разі набору даних Query для записів можна використовувати: SQL-запит, обробник собитіяOnFilterRecord, вираження фільтра.
При фільтрації по діапазону в набір даних включаються запису, значення полів яких потрапляють в заданий діапазон, тобто умовою фільтрації є вираз виду «значення> нижня межа AND значення <верхньої межі». Така фільтрація застосовується до наборів даних Table.
Гідність фільтрації по діапазону є висока швидкість обробки записів. На відміну від фільтрації за висловом, коли послідовно проглядаються всі записи таблиці, фільтрація по діапазону ведеться індексно-послідовним методом, тому цей спосіб фільтрації застосовується тільки для індексованих полів. Індекс поля, діапазон якого заданий як поточний за допомогою властивості IndexName або IndexFieldName. Якщо поточний індекс не встановлено, то за замовчуванням використовується головний індекс.
Для включення і виключення фільтрації за діапазоном застосовуються методи ApplyRange і CancelRange. Перший з них активізує фільтрацію, а інший - деактивізує. Попередньо для індексного поля або полів, за яким виконується фільтрація, слід задати діапазон допустимих значень. Коли один з кордонів діапазону не задана, то діапазон відкритий, тобто нижня межа стає рівною мінімально можливого, а верхня межа - максимально можливого значення цього поля.
Пошук запису, що задовольняє певним умовам, означає перехід на цю запису. Пошук в чому схожий на фільтрацію, тому що в процесі пошуку також виконується перевірка полів записів на деякі умови. Відмінність полягає в тому, що в результаті пошуку кількість записів в наборі даних не змінюється.
При організації пошуку записів важливе значення має наявність індексу для полів, за якими ведеться пошук. Індексування значно підвищує швидкість обробки даних, крім того, ряд методів може працювати тільки з індексованими полями.
Для пошуку записів по полях служать методи Locate і Lookup, причому поля можуть бути не індексованими. Функція Locate шукає запис із заданими значеннями полів. Якщо задовольняють умовам пошуку запису існує, то покажчик поточного запису встановлюється на першу з них. Якщо запис знайдено, функція повертає значення True, у противному випадку значення False. Зазвичай при розробки програми користувачеві надається можливість впливати на процес пошуку су допомогою керуючих елементів, розташованих на формі. При цьому дії користувача з управління пошуком в наборі даних мало, чим відрізняються від аналогічних дій при виконанні фільтрації. Функція Lookup так само здійснює пошуку запису, що задовольняє певним умовам, але, на відміну від методу Locate, не переміщує покажчик поточного запису, а зчитує інформацію з полів запису. Ще одна відмінність між двома методами полягає в тому, що метод Lookup здійснює пошук на точну відповідність значень для пошуку і значень у полях записів з урахуванням регістру букв.
Для набору даних Table є методи, що дозволяють вести пошук записів тільки по індексних полях. Перед викликом будь-якого з цих методів слід встановити як поточного індекс, побудований по використовуваних для пошуку полях. Методи пошуку можна розділити на дві групи, в першій групі методи, призначені для пошуку на точну відповідність, а іншу утворюють методи, що допускають лише частковий збіг заданих для пошуку значень і значень полів записів. Якщо заданим умовам пошуку відповідає декілька записів, то покажчик поточного запису встановлюється на першу з них. Порядок сортування і, відповідно, порядок розташування записів у наборі дані, визначається поточним індексом, за яким і ведеться пошук. [5]
3.4 Створення звітів в Delphi
Для виведення інформації не друк використовувалися звіти створені в Delphi. Звіт - це друкарський документ, що містить дані, аналогічні одержувані в результаті виконання запиту до БД. У Delphi для створення звітів служить генератор звітів QuickReport, що містить великий набір компонентів.
Компоненти, призначені для створення звітів, знаходяться на сторінці QReport палітри компонентів. Більшість компонентів звіту є візуальними. Багато хто з них мало відрізняються від аналогічних компонентів сторінок Standard, Additional і Data Controls. Наприклад, компоненту QRImage відповідають компоненти Image і DBImage.
Головним компонентом звіту є компонент-звіт QuickRep, представляє собою основу, на якій розміщуються інші компоненти. Компонент QuickRep зазвичай розміщується на окремій формі, призначеної для створення звіту. За замовчуванням він має ім'я QuickRep1. якщо на формі розміщується інший звіт, він отримує ім'я QuickRep2 і т.д.
Компонент QuickRep при переміщення його на форму має вигляд сторінки формату А4, спочатку відображається в натуральну величину. На етапі розробки програми можна змінити масштаб сторінки і розміщених на ній компонентів за допомогою властивості Zoom типу Integer (значення цієї властивості встановлюється у відсотках, за замовчуванням 100%).
Звіт можна помістити на будь-яку форму додатку, наприклад на головну. У цьому випадку звіт (сторінка) створює свого роду фон, на якому розташовані керуючі елементи форми.
Компонент QuickRep зв'язується з набором даних Table або Query, для якого створюється звіт, за допомогою властивості DataSet. При цьому наборі даних Query може містити записи, вибрані з різних таблиць. При друку звіту в процесі виконання програми набір дано повинен бути відкритий. Під час побудови звіту можна використовувати спеціально створювані набори даних і розміщувати його на формі, при цьому джерело даних DataSource не потрібно. На практиці компонент QuickRep зазвичай пов'язують із набором даних, записи якого відображаються на формі у візуальних компонентах. У цьому випадку в звіт потрапляють записи, що задовольняють, наприклад, критерієм фільтрації і сортування, що задається користувачем.
Звіт складається з окремих смуг - складових частин звіту (Малюнок 5), які визначають зміст і вигляд створеного документа. Смуга є елементом звіту. Кожен елемент розміщуються на своєму місці і призначений для відображення відповідних компонентів звіту і виведення даних.
Конструювання звіту в основному аналогічно конструювання форми. Управляти наявністю смуг в звіті можна за допомогою властивості Bands множинного типу TQuickRepBadns. При розробки програми включення / відключення смуги виконується установкою логічного значення відповідного подсвойства властивості Bands, наприклад, для смуги заголовка звіту цим подсвойством є HasTitle. З допомогою цієї властивості можна включати смуги: верхній колонтитул, заголовок звіту, заголовки стовпців, область даних, підсумок звіту, нижній колонтитул. Так само ці смуги можна вставляти в звіт за допомогою компонента смуги QRBand.
Смуга звіту (компонент QRBand) є основною складовою частиною звіту, на якій розміщуються інші його компоненти. Типи смуги визначаються властивістю BandType типу TQRBandType, що може приймати такі значення:
- RbTitle - заголовок звіту;
- RbpageHeader - верхній колонтитул;
- RbDetail - дані записів набору даних;
- RbPageFooter - нижній колонтитул;
- RbSummary - підсумок звіту;
- RbGroudHeader - заголовок групи, який перебуває для кожної групи;
- rbGroudFooter – примечание группы, которое выводится для каждой группы;
- rbSubDetail – данные подчиненного набора данных для отчета «мастер - детальный»;
- rbColumnHeader – заголовки столбцов, печатаемые один раз на каждой странице над данными.
При установки типа полосы она автоматически размещается на своем месте в отчете выравнивается по ширине страницы отчета с учетом левого и правого полей. Разработчик не имеет возможности переместить полосу на другое место с помощью мыши. Изменить ширину полосы можно косвенно, изменяя размеры страниц и полей.
При создании в отчет нужно включить не более одной полосы каждого вида, так как при печати отчета «лишние» полосы одного и того же вида учитываться не будут. Например, если в отчет включены две полосы заголовка отчета, то ошибки транзакции не возникает, но в качестве заголовка используется первая из этих полос. Каждая полоса может иметь отдельную рамку, которой управляет свойство Frame,не отличающегося от аналогичного свойства самого компонента отчета QuickRep.
Заголовок отчета выводиться один раз на первой странице сразу под верхним колонтитулом, если он есть. В полосе заголовка обычно размещаются надписи QRLabel, содержащие требуемый текст, как правило, название всего отчета. При необходимости в заголовке можно разместить, например, сведения о названии, адресе и телефоне организации, а также логотип.
Колонтитулы печатаются в начале и конце каждой страницы, в них обычно выводятся сведения о дате, время печать, а также номер страницы. Для этого в полосах колонтитулов чаще всего размещаются компоненты QRSysData , которым устанавливаются требуемое значение свойства Data. В полосе колонтитула можно размещать и другие компоненты, например, QRLabel для вывода на каждой странице названия организации.
После создания полосы определенного типа в ней размещаются соответствующие компонент. При этом необходимо только компоненты страницы QReport. Размещение на полосе других компонентов, не взывает ошибки транзакции, но в сформированный отчет такие компоненты не попадают. Можно разместить компонент отчета и вне полосы, на компоненте-отчете QuickRep. В этом случае он будет выводиться на каждой странице отчета. Обычно используются следующие компоненты отчета:
- QRTable – надпись, содержащая текст;
- QRDBText – значение поля записи, обычно размещается в полосе данных;
- QRExpr – значение, формируемое на основе выражения, в котором могут использоваться значение полей записей;
- QRSysData – системная информация, обычно используемая для итоговых полос и полос колонтитулов;
- QRImage – графический обзор(например, логотип организации);
- QRShape – геометрическая фигура, размещаемая в любой полосе, так же позволяет оформить сетку вокруг выводимых данных.
Возможность автоматического изменения размеров содержащего текст компонента по размеру текста управляет свойство AutoSize. По умолчанию размер текстового компонента автоматически подстраивается под содержащийся в нем текст, так как свойство AutoSize имеет значение True. Если компоненты отчета, в первую очередь элементы полосы данных, имеют рамку, то размеры этих компонентов должны быть постоянными.
Полосы заголовков столбцов и данных является основными полосами, в которых размещаются компоненты, обеспечивающие табличный вывод содержимого набора данных. Заголовки столбцов выводятся на каждом листе отчета.
Для заголовка столбцов данных в полосу заголовков обычно помещаются компоненты QRLabel, котором находится тексте, соответствующий полям данных.
Для вывода значений полей записей в полосу данных обычно помещаются компоненты QRDBText и QRExpr. Имя набора даны, указывается в свойстве DataSet, чьё значение устанавливается автоматически при помещении компонента в полосу данных, а имя поля задается в свойстве DataFileld.
На этапе разработки в отчете присутствует только одна полоса данных, но при форматировании отчета отдельная полоса данных будет выведена для каждой записи отчета. Если набор данных является пустым и не содержит записей, то область данных не выводится.
Компонент QRExpr позволяет вставлять в отчет значение выражения, рассчитываемого обычно с участием различных полей записей. Выражение заносится в свойство Exdivssion типа String. Использование компонента QRExpr аналогично использованию вычисляемых полей набора данных. Однако при просмотре отчета на этапе разработки значения компонентов QRExpr выводятся, в то время как значение выделяемы полей не определяются.
Итоговая полоса отчета выводится один раз в конце отчета сразу после полосы данных. В этой полосе обычно стоят либо итоговые сведения отчета, например, среднее и максимальное значения по данным какого-либо поля. В итоговой полосе обычно размещается компонент QRLabel для вывода записей и QRExpr для вывода значения выражения.
Можно выделить следующие виды отчетов.
Простой отчет представляет собой отчет на основе данных из одного набора данных и содержит сведения, которые выводятся в табличном виде без дополнительных условии, например, группирование данных. Размещение и вид печатаемых в отчете данных аналогичны размещению и виду данных, отображаемы в сетке DBGrid. Отличием является то, что данные отчета размещаются не на форме, а на бумажном документе, и их нельзя редактировать.
Простой отчет может содержать следующие полосы, перечисляемые в порядке размещения на странице: верхний колонтитул; заголовок отчета; заголовки столбцов; данные; итог отчета; нижний колонтитул.
Выводимые в отчете данные можно группировать по определённому признаку. Для группирования записей отчета по определенному полю в наборе данных должен быть установлен текущий индекс, построенный по этому полю. Если индексу не задан или установлен по другому полю, то ошибок компиляции не возникает, то группирование записей выполняется неправильно. Можно группировать данные, находящиеся в одном наборе данных, или данные из связанных наборов данных.
В отчете с группирование данных вместо полосы Detail нужно использовать комбинацию полос:
1) QRGroup – название Group Header;
2) QRBand – полоса даны, название Detail;
3) QRBand – полоса нижнего колонтитула группы, название Group Footer.
Эти полосы должны располагаться в указанном порядке. Если группа не имеет нижнего колонтитула, то значение этого свойства можно не задавать. Остальные полосы отчета с группирование данных создаётся и используется так же, как в обычном простом отчете.
На практике наборы данных чаще всего связываются отношением «главный-подчиненный» способом. Такой отчет содержит:
- Заголовок отчета;
- Заголовки столбцов;
- Области данных – в качестве набора данных устанавливается главный набор. В ней обычно размещаются компоненты QRDBText, текст, который является заголовками столбцов даны детальной области;
- Области детализации – устанавливается подчиненный набор данных. В ней обычно располагаются компоненты QRDBText и QRExpr, с помощью которых выводятся значения полей записей подчиненного набора данных;
- Нижний колонтитул страницы.
Составной отчет объединяет в себе несколько отчетов и представлен компонентом QRCompositeReport, который можно разместить на любой форме. На начальном этапе составной отчет не содержит ни одного отчета. Для добавления к составному отчету нового отчета используется событие OnAddReport, при этом добавляемые отчеты должны быть предварительно подготовлены. Свойство Reports составного отчета содержит список отчетов. Новые отчеты добавляются к этому списку методом Add.[5]
3.5 Создание запросов на языке SQL
При писании программного продукта для выбора студентов из базы данных по определенным критериям использовался язык запросов SQL, так как этот язык используется Delphi и Access.
SQL символізує собою Структурований Мова Запитів. Це - мова, яка дає можливість створювати і працювати в реляційних базах даних, які є наборами зв'язаної інформації, що зберігається в таблицях.
Інформаційний простір стає більш уніфікованим. Це призвело до необхідності створення стандартної мови, який міг би використовуватися у великій кількості різних видів комп'ютерних середовищ. Стандартна мова дозволить користувачам, які знають один набір команд, використовувати їх для створення, знаходження, зміни та передачі інформації - незалежно від того, чи працюють вони на персональному комп'ютері, мережевої робочої станції, або на універсальній ЕОМ. У нашому все більш і більш взаємопов'язаному комп'ютерному світі, користувач забезпечений такою мовою, має величезну перевагу у використанні та узагальненні інформації з ряду джерел за допомогою великої кількості способів. Елегантність і незалежність від специфіки комп'ютерних технологій, а також його підтримка лідерами промисловості в області технології реляційних баз даних, зробило SQL (і, ймовірно, протягом осяжного майбутнього залишить його) основним стандартною мовою. [2]
Мова SQL призначений для маніпулювання даними в реляційних базах даних, визначення структури баз даних і для управління правами доступу до даних в багатокористувацької середовищі. Тому, в мову SQL як складових частин входять:
- язык манипулирования данными (Data Manipulation Language, DML);
- язык определения данных (Data Definition Language, DDL);
- Мова керування даними (Data Control Language, DCL).
Це не окремі мови, а різні команди однієї мови. Такий поділ проведено тільки лише з точки зору різного функціонального призначення цих команд.
Мова маніпулювання даними використовується, як це випливає з його назви, для маніпулювання даними в таблицях баз даних. Він складається з 4 основних команд:
SELECT (вибрати)
INSERT (вставити)
UPDATE (оновити)
DELETE (видалити)
Мова визначення даних використовується для створення і зміни структури бази даних та її складових частин - таблиць, індексів, уявлень (віртуальних таблиць), а також тригерів і збережених процедур. Основними його командами є:
CREATE DATABASE (создать базу данных);
CREATE TABLE (создать таблицу);
ALTER DATABASE (модифицировать базу данных);
ALTER TABLE (модифицировать таблицу);
DROP DATABASE (удалить базу данных);
DROP TABLE (удалить таблицу);
DROP INDEX (удалить индекс);
DROP PROCEDURE (удалить сохраненную процедуру).
Мова керування даними використовується для управління правами доступу до даних і виконанням процедур в багатокористувацької середовищі. Більш точно його можна назвати "мова управління доступом". Он состоит из двух основных команд: GRANT (дать права), REVOKE (забрать права)
З точки зору прикладного інтерфейсу існують два різновиди команд SQL:
- интерактивный SQL;
- Вбудований SQL.
Інтерактивний SQL використовується в спеціальних утилітах (типу WISQL або DBD), що дозволяють в інтерактивному режимі вводити запити з використанням команд SQL, посилати їх для виконання на сервер і отримувати результати у призначеному для цього вікні.
Вбудований SQL використовується в прикладних програмах, дозволяючи їм посилати запити до сервера і обробляти отримані результати, в тому числі комбінуючи set-орієнтований та record-орієнтований підходи.
Найбільш важливою командою мови маніпулювання даними є команда SELECT. Операція вибірки дозволяє отримати всі рядки (записи) або частину рядків однієї таблиці.
До логічним операторам належать відомі оператори AND, OR, NOT, що дозволяють виконувати різні логічні дії: логічне множення (AND, "перетин умов"), логічне додавання (OR, "об'єднання умов"), логічне заперечення (NOT, "заперечення умов") . У наших прикладах ми вже застосовували оператор AND. Використання цих операторів дозволяє гнучко "налаштувати" умови відбору записів. Оператор AND означає, що загальний предикат буде істинним тільки тоді, коли умови, пов'язані з "AND", будуть істинні.
Оператор OR означає, що загальний предикат буде істинним, коли хоча б одна з умов, пов'язаних з "OR", буде істинним. Оператор NOT означає, що загальний предикат буде істинним, коли умова, перед яким стоїть цей оператор, буде помилковим. В одному предикаті логічні оператори виконуються в наступному порядку: спочатку виконується оператор NOT, потім - AND і тільки після цього - оператор OR. Для зміни порядку виконання операторів дозволяється використовувати дужки.
Порядок рядків, що виводяться може бути змінений за допомогою опціонального (додаткового) пропозиції ORDER BY наприкінці SQL-запиту.
Спосіб упорядкування визначається додатковими зарезервованими словами ASC і DESC. Способом за замовчуванням - якщо нічого не вказано - є упорядкування "по зростанню" (ASC). Якщо ж зазначено слово "DESC", то упорядкування буде проводитися "за спаданням". [2]

4 ПРОЦЕСС РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
В результате разработки программного продукта получилась рабочая программа по чету посещаемости студентов.
На главной форме выбирается специальность, группа, студент, дата, количество пропущенных часов, по какой причине. После нажатия на кнопку «Утвердить» выбранные данных заносятся в базу данных. Так же с этой формы осуществляется переход на другие формы.
Используемые компоненты: DataSource, DBGrid, ADOQuery, ADOTable, Label, Button, ComboBox, DateTimePicker, MainMenu.
Код программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB, Grids, DBGrids, ComCtrls, Menus;
type
TForm1 = class (TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
ADOTable2: TADOTable;
ADOTable3: TADOTable;
Label8: TLabel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
ComboBox6: TComboBox;
ComboBox5: TComboBox;
ComboBox4: TComboBox;
ComboBox3: TComboBox;
ComboBox2: TComboBox;
ComboBox1: TComboBox;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
DateTimePicker1: TDateTimePicker;
N3: TMenuItem;
N4: TMenuItem;
procedure ComboBox1Change (Sender: TObject);
procedure ComboBox2Change (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click (Sender: TObject);
procedure N3Click (Sender: TObject);
procedure N4Click (Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
uses Unit3, Unit2, Unit7;
{$ R *. dfm}
procedure TForm1.ComboBox1Change(Sender: TObject);
var pr:String;
begin
ADOTable1.Open;
ADOTable1.First;
ComboBox2.Items.Clear;
While not ADOTable1.Eof do
begin
if ADOTable1.Fieldbyname('Spesi').AsString=ComboBox1.Text Then
ComboBox2.Items.Add(ADOTable1.fieldbyname('Gruppa').AsString);
ADOTable1.Next;
end;
ADOTable1.Close;
ComboBox2.Sorted:=True;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
var pr1:String;
begin
ADOTable2.Open;
ADOTable2.First;
ComboBox3.Items.Clear;
While not ADOTable2.Eof do
begin
if ADOTable2.Fieldbyname('Gruppa').AsString=ComboBox2.Text Then
ComboBox3.Items.Add(ADOTable2.fieldbyname('FIO').AsString);
ADOTable2.Next;
end;
ADOTable2.Close;
ComboBox3.Sorted: = True;
end;
procedure TForm1.Button1Click (Sender: TObject);
begin
ADOTable3.Insert;
ADOTable3.FieldByName('Spesi').AsString:=Combobox1.Text;
ADOTable3.FieldByName('Gruppa').AsString:=Combobox2.Text;
ADOTable3.FieldByName('FIO').AsString:=Combobox3.Text;
ADOTable3.FieldByName('Date').AsString:=DateToStr (DateTimePicker1.Date);
ADOTable3.FieldByName('Uvazh').AsString:=Combobox4.Text;
ADOTable3.FieldByName('Neuvazh').AsString:=Combobox5.Text;
ADOTable3.FieldByName('Bolezn').AsString:=Combobox6.Text;
ADOTable3.Post;
ADOTable3.Close;
ADOTable3.Open;
ComboBox3.ClearSelection;
ComboBox4.Text:='0';
ComboBox6.Text:='0';
ComboBox5.Text:='0';
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm1.N2Click (Sender: TObject);
begin
close;
end;
procedure TForm1.N3Click (Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
form7.ADOTable1.UpdateBatch;
Form7.Show;
end;
end.
На форме корректировки данных осуществляется изменение или удаление ранее введенных данных.
Используемые компоненты: DataSource, DBGrid, ADOTable, MainMenu, Label, DBNavigator.
Код программы:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls;
type
TForm2 = class (TForm)
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
ADOTable1: TADOTable;
DataSource1: TDataSource;
MainMenu1: TMainMenu;
N1: TMenuItem;
DataSource2: TDataSource;
DBNavigator2: TDBNavigator;
DBGrid2: TDBGrid;
ADOTable2: TADOTable;
Label1: TLabel;
procedure N1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form2: TForm2;
implementation
{$ R *. dfm}
procedure TForm2.N1Click(Sender: TObject);
begin
close;
end;
end.
На форме статистики идет поиск студентов по специальности, группе, ФИО, или дате. Так же можно выбрать студентов имеющих пропуски по неуважительным причинам. Выводится количество пропусков, по какой причине и их процентное соотношение, среднее количество пропущенных часов на одного человека. Все найденные записи могут быть выведены на печать в виде списка.
Используемые компоненты: DataSource, DBGrid, ADOQuery, GroupBox, CheckBox, ADOTable, Label, Button, MainMenu.
Код программы:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, Menus;
type
TForm3 = class (TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Label6: TLabel;
Edit9: TEdit;
Button2: TButton;
Button3: TButton;
Label7: TLabel;
MainMenu1: TMainMenu;
Label8: TLabel;
N2: TMenuItem;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Label9: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure N2Click (Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form3: TForm3;
implementation
uses Unit4, Unit5, Unit6, Unit1;
{$ R *. dfm}
procedure TForm3.Button2Click(Sender: TObject);
Var s, a,b,c,d:real;
begin
ADOQuery1.First;
a:=0;
b:=0;
c:=0;
d:=0;
while not ADOQuery1.Eof do begin
a:=a+ADOQuery1.FieldByName('Uvazh').AsFloat;
b:=b+ADOQuery1.FieldByName('Bolezn').AsFloat;
c:=c+ADOQuery1.FieldByName('Neuvazh').AsFloat;
d:=a+b+c;
ADOQuery1.Next;
end;
Edit6.Text:=FloatToStr(a);
Edit7.Text:=FloatToStr(b);
Edit8.Text:=FloatToStr(c);
Edit9.Text:=FloatToStr(d);
d:=100/d;
edit10.Text:=FloatToStr(a*d) ;
edit11.Text:=FloatToStr(b*d) ;
edit12.Text:=FloatToStr(c*d) ;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin
Form4.QRLabel10.Caption:=Edit9.Text;
Form4.QRLabel11.Caption:=Edit6.Text;
Form4.QRLabel12.Caption:=Edit7.Text;
Form4.QRLabel13.Caption:=Edit8.Text;
Form4.QRLabel14.Caption:=Edit1.Text;
Form4.QuickRep1.Preview;
end;
if CheckBox2.Checked then
begin
Form5.QRLabel9.Caption:=Edit9.Text;
Form5.QRLabel10.Caption:=Edit6.Text;
Form5.QRLabel11.Caption:=Edit7.Text;
Form5.QRLabel12.Caption:=Edit8.Text;
Form5.QRLabel13.Caption:=Edit2.Text;
Form5.QuickRep1.Preview;
end;
if CheckBox3.Checked then
begin
Form6.QRLabel8.Caption:=Edit9.Text;
Form6.QRLabel9.Caption:=Edit6.Text;
Form6.QRLabel10.Caption:=Edit7.Text;
Form6.QRLabel11.Caption:=Edit8.Text;
Form6.QRLabel12.Caption:=Edit3.Text;
Form6.QuickRep1.Preview;
end;
end;
procedure TForm3.Button1Click(Sender: TObject);
var s:String;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
if CheckBox1.Checked then
ADOQuery1.SQL.Add('SELECT *FROM Student WHERE (((Student.Spesi)="'+Edit1.Text+'"));');
if CheckBox2.Checked then
ADOQuery1.SQL.Add('SELECT * FROM Student WHERE (((Student.Gruppa)="'+Edit2.Text+' "));');
if CheckBox3.Checked then
ADOQuery1.SQL.Add('SELECT * FROM Student WHERE (((Student.FIO)="'+Edit3.Text+' "));');
if CheckBox4.Checked then
ADOQuery1.SQL.Add('SELECT * FROM Student WHERE (((Student.Date)="'+Edit4.Text+' "));');
//ShowMessage(ADOQuery1.SQL.Text);
ADOQuery1.Active:=True;
end;
procedure TForm3.N2Click(Sender: TObject);
begin
close;
end;
end.
На форме справочников добавляются группы и фамилии студентов, а также специальности и группы.
Используемые компоненты: DataSource, DBGrid, ADOTable, Label, MainMenu,DBNavigator.
Код программы:
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, Menus;
type
TForm7 = class (TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOTable1: TADOTable;
Label1: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
DBNavigator1: TDBNavigator;
procedure N1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form7: TForm7;
implementation
{$ R *. dfm}
procedure TForm7.N1Click(Sender: TObject);
begin
form7.Close;
end;
Все найденные результаты на форме статистики можно вывести на экран в виде отчета и распечатать его.
Используемые компоненты:QRLabel, QuickRep, PageHeaderBand, TitleBand, DetailBand, SummaryBand, QRDBText.

5 ПРОГРАММНАЯ И ЭКСПЛУАТАЦИОННАЯ ДОКУМЕНТАЦИЯ
Ведомость эксплуатационных документов (ГОСТ 19.507-79).
К эксплуатационных документации относится следующий комплекс документов:
1) опис програми (ГОСТ 19.402-78), в якому містяться відомості про логічну структуру та функціонування програмного продукту;
2) технічне завдання (ГОСТ 19.201-78), що визначає вимоги, які пред'являються до програмного продукту, необхідні стадії і терміни розробки, види випробувань;
3) руководство оператора (ГОСТ 19.505-79) - сведения, необходимые для обеспечения процедуры общения оператора с ЭВМ в процессе выполнения (работы) программного продукта;
Описание программы (ГОСТ 19.402-78).
1) Загальні відомості.
Программный продукт «Учет посещаемости» поможет в контроле за посещаемостью студентов. Використання даного програмного продукту дозволяє:
- Организовать ввод количества пропущенных часов за каждый день по уважительным (болезнь, отпускные) и неуважительным причинам по каждой специальности, группе, студенту
- Организовать возможность подведения итогов посещаемости по каждому студенту, по каждой группе, специальности и в целом по колледжу (процентное соотношение пропущенных часов по болезни, по уважительным причинам, по неуважительным причинам, количество прогулов на 1 человека, общее количество пропущенных часов по группе, по специальности, по колледжу)
- Обеспечить формирование списков студентов, имеющих наибольшее количество пропущенных часов по итогам текущего месяца, с начала учебного года
- Обеспечить формирование отчета.
У даному програмному продукті використовувався мова програмування Delphi, бази даних було створено з використані MS ACCESS.
2) Опис логічної структури.
У процесі роботи над програмним продуктом була розроблена його структура, яка складається з декількох форм. Главной формы из которой можно открыть остальные.
3) Використовувані технічні засоби:
- Процесор-Pentium 3;
- Відеокарта -64 Мб;
- Оперативна пам'ять - не менше 256 Мб;
- ОС - Windows XT;
- Наявність Microsoft Office ACCESS;
- CD-ROM.
4) Завантаження.
Для запуска программы необходимо разместить папку «УЧЕТ ПОСЕЩАЕМОСТИ» на диске D, затем запустить EXE – файл «Учет посещаемости».
Техническое задание (ГОСТ 19.201 – 78).
1) Найменування.
Разработка программного обеспечения по автоматизации учебного процесса в колледже «Учет посещаемости».
2) Підставою для створення є.

Завдання на дипломне проектування.

3) Призначення і мета.
Программный продукт предназначен для использования а колледже для учета посещаемости.
У даний програмний продукт має включатися:
- Рабочую программу «УЧЕТ ПОСЕЩАЕМОСТИ»;
- База данных MS ACCESS «БД»;
4) Безпека.
Даний програмний продукт дозволяє вносити зміни. Так як пропонується перша версія програми, яка містить відкритий код, яка вимагає змін та доопрацювання в міру усунення існуючих помилок і додавання нових функцій. Тому питання про захист міститься в посібнику інформації поки не повинен вирішуватися.
Руководство оператора (ГОСТ 19. 505 – 79).
Для запуска программы необходимо открыть папку на диске D, за тем запустить EXE – файл «Учет посещаемости».
Після цього слід ввести необхідні дані.
Щоб завершити програму закрити всі її вікна.
При виникненні помилок, збоїв, неполадок в роботі з програмним продуктом, необхідно звернутися до фахівця в області інформаційних технологій. Самим користувачам при виявленні неполадок нічого змінювати не рекомендується, так як програмісту буде складніше виявити причину виникнення помилки.

ВИСНОВОК
Задачей дипломного проекта являлась разработка программного продукта по учету посещаемости (на примере колледжа). Для реалізації цього завдання були виконані наступні етапи:
- Спроектирована логическая модель базы данных
- Спроектирована физическая модель базы данных
- Организован ввод количества пропущенных часов за каждый день по уважительным (болезнь, отпускные) и неуважительным причинам по каждой специальности, группе, студенту
- Предусмотрена возможность корректировки данных
- Организована возможность подведения итогов посещаемости по каждому студенту, по каждой группе, специальности и в целом по колледжу (процентное соотношение пропущенных часов по болезни, по уважительным причинам, по неуважительным причинам, количество прогулов на 1 человека, общее количество пропущенных часов по группе, по специальности, по колледжу)
- Предусмотрена возможность сравнения итоговых данных с итогами предыдущего месяца
- Предусмотрена возможность формирования списков студентов, имеющих наибольшее количество пропущенных часов по итогам текущего месяца, с начала учебного года
- Предусмотрена возможность формирования отчета
Данный программный продукт был написан с использованием Microsoft Office Access для создания базы данных и среда разработки программных продуктов Delphi, имеющий большие возможности для работы с базами данных. З'єднання з базою даних вироблено за допомогою технології ADO. Обработка данных производилась при помощи операторов языка запросов SQL.
В результате была создана программа «Учет посещаемости», которая может быть использована в подобных учебных заведениях.
В ходе выполнения дипломной работы был создан программный продукт, дающий возможность вести учет посещаемости. Программа интуитивно проста и понятна для любого пользователя, для ее использования не нужно специального обучения. При цьому вона виконує в основному всі функції, необхідні для нормальної роботи.

C писок ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
1 Гофман В. Е., Хомоненко А. Д. Delphi. Швидкий старт. - СПб.: БХВ-Петербург, 2003. - 288 с.
2 Гофман В. Е., Хомоненко А. Д. Робота з базами даних в Delphi. - СПб.: БХВ-Петербург, 2001. - 656 с.
3 Боровський О. М. Програмування в Delphi 2005. - СПб.: БХВ-Петербург, 2005. - 448 с.
4 Дарахвелідзе П. Г., Марков Е. П. Delphi 2005 для Win32. - СПб.: БХВ-Петербург, 2005. - 1136 с.
5 Сорокін А. В. Delphi. Розробка баз даних. - СПб.: Питер, 2005. - 477 с.
6 Флен М. Є. Біблія Delphi. - СПб.: БХВ-Петербург, 2004. - 880 с.
7 Флен М. Є. Програмування в Delphi очами хакера. - СПб.: БХВ-Петербург, 2003. - 368 с.
8 Флен М. Є. Delphi у жарт і всерйоз: що вміють хакери (+ CD). - СПб.: Пітер. 2006. - 271 с.
9 Архангельський Л.Я. Delphi 2006. Довідковий посібник: Мова Delphi, класи, функції Win32 і. NET. - М.: ТОВ «Біном-Пресс», 2006 р. - 1 152 с.
10 Фаронов В. В. Delphi 2005. Розробка додатків для баз даних і Інтернету. - СПб.: Пітер, 2006. - 603 с.
11 Карпова Т. С. Бази даних: моделі, розробка, реалізація. - СПб.: Питер, 2001. - 304 с.
12 Delphi World 6.0. Електронний довідник.
Додати в блог або на сайт

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

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


Схожі роботи:
Правовідносини у сфері праці Робочий час і час відпочинку
Робочий час і час відпочинку
Робочий час і час відпочинку 2
Робочий час і час відпочинку 3
Робочий час
Робочий час 2
Робочий час
Неповний робочий час
Трудовий договір і робочий час
© Усі права захищені
написати до нас