Моделирование работы автовокзала
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
= 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