Разработка мобильного приложения: электронный журнал

Тип:
Добавлен:

Федеральное государственное автономное образовательное учреждение высшего образования

"Сибирский Федеральный Университет"

Институт космических и информационных технологий институт

Вычислительная техника

.03.01 Информатика и вычислительная техника

Бакалаврская работа

Разработка мобильного приложения: электронный журнал

Реферат

Выпускная квалификационная работа по теме "Разработка мобильного приложения: электронный журнал" содержит 28 страницы текстового документа, 10 использованных источников, 1 приложение, 20 иллюстраций.

МОБИЛЬНОЕ ПРИЛОЖЕНИЕ, ANDROID, ЭЛЕКТРОННЫЙ ЖУРНАЛ, РАСПИСАНИЕ, ПРЕДМЕТ, ГРУППА, СТУДЕНТ, ПРЕПОДАВАТЕЛЬ.

Цель: разработать мобильное приложение, позволяющее преподавателю просматривать расписание, вести учет посещаемости и успеваемости студентов.

Задачи: изучить предметную область, изучить аналоги приложения, разработать и протестировать приложение.

В результате работы было разработано приложение, позволяющее преподавателю просматривать свое расписание и вести учет посещаемости и успеваемости студентов.

Содержание

Введение

Анализ технического задания

.1 Техническое задание

.1.1 Наименование системы

.1.2 Назначение и цели создания системы

.1.3 Требования к системе

.2 Обзор существующих решений

. Разработка приложения

.1 Инструмент разработки

.2 Прецеденты

.3 Структура базы данных

.4 Исходные данные

. Тестирование

Заключение

Список использованных источников

Приложение

Введение

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

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

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

В качестве платформы для реализации приложения были выбраны мобильные устройства на базе Android. Android является самой популярной мобильной системой и позволяет покрыть большинство целевой аудитории.

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

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

1 Анализ технического задания

.1 Техническое задание

.1.1 Наименование системы

Полное наименование системы:

Приложение электронный журнал для учета посещаемости и выполнения студентами лабораторных работ для мобильных устройств на базе Android.

Краткое наименование системы:

Приложение электронный журнал

1.1.2 Назначение и цели создания системы

Назначение:

Электронный журнал предназначен для:

·Просмотра текущего расписания преподавателя

·Учета посещаемости студентов

·Учета выполненных работ студентом

Цель создания системы:

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

1.1.3 Требования к системе

Требование к функционалу

Система должна обладать следующим функционалом:

·Возможность войти в систему и выйти

·Просмотр расписания преподавателя в зависимости от четности недели

·Учет посещаемости студентов для каждого предмета

·Учет выполненных лабораторных и иных работ

·Добавление и удаление предметов по которым ведется посещаемость

·Добавление и удаление групп, обучающихся на определенном предмете

·Добавление и удаление студентов в группе

·Добавление и удаление лабораторных для предмета

·Возможность переименовать предмет, группу, студента или лабораторную

Требование к особенностям программы

Система должна обладать следующими особенностями:

·Автоматическое добавление журналов по предметам, основываясь на расписание преподавателя

·Автоматическое добавление групп, занимающихся на каждом предмете

·Автоматическое добавление дат, в которые проводится предмет

·Приложение запоминает последнего вошедшего пользователя

Приложение должно корректно выполняться на различных устройствах на базе Android версии 4.4 и выше. Вне зависимости от размеров и разрешения экрана интерфейс должен отображаться корректно и должны быть доступны все функциональные возможности.

Для работы приложения, мобильное устройство должно иметь доступ в интернет.

1.2 Обзор существующих решений

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

Первое проанализированное приложение называется Журнал преподавателя. Автор позиционирует это приложение как инструмент для ведения учета посещаемости и результативности работы студентов на занятиях. Бесплатная версия имеет ограничения по количеству создаваемых групп - не более 3, и количеству подгрупп - не более 2 для каждой группы. Кроме того, отключена функция импорта списка групп, подгрупп и студентов из CSV-файла. Неактивна также опция экспорта журнала в файл формата XLS (Excel). В платной версии приложения эти ограничения снимаются. Платную версию можно приобрести за 60 рублей. Интерфейс приложения изображен на рисунке 1.2.1. При пользовании этим приложением возникли трудности с заполнением журнала. Данные в приложении должны быть заполнены в определённом порядке. Журнал не может быть создан без предварительного создания группы, после создания группы приложение сообщает, что журнал не может быть создан без студентов, обучающихся в группе, и наконец, после создания студентов журнал успешно добавляется в приложение. Несколько раз приложение останавливало свою работу. А также не удалось выяснить каким образом отмечается успеваемость. По итогу пользования приложение не оправдало своей заявленной функциональности.

Рисунок 1.2.1 - Интерфейс приложения Журнал преподавателя

Вторым проанализированным приложением стал Журнал учителя. Данное приложение подходит как для преподавателей вузов, так и для учителей школ. Интерфейс приложения не адаптирован под разные разрешения экранов и отображается некорректно (рисунок 1.2.2).

Рисунок 1.2.2 - Интерфейс приложения Журнал учителя

Сложный интерфейс, не понятный на интуитивном уровне, усложняет пользование этим приложением.

Последним приложением стало приложение StudyJournal. Данная программа предназначена для преподавателей ВУЗов. Предоставляет возможность вести журналы посещаемости и успеваемости учащихся. Дополнительные возможности: настройка графического представления журнала (таблицы), импорт записей о студентах/группах из файлов, сохранение/восстановление базы данных (SD-card). Интерфейс представлен на рисунке 1.2.3.

Рисунок 1.2.3 - Интерфейс приложения StudyJournal

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

2. Разработка приложения

.1 Инструмент разработки

Средой разработки была выбрана программа AndroidStudio. Эта программа является официальной средой для разработки Androidприложений. Разработка в данной среде ведется с помощью языка Java.

2.2 Прецеденты

На рисунке 2.2.1 представлена use-caseдиаграмма системы. На ней изображены варианты использования системы.

Рисунок 2.2.1 - use-caseдиаграмма системы

Название прецедента: вход в систему.

Цель: войти в систему для получения доступа к основным функциям приложения.

Предусловия: ранее не было произведено входа в систему.

Главная последовательность:

·Преподаватель вводит свою фамилию и инициалы, нажимает кнопку войти

·Система успешно запускается и выводит расписание преподавателя на текущую неделю

Альтернативная последовательность (отсутствует интернет соединение):

·Преподаватель вводит фамилию и инициалы, нажимает кнопку войти

·Выводится сообщение о том, что отсутствует интернет соединение

Альтернативная последовательность (в базе расписания СФУ не существует данный преподаватель):

·Преподаватель вводит фамилию и инициалы, нажимает кнопку войти

·Выводится сообщение о том, что такого преподавателя не существует

Название прецедента: добавление или удаление предмета

Цель: добавление предметов преподавателя, которых нет в расписании на сайте sfu-kras.ru (таких как расписание заочных групп). Удаление предметов, которые не актуальны для преподавателя.

Предусловия: в навигационном меню выбран раздел "Журнал".

Главная последовательность (добавление нового предмета):

·На экране отображен список предметов, которые ведет преподаватель

·Пользователь нажимает кнопку "Добавить"

·Открывается диалоговое окно с полем для ввода названия добавляемого предмета и кнопкой "Добавить"

·Пользователь вводит название нового предмета и нажимает кнопку "Добавить"

·Новый предмет добавлен и отображен в списке предметов

Главная последовательность (удаление предмета):

·На экране отображен список предметов, которые ведет преподаватель

·Пользователь долгим нажатием на предмет вызывает контекстное меню и нажимает кнопку "Удалить"

·Происходит удаление предмета и появляется окно с обновленным списком предметов преподавателя

Название прецедента: добавление или удаление группы

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

Предусловия: был совершен выбор одного из предметов в списке предметов преподавателя.

Главная последовательность (добавление группы):

·На экране отображен список групп, которые обучаются на конкретном предмете

·Пользователь нажимает кнопку "Добавить"

·Открывается диалоговое окно с полем для ввода названия добавляемой группы и кнопкой "Добавить"

·Пользователь вводит название новой группы и нажимает кнопку "Добавить"

·Новая группа добавлена и отображена в списке групп конкретного предмета

Главная последовательность (удаление группы):

·На экране отображен список групп для конкретного предмета

·Пользователь долгим нажатием на группу вызывает контекстное меню и нажимает кнопку "Удалить"

·Происходит удаление группы и появляется окно с обновленным списком групп

Название прецедента: добавление или удаление студентов

Цель: добавление студентов в группы, удаление студентов, которые были отчислены, переведены в другую группу или по другим причинам.

Предусловия: была выбрана конкретная группа

Главная последовательность (добавление студента):

·На экране отображен список студентов, выбранной ранее группы

·Пользователь нажимает кнопку "Добавить"

·Открывается диалоговое окно с полем для ввода имени и фамилии студента и кнопкой "Добавить"

·Пользователь вводит имя студента и нажимает кнопку "Добавить"

·Новый студент добавлен и отображен в списке студентов выбранной группы

Главная последовательность (удаление студента):

·Пользователь долгим нажатием на студента вызывает контекстное меню и нажимает кнопку "Удалить"

·Происходит удаление студента и появляется окно с обновленным списком студентов

Название прецедента: отметить посещаемость

Цель: отметить посещаемость того или иного студента, на конкретном предмете

Предусловия: был выбран предмет, группа и студент

Главная последовательность:

·На экране отображен список дат, по которым проводится выбранный предмет

·При долгом нажатии на дату, открывается контекстное меню с выбором отметить присутствие или отсутствие студента

·Пользователь выбирает кнопку "Присутствовал"

·Выбранная дата помечается зеленым цветом

Альтернативная последовательность (выбранная дата отмечена зеленым цветом):

·На экране отображен список дат, по которым проводится выбранный предмет

·При долгом нажатии на дату, открывается контекстное меню с выбором отметить присутствие или отсутствие студента

·Пользователь выбирает кнопку "Отсутствовал"

·Выбранная дата помечается белым цветом

Название прецедента: выход

Цель: выйти из системы, для возможности зайти другому пользователю

Предусловие: был осуществлен вход в приложение

Главная последовательность:

·В меню навигации пользователь выбирает пункт "Выйти"

·Появляется окно входа в систему, предоставляется возможность войти новому пользователю

2.3 Структура базы данных

В Androidдля локального хранения и доступа к данным используется SQLite.

В базе данных хранятся данные о предметах(Subjects), группах(Grousp), связях предметов и групп(SubjectGroup), датах по каким дням проводится предмет(Dates), студентах(Students), посещаемости студентов(Attendance) и их успеваемости(Labs). Диаграмма базы данных представлена на рисунке 2.3.1.

Рисунок 2.3.1 - Диаграмма базы данных

При входе в приложение в таблицу Subjects автоматически добавляются предметы, которые ведет преподаватель, основываясь на расписании. Затем в таблицу Groups добавляются группы, которые занимаются у преподавателя, а такжев SubjectGroupдобавляются связи между группами и предметами, то есть какие группы занимаются на том или ином предмете. Также заполняется таблицаDates датами по каким дням проводится определенный предмет. Таблицы Students, Labsи Attendanceизначально пустые и заполняются по мере внесения данных пользователем.

Для доступа к базе используется класс GradebookDBHelper (код этого класса находится в приложении А).Этот класс наследуется от класса SQLiteOpenHelper. В методе onCreate(SQLiteDatabase)добавляются таблицы в базу данных.

2.4 Исходные данные

Данные о расписании, предметах и группах преподавателя берутся cофициального сайта СФУ по адресу #"justify">С помощью библиотеки jsoupпроисходит парсинг страницы с расписанием конкретного преподавателя, откуда берутся данные о предметах, группах, четности недели, связях предмет с группами. Все эти данные заносятся в базу данных SQLiteпри входе пользователя в систему.

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

3. Тестирование

При запуске приложения появляется окно авторизации, предлагающее ввести фамилию и инициалы преподавателя, пытающегося войти в систему. Были протестированы следующие варианты:

·Нажатие кнопки войти без ввода какой-либо информации

·Ввод фамилии для которой нет данных расписания на сайте sfu-kras.ru

·Вход без доступа в интернет

При первых двух вариантах на экран выводится сообщение о том, что такого преподавателя не существует. Без доступа в интернет, при нажатии на кнопку "Войти" выводится сообщение "Отсутствует интернет соединение" (рисунок 3.1).

Рисунок 3.1 - тестирование авторизации

Для тестирования приложения войдем под именем Казаков ФА. После успешного входа появляется окно с расписанием. Листая влево и вправо можно переключатся между днями недели (рисунок 3.2). Недостатком является то, что если у преподавателя по одной неделе есть предмет, а по другой нету, будет выводится пустое поле в ту неделю, когда предмета нету.

Рисунок 3.2 - Расписание преподавателя

Сделав слайд от левой стороны экрана вправо, откроется меню (рисунок 3.3) с выбором трех возможных вариантов: просмотр расписания, журналов и возможность выйти и зайти под новым именем.

Рисунок 3.3 - Боковое меню выбора

Выбрав пункт меню "Журнал", откроется список предметов, преподаваемых преподавателем (рисунок 3.4).

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

Рисунок 3.4 - Список предметов

Также в этом окне доступны функции добавления новых предметов, удаления и возможность переименовать предмет (рисунок 3.5).

Рисунок 3.5 - Функции для редактирования предметов

При нажатии на один из предметов, появляется окно с группами (рисунок 3.6), обучающимися на данном предмете. Группы также берутся из расписания преподавателя.

Рисунок 3.6 - Список групп, обучающихся на предмете

Сверив расписание и полученный список групп, убеждаемся в корректности добавления групп в приложение.

Также, как и в окне с предметами, в окне групп доступны функции удаления, добавления и возможность переименовать группу. Все функции работают корректно и без ошибок.

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

Рисунок 3.7 - Добавление студента

Все функции доступные в данном окне, такие как добавление, удаление и возможность переименовать, выполняются корректно и без ошибок.

При нажатии на определенного студента открывается список с датами, в которые в соответствии с расписанием проводится предмет. При долгом нажатии на дату открывается контекстное меню, позволяющее отметить присутствие студента в тот или иной день. Если отметить присутствие студента в тот или иной день, этот день закрасится зеленым цветом (рисунок 3.8).

Рисунок 3.8 - Функция учета посещаемости

В данном окне находится две вкладки. В одной отмечается посещаемость, в другой - выполнение лабораторных работ (рисунок 3.9). Перейти на другую вкладку можно нажав на нее, либо пролистнув по экрану.

Список лабораторных работ изначально пуст, добавить лабораторную можно с помощью кнопки "Добавить".

Рисунок 3.9 - список лабораторных работ

При долгом нажатии появляется контекстное меню с выбором действий: отметить выполнение или невыполнение лабораторной работы, переименовать или удалить работу (рисунок 3.10). Когда отмечают лабораторную работу как выполненную, она загорается зеленым цветом. Все функции работают корректно и без ошибок.

В результате тестирования ошибки не были обнаружены. Все необходимые функции работают исправно.

Заключение

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

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

Список использованных источников

1. Шилдт, Герберт Java: руководство для начинающих, 5-е изд.: Пер. с англ. - Москва: ООО "И.Д. Вильямс", 2015. - 624 с.

. Дейтел, ПолAndroidдля разработчиков: отдельное изд. / П. Дейтел, Х. Дейтел, А. Уолд. - Санкт-Петербург: Питер, 2016. - 512 с.

. JavaHTMLпарсер [Электронный ресурс] - Режим доступа: https://jsoup.org/

. Официальный сайт для Android-разработчиков [Электронный ресурс] - Режим доступа: https://developer.android.com/index.html

. Журнал преподавателя [Электронный ресурс] - Режим доступа: https://play.google.com/store/apps/details?id=fizika03.Teacher.demo

. Журнал учителя [Электронный ресурс] - Режим доступа: https://play.google.com/store/apps/details?id=fizika03.Teacher.demo

. StudyJournal [Электронный ресурс] - Режим доступа: https://play.google.com/store/apps/details?id=com.drprog.sjournal

. Техническое задание [Электронный ресурс] - Режим доступа: #"justify">Приложение А.

Листинг класса Gradebook DB Helper

public class GradebookDBHelper extends SQLiteOpenHelper {static final String DATABASE_NAME = "GradebookDatabase5";static final int DATABASE_VERSION = 15;static final String TABLE_SUBJECTS = "Subjects";static final String TABLE_GROUPS = "groups";static final String TABLE_STUDENTS = "Students";static final String TABLE_SUBJECTGROUP = "SubjectGroup";static final String TABLE_DATES = "Dates";static final String TABLE_ATTENDANCE = "Attendance";static final String TABLE_LABS = "Labs";static final String SUBJECTS_KEY_ID = "_id";static final String SUBJECTS_KEY_NAME = "subject";static final String GROUPS_KEY_ID = "_id";static final String GROUPS_KEY_NAME = "name";static final String STUDENTS_KEY_ID = "_id";static final String STUDENTS_KEY_NAME = "student";static final String STUDENTS_KEY_GROUPID = "groupid";static final String SUBJECTGROUP_KEY_ID = "_id";static final String SUBJECTGROUP_KEY_SUBJECTID = "subjectid";static final String SUBJECTGROUP_KEY_GROUPID = "groupid";static final String DATES_KEY_ID = "_id";static final String DATES_KEY_SUBJECTID = "subjectid";static final String DATES_KEY_DATE = "date";static final String ATTENDANCE_KEY_ID = "_id";static final String ATTENDANCE_KEY_STUDENTID = "studentid";static final String ATTENDANCE_KEY_DATE = "date";static final String ATTENDANCE_KEY_ATTENDED = "attended";static final String ATTENDANCE_KEY_SUBJECTID = "subjectid";static final String LABS_KEY_ID = "_id";static final String LABS_KEY_SUBJECTID = "subjectid";static final String LABS_KEY_NAME = "labname";static final String LABS_KEY_DONE = "done";GradebookDBHelper(Context context) {(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Overridevoid onCreate(SQLiteDatabase sqLiteDatabase) {.execSQL("create table " + TABLE_SUBJECTS + "(" +_KEY_ID + " integer primary key, " +_KEY_NAME + " text not null)");.execSQL("create table " + TABLE_GROUPS + "(" +_KEY_ID + " integer primary key, " +_KEY_NAME + " text not null)");.execSQL("create table " + TABLE_SUBJECTGROUP + "(" +_KEY_ID + " integer primary key, " +_KEY_SUBJECTID + " integer not null, " +_KEY_GROUPID + " integer not null, " +

"foreign key(" + SUBJECTGROUP_KEY_SUBJECTID + ") references " + TABLE_SUBJECTS + "(" + SUBJECTS_KEY_ID + "), " +

"foreign key(" + SUBJECTGROUP_KEY_GROUPID + ") references " + TABLE_GROUPS + "(" + GROUPS_KEY_ID + "))");.execSQL("create table " + TABLE_STUDENTS + "(" +_KEY_ID + " integer primary key, " +_KEY_NAME + " text not null, " +_KEY_GROUPID + " integer not null, " +

"foreign key(" + STUDENTS_KEY_GROUPID + ") references " + TABLE_GROUPS + "(" + GROUPS_KEY_ID + "))");.execSQL("create table " + TABLE_DATES + "(" +_KEY_ID + " integer primary key, " +_KEY_SUBJECTID + " integer not null, " +_KEY_DATE + " text not null)");.execSQL("create table " + TABLE_ATTENDANCE + "(" +_KEY_ID + " integer primary key, " +_KEY_STUDENTID + " integer not null, " +_KEY_DATE + " text not null, " +_KEY_ATTENDED + " integer not null, " +_KEY_SUBJECTID + " integer not null)");.execSQL("create table " + TABLE_LABS + "(" +_KEY_ID + " integer primary key, " +_KEY_SUBJECTID + " integer not null, " +_KEY_DONE + " integer not null, " +_KEY_NAME + " text not null)");

}

@Overridevoid onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {.execSQL("drop table if exists " + TABLE_SUBJECTS);.execSQL("drop table if exists " + TABLE_GROUPS);.execSQL("drop table if exists " + TABLE_STUDENTS);.execSQL("drop table if exists " + TABLE_SUBJECTGROUP);.execSQL("drop table if exists " + TABLE_DATES);.execSQL("drop table if exists " + TABLE_ATTENDANCE);.execSQL("drop table if exists " + TABLE_LABS);

onCreate(sqLiteDatabase);

}

}

Copyright © 2018 WorldReferat.ru All rights reserved.