As. Univ. Dr. MIHAELA VASLUIANU ABSOLVENT: HÎRȚAN LUIZA-ELENA BUCUREȘTI Iulie, 2019 APLICAȚIE INFORMATICĂ PENTRU CINEMA COORDONATOR ȘTIINȚIFIC: As…. [306957]

LUCRARE DE LICENȚĂ

COORDONATOR ȘTIINȚIFIC:

As. Univ. Dr. MIHAELA VASLUIANU

ABSOLVENT: [anonimizat], 2019

APLICAȚIE INFORMATICĂ PENTRU CINEMA

COORDONATOR ȘTIINȚIFIC:

As. Univ. Dr. MIHAELA VASLUIANU

ABSOLVENT: [anonimizat], 2019

CUPRINS

INTRODUCERE

Unul dintre cele mai importante aspecte în tehnologia informației îl reprezintă dezvoltarea sistemelor de baze de date. Acest fapt a avut un impact major in dezvoltarea serviciilor.

Majoritatea sistemelor de baze de date existente sunt relaționale. Asupra lor se pot efectua diferite categorii de operații:

• introducerea de noi date (insert);

• ștergerea unor date existente în baza de date (delete);

• actualizarea datelor stocate (update);

• interogarea bazei de date (query) [anonimizat].

[anonimizat] i se asociază o colecție de date.

Termenul de aplicație web este folosit pentru o aplicație care este accesată de utilizatori prin intermediul unei rețele (internet / intranet). Acest termen poate de asemenea să desemneze o [anonimizat] (browser-supported) precum JavaScript sau jQuery combinat cu un limbaj de marcare precum HTML și care se bazează pe un browser web pentru redarea aplicației executabile.

[anonimizat], prin acces în timp real la informația stocată în sistem.

Website-[anonimizat]-o bază de date relațională. Aplicația a [anonimizat], CSS, [anonimizat], MySQL, [anonimizat]-o interfață prietenoasă. [anonimizat]: conexiunea la internet și accesul la un browser web.

Scopul aplicației este acela de a eficientiza atât administrarea cinematografelor cât și de a ușura achiziționarea biletelor pentru consumatori.

Eficientizarea provine din mai multe surse. [anonimizat] o viziune de ansamblu asupra situației cinematografelor ceea ce duce implicit la eficiență în luarea deciziilor administrative. [anonimizat] a se informa și de a procura biletele întrucât aceștia vor economisi timp în a obține detalii despre filmele difuzate si totodata nu este nevoie de un drum în plus pentru a [anonimizat] 30 [anonimizat] a cumpăra o gustare.

Printre obiectivele urmărite de aplicație putem enumera: [anonimizat], reducerea costurilor de personal și a [anonimizat], ca și obiectiv al aplicației pot menționa creșterea nivelului profesional al angajaților datorat utilizării unei aplicații moderne.

CONCEPTE ȘI TEHNOLOGII INFORMATICE UTILIZATE

În acest capitol sunt descrise conceptele și tehnologiile care au stat la baza realizării aplicației software ”APLICAȚIE INFORMATICĂ PENTRU CINEMA”.

2.1 Sisteme de baze de date

Apariția și dezvoltarea calculatoarelor electronice au condus la amplificarea activităților legate de stocarea, interogarea și administrarea colecțiilor de date.

Astăzi, cele mai multe dintre activitățile noastre zilnice necesită accesarea și actualizarea informației dintr-o bază de date; extragerea unei sume de bani din contul bancar, rezervarea unei camere de hotel, cumpărarea unui bilet de avion, împrumutul unei cărți de la bibliotecă, plata facturilor de telefon, curent electric etc. Toate acestea se pot face rapid și în siguranță, pentru că datele respective sunt bine organizate într-o bază de date și administrate de un sistem de gestiune a bazelor de date.

Baza de date (BD) se definește ca un ansamblu de date interconectate, împreună cu descrierea lor, care răspunde calităților de centralizare, coordonare integrare și difuzie a informațiilor și care asigură satisfacerea tuturor necesităților de prelucrare ale tuturor utilizatorilor dintr-un sistem.

Baza de date poate fi privită ca o colecție de fișiere interconectate care conțin nucleul de date necesare unui sistem informatic. Astfel, poate fi considerată drept un model al unor aspecte ale realității unei unități economice, modelată prin intermediul datelor. Diferitele obiecte din cadrul realității, ce prezintă interes, sunt denumite clase sau entități. Pentru aceste obiecte sunt achiziționate și memorate date referitoare la diferite caracteristici (atribute). Baza de date se constituie ca un ansamblu intercorelat de colecții de date, prin care se realizează reprezentarea unei realități.

Sistemele de baze de date, sau băncile de date, reprezintă un sistem de organizare și prelucrare, respectiv teleprelucrare (prelucrare la distanță) a informației, constituit din următoarele trei elemente:

colecție de date aflate în interdependență;

descrierea datelor și a relațiilor dintre ele;

un sistem de programe care asigură exploatarea bazei de date (actualizare, interogare).

Proiectarea bazei de date presupune cunoașterea problemei ce trebuie rezolvată de către aplicație și în primul rând cunoașterea datelor ce trebuie reținute (dimensiune, tipologie, etc).

În primul rând, trebuie precizat faptul că realizarea unei aplicații cu baze de date necesită existența unui sistem de baze de date (DBS = Database System), ce reprezintă un set de elemente interconectate prin intermediul cărora se realizează colectarea, stocarea și procesarea datelor.

Arhitectura sistemului de baze de date formată din următoarele componente:

baza/bazele de date – reprezintă componenta de tip date a sistemului (colecțiile de date propriu-zise, indecșii);

sistemul de gestiune a bazei/bazelor de date – ansamblul de programe prin care se asigură gestionarea și prelucrarea complexă a datelor și care reprezintă componenta software a sistemului de baze de date (Sistem de Gestiune a Bazelor de Date – SGBD);

alte componente – proceduri manuale sau automate, inclusiv reglementări administrative, destinate bunei funcționări a sistemului, dicționarul bazei de date (metabaza de date) care conține informații despre date, structura acestora, elemente de descriere a semanticii, statistici, documentații, mijloacele hardware utilizate, personalul implicat.

Din figura 1.1 se observă faptul că utilizatorul interacționează cu sistemul de baze de date prin intermediul aplicației software care realizează legătura cu datele.

Figura 1.1 Componentele arhitecturii unui sistem de baze de date

Din categoria produselor software, cel mai important este Sistemul de Gestiune a Bazei de Date (SGBD), ce reprezintă un ansamblu de programe ce oferă o interfață între baza de date și utilizatori. “Un SGBD este o componentă software a unui sistem de baze de date care interacționează cu toate celelelte componente, asigurând conectarea și independența dintre elementele sistemului.”

Astfel, un SGBD are rolul de a asigura:

funcția de descriere a datelor – realizează descrierea atributelor din cadrul structurii bazei de date, legăturile dintre entitățile bazei de date, se definesc eventualele criterii de validare a datelor, metode de acces la date, integritatea datelor. Concretizarea acestei funcții este schema bazei de date;

funcția de manipulare – este cea mai complexă și realizează actualizarea și regăsirea datelor;

funcția de utilizare – asigură mulțimea interfețelor necesare pentru comunicare a tuturor utilizatorilor cu baza de date;

Categorii de utilizatori:

neinformaticieni – beneficiarii informației, nu trebuie să cunoască structura bazei de date, nu trebuie să programeze aplicații, ci doar să le folosească prin intermediul unei interfețe suficient de prietenoase;

informaticieni – crează structura bazei de date și realizează procedurile complexe de exploatare a bazei de date;

administratorul bazei de date – utilizator special, cu rol hotărâtor în funcționarea optimă a întregului sistem.

funcția de administrare – administratorul este cel care realizează schema conceptuală a bazei de date, iar în perioada de exploatare a bazei de date autorizează accesul la date, reface baza în caz de incident;

funcția de protecție a bazei de date – ansamblul de măsuri necesare pentru asigurarea integrității (semantică, acces concurent, salvare/restaurare) și securității datelor (autorizare acces, utilizare viziuni, criptare).

Figura 1.2 prezintă funcțiile unui SGBD (descriere, manipulare, administrare și utilizare), care sunt interconectate și asigură funcționalitatea întregului sistem. Astfel, funcția de utilizare are rolul de a realiza interfața cu utilizatorul, funcția de descriere definește structura bazei de date prin limbajul de descriere a datelor (LDD), funcția de manipulare realizează inserarea și prelucrarea datelor prin limbajul de maipulare a datelor (LMD), iar funcția de administrare gestionează baza de date.

Figura 1.2 Funcțiile unui SGBD

Prin acestea, un SGBD trebuie să asigure:

definirea – crearea bazei de date;

introducerea (adăugarea) datelor în baza de date;

modificarea structurii sau a unor date deja existente în baza de date;

ștergerea datelor din baza de date;

consultarea bazei de date – interogare/extragerea datelor.

În plus un SGBD mai asigură și alte servicii:

suport pentru limbaj de programare;

interfață cât mai atractivă pentru comunicarea cu utilizatorul;

tehnici avansate de memorare, organizare, accesare a datelor din baza de date;

utilitare încorporate: sistem de gestiune a fișierelor, listelor, tabelelor etc.;

“help” pentru ajutarea utilizatorului în lucrul cu baza de date.

Apariția și răspândirea rețelelor de calculatoare a dus la dezvoltarea SGBD-urilor în direcția multiuser: mai mulți utilizatori folosesc simultan aceeași bază de date.

Principalul avantaj al rețelelor a fost eficiența mult sporită de utilizare a resurselor sistemelor de calcul: la o bază de date aflată pe un server central au acces simultan mai mulți utilizatori, situați la distanță de server, de unde rezultă o bună utilizare a resurselor server-ului și o economie de memorie datorată memorării unice a bazei de date.

2.2 Funcționarea paginilor și serverelor Web

Unul dintre cele mai importante și de succes servicii ale Internetului este World-Wide Web-ul, mai pe scurt Web sau spațiul WWW.

Web-ul, cu toată dezvoltarea lui spectaculoasă, nu trebuie confundat cu Internetul, ci poate fi considerat drept cea mai dinamică și spectaculoasă componentă software a acestuia, neputând exista fără infrastructura hardware a rețelelor mondiale interconectate prin intermediul protocoalelor TCP/IP. În prezent, Web-ul nu este proprietatea nimănui, fiind independent de orice platformă hardware și software, scalabilitatea asigurându-se grație arhitecturii sale interne, bazată pe hipertext și pe modelul client/server.

WWW (World Wide Web) reprezintă o rețea care utilizează protocolul HTTP în scopul de a stabili legături între documente aflate în diverse puncte din Internet. În același timp este utilizat ca resursă pentru servicii, informații, publicații electronice.

Din punct de vedere tehnic, spațiul Web pune la dispoziție un sistem global și standardizat de comunicare multimedia, informațiile fiind organizate asociativ și distribuite în funcție de cererile utilizatorilor, funcționând conform modelului client/server.

În general, o sesiune de comunicare HTTP este inițiată de către client și constă din solicitarea unei resurse (o pagină Web, uzual) identificată unic pe un server cunoscut. Acesta este numit și server de origine datorită faptului că în comunicarea între client și server pot să apară unul sau mai mulți intermediari: proxy (numit și server proxy), poartă (gateway) sau tunel (tunnel). Entitatea proxy reprezintă un intermediar care retrimite un mesaj HTTP, eventual modificând o parte a sa. Poarta semnifică un intermediar care se poate situa înaintea unui server de origine și să se identifice drept acesta, clientul Web necunoscând acest aspect. Tunelul este un intermediar care nu schimbă conținutul mesajului, ci are rolul exclusiv de retransmitere a lui; de exemplu, tunelul poate fi folosit pentru (de)criptarea mesajelor vehiculate între server și client în cadrul unui intranet/extranet.

Serverul web sau web server este serverul care stochează (găzduiește) pagini web și le pune la dispoziția solicitanților prin protocolul HTTP. Și de această dată relația server-client se bazează pe o aplicație care este instalată pe server și care este programată să transfere paginile web găzduite. Aici ideea de web server presupune și noțiunea de hosting (găzduire), asta deoarece serverul trebuie să dețină datele pe care urmează să le returneze la cerere.

O aplicație Web reprezintă o colecție interconectată de pagini Web cu un conținut dinamic, menită să ofere o funcționalitate specifică utilizatorilor. Natural, interacțiunea dintre aplicație și utilizatori are loc prin intermediul unei interfețe Web. Deseori, termenii de sit și aplicație Web sunt folosiți unul în locul celuilalt, pentru a desemna același concept.

Serviciile Web sunt cărămizile pentru crearea de sisteme distribuite deschise, permițând organizațiilor și dezvoltatorilor independenți să-și facă disponibile pe Web bunurile digitale într-un mod rapid și facil.

Mai mult, serviciile Web separă modul de prezentare a datelor de partea de prelucrare a acestora, fiind aliniate șablonului de proiectare MVC (Model-View-Controller).

Figura 2.1 Interacțiunea între un serviciul Web și un client, prin prisma MVC

Din figura 2.1 se observă faptul că modulul de interacțiune cu utilizatorul (componenta view) este separat de cel de procesare (model), reprezentat de serviciul Web în sine, comunicarea fiind facilitată de un strat de control (controller). Astfel, rezultatele preluate de la serviciul Web, ce oferă o anumită funcționalitate aplicației noastre, pot fi redate utilizatorului într-o multitudine de forme, fără a trebui să modificăm (sau sa avem acces la) implementarea serviciului.

Existența serviciilor Web este insuficientă fără a avea la îndemână instrumente suplimentare de implementare, exploatare și integrare. Un aspect important este dat de faptul că informațiile și serviciile trebuie să fie accesibile de pe orice tip de calculator și de oriunde, apărând astfel necesitatea utilizării unei platforme independente de dispozitive, al cărei rol poate fi jucat de o mașină virtuală.

Pentru accesul la aplicații și sisteme tradiționale (legacy) sau la serverele de stocare (backend servers), cadrul de lucru va trebui să ofere un nivel de integrare. Mai mult decât atât, e necesară existența unui nivel de interfațare (frontend) via un server Web, care presupune existența unei/unor mașini virtuale și a unui motor de asigurare a fluxului de activități (workflow engine). La nivelul cel mai de sus se află ofertantul de servicii Web sau utilizatorul direct al acestora.

Inițial , paginile Web au fost construite cu ajutorul unui limbaj de marcare a hipertextelor, numit HTML (Hypertext Markup Language). Limbajul HTML conține comenzi care sunt interpretate de un browser cu scopul afișării pe ecranul utilizatorului a elementelor multimedia: text, imagine, redării de sunete, secvențe video și executării de legături cu alte pagini Web.

Mai multe pagini Web conectate între ele prin legături de tip hipertext sau hipermedia, ce au un subiect comun, formează un site Web. Orice site Web are o primă pagină, care se numește de regulă home page și se salvează cu numele index.html sau index.htm. Această primă pagină este ca o copertă de carte ce trebuie să ne atragă și să ne sugereze ce se află în interior. Un site bun este acela în care informațiile sunt ușor de găsit și accesat, conținând legături către celelalte pagini ale site-ului printr-un meniu, iar din toate paginile există o legătură către prima pagină. Când construim design-ul unui site Web, trebuie să încercăm să creăm ceva unic, cu structura și combinația nuanțelor de culori adaptată conținutului.

2.3 Realizarea paginilor Web cu ajutorul limbajelor HTML, PHP și MySQL

2.3.1. HTML – Prezentare generală

Limbajul a fost dezvoltat inițial de oamenii de știință ca o unealtă utilizată la partajarea documentelor (rapoarte de cercetare, documentații, etc) în întreaga comunitate științifică internațională care utiliza (și utilizează) Internetul. Pentru a publica informații care să fie distribuite global în Internet este necesar un limbaj universal de descriere a acestora (o „mamă a tuturor limbajelor de publicare“), limbaj care să fie potențial înțeles de toate computerele din Internet. Limbajul folosit de World Wide Web este HTML. [15]

HTML se aseamănă cu modalitățile de formatare a textelor de la un procesor de texte uzual în sensul că adaugă textului ce se dorește a fi publicat (afișat) informații de formatare și permite înglo-barea și altor tipuri de informații (imagini, sunete, etc). Toate acestea indică modul de afișare (prezentare) pentru programele capabile să înțeleagă aceste informații. Ceea ce îl deosebește de toate celelalte formate ale procesoarelor de texte este faptul că un document HTML este un document ce conține informație în format „text-pur“ (numai caractere ASCII), în timp ce procesoarele de texte folosesc formate particulare (proprietare). Astfel, un document HTML poate fi afișat (prezentat) de un număr mare de programe (browsere Web) care rulează pe un mare număr de platforme. [15]

Documentele HTML pot fi create cu un editor de texte (document salvat ca „text only with line breaks“) sau cu editoare HTML care permit crearea vizuală (WYSIWYG) a documentelor HTML, rezultînd însă tot documente în format text pur. [15]

Limbajul HTML dă autorilor posibilitatea [15]:

să publice documente cu headere, texte, tabele, liste, fotografii, etc.;

să regăsească on-line informații prin intermediul hiperlink-urilor accesate printr-un simplu click de mouse;

să proiecteze formulare pentru realizarea tranzacțiilor cu servere aflate la distanță, pentru căutari de informație sau pentru activități specifice comerțului;

să includă foi de calcul tabelar, clipuri video, sunete și alte aplicații direct în documente.

HTML este un limbaj care descrie modul de afișare a unui document (text și informații de alt tip, de exemplu imagini, animație, sunete,) folosind două tipuri de elemente: caractere entități și taguri. [15]

Tagurile HTML sînt elementele specifice limbajului care determină acțiunile ce trebuie efectuate la afișarea și parcurgerea ulterioară a documentului (pot fi asimilate cu instrucțiunile unui limbaj de programare). Caracterele entități se folosesc la descrierea caracterelor din document care nu fac parte din setul standard ASCII. [15]

De la prima versiune HTML, care datează din 1992 până acum, acest limbaj a suferit multe îmbunătățiri, cum ar fi: internaționalizarea limbajului, utilizarea indiferent de platformă, printarea, permiterea scripturilor, a stilurilor precum CSS, a obiectelor și nu în ultimul rând corectarea erorilor.

Ultima versiune HTML 5 vine cu o serie de facilitați care îmbunătățesc performanțele multimedia ale aplicațiilor Web. Astfel, dinamica unei pagini este mult crescută prin introducerea unor noi etichete vizând partea audio, video și grafică tratarea erorilor este mai simplă și eficientă, iar pentru o serie de etichete HTML anterioare sunt modificate și specificațiile/atributele.

Totodată o serie de etichete sunt abrogate. Spre exemplu, frame-urile nu mai sunt funcționale într-un document HTML 5, iar eticheta <object> permițând încapsularea unor obiecte plugin pentru diverse facilități (în special multimedia) este și ea abrogată, fiind substituita cu noi etichete HTML 5, gen <audio>, <video>. În momentul actual se poate vorbi de o confruntare în zona Web multimedia între tehnologia HTML 5 funcționând fără pluginuri adiționale (aplicații software adiționale), respectiv tehnologia clasică bazată pe pluginurile Flash. Actualmente, browser-ele într-o proporție covârșitoare suportă Flash, în timp ce sub jumătate dintre ele suporta HTML 5.

HTML 5 implică o utilizare intensivă a altor tehnologii conexe bazate pe JavaScript, CSS, Canvas având o deschidere, conectivitate și capacitate mult mai mare de integrare cu noi tehnologii, ceea ce îl plasează ca potențial câștigător în confruntarea cu tehnologia bazată pe clasicele plugin-uri. De menționat totuși că în acest moment se pare ca nici un browser Web nu suporta în totalitate HTML 5, pe cele mai bune poziții situându-se în acest sens Google Chrome, Safari și Firefox 4.

2.3.2. Extinderi ale limbajului HTML standard: CSS, JavaScript, jQuery

Deși HTML-ul clasic permite redactarea unor documente hypertext de un nivel foarte înalt și elaborat, o dată cu evoluția limbajelor de programare vizuale, a început să devină mai puțin atractiv decât a fost la început. Din acest motiv, a fost pus la punct ceea ce numim DTHML (Dynamic HTML) – care nu este un limbaj în sine, ci un termen prin care sunt desemnate tehnicile utilizate pentru a face paginile web cât mai dinamice și cât mai interactive.

Pe lângă HTML-ul propriu-zis, noile unelte recunoscute de browser-ele din ultima generație sunt CSS (Cascading Style Sheets), JavaScript și DOM (Document Object Model).

[16]

2.3.2.1. CSS (Cascading Style Sheets)

CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului.

Noțiunea de stil este, pentru un document HTML, asemănătoare cu formatarea documentului, spre exemplu, pentru un document Word. Exisă o mulțime de atribute prin care se pot stabili font-urile, caracteristicile de aliniere a textului, forma elementului, culorile de fond și ale literelor, marginile, poziția elementelor, etc. [16]

Pentru a putea gestiona cât mai eficient stilurile, a fost pus la dispoziția programatorilor de pagini web un limbaj prin care se poate realiza acest lucru. Acest limbaj este cunoscut sub numele de CSS (actualmente, vorbim de versiunea CSS2). [16]

Legătura dintre HTML și CSS se realizează prin intermediul tag-ului <STYLE>…</STYLE> care trebuie așezat între <HEAD>… </HEAD>.

O pagină Web scrisă cu CSS poate fi interpretată mai ușor și corect de către diferite browsere, cum ar fi cele destinate persoanelor cu dizabilități. Aceste browsere parcurg paginile Web și le transformă. Principalele acțiuni sunt: mărirea sau micșorarea dimensiunii textului afișat, transformarea conținutului paginii Web în fișiere audio sau fișiere interpretabile de către un dispozitiv Braille.

Pentru a interpreta cât mai corect conținutul unei pagini Web, acesta trebuie să poată fi "văzut" simplu, neformatat, toate formatările să fie făcute cu ajutorul CSS-urilor. În afara acestor avantaje, CSS este folosit pentru a putea crea pagini cu stil, care să încânte privirea utilizatorilor.

Avantajele utilizării CSS:

paginile se încarcă mai repede;

se poate modifica foarte ușor aspectul unui întreg site;

avem mult mai puțin cod de scris pentru o pagină Web;

site-ul are mai multe șanse să fie interpretat corect de către cât mai multe browsere.

CSS3 reprezintă un upgrade ce aduce câteva atribute noi și ajută la dezvoltarea noilor concepte in webdesign. Deși au apărut unele deficiente de compatibilitate intre browsere, majoritatea proprietăților CSS3 au fost implementate cu succes in variantele browserelor noi.

Mai jos sunt prezente in listă cele mai importante modulele adăugate in CSS3:

• Selectors

• Box Model

• Backgrounds and Borders

• Image Values and Replaced Content

• Text Effects

• 2D/3D Transformations

• Animations

• Multiple Column Layout

• User interface

2.3.2.2. JavaScript

JavaScript este un limbaj de programare orientat pe obiecte. În ciuda numelui și a unor oarecare similarități în sintaxă, între JavaScript și Java nu există nici o legătură.

JavaScript are o sintaxă apropiată de cea a C-ului; din acest motiv un programator care cunoaște C poate cu ușurință să învețe JavaScript.

Deși acest limbaj are o plajă mai largă de extindere, cel mai des întâlnit este în scriptarea paginilor web. Programatorii web pot îngloba în paginile HTML script-uri pentru diverse activități, cum ar fi verificare datelor introduse de utilizatori, sau crearea de meniuri ori de alte efecte animate.

Browser-ele rețin în memorie o reprezentare a paginii web sub forma unui arbore de obiecte, punând aceste obiecte la dispoziția JavaScriptului, care le poate citi și manipula. [16]

JavaScript a fost proiectat ca fiind un limbaj de scriptare simplu, pentru programatori începători care nu cunosc Java și pentru Web designers. Acest limbaj de scriptare este simplu deoarece la scrierea unui script nu suntem obligați să declarăm variabilele înainte de a le utiliza și nici să utilizăm un compilator. Browser-ul este cel care interpretează scriptul și care ne arată dacă avem greșeli. Nu este nevoie să utilizăm un compilator Java sau C, nu este necesar să instalăm diverse soft-uri pe computerul nostru pentru a putea vizualiza rezultatul. Nu avem nevoie decât de un browser. Browser-ul care a interpretat pentru prima dată scripturile JavaScript este Netscape, după care au urmat Internet Explorer, Opera, Mozilla și altele.

JavaScript este interpretat de către browser-e și poate funcționa indiferent de platformă. Sistemele de operare pe care poate fi interpretat un script JavaScript sunt: Windows, UNIX, Macintosh. Cu JavaScript putem crea pagini Web dinamice, interactive, pop-up, bare de navigare, putem trimite date pentru verificare prin Internet, putem controla applet-uri Java.

JavaScript este un limbaj care poate fi utilizat atât pe parte de client cât și pe parte de server. JavaScript este un limbaj de scriptare bazat pe obiecte, nu orientat pe obiecte cum este limbajul de programare Java. JavaScript nu este Java, chiar dacă asemănarea numelor poate duce la această confuzie. Cu JavaScript nu putem crea applet, dar îl putem interpreta, după ce îl creăm cu Java.

JavaScript este un limbaj interpretat de către browser și nu are nevoie să fie compilat înainte de a fi rulat. Browser-ul analizează fiecare element al paginii Web pe rând, împărțindu-l în componente mai mici. În funcție de locul unde este plasat un script, scriptul poate fi pe parte de client sau pe parte de server. Dacă scriptul rulează în browser-ul clientului, atunci îl numim script pe parte de client, așa cum sunt majoritatea script-urilor.

Ca și un stil CSS, un script JavaScript poate fi scris atât în pagina Web, în antet sau în corpul documentului, cât și în exteriorul ei, ca fișier separat. Fișierele care conțin scripturi JavaScript se salvează cu extensia .js.

Pentru scripturile simple, cel mai ușor este să le introducem în interiorul paginii Web, în antet și mai rar în corpul paginii. Scripturile complexe, care este posibil să genereze erori la interpretare sau care se încarcă mai greu este indicat să le salvăm într-un fișier separat și să le apelăm din interiorul paginii Web. Mai este însă un motiv pentru care scripturile ar trebui scrise separat și anume posibilitatea ca acestea să fie modificate individual, fără să modificăm toată pagina Web sau tot site-ul care utilizează acest script.

Bineînțeles că JavaScript are și dezavantaje, cum ar fi faptul că se pot crea bucle infinite cu ajutorul instrucțiunilor repetitive sau atacuri asupra computerelor care permit rularea diverselor scripturi, dar un utilizator Internet cu puțină experiență nu ar trebui să-și facă probleme. Orice limbaj de programare poate fi folosit atât pentru a crea lucruri bune, cât și pentru a crea lucruri rele. JavaScript este doar un limbaj de scriptare, adică un instrument.

Ca și la HTML, scriptul JavaScript se introduce între două etichete <script> și </script> la care ar trebui să adăugăm language=”JavaScript” pentru ca browser-ul să știe ce fel de script urmează.

2.3.2.3. jQuery

jQuery este o bibliotecă JavaScript concepută pentru a simplifica scripturile de pe partea de client și anume scripturile executate prin intermediul elementelor HTML. A fost lansată în ianuarie 2006 de către John Resig. Sintaxa jQuery face mai ușoară navigarea într-un document, selectarea elementelor din DOM (Document Object Model), crearea animațiilor, manipularea evenimentelor și chiar dezvoltarea de aplicații AJAX. jQuery oferă de asemenea posibilitatea dezvoltatorilor de a crea extensii pentru bibliotecile de JavaScript. Astfel, se pot abstractiza interacțiunile , animațiile și efectele.

jQuery permite îndeplinirea unor sarcini precum:

accesarea unor anumite părți din pagină și traversarea elementelor paginii;

modificarea aspectului unei pagini și posibilitatea schimbării dinamice a proprietăților după încărcarea paginii;

modificarea conținutului paginilor (text, imagini);

răspuns la interacțiunea utilizatorului cu elementele HTML;

adăugarea de animații complexe.

Plugin-urile sau extensiile sunt cele mai interesante facilități oferite de jQuery. Programatorii pot dezvolta subaplicații care să extindă funcțiile de bază jQuery cu funcții folosite de către plugin. Astfel, biblioteca principală ocupă doar atât spațiu cât este necesar, în timp ce extensiile vor fi încărcate doar la cerere și în acele pagini unde sunt necesare. Dezvoltatorii pot utiliza un set de extensii predefinite, numit jQuery UI (jQuery User Interface). Principalul avantaj al jQuery este faptul că dezvoltarea și testarea componentelor se face concomitent cu dezvoltarea bibliotecii principale, astfel că este eliminată incompatibilitatea.

În cadrul aplicației de logistică, jQuery asigură în primul rând interactivitatea utilizatorului cu mediul de lucru.

2.3.3. PHP

Limbajul PHP este un limbaj de programare destinat în primul rând Internetului, aducând dinamică unei pagini web. Este unul dintre cele mai importante limbaje de programare web open-source (codul sursă este public, fiind accesibil tuturor) și server-side (rularea sa nu se face pe calculatorul celui care vizualizează pagina, ci pe server-ul care o conține).

Este unul dintre cele mai folosite limbaje de programare server-side. Statisticile arată că la 1 mai 2008, suportul PHP este prezent pe 20 de milioane dintr-ul total de 70 de milioane de website-uri active din lumea întreagă.

Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor sale caracteristici:

Familiaritatea – sintaxa limbajului este foarte ușoară, fiind foarte la îndemână înspecial pentru programatorii care cunosc limbajul C;

Simplitatea – sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document fiind trecut între niște marcaje speciale;

Securitatea – PHP-ul pune la dispoziția programatorilor un set flexibil și eficient de măsuri de siguranță;

Flexibilitatea – fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web exitente: Apache, IIS, Zeus, etc.

Gratuitatea – este, probabil, cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a sa la nevoile web-ului, eficientizarea și securizarea codului.

Limbajul PHP, în marea majoritate a cazurilor, se folosește sub formă de secvențe de cod

inserate în cadrul unui document HTML. Din acest motiv, vom prefera termenul de „script PHP” celui de program PHP. Structura unui script PHP este foarte asemănătoare cu cea a unui cod scris în limbajul C, mai ales în sensul în care structurile de programare au aceeași sintaxă și aceeași funcționalitate.

Rolurile de bază ale unui script PHP constau în aceea că scipt-ul poate prelua date trimise de către o pagină web de la un client (în general, datele pot fi trimise de către o pagină web prin intermediul formularelor) și de a executa o secvență de program în urma căreia va rezulta un cod HTML, cod pe care clientul îl va primi sub forma unei pagini web. Clientul nu va avea acces la codul efectiv al script-ului, ci, prin faptul că acesta se află pe server și se rulează tot pe acesta, va primi direct HTML-ul generat de script.

Spre deosebire de fișierele .html care o dată create pe discul local cu un editor de texte pot fi deschise imediat tot local, direct în browser-ul de Internet, pentru a rula codul PHP este absolut necesar ca fișierele să fie puse în directorul în care rezidă documentele serverului web, iar vizualizarea lor să fie făcută prin intermediul acestuia. În mod implicit, un fișier care conține un script PHP trebuie să fie salvat cu extensia php.

Se observă structura absolut identică celei a unui fișier HTML. Noutatea este adusă de scriptul PHP, care este inserat între tag-urile colorate în roșu: „<?php” și „?>”. Instrucțiunea „echo” cuprinsă între acestea este o instrucțiune specifică limbajului PHP, ea având rolul de a scrie în pagina web textul ce urmează după, cel cuprins între ghilimele.

PHP în versiunea curentă reprezintă un pachet puternic care oferă un limbaj de programare accesibil din cadrul fișie-relor HTML, limbaj asemănător cu Perl sau C, având în plus suport pentru manipulareabazelor de date într-un dialect SQL (dBASE, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC etc.) și acces la sisteme hipermedia precumHyperwave. De asemenea, PHP suportă încărcarea fișierelor de pe calculatorul client: upload și oferă suport pentru cookies. Această aplicație este disponibilă gratuit, integrându-se în serverul Apache. În fapt, PHP reprezintă un server flexibil pentru dezvoltarea de aplicații Web sofisticate alături de altele comerciale. [16]

Apache este cel mai popular server web în prezent, având așadar o contribuție mare în dezvoltarea Internetului. Există multe module (plugin-uri) care au fost create pentru a extinde funcționalitatea serverului Apache. Printre cele mai importante funcționalități ale serverului Apache se numără suportul pentru CGI (Common Gateway Interface) și găzduirea virtuală (posibilitatea găzduirii mai multor site-uri simultan pe același server).

Pentru site-urile dinamice o componentă importantă este stocarea datelor astfel încât ele să poată fi modificate rapid și ușor – acest lucru fiind principala diferență între un site dinamic și un site static realizat în HTML. Deoarece PHP nu oferă o metodă eficientă de stocare a informațiilor, este nevoie de un sistem de gestiune a bazelor de date relaționale (SGBD).

2.3.4. MySQL

MySQL este unul dintre cele mai populare SGDB-uri open source în prezent și este foarte des întâlnit împreună cu PHP. Acesta a fost inițial lansat în 1996 și este denumit după numele fiicei principalului autor și co-fondator Michael Widenius, My, și SQL (Structured Query Language).

MySQL permite dezvoltatorilor să stocheze datele în tabele structurate pe linii și coloane pentru ca informația să fie bine organizată, ușor de găsit, modificat, adăugat și șters. MySQL este un server de baze de date SQL multi-user (controlează accesul la date pentru a garanta că mai mulți utilizatori pot lucra simultan cu acestea) și multi-thread (mai multe fire de execuție).

MySQL utilizează limbajul de programare SQL, limbaj care se ocupă atât cu inserări, interogări, ștergeri și modificări asupra informațiilor dintr-o bază de date, cât și cu controlul accesului la o bază de date. SQL este un limbaj specific pentru gestiunea datelor în SGBD-uri.

PHP include o bibliotecă de funcții prin care se pot accesa și modifica datele dintr-o bază de date MySQL. Majoritatea interacțiunilor cu o bază de date se desfășoară într-o sesiune de lucru, după următorii pași:

Se deschide o conexiune cu serverul MySQL.

Se specifică baza de date care va fi accesată.

Se transmit interogări SQL.

Se închide conexiunea cu serverul MySQL.

Pentru crearea unei baze de date este utilizată comanda create într-o cerere de administrare my.sql.admin în care sunt precizate și datele de identificare ale utilizatorului.

MySQL este componenta integrată a platformelor LAMP sau WAMP sau XAMPP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). În multe cărți de specialitate este precizat faptul ca MySQL este mult mai ușor de învățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comandă de ieșire fiind una simplă și evidentă: „exit” sau „quit”. Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfața grafică: MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.

Pentru a putea rula scripturi PHP care să acceseze baze de date cu MySQL sunt necesare trei componente (figura 2.2).

În primul rând, este nevoie de un server Web. Acesta poate fi sau pe calculatorul personal sau pe o "gazdă" Web. Oricare pachet – oricare tip de server Web este acceptat și va lucra cu PHP și MySQL, dar cel mai recomandat este Apache, care e public și gratis.

PHP trebuie să fie instalat pe server. Pachetul de instalare poate fi descărcat – preluat de la http://PHP.net și este de asemeni public – gratuit.

În al treilea rând, este nevoie de MySQL. Acesta este de fapt pachetul de programe pentru gestiunea bazelor de date. Se pot folosi de asemenea multe alte sisteme de baze de date (SQL, Oracle etc.) dar aici discutăm despre PHP/MySQL, deci avem nevoie de MySQL.

Figura 2.2 Componentele necesare accesării unei baze de date cu MySQL

Administrarea sistemului MySQL se poate face fie din linia de comandă fie folosind aplicația PhpAdmin.

PhpMyAdmin este un sistem de gestiune a bazelor de date MySQL liber, open source, scris în PHP și destinat administrării bazelor de date prin intermediul unui browser web.

Figura 2.3 phpMyAdmin

PhpMyAdmin (figura 2.3) are cea mai populară interfață de administrare a bazelor de date MySQL și poate realiza:

creare, copiere, ștergere și modificare a bazelor de date; – adăugarea, editarea și ștergerea câmpurilor dintr-o tabelă;

executarea comenzilor SQL;

managementul cheilor pe câmpuri;

încărcarea de fișiere text în tabele;

managementul utilizatorilor bazelor de date și acordare de privilegii.

2.4. Bootstrap (cadru de interfață)

Bootstrap este un cadru web front-end open-source utilizat pentru proiectarea de site-uri și aplicații web. Bootstrap vine echipat cu HTML, CSS și JavaScript pentru diferite componente de interfață web și utilizator. Este un cadru frontal puternic pentru o dezvoltare web mai rapidă și mai ușoară. Acesta include HTML si CSS bazate pe șabloane de proiectare pentru componente de interfață comună de utilizator, cum ar fi Tipografie, Formulare, butoane, mese, Navigări, DROPDOWNS, Alerte, modals, Tabs, Acordeon, Carousel și multe altele, precum și extensii opționale JavaScript.

Bootstrap ofera:

Abordarea mobilă – Bootstrap 3, framework-ul constă din stiluri mobile mobile din întreaga bibliotecă, în loc de acestea în fișiere separate.

Browser Support – este suportat de toate browserele populare / moderne, cum ar fi Mozilla Firefox, Google Chrome, Safari, Internet Explorer și Opera.

site-ul oficial Bootstrap are o bună documentație.

Design sensibil – CSS receptiv al lui Bootstrap se adaptează la desktop-uri, tablete și telefoane mobile. Mai multe despre designul receptiv este în capitolul Bootstrap Responsive Design. Toate componentele Bootstrap partajează aceleași șabloane și stiluri de design printr-o bibliotecă centrală, astfel încât design-urile și layout-urile paginilor web să fie coerente pe tot parcursul dezvoltării.

Oferă o soluție curată și uniformă pentru construirea unei interfețe pentru dezvoltatori.

Conține componente încorporate și funcționale încorporate, ușor de personalizat.

Oferă personalizare pe bază de web.

Este o sursă deschisă. (Open Source – gratuit pentru descărcare și utilizare.)

2.5. Sublime Text

Sublime Text Editor este unul dintre cei mai buni editori de text până în prezent. Aceasta este o mare alternativa la IDE-ul puternic, este ușoară și face munca cu mare eficiență și precizie.

Avantaje al editorului Sublime Text:

Interfață simplă, simplă, minimalistă.

Foarte flexibil personalizabil. Selecție multiplă.

Abilitatea de a crea fragmente și de a le insera cel puțin prin chei fierbinți, chiar și prin abrevieri de litere (în stilul de codificare Zen).

Abilitatea de a atribui fișierelor rapide în mod absolut orice acțiune.

În fragmente, puteți specifica unde va fi cursorul atunci când va fi inserat, va stabili opțiunile de înlocuire și va trece la zonele necesare ale fragmentului cu fila Tab.

Disponibilitatea unui cod minimap pentru o mișcare ușoară.

Abilitatea de a afișa caractere ascunse (spații, file) numai atunci când codul este evidențiat.

Există multe plug-in-uri disponibile și o comunitate tot mai mare de utilizatori care le scriu pentru orice nevoie.

Funcționează pe toate sistemele de operare importante – Windows, Linux și Mac OSX.

Dezavantaje:

Sublime text nu este un program open-source. Având în vedere că există mulți editori gratis pe piață, oricine poate alege o alternativă (exemplu Notepad ++)

Nu se actualizează des.

Timpul de descărcare este mai mare comparativ cu Notepad ++ (alt editor).

Calitatea plug-in-urilor este discutabilă.

Figura 2.3 Sublime Text

STUDIU DE CAZ. APLICAȚIE INFORMATICĂ PENTRU CINEMA

3.1 Descriere

Un sistem de administrare a conținutului sau CMS (Content Management System) este un sistem software creat pentru automatizarea cât mai deplină a gestiunii conținutului, în special a site-urilor web. Scopul este de a reduce sau elimina intervenția programatorilor la editarea și administrarea site-urilor lor. CMS-ul facilitează organizarea, controlul și publicarea de documente sau alt tip de conținut, cum ar fi imagini și resurse multimedia. Un CMS facilitează adesea crearea in comun de documente. Un "CMS web" este un CMS cu facilități adiționale pentru ușurarea publicării de conținut pe diversele site-uri.

Aplicația pe care am creat-o face referire la informațiile privind filmele difuzate acum in cinematografe și disponibilitatea locurilor in săli. Softul dezvoltat a fost creat pentru a oferi utilizatorilor acces rapid la informațiile necesare pentru o simplă rezervare la film, o metodă la îndemana pentru a-și petrece timpul liber.

Avantajele utilizării acestui sistem software sunt:

Accesul rapid și sigur la informațiile care sunt salvate într-o bază de date updatate foarte ușor;

Bună gestionare și administrare a locurilor disponibile / biletelor ce pot fi achiziționate;

Întocmirea în mod automat de rapoarte în funcție de anumite criterii.

Administratorul sistemului are acces la informațiile despre filmele difuzate, cu locurile aferent atribuite, cât și la utilizatorii inregistrați și rezervările făcute. Totodată acesta poate oferi acces și unor moderatori de sistem la aceste informații și la posibilitatea de a întocmi rapoare în funcție de criteriile necesare.

Atât adminstratorul cât și moderatorii au sarcina de a verifica corectitudinea datelor introduse și de a valida ulterioarele rectificări ale rezervărilor făcute de utilizatori.

3.2. Front-end

Pentru interfață am folosit HTML, CSS și Javascript pentru a putea expune elementele într-un mod vizual plăcut și pentru a putea fi reprezentate în mod grafic. Am folosit Bootstrap combinat cu Jquery și Javascript pentru o interfață mai prietenoasă.

Interfața (GUI – Graphical User Interface) este unul dintre cele mai importante elemente ale unei aplicații deoarece reprezintă partea vizuală cu care interacționează utilizatorul. Scopul interfeței este acela de a face interacțiunea utilizatorului cât de simplă și eficientă posibil pentru ca acesta sa-și atingă obiectivele.

Procesul de dezvoltare a interfeței trebuie să balanseze funcționalitatea tehnică și elementele vizuale pentru a crea un sistem care este nu doar operațional ci și utilizabil și adaptabil la schimbările de care are nevoie utilizatorul.

3.2.1. Pagina de start (Pagina principală)

Structura paginii de start este formată astfel încât să întâmpine utilizatorii o scurtă recenzie a celui mai nou film difuzat acum în cinematografe și totodata cele mai populare filme alese de utilizatori în această perioadă.

Figura 3.1 Pagina de start – Aspectul general al aplicației

Conform figurii 3.1 se observă că fereastra browserului este împărțită în 3 zone:

antetul (header) – conține sigla companiei, opțiunile de navigare către modulele aplicației și alte informații precum opțiunea de înregistrare/accesare cont sau deconectare;

zona de lucru – reprezintă zona propriu-zisă în care vor fi afișate filmele, rezervările și alte elemente vizuale ale fiecărui modul al aplicației;

subsolul (footer) – conține drepturile de autor pentru conținut si link-uri către alte 2 pagini (disponibile si in antet): Termeni și condiții și Contact.

Header-ul și footer-ul sunt file separate de fiecare pagină web și pentru încărcarea acestora am folosit PHP. Este important de menționat ca dacă dorim să importăm o nouă filă CSS acest lucru poate fi facut cu usurință direct in fila header.php / footer.php, deoarece astfel se importă în toate paginile care folosesc acel header / footer specific și se elimina nevoia de a importa fila CSS în fiecare pagină. Imaginea de întâmpinare este defapt un “carusel” alcătuit din 3 imagini rotative – animația fiind creată cu ajutorul limbajului JavaScript.

În această pagină principală mai este folosit PHP si pentru redarea filmelor populare acum în cinematografe, opțiune la îndemâna admistratorului de sistem care poate gestiona ce titluri apar pe pagina de start.

Figura 3.2 Pagina de start – Secțiune filme populare în cinematografe

3.2.2. Despre noi

Această pagină este structurată in mod asemănător paginii de start. Regăsim header-ul / footer-ul specific, iar conținutul ce oferă o scurtă descriere al operatorul de cinematografe este sustras cu ajutorul limbajului PHP din baza de date, text ce poate fi oricând editat din modulul de administrare al conținutului.

Figura 3.3 “Despre noi“

3.2.3. Filme

Această pagină conține o listă meniu cu toate filmele ce difuzeaza in cinematografe, dar și varietatea de icoane pentru fiecare film in parte. Pagina a fost realizată utilizând HTML/CSS, iar limbajul PHP a fost folosit nu numai la importarea header-ului și a footer-ului, dar și pentru importarea tuturor filmelor din baza de date. Astfel iconița fiecărui film în parte este defapt imaginea posterului filmului respectiv.

Figura 3.4 Filme – Aspectul general al listei filmelor din cinematografe

3.2.4. Descriere film

Pentru a ajunge în acest modul al aplicației trebuie accesat un film (oarecare) din lista prezentă în pagina anterioară – filme.

Figura 3.5 Descriere film 1

Figura 3.6 Descriere film 2

Figura 3.7 Descriere film 3

Așezarea in pagină a fost stilizată cu ajutorul limbajelor HTML/CSS.

Pentru a afișa toate detaliile filmului selectat am utilizat limbajul PHP pentru a sustrage toate aceste informații din baza de date. Totodata, în afara de aceasta citire, la fel ca și in celalte pagini, PHP a fost folosit la importarea header-ului și a footer-ului.

Afișarea scaunelor se face utilizând limbajul JavaScript.

Important este ca limbajul PHP are un rol sporit în acest modul. Utilizatorii pot accesa aplicația până în acest punct fără a fi necesară înregistrarea. Corelând cu limbajul JavaScript, cu PHP sunt citite din baza de date scaunele ocupate, iar o rezervare cu succes va updata aceasta citire și va declanșa confirmarea rezervării prin trimiterea unui e-mail.

3.2.5. Termeni și condiții

În această pagină regăsim header-ul / footer-ul specific, iar conținutul prezintă informații normative conform legii pentru prestarea de servicii. Textul este sustras cu ajutorul limbajului PHP din baza de date, text ce poate fi oricând editat din modulul de administrare al conținutului.

Figura 3.8 “Termeni și condiții“

3.2.6. Contact

La fel ca paginile “Despre noi” și „Termeni și condiții”, această pagină a fost construită utilizând header-ul / footer-ul specific, iar conținutul oferă detaliile de contact ale prestatorului de servicii și este prezentă și o hartă pentru localizare.

În plus este prezent și un formular ce trimite, cu ajutorul limbajului PHP, email catre administrator.

Figura 3.9 “Contact“

3.3. Cazuri de utilizare specifice UML (Unified Modeling Language)

Pentru a înțelege modul de funcționare al acestei aplicații trebuie să se identifice indicatorii care interacționează cu aceasta, respectiv cazurile de utilizare ce pot fi realizate.

În cazul aplicației de față pot fi identificați următorii actori: adminstratorul/moderatorii și utilizatorii. Adminstratorul/mederatorii sunt cei ce pot adăuga, șterge sau edita informații despre filme, utilizatori, termeni și condiții și detalii despre servicii și contact.

Utilizatorii sunt cei care în urma înregistrarii în aplicație pot procesa/anula rezervări efectuate în propriul cont.

Figura 3.10 Schema bloc a sistemului software

Drepturile administratorului / moderatorilor:

Figura 3.11 Schema de utilizare a aplicației de către administratorului / moderatorilor

3.4. Structura bazei de date

Baza de date a aplicației realizate cuprinde următoarele tabele:

User (utilizatori)

Users (administrator/moderatori)

Movie (film)

Data_film

Scaune

Rezervări

Pagina_despre

Pagina_termeni

Pagina_contact

Figura 3.12 Structura bazei de date

Tabela users a fost creată pentru administrator și moderatori și conține următoarele câmpuri:

user_id– id-ul moderatorului este unic – primary key, auto-increment;

email- câmp unde se memorează email-ul moderatorului;

password– câmp unde se memorează parola pe care o va avea moderatorul pentru a putea accesa contul.

Figura 3.13 Tabela Users (administrator/moderatori)

Tabela user este asemanatoare cu cea de moderatori, însă aceasta a fost creată pentru utilizatorii care se înregistrează în aplicație pentru a putea face rezervări:

user_id– id-ul utilizatorului este unic – primary key, auto-increment;

email- câmp unde se memorează email-ul utilizatorului;

password– câmp unde se memorează parola pe care utilizatorul o alege atunci când își creează un cont nou;

created- data când a fost creat contul.

Figura 3.14 Tabela User (utilizatori)

Tabela movie (filme) cuprinde câmpurile următoare:

id– id-ul filmului este unic – primary key, auto-increment;

nume – câmpul în care se înregistrează numele filmului;

conținut- câmp unde se memorează o scurtă descriere a filmului;

poza – câmpul în care se atașează o imagine filmului;

gen- câmp unde se adaugă genul filmului;

notă – câmpul în care se memorează nota atribuită filmului;

data- câmp unde se adaugă datele și orele de difuzare a filmului;

poziție- câmp unde se memorează oridinea respectivului film în listă;

vizibil – câmpul în care se memorează dacă film mai este difuzat în cinematografe (0 – nu și nu va mai fi vizibil în aplicație pe modulul utilizatorilor; 1 – da și filmul va fi vizibil în aplicație conform poziției memorate în campul anterior);

home – câmp unde se memorează dacă filmul va aparea pe pagina principală în lista cu filme populare acum in cinematografe.

Figura 3.15 Tabela movie (filme)

Tabela dată_film cuprinde câmpurile următoare:

id– id-ul datei este unic – primary key, auto-increment;

id_film – este id (primary key ) din tabela movie (film);

data_f – câmp unde se memorează dată și oră când filmul va fi difuzat.

Figura 3.16 Tabela dată_film

Tabela scaune cuprinde câmpurile următoare:

id– id-ul scaunului este unic – primary key, auto-increment;

id_rezervare – este id (primary key ) din tabela rezervare;

id_scaun_movie – este id (primary key ) din tabela movie (film);

scaun – câmp unde se memorează numele scaunului;

ocupat – câmpul în care se memorează dacă scaunul a fost rezervat (0 – scaunul nu este rezervat; 1 – scaunul este rezervat).

Figura 3.17 Tabela scaune

Tabela rezervări cuprinde câmpurile următoare:

id– id-ul rezervării este unic – primary key, auto-increment;

movie_name – este câmpul nume din tabela movie (film);

id_movies – este id (primary key ) din tabela movie (film);

id_user – este id (primary key ) din tabela user (utilizatori);

id_email – este câmpul email din tabela user (utilizatori);

bilete – câmpul în care se memorează numărul de bilete achiziționate;

cinematograf – câmp unde se adaugă numele cinematografului ales;

scaun – este câmpul scaun din tabela scaune;

data_movies – este câmpul data_f din tabela dată_film;

status – câmpul în care se memorează dacă rezervarea este activă sau a fost anulată (0 – rezervarea a fost anulată; 1 – rezervarea este activă).

creat – data când a fost facută rezervarea.

Figura 3.18 Tabela rezervări

Tabela pagina_despre cuprinde câmpurile următoare:

id– id-ul este unic – primary key, auto-increment;

titlu – câmp unde se memorează titlul paginii;

conținut – câmp unde se memorează textul (descrierea);

created- data când a fost introdus textul.

Figura 3.19 Tabela pagina_despre

Tabela pagina_termeni cuprinde câmpurile următoare:

id– id-ul este unic – primary key, auto-increment;

titlu – câmp unde se memorează titlul paginii;

conținut – câmp unde se memorează textul (descrierea);

created- data când a fost introdus textul.

Figura 3.20 Tabela pagina_ termeni

Tabela pagina_contact cuprinde câmpurile următoare:

id– id-ul este unic – primary key, auto-increment;

titlu – câmp unde se memorează titlul paginii;

conținut – câmp unde se memorează textul (descrierea);

created- data când a fost introdus textul.

Figura 3.21 Tabela pagina_ contact

3.5. Modului utilizatori – înregistrarea și autentificarea în aplicație

Înregistrarea utilizatorului se face prin accesarea butonul “Înregistrare” din hearder-ul paginii principale (sau oricare alta pagină a aplicației ce prezintă header-ul specific).

Figura 3.22 Modul înregistrare utilizatori

Pentru o înregistrare corectă este necesar a fi completate câmpurile : „email” definit printr-un exemplu (exemplu@email.com) și ”parola”.

În cazul în care utilizatorul a completat eronat adresa de email sau nu a completat în unul dintre câmpuri, va apărea un mesaj de atenționare.

Figura 3.23 Modul înregistrare utilizatori – mesaj de atenționare eroare

Dacă au fost completate corect câmpurile solicitate, în aplicație va apărea un mesaj de atenționare specific.

Figura 3.24 Modul înregistrare utilizatori – mesaj de atenționare înregistrare cu succes

În același timp pe adresa de email completată se va primi un email de confirmare ce conține credențialele înregistrării.

Figura 3.25 Email înregistrare utilizatori – mesaj înregistrare cu succes

Tot în acest modul este disponibilă și funcția de ”Recuperare parolă” în cazul în care aceasta a fost uitată. Trebuie introdusă adresa de email folosită la crearea contului.

Dacă adresa de email se regasește în unul din conturile create, aplicația va afișa un mesaj de confirmare, iar pe adresa de email respectivă vor fi retrimise credențialele contului.

Figura 3.26 Modul recuperare parolă– mesaj de atenționare parolă recuperată

Figura 3.27 Email recuperare parolă– credențiale recuperate

Dacă aici va fi introdusă o adresa de email incompletă/incorectă sau care nu a fost folosită la crearea unui cont în aplicație, va apărea un mesaj de atenționare.

Figura 3.28 Modul recuperare parolă– mesaj de atenționare eroare

Autentificarea utilizatorului se face prin accesarea butonul “Accesare cont” din hearder-ul paginii principale (sau oricare alta pagină a aplicației ce prezintă header-ul specific).

Figura 3.29 Pagină autentificare utilizatori

Dacă aici va fi introdusă o adresa de email incompletă/incorectă va apărea un mesaj de atenționare.

Figura 3.30 Pagină autentificare– mesaj de atenționare eroare email incomplet

Dacă adresa de email sau parola introdusă nu a fost folosită la crearea unui cont în aplicație, va fi generată altă eroare.

Figura 3.31 Pagină autentificare– mesaj de atenționare eroare email inexistent

După ce au fost introduse corect credențialele și se va accesa contul, utilizatorul va fi redirecționat pe pagina principală.

Se observă că în hearder butoanele de ”Înregistrare” și ”Accesare cont” s-au preschimbat în iconiță de tip ”user” ce conține un buton de tip ”drop down list” cu opțiunea ”Rezervări” și se urmează cu butonul ”Deconectare”.

Figura 3.32 Pagină principală– utilizator autentificat

Accesând butonul ”Rezervări” se va deschide o pagina specifică fiecarui utilizator unde se regaseste istoricul rezervărilor. Când un cont nu are procesată nici o rezervare, această listă va fi alcătuită doar din capul de tabel.

Figura 3.33 Pagina utilizatorului – istoric rezervări

Dacă pe orice pagină a aplicației va fi accesat butonul de ”Deconectare”, prezent în header, utilizatorul va fi scos din cont și redirectionat pe pagina principală.

3.5. Modulul filme

Elementul central al acestei platforme informatice este filmul.

Pagina listei complete cu filme acum în cinematografe se poate accesa pe butonul ”Filme” din header. Această pagină este structurată în două parți: în partea stângă se gasește o listă completă cu titlurile acestora, iar în partea dreaptă sunt pictograme cu imaginile copertă ale filmelor. Un film poate fi accesat atât din listă cât și pe butonul ”Detalii” prezent în subsolul fiecărei imagini copertă sau printr-un click oriunde pe pictograma filmului respectiv.

Figura 3.34 Pagina Filme

Totodată un film mai poate fi direct accesat de pe pagina principală din secțiunea de recenzii sau din secțiunea filmelor populare acum în cinematografe.

Figura 3.35 Pagina principală – secțiune filme

Accesând oricare dintre filme se va deschide o nouă pagină a modulului cu detaliile filmului respectiv.

Figura 3.36 Pagina filmului 4 – Godzilla: King of the Monsters

Această pagină este alcatuită din:

imaginea copertă a filmului;

titlul filmului;

genul filmului;

notă atribuită filmului;

buton de tip ”drop down list” pentru a selecta dată de difuzare disponibilă pentru acest film;

buton de tip ”drop down list” pentru a selecta cinematograful unde se dorește a se viziona filmul;

lista de locuri in sală, unde conform legendei culoarea verde semnifică locurile disponibile iar culoarea roșie arată ca respectivul loc a fost deja rezervat și in acest moment nu poate fi achiziționat;

legendă a locurilor în săli: roșu însemnând scaun ocupat și verde scaun liber;

scurtă descriere a fimului.

În cazul în care utilizatorului nu este logat în cont, chiar dacă poate accesa această pagină a modulului, nu va putea finaliza rezervarea deoarece nu are disponibil butonul de confirmare. În schimb se poate observa un mesaj de avertizare în acest sens ce îndeamnă utilizatorul să creeze un cont pentru a putea rezerva bilete.

Figura 3.37 Pagina filmului – mesaj de atenționare pentru lipsă autentificare în cont

Fiind logat în cont, când utilizatorul ajunge în acest modul al aplicației va putea finaliza rezervarea prin apăsarea butonului ”Rezervă”. Însă pentru aceasta trebuiesc completate toate câmpurile formularului. În caz contrar vor fi afișate mesaje de eroare în funcție de câmpul necompletat găsit.

Figura 3.38 Pagina filmului – mesaj de atenționare pentru lipsă completare câmpuri dată și cinematograf

Figura 3.39 Pagina filmului – mesaj de atenționare pentru lipsă selectare scaun/e

Figura 3.40 Pagina filmului – Formular complet pentru rezervare

O dată ce s-a dat click pe butonul ”Rezervă”, se va afișa un mesaj de atenționare în dreptul acestui buton.

Figura 3.41 Pagina filmului – mesaj de atenționare rezervare completă

În același timp s-a emis un email către utilizatorul respectiv pe adresa de email cu care a fost creat contul. De precizat că si administratorul aplicației va primi acelasi email pe adresa s-a de email.

Figura 3.42 Email rezervare completă

Emailul va conține imaginea logo a aplicației și URL-ul aplicației, numele filmului, numele locurilor rezervate, data și ora difuzării și cinematograful. Din nou utilizatorul este atenționat să se prezinte cu cel puțin 30 minute înainte de începerea filmului pentru a achita biletele.

3.6. Modulul profil utilizator – Istoric rezervări

După completarea și finalizarea unei rezervări, utilizatorul are opțiunea de a accesa ”Istoric rezervări” personale (vezi Figura 3.32 Pagină principală– utilizator autentificat).

Aici se găsește un tabel cu toate rezervările facute de utilizator din momentul deschiderii acestui cont și până în prezent. Coloanele tabelului sunt:

– numele filmului;

– locul rezervat – cu precizarea ca pentru fiecare scaun v-a fi creat un nou rând în table indifferent ca rezervarea acestora a fost în același formular;

– data difuzării;

– buton de posibilitate de anulare a rezervării;

– în cazul în care butonul de acționare a anulării rezervării a fost deja acționat, în locul acestuia va apărea mesajul ”Anulată”.

De precizat că în cazul în care utilizatorul dorește să anuleze o rezervare, va fi întampinat de un mesaj de atenționare. (Figura 3.44)

Figura 3.43 ”Istoric rezervări”

Figura 3.44 ”Istoric rezervări” – mesaj de atenționare anulare rezervare

3.7. Modulul contact

Modulul contact poate fi accesat atât din butonul ”Contact” prezent în header-ul aplicației cât și din funcția cu același nume prezentă în footer și prezintă număr de telefon și adresa de email a distribuitorului de servicii, hartă pentru localizare a cinemagrafelor, cât și un formular pentru a contacta direct administratorul aplicației.

Formularul de contact poate fi utilizat atât de utilizatorii înregistrați cât și de vizitatori.

Completând datele solicitate (nume, prenume, adresa email, telefon și mesaj) și apăsarea butonului ”Trimite”, administratorul va primi un email cu aceste date. (Figura 3.43) În cazul în care unul din câmpurile obligatorii nu este completat, mesajul nu va fi trimis și va aparea un mesaj de atenționare. (Figura 3.45)

Figura 3.45 Modul ”Contact” – formular de contact

Figura 3.46 Modul ”Contact” – email formular de contact

Figura 3.47 Modul ”Contact” – mesaj de atenționare pentru lipsă completare câmpuri

3.8. Modului administrator/moderatori – autentificarea în aplicație

Autentificarea adminstratorului sau moderatorilor se face pe forma web autentificare.php sau accesând URL-ul http://cinema.devion.ro/cms/.

Figura 3.48 Modul autentificare administrator/moderator

În acest modul în cazul în care s-au introdus datele greșit sau credențialele nu sunt pentru acesarea acestui modul, nu va aparea un mesaj de eroare însă pagina se va reîncărca pentru a fi introduse credențiale viabile.

O dată accesat, se poate observa, asemenea paginii principale ale acestui modul, că fereastra browserului este împărțită în 3 zone:

antetul – ce conține numele aplicatiei, un buton cu funcția de restrăngere/deschidere a meniului (amplasat în stânga ferestrei) și o iconiță/imagine tip buton ce o dată accesat va afișa adresa de email a utilizatorului și funcția de deconectare din modul (figura 3.40);

meniul – amplasat în stânga ferestrei; conține opțiunile de navigare către funcțiile acestui modul (figura 3.41);

zona de lucru – reprezintă zona prorpiu-zisă în care sunt afișate formularele, rapoartele și alte elemente vizuale ale fiecărui modul al aplicației.

Figura 3.49 Modul CMS – antet

Figura 3.50 Modul CMS – meniu

3.9. Funcții modul administrator/moderatori (CMS)

Funcțiile sistemului de administrare a conținutului (CMS) pot fi accesate din meniu indiferent de opțiunea prezentă în acel moment în zona de lucru.

3.9.1. Pagina principală

Prima funcție a meniului va deschide pagina principală, pagină care va fi automat afișată când administratorul/moderatorul accesează modul. În zona de lucru se vor afișa:

numărul tuturor filmelor ce au fost introduse în baza de date pentru a putea face rezervări în cinematografe, numărul total al scaunelor ocupate în săli, numărul total de scaune existente în sălile înregistrate și numărul de rezervări ce au fost făcute în aplicație din momentul lansării acesteia și până în prezent;

diagramă denumită ”Istoric” unde sunt expuse datele prezentate mai sus;

grafic unde este prezentată evoluția în timp a numărului utilizatorilor înregistrați în aplicație și numărul total de scaune rezervate în cinematografe.

Figura 3.51 Pagina principală

3.9.2. Pagini

A doua funcție, intitulată ”Pagini”, este defapt un buton de tip ”drop down list” ce deschide urmatoarele opțiuni: ”Despre noi”, ”Contact” și ”Termeni și condiții”.

3.9.2.1. Despre noi

Funcția ”Despre noi” deschide formularul de introducere a datelor ce vor fi afișate în aplicație pe pagina intitulată asemenea. Aceasta va conține un titlu si un text descriptiv al societății care se ocupă de prestarea serviciilor puse la dispoziție.

Figura 3.52 Funcția ”Despre noi”

3.9.2.2. Contact

Asemenea funcției ”Despre noi”, această funcție prezintă tot un formular de introducere a datelor ce vor fi afișate în aplicație, de această dată pe pagina intitulată ”Contact”, și va conține un titlu si un text cu datele de contact ale societății.

Figura 3.53 Funcția ”Contact”

3.9.2.3. Termeni și condiții

Opțiunea ”Termeni și condiții” va afișa formularul de introducere a datelor afișate în aplicație pe pagina intitulată asemenea. Aceasta va conține un titlu si un text descriptiv ale societății pentru reglemetarea regulilor impuse de societate pentru folosirea serviciilor puse la dispoziție.

Figura 3.54 Funcția ”Termeni și condiții”

3.9.3. Filme

A treia funcție a meniului va deschide pagina filme. În zona de lucru se vor afișa:

buton cu opțiunea de adăugare a unui film nou în baza de date;

buton de tip ”drop down list” pentru a selecta câte titluri să apară pe o pagină a tabelului;

funcție de cautare a unui titlu de film;

listă cu toate filmele introduse în baza de date, nota, daca este disponibil momentan și poziția acestuia in lista de filme;

butoane prezente în capul de tabel pe fiecare coloană în parte care printr-o simpla accesare ordonează crescator/descrescator titlurile in funcție de coloana respectivă;

fiecare film în parte prezintă două butoane: ”editează” pentru a schimba datele introduse în baza de date pentru titlul respectiv și butonul ”șterge” pentru a elimina din baza de date; dacă este selectată opțiunea de ștergere va aparea un mesaj de confirmare pentru siguranță (figura 3.46)

butoane pentru răsfoirea paginilor cu titulurile prezente.

Figura 3.55 Funcția ”Filme” – mesaj de atenționare stergere film

Figura 3.56 Funcția ”Filme”

3.9.3.1. Adăugare film

Butonul intitulat ”Adaugă” va deschide o fereastra tip ”pop-up” cu un formular pentru a introduce datele corespunzătoare pentru a salva un nou film în baza de date. Acesta conține câmpuri pentru a introduce urmatoarele:

numele filmului;

buton de tip ”drop down list” pentru a selecta genul filmului;

nota filmul;

descriere film;

încărcare poză copertă film;

poziție – locul filmului în lista ce afișeaza toate titlurile din baza de date;

vizibil – alegere dacă în prezent filmul se rulează în cinematografe;

vizibil home page (pagina principala) – selectare daca filmul este popular în cinematografe pentru a fi afișat si pe pagina principală a aplicației in modului utilizator;

adauga dată – adaugare dată/oră de difuzare în cinematografe;

Formularul se termină cu doua butoare: ”salvează” și ”închide”.

Figura 3.57 Funcția ”Filme” – opțiunea ”Adaugă”

3.9.3.2. Editează film

Asemenea butonului ”Adaugă”, prin accesarea butonului ”Editează” se va deschide o fereastră care conține aceleași câmpuri cu diferența ca acum sunt vizibile și datele alese pentru difuzarea filmul pot fi editate sau șterse.

Figura 3.58 Funcția ”Filme” – opțiunea ”Editează”

Figura 3.59 Funcția ”Filme” – opțiunea ”Editează” secțiune dată

3.9.4. Locuri în săli

A patra funcție a meniului se vor afișa detaliile tutror scaunelor disponibile în sălile de cinematograf. În zona de lucru se vor afișa:

buton cu opțiunea de adăugare a unui scaun nou în baza de date;

buton de tip ”drop down list” pentru a selecta numărul de intrari care sa apară pe o pagină a tabelului;

funcție de cautare a unui scaun;

listă cu toate scaunele introduse în baza de date, având prezent numele filmului care se va difuza, numele scaunului, numărul de scaune libere pentru acel film, numărul de scaune rezervare și numărul total de scaune introduse pentru acel film;

butoane prezente în capul de tabel pe fiecare coloană în parte care printr-o simpla accesare ordonează crescator/descrescator titlurile in funcție de coloana respectivă;

fiecare scaun în parte prezintă două butoane: ”editează” pentru a schimba datele introduse în baza de date pentru locul respectiv și butonul ”șterge” pentru a fi eliminat din baza de date; dacă este selectată opțiunea de ștergere va aparea un mesaj de confirmare pentru siguranță (asemenea figurii 3.46 Funcția ”Filme” – mesaj de atenționare stergere film);

butoane pentru răsfoirea paginilor cu titulurile prezente.

Figura 3.60 Funcția ”Locuri în săli”

3.9.4.1. Adăugare scaun

Butonul intitulat ”Adaugă” va deschide o fereastra tip ”pop-up” cu un formular pentru a introduce datele corespunzătoare pentru a salva un nou scaun în baza de date. Acesta conține câmpuri pentru a introduce urmatoarele:

numele filmului;

data de difuzare a filmului ales;

buton de adăugare scaun ce implică adăugarea numelui locului respectiv; totodata acesta poate fi anulat din lista.

Formularul se termină cu doua butoare: ”salvează” și ”închide”.

Figura 3.61 Funcția ”Locuri în săli” – opțiunea ”Adaugă”

3.9.4.2. Editează film

Asemenea butonului ”Adaugă”, prin accesarea butonului ”Editează” se va deschide o fereastră care conține aceleași câmpuri cu diferența ca acum sunt vizibile informațiile introduse anterior.

Figura 3.62 Funcția ”Locuri în săli” – opțiunea ”Editează”

3.9.5. Rezervări

A cincea funcție a meniului se vor afișa detaliile tuturor rezervărilor făcute în aplicație pentru locurile disponibile în sălile de cinematograf. În zona de lucru se vor afișa:

butoane pentru a putea extrage rapoare în format CVS, Excel, PDF, de printat sau opțiunea de a copia datele pentru a le plasa în fișierul dorit (figurile 3.55, 3.56, 3.57);

funcție de cautare a unei rezervări;

listă cu toate rezervările introduse în baza de date, având prezent adresa de email a utilizatorului, numele filmului pentru care s-a facut rezervarea, numele cinematografului, numele scaunului rezervat, data și ora de difuzare și statusul rezervării;

butoane prezente în capul de tabel pe fiecare coloană în parte care printr-o simpla accesare ordonează crescator/descrescator titlurile in funcție de coloana respectivă;

fiecare scaun în parte prezintă butonul de ștergere (anulare a rezervării); dacă este selectată opțiunea de ștergere va aparea un mesaj de confirmare pentru siguranță (asemenea figurii 3.46 Funcția ”Filme” – mesaj de atenționare stergere film);

butoane pentru răsfoirea paginilor cu titulurile prezente.

Figura 3.63 Funcția ”Rezervări”

Figura 3.64 Funcția ”Rezervări” – raport format Excel / CSV

Figura 3.65 Funcția ”Rezervări” – raport format PDF

Figura 3.66 Funcția ”Rezervări” – raport format printare

3.9.6. Utilizatori

În a șasea funcție a meniului se vor afișa detaliile tuturor utilizatorilor înscriți în aplicație. În zona de lucru se vor afișa:

butoane pentru a putea extrage rapoare în format CVS, Excel, PDF, de printat sau opțiunea de a copia datele pentru a le plasa în fișierul dorit (asemenea figurilor 3.55, 3.56, 3.57);

funcție de cautare a unui utilizator;

listă cu toate adresele de email ale utilizatorilor care au creat cont în aplicație și data când s-a facut înregistrarea;

butoane prezente în capul de tabel pe fiecare coloană în parte care printr-o simpla accesare ordonează crescator/descrescator titlurile in funcție de coloana respectivă;

butoane pentru răsfoirea paginilor cu titulurile prezente.

Figura 3.67 Funcția ”Utilizatori”

3.9.7. Moderatori

Ultima funcție a meniului va afișa adresele de email a tuturor moderatorilor aplicației. În zona de lucru se vor afișa:

buton cu opțiunea de adăugare a unui moderator nou în baza de date;

listă cu toate adresele de email a moderatorilor;

fiecare moderator în parte prezintă două butoane: ”editează” pentru a schimba datele introduse în baza de date și butonul ”șterge” pentru a fi eliminat din baza de date; dacă este selectată opțiunea de ștergere va aparea un mesaj de confirmare pentru siguranță (asemenea figurii 3.46 Funcția ”Filme” – mesaj de atenționare stergere film).

Figura 3.68 Funcția ”Moderatori”

3.9.7.1. Adăugare scaun

Butonul intitulat ”Adaugă” va deschide o fereastra tip ”pop-up” cu un formular pentru a introduce adresa de email și parola pentru a salva un nou cont de moderator în baza de date. Acest formular conține următoarele câmpuri:

adresa de email;

parola.

Formularul se termină cu doua butoare: ”salvează” și ”închide”.

O dată adăugat, moderatorul poate accesa, pe lângă modulul de administrator/moderator, si modului de utilizator.

Figura 3.69 Funcția ”Moderatori” ” – opțiunea ”Adaugă”

3.9.4.2. Editează moderator

Asemenea butonului ”Adaugă”, prin accesarea butonului ”Editează” se va deschide o fereastră care conține aceleași câmpuri cu diferența ca acum sunt vizibile informațiile introduse anterior (cu precizarea ca parola este ascunsă).

Figura 3.70 Funcția ”Locuri în săli” – opțiunea ”Editează”

CONCLUZII

Pentru realizarea aplicației software ”Aplicație informatică pentru cinema” a fost necesară utilizarea mai multor cunoștințe teoretice și practice dobândite în cei patru ani de studiu universitar.

Aplicația creată oferă clienților posibilitatea de a achiziționa bilete la orice ora, indiferent de locație salvând timp atât pentru client cât și pentru prestatorul de servicii.

Spre deosebire de aplicațiile similare din acest domeniu, proiectul de față oferă o mai bună statistică a vânzărilor și gestiune adminstrativă eficientă, al căror rol este acela de a ajuta la luarea de decizii.

Contribuția personală se regăsește în:

analiza cerințelor dezvoltării unei astfel de aplicații și selectarea tehnologiilor folosite;

proiectarea și realizarea bazei de date;

proiectarea și realizarea interfeței aplicației;

proiectarea și realizarea sistemului de administrare a conținutului (CMS) care permite managementul conținutului

introducerea datelor pentru testare;

dezvoltarea și testarea aplicației.

Desigur, aceasta nu este o aplicație pentru producție ci a fost realizată în scop academic. Pentru perfecționarea ei este nevoie de o interconectare a acesteia cu sistemul de ocupare locuri în săli din cinematografe și plata biletelor la ghișeele disponibile sau prin sisteme procesatoare de plăți online cu cardul.

BIBLIOGRAFIE

ANEXE

//index.php

<?php session_start();?>

<?php

include('config.php');

?>

<!doctype html>

<html lang="en">

<head>

<!– Required meta tags –>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<link rel="stylesheet" href="css/custom.css">

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">

<link rel="stylesheet" href="css/owl.carousel.min.css">

<link rel="stylesheet" href="css/owl.theme.default.min.css">

<title>Cinemau</title>

<style>

.carousel-caption{

bottom:30%!important;

}

.img-fix{

width: 140px;

height: 140px;

border-radius: 50%;

}

</style>

</head>

<body>

<?php include('header.php'); ?>

<main style="height:100vh;">

<?php

if(isset($_GET['id_movie'])){

include('descriere.php');

}elseif(isset($_GET['login'])){

include('login.php');

}elseif(isset($_GET['filme'])){

include('lista-filme.php');

}elseif(isset($_GET['reset-password'])){

include('reset.php');

}elseif(isset($_GET['rezervari'])){

include('rezervari_user.php');

}elseif(isset($_GET['contact'])){

include('contact.php');

}elseif(isset($_GET['termeni-si-conditii'])){

include('termeni.php');

}else{

include('homepage.php');

}

?>

<?php include('footer.php'); ?>

</main>

<!– Modal –>

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">

<div class="modal-dialog" role="document">

<div class="modal-content">

<div class="modal-header">

<h5 class="modal-title" id="exampleModalLabel">Inregistrare</h5>

<button type="button" class="close" data-dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

</div>

<div class="modal-body">

<div id="mail-status"></div>

<form action="" method="POST" id="inrForm" novalidate>

<div class="row">

<div class="col-md-12">

<input type="email" class="form-control" name="email" id="email" placeholder="exemplu@email.com">

</div>

</div>

<div class="row mt-3">

<div class="col-md-12">

<input type="password" class="form-control" name="password" id="password" placeholder="parola">

</div>

</div>

<div class="links d-flex justify-content-between mt-3">

<a href="login" class="btn btn-primary">Logare</a>

<a href="reset-password" class="btn btn-warning">Resetare parola</a>

</div>

<button type="submit" id="inr" class="btn btn-primary btn-center mt-3 btn-block">Inregistrare</button>

<div id="loader-icon" style="display:none;"><img src="images/loader.gif" /></div>

</form>

</div>

<div class="modal-footer">

<button type="button" class="btn btn-secondary" data-dismiss="modal">inchide</button>

</div>

</div>

</div>

</div>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

<script

src="https://code.jquery.com/jquery-3.4.1.min.js"

integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="

crossorigin="anonymous"></script>

<script src="js/owl.carousel.min.js"></script>

<script>

$(document).ready(function (e){

$("#inrForm").on('submit',(function(e){

e.preventDefault();

$("#mail-status").hide();

$('#inr').hide();

$('#loader-icon').show();

$.ajax({

url: "register.php",

type: "POST",

dataType:'json',

data: {

"email":$('input[name="email"]').val(),

"password":$('input[name="password"]').val()},

success: function(response){

$( '#inrForm' ).each(function(){

this.reset();

});

$("#mail-status").show();

$('#loader-icon').hide();

if(response.type == "error") {

$('#inr').show();

$("#mail-status").attr("class","alert alert-danger");

} else if(response.type == "message"){

$('#inr').show();

$("#mail-status").attr("class","alert alert-success");

}

$("#mail-status").html(response.text);

},

error: function(){}

});

}));

});

</script>

<script>

$(document).ready(function (e){

$("#resetForm").on('submit',(function(e){

e.preventDefault();

$("#mail-status2").hide();

$('#resetBtn').hide();

$('#loader-icon2').show();

$.ajax({

url: "reset_pass.php",

type: "POST",

dataType:'json',

data: {

"email3":$('input[name="email3"]').val()},

success: function(response){

$( '#resetForm' ).each(function(){

this.reset();

});

$("#mail-status2").show();

$('#loader-icon2').hide();

if(response.type == "error") {

$('#resetBtn').show();

$("#mail-status2").attr("class","alert alert-danger");

} else if(response.type == "message"){

$('#resetBtn').show();

$("#mail-status2").attr("class","alert alert-success");

}

$("#mail-status2").html(response.text);

},

error: function(){}

});

}));

});

</script>

<script>

$(document).ready(function (e){

$("#frmRezerva").on('submit',(function(e){

e.preventDefault();

var $fields = $(this).find('input[name="scaun_film[]"]:checked');

if (!$fields.length) {

alert('Selectati un scaun sau mai multe!');

return false;

}

var arr=[];

$.each($("input[name='scaun_film[]']:checked"), function(){

arr.push($(this).val());

});

console.log(arr)

$("#mail-status3").hide();

$('#rezBtn').hide();

$('#loader-icon3').show();

$.ajax({

url: "rezervare.php",

type: "POST",

dataType:'json',

data: {

"arr": arr,

"id_movie":$('input[name="id_movie"]').val(),

"nume_film":$('input[name="nume_film"]').val(),

"gen_film":$('input[name="nume_film"]').val(),

"nota_film":$('input[name="nota_film"]').val(),

"user_id":$('input[name="user_id"]').val(),

"user_email":$('input[name="user_email"]').val(),

"data_film":$('select[name="data_film"]').val(),

//"scaun_film":$('input[name="scaun_film"]').val(),

"bilete_film":$('input[name="bilete_film"]').val(),

"cinematograf":$('select[name="cinematograf"]').val()},

success: function(response){

window.setTimeout(function(){location.reload()},2000)

$("#mail-status3").show();

$('#loader-icon3').hide();

if(response.type == "error") {

$('#rezBtn').show();

$("#mail-status3").attr("class","alert alert-danger");

} else if(response.type == "message"){

$('#rezBtn').show();

$("#mail-status3").attr("class","alert alert-success");

}

$("#mail-status3").html(response.text);

},

error: function(){}

});

}));

});

</script>

<script>

$(document).ready(function(){

$(".owl-carousel").owlCarousel();

});

</script>

</body>

</html>

//lista-filme.php

<div class="container" style="margin-top:80px;margin-bottom:80px;">

<div class="row">

<div class="col-md-4">

<div class="card">

<ul class="list-group list-group-flush">

<?php

$sl = "SELECT * FROM movie";

$sq = mysqli_query($conn, $sl);

while ($rf = mysqli_fetch_assoc($sq)) {?>

<li class="list-group-item"><a href="<?=url_slug($rf['nume'])?>-<?=$rf['id']?>.html"><?=$rf['nume'];?></a></li>

<?php }

?>

</ul>

</div>

</div>

<div class="col-md-8">

<div class="row">

<?php

$sl = "SELECT * FROM movie";

$sq = mysqli_query($conn, $sl);

while ($rf = mysqli_fetch_assoc($sq)) {?>

<div class="col-md-6">

<div class="card" style="width: 18rem;">

<a href="<?=url_slug($rf['nume'])?>-<?=$rf['id'];?>.html"><img class="card-img-top" src="cms/movie/<?=$rf['poza'];?>" alt="<?=$rf['poza'];?>"></a>

<div class="card-body">

<p class="card-text"><?=$rf['nume']?></p>

<a href="<?=url_slug($rf['nume'])?>-<?=$rf['id'];?>.html" class="btn btn-primary">Detalii</a>

</div>

</div>

</div>

<?php } ?>

</div>

</div>

</div>

</div>

Similar Posts