Разработка математической модели задачи по формированию и реорганизации учебных групп
Анализ математических алгоритмов решения задачи, постановка задач по критериям. Выбор программной платформы для создания системы и описание 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