В C # я делаю календарь, используя календарь, используя инструмент MonthCalendar.Я разработал объекты, которые служат еженедельными уроками (встречами), и в этих уроках есть список имен, которые можно пометить как присутствующие или отсутствующие.
Теперь моя проблема заключается в том, как создавать экземплярывстречи по всему календарю эффективно и правильно?
Когда календарь открывается впервые, я использую этот код для тестирования:
public Schedule(BindingList<Lesson> lessons, BindingList<Student> students)
{
InitializeComponent();
LoadData();
allLessons = lessons;
allStudents = students;
CreateInstances();
}
//this needs to be massively reworked into efficient loops to check for duplicates after saving/loading is implemented
public void CreateInstances()
{
foreach (Lesson l in allLessons)
{
DateTime date = new DateTime();
date = DateTime.Now;
while (date.DayOfWeek.ToString() != l.Day)
{
date = date.AddDays(1);
}
List<Student> absent = new List<Student>();
List<Student> attend = new List<Student>();
foreach (Student s in l.Members)
{
attend.Add(s);
}
i1 = new LessonInstance(allInstances.Count + 1, l.Lvl, l.Day, l.Hour, l.Minute, date, l.Teacher, l.Room, l.Members, attend, absent);
bool exists = false;
foreach (LessonInstance p in allInstances)
{
if (p.LessonTime.Day == i1.LessonTime.Day && p.ID == i1.ID)
{
exists = true;
}
}
if (!exists)
{
allInstances.Add(i1);
}
date = date.AddDays(7);
List<Student> absent2 = new List<Student>();
List<Student> attend2 = new List<Student>();
foreach (Student s in l.Members)
{
attend2.Add(s);
}
i2 = new LessonInstance(allInstances.Count + 1, l.Lvl, l.Day, l.Hour, l.Minute, date, l.Teacher, l.Room, l.Members, attend2, absent2);
allInstances.Add(i2);
date = date.AddDays(7);
List<Student> absent3 = new List<Student>();
List<Student> attend3 = new List<Student>();
foreach (Student s in l.Members)
{
attend3.Add(s);
}
i3 = new LessonInstance(allInstances.Count + 1, l.Lvl, l.Day, l.Hour, l.Minute, date, l.Teacher, l.Room, l.Members, attend3, absent3);
allInstances.Add(i3);
date = date.AddDays(7);
List<Student> absent4 = new List<Student>();
List<Student> attend4 = new List<Student>();
foreach (Student s in l.Members)
{
attend4.Add(s);
}
LessonInstance i4 = new LessonInstance(allInstances.Count + 1, l.Lvl, l.Day, l.Hour, l.Minute, date, l.Teacher, l.Room, l.Members, attend4, absent4);
allInstances.Add(i4);
}
}
Он действительно грязный и ограниченный.Как лучше всего создавать экземпляры, которые выходят далеко в будущее, отвечают на вновь созданные еженедельные уроки и являются постоянными?Просто некоторые общие советы будут очень полезны.Заранее спасибо.