Разработка учебного пособия по метрологии на платформе Андроид

Метрология в учебной программе. Обзор платформ, мобильных приложений и операционных систем. Компьютерные средства обучения. Блок-схема алгоритма работы модуля лекций и тестов. Проектирование базы данных. Реализация интерфейса и компонентов приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 2,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Выпускная квалификационная работа

Разработка учебного пособия по метрологии на платформе Андроид

Содержание

Введение

  • 1. Аналитический обзор
    • 1.1 Анализ предметной области
      • 1.1.1 Метрология в учебной программе
      • 1.1.2 Средства обучения
      • 1.1.3 Компьютерные средства обучения
    • 1.2 Обзор платформ
    • 1.3 Обзор мобильных приложений
    • 1.4 Обзор операционных систем
    • 1.5 Обзор средств разработки
    • 1.6 Анализ аналогов
      • 1.6.1 Метрология тесты
      • 1.6.2 Учебное пособие по финансовой грамотности
      • 1.6.3 Билеты ПДД 2019 и Экзамен от ГИБДД с Drom.ru
    • 1.7 Постановка задачи
  • 2. Проектирование
    • 2.1 Разработка структуры приложения
    • 2.2 Разработка алгоритмов работы приложения
    • 2.3 Проектирование интерфейса
      • 2.4 Проектирование базы данных
  • 3. Реализация
    • 3.1 Реализация компонентов приложения
    • 3.2 Реализация интерфейса
  • 4. Тестирование
  • Заключение
  • Список использованных источников
  • Приложение
  • Введение
  • В настоящее время рынок мобильных приложений стремительно растет. Обучающих приложений по разным сферам также становится все больше. В частности, в магазине мобильных приложений Google Play категория «обучающие» является одной из наиболее популярных [1]. Обучающие приложения распространяются, потому что становится популярной концепция инвестирования в себя - в свои знания, умения, навыки.
  • Электронные учебные пособия включают в себя не только текст, но и различные мультимедийные материалы. Систематизированный и наглядный материал помогает быстрее и лучше усвоить дисциплину. Кроме того, такие пособия более функциональны, они позволяют моделировать различные условия, менять параметры, заменяя работу с лабораторными установками.
  • Целью выпускной квалификационной работы (ВКР) является разработка учебного пособия по метрологии на платформе Android.
  • Сейчас учебные пособия по метрологии существуют в основном в книжном или в электронном варианте. Учебное пособие, разработанное в формате мобильного приложения, является отличной современной альтернативой. Приложение предназначено для студентов. Для них такой способ обучения является привычным и удобным.
  • Кроме того, создание мобильного приложения имеет ряд преимуществ. Во-первых, обучение с помощью приложения дает возможность рационально использовать такой важный ресурс, как время. Во-вторых, есть возможность обучаться в любом месте. В-третьих, мобильные устройства в качестве средства обучения хороши тем, что они малогабаритны и удобны. В-четвертых, при обучении в приложении обеспечивается обратная связь.
  • Для разработки мобильных приложений платформа Android является наиболее популярной и распространенной. Все вышеперечисленные достоинства определяют актуальность данной темы.
  • 1. Аналитический обзор
  • 1.1 Анализ предметной области
  • 1.1.1 Метрология в учебной программе
  • Метрология является важной наукой, цель которой - поддержание уровня точности измерений физических величин в разных сферах деятельности. В наше время с измерениями имеет дело практически любой человек, метрология актуальна как в быту, так и на производстве.
  • Метрология - дисциплина, включенная в рабочие программы многих технических специальностей. Дисциплина состоит из трех разделов: теоретическая, прикладная и законодательная.
  • Курс метрологии включает в себя лекции, комплекс практических и лабораторных работ, зачет и экзамен. Ниже представлен список тем, входящих в рабочую программу данной учебной дисциплины:

- введение (задачи, цель и предмет курса; основные понятия и определения; этапы развития метрологии);

- основные вопросы теоретической метрологии (аксиомы метрологии; измерительные шкалы; системы единиц физических величин; виды и методы измерений; условия измерений; средства измерений и их характеристики; основные вопросы теории погрешностей);

- законодательная метрология (нормативная база метрологии; метрологические службы; меры, принимаемые для обеспечения единства измерений);

- элементарные средства измерений (меры и устройства непосредственного сравнения с мерой: мосты переменного и постоянного тока, потенциометры; измерительные преобразователи);

- измерительные приборы (электромеханические измерительные приборы; электронные осциллографы; измерения с помощью осциллографа; цифровые измерительные приборы);

- измерительные установки и измерительные системы (измерительные установки и системы; системы автоматического контроля).

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

1.1.2 Средства обучения

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

Типология средств обучения представлена в таблице 1.1.

Таблица 1.1 - Типология средств обучения

Вид средства обучения

Примеры

Печатные

Учебники, учебные пособия

Электронные образовательные ресурсы

Мультимедийные учебники, сетевые образовательные ресурсы

Аудиовизуальные

Слайды, образовательные фильмы

Наглядные плоскостные

Плакаты, карты настенные

Демонстрационные

Гербарии, муляжи, макеты

Учебные приборы

Компас, барометр

Тренажёры и спортивное оборудование

Автотренажёры, спортивные снаряды

Учебная техника

Автомобили, тракторы

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

1.1.3 Компьютерные средства обучения

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

Приведём классификацию компьютерных средств обучения Башмакова И.А. и Башмакова А.И. [3].

По характеру дисциплины:

- технического содержания;

- гуманитарного содержания;

- естественнонаучного содержания.

По решаемым педагогическим задачам:

- средства практической подготовки:

1) компьютерные задачники (практикумы);

2) компьютерные тренажёры.

- средства технологической и теоретической подготовки:

1) компьютерные обучающие системы;

2) компьютерные учебники;

3) компьютерные системы контроля знаний.

- вспомогательные средства:

1) компьютерные справочники;

2) компьютерные лабораторные практикумы;

3) мультимедийные учебные занятия.

- комплексные средства:

1) компьютерные восстановительные курсы;

2) компьютерные учебные курсы.

По широте охвата учебного материала:

- интегральные;

- неинтегральные.

По уровню образования:

- для школьного образования;

- для начального и среднего профессионального образования;

- для высшего профессионального образования;

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

По использованию телекоммуникационных технологий:

- локальные;

- сетевые.

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

- мультимедийные;

- немультимедийные.

По характеру модели изучаемого объекта или процесса:

- использующие физические модели;

- использующие математические (программные) модели;

- сопряжённые с реальными объектами.

По виду пользовательского интерфейса:

- с традиционным графическим пользовательским интерфейсом;

- использующие технологии виртуальной реальности.

По реализации интеллектуальных функций:

- интеллектуальные;

- неинтеллектуальные.

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

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

1.2 Обзор платформ

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

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

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

Кроссплатформенные приложения - приложения, исходный код которых может быть исполнен сразу на нескольких платформах [4].

Распределение рынка устройств в мире на февраль текущего года следующее [5]:

- настольных компьютеров - 48.21%;

- мобильных устройств - 47.96%;

- планшетов - 3.83%.

Рынок мобильных приложений растет. В 2018 году в магазинах мобильных приложений Apple App Store и Google Play было зафиксировано 113 млрд загрузок приложений и игр на сумму $76 млрд, что соответственно на 10% и 20% больше показателей 2017 года. Такие данные были приведены в аналитической компании App Annie [6].

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

1.3 Обзор мобильных приложений

Виды мобильных приложений:

1. Веб-приложения. Иначе говоря, мобильные версии сайтов, запускаемые напрямую через браузер устройства. Минусами является ограниченный функционал.

2. Нативные приложения или приложения, разработанные под «родную» платформу, то есть Android, iOS или Windows. Они загружаются напрямую из местного магазина, оптимизированы с точки зрения взаимодействия с системой, расхода батареи и полноценного использования возможностей устройства.

3. Гибридные приложения - это некий компромисс между веб-приложениями и нативными, то есть загружаемые из магазина, имеющие оболочку, написанную на платформенном языке, но имеющие в той или иной степени веб-функционал [7].

1.4 Обзор операционных систем

Самыми популярными операционными системами для мобильных устройств являются Android и iOS.

По статистике за 2017 год на долю Android приходится 73.54% рынка, на iOS - 19.91%, оставшиеся 6.5% распределены между другими системами [8].

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

1.5 Обзор средств разработки

В качестве средств разработки рассмотрим Visual Studio вместе с Xamarin и Android Studio.

Xamarin - удобный набор инструментов для разработки кроссплатформенных мобильных приложений на C# с использованием .NET. Он поддерживает iOS, Android и Windows Phone. Для разработки кроссплатформенных приложений на Xamarin нужна среда разработки Visual Studio. Преимущества использования Xamarin.Forms:

- в процессе разработки создается единый код для всех платформ

- Xamarin предоставляет прямой доступ к нативным API каждой платформы;

- при создании приложений можно использовать платформу .NET и язык программирования C#, который является достаточно производительным [9][10].

Android Studio, в декабре 2014 года признанная Google официальной средой разработки под ОС Android, совершенствуется год от года. Такие её возможности, как визуальный UI-редактор и автодополнение кода, помогают сделать процесс разработки более комфортным. В комплекте с Android Studio идёт Android SDK -- набор инструментов для разработки под Android.

Java - официальный язык программирования, поддерживаемый Android Studio. По данным ежегодного опроса ресурса Stack Overflow, в 2018 году Java вошёл в пятёрку самых популярных языков программирования. На Java ссылается большинство официальной документации Google, а также много бесплатных библиотек и руководств [11].

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

1.6 Анализ аналогов

Так как существует только одно обучающее приложение по метрологии на платформе Android, стоит рассмотреть обучающие приложения и по другим темам, например, приложения «Метрология тесты», «Учебное пособие по финансовой грамотности» и «Билеты ПДД 2019 и Экзамен от ГИБДД с Drom.ru», выделив их достоинства и недостатки.

1.6.1 Метрология тесты

Приложение представляет собой набор тестов по метрологии. Главное меню приложения представлено на рисунке 1.1.

Достоинства:

- наличие достаточно большого количества вопросов;

- работает без подключения к интернету.

Недостатки:

- нет теоретического материала;

- выделено всего две темы тестирования;

- вопросы только с выбором ответа;

- в некоторых вопросах отсутствуют изображения, где они необходимы;

- некоторые варианты ответов повторяются;

- неудобный интерфейс;

- нельзя вернуться в главное меню из тестов;

- если пользователь не выбрал вариант ответа, ответ автоматически выбирается;

- результаты тестирования не сохраняются;

- тест нельзя продолжить при выходе из приложения.

Рисунок 1.1 - Главное меню приложения «Метрология тесты»

1.6.2 Учебное пособие по финансовой грамотности

Приложение разработано Экономическим факультетом МГУ имени М.В. Ломоносова. Главное меню приложения представлено на рисунке 1.2.

Достоинства:

- много теоретического материала по разным темам;

- возможность добавлять разделы в избранное;

- возможность менять размер шрифта.

Недостатки:

- нет тестов;

- может открываться с неправильной кодировкой;

- сложный интерфейс;

- не работает без подключения к интернету.

Рисунок 1.2 - Главное меню приложения «Учебное пособие по финансовой грамотности»

1.6.3 Билеты ПДД 2019 и Экзамен от ГИБДД с Drom.ru

Приложение для подготовки к сдаче экзамена в ГАИ. Главное меню приложения представлено на рисунке 1.3.

Достоинства:

Рисунок 1.3 - Главное меню приложения «Билеты ПДД 2019 и Экзамен от ГИБДД с Drom.ru»

- теоретический материал разбит на темы;

- есть тесты по каждой теме;

- можно добавлять в избранное вопросы;

- есть шкала выполнения (во время теста шкала заполняется зеленым и красным цветом в зависимости от того, правильный дан ответ или нет);

- можно пройти экзамен (тест из случайных вопросов);

- сохранение последнего результата теста;

- вывод результата в конце;

- статистика сохраняется;

- понятный удобный интерфейс.

Недостатки:

- теоретический материал не отображается без подключения к интернету.

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

1.7 Постановка задачи

Необходимо разработать учебное пособие по метрологии для студентов 2-3 курсов. Учебное пособие будет написано на мобильную платформу Android на языке Java. В качестве среды разработки выбрана Android Studio. Компиляция будет производиться с помощью Android SDK. Категория приложения - обучающее.

Функциональные требования к приложению:

- отображение меню;

- отображение теоретического материала (лекций и вопросов для самопроверки);

- отображение тестовых материалов (вывод тестов, вывод правильных ответов);

- отображение истории обучения.

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

Диаграмма вариантов использования представлена на рисунке 1.4.

Рисунок 1.4 - Use-case диаграмма

компьютерный обучение алгоритм интерфейс

2. Проектирование

2.1 Разработка структуры приложения

Обобщенная структура приложения представлена на рисунке 2.1.

Рисунок 2.1 - Структура приложения

Пользователь взаимодействует с приложением через пользовательский интерфейс. Через модуль лекций реализуется отображение лекций. Модуль тестирования отвечает за отображение тестов, прохождение тестирования и обработку результатов тестов. Модуль истории обучения отображает результаты по каждому тесту. В базе данных (БД) хранится все содержимое лекций, тестов, а также результаты тестирования. Модули лекций, тестирования и истории обучения манипулируют данными из БД с помощью модуля взаимодействия с БД, который, в свою очередь, взаимодействует с БД с помощью СУБД.

Архитектура Android-приложений является фреймворк-ориентированной. Это означает, что разработка приложений базируется на расширении классов и реализации интерфейсов данного фреймворка.

Android-приложения содержат следующие компоненты: файл манифеста, Java-классы и ресурсы, используемые в приложении.

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

Алгоритмы, необходимые для функционирования приложения:

- вывод списка лекций;

- вывод списка тестов;

- вывод лекции;

- прохождение теста;

- вывод тестового задания;

- вывод результатов теста;

- подведение итогов теста;

- вывод истории обучения.

Обобщенный алгоритм работы приложения представлен на рис. 2.2.

Рисунок 2.2 - Блок-схема алгоритма работы приложения

На рисунке 2.3 представлена блок-схема алгоритма работы модуля лекций, который раскрывает вызов внешней процедуры «Лекции» алгоритма, представленного на рисунке 2.2.

При открытии приложения перед пользователем появляется главное меню. В главном меню представлены следующие пункты: «Теория», «Тестирование» и «Результаты». Если пользователь в главном меню нажмёт кнопку «Назад» телефона, то приложение будет закрыто. При выборе пункта «Теория» происходит открытие нового экрана со списком разделов и лекций каждого раздела. При выборе пункта «Тестирование» происходит открытие нового экрана со списком разделов и тестов каждого раздела. При выборе пункта «Результаты» происходит открытие нового экрана, на котором представлены разделы и результаты в виде таблицы по каждому тесту соответствующего раздела. Если тест не был пройден, то он всё равно представлен в таблице, но без оценки. При закрытии вышеупомянутых экранов, пользователь возвращается в главное меню.

Рисунок 2.3 - Блок-схема алгоритма работы модуля лекций

Алгоритм работы модуля тестов работает аналогичным образом.

На рис. 2.4 представлена блок-схема алгоритма вывода списка лекций.

Рисунок 2.4 - Блок-схема алгоритма вывода списка лекций

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

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

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

Алгоритм прохождения теста может быть описан следующим образом. Загружается текущий вопрос. Пользователь может выбрать вариант ответа, может не выбирать ответ. Если ответ выбран, то появляется кнопка перехода к следующему вопросу. Если нажать кнопку «Вперед», то на экране появится следующий вопрос (если текущий не является последним). Если текущий вопрос был последним в тесте, то выводится результат теста. При нажатии кнопки «Назад» на экране появится предыдущий вопрос (если текущий не является первым). Если нажать кнопку «Назад» телефона, то тест закроется. На рисунке 2.5 представлена блок-схема алгоритма прохождения теста.

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

Рисунок 2.5 - Блок-схема алгоритма прохождения теста

2.3 Проектирование интерфейса

При открытии учебного пособия открывается главный экран приложения. Он представлен на рисунке 2.6.

Рисунок 2.6 - Макет главного экрана

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

В соответствии с правилами эргономичности интерфейса количество цветов на экране нужно ограничить до 4. Основным цветом фона будет белый, так как он привлекает внимание, а также создает подобие книги, второстепенный цвет- серый для объединения данных. Вверху располагается название приложения на зеленом фоне, этот цвет благоприятно воздействует на человека.

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

При нажатии на кнопку «Теория» открывается новое окно с теоретическим материалом. Весь материал разбит на разделы, в каждом из которых имеется определенный набор лекций. Это сделано для того, чтобы пользователь мог быстрее сориентироваться и найти нужный материал. Разделы и лекции выделены разными цветами для удобства пользователя. Макет окна «Теория» представлен на рисунке 2.7.

Рисунок 2.7 - Макет экрана «Теория»

Экран «Тестирование» выполнен аналогичным образом.

При нажатии на кнопку «История обучения» пользователю открывается новый экран, где представлены результаты прохождения тестов. Также, как и на предыдущих экранах, есть разбитие на разделы. Результаты оформлены в виде таблицы, что повышает удобочитаемость. В левый столбец заносится название теста, в правый - результат, полученный при последнем прохождении. Если тест пройдет на максимальное количество баллов, то справа добавляется звезда. Это некий элемент игры для того, чтобы заинтересовать пользователя.

Макет окна «История обучения» представлен на рисунке 2.8.

Рисунок 2.8 - Макет экрана «История обучения»

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

При нажатии на конкретный тест открывается окно, в котором представлено содержание первого вопроса теста. Сверху указано название темы тестирования. На экране расположены кнопки выбора вариантов ответа. Внизу располагаются кнопки «Назад» для перехода к предыдущему и «Вперед» для перехода к следующему вопросу. Кнопка «Назад» дает возможность пользователю изменить ответ на предыдущие вопросы. Кнопка «Вперед» появляется только при выборе варианта ответа.

Макет окна теста представлен на рисунке 2.9.

Рисунок 2.9 - Макет экрана «Тест»

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

2.4 Проектирование базы данных

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

1. Лекции

- идентификатор лекции;

- название лекции;

- содержание лекции;

- раздел, к которому относится лекция;

- порядковый номер лекции.

2. Разделы

- идентификатор секции;

- название секции;

- порядковый номер секции.

3. Тесты

- идентификатор теста;

- название теста;

- раздел, к которому относится тест.

4. Задания

- идентификатор задания;

- содержание задания;

- ответ на задание;

- тест, к которому относится задание.

5. Результаты

- идентификатор результата;

- название теста;

- результат.

На рисунке 3.2 представлена концептуальная модель базы данных.

Рисунок 3.2 - Концептуальная модель базы данных

3. Реализация

Процесс создания приложения для Android в Android Studio состоит из следующих этапов:

- написание интерфейса (в xml-файлах);

- написание операций (Activities) для интерфейса;

- заполнение манифеста Android-приложения;

- создание БД;

- написание класса для взаимодействия с БД (через СУБД);

- написание других вспомогательных классов.

Исходный код проекта представлен в приложении 1.

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

К основным Java-классам относятся View, Intent, ContentProvider, Context, BroadcastReceiver и другие.

Ресурсы включают в себя изображения, текстовые строки, объявления меню в виде XML файлов.

Исходный код находится в каталоге src\main. Здесь находятся все Java-классы. Структура каталога src\main приложения представлена на рис. 3.1.

Каталог res содержит структуру папок ресурсов приложения, например, drawable, layout, values. Структура данного каталога представлена на рис. 3.2.

В папках drawable содержатся используемые в приложении изображения. Папка layout содержит описание способов отображения Activities в виде XML файлов. Папке values хранит в себе константы различных типов.

3.1 Реализация компонентов приложения

Реализация компонентов приложения началась с реализации базы данных.

Рисунок 3.1 - Структура каталога src\main

Рисунок 3.2 - Структура каталога res

Платформа Android имеет встроенную поддержку СУБД SQLite. Для работы с ней в AndroidStudio в пакете android.database.sqlite определен набор классов. SQLite поддерживает типы TEXT (строки или символы в кодировке UTF-8, UTF-16BE или UTF-16LE), INTEGER (целочисленные значения), NULL (пустое значение), REAL (значение с плавающей точкой), NUMERIC (для хранения булевых значений, времени и даты), BLOB (бинарные данные).

Создадим таблицы, приведенные в предыдущем пункте, а именно sections, lections, tests, tasks, results. Для этого в проекте создадим класс DBHelper и заведем переменные, соответствующие полям каждой из таблиц.

Для манипуляции данными в классе DBHelper есть разные методы выборки, вставки и обновления. Для того, чтобы не работать с сырыми данными из таблиц, используются классы-сущности:

- Lection (представляет лекцию);

- Section (представляет раздел метрологии);

- Task (представляет одно задание теста);

- Test (представляет тест).

Рассмотрим подробнее структуру каждой таблицы.

Таблица sections нужна для хранения разделов лекций и тестирования.

В таблице 3.1 представлена информация о полях таблицы sections.

Таблица 3.1 - Информация о полях таблицы sections

Название поля

Тип поля

Дополнительные параметры

Описание

sections_id

integer

primary key

Ключевое поле таблицы разделов

sections_name

text

not null

Название раздела

sections_order

integer

not null

Порядковый номер раздела

Таблица lections нужна для хранения лекций.

В таблице 3.2 представлена информация о полях таблицы lections.

Таблица 3.2 - Информация о полях таблицы lections

Название поля

Тип поля

Дополнительные параметры

Описание

lections_id

integer

primary key

Ключевое поле таблицы лекции

lections_name

text

not null

Название лекции

lections_content

integer

not null

Содержание лекции

lections_id_section

integer

not null

Раздел, к которому относится лекция

lections_order

integer

not null

Порядковый номер лекции

Таблица results нужна для хранения результатов тестирования.

В таблице 3.3 представлена информация о полях таблицы results.

Таблица 3.3 - Информация о полях таблицы results

Название поля

Тип поля

Дополнительные параметры

Описание

results_id

integer

primary key

Ключевое поле таблицы результатов

results_id_test

integer

not null

Идентификатор теста, к которому относится результат

results_mark

integer

not null

Результат теста

Таблица tests нужна для хранения тестов.

В таблице 3.4 представлена информация о полях таблицы sections.

Таблица 3.4 - Информация о полях таблицы tests

Название поля

Тип поля

Дополнительные параметры

Описание

tests_id

integer

primary key

Ключевое поле таблицы тестов

tests_name

text

not null

Название теста

tests_id_section

integer

not null

Идентификатор раздела, к которому относится тест

tests_order

integer

not null

Порядковый номер теста

Таблица tasks нужна для хранения тестовых заданий.

В таблице 3.5 представлена информация о полях таблицы tasks.

Таблица 3.5 - Информация о полях таблицы tasks

Название поля

Тип поля

Дополнительные параметры

Описание

tasks_id

integer

primary key

Ключевое поле таблицы заданий

tasks_id_test

integer

not null

Идентификатор теста, к которому относится задание

tasks_content

text

not null

Содержание вопроса задания

tasks_answer

text

not null

Содержание ответа задания

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

- базы данных не существует;

- версия базы данных устарела;

- база данных существует и ее версия актуальна.

Для обработки вышеперечисленных ситуаций в класс DBHelper, который наследуется от SQLiteOpenHelper, определим методы для обновления и создания базы данных.

На рисунке 3.4 представлен код метода onUpgrade класса DBHelper для обновления версии БД.

Рисунок 3.4 - Метод OnUpgrade

На рисунке 3.5 представлен код метода для добавления раздела в БД.

Рисунок 3.5 - Метод addSection

На рисунке 3.6 представлен код метода добавления содержимого на примере таблицы разделов.

Рисунок 3.6 - Заполнение таблицы разделов

3.2 Реализация интерфейса

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

- MainActivity (главный экран);

- LectionsActivity (экран со списком лекций);

- LectionActivity (экран лекции);

- TestsActivity (экран со списком тестов);

- TestActivity (экран с тестом);

- ResultsActivity (экран с историей обучения).

В процессе переключения между экранами соответствующие модули (тестов, лекций и истории обучения) берут данные из БД.

При запуске приложения пользователь видит перед собой экран главного меню. Внешний вид данного экрана представлен на рисунке 3.7.

Главный экран создается в классе MainActivity.java при вызове метода onCreate. Согласно проекту интерфейса главного окна, на экран добавлен рисунок, а также три кнопки для каждого из модулей приложения. Рисунок добавлен из каталога res. При нажатии кнопки «Теория», «Тестирование» и «Результаты» реализуются соответственно методы onClickLections, onClickTests и onClickResults, которые вызывают нужный экран Activity. Заголовок экрана изменяется при открытии нового экрана.

Рисунок 3.7 - Главное меню

При нажатии на кнопку «Теория» открывается новое окно LectionsActivity со списком лекций. Разделы и лекции загружаются из базы данных. Они добавляются на экран через цикл. Для каждого раздела выводится список лекций, принадлежащих этому разделу. Разделы реализованы как textView, лекции как Button.

Внешний вид данного экрана представлен на рисунке 3.8.

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

Рисунок 3.8 - Экран «Теория»

При нажатии на кнопку «Тестирование» открывается новый экран TestsActivity. Разделы и тесты загружаются из базы данных. Для каждого раздела загружаются тесты, соответствующие этому разделу. Аналогично экрану «Теория» разделы добавляются как textView, тесты добавляются как Button.

Внешний вид данного экрана представлен на рисунке 3.10.

При выборе определенного теста открывается окно с первым вопросом теста. В тесте содержатся задания с выбором одного варианта ответа, а также с выбором нескольких вариантов ответа. Все вопросы загружаются из базы данных в случайном порядке. В зависимости от количества правильных ответов, ответы добавляются как radioButton (в случае одного правильного ответа) или как checkbox (если несколько правильных ответов). Варианты ответов располагаются также в случайном порядке. Внешний вид экрана «Тест» представлен на рисунке 3.11. Здесь можно увидеть вопрос с выбором одного варианта ответа.

Рисунок 3.9 - Экран лекции

На рисунке 3.12. представлен пример вопроса с выбором нескольких вариантов ответа.

Рисунок 3.10 - Экран «Тестирование»

После прохождения теста результат выводится на экран и сохраняется в БД. Также выводятся все вопросы данного теста с указанием верных ответов. При нажатии на кнопку «Результаты» открывается новое окно ResultsActivity с историей обучения. Для каждого раздела загружаются результаты тех тестов, которые принадлежат данному разделу. Результаты выводятся в виде таблицы: слева выводится название теста, справа - последний полученный результат. Фрагмент данного экрана представлен на рисунке 3.13.

Рисунок 3.11 - Вопрос с выбором одного варианта ответа

Рисунок 3.12 - Вопрос с выбором нескольких вариантов ответа

Рисунок 3.13 - Фрагмент экрана «Результаты»

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

Тестирование проводилось по следующим функциям:

- отображение выбранной лекции;

- переход по кнопкам;

- оценка задания с несколькими вариантами ответа;

- переход по кнопкам в тесте;

- оценка теста;

- хранение результатов.

Тестирование выбора лекции

Тест включает в себя проверку по двум функциям:

- тестирование кнопок перехода;

- отображение выбранной лекции.

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

Рисунок 4.1 - Диаграмма переходов состояний от главного меню до лекции 2

Тест заключается в проверке следующей последовательности шагов:

- открыть приложение (главное меню);

- нажать на кнопку «Теория»;

- выбрать лекцию 2.

Ожидается, что на экране должно отобразиться содержание лекции 2, в заголовке должно быть название данной лекции.

На рисунке 4.2 демонстрируется последовательность экранов, полученных при тестировании на каждом шаге.

Рисунок 4.2 - Результат тестирования выбора лекции

Результат тестирования выбора лекции соответствует ожидаемому.

Тестирование функции оценки задания с несколькими вариантами ответа

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

Для тестирования выберем тест с одним заданием с выбором нескольких вариантов ответа.

Условимся, что верные ответы будут под номерами 1 и 2. Всего 5 вариантов ответа. Неверные варианты 3, 4 и 5.

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

Таблица 4.1 - Тестирование задания с выбором нескольких ответов

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

Ожидаемый результат

Полученный результат

Критерий: покрытие выходных данных

Выбраны варианты ответа 3, 4, 5 (все неправильные)

Правильно 0 из 1

Правильно 0 из 1

Выбраны варианты ответа 1, 3 (правильный и неправильный)

Правильно 0 из 1

Правильно 0 из 1

Выбраны варианты ответа 1, 2, 3, 4 и 5 (все)

Правильно 0 из 1

Правильно 0 из 1

Выбраны варианты ответа 1 и 2 (только правильные)

Правильно 1 из 1

Правильно 1 из 1

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

Тестирование функции перехода по кнопкам в тесте

Это тестирование проверяет работу кнопок перехода к следующему и предыдущему заданиям. Протестируем работу интерфейса теста №1, в котором 7 вопросов. Тест включает следующие шаги:

- открыть тест №1;

- выбрать вариант ответа;

- перейти по кнопке «Вперед»;

- вернуться по кнопке «Назад»;

- перейти по кнопке «Вперед»;

- выбрать вариант ответа в данном и следующих вопросах;

- перейти по кнопке «Вперед».

Ожидаемый результат: на первом вопросе теста обе кнопки должны быть недоступны. При выборе варианта ответа появляется кнопка «Вперед». При нажатии на кнопку «Вперед» загружается следующий вопрос, должна появиться кнопка «Назад». Кнопка «Вперед» появляется только при выборе какого-либо варианта ответа. После нажатия на кнопку «Назад» должен произойти переход к предыдущему вопросу. Вариант ответа на него должен быть установлен. После выбора ответов на все вопросы на последнем (седьмом) вопросе при нажатии на кнопку «Вперед» выводится результат теста.

Полученный результат: совпал с ожидаемым.

Тестирование функции хранение результатов в таблице результатов

Данный тест включает в себя проверку теста и занесение результата в базу данных. Для тестирования выберем тест, состоящий из 7 вопросов. Зафиксируем состояние столбца с результатами таблицы результатов. Тестируемые случаи приведены в таблице 4.2.

Таблица 4.2 - Тестирование хранения результатов

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

Ожидаемый результат

Полученный результат

Критерий: покрытие выходных данных

Тест не проходили

Прочерк

+

Верно 0 вопросов из 7

0 из 7

+

Верно 3 вопроса из 7

3 из 7

+

Верно 7 вопросов из 7

7 из 7 и знак звездочки

+

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

Заключение

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

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

1. Most popular Google Play categories // App Brain.

2. Средства обучения // Wikipedia.

3. Башмаков А.И., Башмаков И.А. Разработка компьютерных учебников и обучающих систем. -- М.: Информационно-издательский дом «Филинъ», 2003. -- 616 с.

4. Web, desktop, mobile, or cross-platform: options for app developers // Learn to code with me.

5. Мировое распределение рынка персональных компьютеров, смартфонов, планшетов и игровых консолей // statcounter.

6. Мобильные приложения Мировой рынок // TADVISER.

7. Выбираем язык для разработки мобильных приложений // GeekBrains

8. Как iOS и Android разделили мобильный рынок // Apptractor.

9. Достоинства и недостатки Xamarin // habr.

10. Xamarin и кроссплатформенная разработка // METANIT.COM.

11. На чём пишут приложения под Android // LIVE TYPING.

Приложение

Исходный код проекта

1. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest

xmlns:android="http://schemas.android.com/apk/res/android"

package="com.dianakosareva.tutorialmetrology.activities">

<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

<activity android:name=".MainActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".LectionsActivity" />

<activity android:name=".LectionActivity" />

<activity android:name=".TestsActivity" />

<activity android:name=".TestActivity" />

<activity android:name=".ResultsActivity" />

</application>

</manifest>

2. MainActivity.java

package com.dianakosareva.tutorialmetrology.activities;

import android.content.Intent;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void onClickLections(View view) {

Intent intent = new Intent(this, LectionsActivity.class);

startActivity(intent);

}

public void onClickTests(View view) {

Intent intent = new Intent(this, TestsActivity.class);

startActivity(intent);

}

public void onClickResults(View view) {

Intent intent = new Intent(this, ResultsActivity.class);

startActivity(intent);

}

}

3. LectionActivity.java

package com.dianakosareva.tutorialmetrology.activities;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Typeface;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.util.TypedValue;

import android.widget.LinearLayout;

import android.widget.TextView;

import com.dianakosareva.tutorialmetrology.DBHelper;

import com.dianakosareva.tutorialmetrology.OutputHelper;

import com.dianakosareva.tutorialmetrology.XMLHelper;

import com.dianakosareva.tutorialmetrology.entities.Lection;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;

public class LectionActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_lection);

try {

DBHelper dbHelper = new DBHelper(this);

long id = getIntent().getExtras().getLong("lection_id");

Lection lection = dbHelper.findLectionById(id);

getSupportActionBar().setTitle(lection.getName());

addContent(lection);

} catch (Exception e) {

e.printStackTrace();

}

}

private void addContent(Lection lection) throws ParserConfigurationException, IOException, SAXException {

LinearLayout linearLayout = findViewById(R.id.lectionContent);

linearLayout.addView(OutputHelper.getHtmlTextView(this, lection.getContent()));

}

}

4. LectionsActivity.java

package com.dianakosareva.tutorialmetrology.activities;

import android.content.Intent;

import android.graphics.Color;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.TextView;

import com.dianakosareva.tutorialmetrology.Converter;

import com.dianakosareva.tutorialmetrology.DBHelper;

import com.dianakosareva.tutorialmetrology.entities.Lection;

import com.dianakosareva.tutorialmetrology.entities.Section;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class LectionsActivity extends AppCompatActivity {

Map<String, Long> nameToId;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_lections);

getSupportActionBar().setTitle(R.string.lections);

nameToId = new HashMap<>();

addLectionButtons();

}

public void onClickLection(View view) {

Button button = (Button) view;

Intent intent = new Intent(this, LectionActivity.class);

intent.putExtra("lection_id", nameToId.get(button.getText().toString()));

startActivity(intent);

}

private void addLectionButtons() {

LinearLayout layout = findViewById(R.id.lections);

DBHelper dbHelper = new DBHelper(this);

List<Section> sections = dbHelper.findAllSections();

List<Lection> lections = dbHelper.findAllLections();

int i = 0;

for (int j = 0; j < sections.size(); j++) {

Section section = sections.get(j);

TextView textView = new TextView(this);

textView.setText(section.getName());

textView.setPadding(Converter.dpToPx(10), Converter.dpToPx(10), Converter.dpToPx(10), Converter.dpToPx(10));

textView.setTextSize(18);

//textView.setBackgroundColor(Color.parseColor("#1fffff00"));

layout.addView(textView);

for (; i < lections.size(); i++) {

Lection lection = lections.get(i);

if (lection.getIdSection() == section.getId()) {

nameToId.put(lection.getName(), lection.getId());

Button button = new Button(this);

button.setText(lection.getName());

button.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

onClickLection(v);

}

});

layout.addView(button);

} else {

break;

}

}

}

}

}

5. ResultsActivity.java

package com.dianakosareva.tutorialmetrology.activities;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.graphics.Color;

import android.graphics.Typeface;

import android.os.Bundle;

import android.support.annotation.Nullable;

import android.support.v7.app.AppCompatActivity;

import android.util.TypedValue;

import android.view.Gravity;

import android.view.View;

import android.view.ViewGroup;

import android.widget.LinearLayout;

import android.widget.TableLayout;

import android.widget.TableRow;

import android.widget.TextView;

import com.dianakosareva.tutorialmetrology.Converter;

import com.dianakosareva.tutorialmetrology.DBHelper;

import com.dianakosareva.tutorialmetrology.entities.Section;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.GregorianCalendar;

import java.util.List;

import java.util.TimeZone;

public class ResultsActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_results);

getSupportActionBar().setTitle(R.string.results);

addContent();

}

private void addContent() {

LinearLayout layout = findViewById(R.id.results);

DBHelper dbHelper = new DBHelper(this);

SQLiteDatabase db = dbHelper.getReadableDatabase();

List<Section> sections = dbHelper.findAllSections();

String sql = "SELECT tests.name, tests.id_section, results.mark, COUNT(tasks._id) AS task_count, results.pass_date " +

"FROM tests " +

"INNER JOIN tasks ON tasks.id_test = tests._id " +

"INNER JOIN sections ON sections._id = tests.id_section " +

"LEFT JOIN results ON results.id_test = tests._id " +

"WHERE results.pass_date IS NULL OR results.pass_date = " +

"(SELECT MAX(results.pass_date) " +

"FROM results " +

"WHERE results.id_test = tests._id) " +

"GROUP BY tests._id " +

"ORDER BY sections.section_order, tests.test_order";

try (Cursor cursor = db.rawQuery(sql, null)) {

int nameIndex = cursor.getColumnIndex("name");

int idSectionIndex = cursor.getColumnIndex("id_section");

int markIndex = cursor.getColumnIndex("mark");

int taskCountIndex = cursor.getColumnIndex("task_count");

int passDateIndex = cursor.getColumnIndex("pass_date");

int i = 0;

long prevSection = 0;

int dp5 = Converter.dpToPx(5);

TableLayout tableLayout = null;

if (cursor.moveToFirst()) {

do {

String name = cursor.getString(nameIndex);

long idSection = cursor.getLong(idSectionIndex);

Long mark = cursor.getLong(markIndex);

Long taskCount = cursor.getLong(taskCountIndex);

String datePass = cursor.getString(passDateIndex);

/*Calendar passDate = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));

passDate.setTime(new SimpleDateFormat("YYYY-MM-DD HH:MM:SS.SSS").parse());*/

if (prevSection != idSection) {

prevSection = idSection;

while (i < sections.size() && sections.get(i).getId() != idSection) {

i++;

}

if (i < sections.size())

{

TextView sectionTextView = new TextView(this);

sectionTextView.setText(sections.get(i).getName());

sectionTextView.setTypeface(Typeface.DEFAULT_BOLD);

sectionTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);

if (tableLayout != null) {

layout.addView(tableLayout);

}

tableLayout = new TableLayout(this);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT);

tableLayout.setLayoutParams(params);

tableLayout.setColumnShrinkable(0, true);

TableRow tableRow = new TableRow(this);

TextView testName = new TextView(this);

testName.setPadding(dp5, dp5, dp5, dp5);

testName.setText("Тест");

testName.setTypeface(Typeface.DEFAULT_BOLD);

testName.setGravity(Gravity.CENTER);

TextView score = new TextView(this);

score.setText("Результат");

score.setPadding(dp5, dp5, dp5, dp5);

score.setTypeface(Typeface.DEFAULT_BOLD);

score.setGravity(Gravity.CENTER);

tableRow.addView(testName);

tableRow.addView(score);

tableLayout.addView(tableRow);

layout.addView(sectionTextView);

}

}

TableRow tableRow = new TableRow(this);

TextView testName = new TextView(this);

testName.setText(name);

testName.setPadding(dp5, dp5, dp5, dp5);

tableRow.addView(testName);

TextView score = new TextView(this);

score.setText(datePass == null ? "?" : mark == taskCount ? String.format("%d из %d ?", mark, taskCount) : String.format("%d из %d", mark, taskCount));

score.setPadding(dp5, dp5, dp5, dp5);

score.setGravity(Gravity.CENTER);

tableRow.addView(score);

tableLayout.addView(tableRow);

} while (cursor.moveToNext());

if (tableLayout != null) {

layout.addView(tableLayout);

}

}

}

}

}

6. TestActivity.java

package com.dianakosareva.tutorialmetrology.activities;

import android.content.Context;

import android.os.Bundle;

import android.support.annotation.Nullable;

import android.support.v7.app.AppCompatActivity;

import android.util.TypedValue;

import android.view.View;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.LinearLayout;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.TextView;

import com.dianakosareva.tutorialmetrology.Converter;

import com.dianakosareva.tutorialmetrology.DBHelper;

import com.dianakosareva.tutorialmetrology.OutputHelper;

import com.dianakosareva.tutorialmetrology.XMLHelper;

import com.dianakosareva.tutorialmetrology.entities.Task;

import org.apache.commons.lang3.StringUtils;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class TestActivity extends AppCompatActivity {

private List<Task> tasks;

private List<List<String>> answers;

private List<List<String>> correctAnswers;

private List<List<String>> userAnswers;

private long idTest;

private int currentTask;

private LinearLayout linearLayout;

private Button buttonNext;

private Button buttonPrev;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_test);

getSupportActionBar().setTitle(ge...


Подобные документы

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

    курсовая работа [35,4 K], добавлен 12.05.2013

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

    курсовая работа [1,1 M], добавлен 07.07.2013

  • Формирование требований пользователя к электронному учебнику. Подсистема вывода на экран сведений о программе. Алгоритм обработки данных выбора темы из предлагаемого списка учебного пособия. Работа с подсистемой "Курс лекций" и с системой тестирования.

    курсовая работа [151,0 K], добавлен 11.03.2013

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

    курсовая работа [234,1 K], добавлен 04.08.2009

  • Мобильные операционные системы. Основные характеристики систем iOS и Android, их достоинства, недостатки и индивидуальные возможности. Анализ преимуществ лидирующих мобильных платформ для разработки приложения. Основные различия в механизмах безопасности.

    дипломная работа [806,5 K], добавлен 01.01.2018

  • Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.

    курсовая работа [7,8 M], добавлен 13.02.2023

  • Анализ программного обеспечения Skype: оценка возможностей, сферы применения. Проектирование компонента: средства разработки, формирование пользовательского интерфейса и концептуальной модели данных. Реализация модулей. Диаграммы компонентов и классов.

    курсовая работа [1,4 M], добавлен 27.04.2012

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

    дипломная работа [2,1 M], добавлен 20.12.2015

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.

    курсовая работа [2,6 M], добавлен 15.06.2013

  • Обзор мобильной ОС Android. Выбор инструментов и технологий. Проектирование прототипа графического интерфейса. Характеристика и описание пользовательского интерфейса. Проектирование и разработка базы данных. Определение списка необходимых разрешений.

    курсовая работа [376,6 K], добавлен 13.09.2017

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

  • Разработка игрового проекта на игровом движке Unity 3D в среде программирования MS Visual Studio 2017. Блок-схема алгоритма работы приема сообщений с сервера на клиенте с упрощенным описанием выполняемых команд. Реализация пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 10.07.2017

  • Рассмотрение игр, схожих по жанру и модели распространения с разрабатываемым приложением. Выбор среды разработки и сторонних библиотек. Проектирование интерфейса и подготовка графических материалов приложения. Особенности введения в игру микротрансакций.

    дипломная работа [3,1 M], добавлен 18.11.2017

  • Проектирование и отладка Windows-приложений для работы с внешними источниками данных. Функциональная блок-схема взаимодействия программных модулей. Описание связей между таблицами. Тестирование программного средства. Требования к техническому обеспечению.

    курсовая работа [2,7 M], добавлен 17.05.2011

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

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

    курсовая работа [641,7 K], добавлен 17.08.2013

  • Назначение программного модуля (базы данных). Разработка информационной базы данных для колледжа. Поиск пользователями информации о преподавателях и дисциплинах. Анализ входной и выходной информации. Разработка алгоритма работы программы-приложения.

    реферат [513,1 K], добавлен 22.10.2012

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

    курсовая работа [2,3 M], добавлен 31.01.2016

  • Разработка алгоритма фильтрации данных, полученных с систем спутниковой навигации с помощью GNSS-модуля. Анализ работы фильтра Калмана, его программная реализация под конкретную задачу. Выбор навигационных модулей для получения данных позиционирования.

    дипломная работа [3,6 M], добавлен 12.01.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.