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

2020-10-05СтудИзба

Описание файла

Файл "диплом" внутри архива находится в следующих папках: Мобильное приложение для оформления заказов на транспортировку товаров, Аршиева К.К. Документ из архива "Мобильное приложение для оформления заказов на транспортировку товаров", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 8 семестр, которые можно найти в файловом архиве ДВГУПС. Не смотря на прямую связь этого архива с ДВГУПС, его также можно найти и в других разделах. .

Онлайн просмотр документа "диплом"

Текст 4 страницы из документа "диплом"

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

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

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

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

Далее необходимо получить недостающие для создания записи данные.

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

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

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

$query = "insert into orders (oClientID, oFCityID, oFStreetID, oFHouse,oFBuilding, oTCityID, oTStreetID, oTHouse, oTBuilding, oInsurance, oSize, oMass,oCustom, oDuty) values(:client, :fcity, :fstreet, :fhouse, :fbuilding, :tcity, :tstreet, :thouse, :tbuilding, :insurance, :sze, :mass, :custom, :duty);";

$opt = array(":client" => $userID,

":fcity" => $fromCity,

":fstreet" => $fromStreet,

":fhouse" => $_POST['fHouse'],

":fbuilding" => $_POST['fBuilding'],

":tcity" => $toCity,

":tstreet" => $toStreet,

":thouse" => $_POST['tHouse'],

":tbuilding" => $_POST['tBuilding'],

":insurance" => $_POST['insurance'],

":sze" => $_POST['size'],

":mass" => $_POST['mass'],

":custom" => $_POST['custom'],

":duty" => $_POST['duty']);

try{

$prep = $db->prepare($query);

$prep->execute($opt);

}

catch (PDOExeption $ex){

$response["success"] = 0;

$response["message"] = "Database Error! Please Try Again.";

$response["error"] = $ex->getMessage();

die(json_encode($response));

}

$response["success"] = 1;

$response["message"] = "Order Successfully Placed!";

die (json_encode($response));

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

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

Далее в блоке try-catch запрос устанавливается связь с базой данной и подготавливается к выполнению командой prepare, команда execute инициирует выполнение запроса, подменяя заполнители на реальные данные.

Три строки таблицы orders (структура представлена на рисунке 3) заполняются автоматически, идентификационный номер oID формируется автоинкрементом, идентификационный номер статуса выполнения oStatID получает по умолчанию значение 1, соответствующее статусу «Заявка принята в обработку», поле даты создания oCreationDate имеет тип timestamp и автоматически сохраняет дату и время создания поля.

Если блок try-catch выполняется без выбрасывания исключения, то сценарий формирует отклик об успешном выполнении и отправляет инициализировавшему его выполнение приложению ответ в JSON-представлении.

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

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

После этого требуется внести изменения в соответствующую запись в базе данных (листинг приведен ниже).

$query = "update users set uPassword = :newpass where uID = :id;";

$opt = array(":id" => $uID,":newpass"=>$_POST["newPassword"]);

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

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

$query = "select oID, oStatID, oCreationDate from orders where oClientID = :uid and oStatID <> :statLim group by oCreationDate DESC;";

$opt = array(":uid" => $uID, ":statLim" => $statLimit);

В переменной query подготавливается запрос на выборку заголовочных данных о заказа (идентификационный номер, статус и дата создания), где в качестве ограничителей выступают идентификационный номер пользователя и значение статуса (в выборке участвуют только заявки, статус которых не установлен в значение «Выполнен»), далее полученные данные выборки упорядочиваются по дате создания в порядке убывания.

После успешного получения данных, их нужно преобразовать в JSON и оправить приложению (листинг приведен ниже).

if($rows){

$response["success"] = 1;

$response["message"] = "Orders have been found!";

$response["orders"] = array();

foreach ($rows as $row) {

$order = array();

$status = findStatus($db, $row["oStatID"]);

$order["oID"] = $row["oID"];

$order["oStat"] = $status;

$order["oCreationDate"] = $row["oCreationDate"];

array_push($response["orders"], $order);

}

echo json_encode($response);}

PHP-функция json_encode позволяет преобразовать различные данные в JSON-представление. Наиболее удобный и очевидный способ перевода данных в JSON-представление является формирование ассоциативного массива с данными полученными из базы данных.

В листинге выше формируется ассоциативный массив с тремя ключами success – флаг успеха выполнения, message ­– сообщение, ассоциированное с флагом выполнения и orders – вложенный ассоциативный массив, в свою очередь состоит из трех ключей oID – идентификатор заказа, oStat – статус заказа и oCreationDate – дата и время создания заказа, функция array_push помещает данные о каждом единичном заказе в массив с ключом orders. После того, как все данные сохранены в ассоциативный массив, функция json_encode завершает преобразование данных в JSON-представление и передает результат приложению [25, 26].

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

4.2 Разработка приложения. Файл манифеста Android

Всю первичную необходимую информацию о приложении Android получает из XML-структурированного файла манифеста, AndroidManifest.xml.

Обязательными префиксом любого манифеста является строка <?xml version="1.0" encoding="utf-8"?>, указывающая на используемую версию XML и кодировку.

Сам содержательная часть манифеста помещается в парный тег <manifest>, который является корневым. Если приложению требуется получить от пользователя разрешение на использование определенных функций устройства, например, использовать камеру, то внутри корневого тега объявляется одиночный тег <uses-permission>. Разрешение на использование функций, объявленных таким тегом, подтверждается (или не подтверждается) единожды, в момент установки приложения пользователем. Во время работы с приложением пользователь не будет получать никаких оповещений о необходимости выдать разрешение на использование функции, если при установке приложение разрешение не получило, то все попытки использовать неразрешенную функцию будут остановлены без оповещения пользователя. В случае приложения, разрабатываемого в рамках данной работы, требуются два разрешения ACCESS_NETWORK_STATE, позволяющее просматривать статус доступа к сети, и INTERNET, гарантирующий доступ приложению к сети Интернет для обмена информацией с базой данных.

Внутри корневого тега размещается тег <application>, являющийся родительским для тегов компонентов приложения. Тег <application> имеет ряд атрибутов, например, атрибут icon указывает на иконку, используемую для запуска программы, label – на называние приложения, а theme – используемую тему оформления.

Внутри тега <application> объявляются требуемы компоненты приложения (например, Активити, службы, контент-провайдеры и т.д.). Любой компонент, исключая широковещательный приемник, не объявленные в манифесте не будут созданы Android.

В приложении требуется объявить через тег <activity> нужные Активити, представляющие собой класс, выполняющий определенные функции, связанные с XML-макетом, с которым пользователь может взаимодействовать непосредственно (в отличии, например, от службы, работающей в фоновом режиме). Для того чтобы выделить один из Активити для выполнения при запуске приложения требуется внутри Активити объявить фильтр интентов через тег <inten-filter>.

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

– для отсылки широковещательного сообщения;

– для запуска службы;

– для запуска Активити.

В первом случае, интент создается, чтобы разослать широковещательное сообщение о каком-либо системном событии, в таком случае интент передается методам sendBroadcast(), sendOrderedBroadcast() или sendStickyBroadcast().

Во втором случае, интент передается методу bindService() или startService(), в таком случае интент содержит описание службы, компонента, выполняющегося в фоновом режим, и все требуемые ей данные.

В третьем случае, интент используется для запуска нового Активити, содержит описание Активити, которую нужно запустить и все требуемые для этого данные, и передается методу startActivity() или startActivityForResult(). При вызове второго метода от Активити, которую запустит интент потребуется результат, оформленный в виде другого интента, отправляемый в методе обратного вызова onActivityResult().

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

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

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
420
Средний доход
с одного платного файла
Обучение Подробнее