Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет о курсовой работе по ВС.docx
Скачиваний:
16
Добавлен:
07.12.2018
Размер:
66.13 Кб
Скачать
  1. Описание программных модулей

Программа содержит 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);

};