IMPLEMENTAREA UNEI APLICAȚII PENTRU REZERVĂRI ÎN RESTAURANTELE DIN ORADEA REALIZATĂ ÎN SISTEMUL DE OPERARE ANDROID [304906]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU
TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT ZI
PROIECT DE DIPLOMĂ
COORDONATOR ȘTIINȚIFIC:
Conf. Dr. Ing. OVIDIU CONSTANTIN NOVAC
ABSOLVENT: [anonimizat]
2016
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU
TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT ZI
IMPLEMENTAREA UNEI APLICAȚII PENTRU REZERVĂRI ÎN RESTAURANTELE DIN ORADEA REALIZATĂ ÎN SISTEMUL DE OPERARE ANDROID
COORDONATOR ȘTIINȚIFIC:
Conf. Dr. Ing. OVIDIU CONSTANTIN NOVAC
ABSOLVENT: [anonimizat]
2016
CAPITOLUL I – Introducere
Această lucrare are ca și temă realizarea unei aplicații native Android folosită pentru rezervarea în restaurantele din Oradea. Scopul aplicației este crearea unui mod cât mai simplu pentru efectuarea unei rezervări. Cu ajutorul unei liste în care sunt trecute restaurantele din oraș clienții vor putea face rezervarea prin câțiva pași simpli. Prin crearea unui cont aceștia vor trece datele personale care vor fi salvate într-o bază de date iar când rezervarea va fi făcută datele vor fi preluate și trimise automat la restaurantul respectiv. [anonimizat], telefon și website. Acestea vor avea partea de introducere a datelor legate de data în care se dorește să se facă rezervarea și locația restaurantului care va fi reprezentată cu ajutorul hărților Google. După trimiterea rezervării aceasta va putea fi observată pe o pagină web a [anonimizat]-a ales atunci când a efectuat rezervarea.
Ideea acestei aplicații pot spune ca a venit de la o necesitate proprie deoarece momentan sunt necesari mai mulți pași pentru a face o rezervare, cum ar fi căutarea restaurantului după aceea crearea unui cont doar pentru acel restaurant dar cu această aplicație contul este creat doar o singură dată și poate fi folosit la întreaga listă de restaurante.
[anonimizat]: [anonimizat], [anonimizat] a salva datele clienților și pentru a [anonimizat] , CSS , PHP și pentru conectarea la bazele de date am folosit limbajul MySQL.
[anonimizat]
2.1 Java
Limbajul de programare Java a fost dezvoltat de către JavaSoft, o companie mică din cadrul firmei Sun Microsystems [1]. Dezvoltarea acestuia a pornit din anul 1990 de către o echipă care își propunea să schimbe modul de programare aducând noi concepte. Totul a început de la faptul că dura mult timp până se portau aplicațiile între diferite platforme și timpul programatorilor era irosit iar erorile nu lipseau să apară. Echipa a pornit de la limbajele C și C++ [anonimizat] , tipurile de struct și union au fost înlocuite prin folosirea claselor, dar au păstrat ceea ce era de folos din aceste limbaje. Acest tip de limbaj este unul orientat pe obiecte iar la o prima vedere unul din avantajele multe pe care le are este acela de a refolosi codul dar înainte de a descrie aspectele tehnice ale acestui limbaj ar fi util să specific calitățile pe care le dobândește, acestea fiind :
1.Ușurința în crearea unor programe și aplicații mai dificile .
2.Simplitatea prin cele patru importante concepte , încapsulare , moștenire, abstractizare și polimorfism dar și prin eliminarea unor instrucțiuni nefolositoare din limbajele C și C++.
3.Robustețe prin eliminarea pointerilor care duce la o administrare automată a memoriei, programatorul nu trebuie sa aloce memorie în mod explicit deoarece obiectele care nu se mai folosesc sunt eliminate cu ajutorul unui colector numit “garbage collector” ceea ce înseamnă colector de gunoaie.
4.Orientat pe obiecte ceea ce duce la eliminarea unei programări procedurale folosind concepte și caracteristicile specifice.
5.Performanță înaltă având tehnici pentru optimizarea timpilor de execuție atunci când sunt citite clasele programelor.
6.Dinamicitate prin faptul că programul se poate adapta în funcție de mediul în care se află și rulează.
7.Este interpretabil de către un browser web , alte programe și dispositive ce dispun de o stivă , un registru și de un microprocessor capabil să facă operații aritmetice , deoarece limbajul Java transformă programul scris de programator în cod mașină care poate fi interpretat , chiar dacă uneori timpul de răspuns nu este unul instant.
8.Securitatea de care dispune îl face să fie un limbaj foarte sigur cu ajutorul unor metode stricte de securitate dar și prin eliminarea pointerilor și folosirea colectorului de gunoaie îl face să fie mult mai stabil și protejat.
9.Caracteristica de multithread care ajută programele să ruleze pe mai multe fire de execuție ceea ce duce la timpi de așteptare mult mai puțini.
Aceste caracteristici ale limbajului Java sunt ceea îl diferențiază de alte limbaje dar pe lângă acestea o parte importantă privind aspectele tehnice prin care s-a remarcat și a devenit atât de cunoscut au fost cele 4 concepte care stau la baza acestui limbaj dar înainte de a le menționa și explica rolul acestora e important de definit ceea ce înseamnă un obiect și termenul de clasă.
Obiecte și clase
Un obiect este o componentă creată de către o clasă, se mai poate spune că un obiect este o instanțiere a unei clase. Obiectul creat are anumite proprietăți cum ar fi atribute și operații (numite și metode) care sunt folosite pentru a lucra cu acel obiect. Clasa care crează obiectul are rolul de a specifica comportamentul și proprietățile acelui obiect sau a mai multor obiecte care pot fi create de către aceea clasă.O clasă conține attribute (câmpuri de date) și metode (numite și funcții). Clasele se definesc cu ajutorul cuvântului cheie “class” urmat de un nume pe care programatorul îl poate alege pentru a descrie clasa, sintaxa având următoarea formă :
[modificatori_acces] [modificatori_clasa] class [nume_clasa] [clauze_s]
{
[corpul_clasei]
}
Semnificația elementelor fiind următoarea :
[modificatori_acces] este specificat nivelul de acces al clasei
[modificatori_clasa] tipul de clasă
Aceste două elemente sunt opționale , urmând după aceea :
[nume_clasa] numele ales de programator care descrie la ce este folosită clasa , se preferă ca numele sa înceapă cu literă mare
[clauze_s] se referă la poziția clasei respective din ierarhia de clase sau se poate face referință dacă se dorește alte implementări
[corpul_clasei] aici sunt definite variabilele și metodele clasei la rândul lor acestea pot avea modificatori de acces.
Concepte fundamentale
Clasele dar și obiectele se folosesc de cele 4 concepte fundamentale, acestea fiind [2] :
Încapsularea
Se referă la structura internă a unui obiect la datele din interioul acelui obiect pentru care programatorul poate specifica dacă vor putea fi accesate sau nu, dacă informația este ascunsă total sau parțial
Moștenire
Un mecanism foarte util deoarece aici apare posibilitatea de a refolosi codul existent. Prin acest concept o clasă ce urmează sa fie creată va putea sa moștenească atributele dar și metodele unei clase deja create. Prin acest concept se pot reutiliza clase existente astfel programatorul nu mai trebuie sa rescrie codul deoarece pe lângă această posibilitate de refolosire se pot aduce și îmbunătățiri, astfel obiectul se poate extinde în ceea ce privește comportamentul său. Dintr-o clasă de bază se poate deriva mai multe clase ce pot fi derivate , ceea ce duce la o așa numită ierarhie de clase.
Polimorfismul
Reprezintă capacitatea unui obiect de a-și schimba forma chiar dacă acesta a fost moștenit. Obiectul poate fi redefinit prin rescrierea metodelor în subclasele derivate în mod direct sau indirect dintr-o superclasă. Semnificația cuvântului polimorfism este : mai multe forme , acest concept oferă o varietate largă în rezolvarea diferitelor probleme atunci când sunt create ierarhii de clase.
Abstractizarea
Acest concept este util când se lucrează cu ierarhii mari de clase, deoarece clasele care sunt generale vor fi implementate cu ajutorul acestui concept. Clasele respective nu poti fi folosite direct ci doar cele descendete din ele. Conceptul nu permite crearea unui obiect dintr-o astfel de clasă abstractizată ci doar sa creeze un model iar dacă se dorește să fie folosită trebuie derivată. Dacă cel puțin într-o clasă este o metodă abstractă atunci aceea clasă va fi definită ca fiind abstractă.
Aceste concepte sunt foarte utile și esențiale ,ele au adus beneficii acestui tip de programare și anume cel orientat pe obiecte, acesta fiind unul dintre cei mai importanți pași care au fost făcuți în evoluția limbajelor de programare. Necesitatea modului de exprimare cât mai natural a dus la crearea acestei modalități de programare.
Exemplu
În ceea ce privește cum se scrie un astfel de limbaj vom avea următorul exemplu :
class MyClass
{
public static void main(String args[])
{
System.out.println("Hello world!");
}
}
După rulare se va afișa mesajul Hello world!
Clasa principală este numită main , de aici codul va începe sa fie creat și executat afișând acel mesaj, această clasa reprezintă punctul de intrare pentru execuția aplicației. Orice aplicație are nevoie de această clasa deoarece fără ea nu poate fi rulată . Fișierele sursă vor avea întotdeauna extensia .java iar pentru rularea compilatorului se vor defini locațiile claselor Java necesare pentru rulare.
Modul de execuție este de două tipuri : interpretat și compilat.
1.Prin interpretare codul este rulat line cu linie iar mai apoi tradus în instrucțiune mașină, este o metodă simplă și are un avantaj al portabilități.
2.Cel compilat transformă programul sursă în cod mașină ce poate fi executat direct de către procesorul dispozitivului respectiv.Are un timp de execuție mult mai rapid dar lipsește portabilitatea în comparație cu primul mod de execuție menționat mai sus.
Din punct de vedere al structurii limbajul Java este de două tipuri : Applet și aplicație de sine stătătoare
1.Applet se referă la o fereastră dreptunghiulară în care rulează programul, acesta poate fi descărcat de pe un server dar pentru a funcționa are nevoie de un program extern cum este browserul web sau un program special numit applet viewer.
2.Aplicația de sine stătătoare se referă la tipul de aplicații independente care pot rula fara a avea nevoie de alte resurse.
Limbajul Java împrumută multe caracteristici ale limbajelor C și C++ dar față de acestea portabilitatea este una dintre îmbunătățirile aduse deoarece un program Java compilat poate să ruleze pe orice platformă care are o mașină virtuală Java, aceasta este un mediu în care sunt executate programale, codul este transformat în cod de octeți acesta este un intermediar între codul sursă scris de programator și codul mașină al dispozitivului.
2.2 Android
Platforma software dezvoltată inițial de Google iar mai târziu de Open Handset Alliance, un grup de companii importante specializate pe partea hardware, telecomunicații și software precum HTC, Intel, Motorola, Qualcomm, T-Mobile, Sprint Nextel, Nvidia au făcut posibilă dezvoltarea unui sistem de operare care urma să fie folosit de o varietate largă de dispozitive și telefoane inteligente numite “smartphones” [3]. Aceștia au creat o platformă unde programatorii numiți și dezvoltatori pot să scrie cod gestionat în limbajul Java controlând astfel dispozitivele cu ajutorul bibliotecilor Java dezvoltate de către Google.Aceste biblioteci sunt clase gata create cu rolul de a economisi timp, codul fiind deja scris dezvoltatori pot să le folosească fară a le rescrie, dar unele pot fi schimbate după necesitate. Sistemul de operare are la bază nucleul Linux numit și kernel creat inițial pentru microprocesorul Intel 80386 a fost scris în limbajul de programare C.
Istoric
Totul a început prin achiziția făcută de Google a unei compani mici ce avea locația în SUA, California într-un oraș numit Palo Alto. Inițial nu se cunoșteau multe despre Android doar că este o companie având ca scop dezvoltarea software pentru telefoane mobile. Cei care dețineau și conduceau compania la acel moment erau Andy Rubin, Rich Miner, Nick Sears și Chris White. Deși compania a fost cumpărată aceștia au continuat să dezvolte sistemul de operare alături de cei de la Google. Aceștia au reușit să lanseze cea mai mare parte a codului Android sub licență Apache de tipul “open source” liberă pentru dezvoltatori să aibe acces la toate resursele sistemului inclusiv la suport pentru rețea și telefonie, deși unii spun că accesul este unul limitat. Parți ale sistemului fiind controlate doar de cei de la Google. În primele versiuni aveau numeroase erori numite “bug” , infrastructură neadecvată , lipsa de documentație și multe întrebări fără răspunsuri, dar în cele din urmă au început să apară facilități cum ar fi [7] :
1.Program de depanare
2.Biblioteci
3.Emulator de testare a aplicaților
4.Documentație
5.Mostre și exemple generale
6.Multe forumuri și tutoriale
Mediul de dezvoltare
În ceea ce privește mediul de dezvoltare la început se putea folosi orice editor de text pentru a crea fișiere XML și Java iar mai apoi din linia de comandă se puteau crea aplicațile, momentan mediile folosite sunt Eclipse utilizând ”plug-in” Android Development Tools (ADT) și Android Studio [4]. Câteva dintre caracteristiciile acestor medii care sunt într-o continuă dezvoltare ar fi următoarele:
1. Biblioteci grafice 2D, 3D bazate pe specificații OpenGL ES, dar se pot folosi și alte librării în acest scop.
2. Tehnologii de conectivitate care pot fi testate GSM / EDGE, CDMA, EV-DO, UMTS, Bluetooth și Wi-Fi
3. Sistemul de operare Android are posibilitatea de a folosi o bază de date proprie numită SQLite aceasta poate să stocheze datele în memoria telefonului fără necesitatea unei baze de date externe.
4. Navigatorul de web din Android are o platformă de tip ”open source” fiind foarte utilă și accesibilă utilizatorilor.
5. Sunt acceptate fișiere audio/video/imagini cu extensii MPEG-4, H.264 , MP3, AAC, OGG, AMR, JPEG, PNG, GIF.
6. Emulatorul de dezvoltare cu unelte de depanare, gestionare a memoriei, testare și rulare a aplicației.
7. Compilarea poate fi făcută în cod de tip Dalvik un cod mașină.
8. Utilizarea unor caracteristici cum ar fi accelerometru, giroscop, grafică 3D, ecranul tactil, cameră pentru filmare și poză, GPS.
9.Un program de descărcare a aplicațiilor numit ”GooglePlay” utilizatorii având o varietate foarte mare de unde pot cumpăra sau descărca fără a plăti aplicații.
Versiunile sistemului de operare
Versiunile acestui sistem de operare începând din aprilie 2009 și până în prezent purtând denumiri alfabetice inspirate mai mult sau puțin din cofetărie au continuat să fie dezvoltate și create. Numele lor fiind :
Alfa(1.0) , Beta (1.1) – acestea fiind primele versiuni dar după aceea au urmat
Cupcake (1.5) , Donut (1.6) , Eclair (2.0 – 2.1) , Froyo (2.2 – 2.3) , Gingerbread (2.3 – 2.3.7)
Honeycomb (3.0 – 3.2.6) este prima versiune folosită pentru tablete urmând
Ice cream sandwich (4.0 – 4.0.4) , Jelly Bean (4.1 – 4.3.1) , KitKat (4.4 – 4.4.4) , Lolipop (5.0)
iar cea mai recentă versiune este Marshmallow (6.0 – 6.0.1) .
Acestea aducând mereu caracteristici inovative, multiple îmbunătățiri și un mod de folosire cât mai ușor pentru utilizatori.
Versiune recentă
Cea mai recentă versiune la momentul de față Marshmallow are numeroase îmbunătățiri. Pe lângă o interfață restructurată și îmbunătățirea consumului de energie această versiune aduce următoarele noutăți [5] :
Scaner pentru amprente – o interfață unde utilizatorul își poate seta anumite caracteristici amprentei
Android Pay – permite utilizatorilor să salveze datele cardurilor în telefon și sa plătească folosind această metodă
Securitate mai bună
Un control mai bun care permite utlizatorilor să aleagă dacă aplicațiile instalate pot să folosească sau nu caracteristici precum : locația curentă, lista de contacte, datele personale și microfonul
Memoria de stocare are un control mai bun asupra aplicaților instalate
Now on Tap – se referă la un nou mod de a căuta folosind vocea pentru a trimite cuvintele care vor fi căutate
Aceste îmbunătățiri depind și de modelul de telefon pe care îl alege utilizatorul , unele din acestea pot să fie implementate sau nu, aici contează și versiunea sistemului de operare dar și partea fizică dacă telefoanele dispun de părțile hardware cum ar fi acel cititor de amprente. Majoritatea îmbunătățirilor sunt aduse cu ajutorul aplicaților, acestea trebuie sa respecte anumite criterii înainte de a fi create, [6] deoarece o aplicație android are un ciclu de viață prin care trece de la deschidere până la închiderea acesteia.
2.3 XML
Abreviat de la Extensible Markup Language acest limbaj de marcare definește un set de reguli pentru documentele citite de utilizatori dar și de catre calculatoare sau alte dispozitive. Acest tip de limbaj a fost creat pentru a salva și a trimite date mai departe. Aspectul său este redat prin generalitate, simplitate și ușurința modului de folosire. Tipul de date care îl folosește este unul auto-descris având o structură implementată în interiorul acestora.[8]
Prima versiune
Aceasta a fost creată cu ajutorul unei echipe a căror membrii erau aflați la distanță unul de celălalt totul facându-se prin diferite mijloace de comunicare. Designul a fost creat într-un timp foarte scurt pentru o primă versiune acesta urmând să fie re-evaluat pentru versiunile ce aveau să apară. În cele din urmă au apărut anumite standarde ISO care au defenit rolul și modul de funcționare a diferitelor elemente, câteva caracteristici importante de menționat ar fi umătoarele :
Disponibilitatea pentru validare bazată pe gramatică
Separarea datelor
Modificarea logică și fizică a structurii compusă din elemente și entități
Împărțirea meta-datelor
Separarea conținutului mixt
Versiuni actuale
Acest limbaj are două tipuri de versiuni , prima 1.0 apărută în anul 1998 în prezent este la ceea de a cincea ediție și ceea de a doua XML 2.0 care a rămas doar la concept și nu a fost implementată.
Structura
În ceea ce privește structura acestui limbaj avem un bloc de bază definit prin elemente cu ajutorul etichetelor [9] .Câteva reguli ar fi următoarele :
Toate elementele unui document XML fac parte la rândul lor dintr-un alt element principal mai sus
Are o etichetă de început și una de sfârșit
Are suport ierarhic
Numele etichetei reflectă comportamentul blocului dar și conținutul acestora
Sunt acceptate elemente îmbrăcate adică element în interiorul altui element
Exemplu
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="Roman">
<title lang="ro">Maitreyi</title>
<author>Mircea Eliade</author>
<year>1933</year>
<price>25</price>
</book>
</bookstore>
Blocul de bază este <bookstore> acesta are eticheta de închidere și ceea de deschidere, în interiorul acestuia se află elementele care descriu blocul, cum ar fi categoria, titlul, autorul și alte informații legate de ceea ce elementul va transmite mai departe.
<book category="Roman">
<title lang="ro">Maitreyi</title>
…
</book>
Este important de menționat faptul că avem două elemente îmbrăcate < book > și < title > deoarece se poate folosi tot blocul < book > care va lua și elementul < title > sau doar un anumte element cum este < title >. Câteva dintre aceste element au atribute cum ar fi "category" de la :
<book category="Roman">
dar și " lang" de la :
<title lang="ro">Maitreyi</title>
acestea având rolul de a oferi mai multe informații elementelor respective, dar sunt și elemente care nu conțin atribute cum ar fi :
<year>1933</year>
<price>25</price>
Este un limbaj foarte util pentru transferul datelor rapid și aspectul acestora, unele limbaje cum ar fi XHTML a fost creat cu ajutorul acestui limbaj deoarece documentele XML pot fi foarte simplu scrise chiar și când datele ajung la destinație nu este nevoie de a reconstrui structura respectiva pentru a le stoca.
2.4 HTML
Unul dintre importantele tehnologii folosite pentru crearea ”WWW” (World Wide Web) este ”HTML” având abrevierea de la (Hypertext Markup Language) aceasta are rolul de a face posibilă distribuirea și vizualizarea paginilor web pentru utilizatori. Limbajul HTML a fost creat de Tim Bernes Lee la CERN în 1989, acesta dorea să ofere fizicienilor o cale de comunicare și transfer al informaților mai ușoară, [10] astfel documentele erau de tip text reprezentate pe o pagină web care utiliza un program special de redare a informației, de aici a apărut cuvântul ”Hypertext” acesta se referă la faptul că orice element dintr-o pagina web cum ar fi imagini, text sau adrese poti fi referite la alte documente, făcând navigarea ușor de folosit pentru utilizatori. În primi ani limbajul a avut o dezvoltare grea deoarece îi lipseau diferite caracteristici dar cu timpul acestea au început să fie stabilite cu ajutorul dezvoltatorilor și a contribuitorilor.
Caracteristici
1.Extensia acestor pagini este .html
2. Paginile sunt formate din etichete numite și ”tag-uri”, acestea au început și un sfârșit prin care este încheiată eticheta
3.HTML nu face diferență dintr literele scrise cu majuscule și minuscule este un limbaj ”non-case-sensitive”
4.Oricare dintre pagini trebuie să înceapă cu eticheta <html> iar </html> va încheia pagina respectivă.
5.Documentele HTML sunt documente în format de tip ASCII aceste se pot crea cu orice editor de text
6.Suport multimedia, pentru fișiere de tip audio , video.
7.Formulare folosite pentru trimiterea datelor și a altor informații.
Structură
Crearea unei pagini cu acest limbaj trebuie să respecte următoarea structură :
<html>
<head>
<title>
Titlul pagini
</title>
</head>
<body>
Conținutul pagini
</body>
</html>
Elementul <head> conține titlul paginii între etichetele <title></title> dar tot aici în secțiunea de <head> se pot scrie script-uri, stiluri care se referă la formatarea textului, legături către alte fișiere din afară cum ar fi CSS și tot aici se găsesc descrieri de tip <meta> acestea conțin : cuvinte cheie, descrierea paginii, date ale autorului și informații utile pentru motoarele de căutare . [11]
Evoluție
HTML 1.0
Prima versiune HTML 1.0 avea doar un simplu text și la acele momente nici nu era așa de cunoscut[12] .
HTML 2.0
Cea de a doua versiune începea să pună bazele acestui limbaj, apărea ca și un standard care urma să fie folosit de următoarele versiuni.
HTML 3.0
Era conceput pe versiunea anterioară 2.0 dar venea cu câteva îmbunătățiri importante cum ar fi :
”fill-out forms” – în care utlizatori își completau datele personale
Elemente de tip : ”checkbox-uri”, butoane de tip radio, partea de ”select” pentru meniuri
Comentarii – se puteau scrie pe mai multe rânduri
”tables” – afișarea datelor era făcută cu ajutorul tabelelor
Ecuații matematice – puteau fi utilizate la diferite calcule
HTML 3.2
Cu ajutorul celor de la W3C și anume World Wide Web Consortium în 1996 aceștia doreau să standardizeze și mai bine acest limbaj prin această nouă versiune care aducea îmbunătățiri precum :
Tabele – mult mai bine structurate
Applets – programe care rulau în pagina respectivă
Control mai bun pentru text și imagini
Avea o nouă regulă în ceea ce privește cum era începută o astfel de pagină și anume cu <!Doctype> care dorea să facă o diferență față de versiunile anterioare.
HTML 4.01
Avea mult mai multe îmbunătățiri precum :
Control mai bun multimedia
Posibilitatea de a adăuga scripturi
Style sheets – paginile aveau o interfață grafică
Unele pagini erau mai accesibile persoanelor cu dizabilități.
Elemente de internaționalizare pentru a face pagina accesibilă mai multor țări
XHTML 1.0
Se referea la reguli precum scrierea codului să respecte anumite criterii pentru o bună funcționare a paginii era creat cu ajutorul unui limbaj numit XML acesta este un limbaj de marcare ce definește un set de reguli cum ar fi:
Blocul de bază al unui document este elementul creat între etichete
Toate elementele unui document XML fac parte dintr-un element
Numele elementului descrie conținutul acestuia
HTML 5.0
Cea mai recentă versiune aduce:
Noi caracteristici sintactice
Posibilitatea de a folosi mai multe script-uri
Suport mai bun pentru audio și video
Expresii regulate
Folosirea mai multor limbaje
Toate aceste îmbunătățiri se află într-o continuă dezvoltare.
Elemente importante
Aceste pagini sunt create cu diferite elemente fiecare având un rol important , câteva exemple de elemente ar fi următoarele[11] :
<br> trecere la un rând nou
<p> descrie un paragraf
<h1> folosit pentru stilul unui titlu acesta poate fi de la 1 la 6
<div> o etichetă foarte importantă aceasta se referă la diviziunea paginii un mod de a o împărți astfel lucrul cu aceasta este mult mai ușor
<ul> folosit pentru liste
<href> crează link pentru alte pagini
<img> folosit pentru imagini
<table> crează tabele
<form> o etichetă foarte utilă și importantă care creează un formular în care utilizatorul își poate introduce datele sau alte informații.
<b> crează un stil pentru text acesta va fi scris cu litere îngroșate
<audio> util pentru implementarea sunetelor
<video> va reda conținut video
<iframe> crează o pagină în interiorul acelei pagini
<i> un stil pentru text
<mark> util pentru a da culoare fundalului acelui text pentru al scoate în evidență
<ins> va sublinia textul
<small> textul va fi scris cu litere mici
<sup> textul va fi scris mai sus decât cum apare atunci când e scris normal
<q> folosit atunci când sunt scrise citate
<del> textul va fi tăiat cu o linie
Un exemplu mai diferit ar fi :
<h2 style="background-color:#FF0000">
Fundalul este roșu
</h2>
Aici apare și termenul de atribut acel " style" care este folosit atunci când se dorește adăugare de mai multe informații pentru elementul respectiv, la acest exemplu pentru elementul h2 se specifiă un atribut ce are rolul de a schimba culoarea fundalului, culoarea este specificată de codul Hex și anume #FF0000 această culoarea va fi roșie , iar rezultatul va fi:
2.5 CSS
Limbajul are numele prescurtat de la Cascading Style Sheets. Rolul său este de a îmbunătăți aspectul unei pagini Web fiind folosit pentru partea de web design. Acesta este util pentru aranjarea elementelor dar și pentru aspectul acestora. Unul din avantajele acestui limbaj este faptul că odată creat într-un fișier separat acesta poate fi folosit de mai multe pagini [14].
Istoric
Apare în jurul anului 1996 ca o necesitate pentru a îmbunătăți dar și pentru a diferenția în pagina HTML conținutul de aspect al elementelor, momentan versiunea este 2.1 dar se poate lucra și cu 3.0 această versiunea nu este acceptată de unele browsere dar cu timpul acest aspect se va schimba. Câteva dintre beneficiile acestui limbaj aduse de a lungul timpului sunt următoarele :
Selectori
Editarea etichetelor esta facută rapid
Transformări 2D și 3D
Întreg situl poate fi schimbat prin modificare unei singure pagini de CSS
Elementele sunt încadrate într-un chenar ceea ce le face foarte ușor de lucrat cu ele
Fundaluri
Efecte de text
Animații
Layout pentru mai multe coloane
Structura
Elementele de bază ale acestui limbaj sunt următoarele :
Selectorii – ei pot fi de tip etichete, clase sau identificatori
Proprietăți – se referă la aspectul unui element
Valorile – sunt atributele care specifică informații legate de elemente, acestea pot fi
cuvinte cheie , procente sau numere.
Modul de folosire al limbajului este de 3 tipuri acestea fiind :
External style sheet
aici limbajul este scris într-o pagină separată de cel HTML apelarea acestuia este făcută în interiorul pagini HTML în secțiunea <head> </head> cu doar o simplă linie de cod , [13] exemplu :
<head>
<link rel="stylesheet" type="text/css" href="design.css">
</head>
//unde href specifică numele fișierului acesta fiind design.css cu extensia .css care conține următoarele :
body
{
background-color: blue;
}
h1
{
color: blue;
margin-left: 30px;
}
// aici se specifică culoarea fundalului și aspectul respectiv culoarea textului h1
Internal style sheet
și acestea sunt scrise în pagina HTML în secțiunea <head> </head> sunt create cu ajutorul etichetei <style> </style> unde în interiorul acesteia este scris codul, un exemplu ar fi următorul :
<head>
<style>
body
{
background-color: blue;
}
h1
{
color: blue;
margin-left: 30px;
}
</style>
</head>
Inline style
este util doar când se dorește modificarea aspectului doar a unui singur element dintr-o pagină HTML, exemplu :
<h1 style="color:blue; margin-left:20px; ">Exemplu de design.</h1>
având următorul rezultat :
Exemplu de design.
Un lucru important de menționat este nivelul de prioritate al acestora și anume faptul că nivelul de "Inline style sheet" are cea mai mare prioritate deoarece ultima citire a codului de către compilator este făcută în aceea zonă iar aspecul se va schimba atâta timp cât este folosit acest nivel de modificare, iar prioritatea cea mai scăzută o are nivelul "External style sheet". CSS este un limbaj ușor de folosi și de învățat pentru oricine dorește să modifice prezentarea unui site, poate fi folosit atât de către dezvoltatori dar și de utilizatorii care au un blog sau o pagină personală pentru diferite utilități.
2.6 PHP
Prescurtat de la numele de Php Hypertext Preprocessor acest tip de limbaj este folosit pentru crearea de pagini web cu mai multă interactivitate. Având o sintaxă asemănătoare limbajului C cu posibilitatea de a rula pe mai multe platforme limbajul PHP aduce multe îmbunătățiri paginilor web cum ar fi următoarele [16]:
Lucrează cu baze de date
Poate să creeze , scrie , deschidă , citească fișiere de pe server
Este un limbaj open-source (gratuit) ceea ce îl face foarte accesibil programatorilor
Colectează date introduse de utilizatori
Specifică controlul la pagini cine poate să aibe acces și cine nu
Este executat pe partea de server iar rezultatul se trimite către browserul utilizatorului în cod HTML
Generează pagini dinamice
Criptarea datelor
Conectare la un server mail
Folosirea unor biblioteci externe
Creare de animații de tip Flash cu biblioteci externe
Se pot implementa imagini , fișiere și filme
Setare cookie-uri
Pe lângă acestea câteva caracteristici ale limbajului ar fi următoarele :
Securitate – aduce multe măsuri de siguranță prin care programatorul le poate
implementa
Este un limbaj simplist – sintaxa acestuia este una ușor de înțeles față de alte limbaje
în care se specifică librării utilizate .
Eficient – în crearea paginilor web dinamice acest limbaj oferă un suport foarte bun
Familiaritate – limbajul se aseamănă cu C ceea ce îl face ușor de înțeles
Istoric
La început limbajul era o simplă platformă care apărea în anul 1994 dezvoltat de către Rasmus Lerdorf care dorea să afle câți vizitatori îi accesează pagina sa. Acesta i-a dat numele de PHP de la Personal Home Page dar în cele din urmă a fost preluat de către o echipă care avea numele ”The PHP Group” care a continuat dezvoltarea sa, dar în cele din urmă a fost preluat de către Suraski și Gutmans care au rescris bazele acestui limbaj. O diferență față de alte limbaje folosite în crearea paginilor web ar fi faptul că acest limbaj este un interpretor pe partea de server ceea ce înseamnă că toate operațiile sunt făcute de către server și nu în calculatorul utilizatorilor [15]. Pentru folosirea acestui limbaj e nevoie de un serviciu de găzduire cu suport PHP și MySQL sau un server web local capabil de rularea codului PHP de exemplu un server Apache care se găsește în programe precum XAMPP sau WAMP SERVER pentru Windows și MAMP pentru Mac.
Sintaxa
Pentru crearea unei pagini simple PHP aceasta se va salva într-un fișier care va avea extensia .php, după aceea se va instala un server local apoi se va salva fișierul respectiv în folderul root al serverului. Se va deschide fișierul într-un browser web , în funcție de configurația serverului calea fișierului poate fi următoarea http://localhost/exemplu.php dacă totul este setat cum trebuie se va afișa răspunsul acestuia. Limbajul poate fi scris oriunde într-o pagină atâta timp cât începe cu :
<?php
…
?>
și are aceea terminație. Fișierele de tip PHP pot să conțină tag-uri HTML, un exemplu de afișare a unui simplu mesaj ar fi următorul :
<!DOCTYPE html>
<html>
<body>
<h1>
PHP page
</h1>
<?php
echo "Hello World!";
?>
</body>
</html>
// și are următorul rezultat
PHP page
Hello World!
PHP permite interacțiunea cu un număr mare de baze de date cum ar fi :
PostgreSQL, MySQL, Oracle, Microsoft SQL Server, IBM DB2, SQLite
Iar ca sisteme de operare acesta este compatibil cu :
Windows, Unix, Linux, Mac OS X
Mod de funcționare
Scopul limbajului este acela de a realiza situri web dinamice ce folosesc baze de date, în care se pot administra datele utilizatorilor prin adăugare, modificarea sau ștergerea lor, fiind limbaj pe partea de server acesta poate să comunice cu baze de date pentru accesul datelor trimise de utilizatori. Modul de funcționare începe prin trimiterea unui răspuns de către server spre calculatoarele utilizatorilor, acest răspuns este scris în cod HTML. De exemplu dacă se cere o pagină exemplu.html de pe server este trimisă repede dar dacă se cere o pagină cu extensia .php atunci serverul va căuta dacă configurația este făcută pentru a trimite astfel de pagini și ce program se ocupă de administrarea unei astfel de pagini. Serverul trimite mai departe cererea cu extensia .php , mai întâi este accesat , analizat și după aceea se trimite sub forma unei pagini HTML pe care o vede clientul. În aceea analiză este posibil să fie făcută accesarea unei baze date dacă se cer informații din aceasta, o va accesa, va extrage informațiile și se trimite ca răspuns pe care serverul îl crează într-o pagină HTML și va trimite acest răspuns spre utilizatori.
Versiuni
PHP apare ca și o primă versiune în anul 1994 nu era foarte cunoscut atunci ceea ce a dus la o nouă versiune 2.0 proiectul începând să fie cunoscut de mai mulți dezvoltatori și oameni care doreau să investească în acest limbaj. În 1998 apre PHP 3.0 numele este schimbat din Personal Home Page în numele ce îl poartă azi Php Hypertext Preprocessor. Versiunea 4.0 aduce un nou motor limbajului Zend Engine 1.0 în anul 1999 spre 2000. Îmbunătățiri importante sunt aduse de către versiunea 5.0 acestea sunt :
Performanță mai bună
Suport mai bun pentru OOP
Suport SOAP
Suport nativ SQLite
O îmbunătățire pentru MySQL și MSSQL
Control de erori
Extensia PDO este introdusă aducând o nouă metodă de a accesa bazele de date
Următoarea versiune 6.0 la care încă se lucrează aduce îmbunătățiri precum :
Suport pentru int de 64 biți
Anumite funcții sunt scoase din folosință cum ar fi register_globals și magic_quotes
namespace, import și goto sunt cuvinte rezervate
XMLReader, XMLWriter, Fileinfo pentru o mai bună stabilitate
Funcții noi
Instrucțiunea goto va permite salturi
Foreach suportă array multi dimensional
Stringurile se vor accesa cu ajutorul []
var va fi scurtătură de la public
Rezolvarea și tratarea erorilor
Performanță mai buna
Retragere etichete ASP
Timpi mai buni de răspuns
Operatorul and este înlăturat
Conform unui studiu făcut de Netcraft limbajul PHP este cel mai folosit limbaj de programare pe partea de server-side având o structură simplă , este open-source , cu diferite mecanisme de alocare a resurselor îl face să fie un limbaj ușor de folosit.
2.7 MySQL
Un limbaj folosit pentru administrarea bazelor de date creat de către o firmă suedeză având numele My SQL AB. Numele My provine de la fiica co-fondatorului Michael Widenius iar SQL se referă la Structured Query Language. Acesta este cel mai folosit limbaj pentru sistemele de gestionare a bazelor de date de la corporații mari până la proiecte mici. De cele mai multe ori acesta este folosit alături de limbajul PHP cu ajutorul căruia se pot crea websituri dinamice și diferite aplicații. Limbajul apare ca și o primă versiune în anul 1995 a fost creat inițial pentru uz personal, momentat platforma este deținută de către cei de la Oracle Corporation. MySQL poate să ruleze pe mai mult de 20 de platforme, câteva exemple ar fi următoarele:Windows, Linux, Mac OS X, Solaris, Ubuntu, NetBSD [17].
Structură
O bază de date este o colecție de informații structurate. Limbajul este o componentă a platformei LAMP având prescurtarea de la Linux, Apache, MySQL, PHP . Acesta curpinde două părți :
MySQL server cel care are ca obiectiv salvarea și administrarea bazei de date
MySQL client care oferă o interfață pentru scrierea și testarea anumitori cerințe.
Caracteristicile foarte utile care stau la baza acestui limbaj sunt urumătoarele :
Securitate – oferă diferite moduri de protecție cum ar fi folosirea parolelor pentru a asigura securitatea datelor
Performanță foarte mare – deține mai multe procesoare având posibilitatea de a face multi-threading ceea ce duce la timpi mai buni de răspuns
Ușor de folosit – sintaxa ușoară și o interfață care ajută programatorii
Flexibilitate – se adaptează după cerințele dezvoltatorilor prin posibilitățile de care dispune și le oferă [18]
Modul de lucru
Înainte de a crea o bază de date se poate folosi o diagrama în care sunt reprezentate cerințele și funcționarea acesteia. Cu ajutorul unor tabele numite și entități acestea vor avea un nume și datele care le vor deține.
De exemplu avem un tabel Angajat care poate avea date cum ar fi nume, prenume , postul și unul Departament care poate avea date cum ar fi nume , salar și orar. Între aceste tabele pot exista relații cum ar fi :
Un angajat trebuie să aparțină unui singur departament
Un departament poate să aibe unul sau mai mulți angajați
După aceea se pot trece aceste tabele într-o bază de date, numele tabelelor vor fi cuvinte cheie prin care se va face accesul la ele. Pentru aceasta se poate folosi o interfață cum ar fi phpMyAdmin care oferă un mediu ușor de folosit pentru crearea tabelelor sau se poate folosi linia de comandă. Momentan sunt multe platforme care oferă această posibilitate, câteva dintre acestea ar fi :
TYPO3, Joomla, WordPress, phpBB, Drupal, MyBB, MODx.
Tipurile de date acceptate pot fi de tip caracter, întreg, zecimal, data, oră ,binar. Dezvoltatorul poate să folosească datele în următoarele modalități :
Schimbarea valorilor de securitate
Modificarea structurii tabelelor
Ștergerea conținutului din tabele cu ajutorul comenzilor DELETE
Alocarea unor drepturi pentru utilizatori
Modificarea datelor din tabele cu ajutorul comenzii UPDATE
Retragerea unor privilegii pentur utilizatori
Adăugare de date cu ajutorul comenzii INSERT
Interogarea bazelor de date cu ajutorul comenzii QUERY
Sintaxa pentru crearea unei baze de date este următoarea :
CREATE DATABASE dbname ;
//dbname este numele bazei de date
CAPITOUL III – Realizarea aplicației
Lucrarea are ca scop crearea unei aplicații native Android cu rolul de a fi folosită cât mai ușor atunci când este necesară o rezervare de către locuitorii orașului Oradea dar și vizitatorii acestuia.
Datorită acestei aplicații care oferă o modalitate mai rapidă și mult mai simplă de a face o rezervare utilizatorii nu au nevoie de a trece prin mai mulți pași până să facă rezervarea. Cu ajutorul unui cont creat care va salva datele persoanei respective se va putea face rezervarea în oricare restaurant afișat în lista din meniul aplicației fără să mai fie necesară crearea a mai multor conturi pentru fiecare restaurant. După crearea contului și alegerea unui restaurant utilizatorul își va putea selecta preferințele în ceea ce privește data rezervării, tipul de masă și numărul de persoane, toate acestea se vor salva în baza de date de unde se vor trimite administratorului restaurantului respectiv.
3.1 Structura aplicației
Aplicația este formată din trei părți :
a. Interfața aplicației :
Aceasta are mai multe părți, o zonă de căutare a restaurantelor, un buton de crearea a contului sau dacă contul este creat atunci utilizatorul va fi redirecționat spre profilul său și o listă în care sunt trecute restaurantele de unde se poate accesa pentru mai multe informații cum ar fi locația, orarul ,număr de telefon, hartă, imagini și datele pentru a face rezervarea restaurantului respectiv.
b. Salvarea datelor în baza de date :
Aici sunt salvate informațiile trecute de către utilizatori, acestea pot fi folosite atunci când se va realiza rezervarea pentru a nu cere din nou datele ele vor fi preluate din baza de date, dar tot aici se vor salva și datele rezervării pentru administratorii restaurantului unde se face rezervarea.
c. Paginile web în care sunt trecute datele rezervării :
De aici cei care se ocupă de administrarea restaurantului vor putea accesa informațiile cu privire la data rezervării și alte informații ale clienților, fiecare restaurant va primi un nume și o parola prin care se va putea face accesul la datele rezervării. Aceste pagini web au fost încărcate prin intermediul celor de la hostico.ro unde am creat un domeniu pentru paginile respective.
Fig. 1. Structura aplicației
Fig. 2. Structura fișierelor din aplicație
3.2 Interfața aplicației
În Fig. 1. avem trecut în chenar ’’Aplicația rezervat’’ aici este prima pagină a aplicației care conține o zonă de căutare a restaurantelor, buton de cont de unde se poate crea un cont sau se poate accesa profilul utilizatorului dacă este creat contul și o listă de unde utilizatori își vor putea alege restaurantul, fiecare restaurant va avea o poză , un nume și o mică descriere.
Fig. 3. Meniul aplicației
În Fig. 3 am prezentat meniul aplicației. Imaginile din acest meniu au fost preluate de pe diferite situri în care am găsit poze cu restaurantele respective ([26], [32]).
3.2.1. Codul sursă pentru meniul aplicației
La această parte am folosit o listă creată cu limbajul JAVA în care sunt trecute toate restaurantele. Cu ajutorul unei clase adaptor de tip "BaseAdapter" am folosit metodele acesteia pentru trecerea restaurantelor în fiecare rând din listă, după aceea am creat un constructor cu numele "SingleRow" acesta având rolul de a reține numele, o mică descriere și imaginea pentru fiecare restaurant. Imaginile le-am salvat în aplicație iar cu ajutorul acestui tablou de tip int am trecut pozele după numele acestora:
int[] images= {R.drawable.queenspoza, R.drawable.butoiulpoza, R.drawable.grafpoza, R.drawable.corsarulpoza, R.drawable.crinulpoza, R.drawable.tcpoza, R.drawable.mpoza, R.drawable.spoza};
Astfel în funcție de numărul de restaurante rândurile vor fi trecute în lista de restaurante cu ajutorul acestei metode de numerare :
for(int i=0;i<9;i++) {
list.add(new SingleRow(names[i], descriptions[i], images[i])); }
aici sunt trecute 9 restaurante și pentru fiecare este creat un rând nou cu ajutorul constructorului "SingleRow" ce conține 3 parametrii, un nume în "names", descriere la " descriptions "și o poză în "images". Fiecare imagine are o funcție ce poate fi apelată atunci când este atinsă poza, având rolul de a porni o nouă activitate, aceasta fiind pagina de profil a restaurantului , de exemplu pentru pornirea primului restaurant avem un id care reprezintă numărul pozei ,în acest caz este 0, după ce va fi atins se va porni profilul primului restaurant :
images.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){ switch (i) {
case 0: Intent goToR1 = new Intent(context, Queens.class);
context.startActivity(goToR1); … }}});
Tot în meniul aplicației în partea de sus avem două părți :
a) Zona de căutare a restaurantelor
Fig. 4. Zona de căutare
Utilizatorii vor putea căuta restaurantele după numele acestora, dacă restaurantul este găsit atunci se va porni pagina respectivă. Această parte am creat-o folosind limbajul XML, în care am setat diferite proprietăți la aspect, culoare și poziția literelor. Acest element fiind de tip EditText în care se poate introduce date cu ajutorul tastaturii de pe telefon:
<EditText
android:id="@+id/editSearch"
android:inputType="text"
android:layout_width="200dp"
android:layout_height="38dp"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/Search"
android:layout_marginLeft="4dp"
android:gravity="center_horizontal|center_vertical"
android:background="@android:color/transparent"
android:textColor="@android:color/white"
android:textColorHint="@android:color/darker_gray"
android:hint="Cauta restaurant"
android:imeOptions="actionSearch"
android:singleLine="true"
/>
b) Butonul de cont
Fig. 5. Buton de cont [20]
Acesta l-am creat folosind limbajul XML :
<Button
android:id="@+id/User_Account"
android:background="@drawable/account_logo"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_alignRight="@id/Top_Background"
/ >
Apăsarea acestui buton are rolul de a verifica starea de cont a utilizatorului, în funcție de aceasta utilizatorul va avea de ales între mai multe opțiuni. Aceste opțiuni vor fi trecute în sub-meniul butonului, acestea sunt și ele la rândul lor butoane asemenătoare cu butonul de cont.
Fig. 6. Se poate alege între intrarea în cont sau crearea unui cont
3.2.2. Starea contului
După cum se poate observa în Fig. 6 avem un cont care poate să fie creat dar nu este logat sau un cont care trebuie creat pentru a avea acces. Aceste stări ale contului pot fi de 3 tipuri:
a) Cont necreat – Utilizatorul va trebui să își creeze un cont pentru care va completa cu datele sale: numele, prenumele, adresă de e-mail, parolă a contului și un număr de telefon, pentru aceasta va apăsa pe ’’Crează cont’’ din Fig. 6. iar după aceea va fi redirecționat spre pagina următoare:
Fig. 7. Crează cont
Aici vor fi introduse datele personale , iar după o verificare din punct de vedere sintactic acestea vor fi trimise spre baza de date iar utilizatorul va fi redirecționat spre profilul personal.
La această parte am folosit un ’’RelativeLayout’’ acesta este ca și o fereastră în care se pot pune diferite elemente cum ar fi texte , imagini , edit text-uri și multe altele.
<RelativeLayout
android:background="@android:color/white"
android:id="@+id/Relative_Up_Layout_Info"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >…
<RelativeLayout />
După aceea am introdus câmpurile necesare în interiorul acelui RelativeLayout cu ajutorul unor TextView-uri și EditText-uri:
<TextView android:id="@+id/Nume"
android:textColor="#787878"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22sp"
android:text="Nume"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:layout_alignLeft="@+id/background1"
/>
Acesta l-am folosit pentru afișarea cuvântului " nume " iar pentru câmpul de scriere a numelui am folosit următorul element :
<EditText android:gravity="center_horizontal|center_vertical"
android:id="@+id/Edit_Name"
android:layout_width="210dp"
android:layout_height="44dp"
android:background="@android:color/white"
android:layout_marginRight="10dp"
android:textSize="20sp"
android:textColor="@android:color/black"
android:layout_alignBottom="@+id/background1"
android:layout_marginBottom="3dp"
android:layout_alignRight="@+id/background1"/>
Iar la final am adăugat un element de tip buton.
b) Cont creat dar nelogat – pentru aceasta utilizatorul va trebuii să apese pe ’’Intră în cont’’ din Fig. 6 unde va fi trimis spre pagina din Fig. 8 aici va completa cu numele și parola contului . Aici am folosit la fel elemente de text și de introducere a textului.
Fig. 8. Intrare în cont
c) Cont creat care este logat – se poate accesa profilul utilizatorului și nu va mai fi întrebat pentru a crea cont sau a se loga în cont.
Fig. 9. Profil utilizator
După cum se poate observa și în Fig. 9. avem datele utilizatorului cum ar fi nume, prenume, email, parola și telefon dar tot aici se găsesc două butoane , unul pentru a ieși din contul utilizatorul, acesta va trebuii să rețină numele și parola pentru a putea reintra în cont și un buton de ștergere a contului, pentru acest buton este necesară conexiune la internet pentru ca el să fie vizibil deoarece când este apăsat se va trimite această cerință spre bazele de date de unde se va șterge utilizatorul respectiv. Pentru întoarcere la meniul principal se va folosi butonul reprezentat de săgeată sau butonul de ”back” al sistemului de operare.
Aici am folosit la fel un RelativeLayout , elemente de tip text pentru afișarea numelui, prenumelui și a altor detalii, dar și două butoane care au fost create la fel cu limbajul XML.
<Button
android:id="@+id/LogOff"
android:textColor="@android:color/white"
android:background="@android:color/darker_gray"
android:textSize="19sp"
android:layout_marginTop="10dp"
android:layout_below="@+id/background5"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="Iesire din cont"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/DeleteAccount"
android:textColor="@android:color/white"
android:background="@android:color/holo_red_dark"
android:textSize="19sp"
android:layout_marginTop="10dp"
android:layout_below="@+id/LogOff"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="Sterge cont"
android:layout_centerHorizontal="true"/>
3.2.3 Codul sursă pentru funcționarea contului
a) Crearea unui cont nou
Partea de creare a unui nou cont necesită mai mulți pași deoarece datele introduse de către utilizator vor fi trimise spre baza de date. După introducerea datelor și apăsarea butonului de ”Crează cont” se crează un nou obiect :
UserInfo setUserInfo = new UserInfo();
aici vor fi reținute datele cum ar fi nume, prenume, email, telefon și parola contului, după aceea se va pune starea contului pe creat și logat, metodele de tip boolean ale obiectului creat vor fi puse pe ”true” :
setUserInfo.setStare_cont_logat(true);
setUserInfo.setStare_cont_creat(true);
astfel vom avea un cont creat, logat și cu date personale. După aceea prin apelarea unei funcții de tip Json , datele vor fi preluate , vor fi transformate , se va face conexiunea la baza de date și se vor trimite datele spre locația sitului din ”Stringul” următor :
private static String url_create_product = "http://rezervat.eu/add_client.php" ;
Funcția Json are un rol atât de a se conecta la baza de date dar și de a prelua datele și a le trimite spre aceasta.
JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params); [19]
Astfel în primul parametru avem "url_create_product " locația bazei de date , al doilea parametru vom avea metoda de trimitere iar în al treilea "params" vom avea datele introduse de către utilizator, acestea vor fi salvate în baza de date dar și în telefonul utilizatorului. După aceea se va porni activitatea de profil a utilizatorului unde vor putea fi observate datele :
Intent i = new Intent(getApplicationContext(), UserProfile.class);
startActivity(i);
b) Cont creat dar nelogat
Pentru această parte am folosit o funcție cu rolul de a reține informațile legate de starea contului. Aceasta este apelată mereu atunci când utilizatorul accesează profilul său sau dorește efectuarea unei rezervări, deoarece fără un cont creat și logat rezervarea nu se poate face. Astfel după apelarea funcției se face o verificare de tipul :
if ((stare_cont_logare == true) || (get_stare_local_cont_logat == true))
în acest caz este falsă atunci utilizatorul are posibilitatea de a alege între logarea cu un cont existent sau crearea unui cont nou , oricare dintre aceste alegeri va porni o nouă activitate fie de logare sau de creare a unui cont nou :
goToLogin = new Intent(MainMenuActivity.this, LoginWithAccount.class);
startActivity(goToLogin);
sau
goToCreateAccount = new Intent(MainMenuActivity.this, CreateAccount.class);
startActivity(goToCreateAccount);
c) Cont creat și logat
Și aici se va apela funcția de verificare :
if ((stare_cont_logare == true) || (get_stare_local_cont_logat == true))
în acest caz e adevărată ceea ce înseamnă că are contul creat și logat atunci utilizatorul va fi redirecționat spre profilul său și se pot face rezervări :
goToUserProfile = new Intent(MainMenuActivity.this, UserProfile.class);
startActivity(goToUserProfile);
d) Ieșire din cont
Tot la această parte a profilului avem cele două butoane de ieșire din cont și de ștergere a contului. Dacă se dorește ieșirea din cont atunci se va apela funcția :
getLogOutData();
aceasta va seta contul să rămână creat dar să nu fie logat :
get_stare_local_cont_logat = myPref.getBoolean("CONT_LOGAT", false);
get_stare_local_cont_creat = myPref.getBoolean("CONT_CREAT", true);
astfel utilizatorul va trebui să rețină numele și parola pentru a putea să reintre în cont.
e) Ștergerea contului
Pentru ștergerea unui cont prin apăsarea acelui buton vor fi necesari mai mulți pași deoarece datele utilizatorului vor fi șterse și din baza de date. După apăsarea acetui buton se vor prelua datele utilizatorului, se va face conexiunea la pagina de ștergere a bazei de date din "Stringul" următor :
private static final String url_delete_product = "http://rezervat.eu/delete_client.php";
cu ajutorul funcției Json vom face această conexiune și vom prelua datele ce aparțin utilizatorului :
JSONObject json = jsonParser.makeHttpRequest(url_delete_product, "POST", params);
"url_delete_product" va conține numele bazei de date, "POST" este metoda de trimitere iar "params" va conține datele de ștergere, iar după aceea vom seta starea contului cu ajutorul metodei :
setDeleteAccountDataLocal();
care va șterge datele utilizatorului din telefon ,va seta starea contului să nu fie creat și sa nu fie logat :
myEditor.putBoolean("CONT_LOGAT", false);
myEditor.putBoolean("CONT_CREAT", false);
după aceea utilizatorul va fi redirecționat spre prima pagină a aplicației care conține lista de restaurante.
3.2.4. Lista de restaurante
Prima pagină a aplicației conține o listă în care sunt trecute restaurantele, am pus majoritatea restaurantelor care aveau această opțiune de a face o rezervare deoarece unele nu dispun de o astfel de posibilitate. De aici utilizatorul își poate alege după preferință unde va fi facută rezervarea. Tot de aici utilizatorul poate alege să caute un restaurant după nume în partea de sus unde scrie "caută restaurant". De exemplu dacă se alege primul restaurant din lista de meniu utilizatorul va fi trimis spre pagina de profil a restaurantului respectiv :
Fig. 10. Pornirea unui profil de restaurant, pentru aceasta am folosit următoarele poze:
[21] [22] [24] [25]
3.2.5. Profilul unui restaurant
În Fig. 10. în imaginea din dreapta avem profilul unui restaurant, aceasta conține 3 zone importante :
a) Zona de sus :
Fig. 11. Zona de sus
Avem un buton de returnare la lista de restaurante :
Fig. 12. Logo lista de restaurante [23]
Un text care afișează titlul restaurantului ales :
Fig. 13. Nume restaurant
Și avem un buton în partea dreaptă care duce spre profilul utilizatorului dacă acesta are cont și este logat :
Fig. 14. Logo profil utilizator
Pentru acestea am folosit elemente scrise în XML de tip buton imagine și text.
b) Zona de mijloc :
Aici avem imaginile restaurantului care se pot schimba cu ajutorul celor două săgeți :
Fig. 15. Schimbare imagine restaurant cu săgeata din dreapta
La această parte am folosit o funcție scrisă în JAVA care este apelată la apăsarea uneia dintre săgeți care duce spre dreapta sau stânga:
public void onClick(View v) {
switch (v.getId())
{case R.id.Right:
switch (i)
{ case 0: RestaurantImages.setImageResource(images[1]); i++; z = -1; break;
case 1: RestaurantImages.setImageResource(images[2]); i++; z = -2; break;
case 2: RestaurantImages.setImageResource(images[3]); i++; z = -3; break;
case 3: RestaurantImages.setImageResource(images[0]); i=0; z = -4; break;
default: break;
}
break;
case R.id.Left:
switch (z)
{ case -1: RestaurantImages.setImageResource(images[0]); z=-4; i=0; break;
case -2: RestaurantImages.setImageResource(images[1]); z++; i=1; break;
case -3: RestaurantImages.setImageResource(images[2]); z++; i=2; break;
case -4: RestaurantImages.setImageResource(images[3]); z++; i=3; break;
default: break;
}
default: break;
}
}
c) Zona de jos :
Se găsesc trei butoane care duc spre alte pagini :
Fig. 16. Butoane de pornire a paginilor
1) Prima pagină de INFO duce spre pagina de informații a restaurantului care va conține adresa, orarul și posibilități de contact :
Fig. 17. Informații legate de restaurant
2) A doua pagină REZERVARE va conține datele referitor la rezervarea aleasă de utilizator :
Fig. 18. Datele pentru rezervare
Dacă utilizatorul are un cont creat și logat de aici se poate alege ora, ziua, luna, anul, numărul de persoane și tipul de masă, toate acestea pentru a trimite rezervarea. Dar dacă nu are cont sau nu este logat vor fi afișate două butoane unul de creare cont și unul de intrare în cont :
Fig. 19. Mesaj de atenționare
3) A treia pagină HARTA aici este reprezentată locația restaurantului cu ajutorul hărților Google:
Fig. 20. Locația restaurantului
3.2.6. Codul sursă pentru profilul restaurantului
a) INFO – la această parte am folosit afișarea unor imagini și a unor texte cu ajutorul limbajului XML, pentru text am folosit :
<TextView
android:id="@+id/Street"
…
android:text="Str. Primariei Nr. 23"
android:textSize="18sp" />
iar pentru imagini :
<ImageView
android:id="@+id/Logo2"
android:layout_width="122dp"
…
android:layout_height="122dp"
android:background="@drawable/orar"/>
Aceste elemente le-am pus pus într-un " RelativeLayout "
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="200sp"
android:background="@android:color/white">
… <RelativeLayout/>
b) REZERVARE – aici sunt necesari mai mulți pași deoarece se verifică starea contului și în funcție de răspuns se va putea face rezervarea. Dacă avem un cont creat și logat se va putea face aceasta ceea ce înseamnă că utilizatorul poate să completeze datele rezervării, acestea se vor trimite și salva în baza de date iar de acolo vor fi preluate de către situl restaurantului , de aici datele rezervării vor putea fi observate de către cei care se ocupă de administrarea restaurantului. Dacă nu avem un cont creat sau logat vor fi afișate două butoane care vor duce spre aceste pagini, de creare sau logare a contului. Pentru început este apelată funcția care verifică starea contului "getDataLocal();" după aceea se verifică :
if ((stare_cont_logare == true) || (get_stare_local_cont_logat == true))
Dacă avem un răspuns afirmativ se va putea face rezervarea ceea ce înseamnă că avem un cont logat. Utilizatorul își va alege preferințele rezervării iar după aceea acestea se vor trimite spre baza de date pentru restaurantul respectiv, fiecare restaurant având o baza de date separată, aceasta este trecută în "Stringul" următor :
private static String url_create_product = "http://rezervat.eu/add_rezervare_queens.php";
iar cu ajutorul funcției Json în cei 3 parametrii se preia datele rezervării, se va face conexiunea și se vor trimite spre baza de date :
JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params);
După aceea datele vor fi preluate din baza de date de către situl restaurantului unde cei care se ocupă de administrarea lui vor putea observa datele rezervării. Dacă avem un cont care nu este creat sau nelogat vor fi afișate cele două butoane de creare a unui cont sau logare în cont , metodele fiind menționate mai sus.
Pentru aspect am folosit limbajul XML prin care am introdus elemente de text, câmpuri de editare a textului și un buton pentru trimiterea rezervării, toate acestea le-am pus într-un "layout" de tip "LinearLayout":
<LinearLayout
android:id="@+id/Bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="horizontal">
… < LinearLayout />
în interiorul acestuia am adăugat elmentele de text, imagine și buton:
<TextView
android:textColor="@android:color/black"
android:id="@+id/Hour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:layout_alignLeft="@+id/background1"
android:text="Ora"
android:textSize="22sp"/>
<Spinner style="@style/spinner"
android:id="@+id/Edit_Hour_M"
android:layout_width="72dp"
android:layout_height="40dp"
android:layout_marginTop="15dp"
android:layout_alignRight="@+id/background1"
android:layout_marginRight="10dp"
android:entries="@array/minute"/>
<ImageView
android:id="@+id/background2"
android:layout_below="@+id/background1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="10dp"
android:background="@drawable/tables2"/>
c) HARTA – aici avem reprezentată locația restaurantului respectiv cu ajutorul hărților Google care încarcă locația :
myWebView.loadUrl("http://www.google.ro/maps/place/Queen's+Restaurant/@47.0568782,21.9231718,18z/data=!4m2!3m1!1s0x474647dd2033d2bd:0xbe10c3bc209aef2a");
harta este interactivă ceea ce înseamnă că utilizatorul poate să mărească reprezentarea locației sau să schimbe locația prin mișcarea acesteia. Pentru aceasta am folosit o clasă scrisă în JAVA la care am schimbat adresa la fiecare restaurant în funcție de locația acestuia, dar prima oară am verificat daca există conexiune la internet:
if( isNetworkAvailable())
{
InternetText.setVisibility(View.GONE);
myWebView = new WebView(this);
myWebView.getSettings().setJavaScriptEnabled(true);
final Activity activity = this;
myWebView.loadUrl("https://www.google.ro/maps/place/Strada+Nuf%C4%83rului+30,+Oradea+410583/@47.0361137,21.9488433,16.25z/data=!4m5!3m4!1s0x47463873fa8d1159:0x3aa69e67e569c052!8m2!3d47.0359879!4d21.9494256");}
else
{InternetText.setVisibility(View.VISIBLE);}
3.3 Salvarea datelor în baza de date
Fig. 21.Harta si structura bazei de date
Am creat o bază de date cu numele "rezerva1_db" care cuprinde un tabel pentru clienți și un număr mai mare de tabele pentru fiecare restaurant.
3.3.1 Tabel pentru clienți
Fig. 22. Tabel de date pentru clienți
Aici vor fi salvate datele clienților cum ar fi numele, prenumele, email, parola, telefon și rezervari_id atunci când se va crea un cont dar și pentru afișarea lor în tabelul de rezervări a fiecărui restaurant. Dacă se dorește crearea sau ștergerea unui cont , cererea va fi trimisă spre acest tabel iar utilizatorul va fi adăugat sau șters de aici.
3.3.2 Codul sursă pentru pagina de creare a contului pentru clienți
Aici am folosit limbajul PHP și MySQL. Această pagină se poate spune ca este o pagină intermediară între aplicație și baza de date, deoarece datele introduse de către utilizator atunci când se crează un cont vor fi preluate de către această pagină și se vor trimite spre baza de date mai exact spre acel tabel al clienților.
Pentru această parte am folosit limbajul PHP , avem o pagină care crează o conexiune spre baza de date aceasta fiind conection.php care am încărcat-o pe serverul de găzduire a celor de la hostico.ro
$servername = "localhost";
$username = "rezerva1_user";
$password = "auv[w-]Of*0*";
$dbname = "rezerva1_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) { die("Conexiune esuata " . $conn->connect_error); }
dacă conexiunea a fost efectuată cu succes atunci se va folosi următoarea pagină add_client.php aici se preiau datele care se cer la crearea unui cont în aplicația de pe telefon și sunt trimise cu ajutorul funcției Json spre această pagină care le va prelua și le va trimite în baza de date mai exact în acel tabel al clienților. Preluarea datelor este făcută cu ajutorul limbajului PHP în următoarele variabile :
$nume = $_REQUEST['nume'];
$prenume = $_REQUEST['prenume'];
$email = $_REQUEST['email'];
$parola = $_REQUEST['parola'];
$telefon = $_REQUEST['telefon'];
$rezervari_id = $_REQUEST['rezervari_id'];
după aceea cu ajutorul limbajului MySQL am inserat datele în baza de date în acel tabel al clienților :
$result = mysqli_query($conn,
"INSERT INTO clienti (nume,prenume,email,parola,telefon,rezervari_id)
VALUES ('$nume', '$prenume', '$email', '$parola', '$telefon' , '$rezervari_id' )" );
astfel vom avea un cont creat în telefon și în tabelul de clienți.
3.3.3. Codul sursă pentru pagina de ștergere a contului pentru clienți
Procedura este asemănătoare deoarece pentru ștergerea unui cont se va apăsa acel buton de ștergere a contului din aplicația telefonului care va trimite o cerere spre tabelul de clienți care va șterge contul respectiv. Această cerere este făcută cu ajutorul unei pagini PHP aceasta fiind: delete_client.php
La fel și aici se crează o conexiune spre baza de date, după aceea se preiau datele contului trimise de către funcția Json din aplicația de pe telefon:
$nume = $_REQUEST['nume'];
iar contul se va șterge dacă există în baza de date în tabelul de clienți :
$sql = "DELETE FROM clienti WHERE nume='".$nume."'";
astfel utilizator nu mai avea un cont creat și va fi șters din tabelul de clienți.
3.3.4. Tabel de date pentru rezervarea în restaurante
Fig. 23. Tabel de date pentru rezervări ale restaurantelor
Aici avem următoarele date :
client – reține numele clientului care a trimis rezervarea
ora, minutul,ziua,luna,anul – datele rezervării
numărul de persoane și tipul de masă pentru fumători sau nefumători.
Legătura între tabelul de clienți și acestea se face cu ajutorul acelui ID, fiecare client primește un astfel de număr la crearea contului. Pentru acest tabel dar și pentru cel de la clienți am folosit unele variabile de tipul "int" acestea fiind pentru numere iar majoritatea sunt de tipul "varchar" pentru caractere.
3.3.5. Codul sursă pentru crearea unei rezervări
La fel și aici se va face prima oară o conexiune spre baza de date mai exact spre tabelul de rezervări a restaurantului respectiv, fiecare restaurant având un tabel de rezervări, iar după aceea clientul prin intermediul aplicației va selecta preferințele rezervării, acestea vor fi preluate și se vor salva în baza de date. Avem un exemplu pentru primul restaurant în care datele sunt preluate de pe telefon cu ajutorul funcției Json și se introduc în baza de date în tabelul restaurantului la care se va face rezervarea :
$client = $_REQUEST['client'];
$ora_ora = $_REQUEST['ora_ora'];
$ora_minute = $_REQUEST['ora_minute'];
$zi = $_REQUEST['zi'];
$luna = $_REQUEST['luna'];
$an = $_REQUEST['an'];
$nr_persoane = $_REQUEST['nr_persoane'];
$masa = $_REQUEST['masa'];
"INSERT INTO butoiul (client,ora_ora,ora_minute,zi,luna,an,nr_persoane,masa)
VALUES ('$client','$ora_ora', '$ora_minute', '$zi', '$luna', '$an' , '$nr_persoane','$masa' )" );
după aceea aceasta va putea fi observată în tabelul de rezervări a restaurantului respectiv.
3.4 Paginile web pentru restaurante
Fig.25 Structura paginilor web
3.4.1. Structura paginilor web
Restaurantele au o structură asemănătoare între ele. Cei care se ocupă de administrarea restaurantului vor putea avea acces la datele rezervărilor trimise de către clienți , această accesare se va face prin intermediul unei pagini de logare care necesită un nume și o parolă, fiecare restaurant având un nume și o parolă diferită. În momentul în care logarea a fost făcută cu succes datele rezervărilor vor putea fi preluate dintr-o pagină personală a restaurantului respectiv de către cei care se ocupă de administrarea restaurantului.
Un exemplu de accesare pentru primul restaurant, mai întâi se va face logarea în cont în funcție de numele și parola restaurantului iar după aceea se va face o redirecționare către pagina care conține datele rezervărilor trimise de către clienți :
http://rezervat.eu/login.php
Fig. 26. Pagina de logare
În Fig. 26. avem un formular în care se vor introduce datele restaurantului , un nume și o parolă pentru a avea acces la datele rezervărilor trimise de către clienți.
3.4.2.Codul sursă pentru pagina de login (intrare în cont)
Aici am folosit limbajul HTML pentru crearea unui formular , CSS pentru aspectul acestei pagini și PHP pentru verificarea datelor când se intră în cont .
Formular :
<div class="login">
<form action="" method="GET">
Nume <br> <input type="text" name="nume"> <br>
Parola <br> <input type="password" name="parola"> <br> <br>
<input id="buton" type="submit" name="submit" value="Intra in cont">
</form>
</div>
Pentru aspect am folosit un alt fișier login_design.css :
<link rel="stylesheet" type="text/css" href="login_design.css">
Iar pentru datele de intrare în cont :
if (isset($_GET['submit']))
se verifică dacă este apăsat acel buton de intrare în cont iar după aceea dacă sunt introduse corect datele contului se va porni pagina de restaurant care aparține acelui cont
Dacă logarea a fost făcută cu succes se va deschide pagina primului restaurant aceasta fiind :
3.4.3. Tabelul de rezervări
http://rezervat.eu/table_clients_queens.php
Fig. 27. Tabel de rezervări pentru unul dintre restaurante
Aici vor fi afișate datele legate de rezervarea clienților. Tot aici se preia numele și telefonul clientului pentru a afla cine a făcut rezervarea pentru a face posibilă comunicarea între restaurant și client. Cu ajutorul acestei funcții :
while($row =mysqli_fetch_assoc($result))
datele rezervărilor sunt preluate din baza de date acestea fiind afișate în tabel.
Tabelul mai conține ID-ul și datele rezervării cum ar fi ora, ziua , luna , anul , detalii ,numărul de persoane ,tipul de masă pentru fumători sau nefumători.
Fig. 30. Butoane de redirecționare
În partea de sus a paginii avem două butoane, cum sunt cele din Fig. 30. Primul buton de "Queens Pub", după apăsarea acestuia se va reîncărca pagina respectivă pentru primirea ultimelor rezervări trimise. Butonul de "Iesire din cont" va duce spre pagina de logare , ieșind din pagina restaurantului respectiv.
3.4.4. Codul sursă pentru tabelul de rezevări
Pentru această parte am folosit limbajul HTML , CSS , PHP dar și MySQL, cu HTML am creat tabelul:
<table class="tabel">
<tr>
<th style="background-color: #406D00" >ID</th>
<th style="background-color: #406D00" >Nume client</th>
<th style="background-color: #406D00" >Telefon</th>
<th style="background-color: #406D00" >Ora</th>
<th style="background-color: #406D00" >Zi/Luna/An</th>
<th style="background-color: #406D00" >Numar persoane</th>
<th style="background-color: #406D00" >Tip masa</th>
<th style="background-color: #406D00" >Sterge rezervare ?</th>
</tr>
După aceea aspectul acestuia l-am făcut cu CSS:
ul#menu li a:hover {background-color: #FFCC99 ; color: #0c0000 ;}
table {
overflow: hidden; border-color: #000000;border-style: solid;
border-width: 2px; border-collapse: collapse;
font-family: verdana,arial,sans-serif;
font-size:19px;
margin: auto; }
Partea de funcționare am realizat-o cu PHP și MySQL
<?php
$store =array();
while($row =mysqli_fetch_assoc($result))
{
$store_date_month = $row["zi"]. '/'. $row["luna"]. '/'.$row["an"];
echo "<tr id='first'>
<td> " . $row["id"] ."</td>
<td> " . $store[0] .' '. $store[1] ."</td>
<td> " . $store[2] ."</td>
<td> " . $store_hour ." </td>
<td> " . $store_date_month ."</td>
<td> " . $row["nr_persoane"] ."</td>
<td> " . $row["masa"] ."</td>
<td><ahref='http://rezervat.eu/delete_table_row_butoiul.php?id=".$row['id']."'>Sterge</a>
</td>";
</tr>";}
Fig. 28. Link de ștergere a rezervării
Tot de aici cei care se ocupă de administrarea restaurantului vor putea să șteargă rezervările prin apăsarea linkului din Fig. 28. care se va duce spre următoarea pagină :
Fig 29. Ștergerea unei rezervări
După cum se poate observa și în fig. 29. rezervarea a fost ștearsă din baza de date iar prin apăsarea acelui link "Inapoi la tabel" se va face redirecționarea la pagina de rezervări ale clienților.
3.4.5. Codul sursă pentru ștergerea unei rezervări
Dacă se dorește ștergerea unei rezervări aceasta se va face prin apăsarea unui buton de ștergere din profilul restaurantului. Se va face o conexiune spre baza de date, după aceea în funcție de id-ul rezervării va fi căutat în baza de date și aceasta se va șterge :
$id = $_GET['id'];
$sql = "DELETE FROM queens WHERE id='".$id."'";
după aceasta rezervarea din tabelul restaurantului va fi ștearsă.
Butonul de ștergere l-am creat folosind HTML, CSS și PHP, partea de HTML a fost realizată împreună cu PHP:
echo "<tr >
<td><a href='http://rezervat.eu/delete_table_row_corsarul.php?id=".$row['id']."'>Sterge</a></td>
</tr>";
Capitolul IV – Concluzii
Aplicația pot spune că a fost creată dintr-o nevoie personală prin care am eliminat mai mulți pași necesari încercând să aduc un mod cât mai simplu și ușor de folosire care poate fi la îndemâna oricui. Pe viitor se pot aduce multe îmbunătățiri care o pot face și mai ușor de folosit.
Această aplicație poate fi folosită de către manageri restaurantelor din Oradea și de către locuitorii orașului, dar ea poate fi utilizată de asemenea și de către turiștii care vin în orașul nostru și doresc să facă cunoștință cu bucatăria tradițională românească. Această aplicație poate fi pusă pe un site de promovare turistică al orașului Oradea, singura condiție ca acel turist să dispună de un smartphone și să aibe instalată aplicația.
Posibile implementări vitoare
Se pot aduce diferite îmbunătățiri atât pentru aplicația de pe telefon cât și pentru partea de web. Pentru aplicație se pot adăuga funcții multiple pentru crearea contului dar și pentru profilele restaurantelor, de exemplu un mod de editarea a datelor contului, un buton pentru a favoriza restaurantele , pentru harți posibilitatea de a calcula distanța de la locația actuală a clientului până la restaurantul ales, o interfață mai ușor de folosit iar pentru partea de web se pot aduce funcții multiple de editare a rezervărilor, un mod de comunicare mai simplu cu clienți și o intertfață mai ușor de folosit. O alta îmbunătățire ar fi dezvoltarea aplicației pe sistemele de operare iOS și Windows Phone, astfel aplicația putând fi folosită pe toate platformele mobile.
Probleme întâmpinate
Problemele și erorile nu au ezitat să apară pe parcursul acestui proiect, acestea au fost prezente atât la aplicație cât și la partea de web:
Lista de restaurante nu se putea accesa – problema era la id-ul rândului , fiecare restaurant având un id de accesare iar la pornire trebuia apelat acel id.
La început trebuiau scrise datele pentru rezervare dar acum se pot selecta cu ajutorul unor liste de tip meniu.
Distribuirea nu era egală la cele trei butoane de la profilele restaurantelor – această parte de design am rezolvato într-un mod simplu prin distribuirea egală a celor 3 butoane.
Ștergerea din baza de date a contului dar în cele din urmă problema era de sintaxă la pagina PHP de trimitere a datelor.
Bibliografie
Java
[1] https://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)
[2] http://www.referatele.com/referate/diverse/online16/JAVA-referatele-com.php
Android
[3] https://sites.google.com/site/proiectandroidsilviasioana/referatul
[4] https://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
[5] https://www.mobile247.ro/16255-10-lucruri-importante-despre-android-6-0-marshmallow/
[6] http://www.gsmland.ro/stire/afla-ce-imbunatatiri-va-aduce-android-marshmallow-dispozitivelor-samsung_6187
[7] http://developer.android.com/develop/index.html
Xml
[8] https://en.wikipedia.org/wiki/XML
[9] http://www.w3schools.com/xml/xml_usedfor.asp
Html
[10] http://www.referatele.com/referate/noi/informatica/ce-este-html-23681846.php
[11] https://ro.wikipedia.org/wiki/HyperText_Markup_Language
[12] http://www.yourhtmlsource.com/starthere/historyofhtml.html
CSS
[13] http://www.w3schools.com/css/css_howto.asp
[14] https://ro.wikipedia.org/wiki/Cascading_Style_Sheets
Php
[15] http://www.referatele.com/referate/noi/informatica/ce-este-php121082229.php
[16] https://ro.wikipedia.org/wiki/PHP
MySQL
[17] https://ro.wikipedia.org/wiki/MySQL
[18] http://www.referatele.com/referate/noi/informatica/mysql-7114242124.php
Json – o clasă pe care am folosit-o pentru trimiterea datelor către baza de date
[19] http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/
Imagini folosite în interfața aplicației
[20] https://assets.jobcase.com/assets/profile_placeholder-b5ae7217a753a1c2bb02f0a56b5efc5a177dff58fed331cafde2dcdad24ba6d3.png
[21] http://www.salleletilleul.be/wp-content/uploads/tilleul/images/img_reservation.jpg
[22] https://static.pexels.com/photos/4831/hands-coffee-smartphone-technology.jpg
[23] http://www.clipartbest.com/cliparts/dc7/zqa/dc7zqaadi.png
Queens – imagini folosite în aplicație pentru profilul restaurantului [27] [28] [29] [30] [31]
[24] http://www.oradea.info/wp-content/uploads/2011/07/queens-music-pub.jpg
[25] http://www.pchome.ro/Images/website/117_2015_2_2_kueensODbcq.jpg
[26] http://www.queens-pub.ro/assets/templates/queenspub/images/galerie/bar2.jpg
[27] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/121-queens-music-pub#img-696348
[28] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/121-queens-music-pub#img-696350
[29] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/121-queens-music-pub#img-696358
[30] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/121-queens-music-pub#img-696369
[31] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/121-queens-music-pub#img-696362
Butoiul de aur – imagini folosite în aplicație pentru profilul restaurantului [33] [34] [35] [36] [37] [38] [39]
[32] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/192-butoiul-de-aur#img-386911
[33] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/192-butoiul-de-aur#img-386894
[34] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/192-butoiul-de-aur#img-386876
[35] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/192-butoiul-de-aur#img-386867
[36] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/192-butoiul-de-aur#img-386869
[37] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/192-butoiul-de-aur#img-386908
[38] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/192-butoiul-de-aur#img-386898
[39] http://afbh.ro/user_files/Campanii/Logo_ButoiulDeAur.JPG
Graf – imagini folosite în aplicație pentru profilul restaurantului [41] [42] [43] [44] [45] [46] [47]
[41]http://foodmenu.ro/uploads/logo/57959_Graf.jpg
[42]http://www.restaurantgraf.ro/gallery/Restaurant/terasa/73.html
[43]http://www.restaurantgraf.ro/gallery/Restaurant/terasa/73.html
[44]http://www.restaurantgraf.ro/gallery/Restaurant/Vip/73.html
[45]http://www.restaurantgraf.ro/gallery/Restaurant/Bar/73.html
[46]http://www.restaurantgraf.ro/gallery/Restaurant/Verde/73.html
[47]http://www.restaurantgraf.ro/gallery/Restaurant/Meniu/73.html
Corsarul – imagini folosite în aplicație pentru profilul restaurantului [48] [49] [50] [51] [52] [53]
[48] http://foodmenu.ro/uploads/logo/11542_Corsarul.jpg
[49] https://media-cdn.tripadvisor.com/media/photo-s/08/c1/25/f8/corsarul-ristorante-pizzeria.jpg
[50] http://bucuresti.24fun.ro/wp-content/uploads/sites/8/2009/05/c9d3ce6corsarul5.jpg
[51] http://harboursideplace.com/wp-content/uploads/2014/09/Harbourside-Place-Deep-Blu-Seafood-Header.jpg
[52] http://blog.whatsupkolkata.com/wp-content/uploads/2016/01/menega-seafood-cafe-bali.jpg
[53] http://bucuresti.24fun.ro/wp-content/uploads/sites/8/2009/05/78606cecorsarul2.jpg
Crinul – imagini folosite în aplicație pentru profilul restaurantului [54] [55] [56] [57] [58] [59]
[54]http://foodmenu.ro/uploads/logo/89552_Restaurant-Crinul-Alb-Oradea.jpg
[55]https://farm6.static.flickr.com/5587/14780509237_0638f1c230.jpg
[56]http://www.crinulalboradea.ro/rotator/2.jpg
[57]http://www.crinulalboradea.ro/rotator/1.jpg
[58]http://www.crinulalboradea.ro/rotator/5.jpg
[59]http://www.nonstopdeschis.ro/images/itemp/big/Restaurant-Crinul-Alb-Oradea-59.JPG
To chefs – imagini folosite în aplicație pentru profilul restaurantului [60] [61] [62] [63] [64]
[60] https://www.weblike.ro/images/logo-clienti/tochefs.png
[61] http://to-chefs-restaurant-oradea.promotur.ro/fisiere/imagini/to-chefs-restaurant-oradea/banner/imagini/1409047945bm.jpg
[62] https://media-cdn.tripadvisor.com/media/photo-s/08/29/de/3b/to-chefs-restaurant.jpg
[63] http://www.agerpres.ro/media/images/2015-01/01251051410328954.jpg
[64] http://www.teoskitchen.ro/wp-content/uploads/2014/09/muschi-de-vita-1.jpg
Mama mia – imagini folosite în aplicație pentru profilul restaurantului [65] [66] [67] [68] [69] [70]
[65] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/414-pizzeria-mamma-mia#img-606266
[66] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/414-pizzeria-mamma-mia#img-606256
[67] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/414-pizzeria-mamma-mia#img-606258
[68] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/414-pizzeria-mamma-mia#img-606257
[69] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/414-pizzeria-mamma-mia#img-606274
[70] http://mamma-mia-oradea.ro/images/logo.png
Spoon – imagini folosite în aplicație pentru profilul restaurantului [71] [72] [73] [74] [75] [76]
[71] https://i.ytimg.com/vi/T84lgQUdZk8/hqdefault.jpg
[72] http://www.partyoradea.ro/images/pogallery/spoon-restaurant/spoon-restaurant-5.jpg
[73] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/260-spoon-restaurant#img-393182
[74] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/260-spoon-restaurant#img-393181
[75] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/260-spoon-restaurant#img-393161
[76] http://www.partyoradea.ro/localuri/e/3-pizzerie-restaurant/260-spoon-restaurant#img-393155
ANEXA 10
DECLARAȚIE DE AUTENTICITATE A
LUCRĂRII DE FINALIZARE A STUDIILOR
Titlul lucrării ______IMPLEMENTAREA UNEI APLICAȚII PENTRU________________
________________REZERVĂRI ÎN RESTAURANTELE DIN ORADEA _________________
_______________ REALIZATĂ ÎN SISTEMUL DE OPERARE ANDROID_____________________
Autorul lucrării ______BALINT DORIN____________________________________
Lucrarea de finalizare a studiilor este elaborată în vederea susținerii examenului de finalizare a studiilor organizat de către Facultatea _INGINERIA ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI_ din cadrul Universității din Oradea, sesiunea_________IULIE__________ a anului universitar ____2016____.
Prin prezenta, subsemnatul (nume, prenume, CNP) _____________________
__BALINT, DORIN FLORENTIN, 1920117055093_________________________________
___________________________________________________________________,
declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără nici un ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate de alți autori.
Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau alte surse folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de autor.
Oradea,
Data Semnătura
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: IMPLEMENTAREA UNEI APLICAȚII PENTRU REZERVĂRI ÎN RESTAURANTELE DIN ORADEA REALIZATĂ ÎN SISTEMUL DE OPERARE ANDROID [304906] (ID: 304906)
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.
