-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCompany.h
137 lines (116 loc) · 2.73 KB
/
Company.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#pragma once
#include<fstream>
#include"Cargo.h"
#include"Event.h"
#include"Truck.h"
#include"Preparation.h"
#include"Promotion.h"
#include"CancelEvent.h"
#include"LinkedQueue.h"
#include"PriorityQueue.h"
#include "Time.h"
#include "Linked_list.h"
#include"UI.h"
using std::ifstream;
using std::ofstream;
class Company
{
private:
ofstream Out;
ifstream IN;
//
UI userinterface;
// Event List
LinkedQueue<Event*> Events;
// Waiting Cargo List
Linked_list<Cargo> NC;
LinkedQueue<Cargo> SC;
PriorityQueue<Cargo> VC;
//Truck List
LinkedQueue<Truck*> NTs;
LinkedQueue<Truck*> STs;
LinkedQueue<Truck*> VTs;
// Moving Cargos List
//LinkedQueue<Cargo> MovingNC;
//LinkedQueue<Cargo> MovingSC;
//LinkedQueue<Cargo> MovingVC;
PriorityQueue<Cargo> totalMoving;
//Delivered Cargos List
//LinkedQueue<Cargo> deliveredCargoNC;
//LinkedQueue<Cargo> deliveredCargoSC;
//LinkedQueue<Cargo> deliveredCargoVC;
LinkedQueue<Cargo> totalDeliveredCargo;
PriorityQueue<Truck*> assignedTrucks; //loading Trucks
PriorityQueue<Truck*> MovingTrucks;
//CheckUp lists
LinkedQueue<Truck*> In_Checkup_N_Trucks;
LinkedQueue<Truck*> In_Checkup_S_Trucks;
LinkedQueue<Truck*> In_Checkup_VIP_Trucks;
static Time currentTime;
// Cargo num
static int NC_Num;
static int SC_Num;
static int VIPC_Num;
//Auto-promoted Cargos num
static int PC_Num;
// Trucks num
int NT_Num;
int ST_Num;
int VIPT_Num;
// Truck Speed
int NT_Speed;
int ST_Speed;
int VIPT_Speed;
// Capacity
int NT_Capacity;
int ST_Capacity;
int VIPT_Capacity;
//Duration
int NT_Checkup_Duration;
int ST_Checkup_Duration;
int VIPT_Checkup_Duration;
int J;
//Others_Variables
int AutoPromotionLimit;
int MaxW;
//Num Of Events
int NumOfEvents;
Time CargoAvgWait;
int AvgActiveTime;
int AvgUtilization;
public:
Company();
//input and output functions
void LoadFile();
void Print();
//////////////////////////////////////////
bool offHours();
const int getNC_Num();
int getSC_Num();
int getVIPC_Num();
int getNumOfEvents();
Time getCargoAvgWait();
int getPC_Num();
int getNT_Num();
int getST_Num();
int getVIPT_Num();
int getAvgActiveTime();
int getAvgUtilization();
static void increaseNC_Num();
static void increaseSC_Num();
static void increaseVIPC_Num();
static void increasePC_Num();
//Auto Promotion
void checkAutoPromotion();
//Simulator
void Simulator();
void CheckUp();
bool TruckCheckUp(Truck*);
bool assigningVipCargos(PriorityQueue<Cargo>& VC, LinkedQueue<Truck*>& Tr);
bool assigningSpecialCargos(LinkedQueue<Cargo>& SC, LinkedQueue<Truck*>& Tr);
bool assigningNormalCargos(Linked_list<Cargo>& NC, LinkedQueue<Truck*>& Tr);
void AssignmentOrder();
void loadingtoMoving();
void movingToDelivered();
static Time getCurrentTime();
};