You are on page 1of 7

PPSchedul i ng.

j ava 13/ Dec/ 2010


1 of 7
1 i mpor t j avax. swi ng. *;
2 i mpor t j ava. awt . *;
3 i mpor t j ava. awt . event . *;
4 i mpor t j avax. swi ng. t abl e. *;
5 i mpor t j ava. ut i l . *;
6
7 publ i c cl ass PPSchedul i ng ext ends J Fr ame {
8
9 st at i c i nt l engt h = 0;
10 st at i c i nt [ ] t empbur st t i me = new i nt [ 100] ;
11 st at i c i nt [ ] pr ocessName = new i nt [ 100] ;
12 st at i c i nt [ ] ar r i val Ti me = new i nt [ 100] ;
13 st at i c i nt [ ] bur st Ti me = new i nt [ 100] ;
14 st at i c i nt [ ] pr i or i t y = new i nt [ 100] ;
15 st at i c bool ean[ ] f i ni shed = new bool ean[ 100] ;
16
17 st at i c i nt [ ] t t i me = new i nt [ 100] ;
18 st at i c i nt [ ] t ask = new i nt [ 1000000] ;
19
20 st at i c i nt f i ni sh = 0;
21 st at i c i nt t i me = 0;
22 st at i c i nt t ot al Ti me = 0;
23
24 J Tool Bar t ool bar = new J Tool Bar ( ) ;
25 J But t on comput eBut t on = new J But t on( " Comput e" ) ;
26 J Label t i t l eLabel = new J Label ( " Pr e- empt i ve Pr i or i t y Schedul i ng Al gor i t hm" ) ;
27 J Panel t ool Panel = new J Panel ( ) ;
28 J TabbedPane bodyTabbedpane = new J TabbedPane( ) ;
29
30 st at i c J Text Ar ea t askAr ea = new J Text Ar ea( ) ;
31 st at i c J Text Ar ea gant t Ar ea = new J Text Ar ea( ) ;
32
33 st at i c Def aul t Tabl eModel model Dat a = new Def aul t Tabl eModel ( ) ;
34 st at i c Def aul t Tabl eModel model Cal c = new Def aul t Tabl eModel ( ) ;
35 st at i c Def aul t Tabl eModel model Cal cResul t = new Def aul t Tabl eModel ( ) ;
36
37 J Tabl e dat aTabl e = new J Tabl e( model Dat a) ;
38 J Tabl e cal cTabl e = new J Tabl e( model Cal c) ;
39 J Tabl e cal cResul t Tabl e = new J Tabl e( model Cal cResul t ) ;
40
41 J Scr ol l Pane dat aScr ol l = new J Scr ol l Pane( dat aTabl e) ;
42 J Scr ol l Pane cal cScr ol l = new J Scr ol l Pane( cal cTabl e) ;
43 J Scr ol l Pane cal cResul t Scr ol l = new J Scr ol l Pane( cal cResul t Tabl e) ;
44 J Scr ol l Pane t askResul t Scr ol l = new J Scr ol l Pane( t askAr ea) ;
45 J Scr ol l Pane gant t Ar eaScr ol l = new J Scr ol l Pane( gant t Ar ea) ;
46
47 J Spl i t Pane cal cSpl i t Pane = new J Spl i t Pane( J Spl i t Pane. HORI ZONTAL_SPLI T,
48 cal cResul t Scr ol l , t askResul t Scr ol l ) ;
49 J Spl i t Pane t bt Spl i t Pane = new J Spl i t Pane( J Spl i t Pane. VERTI CAL_SPLI T,
50 cal cScr ol l , cal cSpl i t Pane) ;
51
52
53 publ i c PPSchedul i ng( ) {
54 t ool bar . set Layout ( new BoxLayout ( t ool bar , BoxLayout . X_AXI S) ) ;
55 t ool bar . add( comput eBut t on) ;
56 t ool bar . add( Box. cr eat eHor i zont al Gl ue( ) ) ;
57 t ool bar . add( t i t l eLabel ) ;
58
59 model Dat a. addCol umn( " Pr ocess" ) ;
60 model Dat a. addCol umn( " Bur st Ti me" ) ;
61 model Dat a. addCol umn( " Ar r i val Ti me" ) ;
62 model Dat a. addCol umn( " Pr i or i t y" ) ;
63
64 model Cal c. addCol umn( " Pr ocess" ) ;
65 model Cal c. addCol umn( " Tur nar ound Ti me" ) ;
66 model Cal c. addCol umn( " Wai t i ng Ti me" ) ;
67
68 model Cal cResul t . addCol umn( " Ti me" ) ;
69 model Cal cResul t . addCol umn( " Task" ) ;
70 model Cal cResul t . addCol umn( " Pr i or i t y" ) ;
71
72 cal cSpl i t Pane. set Resi zeWei ght ( 0. 5) ;
73 t bt Spl i t Pane. set Resi zeWei ght ( 0. 5) ;
74
75 bodyTabbedpane. addTab( " Ent er ed Dat a/ Pr ocess" , dat aScr ol l ) ;
76 bodyTabbedpane. addTab( " Temp/ Bur st / Ti me Cal cul at i on" , t bt Spl i t Pane) ;
77 bodyTabbedpane. addTab( " Gannt Char t " , gant t Ar eaScr ol l ) ;
PPSchedul i ng. j ava 13/ Dec/ 2010
2 of 7
78
79 t hi s. add( t ool bar , Bor der Layout . NORTH) ;
80 t hi s. add( bodyTabbedpane, Bor der Layout . CENTER) ;
81
82 comput eBut t on. addAct i onLi st ener ( new Act i onLi st ener ( ) {
83 publ i c voi d act i onPer f or med( Act i onEvent ae) {
84 t r y {
85
86
87
88 whi l e ( model Dat a. get RowCount ( ) >0) {
89 model Dat a. r emoveRow( 0) ;
90 }
91
92 whi l e ( model Cal c. get RowCount ( ) >0) {
93 model Cal c. r emoveRow( 0) ;
94 }
95
96 whi l e ( model Cal cResul t . get RowCount ( ) >0) {
97 model Cal cResul t . r emoveRow( 0) ;
98 }
99
100 t askAr ea. set Text ( " " ) ;
101 gant t Ar ea. set Text ( " " ) ;
102
103 get I nput Dat a( ) ;
104 out put I nput Dat a( ) ;
105
106 bubbl e( ) ;
107 copyBur st Ti me( ) ;
108 pr ocessI nput Dat a( ) ;
109 out put pr ocess( ) ;
110 comput eAver age( ) ;
111 gener at eTaskPr ocess( ) ;
112 di spl ayTabl e( ) ;
113
114 } cat ch( Except i on e) {
115 r et ur n;
116 }
117 }
118 }) ;
119
120 }
121
122
123
124 publ i c st at i c voi d mai n( St r i ng ar gs[ ] ) {
125 t r y {
126 UI Manager . set LookAndFeel ( UI Manager . get Syst emLookAndFeel Cl assName( ) ) ;
127 } cat ch ( Except i on e) { }
128
129 PPSchedul i ng pps = new PPSchedul i ng( ) ;
130
131 i nt wi dt h = 500;
132 i nt hei ght = 450;
133 Di mensi on scr een = Tool ki t . get Def aul t Tool ki t ( ) . get Scr eenSi ze( ) ;
134 i nt x = ( scr een. wi dt h- wi dt h) / 2;
135 i nt y = ( scr een. hei ght - hei ght ) / 2;
136
137 pps. set Bounds( x, y, wi dt h, hei ght ) ;
138 pps. set Ti t l e( " Pr e- empt i ve Pr i or i t y Schedul i ng Al gor i t hm" ) ;
139 pps. set Def aul t Cl oseOper at i on( EXI T_ON_CLOSE ) ;
140 pps. set Vi si bl e( t r ue) ;
141
142
143 }
144
145 publ i c st at i c voi d get I nput Dat a( ) {
146
147 St r i ng par seVal ue = " " ;
148 par seVal ue = J Opt i onPane. showI nput Di al og( nul l , " Ent er Number of Pr ocess( es) ?"
149
150 i f ( par seVal ue. equal sI gnor eCase( " " ) ) {
151 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ;
152 } el se {
153 l engt h = I nt eger . par seI nt ( par seVal ue) ;
154 }
PPSchedul i ng. j ava 13/ Dec/ 2010
3 of 7
155
156
157
158 f or ( i nt x=0; x<l engt h; x++) {
159 pr ocessName[ x] = x;
160
161 St r i ng par sePr ocess, par seAr i al Ti me, par sePr i or i t y;
162
163 par sePr ocess = J Opt i onPane. showI nput Di al og( nul l , " Bur st Ti me f or Pr ocess
+ ( x + 1) ) ;
164
165 i f ( par sePr ocess. equal sI gnor eCase( " " ) ) {
166 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ;
167 r et ur n;
168 } el se {
169 bur st Ti me[ x] = I nt eger . par seI nt ( par sePr ocess) ;
170 }
171
172 par seAr i al Ti me = J Opt i onPane. showI nput Di al og( nul l , " Ar r i val Ti me f or Pr oc
" + ( x + 1) ) ;
173
174 i f ( par seAr i al Ti me. equal sI gnor eCase( " " ) ) {
175 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ;
176 r et ur n;
177 } el se {
178 ar r i val Ti me[ x] = I nt eger . par seI nt ( par seAr i al Ti me) ;
179 }
180
181 par sePr i or i t y = J Opt i onPane. showI nput Di al og( nul l , " Pr i or i t y f or Pr ocess "
+ ( x + 1) ) ;
182
183 i f ( par sePr i or i t y. equal sI gnor eCase( " " ) ) {
184 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ;
185 r et ur n;
186 } el se {
187 pr i or i t y[ x] = I nt eger . par seI nt ( par sePr i or i t y) ;
188 }
189
190 f i ni shed[ x] = f al se;
191 }
192
193
194
195 }
196
197 publ i c st at i c voi d gener at eTaskPr ocess( ) {
198 i nt i ;
199 i nt cur r ent Pr i or i t y;
200 i nt cur r ent Pr ocess;
201 bool ean sel ect ed=f al se;
202
203 t ot al Ti me=0;
204 t i me=1;
205
206
207 f or ( i =0; i <=l engt h- 1; i ++) {
208 t ot al Ti me=t ot al Ti me+bur st Ti me[ i ] ;
209 }
210
211 t ot al Ti me++;
212
213
214 cur r ent Pr ocess=0;
215 cur r ent Pr i or i t y=pr i or i t y[ 0] ;
216
217 i nt cnt = 0;
218 whi l e ( t i me<t ot al Ti me) {
219 sel ect ed=f al se;
220
221
222 f or ( i =0; i <=l engt h- 1; i ++) {
223
224 i f ( ( t i me==ar r i val Ti me[ i ] ) && ( f i ni shed[ i ] ==f al se) ) {
225 i f ( cur r ent Pr i or i t y>pr i or i t y[ i ] ) {
226 cur r ent Pr i or i t y=pr i or i t y[ i ] ;
227 cur r ent Pr ocess=i ;
228 sel ect ed=t r ue;
PPSchedul i ng. j ava 13/ Dec/ 2010
4 of 7
229 } el se {
230
231 i f
( ( cur r ent Pr i or i t y==pr i or i t y[ i ] ) &&( bur st Ti me[ i ] <bur st Ti me[ cur r ent Pr ocess] ) ) {
232 cur r ent Pr ocess=i ;
233 cur r ent Pr i or i t y=pr i or i t y[ i ] ;
234 sel ect ed=t r ue;
235 }
236 }
237 } el se {
238
239 i f
( ( t i me>ar r i val Ti me[ i ] ) &&( cur r ent Pr i or i t y>pr i or i t y[ i ] ) &&( f i ni shed[ i ] ==f al se) ) {
240 cur r ent Pr i or i t y=pr i or i t y[ i ] ;
241 cur r ent Pr ocess=i ;
242 sel ect ed=t r ue;
243 }
244 }
245
246 i f ( sel ect ed==t r ue) {
247 br eak;
248 }
249 }
250
251 t ask[ t i me] =pr ocessName[ cur r ent Pr ocess] ;
252 bur st Ti me[ cur r ent Pr ocess] =bur st Ti me[ cur r ent Pr ocess] - 1;
253
254
255
256 Obj ect [ ] r owDat a3 = {t i me, t ask[ t i me] , cur r ent Pr i or i t y};
257 model Cal cResul t . i nser t Row( cnt , r owDat a3) ;
258 cnt ++;
259 t i me++;
260
261
262 i f ( bur st Ti me[ cur r ent Pr ocess] ==0) {
263 f i ni shed[ cur r ent Pr ocess] =t r ue;
264 f or ( i =0; i <=l engt h- 1; i ++) {
265 i f ( f i ni shed[ i ] ==f al se)
266 {
267 cur r ent Pr ocess=i ;
268 cur r ent Pr i or i t y=pr i or i t y[ cur r ent Pr ocess] ;
269 br eak;
270 }
271 }
272 }
273
274 }
275 }
276
277 publ i c st at i c voi d di spl ayTabl e( ) {
278 i nt l i neCount =0;
279 i nt i =1, t empi =1;
280
281
282 whi l e ( i <t ot al Ti me) {
283
284 gant t Ar ea. append( " Ti me : " ) ;
285 f or ( l i neCount =0; l i neCount <=10; l i neCount ++)
286 {
287 i f ( t empi <10)
288 gant t Ar ea. append( " | - 0" +t empi +" - | " ) ;
289 el se
290 gant t Ar ea. append( " | - " +t empi +" - | " ) ;
291 t empi ++;
292 }
293
294 gant t Ar ea. append( " \ nPr ocess : " ) ;
295 f or ( l i neCount =0; l i neCount <=10; l i neCount ++)
296 {
297 i f ( t ask[ i ] <10)
298 gant t Ar ea. append( " | P0" +t ask[ i ] +" - | " ) ;
299 el se
300 gant t Ar ea. append( " | P" +t ask[ i ] +" - | " ) ;
301
302 i ++;
303
PPSchedul i ng. j ava 13/ Dec/ 2010
5 of 7
304 i f ( i ==t ot al Ti me)
305 br eak;
306 }
307 gant t Ar ea. append( " \ n\ n" ) ;
308 }
309 }
310
311 publ i c st at i c voi d out put I nput Dat a( ) {
312 f or ( i nt x=0; x<l engt h; x++) {
313
314 Obj ect [ ] r owDat a = {pr ocessName[ x] + 1, bur st Ti me[ x] , ar r i val Ti me[ x] ,
pr i or i t y[ x] };
315 model Dat a. i nser t Row( x, r owDat a) ;
316
317
318 }
319 }
320
321 publ i c st at i c voi d copyBur st Ti me( ) {
322 f or ( i nt x=0; x<l engt h; x++) {
323 t empbur st t i me[ x] =bur st Ti me[ x] ;
324 }
325 }
326
327 st at i c voi d pr ocessI nput Dat a( ) {
328 i nt s=0;
329
330 whi l e( f i ni sh! =l engt h) {
331 do {
332
333 f or ( i nt x=0; x<l engt h; x++) {
334
335 s=0;
336 i f ( ( ar r i val Ti me[ x] <=t i me) &&( t empbur st t i me[ x] ! =0) ) {
337 t i me=t i me+1;
338 t empbur st t i me[ x] =t empbur st t i me[ x] - 1;
339 t t i me[ x] =t i me;
340
341 i f ( t empbur st t i me[ x] ==0) {
342 f i ni sh=f i ni sh+1;
343 }
344
345 s = 1;
346
347 }
348
349 i f ( s==1) {
350 whi l e ( x! =l engt h) {
351 x++;
352 }
353 }
354 }
355
356 } whi l e( s==1) ;
357 t i me=t i me+1;
358 }
359 }
360
361 publ i c st at i c voi d t cout i nput ( ) {
362 Syst em. out . pr i nt ( " - - PROCESS| - - BURSTTI ME| - - ARRI VAL TI ME| - - PRI ORI TY| \ n" ) ;
363 f or ( i nt x=0; x<l engt h; x++) {
364 Syst em. out . pr i nt ( " " +pr ocessName[ x] +" | " +" " +bur st Ti me[ x] +" | " )
365 Syst em. out . pr i nt ( " " +ar r i val Ti me[ x] +" | " ) ;
366 Syst em. out . pr i nt ( " " +pr i or i t y[ x] +" | " ) ;
367 Syst em. out . pr i nt ( " \ n" ) ;
368
369 }
370
371 }
372
373 publ i c st at i c voi d out put pr ocess( ) {
374 f or ( i nt x=0; x<l engt h; x++) {
375 Obj ect [ ] r owDat a2 = {pr ocessName[ x] +
1, ( t t i me[ x] - ar r i val Ti me[ x] ) , ( t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] ) };
376 model Cal c. i nser t Row( x, r owDat a2) ;
377
378 }
PPSchedul i ng. j ava 13/ Dec/ 2010
6 of 7
379 }
380
381 publ i c st at i c voi d bubbl e( ) {
382 i nt i , j ;
383 f or ( i =0; i <l engt h; i ++) {
384 f or ( j =0; j <( l engt h- 1- i ) ; j ++)
385 {
386 i f ( pr i or i t y[ j +1] <pr i or i t y[ j ] ) {
387 swap( j +1, j ) ;
388 }
389 }
390 }
391 }
392
393 publ i c st at i c voi d swap( i nt x, i nt y) {
394 i nt t emp, t emp2;
395 i nt [ ] t emp3 = new i nt [ 100] ;
396 i nt t emp4;
397
398 t emp=bur st Ti me[ x] ;
399 t emp2=pr i or i t y[ x] ;
400 t emp3[ x] =pr ocessName[ x] ;
401 t emp4=ar r i val Ti me[ x] ;
402
403 / / t r ansf er
404 bur st Ti me[ x] =bur st Ti me[ y] ;
405 pr i or i t y[ x] =pr i or i t y[ y] ;
406 pr ocessName[ x] =pr ocessName[ y] ;
407 ar r i val Ti me[ x] =ar r i val Ti me[ y] ;
408
409 / / get f r omt emp
410 bur st Ti me[ y] =t emp;
411 pr i or i t y[ y] =t emp2;
412 pr ocessName[ y] =t emp3[ x] ;
413 ar r i val Ti me[ y] =t emp4;
414 }
415
416 publ i c st at i c voi d comput eAver age( ) {
417 i nt t ot al t t =0, t ot al wt =0;
418 i nt x, t i me=0;
419
420 f or ( x=0; x<l engt h; x++) {
421 t ot al t t =t ot al t t +t t i me[ x] - ar r i val Ti me[ x] ;
422 t ot al wt =t ot al wt +t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] ;
423 }
424
425 t askAr ea. append( " Aver age Tur n Ar ound Ti me - [ " ) ;
426 f or ( x=0; x<l engt h; x++) {
427 i f ( x! =l engt h- 1) {
428 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] ) + " +" ) ;
429
430 } el se {
431 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] ) ) ;
432
433 }
434 }
435
436 t askAr ea. append( " ] / " +l engt h) ;
437 t askAr ea. append( " = " +t ot al t t / ( f l oat ) l engt h+" " ) ;
438 t askAr ea. append( " \ n" ) ;
439 t askAr ea. append( " Aver age Wai t i ng Ti me - " ) ;
440 t askAr ea. append( " [ " ) ;
441
442
443
444 f or ( x=0; x<l engt h; x++) {
445
446 i f ( x! =l engt h- 1)
447 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] + " +" ) ) ;
448 el se
449 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] ) ) ;
450 }
451
452
453 t askAr ea. append( " ] / " +l engt h) ;
454 t askAr ea. append( " = " +( t ot al wt / ( f l oat ) l engt h) +" \ n" ) ;
455 }
PPSchedul i ng. j ava 13/ Dec/ 2010
7 of 7
456
457 }

You might also like