Оптимізація мережевого графіка за часом

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

скачати

ФГТУ СПО Тульський економічний коледж

ПОЯСНЮВАЛЬНА ЗАПИСКА

до курсової роботи
з предмету: "Комп'ютерне моделювання"
на тему: Розробка програми
«Оптимізація мережевого графіка за часом»
Спеціальність: 230105 ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ
ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ І АВТОМАТИЗОВАНИХ СИСТЕМ.
Виконав
студент гр. 316-П ______________ / Щербаков Н.В. /
Керівник ______________ / Юрченко В.М. /
Щекино
2009р.

ЗАВДАННЯ НА КУРСОВУ РОБОТУ
По предмету: "Комп'ютерне моделювання"
Студента гр. 316-П Щербакова Миколи Володимировича
Спеціальність: 230105 Програмне забезпечення обчислювальної
техніки і автоматизованих систем.
ТЕМА: Розробка програми «Оптимізація мережевого графіка за часом»
ВИХІДНІ ДАНІ: картка завдання
I
J
Обсяг робіт
Число ресурсів
0
1
25
5
0
2
30
6
0
3
20
4
1
4
22
5
2
3
10
4
2
4
15
3
2
5
5
4
3
6
25
5
4
6
20
4
5
6
5
4
6
7
30
6
Продуктивність робочих = 5 од.
Загальна кількість задіяних в процесі виробництва робочих = 50
ВИХІДНІ ДАНІ: файл з вихідними полями
Визначити оптимальний час випуску продукції.
Сформувати файл з полями: I, J, Необхідна кількість ресурсів, Число
ресурсів, Тривалість, Події, Резерв часу.

ВИХІДНІ ДАНІ: файл з вихідними полями
I
J
Обсяг робіт
Не обхід. ресурсів
Число
ресурсів
Тривалість
Події
Резерв часу
Графічна частина
виконати: блок - схему програми
Головною метою є: Визначити оптимальний час випуску продукції. Засвоєння методів скорочення термінів випуску продукції шляхом оптимальної розстановки наявних трудових ресурсів. А так само закріплення практичних навичок роботи з ЕОМ.

Зміст

Реферат

Ведення
1. Технічні характеристики
1.1. Постановка завдання
1.1.1. Сутність завдання
1.1.2. Математична модель задачі
1.2. Опис логічної структури
1.3. Опис і організація вхідних даних
1.3.1. Опис вхідний і вихідний інформації
1.3.2. Організація ведення інформаційної бази
1.4. Опис програмних засобів
1.4.1. Опис середовища програмування
1.4.2. Опис програми
1.5. Опис технічних засобів
1.5.1. Опис і обгрунтування мінімальної конфігурації технічних засобів
Висновок
Література
Додаток A

Реферат
Курсова робота за темою «Оптимізація мережевого графіка за часом» виконана в середовищі програмування Borland Delphi 5. Вона складається з пояснювальної записки та графічної частини. Обсяг пояснювальної записки складає 35 аркушів формату A4, а також включає в себе 4 програми:
· Додаток A - лістинг програми;
· Додаток Б - головна форма;
· Додаток В - додаткові вікна і вікно допомоги;
· Додаток Г - структура меню програми.
Графічна частина представлена ​​схемою програми, виконаної на аркуші формату A1.
Ключові слова в курсовій роботі:
оптимізація, робота, подія, ресурс, час, критичний шлях.

Введення

При проектуванні, яких або намічених робіт будують графіки, в яких наочно відображаються всі процеси і порядок проведення цих робіт. Щоб найбільш раціонально використовувати час, виділений на ці роботи проводять оптимізацію цих графіків таким чином, щоб послідовність проведення робіт, забезпечувала своєчасне виконання кожної з робіт, для оптимізації цих робіт використовуються мережеві графіки.
Мережевий графік - це схематичне зображення операцій і елементів виробничого процесу (програми), а також взаємозв'язку порядку і послідовності їх виконання.
Оптимізація мережевого графіка дозволяє з'ясувати самий найкоротший час виконання даних робіт, а так само дозволяє найбільш вигідно розподілити ресурси, витрачені на виконання даних робіт. При оптимізації мережевих графіків визначається найбільш найкоротший шлях для виконання всього комплексу робіт.

1. Технічні характеристики
1.1. Постановка завдання
Вимагається при обмеженому ліміті робочих мінімальне критичний час випуску продукції в результаті оптимальної розстановки трудових ресурсів.
Задається:
· Загальна кількість робітників.
· Необхідна кількість виробів по кожній роботі.
Продуктивність праці - однакова.
Тривалість кожної роботи обернено пропорційна кількості робітників, зайнятих на цій роботі.
Під роботами прийнято розуміти певні процеси, які можуть мати різний зміст. Перш за все, це реальні господарські або технологічні процеси, що вимагають витрат часу і ресурсів для їх здійснення
1.1.1. Сутність завдання
Оптимізація мережевого графіка полягає в наступному: потрібно при певній кількості робочих визначити мінімальну критичний час випуску кінцевої продукції. У результаті оптимальної розстановки трудових ресурсів.
Задається загальна кількість цих самих ресурсів, в нашому випадку - робітників, зайнятих на розглянутому комплексі робіт, а замість тривалості робіт задаються по кожній роботі необхідну кількість виробів підлягають обробці.
Продуктивність праці всіх робітників однакова. Тривалість кожної роботи обернено пропорційна кількості робітників, зайнятих на цій роботі.
Найважливіші способи скорочення часу витрачається на виконання комплексів робіт полягають в наступному:
1) Насамперед проводиться перегляд топології мережі, тобто зміни складу послідовності виконання або взаємозв'язки між роботами. Такий перегляд топології мережі можливий у тому випадку, коли для одних і тих же робіт можуть бути застосовані різні способи їх виконання або може бути змінена послідовність виконання робіт, зокрема замінена послідовність паралельністю при виконанні окремих робіт.
У певних випадках може виявлятися недоцільне використання ресурсів на численних паралельних роботах. Якщо паралельні роботи виконуються робітниками однієї спеціальності і кваліфікації при використанні певних типів машин і механізмів, то доцільно зробити так, щоб ті з робіт, які не лежать на критичному шляху (і, отже, мають резерви часу), виконувалися б послідовно. Тоді частина ресурсів можна використовувати для прискорення критичних робіт.
Використовується також можливість більш детального членування робіт з тим, щоб прискорити початок будь-яких критичних робіт.
2) Іншим способом скорочення критичного шляху є перехід від нормальних тривалостей робіт, що знаходяться на критичному шляху, до мінімально можливим, в першу чергу за рахунок переміщення ресурсів з робіт, що знаходяться на некритичних шляхах.
Переміщення ресурсів з некритичних робіт на критичні має, зрозуміло, вироблятися в розумних межах, з тим, щоб некритичні роботи самі не стали критичними.
3) В окремих випадках для прискорення виконання критичних робіт можуть залучатися додаткові ресурси з боку.
Провівши тим чи іншим способом скорочення тривалості робіт на критичному шляху, знову виконують обробку мережевого графіка, щоб виявити достатність вжитих заходів, а також дізнатися, чи не з'явилися нові критичні шляху. Якщо новий варіант мережі також не забезпечує дотримання директивних термінів виконання всього комплексу робіт, то вся процедура повторюється знову до тих пір, поки не буде отриманий задовільний результат. Для скорочення кількості перерахунків мережевого графіка і його показників проводять заходи з одночасного скорочення робіт не тільки на критичному, але і на околокрітіческіх (тобто близьких до критичного) дорогах. Багаторазові перерахунки мережевого графіка не є обтяжливими і не займають багато часу і витрат праці фахівців, якщо всі ці зміни здійснюються за спеціально розробленою документацією і якщо всі операції по перерахунку мережевого графіка проводяться на ПЕОМ.
В окремих випадках, особливо при жорстких обмеженнях в ресурсах, остаточним результатом розрахунків по оптимізації мережевого графіка може з'явитися обгрунтоване доказ неможливості укластися в заданий термін без усунення цих обмежень або перегляду заданих техніко-економічних характеристик. Це положення розглядається відповідними інстанціями, що мають право вирішувати зазначені питання.
Після того як визначено тривалість всього комплексу робіт, здійснюється прив'язка всієї мережі до календарної шкалою часу. У результаті створюється директивний документ - план-графік проведення робіт. У ньому вказуються дати початку та закінчення кожної роботи, а також величини резервів часу.
Директивний план-графік розсилається відповідальним виконавцям, після чого починається виконання комплексу робіт відповідно до розробленого графіку.
Однак нерідко виникає необхідність, перш ніж приступити до робіт, перевірити розподіл ресурсів за календарними строками виконання робіт. Справа в тому, що, визначаючи тривалість виконання тієї чи іншої роботи, включеної в мережевий графік, ми виходили з фіксованої кількості ресурсів, виділеного для її виконання. Щоправда, в момент складання мережного графіка ще не бувають відомі точні календарні терміни виконання робіт. Це з'ясовується лише пізніше, після розрахунку основних часових показників мережевого графіка. Виділяючи для кожної роботи певну кількість ресурсів, ми могли припускати їх достатність, виходячи з наших можливостей. Однак не завжди враховуються збіг термінів виконання робіт, при проведенні яких використовуються одні й ті ж ресурси. У результаті може виявитися, що на ту чи іншу календарну дату буде потрібно ресурсів більше, ніж ми маємо. Ось це і потрібно перевірити, перш ніж приступати до виконання планованого комплексу робіт. Тому необхідно бути впевненим, що обмежені, як правило, ресурси дозволять виконати намічені роботи.
Тривалість всього комплексу робіт дорівнює тривалості критичного шляху. Аналіз мережевого графіка дозволяє виділити ті роботи від якого вона дійсно залежить. Їх число як правило, не велика в порівнянні із загальною кількістю робіт.
При звичайних методах планування комплексу робіт для скорочення загального терміну розробки не рідко прагнуть зменшити тривалість всіх або більшості робіт. Такий підхід як правило, падає відповідного ефекту, тому що вимагає додаткових витрат і незначно скорочує тривалість виконання всього комплексу робіт.
Найважливішим способом скорочення критичного шляху є використання певної частини ресурсів, для прискорення критичних робіт.

1.1.2. Математична модель задачі
Для того щоб виконати оптимізацію мережевого графіка, необхідно розрахувати і визначити:
1. Необхідна кількість ресурсів для кожної роботи:

A = B / C

де A - необхідне число ресурсів;
B - обсяг робіт;
C - продуктивність.
2. Тривалості робіт:

D = A / F

де D - тривалість роботи;
A - необхідне число ресурсів;
F - кількість ресурсів.
3. Ранні строки настання подій:
t р (j) = max {t р (i) + t (ij)}, i <j, t р (0) = 0
де i, j - номери подій;
t р (i, j) - ранній термін настання (i, j) події;
t (ij) - термін виконання роботи (ij);
i <j - подія i передує j.
4. Пізні терміни настання подій:
t п (i) = min {t п (j) - t (i, j)}, i <j
де i, j - номери подій;
t п (i, j) - пізній термін настання (i, j) події;
t (ij) - термін виконання роботи (ij);
5. Повний резерв часу для кожної роботи:
R п (I, j) = T п (J) - t р (I) - t (i, j)
де i, j - номери подій;
t п (j) - пізній термін настання події j;
t р (i) - ранній термін настання події i;
t (ij) - термін виконання роботи (ij).
6. Події, що лежать на критичному шляху. Такі події мають рівні ранні та пізні строки настання.
7. Критичні роботи. Тобто роботи, у яких початкове і кінцеве події критичні.
8. Критичний шлях. Розраховується як сума продолжительностей критичних робіт.
Далі проводиться безпосередньо оптимізація мережного графіка, тобто з метою скорочення тривалості критичного шляху програма пропонує користувачеві перерозподілити ресурси з робіт, що знаходяться на некритичних шляхах, на виконання робіт, які не мають резервів часу
1.2. Опис логічної структури
Блок-схема системи приведена на аркуші формату А1.
Блок 1-початок роботи;
Блок 2 - вибір з пунктів меню;
Блок 3 - вибір пункту меню файл;
Блок 4 - вибір підпункту меню "Відкрити файл";
Блок 5 - завантаження файлу;
Блок 6 - вибір підпункту меню «зберегти файл»;
Блок 7 - збереження файлу
Блок 8 - вибір підпункту меню «Вихід»;
Блок 9 - запит на закінчення роботи;
Блок 10 - завершення роботи програми;
Блок 11 - вибір меню «дію»;
Блок 12 - вибір підпункту меню «Оптимізація»;
Блок 13-відбувається оптимізація;
Блок 14 - вибір підпункту меню «додати рядок»;
Блок 15-додаток рядка;
Блок 16 - вибір підпункту меню «видалити рядок»
Блок 17-видалення рядка;
Блок 18 - вибір пункту підменю "Очистити все";
Блок 19 - очищення вмісту таблиці;
Блок 20 - вибір пункту меню "Довідка";
Блок 21 - вибір з пунктів підменю;
Блок 22 - вибір підпункту меню "Про завдання"
Блок 23 - відкриття нової форми і виведення її на екран;
Блок 24 - вибір підпункту меню "Про розробника"
Блок 25 - відкриття нової форми і виведення її на екран;
Блок 26 - вибір пункту підменю "Help"
Блок 27 - відкриття нової форми і виведення її на екран;
Лістинг програми наведено у Додатку "А"
1.3. Опис і організація вхідних даних
1.3.1. Опис вхідний і вихідний інформації
Дане завдання використовує внутрішню вхідну інформацію у вигляді полів і змінних опис яких наведено нижче:
Назва поля
Ідентифікатор
Тип
Початкова подія
I
Цілий
Кінцеве подія
J
Цілий
Обсяг робіт
Обсяг робіт
Цілий
Число ресурсів
Число ресурсів
Цілий
Продуктивність
Продуктивність
Цілий
Загальне число ресурсів
Загальне число ресурсів
Цілий
Початкова подія, Кінцеве подія, Обсяг робіт, Число ресурсів та Продуктивність беруться з картки завдання, а Загальне число ресурсів обчислюється автоматично як сума по стовпцю, Число ресурсів і виводяться в не редагується поле введення.
Вихідна інформація також повністю відображається на головній формі в таблиці і в не редагованих полях введення і містить:
Найменування реквізиту
Ідентифікатор
Тип
Необхідно ресурсів
Необхід. ресурсів
речовинний
Тривалість
Тривалість
речовинний
Події
Події
цілий
Резерв часу
Рез. часу
речовинний
Тривалість критичного шляху
Тривалість критичного шляху
речовинний
Всього необхідно ресурсів
Загальне число ресурсів
речовинний
Необхідно ресурсів, Тривалість, Події, Ранній термін, Пізній термін, Резерв часу виводяться в таблицю, Тривалість критичного шляху, Всього необхідно ресурсів виводяться в не редаговані поля введення.
1.3.2. Організація ведення інформаційної бази
Організація ведення інформаційної бази здійснюється за рахунок наявності таких функцій як введення і збереження початкових даних. У цю інформаційну базу даних входять такі елементи програми як проміжні масиви, адреси пам'яті де зберігаються результати обчислень і т. д.
Проміжні масиви створюються на час виконання програми, в них виробляються проміжні обчислення, результати яких потім заносяться в таблицю.
Вхідна інформація. Картка завдання і являє собою приклад задачі яку необхідно вирішити з використанням комп'ютера, звідти також беруться вихідні дані які використовуються в тих самих проміжних масивах і рішеннях, використовуються як вхідна інформація для програми яка в свою чергу використовує її для вирішення завдання.
Також є так звана умовно-постійна інформація (ця інформація може бути змінена за бажанням користувача), яка представляє собою файл з вихідними даними наприклад тієї ж самої картки із завданням тобто це говорить про те що в програмі передбачена така функція як збереження вихідних даних і їх завантаження.
А також є постійна інформація - це допомога, яка в процесі роботи програми ніяк не змінюється.
1.4. Опис програмних засобів
1.4.1. Опис середовища програмування

Для реалізації проекту «Оптимізація мережевого графіка» з використанням персонального комп'ютера була обрана середовище програмування Borland Delphi 5.0 кампанії Borland.

Середовище Delphi - це складний механізм, що забезпечує високоефективну роботу програміста. В основі неї лежить мова Object Pascal, розроблений професором Вищого технічного училища (м. Цюріх, Швейцарія) Никлаусом Віртом. Запропонований ним алгоритмічну мову він назвав іменем великого французького вченого Блеза Паскаля (1623-1662). В якості стандартного Pascal був затверджений в 1979 р. Перша версія Delphi була випущена на початку 1995 року і стала результатом розробки, яка велася компанією Borland протягом двох з половиною років. Програмний продукт був названий ім'ям грецького міста.
У першу чергу Delphi призначена для професіоналів-розробників корпоративних інформаційних систем. Однак вона призначений не тільки для програмістів-професіоналів, а й для всіх тих, хто використовують комп'ютер з чисто прикладною метою, і кому необхідно швидко вирішити якісь свої завдання, не залучаючи для цього програмістів зі сторони. У Delphi вдало поєднуються засоби візуального проектування застосувань і оптимізуючий компілятор. Delphi є єдиним повноцінним засобом промислової розробки систем клієнт / сервер. До складу середовища входить велика бібліотека компонентів. З іншого боку, програміст завжди зможе вдатися до низькорівневих ассемблерних процедур. Можна створювати додатки у візуальному режимі. Працюючи з Delphi, програміст може за допомогою натиснення однієї клавіші створити виконуваний файл у форматі EXE, однак, при необхідності, можна компілювати і файли DLL, драйверів пристроїв, а також консольних додатків.
Синтаксис Delphi включає літери, цифри, шістнадцяткові цифри, спеціальні символи, прогалини і зарезервовані слова.
Букви - це букви латинського алфавіту від a до z, і від A до Z, а також знак підкреслення "_". У мові немає розходження між великими та малими буквами алфавіту, якщо тільки вони не входять в символьні і рядкові вирази. Цифри - арабські цифри від 0 до 9. Кожна шістнадцяткова цифра має значення від 0 до 15. Перші 10 значень позначаються арабськими цифрами 0 ... 9, інші шість - латинськими літерами A ... F або a ... f. Спеціальні символи Delphi - це символи + - * /> <= <>> = <=:; '() [] {} і ін
Особливе місце в алфавіті мови посідають прогалини, до яких відносяться будь-які символи в діапазоні кодів від 0 до 32. Ці символи розглядаються як обмежувачі ідентифікаторів, констант, чисел, зарезервованих слів. Кілька наступних один за одним прогалин вважаються одним пропуском.
Тип даних визначає значення, які може мати змінна, і операції, що виконуються над цієї змінної. Існує кілька визначених типів даних, які можна розділити на 3 групи: перераховуються, речові типи і рядки. Три найбільш важливих зумовлених перераховуються типу - Integer (цілочисельні), Boolean (логічний) і Char (символьний). Повний список перелічуваних типів: Integer, Cardinal, ShortInt, SmallInt, LongInt, Byte, Word, Boolean, ByteBool, WordBool, LongBool, Char, ANSIChar, WideChar. Речові типи є різноманітні формати чисел з плаваючою комою, найменше пам'яті потрібно для зберігання чисел типу Single, потім Real, Double і Extended, крім них є ще два незвичайних типу даних Comp - описує дуже довгі цілі числа і Currency (доступний тільки в Delphi ) - має 4 десяткових знака після коми.
У Delphi визначені наступні операції: арифметичні операції, логічні операції, операції з рядками, операції над множинами, операції відносини і операція @ (операція отримання адреси). Логічні операції застосовні до операндів цілого і логічного типів, але не виділені в окрему групу. Пріоритетність операцій досить проста. Основний упор об'єктно-орієнтованої моделі програмних компонент в Delphi робиться на максимальному реіспользованіі коду. Це дозволяє розробникам будувати програми досить швидко з заздалегідь підготовлених об'єктів, а також дає їм можливість створювати свої власні об'єкти для середовища Delphi. Ніяких обмежень по типах об'єктів, які можуть створювати розробники, не існує. Дійсно, все в Delphi написано на ньому ж, тому розробники мають доступ до тих же об'єктів та інструментів, які використовувалися для створення середовища розробки. У результаті немає ніякої різниці між об'єктами, що поставляються Borland або третіми фірмами, і об'єктами, які ви можете створити. Винятки представлені у вигляді об'єктів, що містять специфічну інформацію про відповідну помилку (тип та місцезнаходження помилки). Розробник може залишити обробку помилки, що існувала за замовчуванням, або написати свій власний обробник. Обробка винятків реалізована у вигляді exception-handling blocks (також ще називається protected blocks), які встановлюються ключовими словами try і end. Існують два типи таких блоків: try ... except і try ... finally.
Процедури і функції дозволяють розділити логіку програми на більш дрібні і керовані фрагменти і аналогічні підпрограм в інших мовах. Як і в основному блоці програми, всі дії у процедурах та функціях полягають у begin і end. Кожен з цих сегментів коду виконує конкретне завдання. Якщо в міститься у процедурі операторі всередині модуля процедури використовується ідентифікатор процедури, то процедура буде виконуватися рекурсивно (буде при виконанні звертатися сама до себе). У Delphi існують різниця між функціями і процедурами. Стандартними процедурами є Exit і ShowMessage, стандартними функціями є StrToInt, FloatToStr, Random, математичні функції і д.р.
Введення / висновок пов'язаний з обміном інформацією між оператором пам'яті і вешнемі носіями інформації. Для введення і виведення даних у мові передбачені стандартні вбудовані програми, які називаються процедурами. Процедура введення викликається за допомогою оператора введення Read, процедура виведення - за допомогою оператора виведення Write.
Оператор введення служить для введення даних в процесі виконання програми. Значення вводяться даних отримують змінні. Дані можуть бути розбиті на окремі рядки. Розрізняють два види операторів вводу: Read, Readln. Допускається цілі, дійсні та символьні дані. Логічні дані вводити не дозволяється. Для правильного вводу символьних даних рекомендується перед кожним оператором введення символьних даних ставити оператор переходу на новий рядок Readln, щоб їх введення завжди здійснювався з нового рядка.
Оператор висновку має дві форми запису: Write, Writeln. Допускається висновок даних з форматами і без них. Файлова змінна в Delphi - це будь-яка змінна файлового типу. У Delphi є три класи файлів: типізований файл, текстовий файл і нетипізований файл. Робота з файлами здійснюється просто, присутня можливість довільного доступу до даних. У Delphi є можливість стикування з іншими програмними засобами. Наприклад, у ній можна використовувати DLL (динамічно компонуемие бібліотеки), написані на інших мовах програмування. Крім того, програми, написані на інших мовах, можуть використовувати DLL, написані на Borland Delphi. DLL, таким чином, ідеально підходить для використання в програмних проектах, що реалізуються на декількох мовах.
На Delphi є стандарт. До складу документації середовища програмування входять: керівництво користувача; керівництво з написання компонент; документація з побудови додатків, що працюють з базами даних; посібник з генератору звітів ReportSmith; посібник з SQL Links. До складу Delphi входить 5 інтерактивних навчальних систем, документація в електронному вигляді і близько 10 Мб довідкової інформації, а також безліч додаткових програм.

За допомогою середовища програмування Borland Delphi 5 була розроблена програма «Оптимізація мережевого графіка за часом». Інтерфейс користувача в програмі досить простий (Головна форма наведена в додатку Б) у нього входять безліч візуальних компонентів (так як мова програмування Object Pascal - об'єктно-орієнтована, а його породження Delphi - мова візуального програмування) з Delphi такі як:

· GroupBox - Компонент є вікно для групування об'єктів, цей компонент був використаний, щоб згрупувати такі об'єкти як кнопки SpeedButton (про них буде розказано нижче)
· MainMenu - Компонент використовується, щоб створити головне меню для форми.
· StringGrid - Це компонент - Таблиця він необхідний для введення вихідних даних.
· Panel - Це компонент використовується для створення панелі з написом.
· Label - Це компонент - Мітка необхідний для введення тексту в форму
· SpeedButton - кнопка, яка використовується, щоб виконати команди. На кнопки можуть бути встановлені легко запам'ятовуються графічні образи, які допомагають запам'ятати дії, які відбуваються після їх натискання.
· OpenDialog - Компонент є діалог Вікна для вибору і відкриття файли.
· SaveDialog-Компонент є діалог Вікна для вибору та збереження файлів.
1.4.2. Опис програми
Програма «Оптимізація мережевого графіка» розроблена в середовищі програмування Borland Delphi 5 і працює під управлінням операційної системи Windows (Текст програми приведений у додатку А).
Інтерфейс програми досить простий і легкий у зверненні. Програма працює досить просто: у ній є головне меню (Додаток Г) і «Панель операцій» з кнопками.
Головне меню має структуру:
<Файл> <допомоги>
<Зберегти дані> <Довідка>
<Завантажити дані> <Про програму>
<Вихід>
Для пунктів меню <Зберегти дані "," Завантажити дані>, <Вихід>, <Довідка> є «Гарячі клавіші» (Гарячі клавіші - клавіші використовуються для швидкого виклику програми):
<Зберегти дані> F2 <Завантажити дані> F3
<Вихід> F10 <Довідка> F1
Якщо в програмі натиснути функціональну клавішу F2 або при виборі пункту меню <Файл> / <Зберегти файл> то програма автоматично перевірить чи всі осередки заповнені при виявленні що хоча б одна клітинка не заповнена програма виводить повідомлення про помилку і збереження не відбувається, а якщо при перевірці з'ясовується що всі осередки заповнені, то з'являється діалогове вікно збереження файлу (додаток В), в якому вказується папка, в якому буде знаходитися файл з даними і в ньому будуть (якщо вони є) вказані інші файли з даними, потрібно ввести ім'я цього файлу , програма автоматично додасть до імені файлу розширення *. Gra, що використовується для позначення файлу з даними, потім відбувається сам процес збереження.
А якщо натиснути функціональну клавішу F3 або при виборі пункту меню <Файл> / <Відкрити файл> то з'являється діалогове вікно відкриття файлу (додаток В), в якому вказується папка, в якому знаходитися файли з даними, потрібно вибрати файл (у діалоговому вікні відображаються тільки ті файли, в яких збережені дані з графіка) з розширенням *. Gra, при необхідності є така можливість як відкриття будь-якого файлу якщо, наприклад дані з графіка були збережені без розширення після вибору необхідного файлу і натиснення на кнопку «Відкрити» програма відкриває файл і він виводиться в таблицю.
При натисканні функціональної клавіші F10 або при виборі пункту меню
<Файл> / <Вихід> програма виводить діалог (додаток В) в якому запитує користувача чи дійсно він хоче завершити роботу?: І якщо так то завершує свою роботу.
При натисканні функціональної клавіші F1 або при виборі пункту меню
<Допомога> / <Довідка> програма виводить довідку (додаток В) у вигляді HTML - документа.

1.5. Опис технічних засобів
Для створення програми були використані програмні засоби:
· Borland Delphi 5.0 - написання, налагодження, компіляція і виконання тексту програми.
· Microsoft Office XP - Новітній пакет офісних програм фірми Microsoft
1. Microsoft Word - створення допомогу у форматі HTML (Web документ).
2. Microsoft Excel - створення таблиць для звіту.
· CorelDraw - створення зображень для допомоги.
· Xara 3D - створення 3х мірних написів для довідки
· Photoshop 6.0 - Редагування зображень.
· Завдяки тому що програма створена в середовищі програмування Borland Delphi 5.0 вона підтримується будь-якими версіями Microsoft Windows: Microsoft Windows 9x, Microsoft Windows Millennium, Microsoft Windows 2000, Microsoft Windows XP.
1.5.1. Опис і обгрунтування мінімальної конфігурації технічних засобів
Для нормальної роботи даної програми потрібно комп'ютер з мінімальною конфігурацією:
Процесор з частотою не нижче Pentium 100 MHz
Оперативною пам'яттю не менше 16 Mb
Місця на диску потрібно не менше 5 Mb. +30 Mb (Для Windows)
Для кращої роботи програми бажаний монітор підтримує дозвіл екрана 800х600 із поглибленням кольорової палітри від 8 (256 кольорів) до 16 (65535 кольорів) біт.
Для більш комфортної роботи необхідна миша.
З програмного забезпечення не потрібно ніяких додаткових пакетів. В якості операційної системи підходить будь-яка версія Windows починаючи з Windows 95.

Висновок
Курсова робота на тему «Оптимізація мережевого графіка за часом» була виконана в заданий термін. Для розробки програми використовувалася середовище програмування Borland Delphi 5.0. у програмі розроблено зручний користувальницький інтерфейс у вигляді меню. Кожен пункт меню містить кілька пунктів підменю. Для демонстрації програми була розроблений приклад введення даних в матрицю. Розроблено форму в якій відображається вхідна і вихідна інформація. Організовано довідкова система. Складена пояснювальна записка.

Література

1. Економіко-математичні методи в постачанні. -М.: «Економіка», 1971.
2. І. М. Разумов. Мережеві графіки в плануванні. -М.: 1981.
3. Бобровський С. Delphi 5: навчальний курс. -СПб.: Видавництво "Пітер", 2000.

Дата видачі __________ Термін закінчення ___________

Викладач _____________________________________________


Додаток A
Лістинг програми

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, Grids, Buttons, ExtCtrls, Errors, OleCtnrs;
type
TGeneral = class (TForm)
MainMenu1: TMainMenu;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
N1: TMenuItem;
SpeedButton1: TSpeedButton;
GJvjo1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
SpeedButton2: TSpeedButton;
Sg1: TStringGrid;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
SpeedButton6: TSpeedButton;
N6: TMenuItem;
PopupMenu1: TPopupMenu;
N7: TMenuItem;
Sg4: TStringGrid;
Edit1: TEdit;
Edit4: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
CheckBox1: TCheckBox;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
Panel1: TPanel;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
N12: TMenuItem;
procedure FormCreate (Sender: TObject);
procedure N3Click (Sender: TObject);
procedure SpeedButton1Click (Sender: TObject);
procedure SpeedButton4Click (Sender: TObject);
procedure SpeedButton3Click (Sender: TObject);
procedure SpeedButton2Click (Sender: TObject);
procedure N5Click (Sender: TObject);
procedure SpeedButton6Click (Sender: TObject);
procedure SpeedButton5Click (Sender: TObject);
procedure N6Click (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure N7Click (Sender: TObject);
procedure Edit1KeyPress (Sender: TObject; var Key: Char);
procedure N12Click (Sender: TObject);
private
{Private declarations}
public
l: integer;
Count, Sum: integer;
buf1: array [1 .. 100] of real;
buf2: array [0 .. 30] of real;
err: integer;
{Public declarations}
end;
var
Proizvod: String; / / Продуктивність
Str: String; / / кількість рядків
Rab_I: String; / / Роботи
Rab_J: String; / / Роботи
OB_Rabot: String; / / Об'єм робіт виробів
KolRes: String; / / Кількість робочих
Prodolgit: String; / / Тривалість
Err, i, j: Integer;
General: TGeneral;
F: Textfile;
implementation
uses Unit2, Unit3, Unit4;
{$ R *. DFM}
procedure TGeneral.FormCreate (Sender: TObject);
begin
/ / General.WindowState: = WsMaximized;
General.Position: = poDesktopCenter;
General.Caption: = 'Оптімезація мережевого графіка за часом.';
GroupBox1.Caption :='';
GroupBox2.Caption :='';
SG1.cells [0,0]: = 'I';
SG1.cells [1,0]: = 'J';
SG1.cells [2,0]: = 'Обсяг робіт ";
SG1.cells [3,0]: = 'Необхід. ресурсів ';
SG1.cells [4,0]: = 'Кількість ресурсів';
SG1.cells [5,0]: = 'Тривалість';
SG1.cells [6,0]: = 'Події';
SG1.cells [7,0]: = 'Рез. часу ';
SG1.RowCount: = 2;
end;
procedure TGeneral.N3Click (Sender: TObject);
begin
Close;
end;
procedure TGeneral.SpeedButton1Click (Sender: TObject);
var
i, j: Integer;
Sum, Sum2, a: Real;
begin
Panel1.Visible: = true;
label1.Visible: = true;
label2.Visible: = true;
label4.Visible: = true;
label5.Visible: = true;
label7.Visible: = true;
Sg4.Visible: = true;
edit2.Visible: = true;
edit3.Visible: = true;
edit4.Visible: = true;
/ / Edit5.Visible: = true;
{З'ясуємо необхідну кількість ресурсів}
for i: = 1 to sg1.RowCount-1 do
Begin
a: = StrToInt (sg1.Cells [2, i]) / StrToInt (edit1.text);
sg1.Cells [3, i]: = FloatToStr (a);
{З'ясуємо необхідну кількість ресурсів}
Sum2: = Sum2 + StrToFloat (sg1.Cells [4, i]);
Edit3.Text: = FloatToStr (Sum2);
{Всього необхідних ресурсів}
Sum: = Sum + StrToFloat (sg1.Cells [3, i]);
Edit2.Text: = FloatToStr (Sum);
end;
{Тривалість робіт}
for i: = 1 to sg1.RowCount-1 do
Begin
a: = StrToFloat (sg1.Cells [3, i]) / StrToFloat (sg1.Cells [4, i]);
sg1.Cells [5, i]: = FloatToStr (a);
end;
end;
procedure TGeneral.SpeedButton4Click (Sender: TObject);
begin
close;
end;
procedure TGeneral.SpeedButton3Click (Sender: TObject);
begin
For I: = 0 to 2 do
For j: = 1 to Sg1.RowCount-1 do
Begin
if Sg1.Cells [i, j] =''then err: = err +1;
end;
For j: = 1 to Sg1.RowCount-1 do
if Sg1.Cells [4, j] =''then err: = err +1;
if err <> 0 then
begin
MessageDlg ('Помилка' + # 13 + 'Таблиця заповнена не повністю.' + # 13 + 'Збереження не вироблено!'
, MtError, [mbOk], 0);
err: = 0;
end
else
Begin
Proizvod: = edit1.text;
Str: = IntToStr (sg1.RowCount);
For i: = 1 to Sg1.RowCount-1 do
Begin
Rab_I: = (Sg1.Cells [0, i]);
Rab_J: = (Sg1.Cells [1, i]);
OB_Rabot: = (Sg1.Cells [2, i]);
write (f, Rab_I);
write (f, Rab_J);
write (f, OB_Rabot);
End;
For I: = 1 to Sg1.RowCount-1 do
KolRes: = (Sg1.Cells [4, i])
end;
CloseFile (f);
end;
procedure TGeneral.SpeedButton2Click (Sender: TObject);
begin
General.N7.Click;
if OpenDialog1.Execute then
{$ I-}
AssignFile (F, OpenDialog1.FileName); Reset (F);
Proizvod: = edit1.text;
Str: = IntToStr (sg1.RowCount);
For i: = 1 to Sg1.RowCount-1 do
Begin
Rab_I: = (Sg1.Cells [0, i]);
Rab_J: = (Sg1.Cells [1, i]);
OB_Rabot: = (Sg1.Cells [2, i]);
write (f, Rab_I);
write (f, Rab_J);
write (f, OB_Rabot);
End;
For I: = 1 to Sg1.RowCount-1 do
KolRes: = (Sg1.Cells [4, i])
{$ I +}
CloseFile (f);
end;
procedure TGeneral.N5Click (Sender: TObject);
begin
if OpenDialog1.Execute then
end;
procedure TGeneral.SpeedButton6Click (Sender: TObject);
begin
Edit1.Text: = '5 ';
sg1.RowCount: = 12;
sg1.Cells [0,1]: = INttoStr (0);
sg1.Cells [1,1]: = INttoStr (1);
sg1.Cells [2,1]: = INttoStr (25);
sg1.Cells [4,1]: = INttoStr (5);
sg1.Cells [0,2]: = INttoStr (0);
sg1.Cells [1,2]: = INttoStr (2);
sg1.Cells [2,2]: = INttoStr (30);
sg1.Cells [4,2]: = INttoStr (6);
sg1.Cells [0,3]: = INttoStr (0);
sg1.Cells [1,3]: = INttoStr (3);
sg1.Cells [2,3]: = INttoStr (20);
sg1.Cells [4,3]: = INttoStr (4);
sg1.Cells [0,4]: = INttoStr (1);
sg1.Cells [1,4]: = INttoStr (4);
sg1.Cells [2,4]: = INttoStr (22);
sg1.Cells [4,4]: = INttoStr (5);
sg1.Cells [0,5]: = INttoStr (2);
sg1.Cells [1,5]: = INttoStr (3);
sg1.Cells [2,5]: = INttoStr (10);
sg1.Cells [4,5]: = INttoStr (4);
sg1.Cells [0,6]: = INttoStr (2);
sg1.Cells [1,6]: = INttoStr (4);
sg1.Cells [2,6]: = INttoStr (15);
sg1.Cells [4,6]: = INttoStr (3);
sg1.Cells [0,7]: = INttoStr (2);
sg1.Cells [1,7]: = INttoStr (5);
sg1.Cells [2,7]: = INttoStr (5);
sg1.Cells [4,7]: = INttoStr (4);
sg1.Cells [0,8]: = INttoStr (3);
sg1.Cells [1,8]: = INttoStr (6);
sg1.Cells [2,8]: = INttoStr (25);
sg1.Cells [4,8]: = INttoStr (5);
sg1.Cells [0,9]: = INttoStr (4);
sg1.Cells [1,9]: = INttoStr (6);
sg1.Cells [2,9]: = INttoStr (20);
sg1.Cells [4,9]: = INttoStr (4);
sg1.Cells [0,10]: = INttoStr (5);
sg1.Cells [1,10]: = INttoStr (6);
sg1.Cells [2,10]: = INttoStr (5);
sg1.Cells [4,10]: = INttoStr (4);
sg1.Cells [0,11]: = INttoStr (6);
sg1.Cells [1,11]: = INttoStr (7);
sg1.Cells [2,11]: = INttoStr (30);
sg1.Cells [4,11]: = INttoStr (6);
end;
procedure TGeneral.SpeedButton5Click (Sender: TObject);
begin
form2.show;
end;
procedure TGeneral.N6Click (Sender: TObject);
begin
form2.show;
end;
procedure TGeneral.FormClose (Sender: TObject; var Action: TCloseAction);
begin
case Application.MessageBox ('Ви впевнені, що хочете вийти?', 'Вихід', mb_yesno or mb_iconquestion or mb_defbutton2) of
idyes: action: = caFree;
idno: action: = caNone;
end;
end;
procedure TGeneral.N7Click (Sender: TObject);
var q, w: byte;
i: integer;
begin
for q: = 0 to SG1.ColCount do
for w: = 1 to SG1.RowCount do
SG1.Cells [q, w ]:='';
SG1.RowCount: = 2;
Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
Edit4.Text :='';
/ / Edit5.Text :='';
end;
procedure TGeneral.Edit1KeyPress (Sender: TObject; var Key: Char);
begin
case key of
"0" .. '9 ', Chr (8):;
',':;
else key: = # 0;
end;
end;
procedure TGeneral.N12Click (Sender: TObject);
begin
Sg1.RowCount: = Sg1.RowCount +1;
If Sg1.RowCount> 30 then
MessageDlg ('Помилка' + # 13 + 'рядків не може бути більше 30 !!!', mtError, [mbOk], 0);
Sg1.RowCount: = 30;
end;
end.

Додати в блог або на сайт

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

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


Схожі роботи:
Етапи складання графіка документообігу і графіка облікових робіт на підприємстві
Етапи складання графіка документообігу і графіка облікових робіт
Випуклість і вгнутість графіка функції точки перегину Асимптоти графіка функції Схема дослідж
Управління робочим часом
Система управління часом БФранкліна
Історія мережевого маркетингу
Організація робочого дня керівника управління часом
Методи мережевого планування і управління
Принципи мережевого аналізу та оптимізації
© Усі права захищені
написати до нас