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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 13.10.2016
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

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

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

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

Иначе

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

ТекущееКоличество = 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 = ПолучитьГруппуСтудента(ТЗНазванияГруппИКоличествоКопия);

КонецЦикла;

КонецЕсли;

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

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [1,3 M], добавлен 26.04.2015

  • Анализ разработки информационных систем для деятельности учебных курсов. Поиск и анализ языков программирования для реализации разработки. Разработка модели web-ресурса "Агрегатор учебных курсов". Создания основных функциональных назначений web-ресурса.

    отчет по практике [558,9 K], добавлен 25.05.2023

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

    курсовая работа [844,3 K], добавлен 16.06.2011

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

    презентация [327,0 K], добавлен 19.10.2014

  • Изучение особенностей создания алгоритмов вычислительных задач. Визуальное программирование стандартных компонентов среды программирования Delphi. Технология создания компонента Delphi для решения производственной задачи. Выполнение блок-схемы алгоритма.

    курсовая работа [638,0 K], добавлен 30.01.2015

  • Анализ автоматизируемых при разработке учебных планов с нормативными документами. Определение целевого сегмента пользователей. Разработка структуры базы данных и отчетных документов. Дизайн интерфейса. Процесс подготовки образовательных программ.

    дипломная работа [1,5 M], добавлен 19.01.2017

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

    лабораторная работа [310,6 K], добавлен 13.02.2009

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

    дипломная работа [3,1 M], добавлен 19.01.2017

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

    дипломная работа [232,4 K], добавлен 17.02.2015

  • Методика преподавания в высшей школе. Управление учебно-познавательной деятельностью. Требования к электронным учебникам и тестирующим программам, технологии их создания. Проектирование комплексов автоматизированных дидактических средств и учебных курсов.

    дипломная работа [535,1 K], добавлен 08.11.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.