. ID_Checks - номер чеку
. Emploee - персональний номер працівника, який видав чек
. Costs - загальна сума чеку
. Date - дата видачі чеку.
Таблиця ChkGoods використовується, як допоміжна до
попередньої таблиці і зберігає інформацію про товари, які входили до
відповідного чеку.
Важливу роль при проектування будь-якої довідково-пошукової інформаційної системи є правильно підібрана система управління базою даних.
База даних - це сумісно використовуваний набір логічно зв’язаних даних (та опис <#"896976.files/image003.jpg">
Рис. 2.3.1. Підключення до сервера БД
Рис.2.3.2. Створення БД.
Після створення бази даних додаємо до неї нові таблиці, які були описані та спроектовані раніше та представлені на діаграмі.
Рис.2.3.3. Створення таблиці Goods.
Рис.2.3.4. Створення таблиці Checks.
Рис.2.3.5. Створення таблиці ChkGoods.
Рис.2.3.6. Створення таблиці Emploee.
Рис.2.3.7. Створення таблиці ZP.
Для роботи з створеними таблицями та БД необхідно забезпечити нормальний зв’язок між таблицями.
Вся необхідна робота здійснюється в спеціальному вікні Схема
даних, яке відкривається кнопкою на панелі інструментів або командою Сервіс:
Схема даних.
Рис.2.4.1. Встановлення зв’язків між таблицями
Для рішення поставленого завдання прийнята схема бази даних,
представлена на рис. 2.4.1 Для відкриття схеми даних необхідно вибрати команду
«Инструменты» в меню «Дизайнер БД». У даній схемі представлений взаємозв'язок
всіх таблиць бази даних і відношення між ними.
Для створення програмного додатку ми використаємо мову високого програмува с#, оскільки вона є простою і зрозумілою мовою програмування та має досить великі можливості для створення клієнт-сервверних застосувань.
C# (вимовляється Сі-шарп) - об'єктно-орієнтована <https://uk.wikipedia.org/wiki/%D0%9E%D0%B1%E2%80%99%D1%94%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D1%96%D1%94%D0%BD%D1%82%D0%BE%D0%B2%D0%B0%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F> мова програмування <https://uk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F> з безпечною системою типізації <https://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%82%D0%B8%D0%BF%D1%96%D0%B7%D0%B0%D1%86%D1%96%D1%97> для платформи .NET <https://uk.wikipedia.org/wiki/.NET>. Розроблена Андерсом Гейлсбергом <https://uk.wikipedia.org/wiki/%D0%90%D0%BD%D0%B4%D0%B5%D1%80%D1%81_%D0%93%D0%B5%D0%B9%D0%BB%D1%81%D0%B1%D0%B5%D1%80%D0%B3>, Скотом Вілтамутом <https://uk.wikipedia.org/w/index.php?title=%D0%92%D1%96%D0%BB%D1%82%D0%B0%D0%BC%D1%83%D1%82_%D0%A1%D0%BA%D0%BE%D1%82&action=edit&redlink=1> та Пітером Гольде <https://uk.wikipedia.org/w/index.php?title=%D0%93%D0%BE%D0%BB%D1%8C%D0%B4%D0%B5_%D0%9F%D1%96%D1%82%D0%B5%D1%80&action=edit&redlink=1> під егідою Microsoft Research <https://uk.wikipedia.org/wiki/Microsoft_Research> (при фірмі Microsoft <https://uk.wikipedia.org/wiki/Microsoft>).
Синтаксис <https://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81> C# близький до С++ <https://uk.wikipedia.org/wiki/%D0%A1%2B%2B> і Java <https://uk.wikipedia.org/wiki/Java>. Мова <https://uk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B2%D0%B0> має строгу статичну типізацію, підтримує поліморфізм <https://uk.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D1%96%D0%BC%D0%BE%D1%80%D1%84%D1%96%D0%B7%D0%BC_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)>, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки <https://uk.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%BE%D0%B1%D0%BA%D0%B0_%D0%B2%D0%B8%D0%BD%D1%8F%D1%82%D0%BA%D1%96%D0%B2>, коментарі у форматі XML <https://uk.wikipedia.org/wiki/XML>. Перейнявши багато що від своїх попередників - мов С++ <https://uk.wikipedia.org/wiki/%D0%A1%2B%2B>, Delphi <https://uk.wikipedia.org/wiki/Delphi_(%D0%BC%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)>, Модула <https://uk.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B0&action=edit&redlink=1> і Smalltalk <https://uk.wikipedia.org/wiki/Smalltalk> - С#, спираючись на практику їхнього використання <https://uk.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D0%BD%D1%8F>, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем, наприклад множинне спадкування <https://uk.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B8%D0%BD%D0%BD%D0%B5_%D1%81%D0%BF%D0%B0%D0%B4%D0%BA%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F> класів (на відміну від C++).# розроблялась як мова програмування прикладного рівня для CLR <https://uk.wikipedia.org/wiki/CLR> і тому вона залежить, перш за все, від можливостей самої CLR. Це стосується, перш за все, системи типів C#. Присутність або відсутність тих або інших виразних особливостей мови диктується тим, чи може конкретна мовна особливість бути трансльована у відповідні конструкції CLR. Так, з розвитком CLR від версії 1.1 до 2.0 значно збагатився і сам C#; подібної взаємодії слід чекати і надалі. (Проте ця закономірність буде порушена з виходом C# 3.0, що є розширеннями мови, що не спираються на розширення платформи .NET.) CLR надає C#, як і всім іншим .NET-орієнтованим мовам, багато можливостей, яких позбавлені «класичні» мови програмування. Наприклад, збірка сміття не реалізована в самому C#, а проводиться CLR для програм, написаних на C# точно так, як і це робиться для програм на VB.NET, J# тощо.
Титульним компілятором <https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%96%D0%BB%D1%8F%D1%82%D0%BE%D1%80> C# є Microsoft Visual C# <https://uk.wikipedia.org/w/index.php?title=Microsoft_Visual_C&action=edit&redlink=1>.
Існують інші компілятори C#, часто вони включають реалізації Common Language Infrastructure і бібліотеки класів .NET:
Проект Microsoft Rotor (який тепер зветься Shared Source Common Language Infrastructure, ліцензований тільки для навчального і дослідницького використання) забезпечує реалізації CLR <https://uk.wikipedia.org/wiki/CLR> runtime і компілятор C#, і підмножину бібліотек фреймворка Common Language Infrastructure, відповідно до специфікації ECMA (до C# 2.0, і з підтримкою тільки Windows XP <https://uk.wikipedia.org/wiki/Windows_XP>).
Проект SharpDevelop <#"896976.files/image011.jpg">
Рис. 3.3.1. Створення нового проекту.
Після створення нового проекту створимо головне вікно даного
програмного продукту. Так як даний додаток складатиметься з трьох основних
функціональних блоків (магазин, склад, відділ кадрів) то на головному вікні
розмістимо три однойменні кнопки (див. рис. 3.3.2)
Рис. 3.3.2. Проектування головного вікна
Відповідно то функціональних задач розроблювального проекту, необхідно розробити ряд інших форм для забезпечення інтерфейсу між програмою та користувачем. Всі форми, які були спроектовані в процесі розробки будуть показані н наступній частині дипломної роботи при описі готової програми.
Спроектувавши всі необхідні форми необхідно також надати певним об’єктам управління деяких функціональних можливостей. Зокрема, запрограмувати функції системи. Отже для того щоб наш проект взаємодіяв з БД нам необхідно її підключити. Це здійснюється за допомогою наступної стрічки коду:conn = new SqlConnection(@"Data Source=DESKTOP-E468J7Q;Initial Catalog=Shop;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
Тут ми вказуємо ім’я нашого SQL Server-а, ім’я бази даних, права доступу і т.і.
Взаємодіяти з БД програма буде завдяки виконанню sql запитів. При роботі з SQl Server використовується бібліотека класів С# SqlClient, яка підключається наступним чином:System.Data.SqlClient;
За виконання sql запитів відповідає об’єкт, який входить до даної бібліотеки - SqlCommand.
Приклад коду, який здійснює вибірку товарів на складі з БД наведеней нижче.conn = new SqlConnection(@"Data Source=DESKTOP-E468J7Q;Initial Catalog=Shop;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
{.Open();cmd = conn.CreateCommand();.CommandType = CommandType.Text;.CommandText = "select * from Goods";.ExecuteNonQuery();dt = new DataTable();da = new SqlDataAdapter(cmd);.Fill(dt);.DataSource = dt;.Close();
}
{.Show("Неможливо відкрити склад", "Помилка");.Close();
}
Даний код здійсню підключення до БД, виконує запит на вибірку і передає отримані дані в компонент dataGridView.
Повні лістинги програми наведені в додатках.
база логічний таблиця програма
Після програмування нашого проекту його необхідно відкомпілювати. Для цього натискаємо клавішу F5. Якщо програма не містить помилок то компілятор видасть повідомлення про успішне завершення і запустить наш проект на виконання. Тут ми вже зможемо протестувати створену програму. Тестування повинне забезпечити перевірку працездатності функцій для всіх варіантів вхідних даних.
Тестування програмного забезпечення (англ. <https://uk.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D1%96%D0%B9%D1%81%D1%8C%D0%BA%D0%B0_%D0%BC%D0%BE%D0%B2%D0%B0> Software Testing) - це процес технічного дослідження, призначений для виявлення інформації про якість продукту відносно контексту, в якому він має використовуватись. Техніка тестування також включає як процес пошуку помилок <https://uk.wikipedia.org/wiki/%D0%91%D0%B0%D2%91> або інших дефектів, так і випробування програмних складових з метою оцінки. Може оцінюватись:
· відповідність вимогам, якими керувалися проектувальники та розробники
· правильна відповідь для усіх можливих вхідних даних
· виконання функцій за прийнятний час
· практичність
· сумісність з програмним забезпеченням та операційними системами
· відповідність задачам замовника.
Оскільки число можливих тестів навіть для нескладних програмних компонент практично нескінченне, тому стратегія тестування полягає в тому, щоб провести всі можливі тести з урахуванням наявного часу та ресурсів. Як результат програмне забезпечення (ПЗ) тестується стандартним виконанням програми з метою виявлення баґів <https://uk.wikipedia.org/wiki/%D0%91%D0%B0%D2%91> (помилок або інших дефектів).
Тестування ПЗ може надавати об'єктивну, незалежну інформацію про якість ПЗ, ризики відмови, як для користувачів так і для замовників.
Тестування може проводитись, як тільки створено виконуваний код (навіть частково завершено). Процес розробки <https://uk.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D1%96%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F> зазвичай передбачає коли та як буде відбуватися тестування. Наприклад, при поетапному процесі, більшість тестів відбувається після визначення системних вимог і тоді вони реалізуються в тестових програмах. На противагу цьому, відповідно до вимог гнучкої розробки ПЗ <https://uk.wikipedia.org/wiki/%D0%93%D0%BD%D1%83%D1%87%D0%BA%D0%B0_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F>, програмування і тестування часто відбувається одночасно.
Тестування - це одна з технік контролю якості, що включає в себе
· Планування робіт (Test Management)
· Проектування тестів (Test Design)
· Виконання тестування (Test Execution)
· Аналіз отриманих результатів (Test Analysis).
Верифікація (Verification) <https://uk.wikipedia.org/wiki/%D0%92%D0%B5%D1%80%D0%B8%D1%84%D1%96%D0%BA%D0%B0%D1%86%D1%96%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F> - це процес оцінки системи або її компонентів з метою визначити чи задовольняють результати поточного етапу розробки умовам, сформованим на початку цього етапу. Тобто чи виконуються цілі, терміни, завдання з розробки проекту, визначені на початку поточної фази. Валідація (Validation) <https://uk.wikipedia.org/wiki/%D0%92%D0%B0%D0%BB%D1%96%D0%B4%D0%B0%D1%86%D1%96%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F> - це визначення відповідності розроблюваного програмного забезпечення між очікуваннями і потребами користувача, вимогам до системи.
План Тестування (Test Plan) - це документ, що описує весь обсяг робіт з тестування, починаючи з опису об'єкта, стратегії, розкладу, критеріїв початку і закінчення тестування, до необхідного в процесі роботи обладнання, спеціальних знань, а також оцінки ризиків з варіантами їх вирішення.
Тест дизайн (Test Design) - це етап процесу тестування програмного забезпечення, на якому проектуються і створюються тестові випадки (тест кейси), відповідно до визначених раніше критеріями якості та цілями тестування.
Тестовий випадок (Test Case) - це документ, що описує сукупність кроків, конкретних умов і параметрів, необхідних для перевірки реалізації тестованої функції або її частини.
Баг/Дефект Репорт (Bug Report) - це документ, що описує ситуацію або послідовність дій (Steps), що призвела до некоректної роботи об'єкта тестування (Misbehavior), із зазначенням причин та очікуваного результату (Expected Result).
Тестове Покриття (Test Coverage) - це одна з метрик оцінки якості тестування, що представляє із себе щільність покриття тестами вимог або коду, що виконується.
Деталізація Тест Кейсів (Test Case Specification) - це рівень деталізації опису тестових кроків і необхідного результату, при якому забезпечується розумне співвідношення часу проходження до тестового покриття.
Час Проходження Тест Кейса (Test Case Pass Time) - це час від початку проходження кроків тест кейса до отримання результату тесту.
Отже перейдемо до безпосередньої перевірки нашої програми на працездатність.
Після запуску програми користувач бачить перед собою головне
вікно проекту. Даний програмний продукт складається з трьох основних робочих
модулі (див рис.3.4.1).
Рис. 3.4.1. Головне меню
Як видно з рисунка вище, модулями програми є: модуль «Магазин», модуль «Склад» та модуль «Відділ кадрів».
Модуль «Магазин» вміщає собою засоби здійснення обліку
проданих товарів. При натисненні на однойменну кнопку відкриється нове вікно, в
якому продавець зможе автоматизувати роботу магазину. При виборі опції Магазин
продавцеві потрібно в спеціальному вікні ввести свій персональний номер (див.
рис. 3.4.2) і ввійти в програму Магазин. Після входу в БД робиться запис про те
що працівник приступив до виконання своїх обов’язків. Відповідно до цих записів
буде нараховувати заробітна плата відповідному продавцю.
Рис. 3.4.2. Вікно авторизації
Якщо авторизація пройшла успішно то відкривається нове вікно
де безпосередньо ведеться продаж товарів продавце (див. рис. 3.4.4) в іншому
випадку з’явиться помилку про помилку авторизації (див. рис. 3.4.3)
Рис. 3.4.3. Повідомлення про помилку авторизації.
Рис. 3.4.4. Вікно ведення продажів
В даному вікні в лівому верхньому куті розміщено інформацію про прізвище ім'я по-батькові працівника (див. рис. 3.4.5)
Рис. 3.4.5. Інофрмація про працівника
Нище в combobox поміщено інформацію про чек (див. рис.
3.4.6).
Рис. 3.4.6. Інформація про чек
Справа біля інформації про чек розміщено елементи вводу
штрих-коду товара та кількості купленого товару (див. рис. 3.4.7).
Рис. 3.4.7. Форма вводу штрих-коду
Продавець вводить штрих-код у відповідне поле та нажимає
Enter. Після цього відбувається автоматичний перехід в поле для вводу кількості
товару, куди продавець відповідно вводить кількість. Далі продавець знову
натискає Enter (див. рис. 3.4.8) і товар, який відповідає введеному штрих-коду
додається до чека. (див. рис. 3.4.9)