ДЕВЕТНАДЕСЕТА УЧЕНИЧЕСКА СЕКЦИЯ УС’19
ТЕМА НА ПРОЕКТА
ЗакарайМе Приложение за споделено пътуване
Автори:
Димитър Илиев Тачев, ЕГ „Пловдив“, гр. Пловдив, 12-ти клас Даниел Валентинов Георгиев, ЕГ „Пловдив“, гр. Пловдив, 12-ти клас
Научен ръководител (консултант):
НЯМА
ЗакарайМе Приложение за споделено пътуване
Резюме:
„ЗакарайМе“ е уеб приложение от областта на информационните технологии със значими ползи във всекидневния живот, като целта му е да свърже хора, търсещи и предлагащи транспорт из цялата страна за градски и извънградски пътувания. Това допринася неимоверно много за понижаване на замърсяването на въздуха и олекотява натоварения трафик в големите градове и по магистралите. Дизайнът и начинът на работа с приложението са интуитивни, което предразполага всякакъв вид потребители към ползването на услугите на приложението и съответно успешната реализация на целите, стоящи зад идеята на споделенето пътуване.
ZakaraiMe Shared travel application
Summary:
“ZakaraiMe” is a web application in the IT sphere, which is extremely useful in our day-to-day life because it connects people, who offer transportation with people, who are looking for such throughout the country both in and outside the city. This helps reduce the dangerous and toxic emissions which pollute the air and also eases the congestion in the big cities and on the highways. The design and the way the application works are very intuitive, which gets the users excited about it and wanting to use it again. This is especially important for realizing the goals upon which the idea of shared travel is built.
Съдържание
-
Увод
-
Изложение 2.1. Цели и задачи на проекта 2.2. Етапи на реализация 2.3. Използвани технологии, езици и програми 2.4. Софтуерна структура 2.5. Метод на използване
-
Заключение
-
Използвана литература
- Увод
С непрестанното развитие на българската икономика и градове напливът на автомобили със съпътстващите го натоварен трафик и замърсяване са проблеми, които намират все по-голям отзвук в нашето общество. Никой не е доволен от всекидневното чакане в задръствания, пониженото качество на въздуха и шума, който се образува вследствие на завишения брой автомобили. Това е проблем, който лесно може да бъде решен чрез технологиите, които са част от нашето ежедневие и трябва да използваме в наш интерес. Чрез настоящия проект сме си поставили за цел да прекратим порочната практика всеки човек да ползва личния си автомобил за превоз сам и да помогнем на хора, пътуващи от един район в една и съща посока, да пътуват заедно, като това важи и за градски, и за извънградски пътувания. Считаме, че работата ни е от изключително значение за качеството на живот на хората и за околната среда, защото намалянето на броя автомобили, движещи се едновременно, е в полза, както за пестене на време, така и за понижаване отделянето на вредни емисии във въздуха. Идеята за този проект е родена от множеството групи в социалните мрежи, които имат подобна насоченост, но са ограничени в една точка или един маршрут, докато ние предлагаме възможност да свържем хора, пътуващи из цяла България, дори и извън страната. Тази обединеност и централизация са нещата, които ще събудят още по-голям интерес у хората към този вид пътуване, което от своя страна ще ускори реализацията на позитивите, съпътстващи споделенето пътуване. За да се възползва от услугите на приложението даден човек, е нужна само безплатна регистрация на уеб сайта, публикуван в интернет. Клиентът не се обвързва или ангажира с нищо, което прави цялата концепция приятна и леснодостъпна за всеки, който търси или предлага превоз.
2. Изложение
2.1. Цели и задачи на проекта
• Свързване на хора, търсещи и предлагащи възможност за споделено пътуване в и извън града
• Удобен интерфейс, който позволява лесно боравене с приложението без да са нужни допълнително пояснение или предварително обучение
• Допринасяне към борбата с натоварения трафик и опазването на околната среда
• Популяризиране на идеята за споделено пътуване в рамките на България
2.2 Етапи на реализиране
-
Определяне на проблемите, които проектът ще решава. Това е основополагаща стъпка, от която зависи бъдещата реализация на приложението и неговото популяризиране сред обществото.
-
Изграждане на план за осъществяването на проекта и избор на подходяща архитектура, съответстваща на нуждите на приложението и представата за начина, по който то ще функционира и ще бъде използвано.
-
Създаване на избраната архитектура и подготовка за пристъпване към работа върху конкретните нужди на приложението.
-
Изграждане на основните единици, съставящи проекта(потребители, коли, маршрути и пътувания) и логиката зад тях.
-
Създаване на интуитивен и достъпен за всякакъв вид потребители дизайн, с цел таргетирането на широк спектър от потенциални клиенти и по-бързо и успешно развитие на приложението.
-
Публикуване на приложението онлайн, правейки го достъпно за всички и началото на неговата работа с реални потребители и заявки.
2.3. Използвани технологии, езици и програми
В процеса на разработка бяха използвани широк набор от програми:
• Visual Studio 2017 – основна среда на разработване
• SQL Server 2017 – локален SQL сървър
• Google Chrome – среда за тестване
• Microsoft Edge – среда за тестване
• GitHub Desktop – система за контрол и управление на версиите
Всички използвани програми са безплатни.
Технологиите, чрез които е изграден проектът са:
• Entity Framework – технология за обектно-релационно планиране на ADO.NET (достъп до данни)
• OOP – приложението е моделирано като набор от обекти, взаимодействащи помежду си
• MVC – архитектурен шаблон за дизайн, който разделя бизнес логиката от графичния дизайн и данните, като спомага за всеки отделен модел да бъде планиран и осъществен независимо от другите части на приложението
• AutoMapper – технология за извличане само на нужните свойства на даден модел от базата данни при неговото създаване от потребител или показването на обект от базата данни на потребителя
• Mapbox – технология за визуалиция и създаване на маршрутите посредством карти
Всички използвани технологии са безплатни.
Езиците, използвани по време на разработка на проекта:
• C# - езикът, служещ за изграждане на основата сайта и неговото правилно функциониране
• HTML – маркиращ език, използван за създаване, оформление и структуриране на информацията на страниците, видими от потребителя
• CSS – езикът, използван за стилизиране на страниците, видими от потребителя
• Javascript – скриптов език, използван за някои функции в приложението и динамично зареждане на данни в уеб сайта
2.4. Софтуерна структура
Проектът е разделен на четири подпроекта, всеки от които има своето предназначение, а самото разделение подпомага за своевременното откриване на грешки в софтуера чрез изолиране на отделни модули с различни функции. За доброто оформление на кода са използвани repository pattern и MVC структура.
Проектът ZakaraiMe.Data отговаря за връзката с базата данни на приложението. Класът ZakaraiMeContext отговаря за таблиците на базата и връзките между самите тях. Папката Entitites(User, Car, Journey) съдържа всички модели, от които е изградена базата, които съответстват на таблиците в самата база данни. Папката Repositories(CarRepository, JourneyRepository) съдържа по един клас repository за всеки модел, като в тези класове се извършват заявките към базата за извличане на определени данни. Технологията Entity Framework отговаря за конвертирането на C# код в работещи и валидни SQL заявки, чрез които се общува с базата данни.
Проектът ZakaraiMe.Services има за задача да осъществява прехода между слоя база данни и уеб слоя, като така заема ролята на междинен слой в архитектурата на проекта. Подобно на класовете repositories тук има класове services, намиращи се в папка Implementations(CarService, UserService, JourneyService), които имат за цел да извлекат данните получени от методите в слоя база данни и да ги обработят по такъв начин, че те да бъдат напълно готови за ползване в уеб слоя, без да се налага там да бъдат обработвани допълнително.
Проектът ZakaraiMe.Web е проектът, отговорен за финалната обработка на данните минали през първите два слоя на приложението и тяхното визуализиране. Тук се прилага и MVC(Model-View-Controller) структурата. Папка Models(UserFormViewModel, CarListViewModel) съдържа класове, наподобяващи класовете в папка Entities от ZakaraiMe.Data, но тук биват извлечени само нужните свойства на тези класове за дадената ситуация, а останалото бива игнорирано, за да се избегне забавяне в зареждането на визуализацията на някоя страница или създаването на обекти от потребителя. За този автоматичен подбор на нужните свойства се грижи технологията AutoMapper, която разпознава съвпадащите свойства на модела в Web с този в Data и сама прехвърля нужните данни. Папка Controllers(CarController, UserController) съдържа класове контролери, които осъществяват връзката между моделите и страниците за визуализиране, като страниците за визуализиране работят с гореспоменатите модели и контролерите се грижат за допълнителна обработка на моделите преди тяхното изпращане към моделите, като контролерите също и изпращат моделите към страниците. В папка Views са различните страници(Users/Create, Users/Edit, Cars/Delete, Cars/Edit), които работят с моделите от папка Models, които получават от контролерите от папка Controllers. Кодът на тези страници е написан на езика Razor, който комбинира в себе си C# и HTML.
Проектът ZakaraiMe.Common съдържа конфигурацията на технологията AutoMapper, защото тя трябва да се намира извън конкретните проекти, за да може да върши своята работа в рамките на цялото приложение. В този проект се намира и статичният клас CommonConstants, който съдържа в себе си глобални константи, които се използват на различни места, което спомага да се намали броят на „магически“ нишки от текст в кода и също така прави възможно тези константи да се преизползват. Този тип клас не е характерен само за проекта Common, а и за Web и Service.
Характерно за приложението е и високото ниво на абстракция, която личи по това, че почти всеки клас има съответстващ интерфейс, а някои групи класове като контролерите имат общ абстрактен клас. Това помага за лесно своевременно засичане на грешки и бързото им отстраняване. Също така при промяна на нещо базово, което засяга няколко отделни класа, то лесно може да бъде имплементирано, защото е нужно да се добави само на едно единствено място, което рефлектира върху всички наследници на съответния абстрактен клас или интерфейс.
2.5. Метод на ползване
При отваряне на приложението в среда за разработване, а не чрез адреса му, е нужно да се натисне десен бутон върху проекта ZakaraiMe.Web и после върху Manage User Secrets, където трябва да се постави следното парче код: { "Authentication:Facebook:AppId": "2072239089478904", "Authentication:Facebook:AppSecret": "26b9186361877da50935f21cdba80928" } Това има отношение към регистрацията през Facebook и е нужно, за да работи приложението в средата за разработване, но не се отразява на работата му на вече публикувания адрес.
При отваряне на адреса на приложението www.zakaraime.com потребителят е посрещнат от началната страница, където е насърчен да се регистрира или да влезе във вече съществуващия си профил. В същото време потребителят бива запознат с двете опции, които има пред себе си. Той може или да създаде свой собствен маршрут и да предлага превоз, или да търси превоз по зададени от него начална, крайна точка и дата на пътуване.
При първоначална регистрация потребителят е длъжен да въведе своите имена, имейл, парола, телефонен номер и профилна снимка, като от имената му се генерира потребителско име от нашата система, за да се избегне дублиране на потребителски имена или създаването на неподходящи такива. Клиентът има възможността да се регистрира и чрез социалната мрежа Facebook, като автоматично се извличат имената, имейла и профилната му снимка от неговия профил. След това потребителят вече може да ползва приложението пълноценно.
Ако потребителят желае да предлага превоз, то той ще бъде подканен да въведе данните на своята кола, които са цвят, марка и модел и снимка на колата. След въвеждането на своята първа кола потребителят има правото да създаде маршрут с начална и крайна точка и дата и час на пътуване и свободни места в колата. След публикуването на маршрута, той става достъпен за всички потребители, които търсят превоз и те имат правото да се свържат с шофьора.
Ако потребителят търси превоз, то той въвежда отправна и крайна точка на своето пътуване и системата му предлага подходящи съществуващи маршрути и връзка с хората, които ги предлагат.
Всеки потребител има правото да редактира и трие данните на своя профил, своите коли и маршрути, както и да отказва на определени потребители да пътуват с него или да се отказва от заето място в даден маршрут. Приложението съдържа и администраторска роля(има готов админски профил за тестване – с данни email: [email protected] и парола - admin), като потребителите, притежаващи тази роля, имат правото да трият коли и маршрути на абсолютно всички потребители, без да се нуждаят от тяхното съгласие или да са длъжни да ги известяват за тези свои действия. 3. Заключение
Все по-голямото натоварване на трафика и задълбочаващият се проблем със замърсяването на околната среда са факторите, които ни подтикнаха да създадем това приложение. То си поставя за цел да реши тези проблеми и има ясна концепция за осъществяването на това, защото интересът към споделенето пътуване е доказан от множеството групи в социалните мрежи и расте неспирно. Разработеното от нас приложение има поле за развитие, защото има възможност да бъдат въведени жив чат между потребителите за по-лесна комуникация и улесняване на търсенето и предлагането на споделени пътувания. Също така предстои да бъде въведена и рейтингова система за оценяване на шофьорите и пътниците, които би повишило качеството на предлаганата услуга и доверието на потребителите едни към други. 4. Използвана литература
https://docs.microsoft.com/en-us/dotnet/csharp/ - документация за езика C#
https://docs.microsoft.com/en-us/aspnet/ - документация за структурата на приложението (ASP.NET)
https://docs.mapbox.com/ - документация за технологията, предоставяща картите