Інформаційна система "Автозаправна станція"
Проведення комплексного аналізу об’єкту проектування. Побудова діаграми варіантів використання. Функціональна схема, програмне та технічне забезпечення. Вимоги до інтерфейсу. Розробка структури бази даних для забезпечення діяльності автозаправної станції.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 02.12.2016 |
Размер файла | 852,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Міністерство освіти і науки України
Дрогобицький державний педагогічний університет імені Івана Франка
Кафедра інформаційних систем і технологій
Випускова робота
на здобуття кваліфікації - фахівець з інформаційних технологій
Напрям підготовки 6.050101 Комп'ютерні науки
Інформаційна система «Автозаправна станція»
Автор роботи
Малетич Олександр Іванович
Науковий керівник
кандидат фізико-математичних наук
ст. викладач Лучкевич Михайло Михайлович
Дрогобич, 2016
Зміст
Анотація
Annotation
Вступ
1 Аналіз об'єкту проектування
1.1 Коротка характеристика галузі
1.2 Аналіз предметної області
2. Проектування системи
2.1. Побудова діаграми варіантів використання
2.2 Функціональна схема
2.3 Структура бази даних
3. Програмне та технічне забезпечення
3.1 Засоби розробки
3.2 Вимоги до інтерфейсу
3.3 Вимоги до технічного забезпечення
4. Технологічний розділ
4.1 Інструкція користувача
Висновки
Перелік використаної літератури
Додаток A
Анотація
програмний інтерфейс проектування
Структура та обсяг роботи. Пояснювальна записка бакалаврського проекту складається з чотирьох розділів, містить 29 сторінок, 15 рисунків, 1 додаток, 9 джерел.
У випусковій роботі розв'язано задачу проектування та програмної реалізації інформаційної системи автоматизації діяльності автозаправних станцій.
В роботі описано етапи проектування та реалізації інформаційної системи, наведено опис програмного продукту, описано функції, інтерфейс та порядок експлуатації інформаційної системи.
У розділі аналізу об'єкту проектування було розглянуто специфіку галузі предметної області та озвучено загальні вимоги до кінцевого продукту.
У розділі постановки задачі розглянуто варіанти використання інформаційної системи, складено функціональну схему та розроблена структура бази даних для забезпечення діяльності автозаправної станції.
У розділі з програмного та технічного забезпечення описані основні засоби розробки комплексу задач, висунуті вимоги до технічного забезпечення, обрано та обґрунтовано архітектуру програмного забезпечення.
У технологічному розділі описані інтерфейс програми та інструкція користувача.
Annotation
The structure and scope of work. Explanatory note bachelor project consists of four chapters, contains 29 pages, 15 illustrations, 1 supplement, 9 sources.
In issuing work solved the problem of design and software implementation of information system of automation of petrol stations.
The paper describes how the design and implementation of information systems, describes software products, describes features, interface and procedure manual information system.
In the analysis of the object of design was considered the specific industry domain and announced general requirements for the final product.
In the formulation of the problem deals with uses of information system functional diagram drawn and designed database structure for the operation of petrol stations.
The section of the software and hardware development tools describes the main complex tasks put forward requirements for technical support, selected and reasonably architecture software.
In technological section describes the interface and user manual.
Вступ
Актуальність роботи:
Економічні перетворення, що відбулися в останні роки в Україні, привели до змін на товарному ринку. Під час швидкісного зростання парку автомобілів в кілька разів зросла кількість автозаправних станцій (АЗС), а також повністю змінилося надання послуг на них. Все більше наших автозаправних станцій стала відповідати світовим стандартам. Порівнянно з 2000-ним роком сьогодні автозаправна станція обслуговує в кілька раз більше клієнтів. Збільшилась кількість паливно-розливних колонок та швидкість заправки автомобіля ними. Крім того, на автозаправних комплексах можна скористатися різними послугами окрім купівлі бензину (заміна масла, дрібний ремонт, мийка, магазин та ін.).
Комп'ютерні програми, що дозволяють автоматизувати таку діяльність, надають автозаправним станціям цілий ряд переваг. Програмне забезпечення дозволяє автоматизувати управління товарами, завчасно підготувати замовлення постачальнику на проданий в даний час товар, щоб уникнути дефектів і надлишків товару. За рахунок збільшення обороту автозаправна станція може забезпечити більший асортимент товару, фактично більш повно задовольнити попит споживачів.
Метою бакалаврської роботи є реалізація інформаційної системи автоматизації діяльності автозаправних станцій.
Об'єктом є процеси проектування і створення програмних продуктів та підтримки баз даних.
Предметом є методи і засоби проектування та створення програмного продукту для автоматизації роботи автозаправних станцій.
Завдання кваліфікаційної роботи:
* Аналіз предметної області;
* Проектування інформаційної системи;
* Розробка програми для взаємодії з БД.
1. Аналіз об'єкту проектування
1.1 Коротка характеристика галузі
Вперше бензин і інші види палива, такі як побутовий газ, почали продавати в аптеках.
АЗС - комплекс будівель з обладнанням, призначений для прийому, зберігання та видачі нафтопродуктів транспортним засобам, продажу масел, консистентних мастил, запасних частин, аксесуарів до транспортних засобів і надання послуг власникам індивідуальних транспортних засобів.
В Україні швидко розвивається сільське господарство де потрібна сільська техніка. Інтенсивний розвиток автомобільного транспорту має супроводжувати і розвиток пов'язаних з ним об'єктів, покликаних обслуговувати автомобілі. Це, перш за все, відноситься до автозаправних станцій. Очевидно, що без створення достатньої, доцільно розміщеної добре спланованою мережі високопродуктивних АЗС важко забезпечити ефективну, економічну роботу державного автомобільного транспорту та задовольнити потреби швидко зростаючого парку індивідуального автотранспорту.
За минулі роки відбулися серйозні якісні зміни в системі роботи автозаправних станцій, різко підвищився рівень обслуговування, докорінно змінилася технічна оснащеність автозаправних станцій. Розроблено та впроваджуються збірні конструкції будівель і приміщень АЗС. Збірні автозаправні станції відзначаються великою естетичністю. Однак ще є необхідність у розвитку мережі автозаправних станцій і подальше їх вдосконалення.
Головним призначенням АЗС є заправка паливом автомототранспорту. Звичайні АЗС мають в своєму наборі 3 - 4 види бензину і дизельне паливо. При цьому варіантів заправок на бензоколонках кілька: за принципом одна колонка - один вид палива, одна точка - всі види бензину і дизпалива, змішаний варіант (особливо за наявності АГЗС). Перший варіант передбачає під'їзд автомобіля до строго певної колонки, що не дуже зручно, тому що змушує. Тому на сучасних АЗС йде тенденція до другого типу.
1.2 Аналіз предметної області
Генеральною тенденцією розвитку автозаправних станцій в розвинених країнах є розширення їх функціональності, інакше кажучи - доповнення продажу палива різними супутніми послугами. Нині типова станція включає у собі крім паливо-роздаткового комплексу, також мийку машин, магазин супутніх товарів, кав'ярні чи ресторан швидкого харчування, пункти попутного технічного сервісу. Багато заправних станцій містять у собі також пункти заправки газом (пропаном) для автомобілів, оснащених двигунами, які працюють на газі. Більшість станцій оснащено санітарними вузлами, доступними клієнтам, телефонами, банкоматами. Деякі заправні станції мають пункти технічного обслуговування, здійснюють дрібний ремонт.
Практично всі АЗС пропонують гнучкі форми оплати з допомогою готівки, дебетових і кредитних карток. Причому оплату можна здійснити безпосередньо на роздатковому пункті без необхідності відвідин каси. Це створює зручності для водіїв зимовий період і при непогожій погоді.
На сьогодні в Україні при реалізації товарів підприємствами роздрібної торгівлі покупцям надаються різні знижки. У наданні (отриманні) знижок зацікавлені як продавці, оскільки зниження роздрібних цін сприяє збільшенню потоку покупців і, відповідно, обсягу здійсненого продажу, так і покупці, які прагнуть придбати товар дешевше. В результаті прискорюється товарообіг, знижуються витрати, пов'язані з операційною діяльністю, зберіганням і збутом товарів. Ці чинники сприяють збільшенню прибутку, отриманого від реалізації, і підвищенню ліквідності підприємства.
Знижка - це така умова операції купівлі-продажу, при якій відбувається зменшення вартості продажу товару. Розмір знижки залежить від виду угоди, обсягу продажів і встановлюється, як правило, у відсотках до ціни товару, або до вартості покупки. Найбільш поширеними є такі знижки:
* знижки за кількість товару, що купується - надається покупцю, який закупив обумовлену положенням про знижки партію товару;
* знижки за придбання товару понад обумовленої суми - надається покупцю у випадку, якщо сума купівлі її перевищує обумовлену суму;
* бонусні знижки - надаються постійним покупцям, якщо вони за певний період часу закуповують зазначену кількість товарів;
Основний тип конкуренції між заправними комплексами виходить з обслуговування клієнтів, хоча ціновий чинник у періоди різких коливання цін на нафту і дизельне паливо також відіграє певну роль конкурентної боротьби. Система стимулювання продажів займає далеко не останнє місце у залученні клієнтів станціями, які входять у різні мережі з певними відомими брендами.
Останніми роками число АЗС в більшості країн Європи скорочується при збільшенні обсягів роздрібного продажу палива, що припадають загалом на одну станцію. Виживають ті АЗС, які можуть здійснити такі заходи:
- збільшити абсолютні обсяги продажу, що дозволяє компенсувати зниження рівня маржі і реально отримувати таку ж масу прибутку;
- ініціювати нові види діяльності, що потенційно можуть забезпечити додаткові доходи, наприклад, рекламу на паливо-роздаткових комплексах й у приміщеннях операторських, крамниць та кафе;
- істотно підвищити якість обслуговування клієнтів шляхом введення нових гнучких форм розрахунків, спеціальних програм заохочення клієнтів, забезпечення чистоти і порядку привабливого виду заправних станцій;
- організувати чи розширити платні сервісні послуги, такі як роздрібні продажу супутніх товарів, роботу точок швидкого харчування і ресторанів, експрес мийку машин, тощо.
Як засвідчили результати опитування, ні реклама, ні відгуки знайомих є основними джерелами впливу на вибір АЗС. «Власний досвід», саме такий варіант відповіді відзначило більшість - 84,5%.
Тобто, сучасні АЗС в розвинених країн перетворилися на багатофункціональні комплекси, які, крім заправки паливом, пропонують перелік супутніх послуг для зручності водіїв і пасажирів. У цьому спостерігається тенденція збільшення частки послуг у загальній сумі чистих доходів, одержуваних станціями. Зростання оптових цін і зниження маржі у складі роздрібних ціни паливо разом із розширенням перелічених послуг призводить до того, що сумарні чисті прибутки від надання цих послуг у часто перевищують чисті доходи, отримані від продажу палива.
Отже, при виконанні даного проекту перед нами поставало завдання розробити оптимальний варіант програми і написати її зручною для користування - важливий аспект в подальшому її використанні. А також розробити програму, яка відповідала б усім критеріям якості програмного продукту, тобто наступним пунктам:
1. Відповідність програми поставленій задачі;
2. Надійність програми;
3. Ефективність;
4. Модифікаційність;
5. Читабельність тексту програми;
6. Документованість;
7. Простота супроводу.
2. Проектування системи
2.1 Побудова діаграми варіантів використання
Функціональні вимоги до програмного продукту в нотації UML описують за допомогою діаграми варіантів використання (Use Case Diagram). Побудова діаграми варіантів використання передбачає представлення основних акторів чи сутностей, що взаємодіють із програмою за допомогою так званих варіантів використання, тобто визначення набору дій, які надаються певному актору. Для інформаційної системи автоматизації діяльності автозаправних станцій вона має вигляд (рис. 1):
Рис. 1. Діаграма варіантів використання
На даній діаграмі представлені дії менеджера, касира та клієнта з програмою і з базою даних.
Клієнт впливає на систему опосередковано, оскільки на основі його побажань формується заявка і здійснюється пошук товару у БД.
Коли касир авторизується, він оформлює замовлення покупця і працює з БД. Якщо заявка приймається він має декілька варіантів дій: заявка приймається касир реєструє факт продажі товару, видає чек; в іншому випадку може відбутися відмова у покупці товару (коли немає в наявності достатньої кількості товару). Також касир може видрукувати прас-лист товарів для клієнта.
Коли авторизується менеджер він: формує каталог товарів, редагує прайс-лист, список постійних клієнтів. Ще він переглядає результати аналізу даних, приймає товари від постачальника, реєструє касирів та інших менеджерів.
2.2 Функціональна схема
Для проектування інформаційної системи автоматизації діяльності автозаправних станцій обрані наступні функції:
1) Розмежування доступу до можливостей програми;
2) Додавання та редагування відомостей про працівників;
3) Додавання нового товару при надходженні;
4) Редагування відомостей про товари;
5) Реєстрація факту продажу зі створенням запису;
6) Видрук вхідної і вихідної накладних;
7) Пошук товару;
8) Видрук прайс-листу;
9) Перегляд записів продаж;
10) Отримання звіту про кількість закупленого і проданого товару, по витратах і прибутку за певний період часу.
Їх відображає наступна функціональна схема (рис. 2).
Рис. 2. Функціональна схема
2.3 Структура бази даних
Концептуальна модель даних відображена за допомогою ER-моделі (моделі “сутність-зв'язок”) на рис. 3.
Рис. 3. ER-модель
Сутність Klient відображає перелік постійних клієнтів автозаправної станції.
Сутність Znyzhka показує знижки, які можуть мати постійні клієнти.
Сутність Workers містить перелік працівників автозаправної станції, які можуть замовляти та продавати товари.
Сутність Posady відображає перелік посад, які можуть займати працівники із сутності Workers.
Сутність Tovary представляє асортимент, який може бути замовлений клієнтами.
Сутність Postachalnyky містить перелік постачальників, у яких менеджер може замовляти товари.
Сутність Operations відображає сформований за запитом покупця перелік товарів.
Схема структури даних подана на рис. 4.
Рис. 4. Схема структури даних
Методика побудови реляційної схеми на основі моделі сутність-зв'язок гарантує, що відношення будуть задовольняти вимогам 3НФ (третьої нормальної форми).
Справді, усі атрибути всіх відношень містять лише атомарні значення - тому реляційна схема задовольняє вимогам 1НФ (першої нормальної форми). Оскільки всі первинні ключі є простими, то відсутні частинні функціональні залежності - тому реляційна схема задовольняє вимогам 2НФ (другої нормальної форми). Оскільки жодний не ключовий атрибут не залежить від іншого не ключового атрибуту, тобто відсутні транзитивні функціональні залежності - то реляційна схема задовольняє вимогам 3НФ.
3. Програмне та технічне забезпечення
3.1 Засоби розробки
Бурхливий розвиток обчислювальної техніки, необхідність в ефективних засобах розробки програмного забезпечення призвели до появи систем програмування, орієнтованих на так звану «швидку розробку», серед яких можна виділити Borland Delphi. В основі систем швидкої розробки покладена технологія візуального проектування і програмування, суть якої полягає в тому, що область розробки бере на себе більшу частину рутинної роботи, залишаючи програмісту роботу по конструюванню діалогових вікон і функцій обробки подій.
Delphi - є середовищем розробки програм, яке використовує багато передових ідей і концепцій, закладених в графічному інтерфейсі Windows. Як відомо, середовище великою мірою визначає ефективність роботи програміста. У середовищі програмування Delphi є всі необхідні інструменти для того, щоб створювати повноцінні програми. Писати, компілювати і тестувати програму - все це можна робити, не виходячи з Delphi.
Delphi простий і логічний. Основні конструкції мови чітко виділяються в програмі, що сприяє хорошому сприйняттю написаного коду. Графічний інтерфейс Delphi відмінно продуманий, середовище розробки надає доступ тільки до тих ділянок коду, з якими необхідно працювати, приховуючи основну частину програми, яка створюється автоматично самою розробкою.
В першу чергу Delphi призначений для професіоналів-розробників корпоративних інформаційних систем. Може бути, тут варто пояснити, що конкретно мається на увазі. Не секрет, що деякі вдалі продукти, призначені для швидкісної розробки додатків (RAD - rapid application development) чудово працюють при виготовленні досить простих додатків, однак, розробник стикається з непередбаченими труднощами, коли намагається зробити щось дійсно складне. Буває, що в продукті розкриваються властиві йому обмеження тільки після деякого часу. Delphi такі обмеження не притаманні. Гарний доказ тому - це той факт, що сам Delphi розроблений на Delphi.
Delphi - це продукт, що унікальним чином поєднує високопродуктивний компілятор, об'єктно-орієнтовані засоби візуального програмування і універсальний механізм доступу до баз даних. Час компіляції програм у будь-якого C-мови на порядок довше, ніж у Delphi, це знижує віддачу від програміста - не кожен може писати код без найменших помилок. Навіть на потужних машинах С-продукти не можуть забезпечити швидкодії, властивого Delphi.
Іншим важливим фактором успіху Delphi є його "візуальність". Можна сказати, що тут програміст не повинен думати про всякі дрібниці - як створити вікно або кнопку, які для цього необхідні класи або бібліотеки. Завдання, для яких на C потрібно безліч зусиль, в Delphi вирішуються кількома кліками. Однак, всупереч сформованій думці, при цьому мова не втрачає можливості доступу до низькорівневих властивостей об'єктів, це робить його унікальним[3.].
Системою управління базами даних називають програмну систему, призначену для створення на компютерах загальної бази даних, використовуваної для вирішення безлічі завдань. Подібні системи служать для підтримки бази даних в актуальному стані і забезпечують ефективний доступ користувачів до вмісту в ній даними в рамках наданих користувачам повноважень.
СУБД, що використовуються в даний час, мають засоби забезпечення цілісності даних і надійної безпеки, що дає можливість розробникам гарантувати більшу безпеку даних при менших витратах сил на низькорівневе програмування. Продукти, що функціонують в середовищі WINDOWS, вигідно відрізняються зручністю призначеного для користувача інтерфейсу і вбудованими засобами підвищення продуктивності.
В якості середовища зберігання обрано СУБД Paradox. Доступ до таблиць Paradox здійснюється стандартним для Delphi способом - через функції двигуна баз даних (Borland database engine) і компоненти роботи з таблицями.
Paradox - популярний СУБД що займає стійкі позиції на ринку засобів розробки настільних додатків з базами даних. Принцип зберігання даних в Paradox схожий з принципами зберігання даних в dBase - кожна таблиця зберігається в своєму файлі (розширення *.db), MEMO- і BLOB-поля зберігаються в окремому файлі (розширення *.md). Формат даних Paradox не є відкритим, тому для доступу до даних цього формату потрібні спеціальні бібліотеки.
Ранні версії Paradox зазвичай надавали розробникам баз даних істотно більш розширені можливості, такі як використання ділової графіки в DOS-додатках, оновлення даних в додатках при багато користувачів роботі, візуальні засоби побудови запитів, на основі інтерфейсу QBE - Query by Example (запит за зразком), засоби статистичного аналізу даних, а також засоби візуального побудови інтерфейсів призначених для користувача додатків з автоматичною генерацією коду на мові програмування PAL (Paradox Application Language).
Windows-версії СУБД Paradox, крім перерахованих вище сервісів, дозволяють також маніпулювати даними інших форматів, зокрема dBase і даними, що зберігаються в серверних СУБД. Таку можливість користувачі Paradox дістали завдяки використанню бібліотеки Borland Database Engine і драйверів SQL Links. Це дозволило використовувати Paradox як універсальний засіб управління різними базами даних (істотно полегшена версія Paradox 7 під назвою Database Desktop і раніше входить до складу Borland Delphi і Borland C ++ Builder саме з цією метою)[5.].
3.2 Вимоги до інтерфейсу
Програма повинна забезпечити можливість виконання наступних функцій:
Система повинна мати набір зручних можливостей щодо введення інформації в систему;
Система повинна вести облік продаж, мати зручний і достатній набір інформації;
Система повинна мати зручний інтерфейс;
розмежування доступу;
каталог товарів;
формування необхідної супровідної документації;
перегляд статистичної інформації;
Передбачити контроль введеної інформації;
Забезпечити цілісність інформації, що вводиться.
3.3 Вимоги до технічного забезпечення
Для правильної роботи даної програми до складу технічних засобів повинні входити:
комп'ютер з такою конфігурацією:
процесор з тактовою частотою не нижче 1 ГГц;
достатній об'єм оперативної пам'яті (не менше 256 МБ);
відеоадаптер не менше 16Mb;
інші складові можуть мати будь-які параметри, тому що вони незначним чином впливають на роботу програми;
додатково має бути встановлене таке програмне забезпечення:
операційна система Windows XP/Vista/7;
Borland Database Engine;
Microsoft Office 2003/2007/2010.
комп'ютерна периферія, до складу якої входить:
монітор;
мишка;
клавіатура;
принтер.
4. Технологічний розділ
4.1 Інструкція користувача
Перед першим запуском програми потрібно створити аліас azs типу Standart і вказати шлях до бази даних.
Робота з програмою починається із завантаження вікна авторизації (рис. 5):
Рис. 5. Вікно авторизації
Тут потрібно вибрати користувача та ввести пароль. При неправильному вводі паролю система пропонує ввести пароль ще раз. Кнопка Відміна завершує роботу з програмою.
При вводі правильного паролю, який відповідає даному користувачу здійснюється завантаження основного вікна програми (рис. 6).
Рис. 6. Головна форма
Головна форма містить доступ до усіх можливостей програми, реалізований через головне меню, та містить прізвище активного користувача у правому верхньому кутку форми.
Пункт меню Замовлення містить підпункти Зробити замовлення та Статистика. Підпункт Зробити замовлення власне надає доступ до форми перегляду та формування замовлень (рис. 7).
Рис. 7. Форма замовлень
За допомогою кнопок Вперед, Назад можна переглядати раніше створені замовлення. Кнопка Додати створює нове пусте замовлення. Кнопка Зберегти зберігає поточну позицію замовлення. Кнопка Вивести завершує формування поточного замовлення і виводить все замовлення на екран. За допомогою кнопки Роздрукувати чек здійснюється експорт поточного замовлення в Excel для подальшого друку рахунку чи замовлення (рис. 8, 9).
Рис. 8. Видрук рахунку
Рис. 9. Видрук замовленння
Таблиця Operations відображає як продаж палива / супутніх товарів покупцям так і замовлення менеджером товарів у постачальників. Розмежуванням видів операцій служить поле логічного типу OpType. Значення false позначає операцію продажу покупцям, true - замовлення товару у постачальників.
Підпункт Статистика, до якого мають доступ лише користувачі-менеджери, дає доступ до статистичних даних, а саме статистику продаж кожним працівником, руху готівки / безналу і прибутків / витрат. Кожну статистичну вибірку можна формувати як за весь період так і по конкретних датах (рис. 10, 11, 12).
Рис. 10. Статистика продаж по працівниках
Рис. 11. Статистика руху готівки / безготівкових коштів
Рис. 12. Статистика прибутків / витрат
Пункт меню Таблиці дозволяє переглядати вміст таблиць по товарах, постійних клієнтах та працівниках (рис. 13).
Рис. 13. Перегляд таблиці Товари
Також для кожної з таблиць реалізована можливість пошуку конкретної інформації а також експорт даних, що відображаються, в Excel (рис. 14, 15). Таблиці доступні лише в режимі перегляду.
Рис. 14. Пошук товарів, що починаються на літеру "д"
Рис. 15. Експорт прайс-листа
Пункт меню Редагувати надає доступ менеджерам до усіх допоміжних таблиць бази даних і дає змогу редагувати, додавати, видаляти інформацію про працівників і їхні посади, товари і їх постачальників, постійних клієнтів і знижки, які їм надаються (рис. 16).
Рис. 16. Редагування списку постачальників
Пункт меню Довідка містить підпункти Про програму та Розробники, які відображають відповідну інформацію.
Пункт меню Вихід з підпунктами Зміна користувача та Завершення роботи дозволяють змінити поточного користувача в системі та завершити роботу з програмою відповідно.
Висновки
У ході виконання кваліфікаційної роботи були детально розглянуті питання, які виникають в процесі проектування та створення інформаційної системи автоматизації діяльності автозаправних станцій.
Були виділені основні ключові етапи, притаманні процесу, та взаємозв'язки між ними.
Був проведений ґрунтовний аналіз предметного середовища, ретельно сплановано вибір програмного забезпечення для створення програмного продукту.
На основі даних, отриманих в процесі аналізу, побудовано:
UML-діаграму варіантів використання;
функціональну схему системи;
ER-діаграму;
схему структури даних;
Для розробки програмного забезпечення була використана мова Delphi і СУБД Paradox.
Програмно реалізовано клієнтську частину інформаційної системи, яка дає змогу ефективно та надійно здійснювати продаж та замовлення палива та супутніх автомобільних товарів, а також опрацьовувати статистичну інформацію для прогнозування закупівель та продаж на майбутні періоди.
Наведена детальна інструкція користувача по експлуатації програмного продукту.
Перелік використаної літератури
1. Автоматизированные информационные технологии в экономике: учебник / под общ. ред. И.Т.Тибулина. - М.: Финансы и статистика, 2000.- 416 с.
2. Береза А.М. Основи створення інформаційних систем: навч. посібник / А.М. Береза. - К.:КНЕУ,1998.-140с.
3. Джефф Дантеманн Программирование в среде Delphi, К., 1995. - 608 с.
4. Информационные системы в экономике / под. ред. В.В. Дика. - М.: Финансы и статистика, 1996.- 272 с.
5. Конноли Т., К. Бегг, А. Страчан. Базы данных: проектирование, реализация и сопровождение. Теория и практика. 2-е изд.: Пер. с англ.: уч. пос. - М.: Издательский дом „Вильямс”, 2000. - 1120 с.
6. Недашківський О.Л. Планування та проектування інформаційних систем. - К.: Науковий світ, 2014. - 215 с.
7. Ситник В.Ф. та ін. Основи інформаційних систем: навч. посібник. - К.: КНЕУ, 2001. - 420 с.
8. Язык UML. Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. - М.: ДМК Пресс, 2007. - 496 с.
9. UML. Основы, 3-е издание. - Пер. с англ. - СПб: Символ-Плюс, 2007. - 192 с.
Додаток A
Тексти програмного коду
unit FEdit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, DBCtrls, StdCtrls, Buttons,
ExtCtrls;
type
TMyEdit = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
BitBtn1: TBitBtn;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DataSource1: TDataSource;
DataSource2: TDataSource;
Table1: TTable;
Table2: TTable;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
MyEdit: TMyEdit;
implementation
{$R *.dfm}
procedure TMyEdit.FormCreate(Sender: TObject);
begin
//table1.DatabaseName:=ExtractFileDir(Application.ExeName)+'\Base';
//table2.DatabaseName:=ExtractFileDir(Application.ExeName)+'\Base';
end;
procedure TMyEdit.BitBtn1Click(Sender: TObject);
begin
if table1.Active then table1.Active:=false;
if table2.Active then table2.Active:=false;
close;
end;
end.
unit FTables;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DBCtrls, StdCtrls, Buttons, DB, DBTables,
ExtCtrls, ComObj;
type
TMyTable = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
DataSource1: TDataSource;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
Query1: TQuery;
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
MyTable: TMyTable;
X: Variant;
mplementation
$R *.dfm}
rocedure TMyTable.FormCreate(Sender: TObject);
begin
Query1.DatabaseName:=ExtractFileDir(Application.ExeName)+'\Base';
end;
rocedure TMyTable.BitBtn2Click(Sender: TObject);
begin
query1.Active:=false;
Close;
end;
procedure TMyTable.BitBtn1Click(Sender: TObject);
const n=5;
var
//X: Variant;
i, j: integer;
begin
inherited;
X := CreateOLEObject('Excel.Application');
try
X.Visible := true;
X.Workbooks.Add;
for i := 0 to (DataSource1.DataSet).FieldCount - 1 do begin
X.WorkBooks[1].ActiveSheet.Cells[n, 1 + i].Value :=
(DataSource1.DataSet).Fields[i].DisplayLabel;
X.WorkBooks[1].ActiveSheet.Cells[n, 1 + i].Font.Bold := true;
end;
(DataSource1.DataSet).First;
for i := 0 to (DataSource1.DataSet).RecordCount - 1 do begin
for j := 0 to (DataSource1.DataSet).FieldCount - 1 do begin
X.WorkBooks[1].ActiveSheet.Cells[n + 1 + i,
1 + j].Value :=
(DataSource1.DataSet).Fields[j].AsString;
end;
(DataSource1.DataSet).Next;
end;
for j := 0 to (DataSource1.DataSet).FieldCount - 1 do
X.WorkBooks[1].ActiveSheet.Columns[1+j].EntireColumn.AutoFit;
finally
//X.Quit;
Screen.Cursor := crDefault;
end;
end;
procedure TMyTable.Button1Click(Sender: TObject);
begin
edit1.Text:='';
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, Menus, DB, DBTables;
type
TMain = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
Image1: TImage;
Label1: TLabel;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N20Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Main: TMain;
user, pass: string[15];
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10,
Unit11, Unit12, Unit13;
{$R *.dfm}
procedure TMain.FormCreate(Sender: TObject);
begin
Login:=TLogin.create(application);
Login.ShowModal;
user:=Login.ComboBox1.Text;
pass:=Login.Edit1.Text;
Label1.Caption:='Користувач: '+user;
if pass<>'123' then begin
N3.Enabled:=false;
N20.Enabled:=false;
end else begin
N3.Enabled:=true;
N20.Enabled:=true;
end;
end;
procedure TMain.N6Click(Sender: TObject);
begin
login.Free;
Main.FormCreate(application);
end;
procedure TMain.N7Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TMain.N9Click(Sender: TObject);
begin
ShowMessage('Розробив'+#13+'студент групи КН-405'+#13+'Малетич Олександр');
end;
procedure TMain.N10Click(Sender: TObject);
begin
inherited;
Pracivnyky:=TPracivnyky.create(application);
Pracivnyky.ShowModal;
end;
procedure TMain.N11Click(Sender: TObject);
begin
inherited;
tovary:=Ttovary.create(application);
tovary.ShowModal;
end;
procedure TMain.N12Click(Sender: TObject);
begin
inherited;
klienty:=Tklienty.create(application);
klienty.ShowModal;
end;
procedure TMain.N13Click(Sender: TObject);
begin
inherited;
ETovary:=TETovary.create(application);
ETovary.ShowModal;
end;
procedure TMain.N14Click(Sender: TObject);
begin
inherited;
EPostachalnyky:=TEPostachalnyky.create(application);
EPostachalnyky.ShowModal;
end;
procedure TMain.N15Click(Sender: TObject);
begin
inherited;
EPracivnyky:=TEPracivnyky.create(application);
EPracivnyky.ShowModal;
end;
procedure TMain.N16Click(Sender: TObject);
begin
inherited;
EPosady:=TEPosady.create(application);
EPosady.ShowModal;
end;
procedure TMain.N17Click(Sender: TObject);
begin
inherited;
EKlienty:=TEKlienty.create(application);
EKlienty.ShowModal;
end;
procedure TMain.N18Click(Sender: TObject);
begin
inherited;
EZnyzhka:=TEZnyzhka.create(application);
EZnyzhka.ShowModal;
end;
procedure TMain.N19Click(Sender: TObject);
begin
inherited;
Zamov:=TZamov.create(application);
Zamov.ShowModal;
unit12.b:=unit1.user;
end;
procedure TMain.N20Click(Sender: TObject);
begin
Stat:=TStat.create(application);
Stat.ShowModal;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, DBTables;
type
TLogin = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Table1: TTable;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure BitBtn2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Login: TLogin;
implementation
{$R *.dfm}
procedure TLogin.BitBtn2Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TLogin.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn1.Glyph.LoadFromFile(ExtractFileDir(Application.ExeName)+'\images\led2on.bmp');
end;
procedure TLogin.BitBtn2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn2.Glyph.LoadFromFile(ExtractFileDir(Application.ExeName)+'\images\led1on.bmp');
end;
procedure TLogin.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn1.Glyph.LoadFromFile(ExtractFileDir(Application.ExeName)+'\images\led2off.bmp');
BitBtn2.Glyph.LoadFromFile(ExtractFileDir(Application.ExeName)+'\images\led1off.bmp');
end;
procedure TLogin.BitBtn1Click(Sender: TObject);
var ver:boolean;
begin
ver:=false;
Table1.First;
while not Table1.Eof do
begin
if (Table1.Fields[1].Value=ComboBox1.Text) and
(Table1.Fields[4].Value=Edit1.Text) then ver:=true;
Table1.Next;
end;
if ver then
begin
Table1.Active:=false;
Close;
end
else begin
showmessage('неправильний логін чи пароль');
edit1.Text:='';
end;
end;
procedure TLogin.FormCreate(Sender: TObject);
begin
Table1.DatabaseName:=ExtractFileDir(Application.ExeName)+'\Base';
Table1.TableName:='Workers.db';
Table1.Active:=true;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FTables, DB, DBTables, DBCtrls, StdCtrls, Buttons, Grids,
DBGrids, ExtCtrls;
type
TPracivnyky = class(TMyTable)
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Pracivnyky: TPracivnyky;
implementation
{$R *.dfm}
procedure TPracivnyky.FormCreate(Sender: TObject);
begin
inherited;
query1.SQL.Add('select PIP as Працiвник, Zarplata as Зарплата,');
query1.SQL.Add('Nazva as Посада');
query1.SQL.Add('from Workers inner join Posady');
query1.SQL.Add('on workers.posadaID = posady.posadaID');
query1.Active:=true;
end;
procedure TPracivnyky.Edit1Change(Sender: TObject);
begin
inherited;
query1.Close;
query1.Filtered:=false;
query1.Filter:='[Працiвник] = '+''''+edit1.Text+'*''';
query1.Filtered:=true;
query1.Open;
end;
procedure TPracivnyky.Button1Click(Sender: TObject);
begin
inherited;
query1.Filtered:=false;
end;
procedure TPracivnyky.BitBtn1Click(Sender: TObject);
begin
inherited;
Ftables.X.WorkBooks[1].ActiveSheet.Cells[3, 1].Value :='Список працівників';
Ftables.X.WorkBooks[1].ActiveSheet.Cells[3, 1].font.size := 14;
Ftables.X.WorkBooks[1].ActiveSheet.Cells[3, 1].Font.Bold := true;
end;
end.
unit Unit12;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, DBTables, StdCtrls, DBCtrls, Mask, Buttons, Grids,
DBGrids, ComObj;
type
TZamov = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
DSOper: TDataSource;
DSTovar: TDataSource;
DSPostach: TDataSource;
DSPrac: TDataSource;
DSPosada: TDataSource;
DSKlient: TDataSource;
DSZn: TDataSource;
DataSource8: TDataSource;
TOper: TTable;
TTovar: TTable;
TPostach: TTable;
TPrac: TTable;
TPosada: TTable;
TKlient: TTable;
TZn: TTable;
DBText1: TDBText;
DBEdit1: TDBEdit;
DBLookupComboBox1: TDBLookupComboBox;
DBEdit2: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBLookupComboBox2: TDBLookupComboBox;
DBCheckBox2: TDBCheckBox;
DBCheckBox3: TDBCheckBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
BitBtn1: TBitBtn;
Query1: TQuery;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
DBLookupComboBox3: TDBLookupComboBox;
DataSource9: TDataSource;
Query2: TQuery;
DBGrid1: TDBGrid;
Button5: TButton;
DBGrid2: TDBGrid;
Button6: TButton;
Query3: TQuery;
DataSource10: TDataSource;
Query4: TQuery;
DBGrid3: TDBGrid;
Query5: TQuery;
Query6: TQuery;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Zamov: TZamov;
a,WID:integer;
b:string[15];
implementation
uses Unit1;
{$R *.dfm}
procedure TZamov.BitBtn1Click(Sender: TObject);
begin
close;
end;
procedure TZamov.Button1Click(Sender: TObject);
begin
TOper.Next;
end;
procedure TZamov.Button2Click(Sender: TObject);
begin
TOper.Prior;
end;
procedure TZamov.Button3Click(Sender: TObject);
var i:integer;
begin
TOper.Insert;
TOper.FieldValues['OperationNo']:=a;
TOper.FieldValues['OpDate']:=Date;
tPrac.First;
for i := 0 to (DSPrac.DataSet).RecordCount - 1 do begin
if (DSPrac.DataSet).Fields[1].AsString=b then WID:=(DSPrac.DataSet).Fields[0].AsInteger;
TPrac.Next;
end;
label3.Caption:=b+' '+inttostr(WID);
TOper.FieldValues['WorkerID']:=WID;
end;
procedure TZamov.FormShow(Sender: TObject);
begin
query1.Open;
query1.First;
a:=query1.Fields[0].AsInteger+1;
b:=unit1.user;
query1.Close;
end;
procedure TZamov.Button4Click(Sender: TObject);
var pp:integer;
begin
query5.Close;
query5.ParamByName('OpNo').AsInteger:=TOper.Fields[3].AsInteger;
query5.ExecSQL; {TovarID, Kilkist}
query5.Open;
if TOper.Fields[8].AsBoolean then begin
TOper.Post;
query6.Close;
pp:=query5.Fields[1].AsInteger + TOper.Fields[4].AsInteger;
query6.SQL.Text:='UPDATE Tovary SET Kilkist='+inttostr(pp)+' WHERE TovarID='+TOper.Fields[3].AsString;
query6.ExecSQL;
end
else begin
if TOper.Fields[4].AsInteger>query5.Fields[1].AsInteger then
begin
showmessage('в наявності лише'+#13+query5.Fields[1].AsString+#13+'одиниць товару');
TOper.Cancel;
end
else begin
TOper.Post;
query6.Close;
pp:=query5.Fields[1].AsInteger - TOper.Fields[4].AsInteger;
//showmessage(query5.Fields[1].AsString+' - '+TOper.Fields[4].Asstring+' = ' +inttostr(pp));
query6.SQL.Text:='UPDATE Tovary SET Kilkist='+inttostr(pp)+' WHERE TovarID='+TOper.Fields[3].AsString;
//showmessage(query6.SQL.Text);
query6.ExecSQL; {Update}
end;
end;
end;
procedure TZamov.Button5Click(Sender: TObject);
const n=7;
var
X: Variant;
i, j, k: integer;
s, sPost, sTel, sRR, sTyp, sPrac:string[15];
sAdr: string[30];
begin
inherited;
X := CreateOLEObject('Excel.Application');
try
X.Visible := true;
X.Workbooks.Add;
if TOper.FieldByName('OpType').AsBoolean then begin
sPost:=(DataSource10.DataSet).Fields[2].AsString;
sAdr:='Дрогобич';
sTel:='''0'+(DataSource10.DataSet).Fields[3].AsString;
sRR:=''''+(DataSource10.DataSet).Fields[4].AsString;
sTyp:= 'Замовлення №';
sPrac:= 'Отримав: ';
end else begin
sPost:= 'ПП "Малетич"';
sAdr:= 'м. Борислав, вул. І.Франка, 2';
sTel:= '''0987654321';
sRR:= '''0123456789';
sTyp:= 'Рахунок №';
sPrac:= 'Видав: ';
end;
X.WorkBooks[1].ActiveSheet.Cells[1, 1].Value := 'Постачальник ';
X.WorkBooks[1].ActiveSheet.Cells[1, 1].Font.Bold:=true;
X.WorkBooks[1].ActiveSheet.Cells[1, 2].Value := spost;
X.WorkBooks[1].ActiveSheet.Cells[2, 1].Value := 'Адреса ';
X.WorkBooks[1].ActiveSheet.Cells[2, 1].Font.Bold:=true;
X.WorkBooks[1].ActiveSheet.Cells[2, 2].Value := sAdr;
X.WorkBooks[1].ActiveSheet.Cells[3, 1].Value := 'Телефон ';
X.WorkBooks[1].ActiveSheet.Cells[3, 1].Font.Bold:=true;
X.WorkBooks[1].ActiveSheet.Cells[3, 2].Value := sTel;
X.WorkBooks[1].ActiveSheet.Cells[4, 1].Value := 'Р/р ';
X.WorkBooks[1].ActiveSheet.Cells[4, 1].Font.Bold:=true;
X.WorkBooks[1].ActiveSheet.Cells[4, 2].Value := sRR;
X.WorkBooks[1].ActiveSheet.Cells[6, 2].Value := sTyp+TOper.Fields[9].AsString+
' від '+TOper.Fields[1].AsString;
X.WorkBooks[1].ActiveSheet.Cells[6, 2].Font.Bold:=true;
X.WorkBooks[1].ActiveSheet.Cells[6, 2].Font.Size:=16;
k:=Datasource9.DataSet.RecordCount+n+1;
for i := 0 to TPrac.RecordCount - 1 do
if TPrac.Fields[0].AsString=TOper.Fields[2].AsString then
s:=TPrac.Fields[1].AsString;
X.WorkBooks[1].ActiveSheet.Cells[k+2, 1].Value := sPrac;
X.WorkBooks[1].ActiveSheet.Cells[k+2, 1].font.italic:=true;
X.WorkBooks[1].ActiveSheet.Cells[k+2, 2].Value :=s;
X.WorkBooks[1].ActiveSheet.Cells[k+2, 2].font.italic:=true;
X.WorkBooks[1].ActiveSheet.Cells[k, 4].Value := 'Всього ';
X.WorkBooks[1].ActiveSheet.Cells[k, 4].Font.Bold:=true;
X.WorkBooks[1].ActiveSheet.Cells[k, 5].Value := (DataSource8.DataSet).Fields[1].AsCurrency;
X.WorkBooks[1].ActiveSheet.Cells[k+1, 4].Value := 'Зі знижкою ';
X.WorkBooks[1].ActiveSheet.Cells[k+1, 4].Font.Bold:=true;
X.WorkBooks[1].ActiveSheet.Cells[k+1, 5].Value := (DataSource8.DataSet).Fields[2].AsCurrency;
X.WorkBooks[1].ActiveSheet.Columns[5].EntireColumn.AutoFit;
X.WorkBooks[1].ActiveSheet.Cells[n, 1].Value :='№';
X.WorkBooks[1].ActiveSheet.Cells[n, 1].Font.Bold := true;
X.WorkBooks[1].ActiveSheet.Cells[n, 1].Borders.LineStyle:=1;
for i := 0 to (DataSource9.DataSet).FieldCount - 1 do begin
X.WorkBooks[1].ActiveSheet.Cells[n, 2 + i].Value :=
(DataSource9.DataSet).Fields[i].DisplayLabel;
X.WorkBooks[1].ActiveSheet.Cells[n, 2 + i].Font.Bold := true;
X.WorkBooks[1].ActiveSheet.Cells[n, 2 + i].Borders.LineStyle:=1;
end;
(DataSource9.DataSet).First;
for i := 0 to (DataSource9.DataSet).RecordCount - 1 do begin
X.WorkBooks[1].ActiveSheet.Cells[n + 1 + i,1].Value :=''''+inttostr(i+1)+'.';
X.WorkBooks[1].ActiveSheet.Cells[n + 1 + i,1].Borders.LineStyle:=1;
for j := 0 to (DataSource9.DataSet).FieldCount - 1 do begin
X.WorkBooks[1].ActiveSheet.Cells[n + 1 + i,2 + j].Value :=
(DataSource9.DataSet).Fields[j].AsString;
X.WorkBooks[1].ActiveSheet.Cells[n + 1 + i,2 + j].Borders.LineStyle:=1;
end;
(DataSource9.DataSet).Next;
end;
for j := 0 to (DataSource9.DataSet).FieldCount - 1 do
X.WorkBooks[1].ActiveSheet.Columns[1+j].EntireColumn.AutoFit;
finally
//X.Quit;
Screen.Cursor := crDefault;
end;
end;
procedure TZamov.Button6Click(Sender: TObject);
begin
query2.Close;
query2.ParamByName('OpNo').AsInteger:=TOper.Fields[9].AsInteger;
query2.ExecSQL;
query2.Open;
query3.Close;
query3.ParamByName('OpNo').AsInteger:=TOper.Fields[9].AsInteger;
query3.ExecSQL;
query3.Open;
query1.Open;
query1.First;
a:=query1.Fields[0].AsInteger+1;
query1.Close;
query4.Close;
query4.ParamByName('OpNo').AsInteger:=TOper.Fields[3].AsInteger;
query4.ExecSQL;
query4.Open;
end;
end.
unit Unit13;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBTables, Grids, DBGrids,
TeeProcs, TeEngine, Chart, Series;
type
TStat = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
BitBtn1: TBitBtn;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Query1: TQuery;
Query2: TQuery;
Query3: TQuery;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Chart1: TChart;
Series1: TBarSeries;
Chart2: TChart;
Dohid: TLineSeries;
Rozhid: TLineSeries;
Chart3: TChart;
Gotivka: THorizBarSeries;
Beznal: THorizBarSeries;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Stat: TStat;
implementation
{$R *.dfm}
procedure TStat.BitBtn1Click(Sender: TObject);
begin
close;
end;
procedure TStat.Button1Click(Sender: TObject);
var i:integer;
begin
query1.Close;
query2.Close;
query3.Close;
chart1.Visible:=false;
chart2.Visible:=false;
chart3.Visible:=false;
query1.Filtered:=false;
if edit1.Text<>'' then begin
query1.Filter:='[OpDate] >= '+''''+edit1.Text+'''';
query1.Filtered:=true; end;
if edit2.Text<>'' then begin
query1.Filter:='[OpDate] <= '+''''+edit2.Text+'''';
query1.Filtered:=true; end;
if (edit1.Text<>'') and (edit2.Text<>'') then begin
query1.Filter:='([OpDate] >= '+''''+edit1.Text+''')' +' and '
+'([OpDate] <= '+''''+edit2.Text+''')';
query1.Filtered:=true; end;
datasource1.DataSet:=query1;
query1.Open;
{-------------------------------------------------------------}
(DataSource1.DataSet).first;
Series1.Clear;
chart1.Visible:=true;
chart1.Title.Text.Text:='Діаграма продаж';
for i := 0 to (DataSource1.DataSet).RecordCount - 1 do begin
series1.Add((DataSource1.DataSet).Fields[3].AsFloat,
(DataSource1.DataSet).Fields[0].AsString);
(DataSource1.DataSet).next;
end;
{-------------------------------------------------------------}
end;
procedure TStat.Button2Click(Sender: TObject);
var i:integer;
begin
query1.Close;
query2.Close;
query3.Close;
chart1.Visible:=false;
chart2.Visible:=false;
chart3.Visible:=false;
query2.Filtered:=false;
if edit1.Text<>'' then begin
query2.Filter:='[OpDate] >= '+''''+edit1.Text+'''';
query2.Filtered:=true; end;
if edit2.Text<>'' then begin
query2.Filter:='[OpDate] <= '+''''+edit2.Text+'''';
query2.Filtered:=true; end;
if (edit1.Text<>'') and (edit2.Text<>'') then begin
query2.Filter:='([OpDate] >= '+''''+edit1.Text+''')' +' and '
+'([OpDate] <= '+''''+edit2.Text+''')';
query2.Filtered:=true; end;
datasource1.DataSet:=query2;
query2.Open;
{-------------------------------------------------------------}
(DataSource1.DataSet).first;
Gotivka.Clear;
Beznal.Clear;
chart3.Visible:=true;
chart3.Title.Text.Text:='Прихід готівки/безналу';
for i := 0 to (DataSource1.DataSet).RecordCount - 1 do begin
if (DataSource1.DataSet).Fields[0].AsBoolean then
Beznal.Add((DataSource1.DataSet).Fields[3].AsFloat,
(DataSource1.DataSet).Fields[1].AsString)
else
Gotivka.Add((DataSource1.DataSet).Fields[3].AsFloat,
(DataSource1.DataSet).Fields[1].AsString);
(DataSource1.DataSet).next;
end;
{-------------------------------------------------------------}
end;
procedure TStat.Button3Click(Sender: TObject);
var i:integer;
begin
query1.Close;
query2.Close;
query3.Close;
chart1.Visible:=false;
chart2.Visible:=false;
chart3.Visible:=false;
query3.Filtered:=false;
if edit1.Text<>'' then begin
query3.Filter:='[OpDate] >= '+''''+edit1.Text+'''';
query3.Filtered:=true; end;
if edit2.Text<>'' then begin
query3.Filter:='[OpDate] <= '+''''+edit2.Text+'''';
query3.Filtered:=true; end;
if (edit1.Text<>'') and (edit2.Text<>'') then begin
query3.Filter:='([OpDate] >= '+''''+edit1.Text+''')' +' and '
+'([OpDate] <= '+''''+edit2.Text+''')';
query3.Filtered:=true; end;
datasource1.DataSet:=query3;
query3.Open;
{-------------------------------------------------------------}
(DataSource1.DataSet).first;
Dohid.Clear;
Rozhid.Clear;
Chart2.LeftAxis.Minimum:=0;
Chart2.LeftAxis.Maximum:=10000;
chart2.Visible:=true;
chart2.Title.Text.Text:='Діаграма доходів/витрат';
for i := 0 to (DataSource1.DataSet).RecordCount - 1 do begin
if (DataSource1.DataSet).Fields[0].AsBoolean then
Rozhid.Add((DataSource1.DataSet).Fields[3].AsFloat,
(DataSource1.DataSet).Fields[1].AsString)
else
Dohid.Add((DataSource1.DataSet).Fields[3].AsFloat,
(DataSource1.DataSet).Fields[1].AsString);
(DataSource1.DataSet).next;
end;
{-------------------------------------------------------------}
end;
end.
Размещено на Allbest.ru
Подобные документы
Проектування інтерфейсу програми. Вимоги до продукту. Вхідні дані на розробку автоматизованої системи. Вибір середовища програмування. Розробка структури бази даних. Функціональна та логічна структура програми. Розробка структури таблиць бази даних.
курсовая работа [43,1 K], добавлен 30.06.2015Аналіз предметної галузі, постановка задачі, проектування бази даних. UML-моделювання, побудова ER-діаграми, схеми реляційної бази даних у третій нормальній формі. Призначення і логічна структура. Опис фізичної моделі бази даних, програмної реалізації.
курсовая работа [3,5 M], добавлен 28.11.2011Етапи розробки проекту. Вимоги до апаратного і програмного забезпечення, до користувача. Специфікація та структура даних, які мають бути розміщеними в системі. Вигляд інтерфейсу системи програмного забезпечення. Розробка бази даних косметичного салону.
дипломная работа [1,8 M], добавлен 21.02.2015Систематизація знань як основна функція бази даних. Логічне та фізичне проектування бази даних. Створення таблиць у базі даних, визначення основних зв'язків. Інструментальні засоби проектування та створення програмного забезпечення для обробки даних.
курсовая работа [1,4 M], добавлен 29.04.2010Проектування бази даних для КП "ВодГео" - комунального підприємства у сфері водопостачання та водовідведення в м. Сміла. Предметна область, вимоги до продукту. Розробка інтерфейсу програми. Вибір архітектури та сервера бази даних, її логічна структура.
курсовая работа [1,2 M], добавлен 14.07.2015Коректне використання операторів та конструкцій, побудова ефективних алгоритмів для розв'язку типових задач. Розробка алгоритмів та програми для створення бази даних телефонних номерів. Використання засобів розробки програмного забезпечення мовою Java.
курсовая работа [1,0 M], добавлен 25.01.2016Програмне забезпечення та шляхи автоматизації інформаційної системи управління школи. Побудова імітаційної моделі управлінських процесів за допомогою ППЗ MS Project. Розробка бази даних "Школа". Дослідження автоматизованого робочого місця секретаря.
курсовая работа [210,9 K], добавлен 10.11.2012Первинний опис програмного забезпечення графічний редактор. Функціональна специфікація класів. Проектування архітектури програми, структури даних та графічного інтерфейсу. Опис алгоритму природною мовою. Аналіз впливу зміни вимог на зміну архітектури.
курсовая работа [2,4 M], добавлен 07.10.2014Розробка схеми бази даних бібліотеки для отримання довідки про книги та читачів, програмного забезпечення системи управління БД. Розгляд функціональних підсистем та побудова інтерфейсу. Проведення тестування програми, та виділення переваг та недоліків.
курсовая работа [432,1 K], добавлен 24.01.2011Системне та прикладне програмне забезпечення ПК. Файлові менеджери. Системи автоматизованого проектування, управління базами даних. Текстові та табличні процесори. Операційна система WINDOWS XP. Робота з довідковою інформацією. Графічний редактор Paint.
контрольная работа [54,2 K], добавлен 24.11.2008