В этом разделе мы рассмотрим еще одну возможность работы с расписанием. Рассмотрим лист с названием Отчет 2. Фактически это отчет, который позволяет показать загруженность фонда аудиторий по заявителям (кто использует фонд аудиторий больше, а кто меньше).
Если фонд аудиторий ограничен и между разными факультетами возникают противоречия по поводу его загрузки, представляет интерес такой сводный отчет, в котором наглядно отражены занятия по различным факультетам. Эта ситуация вполне типична для сегодняшнего дня, когда в вузах, наряду с бюджетным обучением, есть и коммерческое. Многие возникающие вопросы по фонду аудиторий могут быть успешно решены с помощью предлагаемого в этом разделе отчета.
На листе по горизонтали в пятой и шестой строках выводятся дни и время начала занятий (фактически в этих строках перечислены все занятия в течение недели). В первом столбце указаны все аудитории, которыми располагает учебное заведение. И если в определенный день и конкретное время в аудитории по расписанию поставлено занятие, то в соответствующей ячейке это отмечается определенной заливкой (для каждого факультета свой цвет заливки) и отображается количество студентов..
Рассмотрим программный код, реализующий построение данного отчета, и в качестве первого шага прокомментируем элементы управления.
В левом верхнем углу находится поле со списком (Name = L1). Этот элемент при открытии книги автоматически заполняется информацией об учебных неделях (процедура workBook_open). Справа от поля со списком располагается кнопка Заполнить (Name = coml), позволяющая заполнить лист информацией. В результате щелчка по этой кнопке ячейки листа заполняются информацией (количество занимающихся студентов и заявитель).
На этом листе мы легко можем посмотреть информацию о вместимости конкретной аудитории. Для этого нужно лишь щелкнуть по ячейке, содержащей номер аудитории.
Теперь прокомментируем некоторые программные конструкции, выполняемые по щелчку на кнопке Заполнить. Полный текст процедуры обработки щелчка по этой кнопке приведен в приложении 1. В начале процедуры в массиве colors устанавливаются цвета для заливки ячеек с заявками различных факультетов, что обеспечивает наглядность представления информации.
После установки заливки ячеек (определенный цвет связан с конкретным заявителем) сначала выполняется очистка области для вывода:
Range("a5:ZZ200").Select Selection.ClearContents
Также устанавливается белый цвет заливки для области, где будет присутствовать информация о занятиях:
Range("b7:ZZ200").Select
With Selection.Interior
.ColorIndex = 0
.Pattern = xlSolid
End With
После этого подсчитывается количество заявителей на втором листе:
N_Boss = О
While Worksheets(2).Cells(N_Boss + 2, 6).Value <> ""
N_Boss = N_Boss + 1
Wend
В качестве следующего действия на лист выводятся названия заявителей и соответствующие им цвета. Для вывода этой информации используются первая и вторая строки листа:
For i = 1 То N_Boss
Cells(2, 2 + i * 2).Select With Selection.Interior
.ColorIndex = colors (i)
Cells (1, 2 + i * 2).Value = Worksheets(2).Cells(i + 1, 6).Value
Next
Следующий фрагмент позволяет установить в пятой и шестой строках подписи время начала занятий:
St = 1
For I = 1 To N_Day
For j = 1 To N_Times
St = St + 1
Cells (5, st).Value = Worksheets (2).Cells (i = 1, 4).Value
Cells (6, st).Value = Worksheets (2).Cells (i = 1, 5).Value
На этом подготовительная часть для формирования отчета завершена, и далее заполнения отчета в цикле просматриваются все заявки. Если заявка обслужена (для нее подобрана аудитория) и на указанной неделе занятие по заявке проводится, то далее она анализируется. В противном случае иного отчета она не рассматривается.
В следующем фрагменте производится вычисление номера строки, где она а быть отражена:
Stroke = 0
For I = 1 To nom
If N_Ayd = CStr(Cells(i + 6, 1).Value) Then
Stroke = i + 6
Exit For
End if
Аналогично вычисляется значение столбца на листе АФ, где необходимо отобразить отданную заявку:
For m = 1 To DaysTimes
If CStr (Workssheets(1).Cells(i, 4).Value)_
= CStr (Cells(5, 1 + m). Value) Then
If CStr (Workssheets(1).Cells(i, 5).Value)_
= CStr (Cells(6, 1 + m). Value) Then
Stolbec = 1 + m
End If
Таким образом, мы определили ячейку на листе, где следует отразить информацию по данной заявке.
Следующее действие — закраска ячейки цветом того факультета, к которому данная заявка относится:
Name_Boss = CStr(Worksheets(1).Cells(i, 2).Value)
For nomer = 1 To N_Boss
If Name_Boss = CStr(Worksheets(2).Cells(nomer + 1, 6).Value) Then
Cells(stroka, stolbec).Select With Selection.Interior
.ColorIndex = colors(nomer)
.Pattern = xlSolid End With
Теперь осталось в выбранной ячейке указать количество студентов, занимающихся в аудитории. Программно это реализуется с помощью одной строки:
Cells(stroka, stolbec).Value = Cells(stroka, stolbec).Value +
Worksheets(1).Cells(i, 6).Value
Мы говорили, что на этом листе можно посмотреть информацию о вместимости аудитории. Для этого разработана следующая предопределенная процедура, которая выполняется при выделении той или иной аудитории. В результате необходимая информация выводится в окно для сообщений (листинг 21).
Листинг 21. Предопределенная процедура selectionСhaтge
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Вычисление строки и столбца выделенной ячейки
Stroka = ActiveCell.Row
Stolbec = ActiveCell.Column
If Stolbec <> 1 Then
‘ Информационное окно видимо только при выделении первого столбца
Infl.Visible = False
Elself Stroka > 6 Then
Infl.Visible = True
Infl.Text = "Вместимость " + _
Str(Worksheets(2).Cells(Stroka - 5, 2)) + "чел"
End Sub
Отчет по ресурсам фонда аудиторий
Важным представляется ответ на вопрос: каков свободный ресурс аудиторий в определенном интервале учебных недель? Ответ на него можно получить на девятом листе книги Microsoft Excel, который называется Отчет 3. По горизонтали на этом листе в пятой и шестой строках выводятся дни и время начала занятий (фактически в этих строках перечислены все занятия в течение недели), а в первом столбце указаны все аудитории, которыми располагает учебное заведение. В этом плане начало составления отчета ничем не отличается от предыдущего.
Однако теперь в сводной таблице выводится количество занятий в аудиториях в указанном интервале недель. При этом разная загруженность (различное количество занятий в выбранном интервале) дополнительно выделяется разными цветами. На листе реализованы градации цвета в зависимости от загруженности:
□ максимальная загруженность;
□ загруженность выше средней;
□ загруженность ниже средней;
□ в выбранном интервале недель нет занятий.
В этом случае пользователю часто достаточно взглянуть на отчет, чтобы определить, есть ли аудитории, скажем для организации дополнительной учебной программы.
Кроме цветовой и числовой информации в ячейках можно получить более детальную информацию. Например, чтобы уточнить, какими занятиями аудитория все-таки занята, потребуется всего лишь двойной щелчок на выбранной ячейке. На листе откроется текстовое окно, отображающее все занятия, соответствующие выбранной ячейке.
Примечание
Чтобы убрать это текстовое окно с экрана, нужно сделать в нем двойной щелчок.
На листе для работы с отчетом заложена еще одна интересная возможность, связанная с двумя кнопками — Подготовить к перемещению и Переместить. С помощью этих кнопок можно перемещать занятия из одних аудиторий в другие. Для этого нужно выделить исходную ячейку и щелкнуть на кнопке Подготовить к перемещению — информация о заявке по указанной ячейке зафиксируется во внутренней структуре данных (буфере). После этого пользователю нужно лишь выделить ячейку, куда он намеревается перенести занятие, и щелкнуть на кнопке Переместить.
В результате таких простых действий в отчете произошли изменения на первом листе заявок. Исходная заявка удалена, но при этом появилась.
Заметим, что алгоритм переноса заявки в новую аудиторию характеризуется определенным "интеллектом". Перед переносом заявки сначала анализируется возможность переноса — нет ли в этой аудитории занятий в рассматриваемые интервалы недель. Например, если мы переносим две заявки (в одной ячейке может быть несколько занятий, если они проводятся в разные недели) из одной аудитории в другую, то в случае невозможности переноса одной из них эта заявка остается без изменений.
Рассмотренный отчет, таким образом, кроме получения наглядной сводной информации по загрузке, позволяет оперативно менять аудитории в составленном расписании. Из отчета при необходимости можно быстро найти свободные классы для занятий и планировать циклы дисциплин на определенное время.
2.1.3.1 Блок – схема интерфейса
1
БД
2
таблица
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24