-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathKantineSimulatie.java
199 lines (166 loc) · 6.77 KB
/
KantineSimulatie.java
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
import java.util.*;
/**
* Class KantimeSimulatie
*
* @author Hylke de Vries
* @version 1.0
*/
public class KantineSimulatie
{
//-- Variabelen
//kantine
private Kantine kantine;
//kantineaanbod
public static KantineAanbod kantineaanbod;
//random generator
private Random random;
//aantal artikelen
private static final int AANTAL_ARTIKELEN=4;
//artikelen
public static final String[] artikelnamen=
new String[] {"Koffie","Broodje hamburger","Broodje kaas","Melk"};
//prijzen
public static double[] artikelprijzen=
new double[] {1.50,2.10,1.65,1.65};
//minimum en maximum aantal artikelen per soort
private static int MIN_ARTIKELEN_PER_SOORT=10000;
private static int MAX_ARTIKELEN_PER_SOORT=20000;
//Variabelen voor de administratie
private int[] aantal;
private double aantal2;
private double[] omzet;
private double[] dagomzet;
//-- Constructor
public KantineSimulatie(){
this.kantine=new Kantine();
this.random=new Random();
int[] hoeveelheden=getRandomArray(AANTAL_ARTIKELEN, MIN_ARTIKELEN_PER_SOORT, MAX_ARTIKELEN_PER_SOORT);
kantineaanbod=new KantineAanbod(artikelnamen, artikelprijzen, hoeveelheden);
}
//-- Getters
/**
* Methode om een random getal ussen min(incl) en max(incl) te genereren.
*
* @param lengte
* @param min
* @param max
*
* @return De array met random getallen
*/
private int[] getRandomArray (int lengte, int min, int max) {
int[] temp=new int[lengte];
for (int i=0;i<lengte;i++) {
temp[i]=getRandomValue(min,max);
}
return temp;
}
/**
* Methode om een random getal tussen min(incl) en max(incl) te genereren.
*
* @param min
* @param max
*
* @retrun Een random getal
*/
private int getRandomValue(int min, int max) {
return this.random.nextInt(max-min+1)+min;
}
/**
* Methode om op basis van een array van indexen voor de array
* artikelnamen de bijhorende array van artikelnamen te maken
*
* @param indexen
*
* @return De array met artikelnamen
*/
private static String[] geefArtikelNamen(int[] indexen) {
String[] artikelen=new String[indexen.length];
for (int i=0;i<indexen.length;i++) {
artikelen[i]=artikelnamen[indexen[i]];
}
return artikelen;
}
//-- Setters
//-- Voids
/**
* Deze methode simuleert en aantal dagen in het verloop van de kantine
*
* @param dagen
*/
public void simuleer(int dagen, int mins, int maxs, int minp, int maxp){
MIN_ARTIKELEN_PER_SOORT=mins;
MAX_ARTIKELEN_PER_SOORT=maxs;
this.aantal=new int[dagen];
this.aantal2=0;
this.omzet=new double[dagen];
this.dagomzet=new double[dagen];
//for lus voor dagen
for(int i=0;i<dagen;i++){
//bedenk hoeveel personen vandaag binnen lopen
int aantalKlanten=100;
int aantalStudenten=89;
int aantalDocenten=10;
int aantalMedewerkers=1;
//laat de personen maar komen...
for (int j=0;j<aantalKlanten;j++) {
///maak persoon en dienblad aan, koppel ze
Persoon persoon=new Persoon();
if (j<aantalStudenten) {
persoon=new Student(12345,18,03,1994,'M',"Hylke","Vries",296687,"TI");
}
else if (j<(aantalStudenten+aantalDocenten)) {
persoon=new Docent(12345,18,03,1994,'M',"Jakob","Vries","JJDV","TID2");
}
else if (j<(aantalStudenten+aantalDocenten+aantalMedewerkers)) {
persoon=new KantineMedewerker(12345,18,03,1994,'M',"Albert","Vries",296687,false);
}
persoon.nieuwePinpas(7.50,0.00);
System.out.println(persoon.toString());
persoon.pakDienblad();
//bedenk hoeveel artikelen worden gepakt
int aantalartikelen=getRandomValue(minp,maxp);
this.aantal2+=aantalartikelen;
//genereer de "artikelnummers", dit zijn indexen
//van de artikelnamen array
int[] tepakken=getRandomArray(aantalartikelen,0,AANTAL_ARTIKELEN-1);
//vind de artikelnamen op basis van de indexen hierboven
String[] artikelen=geefArtikelNamen(tepakken);
//loop de kantine binnen, pak de gewenste artikelen, sluit aan
this.kantine.loopPakSluitAan(persoon,artikelen);
}
//verwerk rij voor kassa
this.kantine.verwerkRij();
int dag=i+1;
//druk de dagtotalen af en hoeveel personen binnen zijn gekomen
System.out.println("############################################################");
System.out.println("#De dagtotalen voor dag "+dag+" zijn: "+Kassa.getHoeveelheidGeldInKassa());
System.out.println("#Het aantal personen van dag "+dag+" is: "+Kassa.getHoeveelheidPersonen());
System.out.println("############################################################");
System.out.println("");
//variabelen voor de administratie opslaan
this.aantal[i]=Kassa.getHoeveelheidPersonen();
this.omzet[i]=Kassa.getHoeveelheidGeldInKassa();
this.dagomzet[i]=Kassa.getHoeveelheidGeldInKassa();
//reset de kassa voor de volgende dag
Kassa.resetKassa();
}
//Administratiegegevens afdrukken
double gemAantal=Administratie.berekenGemiddeldeAantal(this.aantal);
System.out.println("Gemiddelde aantal personen per dag: "+gemAantal);
System.out.println();
double gemAantal2=(this.aantal2/(dagen*100));
System.out.println("Totaal aantal artikelen: "+this.aantal2);
System.out.println("Gemiddelde aantal artikelen per persoon: "+gemAantal2);
System.out.println();
double gemOmzet=Administratie.berekenGemiddeldeOmzet(this.omzet);
System.out.println("Gemiddelde omzet per dag: "+gemOmzet);
System.out.println();
String[] weekDagen = new String[]
{"zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"};
double[] gemDagOmzet=Administratie.berekenDagOmzet(this.dagomzet);
for (int i=0;i<weekDagen.length;i++){
System.out.println("Totale omzet van alle "+weekDagen[i]+"en = "+gemDagOmzet[i]);
}
System.out.println();
}
}