Розробка автоматизованої системи підтримки обліку та реалізації товарів промислового підприємства
Розробка автоматизованої системи підтримки обліку та реалізації товарів промислового підприємства
ЗМІСТ
ВСТУП…………………………………………….…………………………...…6
1 ЗАГАЛЬНА ЧАСТИНА……………………..……………………………...….8
- Постановка задачі…………………….……………………...…………….8
- Інфологічна модель задачі…………………………..……………………10
- Даталогічна модель задачі…………………………..……………………13
- Система програмування……………………………..……………………16
2 СПЕЦІАЛЬНА ЧАСТИНА…………………………………………………...18
2.1 Застосування мови UML до проектування інформаційної системи…...18
2.2 Програма задачі та її опис………………………………………..………22
2.3 Налагодження та тестування програми ………………………..….…….42
2.4 Дослідна експлуатація програми……………………………….……......43
2.5 Робота з програмою…………………………………………..……..….....44
ВИСНОВКИ…………………………………………..………………...……......48
ЛІТЕРАТУРА………………………………………...…………………...…...…49
ВСТУП
Автоматизовані інформаційні системи (АІС) це системи для пошуку, збирання, зберігання, накопичення, обробки, передачі інформації за допомогою використання обчислювальної техніки, засобів і каналів зв'язку, комп'ютерних інформаційних мереж. Вони є з'єднувальною ланкою між об'єктами і суб'єктами управління і виконують такі важливі функції:
- сприйняття вихідних даних і запитів, які вводяться користувачами;
- обробка даних, які введені і зберігаються в системі відповідно до
певних алгоритмів; - формування необхідної вихідної інформації.
На підприємстві створюється автоматизована інформаційна система, яка складається із взаємопов'язаних функціональних підсистем, що забезпечують управлінський апарат необхідною інформацією. Основні функціональні підсистеми забезпечують розв'язання завдань технічної підготовки виробництва, перспективного планування розвитку виробництва, маркетингових досліджень, оперативного управління матеріальними, трудовими і фінансовими ресурсами, збуту й реалізації готової продукції, бухгалтерського обліку та аналізу господарської діяльності підприємства.
За набором розв'язуваних завдань сучасні автоматизовані інформаційні системи підприємства подібні до автоматизованих систем управління підприємствами (АСУП) 80-х років, але на якісно новій ідеологічній і технічній базі. В АІС виділяються підсистеми, або "бізнес-процеси", кожен з яких має суто специфічні структурні особливості оброблюваних даних. Під бізнес-процесом слід розуміти сукупність взаємопов'язаних матеріальних, інформаційних, фінансових потоків або робочих потоків, які проходять через взаємодіючі підрозділи підприємства і спрямовані на виконання замовлення споживача (виготовлення продукції чи надання послуги).
Основною ознакою АІС є оперативне відображення стану економічних об'єктів для прийняття своєчасних рішень і внесення змін у бізнес-процеси, прогнозування ефективності цих процесів і формулювання рекомендацій щодо їх реорганізації.
Крім вищеназваного, властивістю сучасних АІС є використання взаємопов'язаних баз даних (БД) і знань єдиної інформаційної системи підприємства. Однією з сучасних форм організації накопичення, надання та зберігання інформації є банки даних. Банк даних це система спеціальним чином організованих даних (баз даних), програмних, технічних, мовних, організаційно-методичних засобів, призначених для забезпечення централізованого накопичення і колективного багатоцільового використання цих даних.
Сукупність баз даних і становить інформаційну систему управління підприємством. Вона слугує для створення умов з безпеки і цілісності, мінімізації надмірності даних, які зберігаються, ефективного їх використання та пошуку.
На підприємстві АІС створює умови для використання найновіших інформаційних технологій на базі персональних ЕОМ, розподілених баз даних і знань, засобів зв'язку для ефективного вирішення основних завдань управління підприємством. По суті, АІС є сукупністю пов'язаних локальних обчислюваних мереж. Для великих корпорацій, об'єднань та холдингів створюються великі корпоративні мережі, які налічують тисячі електрино-обчислювалтних машин (ЕОМ), зі складною структурою.
Сучасні АІС підприємства використовують технологію «клієнт сервер» в локальній обчислювальній мережі, розподілену базу даних, забезпечують електронну пошту, електронну дошку об'яв засобами глобальної обчислювальної мережі.
1 ЗАГАЛЬНА ЧАСТИНА
1.1 Постановка задачі
Постановка задачі точне формулювання умови задачі з описом вхідної і вихідної інформації. Вона розробляється організацією або розробником програмної продукції на основі технічного завдання сумісно із замовником. Це етап на якому велику роль приділяють визначенню кінцевої мети.
Темою даної курсової роботи є розробка автоматизованої системи підтримки обліку та реалізації товарів промислового підприємства.
Метою роботи є забезпечення автоматизованого конструювання товарів та їх замовників за допомогою розробленої автоматизованої інформаційної системи.
Проектування БД починається з аналізу предметної області і виявлення вимог до неї.
Предметна область передбачає роботу з основними елементами, такі як товар і замовлення.
Головні параметри товару: Назва товару, Назва гатунку,Назва матеріалу, Кількість на складі, Дата прибуття, Вартість. Кожен товар ділиться на категорії те який він і з чого створюється,тобто довідники гатунок та матеріали.
Головні параметри замовлення: Прізвище, Назва товару, Дата замовлення,Ціна за одиницю,Кількість, Вартість.
Кожне замовлення має свого замовника. Основні характеристики: Прізвище, Ім'я, По-батькові, Назва міста, Назва вулиці, Номер будинку, Номер квартири. Кожен замовник має своє місце проживання,тобто довідники міста та вулиці.
Параметри за якими буде відбуватися створення Замовлення:
- Прізвище;
- Назва товару;
- Дата замовлення;
- Ціна за одиницю;
- Кількість;
- Вартість.
Для створення замовлення на товар повинні бути забезпеченими наступні засоби інтерфейсу та функції:
- таблиця товарів, де знаходяться товари створені користувачем;
- кнопка додання замовлення ;
- кнопка збереження замовлення;
- кнопка видалення замовлення;
- кнопка додання нового замовника (яка переходить до вкладки «Замовник» для додання нового замовника,якщо немає замовника який нам потрібен).
В даній версії програми будуть реалізовані повні права користувачів, які дадуть смогу переміщатися без перешкод по всій програмі.
Користувач має повний доступ до усіх функцій програми, також він матиме можливість редагувати довідники з програми. Передбачається редагування таких довідників: «Місто та Вулиця», «Гатунок та Матеріали».
Таблиці, які повинні бути в БД: «Товар», «Замовлення», «Замовник».
Форма з вклакдами буде працювати з створеною та частково заповненою БД промислового підприємства.
Вхідною інформацією створюваного програмного забезпечення буде інформація про замовника та інформація про товар, яка надається базою даних чи створюється в довідниках.
Вихідною інформацією будуть спроектовані замовлення на товари та самі товари, які заноситимуться до бази даних, довідники.
1.2 Інфологічна модель задачі
Для встановлення відповідності між описаною в пункті 1.1 предметною областю товару і замовлення та представленням її в базі даних будуємо інфологічну модель задачі.
Інфологічна модель це найбільш природне для людини відображення предметної області, інформацію про яку планується зберігати в БД.
Для побудови інфологічної моделі використаємо ER-діаграми. Таким чином отримаємо ER-модель БД.
Модель сутністьзвязок (ER-модель) була запропонована в 1976 Пітером Пін-Шен Ченом, американським професором компютерних наук в університеті штату Луїзіана. Насправді, Чен не придумував цієї моделі самотужки, він взяв ідеї з раніших робіт наприклад, А. Брауна та інших. Роботи Чена є основою в розробці програмного забезпечення, зокрема, в області засобів Computer-Aided Software Engineering (CASE). Модель ER вплинула на розробку більшості основних CASE-інструментів.
ER-модель це одна з найпростіших візуальних моделей. Вона дозволяє осягнути структуру об'єкта «крупними мазками», в загальних рисах. Вона являє собою формальну конструкцію, яка сама по собі не передбачає ніяких графічних засобів її візуалізації. У якості стандартної графічної нотації, за допомогою якої можна візуалізувати ER-модель, була запропонована діаграма сутність-зв'язок (ER-діаграма).
Мова ER-діаграм має спеціальні графічні позначення, використовуючи які можна побудувати інфологічну модель.
Сутність це будь-який обєкт, який має певні властивості (атрибути), які виокремлюють його серед інших.
Атрибут пойменована характеристика сутності. Його найменування повинне бути унікальним для конкретного типу сутності, але може бути однаковим для різного типу сутностей. Атрибути позначаються овалами і зєднуються лініями з обєктом, який їх містить. Ключовий атрибут підкреслюється.
Сутності поділяються на:
- стрижневі;
- асоціативні;
- характеристичні;
- позначаючі.
Стрижнева сутність (стрижень) являє собою незалежну сутність.
Асоціативна сутність (асоціація) це сутність, яка формалізує зв'язок виду M: N (багато-до-багатьох) між двома або більше сутностями або зв'язок виду 1:1 (один-до-одного) між екземплярами сутностей.
Характеристична сутність (характеристика) це сутність яка формалізує зв'язок виду 1:M (один-до-багатьох) або 1:1 (один-до-одного). Єдина мета характеристики в рамках розглянутої предметної області полягає в описі чи уточненні деякої іншої сутності.
Позначаюча сутність (позначення) це сутність, яка формалізує зв'язок виду 1: M (один-до-багатьох) або 1:1 (один-до-одного) між двома сутностями, але відрізняється від характеристики тим, що не залежить від сутності, яку визначає.
Стрижневі сутності позначаються на ER-діаграмах з допомогою квадратів, головна стрижнева функція виділяється квадратом з більш товщими лініями.
Асоціації позначаються з допомогою ромбів або шестикутників.
Характеристичні сутності позначаються з допомогою трапецій (здебільшого виступають довідниками в базі даних). Позначаючі сутності зображуються на ER-діаграмах з допомогою паралелограмів.
Зв'язок це графічно зображувана асоціація, що встановлюється між двома типами сутностей, зображується у вигляді ненаправленной лінії, що з'єднує дві сутності або веде від сутності до неї ж самої.
На рисунку 1.1 зображено ER-діаграму інфологічної моделі використовуємої бази даних промислового підприємста.
Рисунок 1.1 ER-діаграма АІС промислового підприємства
1.3 Даталогічна модель задачі
Після розробки інфологічної моделі бази даних переходимо до етапу створення даталогічної моделі.
Даталогічна модель реляційної бази даних відображає логічні взаємозвязки між таблицями, атрибути таблиць та їх типи даних. Даталогічна модель формується з урахуванням специфіки і особливостей конкретної системи керування базами даних, в середовищі якої проектується база даних.
На цьому рівні будується концептуальна модель даних, тобто спеціальним способом структурована модель ПЗ, яка відповідає особливостям і обмеженням вибраної СКБД.
Нижче в таблицях 1.1 1.11 наведено пояснення до таблциць розробленої БД.
Таблиця 1.1 Структура таблиці «Товар»
Назва поля |
Тип |
Довжина |
Пояснення |
id_tovar |
int |
4 байт |
ідентифікатор товару (ключ) |
name_ tovar |
nvarchar |
50 байт |
назва товару |
id_gatunok |
int |
4 байт |
Ідентифікатор гатунку (зовнішній ключ) |
Id_material |
int |
4 байт |
Ідентифікатор матеріалу (зовнішній ключ) |
Kol_na_skladi |
int |
4 байт |
Кількість, яка лежить на складі |
Date_prubutya |
int |
4 байт |
Дата прибуття на склад |
Zhina_za_odinizhu |
int |
4 байт |
Ціна за одну одиницю товару |
Таблиця 1.2 Структура таблиці «Гатунок»
Назва поля |
Тип |
Довжина |
Пояснення |
id_gatunok |
int |
4 байт |
Ідентифікатор гатунку (ключ) |
name_ gatunok |
varchar |
20 байт |
назва гатунку |
Таблиця 1.3 Структура таблиці «Матеріал»
Назва поля |
Тип |
Довжина |
Пояснення |
Id_material |
int |
4 байт |
ідентифікатор матеріалу (ключ) |
name __material |
nvarchar |
25 байт |
назва матеріалу з якого створюється товар |
priznachenya |
nvarchar |
25 байт |
Призначення матеріалу |
Таблиця 1.4 Структура таблиці «Замовлення»
Назва поля |
Тип |
Довжина |
Пояснення |
ID_zamovlenya |
int |
4 байт |
ідентифікатор замовлення (ключ) |
date_zamovlenya |
date |
4 байт |
Дата виконання замовлення |
Id_zamovnuka |
int |
4 байт |
ідентифікатор замовника (зовнішній ключ) |
Kilkist |
int |
4 байт |
Кількість товару якого замовляють |
id_tovar |
int |
4 байт |
Ідентифікатор товару (зовнішній ключ) |
Vartist |
int |
4 байт |
Сума за замовлення (перемножуються Kilkist та id_tovar) |
Таблиця 1.5 Структура таблиці «Замовник»
Назва поля |
Тип |
Довжина |
Пояснення |
Id_zamovnuka |
int |
4 байт |
ідентифікатор замовника (ключ) |
prizvishe |
nvarchar |
4 байт |
Прізвище замовника |
name |
nvarchar |
4 байт |
Ім'я замовника |
Po_batkovi |
nvarchar |
4 байт |
По-батькові замовника |
Id_mista |
int |
4 байт |
Ідентифікатор міста (зовнішній ключ) |
Id_vulizha |
int |
4 байт |
Ідентифікатор вулиці (зовнішній ключ) |
Num_budinku |
int |
4 байт |
Номер будинка замовника |
Num_kvartira |
int |
4 байт |
Номер квартири замовника |
Таблиця 1.6 Структура таблиці «Місто»
Назва поля |
Тип |
Довжина |
Пояснення |
Id_mista |
int |
4 байт |
ідентифікатор міста (ключ) |
name_ mista |
char |
6 байт |
Назва міста |
Таблиця 1.7 Структура таблиці «Вулиця»
Назва поля |
Тип |
Довжина |
Пояснення |
Id_vulizha |
int |
4 байт |
Ідентифікатор вулиці (ключ) |
Id_mista |
int |
4 байт |
Ідентифікатор міста (зовнішній ключ) |
name_ vulizha |
nvarchar |
20 байт |
Назва вулиці |
Для встановлення звязків між таблицями та визначення умов цілісності даних використовуються первинні та зовнішні ключі.
База даних містить первинні ключі в усіх таблицях, завдяки яким забезпечується унікальність кожного запису таблиці. Існують декілька типів можливих зв'язків між таблицями. Найпоширенішим є зв'язок один до багатьох. На даному етапі було завершено попереднє проектування бази даних, тож можна перейти до безпосередньої розробки проекту.
1.4 Система програмування
Як було зазначено в пункті 1.1 даної пояснювальної записки , курсовий проект розробляється за допомогою візуальної системи програмування Delphi.
Delphi це інтегроване середовище швидкої розробки програмного забезпечення для роботи під Microsoft Windows, яке підтримує розробку Windows-застосунків на мові програмування Delphi, яка є наступницею мови Object Pascal.
Delphi дозволяє звести до мінімуму обєм програмного коду, який вводиться вручну. В склад Delphi входять засоби, необхідні для розробки, тестування та встановлення програм, включаючи велику за обсягом бібліотеку компонентів (VCL - Visual Components Library), засоби візуального проектування, шаблони програм і форм. Середовище проектування Delphi є відкритою системою і дозволяє використовувати як компоненти VCL, так і компоненти від сторонніх розробників, або власні компоненти. Також, сильною стороною Delphi є можливість використання функцій WinAPI.
Delphi в основному використовується для розробки настільних застосунків та корпоративних СКБД, проте цей інструмент можна використовувати для розробки будь-якого загального програмного забезпечення. Не залишена осторонь і можливість побудови Веб-застосунків, так потрібних у сучасному інформаційному світі. Також уведена підтримка SQL (Structured Query Lanquaqe- структурована мова запитів). З її допомогою можна проводити вибірку даних по заданих параметрах, вводити і видаляти дані з таблиці, створювати і видаляти файли даних. У звязку з цим Delphi можна застосовувати для створення повноцінних програмних засобів для роботи з базами даних.
Середовище Delphi 7 являє собою інтегровану оболонку розробника, в яку входить набір спеціалізованих програм, які відповідають за різні етапи створення готової програми. Після запуску середовища програмування Delphi на екрані відображаються чотири вікна:
- інспектор обєктів,
- провідник,
- проектувальник форм,
- вікно редактора.
Для роботи з базами даних було використано реляційну систему керування базами даних MS Access, що включає сотні інструментів , які інтуїтивно зрозумілі і дозволяють швидко почати роботу. У розпорядженні користувачів - велика бібліотека професійно створених шаблонів додатків, майстри, що полегшують процес створення таблиць, форм, запитів і звітів, а також безліч довідкових ресурсів. Також Access надає функцію використання даних, що знаходяться в інших місцях, включаючи програми пакету Microsoft Office, SQL Server, SharePoint Services і документи XML, HTML, XPS і PDF .
MS Access має широкий спектр функцій, включаючи пов'язані запити, сортування по різних полях, зв'язок із зовнішніми таблицями і базами даних. Завдяки вбудованій мові VBA , в самому Access можна писати програми, що працюють з базами даних.
2 СПЕЦІАЛЬНА ЧАСТИНА
2.1 Застосування мови UML до проектування інформаційної системи
UML (Unified Modeling Language) уніфікована мова моделювання, використовується у парадигмі об'єктно-орієнтованого програмування. Є невід'ємною частиною уніфікованого процесу розробки програмного забезпечення. UML є мовою широкого профілю, це відкритий стандарт, що використовує графічні позначення для створення абстрактної моделі системи, яку називають UML-моделлю.
Основні види діаграм UML:
- діаграма прецедентів;
- діаграма класів;
- діаграма обєктів;
- діаграма послідовностей;
- діаграма взаємодії;
- діаграма стану;
- діаграма активності;
- діаграма розгортання.
Для проектування додатку використаємо діаграму прецедентів рисунок 2.1, діаграму класів рисунок 2.2, діаграму послідовностей рисунок 2.3 та діаграму розгортання рисунок 2.4.
Діаграма прецедентів це діаграма, яка відображає відносини між акторами та прецедентами і дозволяє описати систему на концептуальному рівні.
Актор людина, зовнішня сутність, клас, інша система, що взаємодіє з створюваною системою, позначаються у вигляді стилізованої людини. Актори не можуть бути повязані між собою.
Прецедент виконувана системою дія з точки зору користувача, позначається на діаграмі овалом.
Рисунок 2.1 Діаграма прецедентів АІС промислового підприємства
Діаграма компонентів (Component diagram) статична структурна діаграма, показує розбивку програмної системи на структурні компоненти та звязки (залежності) між компонентами, що відображають архітектуру розробленого додатку. В якості фізичних компонентів можуть виступати файли, бібліотеки, модулі, виконувані файли, пакети, таблиці, бази даних тощо.
Діаграми компонентів показують особливості фізичного представлення системи. Вона дозволяє визначити архітектуру системи, яка розробляється, встановити залежності між програмними компонентами.
Основними графічними елементами на діаграмі компонентів є компоненти, інтерфейси і залежності між ними.
Діаграма компонентів розробляється для наступних цілей:
- візуалізації загальної структури вихідного коду програмної системи;
- специфікації виконуваного варіанту програмної системи;
- забезпечення багаторазового використання окремих фрагментів програмного коду;
- подання концептуальної і фізичної схем баз даних.
У розробці діаграми компонентів беруть участь не тільки програмісти а і системні аналітики та архітектори.
Змодельована діаграма компонентів для даної інформаційної системи представлена на рисунку 2.2
Рисунок 2.2 Діаграма компонентів АІС промисловго підприємства
Діаграма класів служить для представлення статичної структури моделі і являє собою логічне представлення моделі системи, призначена для опису статичної структури моделі у термінології класів ООП.
Діаграма класів являється статичною діаграмою, яка показує логічну структуру інформаційної системи. На ній відображаються сутності, які реалізують інформаційну систему класа, їх атрибути, операції, а також взаємовідношення сутностей на структурному рівні.
Клас в мові UML служить для позначення безлічі обєктів, які мають однакову структуру, поведінку і відносини з обктами інших класів.
Обовязковим елементом позначення класу є його імя.
Клас має атрибут іменована властивість класу, що описує безліч значень, які можуть приймати примірники цієї властивості, і операції іменована послуга, яку можна запросити у бідь-якого обєкта цього класу. Змодельована діаграма класів для даної інформаційної системи представлена на рисунку 2.3
Рисунок 2.3 Діаграма класів промислового підприємства
Для підвищення ефективності роботи програми був використаний DataModule, який має назву «DM».
DataModule це обєкт класа ТDataModule, такий як і звичайна форма, призначений для розміщення компонентів. Модуль даних відрізняється від форми лише тим що, на ньому розміщуються лише не візуальні компоненти. На ньому можна розмістити всі не візуальні компоненти програми.
На ньому розміщені всі не візуальні компоненти програми які показано на рисунку 2.4:
Рисунок 2.4 структура DataModule
2.2 Програма задачі та її опис
Програма компонентів інформаційної системи складається з окремих складових кожного з модулів, до складу яких входять процедури та функції, які виконують обробку інформації або забезпечують обробку визначених подій.
Модулі проекту та їх короткий опис:
- Project1 стартовий модуль;
- Unit1 Головна форма;
- Unit2 DM;
- Unit3 Форма БД ;
Програми має вигляд :
Файл Form1.cs є модулем головної форми проекту , на рисинку 2.5 зображено дизайн форми.
Form1.cs:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
Button1: TButton;
BitBtn5: TBitBtn;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form3.Show;
form1.Visible := false;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Form1.Close;
end;
end.
Файл Form2.cs є дата модулем проекту, на рис. 2.4 зображено дизайн форми.
Form2.cs:
unit Unit2;
interface
uses
SysUtils, Classes, DB, ADODB, StdCtrls;
type
TDM = class(TDataModule)
ADOConnection1: TADOConnection;
Tovar: TADOTable;
DSTovar: TDataSource;
Gatunok: TADOTable;
Material: TADOTable;
Zamovlenya: TADOTable;
Zamovnuk: TADOTable;
Town: TADOTable;
Street: TADOTable;
Info_zamovlenya: TADOTable;
DSGatunok: TDataSource;
DSMaterial: TDataSource;
DSZamovlenya: TDataSource;
DSZamovnuk: TDataSource;
DSTown: TDataSource;
DSStreet: TDataSource;
DSInfo: TDataSource;
Tovar_2: TWideStringField;
Tovar_3: TIntegerField;
Tovar_4: TIntegerField;
Tovar__: TIntegerField;
Tovar_5: TDateTimeField;
TovarDSDesigner: TBCDField;
Gatunok_2: TWideStringField;
Tovar_: TAutoIncField;
Gatunok_: TAutoIncField;
Material_: TAutoIncField;
Material_2: TWideStringField;
MaterialDSDesigner: TWideStringField;
Zamovlenya_: TAutoIncField;
Zamovlenya_2: TDateTimeField;
Zamovlenya_3: TIntegerField;
Zamovnuk_: TAutoIncField;
ZamovnukDSDesigner: TWideStringField;
ZamovnukDSDesigner2: TWideStringField;
ZamovnukDSDesigner3: TWideStringField;
Zamovnuk_2: TIntegerField;
Zamovnuk_3: TIntegerField;
Zamovnuk_4: TIntegerField;
Zamovnuk_5: TIntegerField;
Town_: TAutoIncField;
Town_2: TWideStringField;
Street_: TAutoIncField;
Street_2: TIntegerField;
Street_3: TWideStringField;
Info_zamovlenya_: TAutoIncField;
Info_zamovlenya_2: TIntegerField;
Info_zamovlenya_3: TIntegerField;
Info_zamovlenyaDSDesigner: TIntegerField;
Tovar_6: TStringField;
Tovar_7: TStringField;
ZamovlenyaField: TStringField;
ZamovnukField: TStringField;
ZamovnukField2: TStringField;
StreetField: TStringField;
Info_zamovlenyaField: TStringField;
Info_zamovlenyaField2: TDateField;
Zamovlenya_4: TIntegerField;
Zamovlenya_5: TStringField;
ZamovlenyaField2: TStringField;
ZamovlenyaDSDesigner2: TIntegerField;
ZamovlenyaDSDesigner: TIntegerField;
TovarDSDesigner2: TBlobField;
procedure DataModuleCreate(Sender: TObject);
private
mEdit: TEdit;
public
procedure setEdit(Edit: TEdit);
end;
var
DM: TDM;
implementation
uses Variants;
{$R *.dfm}
procedure TDM.setEdit(Edit: TEdit);
begin
mEdit := Edit;
end;
Файл Form3.cs є формою БД, в якому реалізований її інтерфейс та робота.
Form3.cs:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Grids, DBGrids, StdCtrls, Buttons, Mask, DBCtrls, jpeg, ComObj,
ExtDlgs, OleCtnrs, DB;
type
TForm3 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
TabSheet7: TTabSheet;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
DBGrid1: TDBGrid;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBLookupComboBox1: TDBLookupComboBox;
Label1: TLabel;
DBLookupComboBox2: TDBLookupComboBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
RadioButton1: TRadioButton;
Edit1: TEdit;
GroupBox4: TGroupBox;
GroupBox5: TGroupBox;
DBGrid2: TDBGrid;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
DBEdit3: TDBEdit;
Label7: TLabel;
GroupBox8: TGroupBox;
GroupBox9: TGroupBox;
GroupBox10: TGroupBox;
DBGrid4: TDBGrid;
DBEdit8: TDBEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
BitBtn13: TBitBtn;
BitBtn14: TBitBtn;
BitBtn15: TBitBtn;
RadioButton2: TRadioButton;
Edit2: TEdit;
GroupBox11: TGroupBox;
GroupBox12: TGroupBox;
GroupBox13: TGroupBox;
DBGrid5: TDBGrid;
DBEdit11: TDBEdit;
DBEdit12: TDBEdit;
DBEdit13: TDBEdit;
DBEdit16: TDBEdit;
DBEdit17: TDBEdit;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
BitBtn16: TBitBtn;
BitBtn17: TBitBtn;
BitBtn18: TBitBtn;
RadioButton3: TRadioButton;
Edit3: TEdit;
DBLookupComboBox3: TDBLookupComboBox;
DBLookupComboBox4: TDBLookupComboBox;
DBLookupComboBox5: TDBLookupComboBox;
GroupBox16: TGroupBox;
GroupBox17: TGroupBox;
DBGrid7: TDBGrid;
DBEdit10: TDBEdit;
DBLookupComboBox6: TDBLookupComboBox;
BitBtn22: TBitBtn;
BitBtn23: TBitBtn;
BitBtn24: TBitBtn;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
BitBtn28: TBitBtn;
BitBtn29: TBitBtn;
Label27: TLabel;
DBLookupComboBox9: TDBLookupComboBox;
DBEdit18: TDBEdit;
Label20: TLabel;
BitBtn19: TBitBtn;
DBGrid6: TDBGrid;
BitBtn21: TBitBtn;
BitBtn20: TBitBtn;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label28: TLabel;
DBEdit9: TDBEdit;
BitBtn25: TBitBtn;
DBLookupComboBox7: TDBLookupComboBox;
Label29: TLabel;
BitBtn9: TBitBtn;
DBEdit4: TDBEdit;
DBEdit7: TDBEdit;
Label8: TLabel;
Label9: TLabel;
BitBtn10: TBitBtn;
BitBtn12: TBitBtn;
BitBtn11: TBitBtn;
DBGrid3: TDBGrid;
Label30: TLabel;
Label31: TLabel;
BitBtn26: TBitBtn;
Edit4: TEdit;
BitBtn1: TBitBtn;
BitBtn5: TBitBtn;
DBImage1: TDBImage;
OpenPictureDialog1: TOpenPictureDialog;
BitBtn30: TBitBtn;
BitBtn31: TBitBtn;
BitBtn32: TBitBtn;
BitBtn27: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure BitBtn9Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn10Click(Sender: TObject);
procedure BitBtn11Click(Sender: TObject);
procedure BitBtn12Click(Sender: TObject);
procedure DBGrid2CellClick(Column: TColumn);
procedure DBGrid3CellClick(Column: TColumn);
procedure DBGrid4CellClick(Column: TColumn);
procedure RadioButton2Click(Sender: TObject);
procedure BitBtn16Click(Sender: TObject);
procedure BitBtn17Click(Sender: TObject);
procedure BitBtn18Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure DBGrid5CellClick(Column: TColumn);
procedure DBGrid6CellClick(Column: TColumn);
procedure BitBtn19Click(Sender: TObject);
procedure BitBtn20Click(Sender: TObject);
procedure BitBtn21Click(Sender: TObject);
procedure BitBtn22Click(Sender: TObject);
procedure BitBtn23Click(Sender: TObject);
procedure BitBtn24Click(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure DBGrid8CellClick(Column: TColumn);
procedure BitBtn25Click(Sender: TObject);
procedure BitBtn26Click(Sender: TObject);
procedure BitBtn27Click(Sender: TObject);
procedure BitBtn28Click(Sender: TObject);
procedure BitBtn29Click(Sender: TObject);
procedure TabSheet4Show(Sender: TObject);
procedure BitBtn13Click(Sender: TObject);
procedure BitBtn15Click(Sender: TObject);
procedure BitBtn14Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn30Click(Sender: TObject);
procedure BitBtn31Click(Sender: TObject);
procedure BitBtn32Click(Sender: TObject);
procedure DBLookupComboBox7Exit(Sender: TObject);
procedure DBEdit9Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
id:integer;
k:integer;
k1:integer;
implementation
uses Unit1 ,unit2;
{$R *.dfm}
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
form1.Show;
form3.Visible := false;
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
dm.Tovar.Append
end;
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Dm.Tovar.Edit;
Dm.Tovar.Post;
end;
procedure TForm3.BitBtn4Click(Sender: TObject);
begin
dm.Tovar.Delete;
end;
procedure TForm3.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked then
dm.Tovar.Sort := 'назва_товору' ;
end;
procedure TForm3.Edit1Change(Sender: TObject);
begin
if length (Edit1.Text)>0 then
begin
Dm.Tovar.Filtered := False;
Dm.Tovar.Filter := ' назва_товору ' + ' LIKE ' + #39+'%' + Edit1.Text+ '%' + #39;
Dm.Tovar.Filtered := True;
end else
Dm.Tovar.Filtered := False;
end;
procedure TForm3.DBGrid1CellClick(Column: TColumn);
begin
Dm.Tovar.Edit;
end;
procedure TForm3.BitBtn9Click(Sender: TObject);
begin
form1.Show;
form3.Visible := false;
end;
procedure TForm3.BitBtn6Click(Sender: TObject);
begin
Dm.Gatunok.Append;
end;
procedure TForm3.BitBtn7Click(Sender: TObject);
begin
Dm.Gatunok.Post;
end;
procedure TForm3.BitBtn8Click(Sender: TObject);
begin
Dm.Gatunok.Delete;
end;
procedure TForm3.BitBtn10Click(Sender: TObject);
begin
Dm.Material.Append;
end;
procedure TForm3.BitBtn11Click(Sender: TObject);
begin
Dm.Material.Post;
end;
procedure TForm3.BitBtn12Click(Sender: TObject);
begin
Dm.Material.Delete;
end;
procedure TForm3.DBGrid2CellClick(Column: TColumn);
begin
Dm.Gatunok.Edit;
end;
procedure TForm3.DBGrid3CellClick(Column: TColumn);
begin
Dm.Material.Edit;
end;
procedure TForm3.DBGrid4CellClick(Column: TColumn);
var
c:real;
begin
Dm.Zamovlenya.Edit;
k1:=StrToInt(DBEdit9.Text);
c:= StrToFloat(DBLookupComboBox9.Text)* StrToFloat(DBedit9.Text);
Edit4.Text := FloatToStr(c);
end;
procedure TForm3.RadioButton2Click(Sender: TObject);
begin
begin
if RadioButton2.Checked then
Dm.Zamovlenya.Sort := 'дата_замовлення' ;
end;
end;
procedure TForm3.BitBtn16Click(Sender: TObject);
begin
Dm.Zamovnuk.Append;
end;
procedure TForm3.BitBtn17Click(Sender: TObject);
begin
Dm.Zamovnuk.Post;
end;
procedure TForm3.BitBtn18Click(Sender: TObject);
begin
Dm.Zamovnuk.Delete;
end;
procedure TForm3.RadioButton3Click(Sender: TObject);
begin
if RadioButton3.Checked then
Dm.Zamovnuk.Sort := 'Прізвище' ;
end;
procedure TForm3.DBGrid5CellClick(Column: TColumn);
begin
Dm.Zamovnuk.Edit;
end;
procedure TForm3.DBGrid6CellClick(Column: TColumn);
begin
Dm.Town.Edit;
end;
procedure TForm3.BitBtn19Click(Sender: TObject);
begin
Dm.Town.Append;
end;
procedure TForm3.BitBtn20Click(Sender: TObject);
begin
Dm.Town.Post;
end;
procedure TForm3.BitBtn21Click(Sender: TObject);
begin
Dm.Town.Delete;
end;
procedure TForm3.BitBtn22Click(Sender: TObject);
begin
Dm.Street.Append;
end;
procedure TForm3.BitBtn23Click(Sender: TObject);
begin
Dm.Street.Post;
end;
procedure TForm3.BitBtn24Click(Sender: TObject);
begin
Dm.Street.Delete;
end;
procedure TForm3.Edit3Change(Sender: TObject);
begin
if length (Edit3.Text)>0 then
begin
Dm.Zamovnuk.Filtered := False;
Dm.Zamovnuk.Filter := ' Прізвище ' + ' LIKE ' + #39+'%' + Edit3.Text+ '%' + #39;
Dm.Zamovnuk.Filtered := True;
end else
Dm.Zamovnuk.Filtered := False;
end;
procedure TForm3.DBGrid8CellClick(Column: TColumn);
begin
Dm.Info_zamovlenya.Edit;
end;
procedure TForm3.BitBtn25Click(Sender: TObject);
begin
Form3.TabSheet5.Show;
end;
procedure TForm3.BitBtn26Click(Sender: TObject);
begin
Form3.TabSheet4.Show;
end;
procedure TForm3.BitBtn27Click(Sender: TObject);
var wd:variant;
rang:variant;
table:variant;
par:variant;
num_rows, num_columns:integer;
i,j:integer;
curdate:TDate;
begin
curdate:=Now;
if not(DBGrid4.DataSource.DataSet.IsEmpty)
then
begin
num_rows:=DBGrid4.DataSource.DataSet.RecordCount;
num_columns:=DBGrid4.DataSource.DataSet.FieldCount;
wd:=CreateOleObject('Word.application');
wd.visible:=true;
wd.documents.add;
rang:=Wd.ActiveDocument.Range(Wd.ActiveDocument.Range.End-1,
Wd.ActiveDocument.Range.End-1);
wd.ActiveDocument.Range.Font.Size:=14;
wd.ActiveDocument.Range.Font.Size:=14;
Wd.ActiveDocument.Tables.Add(Range:=Rang, NumRows:=num_rows, NumColumns:=num_columns);
i:=1;
table:=wd.activedocument.tables.item(1);
while not (DBGrid4.DataSource.DataSet.eof) do
begin
for j:=0 to num_columns-1 do
begin
table.cell(i, j+1).range.text:=DBGrid4.DataSource.DataSet.Fields[j].asstring;
end;
DBGrid4.DataSource.DataSet.next;
inc(i);
end;
end;
wd.ActiveDocument.SaveAs(extractfilepath(application.ExeName)+'Замовлення.doc');
wd:=UnAssigned;
end;
procedure TForm3.BitBtn28Click(Sender: TObject);
begin
dm.Zamovlenya.Filter:='дата_замовлення='+ Edit2.Text;
dm.Zamovlenya.Filtered:=True;
end;
procedure TForm3.BitBtn29Click(Sender: TObject);
begin
dm.Zamovlenya.Filtered:=False;
end;
procedure TForm3.TabSheet4Show(Sender: TObject);
begin
// DM.setEdit(Edit4);
end;
procedure TForm3.BitBtn13Click(Sender: TObject);
begin
Dm.Zamovlenya.Append;
end;
procedure TForm3.BitBtn15Click(Sender: TObject);
begin
Dm.Zamovlenya.Delete;
end;
procedure TForm3.BitBtn14Click(Sender: TObject);
begin
Dm.Zamovlenya.FieldByName('Вартість').AsFloat := StrToFloat(Edit4.text);
Dm.Zamovlenya.Post;
if (k1<=k) then
begin
dm.Tovar.Locate('код_товару',id,[]);
dm.Tovar.Edit;
dm.Tovar.FieldByName('кількість_на_складі').AsInteger := k-k1;
dm.Tovar.Post;
end
end;
procedure TForm3.BitBtn5Click(Sender: TObject);
var
Jpg: TJpegImage;
bmp: TBitmap;
begin
if (OpenPictureDialog1.Execute) then
begin
Jpg := TJPEGImage.Create;
bmp := TBitmap.Create;
try
jpg.LoadFromFile(OpenPictureDialog1.FileName);
bmp.Assign(jpg);
DM.Tovar.Edit;
DM.Tovar.FieldByName('Фото').Assign(bmp);
DM.Tovar.Post;
finally
jpg.Free;
bmp.Free;
end;
end;
end;
procedure TForm3.BitBtn30Click(Sender: TObject);
begin
Form1.Show;
Form3.Visible := false;
end;
procedure TForm3.BitBtn31Click(Sender: TObject);
begin
Form1.Show;
Form3.Visible := false;
end;
procedure TForm3.BitBtn32Click(Sender: TObject);
begin
Form1.Show;
Form3.Visible := false;
end;
procedure TForm3.DBLookupComboBox7Exit(Sender: TObject);
begin
id:=DBLookupComboBox7.KeyValue;
dm.Tovar.Locate('код_товару',id,[]);
k:=dm.Tovar.Fields[4].Value;
end;
procedure TForm3.DBEdit9Exit(Sender: TObject);
var
c:real;
begin
k1:=StrToInt(DBEdit9.Text);
c:= StrToFloat(DBLookupComboBox9.Text)* StrToFloat(DBedit9.Text);
Edit4.Text := FloatToStr(c);
end;
end.
2.3 Налагодження та тестування програми
Тестування програми це перевірка правильності виконання програми при різних початкових даних та при виконані функціональних режимів.
На етапі тестування програми перевіряється логіка роботи програми в ході її виконання з конкретними вхідними даними.
Відладка процес розробки компютерної програми, що виявляє , локалізує
і усуває помилки. На цьому етапі програма перевіряється на синтаксичні та семантичні помилки.
Налагодження це процес, який починається з моменту встановлення існування помилки і закінчується локалізацією цієї помилки в програмі, тобто визначенням її характеру та місцезнаходження. Таким чином, налагодження програми передбачає обовязкову наявність помилки.
Налагодження програм досить складний процесс, тому що для виправлення помилки необхідно повністю виявити її причини, які часто бувають неочевидними. Крім того, налагодження це процес, який призупиняється лише тимчасово, поки тестування не виявить наявність чергової помилки.
Синтаксична помилка помилка, яка повязана з неправильністю написання послідовності символів або токенів певною мовою програмування, призводить до краху програми при виконанні. У середовищі Visual Studio в редакторі коду більшість синтаксичних помилок виділяються і їх легко помітити і усунути.
Семантична помилка (баг) призводить до некоректної роботи програми, але не призводить до її краху. Засобами Visual Studio можна покроково виконувати код і переглядати значення змінних в кожен момент часу, щоб побачити де саме в програмі виникає некоректна робота і виправити її. Також для цього можна встановлювати точки «зупину» на певних рядках коду, де буде зупинятися робота програми для аналізу значень змінних.
Коли програма виявила помилку вона видає повідомлення про знаходження даної помилки, та намагається як найточніше вказати місце її знаходження.
Під час розробки програмного додатку було виявлено такі помилки:
- [Error] Unit3.pas(65): Missing operator or semicolon
- [Fatal Error] Project1.dpr(17): Could not compile used unit 'Unit1.pas'
- [Error] Unit3.pas(86): Undeclared identifier: 'ataModule2'
- [Error] Unit3.pas(278): '.' expected but end of file found
Всі виявлені помилки було проаналізовано і виправлено. Після відлагодження проект запрацював нормально.
2.4 Дослідна експлуатація програми
Дослідна експлуатація одна з останніх стадій створення обладнання, пристроїв, систем, програм та методик, що полягає в використанні вище перерахованого за прямим призначенням в реальних робочих чи технологічних процесах та під час якої остаточно визнається їх функціональна придатність.
Дослідна експлуатація проекту відбулась відразу після закінчення етапу тестування та налагодження, в результаті чого було отримано виконавчий модуль програми. Перед початком дослідної експлуатації були створені макети таблиць БД. Склад даних цих таблиць передбачав можливість випробовувань проекту для різних значень даних включаючи виникнення виключних ситуацій. Під час експлуатації програми перевіряємо усі режими роботи програми, щоб переконатися у відповідності функціонування додатку поставленим вимогам.
У процесі дослідної експлуатації проекту відбувались його багаторазові запуски та виправлення всих недоліків, які виникали, після виправлення яких програма почала працювати коректно. Також було виконано корегування кольорів вікон діалогу та окремих елементів керування.
Розроблена АС надає доступ до редагування всіх необхідних довідників розробленої бази даних промислового підприємства, а саме довідника гатунка та матеріалу, довідника міста и вулиці.
Отже, розроблений додаток повністю відповідає вимогам постановки задачі.
2.5 Робота з програмою
Розробленою програмою може користуватись людина, якщо вона володіє базовими знаннями ПК.
Після запуску програми відкривається головне вікно програми як на рисунку 2.5. Дане вікно дає змогу перейти до форми з базой данних.
Рисунок 2.5 Головна форма
За допомогою кнопки «Перехід до БД» можна перейти до таблиць бази даних натиснувши кнопкою миші на неї, потім відкриється форма, на якій буде зображено бази даних(рисунок 2.6).
Рисунок 2.6 Вікно форми роботи з таблицями
Для того щоб обрати іншу таблицю, потрібно наиснути мишею на іншу вкладку з назвою таблиці.
Вкладки «Гатунок та Матеріал» та «Місто та Вулиця» являють собоюдовідники В кожному довіднику можна редагувати та видаляти існуючі записи та додавати нові.
Для наведення прикладу використання програми обрано таблицю «Товар». До обраної таблиці можемо використовувати такі роботи з нею:
- Додання;
- Видалення;
- Збереження;
- Додання фото товару;
- Пошук по товару;
Цю робота з таблицею відображена нижче на рисунках:
Рисунок 2.7 Вікно додавання нового товару
Рисунок 2.8 Вікно додавання нового фото товару
Рисунок 2.9 Вікно пошук товару
Також в програмі існує кнопка експорту у ворд на вкладні «Замовлення».
Рисунок 2.10 Вікно перегляду виконаного експорту в Microsoft Word
ВИСНОВКИ
Протягом роботи над курсовим проектом були закріплені знання і навички з проектування баз даних: побудови інфологічної та даталогічної моделей, їх реалізації засобами Microsoft Acess та написання клієнтського додатку для роботи з розробленою базою даних в обэктно-орієнтованому середовищі Delphi.
Крім того були вдосконалені навички проектування програмного забезпечення з допомогою UML-діаграм, та його реалізації мовою програмування Object Pascal.
В результаті була створена повнофункціональна автоматизована система для промислового підприємства ,яка буде взята на експлуатацію для обліку та реалізації товарів підприємсвом. Отриманий досвід дозволить розробляти подібні програмні засоби для промислових потреб підприємств та організацій.
ЛІТЕРАТУРА
- Макконнелл С. Совершенный код. Мастер-класс / Пер. с англ. М.: Издательско-торговый дом «Русская Редакция»; СПб.: Питер, 2005. 896 стр.: ил.
- Соммервилл, Иан. Инженерия программного обеспечения, 6-е издание.: Пер. с англ. М.: Издательский дом «Вильямс», 2002. 624 с.: ил.
- Макконнелл С. Профессиональная разработка программного обеспечения. Пер. с англ. СПб.: Символ-Плюс, 2006. 240 с., ил.
- Гамма Э. , Хелм Р., Джонсон Р., Влиссидес Дж. Приемы обьектно-ориентированного проектирования. Паттерны проектирования. СПб.: Питер, 2001. 368 с.: ил.
- Э. Фримен, Э. Фримен, К. Сьерра, Б. Бейтс. Паттерны проектирования. СПб.: Питер, 2011. 656 с.: ил.
- Троелсен, Эндрю. Язык программирования C# 5.0 и платформа .NET 4.5, 6-е изд.: Пер. с англ. М.: ООО «И.Д. Вильямс», 2013. 1312 с.: ил.
- Албахари, Джозеф, Албахари, Бен. C#. Справочник. Полное описание языка.: Пер. с англ. М.: ООО «И.Д. Вильямс», 2014. 1008 с.: ил.
- Бондарь А. Г. Microsoft SQL Server 2012. СПб.: БХВ-Петербург, 2013. 608 с.: ил.
- Фиайли К. SQL: Пер. С англ. М.: ДМК Пресс. 456 с.: ил.
- Карвин Б. Программирование баз данных SQL. Типичные ошибки и их устранение / Б. Карвин. М.: Рид Групп, 2012. 336 с.
- http://intermash.ua/
ДОДАТКИ
Розробка автоматизованої системи підтримки обліку та реалізації товарів промислового підприємства