Uploaded by Виктор Рыков

Автоматизации отчётности преподавателя вуза по выполнению нагрузки

advertisement
УДК 004.43
Р. Р. БИКМЕТОВА, С. А. ЛАЗАРЕВ
bikmetova-regina@mail.ru, sergeyy.lazarev72@gmail.com
Науч. руковод. – к.ф-м.н. доц. В. И. РЫКОВ
Двухуровневая модель автоматизации отчётности
преподавателя
Аннотация: рассматривается методология автоматизации отчётности
преподавателя по выполнению нагрузки. Используются методы Excel и объектно
– ориентированных программирования на языке Python.
Ключевые слова: Python; кафедра; документооборот, отчётность преподавателя.
В
кафедральном
документообороте
предусмотрена
ежемесячная,
семестровая и годовая формы отчётности преподавателя о выполнении плановой
нагрузки. Статья содержит описание технологии автоматизации формирования
указанной отчётности на двух уровнях.
На первом уровне помесячные данные о выполнении нагрузки
преподавателем вносятся вручную, а итоговые семестровые результаты
формируются автоматически с контролем выполнения плана по карточке
учебной нагрузки и возможностью корректировки введённых данных.
На втором этапе автоматизации данные о помесячном выполнении
нагрузки берутся из расписания в личном кабинете преподавателя и вручную
вносятся только сведения о выполнении учебной нагрузки, не внесённой в
расписание, типа экзаменов и зачётов
Рассмотрим методику автоматизации формирования отчётности в
программе Excel. Создаётся книга Excel из 10 листов с именами месяцев и двух
листов семестров для отражения результатов выполнения нагрузки
Ежемесячная форма отчётности имеет вид (Рис.1) (часть позиций опущена)
Рис.1 Фактическое выполнение нагрузки за семестр
Вертикальное суммирование помещается в первой числовой строке - «Октябрь»,
поскольку общее число строк заранее неизвестно.
Автоматически оформляется итоговый документ вида (Рис.2) (часть
позиций опущена):
Рис.2 Фактическое выполнение нагрузки за месяц
В строке «Нужно» вручную приводятся данные из годового учебного
плана, во всех ячейках строки «Сентябрь», кроме ячейки «Всего» хранится
формула {=Сентябрь!D10:AA10}. Фигурные скобки показывают, что операция
выполняется над массивом данных. В нашем случае это итоговая строка листа
«Сентябрь» [1]. Аналогично оформляются строки остальных месяцев. В строке
«∑» выводится вертикальная сумма по месяцам, а в строке «Δ» объём
невыполненной нагрузки.
На следующем уровне автоматизации для формирования комплексного
отчёта используются программа, написанная на языке Python. В программе
используются данные официального расписания [2] в Excel формате и Excel файл образец отчёта (Рис.1, Рис.2). Для чтения и записи Excel файлов
используется библиотека OpenPyXL [3].
Расписание на семестр используется в формате файла программы Excel.
Содержимое ячеек файла расписания имеет вид (Рис.3).
Рис.3 Вид официального расписания
Первая неделя для осеннего семестра обозначает в календаре неделю с 1
сентября. Указание недель может иметь вид: «3», «2-4», «3, 4-6». Две подряд
лабораторные работы обозначают одно занятие длительностью 4 часа.
Далее по номеру и дню недели определяется дата занятия. Считывается
Excel – файл со структурой определяющий формат отчёта (Рис.1, Рис.2) и данные
заносятся в лист Excel файла, согласно месяцу проведения занятия, имени
группы и типу занятия с нарастающим итогом.
Приведём общие сведения по структуре программы. Средствами класса
Sheet файл расписания читается, содержание ячеек разбирается по предметам и
формируется список:
«'Объектно-ориентированный подход в инновационных технологиях',
‘ООП’, 'Дистанционно', 'Лекция', 'И-110Б', '23-30', 6, 2».
Последние две цифры списка обозначают день недели и длительность
занятия.
class Sheet:
self.dict_file_name = dict_file_name
""" Чтение всех ячеек расписания. Вводится по 7 ячеек из столбца k
таблицы расписания. n - номер строки, k - номер столбца
"""
owner_name = self.vsheet.cell(2, 1).value # Фамилия преподавателя
for k in range(2, 8): # Цикл по столбцам Excel листа расписания
for n in range(5, 12): # Цикл по строкам Excel листа расписания
sheet_base.append(long_name) #Добавить предмет в список
for i in range(1,5): # Цикл по строкам описания предмета
Результатом работы методов класса является список данных о занятии.
Следующий класс – Parsing анализирует массив списков данных о занятии
и формирует итоговый Excel отчёт.
class Parsing: # Класс разбора строк расписания полученных из класса Sheet
и формирования строк итогового комплексного отчёта
self.wb = load_workbook(schedRepIn) #Загрузка Excel структуры
результата
def subj_work(self,): # Базовая функция класса
# subjects - расписание по неделям в виде списка из класса Sheet
# sheet_base - строка данных расписания предмета из списка subjects
Функция преобразует строку в элемент словаря subj_strings.
# Словарь subj_strings{ s_head:s_hours} хранит строки расписания в
формате: ключ словаря, s_head - конкатенация строк s_data + s_group,
# Структура s_hours значений словаря subj_strings:
# словарь s_hours часов занятий по предмету в данный день.
#
Словарь s_hours имеет структуру {позиция s_pos: часы s_long}.
#
Позиция определяется по виду занятия subj_type в строке sheet_base.
#
При добавлении часов показания s_long суммируются.
#
Ключи словаря subj_string отсортированы по возрастанию.
month_work = int(s_date[5:7]) #Текущий номер месяца записи
if month_save != month_work : #Обработка перехода на другой месяц
Процедура list_change решает проблему перехода на январь в первом
семестре
n_list = self.list_change(n_list, month_start, month_work,
month_save)
self.vsheet.cell(n_str,n_row).value = s_date #Запись даты
s_group = s_key[10:len(s_key)]
self.vsheet.cell(n_str,n_row+1).value = s_group # Запись группы
s_hours = subj_strings[h_key] #Вложенный словарь часов по
предмету
for d_key in s_hours.keys(): #Цикл по занятиям на дату
q_shift = int(d_key)
#Сдвиг записи часов
q_long = int(s_hours[d_key]) #Количество часов
self.vsheet.cell(n_str,n_row+q_shift).value = q_long
# Запись
количества часов в строку в нужным сдвигом
n_str += 1 # Переход на следующую строку
Итоговая запись результата
self.Rep_write(self.schedRepOut, self.owner_name) #'schedRepOut.xlsx')
#Управление номером листа отчёта
def list_change(self, n_list, month_start, month_work, month_save):
Расширение возможностей программы:
 Вывод недельного расписания для преподавателя
 Вывод недельного расписания для студента
 Вывод расписания по дисциплинам для студента
В
рамках
использованной
технологии
предполагается
разработка
программы управления распределением нагрузки на кафедре и автоматизация
заполнения индивидуального учебного плана преподавателя.
СПИСОК ЛИТЕРАТУРЫ
1. Лидл Н. Excel для экономистов/ — «ЛитРес: Самиздат», 2020).
2. РАСПИСАНИЕ ЗАНЯТИЙ //URL:https://lk.ugatu.su/teacher/#timetable (дата обращения:
30.07.2021)
3. Работа с файлами Excel в Python //URL https://tokmakov.msk.ru/blog/item/71(дата
обращения: 30.07.2021)
Download