Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Описание программных модулей




Программа содержит 5 основных модулей.

Buffer.h #include <vector> #include <stdio.h> #include <string> using namespace std; /* структура, которую хранит каждая ячейка буфера*/ struct BufferElement{ int iNumOfSource; //номер источника int iNumOfRequest; //номер заявки double fTimeAppear; //время прихода заявки }; class Buffer{ public: int iNumOfPlaces; //количество мест в буфере vector<BufferElement> buf; //элементы буфера Buffer(int); //конструктор, в который задаем количество мест void add(BufferElement); //добавление нового элемента в буффер BufferElement* remove(double);//удаление последнего элемента из буфера BufferElement* shift(double);//сдвиг элементов (возвращает заявку, которая ушла в отказ) bool hasFreeSpace();//есть ли в буфере свободное место bool empty(); //буфер пуст? string getStatistic(); //собирает статистику по буферу. void clear(); //очистка буфера };
Device.h #include <stdio.h> #include <string> using namespace std; class Device { public: int iNumOfServedRequests; //количество обработанных заявок int iCurrentSourceNum; //текущий номер источника int iCurrentRequestNum; //текущий номер заявки int iNumOfDevice; //номер прибора double fTimeRelease; //последнее время освобождения прибора double fTimeOfSilence; //время, в течении которого прибор не работал double fTimeOfWorking; //общее время работы прибора double fUseFactor; //коэффициент использования прибора double fRate; //интенсивность прибора double fT1; //нижняя граница времени обслуживания double fT2; //верхняя граница времени обслуживания bool bWaiting; //находится ли прибор в режине ожидания? Device(double,double,int); //конструктор void service(double*,double,int,int); //обслуживание заявки bool free(double fTime); //свободен ли прибор на данное время? string getStatistic(); //собирает статистику по приборам void clear(); //очистка прибора };
Source.h #include <stdio.h> #include <string> using namespace std; class Source{ public: int iTotalRequestsNum; //общее количество заявок от источника int iFailedRequestsNum; //количество отказов int iSuccessfulRequestsNum; //количество успехов int iNumOfSource; //номер источника int iNumOfWaiting; //количество заявок, проходивших через буфер int iNumOfDevices; //количество обработанных заявок   double fTimeEntrance; //время прихода крайней сгенерированной заявки double fTimeWaiting; //общее время ожидания заявок в буфере double fTimeInSystem; //общее время заявок в системе double fTimeInDevice; //общее время обслуживания заявок приборами double fRejectChance; //вероятность отказа double fLambda; //интенсивность double fRate; bool bStillInSystem; //генерирует ли еще источник заявки? Source(int,double); //конструктор void genRequest(); //генерация новой заявки void clear(); //очистка источника string getStatistic(); //сбор статистики по источнику };  
Manager.h #include "Device.h" #include "Buffer.h" #include "Source.h" /*осуществляет выборку и постановку заявок в буфер, постановку заявок на прибор*/ class Manager{ private: vector<Device>* pDevice; //указатель на массив приборов vector<Source>* pSource; //указатель на массив источников Buffer* pBuffer; //указатель на буфер public: int iCurrentNumberOfRequests; //общее количество заявок на данный момент Manager(vector<Device> &,vector<Source> &, Buffer &,int); //конструктор /* вспомогательные методы */ Source* getSourceByEnrtanceTime(double); Device* getPriorityFreeDevice(double); Device* getDeviceByReleaseTime(double); Device* getDeviceByNum(int); Source* getSourceByNum(int); /**************************/ BufferElement getFromBuffer(double); //осуществляет выборку заявки из буфера bool freeDeviceExist(double); //есть ли свободные приборы? void putToDevice(Device*, BufferElement&, double);//ставит заявку на обслуживание прибора void setToBuffer(BufferElement&, double); //ставит заявку в буффер void printCalendar(); //вывод календаря событий void printStat(FILE* file); // вывод статистики void clear(); //очистка системы };
Model.h #include "Manager.h" /* Моделирование системы */ class Model{ private: Manager manager; int state1; int state2; double realTime; bool exit; bool needGenerateMore(); void makeNewRequest(int); double getEarliestEvent(); double getEarliestRequestTime(); double getEarliestDeviceReleaseTime(); double getLastDeviceReleaseTime(); void setStatistic(); BufferElement makeBufFromSrc(Source* src); public: int iNumOfSources; int iNumOfDevices; int iNumOfPlaceInBuffer; int iMinNumOfRequests; int iNumOfIterations; vector<double> fT1; vector<double> fT2; vector<double> fLambda; double fFirtsTimeEntrance; double realizationTime; double probOfRejection; double useCoef; double precision; double devRate; double srcRate; double srcTimeInSystem; bool autoMode; vector<Source> source; vector<Device> device; Buffer buffer;   Model(); void setSameParameters(int,int,int,int,double,double,double); void setParameters(int,int,int,int,vector<double>,vector<double>,vector<double>); void init(); void setDefault(); void simulate(); void destroy(); void printStatistic(FILE* file); void printAllStatistic(FILE* file); void printFinalStat(FILE* file); };




Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 344 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент всегда отчаянный романтик! Хоть может сдать на двойку романтизм. © Эдуард А. Асадов
==> читать все изречения...

4553 - | 4228 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.