Розробка імітаційної моделі системи масового обслуговування

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

скачати

Міністерство освіти і науки Республіки Казахстан
Карагандинський державний технічний університет
Кафедра
ПОЯСНЮВАЛЬНА
ЗАПИСКА
до курсового проекту
з дисципліни "Прикладна теорія систем"
Тема: "Розробка імітаційної моделі системи
масового обслуговування "
Керівники
Студент
(Група)
Караганда 2009

Зміст
  Введення
Постановка завдання
Опис програмного модуля
Керівництво користувача
Результати тестування програми
Висновок
Список використаних джерел
Додаток
Лістинг програми

Введення

У теорії систем велике місце займають системи здатні описувати масове обслуговування. Це пов'язано зі зростаючою глобалізацією сучасного світу, а, відповідно, і зі зростаючою актуальністю систем масового обслуговування. У зв'язку цим, вивчення даного розділу теорії систем дуже важливо.
У даному курсовому проекті розглядається система масового обслуговування, застосовна для магазинів.

Постановка завдання

У теорії систем масового обслуговування вивчаються проблеми функціонування систем і найбільш часто виникають ситуації в даному процесі обслуговування. Для вивчення даної проблеми необхідно розглядати такі проблеми як - постановка в чергу, порядок обслуговування, вибування з черги, періодичність потрапляння в чергу. З усього цього повинні бути зроблені висновки про кількість апаратів обслуговування. Це дуже важливий момент, тому що дозволяє зменшити час простою одного апарату, а відповідно збільшити вигоду в цілому. Тобто моделювання систем масового обслуговування дозволяє визначити оптимальну кількість апаратів.
У даному курсовому проекті розглядається система масового обслуговування - магазин.
Опис завдання: час роботи з 8 до 20. Необхідно ввести різну періодичність надходження заявок в залежності від часу доби. Також існує пріоритет надходження заявок - крім основних клієнтів існують клієнти, які обслуговуються поза чергою, для них періодичність надходження задається окремо. Також необхідна можливість введення часу обслуговування клієнта. Необхідно визначити оптимальне число апаратів обслуговування.

Опис програмного модуля

1. Вибір апарату обслуговування. Якщо система тільки почала свою роботу і приходить тільки перший клієнт або ж якщо вільні всі апарати, то він вибирається випадковим чином. У зворотному випадку вибирається той апарат, черга до якого менше.
2. Вибирається випадковим чином час, через який повинен з'явитися наступний клієнт із заданого заздалегідь проміжку.
3. Також випадковим чином вибирається час, через який клієнт повинен бути обслужений, або повинен залишити чергу.
4. Визначається стан клієнта. Чи піде він відразу на обслуговування або буде чекати своєї черги.
5. З пункту першого по четвертий процедура повторюється, але для клієнтів з більш високим пріоритетом.
Далі перевіряється кожен клієнт, що знаходиться в черзі.
6. Якщо клієнт у цей момент обслуговується, то перевіряється, не пройшло Чи час його обслуговування. Якщо минуло, то йому присвоюється статус "обслуговуватиме" і далі шукається наступний клієнт для обслуговування.
7. Якщо клієнт у цей момент чекає обслуговування, то перевіряється чи не можна його поставити на обслуговування і, якщо можна, то не вийшло чи час його перебування в черзі. Якщо вийшло час перебування, то клієнту присвоюється статус "Вибув".
8. Далі перевіряється, не закінчилося чи час роботи системи. Якщо час закінчився, то процес завершується і виводиться звіт про роботу системи. Якщо ж не закінчилося, то процес повторюється з першого пункту.

Керівництво користувача

Робота програми починається з її налаштування. Так як тут імітується робота магазину, то обов'язково необхідно визначити початку роботи (рис.1 - 1). Проміжок роботи програми від 8: 00-20: 00. від вибраного проміжку залежить періодичність появи клієнтів в магазині. Далі вибирається тривалість роботи магазину (рис.1 - 2).
10
Так само можна вибрати кількість обслуговуючих апаратів - продавців (рис.1 - 3).


1
2
3
5
4
7
6
8
9
10
11
Малюнок 1. Програмна реалізація СМО
У програмі також є можливість зміни проміжків формування заявок на обслуговування і часу самого обслуговування для різних пріоритетів і залежно від поточного часу обслуговування, що є дуже важливим моментом у роботі даного СМО (рис.1 - 5). Існує два типи пріоритетів: перший - це клієнти, які обслуговуються поза чергою і другий - клієнти, які обслуговуються завжди в порядку черги. Для обслуговування так само є параметр час очікування (рис.1 - 4). Цей параметр показує проміжок часу, протягом якого клієнт може не дочекатися початку обслуговування і залишити чергу. Для того щоб почати процес моделювання необхідно натиснути на кнопку "почати" (мал.1 - 6). Процес моделювання можна зупинити зовсім, натиснувши кнопку "зупинити" (мал.1 - 8) або призупинити тимчасово за допомогою кнопки "призупинити" (рис .1 - 7), його можна почати, заново натиснувши кнопку "Почати". Під час роботи програми поточні результати відображаються в таблиці (мал.1 - 10). По закінченню роботи програми виводиться текстовий файл з основними результатами. Результати роботи програми можна також переглянути, натиснувши кнопку "Звіт" (мал.1 - 9).


Малюнок 2. Приклад звіту
Під час роботи програми також можна стежити за зміною кількості клієнтів на діаграмі (рис.1 - 11).
У програмі є меню (Файл, Зберегти). Меню "Файл" містить наступні пункти:
"Почати" - починає процес моделювання (ідентичний кнопці "Почати")
"Призупинити" - тимчасово зупиняє процес моделювання (кнопка "Призупинити"),
"Зупинити" - закінчує процес моделювання (кнопка "Зупинити"),
"Зберегти звіт" - зберігає звіт про роботу програми,
"Відкрити звіт" - відкриває файл звіту,
"Вихід" - закінчує роботу програми.
Меню "Довідка" містить пункти:
"Допомога" - довідкова інформація про програму,
"Розробник" - інформації про розробника програми.

Результати тестування програми



Загальний час роботи
Номер апарату обслуговування
Час роботи апарату
Час простою апарата
Загальна кількість клієнтів
Кількість обслугованих клієнтів
Кількість вибулих клієнтів
1: 50: 0
1
1: 50: 0
0: 0: 0
10
9
0
2
1: 49: 0
0: 1: 0
8
7
0
3
1: 47: 0
0: 3: 0
8
7
0
4
1: 46: 0
0: 4: 0
8
7
0
5
1: 45: 0
0: 5: 0
8
7
0
6
1: 44: 0
0: 6: 0
7
7
0
7
1: 43: 0
0: 7: 0
7
6
0
8
1: 41: 0
0: 9: 0
7
6
0
9
1: 41: 0
0: 9: 0
7
6
0
10
1: 41: 0
0: 9: 0
49
19
29

Висновок

Результатом роботи над даним курсовим проектом стала програма, що моделює систему масового обслуговування - магазин. За допомогою даної програми можна робити висновки про роботу системи, вибирати оптимальну кількість апаратів обслуговування для хорошої роботи. Програмний засіб в ході моделювання візуально показує користувачеві поточні результати роботи системи.

Список використаних джерел

1. Ліфшиц А.Л. Статистичне моделювання СМО, М., 1978.
2. Рад Б.А., Яковлєв С.О. Моделювання систем, М: Вища школа, 1985.
3. Гмурман В.Є. Теорія ймовірностей і математична статистика, М: Вища школа, 2001.
4. Прігодін Н.В. Системний підхід у моделіроаніі М., 1986.

Додаток

Лістинг програми

void CSMODlg:: OnButton1 ()
{
UpdateData ();
if (! NTime)
{
timeS = m_StartH * 60 + m_StartM;
timeE = m_EndH * 60 + m_EndM;
timeT = timeS + timeE;
int i = timeS;
Tm = timeS;
m_Table2. SetCols (m_CountOch * 4);
m_Table2. SetRows (1);
m_Table2. SetRows (4);
int j = 0;
while (j <(m_CountOch * 4))
{
m_Table2. SetTextMatrix (0, j, "№"); m_Table2. SetColWidth (j, 350);
m_Table2. SetTextMatrix (0, j +1, "Отримання"); m_Table2. SetColWidth (j +1,700);
m_Table2. SetTextMatrix (0, j +2, "обслужити"); m_Table2. SetColWidth (j +2,700);
m_Table2. SetTextMatrix (0, j +3, "Стан"); m_Table2. SetColWidth (j +3,800);
j + = 4;
}
for (i = 0; i <1000; i + +)
{
OCH. o1 [i] = 0; OCH. o2 [i] = 0;
OCH. kol1 [i] = 0; OCH. kol2 [i] = 0;
OCH. Obsluzh1 [i] = 1;
OCH. Vib1 [i] = 1;
OCH. TP [i] = 0; OCH. TW [i] = 0;
stat1 [i] = 0;
stat2 [i] = 0;
for (int k = 0; k <1000; k + +)
{
Kli [i]. num1 [k] = 0; Kli [i]. time1 [k] = 0; Kli [i]. timeVib [k] = 0;
Kli2 [i]. num1 [k] = 0; Kli2 [i]. time1 [k] = 0; Kli2 [i]. timeVib [k] = 0;
}
}
OCH. io1 = 0; OCH. io2 = 0;
Klient = 0; Klient2 = 0;
bol = 0;
}
LTimer1 = SetTimer (ID_TIMER1, 100, NULL);
UpdateData (FALSE);
}
void CSMODlg:: OnTimer (UINT uTime)
{
int i, n, tp;
float hr, min, sek;
char a [255];
time_t t;
srand ((unsigned) time (& t));
COleSafeArray saRet;
DWORD numElements [] = {m_CountOch, 2};
saRet. Create (VT_R8, 2, numElements);
if (Klient2 <= 0 & & bol! = 0)
{/ / Чергу з першим пріоритетом
i = 0;
tp = (atof (m_Table. GetTextMatrix (1,3)) - atof (m_Table. GetTextMatrix (1,2))) * 100;
Klient2 = (rand ()% tp) * 0.01 + atoi (m_Table. GetTextMatrix (1,2));
+ + OCH. kol1 [i]; / / загальна кількість для апарату
+ + OCH. o2 [i]; / / кількість з даними пріоритетом
if (m_Table2. GetRows () <(OCH. kol1 [i] +3))
{
m_Table2. SetRows (m_Table2. GetRows () +1); iTabl + +;
}
tp = (atof (m_Table. GetTextMatrix (1,5)) - atof (m_Table. GetTextMatrix (1,4))) * 100;
Kli2 [i]. time1 [OCH. o2 [i]] = Tm + (rand ()% tp) * 0.01 + atoi (m_Table. GetTextMatrix (1,4));
float prim = Kli2 [i]. time1 [OCH. o2 [i]];
Kli2 [i]. timeVib [OCH. o2 [i]] = Tm + rand ()% (m_Vibiv-m_DoVib) + m_DoVib;
Kli2 [i]. num1 [OCH. o2 [i]] = OCH. kol1 [i];
/ / Постановка в чергу
hr = floorf (Tm/60);
min = floorf (Tm-hr * 60);
sek = floorf ((Tm * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (OCH. kol1 [i], 1 + i * 4, a);
itoa (OCH. kol1 [i], a, 10);
m_Table2. SetTextMatrix (OCH. kol1 [i], i * 4, a);
if (stat1 [i] == 0 & & stat2 [i] == 0)
{
m_Table2. SetTextMatrix (OCH. kol1 [i], 3 + i * 4, "Виконується");
OCH. CountObsl [i] = 2;
Kli2 [i]. Stat [OCH. o2 [i]] = 2;
stat2 [i] = 1;
}
else
{
m_Table2. SetTextMatrix (OCH. kol1 [i], 3 + i * 4, "Чекає");
Kli2 [i]. Stat [OCH. o2 [i]] = 1;
}
}
Klient2 -;
bol = 1;
if (Klient <= 0)
{
/ / Чергу з другим пріоритетом
int k;
if (bol == 0)
i = rand ()% m_CountOch;
if (m_CountOch == 1)
{I = 0;}
else
{I = m_CountOch;
for (k = (m_CountOch-1); k> = 0; k -)
{
if ((OCH. kol1 [k]-OCH. Obsluzh1 [k]) <= (OCH. kol1 [i]-OCH. Obsluzh1 [i]))
i = k;
else i = i;
} If (i == m_CountOch) i = i-1;
}
+ + OCH. kol1 [i]; / / загальна кількість
+ + OCH. o1 [i]; / / кількість з даними пріоритетом
if (m_Table2. GetRows () <(OCH. kol1 [i] +3))
{
m_Table2. SetRows (m_Table2. GetRows () +1);
}
if ((Tm> = 480) & & (Tm <720))
{
tp = (atof (m_Table. GetTextMatrix (2,3)) - atof (m_Table. GetTextMatrix (2,2))) * 100;
Klient = (rand ()% tp) * 0.01 + atoi (m_Table. GetTextMatrix (2,2));
tp = (atof (m_Table. GetTextMatrix (2,5)) - atof (m_Table. GetTextMatrix (2,4))) * 100;
Kli [i]. time1 [OCH. o1 [i]] = Tm + (rand ()% tp) * 0.01 + atoi (m_Table. GetTextMatrix (2,4));
Kli [i]. timeVib [OCH. o1 [i]] = Tm + rand ()% (m_Vibiv-m_DoVib) + m_DoVib;
} Else
if ((Tm> = 720) & & (Tm <900))
{
tp = (atof (m_Table. GetTextMatrix (3,3)) - atof (m_Table. GetTextMatrix (3,2))) * 100;
Klient = (rand ()% tp) * 0.01 + atoi (m_Table. GetTextMatrix (3,2));
tp = (atof (m_Table. GetTextMatrix (3,5)) - atof (m_Table. GetTextMatrix (3,4))) * 100;
Kli [i]. time1 [OCH. o1 [i]] = Tm + (rand ()% tp) * 0.01 + atoi (m_Table. GetTextMatrix (3,4));
Kli [i]. timeVib [OCH. o1 [i]] = Tm + rand ()% (m_Vibiv-m_DoVib) + m_DoVib;
} Else
if ((Tm> = 900) & & (Tm <1200))
{
tp = (atof (m_Table. GetTextMatrix (4,3)) - atof (m_Table. GetTextMatrix (4,2))) * 100;
Klient = (rand ()% tp) * 0.01 + atof (m_Table. GetTextMatrix (4,2));
tp = (atof (m_Table. GetTextMatrix (4,5)) - atof (m_Table. GetTextMatrix (4,4))) * 100;
Kli [i]. time1 [OCH. o1 [i]] = Tm + (rand ()% tp) * 0.01 + atoi (m_Table. GetTextMatrix (4,4));
Kli [i]. timeVib [OCH. o1 [i]] = Tm + rand ()% (m_Vibiv-m_DoVib) + m_DoVib;
}
Kli [i]. num1 [OCH. o1 [i]] = OCH. kol1 [i];
/ / Постановка в чергу
hr = floorf (Tm/60);
min = floorf (Tm-hr * 60);
sek = floorf ((Tm * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (OCH. kol1 [i], 1 + i * 4, a);
itoa (OCH. kol1 [i], a, 10);
m_Table2. SetTextMatrix (OCH. kol1 [i], i * 4, a);
if (stat1 [i] == 0 & & stat2 [i] == 0)
{
m_Table2. SetTextMatrix (OCH. kol1 [i], 3 + i * 4, "Виконується");
OCH. CountObsl [i] = 1;
Kli [i]. Stat [OCH. o1 [i]] = 2;
stat1 [i] = 1;
}
else
{
m_Table2. SetTextMatrix (OCH. kol1 [i], 3 + i * 4, "Чекає");
Kli [i]. Stat [OCH. o1 [i]] = 1;
}
}
Klient -;
/ / / / / / / / / / / / / / / / Вибування з черги / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
int count;
for (int ki = 0; ki <m_CountOch; ki + +)
{
for (int j = 1; j <(OCH. o1 [ki] +1); j + +)
{
count = Kli [ki]. num1 [j];
if (strcmp (m_Table2. GetTextMatrix (count, 3 + ki * 4), "Виконується") == 0)
{
/ / / / / / / / / / /
OCH. TW [ki] + +;
if ((Kli [ki]. time1 [count] <= Tm) & & (Kli [ki]. time1 [count]! = 0))
{
m_Table2. SetTextMatrix (count, 3 + ki * 4, "обслужити");
OCH. Obsluzh1 [ki] + +;
hr = Kli [ki]. time1 [count] / 60;
hr = floorf (hr);
min = floorf ((Kli [ki]. time1 [count])) - hr * 60;
sek = floorf (((Kli [ki]. time1 [count]) * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (count, 2 + ki * 4, a);
stat1 [ki] = 0; break;
} Else stat1 [ki] = 1;
/ / / / / / / / / / /
}
}
for (j = 1; j <(OCH. o2 [ki] +1); j + +)
{
count = Kli2 [ki]. num1 [j];
if (strcmp (m_Table2. GetTextMatrix (count, 3 + ki * 4), "Виконується") == 0)
{
OCH. TW [ki] + +;
if ((Kli2 [ki]. time1 [count] <= Tm) & & (Kli2 [ki]. time1 [count]! = 0))
{
m_Table2. SetTextMatrix (count, 3 + ki * 4, "обслужити");
OCH. Obsluzh1 [ki] + +;
hr = (Kli2 [ki]. time1 [count]) / 60;
hr = floorf (hr);
min = floorf ((Kli2 [ki]. time1 [count]) - hr * 60);
sek = floorf (((Kli2 [ki]. time1 [count]) * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (count, 2 + ki * 4, a);
stat2 [ki] = 0; break;
} Else stat2 [ki] = 1;
}
}
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
for (ki = 0; ki <m_CountOch; ki + +)
{
for (int j = 1; j <(OCH. o1 [ki] +1); j + +)
{
if (strcmp (m_Table2. GetTextMatrix (Kli [ki]. num1 [j], 3 + ki * 4), "Чекає") == 0)
{
if (stat1 [ki] == 0 & & stat2 [ki] == 0)
{
stat1 [ki] = 1;
m_Table2. SetTextMatrix (Kli [ki]. Num1 [j], 3 + ki * 4, "Виконується");
goto l1;
}
if (Kli [ki]. timeVib [j] <= Tm)
{
m_Table2. SetTextMatrix (Kli [ki]. Num1 [j], 3 + ki * 4, "Вибув");
Kli [ki]. time1 [Kli [ki]. num1 [j]] = 0;
OCH. Vib1 [ki] + +;
hr = Tm/60;
hr = floorf (hr);
min = floorf (Tm-hr * 60);
sek = floorf ((Tm * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (Kli [ki]. Num1 [j], 2 + ki * 4, a);
}
l1:;}
}
for (j = 1; j <(OCH. o2 [ki] +1); j + +)
{
if (strcmp (m_Table2. GetTextMatrix (Kli2 [ki]. num1 [j], 3 + ki * 4), "Чекає") == 0)
{
if (stat1 [ki] == 0 & & stat2 [ki] == 0)
{
stat2 [ki] = 1;
m_Table2. SetTextMatrix (Kli2 [ki]. Num1 [j], 3 + ki * 4, "Виконується");
goto l2;
}
if (Kli2 [ki]. timeVib [j] <= Tm)
{
m_Table2. SetTextMatrix (Kli2 [ki]. Num1 [j], 3 + ki * 4, "Вибув");
Kli2 [ki]. time1 [Kli2 [ki]. num1 [j]] = 0;
OCH. Vib1 [ki] + +;
hr = Tm/60;
hr = floorf (hr);
min = floorf (Tm-hr * 60);
sek = floorf ((Tm * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (Kli2 [ki]. Num1 [j], 2 + ki * 4, a);
}
l2:;}
}
}
long index [2];
for (index [0] = 0; index [0] <m_CountOch; index [0] + +)
{
for (index [1] = 0; index [1] <2; index [1] + +)
{
double val = OCH. Obsluzh1 [index [0]] -1;
saRet. PutElement (index, & val);
}
}
m_mychart. SetChartData (saRet. Detach ());
m_mychart. Refresh;
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
Tm + +;
if (Tm> = timeT)
{
KillTimer (ID_TIMER1);
n = m_Table2. GetRows ();
m_Table2. SetRows (n +5);
for (int j = 0; j <m_CountOch; j + +)
{
m_Table2. SetTextMatrix (n +2,2 + j * 4, "вр. Роботи");
hr = floorf (OCH. TW [j] / 60);
min = floorf (OCH. TW [j]-hr * 60);
sek = floorf ((OCH. TW [j] * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (n +2,3 + j * 4, a);
OCH. TP [j] = timeE-OCH. TW [j];
m_Table2. SetTextMatrix (n +3,2 + j * 4, "вр. Простою");
hr = floorf (OCH. TP [j] / 60);
min = floorf (OCH. TP [j]-hr * 60);
sek = floorf ((OCH. TP [j] * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f", hr, min, sek);
m_Table2. SetTextMatrix (n +3,3 + j * 4, a);
}
strcpy (str, "Загальний час роботи \ t \ t");
hr = floorf (timeE/60);
min = floorf (timeE-hr * 60);
sek = floorf ((timeE * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f \ r \ n", hr, min, sek);
strcat (str, a);
strcat (str, "Номер апарату обслуговування \ t");
for (j = 0; j <m_CountOch; j + +) {sprintf (a, "% d \ t", j +1); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Час роботи апарату \ t \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% s \ t", m_Table2. GetTextMatrix (n +2,3 +4 * j)); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Час простою апарату \ t \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% s \ t", m_Table2. GetTextMatrix (n +3,3 +4 * j)); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Загальна кількість клієнтів \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% d \ t", OCH. Kol1 [j]); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Кількість обслужених клієнтів \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% d \ t", OCH. Obsluzh1 [j] -1); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Кількість вибулих клієнтів \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% d \ t", OCH. Vib1 [j] -1); strcat (str, a);}
LPTSTR sizeF;
LPTSTR * sizeOf;
CStdioFile File ("звіт. Txt", CFile:: modeCreate | CFile:: modeWrite | CFile:: typeBinary);
File. WriteString ((LPCTSTR) str);
ShellExecute (NULL, NULL, "звіт. Txt", NULL, NULL, SW_SHOWNORMAL);
NTime = FALSE;
}
}
void CSMODlg:: OnButton2 ()
{
KillTimer (ID_TIMER1);
NTime = TRUE;
}
void CSMODlg:: OnButton3 ()
{
char a [255];
float hr, min, sek;
strcpy (str, "Загальний час роботи \ t \ t");
hr = floorf (timeE/60);
min = floorf (timeE-hr * 60);
sek = floorf ((timeE * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f \ r \ n", hr, min, sek);
strcat (str, a);
strcat (str, "Номер апарату обслуговування \ t");
for (int j = 0; j <m_CountOch; j + +) {sprintf (a, "% d \ t \ t", j +1); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Час роботи апарату \ t \ t");
for (j = 0; j <m_CountOch; j + +)
{
hr = floorf (OCH. TW [j] / 60);
min = floorf (OCH. TW [j]-hr * 60);
sek = floorf ((OCH. TW [j] * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f \ t \ t", hr, min, sek);
strcat (str, a);
}
strcat (str, "\ r \ n");
strcat (str, "Час простою апарату \ t \ t");
for (j = 0; j <m_CountOch; j + +)
{
OCH. TP [j] = timeE-OCH. TW [j];
hr = floorf (OCH. TP [j] / 60);
min = floorf (OCH. TP [j]-hr * 60);
sek = floorf ((OCH. TP [j] * 100 - (hr * 60 + min) * 100) / 60);
sprintf (a, "% 2.0f:% 2.0f:% 2.0f \ t \ t", hr, min, sek);
strcat (str, a);
}
strcat (str, "\ r \ n");
strcat (str, "Загальна кількість клієнтів \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% d \ t \ t", OCH. Kol1 [j]); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Кількість обслужених клієнтів \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% d \ t \ t", OCH. Obsluzh1 [j] -1); strcat (str, a);}
strcat (str, "\ r \ n");
strcat (str, "Кількість вибулих клієнтів \ t");
for (j = 0; j <m_CountOch; j + +)
{Sprintf (a, "% d \ t \ t", OCH. Vib1 [j] -1); strcat (str, a);}
COtchDlg m_Otch;
UpdateData ();
m_Otch. m_Show = str;
UpdateData (FALSE);
KillTimer (ID_TIMER1);
NTime = FALSE;
}
Додати в блог або на сайт

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

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


Схожі роботи:
Планування машинного експерименту з імітаційної моделлю системи масового обслуговування
Розробка моделі теорії масового обслуговування
Моделі систем масового обслуговування Класифікація систем масового обслуговування
Моделі систем масового обслуговування Класифікація систем масового обслуговування
Системи масового обслуговування
Математичне моделювання та оптимізація системи масового обслуговування
Моделі систем масового обслуговування Класифікація систем массовог
Розробка математичної моделі електротехнічної системи з використанням математичного
Моделювання систем масового обслуговування
© Усі права захищені
написати до нас