Алгоритм решения "задачи о зачислении"

Запуск алгоритма программы в базе данных для подсчета суммарных баллов групп вступительных испытаний согласно специальностей студентов по общеобразовательным предметам. Формирование отчета о зачислении по приоритетам специальностей последовательно.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 30.05.2017
Размер файла 17,4 K

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

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

Размещено на http://www.allbest.ru/

Алгоритм решения «задачи о зачислении»

С.Е. Григорчук

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

Например, в 2013 году абитуриент мог подавать результаты ЕГЭ в Ростовский государственный строительный университет (РГСУ) на любые 3 направления подготовки (специальности) из 23 имеющихся, причем в предыдущие годы таких специальностей могло быть 5 или 9 из 48 доступных специальностей. Направления подготовки (специальности) делятся на группы вступительных испытаний по общеобразовательным предметам. Например, одним специальностям соответствует группа испытаний Русский язык, Математика, Физика (РМФ), другим - Русский язык, Математика, Обществознание (РМО), третьим - Русский язык, Математика, Информатика (РМИ), четвертым - Русский язык, Литература, Обществознание (РЛО), пятым - Русский язык, Математика, Профессиональный экзамен (РМП).

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

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

Исходными данными программы является база данных (таблица Microsoft Excel) с полями фамилия, имя, отчество, баллами ЕГЭ по общеобразовательным предметам и профессиональному экзамену, полями признаков вне конкурса, целевой прием, оригиналы документов, а также полями приоритетов специальностей поступления, в которых указано сокращенное название специальности данного приоритета. Количество приоритетов специальностей как говорилось выше, может быть 3 или выше в зависимости от правил поступления. Приоритеты специальностей заполняются последовательно, начиная со специальности 1 приоритета и возможно до специальности с последним приоритетом. Кроме того, исходными данными программы являются контрольные цифры приема на направления подготовки (специальности), включая количество мест целевого приема, и минимальные проходные баллы по общеобразовательным предметам и профессиональному экзамену.

До запуска основного алгоритма программы в базе данных должны быть образованы поля суммарного балла для всех групп вступительных испытаний (например, РМФ, РМИ, РМО, РЛО, РМП). Для каждого абитуриента подсчитываются только суммарные баллы групп вступительных испытаний согласно специальностей приоритетов, причем такая сумма подсчитывается, если балл каждого вступительного испытания группы не меньше минимального проходного балла по этому испытанию.

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

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

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

Следующий шаг алгоритма цикл зачисления на каждую специальность с 1 приоритетом, исключая последнее место.

Далее идет цикл зачисления на оставшиеся места специальностей. Перебор специальностей осуществляется до тех пор, пока есть места на специальности и претенденты на них. В этом цикле применяется процедура обработки специальности, код которой на языке VBA (Visual Basic for Applications) приведен ниже. Кандидатами к зачислению на специальность назовем абитуриентов с одинаковыми суммарными баллами группы вступительных испытаний специальности и одинаковыми баллами профильного предмета специальности, претендующие на последнее место или места специальности. Претендентами к зачислению на специальность назовем абитуриентов, претендующих на места специальности вместо зачисляемых без оригиналов документов.

Public xlРезультаты As Excel.Workbook 'файл с результатами экзаменов

Public ОстМест(N) As Integer 'кол-во оставшихся мест по специальностям

Public НачНомТаб(N) As Integer 'номер строки таблицы специальностей (1-N), с которой начинается добавление данных

Public КолЗач As Integer 'кол-во зачисленных

Dim КолСтрСп(N) As Integer 'кол-во строк специальности

Dim ТекСтрСп(N) As Integer 'текущая строка специальности

Dim КолПрет(N) As Integer 'кол-во мест претендентов по специальности

Dim НеПонСпец(N) As Integer 'пока не понятно на счет зачисления текущего претендента - 1, не исследована - 0 (1-N)

Dim Проход As Integer

'обработка специальности по приоритету

Sub ОбрСпец(Спец As String, n As Integer, ByVal pr As Integer)

Dim i As Integer, j As Integer, k As Integer, num As Integer, РезПоиск As Integer, Nстр As Integer, СпецПр As String

Dim wf As Excel.Worksheet 'рабочий лист специальности

Dim wr As Excel.Worksheet 'рабочий лист не зачисляемой специальности

Dim Фам As String, Имя As String, Отч As String, Орг As String, z As String

Dim ТекФам As String, ТекИмя As String, ТекОтч As String

Set wf = xlРезультаты.Worksheets(Спец)

For i = ТекСтрСп(n) To КолСтрСп(n) 'есть претенденты

1: If ОстМест(n) = 0 Then Exit Sub

z = wf.Cells(i, 10)

If z = "" Then 'рассмотреть на зачисление

СпецПр = wf.Cells(i, pr + 5).Value 'чтение специальности приоритета

If СпецПр = Спец Then 'зачислить на эту специальность

If ОстМест(n) > 1 Then 'больше 1 места

2: Фам=wf.Cells(i,1): Имя=wf.Cells(i,2): Отч=wf.Cells(i, 3): Орг=wf.Cells(i,5) алгоритм зачисление специальность студент

If Орг = "" Then КолПрет(n) = КолПрет(n) + 1 'увеличение претендентов

wf.Cells(i, 10).Value = pr: wf.Cells(i, 11).Value = НачНомТаб(n)

НачНомТаб(n) = НачНомТаб(n) + 1: НеПонСпец(n) = 0

ОстМест(n) = ОстМест(n) - 1 'на одно место меньше

ТекСтрСп(n) = ТекСтрСп(n) + 1: КолЗач = КолЗач + 1

For j = pr + 1 To 3

СпецПр = wf.Cells(i, j + 5).Value

If СпецПр = "" Then Exit For 'j

'исключаем из рассмотрения на другую специальность за ней

num = NumSpec(СпецПр): НеПонСпец(num) = 0

Set wr = xlРезультаты.Worksheets(СпецПр)

For k = 2 To КолСтрСп(num)

ТекФам=wr.Cells(k,1):ТекИмя = wr.Cells(k,2):ТекОтч = wr.Cells(k,3)

If ТекФам = Фам And ТекИмя = Имя And ТекОтч = Отч Then

wr.Cells(k, 10) = 0: wr.Cells(k, 12) = pr: Exit For 'k

End If

Next k

Next j

Else 'последнее место

Select Case ФормКанд(Спец, n) 'есть кандидаты на специальность

Case 0 'не было кандидатов на специальность

GoTo 2 'зачислять последнего

Case 1 'кандидаты на специальность ниже последнего зачисляемого

ОстМест(n) = 0

ТекСтрСп(n) = ТекСтрСп(n) + 1

If pr < 3 Then pr = pr + 1 Else Exit Sub

СпецПр = wf.Cells(i, pr + 5).Value 'чтение специальности

'следующего приоритета

If СпецПр = "" Then Exit Sub

Спец = СпецПр: n = NumSpec(СпецПр): НеПонСпец(n) = 0: Exit Sub

Case 2 'кандидаты на специальность выше последнего зачисляемого

ОстМест(n) = 0: ТекСтрСп(n) = ТекСтрСп(n) + 1

If Спец = "" Then Exit Sub: n = NumSpec(Спец): Exit Sub

Case 3 'возможны кандидаты на специальность

If n<23 Then n=n + 1 Else n=1 'переход на следующую специальность

Спец = ИмяСпец(n): НеПонСпец(n) = 0: Exit Sub

End Select

End If 'конец последнего места

Else 'другая специальность

num = NumSpec(СпецПр)

If ОстМест(num) = 0 Then 'нельзя зачислить - нет мест

3: If pr < 3 Then

pr = pr + 1: GoTo 1

End If 'pr

Else 'есть места на другую специальность

Фам = wf.Cells(i, 1): Имя = wf.Cells(i, 2): Отч = wf.Cells(i, 3)

'попадает ли в область зачисления

4: РезПоиск = ПоискМестаСпец(СпецПр, num, Фам, Имя, Отч, Nстр)

Select Case РезПоиск

Case 0 'не найден на специальности или не может быть зачислен на

'другую специальность

Проход = 0: GoTo 3

Case 1 'на текущую специальность не зачислять

НеПонСпец(n) = 0

For j = pr + 1 To 3

СпецПр = wf.Cells(i, j + 5).Value

If СпецПр = "" Then Exit For 'j

'исключаем из рассмотрения на другую специальность за ней

num = NumSpec(СпецПр)

Set wr = xlРезультаты.Worksheets(СпецПр)

For k = 2 To КолСтрСп(num)

ТекФам=wr.Cells(k,1): ТекИмя=wr.Cells(k,2): ТекОтч=wr.Cells(k,3)

If ТекФам = Фам And ТекИмя = Имя And ТекОтч = Отч Then

wr.Cells(k, 10) = 0: wr.Cells(k, 12) = pr: Exit For 'k

End If

Next k

Next j

ТекСтрСп(n) = ТекСтрСп(n) + 1: Проход = 0

Case 2 'пока не попадает

НеПонСпец(n) = 1: Проход = 0

ТекСтрСп(n) = i: Спец = СпецПр: n = NumSpec(СпецПр)

Exit For 'i

Case 3 'до зачислить

If Проход = 0 Then 'до зачислить на специальность

ДоЗачис СпецПр, num, Nстр - 1

GoTo 4

End If

НеПонСпец(n) = 1: Проход = 0: Exit Sub

End Select

End If

End If

pr = 1

Else '0 - не зачислять, 1-3 - зачислен с приоритетом 1-3

ТекСтрСп(n) = ТекСтрСп(n) + 1

End If

Next i

End Sub

функция формирования кандидатов на место специальности

Function ФормКанд(Спец As String, n As Integer) As Integer возвращает 0 - нет кандидатов, 1 - есть ниже последнего зачисляемого, 2 - есть выше последнего зачисляемого, 3 - все кандидаты ниже под вопросом

Function ПоискМестаСпец(Спец As String, n As Integer, Фам As String, Имя As String, Отч As String, ByRef Nстр As Integer) As Integer возвращает 0 - не может быть зачислен, 1 - будет зачислен на эту специальность, 2 - не понятно,3 -пока неизвестно может ли быть зачислен на эту специальность (могут отпасть выше его по списку).

Литература

1. Вирт Н. Алгоритмы и структуры данных [Текст] // М.: Мир, 1989. - 360 с.

2. Уокенбах, Джон. Excel 2010: профессиональное программирование на VBA.: [Текст] // М.: ООО “И.Д. Вильямс”, 2012. -- 944 с.

3. Кашаев С.М. Программирование в Microsoft Excel на примерах. [Текст] // СПб.: БХВ-Петербург, 2007. - 320 с.

4. Чернов А.В., Паращенко И.Г. Классификация моделей надежности программного обеспечения [Электронный ресурс] //«Инженерный вестник Дона», 2012, №4. - Режим доступа: http://www.ivdon.ru/magazine/archive/n4p2y2012/1319 (доступ свободный) - Загл. с экрана. - Яз. рус.

5. Ильичева О.А. Технология логического моделирования и анализа сложных систем [Электронный ресурс] //«Инженерный вестник Дона», 2012, №4. - Режим доступа: http://www.ivdon.ru/magazine/archive/n4p2y2012/1234 (доступ свободный) - Загл. с экрана. - Яз. рус.

6. Good I.J., Crook J.F. The enumeration of arrays and a generalization related to contingency tables. [Текст] // Discrete Math.-1977-v.19, № 1.-P.23-45

7. М. Холл Комбинаторика [Текст] // М.: Мир, 1970. - 419 с.

8. Shooman M.L. Operational Testing and Software Reliability Estimation During Program Developments - IEEE Computer Society, 1973.

9. Мартин Р. Чистый код: создание, анализ и рефакторинг. [Текст] //Библиотека программиста. - СПб: Питер, 2010. - 464 с.

10. Levitin A. Introduction to The Design & Analysis of Algorithms [Текст] // Addison-Wesley, 2003. - p. 576.

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

...

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

  • Задачи, решаемые методом динамического программирования. Основные этапы нахождения деревянного алгоритма решения задачи. Выполнение алгоритма Прима. Построение Эйлерового цикла. Решение задач средствами Excel. Алгоритм основной программы - Derevo.

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

  • Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.

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

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

    лабораторная работа [438,5 K], добавлен 16.07.2015

  • Создание и реализация алгоритма решения транспортной задачи методом наименьших стоимостей. Схема алгоритма основной программы. Основные шаги алгоритма решения транспортной задачи. Инструкция по эксплуатации программы и обзор результатов ее выполнения.

    курсовая работа [2,0 M], добавлен 12.02.2013

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

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

  • Этапы работы генетического алгоритма, область его применения. Структура данных, генерация первоначальной популяции. Алгоритм кроссинговера - поиск локальных оптимумов. Селекция особей в популяции. Техническое описание программы и руководство пользователя.

    реферат [1014,2 K], добавлен 14.01.2016

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

    лабораторная работа [1,6 M], добавлен 23.11.2014

  • Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.

    курсовая работа [2,5 M], добавлен 22.11.2012

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

    контрольная работа [150,4 K], добавлен 03.05.2014

  • Разработка базы данных "Студенты", которая позволяет производить операции с данными: регистрацию студентов в базе данных, а также удаление, изменение, резервное копирование информации о студентах. Алгоритм работы программы и вспомогательных процедур.

    курсовая работа [27,5 K], добавлен 06.02.2013

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

    курсовая работа [959,1 K], добавлен 12.12.2011

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

    курсовая работа [135,9 K], добавлен 28.12.2012

  • Составление алгоритма и разработка в среде программирования Delphi 7 программы, вычисляющей макроэкономические индексы цен. Реализация программы в виде 4 форм и 1 диалогового окна. Описание алгоритма решения задачи. Текст программы, руководство оператора.

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

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

    курсовая работа [882,1 K], добавлен 24.11.2014

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

    дипломная работа [559,3 K], добавлен 08.11.2010

  • Составление алгоритма сортировки линейной вставкой. Понятие однонаправленного циклического списка символов, реализация процедуры подсчета суммы элементов и составление алгоритма. Прямое представление дерева, алгоритм работы с ним на абстрактном уровне.

    контрольная работа [32,8 K], добавлен 20.01.2012

  • Разработка собственного алгоритма сжатия и восстановления данных с использованием возможностей языка C++ в рамках программного продукта "Архиватор". Разработка алгоритма программы, ее первый запуск и тестирование. Проверка работы архивации файлов.

    курсовая работа [325,7 K], добавлен 13.10.2015

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

    лабораторная работа [51,2 K], добавлен 14.05.2011

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

    контрольная работа [27,0 K], добавлен 09.05.2012

  • Разработка алгоритма, выполняющего поиск наилучшего решения на каждый ход в игре "крестики-нолики" (используя минимальный алгоритм). Обоснование выбора программных средств для решения задачи. Блок-схема интеллектуального алгоритма реализации программы.

    контрольная работа [380,0 K], добавлен 28.04.2014

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