本文整理汇总了C#中ISchedule.GetClassPosition方法的典型用法代码示例。如果您正苦于以下问题:C# ISchedule.GetClassPosition方法的具体用法?C# ISchedule.GetClassPosition怎么用?C# ISchedule.GetClassPosition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISchedule
的用法示例。
在下文中一共展示了ISchedule.GetClassPosition方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LotOfClassesInDay
public static bool LotOfClassesInDay(int maxCountClassesInDay, StudentsClass[,] sClasses, ISchedule schedule, StudentsClass specialClass)
{
int rowClass = -1;
int dayOfSpecialClass = Constants.GetDayOfClass(schedule.GetClassPosition(specialClass).Value.Time);
//если пара есть в списке "особых пар" - получаю номер строки, в которой располагаются другие "особые" пары
if ((rowClass = GetRow(sClasses, specialClass)) != -1)
{
int dayCount = 0; //количество "особых" пар из полученной строки, поставленных в данный день
for (int classIndex = 0; classIndex < sClasses.GetLength(1); classIndex++)
{
if (sClasses[rowClass, classIndex] == null)
continue;
StudentsClassPosition? position = schedule.GetClassPosition(sClasses[rowClass, classIndex]);
if (position.HasValue)//если пара установлена
{
if (dayOfSpecialClass == Constants.GetDayOfClass(position.Value.Time))
dayCount++;
if (dayCount > maxCountClassesInDay)
{
return true;
}
}
}
}
return false;
}
示例2: ClassesAtSameTime
public static bool ClassesAtSameTime(StudentsClass c1, StudentsClass c2, ISchedule schedule)
{
StudentsClassPosition? firstClassPosition = schedule.GetClassPosition(c1);
StudentsClassPosition? secondClassPosition = schedule.GetClassPosition(c2);
if (firstClassPosition.HasValue && secondClassPosition.HasValue)
{
if (firstClassPosition.Value.Time > secondClassPosition.Value.Time)
{
if (secondClassPosition.Value.Time + Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK
!= firstClassPosition.Value.Time)
{
return false;
}
}
else if (secondClassPosition.Value.Time > firstClassPosition.Value.Time)
{
if (firstClassPosition.Value.Time + Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK
!= secondClassPosition.Value.Time)
{
return false;
}
}
}
return true;
}
示例3: LotOfClassesInWeek
public static bool LotOfClassesInWeek(int maxCountClassesInWeek, StudentsClass[,] sClasses, ISchedule schedule, StudentsClass specialClass)
{
int rowClass = -1;
//если пара есть в списке "особых пар" - получаю номер строки, в которой располагаются другие "особые" пары
if ((rowClass = GetRow(sClasses, specialClass)) != -1)
{
int weekCount1 = 0; //количество "особых" пар из полученной строки, поставленных на первую неделю
int weekCount2 = 0; //количество "особых" пар из полученной строки, поставленных на вторую неделю
for (int classIndex = 0; classIndex < sClasses.GetLength(1); classIndex++)
{
if (sClasses[rowClass, classIndex] == null)
continue;
StudentsClassPosition? position = schedule.GetClassPosition(sClasses[rowClass, classIndex]);
if (position.HasValue)//если пара установлена
{
if (Constants.GetWeekOfClass(position.Value.Time) == 0)//если пара располагается на первой неделе
weekCount1++;
else//на второй
weekCount2++;
}
}
if (weekCount1 > maxCountClassesInWeek || weekCount2 > maxCountClassesInWeek)
{
return true;
}
}
return false;
}
示例4: GetFineOfFullSchedule
public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
{
int fineResult = 0;
for (int groupIndex = 0; groupIndex < eStorage.StudentSubGroups.Length; groupIndex++)
{
PartialSchedule groupSchedule = schedule.GetPartialSchedule(eStorage.StudentSubGroups[groupIndex]);
for (int dayIndex = 0; dayIndex < Constants.DAYS_IN_WEEK; dayIndex++)
{
StudentsClass[] sClass = groupSchedule.GetClassesOfDay(dayIndex);
for (int classIndex = 0; classIndex < sClass.Length; classIndex++)
{
if (sClasses.FindAll((c) => c.sClass == sClass[classIndex]).Count() > 0)
{
FixedClasses vipClass = sClasses.Find((c) => c.sClass == sClass[classIndex]);
if (vipClass.Room != schedule.GetClassRoom(sClass[classIndex]) && vipClass.Time != schedule.GetClassPosition(sClass[classIndex]).Value.Time)
{
if (isBlock)
return Constants.BLOCK_FINE;
else
fineResult += fine;
}
}
}
}
}
return fineResult;
}
示例5: GetFineOfAddedClass
public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
{
int fineResult = 0;
StudentsClass tClass = schedule.GetTempClass();
int tTime = schedule.GetClassPosition(tClass).Value.Time;
if (sClasses.FindAll((c) => c.sClass == tClass).Count() > 0)
{
FixedClasses vipClass = sClasses.Find((c) => c.sClass == tClass);
if (vipClass.Room != schedule.GetClassRoom(tClass) || vipClass.Time != tTime)
{
if (isBlock)
return Constants.BLOCK_FINE;
else
fineResult += fine;
}
}
else
{
if (sClasses.FindAll((c) => c.Time == tTime && StudentsClass.StudentClassContainsEvenOneSubGroup(tClass, c.sClass)).Count() > 0)
{
if (isBlock)
return Constants.BLOCK_FINE;
else
fineResult += fine;
}
}
return fineResult;
}
示例6: GetFineOfFullSchedule
public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
{
int fineResult = 0;
foreach (StudentSubGroup subGroup in eStorage.StudentSubGroups)
{
for (int dayIndex = 0; dayIndex < Constants.DAYS_IN_WEEK; dayIndex++)
{
StudentsClass[] subGroupDay = schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayIndex);
for (int classIndex = 0; classIndex < subGroupDay.Length; classIndex++)
{
if (Array.Find<StudentsClass>(sClassesList.ToArray(), (c) => c == subGroupDay[classIndex]) != null)
{
StudentsClassPosition? firstClassPosition = schedule.GetClassPosition(subGroupDay[classIndex]);
StudentsClass secondClass = schedule.GetClassByRoomAndPosition(firstClassPosition.Value.ClassRoom,
firstClassPosition.Value.Time + Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK);
if (secondClass != null)
{
int firstClassRow = ClassesInWeek.GetRow(sClasses, subGroupDay[classIndex]);
int secondClassRow = ClassesInWeek.GetRow(sClasses, secondClass);
if (secondClassRow == -1 || secondClassRow != firstClassRow)
{
if (isBlock)
return Constants.BLOCK_FINE;
else
fineResult += fine;
}
}
}
}
}
}
return fineResult;
}
示例7: GetFineOfAddedClass
public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
{
int fineResult = 0;
StudentsClass tempClass = schedule.GetTempClass();
int classTime = schedule.GetTimeOfTempClass();
int roomIndex = schedule.GetClassPosition(schedule.GetTempClass()).Value.ClassRoom;
int weekOfClass = Constants.GetWeekOfClass(classTime);
if (Array.Find(sClassesList.ToArray(), (c) => c == schedule.GetTempClass()) != null)
{
StudentsClass secondClass;
if (weekOfClass == 0)
secondClass = schedule.GetClassByRoomAndPosition(roomIndex, classTime + Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK);
else
secondClass = schedule.GetClassByRoomAndPosition(roomIndex, classTime - Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK);
if (secondClass != null)
{
int firstClassRow = ClassesInWeek.GetRow(sClasses, tempClass);
int secondClassRow = ClassesInWeek.GetRow(sClasses, secondClass);
if (secondClassRow == -1 || secondClassRow != firstClassRow)
{
if (isBlock)
return Constants.BLOCK_FINE;
else
fineResult += fine;
}
}
}
return fineResult;
}
示例8: ClassesHasSameRoom
public static bool ClassesHasSameRoom(ISchedule schedule, int classRow, StudentsClass[,] sClasses)
{
StudentsClassPosition? firstClassPosition = schedule.GetClassPosition(sClasses[classRow, 0]);
StudentsClassPosition? secondClassPosition = schedule.GetClassPosition(sClasses[classRow, 1]);
if (firstClassPosition.HasValue && secondClassPosition.HasValue)
{
if (firstClassPosition.Value.ClassRoom != secondClassPosition.Value.ClassRoom)
{
return false;
}
}
return true;
}
示例9: PairClassesAtSameTimeInSameRoom
public static bool PairClassesAtSameTimeInSameRoom(ISchedule schedule, StudentsClass[,] sClasses, List<StudentsClass> sClassesList, StudentsClass firstClass)
{
StudentsClassPosition? firstClassPosition = schedule.GetClassPosition(firstClass);
int weekOfClass = Constants.GetWeekOfClass(firstClassPosition.Value.Time);
if (Array.Find(sClassesList.ToArray(), (c) => c == firstClass) != null)
{
int classRow = ClassesInWeek.GetRow(sClasses, firstClass);
int firstClassCol = ClassesInWeek.GetColumn(sClasses, firstClass);
int secondClassCol = -1;
switch (firstClassCol)
{
case 0:
secondClassCol = 1;
break;
case 1:
secondClassCol = 0;
break;
default:
break;
}
StudentsClass secondClass = sClasses[classRow, secondClassCol];
StudentsClassPosition? secondClassPosition = schedule.GetClassPosition(secondClass);
int probablySecondClassTime;
if (weekOfClass == 0)
probablySecondClassTime = firstClassPosition.Value.Time + Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK;
else
probablySecondClassTime = firstClassPosition.Value.Time - Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK;
if (secondClassPosition.HasValue)
{
if (probablySecondClassTime == secondClassPosition.Value.Time)
{
if (firstClassPosition.Value.ClassRoom != secondClassPosition.Value.ClassRoom)
{
return false;
}
}
}
else
{
secondClass = schedule.GetClassByRoomAndPosition(firstClassPosition.Value.ClassRoom, probablySecondClassTime);
if (secondClass != null)
{
return false;
}
}
}
return true;
}