III Международный конкурс
научно-исследовательских и творческих работ учащихся
«СТАРТ В НАУКЕ»
 
     

СОЗДАНИЕ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ ОПОВЕЩЕНИЯ УЧАСТНИКОВ УЧЕБНОГО ПРОЦЕССА ОБ ИЗМЕНЕНИЯХ В РАСПИСАНИИ УРОКОВ
Суворов А.И.
Автор работы награжден дипломом победителя второй степени
Диплом школьника      Диплом руководителя
Текст научной работы размещён без изображений и формул.
Полная версия научной работы доступна в формате PDF


Введение

Проблема: для учеников или учителей, отсутствующих в школе по какой-либо причине, иногда оказывается невозможным своевременно узнавать об изменениях в расписании уроков при размещении изменений на бумажном носителе в здании школы.

Актуальность: во многих школах изменения в расписании публикуются на бумажном носителе, из-за чего могут возникать непреднамеренные пропуски и опоздания на урок.

Цель исследовательского проекта: разработка автоматизированной системы оповещения об изменении в расписании уроков.

Исходя из цели исследования были поставлены следующие задачи:

  1. определить платформу, которая наиболее распространена на мобильных устройствах учащихся и учителей нашего образовательного учреждения;

  2. составить схему обмена данными между web-сервисами и мобильным приложением;

  3. создать web-сервисы для административного работника, который будет вносить изменения в расписании и для участников образовательного процесса, которые будут являться потенциальными пользователями этого приложения;

  4. разработать мобильное приложение для наиболее распространенной платформы.

Объект исследования: расписание уроков в образовательном учреждении.

Предмет исследования: создание мобильного приложения, позволяющего своевременно информировать об изменениях в расписании.

Методы исследования: анкетирование, информационное моделирование и компьютерный эксперимент.

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

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

Основная часть

Определение наиболее распространенной платформы

При разработке данной автоматизированной системы целью было создание комплексной системы, состоящей из мобильного приложения и web-сервиса, используемого для связи всех устройств, с установленным мобильным приложением, с базой данных расписаний школы.

Перед началом разработки приложения было запущено анкетирование1 с помощью сервиса Google для определения наиболее распространенной платформы:

Вывод: из диаграммы видно, что наиболее активными участниками анкетирования стали родители, учителя и учащиеся 5-9 классов, так как для этих групп участников образовательного процесса важно быть проинформированными обо всех изменениях в расписании.

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

Вывод: исходя из результатов анкетирования, получаем, что операционная система Android (версии – 4.4 и выше) наиболее популярна среди потенциальных пользователей. Именно поэтому она и была выбрана в качестве целевой.

Схема обмена данными

Для обеспечения целостной автоматизированной работы системы была разработана следующая схема обмена данными:

После получения сервером от администратора информации об изменениях в расписании, в базу данных системы вносится информация об этих изменениях. С этого момента обновленное расписание становится доступным для просмотра для всех пользователей. После этого сервер определяет отдельные группы пользователей, которых коснутся изменения и посылает запрос на рассылку оповещений в систему OneSignal.com, откуда оповещения расходятся по целевым устройствам. Мобильные устройства пользователей при смене режима просмотра расписания автоматически перерегистрируются в системе.

Данная схема обеспечивает связь между всеми компонентами системы. И благодаря тому, что обмен данными на всех этапах происходит по защищенному протоколу HTTPS, она полностью удовлетворяет всем требованиям безопасности.

Создание Web-сервиса

Web-сервис имеет два режима работы: административный (рис 2.1) и пользовательский (рис 2.2).

Доступ в административный режим осуществляется по логину и паролю. В системе поддерживается возможность создания нескольких административных учетных записей.

Пользовательский режим в свою очередь включает в себя два режима просмотра расписания: ученический (расписание для одного класса) и учительский (расписание для одного учителя). Изменения отображаются в обоих режимах сразу после внесения изменений через административный профиль.

Серверная часть Web-сервиса реализована на языке программирования PHP с использованием СУБД MySQL. Пользовательская часть реализована с помощью языка разметки HTML с использованием технологий JavaScript и jQuery и Фреймворка Bootstrap.

Для связи всех элементов системы используется API на языке PHP. PHP скрипт по запросу получает данные из базы данных и отправляет их в формате JSON (Приложение 3).

Для отправки информации об изменениях на устройство используются PUSH уведомления. Для этого используется технология OneSignal.com.

Вывод: web-версия полностью реализует возможность просмотра расписания и внесения в него изменений.

Разработка мобильного приложения

Для разработки мобильного приложения была выбрана официальная среда Android Studioв совокупности с языком программирования Java, т.к. она является наиболее стабильной и актуальной средой для разработки под операционную систему Android.

Приложение поддерживает 2 режима просмотра расписания:

  • для выбранного класса (рис 2.3);

  • для выбранного учителя (рис 2.4).

Рисунок 2.3 Интерфейс приложения длякласса

Рисунок 2.4 Интерфейс приложения для учителя

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

Заключение

В начале исследовательского проекта нами была поставлена цель по разработке автоматизированной системы оповещения об изменении в расписании уроков. При движении к нашей цели исследования были решены такие задачи, как: определение платформы, которая наиболее распространена на мобильных устройствах учащихся и учителей нашего образовательного учреждения; создание web-сервиса для административного работника, который будет вносить изменения в расписании и для участников образовательного процесса, которые будут являться потенциальными пользователями этого приложения; и, наконец, создание мобильного приложения.

После апробации системы была определена стратегия её дальнейшего развития:

  1. Создание версий приложения для операционных систем Windows Phone и iOS.

  2. Реализация системы SMS оповещений.

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

  4. Возможность подключения других образовательных учреждений.

  5. Интеграция с системой Dnevnik.ru.

Библиографический список

  1. https://developer.android.com/index.html

  2. https://developer.android.com/studio/index.html

  3. https://ru.wikipedia.org/wiki/Android

  4. https://ru.wikipedia.org/wiki/Android_Studio

Приложение 1

Результаты анкетирования

К какой категории участника образовательного процесса Вы относитесь:

Есть ли у Вас смартфон?

К какому семейству принадлежит операционная система Вашего смартфона?

Какая версия ОС установлена на вашем смартфоне

администрация

Да

Android

Android 4.4.x

родитель

Нет

   

родитель

Да

Android

Android 5.0

родитель

Да

Android

Android 4.1.x

родитель

Да

Android

Android 4.0.3 - 4.0.4

родитель

Нет

   

родитель

Нет

   

родитель

Да

Android

Android 6.0

родитель

Да

Android

Android 4.1.x

родитель

Да

Android

Android 4.4.x

родитель

Да

Android

Android 4.1.x

родитель

Нет

   

родитель

Да

Android

Android 6.0

родитель

Да

Android

Android 4.4.x

родитель

Да

iOS (Apple iPhone)

iOS 10.x

родитель

Да

Android

Android 4.1.x

родитель

Да

Android

Android 4.4.x

родитель

Да

Android

Android 4.1.x

родитель

Да

Android

Android 6.0

родитель

Да

iOS (Apple iPhone)

iOS 9.x

родитель

Да

Android

Android 4.4.x

родитель

Да

Android

Android 4.2.x

родитель

Да

Android

Android 7.0

родитель

Да

Android

Android 6.0

родитель

Да

Android

Android 4.2.x

родитель

Да

iOS (Apple iPhone)

iOS 10.x

родитель

Да

iOS (Apple iPhone)

iOS 10.x

родитель

Да

iOS (Apple iPhone)

iOS 9.x

родитель

Да

Android

Android 5.1

родитель

Да

Android

Android 4.4.x

родитель

Да

Android

Android 4.4.4

ученик 10-11 классов

Да

Android

Android 6.0

ученик 10-11 классов

Да

Android

Android 6.0

ученик 10-11 классов

Да

Windows Phone

Windows Phone 8

ученик 10-11 классов

Да

iOS (Apple iPhone)

iOS 9.x

ученик 10-11 классов

Да

Android

Android 5.1

ученик 10-11 классов

Да

Windows Phone

Windows Phone 8

ученик 10-11 классов

Да

iOS (Apple iPhone)

iOS 10.x

ученик 10-11 классов

Да

Android

Android 4.2.x

ученик 1-4 классов

Да

iOS (Apple iPhone)

iOS 5.x

ученик 1-4 классов

Да

Android

Android 4.4.x

ученик 1-4 классов

Да

Android

Android 6.0

ученик 1-4 классов

Да

Android

Android 4.4.x

ученик 1-4 классов

Да

Android

Android 2.2

ученик 1-4 классов

Да

Android

Android 4.2.x

ученик 1-4 классов

Да

iOS (Apple iPhone)

iOS 10.x

ученик 1-4 классов

Нет

   

ученик 1-4 классов

Да

Android

Android 6.0

ученик 1-4 классов

Да

Android

Android 4.1.x

ученик 1-4 классов

Да

Android

Android 5.0

ученик 1-4 классов

Да

iOS (Apple iPhone)

iOS 10.x

ученик 5-9 классов

Нет

   

ученик 5-9 классов

Нет

   

ученик 5-9 классов

Да

Android

Android 4.4.x

ученик 5-9 классов

Нет

   

ученик 5-9 классов

Да

iOS (Apple iPhone)

iOS 7.x

ученик 5-9 классов

Да

Android

Android 5.0

ученик 5-9 классов

Да

Android

Android 4.4.x

ученик 5-9 классов

Да

Android

Android 4.2.x

ученик 5-9 классов

Да

Android

Android 5.0

ученик 5-9 классов

Да

iOS (Apple iPhone)

iOS 10.x

ученик 5-9 классов

Да

Android

Android 4.4.x

ученик 5-9 классов

Да

Android

Android 4.2.x

ученик 5-9 классов

Да

Android

Android 6.0

ученик 5-9 классов

Да

Android

Android 4.2.x

ученик 5-9 классов

Да

Windows Phone

Windows Phone 8

ученик 5-9 классов

Да

Android

Android 4.4.x

ученик 5-9 классов

Да

Android

Android 5.1

ученик 5-9 классов

Да

Android

Android 5.0

ученик 5-9 классов

Нет

   

ученик 5-9 классов

Да

Android

Android 4.1.x

ученик 5-9 классов

Да

Android

Android 5.0

ученик 5-9 классов

Да

Android

Android 5.1

учитель

Да

Android

Android 4.4.x

учитель

Да

iOS (Apple iPhone)

iOS 9.x

учитель

Нет

   

учитель

Да

iOS (Apple iPhone)

iOS 9.x

учитель

Нет

   

учитель

Да

Android

Android 4.1.x

учитель

Да

Android

Android 4.2.x

учитель

Нет

   

учитель

Нет

   

учитель

Да

Android

Android 6.0

учитель

Да

Android

Android 6.0

учитель

Нет

   

учитель

Да

Android

Android 7.0

учитель

Да

Android

Android 6.0

учитель

Да

Android

Android 4.1.x

учитель

Нет

   

учитель

Нет

   

учитель

Да

Android

Android 4.4.x

учитель

Нет

   

учитель

Да

Android

Android 2.3.3 - 2.3.7

учитель

Да

Windows Phone

Windows Phone 8

учитель

Нет

   

Таблица 1.1 Результаты анкетирования

Приложение 2

Скриншоты различных режимов системы

Рисунок 2.1 Интерфейс административного режима

Рисунок 2.2 Интерфейс пользовательского режима

Приложение 3

Фрагменты исходного кода

{ "1": { //Понедельник "1": null, //0 урок "2": { //1 урок "1": { "name": "Математика", "class": "5Б", "time_begin": "09:00", "time_end": "09:45", "is_change": false } }, "3": { //2 урок "1": { "name": "Алгебра", "class": "7А", "time_begin": "10:00", "time_end": "10:45", "is_change": false } }, "4": { //3 урок "1": { "name": "Алгебра и начала", "class": "10Б", "time_begin": "11:00", "time_end": "11:45", "is_change": false } }, "5": {...}, //4 урок "6": {...}, //5 урок "7": null, //6 урок "8": null, //7 урок "9": null //8 урок }, "2": {...}, //Вторник "3": {...}, //Среда "4": {...}, //Четверг "5": {...}, //Пятница "6": {...} //Суббота}

Данные в формате JSON для учителей

{ "1": { //Понедельник "1": null, //0 урок "2": { //1 урок "1": { "name": "История России", "teacher": "Виолетта Витальевна Д.", "time_begin": "09:00", "time_end": "09:45", "is_change": false } }, "3": { //2 урок "1": { "name": "Литература", "teacher": "Светлана Владимировна А.", "time_begin": "10:00", "time_end": "10:45", "is_change": false } }, "4": { //3 урок "1": { "name": "Литература", "teacher": "Светлана Владимировна А.", "time_begin": "11:00", "time_end": "11:45", "is_change": false } }, "5": {...}, //4 урок "6": {...}, //5 урок "7": {...}, //6 урок "8": null, //7 урок "9": null, //8 урок "10": null //9 урок }, "2": {...}, //Вторник "3": {...}, //Среда "4": {...}, //Четверг "5": {...}, //Пятница "6": {...} //Суббота}

Данные в формате JSON для учеников

/** получениерасписаниядлякласса **/$classid = (int) $_GET['class'];$schoolid = (int) $_GET['school'];$d = new DateTime();$d->modify('last Sunday');for ($i = 1; $i getOne("SELECT max(`order_id`) FROM `main` WHERE `class_id`=?i and `day_id`=?i and `school_id`=?i", $classid, $i, $schoolid); $d->modify($wd); for ($j = 1; $j query("SELECT * FROM `main` WHERE `class_id`=?i and `day_id`=?i and `order_id`=?i and `school_id`=?i", $classid, $i, $j - 1, $schoolid); if (mysqli_fetch_array($timetable, MYSQLI_NUM) == null) { $var = $db->query("SELECT * FROM `changes` WHERE `order_id`=?i and `day`=?s AND `class_id`=?i", $j - 1, $d->format("Y-m-d"), $classid); if ($query != null) { foreach ($var as $query) { $less = ['name' => $query['name'], 'teacher' => $query['teacher'], 'time_begin' => $ar[$i][$j - 1][0], 'time_end' => $ar[$i][$j - 1][1], 'is_change' => true]; $lesso[$k] = $less; $k++; } } $pos++; }

$lessons[$j] = $lesso; $lesso = null; } $day[$i] = $lessons; $lessons = null;}echo json_encode($day);

Фрагмент API, который возвращает JSON расписание для учеников

if (!is_teacher) { url = String.format(host + ”&class=%d&school=%d", class_ + 1, school);} else { String teacher = MainActivity.teachers.get(class_); url = String.format(host + ”&teacher=" + teacher + "&school=%d", school);}Connection con = HttpConnection.connect(url);con.method(Connection.Method.GET).ignoreContentType(true).timeout(300000);Connection.Response resp = con.execute();String body = resp.body();ObjectMapper mapper = new ObjectMapper();for (int i = 1; i