- •Анотація
- •1 Техніко-економічне обґрунтування технічного завдання на курсову роботу
- •1.1 Вимоги користувача
- •1.2 Аналіз предметної області
- •1.3 Вибір методу вирішення основної задачі
- •2 Розробка алгоритмів розв’язку задачі
- •2.1 Алгоритм побудови робочого поля
- •2.2 Покроковий алгоритм
- •2.3 Розробка меню
- •3 Програмна реалізація
- •3.1 Вибір мови програмування
- •3.2 Програмування інтерфейсу
- •3.3 Розробка програми
- •4 Тестування, перевірка правильності роботи
- •4.1 Готування тестування
- •4.2 Аналіз результатів роботи
- •Висновки
- •Перелік посилань
- •Література
- •Додаток а – Лістінг
1 Техніко-економічне обґрунтування технічного завдання на курсову роботу
1.1 Вимоги користувача
В програмі повинна бути змодельована та реалізована ситуація, коли доречно застосовувати алгоритми пошуку найкоротших шляхів, такі як алгоритм Дейкстри або Флойда. В даній курсовій роботі передбачається ситуація з переливанням рідини з однієї місткості в іншу, при цьому час переливання між окремими посудинами може бути різним, тобто може виникнути така ситуація у якій існуватиме порядок переливання, який вигідніший, ніж переливання з першої посудини в останню.
Користувачу повинно бути доступне ручне налаштування роботи програми, а саме: розміщення об’єктів, кількість взаємодіючих елементів та їх положення відносно один одного – користувач повинен сам вирішувати ці питання на власний розсуд, але бажано так, щоб можна було знайти розв’язання завдання, а не зайти у найгірший випадок, коли переливання з початкової посудини в останню відбувається без економії часу. У випадку потреби користувачу повинно бути доступне видалення зайвих або редагування розміщення певних елементів на формі.
Дані про час переливання між кожною парою посудин користувач теж заповнює власноруч. У випадку некоректності вводу повинна бути можливість змінити параметри чи данні, які були введені, а також при бажанні – змінення розміщення окремого об’єкту на формі, або видалення його взагалі.
Дані про час переливання повинні міститися у таблиці, яка відображатиме інформацію про взаємодію елементів один між одним, тобто і буде таблицею суміжності, на основі якої буде будуватись хід виконання програми. Дані, що вводитимуться в таблицю, повинні будуть відслідковуватись програмою та перевірятись на коректність, а у випадку хибного вводу, наприклад: від’ємні значення (час не може набувати від’ємного числового значення), інші символи (символи крім числових та символа “,” – кома, що позначає дробове число). Якщо ж хибні значення все-таки були введені, то програма зобов’язана автоматично виправити помилку та повідомити користувача про некоректність вводу.
Інтерфейс у програмі та власне сам принцип роботи з нею буде простим, усі потрібні при роботі програми інструменти будуть розташовані компактно так, щоб це не заважало користуванню полотном програми (де будуть розміщуватись користувачем усі взаємодіючі об’єкти). Для отримання ще більше місця під полотно програма матиме повноекранний режим, тобто не буде звичайного вікно, а програма відразу розгорнеться на весь екран, не зберігаючи зайві елементи управління Windows. В результаті такого заміщення будуть реалізовані власні елементи управління, такі як вихід з програми, згортання в трей та інше, а натомість отримаємо значний виграш в вільному місці під полотно (що й дасть нам те, що інтерфейс не буде спотворено при зміні розширення екрану, або перенесення програми з одного комп’ютера на інший).
1.2 Аналіз предметної області
Тема курсової роботи досить актуальна і по ній існує безліч різноманітних реалізацій.
Найпростіша реалізація алгоритму Дейкстри потребує O(V2) дій. У ній використовується масив відстаней та масив позначок. На початку алгоритму відстані заповнюються великим позитивним числом (більшим максимального можливого шляху в графі), а масив позначок заповнюється нулями. Потім відстань для початкової вершини вважається рівною нулю і запускається основний цикл.
На кожному кроці циклу ми шукаємо вершину з мінімальною відстанню і прапором рівним нулю. Потім ми встановлюємо в ній позначку 1 і перевіряємо всі сусідні з нею вершини. Якщо в ній відстань більша, ніж сума відстані до поточної вершини і довжини ребра, то зменшуємо його. Цикл завершується коли позначки всіх вершин стають рівними 1.
Рисунок 1.1 – Реалізація алгоритму Дейкстри
На рисунку 1.1 зображено програму, що реалізує знаходження найкоротшого шляху зі алгоритмом Дейкстри (програма знаходиться у вільному доступі).
