Îndrumător proiect/Coordonator științific, Prof. dr. ing. Luminița DUMITRIU Absolvent, Ștefănică FRANGU Galați 2017 SPECIALIZAREA: Calculatoare și… [305507]
PROIECT DE DIPLOMĂ
Îndrumător proiect/[anonimizat]. Luminița DUMITRIU
Absolvent: [anonimizat]
2017
SPECIALIZAREA: [anonimizat]. Luminița DUMITRIU
Absolvent: [anonimizat]
2017
Anexa 1
Nr. _____/__________________
Aprobat,
[anonimizat], absolvent: [anonimizat], Calculatoare, [anonimizat] „Dunărea de Jos” [anonimizat], specializarea (licență) [anonimizat] 2017, [anonimizat] 2017.
Am ales proiectul de diplomă cu titlul „Sistem de comenzi aplicație taxi” sub îndrumarea Prof. dr. ing. Luminița Dumitriu.
Am citit cu atenție REGULAMENTUL DE ÎNTOCMIRE A PROIECTELOR DE DIPLOMĂ ȘI LUCRĂRILOR DE DISERTAȚIE și l-am respectat integral.
Data: __________________________ Semnătura ____________________________
Viza îndrumătorului proiectului __________________________
Viza Directorului de departament ce coordonează programul __________________
Anexa 2
[anonimizat]: [anonimizat], Calculatoare, [anonimizat] „Dunărea de Jos” [anonimizat] 2017, [anonimizat] „Sistem de comenzi aplicație taxi” este elaborat de mine și nu a mai fost prezentat niciodată la o altă facultate sau instituție de învățământ superior din țară sau străinătate. [anonimizat], [anonimizat], cu respectarea regulilor de evitare a plagiatului.
“Plagiatul: [anonimizat], procedurilor, tehnologiilor, [anonimizat], prezentându-le drept creație proprie.”
Am luat la cunoștință că prezentarea unui proiect plagiat va conduce la anularea diplomei de licență.
Data: ________________ Semnătura ____________________________
Anexa 3
ACORD PRIVIND TRANSFERUL REZULTATELOR PROIECTULUI DE DIPLOMĂ/[anonimizat], absolvent: [anonimizat], Calculatoare, [anonimizat] „Dunărea de Jos” [anonimizat] 2017, specializare Calculatoare și Tehnologia Informației, (NU) SUNT DE ACORD * [anonimizat]– [anonimizat], [anonimizat] „Dunărea de Jos” [anonimizat] a facultății și în folosul exclusiv al studenților.
Proiectul/lucrarea conține următoarele:
Partea hardware compusă din:
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Partea software compusă din:
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Data: ________________ Semnătura ____________________________
Notă:
* Se taie (bifează), după caz
Rezumat
În prezentul proiect de diplomă cu titlul „Sistem de comenzi aplicație taxi”, am prezentat aplicația TaxiApp, în cadrul căreia am implementat un sistem de comenzi
CUPRINS
Introducere 1
Capitolul 1. Denumirea capitolului (Heading 1 style) 2
1.1. Instrucțiuni de redactare (Heading 2 style) 2
1.1.1. Contextul proiectului (Heading 3 style) 3
Capitolul 2. Denumirea capitolului 4
Capitolul 3. Denumirea capitolului 5
Capitolul 4. Denumirea capitolului 6
Concluzii 7
Bibliografie 8
Anexa 1 9
LISTA FIGURILOR
Fig. 1 Schema echivalentă a mașinii asincrone în regim staționar 2
LISTA TABELELOR
Tabelul 1 Titlul tabelului 3
Introducere
Introducerea va fi limitată la maximum 2 pagini.
Se vor arăta clar și concis obiectivele și scopul proiectului/lucrării, problemele care au trebuit să fie analizate și rezolvate în proiect/lucrare și modul general de soluționare a acestora.
Se vor face scurte referiri la măsura în care proiectul/lucrarea contribuie la rezolvarea sau îmbunătățirea problemelor, respectiv soluțiilor studiate.
Capitolul 1. ANALIZA APLICAȚIILOR SIMILARE
Uber
Uber este o aplicație de taxiuri prin intermediul căreia poți comanda un taxi, șoferul fiind unul dintre participanții la trafic, nu o persoană cu licență de taximetrist.
Prin intermediul acestei aplicații, orice participant la trafic poate deveni taximetrist, dacă îndeplinește termenii și condițiile de bază ale aplicației pentru a putea intra în baza de șoferi Uber și anume:
să aibă minim 21 de ani;
să dețină permis de conducere categoria B, obținut cu cel puțin 1 an în urmă;
să nu aibă cazier judiciar;
autovehiculul să nu fie mai veche de 10 ani și să nu aibă mai mult de 7 locuri;
să nu dețină puncte de penalizare;
CAPITOLUL 2. PROIECTAREA APLICAȚIEI
Proiectarea aplicației constă în:
Configurarea serverului și conectarea la baza de date MySQL;
Crearea bazei de date;
Crearea și implementarea aplicației;
Configurarea serverului și conectarea la baza de date MySQL
Pentru configurarea serverului este nevoie să modificăm fișierele httpd.conf și httpd–vhosts.conf pentru a seta prioritățile și ai oferi serverului persimiunile necesare rulării acestuia și anume:
Introducerea adresei prin intermediul căreia să fie accesat serverul;
Pentru accesarea serverului din localhost este necesar să setăm ip-ul calculatorului din clasa de adrese a routerului și apoi să o inserăm în fișierul httpd.conf (figura sfaf).
Nume server localhost
Pentru accesarea serverului la nivel global, este necesară schimbarea portului la care este ascultat serverul, deoarece pot apărea conflicte cu serviciile web, implicit fiind folosit portul 80;
Pentru accesarea la nivel global a serverului, poate fi utilizată adresa externă a calculatorului care este ascultată la portul 1234 în această aplicație (figura asfaf ).
Accesare server global
Este necesar să ținem cont că, dacă dorim să schimbăm portul la care este ascultat un serviciu, trebuie să efectuăm un port forwarding.
În figura fasfaf este prezentat un exemplu de port forwarding:
Exemplu port forwarding
Nu trebuie să omitem faptul că, pentru a putea permite calculatorului să trimită date, sau să primească date de la programe, servicii sau alte dispozitive, trebuie să adaugăm reguli firewall-ului calculatorului pentru a putea comunica cu dispozitivele care încearcă să comunice cu serverul prin intermediul portului creat și anume portul 1234. În figurile asdfs asfasf sunt prezentate exemple de creare de reguli firewall:
Reguli imbound firewall pentru server
Proprietăți regulă inboud creată
Acordarea priorităților pentru a putea fi accesat global;
Acordarea priorităților în fișierul httpd.conf sunt exemplificate în figurile asddas:
Acordare priorități fișier httpd.conf (1)
Acordare priorități fișier httpd.conf (2)
Acordarea priorităților în fișierul httpd-vhosts.conf sunt exemplificate în figura asddas:
Acordare priorități fișier httpd-vhosts.conf
Punerea serverului online pentru a putea fi accesat de oriunde (după schimbarea portului adresei de accesare a serverului);
Pentru a pune serverul online, este necesară apăsarea pe iconița aplicației și apăsarea pe Put Online.
Pentru conectarea la baza de date este necesară introducerea utilizatorului si parolei in fereastra phpMyAdmin a serverului (figura asf):
Fereastră login baza de date
Crearea bazei de date;
Crearea bazei de date se face în două etape, după cum urmează:
Construirea Modelului Conceptual al Datelor (MCD):
Modelul conceptual al datelor este reprezintă o structură logică a bazei de date, o structură care nu depinde de software-ul utilizat sau de modalitatea de stocare a datelor. Pentru crearea unui model conceptual este nevoie de o serie de instrumente care ne ajută la modelarea datelor, cel mai folosit fiind diagrama entitate-relație.
Aplicația prezentă are o bază de date formată dintr-o singură tabelă și anume users_data prezentată în figura asf:
Reprezentarea modelului conceptual
Construirea Modelului Logic al Datelor (MLD):
Modelul logic al datelor reprezintă descrierea datelor ținând cont de condițiile impuse și de tehnicile de stocare. Proiectul logic al unei baze de date relaționale creează și validează modelul logic de date local. Se dorește să costruim un model logic al datelor ce are ca baza modelul conceptual al datelor creat, validarea modelului logic al datelor realizându-se prin intermediul tehnicii normalizării.
Modelul logic al datelor este reprezentant în rândurile ce urmează:
USERS_DATA:[idU,firstName, lastName, email, phoneNumber, password];
Crearea și implementarea aplicației
Crearea și implemetarea aplicației va fi discutată pe baza ierarhiei claselor aplicației (fig asaf), explicând modalitatea creării acestora și funcționalitatea pe care le au clasele în rularea aplicației.
Ierarhia claselor
Clasele se află în pachetul de bază generat de către aplicație și anume com.example.nafepc.taxiapp.
Pentru a putea ințelege mai bine cum rulează acestă aplicație vom lua fiecare clasă în parte și vom face o scurtă prezentare a acestora, după cum urmează:
BackgroundWorker – această clasă conține un AsyncTask care ne ajută să decongestionăm main thread-ul în momentul în care un utilizator se loghează sau iși crează un cont, generând un nou thread în momentul apelării acestei clase. Request-ul se face către un fișier php(figura asf) din serverul creat, prin intermediul unui url(figura fff) pentru fiecare acțiune în parte și anume: logare și înregistrare.
Cale către fișierele php apelate
Url-uri apelate pentru accesarea fișierelor serverului
LoginView – această clasă conține fereastra de logare și metodele care verifică dacă informațiile introduse de către utilizator se regăsesc în baza de date, prin apelarea clasei BackgroundWorker și metoda deschiderii ferestrei ce conține harta Google, dacă utilizatorul este regăsit în baza de date.
MapsActivity – această clasă conține fereastra cu harta Google și metodele care creează taxiuri, generează rute, calculează distanțe, generază estimări, manipulează API-ul Google Maps cu privire la actualizarea informațiilor referitoare la locația utilizatorului. La rândul ei, această clasă mai cuprinde următoarele clase:
ReadTask – prin intermediul căreia creăm un thread pentru citirea informațiilor link-ului generat de către clasa Map HttpConnection;
MapHttpConnection – cu ajutorul căreia generăm linkul pe care il vom accesa în vederea preluării informațiilor necesare;
PathJSONParser – această clasă conține listă de string-uri în care salvăm informațiile referitoare la obiectele de tip JSON (rute dimensiuni) primite din request-ul făcut către Google Maps API și o listă de latitudini și longitudini ce primește ca parametru string-ul returnat de catre PathJson în vederea transormării obiectului de tip JSON într-un format ce poate fi înțeles de către IDE;
ParserTask – clasă cu ajutorul căreia creăm un thread nou pentru citirea obiectelor primite de la clasa PathJSONParser și returnarea punctelor generate între două locații (locația1( latitudine, longitudine), locația2 (latitudine, longitudine)), pentru a putea genera linia ce va trece prin punctele generate pentru a crea o rută pe harta Google Maps;
Register – clasă ce conține fereastra de înregistrare și metodele care verifică dacă informațiile introduse de către utilizator pentru crearea unui cont nou îndeplinesc condițiile necesare (lungime parolă, format email corect, etc.) și face un request serverului pentru a introduce informațiile în baza de date;
CAPITOLUL 3. IMPLEMENTAREA APLICAȚIEI
Tehnologii folosite
Pentru a putea folosi o bază de date la care utilizatorii să se conecteze global, am folosit WampServer cu o bază MySQL.
[1]WampServer este un mediu de dezvoltare web ce rulează pe platforma Windows. Acesta vă permite să creați aplicații web cu Apache, PHP și baza de date MySQL. De asemenea, vine cu PHPMyAdmin pentru a vă gestiona cu ușurință bazele de date. WampServer este singura soluție care vă permite să reproduceți serverul de producție. Odată ce WampServer este instalat, aveți posibilitatea să adăugați cât mai multe versiuni de Apache, MySQL și PHP așa cum doriți. WampServer are, de asemenea, o pictogramă pentru a gestiona serverul și setările acestuia.
Funcționalități
Gestionarea serviciilor Apache și MySQL;
Comutarea online/offline;
Instalarea și comutarea versiunilor de Apache, MySQL și PHP;
Gestionarea setărilor serverelor;
Accesarea fișirelor de sistem;
Crearea unui alias;
Toate aceste funcționalități sunt disponibile la apăsarea click-ului stânga pe pictograma WampServer (figura asf):
Pentru implementarea bazei de date am utilizat MySQL, pus la dispoziție de către mediul de dezvoltare WampServer.
[3]MySQL este un sistem de gestiune a bazelor de date relaționale, produs de compania suedeză MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).
Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum ar fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip specific API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respectivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.
Manipularea datelor MySQL:
INSERT – inserează un articol într-o tabelă:
UPDATE – actualizează un set de articole:
DELETE – șterge un set de articole:
Pentru interogarea bazei de date am folosit scripturi PHP
PHP este un limbaj de programare. Numele PHP provine din limba engleză și este un acronim recursiv : Php: Hypertext Preprocessor. Folosit inițial pentru a produce pagini web dinamice, este folosit pe scară largă în dezvoltarea paginilor și aplicațiilor web. Se folosește în principal înglobat în codul HTML, dar începând de la versiunea 4.3.0 se poate folosi și în mod „linie de comandă” (CLI), permițând crearea de aplicații independente. Este unul din cele mai importante limbaje de programare web open-source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și pentru toate sistemele de operare. Conform statisticilor este instalat pe 20 de milioane de site-uri web și pe 1 milion de servere web. Este disponibil sub Licenṭa PHP ṣi Free Software Foundation îl consideră a fi un software liber.[4]
Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici :
Familiaritatea : sintaxa limbajului este foarte ușoară combinând sintaxele unora din cele mai populare limbaje Perl sau C;
Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;
Eficiența : PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiutilizator, așa cum este web-ul;
Securitate : PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;
Flexibilitate : fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, server, etc.;
Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a PHP-ului la nevoile web-ului, eficientizarea și securizarea codului.[5]
Pentru implementarea aplicației am utilizat Android Studio.
Android Studio este IDE-ul oficial pentru platforma Android.
[5]Android este un sistem de operare pentru telefoane mobile și alte dispozitive dezvoltată de Google, bazat pe nucleul Linux și conceput inițial pentru dispozitive cu touchscreen, cum ar fi telefoanele sau tabletele. Platforma Android permite utilizatorilor să scrie cod în limbajul Java, Google punând la dispoziție bibliotecile dezvoltate de aceștia.
[6]Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de către James Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat în 1995. Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice permit utilizarea sa și pe dispozitive mobile gen telefon, agenda electronică, palmtop etc. În felul acesta se creează o platformă unică, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat. Acesta este utilizat în prezent cu succes și pentru programarea aplicațiilor destinate intranet-urilor.
CAPITOLUL 7. MANUAL DE UTILIZARE
Utilizarea aplicației se face pe baza unui cont, cu ajutorul căruia utilizatorul se poate conecta la aplicație.
Pornirea aplicației ne direcționează către fereastra de logare, unde suntem nevoiți să introducem datele contului pe care l-am creat anterior (emailul, cu ajutorul căruia am creat contul și parola pe care am asignat-o acestuia).
Fereastra de logare
În cazul în care nu aveți un cont de utilizator creat, este necesară crearea acestuia pentru a vă putea conecta la aplicație. Pentru a crea un cont este necesară apăsarea butonului creare cont, de unde veti fi redirectionat către fereastra de logare, unde sunteți nevoiți să completați câmpurile necesare creării contului și anume:
nume;
prenume;
email;
număr de telefon;
parolă;
Fereastra de înregistrare
Apăsarea butonului înregistrare se face după ce toate câmpurile au fost completate și toate condițiile completării acestor câmpuri au fost îndeplinite pentru a putea crea un cont nou, altfel vom primi mesaje de eroare referitoare la:
necompletarea câmpurilor;
nerespectarea formatului emailului;
introducerea unui număr de telefon invalid (nu conține 10 cifre) sau a unui număr care nu aparține rețelelor de telefonie din România (07…);
introducerea unui parole scurte sau care nu conține litere mari și cu o lungime mai mare de 5 caractere;
La apăsarea butonului logare, dacă nu sunt greșite emailul sau parola, se va efectua conectarea la aplicație și redirecționarea către o altă fereastră în care se va încărca Google Maps.
Fereastra harta Google Maps
Prin intermediul acestei ferestre avem posibilitatea de a:
vizualizarea locației curente ale utilizatorului în timp real actualizată (cerculețul albastru);
Vizualizare locație curentă
introduce o locație spre care dorim să ne deplasăm la apăsarea unei zone pe harta Google (reprezentată printr-un pin de culoare albastru deschis);
La apăsarea oricărei zone din harta Google se va marca zona selectată .
Inserare destinație
genera o estimare a distanței până la locația dorită, a consumului pe care l-ar face taximetristul pentru a parcurge acea distanță și a costului pe care o să-l efectuăm la finalizarea comenzii;
Dacă a fost inserată o locație, la apăsarea butonului estimare va fi afișată o fereastră în care vor fi afișate: distanța până la destinație, consumul de combustibil al taximetristului și costul cursei.
Estimare traseu până la destinație
În caz contrar, dacă nu a fost inserată o destinație pe hartă, pe ecran va fi afișat un mesaj de atenționare.
Mesaj atenționare buton estimare
Fereastra deschisă la apăsarea butonului estimare, conține două acțiuni posibile și anume: anulare și comandă.
Dacă vom apăsa anulare estimarea generată va fi închisă și avem posibilitatea recalculării estimării, sau generarea unui traseu nou și implicit o estimare nouă.
comanda un taxi după generarea estimării;
observa intervalul estimativ de timp necesar taximetristului pentru a putea ajunge la locația utilizatorului din locația în care acesta se afla în momentul plasării comenzii;
Prin apăsarea acțiunii comandă, din fereastra generată de butonul estimare, pe hartă va apărea cel mai apropiat taxi care va porni către locația utilizatorului în scurt timp și va fi generat un mesaj pe ecran cu intervalul de timp estimativ pe care îl va efectua taximetristul până la poziția persoanei care a plasat comanda, mesaj ce se va actualiza la fiecare secundă.
Apăsare acțiune comandă din fereastra estimare
observa traseul optim (cel mai scurt) pe care îl va parcurge taximetristul din zona din care este generată estimarea, până în zona în care a fost marcată destinația pe hartă;
După selectarea destinației pe hartă și apăsarea butonului estimare se va genera un traseu (cel mai scurt) din zona în care a fost generată estimarea și până în zona marcată pe hartă.
Generare traseu
observa taxiurile din aproprierea zonei în care vă aflați;
Prin apăsarea butonului taxiuri, pe hartă vor apărea cele mai apropiate taxiuri din zonă
Afisare taxiuri apropiate
selecta un taxi care este în zona învecinată locației utilizatorului, în vederea preluării comenzii;
Putem selecta orice taxi generat la apăsarea butonului taxi și putem plasa o comandă prin apăsarea butonului comandă, din colțul din stânga al ecranului, unde am regăsit butonul taxiuri.
Lansare comanda taxi selectat
anula comanda efectuată;
Orice comandă activă efectuată, poate fi anulată prin apăsarea butonului anulare.
Apăsare buton anulare
Bibliografie
[1 ]. http://download.cnet.com/WampServer-64-Bit/3000-10248_4-75544590.html
[2]. http://www.wampserver.com/en/
[3]. https://ro.wikipedia.org/wiki/MySQL
[4]. https://ro.wikipedia.org/wiki/PHP
[5]. https://en.wikipedia.org/wiki/Android_(operating_system)
[5].https://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
[6]. https://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Îndrumător proiect/Coordonator științific, Prof. dr. ing. Luminița DUMITRIU Absolvent, Ștefănică FRANGU Galați 2017 SPECIALIZAREA: Calculatoare și… [305507] (ID: 305507)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
