Proiectarea Unei Aplicatii Informatice Pentru Gestionarea Activitatilor Online ale Agentiei de Turism
Lucrare de licență
Proiectarea, realizarea și implementarea unei aplicații informatice pentru gestionarea activităților online ale agenției de turism
“Holiday Travel Center”
Acronime
AJAX – Asynchronous JavaScript & XML
BD – Bază de Date
CSS – Cascade StyleSheet
E-A – Entitate Asociere
GUI – Graphical User Interface
HTML – HyperText Markup Language
HTTP – Hypertext Transfer Protocol
JS – JavaScript
SQL – Structured Query Language
PHP – PHP Hypertext PreProcessor
SASS – Syntactically Awesome Stylesheets
SGBD – Sistem de Gestiune a Bazei de Date
URL – Uniform Resource Locator
XHTML – Extensible HyperText Markup Language
XML – Extensible Markup Language
Termeni specifici
Auto load –încărcare automată
Bitmap –un format de fișier de tip imagine
Body –secțiunea de mijloc a unei pagini
Browser –instrument de navigare web
Carousel –metodă de afișare a informației cu conținut asemănător prin deplasare a secvențelor
Client-server – model arhitectural pentru aplicații distribuite
Client-side – atribut oferit unor tehnologii utilizate pe partea de operații executate de client din cadrul relației client-server
Cross-Browser – capabilitatea unei aplicații web să funcționeze corect indiferent de mediul în care este executată
Footer –subsol
Framework – platformă de dezvoltare
Header – antet
Java –limbaj de programare
Kernel –componenta centrală a majorității sistemelor de operare
Mix-in – o clasă care conține o combinație de metode ale altor claseîn limbaj de programare
Mod-rewrite – asigură modificarea dinamică a primirii solicitărilor URL bazate pe expresii regulate
Multi-core –cu mai mule nuclee
Newsletter –buletin informativ
Open-source –acces liber al utilizatorilor asupra surselor
Plug-in –componentă software care adaugă caracteristici unei aplicații software existentă
Query – interogare
Ruby –limbaj de programare
Scheme –limbaj de programare
Script – fișier ce conține cod scris într-un anume limbaj de programare și care este interpretat în momentul rulării, nu compilat
Server-side –atribut oferit unor tehnologii utilizate pe partea de operații executate de server din cadrul relației client-server
Slide show –imagini utilizate în proiecții
Lista tabelelor
Tabel nr.1 Prognoza cheltuielilor de promovare
Tabel nr. 2 Prezentarea costurilor și a profitului în decurs de un an
Tabel nr. 3 Prezentarea unităților comerciale
Tabel nr. 4 Necesarul de resurse
Tabel nr. 5 Calendarul de realizare
Tabel nr. 6 Stabilirea cheilor primare și externe
Lista figurilor
Figura nr. 1 Spațiul alocat per unități (m2)
Figura nr. 2Organigrama
Figura nr. 3 Schema fluxului informațional a companiei
Figura nr. 4 Schema fluxului informațional al aplicației
Figura nr. 5 Modelul prelucrărilor informaților
Figura nr. 6 Raport
Figura nr. 7 Diagrama modelarea prelucrărilor
Figura nr. 8 Modelarea datelor
Figura nr. 9 Diagrama entitate asociere a cinematografului
Figura nr. 10 Diagrama entitate asociere a catalogului de produse și restaurante
Figura nr.11 Diagrama entitate asociere a evenimentelor, a utilizatorilor, a abonaților și mesaje
Figura nr. 12 Raportul de afișare a clienților înregistrați
Figura nr. 13 Raportul de afișare a filmelor
Figura nr. 14 Raportul de afișare a serviciilor
Figura nr. 15 Raport de afișare a restaurantelor
Figura nr. 16 Raport de afișare a proiecțiilor
Figura nr. 17 Raport rezervări de filme
Figura nr. 18 Formular de adăugare client
Figura nr. 19 Formular de adăugare restaurant
Figura nr. 20 Formular de selectare a locurilor în sală
Figura nr. 21 Formular de rezervare
Figura nr. 22 Formular de adăugare a proiecției unui film
Figura nr. 23 Formular de adăugare a unui serviciu
Figura nr. 24 Modelul relațional al bazei de date
Figura nr. 25 Cifra schema interfeței
Figura nr. 26 Varianta prelucrată a interfeței grafice a primii pagini
Figura nr. 27 Schema de flux informațional a noului sistem
Figura nr. 28 Pagina acasă
Figura nr. 29 Pagina shopping
Figura nr. 30 Opțiune shopping detaliat
Figura nr. 31 Pagina restaurante
Figura nr. 32 Pagina detalii restaurant
Figura nr. 33 Pagina distracții
Figura nr. 34 Pagina de selectare a filmului
Figura nr. 35Pagina de vizualizare detalii film și de selectare a opțiunilor
Figura nr.36 Pagina de selectare a locului din sala de cinema
Figura nr. 37 Pagina servicii
Figura nr. 38 Pagina detalii servicii
Figura nr. 39 Pagina evenimente
Figura nr. 40 Pagina contact
Figura nr. 41 Model client-server
Introducere
Turismul reprezintă călătoria îndeplinită în scopul odihnei, relaxării, sau pentru afaceri.O.M.T. – Organizația Mondială a Turismului definește turistul ca fiind o persoană care locuiește sau călătorește în afara locului de reședință permanentă pentru minim 24 de ore și maxim un an întreg în scop de recreere.Theobald cuvânta că din punct de vedere al originii cuvântului „tur” provine din limba latină – turnare și din limba greacă – tornos, avand sens de cerc – mișcarea în jurul unei axe sau al unui punct central. Cuvântul a fost de asemenea preulat și în limba engleză – tour. Tur/tour reprezintă o călătorie dus-întors și cel care desfășoară această călătorie este numit turist/tourist.
Cea mai veche agenție de turism modernă din Statele Unite ale Americii este numită Brownell Travel – în 1887, pe data de 4 iulie, Walter T. Brownell a condus 10 călători într-un turneu prin Europa, ce a pornit din New York. Agenția de turism modernă a apărut în a doua jumătate a secolului 19 pentru prima oara. În plus față de faptul că a dezvoltat pachetul turistic, Thomas Cook a și stabilit un parteneriat cu compania feroviară Midland Railway pentru a putea crea un lanț de agenții turistice în ultimul sfert al secolului 19. Primul tur organizat vreodată a avut prețul de 1 șiling, capacitatea de a transporta 500 de pasageri, distanța a fost de 12 mile, plecarea din Loughborough cu destinația Leicester. Partenerii nu numai că au vandut propriile tururi dar au și reprezentat alte agenții de turism. Agențiile de turism au devenit mai accesibile și totodată mai frecventate în anul 1920 când dezvoltarea aviației comerciale a fost în creștere.
Holiday Travel Center își propune să lucreze la îmbunătățirea websiteului pentru a ușura munca de rezervare pentru vacanța de vis uitând de experiența cozilor interminabile și să deschidă o a treia sucursală cu locația chiar în centrul Bucureștiului, România pentru toți iubitorii de călătorii. Aceasta nu va fi singura agenție din mijlocul capitalei țării, dar fiind o agenție mai mică, compania speră ca va putea fi mai primitoare și de asemeanea ca le va putea acorda mai mult timp persoanelor care simt nevoia de a se plimba în afara orașului. Serviciile online vor putea fi accesate mai ușor ca niciodată prin inovatorul website, la doar un click apăsat, clienții se vor putea informa în legătura cu toate ofertele și promoțiile ce urmează să se desfășoare și inclusiv înregistrări video din toate locațiile turistice.
O agenție de turism poate oferi servicii legate de călătorie și de turism pentru public , în numele furnizorilor , cum ar fi companiile aeriene , închirieri auto , linii de croazieră , hoteluri , căi ferate , și circuite. În plus, față de aranjamentele de călătorie oferite pentru turiști, pentru călătoriile de afceri sau comerciale compania Holiday Travel Center are agenți specializați pe acest departament. De asemenea, există în cadrul companiei una din agenții care servește și ca agent de vânzări pentru agențiile de turism străine, pentru a putea fi posibilă închirierea de spații de birouri pentru călătoriile în scop de afaceri.
Studiulșianalizasistemuluiexistent
Prezentareasuccintăaunitățiieconomico-sociale
Compania are C.U.I. unic RO1755867, cod CAEN 7312, are brevet de turism, licență de turism și poliță de asigurare.Holiday Travel Center este una din renumitele agenții turistice din București în planuirea vacanțelor de vis. Compania este o afacere de familie și a fost înființată în anul 2006 de către o familie formată din soț și soție. De atunci și pâna acum, firma a fost listată în top 50 agenții de turism din Romănia și în topul destinațiilor de vacanță, ceea ce înseamna că randamentul firmei a crescut luând în considerare faptul că aceasta are un număr de 8 angajați, numărul fiind în continuă creștere iar cifra de afaceri este de 4,664,083. Își are sediul principal pe Calea Vitan nr. 68, vis-a-vis de mall București, sector 3de unde îșî administreaza toată activitatea firmei. Scopul urmarit de companie este acela de a renova locația firmei pentru dezvoltarea companiei. Campaniile de avertisment se fac văzute și auzite în publicații cotidiene, reclame televizate și radio. Firma are contracte de colaborare pentru toate formele de transport, iar destinațiile din portofoliu depind doar de posibilitățile clientului. Unul din obiectivele actuale a le companiei este acela de a se extinde până în punctul în care poate prezenta o adevărată concurență pentru marile firme de renume din industria turistică. Companii partenereȘ AirFrance, Klm, Tarom, Hilton Hotel & Resorts, IATA, WizzAir și multe altele.
Strategia de marketing a companiei tinde sa cuprindă și tinerii dar și familiile din București, deoarece compania, personalul si locația sunt mult mai accesibile tuturor în opoziție cu marile agenții bucureștene. Holiday Travel lucrează intens pentru a-și modifica websiteul și pentru a-și renova pentru ca și-a propus să participe activ pe piața agențiilor de turism.
Serviciul de bază este îndeplinirea nevoilor clienților. Prin accesarea atât de ușoara online a tuturor informațiilor necesare, Holiday Travel Center își invita toți clienții sau potențialii clienți să acceseze siteul companiei. Prin această inovație multe persoane dornice de o vacanță își vor putea plănui sejurul fără a mai fi necesară deplasarea acestora. Încheierea și venitul din contractele semnate va constitui principala sursă de profit.
Principaleleactivitățidesfășurateînunitateaeconomică
Holiday Travel Center se incadreaza in principalul si unicul domeniu de activitate, turismul. Agenția de turism reprezintă societatea comercială ce are rolul de intermediar între agenșia economică, prestatorii direcți de servicii turistice și turiști. Activitatea companiei constă în organizarea, oferirea si comercializarea unor pachete de servicii sau componente ale acestora.
Agenția de turism se împarte în doua categorii după modul de realizare si comercializare a produselor turistice- agenție de turism turoperatoare și agenție de turism detailistă.
Agenția de turism detailista vinde sau oferă spre vânzare în contul agențiilor turoperatoare pachete de servicii, iar agențiile turoperatoare au ca obiect de activitate organizarea și vânzarea pachetelor de servicii turistice.
Produsul pe care touroperatorii il ofera este pachetul de servicii format din cazare, transport, transfer la si de la aeroport. Pe langa acestea, pachetul poate cuprinde si servicii de divertisment, plimbari, inchirieri masini si altele. Avantajele pe care le prezinta acest produs sunt pretul forfetar, comoditatea achizitionarii, turistul fiind scutit de grija luarii unei decizii in ceea ce priveste achizitionarea fiecarui serviciu care ii compune o vacanta completa si alcatuirea unui program de vacanta (traseu, obiective de vizitat, posibilitati de divertisment). Totodata, achizitionarea unui produs al unui touroperator cunoscut reduce posibilitatea aparitiei riscurilor legate de calitatea produsului turistic.
Touroperatorii pot fi diferențiați în funcție de nivelul de integrase a produselor turistice și capacitatea lor de ofertă în funcție de activitățile oferite, poziționare, destinație și profilul socio-demografic al clientelei. Compania oferă următoarele avantaje prețuri scăzute, posibilitatea de prestabilire a bugetului necesar pentru aranjamentele de călătorie, numeroase posibilități de circuite, șanse pentru călătorii în grupuri de persoane cu aceleași afinități și numeroase vacanțe și activități variate pentru petrecerea timpului la destinație.
Rolul și poziția agenției comparată cu altele este distribuția pachetelor de vacanțe prin conexiunile realizate între ofertanți și cerere. Touroperatorii pot controla întâlnirea dintre cerere și ofertă, dar și consumul de produse și servicii turistice, prin poziția centrală susținută de tendințele actuale ale industriei, integrare și globalizare.
Holiday Travel Center își desfășoară activitatea în baza licenței de turism și este membră a unor asociații naționale și internaționale de profit- ANAT (Asociația Națională a Agențiilor de Turism din România) și IATA( International Air Transport Association)
In structura organizatorica a unui touroperator, departamentul productie joaca un rol esential, agentia avand ca misiune conceperea si crearea de produse turistice. El indeplineste patru functii: cea de studiu de piata si de previziune, de cercetare a produselor turistice, de fabricare a acestora si o functie economica , legata de fixarea preturilor. Ea este compusă din- structura de producție ce constituie totalitatea persoanelor de conducere și a compartimentelor în care se produc bunuri sau servicii, structura funcțională constituită din totalitatea persoanelor de conducere și a compartimentelor unde se desfășoară activități cu caracter funcțional de pregătire și luare a deciziilor.
Principalele obiective ale agenției sunt- vânzarea către turiști a pachetelor de servicii proprii și a celor contractate cu alte agenții de turism licențiate, rezervarea si comercializarea de servicii turistice individuale(transport, cazare, masă, agrement, asistență turistică, închirieri autoturisme, ș.a.), rezervarea și comercializarea de bilete pentru mijloace de transport, spectacole și diverse manifestari, organizarea de pachete și servicii în domeniul turismului internațional și intern.
În legatură cu cheltuielile prevăzute, fondurile vor fi divizate în două fragmente- pentru achiziționarea terenului pentru noul sediu al agenției plus costul construcției și pentru dezvoltarea websiteului. Suma estimativă pentru costurile aferene este de 100 de mii de euro. Aici sunt incluse permisele necesare proiectului, costurile pentru contractori individuali împreuna cu echipamentul necesar, consultanță potrivite noului sediu și de asemenea echipa de specialiști în tehnologia informației și a comunicațiilor pentru developarea aplicației web.
Tehnologia indispensabilă nu va lipsi din sediu, acesta va fi dotat cu 2 ecrane lcd de ultimă generație, 4 laptopuri și o unitate cu un monitor pentru prezentarea mai ușoară a ofertelor de sejur clientului. Compania va folosi aceste tehnologii cu sume moderate și în armonia de a crea un mediu ambiant și accesibil pentru clientelă cât mai diferită. O parte din capital este destinat echipamentului ca și clădirea propriu-zisă, escalatoare, alarmă, încălzire, ventilație, aer condiționat. De asemenea, o parte substanțială din fondul companiei este destinată proiectării aplicației informatice pentru gestionarea activităților online are agenției.
Cu privire la diminuarea cheltuielilor, noul sediu al agenției de turism va avea 2 pereti exteriori din sticlă pentru pătrunderea mai ușoară a luminii naturale, ceea ce va diminua costurile de întreținere în perioada mai însorită a anului.
Pentru formarea clientelei, dupa o pauză de renovare și recreere a websiteului publicitatea și promovarea companiei vor fi cruciale. Departamentul de marketing va fi resposabil cu campaniile publicitare, cele mai potrivite Bucureștiului pentru a apropia clienții de companie. Mai jos este prezentat programul de promovare al agenției de turism și bugetul alocat acestuia pentru o perioada de 3 ani.
Tabelnr.1Prognozacheltuielilordepromovare
Anul 1 – S-a considerat ca acest an va fi cel mai important. Redeschiderea agenției de turism va stârni curiozitatea vechilor clienți dar și altora noi. Prin urmare se va implementa o strategie de marketing agresivă focusată pe cele mai populare media- panouri publicitare, website și rețele sociale. În anul 1 bugetul stabilit pentru publicitate este de 13,500€,
An 2 – Acest an s-a considerat să se facă cu mai mult de 20% mai puțină publicitate. Prin urmare mai puțin PR și reclame vor fi implementate.
An 3 – Până în anul 3, suma investită va fi considerabil mai mică datorită promovării puternice și a cheltuielilor din primii 2 ani și agenția își va păstra notorietatea pe piață.
Inițial costurile serviciilor ar trebui să rămână apropiate cu cele ale concurenților și în același timp avantajoase pentru toată lumea. Holiday Travel Center va oferi clienților contracte eficiente și profitabile pentru ambele părți contractante, iar pentru aceasta compania va implementa mai multe strategii. Din perspectiva marketingului, costurile vor defini poziția pe piață , iar de aceea prețurile trebuie să fie potrivite pentru a penetra piața, a menține poziția și cel mai important pentru a aduce venituri companiei. Odata ce cantitatea cererii de produse crește, prețurile vor descrește, în plus mereu vor interveni schimbări în curba cererii și a ofertei și din acest motiv politica prețurilor va fi reevaluată mereu.
Agenția este construită în jurul percepției consumatorului. Modul de percepere a concurenței are ca scop, pe lânga promovarea serviciilor, aducerea celor mai cerute oferte în cadrul companiei care într-un fel sau altul vor fi similare cu cele ale competiției dar diferite din punct de vedere a ce reprezintă însuși produsul.
Cifra de afaceri(CA) reprezintă totalitatea vânzărilor realizate și facturate pe parcursul unui exercițiu fiscal, aceasta cuprinde vânzarea de mărfuri și produse într-o perioadă de timp determinată, adică toate operațiunile comerciale pe care firma le-a efectuat, reprezentând suma veniturilor afernte lucrărilor, serviciilor prestate, bunurilor livrate, și alte venituri din exploatare, mai puțin rabaturi, remize și alte reduceri acordate clienților. Cifra de afaceri nu cuprinde veniturile financiare, veniturile excepționale și nu include TVA-ul facutart. Cifra de afaceri poate evidenția câte un aspect referitor la activitatea firmei prin următoarele abordări- cifra de afaceri totală, cifra de afaceri medie, cifra de afaceri marginală și cifra de afaceri critică.
Cifra de afaceri
Profitul
Profitul reprezintă diferența dintre încasări și cheltuieli, acesta este un venit care poate fi adus de capitalul utilizat într-o firma. Venitul reprezintă partea de bani rămasă facută după investiția facută pentru a oferi bunuri și servicii. Profitul mai este numit și principiul conectării cheltuielilor. Profitul este de 2 feluri – profit brut și profit net.
Profitul brut numit și venit din exploatare este o măsură a rentabilității a unei firme care exclude dobânda și cheltuielile de impozit pe venit. Cheltuieli de funcționare = Profit brut = Venit.
Venitul net este venitul rezidual al firmei după adăugarea veniturilor tolale, câștiguri totale și scăzând toate cheltuielile și pierderile pentru perioada de raportare. Câștigul și profitul sunt sinonime pentru venituri.
Bilanțul
Bilanțul reprezinta o expresie valorică, la un moment dat, ce evidențiază echilibrul dintre bunurile economice și sursele lor de finanțare. El are reprezentarea în formă de tablou, acest tablou este fromat din doua părți- Activul (partea stângă a tabloului) și Pasivul (partea dreaptă a tabloului). Bilanțul este un procedeu al metodei contabilității prin care se asigură dubla reprezentare a averii.
Acesta se clasificăȘ
După statutul juridic al întrepinderii
Bilanțul contabil inițial
Bilanțul contabil curent
Bilanțul contabil fianl
După perioada de întocmire
Bilanțul contabil anual
Bilanțul contabil intermediar
După sfera de cuprindere a elementelor patrimoniale
Bilanțul contabil primar
Bilanțul contabil consolidat
Bilanțul contabil centralizat
Funcțiile bilanțului contabil:
Funcția de generalizare a informațiilor contabile
Funcția de informare
Funcția de analiză
Structuraorganizatorică. Studiul sistemului de conducere. Studiul sistemului condus.
Structura organizatorică reprezintă aranjarea pe nivele într-o companie a drepturilor, autorităților și obligațiilor. Aceasta determină rolul fiecărui angajat, coordonează fluxul de informații între nivelele managementului, clasifică responsabilitățile personalului. Structura acesteia fiind diferită și definită de la o companie la alta, depinzând de obiectivele și strategiile firmei.
Acționarii adică investitorii posedă acțiuni și beneficiază de drepturi ce vin ca urmare din posesia acestora. Acționarii pot fi împărțiți în 4 categorii:
Acționarul semnificativ: persoana fizică, juridică sau un grup de persoane ce acționează în mod concertat și care deține cel puțin 10% din capitalul social total sau o participație care permite exercitarea influenței asupra luării deciziilor.
Acționarul majorital: acționar individual/grup care deține cel puțin 50% din capitalul social.
Acționar comanditar: cel care participă la formarea societății, nu răspunde decât până la concurența capitalului social subscris
Acționar comanditat: cel care participă la formarea societății, raspunde nelimitat pentru obligațiile societății.
Actionariat: firma contine 2 actionari.
Oganigrama
Organigrama este redarea schematică în toate detaliile a organizării, subordonării și a legăturilor dintre compartimente din cadrul unei instituții. După formarea organigramei sunt mai multe tipuri de organizații: ex. Piramidale(politice, religioase)
În structura ce urmează, primel nivel de manager are puterea decisivă și un strâns control asupra altor departamente și subdiviziuni. Organigrama de mai jos arată structura organizațională a lui Holiday Travel Center.
Firma in anul 2014 are 7 angajati:
Directorul general: este funcția cea mai înaltă în general în majoritatea companiilor, în alte organizații funcția echivalentă este aceea de președinte(în bancă), rector(în universitate), director(în învățământ preuniversitar). Acesta răspunde în fața consiliului de administrație și este un salariat al organizației și face parte din managementul de vârf.
Manager vânzari: răspunde de tot ce implică relația cu clientul, este responsabil de prețul înaintat clientelei, reprezintă interfața dintre departamentul d vânzări și conducere, face zilnic rapoarte către management, răspunde de bunul mers al lucrăriloe și are obligația de a preîntâmpina reacțiile negative ale clienților.
Contabil: este persoana calificată de a menține contabilitatea firmei.
Administrator de sistem: este un specialist în domeniul tehnologiilor informaționale responsabil pentru buna funcționare a rețelelor locale, servere, calculatoare și controlul securizării informațiilor.
Administrator operatiuni: gestioneaza modul de desfasurare al activitatilor
Agent de turism: asigura legatura directa intre societate si client
Promoter: promoveaza firma prin intermediul mijloacelor publicitare
Fig.2Organigrama
Studiulsistemuluiinformațional
Pentru ca un sistem informațional să fie analizat este necesar un efort considerabil deoarecele analiza acestuia este un întreg proces de descompunere a unui întreg în parțile componente ale acestuia, conducând la o înțelegere a naturii funcțiilor și a corelațiilor. Pentru a culege informații despre un sistem informațional avem nevoie de cele 4 principale activități: documentarea, observarea, intervieverea și chestionarea. Sistemul informațional are un rol foarte important în diviziunile organismului economic: decizional și operațional, acesta trebuie să asigure legătura dintre sitemul de condus și sistemul condus.
Punctele forte ale sistemului informațional din cadrul agenției Holiday Travel Center sunt: Compatibilitatea software-ului cu toate navigatoarele web, compania are oferte atractive pentru turiști, raportul calitate preț este foarte bun, serviciile sunt variate, personalul este bine pregătit, echipă unită, experiență minimă 5 ani, experiență în domeniu pentru că este prezentă pe piață din 2006.
Punctele slabe: websiteul se blochează în momentul în care clientul încearcă să acceseze o ofertă, așezarea în pagină nu corespunde trendurilor actuale, sunt folosite prea multe culori, nu există spațiu dedicat ipresiilor clienților, nu are sistem de administrare, este static, nu are bază de date, nu are rapoarte.
Activitatea în cadrul firmei este mereu într-un mediu liniștit și plăcut, comunicarea dintre agajați este posibilă în mai multe feluri: în cadrul sediului companiei, la telefon, pe email. Compania primește oferta de la colaboratori, oferta este pusă pe website pentru posibilii clienți și de asemenea este și afișată în sediul companiei. Operatorul introduce oferta pe website, și clientul ori accepta oferta online printr-o simplă apăsare de mouse, operatorul primește oferta, operatorul trimite email/sună clientul pentru confirmare. Sau în cadrul firmei, angajatul oferă asistență clientelei, aceasta se decide asupra ofertei și consultantul îi ofera factură și bon fiscal după achiziționare.
1.4.1Schemafluxuluiinformaționalaferenttemei. Descrierea circuitului operațional aferent temei.
“Fluxulinformaționalreprezintăcantitateadeinformații,careestevehiculatăîntreemițătorulșibeneficiarulpecircuitulinformațional,caracterizatprinlungime,vitezădedeplasare,fiabilitate,costetc.Indiferentdetip,estenecesarcacircuiteleinformaționalesăfiecâtmaidirecte,însensulevităriilamaximumapunctelorintermediaredetrecere,ceeacedeterminăatâtcreștereavitezeidevehiculareainformațiilor.”
În cadrul companiei Travel Center funcționează un singur flux informațional, acela din cadrul aplicației informatice, site-ul agenției în sine. Aplicația descrie fluxul în felul următor:
Operatorul introduce ofertele pe website
Clientul dorește să își rezerve un sejur selectând: țara, orașul, data, toate detaliile prvind vacanța acestuia
Următorul pas este cel de autentificare a clientului, daca deja are un cont pe website nu are ce detalii în plus sa întroducă în afara userului și a parolei, iar dacă trebuie creat un cont nou atunci acesta va introduce următoarele: nume, prenume, adresă, număr de telefon, serie și număr buletin, cnp
Operatorul procesează informația, și trimite email de confirmare
Fig. 4 Schema fluxului informațional al aplicației
1.4.2Descriereacircuituluiinformaționalaferenttemei
Circuitul informațional reprezintă tot traseul informației transmisă între cele doua entități funcționale: sursa și receptorul. Într-un circuit informațional există mai multe fluxuri informaționale. Circuitele pot fi clasificate:
a)Caracteristici organizaotrice și direcția de vehiculare:
* vertical
* orizontal
* oblic
b)Dupa frecvența producerii:
* periodic
* ocazional
* permanent
c) După conținutul informației
* omogene
* eterogene
d) După loc:
* interne
* externe
e) Configurație:
* liniară
* ondulatorie
* arc
* spirală
Operatorul introduce în sistem pachetele promoționale,clientul alege oferta, operatorul trimite clientului confirmarea.
1.4.3Modelulconceptualaldatelorșidescriereadocumentelorutilizate(MCD)
„Modelareaconceptualăadatelor–esteomodalitatedereprezentareadatelordindomeniulanalizat,cuscopuldeascoateînevidențătoateregulileprivindidentitateașilegăturileexistenteîntredate.”.
Agenția are parteneri cu oferte de turism, compania intermediază ăntre procesul de prezentare al ofertei și cererii de rezervare și a procesului de afișare a ofertelor. Touroperatorii primesc ofertele de la parteneri dar nu au voie să modifice conținutul acestora.
Prezentareadocumentelor:
Contractul–este documentul legal încheiat de comun acord de către două părți contractante prin care sunt stabilite obiectul contractului, perioada și condițiile pentru care actul este valabil.
Cereredeoferte–clientul solicită informații cu privire la ofertele și pachetele companiei, prețuri,etc.
Oferta–lista de produse destinată comercializării în care sunt specificate prețul, descrierea, perioada.
1.4.4Procedurideprelucrareadatelorutilizate.Modelulconceptualalprelucrărilor
„Modelulconceptualalprelucrărilor-esteoreprezentareschematicăaactivitățilordesfășurateîncadrulsistemuluiobiect,aprelucrărilorlacaresuntsupusedateleindependentdestructuraorganizatoricășimijloacederealizare.”
Datele ofertei și toate datele clientului trebuie să fie prezente. Perioada sejurului, data, locația. Datele clientului: nume, prenume, adresă, datele de pe buletin. Operatorul face o cerere de ofertă , acesta primește de la parteneri oferta respectivă, o afișează pe website, clientul vede oferta, decide și alege oferta, completează informațiile necesare în formular, operatorul verifică și acceptă datele clientului, le trimite mai departe partenerilor și aceștia acceptă clientul respectiv și sejurul acestuia.
1.4.5Analizacriticăasistemuluiactual. Direcții de perfecționare a sistemului actual.
Analiza critică a sistemului actual va îmbunătăți dezvoltarea companiei deoarece prin această analiză firma va putea pune la punct toate punctele slabe ale companiei.
Dat fiind faptul ca websiteul companiei nu face fata numarului de cereri din partea clientilor. Unele linkuri din interioriul websiteului nu pot fi accesate. 30 % din pozele afisate se vad in ceata. Clientii sunt automat deconectati de pe website dupa 60 de secunde din clipa accesarii. Modificarea, sau chiar crearea unei aplicatii web noua prezinta un mod de perfectionare a sistemului.Designul websiteului este unul din minusurile companiei, așezarea în pagină nu corespunde trendurilor atcuale, pozele sunt prea mici, sunt prea multe culori folosite și prea amestecate. Siteul vechi nu avea sistem de administrare, bază de date, nu avea rapoarte, era static, dar în inovatorul website vor fi implementate următoarele: siteul va fi dinamic, va fi introdusă o bază de date, vor fi introduse rapoarte, ofertele nu vor fi introduse manual fiecare în parte de către un programator, vor fi efectuate schimbări la design, pozele vor fi mai mari, pagina de start și toate subdiviziunile acesteia vor putea fi accesate mult mai ușor.
Pagina principală a vechiului website avea prea multe culori în meniul principal, în titluri și practic în tot textul. Designul aplicației informatice era învechit și din punct de vedere al pozelor, și al formelor.Pozele erau prea mici, prea multe, prea amestecate, chenarele care defineau poza aveau colțurile rotunjite. Poza de fundal era vizibilă doar pe marginile paginii.
Ofertele din pagina categoriei întâi sunt afișate în formă de listă, acestea nu conțin imagini interactive și atractive pentru clienți. Harta este doar o poză, nu este interactivă sau funcțională ca o hartă în sine. Scrisul este prea mic, iar cantitatea mare a acestuia este concentrată într-un spațiu foarte mic. Pe pagină sunt prea multe oferte.
Pagina categoriei doi: prezintă prea multe imagini mici, simboluri colorate prea intens, textul nu este atractiv pentru că dificultatea de a-l citi este destul de mare.
Pagina ofertei nu prezintă niciun lucru de care clienții să fie atrași, exact ca restul aplicației informatice, scrisul este mic și înghesuit, culorile îți distrag atenția de la ofertă. Dat fiind faptul că aici este pagina ofertei, pozele ar trebui sa fie mari și luminoase pentru a se putea distinge detaliile.
CapitolII
Proiectareadeansambluasistemuluiinformatic
2.1Obiectiveleaplicațieiinformatice
Siteul agenției de turism are o importanță majoră în ceea ce reprezintă promovarea lui și atragerea noilor sau vechilor clienți. Publicitatea acestuia va fi în rând cu cele mai noi și cunoscute trenduri în momentul actual. Odată cu înregistrarea pe website, clienții vor avea beneficii cunoscute doar prin această operațiune, iar în funcție de cât de des folosesc clienții serviciile, aceștia vor beneficia și de alte reduceri exponentiale. Siteul va folosi în structura lui cele mai solicitate informații. Acesta este pus la dispoziția clienților în dublu sens și constructiv și practic pentru a economisi timp clienșilor. Aplicația informatică este foarte benefică tuturor persoanelor interesate de călătorie, acestea economisind timpul acestora petrecut în agenție. Aplicația oferă lista completă a ofertelor, serviciilor, toate detaliile despre pachete, locația pe hărți a destinațiilor de vacanță, numărului de contact al agenției, adresa sediului, programul și de asemenea informații interactive și cele mai noi și avantajoase oferte.
2.2Loculaplicațieiîn sistem
Din surse externe sau interne, orice sistem informatic trebuie să conțină ca element principal baza de date în care să fie stocate informații intercorelate între ele. Informațiile din sistem trebuie să fie exacte, autentice și mereu suportul de prezentare trebuie să variazeze de la un nivel de conducere la altul. Disponibilitatea aplicației informatice va fi imediată oricărui client sau potențial client care accesează url-ul după ce aceasta va fi inclusă în cadrul sistemului.
2.3Definirearapoartelor finale
Produsul final al unei baze de date care combină datele din talbele, formulare și interogări pentru a fi printate sau salvate într-un fișier din care poate fi citit este numit raport. Rapoartele pot fi tipărite, vizualizate pe ecran. Managerii de grad înalt care au nevoie de informație cât mai sintetizată se recomandă citirea rapoartelor. Rapoartele au adesea grafice lângla ele pentru ca interpretarea informației să fie mai ușoară. Rapoartele au doua etape: proiectarea logică de detaliu a ieșirilor și proiectarea fizică de detaliu a ieșirilor. Rapoartele de ieșire pot fi de foarte multe feluri: câți clienți are firma zilnic/săptămânal/lunar/anual, câți vizitatori are websiteul pe zi/săptămână/lună/an, cererile de ofertă cele mai cu succes, cele mai atractive oferte pe lună/an/sezon, etc.
Fig. 6 Raport
2.4Modelareadatelorși modelarea prelucrărilor
Datele rezultate din analiza sistemului realizează modelarea cerințelor aplicației. Un sistem trebuie reprezentat de structura generală și de implementarea unei aplicații de baze de date. Oferta afișează toate posibilitățile, selectezi destinația, vizualizezi oferta, efectuezi rezervarea.
Elementele esențiale ale modelelor de date folosite în proiectarea bazelor de date sunt entitățile și asocierile dintre acestea.
Fig.8Modelareadatelor
2.5Diagramaentitateasociere
“Diagrama Entitate-Asociere (Entity-Relationship Diagram) reprezintă modelul Entitate-Asociere prin mulțimile de entități și asocierile dintre acestea. Există numeroase variante de notații pentru redarea diagramei E-A. Una dintre cele mai folosite notații reprezintă un tip de entitate (precum și mulțimea de entități de acel tip) printr-un dreptunghi, iar atributele tipului de entitate prin elipse conectate printr-o linie continuă la acesta. Este posibil ca o asociere să prezinte ea însăși atribute, și aceste atribute se reprezintă prin elipse conectate la asocierea respectivă.”
2.6 Descrierea tabelelor
Baza de date mai este numită și bancă de date, aceasta reprezentând un mod de stocare a datelor și informațiilor pe un suport extern. Normalizarea reprezintă divizarea unui tabel relațional în mai multe tabele. Există trei forme de normalitate:
“Forma normală 1 (FN1): O tabelă este în FN1, dacă toate câmpurile sunt la nivel elemntar și nu există câmpuri repetitive.
Forma normală 2 (FN2): O tabelă este în FN2, dacă este în FN1 și toate atributele non-cheie depind funcțional complet de câmpul cheie, adică nu conține dependențe parțiale.
Forma normală 3 (FN3): O tabelă este în FN3, dacă este în FN2 și există dependențe tranzitive.”
Baza de date conține toate datele asociate înregistrărilor de pe website, astfel putând identifica următoarele entități:
Categorie
Meniu
Județ
Testimoniale
Admin
Client
Review
Rezervare
Țară
Ofertă
Imaginile ofertei
Oraș
Facilități
Ofertă facilități
Ofertă similară
Rezervare camere
Ofertă camere
Stațiune
Eveniment
Pentru acestea se cunosc:
Pentru categorie se cunosc:
Codul de identificare
Nume
Pentru meniu se cunosc:
Codul de indentificare
Titlul
Url-ul
Codul de indentificare al categoriei
Poză
Tip
Pentru județ se cunosc:
Codul de indetificare
Nume
Pentru testimoniale
Codul de indentificare
Codul de indentificare al clientului
Codul de indentificare al ofertei
Descriere
Pentru administrator se cunosc:
Codul de identificare
Admin
Parola
Pentru client se cunosc:
Codul de identificare
Nume
Prenume
Adresa
Codul de identificare al țării
Codul de identificare al județului
Numar telefon
Parolă
Abonat
Admin
Pentru review se cunosc:
Codul de identificare
Codul de identificare al clientului
Codul de identificare al ofertei
Descriere
Publicat
Data când a fost publicat
Pentru rezervare se cunosc:
Codul de identificare
Codul de identificare al clientului
Codul de identificare al ofertei
Număr de persoane
Data rezervare
Prima zi a sejurului
Ultima zi a sejurului
Pentru țară se cunosc:
Codul de identificare
Nume
Pentru ofertă se cunosc:
Codul de identificare
Nume
Codul de identificare al țării
Codul de identificare al orașului
Codul de identificare al stațiunii
Codul de identificare al evenimentului
Detalii
Generalități
Numar stele
Imp
Recomandată
Pentru imaginile ofertei se cunosc:
Codul de identificare
Codul de identificare al oferei
Imagine
Pentru oraș se cunosc:
Codul de identificare
Nume
Codul de identificare al țării
Pentru facilități se cunosc:
Codul de identificare
Nume
Pentru ofertă facilități se cunosc:
Codul de identificare
Codul de identificare al facilității
Codul de identificare al ofertei
Pentru ofertă similară se cunosc:
Codul de identificare
Codul de identificare al ofertei curente
Codul de identificare al ofertei asemănătoare
Pentru rezervare camere se cunosc:
Codul de identificare
Codul de identificare al rezervării
Codul de identificare al ofertei camerei
Numărul de persoane
Pentru ofertă camere se cunosc:
Codul de identificare
Codul de identificare al ofertei
Tip
Preț
Pentru stațiune se cunosc:
Codul de identificare
Nume
Codul de identificare al orașului
Pentru eveniment se cunosc:
Codul de identificare
Nume
Codul de identificare al stațiunii
Cele mai importante atribute ale entităților sunt:
Cheia primară
Cheia externă
Relația
Tabel nr. 6 Stabilirea cheilor primare și externe
Schema logică a bazei de date cuprinde numele entităților, chei primare, chei externe și alte date care pot fi: int, varchar, text, tinyint, date, decimal. Atributele următoare sunt identificate:
Categorie
ID int(11)
Nume varchar(255)
Meniu
ID int(11)
TITLU varchar(255)
URL varchar(255)
ID_CATEGORIE int(11)
POZĂ varchar(255)
TIP int(11)
Județ
ID int(11)
NUME varchar(100)
Testimoniale
ID int(11)
ID_CLIENT int(11)
ID_OFERTĂ int(11)
DESCRIERE text
Admin
ID int(11)
ADMIN varchar(255)
PAROLĂ varchar(255)
Client
ID int(11)
NUME varchar(100)
PRENUME varchar(100)
ADRESĂ text
ID_ȚARĂ int(11)
ID_JUDEȚ int(11)
NUMĂR_TELEFON varchar(20)
EMAIL varchar(255)
PAROLĂ varchar(255)
ABOANAT tinyint(4)
ADMIN int(11)
Review
ID int(11)
ID_CLIENT int(11)
ID_OFERTĂ int(11)
DESCRIERE text
PUBLICAT tinyint(4)
DATĂ PUB date
Rezervare
ID int(11)
ID_CLIENT int(11)
ID_OFERTĂ int(11)
NUMAR PERSOANE tinyint(4)
DATĂ REZERVARE date
PERIOADĂ_START date
PERIOADĂ_END date
Țară
ID int(11)
NUME varchar(100)
Ofertă
ID int(11)
NUME varchar(255)
ID_ȚARĂ int(11)
ID_ORAȘ int(11)
ID_STAȚIUNE int(11)
ID_EVENIMENT int(11)
DETALII text
GENERALITĂȚI text
NUMĂR STELE tinyint(4)
IMP tinyint(4)
RECOMANDATĂ tinyint(4)
Imaginile ofertei
ID int(11)
ID_OFERTĂ int(11)
IMAGINE text
Oraș
ID int(11)
NUME varchar(100)
ID_ȚARĂ int (11)
Facilități
ID int(11)
NUME varchar(100)
Ofertă facilități
ID int(11)
ID_FACILITATE int(11)
ID_OFERTĂ int(11)
Ofertă similară
ID int(11)
ID_OFERTĂ_CURENTĂ int(11)
ID_OFERTĂ_ASEMĂNĂTOARE int(11)
Rezervare camere
ID int(11)
ID_REZERVARE int(11)
ID_OFERTĂ CAMERĂ int(11)
NUMĂR_PERSOANE int(11)
Ofertă camere
ID int(11)
ID_OFERTĂ int(11)
TIP varchat(100)
PREȚ decimal 10.0
Stațiune
ID int(11)
NUME varchar(100)
ID_ORAȘ int(11)
Eveniment
ID int(11)
NUME varchar(200)
ID_STAȚIUNE int(11)
2.7Alegereatehnologieideprelucrare
Echipa angajată pentru a fi responsabilă pentru reconstruirea siteului, crearea unei interfețe mai atractive, programarea și gestionarea websiteului.
Pentru a fi creat, reinnoitului website
14monitoare
8tastaturi
8mouse-uri
oimprimantă
unsetdeboxe
8blocuridesistemcuurmătoareledotări:
ProcesorIntelQuadCore
8GBRAMDDR3carevorrulaparalel
PlacăvideoNvidiaGeforceGTX2851GB
Harddisc1TB
Dreptresursesoftwaresuntfolositesistemedeoperare,programedebază,programelepentruserver,implementareatehnologiilor, utilitarelorșiplatformelor:
SistemedeoperareMicrosoftWindows7
Tehnologii:
HTML 5
PHP
Apache
MySql
JavaScript
CSS 3
Ajax
Utilitare
Composer
Compass
Adobe Fireworks
Platforme
Laravel
Sass
Susy
Jquery
Windows7esteoversiuneaMicrosoftWindows,unsistemdeoperareWindows7includeoseriedecaracteristicinoi:primipașiînatingereacumâinile,vorbirea,șirecunoaștereascrisuluidemână,suportpentruharddisk-urivirtuale,performanțeîmbunătățitepeprocesoarelemulti-core,ale boot-ului,șiîmbunătățirialenucleului(kernel).Windows7adaugăsuportpentrusisteme,cefolosescmultipleplăcigraficedeladiferițifurnizori.
HTML 5este un limbaj standard de marcare folosit pentru crearea paginilor web. HTML 5este ultima versiune al standardului HTML. Este special proiectat pentru a livra conținut bogat fără necesitatea altor plugin-uri adiționale. Versiunea curentă livrează absolut orice, de la animație și grafică, muzică și filme, și poate fi folosită pentru construirea aplicațiilor web complicate, indiferent de utilizarea calculatorului, smartphone-ului sau smart tv. Poate încorpora script-uri scrise în limbaje ca JavaScript și CSS, folosit pentru a defini așezarea elementelor în pagina web.
PHPesteunlimbajdescriptingdeuzgeneral,opensource,utilizatpescarălargă,potrivitînspecialpentrudezvoltareaaplicațiilorwebșipoatefiintegratînHTML.Esteunuldincelemaiimportantelimbajedeprogramarewebopen-sourceșiserver-side,existândversiunidisponibilepentrumajoritateawebserverelorșipentrutoatesistemeledeoperare.CodulPHPesteinterpretatdeserverulWEBșigenereazăuncodHTMLcarevafivăzutdeutilizator.UnadintrecelemaiputerniceșisemnificativefacilitățialePHPestesusținereaunuilargdomeniudebazededate.Scriereauneipaginiwebceacceseazăobazădedateeste foartesimplă,utilizândunadinextensiiledelucrucubazededate,deexemplupentruMySQL,carevafifolositdreptbazădedatepentrusite-ulmall-ului.
ApacheesteunserverHTTPdetipopensourceșiestecelmaiutilizatserverpecareruleazăPHPșiMySQL.Apachesuportăomarevarietatedemodulecareîiextindfuncționalitatea,delaserversideprogrammingșipânălaschemedeautentificare.Opționalsepotfolosimodule,iarsite-ulmall-uluinufaceoexcepție.Încazulacestasefoloseșteunmod_rewritecareesteunmodulcefoloseșteunmecanismderescrierebazatpeexpresiiregulatepentruarestructuraocerereURLîntimpreal.Acestasuportăunnumărnelimitatderegulișiunnumărnelimitatdecondițiiatașatepentrufiecareregulă,pentruaasiguraunmecanismdemanipularealURL-uluiflexibilșiputernic.ManipulărileURL-uilorpotfibazatepediversetestealeunorvariabiledepeserver,variabiledemediu,anteteHTTPsauamprentetemporale.
MySQL este un sistem de gestiune a bazelor de date relațional fiind cel mai popular SGBD open-source la ora actuală. Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major cum are fi: C, C++, C#, Java, Perl, PHPetc.Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau o interfață grafică: MySQL Administrator, MySQL Query Browser și/sau aplicația gratuită, scrisă în PHP, phpMyAdmin. MySQL are de oferit numeroase caracteristici atractive: viteză, ușurință în utilizare fiind un sistem de baze de date cu performanțe ridicate, dar relativ simplu, a cărui configurare și administrare sunt mult mai simple decât în cazul sistemelor mai mari, este limbajul preferat al tuturor sistemelor moderne de baze de date. Se poate obține acces la MySQL în mod interactiv, folosind numeroase interfețe care permit introducerea de interogări și vizualizarea rezultatelor. Alte atuuri sunt reprezentate de conectivitate și securitate, adică poate fi folosit integral în rețele, iar bazele de date sunt accesibile de oriunde din internet, ceea ce permite partajarea datelor cu oricine, însă controlul accesului este rigid, astfel încât indivizii care nu au dreptul să citească datele nu vor avea posibilitate. MySQL nu este un proiect Open Source, deoarece este necesară o licență în anumite condiții,dar se bucură de popularitate în comunitatea Open Source, în esență, MySQL este gratuit doar dacă nu se dorește obținerea profitului în urma utilizării bazelor de date.
JavaScriptesteunlimbajdeprogramareorientatobiect,bazat pe conceptulprototipurilor, Estefolositmaialespentruintroducereaunorfuncționalitățiînpaginileweb,codulJavascriptdinacestepaginifiindrulatdecătrebrowser.Limbajulestebinecunoscutpentrufolosireasaînconstruireasiturilorweb,darșipentruaccesullaobiecteîncastrateînalteaplicații. PrincipiilecheiedinJavaScriptsuntluatedinlimbajeledeprogramareSelfși Scheme imperativ și funcțional.
CSS 3este un limbaj de descriere a stilurilor în cascadă utilizate pentru formatarea documentelor scrise în limbaj de marcare. CSS 3 conține aceleași specificații ca și vechiul CSS, dar au fost adăugate module noi ca: selectori, fundal și margini, valori imagini, efecte text, transformări 2D/3D, animații, așezarea în pagină a coloanelor multiple, interfață. CSS este baza specificațiilor paginilor web și aproape toate paginile web îl utilizează pentru a descrie stilul prezentării. Este conceput pentru a separa conținutul documentului de documentul prezentării, incluzând elemente ca font-uri, culori, așezare în pagină. Această separare poate îmbunătăți accesul la conținut, asigurând o flexibilitate și un control în specificațiile prezentării caracteristice, activează pagini multiple pentru a împărți formatare, pentru a reduce complexitatea și repetiția în conținutul structural.
Ajaxeste o tehnică de programare pentru crearea de aplicații web interactive. Intenția este să facă paginile web să devină mai rapide și deci mai acceptate, prin schimbul în fundal al unor cantități mici de date cu serverul, astfel încât să nu fie nevoie ca pagina să fie reîncărcată la fiecare acțiune a utilizatorului. Aceasta are ca scop creșterea interactivității, vitezei și ușurinței în utilizare a aplicațiilor web. Ajax nu este o tehnologie în sine. Termenul este folosit pentru definirea aplicațiilor web ce folosesc un ansamblu de tehnologii: HTML sau XHTML, CSS, Javascript, XMLHttpRequest, XML.
Composereste un manager de dependență la nivel de aplicație pentru limbajul de programare PHP, care oferă un format standard pentru gestionarea de dependențe a soft-ului PHP și librăriile necesare. Composer trece prin liniile de comandă și instalează dependențele de exemplu librăriile pentru aplicație. De asemenea oferă capabilități autoload pentru librării, care specifică informații autoload pentru a ușura utilizarea de cod de către terțe părți.
Compass este un utilitar open source de dezvoltare CSS, care încearcă să fixeze o mulțime de deficiențe de CSS. De asemenea acesta raționalizează programarea prin asigurarea unui număr de utilități și instrumente, care fac scrierea fișierelor CSS ușoară și rapidă, având următoarele caracteristici: suport pentru variabile, posibilitatea imbricării regulilor CSS, funcții–ajutor pentru imagini, fonturi, culori și mai multe, inclusiv calcule matematice, instrumente flexibile pentru a asigura compatibilitatea cross-browser și compatibilitatea cu versiuni mai vechi ale browserului, integrarea unui modul–schiță inclusiv mai multe stiluri implicite, pentru realizarea rapidă de prototipuri șielemente de stil utilizate în mod obișnuit. Compass oferă un mediu de creație robust pentru CSS, transformând codul scris de programator în reguli compatibile cu standardele CSS.
Adobe Fireworkseste un editor de bitmap și grafică vectorială, folosit la designul web prin crearea de modele frumoase pentru site-uri web și aplicații mobile fără cunoștințe de cod. Oferă imagini vectoriale și bitmap, machete, grafică 3D, și conținut interactiv pentru tablete și smartphone-uri.
Laravel estedefinit ca un limbaj de programare open source, asemănător PHP este o aplicație framework cu sintaxă expresivă și elegantă, care încearcă să ușureze programarea prin reducerea sarcinilor comune utilizate în cea mai mare parte de proiecte web, cum ar fi autentificarea, rutare, sesiuni, și caching.Laravel scoate la iveală un alt set de algoritmi, în vederea concentrării asupra arhitecturii unei aplicații, nu scrierea propriu-zisă a liniilor de cod. Laravel a introdus proceduri logice și intuitive, ce vizează denumirea dată fișierelor salvate, claselor sau bazelor de date apelate. Laravel promovează un principiu prin care o funcționalitate este scrisă pentru o singură dată și fără eventuale erori, la fel oferă un mediu tehnic prielnic împărtășirii facile a liniilor de cod între modulele unui program.
SASSeste o extensie a CSS care adaugă putere și eleganță limbajului de programare. Acesta permite folosirea de variabile, reguli imbricate, mixin-uri, includerea de librării externe, și toate cu o sintaxa complet compatibil cu CSS. Sass ajută la păstrareadescrierilor de stil bine organizate, și preluarea descrierilor și să fie difuzate mai repede, în majoritatea cazurilor cu ajutorul librăriei Compass. Cunoscut sub numele de SCSS (Sassy CSS) este utilizată ca o extensie a sintaxei de CSS3. Acest lucru înseamnă că fiecare pagină CSS3 este un SCSS valid cu același înțeles.Sass poate fi folosit prin trei metode și anume ca instrument de linie de comandă, ca un modul independent Ruby și ca un plugin pentru orice framework Rack activat.
Susyeste un plugin al Compass-ului, care oferă funcționalitate sporită pentru construirea de layout-uri, cu ajutorul unui design receptiv și ușor prin eliminarea necesității manuale de a calcula lățimea, în cazul când se dorește crearea unui site receptiv, cu o interfață receptivă și cu cea mai ușoară mentenanță, astfel încât gridurile sa fie fluide în interior și elastice la exterior. Codul poate extinde sau micșora grațios fereastra site-ului.
JQueryeste o platformă de dezvoltare JavaScript care oferă programatorilor oportunitatea de a ușura anumite procese ce pot implica managementul inter-browser al evenimentelor, traversarea arborelui DOM în HTML, animații de tip AJAX, și altele. De regulă, această platformă este utilizată îndeosebi pentru a rezolva anumite probleme ce țin de programarea web, astfel încât diferite sarcini dinamice care nu pot fi realizate prin intermediul unui limbaj de marcare – spre exemplu, HTML. Un avantaj cheie al acestei platforme este vizibilitatea sa în cadrul motoarelor de căutare, aceasta platforma implică utilizarea unor coduri sub forma de text, ceea ce o face foarte ușor de indexat, evidențiind cuvintele cheie care sunt esențiale.
2.8Estimareanecesaruluideresurse și calendarul de realizare
Tabelnr. 4Necesarulderesurse
Tabel 5 nr. Calendarul de realizare
CapitolIII
Proiectareadedetaliuasistemuluiinformatic
3.1Definireaobiectiveloraplicațieiinformatice
AplicațiainformaticărealizatăpentrucompaniaArcadeGroupesteunsitealmall-uluiOctagonceurmeazăafidatînexploatare.Site-uldeprezentarealmall-uluiesteunulcomplexșibineconstruitcedemonstreazăseriozitateașiprofesionalismulcompaniei,șiaredreptscopcăutareapubliculuițintă,caredoreștesăexploatezeavantajeleinternet-ului.Indiferentdetipuldecliențiaimall-ului,carevornavigasite-ul,acestatrebuiesăîntruneascăobiectivesimilarepecareprogramatoriisite-uluitrebuiesăleîndeplinească,șianumecăvizitatoriitrebuiesaaibăpartedeoexperiențădeosebităcândacceseazăsite-ul,șivorcanavigareasăfieunafacilă,săgăseascăușorceeacecaută,iarconținutulpeînțelesullor.
Aceastaaplicațieinformaticăaredreptobiectivcreareaunuimijlocmoderndepromovareșivânzareaserviciilorșiproduseloroferitedemall.Întrucâtsedoreșteatragereacliențilorîntr-unnumărcâtmaimare,sevaținecontdecerințelelor,nevoilorșipreferințe,deaceeasite-uloferămaimultdecâtinformațiidebază.
Site-ulfurnizeazădatecomplexe,cuprivirelamagazine,șioferăposibilitateafuncționăriiunuimodulîncadrulei,șianumeuncinema,cepermiterezervareaonlineabiletelorcuavantajulselectăriiloculuidoritînsală,avantajândmall-ulOctagonînfațacelorlalteaflatepepiață.
Unaltmodulpusladispozițiavizitatorilorsite-uluidemall,esteprezentareaonlineaproduselorexpusepesite,șianumeafaimoaselormagazinedehaine,încălțăminte,accesorii,sportetc.Acestmodulpermitepelângăvizualizarealorlapropriu,câtșimărireaproduselor,darșiafișareaprețurilorrăsfoindastfeluncatalogonline.
Deasemeneapesitesegăseșteșiunformulardecontactcepermitetrimitereadeemailuridirectpesite,înacestfelsesizândoriceproblemă,saunemulțumireaclientuluidecaresevaținecont,întrucâtsite-ulestedestinatdoarpentruclienți,șisatisfacerealoresteobiectivulprincipalalmall-ului.
3.2 Proiectarea logică și fizică a ieșirilor
Raportul de afișare a clienților înregistrați.
Fig. 12 Raportul de afișare a clienților înregistrați
Raport de afișare a filmelor.
Fig. 13 Raportul de afișare a filmelor
Raport de afișare a serviciilor
Fig. 14 Raportul de afișare a serviciilor
Raport de afișare a restaurantelor.
Fig. 15 Raport de afișare a restaurantelor
Raport de afișare a proiecțiilor.
Fig. 16 Raport de afișare a proiecțiilor
Raport rezervări de filme.
Fig. 17 Raport rezervări de filme
3.3 Proiectarea logică și fizică a intrărilor
Formular de adăugare client.
Fig. 18 Formular de adăugare client
Formular de adăugare restaurant.
Fig. 19 Formular de adăugare restaurant
Formular de selectare a locurilor în sală.
Fig. 20 Formular de selectare a locurilor în sală
Formular de rezervare.
Fig. 21 Formular de rezervare
Formular de adăugare a proiecției unui film.
Fig. 22 Formular de adăugare a proiecției unui film
Formular de adăugare a unui serviciu.
Fig. 23 Formular de adăugare a unui serviciu
3.3Proiectarea bazei de date
Baza de date reprezintă o modalitate de stocare a unor informații și date pe un suport extern cu posibilitatea extinderii ușoare și a regăsirii rapide a acestora. Ca și utilitate baza de date permite stocarea unei cantități mari de informații, regăsirea lor în baza criteriilor de căutare, precum și prelucrarea în volum mare a datelor.
Baza de date folosită pentru aplicația informatică utilizează MySQL, care este o bază de date tip relațională și open-source.
Baza de date relațională este o bază de date în care datele, sunt văzute ca și atribute ale entităților reale, sunt socate în tabele și sunt legate între ele prin relații. Acest mod de structurare a datelor, bazat pe legături între date, permite eliminarea redundanței, astfel încât stocarea și, în mod special modificarea unei informații se face într-un singur loc, iar funcțional vorbind această structură permite regăsirea, filtrarea, ordonarea și agregarea datelor.
Baza de date a aplicației web, este reprezentată de 22 tabele enumerate mai jos:
Pentru catalog online și restaurante6 tabele:
produse, branduri, categorii, discount, imagini, restaurante, program.
Pentru cinematograf se disting 11tabele:
client, bilete, prețuri bilete, săli, filme, actori, actori filme, genuri, genuri filme, proiecții, rezervări.
Pentru evenimente și pentru gestiunea utilizatorilor site-ului, pentru gestiunea activității lor și a abonaților, precum și a mesajelor se disting patru tabele necorelate între ele și anume:
evenimente, utilizatori, abonați, mesaje.
Baza de date conține date asociate înregistrărilor din aplicație: branduri, categorii, produse, discount, imagini, restaurante, program client, bilete, prețuri bilete, săli, filme, actori, actori_filme, postere, genuri, genuri_filme, proiecții, rezervări, evenimente, utilizatori.
Pentru aceste entități se cunosc:
Pentru branduri se cunosc:
codul de identificare
nume
Pentru produse se cunosc:
codul de identificare
codul de identificare al brandului
codul de identificare a categoriei
denumire
preț
detalii
Pentru categorii se cunosc:
codul de identificare
denumire
meniu
Pentru discount se cunosc:
codul de identificare
codul de identificare a produsului
data începerii
data terminării
valoarea
Pentru restaurante se cunosc:
codul de identificare
nume
număr de telefon
website
istoric
imagine principală
denumire imagine
imagine secundară
imagine hartă
codul de identificare a categoriei
Pentru programse cunosc:
codul de identificare
codul de identificare a restaurantului
ziua
ora
Pentru imaginise cunosc:
codul de identificare
url
codul de identificare a produsului
Pentru filmese cunosc:
codul de identificare
denumire
durată
descriere
restricționare de vârstă
an
Pentru proiecțiise cunosc:
codul de identificare
codul de identificare a filmului
codul de identificare a sălii
data
Pentru sălise cunosc:
codul de identificare
nume
locuri
rânduri
Pentru prețuri biletese cunosc:
codul de identificare
codul de identificare a proiecției
tip
preț
Pentru rezervărise cunosc:
codul de identificare
codul de identificare a proiecției
codul de identificare a clientului
Pentru clientse cunosc:
codul de identificare
nume
prenume
parola
număr de telefon
Pentru biletese cunosc:
codul de identificare
codul de identificare a rezervării
rând
loc
Pentru genurifilme se cunosc:
codul de identificare
codul de identificare a filmului
codul de identificare a genului
Pentru genurise cunosc:
codul de identificare
denumire
Pentru actorise cunosc:
codul de identificare
nume
Pentru actori filmese cunosc:
codul de identificare
codul de identificare a filmului
codul de identificare al actorului
Pentru evenimentese cunosc:
codul de identificare
denumire
text
imagine principală
Pentru utilizatorise cunosc:
codul de identificare
username
parola
data creării
activitatea contului
remember token
updated at
Pentru mesajese cunosc:
codul de identificare
nume
mesaj
data trimiterii
Pentru abonați se cunosc:
codul de identificare
data creării
activitate
Stabilirea atributelor cheie ale tabelelor
Relația (sau tabela) se definește ca o submulțime a produsului cartezian de n domenii. Ea se prezintă sub forma unei tabele bidimensionale, formată din rânduri numite tupluri și coloane numite domenii.
Cheia primarăreprezintă un atribut sau grup de atribute ale cărui valori permit identificarea unică a unui tuplu.
Cheia externă este un atribut sau grup de atribute care joacă rol de cheie primară într-o altă tabelă. O cheie externă trebuie să respecte cerințele de integritate referențială.
Tabel nr. 6 Stabilirea cheilor primare și externe
Proiectarea schemei logice a bazei de date
“Nivelul logiccuprinde viziunile specifice definite pentru manipularea (prelucrarea) datelor. Necesitățile de date ale aplicației sunt exprimate la acest nivel. O viziune externă a bazei de date reprezintă, într-o manieră cât mai aproape de realitate, un tip de utilizator al bazei de date.”
Schema logică a bazei de date cuprinde numele tabelelor, entități, chei primare și chei externe, precum și descrierea datelor care pot fi de tip: integer, tinyint, char, varchar, timestamp, text, decimal.
BRANDURI
ID INTEGER(11)
NUME VARCHAR(255)
EMAIL VARCHAR(255)
CATEGORII
ID INTEGER(11)
DENUMIRE VARCHAR(255)
MENIU VARCHAR(255)
PRODUSE
ID INTEGER(11)
ID_BRAND INTEGER(11)
ID_CATEGORIE INTEGER(11)
DENUMIRE VARCHAR(255)
PRET DECIMAL(10,2)
DETALII TEXT
DISCOUNT
ID INTEGER(11)
ID_PRODUS INTEGER(11)
DATA INCEPERII TIMESTAMP
DATA TERMINARII TIMESTAMP
VALOAREA INTEGER(2)
RESTAURANTE
ID INTEGER(11)
NUME VARCHAR(255)
NUMĂR DE TELEFON VARCHAR(255)
EMAIL VARCHAR(255)
WEBSITE VARCHAR(255)
ISTORIC TEXT
IMAGINE PRINCIPALA VARCHAR(255)
DENUMIRE IMAGINE VARCHAR(255)
IMAGINE SECUNDARA VARCHAR(255)
IMAGINE HARTA VARCHAR(255)
ID_CATEGORIE INTEGER(11)
PROGRAM
ID INTEGER(11)
ID_RESTAURANT INTEGER(11)
ZIUA VARCHAR(255)
ORA VARCHAR(255)
IMAGINI
ID INTEGER(11)
URL VARCHAR(255)
ID_PRODUS INTEGER(11)
FILME
ID INTEGER(11)
DENUMIRE VARCHAR(255)
DURATA INTEGER(3)
DESCRIERE TEXT
RESTRICTIONARE DE VARSTA INTEGER(2)
AN INTEGER(4)
PROIECTII
ID INTEGER(11)
ID_FILM INTEGER(11)
ID_SALA INTEGER(11)
DATA TIMESTAMP
SALI
ID INTEGER(11)
NUME VARCHAR(255)
LOCURI INTEGER(3)
RÂNDURI INTEGER(2)
PRETURI BILETE
ID INTEGER(11)
ID_PROIECȚIE INTEGER(11)
TIP VARCHAR(20)
PREȚ DECIMAL(10,2)
REZERVARI
ID INTEGER(11)
ID_PROIECTIE INTEGER(11)
ID_CLIENT INTEGER(11)
CLIENT
ID INTEGER(11)
NUME VARCHAR(255)
PRENUME VARCHAR(255)
EMAIL VARCHAR(255)
PAROLA VARCHAR(255)
NUMAR DE TELEFON VARCHAR(20)
BILETE
ID INTEGER(11)
ID_REZERVARE INTEGER(11)
RAND CHAR(1)
LOC INTEGER(2)
GENURI
ID INTEGER(11)
DENUMIRE VARCHAR(255)
GENURIFILME
ID INTEGER(11)
ID_FILM INTEGER(11)
ID_GEN INTEGER(11)
ACTORI
ID INTEGER(11)
NUME VARCHAR(255)
ACTORI FILME
ID INTEGER(11)
ID_FILM INTEGER(11)
ID_ACTOR INTEGER(11)
EVENIMENTE
ID INTEGER(11)
DENUMIRE VARCHAR(255)
TEXT TEXT
IMAGINE PRINCIPALA VARCHAR(255)
UTILIZATORI
ID INTEGER(11)
USERNAME VARCHAR(255)
PAROLA VARCHAR(255)
DATA CREARII TIMESTAMP
ACTIVITATEA CONTULUI CHAR(100)
REMEMBER TOKEN CHAR(100)
UPDATED AT TIMESTAMP
MESAJE
ID INTEGER(11)
NUME VARCHAR(255)
EMAIL VARCHAR(255)
MESAJ TEXT
DATA TRIMITERII TIMESTAMP
ABONATI
ID INTEGER(11)
EMAIL VARCHAR(255)
DATA CREARII TIMESTAMP
ACTIVITATE TINYINT(4)
3.3 Proiectarea interfeței aplicației
O interfață grafică(Graphical User Interface sau GUI) reprezintă un tip de interfață ce permite utilizatorului să interacționeze cu dispozitive electronice.Design-ul componentelor vizuale și comportamentul lor sunt o parte foarte importantă în programarea software ale aplicațiilor. Scopul este de a spori și de a ușura funcționalitatea utilizării aplicației prin implementarea unui design logic și fluid. Metodele utilizate pentru design asigură un limbaj vizual bine structurat care face față cererilor de operații.Utilizatorul manipulează cu informația prin intermediul efectelor vizuale, a căror interfață este selectată pentru a suporta acțiunile necesare atingerii obiectivelor utilizatorului. Pentru a prezenta toate informațiile și acțiunile disponibile, un GUI oferă pictograme și indicatori vizuali, în contrast cu interfețele bazate pe text, care oferă doar nume de comenzi (care trebuie tastate) sau navigația text.
O reprezentare grafică sub formă de schiță a primei pagini arată în felul următor:
Fig. 25 Cifra schema interfeței
Explicația elementelor din schema interfeței grafice este reprezentată după cum urmează:
Logo-ul amplasatîn partea de sus va conține emblema centrului comercial.
Meniul site-ului este format din 8 categorii
Pagina 1 (afișarea conținutului din cadrul paginii 1), adică pagina acasă
Pagina 2 (afișarea conținutului din cadrul paginii 2), adică pagina shopping
Pagina 3 (afișarea conținutului din cadrul paginii 3), adică pagina restaurante
Pagina 4 (afișarea conținutului din cadrul paginii 4), adică pagina distracții
Pagina 5 (afișarea conținutului din cadrul paginii 5),adică pagina cinema
Pagina 6 (afișarea conținutului din cadrul paginii 6), adică pagina serviciilor
Pagina 7 (afișarea conținutului din cadrul paginii 7), adică pagina evenimente
Pagina 8 (afișarea conținutului din cadrul paginii 8), adică pagina contacte
Body-ul site-ului este format dintr-o secvență ce va fi reprezentată de un carousel ce va afișa cele mai noi evenimente și noutăți.
Footer-ul adică scena de jos a site-ului este reprezentată de o secvență a cărei conținut cuprinde:
harta amplasării mall-ului în oraș
caseta text pentru introducerea emailului pentru abonarea la newsletter
emblemele platformelor sociale pentru a putea integrarea pe rețelele sociale
afișarea programului de lucru a centrului comercial
După mai multe implementări ale stilurilor, s-a ajuns la următoarea variantă a primii pagini:
Fig. 26 Varianta prelucrată a interfeței grafice a primii pagini
3.4 Schema de flux informațional a noului sistem
Fig. 27 Schema de flux informațional a noului sistem
CapitolIV
Prezentarea,implementareașiexploatareaaplicației
4.1Obiectiveleaplicațieiinformatice
Aceastăaplicațieinformaticăaredreptobiectivpromovareamall-uluișiaproduselorsale.Site-ulconțineoseriedeinformațiiaproduseloroferitepepiață,șianumeprezentarealorșidiverseofertealeacestora.Vizitatoriisite-ului,darșipotențialiicliențiaimall-uluiauacceslainformațiiledespreprogramulmagazinelor,localizarealorînmall,rezervareaonlineabiletelordecinema,precumșicompletareadeformulareîncazulreclamațiilor,abonarealanewsletterpentruprimireacelormainoișiutileofertesauinformațiilegatedemall,șiintegrareamall-uluipeplatformelesociale.
Site-ulsepoateaccesalaadresahtttp://www.octagon.mdșiseprezintăprintr-opaginăprincipalăcuopțiunipentrutoatefuncțiileaplicațieișianume:
Acasă
Shopping
Restaurante
Distracții
Cinema
Servicii
Evenimente
Contact
Toateacesteasuntamplasatepeobarădemeniuri,iarlaaccesareaoricăreiopțiunisevordeschidepagininoisauunaltsetdeopțiunisprealegere.Interfațasite-uluiestefoarteprietenoasășicoloratăpentruabucuraochiivizitatorilor.Site-uleîmpărțitînmaimultesecțiunicarediferădelaopaginălaalta,păstrându-seconstantdoarheader-ulsite-ului-logo,șibarademeniuri.
4.2Prezentareasite-uluiweb
Site-ulconțineoptpaginidiferitecarepotfiaccesatedinbarademeniuri,însălauneledinelesecereaccesareaaltoropțiuniînvedereaobțineriiuneiinformațiidetaliatedespreunanumitprodus.
Maijosesteprezentatăprimapaginăasite-ului–acasă,careconțineinformațiiledebazăalemall-ului.Înprimasecțiuneabody-ulsite-uluiesteprezentareunuicarousel,careesteuninstrumentdedesignwebșiconstăînprezentareaanumitorimaginisauinformațiiprinciclareașifărăafolosialtspațiu.Adouasecțiuneesteprezentatădedateledecontactalemall-uluiundesegăseștehartacapabilădemărireșimicșorare,abonarealanewslettercepermiteprimireacelormainoiinformațiipeadresademailautilizatorului,programulmagazinelor,restaurantelor,mall-ului,cinemaadresadecontactșiimplementareamall-uluiperețelelesocialecafacebookșitwitter.
Fig.28 Paginaacasă
Ce-adeadouapaginăasite-uluiestedincategoriashopping,careînfuncțiedefiltrareadorităseobțineinformațiaceamaipotrivită.
Fig.29 Paginashopping
Totînaceastăcategoriesegăseșteopțiuneademărireșimicșorareaprodusuluidorit,adicăvizualizarealuiîndeaproape.
Fig. 30 Opțiuneshoppingdetaliat
Înpaginatrei,asite-uluisuntprezentaterestaurantelepropusevizitatorilormall-uluișicategoriileacestora.Latrecereacumouse-ulpesterestaurantuldoritvaapăreacasetacuprogramulfuncționăriilor.
Fig.31 Paginarestaurante
Laclick-ulunuiadintrerestaurantesevadeschidefereastracumaimultedetalii.
Fig.32 Paginadetaliirestaurant
Înpaginacincisuntafișatedistracțiilepecarelepuneladispozițiemall-ulpentrucliențiisăi.
Fig.33 Paginadistracții
Încategoriacinemasegăseștemodululimplementat,adicărezervareaonlineabiletelor,careîncepecuselectareafilmuluidorit.
Fig.34 Paginadeselectareafilmului
Încontinuare,sevadeschideoaltăpaginăpentruvizualizareadetaliilorfilmuluișipentruselectareaoreidorite,anumăruluidebileteșitipullor.
Fig.35 Paginadevizualizaredetaliifilmșideselectareaopțiunilor
Pentruselectarealoculuidorit,sevaafișaonouapagină,cereprezintăplanulsăliidecinema.
Fig. 36Paginadeselectarealoculuidinsaladecinema
Mall-ulaaduscusineșioseriedeserviciiderenume,caresuntlistatemaijos.Latrecereacumouse-ulpesteserviciuldoritvaapăreacasetacuprogramulfuncționăriilor.
Fig.37 Paginaservicii
Laclick-ulunuiadintreserviciisevadeschidefereastracumaimultedetalii.
Fig.38 Paginadetaliiservicii
Lapaginaevenimentesegăsesccelemainoiofertedarșinoutățipropusevizitatorilor,caresuntprezentatesubformadeslideshow.
Fig.39 Paginaevenimente
Înpaginacontactsegăsesctoatedatelenecesarepentruaputeafurnizacliențilordetaliiinformativecuprivirelalocație,programdarșinewsletter-ul.
Fig.40 Paginacontact
4.3Cerințeleplatformeihardwareșisoftwarealesite-ului
Site-ulmall-uluiesteproiectatșiorientatpentruacoperireaunuinumărcâtmaimaredeclienți-vizitatori.Pelângăfaptulcaaplicațiaestedestinatăpentrupromovareamall-ului,acestaesteimagineașisacareesteîntr-ostrânsălegăturăcucliențiicompanieiArcadeGroup,adicăagențiieconomicistrăinicareaduccueireputațiaimpunătoaredepestehotarelețării.
Deaceeasite-ultrebuiesafieunuldenivelînaltșisărespecteultimeletendințeșitehnologiiimplementate.Astfelpentruprogramareasite-uluis-aufolositultimeletehnologiidedesignpentruacreaunaspectprofesionistșifacilpetoatedispozitiveleutilizate.
Cât despre cerințele platformei hardware, fiind doar un simplu site, acesta nu se caracterizează prin necesități sporite sau speciale pentru accesarea lui sau pentru utilizarea aplicației din cadrul site-ului. Rămâneafiunulușordeaccesatdeoriunde,șiastapentrucălamomentmajoritateautilizatorilordeinternet,calculatoareșiaaltordispozitivemobilesuntechipatecuhardwareșisoftwarepemăsură,astfel,pentruaccesareasite-ulestenevoiedeunbrowser,caexempluGoogleChrome,MozillaFirefox,Opera,InternetExplorer,Safarietc.,șiundispozitivconectatlainternet.
Utilitateasite-ulestegarantatăindiferentdebrowserfolosit,însăefecteleutilizateînprogramareasite-ulwebpotușorsăderivedelaunbrowserlaaltul,deoarececelmaivechibrowser–InternetExplorer,nusuportăîntotalitateanumitetehnologiidedesign,deaceeaserecomandăîncazulutilizăriiInternetExplorer,caacestasănufiedeoversiunemaivechedecâtInternetExplorer10.
Software-ulutilizatdedispozitivnuarenicioinfluențăasuprafuncționării,vizualizării,utilizăriisite-ului,deaceeaaplicațiawebpoatefiaccesatăcuușurințădepeoriceplatformăsoftware,fieeaWindows,MacOS,Linux,iOSsauAndroid.
Totuși dacă se dorește utilizarea aplicației de rezervare a biletelor de cinema se recomandă folosirea unui calculator, acesta fiind mult mai sigur în procesul de transfer a datelor, având o legătură mai puternică cu sursa de internet, oferind o precizie și calitate mai înaltă decât dispozitivele mobile.
Capitol V
Eficiența și utilitatea aplicației informatice
5.1 Condiții privind implementarea aplicației
Odată ce mall-ul va fi dat în exploatare, site-ul se va lansa și el, și se prognozează un trafic mare de date, ceea ce va fi bine pe de o parte în campania de promovare, dar se va ține cont neapărat și de mentenanța non-stop a acestuia. Pentru asigurarea unei bune funcționalități a site-ului și a traficului de date se va ține cont de asigurarea cu resurse necesare a serverului.
Se precizează că traficul de date este unul de tip client-server. Acest model client-server este o structură sau arhitectură aplicație distribuită, care partajează procesarea între furnizorii de servicii numiți servere și elementele care solicită servicii, numiți clienți.
Clienții și serverele comunică printr-o rețea de calculatoare, de obicei prin Internet, având suporturi hardware diferite, dar pot rula și pe același sistem fizic. Un server (fizic) rulează unul sau mai multe programe server, care partajează resursele existente cu clienții. Clientul nu partajează niciuna dintre resursele proprii, ci apelează la resursele serverului prin funcțiile server. Clienții inițiază comunicația cu serverele și așteaptă mesajele acestora, Pentru menținerea legăturii între cei doi, indiferent de pauzele care intervin, se folosește conceptul de sesiune, care de obicei este limitată în timp.
Fig. 41 Model client-server
5.2 Exploatarea curentă a aplicației
Pentru accesarea site-ului în vederea vizualizării produselor, sau rezervării filmelor, utilizatorii trebuie să cunoască url-ul la care acesta poate fi accesat și anume pe htttp://www.octagon.md. Pentru vizualizarea catalogului online al magazinelor, dar și pentru cunoașterea programului de muncă ale serviciilor și restaurantelor din mall, vizitatorii vor putea accesa aceste pagini cu ușurință neavând nevoie de înregistrare sau alte formalități.
Cât despre dorința de a face rezervări de bilete la cinema, după selectarea tuturor parametrilor, utilizatorii sunt obligați sa-și introducă datele personale în formularul propus, pentru a putea primi un cod de confirmare așa numitul bilet electronic, iar odată cu acesta la casele de la cinema din mall, după achitare se vor preschimba în bilete propriu-zise.Întrucât se dorește menținerea clienților în jurul mall-ului, vizitatorii site-ului sunt invitați să-și introducă adresa de email în casetă de pe footer-ul site-ului, pentru a fi la curent cu cele mai de top noutăți, evenimente organizate, reduceri etc., iar cu scopul de a satisface cei mai pretențioși clienți sau pe cei nemulțumiți, la ultima secvență din modulul site-ului vizitatorii pot trimite mesaje la adresa mall-ului, în vederea îmbunătățirii calității serviciilor oferite. Utilizatorii pot deveni cu ușurință abonați ai mall-ului, acordând prioritar cele mai în vogă evenimente și noutăți sau pot urmări toate acestea odată cu accesarea site-ului mall-ului de pe rețelele sociale ca facebook și twitter.
5.3 Considerații privind eficiența aplicației informatice
Eficiența aplicației informatice constă în faptul că accesul la informații privind activitatea centrului comercial, produsele și serviciile oferite sunt facile și conferă utilizarea acestora într-un timp cât mai scurt de către mai mulți clienți simultan. Eficientizarea s-a produs datorită simplificării procesului de realizare a cumpărăturilor și a realizării aplicației din cadrul site-ului pentru rezervarea de bilete de cinema online, prin procese dinamice de introducere și validare a datelor. Necesitatealucrării este dată de nevoia de a minimiza timpul necesar realizării cumpărăturilor, cunoașterii produselor, a orarului de lucru din domeniile interesate, facilitând accesul la date.Aplicația informatică urmărește aducerea în premieră pe piața din Republica Moldova, a unei aplicații ce permite rezervarea de bilete de cinema doar cu un dispozitiv electronic conectat la internet și promovarea utilizării a aplicaților web.
Anexe
Anexa 1: Secvențe din codul sursă
Crearea și structura bazei de date
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
–
– Database: `mirela`
–
CREATE DATABASE IF NOT EXISTS `mirela` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `mirela`;
– –––––––––––––––––––
–
– Table structure for table `actors`
–
CREATE TABLE IF NOT EXISTS `actors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
– –––––––––––––––––––
–
– Table structure for table `brands`
–
CREATE TABLE IF NOT EXISTS `brands` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
– –––––––––––––––––––
– Table structure for table `categories`
–
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`menu` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;
– –––––––––––––––––––
–
– Table structure for table `clients`
–
CREATE TABLE IF NOT EXISTS `clients` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(255) DEFAULT NULL,
`last_name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`phone_number` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
– –––––––––––––––––––
–
– Table structure for table `discounts`
–
CREATE TABLE IF NOT EXISTS `discounts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_product` int(11) DEFAULT NULL,
`Begin_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`End_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`value` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ID_product` (`id_product`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
– –––––––––––––––––––
–
– Table structure for table `events`
–
CREATE TABLE IF NOT EXISTS `events` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`story` text NOT NULL,
`cover_img` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
– –––––––––––––––––––
–
– Table structure for table `genres`
–
CREATE TABLE IF NOT EXISTS `genres` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
– –––––––––––––––––––
–
– Table structure for table `images`
–
CREATE TABLE IF NOT EXISTS `images` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_product` int(11) NOT NULL,
`url` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_product` (`id_product`),
KEY `id_product_2` (`id_product`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;
– –––––––––––––––––––
–
– Table structure for table `messages`
–
CREATE TABLE IF NOT EXISTS `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`message` text NOT NULL,
`sent` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
– –––––––––––––––––––
–
– Table structure for table `movies`
–
CREATE TABLE IF NOT EXISTS `movies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`poster` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`duration` int(3) DEFAULT NULL,
`description` text,
`age_restriction` int(2) DEFAULT NULL,
`country` varchar(255) NOT NULL,
`year` int(4) DEFAULT NULL,
`trailer` varchar(255) DEFAULT NULL,
`language` varchar(255) NOT NULL,
`premiere` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
– –––––––––––––––––––
–
– Table structure for table `movies_actors`
–
CREATE TABLE IF NOT EXISTS `movies_actors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_movie` int(11) DEFAULT NULL,
`id_actor` int(11) DEFAULT NULL,
`role` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `ID_movie` (`id_movie`),
KEY `ID_actor` (`id_actor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;
– –––––––––––––––––––
–
– Table structure for table `movies_genres`
–
CREATE TABLE IF NOT EXISTS `movies_genres` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_movie` int(11) DEFAULT NULL,
`id_genre` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ID_Movie` (`id_movie`),
KEY `ID_Genre` (`id_genre`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
– –––––––––––––––––––
–
– Table structure for table `products`
–
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_brand` int(11) DEFAULT NULL,
`id_category` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
`details` text,
PRIMARY KEY (`id`),
KEY `ID_Brand` (`id_brand`),
KEY `ID_category` (`id_category`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;
– –––––––––––––––––––
–
– Table structure for table `projections`
–
CREATE TABLE IF NOT EXISTS `projections` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_movie` int(11) DEFAULT NULL,
`id_theatre` int(11) DEFAULT NULL,
`datestamp` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ID_movie` (`id_movie`),
KEY `ID_Theatre` (`id_theatre`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
– –––––––––––––––––––
–
– Table structure for table `reservations`
–
CREATE TABLE IF NOT EXISTS `reservations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_projection` int(11) DEFAULT NULL,
`id_client` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ID_projection` (`id_projection`),
KEY `ID_client` (`id_client`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
– –––––––––––––––––––
–
– Table structure for table `schedules`
–
CREATE TABLE IF NOT EXISTS `schedules` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_vendor` int(11) NOT NULL,
`day` varchar(255) NOT NULL,
`hours` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_venue` (`id_vendor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ;
– –––––––––––––––––––
–
– Table structure for table `subscribers`
–
CREATE TABLE IF NOT EXISTS `subscribers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`active` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
– –––––––––––––––––––
–
– Table structure for table `theatres`
–
CREATE TABLE IF NOT EXISTS `theatres` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`seats` int(3) DEFAULT NULL,
`rows` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
– –––––––––––––––––––
–
– Table structure for table `ticket_prices`–
CREATE TABLE IF NOT EXISTS `ticket_prices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_projection` int(11) DEFAULT NULL,
`type` varchar(20) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ID_Projection` (`id_projection`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
– –––––––––––––––––––
–
– Table structure for table `tickets`
–
CREATE TABLE IF NOT EXISTS `tickets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_reservation` int(11) DEFAULT NULL,
`row` int(2) DEFAULT NULL,
`seat` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ID_Reservation` (`id_reservation`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
– –––––––––––––––––––
–
– Table structure for table `users`
–
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`active` tinyint(1) DEFAULT NULL,
`remember_token` char(100) DEFAULT NULL,
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
– –––––––––––––––––––
–
– Table structure for table `vendors`
–
CREATE TABLE IF NOT EXISTS `vendors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`phone` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`web` varchar(255) DEFAULT NULL,
`story` text NOT NULL,
`cover_img` varchar(255) DEFAULT NULL,
`title_img` varchar(255) DEFAULT NULL,
`thumb_img` varchar(255) DEFAULT NULL,
`map_img` varchar(255) DEFAULT NULL,
`id_category` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_category` (`id_category`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;
–
– Constraints for dumped tables
–
–
– Constraints for table `discounts`
–
ALTER TABLE `discounts`
ADD CONSTRAINT `discounts_ibfk_1` FOREIGN KEY (`ID_product`) REFERENCES `products` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `movies_actors`
–
ALTER TABLE `movies_actors`
ADD CONSTRAINT `movies_actors_ibfk_1` FOREIGN KEY (`ID_movie`) REFERENCES `movies` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `movies_actors_ibfk_2` FOREIGN KEY (`ID_actor`) REFERENCES `actors` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `movies_genres`
–
ALTER TABLE `movies_genres`
ADD CONSTRAINT `movies_genres_ibfk_1` FOREIGN KEY (`ID_Movie`) REFERENCES `movies` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `movies_genres_ibfk_2` FOREIGN KEY (`ID_Genre`) REFERENCES `genres` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `products`
–
ALTER TABLE `products`
ADD CONSTRAINT `products_ibfk_1` FOREIGN KEY (`ID_Brand`) REFERENCES `brands` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `products_ibfk_2` FOREIGN KEY (`ID_category`) REFERENCES `categories` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `projections`
–
ALTER TABLE `projections`
ADD CONSTRAINT `projections_ibfk_1` FOREIGN KEY (`ID_movie`) REFERENCES `movies` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `projections_ibfk_2` FOREIGN KEY (`ID_Theatre`) REFERENCES `theatres` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `reservations`
–
ALTER TABLE `reservations`
ADD CONSTRAINT `reservations_ibfk_1` FOREIGN KEY (`ID_projection`) REFERENCES `projections` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `reservations_ibfk_2` FOREIGN KEY (`ID_client`) REFERENCES `clients` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `schedules`
–
ALTER TABLE `schedules`
ADD CONSTRAINT `schedules_ibfk_1` FOREIGN KEY (`id_vendor`) REFERENCES `vendors` (`id`);
–
– Constraints for table `ticket_prices`
–
ALTER TABLE `ticket_prices`
ADD CONSTRAINT `ticket_prices_ibfk_1` FOREIGN KEY (`ID_Projection`) REFERENCES `projections` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `tickets`
–
ALTER TABLE `tickets`
ADD CONSTRAINT `tickets_ibfk_1` FOREIGN KEY (`ID_Reservation`) REFERENCES `reservations` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE;
–
– Constraints for table `vendors`
–
ALTER TABLE `vendors`
ADD CONSTRAINT `vendors_ibfk_1` FOREIGN KEY (`id_category`) REFERENCES `categories` (`ID`);
Crearea și structura interfeței grafice
$(function(){
$("#events, .carousel-viewport").slippry({
elements: 'article',
captions: false,
transition: 'horizontal',
speed: 1200,
pause: 8000,
pager:false
});
var slippry = $("#movies").slippry({
elements: 'article',
captions: false,
transition: 'horizontal',
speed: 1200,
pause: 8000,
pager:false,
controls: true,
auto:false,
hideOnEnd: false,
continuous: false,
loop: false
});
var $subscribe = $('#subscribe');
var $error = $('.social .error');
$('#newsletter').on('click', function(e){
e.preventDefault();
var url = $(this).data('url');
var email = $subscribe.val();
$.ajax({
url: url,
data: {email: email},
type: 'POST',
success: function(data){
if(data.message=='error'){
$error.text(data.error.email);
$error.fadeIn();
}
else{
$error.hide();
alert('Successfully subscribed!');
}
}
});
})
var $messageErrors = $('.message-errors');
$('#message-form').on('submit', function(e){
e.preventDefault();
var url = $(this).prop('action');
var data = $(this).serialize();
$.ajax({
url: url,
data: data,
type: 'POST',
success: function(data){
if(data.message=='ok'){
$messageErrors.hide();
$('#message-form').get(0).reset();
alert('Successfully sent message!');
}
else if(data.message=='error'){
var d = data['errors'];
$messageErrors.empty();
for (f in d){
for(var i=0; i<d[f].length; i++)
$messageErrors.append('<li>'+d[f][i]+'</li>');
}
$messageErrors.fadeIn();
}
}
});
})
$modal = $(".modal");
$(".modal .close a").on("click",function(e){
e.preventDefault();
var modal = $(this).parent().parent();
modal.hide("slow", function(){
modal.css("opacity", 0);
modal.find(".content").html("<p>NO INFO AVAILABLE…</p>");
modal.css("height", "auto");
});
});
$(".product-tile .trigger, .service .trigger").on("click",function(e){
e.preventDefault();
if($(this).hasClass("dining")){
$popup.finish().hide();
$modal.find(".content").html($(this).siblings(".details").find(".extended").html());
}
else if($(this).hasClass("catalog")){
if($(this).siblings(".details").html()){
$modal.css("height", "75%");
$modal.find(".content").html($(this).siblings(".details").html());
}
}
else if($(this).hasClass("service")){
if($(this).parent().siblings(".details").html()){
$modal.find(".content").html($(this).parent().siblings(".details").find(".extended").html());
}
}
$modal.show(10, function(){
var top = (window.innerHeight-$modal.height())/2;
if(top<0)
top = 10;
$modal.css("top",top+'px');
$modal.animate({
opacity: 1
});
});
});
$(document).on("click", ".changer", function(e){
e.preventDefault();
var $show = $(this).closest(".alternatives").siblings(".showcase");
var $curr = $(this).find("img");
var aux = $show.attr("src");
$show.attr("src", $curr.attr("src"));
$curr.attr("src", aux);
});
var $popup = $('.popup');
$(".dining .trigger, .service .trigger").on('mouseover', function(e){
$(this).removeClass("off");
$(this).addClass("on");
$popup.finish();
if($(this).hasClass("dining")){
$(this).find(".text").removeClass('on');
$(this).find(".text").addClass('off');
$popup.html($(this).siblings(".details").find(".short").html());
}
if($(this).hasClass("service")){
$popup.html($(this).parent().siblings(".details").find(".short").html());
}
var top = $(this).offset().top – 15 + $(this).height();
var left = $(this).offset().left – ($popup.width() – $(this).width())/2;
$popup.css({
top: top,
left: left
}).show('fast');
}).on('mouseout', function(e){
$(this).addClass("off");
$(this).removeClass("on");
if($(this).hasClass("dining")){
$(this).find(".text").removeClass('off');
$(this).find(".text").addClass('on');
}
$popup.finish().hide('fast', function(){
$popup.html("<p>NO INFO AVAILABLE!</p>")
});
});
var $mDet = $(".movie-details");
$(document).on("click", ".activator", function(e){
e.preventDefault();
var $theatreSchedule = $('table[data-id="movie-'+$(this).data('id')+'"]');
$theatreSchedule.empty();
var $that = $(this);
$.ajax({
url: 'http://dev.mirela/projections',
data: {id: $(this).data('id')},
type: 'POST',
success: function(data){
$(data).each(function(i,e){
var $tr = $('<tr><th><span>'+e.day+'</span> – '+e.date+'</th></tr>');
var t = e.theatre.split(',');
$(t).each(function(il,el){
var id = el.substr(el.lastIndexOf('-')+1);
el = el.substr(0, el.lastIndexOf('-'));
$tr.append('<td><a href="#" class="reserver" data-id="'+id+'">'+el+'</a></td>')
});
$theatreSchedule.append($tr);
$('.movie-details table').html($theatreSchedule.html());
});
}
});
$that.parent().siblings(".selected").toggleClass("selected");
$that.parent().toggleClass("selected");
if(!$that.parent().hasClass("selected")){
$mDet.html("<h1>Please go back and select a movie!</h1>");
var $selected = $(".line .selected");
$selected.toggleClass("selected").toggleClass("free");
$tickets.text("0");
}
else{
var $det = $that.siblings(".details");
if($det.length>0){
$mDet.html($det.html());
}
else
$mDet.html("<h1>Sorry, no details for this movie…</h1>");
var $selected = $(".line .selected");
$selected.toggleClass("selected").toggleClass("free");
$tickets.text("0");
}
});
var noTickets = 0;
var $tickets = $(".tickets");
$theatre = $(".theatre");
$tickets.text(noTickets);
$selectedTheatre = $(".reserver.selected");
$theatre.text($selectedTheatre.parent().siblings("th").text()+" – "+$selectedTheatre.text());
$(document).on("change", ".movie-details .full, .movie-details .discount", function(e){
var $full = $(".movie-details .full");
var $discount = $(".movie-details .discount");
noTickets = parseInt($full.val())+parseInt($discount.val());
var $selected = $(".line .selected");
if(noTickets >= $selected.length)
noTickets -= $selected.length;
else
$selected.toggleClass("selected").toggleClass("free");
$tickets.text(noTickets);
});
$(document).on("click", ".line .free, .line .selected", function(e){
if($(this).hasClass("free")){
if(noTickets>0){
noTickets–;
$(this).toggleClass("free");
$(this).toggleClass("selected");
}
}
else{
noTickets++;
$(this).toggleClass("selected");
$(this).toggleClass("free");
}
$tickets.text(noTickets);
});
var $selectSeats = $('.select-seats');
$(document).on("click", ".reserver", function(e){
e.preventDefault();
$(".reserver.selected").toggleClass("selected");
$(this).toggleClass("selected");
var $selected = $(".line .selected");
$selected.toggleClass("selected").toggleClass("free");
var $full = $(".movie-details .full");
var $discount = $(".movie-details .discount");
noTickets = parseInt($full.val())+parseInt($discount.val());
$tickets.text(noTickets);
$selectedTheatre = $(".reserver.selected");
$theatre.text($selectedTheatre.parent().siblings("th").text()+" – "+$selectedTheatre.text());
var rsID = $(this).data('id');
$.ajax({
url: 'http://dev.mirela/freeseats',
data: {id: $(this).data('id')},
type: 'POST',
success: function(data){
$selectSeats.empty();
var seats = data.nrs['seats'];
var rows = data.nrs['rows'];
var $line=$('<div class="line"></div>'); //first line of numbers
for (var i = 1; i <= seats; i++) {
$line.append('<div class="no">'+i+'</div>');
};
$selectSeats.append($line);
for(var r in data['seats']){
$line=$('<div class="line"></div>'); //line for one row
$line.append('<div class="row">'+String.fromCharCode((parseInt(r)+64))+'</div>');
for(var s in data['seats'][r]){
$line.append('<div data-res="'+rsID+'" data-rs="'+r+'-'+s+'" class="seat '+(data['seats'][r][s]=='free'?'free':'reserved')+'"></div>');
}
$line.append('<div class="row">'+String.fromCharCode((parseInt(r)+64))+'</div>');
$selectSeats.append($line);
}
$line=$('<div class="line"></div>'); //last line of numbers
for (var i = 1; i <= seats; i++) {
$line.append('<div class="no">'+i+'</div>');
};
$selectSeats.append($line);
}
});
});
var $resErr = $('.reserve-form .errors');
$('#reserve-form').on('submit', function(e){
e.preventDefault();
$resErr.empty();
var $seats = $('.select-seats .selected');
if($seats.length==0)
alert('Go back and select some seats…');
else {
var dataF = new FormData($(this).get(0));
var sendSeats = [];
var sendResId;
$seats.each(function(i,e){
sendSeats.push($(e).data('rs'));
sendResId = $(e).data('res');
});
dataF.append('seats',sendSeats);
dataF.append('projection',sendResId);
$.ajax({
url: $(this).attr('action'),
data: dataF,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
if(typeof data == 'object'){
if(data['message']=='errors'){
var d = data['errors'];
for (f in d){
for(var i=0; i<d[f].length; i++)
$resErr.append('<li>'+d[f][i]+'</li>');
}
}
else{
alert('Succesfully reserved tickets!');
$('.reserver.selected').trigger('click');
slippry.goToSlide(1);
}
}
}
});
}
});
});
function makeMap(canvas, oras){
var latlng = new google.maps.LatLng(oras['lat'],oras['long']);
oras.center = latlng;
var settings = {
zoom: 15,
center: latlng,
mapTypeControl: true,
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
navigationControl: true,
navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
oras.map = new google.maps.Map(canvas, settings);
var companyMarker = new google.maps.Marker({
position: latlng,
map: oras.map,
title:oras.nume
});
oras.created = true;
}
google.maps.event.addDomListener(window, "load", function(){
var oras = {
'lat':47.0037177,
'long':28.842727,
'created': false,
'nume': 'Chisinau'
}
if(!$(".main").hasClass("admin")){
if(!$(".main").hasClass("contact"))
makeMap($("section.map").get(0), oras);
else
makeMap($(".contact div.map-container").get(0), oras);
}
});
Funcționalitatea de rutare a cererilor (routes)
Route::get('/catalog/{filter?}/{id?}', function($filter = null, $id = null){
if($filter == 'category'){
if($id != null){
$products = DB::select('
select
p.id, p.name, p.price, p.details, c.name category, b.name brand,
(select group_concat(url separator \',\') images from images i inner join products pp on i.id_product=pp.id where pp.id=p.id) images
from
products p
inner join categories c
on c.id=p.id_category
inner join brands b
on b.id=p.id_brand
where c.id='.$id.'
');
}
else
Reddirect::to('catalog');
}
else if($filter == 'brand'){
if($id != null){
$products = DB::select('
select
p.id, p.name, p.price, p.details, c.name category, b.name brand,
(select group_concat(url separator \',\') images from images i inner join products pp on i.id_product=pp.id where pp.id=p.id) images
from
products p
inner join categories c
on c.id=p.id_category
inner join brands b
on b.id=p.id_brand
where b.id='.$id.'
');
}
else
Reddirect::to('catalog');
}
else if($filter=='men' || $filter=='women'){
$products = DB::select('
select
p.id, p.name, p.price, p.details, c.name category, b.name brand,
(select group_concat(url separator \',\') images from images i inner join products pp on i.id_product=pp.id where pp.id=p.id) images
from
products p
inner join categories c
on c.id=p.id_category
inner join brands b
on b.id=p.id_brand
where sex=\''.($filter=='men'?'m':'f').'\'
');
}
else {
$products = DB::select('
select
p.id, p.name, p.price, p.details, c.name category, b.name brand,
(select group_concat(url separator \',\') images from images i inner join products pp on i.id_product=pp.id where pp.id=p.id) images
from
products p
inner join categories c
on c.id=p.id_category
inner join brands b
on b.id=p.id_brand
');
}
return View::make('catalog')
->with('cats', Category::all())
->with('brands', Brand::all())
->with('id', $id)
->with('filter', $filter)
->with('products', $products);
});
Route::get('/dining/{category?}/{id?}', function($category = null, $id = null){
$sql = '
select
v.id, v.name, v.story, v.cover_img cover, v.title_img title, v.thumb_img thumb, v.phone, v.email, c.name,
(
select
concat(
\'<ul>\',
group_concat(
\'<li><span class="day">\',s.day,\':</span><span class="hours">\',s.hours,\'</span></li>\'
separator \'\'
),
\'</ul>\'
)
from
schedules s
where s.id_vendor = v.id
) as schedule
from
vendors v
inner join categories c
on v.id_category=c.id
where id_category is not null
';
if($id != null)
$sql .= ' and c.id='.$id;
$vendors = DB::select($sql);
$cats = DB::select('
select c.id, c.name from categories c where menu = \'dining\'
');
return View::make('dining')
->with('vendors', $vendors)
->with('categories', $cats)
->with('category', $id);
});
Route::get('/leisure', function(){
return View::make('leisure');
});
Route::get('/service', function(){
$sql = '
select
v.id, v.name, v.cover_img cover, v.thumb_img thumb, v.map_img map, v.email, v.phone, v.web, v.story,
(
select
concat(
\'<ul>\',
group_concat(
\'<li><span class="day">\',s.day,\':</span><span class="hours">\',s.hours,\'</span></li>\'
separator \'\'
),
\'</ul>\'
)
from
schedules s
where s.id_vendor = v.id
) as schedule
from
vendors v
where id_category is null
';
$vendors = DB::select($sql);
return View::make('service')
->with('vendors', $vendors);
});
Route::get('/events', function()
{
$events = DB::table('events')->get();
return View::make('events')
->with('events', $events);
});
Route::get('/contact', function()
{
return View::make('contact');
});
Route::get('/cinema', function()
{
$movies = DB::select('
select
m.id, m.title, m.description, m.poster, m.duration, m.language, m.country, m.year, m.premiere,
(
select
group_concat(a.name separator \', \')
from movies_actors ma inner join actors a on a.id=ma.id_actor where ma.id_movie=m.id and ma.role=\'actor\'
) cast,
(
select
group_concat(a.name separator \', \')
from movies_actors ma inner join actors a on a.id=ma.id_actor where ma.id_movie=m.id and ma.role=\'director\'
) directors,
(
select
group_concat(g.name separator \' | \')
from movies_genres mg inner join genres g on g.id=mg.id_genre where mg.id_movie=m.id
) genres
from
movies m
where
m.id in (
select
p.id_movie
from
projections p
where
p.id_movie = m.id and p.datestamp > now()
)
');
return View::make('cinema')
->with('movies', $movies);
});
Route::post('/projections', function()
{
$movie_id = Input::get('id');
$projections = DB::select('
select
p.id,
dayname(p.datestamp) day,
date(p.datestamp) date,
group_concat(date_format(p.datestamp, \'%H:%i\' ), \' (\',t.name, \') -\', p.id) theatre
from
projections p inner join theatres t on p.id_theatre=t.id
where p.id_movie = '.$movie_id.' and p.datestamp>now()
group by date(p.datestamp)
order by p.datestamp
');
return Response::json($projections);
});
Anexa 2: Rapoarte de ieșire cu date de test ale rulării unei rezervări
Selecție film
Vizualizare descrie film și selecția locurilor și a sălii
Afișarea structurii sălii, a locurilor rezervare și selecția locurilor dorite
Completarea datelor personale penttru înregistrarea rezervării
Afișarea mesajului de confrimare a înregistrării cu succes a rezervării
Verificarea înregistrării a rezervării în baza de date a administratorului
Bibliografie
Cărți
Internet
http://sass-lang.com/documentation/file.SASS_REFERENCE.html
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
http://www.w3schools.com/css/css3_intro.asp
http://www.zell-weekeat.com/susy2-tutorial/
http://code.tutsplus.com/tutorials/responsive-grids-with-susy–net-27893
https://gist.github.com/liuwen-lvtu/1294530
http://en.wikipedia.org/wiki/Graphical_user_interface
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: Proiectarea Unei Aplicatii Informatice Pentru Gestionarea Activitatilor Online ale Agentiei de Turism (ID: 150240)
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.
