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

 

Оглавление


Введение

. Постановка задачи

. Разработка приложения

.1 Класс Моделирование

.2 Процесс моделирования

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

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

Литература

Приложения


Введение


Основным методом исследования систем является метод моделирования, т.е. способ теоретического анализа и практического действия, направленный на разработку и использование моделей. Суть моделирования заключается в описании социально-экономических систем и процессов в виде экономико-математических моделей.

В данном курсовом проекте будет смоделирована работа автовокзала.

Цель данного курсового проекта - овладеть практическими навыками построения моделей, для анализа взаимодействующих факторов и оценки последствий их измерения на развитие моделируемого объекта.


1. Постановка задачи


Разрабатывается программа, которая моделирует работу автовокзала. Клиенты приходят на автовокзал, встают в очередь к одному из кассиров, в зависимости от пункта назначения, обслуживаются и уходят, также производится отправка рейсов согласно расписанию. Программа на абстрактном уровне воспроизводит происходящие события в темпе искусственного времени, имитирующего реальное время. После имитации заданного интервала времени работы автовокзала программа печатает общее количество обслуженных клиентов, среднее время обслуживания клиентов, а также количество обслуженных клиентов, среднее время обслуживания клиентов по каждому направлению. Модельное время продвигается с постоянным шагом. Времена прихода и обслуживания клиентов формируются при помощи генераторов случайных чисел. При запуске программы пользователем вводятся значения параметров моделируемой системы (время моделирования, частота прихода клиентов).


2. Разработка приложения


.1 Класс Моделирование


В ходе работы программы для клиента генерируется время появления следующего клиента, которое представляется как объект класса Time и является объектом класса Simulation. В цикле моделирования идет проверка на совпадение текущего времени и времени появления следующего клиента, если совпадение есть, генерируется время появления следующего клиента, а в журнал событий записывается время появления клиента и его номер.

Для генерирования времени появления используется генератор случайных чисел, реализованный в программе как функция-элемент класса Simulation. Функция-элемент Client_arrival(curr, num) этого класса генерирует случайное целое число Х из интервала [0, num] с помощью объекта класса Random, после чего число минут (Х + 1) прибавляется к текущему времени curr. Тем самым получается время появления следующего клиента.

Клиент представлется как объект класса client, который содержит следующие закрытые данные-элементы:

аrrive - время появления клиента_time - время обслуживания на кассе_time- время отправки рейсаномер клиента- место назначения

После появления клиента в цикле моделирования идет его инициализация с помощью функции-элемента класса client, которая устанавливает время появления, номер, время обслуживания на кассе и место назначения генерируются с помощью объекта класса Random. Время отправки устанавливается при продаже билета. После инициализации клиент помещается в нужную кассу в зависимости от места назначения. В классехранится список касс, каждая из которых представлена объектом класса ticket_office, в котором содержится очередь для клиентов, а также направление, представленное классом direction, который содержит список городов (класс city), в каждом городе имеется список рейсов(класс Run). Тем самым реализован один из двух доступных в ООП способов повторного использования программного кода - композиция.

После помещения клиента в очередь проверяются все очереди на наличие клиентов, которые должны обслуживаться. Если такие имеются, ведется поиск билета на самый ранний по отношению к текущему времени рейс. Количество билетов на каждый рейс ограничено 40 шт. Если билет продан, то в журнал событий записывается время продажи, номер клиента, место назначения, если нет - время обслуживания клиента и его номер.

В конце каждой итерации цикла моделирования уменьшается время ожидания всех клиентов в очередях на 1 минуту.

В начале каждой итерации цикла моделирования проверяется наличие отправки рейса с помощью функции RunDeparture(curr_time, textWritter), если рейс отправляется, то в журнал событий производится запись времени, направления рейса и количества пассажиров.


2.2 Процесс моделирования


Процесс моделирования запускается при нажатии на соответствующую кнопку в диалоговом окне путем вызова функции StartSimulation(Time b, Time sim, int num, ProgressBar bar) через объект класса Simulation, где b - время начала моделирования, sim - время завершения моделирования, num - частота появления клиентов. Все эти параметры задаются в диалоговом окне. При этом открывается файл "test" для регистрации событий - журнал событий. Он позволяет детально исследовать поведение моделируемой системы.

Таким образом, функция StartSimulation(Time b, Time sim, int num, ProgressBar bar) имеет следующий вид:

public void StartSimulation(Time b, Time sim, int num, ProgressBar bar)

{textWritter = 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;<client> 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 < 24) ? h : 0;= (m >= 0 && m < 60) ? m : 0;

}

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

{= t.hour;= t.min;

}

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

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

}

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

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

}

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

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

{.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)

{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)

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

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

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

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

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

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

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

}

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

//добавление нескольких минут, для генерации времени появления клиентаvoid PlusMin(int m)

{+= m;(min >= 60)

{-= 60;++;

}

}int getMin()

{min;

}int getHour()

{hour;

}

}

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

//-----Клиент-----//client

{Time arrive;//время появления клиентаTime service_time;//время обслуживания на кассеTime departure_time;//время отправки рейсаint clientID;//номер клиентаstring destination;//место назначения

//конструкторclient()

{= new Time();_time = new Time();_time = new Time();= 0;= "\0";

}

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

{.CopyTime(t.arrive);_time.CopyTime(t.service_time);_time.CopyTime(t.departure_time);= t.clientID;= t.destination;

}

//время обслуживанияTime getServiceTime()

{service_time;

}

//"идентификация" клиентаvoid setAll(int id, Time arr)

{.CopyTime(arr);= id;rnd = new Random();x = new Random();m = 0;.Sleep(15);n = rnd.Next(8) + 1;(n)

{1: destination = "Томск"; break;2: destination = "Асино"; break;3: destination = "Стрежевой"; break;4: destination = "Омск"; break;5: destination = "Калачинск"; break;6: destination = "Тара"; break;7: destination = "Барнаул"; break;8: destination = "Камень-на-Оби"; break;9: destination = "Бийск"; break;

}= rnd.Next(4) + 1;_time.setTime(0, m);

}

//установка времени обслуживанияvoid setServiceTime(Time t)

{_time.CopyTime(t);

}

//уменьшение времени ожиданияvoid NewServiceTime()

{_time--;

}

//номер клиентаint getClientId()

{clientID;

}

//место назначенияstring getDestination()

{destination;

}

// время отправкиTime getDepartureTime()

{departure_time;

}

// время отправкиvoid setDepartureTime(Time dt)

{_time.CopyTime(dt);

}

}

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

//-----Рейс-----//Run

{int count_ticket;//количество оставшихся билетовTime departure;//время отправки

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

{_ticket = 0;= new Time();

}

//конструктор с параметрамиRun(int count, Time dep)

{_ticket = count;= new Time();.CopyTime(dep);

}

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

{_ticket = t.count_ticket;.CopyTime(t.departure);

}

//инициализация напрвленияvoid setRun (int count, Time dep)

{_ticket = count;.CopyTime(dep);

}

//возврат времени отправки рейсаTime getDepartureTime()

{departure;

}

//количество оставшихся билетовint getCountTicket()

{count_ticket;

}

//количество проданных билетовint getNumClients()

{(40 - count_ticket);

}

//билет проданvoid setCountTicket()

{_ticket--;

}

}

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

//-----Город-----//city

{string city_name;int count_ticket;//количество проданных билетовList<Run> list_Run;

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

{_ticket = 0;_name = "\0";_Run = new List<Run>();

}

//конструктор с параметрамиcity(string name)

{_name = name;_Run = new List<Run>();

}

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

{tmp = new Run();_name = t.city_name;_ticket = t.count_ticket;

//копирование списка(int i = 0; i < t.list_Run.Count(); i++)

{.CopyRun((Run)t.list_Run.ToArray().GetValue(i));_Run.Add(tmp);

}

}

//добавление рейса в городvoid AddRun(Run r)

{rr = new Run();.CopyRun(r);_Run.Add(rr);

}

//возврат ссылки на список рейсовList<Run> getListRun()

{list_Run;

}

//возврат количества проданных билетовstring getNameCity()

{city_name;

}

//установка количества проданных билетовvoid setCountTicket()

{_ticket++;

}

//возврат количества проданных билетовint getCountTicket()

{count_ticket;

}

}

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

//-----Направление-----//direction

{string direction_name;List<city> list_city;//список городов

//конструктор с параметрамиdirection(string name)

{_name = name;_city = new List<city>();

}

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

{_name = "\0";_city = new List<city>();

}

//добавление городаvoid AddCity(city c)

{n = new city();.CopyCity(c);_city.Add(c);

}

//возврат ссылки на список городовList<city> getListCity()

{<city> ptr = list_city;ptr;

}

//возврат названия направленияstring getNameDirection()

{direction_name;

}

//установка названия направленияvoid setNameDirection(string name)

{_name = name;

}

}

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

//-----Касса-----//ticket_office

{Time waiting_time;//время ожидания очередиTime average_time;//среднее время ожиданияdirection one;//направлениеint count_client;//количество обслуженных клиентовint count_ticket;//количество проданных билетовList<client> line;//очередь клиентов

//конструкторticket_office(string name)

{_ticket = 0;_client = 0;_time = new Time(0, 0);_time = new Time(0, 0);= new direction(name);= new List<client>();

}Time GetAverageTime()

{average_time;

}

//уменьшение времени ожидания на 1 минутуvoid SetTime()

{(waiting_time.getHour() != 0 || waiting_time.getMin() != 0)

{_time--;n = line.Count()-1;t;(n != -1)

{= (client)line.ToArray().GetValue(n);.NewServiceTime();-;

}

}

}

//увеличение количества обслуженных клиентовvoid setCountClient()

{_client++;

}

//возврат количества обслуженных клиентовint getCountClient()

{count_client;

}

//увеличение количества проданных билетовvoid setCountTicket()

{_ticket++;

}

//возврат количества проданных билетовint getCountTicket()

{count_ticket;

}

//возврат указателя на очередь клиентовList<client> getLineClient()

{line;

}

//добавление в очередь клиетаvoid AddToLine(client a)

{t = new client();.CopyClient(a);_time.CopyTime(waiting_time + t.getServiceTime());.setServiceTime(waiting_time);(t.getClientId() < 1)

{_time.CopyTime(average_time + waiting_time);

}

{_time.CopyTime((average_time + waiting_time) / 2);

}.Add(t);

}

//добавление города в направлениеvoid InsertCity(city c)

{.AddCity(c);

}

//возврат названия направленияstring getDirectionName()

{one.getNameDirection();

}

//возврат ссылки на направлениеdirection getDirection()

{one;

}

}

//----------------------------------------------------Simulation

{Time base_time;//начальное времяTime simul_time;//время симуляцииTime next_arrival;//время прибытия следующего клиентаint CountClient;//количество клиентовTime Average_time;//среднее время ожиданияList<ticket_office> service;// список касс

//конструкторSimulation()

{_time = new Time();_arrival = new Time();_time = new Time();_time = new Time();= 0;= new List<ticket_office>();

}

//печать статистики в диалоговом окне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());

}

}

//подсчет среднего времени одиданияvoid AverTime()

{temp = new Time(0,0);_office t;(int i = 0; i < service.Count; i++)

{= (ticket_office)service.ToArray().GetValue(i);= temp + t.GetAverageTime();

}_time = temp / (service.Count);

}

//возврат начального времениTime getBaseTime()

{base_time;

}

//возврат конечного времениTime getSimulTime()

{simul_time;

}

//устанока конечного времениvoid setSimulTime(Time sim)

{_time = sim;

}

//возврат количества обслуженных клиентовint getCountClient()

{CountClient;

}

//добавление кассы с уже заданным направлениемvoid AddTicketOffice(string name_direction)

{_office t = new ticket_office(name_direction);.Add(t);

}

//добавление города по направлениюvoid AddCity(string name_direct, string name_city)

{c = new city(name_city);tmp = SearchDirection(name_direct);.AddCity(c);

}

//поиск направления по названию, возвращается ссылкаdirection SearchDirection(string name_direct)

{_office tmp;n = service.Count() - 1;= (ticket_office)service.ToArray().GetValue(n);(tmp.getDirectionName() != name_direct)

{= (ticket_office)service.ToArray().GetValue(n);-;

}tmp.getDirection();

}

//поиск города по названию, возвращается ссылка на город

//функция используется для добавления рейсаcity SearchCity(string name_city)

{c;t;_office tmp;n = service.Count() - 1;k = 0;(true)//проверяем все кассы, пока не найдем нужный город

{= (ticket_office)service.ToArray().GetValue(n);= tmp.getDirection();= t.getListCity().Count() - 1;= (city)t.getListCity().ToArray().GetValue(k);(c.getNameCity() != name_city)

{(k == -1) break;= (city)t.getListCity().ToArray().GetValue(k);-;

}(c.getNameCity() == name_city) break;-;

}c;

}

//добавление рейса в городvoid AddRun(string name_city, Run r)

{c = SearchCity(name_city);.AddRun(r);

}

//добавление клиента в очередь в нужную кассуvoid AddClientToLine(client add)

{c;t;_office tmp_off;tmp = add;n = service.Count() - 1;k = 0;(true)

{_off = (ticket_office)service.ToArray().GetValue(n);= tmp_off.getDirection();= t.getListCity().Count() - 1;= (city)t.getListCity().ToArray().GetValue(k);((c.getNameCity() != tmp.getDestination()) && k != -1)

{= (city)t.getListCity().ToArray().GetValue(k);-;

}(c.getNameCity() == tmp.getDestination()) break;-;

}_off.AddToLine(tmp);

}

//функция выяснения появления клиента

//в качестве параметра передается среднее время между появлением клиентов(в минутах)Client_arrival(Time curr, int num)

{rnd = new Random();t = rnd.Next(num) + 1;_arrival.CopyTime(curr);_arrival.PlusMin(t);

}

//обслуживание клиентаvoid Service(ticket_office off, client _client, Time curr)

{t = SearchCity(_client.getDestination());//ищем нужный городyes = false;//продажа билетаtmp_r, ttmp_r;tmp_time = new Time();<Run> r = t.getListRun();_r = (Run)r.ToArray().GetValue(0);tmp2;_time.CopyTime(ttmp_r.getDepartureTime());(int i = 0; i < r.Count; i++)//поиск билета

{_r = (Run)r.ToArray().GetValue(i);= tmp_r.getDepartureTime();(!yes)_time.CopyTime(tmp2);((curr < tmp_time) && (tmp_time >= tmp2) && (tmp2 >= curr) && (tmp_r.getCountTicket() != 0))

{_time.CopyTime(tmp2);_r = (Run)r.ToArray().GetValue(i);= true;

}

}(!yes || tmp_time == curr)//если нет билетов или рейсов

{.setCountClient();//увеличиваем количество обслуженных клиентов

}

{.setCountClient();//увеличиваем количество обслуженных клиентов.setCountTicket();//увеличиваем количество проданных на кассе билетов.setCountTicket();////увеличиваем количество проданных билетов на определенный город_r.setCountTicket();//уменьшаем количество оставшихся билетов на определенный рейс

_client.setDepartureTime(tmp_time);//устанавливаем время отправления клиента

}

}

//функция уменьшает время ожидания всех клиетнов на 1 минуту

//используется в цикле моделированияvoid SetTimeAll()

{_office t;(int i = 0; i < service.Count; i++)

{= (ticket_office)service.ToArray().GetValue(i);.SetTime();

}

}

//инициализация касс по направлениям, создание городов, рейсовvoid Init_Service()

{run_time = new Time();//время отправки рейсаrun = new Run();("Томская область");("Томская область", "Томск");_time.setTime(10, 0);.setRun(40, run_time);("Томск", run);_time.setTime(12, 30);.setRun(40, run_time);("Томск", run);_time.setTime(16, 50);.setRun(40, run_time);("Томск", run);("Томская область", "Асино");_time.setTime(9, 30);.setRun(40, run_time);("Асино", run);_time.setTime(16, 10);.setRun(40, run_time);("Асино", run);_time.setTime(18, 50);.setRun(40, run_time);("Асино", run);("Томская область", "Стрежевой");_time.setTime(7, 30);.setRun(40, run_time);("Стрежевой", run);_time.setTime(12, 0);.setRun(40, run_time);("Стрежевой", run);_time.setTime(17, 20);.setRun(40, run_time);("Стрежевой", run);("Омская область");("Омская область", "Омск");_time.setTime(6, 30);.setRun(40, run_time);("Омск", run);_time.setTime(11, 40);.setRun(40, run_time);("Омск", run);_time.setTime(16, 50);.setRun(40, run_time);("Омск", run);("Омская область", "Калачинск");_time.setTime(9, 10);.setRun(40, run_time);("Калачинск", run);_time.setTime(10, 50);.setRun(40, run_time);("Калачинск", run);_time.setTime(18, 10);.setRun(40, run_time);("Калачинск", run);("Омская область", "Тара");_time.setTime(8, 00);.setRun(40, run_time);("Тара", run);_time.setTime(12, 00);.setRun(40, run_time);("Тара", run);_time.setTime(16, 00);.setRun(40, run_time);("Тара", run);("Алтайский край");("Алтайский край", "Барнаул");_time.setTime(10, 30);.setRun(40, run_time);("Барнаул", run);_time.setTime(13, 40);.setRun(40, run_time);("Барнаул", run);_time.setTime(17, 30);.setRun(40, run_time);("Барнаул", run);("Алтайский край", "Камень-на-Оби");_time.setTime(11, 30);.setRun(40, run_time);("Камень-на-Оби", run);_time.setTime(15, 40);.setRun(40, run_time);("Камень-на-Оби", run);_time.setTime(20, 30);.setRun(40, run_time);("Камень-на-Оби", run);("Алтайский край", "Бийск");_time.setTime(8, 30);.setRun(40, run_time);("Бийск", run);_time.setTime(17, 00);.setRun(40, run_time);("Бийск", run);_time.setTime(21, 50);.setRun(40, run_time);("Бийск", run);

}

//моделирование отправления рейсаvoid RunDeparture(Time dep, TextWriter text)

{_office tmp_off;<city> tmp_list_city;tmp_city;<Run> tmp_list_run;tmp_run;(int i = 0; i < service.Count; i++)

{_off = (ticket_office)service.ToArray().GetValue(i);_list_city = tmp_off.getDirection().getListCity();(int j = 0; j < tmp_list_city.Count; j++)

{_city = (city)tmp_list_city.ToArray().GetValue(j);_list_run = tmp_city.getListRun();(int k = 0; k < tmp_list_run.Count; k++)

{_run = (Run)tmp_list_run.ToArray().GetValue(k);(tmp_run.getDepartureTime() == dep)//если в текущее время отправляется рейс

{.WriteLine(tmp_run.getDepartureTime().printTime()

+ " отправка рейса в " + tmp_city.getNameCity());.WriteLine("Количество пассажиров: " +.ToString(tmp_run.getNumClients()));.WriteLine("");

}

}

}

}

}

//---- МОДЕЛИРОВАНИЕ ----//void StartSimulation(Time b, Time sim, int num, ProgressBar bar)

{textWritter = 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;<client> 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() + ": Клиенту №" +.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();

}

}class Program

{

/// <summary>

/// Главная точка входа для приложения.

/// </summary>

[STAThread]void Main()

{.EnableVisualStyles();.SetCompatibleTextRenderingDefault(false);.Run(new Form1());

}

}

}


Приложение 2


Файл « Form1.cs»

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Diagnostics;_1

{partial class Form1 : Form

{A;start;end;Form1()

{();

}void Form1_Load(object sender, EventArgs e)

{

}void textBox1_TextChanged(object sender, EventArgs e)

{

}void button1_Click(object sender, EventArgs e)

{= new Simulation();= new Time(Convert.ToInt32(StartTimeHours.Value), Convert.ToInt32(StartTimeMin.Value));= new Time(Convert.ToInt32(EndTimeHours.Value), Convert.ToInt32(EndTimeMin.Value));n = Convert.ToInt32(num.Value);.Value = 0;(start >= end) MessageBox.Show("Неверный ввод");

{.StartSimulation(start, end, n, progressBar1);.Statistic(textBox1);

}

}void button2_Click(object sender, EventArgs e)

{();

}void button3_Click(object sender, EventArgs e)

{p1 = new Process();.StartInfo.UseShellExecute = true;.StartInfo.RedirectStandardOutput = false;.StartInfo.FileName = "test.txt";.Start();.WaitForExit();

}

}


Оглавление Введение . Постановка задачи . Разработка приложения .1 Класс Моделирование .2 Процесс моделирования .3 Обработка и печать резу

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ