Example #1
0
        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);
        }
Example #2
0
 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);
 }
Example #3
0
 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);
 }