Розробка автоматизованого робочого місця управління замовленнями у малому бізнесі (ПП "Сігма")

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

?ні значення попиту і обєму виробництва визначають Х14=10, тобто і по рядку, і по стовпцю обмеження виконуються одночасно. Викреслювати можна або рядок 1 або стовпець 4, викреслимо рядок 1. Після цього обєм виробництва в стовпці 4 залишається рівним нулю.

 

10 10 20 20 5 25 10 100

2. Тепер серед елементів, що залишилися, мінімальна вартість відповідає X23. Отримуємо X23=10. Викреслюємо 3-й стовпець.

 

10 10 10 20 10 205 25 10 10 0

3. Далі найменша вартість відповідає X31 і X34. Виберемо X34. І отримаємо X34=0. Викреслюємо 4-й стовпець.

 

10 10 10 20 100 20 205 25 10 10 0

4. Серед змінних, що залишилися, найменша вартість відповідає X31. Викреслюємо 1-й стовпець.

 

10 10 10 20 105 0 20 20 155 25 10 10 0

5. Далі викреслюємо 2-й рядок, оскільки найменша вартість відповідає X22.

 

10 10 10 10 20 10 5 0 20 20 155 25 10 10 15 0

6. X32=15. Оскільки залишається тільки один стовпець і лише один рядок, процес закінчується.

 

10 10 10 10 20 10 5 15 0 20 20 15 0+5 25 10 10 15 0

В результаті отримано наступне базисне рішення:

 

10 10 10 10 205 15 0 20 5 25 10 10

Базисні змінні приймають значення: X14=10, X22=10, X23=10, X31=5, X32=15, X34=0. Решта змінних небазисні. Сумарні транспортні витрати, відповідні цьому рішенню, рівні 10 * 0 + 10 * 4 + 10 * 1 + 5 * 2 + 15 * 6 + 0 * 2 = 150 од. вартості. Якщо вирішити задачу з використанням методу північно-західного кута, то можна побачити, що отриманий результат цим методом гірше за результат, отриманий при рішенні задачі з використанням методу найменшої вартості в розглянутому прикладі.

 

1.5 Опис програмного забезпечення

 

1.5.1 Вибір інструментів розробки

У даному проекті ми використовуватимемо середовище розробки Borland Delphi 7. Ця мова програмування на сьгодняшній час вже декілька застаріла, але для програмування застосувань, що працюють з MS Access вона дуже зручна. Borland Delphi 7 розвинена обєктно-орієнтована мова, що дозволяє розробляти скільки завгодно складні і, в той же час, ефективно працюючі системи. До того ж у розробника найбільший досвід програмування саме на цих "старих" мовах програмування.

 

1.5.1 Форми та модулі програми

Структура розроблюємого програмного забезпечення наведена на рис. 1.7.

Програмна частина дипломного проекту складається з 7-и форм, 1 модуль коду і 3-и модулів класу. Форми використовуються для введення даних користувачем. Модулі коду містять глобальні типи і змінні проекту, а також загальні процедури і функції. У модулях класів реалізовані програмні обєкти, які використовуються при обробці подій форм.

 

Рисунок 1.7 Структура Delphi-проекта

1.5.2 Опис модулів і класів системи

Модули форм містять процедури обробки таких подій:

  1. Form_Load завантаження форми;
  2. Form_Resize зміна розмірів форми;
  3. Form_Unload вивантаження форми;
  4. Form_KeyPress обробка клавіатури на полях редагування;
  5. Form_KeyDown - обробка клавіатури на полях редагування;
  6. sst_Click обработка щиглика миші на вкладках;
  7. lvwGroup_GotFocus фокус на переліку;
  8. lvwGroup_LostFocus перелік втратив фокус;
  9. lvwGroup_ItemClick щиглика миші на переліку;
  10. lvwGroup_KeyDown клавіатура на переліку;
  11. txtGroup_GotFocus поле редагування отримує фокус;
  12. txtGroup_LostFocus поле редагування втрачає фокус;
  13. txtGroup_KeyDown клавіатура на поле редагування.

При обробці ціх подій викликаються відповідні методи класів.

Модулі коду містять наступні глобальні процедури і функції:

  1. MsgErr() повідомлення про помилку;
  2. CenterForm(frm) центрирвання форми;
  3. SetColumnsWidth(lvw) установка ширини стовпчиків переліку;
  4. CheckNullDate(vDate) sFormat перевірка дати;
  5. IdToKey(nId) sKey перведення числового ключа таблиці БД у текстовий ключ колекції;
  6. KeyToId(sKey) nId зворотне переведення;
  7. NotChanged(vCurr(), vPrev()) bNotChange перевірка змін у запису БД;
  8. EmptyFields(txt()) bEmpty перевірка пустого текстового поля;
  9. SetInitials(sSurn, sName, sPatr) sInitName установка початкового значення;
  10. SetFieldFocus(ctrl, shp, fra, oList) установка фокуса на поле;
  11. SetCtrlFocus(ctrl, shp, fra) установка фокуса на поле редагування;
  12. ListGotFocus(lvw, shp, fra, oList) обробка фокуса на вкладці;
  13. ListItemClick(lvw, itm, oList) - обробка щиглика на переліку;
  14. ListKeyDown(lvw, KeyCode, oList) обробка клавіатури на перліку;
  15. CtrlKeyDown(ctrl, lvw, KeyCode, oList, xlvw, ylvw) обробка клавіатури на поле редагування;
  16. lvwLinkKeyDown(lvwLink, lvw, KeyCode, oList, oListLink, xlvw, ylvw) обробка клавіатури на списку звязку.

Основні класи системи:

  1. clsDB клас База Даних;
  2. clsDBTable клас Таблиця Бази даних;
  3. clsList клас Список;
  4. clsLinkList клас Список Звязку.

Методи класа База даних:

  1. Init(sDBFile) ініцализація (відкриття БД);
  2. Term завершення (закриття БД);
  3. GetData(sQuery) rs отримання данни за SQL-запитом;
  4. PutData(sQuery) зміна даних в БД за SQL-запитом;
  5. FieldType(sTable, sField) nType визначення типа поля БД.

Методи класа Таблиця Бази даних:

  1. Init(oDB, sTable, sFieldList) ініцализація обєкта Таблиця;
  2. GetRecord(nId) vField отримання запису за ключем;
  3. GetRecordOn(sQuery) vRecord отримання запису за запитом;
  4. UpdateRecord(nId, vField()) зміна запису;
  5. InsertRecord(vField()) nId додавання запису;
  6. DeleteRecord(nId) видалення запису;
  7. GetList(sWhere="") vRecordField заповнення списку таблицею;
  8. GetListOn(sQuery) vRecordField заповнення списку за запитом.

Методи класа Список:

  1. Init(lvw,ctr(),chk,oDB,sTable,sFieldList,sWhere="") заповнення списку;
  2. GetRecord отримання поточного запису;
  3. PutRecord занесення поточного запису у БД;
  4. UpdateRecord оновлення поточного запису у БД;
  5. InsertRecord додавання поточного запису у БД;
  6. DeleteRecord видалення поточного запису;
  7. NewRecord новий запис;
  8. EditRecord перехід у режим редагування.

Методи класа Список Звязку:

  1. Init(lvw, oDB, sLinkTable, sMainId, sLinkId, sS