private static void RoomArrangementForOneGroup(int GroupIndex, List <Room> RoomList) { int StudentsNumber = StudentByGroup[Groups[GroupIndex]].Count; if (StudentsNumber > MaxContaint) { AlgorithmRunner.SaveOBJ("Status", "err Phòng thi không đủ, đang dừng lại ở nhóm thi: " + Groups[GroupIndex] + " với số sinh viên là:" + StudentsNumber); AlgorithmRunner.IsBusy = false; Thread.CurrentThread.Abort(); } GroupsRoom[GroupIndex] = new List <Room>(); int OldRoomUsedIndex = RoomUsedIndex; while (StudentsNumber > 0) { RoomUsedIndex++; if (RoomUsedIndex < RoomList.Count) // còn phòng { GroupsRoom[GroupIndex].Add(RoomList[RoomUsedIndex]); StudentsNumber -= RoomList[RoomUsedIndex].Container; // đáng lẽ code phân trực tiếp sv vào phòng ở đây, nhưng như vậy phòng ít phòng nhiều // để đó sau này truy vấn lại môn này thi mấy phòng rồi chia sau! } } MakeStudentList(GroupIndex); }
public static void Run() { InitGroup(); GetStudentList(); Arrangement(); AlgorithmRunner.SaveOBJ("GroupsTimePri", RoomPriority.GroupsTime); AlgorithmRunner.SaveOBJ("GroupsRoomPri", RoomPriority.GroupsRoom); AlgorithmRunner.SaveOBJ("GroupsRoomStudentsPri", RoomPriority.GroupsRoomStudents); UpdateShiftsAndRooms(); AlgorithmRunner.SaveOBJ("AppShifts", InputHelper.Shifts); AlgorithmRunner.SaveOBJ("AppRooms", InputHelper.Rooms); }
private static void UpdateShiftsAndRooms() { for (int Index = 0; Index < GroupsTime.Length; Index++) { int ShiftIndex = InputHelper.Shifts.FindIndex(m => m.Time == GroupsTime[Index]); InputHelper.Shifts[ShiftIndex].IsBusy = true; int RoomListIndex = InputHelper.Rooms.FindIndex(m => m.Time == GroupsTime[Index]); foreach (Room aRoom in GroupsRoom[Index]) { int RoomIndex = InputHelper.Rooms[RoomListIndex].Rooms.FindIndex(m => m.RoomID == aRoom.RoomID); InputHelper.Rooms[RoomListIndex].Rooms[RoomIndex].IsBusy = true; } } AlgorithmRunner.SaveOBJ("Rooms", InputHelper.Rooms); }