Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по дисциплине Структуры и алгоритмы обработки данных

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
711 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

Московский технический университет связи и информатики

Кафедра математической кибернетики и информационных технологий

Волков М.М.

ПРАКТИКУМ

(лабораторные работы № 1,2,3,4,5,6)

по дисциплине

СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ

для направления подготовки 09.03.01

Москва 2016

План УМД на 2016/17 уч.г.

ПРАКТИКУМ

по дисциплине

СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ

Составитель М.М. Волков

Издание утверждено советом факультета ИТ. Протокол № 6 от 17.03.2016

2

Введение Общие сведения

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

Рис. 1 Схема взаимодействия компонентов системы

Взаимодействие клиента с сервером

Передача данных между сервером и клиентами происходит при помощи

REST API.

REST (Representational state transfer) – это стиль архитектуры про-

граммного обеспечения для распределенных систем, таких как World Wide Web, который, как правило, используется для построения веб-служб. Системы, поддерживающие REST, называются RESTful-системами. В общем случае REST является интерфейсом управления информацией.

Каждая единица информации однозначно определяется URL – это значит, что URL, по сути, является первичным ключом для единицы данных. Т.е. например, третья книга с книжной полки будет иметь вид /book/3, а 35 страница в этой книге — /book/3/page/35. Не имеет значения, в каком формате находятся данные по адресу /book/3/page/35 – это может быть и HTML, и отсканированная копия в виде jpeg-файла, и документ Microsoft

Word.

Управление информацией сервиса основывается на протоколе передачи данных. Наиболее распространенный протокол HTTP. Для HTTP действие над данными задается с помощью методов: GET (получить), PUT (добавить, заменить), POST (добавить, изменить, удалить), DELETE (удалить). Таким образом, действия CRUD (Create-Read-Updtae-Delete) могут выпол-

3

няться как со всеми четырьмя методами, так и только с помощью GET и

POST.

Вот как это будет выглядеть на примере: GET /book/ — получить список всех книг GET /book/3/ — получить книгу номер 3

PUT /book/ — добавить книгу (данные в теле запроса) POST /book/3 – изменить книгу (данные в теле запроса)

DELETE /book/3 – удалить книгу

Использование REST для построения Web-сервисов. Для каждой единицы информации (info) определяется пять действий. А именно: GET /info/ (Index) – получает список всех объектов. Как правило, это упрощенный список, т.е. содержащий только поля идентификатора и названия объекта, без остальных данных. GET /info/{id} (View) – получает полную информацию о объекте. PUT /info/ или POST /info/ (Create) – создает новый объект. Данные передаются в теле запроса без применения кодирования, даже urlencode. В PHP тело запроса может быть получено таким способом:

function getBody() {

if (!isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = file_get_contents("php://input"); return $HTTP_RAW_POST_DATA;

}

POST /info/{id} или PUT /info/{id} (Edit) – изменяет данные с идентификатором {id}, возможно заменяет их. Данные так же передаются в теле запроса, но в отличие от PUT здесь есть некоторый нюанс. Дело в том, что POST-запрос подразумевает наличие urldecoded-post-data. Т.е. если не применять кодирования – это нарушение стандарта.

DELETE /info/{id} (Delete) – удаляет данные с идентификатором {id}.

4

Список лабораторных работ

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

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

3.Создание базового мобильного приложения; элементы управления; получение GPS координат.

4.Получение информации с сервера, отображение в в виде списка. Получить и отобразить в мобильном приложении информацию в со-

ответствии с вариантами второй лабораторной работы. 5. Передача информации на сервер

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

6. Обмен информацией между двумя смартфонами.

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

5

Возможные варианты заданий для курсового проектирования

1.Задача получения данных с сервера – получить с сервера список данных в виде JSON массива. В массиве могут встречаться ссылки на изображения. Отобразить данные на экране.

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

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

4.Передать на сервер координаты (широта, долгота) точки, которую необходимо посетить.

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

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

7.Два смартфона передают на сервер свои координаты. Получить с сервера координаты и найти друг друга.

8.Два смартфона передают на сервер свои координаты. Получить с сервера координаты и найти друг друга. Посчитать время, за которое был выполнен поиск.

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

6

Лабораторная работа № 1

План работы

1.Установка и настройка локального сервера Apache.

2.Установка и настройка PHP интерпретатора.

3.Установка локального сервера баз данных MySQL.

4.Настройка файла httpd.conf.

5.Настройка PHP интерпретатора.

6.Тестирование PHP интерпретатор.

7.Тестирование связку с сервером баз данных MySQL.

8.Установка phpMyAdmin.

Варианты

1.Создать на сервере таблицу для хранения информации о точках на карте (Широта, Долгота, Название).

2.Создать на сервере таблицу для хранения информации о книгах (Название, Автор, Издательство, Год, Город).

3.Создать на сервере таблицу для хранения информации о студентах (ФИО, Группа, Курс, Факультет).

4.Создать на сервере таблицу для хранения информации об автомобилях (Марка, Модель, Мощность, Тип кузова).

5.Создать на сервере таблицу для хранения информации о городах (Название, Страна, Население).

6.Создать на сервере таблицу для хранения информации о странах (Название, Континент, Форма правления).

7.Создать на сервере таблицу для хранения информации о преподавателях (ФИО, Кафедра, Предметы, Науч. степень).

8.Создать на сервере таблицу для хранения информации о фильмах (Название, Режиссер, Жанр, Год).

9.Создать на сервере таблицу для хранения информации об операциях на АЗС (Дата, Топливо, Цена, Количество, Колонка).

10.Создать на сервере таблицу для хранения информации о телефонных звонках (Исходящий номер, Входящий номер, Дата, Длительность).

11.Создать на сервере таблицу для хранения информации о почтовых отправлениях (Адрес отправителя, Адрес адресата, Дата, Почтовое отделение).

12.Создать на сервере таблицу для хранения информации о товарах (Наименование, Цена, Шкаф, Полка).

13.Создать на сервере таблицу для хранения информации о продуктах (Название, Сорт, Цена, Количество).

14.Создать на сервере таблицу для хранения информации о музыкальных группах (Название, Жанр, Страна, Год основания).

7

15.Создать на сервере таблицу для хранения информации о музыкальных композициях (Название, Исполнитель, Длительность, Жанр).

16.Создать на сервере таблицу для хранения информации о банках (Название, Капитализация, Город, КПП).

17.Создать на сервере таблицу для хранения информации о предпринимателях (ФИО, Город, Дата рождения, ИНН).

18.Создать на сервере таблицу для хранения информации о музыкальных альбомах (Название, Исполнитель, Год, Количество композиций).

19.Создать на сервере таблицу для хранения информации о программах (Платформа, Тип, Лицензия, Разработчик).

20.Создать на сервере таблицу для хранения информации о языках программирования (Название, Назначение, Год, Создатель).

21.Создать на сервере таблицу для хранения информации о футбольных командах (Название, Страна, Тренер, Лига).

22.Создать на сервере таблицу для хранения информации о самолётах (Название, Вместимость, Мощность, Тип).

8

Лабораторная работа № 2

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

Задача: Создать на сервере базу данных и таблицу в этой базе. Подключиться к базе данных при помощи скрипта на php.

Вывод данных из таблицы

<?

$hostname = "localhost"; //хост БД $username = "root"; //логин БД $password = "root"; //пароль БД $dbName = "c1272"; //название БД

//Таблицы БД $table = "data"; ?> <?

require_once "db_var.php"; /* Создаем соединение */

$link = mysql_connect($hostname, $username, $password) or die (mysql_error());

mysql_set_charset('utf8',$link);

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die (mysql_error());

/* Составляем запрос для извлечения данных из полей */

$query = "SELECT id, Latitude, Longitude, URL, Flag, Data, Defect FROM $table";

/* Выполняем запрос. Если произойдет ошибка - вывести ее. */ $res = mysql_query($query) or die(mysql_error());

/* Выводим данные из таблицы */ //$json_data = array

('id'=>1,'name'=>"ivan",'country'=>'Russia',"office"=>array("yandex","

management"));

//echo json_encode($json_data);

$seaLevel=0; //echo "{";

$stack = array(); $count=0;

/* Цикл вывода данных из базы конкретных полей */ while ($row = mysql_fetch_array($res)) {

$json_data = array ('id'=>$row['id'],'Latitude'=>$row['Latitude'],'Longitude'=>$row['Longi tude'],'Altitude'=>$seaLevel,'URL'=>$row['URL'],'Type'=>$row['Defect'], 'Date'=>$row['Data'],'Done'=>$row['Flag']);

array_push($stack, $json_data); $count++;

}

echo json_encode(array('defectCount'=>$count,'defects'=>$stack));

/* Закрываем соединение */ mysql_close();

?>

9

Лабораторная работа № 3

Создание базового мобильного приложения, элементы управления, получение GPS координат

Задача: Создать мобильное приложение, получающее GPS координаты и выводящее их на экран.

ВonCreate определяем TextView-компоненты и получаем LocationManager, через который и будем работать.

ВonResume привязываем слушателя с помощью метода requestLocationUpdates. На вход передаем:

- тип провайдера: GPS_PROVIDER или NETWORK_PROVIDER;

- минимальное время (в миллисекундах) между получением данных. Я укажу здесь 10 секунд, мне этого вполне хватит. Если хотите получать координаты без задержек – передавайте 0. Но учитывайте, что это только минимальное время. Реальное ожидание может быть дольше; - минимальное расстояние (в метрах). Т.е. если ваше местоположение изменилось на

указанное количество метров, то вам придут новые координаты; - слушатель, объект locationListener, который рассмотрим ниже.

ВonPause отключаем слушателя методом removeUpdates.

locationListener – слушатель, реализует интерфейс LocationListener с методами: onLocationChanged – новые данные о местоположении, объект Location. Здесь мы вызываем свой метод showLocation, который на экране отобразит данные о местоположении.

onProviderDisabled – указанный провайдер был отключен юзером. В этом методе вызываем свой метод checkEnabled, который на экране обновит текущие статусы провайдеров.

onProviderEnabled – указанный провайдер был включен юзером. Тут также вызываем checkEnabled. Далее методом getLastKnownLocation (он может вернуть null) запрашиваем последнее доступное местоположение от включенного провайдера и отображаем его. Оно может быть вполне актуальным, если вы до этого использовали какое-либо приложение с определением местоположения.

onStatusChanged – изменился статус указанного провайдера. В поле status могут быть значения OUT_OF_SERVICE (данные будут недоступны долгое время),

TEMPORARILY_UNAVAILABLE (данные временно недоступны), AVAILABLE (дан-

ные доступны). В этом методе мы просто выводим новый статус на экран.

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

Далее идут свои методы.

showLocation на вход берет Location, определяет его провайдера методом getProvider и отображает координаты в соответствующем текстовом поле.

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]