Описание структуры выполнения работы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Описание структуры выполнения работы



1.Необходимо продумать базу данных, ее архитектуру, чтобы затем внедрить в проект. Первоначально нужно разобраться с такими понятиями, как Foreign Key, Primary Key, ManyToMany.

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

Связи между таблицами бывают следующих типов:

• Один к одному (One to one)

• Один к многим (One to many)

• Многие ко многим (Many to many)

Связь один к одному (рис.4.1).        

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

Рисунок 4.1 – Схема связей баз данных

Связь один ко многим(рис.4.2).

Это наиболее часто встречаемый тип связей. В этом типе связей несколько строк из дочерний таблицы зависят от одной строки в родительской таблице. Например, в одном блоге может быть несколько статей. В этом случае таблица блогов является родительской, а таблица статей - дочерней. То есть один блог - много статей. Или другой пример, в футбольной команде может играть несколько футболистов. И в то же время один футболист одновременно может играть только в одной команде. То есть одна команда - много футболистов.

Рисунок 4.2– Схема связей баз данных

Связь многие ко многим (рис.4.3).

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

Рисунок 4. 3 – Схема связей баз данных

В своей БД я описала такие модели как:

· Фамилия Имя()

· Номер()

· Обхват груди()

· Обхват талии()

· Обхват бёдер()

· Длина рукава()

Я использую связь «Один к одному» (рис. 4.4), так у одного клиента может быть одно имя, один номер, одни размеры груди, талии, бёдер и длина рукава тоже одна. 

Рисунок 4.4 – Схема связей баз данных

 

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

Основную функциональность по работе с базами данных предоставляет пакет android.database. Функциональность непосредственно для работы с SQLite находится в пакете android. database. sqlite.

База данных в SQLite представлена классом android. database. sqlite. SQLiteDatabase. Он позволяет выполнять запросы к базе данных, выполнять с ней различные манипуляции.

Класс android. database. sqlite. SQLiteCursor предоставляет запрос и позволяет возвращать набор строк, которые соответствуют этому запросу.

Класс android. database. sqlite. SQLiteQueryBuilder позволяет создавать SQL -запросы.

Сами sql -выражения представлены классом android. database. sqlite. SQLiteStatement, которые позволяют с помощью плейсхолдеров вставлять в выражения динамические данные.

Класс android. database. sqlite. SQLiteOpenHelper позволяет создать базу данных со всеми таблицами, если их еще не существует.

В SQLite применяется следующая система типов данных:

· INTEGER: представляет целое число, аналог типу int в java.

· REAL: представляет число с плавающей точкой, аналог float и double в java.

· TEXT: представляет набор символов, аналог String и char в java.

· BLOB: представляет массив бинарных данных, например, изображение, аналог типу int в java.

Сохраняемые данные должны представлять соответствующие типы в java.

3.Создание и открытие базы данных

Для создания или открытия новой базы данных из кода Activity в Android мы можем вызвать метод openOrCreateDatabase(). Этот метод может принимать три параметра:

· Название для базы данных.

· Числовое значение, которое определяет режим работы (как правило, в виде константы MODE_PRIVATE).

· Необязательный параметр в виде объекта SQLiteDatabase. CursorFactory, который представляет фабрику создания курсора для работы с базой данных.

Для упрощения работы с базами данных SQLite в Android нередко применяется класс SQLiteOpenHelper. Для использования необходимо создать класс-наследник от SQLiteOpenHelper, переопределив как минимум два его метода:

· onCreate(): вызывается при попытке доступа к базе данных, но когда еще эта база данных не создана.

· onUpgrade(): вызывается, когда необходимо обновление схемы базы данных. Здесь можно пересоздать ранее созданную базу данных в onCreate(), установив соответствующие правила преобразования от старой базы дданных к новой.

Если база данных отсутствует или ее версия (которая задается в переменной SCHEMA) выше текущей, то срабатывает метод onCreate().

Для выполнения запросов к базе данных нам потребуется объект SQLiteDatabase, который представляет базу данных. Метод onCreate() получает в качестве параметра базу данных приложения (рис. 4.5).

Рисунок 4.5 – Фрагмент программы, который реализует создание таблицы.

Для выполнения запросов к SQLite используется метод execSQL(). Он принимает sql -выражение CREATE TABLE, которое создает таблицу.

В методе onUpgrade() происходит обновление схемы базы данных (рис. 4.6). В моём случае использован примитивный подход с удалением предыдущей базы данных с помощью sql -выражения DROP и последующим ее созданием.

Рисунок 4.6 – Фрагмент программы, который реализует обновление схемы базы данных

2. Создание макета главного окна приложения.

Определили список L istView, для отображения полученных данных (Фамилия Имя, номер телефона). Добавили кнопку «Добавить» для вызова UserActivity (рис. 4.7).

Рисунок 4.7 – Фрагмент программы, который отображает макет главнного окна

3. Создание класса MainActivity.

В методе onCreate() происходит создание объекта SQLiteOpenHelper. Сама инициализация объектов для работы с базой данных происходит в методе onResume() (рис. 4.8), который срабатывает после метода onCreate().

Чтобы получить объект базы данных, нужно использовать метод getReadableDatabase() (получение базы данных для чтения).

Рисунок 4. 8 – Фрагмент программы, который инициализирует объекты

Android предоставляет различные способы для осуществления запросов к объекту SQLiteDatabase. Применим метод rawQuery(), который принимает два параметра: SQL -выражение SELECT и дополнительный параметр, задающий параметры запроса.

После выполнения запроса rawQuery() возвращает объект Cursor, который хранит результат выполнения SQL -запроса.

Дополнительно для управления курсором в Android имеется класс CursorAdapter. Он позволяет адаптировать полученный с помощью курсора набор к отображению в списковых элементах наподобие ListView. Как правило, при работе с курсором используется подкласс CursorAdapter – SimpleCursorAdapter.

Конструктор класса SimpleCursorAdapter принимает шесть параметров:

· Первым параметром выступает контекст, с которым ассоциируется адаптер, например, текущая activity.

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

· Третий параметр – курсор.

· Четвертый параметр - список столбцов из выборки, которые будут отображаться в разметке интерфейса.

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

· Шестой параметр - флаги, задающие поведения адаптера.

При использовании CursorAdapter и его подклассов следует учитывать, что выборка курсора должна включать целочисленный столбец с названием _id, который должен быть уникальным для каждого элемента выборки. Значение этого столбца при нажатии на элемент списка затем передается в метод обработки onListItemClick() (рис.4.9), благодаря чему мы можем по id идентифицировать нажатый элемент.

Рисунок 4.9 – Фрагмент программы, который по id идентифицирует нажатый элемент

После завершения работы курсор должен быть закрыт методом close() (рис. 4.10).

Рисунок 4.10 – Фрагмент программы, который закрывает курсор

4. Создание макета activity_user.xml для добавления/обновления/удаления данных.

Создали 6 EditText для ввода информации (Фамилия Имя, номер мобильного телефона, обхват груди, обхват талии, обхват бёдер, длина рукава) (рис. 4.11).

Рисунок 4.11 – Фрагмент программы, на котором создаются поля для ввода информации

 Добавили кнопки «Сохранить», «Удалить» (рис.4.12).

Рисунок 4.12 – Фрагмент программы, на котором добовляюся кнопки 

TextView для подписи мерок (рис. 4.13).

Рисунок 4.13 – Фрагмент программы, на котором создаются поля для ввода информации

5. Создание класса UserActivity.

При обновлении или удалении объекта из списка из главной activity в UserActivity будет передаваться id объекта.

Если из MainActivity не было передано id, то устанавливаем его значение 0, следовательно, у нас будет добавление, а не редактирование/удаление и скрываем кнопку удаления (рис.4.14).

Рисунок 4. 14– Фрагмент программы, на котором реализуется добовление объекта

Если id определен, то получаем по нему из базы данных объект для редактирования/удаления.

Для выполнения операций по вставке, обновлению и удалению данных SQLiteDatabase имеет методы insert(), update() и delete() (рис. 4.15). Эти методы вызываются в обработчиках кнопок.

Рисунок 4.15 – Фрагмент программы, на котором реализуется метод delete()

Для добавления или обновления нам надо создать объект ContentValues (рис. 4.16).  Данный объект представляет словарь, который содержит набор пар "ключ-значение". Для добавления в этот словарь нового объекта применяется метод put. Первый параметр метода - это ключ, а второй - значение.

Рисунок 4.16– Фрагмент программы, который реализует добовление или обновление объекта

При обновлении в метод update() передается название таблицы, объект ContentValues и критерий, по которому происходит обновление (в данном случае столбец id).

Метод insert() принимает название таблицы, объект ContentValues с добавляемыми значениями. Второй параметр является необязательным: он передает столбец, в который надо добавить значение NULL.

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

Рисунок 4.17 – Фрагмент программы, на котором реализуется метод goHome()

 

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

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

Добавление нового клиента в базу данных (рис.5.1):

Рисунок 5.1 - Добавление нового объекта

    

 

 

Редактирование имени (для наглядности) клиента (рис. 5.2):

Рисунок 5.2 - Редактирование объекта

Удаление клиента из базы данных (рис. 5.3):

Рисунок 5.3 – Удаление объекта

Заключение

В ходе выполнения проекта были получены следующие результаты:

1) Был изучен начальный уровень языка Java.

2) Освоено приложение Android Studio.

3) Ознакомиться с базой данных SQL.

4) Было разработано приложение с базой данной.

5) Проведено тестирование.

 



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 239; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.193.207 (0.028 с.)