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

Email

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

email

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

email

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

email

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

email

mesaj

data trimiterii

Pentru abonați se cunosc:

codul de identificare

email

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

Similar Posts