コード例 #1
0
ファイル: GroupClasses.cs プロジェクト: Kirk7by/mandarin
        //группировка пар, если пара встречается только четыре раза за две недели
        public static StudentsClass[,] GetGroupFourSameClasses(StudentsClass[] classes)
        {
            List<StudentClassQuad> quadsClasses = new List<StudentClassQuad>();
            List<StudentsClass> classesList = classes.ToList();
            foreach (StudentsClass sClass in classesList)
            {
                if (quadsClasses.FindAll((pc) => pc.c1 == sClass || pc.c2 == sClass || pc.c3 == sClass || pc.c4 == sClass).Count == 0)
                {
                    if (classesList.FindAll(c => StudentsClass.StudentClassEquals(c, sClass) && c != sClass).Count > 3)
                    {
                        //пара встречается больше четырех раз за две недели
                        continue;
                    }
                    StudentsClass secondClass = classesList.Find(c => StudentsClass.StudentClassEquals(c, sClass) && c != sClass);
                    StudentsClass thirdClass = classesList.Find(c => StudentsClass.StudentClassEquals(c, sClass) && c != sClass && c != secondClass);
                    StudentsClass fourthClass = classesList.Find(c => StudentsClass.StudentClassEquals(c, sClass) && c != sClass && c != secondClass && c != thirdClass);
                    if (secondClass != null && thirdClass != null && fourthClass != null)
                    {
                        quadsClasses.Add(new StudentClassQuad(sClass, secondClass, thirdClass, fourthClass));
                    }
                }
            }
            StudentsClass[,] quadsClassesArray = new StudentsClass[quadsClasses.Count, 4];
            for (int pairClassesIndex = 0; pairClassesIndex < quadsClasses.Count; pairClassesIndex++)
            {
                quadsClassesArray[pairClassesIndex, 0] = quadsClasses[pairClassesIndex].c1;
                quadsClassesArray[pairClassesIndex, 1] = quadsClasses[pairClassesIndex].c2;
                quadsClassesArray[pairClassesIndex, 2] = quadsClasses[pairClassesIndex].c3;
                quadsClassesArray[pairClassesIndex, 3] = quadsClasses[pairClassesIndex].c4;
            }

            return quadsClassesArray;
        }
コード例 #2
0
ファイル: ClassesInWeek.cs プロジェクト: Kirk7by/mandarin
 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;
 }
コード例 #3
0
        static void Main(string[] args)
        {
            List <StudentsClass> StudentsList = new List <StudentsClass>();
            string command = string.Empty;

            while (command != "end")
            {
                command = Console.ReadLine();
                if (command == "end")
                {
                    break;
                }
                string[]      splitedinput = command.Split(' ').ToArray();
                string        firsname     = splitedinput[0];
                string        lastname     = splitedinput[1];
                string        age          = splitedinput[2];
                string        tawn         = splitedinput[3];
                StudentsClass students     = new StudentsClass();
                students.firstname = firsname;
                students.lastname  = lastname;
                students.age       = age;
                students.town      = tawn;
                StudentsList.Add(students);
            }
            string lasttawn = Console.ReadLine();
            List <StudentsClass> filteredstudents = StudentsList.Where(x => x.town == lasttawn).ToList();

            foreach (var students in filteredstudents)
            {
                Console.WriteLine($"{students.firstname} {students.lastname} is {students.age} years old.");
            }
        }
コード例 #4
0
ファイル: BeaconBtn.cs プロジェクト: monkey21254/Project
    private void OnMouseDown()
    {
        ++Students.total_student_count;

        try
        {
            if ((Students.total_student_count <= 40) == false)
            {
                throw new Exception("Out of Range error....");
            }
            else
            {
                custom_students = new StudentsClass((GameObject)Resources.Load("Prefabs/Body"));
                custom_students.student_box.transform.parent = gameObject.transform;

                students_list.Add(custom_students);
            }
        }
        catch (Exception e)
        {
            Debug.LogError(e);
        }

        //Debug.Log(StudentsClass.students_name);
    }
コード例 #5
0
ファイル: AdminRepository.cs プロジェクト: DrewBritt/Synapse
        /// <summary>
        /// Removes all students from class attached to classid.
        /// </summary>
        /// <param name="classid">ID of class to remove students from.</param>
        public async Task RemoveStudentsFromClass(int classid)
        {
            var studentsClassesQuery = (from studentsclasses in _context.StudentsClasses
                                        select new
            {
                studentsclasses.ClassId,
                studentsclasses.StudentId
            }).Where(sc => sc.ClassId == classid);

            List <StudentsClass> connectionsToDelete = new List <StudentsClass>();

            foreach (var sc in studentsClassesQuery)
            {
                StudentsClass connection = new StudentsClass()
                {
                    ClassId   = sc.ClassId,
                    StudentId = sc.StudentId
                };

                connectionsToDelete.Add(connection);
            }

            _context.StudentsClasses.RemoveRange(connectionsToDelete);
            await _context.SaveChangesAsync();
        }
コード例 #6
0
ファイル: AdminRepository.cs プロジェクト: DrewBritt/Synapse
        /// <summary>
        /// Removes students from classes attached to teacherid.
        /// </summary>
        /// <param name="teacherid">ID of teacher to get classes of</param>
        /// <returns></returns>
        public async Task RemoveStudentsFromClasses(int teacherid)
        {
            var classesQuery = (from studentclasses in _context.StudentsClasses
                                join classes in _context.Classes on studentclasses.ClassId equals classes.ClassId
                                select new
            {
                studentclasses.StudentId,
                studentclasses.ClassId,
                classes.TeacherId
            }).Where(c => c.TeacherId == teacherid);

            List <StudentsClass> connectionsToDelete = new List <StudentsClass>();

            foreach (var c in classesQuery)
            {
                StudentsClass sc = new StudentsClass()
                {
                    StudentId = c.StudentId,
                    ClassId   = c.ClassId
                };

                connectionsToDelete.Add(sc);
            }

            _context.StudentsClasses.AttachRange(connectionsToDelete);
            _context.StudentsClasses.RemoveRange(connectionsToDelete);
            await _context.SaveChangesAsync();
        }
コード例 #7
0
ファイル: GroupClasses.cs プロジェクト: Kirk7by/mandarin
        //группировка пар, если пара встречается только два раза за две недели
        public static StudentsClass[,] GetGroupTwoSameClasses(StudentsClass[] classes)
        {
            List<StudentClassPair> pairsClasses = new List<StudentClassPair>();
            List<StudentsClass> classesList = classes.ToList();
            foreach (StudentsClass sClass in classesList)
            {
                if (pairsClasses.FindAll((pc) => pc.c1 == sClass || pc.c2 == sClass).Count == 0)
                {
                    if (classesList.FindAll(c => StudentsClass.StudentClassEquals(c, sClass) && c != sClass).Count > 1)
                    {
                        //пара встречается больше двух раз за две недели
                        continue;
                    }
                    StudentsClass secondClass = classesList.Find(c => StudentsClass.StudentClassEquals(c, sClass) && c != sClass);
                    if (secondClass != null)
                    {
                        pairsClasses.Add(new StudentClassPair(sClass, secondClass));
                    }
                }
            }
            StudentsClass[,] pairsClassesArray = new StudentsClass[pairsClasses.Count, 2];
            for (int pairClassesIndex = 0; pairClassesIndex < pairsClasses.Count; pairClassesIndex++)
            {
                pairsClassesArray[pairClassesIndex, 0] = pairsClasses[pairClassesIndex].c1;
                pairsClassesArray[pairClassesIndex, 1] = pairsClasses[pairClassesIndex].c2;
            }

            return pairsClassesArray;
        }
コード例 #8
0
 public ChooseClassRoom(int TimeRows, ScheduleForEdit schedule, StudentsClass sClass)
 {
     InitializeComponent();
     this.TimeRows = TimeRows;
     this.schedule = schedule;
     this.sClass = sClass;
 }
コード例 #9
0
ファイル: SameClasses.cs プロジェクト: Kirk7by/mandarin
 public static bool ClassAtTheSameTimeOnOtherWeek(ISchedule schedule, StudentsClass[] sClasses, int dayOfWeek, int classOfDay)
 {
     StudentsClass tempClass = schedule.GetTempClass();
     if (dayOfWeek < Constants.DAYS_IN_WEEK)
     {
         foreach (StudentSubGroup subGroup in tempClass.SubGroups)
         {
             StudentsClass secondClass = schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayOfWeek + Constants.DAYS_IN_WEEK)[classOfDay];
             if (!IsSameClassesAtTheSameTimeOnOtherWeek(sClasses, tempClass, secondClass))
             {
                 return false;
             }
         }
     }
     else
     {
         foreach (StudentSubGroup subGroup in tempClass.SubGroups)
         {
             StudentsClass secondClass = schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayOfWeek - Constants.DAYS_IN_WEEK)[classOfDay];
             if (!IsSameClassesAtTheSameTimeOnOtherWeek(sClasses, tempClass, secondClass))
             {
                 return false;
             }
         }
     }
     return true;
 }
コード例 #10
0
ファイル: Classes.cs プロジェクト: Kirk7by/mandarin
 public static int CountUpFourWindowsOfAddedClass(StudentsClass[] sClasses, int classOfDay)
 {
     int windowsCount = 0;
     int last = LastClassOfDay(sClasses);
     if ((classOfDay == 0 && last == 0) || (classOfDay == 1 && last == 1) ||
         (classOfDay == 2 && last == 2) || (classOfDay == 3 && last == 3))
     {
         return windowsCount;
     }
     else if (classOfDay < 1)
     {
         if (CheckFourWindowsOfNextClass(sClasses, classOfDay))
         {
             windowsCount++;
         }
     }
     else if (classOfDay > 4)
     {
         if (CheckFourWindowsOfPreviousClass(sClasses, classOfDay))
         {
             windowsCount++;
         }
     }
     return windowsCount;
 }
コード例 #11
0
        public StudentFormSearch()
        {
            InitializeComponent();
            StudentsClass show = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());

            datecontrol.Hide();
            inscritobox.Text = "SI";
            string userDataName = UserAccessForm.getusername() + "_student_table";

            string allorden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where estudiando = '" + inscritobox.Text + "'; ";

            show.ShowDataGrid(findinggrid, allorden);
            encontradoslabel.Text = show.getcuenta().ToString();

            string curso = "select distinct CURSO from " + userDataName + "";

            show.Fillcombo(gradebox, curso);

            string nombre = "select distinct `NOMBRE COMPLETO` from " + userDataName + "";

            show.Fillcombo(namebox, nombre);

            string edad = "select distinct EDAD from " + userDataName + "";

            show.Fillcombo(edadbox, edad);
        }
コード例 #12
0
ファイル: SameClasses.cs プロジェクト: Kirk7by/mandarin
 public static bool ClassesAtSameTime(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.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;
 }
コード例 #13
0
ファイル: SameClasses.cs プロジェクト: Kirk7by/mandarin
 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;
 }
コード例 #14
0
ファイル: ClassesInWeek.cs プロジェクト: Kirk7by/mandarin
 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;
 }
コード例 #15
0
        private void outbutton_Click(object sender, EventArgs e)
        {
            StudentsClass  clas = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
            MovementsClass cas  = new MovementsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());

            string user = UserAccessForm.getusername() + "_student_table";
            string orden;
            string control = datecontrol.Value.Day.ToString() + "/" + datecontrol.Value.Month.ToString() + "/" + datecontrol.Value.Year.ToString();

            if (actionbox.Text == "INSCRIBIR")
            {
                salida = "00/00/0000";
            }
            else
            {
                salida = birthDateBox.Value.Day.ToString() + "/" + birthDateBox.Value.Month.ToString() + "/" + birthDateBox.Value.Year.ToString();
            }
            string deuda;


            clas.ModifyData(user, namelabel.Text, salida, inscrito);

            StudentFormSearch menu = new StudentFormSearch();

            menu.WindowState = FormWindowState.Maximized;
            menu.Show();
            this.Close();
        }
コード例 #16
0
ファイル: AdminRepository.cs プロジェクト: DrewBritt/Synapse
        /// <summary>
        /// Removes student from all classes attached to student
        /// </summary>
        /// <param name="studentid">ID of student to remove from classes</param>
        public async Task RemoveStudentFromAllClasses(int studentid)
        {
            var studentsClasses = (from studentsclasses in _context.StudentsClasses
                                   select new
            {
                studentsclasses.StudentId,
                studentsclasses.ClassId
            }).Where(sc => sc.StudentId == studentid);

            List <StudentsClass> studentsClassesList = new List <StudentsClass>();

            foreach (var sc in studentsClasses)
            {
                StudentsClass newStudentClass = new StudentsClass()
                {
                    StudentId = sc.StudentId,
                    ClassId   = sc.ClassId
                };

                studentsClassesList.Add(newStudentClass);
            }

            _context.StudentsClasses.RemoveRange(studentsClassesList);
            await _context.SaveChangesAsync();
        }
コード例 #17
0
        private void edadbox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string        userDataName = UserAccessForm.getusername() + "_student_table";
            StudentsClass show         = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
            string        orden        = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where estudiando = '" + inscritobox.Text + "' and EDAD='" + edadbox.Text + "'; ";

            show.ShowDataGridFound(findinggrid, orden);
            encontradoslabel.Text = show.getcuenta().ToString();

            edadbox.BackColor = Color.White;
            if (namebox.Text == "" || edadbox.Text == "" || gradebox.Text == "" || inscritobox.Text == "NO")
            {
                eliminarbutton.Enabled = false;
            }
            else
            {
                eliminarbutton.Enabled = true;
            }

            if (namebox.Text == "" || edadbox.Text == "" || gradebox.Text == "")
            {
                editbutton.Enabled = false;
            }
            else
            {
                editbutton.Enabled = true;
            }
        }
コード例 #18
0
        public Form1()
        {
            InitializeComponent();

            var ListTextBox = new List <TextBox>();//lista con los datos de textBox

            ListTextBox.Add(textBoxFirstName);
            ListTextBox.Add(textBoxLastName);
            ListTextBox.Add(textBoxIdentification);
            ListTextBox.Add(textBoxEmail);

            var ListLabel = new List <Label>();//lista con las label

            ListLabel.Add(labelFName);
            ListLabel.Add(labelLName);
            ListLabel.Add(labelID);
            ListLabel.Add(labelEmail);
            ListLabel.Add(labelPage);

            Object[] objects = { pictureBoxStudents,
                                 Properties.Resources._130manwomanstudent2_100617,
                                 studentGridView,
                                 numericUpDown1 };

            students = new StudentsClass(ListTextBox, ListLabel, objects);
        }
コード例 #19
0
 public ChooseClassRoom(int TimeRows, EntityStorage store, StudentsClass sClass)
 {
     InitializeComponent();
     this.TimeRows = TimeRows;
     this.store = store;
     this.sClass = sClass;
 }
コード例 #20
0
ファイル: GroupClasses.cs プロジェクト: Kirk7by/mandarin
        //группировка пар, если пара встречается больше двух раз за две недели
        public static StudentsClass[,] GetGroupSameClassesMoreTwoInTwoWeeks(StudentsClass[] classes)
        {
            List<StudentClassPair> pairsClasses = new List<StudentClassPair>();
            List<StudentsClass> classesList = classes.ToList();
            foreach (StudentsClass sClass in classesList)
            {
                if (pairsClasses.FindAll((pc) => pc.c1 == sClass || pc.c2 == sClass || StudentsClass.StudentClassEquals(pc.c1, sClass)).Count == 0)
                {
                    List<StudentsClass> sameClasses = classesList.FindAll(c => StudentsClass.StudentClassEquals(c, sClass));
                    int countClasses = sameClasses.Count;
                    if (countClasses % 2 == 1)
                        countClasses--;
                    for (int pairIndex = 0; pairIndex < countClasses; pairIndex += 2)
                    {
                        pairsClasses.Add(new StudentClassPair(sameClasses[pairIndex], sameClasses[pairIndex + 1]));
                    }
                }
            }
            StudentsClass[,] pairsClassesArray = new StudentsClass[pairsClasses.Count, 2];
            for (int pairClassesIndex = 0; pairClassesIndex < pairsClasses.Count; pairClassesIndex++)
            {
                pairsClassesArray[pairClassesIndex, 0] = pairsClasses[pairClassesIndex].c1;
                pairsClassesArray[pairClassesIndex, 1] = pairsClasses[pairClassesIndex].c2;
            }

            return pairsClassesArray;
        }
コード例 #21
0
        public StudentOutForm()
        {
            InitializeComponent();
            rutafoto.Hide();
            actionbox.Text = "DESINSCRIBIR";

            namelabel.Text = StudentsClass.getstaticname().ToString();
            StudentsClass student = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
            string        orden   = "SELECT * FROM " + UserAccessForm.getusername() + "_student_table WHERE `NOMBRE COMPLETO` = '" + namelabel.Text + "';";

            student.filleverylabel(agelabel, gradelabel, horariolabel, birthdatelabel, nacionalitylabel, telephonelabel, adresslabel, sexolabel, inscritolabel, fechaentradalabel, fechasalidalabel, numeroactalabel, foliolabel, librolabel, yearlabel, oficialialabel, municipiolabel, alergialabel, medicinalabel, razonmedicinalabel, sindromelabel, tutorlabel, cedulalabel, mensualidadlabel, tipomoneda, rutafoto, parentescolabel, emaillabel, orden);


            if (inscritolabel.Text == "SI")
            {
                actionbox.Text = "DESINSCRIBIR";
                fechasalidalabel.Show();
                titulofechasalida.Show();
                //birthDateBox.Text = fechasalidalabel.Text;
                birthDateBox.Show();
                titulosalidaopen.Show();
            }
            if (inscritolabel.Text == "NO")
            {
                fechasalidalabel.Hide();
                titulofechasalida.Hide();
                birthDateBox.Hide();
                titulosalidaopen.Hide();
                actionbox.Text = "INSCRIBIR";
            }

            if (inscritolabel.Text == "NO")
            {
                actionbox.Text = "INSCRIBIR";
            }
            if (inscritolabel.Text == "SI")
            {
                actionbox.Text = "DESINSCRIBIR";
                fechasalidalabel.Hide();
                titulofechasalida.Hide();
            }



            if (rutafoto.Text != "")
            {
                string path        = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
                string combinacion = System.IO.Path.Combine(path, UserAccessForm.getusername());

                string fotopath = System.IO.Path.Combine(combinacion, rutafoto.Text);

                pictureBox.ImageLocation = fotopath;
            }
            datecontrol.Hide();
            datecontrol.Enabled = false;
        }
コード例 #22
0
ファイル: AdminRepository.cs プロジェクト: DrewBritt/Synapse
        /// <summary>
        /// Adds student to a class in "studentsclasses" table
        /// </summary>
        /// <param name="studentid">ID of student to add to class</param>
        /// <param name="classid">ID of class to add student to</param>
        public async Task AddStudentToClass(int studentid, int classid)
        {
            StudentsClass newClass = new StudentsClass()
            {
                StudentId = studentid,
                ClassId   = classid
            };

            _context.StudentsClasses.Add(newClass);
            await _context.SaveChangesAsync();
        }
コード例 #23
0
ファイル: FullSchedule.cs プロジェクト: Kirk7by/mandarin
 public StudentsClassPosition? GetClassPosition(StudentsClass sClass)
 {
     for (int timeIndex = 0; timeIndex < classesTable.GetLength(0); timeIndex++)
     {
         for (int roomIndex = 0; roomIndex < classesTable.GetLength(1); roomIndex++)
         {
             if (classesTable[timeIndex, roomIndex] == sClass)
                 return new StudentsClassPosition(timeIndex, roomIndex);
         }
     }
     return null;
 }
コード例 #24
0
ファイル: FullSchedule.cs プロジェクト: Kirk7by/mandarin
 public ClassRoom GetClassRoom(StudentsClass sClass)
 {
     for (int timeIndex = 0; timeIndex < classesTable.GetLength(0); timeIndex++)
     {
         for (int classRoomIndex = 0; classRoomIndex < classesTable.GetLength(1); classRoomIndex++)
         {
             if (classesTable[timeIndex, classRoomIndex] == sClass)
                 return eStorage.ClassRooms[classRoomIndex];
         }
     }
     return null;
 }
コード例 #25
0
ファイル: ClassesInWeek.cs プロジェクト: Kirk7by/mandarin
 public static int GetRow(StudentsClass[,] sClasses, StudentsClass sClass)
 {
     if (sClass == null)
         return -1;
     for (int rowIndex = 0; rowIndex < sClasses.GetLength(0); rowIndex++)
     {
         for (int colIndex = 0; colIndex < sClasses.GetLength(1); colIndex++)
         {
             if (sClasses[rowIndex, colIndex] == sClass)
                 return rowIndex;
         }
     }
     return -1;
 }
コード例 #26
0
ファイル: PartialSchedule.cs プロジェクト: Kirk7by/mandarin
        public StudentsClass[] GetClassesOfDay(int day)
        {
            if (day < 0 || day > Constants.WEEKS_IN_SCHEDULE * Constants.DAYS_IN_WEEK-1)
                throw new Exception("Некорректный номер дня");

            StudentsClass[] classesOfDay = new StudentsClass[Constants.CLASSES_IN_DAY];
            int classIndex = 0;
            for (int dayIndex = day*Constants.CLASSES_IN_DAY; dayIndex < day * Constants.CLASSES_IN_DAY + Constants.CLASSES_IN_DAY; dayIndex++)
            {
                classesOfDay[classIndex] = schedule[dayIndex];
                classIndex++;
            }
            return classesOfDay;
        }
コード例 #27
0
        public async Task InsertOrReplaceAsync(StudentsClass studentsClass)
        {
            var table = await _azureStorageHelper.EnsureTableExistenceAndGetReferenceAsync("StudentsClass");

            var insertOrReplaceOperation = TableOperation.InsertOrReplace(studentsClass);

            try
            {
                var tableResult = await table.ExecuteAsync(insertOrReplaceOperation);
            }
            catch (Exception exception)
            {
                throw new TableException("Dodawanie nowego obiektu do bazy danych nie powiodło się.", exception);
            }
        }
コード例 #28
0
ファイル: Rollback.cs プロジェクト: Kirk7by/mandarin
 public Rollback(StudentsClass[] classes, int maxCountRollabaks, FullSchedule schedule, StudentsClass[] fixedClasses)
 {
     MaxCountRollbacks = maxCountRollabaks;
     rollbackLenghtArray = new int[classes.Length];
     rollbackCountArray = new int[classes.Length];
     classesForCountRollbackLength = (StudentsClass[])classes.Clone();
     if(fixedClasses != null)
     {
         this.fixedClasses = fixedClasses;
     }
     else
     {
         this.fixedClasses = new StudentsClass[0];
     }
     this.schedule = schedule;
 }
コード例 #29
0
        private void eliminarbutton_Click(object sender, EventArgs e)
        {
            if (inscritobox.Text == "NO")
            {
                MessageBox.Show("Solo se pueden desincribir estudiantes.");
                inscritobox.BackColor = Color.Red;
            }
            else
            {
                if (gradebox.Text == "" || edadbox.Text == "" || namebox.Text == "")
                {
                    MessageBox.Show("Hay datos importantes faltantes.");

                    if (gradebox.Text == "")
                    {
                        gradebox.BackColor = Color.Red;
                    }
                    if (edadbox.Text == "")
                    {
                        edadbox.BackColor = Color.Red;
                    }
                    if (namebox.Text == "")
                    {
                        namebox.BackColor = Color.Red;
                    }
                }
                else
                {
                    string        salida       = datecontrol.Value.Day.ToString() + "/" + datecontrol.Value.Month.ToString() + "/" + datecontrol.Value.Year.ToString();
                    StudentsClass show         = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
                    string        userDataName = UserAccessForm.getusername() + "_student_table";
                    string        mandosql     = "update " + userDataName + " set ESTUDIANDO ='NO', `FECHA DE SALIDA`='" + salida + "' where `NOMBRE COMPLETO` ='" + namebox.Text + "' and EDAD = '" + edadbox.Text + "' and CURSO = '" + gradebox.Text + "';";
                    if (show.ordensql(mandosql) == true)
                    {
                        MessageBox.Show("Estudiante ha sido desinscrito");
                    }
                    else
                    {
                        MessageBox.Show("Estudiante desinscrito");
                    }
                    string allorden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where estudiando = '" + inscritobox.Text + "'; ";

                    show.ShowDataGrid(findinggrid, allorden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
            }
        }
コード例 #30
0
        private void cleanbuttonstrip_Click(object sender, EventArgs e)
        {
            namebox.Text     = "";
            edadbox.Text     = "";
            gradebox.Text    = "";
            inscritobox.Text = "SI";
            inscritopanel.Hide();
            string        userDataName = UserAccessForm.getusername() + "_student_table";
            string        allorden     = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where estudiando = '" + inscritobox.Text + "'; ";
            StudentsClass show         = new StudentsClass();

            show.ShowDataGrid(findinggrid, allorden);
            encontradoslabel.Text     = show.getcuenta().ToString();
            getoutdateTimePicker.Text = DateTime.Today.ToString();
            getindateTimePicker.Text  = DateTime.Today.ToString();
            birthdate.Text            = DateTime.Today.ToString();
        }
コード例 #31
0
        private void editbutton_Click(object sender, EventArgs e)
        {
            DireccionGestor.setsombrestatic(namelabel.Text);

            DireccionGestor.setotrostatic(gradelabel.Text);
            string        userDataName = UserAccessForm.getusername() + "_student_table";
            StudentsClass student      = new StudentsClass();
            string        orden        = "select * from " + userDataName + " where `NOMBRE COMPLETO` = '" + namelabel.Text + "' and CURSO= '" + gradelabel.Text + "';";

            DireccionGestor.setorigen("editor");
            DireccionGestor.setordensql(orden);

            StudentForm studentaddobject = new StudentForm();

            studentaddobject.WindowState = FormWindowState.Maximized;
            studentaddobject.Show();
            this.Close();
        }
コード例 #32
0
 private void findinggrid_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
     try {
         StudentsClass show         = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
         string        userDataName = UserAccessForm.getusername() + "_student_table";
         string        dato         = this.findinggrid.CurrentCell.Value.ToString();
         namebox.Text = dato;
         string orden = "select * from " + userDataName + " where `NOMBRE COMPLETO` = '" + namebox.Text + "' ;";
         if (show.fillboxes(namebox, birthdate, edadbox, gradebox, inscritobox, getindateTimePicker, getoutdateTimePicker, inscritobox, inscritopanel, orden) == true)
         {
             StudentOutForm menu = new StudentOutForm();
             menu.WindowState = FormWindowState.Maximized;
             menu.Show();
             this.Close();
         }
     }
     catch (NullReferenceException pafh) { pafh.ToString(); }
 }
コード例 #33
0
ファイル: FullSchedule.cs プロジェクト: Kirk7by/mandarin
 public PartialSchedule GetPartialSchedule(Teacher teacher)
 {
     StudentsClass[] partSchedule = new StudentsClass[Constants.WEEKS_IN_SCHEDULE * Constants.DAYS_IN_WEEK * Constants.CLASSES_IN_DAY];
     for (int timeIndex = 0; timeIndex < classesTable.GetLength(0); timeIndex++)
     {
         for (int classRoomIndex = 0; classRoomIndex < classesTable.GetLength(1); classRoomIndex++)
         {
             if (classesTable[timeIndex, classRoomIndex] != null)
             {
                 if (classesTable[timeIndex, classRoomIndex].Teacher.Contains(teacher))
                 {
                     partSchedule[timeIndex] = classesTable[timeIndex, classRoomIndex];
                     break;
                 }
             }
         }
     }
     return new PartialSchedule(partSchedule);
 }
コード例 #34
0
        private async Task ExecuteSaveChangesAsync(object parameter)
        {
            // TODO: sprawdzenie czy pola są podane
            await _longRunningOperationHelper.ProceedLongRunningOperationAsync(async() =>
            {
                var studentsClass = new StudentsClass(ClassNumber, ClassLetter)
                {
                    EducatorId = Educator?.Id,
                    Educator   = Educator,
                    Students   = Students
                };

                Educator.ClassId = studentsClass.FullName;

                try
                {
                    await _usersRepository.InsertOrReplaceAsync(Educator);
                    foreach (var student in Students)
                    {
                        student.ClassId = studentsClass.FullName;
                        student.Class   = studentsClass;
                        await _usersRepository.InsertOrReplaceAsync(student);
                        await _mailingService.SendEmailWithLoginAndPasswordAsync(student, Administrator);

                        if (student.Parent != null)
                        {
                            student.Parent.ChildClassId = studentsClass.FullName;
                            await _usersRepository.InsertOrReplaceAsync(student.Parent);
                            await _mailingService.SendEmailWithLoginAndPasswordAsync(student.Parent, Administrator);
                        }
                    }

                    await _classesRepository.InsertOrReplaceAsync(studentsClass);
                }
                catch (TableException)
                {
                    // TODO: wycofanie wszystkich zmian
                }
            });

            MessageBoxHelper.ShowMessageBox($"Utworzono klasę {ClassNumber}{ClassLetter} wraz z kontami użytkowników.");
        }
コード例 #35
0
        public void TestForGetStudentTopPositionByName()
        {
            double[]     grades1    = { 9, 9, 9, 9 };
            const string className1 = "Math";

            double[]     grades2    = { 9, 9, 9, 9 };
            const string className2 = "English";
            SchoolClass  class1     = new SchoolClass(className1, grades1);
            SchoolClass  class2     = new SchoolClass(className2, grades2);

            SchoolClass[] finalClasses1 = { class1, class2 };

            double[]     grades3    = { 10, 10, 10, 10 };
            const string className3 = "Sport";

            double[]     grades4    = { 10, 10, 10, 10 };
            const string className4 = "Biology";
            SchoolClass  class3     = new SchoolClass(className3, grades3);
            SchoolClass  class4     = new SchoolClass(className4, grades4);

            SchoolClass[] finalClasses2 = { class3, class4 };

            double[]     grades5    = { 6, 6, 6, 6 };
            const string className5 = "Logic";

            double[]     grades6    = { 6, 6, 6, 6 };
            const string className6 = "Electro";
            SchoolClass  class5     = new SchoolClass(className5, grades5);
            SchoolClass  class6     = new SchoolClass(className6, grades6);

            SchoolClass[] finalClasses3 = { class5, class6 };

            var st1 = new Student("Adrian", finalClasses1);
            var st2 = new Student("Sabin", finalClasses2);
            var st3 = new Student("Larisa", finalClasses3);

            Student[]     sts            = { st1, st2, st3 };
            StudentsClass clasaDinScoala = new StudentsClass(sts);

            clasaDinScoala.SortStudentsByGradesDescending();
            Assert.Equal(1, clasaDinScoala.GetStudentTopPositionByName("Sabin"));
        }
コード例 #36
0
 private void findinggrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     try {
         StudentsClass show         = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
         string        userDataName = UserAccessForm.getusername() + "_student_table";
         string        dato         = this.findinggrid.CurrentCell.Value.ToString();
         namebox.Text = dato;
         string orden = "select * from " + userDataName + " where `NOMBRE COMPLETO` = '" + namebox.Text + "';";
         if (show.fillboxes(namebox, birthdate, edadbox, gradebox, inscritobox, getindateTimePicker, getoutdateTimePicker, inscritobox, inscritopanel, orden))
         {
             editbutton.Enabled     = true;
             eliminarbutton.Enabled = true;
         }
         else
         {
             editbutton.Enabled     = false;
             eliminarbutton.Enabled = false;
         }
     }
     catch (NullReferenceException pafh) { pafh.ToString(); }
 }
コード例 #37
0
ファイル: Rollback.cs プロジェクト: Kirk7by/mandarin
        public bool DoRollback(ref StudentsClass[] sortedStudentsClasses, ref int classIndex)
        {
            logger.Debug("позиция: " + (classIndex+1).ToString());
            currentCountRollbacks++;
            //слишком много откатов
            if (currentCountRollbacks > MaxCountRollbacks)
            {
                logger.Debug("Слишком много откатов");
                return false;
            }
            //дошли до начала списка пар - не с чем менять
            if (classIndex == 1)
            {
                logger.Debug("начало списка - не с чем менять");
                return false;
            }

            int[] indexForRollback = GetIndexOfSuitablesClasses(sortedStudentsClasses, classIndex);
            if (indexForRollback == null)
            {
                //не с чем менять
                logger.Debug("Пару не с чем менять");
                return false;
            }
            //удаление откаченных пар из расписания
            logger.Debug("Пары будут откачены: ");
            for (int index = 0; index < indexForRollback.Length; index++)
            {
                logger.Debug("- " + sortedStudentsClasses[indexForRollback[index]].Name);
                schedule.RemoveClass(sortedStudentsClasses[indexForRollback[index]]);
            }

            //пары, стоящие после откаченных и до той, которой требуется откат, сдвигаются влево
            //откаченные пары ставятся после той, для которой происходит откат
            RealignClassesArray(ref sortedStudentsClasses, indexForRollback, classIndex);

            classIndex -= (indexForRollback.Length+1);
            logger.Trace("Откат завершен");
            return true;
        }
コード例 #38
0
        private void editbutton_Click(object sender, EventArgs e)
        {
            if (gradebox.Text == "" || edadbox.Text == "" || namebox.Text == "")
            {
                MessageBox.Show("Hay datos importantes faltantes.");

                if (gradebox.Text == "")
                {
                    gradebox.BackColor = Color.Red;
                }
                if (edadbox.Text == "")
                {
                    edadbox.BackColor = Color.Red;
                }
                if (namebox.Text == "")
                {
                    namebox.BackColor = Color.Red;
                }
            }
            else
            {
                DireccionGestor.setsombrestatic(namebox.Text);
                DireccionGestor.setedadstatic(int.Parse(edadbox.Text));
                DireccionGestor.setotrostatic(gradebox.Text);
                string        userDataName = UserAccessForm.getusername() + "_student_table";
                StudentsClass student      = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
                string        orden        = "select * from " + userDataName + " where `NOMBRE COMPLETO` = '" + namebox.Text + "' and EDAD = '" + edadbox.Text + "' and CURSO= '" + gradebox.Text + "';";
                if (student.fillcombos(namebox, edadbox, gradebox, orden) == true)
                {
                    DireccionGestor.setorigen("editor");
                    DireccionGestor.setordensql(orden);

                    StudentForm studentaddobject = new StudentForm();
                    studentaddobject.WindowState = FormWindowState.Maximized;
                    studentaddobject.Show();
                    this.Close();
                }
            }
        }
コード例 #39
0
ファイル: SortClasses.cs プロジェクト: Kirk7by/mandarin
        //группировка пар, если пара встречается больше двух раз за две недели
        static List<StudentClassPair> GetGroupSameClassesMoreTwoInTwoWeeks(StudentsClass[] classes)
        {
            List<StudentClassPair> pairsClasses = new List<StudentClassPair>();
            List<StudentsClass> classesList = classes.ToList();
            foreach (StudentsClass sClass in classesList)
            {
                if (pairsClasses.FindAll((pc) => pc.c1 == sClass || pc.c2 == sClass || StudentsClass.StudentClassEquals(pc.c1, sClass)).Count == 0)
                {
                    List<StudentsClass> sameClasses = classesList.FindAll(c => StudentsClass.StudentClassEquals(c, sClass));
                    int countClasses = sameClasses.Count;
                    if (countClasses % 2 == 1)
                    {
                        countClasses--;
                    }
                    for (int pairIndex = 0; pairIndex < countClasses; pairIndex += 2)
                    {
                        pairsClasses.Add(new StudentClassPair(sameClasses[pairIndex], sameClasses[pairIndex + 1], sameClasses[pairIndex].SubGroups.Length));
                    }
                }
            }

            return pairsClasses;
        }
コード例 #40
0
ファイル: SortClasses.cs プロジェクト: Kirk7by/mandarin
 public static StudentsClass[] Sort(EntityStorage eStorage, StudentsClass[] fixedClasses, int sortType = 0, bool returnNewArray = false)
 {
     StudentsClass[] classArray;
     if (returnNewArray)
     {
         classArray = (StudentsClass[])eStorage.Classes.Clone();
     }
     else
     {
         classArray = eStorage.Classes;
     }
     if (fixedClasses != null)
     {
         List<StudentsClass> temp = classArray.ToList<StudentsClass>();
         temp.RemoveAll(c => fixedClasses.Contains(c));
         classArray = temp.ToArray();
     }
     switch (sortType)
     {
         case 0:
             SortByFreedomPositionScore(classArray, eStorage);
             break;
         case 1:
             SortBySubGroupCount(classArray);
             break;
         default:
             SortRandom(classArray);
             break;
     }
     if (fixedClasses != null)
     {
         List<StudentsClass> temp = classArray.ToList<StudentsClass>();
         temp.InsertRange(0, fixedClasses);
         classArray = temp.ToArray();
     }
     return classArray;
 }
コード例 #41
0
ファイル: Classes.cs プロジェクト: Kirk7by/mandarin
 public static int CountUpOneWindowOfAddedClass(StudentsClass[] sClasses, int classOfDay)
 {
     int windowsCount = 0;
     int last = LastClassOfDay(sClasses);
     if (classOfDay == 0 && last == 0)
     {
         return windowsCount;
     }
     if (classOfDay < 4)
     {
         if (CheckOneWindowOfNextClass(sClasses, classOfDay))
         {
             windowsCount++;
         }
     }
     if (classOfDay > 1)
     {
         if (CheckOneWindowOfPreviousClass(sClasses, classOfDay))
         {
             windowsCount++;
         }
     }
     return windowsCount;
 }
コード例 #42
0
ファイル: Setting.cs プロジェクト: Kirk7by/mandarin
        public Setting(EntityStorage storage, StudentsClass[] Clases)
        {
            LVIP = new List<FixedClasses>();
            LVIPB = new List<VIPClasesBin>();
            this.storage = storage;
            this.Clases = Clases;
            BinaryFormatter formatter = new BinaryFormatter();

            if (File.Exists("Setting.dat"))
            {

                using (FileStream fs = new FileStream("Setting.dat", FileMode.OpenOrCreate))
                {
                    LVIPB = (List<VIPClasesBin>)formatter.Deserialize(fs);
                }

                foreach (var item in LVIPB)
                {
                    FixedClasses n = new FixedClasses(Clases[item.Cla], item.Time, storage.ClassRooms[item.Aud]);
                    LVIP.Add(n);
                }

            }
        }
コード例 #43
0
 public async Task Create(StudentsClassRequestDTO request)
 {
     var studentsClass = new StudentsClass(request.Name, null);
     await _studentsClassRepository.Create(studentsClass);
 }
コード例 #44
0
 public static void Main()
 {
     School        school  = new School();
     StudentsClass myClass = new StudentsClass(10, 'a');
 }
コード例 #45
0
ファイル: ESProjectCore.cs プロジェクト: Eugenni/mandarin
 string TeatherNameToString(StudentsClass sClass)
 {
     if(sClass.Teacher.Length > 0)
     {
         return sClass.Teacher[0].Name;
     }
     else
     {
         return "";
     }
 }
コード例 #46
0
        private void searchbutton_Click(object sender, EventArgs e)
        {
            string        userDataName = UserAccessForm.getusername() + "_student_table";
            StudentsClass show         = new StudentsClass(UserAccessForm.getdbserver(), UserAccessForm.getdbname(), UserAccessForm.getdbuser(), UserAccessForm.getdbpassword(), UserAccessForm.getdbport());
            string        orden;
            string        fecha = datecontrol.Value.Day.ToString() + "/" + datecontrol.Value.Month.ToString() + "/" + datecontrol.Value.Year.ToString();

            birthdates = birthdate.Value.Day.ToString() + "/" + birthdate.Value.Month.ToString() + "/" + birthdate.Value.Year.ToString();
            timegetin  = getindateTimePicker.Value.Day.ToString() + "/" + getindateTimePicker.Value.Month.ToString() + "/" + getindateTimePicker.Value.Year.ToString();
            timegetout = getoutdateTimePicker.Value.Day.ToString() + "/" + getoutdateTimePicker.Value.Month.ToString() + "/" + getoutdateTimePicker.Value.Year.ToString();



            if (inscritobox.Text == "si" || inscritobox.Text == "SI")
            {
                orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                show.ShowDataGridFound(findinggrid, orden);
                encontradoslabel.Text = show.getcuenta().ToString();

                if (birthdates == fecha)
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where  EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && namebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where  EDAD = '" + edadbox.Text + "' AND  `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "'  AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND  ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "" && edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && namebox.Text == "" && edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && edadbox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && edadbox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && namebox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where EDAD = '" + edadbox.Text + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "" && edadbox.Text == "" && gradebox.Text == "" && birthdates == fecha)
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where  `FECHA DE ENTRADA` = '" + timegetin + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
            }
            else
            {
                orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                show.ShowDataGridFound(findinggrid, orden);
                encontradoslabel.Text = show.getcuenta().ToString();

                if (birthdates == fecha)
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where  EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE SALIDA` = '" + timegetout + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && namebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where  EDAD = '" + edadbox.Text + "' AND  `FECHA DE ENTRADA` = '" + timegetin + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND EDAD = '" + edadbox.Text + "'  AND `FECHA DE ENTRADA` = '" + timegetin + "' AND  ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "" && edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where EDAD = '" + edadbox.Text + "' AND `FECHA DE NACIMIENTO`= '" + birthdates + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && namebox.Text == "" && edadbox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where    `FECHA DE ENTRADA` = '" + timegetin + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && edadbox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && edadbox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where `NOMBRE COMPLETO` like '%" + namebox.Text + "%' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (birthdates == fecha && namebox.Text == "" && gradebox.Text == "")
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where EDAD = '" + edadbox.Text + "' AND `FECHA DE ENTRADA` = '" + timegetin + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
                else if (namebox.Text == "" && edadbox.Text == "" && gradebox.Text == "" && birthdates == fecha)
                {
                    orden = "select `NOMBRE COMPLETO`,EDAD, `FECHA DE NACIMIENTO`, CURSO, HORARIO, NACIONALIDAD, SEXO, TELEFONO, DIRECCION, `NOMBRE DEL TUTOR` from " + userDataName + " where  `FECHA DE ENTRADA` = '" + timegetin + "' AND CURSO ='" + gradebox.Text + "' AND ESTUDIANDO = '" + inscritobox.Text + "');";
                    show.ShowDataGridFound(findinggrid, orden);
                    encontradoslabel.Text = show.getcuenta().ToString();
                }
            }



            //////////////////////////////////////////////////////////////////
            string mandosql = "select `NOMBRE COMPLETO` from " + userDataName + " where `NOMBRE COMPLETO` ='" + namebox.Text + "' and EDAD = '" + edadbox.Text + "' and CURSO = '" + gradebox.Text + "';";

            if (show.ordensql(mandosql) == true)
            {
                eliminarbutton.Enabled = true;
                editbutton.Enabled     = true;
            }
            else
            {
                eliminarbutton.Enabled = false;
                editbutton.Enabled     = false;
            }

            if (namebox.Text == "" || edadbox.Text == "" || gradebox.Text == "")
            {
                editbutton.Enabled = false;
            }
            else
            {
                editbutton.Enabled = true;
            }
        }
コード例 #47
0
ファイル: ESProjectCore.cs プロジェクト: Eugenni/mandarin
 void Logger_ClassInstalled(StudentsClass sClass, StudentsClassPosition position, int indexInList, int listLength, int fine)
 {
     logger.Trace("----- Выбрана позиция: " + SClassPositionToString(position) + ", штраф: " + fine);
     logger.Info("Пара <" + sClass.Name + " " + TeatherNameToString(sClass) +
                 "> установлена (" + (indexInList + 1) + "/" + listLength + ")");
 }
コード例 #48
0
ファイル: ESProjectCore.cs プロジェクト: Eugenni/mandarin
        void Logger_StartInstallClass(StudentsClass sClass, StudentsClassPosition[] positionsForClass, int[] fines)
        {
            logger.Trace("Попытка установки пары " + sClass.Name + " " + TeatherNameToString(sClass));
            logger.Trace("----- Доступны позиции для установки (" + Array.FindAll<int>(fines, f => f != Constants.BLOCK_FINE).Length + "):");
            string positionsString = "\n";
            for (int positionIndex = 0; positionIndex < positionsForClass.Length; positionIndex++)
            {
                if(fines[positionIndex] != Constants.BLOCK_FINE)
                {
                    positionsString += ((positionIndex + 1).ToString() + ". " + SClassPositionToString(positionsForClass[positionIndex]) + ", штраф: " + fines[positionIndex] + "\n");

                }
            }
            logger.Trace(positionsString);
        }
コード例 #49
0
ファイル: ESProjectCore.cs プロジェクト: Eugenni/mandarin
        void InsertFirstClass(StudentsClass[] sortedStudentsClasses, FullSchedule resultSchedule, IFactor[] factors)
        {
            StudentsClassPosition[] positions = resultSchedule.GetSuitableClassRooms(sortedStudentsClasses[0]);
            int[] fines = new int[positions.Length];
            for (int positionIndex = 0; positionIndex < positions.Length; positionIndex++)
            {
                fines[positionIndex] = GetSumFine(positions[positionIndex], factors, resultSchedule, sortedStudentsClasses[0]);
            }
            Logger_StartInstallClass(sortedStudentsClasses[0], positions, fines);
            int indexMinFine = Array.IndexOf<int>(fines, Array.FindAll<int>(fines, (f) => f != Constants.BLOCK_FINE).Min());
            resultSchedule.SetClass(sortedStudentsClasses[0], positions[indexMinFine]);

            Logger_ClassInstalled(sortedStudentsClasses[0], positions[indexMinFine], 0, sortedStudentsClasses.Length, fines[indexMinFine]);
        }
コード例 #50
0
ファイル: ESProjectCore.cs プロジェクト: Eugenni/mandarin
 int GetSumFine(StudentsClassPosition position, IFactor[] factors, FullSchedule scheduleForCreateTemp, StudentsClass sClass)
 {
     FullSchedule schedule = new FullSchedule(scheduleForCreateTemp);
     schedule.SetClass(sClass, position);
     int fine = 0;
     int resultFine = position.Fine;
     for (int factorIndex = 0; factorIndex < factors.Length; factorIndex++)
     {
         fine = factors[factorIndex].GetFineOfAddedClass(schedule, EStorage);
         if (fine != Constants.BLOCK_FINE)
         {
             resultFine += fine;
         }
         else
         {
             return Constants.BLOCK_FINE;
         }
     }
     return resultFine;
 }
コード例 #51
0
ファイル: ESProjectCore.cs プロジェクト: Eugenni/mandarin
        FullSchedule CreateSchedule(StudentsClass[] sortedStudentsClasses)
        {
            FullSchedule resultSchedule = new FullSchedule(EStorage.ClassRooms.Length, EStorage);
            Rollback rollback = new Rollback(sortedStudentsClasses, 100000, resultSchedule, FixedClasses);
            rollback.logger = logger;
            IFactor[] factors = CreateFactorsArray();
            //первая пара ставится отдельно
            InsertFirstClass(sortedStudentsClasses, resultSchedule, factors);
            //----

            for (int classIndex = 1; classIndex < sortedStudentsClasses.Length; classIndex++)
            {
                StudentsClassPosition[] positionsForClass = resultSchedule.GetSuitableClassRooms(sortedStudentsClasses[classIndex]);
                int[] fines = new int[positionsForClass.Length];

                Parallel.For(0, positionsForClass.Length, (positionIndex) =>
                {
                    Interlocked.Exchange(ref fines[positionIndex], GetSumFine(positionsForClass[positionIndex], factors, resultSchedule, sortedStudentsClasses[classIndex]));
                });
                Logger_StartInstallClass(sortedStudentsClasses[classIndex], positionsForClass, fines);
                //for (int positionIndex = 0; positionIndex < positionsForClass.Length; positionIndex++)
                //{
                //    Interlocked.Exchange(ref fines[positionIndex], GetSumFine(positionsForClass[positionIndex], CreateFactorsArray(), resultSchedule, sortedStudentsClasses[classIndex]));
                //}

                if (positionsForClass.Length > 0 && Array.FindAll<int>(fines, (f) => f != Constants.BLOCK_FINE).Length > 0)
                {
                    int indexMinFine = Array.IndexOf<int>(fines, Array.FindAll<int>(fines, (f) => f != Constants.BLOCK_FINE).Min());
                    resultSchedule.SetClass(sortedStudentsClasses[classIndex], positionsForClass[indexMinFine]);

                    Logger_ClassInstalled(sortedStudentsClasses[classIndex], positionsForClass[indexMinFine], classIndex, sortedStudentsClasses.Length, fines[indexMinFine]);
                }
                else
                {
                    logger.Info("---------- Откат пары <" + sortedStudentsClasses[classIndex].Name + ">");
                    if(!rollback.DoRollback(ref sortedStudentsClasses, ref classIndex))
                    {
                        return null;
                    }
                }
            }
            return resultSchedule;
        }
コード例 #52
0
 Label CreateLabel(int row, int column, StudentsClass sClass, ClassRoom room, MouseButtonEventHandler mLeft, MouseButtonEventHandler mRight)
 {
     Label l = new Label();
     if (sClass != null)
     {
         l.Background = new SolidColorBrush(Color.FromRgb(210, 255, 205));//фон ячейки с парой
     }
     else
     {
         l.Background = Brushes.White;
     }
     l.Height = CELL_HEIGHT;
     l.Width = CELL_WIDTH;
     l.BorderBrush = new SolidColorBrush(Color.FromRgb(255, 140, 0));//границы ячеек
     l.BorderThickness = new Thickness(1);
     l.SetValue(Grid.RowProperty, row);
     l.SetValue(Grid.ColumnProperty, column);
     if (sClass != null)
         l.Content = sClass.Name + "(" + room.Housing + "/" + room.Number + ")";
     l.HorizontalContentAlignment = HorizontalAlignment.Center;
     l.MouseLeftButtonDown += mLeft;
     l.MouseRightButtonDown += mRight;
     l.FontSize = 11;
     l.FontWeight = FontWeights.Bold;
     return l;
 }
コード例 #53
0
 private void FinePositionForClass(int classesInSchedule, StudentsClass sClass)
 {
     finePosition = new bool[classesInSchedule];
     finePosition = schedule.GetFinePosition(sClass);
 }