我一直在尝试使考试监考员分配程序受到限制。我一直遇到的问题是我无法检查列表中同时分配考试者的所有作业。至于下面的代码,我可以检查教师和他们的时间约束。总体而言,我正在为考试计划寻找4个限制条件。但是我只能用循环使两个。 还有一种我想创建的更好的方法吗?我试过数组,但有同样的问题。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import Nesneler.Atama;
import Nesneler.Gozetmen;
import Nesneler.GozetmenSuresi;
import Nesneler.Gun;
import Nesneler.Kisit1;
import Nesneler.Saat;
import Nesneler.Sinav;
import Nesneler.Zaman;
public class Dagitici {
List <Sinav> sinavlar = new ArrayList<Sinav> ();
List <Gun> gunler = new ArrayList<Gun> ();
List <Saat> saatler = new ArrayList<Saat> ();
List <Zaman> zamanlar = new ArrayList<Zaman> ();
List <Gozetmen> gozetmenler = new ArrayList<Gozetmen>();
List <Kisit1> kisitlar1 = new ArrayList<Kisit1> ();
List<Atama> atamalar = new ArrayList<Atama> ();
List<GozetmenSuresi> gs = new ArrayList<GozetmenSuresi> ();
public void kur() {
gunler.add(new Gun("Pazartesi"));
gunler.add(new Gun("Salı"));
gunler.add(new Gun("Çarşamba"));
gunler.add(new Gun("Perşembe"));
gunler.add(new Gun("Cuma"));
saatler.add(new Saat(10, 00));
saatler.add(new Saat(11, 00));
saatler.add(new Saat(12, 00));
saatler.add(new Saat(13, 00));
saatler.add(new Saat(14, 00));
saatler.add(new Saat(15, 00));
saatler.add(new Saat(16, 00));
saatler.add(new Saat(17, 00));
saatler.add(new Saat(18, 00));
zamanlar.add(new Zaman(1));
zamanlar.add(new Zaman(2));
zamanlar.add(new Zaman(3));
zamanlar.add(new Zaman(4));
sinavlar.add(new Sinav("MAT 101",zamanlar.get(0),90,gunler.get(0),saatler.get(0)));
sinavlar.add(new Sinav("EKON 101",zamanlar.get(1),90,gunler.get(0),saatler.get(3)));
sinavlar.add(new Sinav("ENG 143",zamanlar.get(2),60,gunler.get(1),saatler.get(5)));
sinavlar.add(new Sinav("TBY 101",zamanlar.get(3),60,gunler.get(1),saatler.get(7)));
sinavlar.add(new Sinav("İŞLE 102",zamanlar.get(0),75,gunler.get(2),saatler.get(1)));
sinavlar.add(new Sinav("BUST 104",zamanlar.get(2),90,gunler.get(2),saatler.get(5)));
kisitlar1.add(new Kisit1(gunler.get(0),zamanlar.get(0))); //0
kisitlar1.add(new Kisit1(gunler.get(0),zamanlar.get(1))); //1
kisitlar1.add(new Kisit1(gunler.get(0), zamanlar.get(2))); //2
kisitlar1.add(new Kisit1(gunler.get(0),zamanlar.get(3))); //3
kisitlar1.add(new Kisit1(gunler.get(1),zamanlar.get(0))); //4
kisitlar1.add(new Kisit1(gunler.get(1),zamanlar.get(1))); //5
kisitlar1.add(new Kisit1(gunler.get(1), zamanlar.get(2))); //6
kisitlar1.add(new Kisit1(gunler.get(1),zamanlar.get(3))); //7
kisitlar1.add(new Kisit1(gunler.get(2),zamanlar.get(0))); //8
kisitlar1.add(new Kisit1(gunler.get(2),zamanlar.get(1))); //9
kisitlar1.add(new Kisit1(gunler.get(2), zamanlar.get(2))); //10
kisitlar1.add(new Kisit1(gunler.get(2),zamanlar.get(3))); //11
kisitlar1.add(new Kisit1(gunler.get(3),zamanlar.get(0))); //12
kisitlar1.add(new Kisit1(gunler.get(3),zamanlar.get(1))); //13
kisitlar1.add(new Kisit1(gunler.get(3), zamanlar.get(2))); //14
kisitlar1.add(new Kisit1(gunler.get(3),zamanlar.get(3))); //15
kisitlar1.add(new Kisit1(gunler.get(4),zamanlar.get(0))); //16
kisitlar1.add(new Kisit1(gunler.get(4),zamanlar.get(1))); //17
kisitlar1.add(new Kisit1(gunler.get(4), zamanlar.get(2))); //18
kisitlar1.add(new Kisit1(gunler.get(4),zamanlar.get(3))); //19
gozetmenler.add(new Gozetmen("Murat",kisitlar1.get(8)));
gozetmenler.add(new Gozetmen("Can",kisitlar1.get(3)));
}
public void programYazdir() {
for(int i=0; i<sinavlar.size();i++) {
System.out.println(sinavlar.get(i).getSinav() +" " + sinavlar.get(i).getZaman().getZaman()+ " " + sinavlar.get(i).getSinavSuresi() + " " + sinavlar.get(i).getGun().getGun() + " " + sinavlar.get(i).getSaat().getH()+":"+ sinavlar.get(i).getSaat().getM());
}
for(int i=0; i<atamalar.size() ;i++) {
System.out.println("Gözetmen: " + atamalar.get(i).getGozetmen().getGozetmen() + " \n Sınav: " + atamalar.get(i).getSinav().getSinav());
}
for(int i=0; i<gs.size(); i++) {
System.out.println("Gözetmen: " + gs.get(i).getGozetmen().getGozetmen() + " \n Toplam Süresi: " + gs.get(i).getGozetmenSuresi());
}
}
public void ata() {
int goz = 0;
int counter = 0;
for(int i=0; i < sinavlar.size();i++) {
atamalar.add(new Atama(gozetmenler.get(goz), sinavlar.get(i)));
counter += sinavlar.get(i).getSinavSuresi();
if(gozetmenler.get(goz).getKisit1().getGun().getGun().equals(sinavlar.get(i).getGun().getGun())) { // Kısıt1 Gün
if(gozetmenler.get(goz).getKisit1().getZaman().equals(sinavlar.get(i).getZaman())) { // Kısıt1 Zaman
gs.add(new GozetmenSuresi(gozetmenler.get(goz),counter));
goz++;
counter = 0;
}
}
}
gs.add(new GozetmenSuresi(gozetmenler.get(goz),counter));
counter=0;
}
public void dagit() {
kur();
Collections.shuffle(sinavlar);
ata();
programYazdir() ;
}
public static void main(String[]args) {
Dagitici d = new Dagitici();
d.dagit();
}
}
示例类
package Nesneler;
public class Sinav {
String sinav;
Gun gun;
Saat saat;
Zaman zaman;
int sinavSuresi;
public Sinav(String sinav,Zaman zaman,int sinavSuresi,Gun gun,Saat saat) {
this.sinav=sinav;
this.zaman=zaman;
this.sinavSuresi=sinavSuresi;
this.gun=gun;
this.saat=saat;
}
public String getSinav() {
return sinav;
}
public Gun getGun() {
return gun;
}
public Saat getSaat() {
return saat;
}
public Zaman getZaman() {
return zaman;
}
public int getSinavSuresi() {
return sinavSuresi;
}
@Override
public String toString() {
return "Sınav: " + sinav + " Zaman: " + zaman.getZaman() + " Sınav süresi: " + sinavSuresi + " Gun: " + gun.getGun() + " Saat: " + saat.getH();
}
}