Введение
Проблема: для учеников или учителей, отсутствующих в школе по какой-либо причине, иногда оказывается невозможным своевременно узнавать об изменениях в расписании уроков при размещении изменений на бумажном носителе в здании школы.
Актуальность: во многих школах изменения в расписании публикуются на бумажном носителе, из-за чего могут возникать непреднамеренные пропуски и опоздания на урок.
Цель исследовательского проекта: разработка автоматизированной системы оповещения об изменении в расписании уроков.
Исходя из цели исследования были поставлены следующие задачи:
определить платформу, которая наиболее распространена на мобильных устройствах учащихся и учителей нашего образовательного учреждения;
составить схему обмена данными между web-сервисами и мобильным приложением;
создать web-сервисы для административного работника, который будет вносить изменения в расписании и для участников образовательного процесса, которые будут являться потенциальными пользователями этого приложения;
разработать мобильное приложение для наиболее распространенной платформы.
Объект исследования: расписание уроков в образовательном учреждении.
Предмет исследования: создание мобильного приложения, позволяющего своевременно информировать об изменениях в расписании.
Методы исследования: анкетирование, информационное моделирование и компьютерный эксперимент.
При реализации данной системы будет использоваться официальная документация для выбранных языков программирования.
Реализация данного проекта позволит участникам образовательного процесса иметь актуальную информацию о расписании.
Основная часть
Определение наиболее распространенной платформы
При разработке данной автоматизированной системы целью было создание комплексной системы, состоящей из мобильного приложения и 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-сервиса для административного работника, который будет вносить изменения в расписании и для участников образовательного процесса, которые будут являться потенциальными пользователями этого приложения; и, наконец, создание мобильного приложения.
После апробации системы была определена стратегия её дальнейшего развития:
Создание версий приложения для операционных систем Windows Phone и iOS.
Реализация системы SMS оповещений.
Реализация нескольких режимов просмотра для одного устройства (ученик, учитель, родитель, редактор).
Возможность подключения других образовательных учреждений.
Интеграция с системой Dnevnik.ru.
Библиографический список
https://developer.android.com/index.html
https://developer.android.com/studio/index.html
https://ru.wikipedia.org/wiki/Android
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 |