C # Custom Calendar System - Советы по дизайну - PullRequest
0 голосов
/ 22 ноября 2018

В 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);
        }
    }

Он действительно грязный и ограниченный.Как лучше всего создавать экземпляры, которые выходят далеко в будущее, отвечают на вновь созданные еженедельные уроки и являются постоянными?Просто некоторые общие советы будут очень полезны.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...