Моделирование работы автовокзала

Курсовой проект - Компьютеры, программирование

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

= new StreamWriter("test.txt");//создаем журнал событийf = new Time();_time.CopyTime(b);_time.CopyTime(sim);= simul_time - base_time;fbar = (double)(f.getHour() * 60 + f.getMin())/100;//значениеcurr_time = new Time();//текущее времяadd = new Time();_office tmp_off;//ссылка на кассуtmp_client = new client();cl_service; tmp_list_client;//ссылка на очередь клиентовt = 0;_Service();//инициализация касс по направлениям, создание городов, рейсов

//-------------цикл моделирования------------//_arrival(base_time, num);//устанавливаем время прибытия следующего клиента_time.CopyTime(base_time);//устанавливаем начальный момент времени(; curr_time < simul_time; curr_time++)

{(curr_time, textWritter);//отправка рейса,если он //есть(next_arrival == curr_time)//если прибыл клиент

{_arrival(curr_time, num);//устанавливаем время //прибытия следующего клиента++;

//устанавливаем время прибытия и номер клиента_client.setAll(CountClient, curr_time);

//запись в файл.WriteLine(curr_time.printTime() + ": прибыл клиент № "

+ Convert.ToString(tmp_client.getClientId()));.WriteLine("");(tmp_client);//добавление клиента в очередь

}(int i = 0; i < service.Count; i++ )//проверяем очереди //клиетнов в каждой кассе

{_off = (ticket_office)service.ToArray().GetValue(i);_list_client = tmp_off.getLineClient();(tmp_list_client.Count() != 0)//если очередь не пуста

{_service = (client)tmp_list_client.ToArray().GetValue(0);(cl_service.getServiceTime().getHour() == 0 &&_service.getServiceTime().getMin() == 0)//если очередь клиента, //обслуживаем

{(tmp_off, cl_service, curr_time);(cl_service.getDepartureTime().getHour() != 0

|| cl_service.getDepartureTime().getHour() != 0)//если билет //продан

{.WriteLine(curr_time.printTime() + ": Клиенту №" + Convert.ToString(cl_service.getClientId()));.WriteLine("продан билет на " +_service.getDestination());.WriteLine("время отправки: " +_service.getDepartureTime().printTime());.WriteLine("");

}

{.WriteLine("Клиенту №" +.ToString(cl_service.getClientId()) + " билет не продан");.WriteLine("");

}_list_client.RemoveAt(0);//удаляем клиента из очереди

}

}

}();//уменьшаем время ожидания всех клиентов

//--для полосы прогресса моделирования--//++;(t == (int)fbar+1)

{.Value += 1;= 0;

}

//-------------------------------------//

}.Value = 100;.Close();

}

 

2.3 Обработка и печать результатов моделирования

 

Результаты моделирования обрабатываются и печатаются в программе функцией Statistic(TextBox text) класса Simulation. Вывод информации осуществляется в элемент TextBox диалогового окна. В начале вычисляются суммарное количество обслуженных клиентов и количество обслуженных клиентов по всем кассам и количество проданных билетов. Далее печатается среднее время ожидания клиентов.

Таким образом, функция Statistic(TextBox text) имеет вид:

public void Statistic(TextBox text)

{.Lines = new string[] { "Всего обслужено клиентов: " + Convert.ToString(CountClient) };_office t;();//вычисление среднего времени ожидания по всем кассам.AppendText(Environment.NewLine + "Среднее время ожидания: " + Average_time.printTime());(int i = 0; i < service.Count; i++)//печать статистики по кассам

{= (ticket_office)service.ToArray().GetValue(i);.AppendText(Environment.NewLine + t.getDirectionName());.AppendText(Environment.NewLine + "обслужено клиентов: "

+ Convert.ToString(t.getCountClient()));.AppendText(Environment.NewLine + "билетов продано: "

+ Convert.ToString(t.getCountTicket()));.AppendText(Environment.NewLine + "Среднее время ожидания: "

+ t.GetAverageTime().printTime());

}

}

моделирование имитация время

2.4 Работа программы моделирования

 

Результат работы программы на экране:

 

 

Результат работы программы в журнале событий:

:30 отправка рейса в Омск

Количество пассажиров: 0

:35: прибыл клиент № 1

:36: Клиенту №1 продан билет на Камень-на-Оби

время отправки: 11:30

:40: прибыл клиент № 2

:40: прибыл клиент № 261

:42: Клиенту №261 продан билет на Камень-на-Оби

время отправки: 20:30

Клиенту №260 билет не продан

:45: прибыл клиент № 262

Клиенту №262 билет не продан

:47: прибыл клиент № 263

Литература

 

1. Методические указания к курсовой работе для студентов 2 курса дневного отделения факультета автоматики и вычислительной техники направления 230100 "Информатика и вычислительная техника"

 

Приложение 1

 

Файл Program.cs

using System;System.IO;System.Collections.Generic;System.Linq;System.Windows.Forms;System.Threading;_1

{

//-----Время-----//class Time

{int hour;int min;

//конструктор без параметровTime()

{= min = 0;

}

//конструктор с параметрамиTime(int h, int m)

{= (h >= 0 && h = 0 && m < 60) ? m : 0;

}

//копирование объектаvoid CopyTime(Time t)

{= t.hour;= t.min;

}

//установка времениvoid setTime(int h, int m)

{= (h >= 0 && h = 0 && m < 60) ? m : 0;

}

//печать времениstring printTime()

{(min < 10) return hour + ":0" + min;return hour + ":" + min;

}

//------перегруженниые операторы-----//

//инкрементstatic Time operator ++(Time t1)

=60)">{.min++;(t1.min >= 60)

{.min -= 60;.hour++;

}t1;

}

//декрементstatic Time operator --(Time t1)

{.min--;(t1.min < 0)

{.min += 60;.hour--;

}t1;

}

//сложениеstatic Time operator +(Time t1, Time t2)

=60)">{h = t1.hour + t2.hour, m = t1.min + t2.min;(m >= 60)

{-= 60;++;

}(h > 23)

{-= 24;

}new Time(h, m);

}

//вычитаниеstatic Time operator -(Time t1, Time t2)

{h = t1.hour - t2.hour, m = t1.min - t2.min;(m < 0)

{+= 60;-;

}new Time(h, m);

}

//деление на целое числоstatic Time operator /(Time t1, int num)

{m, h;= (t1.hour * 60 + t1.min) / num;= m / 60;-= h * 60;new Time(h, m);

}

//сравнениеstatic bool operator ==(Time t1, Time t2)

{(t1.hour == t2.hour && t1.min == t2.min) return true;return false;

}static bool operator !=(Time t1, Time t2)

{(t1.hour != t2.hour && t1.min != t2.min) return true;return false;

}static bool operator >(Time t1, Time t2)

t2.hour)returntrue;if(t1.hour t2.min) return true;if (t1.min < t2.min) return false;return false;

}static bool operator >=(Time t1, Time t2)

t2.hour)||(t1.hour==t2.hour&&t1.min>=t2.min))returntrue;returnfalse;">{((t1.hour > t2.hour) || (t1.hour == t2.hour && t1.min >= t2.min)) return true;return false;

}static bool operator <(Time t1, Time t2)

t2.hour)returnfalse;if(t1.min t2.hour) return fals