Пилипчук О.П., вчитель інформатики Гаврилівської ЗОШ Теофіпольського району Хмельницької області
Автоматизація роботи з розкладом уроків
Кому не доводилось складати розклад уроків, хоча б для невеликого навчального закладу, той не може повністю зрозуміти, що думає завуч про всіх, через кого в розклад доводиться вносити будь-які зміни. А особливо, якщо змінити щось потрібно терміново... Звичайно, це не стосується шкіл, які мають сучасні програмні засоби для адміністрування навчального процесу.А от тим хто має комп'ютери, не боїться їх, але змушений економити на програмному забезпеченні, можна спробувати власними силами полегшити собі життя.
Задача
Розробити електронну таблицю для редагування шкільного розкладу уроків. Передбачити можливість контролю за тим, щоб випадково вчителю не були поставлені одночасно два уроки врізних класах. Якщо ж такий збіг виник, то має бути видно, якого вчителя це стосується.
Розробка проекту
1. Для реалізації проекту досить двох аркушів електронної таблиці OpenOffice.org Calc. Назвемо їх Навантаження та Розклад.Відразу варто записати таблицю на диск (наприклад, під іменем Розклад.ods).
2. На аркуші Навантаження розмістимо список вчителів, класів та предметів, які вчителі викладають в цих класах:
Для подальшої роботи з таблицею зручно вказувати не повні прізвища та імена вчителів, а скорочені варіанти (наприклад, ініціали). Важливо:
- щоб один і той самий вчитель був "позначений" однаково;
- щоб починаючи з першого рядка у списку не було порожніх рядків;
- щоб рядок після списку вчителів був порожнім.
В інших стовпцях цього аркуша можна розмістити пояснення, розшифровки кодів вчителів тощо.
3. Головною частиною проекту є аркуш Розклад:
Тут слід подбати про простоту керування та наочність.
Ідея така:
- користувач вносить назву предмету у одну з відведених для цього комірок у лівій частині аркуша (стовпці С:М, починаючи з 5рядка);
- у відповідній комірці правої частини таблиці (стовпці N:X,починаючи з 5 рядка) має з'явитись код вчителя, який викладає той чи інший предмет;
- якщо після введення назви предмету у вчителя виник збіг уроків, відповідні комірки в обох частинах таблиці виділяються червоним кольором. Якщо збігу немає, то колір фону комірки змінюється на жовтий;
- якщо на аркуші Навантаження не знайдено запис про викладання даного предмету у вибраному класі, замість коду вчителя виводиться знак оклику.
Таким чином, за кольором фону комірок легко зорієнтуватись, де є збіги уроків, а за вмістом правої частини з'ясувати, у якого саме вчителя. Кольори фону та тексту будуть змінюватися, завдяки умовному форматуванню, тому зараз комірки правої частини таблиці форматувати не потрібно.
Вгорі таблиці можна розмістити коротку інструкцію. Комірки C4:M4 та N4:X4 містять списки класів, для яких складається розклад. В комірках стовпців A та B вказані назви днів та порядкові номери уроків. Комірки, в які будуть заноситись назви уроків, зафарбовані так, щоб було зручніше орієнтуватись.
4. У комірках стовпців N:X мають з'являтись коди вчителів, визначені за назвами предмету та класу. Наприклад, після внесення в комірку М7 слова"креслення", на підставі цієї назви та назви класу в комірці М4 на аркуші Навантаження (див. попередній малюнок) має бути знайдений рядок, у якому вказано, що креслення в 11 класі читає вчитель з кодом "ПОП". Саме цей код слід вивести в комірці Х7.
OpenOffice.org Calc дозволяє включати в документ макроси (функції та процедури), написані різними мовами програмування:
Реалізуємо пошук коду вчителя за допомогою функції мовою Basic. Для цього:
- скористаємось командою меню Сервіс/Макроси/Керування макросами/OpenOffice.org Basic;
- у вікні, що з'явиться, вкажемо, що створений макрос має зберігатись саме у документі (у лівій частині вікна секція Розклад.ods/Standard):
- клацнемо кнопку Створити (Создать) і в діалоговому вікні, що відкриється, вкажемо ім'я модуля до якого належатиме створюваний макрос. Можна залишити ім'я, запропоноване системою і клацнути ОК:
5. Після цього відкриється вікно середовища програмування для розробки макросу:
Запропонований системою шаблон процедури (рядки Sub Main... End Sub
) слід вилучити, натомість набравши такий текст функції (ліва колонка таблиці):
function teacher(T as string, C as string) as string |
Ім'я функції - teacher.
Вхідні параметри: Т - назва предмета, С - назва класу.
Повертає рядок - код вчителя. |
Dim oSheet, oCell
Dim rez as string
rez="!" |
rez - змінна, яка міститиме результат пошуку або знак оклику, якщо нічого не знайдено. |
oSheet= ThisComponent .Sheets.getByName("Навантаження") |
oSheet стає вказівником на аркуш "Навантаження" |
i=0
do |
Початок основного циклу |
oCell=oSheet.getCellByposition(0,i) |
oCell вказує на чергову клітинку першого стовпця |
ifoCell.getString()=T and oSheet.getCellByposition(1,i).getString()=C then |
Якщо в цій клітинці - потрібний предмет (Т), а в клітинці поруч - потрібний клас, то... |
rez=oSheet.getCellByposition(2,i).getString()
endif |
...зберегти у змінній rez знайдений код вчителя |
i=i+1 |
Перехід до наступного рядка |
loop while(oCell.getString()<>"") and (rez="!") |
Кінець циклу. Цикл повторюється, якщо поточна клітинка не порожня і ще не знайдений код вчителя |
teacher = rez
end function |
функція повертає значення змінної rez |
Тепер збережемо текст функції (меню Файл/Зберегти) і повернутись до роботи з аркушем Розклад.
6.В комірку N5 внесемо формулу =IF(C5<>"";TEACHER(C5 ; C$4);""). Перетягуючи маркер заповнення, скопіюємо формулу в комірки О5:Х5 - для всіх класів, а потім у комірки N6:Х52 (тобто для кожного дня тижня).
Якщо тепер в ліву частину таблиці вносити назви предметів, то в правій частині будуть з'являтись коди вчителів, які їх викладають. Код не з'явиться, якщо на аркуші Навантаження немає запису про те, хто викладає введений предмет у відповідному класі.
7. Залишилось подбати про збіги уроків (тобто, про їх відсутність :). Якщо, наприклад, значення в комірці N5 зустрічається ще в якійсь із комірок діапазону N5:X5, то це якраз і означає збіг уроків. Тут стане в нагоді умовне форматування комірок.
Але перш ніж його застосувати, налаштуємо стилі комірок. Спочатку створимо стиль оформлення для комірок, у яких спостерігається збіг уроків. Подайте команду меню Формат/Стилі... і клацніть правою кнопкою у робочому полі діалогового вікна Стилі та форматування, що з'явиться. Виберіть команду Создать... Відкриється діалогове вікно для налаштування параметрів нового стилю:
У ньому:
- на вкладці Керування (Управление) вкажемо ім'я стилю Дубль;
- на вкладці Ефекти шрифту оберемо жовтий колір;
- на вкладці Фон оберемо червоний колір і клацнемо ОК.
В такій самій послідовності потрібно створити стиль Пусто для клітинок, які не містять коду вчителя. Тут досить вибрати колір фону (в нашому випадку - синій).
8. Тепер виділимо комірку N5 і скористаємось командою меню Формат/Умовне форматування... :
Як видно з малюнка, формат комірки визначають дві умови:
- якщо логічна формула AND(COUNTIF($N5:$X5;N5)>1;N5<>"") є істинною, комірка матиме стиль Дубль. Тут перевіряється виконання одночасно двох умов: перша -COUNTIF($N5:$X5;N5)>1 - кількість у діапазоні $N5:$X5 комірок зі значенням таким, як у поточній (N5) більша ніж 1; друга- N5<>"" - комірка непорожня. Таким чином фіксується збіг уроків;
- якщо комірка порожня, то вона матиме стиль Пусто.
Підтвердимо налаштування кнопкою ОК.
9. Скопіюємо щойно створений умовний формат у всі комірки правої частини таблиці. Для цього потрібно:
- виділити комірку N5;
- клацнути кнопку Копіювання формату (див. мал);
- виділити перетягуванням діапазон комірок, до яких застосовується такий самий формат.
За потреби ці дії можна повторити кілька разів.
10. Буде зручно, якщо збіг позначатиметься в обох частинах таблиці, тому застосуємо умовне форматування до комірок з назвами предметів (починаючи з С5):
Так як і раніше, формат комірки С5 слід поширити на всі комірки для назв предметів.
Перспективи проекту
Ідеї, застосовані при розробці цього проекту дозволяють розвивати його далі. Перш за все, можна доповнити аркуш Розклад засобами, які інформуватимуть про наявність зайвих уроків. Для цього на аркуші навантаження потрібно додати стовпець з кількістю тижневих годин з кожного предмету, а і доповнити умови форматування комірок лівої частини аркуша.
Щоб включити в розклад уроки, які проводяться не кожного тижня, а чергуються у парні та непарні тижні, на аркуші доведеться на кожен з уроків відвести не один, а два рядки: один для парних тижнів, другий - для непарних.
Для того, щоб за заданим навантаженням скласти початковий варіант розкладу автоматично, потрібно написати окрему процедуру-макрос.
Звичайно, подібну таблицю можна реалізувати в середовищі популярного табличного процесора Microsoft Office Excel.
Интернет реклама