Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения

Разработка математической модели задачи по формированию и реорганизации учебных групп

Работа из раздела: «Программирование, компьютеры и кибернетика»

4

Оглавление

Введение

1. Анализ существующих программных решений

2. Обзор источников литературы

3. Анализ математических алгоритмов решения задачи формирования и реорганизации учебных групп

4. Разработка математической модели задачи

4.1 Введение в тему постановки задач по критериям

4.2 Задача 1. Распределение студентов по группам в зависимости от количества баллов ЕГЭ

4.3 Задача 2. Распределение студентов по группам в зависимости от полового признака

4.4 Задача 3. Распределение студентов по группам в зависимости от изучаемого иностранного языка

4.5 Задача 4. Распределение студентов по группам по критериям «тезки» и «однофамильцы»

4.6 Задача 5. Распределение студентов по группам по критерию «желание стать старостой»

4.7 Задача 6. Распределение студентов по группам по критерию «места, финансируемые государством и места оплачиваемые студентами»

4.8 Задача 7. Распределение студентов по группам в зависимости от желания быть с определенными студентами в одной группе

4.9 Заключение по задачам

5. Выбор программной платформы для создания системы

6. Описание платформы 1С:Предприятие 8

7. Разработка системы автоматизации

8. Тестирование работы системы автоматизации

8.1 Функционал создания индивидуальных учебных планов

8.2 Функционал формирования и реорганизации учебных групп

Заключение

Список использованных источников

Приложения

Введение

Формирование учебных групп и их реорганизация в процессе учебы являются важными аспектами в жизни университета, студентов и учебной части. С вопросом определения состава учебных групп напрямую работают администрация учебного офиса и руководители образовательных программ, а с уже сформированными группами - профессорско-преподавательский состав.

В названии темы работы прослеживаются как минимум две ключевые подзадачи: формирование и реорганизация учебных групп. Они близки по своей сути, но эти задачи возникают вследствие разных причин и на различных этапах обучения. Так для первой подзадачи причинами служат:

- зачисление нового потока абитуриентов в ВУЗы на основе результатов вступительных испытаний, конкурса, договора или по итогам олимпиады;

- повторное зачисление студентов, переведенных на обучение по индивидуальному учебному плану (ИУП) или продолжающих учебу после окончания академического отпуска.

Для второй подзадачи причинами могут служить:

- вступление в силу нового положения, которое устанавливает минимальный или максимальный размер группы;

- разделение группы на рабочие команды для создания подгрупп, сформированных для совместного решения задач, поставленных в ходе обучения;

- сокращение количества студентов, вследствие отчисления или перевода на другие направления подготовки;

- переформирование групп при выборе студентами специализации в рамках одного направления.

Зачастую поставленная задача решается строго консервативными способами: ответственные лица самостоятельно анализируют и составляют, либо исправляют списки студентов вручную. Традиционными критериями распределения студентов по группам являются:

- количество баллов, полученное по результатам ЕГЭ;

- уровень владения различными иностранными языками;

- половой признак;

- географическая принадлежность к определенному месту на макроуровне и микроуровне (приезжий, либо местный житель, нуждается ли в общежитии и законченное учебное заведение соответственно).

Также, к этим критериям можно добавить еще один немаловажный - это однофамильцы и тезки. Учащиеся в группе, должны иметь различные фамилии (в идеале, отличающиеся по первым буквам в алфавите), так как в противном случае в ходе учебного процесса у преподавателей могут возникнуть трудности.

В разных учебных заведениях опросная анкета абитуриента, поступающего в ВУЗ, может выглядеть по-разному. В НИУ ВШЭ в эту анкету входят некоторые дополнительные поля, информацию из которых в дальнейшем можно использовать для оптимального формирования состава учебных групп. К этим полям относятся:

- необходимость предоставления места для проживания в общежитии;

- желание стать старостой;

- изученные языки программирования;

- иностранные языки, которыми владеет (или не владеет) студент;

- и т.д.

Кроме этого, если ВУЗ имеет как бюджетные места, финансируемые за счет государства, так и места, оплачиваемые самими студентами (т.е. форма обучения с полной компенсацией затрат на него), то появляется еще один критерий формирования учебных групп: бюджетная или коммерческая форма обучения.

Исходя из всего этого можно с уверенностью сказать, что ручное выполнение данной работы с большим объемом информации по студентам каждой образовательной программы (если рассматривать вариант, когда администрация одной образовательной программы отвечает только за составление своего списка групп) сложно и требует много времени. Поэтому требуется автоматизация данного процесса, которая позволит получить положительный эффект в следующих аспектах:

- сокращение трудозатрат сотрудников;

- исключение случайный ошибок из-за невнимательности, перенапряжения и других человеческих факторов;

- ведение единой базы для дальнейшей работы со студентами по всем направлениям;

- удовлетворение потребностей студентов;

- зачисление выбранных студентов в группы;

- переформирование (или реорганизация) учебных групп по основополагающим статистическим данным о групповой работе, работе в командах и по принципу равномерного распределения.

Предполагается, что для формирования и реорганизации учебных групп сотруднику, ответственному за данную задачу потребуется лишь импорт в систему необходимых данных о студентах (в определенном формате) и выбор одного или несколько основополагающих параметров: максимального (либо минимального) количества студентов в группах, а также одного или нескольких из задействованных критериев и их рангов.

1. Анализ существующих программных решений

Первым шагом к решению задачи, поставленной при выполнении ВКР являлся поиск и анализ существующих решений по теме: автоматизация процесса формирования и реорганизации учебных групп на основе многокритериального анализа.

Для отдельной задачи (формирование и реорганизация учебных групп), были найдены некоторые работы различных исследователей. Так, например, в статье «Формирование учебных групп в университете с помощью анализа социальных сетей» [1], написанной преподавателем и аспирантом НИУ ВШЭ, данная задача рассматривается с психологической точки зрения. Авторы изучили взаимодействие студентов вне университета: в социальных сетях - и, проведя некий анализ, получили данные об общении тех или иных студентов. В статье описан случай, когда университетом были изменены регламентные требования по составу студентов в группах: разрешенное количество студентов в одной группе уменьшилось. Таким образом, появилась потребность в переформировании некоторых групп. Был проведен кластерный анализ имеющихся групп как в рамках университета, так и по данным из социальных сетей. После осуществления всех аналитических процессов и окончательного формирования новых групп, авторами статьи были собраны данные об успеваемости студентов до процедуры переформирования групп и после. Вследствие завершения реорганизации групп на основе собранных данных из социальных сетей успеваемость студентов повысилась, о чем свидетельствовали финальные собранные данные. Кроме этого, сами студенты выражали благодарность за именно такое распределение, а не какое-либо другое.

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

Если попытаться осуществить поиск имеющихся решений для рассматриваемых процессов автоматизации, то здесь количество полученных результатов совсем мало. Был найден всего лишь один алгоритм формирования групп студентов в ВУЗе написанный на языке программирования C# [2]. Этот алгоритм содержит в себе множество серьезных недостатков, а именно:

- алгоритм решает узкий круг задач, он может не подойти для выполнения первоначального формирования учебных групп или для их реорганизации;

- он не выполняет сравнение по имеющимся данным о студентах: критериям и рангам;

- программа содержит ошибки в коде и на данный момент требует трассировки, поиска имеющихся ошибок и решения проблем.

Также существуют более мощные и глобальные системы автоматизации, которые охватывают различные аспекты работы высших учебных заведений. Например, решение от компании «Первый БИТ» для ВУЗов и колледжей [3]. Это решение имеет огромный и самый важный плюс: огромный функционал системы автоматизации, охватывающий весь процесс работы университета. Но и у нее можно найти недостатки: из-за большого количества решаемых задач, стоимость решения довольно высока. Кроме того, если опираться на основную задачу по практике и ВКР: не решен вопрос с автоматизацией процесса формирования и реорганизации учебных групп на основе анализа по критериям. Эта задача работает в системе элементарным образом: для формирования и занесения списков групп, пользователь просто может сделать это вручную, выбрав студента и отнеся его к определенной группе. Самого автоматического формирования и, тем более, сравнения студентов по различным критериям, в таком случае не происходит.

На основе проведения поиска и анализа существующих решений, были сделаны выводы о том, что рассматриваемая мной в рамках ВКР задача является на данный момент актуальной и не реализованной в том формате, который был бы удобен сотрудникам учебного офиса.

2. Обзор источников литературы

Далее необходимо было провести более углубленный анализ источников и рассмотреть выбранную тему детально, исследовав различную литературу. Для этого были взяты публикации различных ученых как иностранных, так и из России.

Джордж Хоманс в своей теории обмена предположил, что, в соответствии со своими психологическими особенностями, люди могут сплачиваться для образования и поддержания устойчивых социальных структур. Внутри данных структур между людьми образуются деловые, а порой и дружеские связи, которые представляют собой определенные отношения доверия. «Если собрать вместе группу людей и заставить их взаимодействовать, например, заниматься одной и тои? же работой в одном месте или жить в одной и тои? же деревне или на одной улице, то она станет согласованной группой. Они разовьют групповую культуру, которой? не было до этого, и ее стандарты поведения закрепятся во взаимодействии людей» [4].

Следовательно, важным критерием при формировании групп является объединение в одну группу тех людей, которые лучше знают друг друга, давно контактируют и успешно взаимодействуют.

Особенностью составления описываемой системы автоматизации процесса формирования и реорганизации учебных групп является то, что список критериев может быть вариативным и адаптивным. То есть сотрудник, отвечающий за данную процедуру должен будет выбрать необходимое ему количество используемых критериев, отсортировать или ранжировать их таким образом, как ему необходимо. Также возможен другой вариант: положиться на заложенные в систему статистические данные о том, какой набор критериев является наиболее оптимальным.

Ниже в разделе «Постановка задач по критериям» будет описан принцип работы и математическая модель для каждого из них.

Основываясь на многочисленных статических данных, полученных учеными (Baldwin, Bedell и Johnson, 1997 [5], Fletcher и Tienda, 2009 [6], Коллинз, 2009 [4], Иванюшина и Александров, 2013 [7], Семенов, Веретенник и Пронин, 2014 [1]), можно сделать вывод, что для объединения групп людей, направленных на какие-то цели, нужно полагаться не только на типичные технические детали (численность, средний возраст и гендерное разнообразие), но и на их социальные требования (нужно основываться на поставленных целях общих интересах и т.д.).

Книга, написанная Р. Коллинзом [4], определяет социологический фундамент задачи, поставленной в ВКР. Она описывает четыре социологические традиции: традиция конфликта, рациональная/утилитарная традиция, традиция Дюркгейма и микроинтеракционистская традиция. Из этого источника можно почерпнуть много интересного и важного для рассмотрения вопроса важности взаимодействия людей друг с другом.

«The present study was an empirical analysis designed to measure the social networks of master of business administration (M.B.A.) students and the networks' relationships to attitudinal and performance outcomes» [5]. Таким образом, Baldwin T.T., Bedell M.D. и Johnson J.L. в своей статье описывают исследования на тему того, как на успеваемость и оценки по учебе 250 студентов одного университета влияют их взаимоотношения друг с другом и внутри каждого из коллективов. По 62 группам анализ выявил прямую зависимость того, что у тех студентов, у которых взаимоотношения друг с другом лучше - у тех и успеваемость выше.

Fletcher J.M. и Tienda M. в своей статье приводят аналитические данные университета штата Техас в Остине, где были исследованы успеваемость и социальные связи учащихся колледжей. «In The Adolescent Society (1961), James Coleman revealed the importance of schools as contexts for socialization and friendship formation, and his insights spawned research about the myriad ways peer social relations shape adolescent socialization. Both experimental and non-experimental empirical studies conclude that peers are powerful models for socialization of school engagement and academic achievement» [6]. В данном фрагменте авторы статьи подкрепляют свои доводы о внутригрупповых связях студентов и обучающихся высказываниями известных людей, деятелей науки и мыслителей. Кроме этого, они вновь доказывают тот факт, что даже в случае переезда из одного города обучения в другой, одна и та же компания, которая взаимодействует между собой наилучшим образом, продолжает работать в команде более успешно, чем остальные. В среднем, за период с 1993 по 2003 год наблюдалось повышение оценки на 0,1 пункта. Достоверность и важность своего исследования Fletchet и Tienda аргументируют выбором рассматриваемого университета, который был выбран не случайно: «Many research universities draw their student body from the entire nation, but public Texas universities enroll over 80 percent of their incoming class from instate high schools. Therefore, we focus on students who graduated from Texas high schools to construct school-specific measures of co-matriculating classmates, including same race classmates» [6]. В данной статье рассмотрены не только типичные для любого ВУЗа группы людей, но и группы с разными расами, что оказывается тоже может влиять на отношения студентов.

Тему расового различия и влияния его на связи в группах описана в статье Иванюшина В.А. и Александрова Д.А.: «Одна из гипотез, выдвинутых для объяснения расовых различий в образовательных достижениях, состоит в том, что те афроамериканские школьники, кто прилагает усилия и старается получать хорошие оценки, подвергаются санкциям со стороны своих товарищей, которые обвиняют их в том, что они «ведут себя как белые» (acting white) и тем самым предают свою расу» [7]. Авторы обращают внимание в своей статье на проблему антишкольной культуры, через которую и пытаются проникнуть в суть социального поведения людей школьного и студенческого возраста. Эта проблема заключается в том, что ученики отвергают институт образования в целом по разным причинам: как по этическим и этническим, как и просто отдавшись своей радикально оппозиционной позиции. Авторы статьи берутся за изучение вопроса дифференциации - поляризации внутри групп обучающихся, что неразрывно связано с успеваемостью самих студентов и пересекается с рассматриваемыми задачами как практики и ВКР в целом, так и предыдущими проанализированными статьями. «Теория дифференциации-поляризации концентрирует внимание на различиях между треками внутри школы или между типами школ. При этом неявно предполагается, что все дети, попавшие в определенный трек, имеют общую групповую динамику, характерную для данной социальной среды, а отдельные личности, демонстрирующие резко отличающиеся установки, оказываются в изоляции или подвергаются отрицательным санкциям со стороны членов своей группы» [7].

Несомненно, психологические и социальные аспекты изучаемого вопросы занимают огромную роль во всей рассматриваемой задаче формирования и реорганизации учебных групп. Но для решения проблемы автоматизации данного процесса необходимо осознание его работы на математическом уровне и уровне алгоритмизации. Обращаясь к математическим исследованиям таких понятий как кластеризация и модульность в области связей внутри групп, обязательно стоит упомянуть Ulrik Brandes и его статью «On modularity clustering» [8]. Данная работа изобилует различными математическими формулами, вычислениями, теоремами, доказательствами теорем и следствиями этих теорем. Но все это приводит к довольно логичному заключению и определению модульности, как термина математического. Авторы статьи рассматривают возможные пути достижения высокой модульности сформированных кластеров, говоря иными словами: как можно получить наиболее результативную группу людей из имеющихся наборов или составов. Алгоритм «Maximizing Modularity via Integer Linear Programming» [8], описанный в публикации U. Brandes, теоретически может служить основой для автоматизации задачи формирования и реорганизации групп людей по различным критериям, не ограничиваясь задачей, поставленной в рамках данной работы. Но основная проблема заключается в том, что с эмпирической стороны данный подход не поддается легкому обоснованию. Связано это с тем, что все факты и выводы авторов направлены на поиск и теоритические методы доказательства, не будучи привязаны к реальным проблемам. Элементы статьи, описывающие «The greedy algorithm» [8] и метод «Integer Linear Programming» [8] могут быть использованы для составления алгоритма работы системы автоматизации.

Таким образом, рассмотрев источники литературы по вопросу формирования и реорганизации учебных групп, можно сделать вывод о том, что этот вопрос довольно часто рассматривается и исследуется различными авторами. Конечно, контекст источников всегда довольно различен: часть из них освещает вопросы, связанные с психологией, социальными взаимодействиями, часть из них, напротив, углубляется в изучение математических алгоритмов и способов решения задачи, и лишь малая часть практически использует результаты своих исследований при решении технических задач.

3. Анализ математических алгоритмов решения задачи формирования и реорганизации учебных групп

Выполнив задачу по поиску необходимых источников литературы по задаче автоматизации формирования и реорганизации учебных групп на основе многокритериального анализа, и составив краткий практический анализ и обзор, мне предстояло перейти к более техническим вопросам: разработке алгоритма формирования групп. Текущей задачей на тот момент было: исследовать и сравнить существующие алгоритмы многокритериального анализа.

Для поиска информации по математическим алгоритмам многокритериального анализа существуют различные источники, но для анализа было выбрано лишь несколько из них [9-10].

В ходе работы по поиску были найдены методы решения многокритериальных задач, которые можно разделить на группы так, как показано на рис. 1.

Рис. 1. Разновидности методов решения многокритериальных задач

Рассмотрим некоторые из методов, представленных на рис. 1.

1. Методы свертки - разновидность методов, основанных на свертывании критериев. Суть таких методов состоит в том, что вместо целого числа (K) частных критериев рассматривается один скалярный, полученный путем комбинации частных критериев. Различают мультипликативный и аддитивный методы свертывания критериев.

1.1. Аддитивный метод: возьмем за основу тот факт, что все используемые критерии соизмеримы, например, они выражаются в числовом эквиваленте и определен вектор весовых коэффициентов критериев , характеризующих ранжирование и важность каждого из имеющихся критериев. Это значит, что если вес критерия больше веса критерия . Одновременно с этим должно выполняться следующее условие (1):

(1)

Для аддитивного метода строится новая целевая функция (2):

(2)

После этого решается задача оптимизации скалярного критерия, которая описывается при помощи формулы (3):

(3)

1.2. Мультипликативный метод: для данного метода подход к решению аналогичен, только целевая функция в данном случае примет вид (4):

(4)

Основной и самый существенный недостаток методов свертывания критериев заключается в том, что подбор коэффициентов является очень субъективным.

2. Метод главного критерия: суть метода состоит в выборе основного (главного) среди критериев. Предположим, что таким критерием будет являться . Все остальные целевые функции переходят в разряд ограничений по следующему правилу. Лицо, принимающее решение накладывает определенные ограничения на каждый критерий. Вводится система контрольных показателей , относительно которых по всем критериям должны быть достигнуты значения, не меньше заданных значений по условию (5):

(5)

После выбора основного критерия и установления нижних границ для остальных критериев решается задача однокритериальной оптимизации (6):

(6)

При условиях (7):

(7)

3. Метод последовательных уступок: в этом методе нумерация критериев происходит в порядке убывания важности. Пусть критерии записаны в порядке уменьшения их важности. Тогда должны при решении задачи должны выполняться следующие процессы:

- на первом шаге происходит решение однокритериальной задачи по 1-му критерию (8):

(8)

- на втором шаге назначается разумная с инженерной точки зрения уступка , составляется и решается новая задача оптимизации по 2-му критерию (9):

(9)

- на третьем шаге снова назначается уступка, но теперь для 2-го критерия , составляется и решается задача оптимизации по 3-му критерию (10):

(10)

- процесс назначения уступок по каждому критерию и решению однокритериальных задач продолжается, пока не будет достигнут последний K-й шаг.

- на K-м шаге назначается уступка K-1 - го критерия , составляется и решается задача оптимизации по последнему K-му критерию (11):

(11)

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

4. Метод целевого программирования: суть метода заключается в том, что лицо, принимающее решения задает определенные цели для каждого критерия. Задача многокритериальной оптимизации в таком случае преобразуется в задачу минимизации суммы отклонений с некоторым показателем p (12):

(12)

Где - некоторые весовые коэффициенты, характеризующие важность того или иного критерия.

5. Метод гарантированного результата: метод дает наиболее приближенный к наилучшему значению результат даже для самого наименьшего из критериев: компромиссное решение находится путем решения следующей задачи оптимизации (13):

(13)

Выражение (13) есть максиминная задача. Учитывая нормализацию критериев, методы гарантированного результата образуют наиболее перспективное направление в решении задач многокритериального анализа.

Решение многокритериальной задачи методом гарантированного результата обычно включает следующие действия.

- Разработка математической модели системы на основе заданных целей и ограничений; при этом часто используется мнение экспертов.

- Предварительный анализ системы отдельно по каждому критерию; используются методы и программные средства оптимизации с одним критерием.

- Нормализация критериев.

- Решение задачи многокритериальной оптимизации при равнозначных критериях.

- Задание приоритетов критериев и решение задачи многокритериальной оптимизации с назначенными приоритетами.

За изучением существующих математических алгоритмов, следовала разработка оригинального математического алгоритма для решения многокритериальной задачи в рамках вопроса формирования и реорганизации учебных групп. Этот пункт и его итоги будут описаны наряду с другими результатами в разделе «Разработка математической модели задачи».

4. Разработка математической модели задачи

4.1 Введение в тему постановки задач по критериям

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

Решение поставленных задач может происходить по последовательно заданному алгоритму действий и для различных случаев по-разному. Из опыта ученых в области изучения методов многокритериального анализа (таких как Fletcher и Tienda, 2009 [6], Fischer, 2009 [11], Huang, Keisler и Linkov, 2011 [12], Wang, 2011 [13]) следует, что необходимо подкрепить приведенные решения примерами для более ясного представления.

Рассмотренные ниже решения задач были получены при последовательном разборе каждой из подзадач. Отдельные выдержки по решению нескольких подзадач были опубликованы в материалах научно-практического семинара «Новые информационные технологии в автоматизированных системах» [14], а также межвузовской научно-технической конференции имени Е.В. Арменского [15].

4.2 Задача 1. Распределение студентов по группам в зависимости от количества баллов ЕГЭ

Исходные данные и ограничения

- n - групп;

- в группах:

- 1 - a1 студентов;

- 2 - a2 студентов;

- …

- n - an студентов;

- (a1+ a2+…+an) = m - всего студентов;

- количество баллов ЕГЭ для каждого из m студентов равно соответственно: x1, x2, …, xm.

Решение

1. Найдем количество возможных комбинаций зачисления студентов в группы:

1.1. Количество значений найдем по формуле (14), где n - количество студентов, которых нужно зачислить; k - количество мест для зачисления.

(14)

1.2. Количество в пределах одной задачи равно количеству групп.

1.3. Количество возможных комбинаций вычисляется по формуле (15), где - количество студентов в i-группе; - количество групп.

(15)

2. Запустим цикл по перебору различных вариантов распределения студентов в каждую группу.

2.1. Определив состав группы, вычислим средний балл ЕГЭ в ней:

Пример: 1-я группа: ; 2-я группа: ; …;

n-я группа: - первый вариант распределения по группам (по порядку).

2.2. Определив средний балл ЕГЭ в группах, найдем средний балл ЕГЭ среди всех групп.

Пример: Средний балл ЕГЭ среди всех групп вычисляется по формуле (16).

(16)

2.3. Определив средний балл ЕГЭ среди всех групп, найдем отклонение от среднего значения для каждой группы.

Пример: 1-я группа: ; 2-я группа: ; …;

n-я группа: .

2.4. Вычислим среднее отклонение.

Пример: .

2.5. Если текущее среднее отклонение меньше последнего сохраненного, то запомним его текущее значение и запомним составы групп при текущем отклонении. Иначе продолжаем цикл. (Пример: )

3. Выводим наилучшую комбинацию распределения студентов по группам и наилучшее среднее отклонение (для статистики).

Пример: ; 1-я группа: ; 2-я группа: ; …; n-я группа: .

4.3 Задача 2. Распределение студентов по группам в зависимости от полового признака

Исходные данные и ограничения

Предполагаем, что критерий полового признака стоит на втором месте (т.е. имеет ранг 2). Тогда, распределив студентов по группам наилучшим образом, нужно будет учесть и этот критерий.

Решение

Проверка критерия должна сводиться к вычислению соотношений мужского пола к женскому в каждой группе:

1.

2.

n.

В итоге, по отношению ко всем соотношениям, должно быть соблюдено выражение (17).

(17)

4.4 Задача 3. Распределение студентов по группам в зависимости от изучаемого иностранного языка

Исходные данные и ограничения

Каждый студент изучал какой-то иностранный язык, либо его не изучал.

Иностранные языки:

- английский;

- немецкий;

- французский;

- другие иностранные языки;

- не изучал ни один иностранный язык.

В НИУ ВШЭ все студенты обязаны изучать хотя бы один иностранный язык, при этом приоритетным является изучение английского языка.

Способы распределения студентов по группам:

- один язык - в одну группу;

- распределение по самооценке уровня языка - равномерно распределить «сильных» и «слабых» (перемешать);

- если студент изучал несколько языков, то приоритет - английский язык;

- из студентов, не изучавших английский язык, формируется нулевая группа.

Решение

1. Распределим студентов по языковым группам.

1.1. Группа, изучающая английский язык: , где - ранг студента по уровню языка.

1.2. Группа, изучающая немецкий язык: , где - ранг студента по уровню языка.

1.3. …

n. Группа, не изучающая иностранные языки: , где - ранг студента по уровню языка.

2. Зададим ранжирование для студентов, изучающих английский язык.

2.1. Например, примем, что ранг - это число от 0 до 3.

2.2. Тогда у студентов с углубленным изучением английского, окончивших специальную школу, победителей олимпиад и т.д. - ранг равен 3.

2.3. У студентов, у которых английский язык стоит как первый язык, но дополнительной информации об уровне нет - ранг равен 2.

2.4. У студентов, у которых английский язык изучался как второй язык, но дополнительной информации об уровне владения языком нет - ранг равен 1.

2.5. Студенты, для которых нет информации об изучении английского языка - ранг равен 0.

3. Можно убрать из цепочки этап 1 и распределять студентов, начиная со второго этапа.

3.1. Ранг 0:

3.2. Ранг 1:

3.3. Ранг 2:

3.4. Ранг 3:

4. Распределим студентов разного ранга по n группам.

4.1. Начинаем с ранга 0, берем количество студентов, нужное для заполнения группы. Если количества студентов не хватает, то по исчерпании их количества зачисляем студентов с рангом на единицу выше.

4.2. Добавляем данные о студентах, имеющих ранг 1.

4.3. Добавляем данные о студентах, имеющих ранг 2.

4.4. Добавляем данные о студентах, имеющих ранг 3.

4.5 Задача 4. Распределение студентов по группам по критериям «тезки» и «однофамильцы»

Исходные данные и ограничения

Допустим, в списке есть студенты с одинаковыми фамилиями, либо одновременно именами и фамилиями, либо имеется полное совпадение ФИО у двух или более студентов. Их нужно распределить по разным группам, чтобы исключить варианты повторов одной фамилии в одной группе.

- n - групп.

- surname1 - количество студентов с одинаковой фамилией «1».

- surname2 - количество студентов с одинаковой фамилией «2».

- …

- surnamen - количество студентов с одинаковой фамилией «n».

- sur1+sur2+…+surn = surname1 , где suri - количество студентов с одинаковой фамилией в одной группе.

- Условие 1: .

- Условие 2: .

Решение

Существует два случая:

Случай 1. Если группа уже сформирована, то нужно проверить наличие одинаковых фамилий, либо имен и фамилий, либо ФИО.

1. Подсчитываем количество студентов с одинаковыми фамилиями =

2. Условия для дальнейшего решения:

2.1. Если , то конец алгоритма, ничего не надо выполнять.

2.2. Если , то если , то есть возможность распределить их по разным группам - переходим далее к пункту 3.1.

Иначе если , то в каких-то группах будет несколько студентов с совпадением фамилии, либо фамилии и имени в одной группе - переходим к пункту 3.2.

3. Последние действия для распределения:

3.1. Взяв одного из студентов с фамилией, для которой выполняется , переносим его в другую группу до тех пор, пока не будут равны 1 или 0, где sur1, sur2 , …, surn - количества студентов с проверяемой фамилией.

3.2. Взяв всех студентов начинаем выполнять следующие действия.

- Зачисляем последовательно во все группы по одному студенту из этой большой группы однофамильцев.

- На каждом последующем шаге зачисляем по одному студенту в каждую группу до тех пор, пока список (массив) не закончится. (Параллельно с этим можно проверять остальные критерии: ЕГЭ и т.д.)

Случай 2. Если группа не сформирована, то просто выполняем действие 3.2 для и действие 3.1 для .

4.6 Задача 5. Распределение студентов по группам по критерию «желание стать старостой»

Исходные данные и ограничения

В соответствие с желанием студента стать старостой, его нужно направить в ту группу, в которой аналогичного студента не будет. Таким образом, задача очень похожа на задачу 4. Требуется распределить студентов с наличием данного желания в разные группы. В случае, если количество старост недостаточно, выбираем старосту в группе по дополнительным критериям.

Решение

Решение данной задачи происходит аналогично решению задачи 4.

4.7 Задача 6. Распределение студентов по группам по критерию «места, финансируемые государством и места оплачиваемые студентами»

Исходные данные и ограничения

Из названия критерия становится ясно, что распределение студентов должно происходить с учетом количества платных и бюджетных мест.

Платных студентов, желательно свести в одни и те же группы с платными, а бюджетников в группы к бюджетникам, во избежание возможных конфликтов. Также возможны альтернативные варианты: когда платных студентов мало, то их необходимо равномерно распределить по разным группа; распределение бюджетных и не бюджетных студентов равномерно по группам. Программа позволяет выбрать один из этих вариантов.

Существует две группы:

- Budget: budget1, budget2, …, budgeta.

- Paid: paid1, paid2, …, paidb.

Решение

Случай 1. Начальное распределение студентов без дополнительных критериев.

При известном количестве групп студентов нужно распределить таким образом, чтобы бюджетники и платные студенты оказались в разных группах.

Если n - групп, то начнем заполнять группы, начиная с первой, теми студентами, которых больше по количеству.

1. Если a>b, то сначала зачисляем студентов из группы Budget, начиная с первой группы.

2. Если b>a, то начинаем зачисление со студентов из группы Paid.

3. Если изначально было выполнено условие из пункта 1, то, как только количество студентов группы Budget станет равным 0, то начинаем зачислять студентов из группы Paid. Выполняем данный алгоритм начиная с того места заполняемой группы, на котором закончили в последний момент;

4. Аналогично пункту 3, выполняем пункт 2: как только количество студентов из группы Paid станет равным 0, то начинаем зачислять студентов из группы Budget. Выполняем данный алгоритм начиная с того места заполняемой группы, на котором закончили в последний момент.

Случай 2. Распределение студентов в случае уже сформированных ранее групп, и возможные их варианты переформирования для выполнения текущего критерия.

- В данном случае, требуется проверить соотношение студентов по каждой сформированной группе:

1.

2.

n.

- Для данного соотношения требуется выполнения условий:

4.8 Задача 7. Распределение студентов по группам в зависимости от желания быть с определенными студентами в одной группе

Исходные данные и ограничения

Студенты в анкете должны в поле для задания соучеников, с которыми хотелось бы учиться в одной группе, выбрать студентов с теми именами, фамилиями и отчествами, которые приведены в списке.

Таким образом, необходимо сопоставить одних студентов с другими, и тех, записи о которых не имеют данных пометок, оставить на своих местах.

Решение

Случай 1. Необходимо переместить студентов уже существующих групп таким образом, чтобы это соответствовало их пожеланиям. Но при этом, постараться сохранить прежние коэффициенты распределения на существующем уровне.

Пример.

- ;

- из группы 1; из группы 2 и из группы 3.

- Таким образом, мы можем рассмотреть следующие два варианта перестановок:

- Группа 1: , Группа 2: , Группа 3: .

- Группа 1: , Группа 2: , Группа 3: .

Случай 2. Необходимо составить новые группы, с учетом пожеланий студентов. Тех студентов, у которых нет никаких пожеланий, будем последовательно распределять по оставшимся группам.

Пример.

- ;

- Таким образом, мы можем рассмотреть следующие два варианта:

- Группа 1: , Группа 2: , Группа 3: .

- Группа 1: , Группа 2: , Группа 3: .

4.9 Заключение по задачам

Подводя итог рассмотрению критериев для формирования и реструктуризации учебных групп, можно сделать следующие выводы:

- по каждому из семи критериев была составлена и решена соответствующая задача;

- решение задачи 5 и задачи 4 является схожим, поэтому его дублирование нецелесообразно;

- задача 4, задача 6 и задача 7 имеют несколько вариантов решений, так как возможны различные пути для их решения: окончательный выбор одного из вариантов остается за пользователем системы автоматизации;

- в ходе решения задач приведены примеры, из которых можно более ясно представить себе специфику использования и работы того или иного критерия в различных случаях.

5. Выбор программной платформы для создания системы

После разработки специального алгоритма автоматизации действий для составления и переформирования учебных групп, необходимо было решить проблему подбора системы автоматизации, на базе которой будет разработана система для помощи в работе сотрудников учебной части. Для решения это задачи было проведено исследование нескольких различных систем. Рассмотрим их далее.

Реализация системы автоматизации текущей задачи может быть осуществлена в различных средах проектирования и программирования приложений. Для того, чтобы определить наиболее подходящую платформу был выявлен ряд требований, которым она должна соответствовать (сравнение по требованиям представлено в таблице 1):

- использование клиент-серверного взаимодействия для работы от 5 пользователей;

- использование файлового варианта работы для работы до 5 пользователей;

- интеграция с различными СУБД: Microsoft SQL Server, Oracle BD, IBM DB2, PostgreSQL;

- размещение системы на веб-сервере (например, Apache) и работа с системой через интернет-браузер;

- создание мобильного приложения;

- масштабируемость системы;

- модульность системы;

- интеграция и взаимодействие с другими программными продуктами и средствами.

Таблица 1

Сравнение систем автоматизации на соответствие требованиям

Название системы

№ требования

1С:Предприятие 8

«Мельница данных»

SAP

1

2

3

4

5

6

7

8

Рассмотрев таблицу 1, можно сделать выводы о том, что согласно выставленным требованиям к системам автоматизации, наиболее подходящими для дальнейшего исследования являются лишь две из них: 1С:Предприятие 8 и SAP. «Мельница данных» по своей сути представляет некую надстройку для работы с базами данных, обладающую очень скудным интерфейсом и гибкостью настройки функционала. Так как наши задачи не ограничиваются получением информации из базы данных в виде отчетов и, кроме этого, «Мельница данных» соответствует только трем критериям из восьми, для решения поставленных задач эта система не подойдет.

Также оценим преимущества и недостатки систем на основе количественно-суммовых критериев (проанализировать критерии можно, исходя из рис. 2, где расчеты стоимости представлены в рублях).

Рис. 2. Диаграмма сравнения систем автоматизации по стоимостным критериям

1. Стоимость владения - сколько стоит сама система.

Стоимость платформы для работы с 1С:Предпритие 8 была рассчитана по формуле (18), где приняты следующие обозначения: Sв - полная стоимость владения, Sк - стоимость одной клиентской лицензии на платформу 1С:Предприятие 8, Sc - стоимость лицензии на сервер 1С:Предприятие 8.3.

(18)

Информация о стоимости лицензий предоставлена с сайта 1С [16] в виде рекомендованной розничной цены компании на продукты.

2. Стоимость доработки - сколько стоит внедрить систему, а также доработать её под потребности Заказчика.

Стоимость доработок и внедрения системы была рассчитана по формуле (19), где приняты следующие обозначения: Sд - средняя стоимость одного часа работы специалиста, Sф1 - стоимость часа работы специалиста в фирме ПервыйБИТ, Sф2 - стоимость часа работы специалиста в фирме 1С-РАРУС, Sф3 - стоимость часа работы специалиста в фирме 1С:Сервистренд.

(19)

Информация о стоимости часа работ специалистов в фирмах 1С:Франчайзи предоставлена с их сайтов: ПервыйБИТ [17], 1С-РАРУС [18], 1C:Сервистренд [19].

3. Стоимость информационно-технического сопровождения (ИТС) - сколько стоит удаленная консультационная поддержка 24/7.

Стоимость поддержки у всех рассматриваемых фирм 1С:Франчайзи оказалась схожей, поэтому формула для вычисления суммы не потребовалась.

Стоимости платформы, внедрения и ИТС для SAP не даются партнерами конкретными прайс-листами, а высчитываются в каждом случае персонально для каждого проекта. Таким образом, на интернет ресурсах [20], [21] были найдены примерные средние стоимости продуктов SAP.

Анализируя диаграмму, представленную на рис. 2, можно заметить, что система SAP является излишне дорогой для автоматизации задач (владение и ИТС будет стоить около 225000 рублей), в особенности не глобальных. Обычно в России SAP внедряют очень крупные холдинги или предприятия с огромным количеством сотрудников, у которых есть средства на содержание такой системы, так ее покупка, внедрение, сопровождение и поддержка стоят значительно выше, чем аналогичные проекты на 1С:Предприятие 8 (владение платформой и лицензией на сервер 1С, что позволит работать с взаимодействием через серверную базу данных, вкупе с ИТС это обойдется приблизительно в 95000 рублей). Разница в цене между системами составила 130000 рублей, что является значительной суммой для некрупной компании. В дополнении к этому можно сказать, что квалифицированных специалистов, которые могли бы оказать помощь во внедрении и сопровождении системы SAP, в России, единицы (если они и есть, то цены на их работу в разы выше чем у специалистов 1С).

И наконец, немаловажными преимуществами системы 1С:Предприятие 8 являются легкость осуществления доработок, наличие большого количества компетентных специалистов по работе с системой, простота освоения системы в пользовательском режиме.

Рассмотрим немного более подробно системы, выбранные для сравнения с 1С:Предприятие 8.

Компания «Мельница технологий» с платформой «Мельница данных» представляет из себя некую надстройку над СУБД. Платформа помогает отображать и получать данные в удобном для пользователя виде: в форме отчетов и т.д. Необходимые документы может создать как опытный разработчик, так и сам пользователь. Данное программное обеспечение имеет достаточно скудный функционал по сравнению с остальными системами, и обладает довольно слабым интерфейсом. По информации с официального сайта [22], можно судить, что платформа имеет малое количество свойств, которые можно использовать для работы с ней. Рядовой пользователь, скорее всего, не сможет разобраться с устройством данной системы, так как там используется довольно сложные понятия и команды проектирования баз данных. Работа с формами, видимыми пользователю, ведется на языке программирования Visual Basic.

SAP представляет из себя систему автоматизации различных процессов работы компаний. Компания SAP выпускает решения для многих сфера бизнеса, но самым распространенным продуктом является SAP ERP. Если переводить понятие ERP-системы на русский язык, то это система управления предприятием, в которую входит разносторонний функционал, включающий:

- управление закупками;

- управление продажами;

- управление взаимоотношениями с клиентами;

- управление финансами и система ведения казначейства в компании;

- контроль различного вида отчетности компании;

- ведение и сдачу регламентированной бухгалтерской отчетности;

- и др.

SAP - немецкая компания, с программным обеспечением которой работают по всему миру, в том числе и в России. Систему отличает высокая стоимость и большие затраты как на внедрение, так и на ее доработку в различных обстоятельствах. Связано это с тем, что SAP требует очень серьезной и специфичной подготовки для работы с ней не только программистов, но и рядовых пользователей. Из-за сильно завышенной стоимости и высокого курса иностранной валюты, на данный момент проекты по SAP стоят от 1,5-2 млн. рублей. И это лишь на первом этапе, т.к. в дальнейшем могут понадобиться дополнительные доработки. Такие затраты может позволить себе не каждая компания, поэтому пользователями данной системы в России являются крупнейшие компании: «Лукойл», ОАО «РЖД», «Газпром» и другие.

Заостряя свое внимание на том, как же изменилась ситуация на рынке ERP-систем и систем автоматизации ведения бизнеса в России, нужно упомянуть компанию 1С. Продукт 1С:Предприятие на данный момент конкурирует с SAP, так как он является менее затратным и более приспособленным для отечественных пользователей. Из-за действующей программы импортозамещения, например, компания ОАО «РЖД» постепенно начинает переходить на продукты от 1С.

Таким образом, с учетом предыдущих таблиц, графиков и приведенных аргументов было принято решение создать систему автоматизации на базе 1С:Предприятие 8.

6. Описание платформы 1С:Предприятие 8

Многие пользователи в сфере бизнеса, бухгалтерского и торгового учета, производства, управления персоналом, управления складами и т.д. знакомы с системой 1С:Предприятие 8. Сейчас система получает широкое распространение не только в этих сферах деятельности. Автоматизацию под управлением 1С:Предпритие 8 сейчас ведут многие строительные фирмы, автосалоны и автомастерские, рестораны, некоммерческие организации, государственные учреждения (медицинские, военные, образовательные) и многие другие. Но каким образом одна система может решать такой большой круг задач в различных сферах деятельности?

Все дело в определенной структуре системы 1С: Предприятие 8, которая состоит из нескольких частей:

- техническая платформа;

- прикладные решения;

- внедрение.

Разберем последовательно каждую из этих частей. Техническая платформа - это некий фундамент, который включает в себя все средства для создания той конечной системы, которая необходима разработчику. К технической платформе относятся: встроенный язык программирования, создание специальных форм, различных элементов метаданных, система администрирования серверов 1С и т.д. Прикладные решения - это все те решения (иными словами - конфигурации), которые были созданы компанией 1С для автоматизации работы бухгалтерии, торговли, управления производственным предприятием и т.д. (1С:Бухгалтерия предприятия, 1С:Управление торговлей, 1С:ERP и т.д.). Все прикладные решения поддерживаются разработчиками компании 1С, поэтому при приобретении определенного продукта любой пользователь будет иметь возможность его обновления. Внедрения - это потребность клиента, которую реализуют разработчики фирм-партнеров компании 1С, для дополнения или изменения типового функционала прикладных решений.

Исходя из этого, можно сделать вывод, что при создании новой системы, не имеющей аналогов у компании 1С, потребуется использование средств технической платформы 1С:Предприятие 8 и создание новой нетиповой конфигурации под конкретные цели и задачи.

Общие достоинства и преимущества платформы можно расписывать детально и поясняя каждый пункт. Их краткое описание приведено на рис. 3.

Рис. 3. Преимущества платформы 1С:Предприятие 8

Техническая платформа «1С:Предприятие» представляет собой программную оболочку над базой данных (используются базы на основе собственного формата 1CD с версии 8.0 или СУБД Microsoft SQL Server, PostgreSQL, IBM DB2, Oracle). ПО имеет свой собственный язык программирования, обеспечивающий доступ к данным и возможность взаимодействия с другими программами с помощью COM-соединения. Клиентская и серверная части платформы функционируют как на операционной системе Microsoft Windows, так и на Linux. Кроме этого, доступ к платформе возможен из веб-приложения посредством взаимодействия с браузером, установленном на любом устройстве. Либо можно использовать мобильное приложение для Android или iOS.

Последняя версия платформы 1С:Предприятие - это 8.3. Она претерпела незначительные изменения, по сравнению с 8.2. В основном, все доработки были направлены на работу с мобильными устройствами. Специальный интерфейс «Такси», отличается от «Управляемого приложения» наличием широких и больших кнопок, удобных для нажатия на мобильных устройствах.

Отличие последних версий платформы от предыдущих во многом продиктовано не только удобством работы в системе. Так, например, управляемое приложение позволяет пользователю подстроить интерфейс так, как ему будет удобно, добавлять или исключать определенные элементы там, где ему необходимо и многое другое. Но, кроме этого, компания «1С» очень внимательно относится к новым стандартам в области программирования и выстраивания кода в своих решениях. Таким образом, во многих последних обновлениях, именно элементы кода получили большое количество изменений, в связи с новыми стандартами работы приложений.

На платформе 1С:Предприятие разработано множество типовых конфигураций, служащих для автоматизации конкретных отраслей работы предприятия. К примеру: 1С:Бухгалтерия предприятия 8, 1С:Управление торговлей 8, 1С:Зарплата и управление персоналом, 1С:Управление производственным предприятием 8 - это основные конфигурации, на базе которых компаниями 1С:Франчайзи ведется автоматизация клиентов. «1С» регулярно выпускает обновление конфигураций, из-за того, что меняется законодательство нашего, либо других государств, в которых ведется работа, усовершенствуется работа в программе, исходя из обширного обмена опытом пользователей. Компания «1С» занимается обучением работы с этими конфигурациями в области разработки и использования: можно получить сертификаты разного характера и стать сертифицированным специалистом по какому-либо решению.

7. Разработка системы автоматизации

Для выполнения задачи, поставленной в работе, конфигурация не была создана «с нуля». Задача по формированию и реорганизации учебных групп была выполнена путем усовершенствования «системы генерации индивидуальных учебных планов» [23], [24]. Новая система имеет расширенный функционал, включающий в себя решение как ранее реализованных задач автоматизации работы сотрудников учебного офиса, так и новых. За счет этого будет проще работать с данными в пределах одной системы, выполнять необходимые действия и решать поставленные задачи.

На момент доработки «Система генерации индивидуальных учебных планов» имела следующий функционал и охватывала следующие задачи.

- Загрузка рабочих учебных планов (РУПов) в систему - эту задачу можно было выполнить в системе с помощью обработки «Загрузка РУПов», которая позволяла заполнять справочную информацию о рабочем учебном плане и загружать объемные таблицы с данными о количестве часов, отведенном на каждую из дисциплин по каждому направлению обучения. Справочную информацию можно было выбирать из уже имеющихся элементов справочников, либо при необходимости создавать новые элементы.

- Занесение в систему данных справки об успеваемости студентов, которая содержит сведения об уже изученных дисциплинах и прослушанных часах по различным дисциплинам. Студент получает данную справку при переводе из другого высшего учебного заведения.

- Формирование документа «Протокол заседания аттестационной комиссии», который содержит сравнение дисциплин, изученных на различных курсах пройденного обучения и тех дисциплин, которые имеются в рабочем учебном плане направления зачисления на соответствующих курсах. Документ можно распечатать сразу из системы и вывести на принтер для подписи ответственных лиц, принимающих решения.

- Создание документа «Индивидуальный учебный план» (ИУП), который формируется после подписания протокола заседания аттестационной комиссии и на его основании. ИУП содержит часы, которые студент должен будет пройти в индивидуальном порядке для того, чтобы привести учебные планы ВУЗов в соответствие.

- Печать документов сразу из системы: каждый из документов есть возможность не только отобразить в электронном и цифровом формате, но и вывести на печать на принтер в соответствии с нормативными документами НИУ ВШЭ.

В системе есть возможность работы с тремя различными подсистемами: «Преподаватели», «Учебная часть» и «Администрирование». Такое разграничение по подсистемам работы позволяет соответствующим образом разграничить права доступа для пользователей, чтобы исключить обращения к лишним элементам конфигурации. Рабочий стол системы состоит из собранных на одну вкладку четырех форм списков: учебный план, справка об успеваемости, протокол заседания аттестационной комиссии и индивидуальный учебный планов.

«Система генерации индивидуальных учебных планов» работала под управлением платформы 1С:Предприятие 8, версии 8.3.5.1570. Данная платформа поддерживала интерфейс, условно называющийся: «В отдельных окнах» или «В закладках». Его внешний вид можно увидеть на рис. 4.

Рис. 4. Рабочий стол системы с интерфейсом «В отдельных окнах» или «В закладках»

Данным интерфейсом довольно долго пользовались владельцы программного обеспечения 1С:Предприятие 8.

Через некоторое время компания 1С приняла решение перейти в своих современных конфигурациях на новый интерфейс, который носит название «Такси». Его особенность заключается в том, что он ориентирован на пользователей мобильной платформы. В нем имеется ряд преимуществ.

- Увеличенный размер всех интерфейсных объектов в системе, в частности, кнопок и шрифтов - это было сделано с акцентом на пользователей мобильной платформы 1С:Предприятие.

- Более гибкая настройка панелей, окон форм и больший выбор настроек для пользователя: теперь пользователи не должны быть загнаны в рамки определяемых разработчиками условий работы, а могут настроить свой интерфейс таким образом, как им это захочется. Панель разделов, панель открытых вкладок, панель действий и другие панели теперь можно выносить на рабочую область или убирать их вовсе; кроме этого, их можно располагать в любой части рабочего пространства.

- Более развитая поддержка «Управляемых форм»: имея полностью настраиваемый интерфейс рабочей области в программе, пользователь также может настраивать и вид каждой открываемой формы. Разработчики предусматривают на их взгляд самое удобное отображение элементов, полей и кнопок на формах, но в новой версии интерфейса и эти элементы каждый пользователь может подстроить под себя.

- Все настройки сохраняются для каждого пользователя отдельно: если один из пользователей меняет настройки своего рабочего пространства, то они никак не будут пересекаться с настройками других пользователей.

Изучив все положительные аспекты нового интерфейса, было принято решение перевести текущую систему на «Такси». Для осуществления данного процесса дополнительно было произведено обновление платформы 1С:Предприятие 8 до версии 8.3.7.1993. Какой вид приобрела система после этого, можно увидеть на рис. 5.

Рис. 5. Рабочий стол системы с новым интерфейсом «Такси»

Затем велась работа по разработке обработки «Помощник формирования учебных групп» и сопряженных с ней элементов. Были добавлены и созданы следующие новые элементы конфигурации.

- Общая форма: форма выбора и создания группы.

- Справочники:

- учебные группы;

- учебные подгруппы;

- форма обучения;

- критерии формирования групп;

- реквизиты формирования групп.

- Документ: формирование учебных групп и подгрупп.

- Обработка: помощник формирования учебных групп и подгрупп.

- Регистры сведений: учебные группы, учебные подгруппы.

Каждый элемент конфигурации на платформе 1С:Предприятие 8 может включать определенные реквизиты, табличные части, формы, макеты и т.д. Вышеописанные объекты системы тоже состоят из определенных элементов, например, основной элемент, реализующий выполнение задачи ВКР (обработка «Помощник формирования учебных групп и подгрупп») состоит из следующих элементов.

- Реквизитов: номер начальной строки, постоянная часть названия группы, переменная часть названия группы, группа для реорганизации, минимальное количество студентов в группе и максимальное количество студентов в группе.

- Табличных частей: таблица критериев, соответствие колонок и реквизитов.

- Формы: форма.

Определим виды критериев для использования в системе автоматизации при формировании групп студентов, а также реквизиты для загрузки в систему из таблицы загружаемых данных студентов.

Для выбора используемых критериев, определения важности того или иного и выставления ранга требуется заполнить «Таблицу критериев». Список и названия возможных критериев для формирования групп следующий:

- количество баллов ЕГЭ;

- половой признак;

- иностранный язык;

- тезки и однофамильцы;

- желание стать старостой;

- вид финансирования;

- желание быть в группе со студентом или несколькими студентами.

Для распределения по группам и загрузки списка студентов используется файл Excel. Перед загрузкой в систему колонок из файла требуется выставить соответствия в таблице «Соответствия колонок и реквизитов».

Рассмотрим все возможные реквизиты для загрузки в систему из файла:

- ФИО (фамилия, имя, отчество в разных колонках);

- телефон;

- количество баллов ЕГЭ;

- первый иностранный язык;

- второй иностранный язык;

- желание быть старостой;

- желание быть в группе с каким-либо студентом (студентами);

- возраст;

- департамент;

- вид места;

- способ поступления;

- адрес регистрации;

- адрес электронной почты;

- номер студенческого билета.

Рассмотрим технический процесс работы обработки «Помощник формирования учебных групп». Код на платформе 1С:Предприятие 8 содержится в модулях. Так, например, модуль формы нашей обработки включает код (см. приложение 1) для работы всех процессов по проверке входных данных и работе алгоритма составления групп по критериям.

На рис. 6 показан внешний вид обработки-помощника. Исходя из потребностей в определенных кнопках и полях, форма обработки была составлена так, чтобы как можно более простым образом осуществить процесс формирования учебных групп. Не нужно обладать математическими навыками или навыками программирования для того, чтобы работать с ней. В обработку лишь необходимо ввести все исходные данные, которые имеются у работника учебного офиса.

- Выбрать режим работы обработки: формирования или реорганизация учебных групп.

- Выбрать вид формирования или реорганизации: группы или подгруппы.

- Ввести постоянную и переменную части названия будущей группы. Поля являются необязательными и в случае их не заполнения нумерация групп будет происходить по порядку, т.е. номера будут иметь вид целых чисел.

- Выбрать в системе существующую группу для реорганизации.

- Ввести минимальное и максимальное количество студентов в группе.

- Выбрать файл для загрузки на ПК, либо найти имеющихся в базе системы студентов.

- Заполнить таблицу критериев и соответствия колонок и реквизитов.

Рис. 6. Обработка «Помощник формирования учебных групп»

В некоторых случаях возможен ввод пользователями ошибочных данных, поэтому необходимо осуществлять разные виды проверок. Рассмотрим далее некоторые из наиболее вероятных возможных ошибок, их идентификацию в системе и пути их решения.

За обработку и поиск ошибок в системе отвечает функция «ПроверкаНаСервере». Она выполняет проверку заполненности всех реквизитов на сервере для того, чтобы не использовать ресурсы ПК пользователей, и пересылает на клиент результат и данные о найденных ошибках.

1. В случае режима работы обработки для реорганизации групп, пользователю обязательно необходимо выбрать саму группу для реорганизации.

2. Минимальное и максимальное количество студентов в группах должно быть однозначно больше 0, поэтому и эта проверка необходима перед началом работы алгоритма.

3. Номер начальной строки, вводимый перед формированием группы, служит для определения той строки, с которой нужно начинать загрузку данных из файла, т.к. в файле, возможно, содержатся служебные строки или заголовки колонок.

Вышеописанные условия проверок задаются следующим фрагментом кода в программе, который представлен в приложении 1.1.

На месте многоточия в фрагменте кода содержатся еще несколько условий, которые являются более сложными, чем вышеописанные.

4. Отдельно проверяется таблица соответствий реквизитов и колонок на предмет незаполненных значений с номерами. Если та или иная колонка не используется при загрузке, то ее нужно удалить. В противном случае пользователю будет выведено сообщение об ошибке о незаполненных реквизитах.

5. Совместно проверяются таблица соответствий колонок и реквизитов и таблица критериев, используемых для формирования и реорганизации групп. Так, к примеру, возможны случаи, когда для любого выбранного критерия может не быть найдено колонки с заданным номером, на котором она находится в файле. В таком случае необходимо сообщить пользователю об этом и попросить его либо исключить критерий из списка для формирования, либо внести номер колонки в соответствии колонок и реквизитов.

На рис. 7 представлен пример различного вида сообщений об ошибках пользователя.

математический алгоритм программный платформа

Рис. 7. Пример сообщений пользователю об ошибках при вводе исходных данных в обработке

Далее опишем процесс работы системы при загрузке данных из файла. После того как в соответствующем поле выбран путь к файлу с данными, пользователю предлагается осуществить его предзагрузку (пример сообщения приведен на рис. 8).

Рис. 8. Вопрос пользователю в системе при загрузке файла с данными

При выборе варианта ответа «Да», система отображает содержимое файла в выведенном на форму табличном документе. Пример загруженного файла с данными приведён на рис. 9.

Рис. 9. Пример выполнения предзагрузки файла при загрузке данных о студентах из файла

Загрузка файла Excel происходит на клиенте, так как предполагается, что файл существует у пользователя системы и загружать его на сервер только лишь для временной загрузки в базу нецелесообразно. Процедура для предварительной загрузки файла представлена в приложении 1.2.

Перед чтением самого файла производится проверка на правильность выбора файла, пути к нему и существование самого файла на диске пользователя.

Чтение содержимого файла Excel происходит через созданный COM-объект, который использует приложение Excel, установленное на персональном компьютере пользователя. Загрузка данных происходит последовательно и построчно, при этом строки сразу же помещаются в табличный документ, который и является элементом формы, на который выводится финальный результат.

После просмотра загруженных данных можно ознакомится с ними, заполнить все необходимые соответствия между колонками и реквизитами. При необходимости можно удалить любую из имеющихся строк, либо добавить новую вручную. Также, на обработке предусмотрена кнопка «Подобрать студента из системы», которая выполняет действия добавления студента, выбранного из справочника «Физические лица» в системе в таблицу загрузки, вместе с остальными загружаемыми данными из файла. Использование данной кнопки может быть актуально для случая реорганизации существующих групп, либо составления списков подгрупп.

На следующем шаге произведем формирование группы путем нажатия на кнопку «Сформировать» в верхней части экрана. При тестировании составления групп были выбраны настройки, показанные на рис. 10.

Рис. 10. Форма обработки «Помощник формирования учебных групп» с заданными настройками

На рис. 10 видно, что максимальное количество студентов в группе равно 30. При этом, например, для случая, когда идет загрузка пяти студентов, распределения по критериям происходить не будет, т.к. всех студентов можно поместить в одну группу.

Внутри системы работа со списком студентов ведется через действия с типом объектов «Таблица значений». Этот объект включает в себя все поля, имеющиеся в табличном документе, позволяет добавлять новые столбцы к уже имеющимся, изменять содержимое других, осуществлять поиск необходимых данных, обращаться к конкретному элементу по индексу и имеет многие другие свойства. В рассматриваемом случае, потребуется записать новых студентов в базу, либо найти существующих по номеру студенческого билета. Как выглядит форма карточки студента можно увидеть на рис. 11-14. Там изображены несколько вкладок элемента справочника.

Рис. 11. Элемент справочника «Физические лица», вкладка «Личная информация»

Рис. 12. Элемент справочника «Физические лица», вкладка «Контактная информация»

Рис. 13. Элемент справочника «Физические лица», вкладка «Обучение»

Рис. 14. Элемент справочника «Физические лица», вкладка «Разное»

Также нужно будет сформировать название новой группы, исходя из заданных пользователем параметров и проверить на существование такого же номера в базе. После проверки и создания карточек студентов для таблицы значений добавим колонку с наименованием группы и заполним ее созданным названием для всех студентов, чтобы распределить их по группам.

После задания новой группы студентов, системе нужно вывести для пользователя сформированные группы на определенную форму «ФормаВыбораИСозданиеГруппы». Эта форма принимает таблицу значений и выводит ее в табличную часть. Далее пользователь должен будет выбрать устраивающий его вариант формирования группы и нажать на кнопку создания документа.

Для текущего случая система предложит лишь один вариант для формирования групп, который показан на рис. 15.

Рис. 15. Форма выбора и создания группы

Т.к. в системе уже есть группа БИВ1, была сформирована новая группа БИВ1-1, в которую и были помещены все студенты. На данной форме предполагается выбор варианта создания группы и само создание документа формирования группы, которое происходит при нажатии на соответствующую кнопку.

После нажатия на кнопку создания документа формирования учебной группы, в системе выводится сообщение об успешном завершении процедуры проведения и записи нового документа (рис. 16).

Рис. 16. Сообщение о создании нового документа формирования учебной группы

Документ выполняет функцию фиксации самого действия составления группы. Никакой процесс в системе 1С:Предприятие 8 не должен происходить без определенной записи информации, поэтому существует документ «Формирование учебных групп и подгрупп» (рис. 17). В нем виден список студентов и группа, либо подгруппа, в которую был распределен тот или иной студент. Документ выполняет движения по регистру сведений «Учебные группы», либо «Учебные подгруппы», в которых также отражается информация о составленных группах.

Рис. 17. Пример документа «Формирование учебных групп и подгрупп»

Рис. 18. Пример записей регистра сведений «Учебные группы»

На рис. 18 можно увидеть, как отображается регистр сведений «Учебные группы» в системе. Регистры сведений должны обязательно содержать регистратор (объект, который делает движения по тому или иному регистру), номер строки и измерения, реквизиты, либо ресурсы, входящие в состав записи регистра.

Как уже было рассказано ранее, платформа 1С:Предприятие 8 имеет несколько различных вариантов работы: конфигуратор (для разработки) и клиентские приложения: толстый клиент, тонкий клиент и веб-клиент. Разработанная конфигурация доступна для работы во всех имеющихся режимах. Работа в толстом и тонком клиенте визуально для пользователей ничем не отличается и позволяет выполнять действия с программой либо на ПК, либо на удаленной машине.

Рассмотрим немного более подробно работу в режиме веб-клиента. Его главная особенность и преимущество, по отношению к остальным заключается в том, что он доступен конечному пользователю из любого браузера: Google Chrome, Mozilla Firefox, Safari, Microsoft Internet Explorer. То есть все, что нам требуется для работы с таким клиентом - это устройство, подключенное к сети интернет.

Вся техническая часть располагается на веб-сервере и может быть развернута как на сервере Apache, так и IIS (Internet Information Services). В нашем случае был использован сервер Apache версии 2.2. На установленном сервере публикуется файл данных базы, который ссылается на локальную базу. В дальнейшем, при обращении из сети, пользователь будет получать доступ именно к этому опубликованному на сервере файлу. На данный момент веб-сервер развернут лишь локально, поэтому обращение к нему идет по локальному адресу «http://localhost/SystemForControlOfStudents/». С чем приходиться работать пользователю в интерфейсе веб-клиента через браузер Mozilla Firefox можно увидеть на рис. 19, где изображен рабочий стол.

Рис. 19. Пример рабочего стола при работе через веб-клиент в Mozilla Firefox

Обработка «Помощник формирования учебных групп» в веб-клиенте выглядит так, как показано на рис. 20.

Рис. 20. Пример обработки «Помощник формирования учебных групп» при работе через веб-клиент в Mozilla Firefox

Подводя итог разработки описанной выше системы автоматизации и существующего функционала, стоит сообщить, что расположение элементов и их названия были частично взяты из нормативных документов НИУ ВШЭ и в основном выполнены исходя из личного представления об оптимальном виде данной программы. Режим работы через веб-клиент был введен в работу и функционирует аналогично обычному локальному клиентскому приложению. Проверка работоспособности и стабильности работы имеющегося набора функций будет проведена в разделе «Тестирование работы системы автоматизации».

8. Тестирование работы системы автоматизации

Тестирование системы автоматизации будет включать два направления работы: функционал работы автоматизации процесса создания индивидуальных учебных планов (ИУП) и функционал автоматизации процесса формирования и реорганизации учебных групп и подгрупп.

8.1 Функционал создания индивидуальных учебных планов

Вначале обратимся к тестированию работы по созданию индивидуальных учебных планов в системе автоматизации. Рассмотрим последовательный процесс создания ИУП.

1. Загрузка рабочих учебных планов осуществляется через одноименную обработку «Загрузка РУПов», которая находится в панели действий «Сервис» подсистемы «Учебная часть» (рис. 21). Шапка элемента заполнена справочной информацией, которая необходима для дальнейшего выполнения действий по загрузке РУПов и созданию документов в системе.

Рис. 21. Пример открытия обработки «Загрузка РУПов»

2. Заполнив табличный документ, расположенный под полями справочной информации, данными РУПа пользователь нажимает на кнопку «Выполнить». После этого система осуществляет проверку введенного содержимого и создает соответствующий документ «Учебный план» (рис. 22). Как видно на рисунке, документ был успешно создан и все его поля заполнены.

Рис. 22. Пример документа «Учебный план»

3. Далее воспроизведем ситуацию перевода в ВУЗ на определенный курс студента и занесем в систему данные справки об успеваемости. За эти действия в системе отвечает одноименный документ (рис. 23).

Рис. 23. Пример документа «Справка об успеваемости»

4. После ввода начальных документов есть потребность организовать заполнение документа, который носит название «Протокол заседания аттестационной комиссии». Документ состоит из различных частей: шапки со справочной информацией (рис. 24), вкладки «Учебный план», вкладки «Данные об успеваемости», вкладки «Результат сравнения». Первые две вкладки заполняются на основании имеющихся документов в системе, а последняя табличная часть сравнения формируется автоматически, сравнивая изученные дисциплины студентом с теми, которые ему нужно было изучить в ВУЗе поступления.

Рис. 24. Пример заполнения шапки документа «Протокол заседания аттестационной комиссии»

5. После заполнения, записи и проведении документа на шаге 4 на основании документа «Протокол заседания аттестационной комиссии» можно создать документ «Индивидуальный учебный план» (рис. 25). Дополнительно перед записью документа при необходимости в него можно внести правки вручную.

Рис. 25. Пример документа «Индивидуальный учебный план»

6. Получившийся ИУП на шаге 5 можно вывести на печать для принтера. Предварительно, перед печатью документа, его можно отформатировать или отредактировать содержимое (рис. 26).

Рис. 26. Пример предпечатной подготовки документа «Индивидуальный учебный план»

Таким образом, было успешно проведено тестирование функционала по созданию индивидуальных учебных планов для студентов: были продемонстрированы примеры работы с обработкой, создания и формирования документов, а также их распечатки.

8.2 Функционал формирования и реорганизации учебных групп

В тестовых примерах таблица с данными для загрузки и распределения в системе студентов будет представлять из себя файл формата Excel (*.xls, *.xlsx) с определенным набором необходимых полей (поля описаны в разделе «Разработка системы автоматизации»). Пример файла с данными абитуриентов можно увидеть на рис. 27.

Рис. 27. Пример Excel файла с данными о зачисляемых абитуриентах

Количество загружаемых полей напрямую зависит от количества используемых критериев. Например, использование критерия «Количество баллов ЕГЭ» невозможно без загрузки и задания номера колонки под названием «Количество баллов ЕГЭ».

Проведем тестирование загрузки таблицы данных (рис. 27) в систему и проверим загруженные данные с помощью предусмотренной функции предварительной загрузки. На рис. 9 приведен пример загруженной таблицы, которая отображается в системе. Все поля, загруженные в системе, можно редактировать вручную. Например, можно удалить верхнюю строку таблицы с названиями полей, т.к. она не потребуется для загрузки данных в систему. Но данную строку можно и не удалять, потому что на форме обработки предусмотрено поле «Номер начальной строки», значение которого указывает с какой строки необходимо начинать загрузку таблицы.

Попробуем добавить имеющегося в базе студента, которого можно выбрать по нажатию на кнопку «Подобрать студента из системы» (форма выбора показана на рис. 28).

Рис. 28. Пример формы выбора из справочника «Физические лица»

На форме выбора можно задавать произвольные отборы по различным реквизитам справочника или табличным частям и изменять другие настройки. Например, можно отобрать студентов только из одного конкретного департамента и 1995 года рождения (рис. 29).

Рис. 29. Пример настройки списка формы выбора справочника «Физические лица»

Когда нужный студент выбран, в таблицу добавляется новая строка (№7 на рис. 30) и при необходимости пользователь может добавить вручную недостающую информацию в нужные колонки.

Рис. 30. Пример таблицы загрузки со строкой информации о подобранном студенте из системы

Итак, рассмотрим первый тестовый пример формирования учебных групп с помощью обработки «Помощник формирования учебных групп» и загрузку по параметрам, показанным на рис. 31. На изображении видно, что первым для проверки в данном примере берется критерий «Количество баллов ЕГЭ», при загружаемом количестве студентов 5 человек, с учетом распределения по группам не более 2 человек и не менее 1 человека на группу. Также на рис. 31 показано, что номер начальной строки для загрузки равен 2, т.к. первая строка содержит наименования колонок.

Рис. 31. Пример заполнения обработки «Помощник формирования учебных групп»

Подготовительные работы для работы с помощником произведены: попробуем сформировать учебные группы. После нажатия на кнопку «Сформировать» и при выполнении всех условий проверки введенных данных система выполняет алгоритм формирования учебных групп по выбранным критериям. Для начала необходимо определить каким образом можно составить группы студентов: какие названия групп должны быть и какое количество студентов будет в каждой из них. Данный процесс продемонстрирован в приложении 1.3, где показан отвечающий за это код. Фрагмент кода алгоритма распределения студентов по критериям приведен в приложении 1.4: в этих строках видно, что последовательность работы и составления алгоритма аналогична описанному в задаче 1 раздела «Разработка математической модели задач» настоящего документа.

В итоге после нажатия на кнопку «Сформировать» и отработке технического алгоритма работы конфигурации пользователь получает для отображения форму, которая называется «ФормаВыбораИСозданияГруппы». Эта форма отображает для пользователя наиболее подходящие варианты формирования групп студентов: все они показаны на рис. 32.

Рис. 32. Пример формы выбора и создания групп при распределении студентов

Проверим правильность работы алгоритма и рассчитаем вручную значения отклонений и среднего значения количества баллов студентов в группах. При вычислениях для приведенных групп получим значения относительно первого варианта составленных групп, приведенные в таблице 2.

Таблица 2

Тестирование и проверка результатов работы алгоритма формирования групп по критерию «Количество баллов ЕГЭ» для варианта составления групп №1

Группа

Среднее количество баллов ЕГЭ в группе

Отклонение от среднего количества баллов ЕГЭ в группе

Среднее количество баллов ЕГЭ по всем группам

Среднее отклонение от среднего количества баллов ЕГЭ по всем группам

АБВ1

233,5

4

237,5

0

АБВ2

269

-31,5

АБВ3

210

27,5

Целью алгоритма было получение наименьшего среднего отклонения, относительно всех возможных сформированных наборов групп. На примере в таблице 2 можно убедиться, что такое отклонение будет равно 0.

Аналогичные вычисления были проведены и для варианта сформированных групп во втором случае. Результаты содержаться в таблице 3.

Таблица 3

Тестирование и проверка результатов работы алгоритма формирования групп по критерию «Количество баллов ЕГЭ» для варианта составления групп №2

Группа

Среднее количество баллов ЕГЭ в группе

Отклонение от среднего количества баллов ЕГЭ в группе

Среднее количество баллов ЕГЭ по всем группам

Среднее отклонение от среднего количества баллов ЕГЭ по всем группам

АБВ1

265,5

-22,5

243

3,17

АБВ2

230

13

АБВ3

224

19

Выводы по обеим приведенным таблицам (таблица 2, таблица 3) можно сделать следующие: отклонение от среднего количества баллов ЕГЭ минимальны, что и требовалось достичь изначально; наиболее приемлемым будет вариант распределения групп №1, т.к. отклонение там получилось наименьшим.

После выбора необходимого варианта распределения групп (в данном случае был выбран №1), создается новый документ «Формирование учебных групп и подгрупп», содержимое которого можно увидеть на рис. 33.

Рис. 33. Пример автоматически созданного документа «Формирование учебных групп и подгрупп» из обработки «Помощник формирования учебных групп»

Таким образом, было проведено тестирование функционала формирования учебных групп с помощью обработки «Помощник формирования учебных групп» по критерию «количество баллов ЕГЭ». В результате работы обработки самым оптимальным образом была сформирована группа, подобранная по выбранному критерию. Кроме этого был предложен альтернативный варианта составления группы со вторым по возрастанию отклонением от среднего значения отклонения среднего балла ЕГЭ.

Во втором тестовом примере рассмотрим процесс распределения студентов по группам по двум критериям: «количество баллов ЕГЭ» и «половой признак» - с соответствующими рангами 2 и 1.

За основу формирования групп примем данные, представленные на рис. 34.

Рис. 34. Пример заполнения формы обработки «Помощник формирования учебных групп»

Процесс работы алгоритма в случае применения двух критериев заключается в следующем: т.к. главным критерием принято «количество баллов ЕГЭ», то первичное формирование вариантов групп студентов будет сделано именно по нему. Сначала выполняются действия, аналогичные тем, которые были представлены в первом тестовом примере при распределении студентов по критерию «количество баллов ЕГЭ». Затем начинает выполняться алгоритм для проверки следующего критерия. Из трех подобранных ранее вариантов алгоритм подбирает наиболее удачный с учетом «полового признака» студентов и при необходимости меняет местами имеющиеся варианты составленных групп.

В коде алгоритма по формированию группы по критерию «половой признак» (приложение 1.5) задействована функция «ПолучитьПол» (приложение 1.6), которая возвращает результат обработки фамилии, имени и отчества. Работа функции «ПолучитьПол» важна при использовании данного критерия, т.к. студенты не указывают в анкете пол, аналогичный тому, который содержится в паспорте. Поэтому определять пол каждого студента приходится исходя из их имени, отчества и фамилии. Если пол не удается распознать при работе функции, то студент помещается в свободную группу.

На рис. 35 представлены варианты сформированных групп: во всех трех случаях количество студентов мужского пола в группах равно: 1-1-0, количество студентов женского пола в группах равно: 1-1-1. Третий вариант отличается от первых двух только составами самих групп, в которых разнятся только средние значения отклонения по количеству баллов ЕГЭ.

Рис. 35. Пример сформированных групп по критериям «Количество баллов ЕГЭ» и «половой признак»

Таким образом, из второго рассмотренного тестового примера видно, что группы были сформированы с учетом двух критериев: «количество баллов ЕГЭ» и «половой признак». Наилучшим вариантом распределения в данном случае будет признан вариант №1, который был отобран алгоритмом формирования учебных групп.

Перейдем к рассмотрению третьего тестового примера с формированием групп студентов по критерию «изучаемый иностранный язык».

В рамках текущего примера рассмотрим немного больший набор студентов из 20 человек, которые продемонстрированы на рис. 36 вместе с остальными первичными данными ввода.

Рис. 36. Пример заполнения формы обработки «Помощник формирования учебных групп»

Распределение студентов по группам в случае использования критерия «иностранный язык» делает обязательным заполнение номеров соответствующих колонок: «первый иностранный язык», «второй иностранный язык». На основании информации из этих колонок можно присвоить каждому из студентов соответствующий ранг, аналогично алгоритму, представленному в задаче 3 раздела «Разработка математической модели задач» текущей работы.

Для приведенного списка студентов поля «иностранный язык» и «второй иностранный язык» содержат значения: «англ», «нем», «франц» или пустое значение. После отработки несложного алгоритма (приложение 1.7) образуются сформированные группы (рис. 37).

На рис. 37 видны не все студенты сформированных групп, но рассмотрев, например, группу МИВ-В в варианте №1 можно увидеть, что туда попали только те студенты, у которых первый иностранный язык - английский (в этом случае ранг равен 2). В группе МИВ-А основу составляют студенты с рангом 1 (английский язык - второй иностранный язык), а также имеются студенты с рангом 0, т.к. группа заполнялась последней и в нее попали те студенты, которые вовсе не изучали английский язык (таких меньшинство).

Рис. 37. Пример сформированных групп с учетом критерия «Изучаемый иностранный язык»

Таким образом, был рассмотрен третий тестовый пример работы обработки «Помощник формирования учебных групп», в которой был задействован критерий распределения по изучаемому иностранному языку. Группы были сформированы в соответствии с разработанным ранее алгоритмом и полученный результат показал правильность его выполнения.

Перейдем к очередному критерию распределения студентов по группам: «тезки и однофамильцы» - и рассмотрим четвертый тестовый пример.

Вначале пользователь системы привел данные, которые показаны на рис. 38 для проверки алгоритма работы (приложение 1.8).

Рис. 38. Пример заполнения формы обработки «Помощник формирования учебных групп»

Далее, после задания всех необходимых параметров было выполнено формирование групп, с учетом того что некоторые зачисляемые студенты имели одинаковые фамилии. Следующие фамилии используются в таблице загрузки более 1 раза: «Тележкин» 3 раза, «Красильников» 2 раза. Главной задачей алгоритма формирования было зачислить студентов с одинаковыми фамилиями в разные группы, выполнение которой можно увидеть на рис. 39.

Рис. 39. Пример сформированных групп по критерию «Тезки и однофамильцы»

Стоит заметить, что следующий критерий «желание стать старостой» формирует группы аналогичным способом и алгоритмом с критерием «тезки и однофамильцы». За одним лишь исключением: поиск по всем студентам ведется не по определенной фамилии, а по признаку «желание стать старостой» в соответствующей колонке с заполненным пользователем номером.

Исходя из этого, был рассмотрен четвертый тестовый пример формирования учебных групп, где было показано использование критерия «тезки и однофамильцы» на примере групп «ENG-A», «ENG-B», «ENG-C», «ENG-D». Студенты с фамилией «Тележкин» были разнесены в разные группы («ENG-A», «ENG-B», «ENG-D») и студенты с фамилией «Красильников» также оказались в различных группах («ENG-A», «ENG-D»).

Предпоследний пятый тестовый пример содержит работу при распределении студентов по критерию «Вид места финансирования».

Все, что требуется для формирования студентов по данному критерию - это найти студентов с видом места финансирования «бюджетные» и «коммерческие», поместив их в разные массивы. Что и было сделано в алгоритме из приложения 1.9

Исходные данные для обработки на рис. 40 и результат работы приведены на рис. 41.

Рис. 40. Пример заполнения формы обработки «Помощник формирования учебных групп»

Рис. 41. Пример сформированных групп с учетом критерия «Вид места финансирования»

Выводом из пятого тестового примера может служить то, что студентов-бюджетников было больше по количеству, поэтому распределение по группам началось с них. Показательным результатом является тот факт, что все студенты, кроме одного (т.к. максимальное число студентов в группе 4, а всего не бюджетников - 5) на коммерческой основе вошли в одну группу («БЗИ-4»).

И наконец, шестой тестовый пример, показывающий принцип работы критерия «желание быть в группе с». За поиск студентов, с которыми хотели бы учиться конкретные студенты, отвечает колонка, в которой пишутся ФИО полностью и через запятую. Пример такого ввода информации о студентах можно увидеть на рис. 42.

Рис. 42. Пример заполнения формы обработки «Помощник формирования учебных групп»

Проходя строки алгоритма, представленного в приложении 1.10 система анализирует нужные связи для студентов и ищет пути их распределения по группам. Результат получившегося распределения можно увидеть на рис. 43.

Рис. 43. Пример сформированных групп по критерию «Желание быть в группе с»

Подводя итог последнему шестому тестовому примеру, можно сообщить о его результативности, т.к. все необходимые связи для студентов были соблюдены и группа «ВИБ-1» полностью состоит из 4 связанных, а также «ВИБ-2» состоит из двух пар связанных между собой студентов.

Заключение

В ходе разработки системы автоматизации формирования и реорганизации учебных групп была проделана работа по следующим направлениям.

- Анализ существующих программных решений - были изучены различные программные решения в области автоматизации процессов работы учебных заведений. Было выяснено, что существует совсем малое количество серьезных систем автоматизации, которые занимаются вопросом автоматизации ВУЗов, из которых ни одна не позволяет выполнить формирование учебных групп автоматически на основе предоставленных данных о студентах.

- Обзор источников литературы - была рассмотрена различная литература как отечественных ученых и профессоров, так и зарубежных. Проанализирована как техническая литература, так и источники по социологии, с целью демонстрации необходимости основной проблемы: техническая сторона рассматриваемого вопроса перекликается с социальной. Важность и необходимость формирования и реорганизации учебных групп во всей работе может быть доказана приведенным обзором литературы, который показывает, что математические средства и технический прогресс расходятся в результативности и скорости работы на текущий момент. В свою очередь вывод о социальной значимости вопроса подтверждает его важность по отношению к успеваемости обучаемых студентов.

- Анализ математических алгоритмов решения задачи формирования и реорганизации учебных групп - были проанализированы одни из самых распространенных алгоритмов, которые могли бы использоваться для решения основного вопроса автоматизации формирования групп. Итогом данного раздела было изучение всех алгоритмов и принятие решение о разработке своего специального алгоритма формирования учебных групп.

- Разработка математической модели задачи - на основе самостоятельного изучения вопроса была проведена работа по каждому критерию, постановке отдельных подзадач с исходными данными, разработке алгоритмов решения подзадач, полученными результатами и примерами. В результате разработки были созданы оригинальные алгоритмы по формированию учебных групп для каждого из используемых критериев.

- Выбор программной платформы для создания системы - были проанализированы программные платформы для создания систем автоматизации различных бизнес и других процессов. Итогом анализа служит вывод о том, что платформа 1С:Предприятие 8 является на данный момент наиболее перспективной для работы, причем не только на отечественном рынке.

- Описание платформы 1С:Предприятие 8 - была дана краткая характеристика особенностей работы с системой и описаны имеющиеся преимущества. На основе этого можно судить о возможности использования платформы для работы над проектированием и созданием систем автоматизации для совершенно разных сфер деятельности с широким функционалом и удобством в использовании.

- Разработка системы автоматизации - было дано описание разработки и разработанной системы автоматизации процессов генерации индивидуальных учебных планов и формирования учебных групп. Исходя из приведенной разработки можно сделать вывод, что все необходимые процессы для решения основного вопроса дали правильные результаты и могут быть использованы в клиентских приложениях даже при помощи браузера.

- Тестирование работы системы автоматизации - работа системы в различных ситуациях была проиллюстрирована на тестовых примерах. Отдельно проводилось тестирование для функционала генерации индивидуальных учебных планов, т.к. созданная система была разработана ранее и уже давала возможность создания ИУП. Было приведено 6 тестовых примеров, на которых был проведен анализ работы по каждому из возможных для использования критериев. Итогом тестирования можно считать успешное прохождение всех тестов и стабильность работы системы в различных ситуациях.

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

Список использованных источников

1. Семенов А.В., Веретенник Е.В., Пронин А.С. Формирование учебных групп в университете с помощью анализа социальных сетей // Вопросы образования. 2014. № 3. С. 18-21.

2. Клуб Программистов. URL: http://www.programmersforum.ru/showthread.php?t=200099 (дата обращения 06.04.2016).

3. ВУЗы и колледжи (СПО) - Отраслевые решения компании «Первый БИТ». URL: http://www.1cbit.ru/tor/otrasli/vuzy/ (дата обращения 06.04.2016).

4. Коллинз Р. Четыре социологических традиции. М.: Территория будущего, 2009.

5. Baldwin T. T., Bedell M. D., Johnson J. L. The social fabric of a team-based MBA program: Network effects on student satisfaction and performance // Academy of management journal. 1997. Т. 40. №. 6. С. 1369-1397.

6. Fletcher J. M., Tienda M. High school classmates and college success // Sociology of Education. 2009. Т. 82. №. 4. С. 287-314.

7. Иванюшина В. А., Александров Д. А. Антишкольная культура и социальные сети школьников // Вопросы образования. 2013. Т. 2. С. 233-252.

8. Brandes U. et al. On modularity clustering // Knowledge and Data Engineering, IEEE Transactions on. 2008. Т. 20. №. 2. С. 172-188.

9. Консультационный центр MATLAB. Раздел «Математика/Optimization toolbox» URL: http://matlab.exponenta.ru/optimiz/book_1/index.php (дата обращения 05.04.2016).

10. Кини Р.Л., Райфа Х. Принятие решений при многих критериях: предпочтения и замещения. М.: Радио и связь, 1981.

11. Fischer D. Multiple criteria decisions: opening the black box //Journal of Real Estate Practice and Education. 2009. Т. 12. №. 1. С. 43-55.

12. Huang I. B., Keisler J., Linkov I. Multi-criteria decision analysis in environmental sciences: ten years of applications and trends // Science of the total environment. 2011. Т. 409. № 19. С. 3578-3594.

13. Wang Y. J. Fuzzy multi-criteria decision-making based on positive and negative extreme solutions //Applied Mathematical Modelling. 2011. Т. 35. № 4. С. 1994-2004.

14. Ерохина Е.А., Шашков Л.Э. Решение задачи формирования учебных групп с учетом набора критериев // Материалы девятнадцатого научно-практического семинара Новые информационные технологии в автоматизированных системах. М.: НИУ ВШЭ, 2016. С. 229-234

15. Шашков Л. Э. Частное решение задачи формирования и реорганизации учебных групп на основе многокритериального анализа. // В кн.: Материалы Межвузовской научно-технической конференции студентов, аспирантов, молодых специалистов им. Е.В. Арменского. М.: НИУ ВШЭ, 2016. C. 175-176.

16. Цены и порядок поставки платформы «1С:Предприятие 8». URL: http://v8.1c.ru/price/ (дата обращения 25.01.2016).

17. Настройка 1С 8. Компания 1С:ПервыйБИТ - Москва. URL: http://www.1cbit.ru/service_1c/ (дата обращения 24.01.2016).

18. Цены на услуги 1С-Рарус. URL: http://rarus.ru/services/ (дата обращения 24.01.2016).

19. Доработка программ «1С:Сервистренд» URL: http://www.servicetrend.ru/avtomat/development_programs/ (дата обращения 23.01.2016).

20. Микросайт 'Идеи и практики автоматизации». По карману ли SAP HANA малому бизнесу? URL: http://www.pcweek.ru/idea/blog/idea/5471.php (дата обращения 23.01.2016).

21. Tanais.ru. SAP Business One. URL: http://www.tanais.ru/konsalting_i_avtomatizatsiya_biznesa/avtomatizatsiya_bukhgalterskogo_i_upravlencheskogo_ucheta/sap_business_one/ (дата обращения 23.01.2016).

22. Мельница технологий. URL: http://www.techmill.ru/platform.html (дата обращения 02.04.2016).

23. Ерохина Е. А., Шашков Л. Э. Система генерации индивидуальных учебных планов при переводе студентов. // Информационные технологии в науке, образовании и управлении: труды международнои? конференции IT + S&E`15 (Гурзуф, 22 мая-01 июня 2015 г) / под. ред. Е.Л. Глориозова. М.: ИНИТ, 2015. Весенняя сессия. C. 333-341.

24. Шашков, Л. Э. Решение для автоматизации процесса перевода студентов. // В кн.: Материалы XVII Международной научно-практической конференции Инновации на основе информационных и коммуникационных технологий. М.: НИУ ВШЭ, 2015. C. 106-109.

Приложения

Приложение 1

Программный код на 1С Языке программирования

Приложение 1.1

Фрагмент кода функции «ПроверкаНаСервере» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Функция ПроверкаНаСервере()

СообщениеОбОшибках = '';

Если РежимРаботыОбработки = 1 Тогда

Если Объект.ГруппаДляРеорганизации = Справочники.УчебныеГруппы.ПустаяСсылка() И Объект.ГруппаДляРеорганизации = Справочники.УчебныеПодгруппы.ПустаяСсылка() Тогда

СообщениеОбОшибках = СообщениеОбОшибках + 'Группа для реорганизации не заполнена!' + Символы.ПС;

КонецЕсли;

КонецЕсли;

Если Объект.МинимальноеКоличествоСтудентовВГруппе <= 0 Тогда

СообщениеОбОшибках = СообщениеОбОшибках + 'Минимальное количество студентов в группе должно быть больше 0!' + Символы.ПС;

КонецЕсли;

Если Объект.МаксимальноеКоличествоСтудентовВГруппе <= 0 Тогда

СообщениеОбОшибках = СообщениеОбОшибках + 'Максимальнле количество студентов в группе должно быть больше 0!' + Символы.ПС;

КонецЕсли;

Если ПредзагрузкаФайлаБылаВыполнена ИЛИ ТаблицаЗагрузкиИзФайла.ВысотаТаблицы > 0 Тогда

Если Объект.НомерНачальнойСтроки <= 0 Тогда

СообщениеОбОшибках = СообщениеОбОшибках + 'Номер начальной строки должен быть больше 0!' + Символы.ПС;

КонецЕсли;

КонецЕсли;

...

Возврат СообщениеОбОшибках;

КонецФункции

Приложение 1.2

Фрагмент кода процедуры «ВыполнитьПредзагрузкуФайла» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаКлиенте

Процедура ВыполнитьПредзагрузкуФайла()

Если ПустаяСтрока(ПутьКФайлу) Тогда

Предупреждение('Файл не выбран!');

Возврат;

КонецЕсли;

ВыбФайл = Новый Файл(ПутьКФайлу);

Если НЕ ВыбФайл.Существует() Тогда

Предупреждение('Файл не существует!');

Возврат;

КонецЕсли;

Excel = Новый COMОбъект('Excel.Application');

Excel.Workbooks.Open(ПутьКФайлу);

Excel.DisplayAlerts = 0; //Не выводить предупреждения Excel

ExcelЛист = Excel.Sheets(1);

ПерваяСтрокаЗаявкиНеПустая = Истина;

КолонкаНеПустая = Истина;

НомерПоследнейКолонки = 1;

Пока КолонкаНеПустая Цикл

КолонкаНеПустая = ExcelЛист.Cells(1, НомерПоследнейКолонки).Text;

Если НЕ ПустаяСтрока(КолонкаНеПустая) Тогда

КолонкаНеПустая = Истина;

Иначе

КолонкаНеПустая = Ложь;

Прервать;

КонецЕсли;

НомерПоследнейКолонки = НомерПоследнейКолонки + 1;

КонецЦикла;

ПерваяСтрокаЗаявкиНеПустая = Истина;

Индекс = 1;

ИндексТабличногоДокумента = ТаблицаЗагрузкиИзФайла.ВысотаТаблицы + 1;

Пока ПерваяСтрокаЗаявкиНеПустая Цикл

ПерваяСтрокаЗаявкиНеПустая = ExcelЛист.Cells(Индекс, 1).Text;

Если НЕ ПустаяСтрока(ПерваяСтрокаЗаявкиНеПустая) Тогда

ПерваяСтрокаЗаявкиНеПустая = Истина;

Иначе

ПерваяСтрокаЗаявкиНеПустая = Ложь;

Прервать;

КонецЕсли;

Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл

ТаблицаЗагрузкиИзФайла.Область('R' + ИндексТабличногоДокумента + 'C' + НомерКолонки).Текст = ExcelЛист.Cells(Индекс, НомерКолонки).Text;

КонецЦикла;

Индекс = Индекс + 1;

ИндексТабличногоДокумента = ИндексТабличногоДокумента + 1;

КонецЦикла;

Excel.Quit();

Если ТаблицаЗагрузкиИзФайла.ВысотаТаблицы > 0 Тогда

Элементы.ГруппаТаблицаЗагрузкиИзФайла.Видимость = Истина;

КонецЕсли;

КонецПроцедуры

Приложение 1.3

Фрагмент кода процедуры «ФормированиеУчебныхГрупп» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Процедура ФормированиеУчебныхГрупп(ТЗ)

Если ТЗ.Количество() > Объект.МаксимальноеКоличествоСтудентовВГруппе Тогда

ВсегоСтудентов = ТЗ.Количество();

КоличествоГрупп = Объект.МаксимальноеКоличествоСтудентовВГруппе/ВсегоСтудентов;

ТЗНазванияГруппИКоличество = Новый ТаблицаЗначений;

ТЗНазванияГруппИКоличество.Колонки.Добавить('НазваниеГруппы');

ТЗНазванияГруппИКоличество.Колонки.Добавить('КоличествоСтудентов');

ЧислоСтудентовВПоследнейГруппе = 0;

Если КоличествоГрупп > Цел(КоличествоГрупп) Тогда

Если ВсегоСтудентов - КоличествоГрупп * Объект.МаксимальноеКоличествоСтудентовВГруппе < Объект.МинимальноеКоличествоСтудентовВГруппе Тогда

ЧислоСтудентовВПоследнейГруппе = ВсегоСтудентов - КоличествоГрупп * Объект.МаксимальноеКоличествоСтудентовВГруппе;

КонецЕсли;

КоличествоГрупп = КоличествоГрупп + 1;

КонецЕсли;

Если ЧислоСтудентовВПоследнейГруппе = 0 Тогда

ТекущееКоличество = ВсегоСтудентов;

Индекс = 0;

Пока ТекущееКоличество > 0 Цикл

НоваяСтрокаТЗ = ТЗНазванияГруппИКоличество.Добавить();

НоваяГруппа = Справочники.УчебныеГруппы.СоздатьЭлемент();

НоваяГруппа.Наименование = Объект.ПостояннаяЧастьНазванияГруппы + Объект.ПеременнаяЧастьНазванияГруппы;

Пока Справочники.УчебныеГруппы.НайтиПоНаименованию(НоваяГруппа.Наименование) <> Справочники.УчебныеГруппы.ПустаяСсылка() Цикл

НоваяГруппа.Наименование = НоваяГруппа.Наименование + '-1';

КонецЦикла;

НоваяГруппа.Записать();

НоваяСтрокаТЗ.НазваниеГруппы = НоваяГруппа.Ссылка;

Если ТекущееКоличество > Объект.МаксимальноеКоличествоСтудентовВГруппе Тогда

НоваяСтрокаТЗ.КоличествоСтудентов = Объект.МаксимальноеКоличествоСтудентовВГруппе;

ТекущееКоличество = ТекущееКоличество - Объект.МаксимальноеКоличествоСтудентовВГруппе;

Иначе

НоваяСтрокаТЗ.КоличествоСтудентов = ТекущееКоличество;

ТекущееКоличество = 0;

КонецЕсли;

Индекс = Индекс + 1;

КонецЦикла;

Иначе

ЧислоСтудентовКромеПервойГруппы = ВсегоСтудентов - ЧислоСтудентовВПоследнейГруппе;

Пока ЧислоСтудентовВПоследнейГруппе < Объект.МинимальноеКоличествоСтудентовВГруппе Цикл

ЧислоСтудентовВПоследнейГруппе = ЧислоСтудентовВПоследнейГруппе + 1;

ЧислоСтудентовКромеПервойГруппы = ЧислоСтудентовКромеПервойГруппы - 1;

КонецЦикла;

ТекущееКоличество = ЧислоСтудентовКромеПервойГруппы;

Индекс = 0;

Пока ТекущееКоличество > 0 Цикл

НоваяСтрокаТЗ = ТЗНазванияГруппИКоличество.Добавить();

НоваяГруппа = Справочники.УчебныеГруппы.СоздатьЭлемент();

НоваяГруппа.Наименование = Объект.ПостояннаяЧастьНазванияГруппы + Объект.ПеременнаяЧастьНазванияГруппы;

Пока Справочники.УчебныеГруппы.НайтиПоНаименованию(НоваяГруппа.Наименование) <> Справочники.УчебныеГруппы.ПустаяСсылка() Цикл

НоваяГруппа.Наименование = НоваяГруппа.Наименование + '-1';

КонецЦикла;

НоваяГруппа.Записать();

НоваяСтрокаТЗ.НазваниеГруппы = НоваяГруппа.Ссылка;

Если ТекущееКоличество > Объект.МаксимальноеКоличествоСтудентовВГруппе Тогда

НоваяСтрокаТЗ.КоличествоСтудентов = Объект.МаксимальноеКоличествоСтудентовВГруппе;

ТекущееКоличество = ТекущееКоличество - Объект.МаксимальноеКоличествоСтудентовВГруппе;

Иначе

НоваяСтрокаТЗ.КоличествоСтудентов = ТекущееКоличество;

ТекущееКоличество = 0;

КонецЕсли;

Индекс = Индекс + 1;

КонецЦикла;

НоваяСтрокаТЗ = ТЗНазванияГруппИКоличество.Добавить();

НоваяСтрокаТЗ.НазваниеГруппы = ПолучитьПеременнуюЧастьНазванияГруппы(Объект.ПеременнаяЧастьНазванияГруппы, Индекс);

НоваяСтрокаТЗ.КоличествоСтудентов = ЧислоСтудентовВПоследнейГруппе;

КонецЕсли;

КонецПроцедуры

Приложение 1.4

Фрагмент кода процедуры «ФормированиеУчебныхГрупп» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Процедура ФормированиеУчебныхГрупп(ТЗ)

Для каждого СтрокаКритерий Из Объект.ТаблицаКритериев Цикл

Если СтрокаКритерий.Критерий = Справочники.КритерииФормированияГрупп.КоличествоБалловЕГЭ Тогда

ЧислоСочетанийОбщее = 1;

Н = ВсегоСтудентов;

Для Индекс = 0 По ТЗНазванияГруппИКоличество.Количество() - 1 Цикл

К = ТЗНазванияГруппИКоличество[Индекс].КоличествоСтудентов;

ЧислоСочетанийТекущее = Факториал(Н)/(Факториал(К)*Факториал(Н-К));

ЧислоСочетанийОбщее = ЧислоСочетанийОбщее * ЧислоСочетанийТекущее;

Н = Н - ТЗНазванияГруппИКоличество[Индекс].КоличествоСтудентов;

КонецЦикла;

ДвумерныйМассивНаборовСтудентов = Новый Массив;

Генерация(-1, ТЗ.Количество(), ТЗ.ВыгрузитьКолонку('СсылкаНаФизЛицо'), ДвумерныйМассивНаборовСтудентов);

ТЗНазванияГруппИКоличество.Колонки.Добавить('СреднийБаллЕГЭ');

ТЗНазванияГруппИКоличество.Колонки.Добавить('СреднееОтклонениеБалловЕГЭ');

МинимальноеСреднееОтклонениеБалловЕГЭ = 1000;

ИндексПоследнегоЗаполненногоВариантаГруппы = 0;

ИндексНабораСтудентов = -1;

ТЗКопия = ТЗ.Скопировать();

Для каждого НабораСтудентов Из ДвумерныйМассивНаборовСтудентов Цикл

ИндексСтудента = 0;

СреднийБаллЕГЭПоВсемГруппам = 0;

Для каждого СтрокаТЗНазванияГруппИКоличество Из ТЗНазванияГруппИКоличество Цикл

БалловЕГЭВГруппе = 0;

Для Индекс = 0 По СтрокаТЗНазванияГруппИКоличество.КоличествоСтудентов - 1 Цикл

ТекущийСтудент = НабораСтудентов[ИндексСтудента];

СтрокаТЗСтудента = ТЗКопия.Найти(ТекущийСтудент,'СсылкаНаФизЛицо');

СтрокаТЗСтудента.ВариантГруппы1 = СтрокаТЗНазванияГруппИКоличество.НазваниеГруппы;

БалловЕГЭВГруппе = БалловЕГЭВГруппе + Число(СтрокаТЗСтудента.БаллыЕГЭ);

ИндексСтудента = ИндексСтудента + 1;

КонецЦикла;

СтрокаТЗНазванияГруппИКоличество.СреднийБаллЕГЭ = БалловЕГЭВГруппе / СтрокаТЗНазванияГруппИКоличество.КоличествоСтудентов;

СреднийБаллЕГЭПоВсемГруппам = СреднийБаллЕГЭПоВсемГруппам + СтрокаТЗНазванияГруппИКоличество.СреднийБаллЕГЭ;

КонецЦикла;

СреднийБаллЕГЭПоВсемГруппам = СреднийБаллЕГЭПоВсемГруппам / ТЗНазванияГруппИКоличество.Количество();

СреднееОтклонениеБалловЕГЭПоВсемГруппам = 0;

Для каждого СтрокаТЗНазванияГруппИКоличество Из ТЗНазванияГруппИКоличество Цикл

СтрокаТЗНазванияГруппИКоличество.СреднееОтклонениеБалловЕГЭ =

СреднийБаллЕГЭПоВсемГруппам - СтрокаТЗНазванияГруппИКоличество.СреднийБаллЕГЭ;

СреднееОтклонениеБалловЕГЭПоВсемГруппам = СреднееОтклонениеБалловЕГЭПоВсемГруппам + СтрокаТЗНазванияГруппИКоличество.СреднееОтклонениеБалловЕГЭ;

КонецЦикла;

СреднееОтклонениеБалловЕГЭПоВсемГруппам = СреднееОтклонениеБалловЕГЭПоВсемГруппам / ТЗНазванияГруппИКоличество.Количество();

Если СреднееОтклонениеБалловЕГЭПоВсемГруппам < МинимальноеСреднееОтклонениеБалловЕГЭ Тогда

Если ИндексПоследнегоЗаполненногоВариантаГруппы < 3 Тогда

ИндексПоследнегоЗаполненногоВариантаГруппы = ИндексПоследнегоЗаполненногоВариантаГруппы + 1;

Иначе

ИндексПоследнегоЗаполненногоВариантаГруппы = 1;

КонецЕсли;

МинимальноеСреднееОтклонениеБалловЕГЭ = СреднееОтклонениеБалловЕГЭПоВсемГруппам;

Для каждого СтрокаТЗКопия Из ТЗКопия Цикл

СтрокаТЗ = ТЗ.Найти(СтрокаТЗКопия.СсылкаНаФизЛицо, 'СсылкаНаФизЛицо');

КолонкаТЗ = ТЗ.Колонки.Найти('ВариантГруппы'+ИндексПоследнегоЗаполненногоВариантаГруппы);

ИндексКолонкиТЗ = ТЗ.Колонки.Индекс(КолонкаТЗ);

СтрокаТЗ[ИндексКолонкиТЗ] = СтрокаТЗКопия.ВариантГруппы1;

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

Приложение 1.5

Фрагмент кода процедуры «ФормированиеУчебныхГрупп» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Процедура ФормированиеУчебныхГрупп(ТЗ)

ТЗВариантовИСоотношенийМИЖ = Новый ТаблицаЗначений;

ТЗВариантовИСоотношенийМИЖ.Колонки.Добавить('ВариантГруппы');

ТЗВариантовИСоотношенийМИЖ.Колонки.Добавить('СоотношениеМИЖ');

Для Индекс = 1 По 3 Цикл

Для каждого СтрокаТЗНазванияГруппИКоличество Из ТЗНазванияГруппИКоличество Цикл

ПараметрыОтбораГрупп = Новый Структура;

ПараметрыОтбораГрупп.Вставить('ВариантГруппы'+Строка(Индекс),СтрокаТЗНазванияГруппИКоличество.НазваниеГруппы);

КоличествоМужчин = 0;

КоличествоЖенщин = 0;

ОбщееСоотношениеМИЖПоВсемГруппам = 0;

Для каждого СтрокаТЗ Из ТЗ.НайтиСтроки(ПараметрыОтбораГрупп) Цикл

ПолСтудента = ПолучитьПол(СтрокаТЗ.Фамилия,СтрокаТЗ.Имя,СтрокаТЗ.Отчество);

Если ПолСтудента = 'М' Тогда

КоличествоМужчин = КоличествоМужчин + 1;

ИначеЕсли ПолСтудента = 'Ж' Тогда

КоличествоЖенщин = КоличествоЖенщин + 1;

КонецЕсли;

КонецЦикла;

Если КоличествоМужчин <> 0 Тогда

ОбщееСоотношениеМИЖПоВсемГруппам = ОбщееСоотношениеМИЖПоВсемГруппам + (КоличествоЖенщин/КоличествоМужчин);

КонецЕсли;

КонецЦикла;

НоваяСтрокаТЗВариантовИСоотношенийМИЖ = ТЗВариантовИСоотношенийМИЖ.Добавить();

НоваяСтрокаТЗВариантовИСоотношенийМИЖ.ВариантГруппы = Индекс;

РазницаСоотношений = КоличествоГрупп - ОбщееСоотношениеМИЖПоВсемГруппам;

НоваяСтрокаТЗВариантовИСоотношенийМИЖ.СоотношениеМИЖ = Макс(РазницаСоотношений, -РазницаСоотношений);

КонецЦикла;

ТЗВариантовИСоотношенийМИЖ.Сортировать('СоотношениеМИЖ Возр');

ТЗКопия = ТЗ.Скопировать();

Для ИндексСтудента = 0 По ТЗКопия.Количество() - 1 Цикл

Для Индекс = 1 По 3 Цикл

НомерКолонкиСтарый = ТЗКопия.Колонки.Индекс(ТЗКопия.Колонки.Найти('ВариантГруппы' + ТЗВариантовИСоотношенийМИЖ.Получить(Индекс-1).ВариантГруппы));

СтрокаТЗКопия = ТЗКопия.Получить(ИндексСтудента);

НомерКолонкиНовый = ТЗ.Колонки.Индекс(ТЗ.Колонки.Найти('ВариантГруппы'+Индекс));

СтрокаТЗ = ТЗ.Получить(ИндексСтудента);

СтрокаТЗ[НомерКолонкиНовый] = СтрокаТЗКопия[НомерКолонкиСтарый];

КонецЦикла;

КонецЦикла;

КонецПроцедуры

Приложение 1.6

Код функции «ПолучитьПол» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Функция ПолучитьПол(Фамилия, Имя, Отчество)

Если Отчество <> '' Тогда

окончание1 = Сред(Отчество, СтрДлина(Отчество));

Если окончание1 = 'ч' ИЛИ окончание1 = 'в' Тогда

Возврат 'М';

ИначеЕсли окончание1 = 'а' Тогда

Возврат 'Ж';

КонецЕсли;

КонецЕсли;

окончание1 = Сред(Фамилия, СтрДлина(Фамилия));

окончание2 = Сред(Фамилия, СтрДлина(Фамилия) - 1);

окончание3 = Сред(Фамилия, СтрДлина(Фамилия) - 2);

окончанияМужскихФамилий=',ов,ев,ий,ин,';

окончанияЖенскихФамилий=',ова,ева,ина,ая,';

Если Найти(окончанияМужскихФамилий, ',' + окончание2 + ',') > 0 Тогда

Возврат 'М';

ИначеЕсли Найти(окончанияЖенскихФамилий, ',' + окончание2 + ',') > 0 ИЛИ Найти(окончанияЖенскихФамилий, ',' + окончание3 + ',') > 0 Тогда

Возврат 'Ж';

КонецЕсли;

Если Имя <> '' Тогда окончание1 = Сред(Имя, СтрДлина(Фамилия));

Если окончание1 = 'а' ИЛИ окончание1 = 'я' ИЛИ окончание1 = 'е' Тогда

Возврат 'Ж';

Иначе

Возврат 'М';

КонецЕсли;

КонецЕсли;

Возврат '';

КонецФункции

Приложение 1.7

Фрагмент кода процедуры «ФормированиеУчебныхГрупп» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Процедура ФормированиеУчебныхГрупп(ТЗ)

ТЗ.Колонки.Добавить('РангИнЯз');

Для каждого СтрокаТЗ Из ТЗ Цикл

Если СтрНайти(СтрокаТЗ.ПервыйИностранныйЯзык, 'англ') > 0 Тогда

СтрокаТЗ.РангИнЯз = 2;

ИначеЕсли СтрНайти(СтрокаТЗ.ВторойИностранныйЯзык, 'англ') > 0 Тогда

СтрокаТЗ.РангИнЯз = 1;

ИначеЕсли СтрНайти(СтрокаТЗ.ПервыйИностранныйЯзык, 'англ') = 0 И СтрНайти(СтрокаТЗ.ВторойИностранныйЯзык, 'англ') = 0 Тогда

СтрокаТЗ.РангИнЯз = 0;

КонецЕсли;

КонецЦикла;

ТЗНазванияГруппИКоличествоКопия = ТЗНазванияГруппИКоличество.Скопировать();

Для Ранг = 0 По 3 Цикл

ПараметрыОтбораПоРангу = Новый Структура;

ПараметрыОтбораПоРангу.Вставить('РангИнЯз', Ранг);

МассивСтрокРангаИнЯз = ТЗ.НайтиСтроки(ПараметрыОтбораПоРангу);

Для каждого СтрокаТЗ Из МассивСтрокРангаИнЯз Цикл

СтрокаТЗ.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЦикла;

КонецЦикла;

КонецПроцедуры

Приложение 1.8

Фрагмент кода процедуры «ФормированиеУчебныхГрупп» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Процедура ФормированиеУчебныхГрупп(ТЗ)

ТЗТезкиИГруппы = ТЗНазванияГруппИКоличество.Скопировать();

Для каждого СтрокаТЗ Из ТЗ Цикл

ТЗТезкиИГруппы.Колонки.Добавить('КоличествоСтудентовТезок', Новый ОписаниеТипов('Число'));

ПараметрыОтбораПоФамилии = Новый Структура;

ПараметрыОтбораПоФамилии.Вставить('Фамилия', СтрокаТЗ.Фамилия);

СтрокиТезки = ТЗ.НайтиСтроки(ПараметрыОтбораПоФамилии);

Для каждого СтрокаТезки Из СтрокиТезки Цикл

Если ВидФормирования = 0 Тогда

Если СтрокаТезки.ВариантГруппы1 <> Справочники.УчебныеГруппы.ПустаяСсылка() Тогда

СтрокаТЗТезкиИГруппы = ТЗТезкиИГруппы.Найти(СтрокаТезки.ВариантГруппы1, 'НазваниеГруппы');

СтрокаТЗТезкиИГруппы.КоличествоСтудентовТезок = СтрокаТЗТезкиИГруппы.КоличествоСтудентовТезок + 1;

КонецЕсли;

Иначе

Если СтрокаТезки.ВариантГруппы1 <> Справочники.УчебныеПодгруппы.ПустаяСсылка() Тогда

СтрокаТЗТезкиИГруппы = ТЗТезкиИГруппы.Найти(СтрокаТезки.ВариантГруппы1, 'НазваниеГруппы');

СтрокаТЗТезкиИГруппы.КоличествоСтудентовТезок = СтрокаТЗТезкиИГруппы.КоличествоСтудентовТезок + 1;

КонецЕсли;

КонецЕсли;

КонецЦикла;

ТЗТезкиИГруппы.Сортировать('КоличествоСтудентовТезок Возр');

СтрокаТЗ.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗТезкиИГруппы);

ТЗТезкиИГруппы.Колонки.Удалить('КоличествоСтудентовТезок');

КонецЦикла;

КонецПроцедуры

Приложение 1.9

Фрагмент кода процедуры «ФормированиеУчебныхГрупп» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Процедура ФормированиеУчебныхГрупп(ТЗ)

ТЗНазванияГруппИКоличествоКопия = ТЗНазванияГруппИКоличество.Скопировать();

ТЗНазванияГруппИКоличествоКопияАльтернатива = ТЗНазванияГруппИКоличество.Скопировать();

ПараметрыОтбораБюджетные = Новый Структура;

ПараметрыОтбораБюджетные.Вставить('ВидМеста', 'Бюджетные');

ПараметрыОтбораКоммерческие = Новый Структура;

ПараметрыОтбораКоммерческие.Вставить('ВидМеста', 'Коммерческие');

СтрокиБюджетные = ТЗ.НайтиСтроки(ПараметрыОтбораБюджетные);

СтрокиКоммерческие = ТЗ.НайтиСтроки(ПараметрыОтбораКоммерческие);

Если СтрокиБюджетные.Количество() > СтрокиКоммерческие.Количество() Тогда

Для каждого СтрокаБюджет Из СтрокиБюджетные Цикл

СтрокаБюджет.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЦикла;

Для каждого СтрокаКоммерческое Из СтрокиКоммерческие Цикл

СтрокаКоммерческое.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЦикла;

ИначеЕсли СтрокиБюджетные.Количество() < СтрокиКоммерческие.Количество() Тогда

Для каждого СтрокаКоммерческое Из СтрокиКоммерческие Цикл

СтрокаКоммерческое.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЦикла;

Для каждого СтрокаБюджет Из СтрокиБюджетные Цикл

СтрокаБюджет.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЦикла;

КонецЕсли;

КонецПроцедуры

Приложение 1.10

Фрагмент кода процедуры «ФормированиеУчебныхГрупп» модуля формы объекта: обработка «Помощник формирования учебных групп»

&НаСервере

Процедура ФормированиеУчебныхГрупп(ТЗ)

ТЗНазванияГруппИКоличествоКопия = ТЗНазванияГруппИКоличество.Скопировать();

Для каждого СтрокаТЗ Из ТЗ Цикл

Если НЕ ПустаяСтрока(СтрокаТЗ.ЖеланиеБытьС) Тогда

СтрокаТЗ.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

МассивФИО = СтрРазделить(СтрокаТЗ.ЖеланиеБытьС, ',', Ложь);

Для каждого СтрокаФИО Из МассивФИО Цикл

СтрокаФИО = СокрЛП(СтрокаФИО);

ФИО = СтрРазделить(СтрокаФИО, ' ', Ложь);

ПараметрыОтбораПоФИО = Новый Структура;

ПараметрыОтбораПоФИО.Вставить('Фамилия', ФИО[0]);

ПараметрыОтбораПоФИО.Вставить('Имя', ФИО[1]);

ПараметрыОтбораПоФИО.Вставить('Отчество', ФИО[2]);

МассивСтрокТЗФИО = ТЗ.НайтиСтроки(ПараметрыОтбораПоФИО);

Если МассивСтрокТЗФИО.Количество() > 0 Тогда

Если МассивСтрокТЗФИО[0].ВариантГруппы1 = Справочники.УчебныеГруппы.ПустаяСсылка() ИЛИ МассивСтрокТЗФИО[0].ВариантГруппы1 = Справочники.УчебныеПодгруппы.ПустаяСсылка() Тогда

МассивСтрокТЗФИО[0].ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЦикла;

ПараметрыОтбораНезаполненныхГрупп = Новый Структура;

Если ВидФормирования = 0 Тогда

ПараметрыОтбораНезаполненныхГрупп.Вставить('ВариантГруппы1', Справочники.УчебныеГруппы.ПустаяСсылка());

Иначе

ПараметрыОтбораНезаполненныхГрупп.Вставить('ВариантГруппы1', Справочники.УчебныеПодгруппы.ПустаяСсылка());

КонецЕсли;

МассивНезаполненныхГрупп = ТЗ.НайтиСтроки(ПараметрыОтбораНезаполненныхГрупп);

Для каждого СтрокаНезаполненныхГрупп Из МассивНезаполненныхГрупп Цикл

СтрокаНезаполненныхГрупп.ВариантГруппы1 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЦикла;

КонецЕсли;

КонецПроцедуры

ref.by 2006—2025
contextus@mail.ru