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

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

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

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

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

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

Экран регистрации пользователя по своей структуре аналогичен экрану авторизации и в целом тривиален. На экране компании помимо вышеприведенных объектов имеются еще ScrollView, являющийся родительским объектом по отношению к LinearView, добавляющий область прокрутки для содержимого LinearView, которое не вмещается в область экрана, и виджет Spinner, представляющий собой выпадающий список, хранящий в себе названия организационных типов предприятий. Так как соответственно законодательству РФ таких типов ограниченное, четко определенное количество, то значения позиций объектов в выпадающем списке можно соотнести с идентификационными номерами типов в базе данных. Эти номера позиций можно использовать при создании записи о новом предприятии в базе, тем самым избегая необходимости выборки идентификационного номера из таблицы организационных типов предприятий для создания ссылки.

Основным элементом экрана профиля пользователя (рисунок 7) является контейнер ListView, позволяющий отображать списки, особенностью контейнера является то, что он не требует ScrollView в качестве родителя, так как сам осуществляет вертикальную прокрутку, а так же позволяет реализовать обработчик нажатия на элемент списка.

Рисунок 7 – Экран профиля пользователя

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

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

а)

б)

Рисунок 8 – Экран: а) настройки профиля; б) оформления заявки

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

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/etOldPass"
android:hint="@string/hOldPass"
android:inputType="textPassword"
android:singleLine="true"
android:paddingLeft="5dp"
android:paddingRight="5dp" />

В приведенном выше листинге атрибут id однозначно определяет элемент в приложении присвоением ему уникального имени, атрибуты layout_width, layout_height, paddingLeft, paddingRight определяют размеры и внешний вид поля, соответственно, ширину, высоту, внутренний левый и правый отступы , атрибут inputType устанавливает тип поля как «textPassword», тем самым маскируя введенные данные при отображении, позволяя использовать в качестве пароля буквы, цифры и символы (например, тип «numberPassword» принимает ко вводу только цифры, хотя тоже является паролем), атрибут singleLine определяет, может ли данные введенные в поле быть многострочными (в данном случае, данные представлены одной строкой, нажатие на клавишу переноса строки приведет к переходу в следующее поле или к закрытию экранной клавиатуры, в зависимости от положения элемента в иерархии экрана) [17-21].

Примеры полных макетов экранов приведены в приложении А.

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

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

4.1 Разработка серверной части приложения

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

PHP реализует два способа непосредственной работы (ранее существовавшее расширение mysql принято устаревшим и более не используется) с базами данных MySQL: расширение MySQLi и PDO. Однако использование первого без предварительного экранирования небезопасных символов и санитизации данных может привести к уязвимостям, в частности к возможности реализации злоумышленниками SQL-инъекции первого вида, атаки, основанной внедрении операторов SQL в пересылаемые на сервер данные, которые могут привести к ряду ошибок, в частности нарушения конфиденциальности данных, изменению или удалению, приводящих, как следствие, к нарушению нормальной работы сервиса [22, 23]. PDO или объекты данных PHP избегает вышеупомянутой проблемы путем использования подготовленных запросов, который, фактически, позволяют разделить запросы и данные, которые передаются базе данных отдельно и используется только в момент непосредственного исполнения запроса, тем самым делая SQL-инъекцию первого уровня, фактически, не выполнимой.

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

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

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

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

Если же требуется поддерживать постоянное соединение с базой данных, это нужно указать явно, установив PDO::ATTR_PERSISTENT истинное значение. Постоянные соединения кэшируются, могут быть использованы повторно при запросе соединения по тем же учетным данным, такой способ позволит сэкономить время на подключение при обмене данными с базой.

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

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

– параметры экранируются автоматически.

В случае если драйвер базы данных не может эмулировать подготовленные запросы, это за него сделает PDO, тем самым метод доступа к данным не ограничен возможностями конкретной СУБД.

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

– атомарность;

– согласованность;

– долговечность;

– изолированность.

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

PDO использует режим автоматической фиксации. Таким образом если СУБД поддерживает транзакции (если транзакции не поддерживаются выполнение будет произведено обычным способом), PDO автоматически неявно заключит выполняемый запрос в транзакцию, для явной инициализации транзакции используется метод beginTransaction(), однако использовать этот метод стоит только в случае, если СУБД гарантированно поддерживает транзакции, потому что в противном случае вызов метода beginTransaction() приведет к выбрасыванию исключения PDOExeption. Фиксация транзакции осуществляется методом commit(), а ее откат – методом rollBack().

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

В PDO существуют три стратегии для обработки ошибок.

Первая из них PDO::ERRMODE_SILENT является режимом по умолчанию. В случае возникновении ошибки PDO предоставить код ошибки. Получить его можно методам errorCode() и errorInfo().

Второй метод PDO::ERRMODE_WARNING позволяет получить помимо кода ошибки еще и E_WARNING сообщения. Метод обычно используется только при тестировании.

Третий метод PDO::ERRMODE_EXCEPTION выбрасывает в случае ошибки PDOException, в котором будут содержать код ошибки и ее описание. Метод легко локализирует проблему. В случае возникновения ошибки ход работы сценария будет прерван, а все незакрепленные транзакции – откачены. Помимо этого метод положительно сказывается на удобстве чтения кода, в силу того, что значительно снижает его вложенность.

Разработку следует начать с создания сценария, выполняющее подключение к базе данных и устанавливающего параметры этого подключения. Далее этот элемент кода будет использоваться во всех остальных сценариях, подключаемое с помощью выражения require (аналогично include, но в случае ошибки остановит дальнейшее выполнение сценария и выдаст ошибку E_COMPILE_ERROR).

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

$option = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

try{

$db = new PDO("mysql:host = {$host}; dbname={$dbname};charset=utf8", $username, $password, $option);

}

catch(PDOException $ex)

{

die("Cannot connect to the database:" .$ex->getMessage());}

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

В первой строке вышеприведенного листинга в переменной option устанавливается кодировка UTF-8 для передаваемых данных. В блоке try-catch создается новый объект PDO, хранящий параметры подключения к базе данных. Далее созданному подключению устанавливаются атрибуты режима обработки ошибок PDO::ATTR_ERRMODE в значение PDO::ERRMODE_EXCEPTION, тем самым при возникновении ошибки выбрасывается исключение, и режима выборки данных PDO::ATTR_DEFAULT_FETCH_MODE в значение PDO::FETCH_ASSOC, тем самым данные выборок организуются в виде ассоциативного массива.

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

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