дипломная работа. Даар. Разработка службы курьерской доставки в мобильном приложении
Скачать 0.63 Mb.
|
ЗАКЛЮЧЕНИЕОсновной целью настоящего дипломного проекта было создание современной и высокотехнологичной службы курьерской доставки, интегрированной в мобильное приложение. Для достижения указанной цели был произведен анализ существующих систем, выявлены их недостатки в контексте предъявленных требований. Было принято решение о необходимости разработки новой системы, решающей весь спектр поставленных задач. В специальной части был произведен анализ использования системы: выделены основные роли пользователей, описаны сценарии их взаимодействия с системой. Были обозначены основные функции системы, намечены стратегии архитектурного решения и выбраны технологии, позволяющие реализовать требуемую функциональность. Для описания организации данных была разработана информационная модель, представляющая структуру организации данных на различных уровнях: концептуальном, логическом и физическом. Также была разработана архитектура системы, которая послужила основой для реализации алгоритмов, описывающих функциональность системы. С целью реализации взаимодействия с пользователя с системой был реализован удобный, понятный и дружественный интерфейс пользователя. Для проверки работоспособности отдельных составляющих системы проведено модульное тестирование. Исходя из вышесказанного, можно сделать вывод о том, что поставленная цель достигнута. Программный комплекс является завершенным и работоспособным, однако в дальнейшей перспективе возможно внедрить мобильное приложение для iOS с использованием iOS SDK. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВПрограммирование на Visual C#: учебное пособие для среднего профессионального образования / А. А. Казанский. – 2 – е изд. Программирование. Объектно-ориентированный подход; учебник и практикум для вузов / С.В. Зыков. – Москва: Издательство Юрайт. Технологии программирования: учебно-методическое пособие для СПО / Л.Ф. Лебеденко, О.И. Моренкова. Разработка и эксплуатация автоматизированных информационных систем: учебник для студ. учреждения сред. проф. образование / Д.Э Фуфаев, Э.В.Фуфаев. – 2-е изд. Технология разработки программных продуктов. Практикум: учеб. Пособие для студ. учреждения сред. проф. образования / А.В. Рудаков, Г.Н. Федорова. – 4-е изд. Базы данных: учебник для сред. проф. образования / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовский. – 3-е изд. Проектирование информационных систем: учебник и приктикум для сред. проф. образования / Д.В. Чистов, П.П. Мельников, А.В. Золотарюк, Н.Б. Ничепорук. https://learn.microsoft.com/ – Справочная система Microsoft Visual Studio Харди, Б., Филлипс, Б. Программирование под Android. Для профессионалов. СПБ.: Питер, 2019. 592 с. ISO/IEC/IEEE 42010:2011(E) Systems and software engineering – Architecture description. NY, 2018. 46 p. Википедия. MVP архитектура. https://ru.wikipedia.org/wiki/Model-View-Presenter. Википедия. MVC архитектура. https://ru.wikipedia.org/wiki/Model-View-Controller. Назначение и особенности этапов проектирования базы данных (БД). http://e-educ.ru/bd10.html. Fowler, M. Inversion of Control Containers and the Dependency Injection pattern / M. Fowler. http://martinfowler.com/articles/injection.html. SQLitevsMySQLvsPostgreSQL: сравнение систем управления базами данных – http://devacademy.ru/posts/sqlite-vs-mysql-vs-postgresql/. Android Architecture Components – https://developer.android.com/develop/index.html?hl=ru. MVP для Android. Перевод – https://tttzof351.blogspot.ru/2014/04/mvp-android.html. Приложение 1.Активности для подтверждения пользователем заказа. public class ConfirmOrderActivityextends AppCompatActivityimplements SmsReceiver.OnSmsCodeReceiverListener, View.OnClickListener, ConfirmOrderPresenter.OnConfirmOrderDirection{ private Context mContext; private ConfirmOrderPresentermConfirmOrderPresenter; private FieldPresentermFieldPresenter; private SmsReceivermSmsReceiver; private TextViewtv_title; private ImageViewiv_btn_close; private TextViewtv_info; private TextInputLayouttil_cvc_code, til_sms_code; private EditTextet_cvc_code, et_sms_code; private TextInputLayout[] fieldParents; private EditText[] fields; private Button btn_confirm; @Override protected void onCreate(@NullableBundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_confirm_order); try { initTools(); initViews(); setParams(); } catch (Exception mE) { mE.printStackTrace(); } } private void initTools()throws Exception{ mContext= ConfirmOrderActivity.this; mConfirmOrderPresenter= new ConfirmOrderPresenter(mContext); mFieldPresenter= new FieldPresenter(mContext); mSmsReceiver= new SmsReceiver(ConfirmOrderActivity.this); } private void initViews()throws Exception{ tv_title= (TextView)findViewById(R.id.tv_title); iv_btn_close= (ImageView)findViewById(R.id.iv_btn_close); tv_info= (TextView)findViewById(R.id.tv_info); til_cvc_code= (TextInputLayout)findViewById(R.id.til_cvc_code); til_sms_code= (TextInputLayout)findViewById(R.id.til_sms_code); et_cvc_code= (EditText)findViewById(R.id.et_cvc_code); et_sms_code= (EditText)findViewById(R.id.et_sms_code); btn_confirm= (Button)findViewById(R.id.btn_confirm); fieldParents= new TextInputLayout[]{til_cvc_code, til_sms_code}; fields = new EditText[]{et_cvc_code, et_sms_code}; } private void setParams()throws Exception{ mFieldPresenter.setParamsFieldCvc(et_cvc_code); mFieldPresenter.setParamsFieldSms(et_sms_code); iv_btn_close.setOnClickListener(this); btn_confirm.setOnClickListener(this); mConfirmOrderPresenter.setOnConfirmOrderDirection(this); mConfirmOrderPresenter.getTitle(); mConfirmOrderPresenter.getScreenParamByPayMethod(); mSmsReceiver.setOnSmsCodeReceiverListener(this); mSmsReceiver.startReceiveSms(); } @Override public void onReceivedTitle(String title) { tv_title.setText(title); } @Override public void onReceivedScreenParamByPayMethod(intpayMethodId, String phone, String payDescription) { switch (payMethodId){ case CASH: til_sms_code.setVisibility(View.VISIBLE); tv_info.setText(getString(R.string.text_sms_confirm) .concat(phone)); break; case BANK_CARD: til_cvc_code.setVisibility(View.VISIBLE); tv_info.setText(getString(R.string.text_card_confirm) .concat(payDescription)); break; } } @Override public void onReceivedRequestParamByPayMethod(Map new ConfirmOrderTask(mContext, http_params, pay_method).execute(); } @Override public void onClick(View v) { intid = v.getId(); switch (id){ case R.id.iv_btn_close: finish(); break; case R.id.btn_confirm: try { booleanisFieldValid = mConfirmOrderPresenter.checkFieldValid(fieldParents, fields); if(isFieldValid){ String pin = et_sms_code.getText().toString(); String cvc = et_cvc_code.getText().toString(); mConfirmOrderPresenter.getRequestParamByPayMethod(pin, cvc); } } catch (Exception mE) { mE.printStackTrace(); } break; } } @Override public void onSmsCodeReceived(String sms) { et_sms_code.setText(sms); et_sms_code.setSelection(et_sms_code.length()); } @Override protected void onPause() { super.onPause(); try { if(mSmsReceiver!=null) mSmsReceiver.stopReceiveSms(); } catch (Exception mE) { mE.printStackTrace(); } } @Override protected void onResume() { super.onResume(); } } |