Sistem de Ticketing Si Pontaj Online
Scopul lucrării
Această aplicație a luat naștere din necesitatea de a se gestiona și utiliza online un sistem de alocare de sarcini mai multor utilizatori înregistrați din cadrul unei rețele locale Intranet sau globale – Internet. Aplicația rulează pe un server Web (ex. Apache) care include platforme ca: PHP, MySQL, HTML.
Prin lansarea acestei aplicații se dorește ca utilizatorul să poatã folosi câteva facilitãți cu un consum minim de resurse. Dacă această aplicație este folosită în cadrul unei companii și vorbim din punctul de vedere al conducerii acestei companii, se pot centraliza și ține într-o anumită evideță sarcinile date angajaților. Dacă ne referim aici la angajatul unei companii ce primește o anumita sarcină, acesta iși poate vedea și efectua sarcinile într-un timp stabilit în prealabil.
Prezentarea aplicației
Sistemul de ticketing și pontaje online reprezintă o aplicație sigură 100% din punct de vedere al securității, astfel încât utilizatorul să nu aibă încă o grijă în plus. Datele din baza de date a aplicației pot fi accesate doar după ce utilizatorul se loghează cu succes.
Aplicatia este împărțită în două module principale, pentru user și pentru administrare. Userul este reprezentat de angajatul companiei, care va avea acces și de a le finaliza printr-o rezoluție sarcinile trimise de șeful ierarhic. Partea de administrare este concepută pentru a putea adăuga-șterge/vizualiza angajații unei companii și respectiv gestiunea ticketelor (alocare ticket per user, vizualizarea ticketelor alocate, stergere tickete alocate), de a extrage rapoarte pe zile/lunare cu timpul petrecut de utilizatori de după primirea sarcinilor(ticketelor) și până la finalizarea lor și nu în ultimul rând de a vizualiza statusurile fiecărei sarcini (ticket) primit de utilizator.
Introducere
Conținutul lucrării este dat de construcția de legături dintre World Wide Web și baze de date, dintre tehnologia veche și cea nouă, codarea la nivel inferior și folosirea uneltelor “high-level”, dintre tehnicieni și producători sau manageri, dintre izolarea unei mici rețele (intranet) și comunitatea globală Internet. Universul bazelor de date și World Wide Web este un val complex de produse vechi și noi, de moduri de gândire vechi și noi.
Scopul principal urmărit este acela de rezolvare a problemelor (task-urilor) atribuite printr-un sistem de ticketing și pontaj online și de a regăsi într-un timp cât mai scurt informații legate de timpul petrecut de un utilizator în rezolvarea unei sarcini, de a asigura unicitatea și flexibilitatea datelor gestionate.
Proiectul este structurat pe 5 capitole și are ca scop demonstrarea posibilităților multiple și avantajele pe care le posedă bazele de date, în cazul de față MySQL folosite împreună cu limbajele HTML și PHP.
Primul capitol este un scurt istoric privind PHP, MySQL și JavaScript pentru a introduce cititorul în lumea informatică.
Al doilea capitol își propune să prezinte câteva modele de arhitecturi de aplicații internet și limbajul SQL atât de des folosit la administrarea bazelor de date.
Al treilea capitol are drept scop descrierea stilurilor CSS apoi a sintaxei PHP, modului de utilizare, exemple la folosirea acesteia în aplicatii folosind pachetul WAMP.
Al patrulea capitol prezinta modele unei aplicații cu baze de date, cu exemple concrete din cadrul aplicației realizate.
Al cincelea capitol oferă o imagine de ansamblu asupra aplicației realizate, o prezentare generală, cât și arhitectura generală a site-ului.
Scurtă prezentare privind PHP, MySQL și JavaScript
Un limbaj de scripting pentru server, cum este “PHP(Hypertext Preprocesor): preprocesor de hipertext” este din punct de vedere formal asemănător cu JavaScript (acesta este un limbaj de scripting pentru client), în sensul că ambele tipuri de limbaje permit introducerea unor programe (numite scripturi) în codul HTML utilizat în paginile Web. De obicei, ambele tipuri de limbaje de scripting sunt limbaje interpretate, adică instrucțiunile incluse în programele (numite scripturi) scrise în aceste limbaje sunt translatate într-un format intern și prelucrate una câte una, în loc, ca programul să fie translatat în întregime sau compilat înainte de execuție.
Diferența dintre un limbaj de scripting pentru client (JavaScript) și un limbaj de scripting pentru server constă în aceea că, în timp de browser-ul Web interpretează un script scris într-un limbaj care aparține primului tip (așa cum este JavaScript) după ce pagina care îl conține a fost descărcată pe calculatorul utilizatorului, un script scris într-un limbaj care aparține celui de-al doilea tip (așa cum este PHP) este interpretat pe server, iar pagina HTML generată este trimisă browser-ului (clientului Web). Serverul web poate fi configurat chiar să proceseze toate fișierele HTML cu PHP și astfel utilizatorii nici nu au idee că se folosește un limbaj de scripting.
Utilizarea programării Web pe server are mai multe avantaje. În continuare sunt analizate pe scurt câteva dintre acestea:
nu apar probleme legate de compatibilitatea cu browser-ul, deoarece scripturile scrise într-un astfel de limbaj sunt interpretate pe server;
este permis accesul la resursele aflate pe server (resurse reprezentate în special de fișiere și de baze de date);
se reduce “încărcarea” calculatorului client; acest avantaj este important în cazul în care acest calculator are resurse mai reduse.
Limbajul structurat de interogare SQL folosit de bazele de date relaționale este un limbaj neprocedural. De asemenea, SQL nu conține structuri de control al fluxului. Utilizarea limbajelor de programare care dețin astfel de structuri și care sunt capabile să trimită interogări SQL serverului pentru baze de date constituie o modalitate foarte eficientă de extindere a funcționalităților limbajului SQL. Integrarea în paginile HTML trimise clientului a rezultatelor obținute după execuția scripturilor permite vizualizarea conținutului bazelor de date.
In prezent PHP este folosit de sute de mii de programatori web si cateva milioane de site-uri care il au instalat (estimari de 20% din domeniile de pe Internet existente in prezent).
Deoarece vom folosi MySQL ca server de baze de date, alegem PHP ca limbaj de programare pentru server. În raport cu ASP (Active Server Pages), principalul avantaj este acela că, dacă ASP poate fi utilizat mai ales pe platforme Windows cu server IIS (Microsoft), PHP poate fi exploatat pe o mulțime de platforme, cu mai multe servere Web. PHP este un instrument extrem de util pentru crearea unor aplicații Web dinamice și puternice în domeniile e-business și nu numai.
Limbajul PHP este orientat în special către programarea pentru server, adică interpretorul PHP poate realiza următoarele operații: poate primi, analiza și folosi datele colectate de la utilizatori, poate transmite interogări SQL unui server de baze de date (MySQL) prin intermediul unor funcții dedicate și apoi analiza rezultatele obținute, poate genera pagini Web pe baza rezultatelor interogărilor etc. În concluzie, PHP este cel mai potrivit pentru a fi utilizat ca platformă de programare Web pentru server, deoarece:
apaține categoriei de software open source;
poate fi utilizat pe mai multe platforme software;
se poate conecta la diverse tipuri de baze de date;
include numeroase extensii.
În general, limbajul PHP este utilizat în manierele următoare:
programare pentru server: Este modalitatea în care PHP se utilizează cel mai des și pentru a putea fi utilizat sunt necesare: un server Web, interpretorul PHP și un browser (client Web) utilizat pentru vizualizarea rezultatelor;
programare în linie de comandă. Se poate executa un script PHP fără server Web și fără browser. Este necesar numai interpretorul PHP.
Scrierea aplicațiilor GUI (Graphical User Interface) client. Pentru ca PHP să poată fi utilizat în acest scop, trebuie descărcată și utilizată extensia PHP-GTK de la adresa http://gtk.php.net.
MySQL nu este un proiect Open Source, deoarece este necesară o licență în anumite condiții. Totuși, MySQL se bucură de o amplă popularitate în comunitatea Open Source, deoarece termenii de licență nu sunt foarte restrictivi, (în esență, MySQL este în general gratuit, dacă nu doriți să obțineți profit prin vânzarea sistemului sau a unor servicii care necesită utilizarea acestuia.)
Popularitatea sistemului MySQL nu este limitată la comunitatea Open Source. MySQL este portabil si rulează pe sisteme de operare comerciale (precum Solaris, Irix si Windows) și pe echipamente care merg până la servere de întreprindere, în plus, performanțele sale rivalizează cu acelea ale oricărui sistem de baze de date cu care doriți să îl comparați și poate manipula baze de date de mari dimensiuni, cu milioane de înregistrări.
MySQL apare foarte clar în imaginea care se desfășoară dinaintea ochilor noștri: sisteme de operare disponibile gratuit, care rulează pe echipamente puternice, dar necostisitoare, punând la dispoziția unui număr de oameni mai mare ca oricând o putere substanțială de prelucrare a datelor și alte caracteristici, pe o varietate de sisteme mai largă ca oricând. Această „coborâre" a barierelor economice în ceea ce privește prelucrarea automată a datelor pune soluții puternice pentru baze de date la dispoziția unui număr fără precedent de mare de persoane și instituții. De exemplu, eu folosesc MySQL cu Perl, Apache și PHP pe calculatorul meu. G3 PowerBook, care rulează LinuxPPC. Aceasta îmi permite să-mi transport oriunde rezultatele activității mele. Preț total: costul calculatorului PowerBook.
Instituții care în trecut se mărgineau să viseze la a exploata în folos propriu puterea unui SGBDR cu performanțe ridicate au acum această posibilitate, la un preț foarte redus. Utilizarea bazelor de date este tot mai frecventă si la nivel individual. Oameni care nu se gândeau niciodată că vor folosi baze de date încep să ia în considerare tot felul de utilizări ale acestora, din moment ce procurarea unui sistem de baze de date este facilă – de exemplu, stocarea si accesul la rezultatele unor cercetări genealogice, urmărirea si întreținerea colecțiilor de diferite tipuri (fluturi, mărci poștale, cărți de joc cu jucători de baseball etc.), asistență în demararea unei afaceri sau furnizarea de posibilități de căutare pentru situri Web personale.
De ce să optez pentru MySQL?
Dacă sunteți în căutarea unui sistem gratuit sau necostisitor de gestiune a bazelor de date, puteți alege din mai multe opțiuni: MySQL, mSQL, Postgres, unul din motoarele gratuite (dar fără suport) furnizate de producătorii comerciali și așa mai departe. Când comparați MySQL cu alte sisteme de baze de date, gândiți-vă la ceea ce este cel mai important pentru dumneavoastră. Performanță, suport, caracteristici (conformantă cu SQL, extensii etc.), condiții si restricții de licențiere, preț; toate acestea constituie factori care trebuie luați în considerare. Date fiind aceste considerații, MySQL are de oferit numeroase caracteristici atractive:
Viteză. MySQL este rapid. Programatorii pretind că MySQL este cel mai rapid sistem de baze de date pe care îl puteți găsi. Puteți verifica această afirmație vizitând http: //www. mysql. com/benchmark. html, o pagină de comparație a performanțelor din situ! Web MySQL.
Ușurință în utilizare. MySQL este 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.
Cost. MySQL este gratuit pentru majoritatea utilizărilor interne. Vezi secțiunea „MySQL este gratuit?" ulterior în această introducere.
Suport pentru limbaje de interogare. MySQL înțelege SQL (Structured Query Language – limbaj de interogare structurat), limbajul preferat al tuturor sistemelor moderne de baze de date. De asemenea, puteți avea acces la MySQL folosind aplicații care acceptă ODBC (Open Database Connectivity), un protocol de comunicație cu bazele de date creat de Microsoft.
Caracteristici. La serve comparați MySQL cu alte sisteme de baze de date, gândiți-vă la ceea ce este cel mai important pentru dumneavoastră. Performanță, suport, caracteristici (conformantă cu SQL, extensii etc.), condiții si restricții de licențiere, preț; toate acestea constituie factori care trebuie luați în considerare. Date fiind aceste considerații, MySQL are de oferit numeroase caracteristici atractive:
Viteză. MySQL este rapid. Programatorii pretind că MySQL este cel mai rapid sistem de baze de date pe care îl puteți găsi. Puteți verifica această afirmație vizitând http: //www. mysql. com/benchmark. html, o pagină de comparație a performanțelor din situ! Web MySQL.
Ușurință în utilizare. MySQL este 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.
Cost. MySQL este gratuit pentru majoritatea utilizărilor interne. Vezi secțiunea „MySQL este gratuit?" ulterior în această introducere.
Suport pentru limbaje de interogare. MySQL înțelege SQL (Structured Query Language – limbaj de interogare structurat), limbajul preferat al tuturor sistemelor moderne de baze de date. De asemenea, puteți avea acces la MySQL folosind aplicații care acceptă ODBC (Open Database Connectivity), un protocol de comunicație cu bazele de date creat de Microsoft.
Caracteristici. La server se pot conecta mai mulți clienți simultan. Clienții pot folosi mai multe baze de date simultan. Puteți obține acces la MySQL în mod interactiv, folosind numeroase interfețe care vă permit să introduceți interogări și să vizualizați rezultate: clienți în linie de comandă, browsere Web sau clienți X Window System. De asemenea, este disponibilă o varietate de interfețe de programare pentru limbaje precum C, Perl, Java, PHP și Python. Astfel, aveți opțiunea de a folosi programe client preambalate sau de a vă scrie propriile programe client pentru aplicații personalizate.
Conectivitate și securitate. MySQL poate fi folosit integral în rețele, iar bazele de date sunt accesibile de oriunde din Internet, deci vă puteți partaja datele cu oricine, oriunde. Dar MySQL are controlul accesului, astfel încât persoanele care nu au dreptul să vă citească datele nu vor avea această posibilitate.
Portabilitate. MySQL rulează pe numeroase varietăți de UNIX, precum și pe alte sisteme non-UNIX, ca Windows și OS/2. MySQL rulează pe echipamente de la calculatoare de birou la servere cu performanțe ridicate.
Distribuție liberă. MySQL este ușor de obținut; pentru aceasta, folosiți-vă browserul de Web. Dacă nu înțelegeți funcționarea unei componente sau sunteți curios cu privire la un algoritm, vă puteți procura codul sursă si îl puteți examina. Dacă nu vă place modul de funcționare a unei componente, îl puteți modifica.
Limbajele de script destinate Web-ului permit combinarea script-urilor și a instrucțiunilor (X)HTML pentru a crea pagini Web interactive.
Care este deosebirea între un limbaj de script și un limbaj de programare?
Java, un limbaj de programare orientat obiect creat de Sun, în anumite situații este mult mai bun decât JavaScript. Chiar dacă numele lor și câteva instrucțiuni se aseamănă, Java și JavaScript sunt limbaje total diferite.
VB Script (Visual Basic Scripting Edition) este răspunsul lui Microsoft la JavaScript. Ca și JavaScript, VB Script este un limbaj de script simplu. El are la bază sintaxa Visual Basic, un limbaj de programare Windows foarte răspândit. Script-urile VB Script pot fi direct incluse în documentele (X)HTML.
În ciuda tuturor aparențelor, JavaScript și Java sunt diferite. Din cauza asemănării de nume numeroși sunt cei care cred că JavaScript nu este decât o versiune “simplificată” a limbajului Java. Această presupunere este falsă. Java și JavaScript sunt două tehnologii separate având doar numele și originea apropiate. Sintaxa limbajului JavaScript este parțial inspirată din cea a limbajului Java. Diferența esențială dintre cele două limbaje este aceea că spre dosebire de JavaScript, Java permite crearea de aplicații autonome.
JavaScript este un limbaj de scripting foarte apreciat deoarece:
sunt suficiente câteva linii de cod pentru a mări gradul de interactivitate al paginilor Web;
este un limbaj care poate fi interpretat de browser-e;
programele JavaScript pot fi incluse direct în documentele (X)HTML;
deservește la :
generarea paginilor Web personalizate și modificarea dinamică a prezentării lor;
realizarea calculelor matematice;
validarea conținutului unui formular;
comunicarea cu applet-urile Java;
crearea animațiilor personalizate;
afișarea unor mesaje care defilează în bara de stare a navigatorului;
afișarea unor mesaje într-o pagină Web sau într-o casetă de dialog;
crearea unor butoane animate;
identificarea navigatorului în care se afișează pagina Web;
executarea funcțiilor clasice ale unui limbaj de programare.
Din motive de securitate:
JavaScript nu poate citi, scrie, crea și șterge fișiere de pe HDD;
JavaScript nu poate executa operații în rețea;
JavaScript nu poate crea aplicații autonome.
Script-urile JavaScript sunt inserate într-un document (X)HTML cu elementul
<script type=”text/JavaScript”> … </script>
Rolul elementului script este de a defini script-ul care va fi utilizat în documentul (X)HTML. Pentru inserarea script-urilor în documentele dumneavoastră (X)HTML putem folosi una din următoarele metode:
Plasăm script-ul în corpun paginii (intre <body>…</body>);
Plasăm script-ul în antetul paginii (între <head>…</head>);
Utilizăm fișiere sursă externe;
Creem un gestionar de evenimente.
Aplicații în sisteme cu baze de date
Consultarea bazelor de date a devenit astăzi ceva trivial. Practic, de la apariția Internetului, în goana după informații, accesăm zilnic baze de date fără a realiza faptul că lucrăm cu o bază de date. In scopul introducerii aspectelor teoretice legate de bazele de date considerăm un sistem de baze de date ca fiind un sistem computerizat de păstrarea a articolelor, sistem care cuprinde pe lângă datele propriu-zise și utilizatorii acestora, software și hardware.
aplicații rezidente pe mainframe, terminale pentru I/O și validări
aplicații în sisteme cu arhitectură locală – baze de date de dimensiuni mici sau părți din baze de date complexe sunt înregistrate pe mașina client. În cazul unei LAN pot apare replicări.
aplicații în sisteme cu arhitectură client-server – LAN-urile permit ca părți dintr-o aplicație să fie deplasate pe mașina client cu datele rezidente pe server
Aplicații cu arhitecturi intranet
Aplicațiile Internet sunt accesate printr-un browser care poate fi executat pe diferite tipuri de mașini client. In arhitecturile de tip Internet nu este practic ca instalarea sau configurarea unei aplicații să se facă pe mașina client. De obicei utilizatorul final nu vrea să-și bată capul cu așa ceva și în cazul folosirii unor platforme hardware diferite de la client la client acest lucru devine prohibitiv.
Aplicațiile Internet pot fi de diferite tipuri:
server Web cu pagini HTML statice și pagini generate dinamic
aplicația este adusă pe mașina client odată cu pagina Web
serverul Web poate activa un applet care poate accesa baza de date direct sau poate accesa un server de aplicație
Baze de date relaționale. Limbajul SQL
O dată cu dezvoltarea calculatoarelor, cantitatea de informație vehiculată în cadrul diverselor firme, institutii, organizatii sau intre persoane fizice a crescut exponential. Orice aplicație software prelucrează un volum mai mic sau mai mare de informație și necesită stocarea acestuia pe disc. Algoritmii dezvoltări de-a lungul timpului au oferit soluții din ce în ce mai bune pentru problemele legate de stocarea și readucerea datelor – dar și pentru prelucrarea lor – mergând până la a oferi modele standardizate de lucru.
Punctul culminant al teoriei structurilor de date a fost atins în momentul definirii conceptului de baze de date relaționale.
Activitatea de organizare și prelucrare a datelor a avut în ultimii ani o evoluție determinată de doi factori esențiali și contradictorii care ar putea fi desemnați prin următorii termeni: necesități și posibilități. Necesitățile au fost mereu în creștere, în ce privește manipularea datelor făcându-se simțită nevoia de a avea acces la date tot mai rapid, mai operativ și în volum din ce în ce mai mare. Pe măsura dezvoltării echipamentelor de calcul și a dispozitivelor de memorare, precum și a perfecționării tehnicilor de organizare și prelucrare a datelor, posibilitățile devin din ce în ce mai largi, în măsură să satisfacă din ce în ce mai bine necesitățile.
Caracteristica principală a aplicațiilor de baze de date constă în faptul că accentul este pus pe operațiile de memorare și regăsire, efectuate asupra unor volume mari de date, și mai puțin asupra operațiilor de prelucrare a acestora așa cum este cazul în alte domenii de aplicare a informaticii (calcule tehnico-științifice, proiectare, comandă-control etc.). Principala operație care apare în orice aplicație de baze de date este cea de regăsire a datelor, în scopul obținerii de informații din baza de date. Aceasta este finalitatea și sensul existenței oricărei baze de date. Alături de operațiile de regăsire apar mai mult sau mai puțin frecvent operații de memorare, pentru introducerea de noi date în bază, operații de ștergere pentru datele devenite inutile cât și operații de actualizare a unor date existente deja în bază.
Organizarea datelor în baze de date constituie o formă de centralizare a acestora, fiind un echivalent informatic al bibliotecilor tradiționale.
Bazele de date sunt descrise prin metode de modelare a problemelor reale în scopul definirii unor structuri care să elimine redundanțele în stocarea datelor și să permită cu usurință modificări cerute de evoluția problemei reale.
În situația în care fiecare aplicație lucrează cu fișierele sale proprii este posibil ca aceleași date să apară de mai multe ori în fișiere diferite aparținând unor aplicații diferite. Cu această ocazie sunt identificate operațiile comune efectuate de marea majoritate a aplicațiilor, fapt care îi îndreptățește pe teoreticieni să pună bazele unui limbaj accesibil oricui și care să permită implementarea cu usurință a tuturor metodelor de lucru întâlnite în aplicațiile ce necesită baze de date. Definirea lui s-a făcut doar la nivel teoretic, implementarea fiind lăsată în sarcina companiilor ce dezvoltă motoare de baze de date. Acest limbaj a fost denumit SQL (Structured Query Language) și este implementat de toate motoarele existente în prezent.
Avantajul principal al acestui limbaj s-a dorit să fie simplitatea. Spre deosebire de un adevărat limbaj de programare ce necesită învățarea unor sintaxe stricte și ușor de confundat, SQL are o sintaxa foarte apropiată de limbajul uman natural, ușor de înțeles și de utilizat. O frază în acest limbaj trebuie să fie lizibilă pentru oricine cunoaște cele câteva cuvinte din limba engleză care compun vocabularul SQL: SELECT, FROM, WHERE, ORDER BY etc. Complexitatea sistemului care implementează algoritmii necesari lucrului efectiv cu datele, metodele de stocare, căutare etc, precum și optimizările sunt perfect transparente pentru utilizator. Acest limbaj nu este considerat un limbaj de programare deoarece a fost conceput pentru a spune calculatorului CE date sunt necesare și nu CUM trebuie obținute. Sunt necesare cunoștințe minime de calculator pentru utilizarea SQL; acesta este de fapt și idealul urmărit de marile firme producătoare de motoare de baze de date: comercializarea unui sistem complex care să permită implementarea oricărei baze de date; datele se pot apoi manipula doar cu ajutorul utilitarelor anexate sistemului, fără a mai fi nevoie de scrierea de aplicații specifice.
Figura2.2.1 – Independența aplicației față de baza de date
Al doilea mare avantaj îl constituie portabilitatea. O aplicație utlizează o bază de date prin intermediul acestor fraze SQL care nu sunt altceva decât simplu text. Orice motor de baze de date acceptă astfel de fraze, făcând posibilă migrarea unei aplicații de pe un motor pe altul mai performant fără nici o modificare. Faptul că SQL este un standard unanim recunoscut conferă un mare avantaj aplicațiilor care își pot alege oricând pe ce sistem să ruleze.
Limbajul foarte apropiat de cel natural necesită minime cunoștințe de calculator pentru a folosi o bază de date prin intermediul SQL. În realitate nu există nici o aplicație care să prezinte o interfață SQL utilizatorului neprofesionist. Există foarte multe programe care folosesc baze de date ce suportă SQL, dar nici unul dintre ele nu prezintă o consolă pentru comenzi directe. O interfață vizuală, oricât de limitată ar fi, este cu mult mai ușor de folosit decât limbajul SQL. Nici o firmă ce dezvoltă software nu își permite să-și oblige clienții (dintre care marea majoritate sunt slab familiarizați cu calculatorul) să învețe un limbaj a cărui însușire ar necesita cel puțin un an de pregătire. Trebuie să remarcam faptul că oricât de intuitivă ar fi sintaxa unui limbaj, tehnicile de utilizare a acestuia sunt cu mult mai importante, iar acestea se deprind prin exerciții îndelungate. Învățarea și utilizarea acestui limbaj revine în exclusivitate programatorului, care este însă deprins cu limbaje mult mai apropiate de mașină, astfel încât mare parte din tehnica de utilizare SQL se concentrează asupra modului de a transforma o cerere din limbajul calculatorului (aflat la îndemâna programatorului) în limbajul SQL, pentru a o pasa apoi interpretorului care să o înțeleagă și să o transforme înapoi în limbajul calculatorului.
Figura 2.2.2 – Fluxul de execuție a cererilor într-un sistem bazat pe SQL
Generalitatea și portabilitatea
Standardizarea a fost întotdeauna o sursă de progres; stabilirea unui limbaj comun a permis producătorilor din întreaga lume să își sumeze eforturile și să își bazeze munca pe rezultatele anterioare. În realitate SQL constituie un standard doar în formă teoretică, descrisă cu mulți ani în urmă. O dată cu avansul tehnologic setul de facilităti oferite de SQL a devenit rapid insuficient. Firmele ce implementează motoare de baze de date au pus al dispoziția clienților noi funcții și extensii ale SQL, care permit o utilizare mai eficientă dar care nu mai sunt standardizate. Mai exact spus, componenta SQL denumită limbajul de definire a datelor (DDL) a rămas aproape neschimbată, dar limbajul de manipulare a datelor (DML) a suferit modificări substanțiale. DDL nu a putut fi modificat deoarece reprezintă punerea în practică a însăși teoriei bazelor de date relaționale.
Metodele în care datele pot fi prelucrate sunt de o varietate infinită și nu au putut fi grupate într-un set de funcții comune, fiecare aplicație având cerințe specifice. Însă SQL reprezentă singura metodă de interogare a bazelor de date, astfel încât a fost obligatorie implementarea multor funcții, oricât de rar folosite ar fi fost. Aceste noi funcții inventate pentru a satisface cele mai variate necesități, de la simple conversii între tipuri de date până la medii geometrice, radicali, logaritmi sau căutări de șiruri, nu au mai reprezentat un standard. Au început prin a fi extensii venite să îmbogățească limbajul de bază și să ușureze munca utilizatorului, dar au devenit curând absolut indispensabile și au fost implementate de toate sistemele.
Toate companiile ce dezvoltă motoare de baze de date implementează aceleași funcții, dar sub denumiri și cu sintaxe diferite. SQL a rămas portabil la nivelul său primar și, teoretic, este încă posibilă portarea unei aplicații de pe un motor pe altul fără mari modificări. Pentru aceasta trebuie însă făcute eforturi pentru evitarea utilizării oricărei facilități oferite de un anumit sistem, dacă aceasta nu este implementată și pe celelalte. Această misiune este însă dificilă și are ca rezultat o aplicație ce nu beneficiază niciodată de ultimele tehnologii; în aceste condiții producătorii de soft preferă să renunțe la portabilitate. Tot pentru a rămâne credincios ideii de portabilitate, SQL a ales cea mai elementară metodă de transmisie a cererilor: formatul text. în ciuda faptului ca nu este economic din punct de vedere al informației (conține multă informație redundantă), a fost ales acest format deoarece este cel mai simplu de interpretat de către orice sistem de operare. S-a pierdut însă din vedere faptul că transmiterea inversă de date (aducerea rezultatelor) conține de multe ori informații ce nu se pot reprezenta în format text, astfel încât canalul de comunicație deschis între aplicație și motorul de baze de date trebuie să fie mult mai complex.
Există și alte dezavantaje majore ale SQL, unul dintre ele fiind viteza mult redusă. Cauza principală a pierderii de viteză este interpretorul SQL, care are misiunea de a transforma o frază dintr-un limbaj apropiat de cel uman în cel al calculatorului, verificând și semnalând eventualele erori de sintaxă. Performanțele slabe din punct de vedere al vitezei au îngreunat mult manipularea datelor din cadrul aplicației. Cu alte cuvinte nu mai este posibilă utilizarea bazei de date pentru stocarea și regăsirea informațiilor, urmând ca prelucrarea lor să se facă din cadrul aplicației. A devenit necesară prelucrarea datelor în interiorul motorului de baze de date, prin introducerea conceptului de proceduri stocate. Acestea sunt scrise într-un limbaj derivat din SQL și sunt stocate împreună în interiorul bazei de date.
Noul limbaj seamană mai puțin cu SQL și mai mult cu un limbaj de programare obișnuit, cu instrucțiuni condiționale și repetitive, sacrificând ideea inițială de simplitate. Firește, nu se mai pune problema utilizării unui astfel de limbaj de către un client al cărui domeniu de activitate este altul decât informatica. Deasemenea, e de la sine înțeles că există multiple variante – foarte diferite – ale acestui limbaj, nimeni neconformându-se unui standard. Încet-încet, SQL s-a transformat într-un limbaj de programare în adevăratul sens al cuvântului, la fel de dificil de însușit ca oricare altul. Portabilitatea a rămas posibilă doar la nivel teoretic, deoarece diferențele dintre implementările actuale îi pun piedici mari. Mai mult, sistemele bazate pe SQL sunt încetinite cu mult de procedurile de interpretare a sintaxei comenzilor și de conversia datelor în formate incomode pentru calculator, dar cerute de limbaj.
Implementarea SQL impune crearea mai multor module, iar un motor de baze de date este cu atât mai mare, mai lent și mai costisitor cu cât oferă mai multe facilități. Din aceste cauze motoarele de baze de date existente nu reprezintă o soluție pentru aplicațiile cu pretenții asupra vitezei de execuție, spațiului ocupat pe hard-disk, prețului de vânzare sau asupra dependeței față de versiunea sistemului de operare.
Sintaxa CSS și PHP
CSS are prescurtarea de la Cascading Style Sheets, sunt etichete folosite pentru formatarea paginilor Web (de ex. formatare text, background sau aranjare în pagină, etc.). Beneficiile sintaxei CSS sunt :
Formatarea este introdusă într-un singur loc pentru tot documentul;
Editarea rapidă a etichetelor;
Datorită introducerii într-un singur loc a etichetelor se obține o micșorare a codului paginii și implicit încărcarea mai rapidă a acesteia.
Sintaxa CSS este structurată pe 3 nivele :
nivelul 1 fiind proprietățile etichetelor din documentul HTML, tip inline;
nivelul 2 este informația introdusă în blocul HEAD, tip embedded;
nivelul 3 este reprezentat de comenzile aflate în pagini separate, tip externe;
Cea mai mare importanță (suprascrie orice alt parametru) o are sintaxa de nivelul 1 iar cea mai mică importanță o are cea de nivelul 3. Folosirea unui fișier extern de nivel 3 care să conțină comenzi CSS este foarte practic deoarece poate fi utilizat în mai multe situații (mai multe fișiere HTML pot folosi același fișier extern CSS) eliminând timpul necesar introducerii codului corespunzător în fiecare pagină și totodată editarea lor într-un singur loc pentru mai multe fișiere. Extensia acestor fișiere este .css. Legătura paginilor HTML cu fișierele externe CSS se face prin introducerea următoarei linii :
<link rel= “stylesheet” type=”text/css” href=”fisier_css.css”>
Comenzile de nivel 2 sau embedded sunt cele găzduite oriunde între perechea de etichete <head>…</head> și anume <style type=”text/css”>…</style>
Comenzile CSS de nivel 1 sunt inline si sunt cele mai folosite, ele suprascriind orice alte comenzi CSS. Sunt amplasate în interiorul etichetelor HTML aflate în zona BODY și au sintaxa : <eticheta style=”codul CSS dorit”>…</eticheta>
Execuția corectă a scripturilor PHP este condiționată de instalarea și configurarea corectă a serverului Web Apache, precum și a serverului de baze de date MySQL. Ca orice limbaj de programare, PHP se caracterizează prin sintaxă și semantică. Prin sintaxa limbajului se înțelege totalitatea regulilor de scriere a programelor, astfel încât acestea să fie acceptate de către parser-ul (analizorul sintactic) PHP. Este evident că respectarea scrierii corecte nu înseamnă că programele scrise sunt, automat, lipsite de erori. Semantica limbajului PHP se referă la semnificația contrucțiilor sintactice corecte.
Limbajul PHP folosește un vicabular format din următoarele elemente: caractere utilizate, identificatori, separatori și comentarii. Orice program sau secțiune de cod PHP este specificat prin două coduri (unul de început și altul de sfârșit) care indică interpretorului PHP că textul delimitat de ele reprezintă cod PHP.
Operațiile executate (în raport cu utilizatorul) în scripturile PHP se pot încadra într-una dintre categoriile următoare:
preluarea datelor trimise de utilizator și introducerea lor în baza de date;
prelucrarea datelor primite de la utilizator;
extragerea și afișarea – la cererea utilizatorului – a unor informații stocate în bazele de date sau în fișierele aflate pe server.
Există situații în care după execuția unui script PHP browser-ul nu ne oferă datele pe care le așteptăm; aceste situații se pot încadra într-una din următoarele cazuri:
browser-ul afișează un mesaj care ne comunică inexistența scriptului invocat. Cauza care determină acest lucru poate fi scrierea greșită a adresei scriptului sau chiar inexistența scriptului respectiv;
browser-ul afișează un mesaj care ne comunică existența anumitor erori în script. Aceste erori sunt de multe ori de natură sintactică. Alteori, erorile au drept cauză inexistnța anumitor clase, obiecte sau funcții invocate în script. Serverul PHP indică numărul liniei în care s-a produs eroarea. Uneori această informație nu este folositoare, deoarece sursa erorii este în altă linie;
browser-ul afișează conținutul scriptului. Acest rezultat poate avea două cauze: În primul caz s-ar putea ca modulul PHP să nu fie încărcat în serverul Web, o dată cu lansarea în execuție a acestuia din urmă. În al doilea caz, s-ar putea ca interpretorul PHP să nu recunoască extensia php. În aceste cazuri, trebuie modificat în mod corespunzător fișierul de configurare al serverului Web (httpd.conf – pentru serverul Apache).
Programele PHP execută 3 categorii de operații elementare:
obțin date de la un utilizator;
execută prelucrări ale datelor, respectiv obțin accesul la datele stocate în fișiere și baze de date și le manipulează;
afișează date asstfel încât un utilizator să le poată vizualiza.
Depanarea unui script PHP
Uneori în locul datelor de ieșire ale scriptului putem obține unul din următoarele:
textul scriptului, în loc de datele de ieșire ale acestuia;
o casetă de dialog, prin care suntem întrebați daca dorim descărcarea fișierului care conține scriptul;
un mesaj în care se spune că scriptul nu există;
un mesaj în care se spune că browserul Web nu are permisiunea de a obține accesul la script;
un mesaj în care se spune că scriptul conține o eroare.
La vizualizarea rezultatelor unui script PHP se pot produce numeroase erori, chiar dacă scriptul în sine este corect. Dacă vedem scriptul sau ne apare o fereastră de dialog prin care suntem întrebați dacă dorim să descărcăm fișierul care conține scriptul, este posibil ca extensia fișierului script să fie incorectă sau ca serverul PHP să nu funcționeze. Dacă vedem un mesaj în care se arată că browserul Web nu are permisiunea de a obține accesul la script, poate că este necesar să modificăm permisiunile fișierului script.
Dacă vedem un mesaj în care se spune că scriptul conține o eroare, verifică dacă nu au aparut următoarele probleme:
o eroare de tastare, cum ar fi scrierea greșită a unui cuvânt cheie;
o eroare de punctuație;
neincluderea sau includerea eronată a liniilor de delimitare a scriptului <?php și ?>;
un marcaj de comentariu (//) care lipsește sau care a fost introdus greșit.
Mesajele de eroare încearcă să ne indice sursa erorii, indicând numărul liniei la care s-a produs eroarea.
Cea mai eficientă metodă de a instala în mod corect toate cele 3 aplicații necesare este pachetul WAMP acronimul de la Windows-Apache-MySQL-PHP. WAMP este un pachet prin intermediul căruia se vor instala și configura toate cele 3 aplicații necesare funcționării unei aplicații Web cu bază de date MySQL:
– server Web Apache;
-SGBD – MySQL;
-PHP;
Modelul unei aplicații cu baze de date
La nivelul cel mai general, o bază de date reprezintă o modalitate de stocare a unor informații pe un suport extern, cu posibilitatea regăsirii acestora. Uzual, o bază de date este memorată într-unul sau mai multe fișiere. Aplicațiile care folosesc baze de date sunt, în general, aplicații complexe folosite pentru gestionarea unor informații de dimensiunimari într-o manieră sigură și eficientă.
Organizarea datelor în baze de date constituie o formă de centralizare a acestora, sub influența unui administrator al bazei de date, ceea ce prezintă o serie de avantaje: reducerea redondanței datelor memorate, evitarea inconsistenței datelor memorate, posibilitatea partajării datelor, posibilitatea aplicării restricțiilor de securitate, menținerea integrității datelor, încurajarea introducerii standardelor.
Un model de date este un instrument teoretic care permite obținerea unei interpretări adecvate a datelor. Modelarea datelor, în vederea utilizării lor pentru a fi utilizate în aplicații, presupune identificarea celor mai importante caracteristici ale datelor, caracteristici care surprind esența semnificației acestora. Modul în care datele sunt stocate este foarte important pentru felul în care ele pot fi accesate și manipulate utilizând limbajul SQL.
Pentru structurarea și vizualizarea datelor se folosește abstractizarea. Abstractizarea constă în neglijarea aspectelor nerelevante și concentrarea asupra proprietăților care prezintă interes dintr-un anumit punct de vedere (se rețin acele elemente care sunt relevante pentru scopul propus). În modelarea datelor, abstractizarea este folosită pentru a obține categorii de date sau pentru a combina categorii de date în categorii mai generale. O formă elementară de abstractizare este tipizarea, prin care se definește un tip pornind de la o clasă de obiecte similare. Relativ la obiectele din bazele de date se folosesc două forme de abstractizare:
generalizarea – care asociază unei mulțimi de obiecte sau unei mulțimi de tipuri un singur tip generic;
agregarea – prin care un obiect este construit din părțile sale componente.
Deoarece bazele de date relaționale nu au analogii în lumea reală cele mai multe dintre ele încearcă să modeleze câteva aspecte ale lumii reale.
Termenul de bază de date nu include aplicația, care conține rapoarte cu care utilizatorii vor interacționa. De asemenea, noțiunea exclude și database engine. Pentru a descrie toate aceste componente – aplicația, baza de date, database engine și middleware – se flosește termenul de sistem al bazei de date.
Modelul bazei de date al aplicației de tickete și pontaje online
Baza de date conține 3 tabele importante: tabela admin, supervizor și detalii; însă pentru fiecare user care a primit ticket și urmează să se autentifice folosind username și password-ul, creat la inregistrare, i se v-a crea dinamic o tabelă cu datele de login și timpul petrecut pe ticket.
Tabela detalii conține coloana statusprj care reprezintă statusul în care este ticketul unui anumit user, aceasta valoare are doar 2 valori 0 – open(ticketul este deschis) și 1-closed(ticketul este inchis).
Tabela supervizor contine datele de login ale administratorului iar tabela admin conține toate datele userilor înregistrati.
Unified Modeling Language
UML este un limbaj vizual de modelare, el nu este încă un limbaj vizual de programare, deoarece nu dispune de întreg sprijinul semantic și vizual pentru a înlocui limbajele de programare. Limbajul este destinat vizualizării, specificării, construirii și documentării sistemelor de aplicații, dar are limitări în ceea ce privește generarea codului. UML reunește cele mai bune tehnici și practici din domeniul ingineriei programării, care și-au dovedit eficiența în construirea sistemelor complexe.
Limbajul de modelare UML (inițialele provin de la Unified Modeling Language) reprezintă un limbaj general standardizat în domeniul ingineriei software orientată pe obiecte. Standardul a fost conceput și administrat de către consorțiul Object Management Group. UML este produsul a mulți ani de muncă a mai multor companii cu renume in lumea IT, dintre care amintim Sun Micro Systems, Oracle Corporation, Hewlett-Packard Company, IBM Corporation, SAP sub patronajul și sponsorizarea concernului OMG (Object Management Groupfondat in 1989).
UML nu este un simplu limbaj de modelare orientat pe obiecte, ci în prezent, este limbajul universal standard pentru dezvoltatorii software din toată lumea. UML este succesorul propriu-zis al celor mai bune trei limbaje de modelare anterioare orientate pe obiecte (Booch, OMT și OOSE). UML se constituie din unirea acestor limbaje de modelare si în plus deține o expresivitate care ajută la rezolvarea problemelor de modelare pe care vechile limbaje nu o aveau.
UML include un set de noțiuni tehnice grafice menite să creeze modele vizuale pentru sistemele software intensive orientate pe obiecte. În ultimii ani, UML a început să fie utilizat dincolo de domeniul IT. Așa se face că există aplicații ale UML-ului pentru management de proiecte într-o gamă variată de domenii: industrial, software, marketing, construcții, etc.
La crearea unui produs software există patru faze importante dictate de ingineria programării și anume: analiza (analiza cerințelor clientului), proiectarea (descompunerea în module cât mai mici a produsului pentru ușurința implementării), implementarea (scrierea efectivă a codului) și testarea. În cadrul lucrului la un proiect software sunt implicate mai multe persoane, fiecare are atribuții complementare celorlalți. Se pot distinge mai multe specialități:
utilizatori – exploatatorul softului;
șefi de proiect – totdeauna trebuie să existe cineva cu această funcție;
analiști de sistem – execută modelul informatic al aplicației;
proiectanți de sistem – execută arhitectura programului aplicației;
programatori – execută modulele;
ingineri de test – verifică ceea ce s-a creat.
Activitatea în echipă este puternic interactivă, comunicarea dintre membrii personalului cu specialități diferite făcându-se de obicei prin intermediul formularelor și rapoartelor, care deobicei devin greu de urmărit din pricina formatării sau a lipsei de organizare a acestora sau chiar a omiterii anumitor detalii despre o anumită componentă (modul). In cadrul fazei de proiectare se construiește de obicei un modul al proiectului la care se lucreaz. Modelarea este o parte esențială a unui proiect software, el jucând un rol analog cu proiectul architectural al unei clădiri de mari dimensiuni. Folosind un model ce-i responsabili pentru succesul sau eșecul unui proiect se pot asigura încă dinainte de începerea scrierii codului ca :
• funcționalitatea proiectului va fi corectă și completă
• toate necesitățile utilizatorului final vor fi satisfăcute
• design-ul programului va satisface cerințele de scalabilitate, robustețe, extendabilitate etc. În cadrul operațiunii de modelare se pleacă de la premisa că sistemele software sunt complexe, de aceea avem nevoie de o multitudine de viziuni simple ale acestora asfel încât în final să stăpânim complexitatea. Principalele astfel de viziuni sau vederi sunt:
• Use-case view
• Logical view
• Component view
• Concurrency view
• Deployment view
Limbajul UML este o tehnică folosită pentru descrierea, specificarea și documentarea funcțiilor unei aplicații în timpul fazei de design. UML este un limbaj grafic creat pentru vizualizarea, specificarea, construirea si documentarea sistemelor software incluzând atât structura cât și designul acestora ce poate fi aplicat și în alte domenii cum ar fi afaceri sau alte sisteme non-software. Chiar dacă UML nu poate garanta succesul unui proiect, el constituie o unealtă foarte importantă reprezentând de fapt o colecție de practici inginerești care s-au dovedit de succes în modelarea de sisteme mari și complexe. Unul din principalele scopuri ale dezvoltatorilor limbajului UML a fost acela de a crea un set de notații semantice care să se adreseze tuturor tipurilor de proiecte arhitecturale complexe indiferent de domeniu (industrial, software, marketing, construcții etc.).
UML oferă un model standard de a scrie documentație de sistem, funcții de sistem precum și alte lucruri concrete cum ar fi declarații într-un anumit limbaj de programare, scheme ale bazelor de date și componente software reutilizabile.Unified Modelling Language (UML) este un limbaj de modelare și nu o metodă sau un proces. UML are notații specifice și reguli gramaticale bine precizate pentru construirea modelelor software. Există o bogată colecție de elemente notaționale grafice suportate de UML. Există o serie de elemente care descriu clase, componente, noduri, activitități, work flow, obiecte, stări dar există și elemente grafice care ajută la modelarea relațiilor între elementele amintite. UML suportă notații pentru extinderea puterii limbajului de modelare, asigurând avantaje semnificante inginerieis oftware, ajutând la construirea de modele riguroase, ușor de urmărit și întreținut, care să suporte întregul ciclu de dezvoltare software. Modelele și diagramele create au o importanță influentă asura felului în care o anumită problemă este abordată și a felului în care o anumită soluție prinde forma. Prin abstractizare atenția se concentrează asupra detaliilor semnificante ignorându-le pe celelalte. Aceasta este cauza pentru care:
• fiecare sistem complex este abordat printr-un set de vederi diferite ale unui model. (o singură vedere nu este suficientă)
• fiecare model poate fi reprezentat cu un grad diferit de fidelitate
• cele mai bune modele sunt cele inspirate din realitate.
Este necesară construcția unui model pentru sistemele complexe deoarece mintea umană nu poate acoperi toate detaliile unui astfel de sistem. Cu cât complexitatea unui sistem crește cu atât crește și importanța folosirii unei bune tehnici de modelare și implicit a unui limbaj riguros de modelare cum este UML. UML, un limbaj de modelare vizual nu a fost creat și nu este în măsură să înlocuiască un limbaj de programare însă cu ajutorul limbajului UML se poate modela orice tip de aplicație care rulează pe orice combinație de hardware, sistem de operare sau tip de rețea. Flexibilitatea lui permite modelarea aplicațiilor distribuite ce folosesc orice tip de middleware de pe piaâî, iar datorită faptului că obiectele și clasele sunt definite drept concepte fundamentale un model construit în UML va putea fi relativ ușor de implementat într-o serie de limbaje de tip OOP (C++,Java, C#). Trebuie precizat însă că limbajul UML se poate folosi și pentru a modela aplicații non-OOP în limbaje precum Cobol, Fortran, sau Visual Basic. Designul software nu este un simplu proces automat de transformare a unei specificații înalte. El implică și luarea unor decizii complexe care se vor repercuta asupra produsului final.
Instrumentele pentru design, cele care ajută designerii în luarea deciziilor sunt un mijloc important de a crește productivitatea și calitatea designurilor software rezultate. Astfel au apărut uneletele CASE (Computer Aided Software Engineering), care se gasesc în număr foarte mare și au grade diferite de utilizabilitate. Din ele se pot distinge: Rational Rose, ArgoUml, Poseidon (Gentleware). Motive pentru care ArgoUml (apărut în 1998) se distinge din multitudinea de instrumente Case:
• ofera mijloacele necesare pentru creșterea productivității realizării softurilor de tip OOP
• folosește doar standarde deschise (open standards) ceea ce înseamnă în primul rând posibilitatea unei colaborari cu alte aplicații care folosesc aceste standarde. Printre aceste standarde folosite se află: în primul rând UML-ul, apoi XML MetadataInterchange (XMI), Scalable Vector Graphics (SVG), Object Constraint Language(OCL).
• implementează toate specificațiile limbajului UML 1.3., fiind singura unealtă care implementează meta-modelul UML exact așa cum a fost specificat
• este o aplicație 100% Java, deci se bucură de toate calitățile unui produs Java
• este open-source (în plină dezvoltare) În plus, Argo Uml a fost inspirat și a ținut cont de cele trei teorii din psihologia cognitivă:
• reflection-in-action: designerii unor sisteme complexe nu concep un design în totalitatea sa. De aceea ei trebuie să construiască un design parțial, să îl evalueze, eventual să îl modifice până când vor fi pregătiți să extindă acel design parțial ( “tirania paginii albe” este un efect similar).
• design oportunistic: descompunerea ierarhică este o strategie uzuală în designul sistemelor complexe. Totuși în practică s-a observat că designerii lucrează la module alese oarecum oportunistic, în funcție de efortul mental pe care trebuie să-l depună la un moment dat
• generare și explorare: în prima fază sunt generate noi idei care mai apoi, în faza a doua vor fi explorate iar implicațiile lor vor fi evaluate.
Principalele părți ale UML sunt:
Vederile (View) – surprind aspecte particulare ale sistemului de modelat. Un view este o abstractizare a sistemului, iar pentru construirea lui se folosesc un număr de diagrame.
Diagramele – sunt grafuri care descriu conținutul unui view. UML are nouă tipuri de diagrame, care pot fi combinate pentru a forma toate view-urile sistemului.
Elementele de modelare – sunt conceptele folosite în diagrame care au corespondență în programarea orientată-obiect, cum ar fi: clase, obiecte, mesaje și relații între acestea: asocierea, dependența, generalizarea. Un element de modelare poate fi folosit în mai multe diagrame diferite și va avea același înteles și același mod de reprezentare.
Mecanismele generale – permit introducerea de comentarii și alte informații despre un anumit element.
În figura de mai jos sunt prezentate toate diagramele precizate în specificațiile UML:
Diagrama UML (sursa: http://www.scribd.com)
Use-case Diagram
Un caz de uz (use case) reprezintă o tehnică de modelare utiizată pentru a descrie funcționalitatea unui sistem, deci ce anume ar trebui să realizeze un nou sistem sau ceea ce face deja un anumit sistem. S-ar putea afirma chiar că o diagramă use-case descrie ceea ce face un sistem din punctul de vedere al unui observator extern, această descriere fiind independentă de implementare. Adesea, o astfel de diagramă este utilizată în etapele preliminarii ale procesului de design pentru a colecta cererile clientului cu privire la proiect. Astfel, construcția unui model use-case, reprezentat printr-o diagramă use-case (sau mai multe) se face de obicei după lungi discuții între dezvoltatori și clienți pe baza specificațiilor asupra cărora au căzut cu toții de acord.
Use case diagram este un tip de diagramă din care reiese modul de utilizare a sistemului informatic – modul în care utilizatorii interacționează cu acesta (în corespondență directă cu task-urile acestor utilizatori.). Utilizarea use case diagram nu este absolut necesară pentru a scrie o specificație cu use case-uri dar este utilă pentru a crea o imagine generală asupra sistemului.
Principalele utilizări ale diagramei Use Case sunt:
• pentru a modela contextul unui sistem: determinarea granițelor sistemului și a actorilor cu care acesta interacționează.
• pentru a modela cerințele unui sistem: ce trebuie să facă sistemul (dintr-un punct de vedere exterior sistemului) independent de cum trebuie să facă. Va rezulta specificare comportamentului dorit. Sistemul apare ca o cutie neagră. Ceea ce se vede este cum re-acționează el la acțiunile din exterior.
În cadrul diagramei Use Case, apar următoarele elemente:
Cel mai important scop al unei diagrame use-case este de a ajuta dezvoltatorii de sisteme software să vizualizeze cerințele funcționale ale unui astfel de sistem sau unități de sistem. Dintre use-cases, actori si dependențe, actorii sunt pentru programatori cele mai neimportante elemente ale unei diagrame use-case. Relațiile sunt de fapt cele mai importante deoarece acestea le sugerează care dintre use-case-uri să fie implementat prima dată. De regulă, se începe cu use-case-ul cu cele mai multe dependențe, deoarece alte use-case-uri depind de acesta. Din punct de vedere grafic, o diagramă use-case este un graf având drept noduri actori și use-cases, iar drept muchii diferite relații între aceste elemente.
Între actori și use case-uri pot să existe mai multe tipuri de relații:
relații de generalizare
O generalizare (Generalization) este o legătură între un element cu un grad mai ridicat de generalitate (părinte) și unul sau mai multe elemente specifice (mai puțin generale) numite elemente fiu, care conțin toate caracteristicile elementului părinte și adaugă informații noi la acestea. Generalizarea se poate aplica în cazul claselor, pachetelor și a altor elemente ale limbajului și permite definirea ierarhiilor între elementele modelului.
Legătura inversă, dintre clasificatorul părinte și clasificatorii fii este o specializare, dar în UML nu este definit un astfel de element, generalizarea fiind suficientă pentru reprezentarea ierarhiilor.
Acestea modelează conceptual de moștenire între clase. Un actor sau un use case poate fi asociat cu o clasă de actori, respectiv de use case-uri. Acest tip de relații mai poartă denumire de relație de tip is a (este un/este o).
Generalizarea se reprezintă printr-o linie continuă care are o săgeată ne-plină (numai conturul) îndreptată către elementul părinte. Atunci când sunt mai multe elemente specializate (fii) se pot folosi linii separate sau o linie de legătură partajată de mai multe astfel de elemente.
relații de tip extensie între use case-uri
Relațiile de tip extensie (și implicit use case-urile de extensie) se folosesc atunci când se modelează un comportament opțional sau excepțional, care nu condiționează finalitatea use case-ului de bază. De exemplu, un utilizator poate, în cazul de fatã sã meargã pe mai multe ramuri. Userul are posibilitatea sa se autentifice pe contul de administrator sau de simplu utilizator. Dupa ce a reusit sa se autentifice cu succes pe contul de utilizator, acesta va aveap posibilitatea de a crea sau sterge useri din sistem. Pe cealaltã ramurã , utilizatorul are posibilitatea de a opera cu diverse instrunmente din aplicatie dupa ce a reusit sã sa autentifice cu succes. Spre exemplu utilizatorul are posibilitatea de a efectua o cãutare rapida in agenda telefonicã , sau poate cu usurintã sa verifice o comandã. Tot aici putem vorbi si despre posibilitatea de a vedea un status al unui echipament trimis in service sau starea rețelei de calculatoare pe care o administrãm, sau chiar sã putem citii e-maul-urile f ãrã sã folosim nici un client pentru mail.
Într-o dependență de tip extend pot apărea așa numitele punctele de extensie care specifică locul în care use case-ul specializat extinde use case-ul de bază . Pentru fiecare use case pot fi specificate mai multe puncte de extensie. Fiecare dintre aceste puncte trebuie să aibă un nume. Aceste nume trebuie să fie unice, însă nu este obligatoriu ca ele să coincidă cu numele use case-urilor specializate. De asemenea, trebuie precizată condiția de care depinde apelul use case-ului specializat. Acest tip de relație se folosește pentru a modela alternative.
relații de tip includere
Relația de tip includere se folosește atunci când use case-ul inclus nu este o parte esențială a fluxului din use case-ul de bază sau este un comportament care se repetă în mai multe use case-uri. De pildă autentificarea în sistem, deși condiționează introducerea unei comenzi, nu este specific introducerii comenzii și de asemenea, poate fi folosit în mai multe use case-uri. În cazul nostrum, pentru identificarea informațiilor solicitate cu privire la un anumit produs, este necesar mai întâi să fie autentificat user/ul.
În limbajul UML este posibilă specificarea comportamentală a unui context de utilizare folosind o diagramă de secvențe a mesajelor, ceea ce permite o descriere mai detaliată a interacțiunilor care au loc între actori și contextele de utilizare. În acest caz, în diagrama secvențelor un obiect (instanță a unui clasificator) poate fi înlocuit cu un actor, iar reprezentarea celorlalte elemente (liniile de timp de viață, duratele de activare, mesajele) se reprezintă la fel ca într-o diagramă a secvențelor de mesaje între obiecte. (http://it-nolimit.com)
Ingineria și reingineria aplicațiilor UML
În ingineria mecanică pentru realizarea unui tipar complet pentru o piesă, inginerul utilizează desenul tehnic ca limbaj de comunicare, iar ca mod de reprezentare, vederea în epură. La fel cum inginerul proiectant comunică sarcinile echipei prin intermediul desenului tehnic, vizual (adică desenul tehnic), făcut să permită descrierea completă dar, în același timp, scutită de detalii inutile, inginerii software pot comunica cu maximă eficiență prin inermediul limbajul UML.
Ingineria software este o disciplină inginerească care se ocupă de producția tuturor aspectelor software.
Limbajul UML este o tehnică folosită pentru descrierea, specificarea și documentarea funcțiilor unei aplicații software în timpul fazei de design.
UML este un limbaj grafic creat pentru vizualizarea, specificarea, construirea și documentarea sistemelor software incluzând atât structura cât și designul acestora ce poate fi aplicat și în alte domenii cum ar fi afaceri sau alte sisteme non-software. Chiar dacă UML nu poate garanta succesul unui proiect, el constituie o unealtă foarte importantă reprezentând de fapt o colecție de practici inginerești care s-au dovedit de succes în modelarea de sisteme mari și complexe.
Unul din principalele scopuri ale dezvoltatorilor limbajului UML a fost acela de a crea un set de notații semantice care să se adreseze tuturor tipurilor de proiecte arhitecturale complexe indiferent de domeniu (software, industrial, marketing etc.). UML oferă un model standard de a scrie documentație de sistem, funcții de sistem precum și alte lucruri concrete cum ar fi declarații într-un limbaj de programare, scheme ale bazelor de date și componente software reutilizabile.
Unified Modelling Language (UML) este un limbaj de modelare și nu o metodă sau un proces. UML are notații specifice și reguli gramaticale bine precizate pentru construirea modelelor software. Există o bogată colecție de elemente notaționale grafice suportate de UML.
Există o serie de elemente care descriu clase, componente, noduri, activități, obiecte etc. dar există și elemente grafice care ajută la modelarea relațiilor dintre componentele amintite. Modelele și diagramele create au o importanță influentă asupra felului în care o anumită problemă este abordată și a felului în care o anumită soluție prinde formă. Prin abstractizare atenția se concentrează asupra detaliilor semnificante ignorandu-le pe celelalte. Aceasta este cauza pentru care :
•Fiecare sistem complex este abordat printr-un set de vederi diferite ale unui model
•Fiecare model poate fi reprezentat cu un grad diferit de fidelitate
•Cele mai bune modele sunt cele inspirate din realitate.
UML, un limbaj de modelare vizual nu a fost creat și nu este în măsură să înlocuiască un limbaj de programare. Dar cu ajutorul limbajului UML se poate modela orice tip de aplicație care rulează pe orice combinație hardware, sistem de operare sau tip de rețea.
Flexibilitatea lui permite modelarea aplicațiilor distribuite ce folosesc orice tip de middleware de pe piață, iar datorită faptului că obiectele și clasele sunt definite drept concepte fundamentale, un model construit în UML poate fi ușor de implementat într-o serie de limbaje de programare : C++, C#, Java.
Designul software nu este un simplu proces automat de transformare a unei specificații în alta. El implică și luarea unor decizii complexe care se vor repercuta asupra produsului final. Instrumentele pentru design, cele care ajută designerii în luarea deciziilor sunt un mijloc important de a crește productivitatea și calitatea software.
Au apărut instrumentele CASE (Computer Aided Software Engineering), care se găsesc în număr mare și au un grad diferit de utilizabilitate. Cele mai importante aplicații de acest fel sunt :
1. Microsoft Visio
2. Argo Uml
3. MagicDraw
4. BoUML
5. Acceleo
6. StarUML
7. Umbrello UML Modeller
Microsoft Visio permite desenarea diagramelor UML, aparține companiei Microsoft,
folosește grafica vectorială pentru crearea diagramelor. Are 2 ediții : standard și profesional. Ambele ediții au aceeași interfață grafică, dar varianta profesional are mai multe resurse și mai multe tipuri de diagrame. Cu Visio Professional se pot crea diagrame tehnice, diagrame de rețea etc. și este una dintre soluțiile de referință în domeniul dezvoltării diagramelor și a schemelor conceptuale. Visio nu este doar un simplu instrument grafic, el oferind suplimentar posibilitatea de a dezvolta aplicații complexe prin intermediul limbajului UML sau de a proiecta baze de date.
Principalele tipuri de scheme care pot fi create sunt grupate în categorii ce acopera cela mai diverse domenii.
Realizarea și implementarea aplicației
Procesul de realizare al aplicației
Aplicatia de pontaje online a fost creată în mai multe etape:
procesul de cunoaștere și instalare al unui server web
procesul de conectare la baza de date
procesul de logare a utilizatorului
procesul de verificare a statusului aplicației
procesul de lucru a utilizatorului cu utilitarele disponibile din aplicație
procesul de administrare al userilor
Procesul de cunoastere si instalare al unui server web
Pentru instalarea unui server web, s-a folosit aplicația XAMPP (versiunea pentru Windows), care are deja înglobat în el PHP, cu ajutorul căruia programatorul are posibilitatea de a crea diferite scripturi, serviciul Apache , necesar pentru a putea găzdui o aplicație web, dar și MySQL, serviciu care reprezintă baza de date.
Procesul de conectare la baza de date
Pentru conectarea la baza de date s-a folosit un fișier separat numit db.php, în cadrul căreia s-au definit atât hostul cât și userul, parola de conectare cât și numele bazei de date. Acest fișier a fost inclus în restul fișierelor php din proiect, asfel evitând încărcarea sursei.
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "seoweb_seo";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password)
or die("Nu ma pot conecta la DB!!!");
mysql_select_db($mysql_database, $bd) or die("Nu ma pot conecta la DB!!!");
Procesul de logare a utilizatorului
Pentru ca utilizatorul să aibă acces la resursele aplicației, este nevoie ca acesta să folosească un user și o parolă pentru autentificare. Pentru ca parola utilizatorului să fie sigură, aceasta a fost criptată cu MD5.
$password = md5($password);
Aplicația de pontaje online, a fost proiectată pentru a putea face față oricărui atac de tip XSS injection (Cross Side Scripting). Acest lucru este posibil, deoarece câmpurile user și password sunt filtrate cu atenție împotriva acestui tip de atac.
(sursă: http://en.wikipedia.org/wiki/Cross-site_scripting)
$username=mysql_real_escape_string($_POST['username']);
$password=mysql_real_escape_string($_POST['password']);
Logarea la sistem s-a ales să se facă pe bază de cookie și nu pe bază de sesiune. Avantajele acestei metode sunt că se poate stoca mult mai ușor informații despre utilizator, dar are și un dezavantaj. Este posibil ca browserul utilizatorului să folosească cookie-urile, astfel făcând imposibil accesul la aplicație. Din acest motiv se recomandă folosirea browserului Mozilla Firefox.
Trimiterea informațiilor din formularul de logare către scriptul php, se face prin metoda POST, deoarece este considerată mult mai sigură, spre deosebire de metoda GET, care afișează valorile variabilelor în browser.
În cazul în care utilizatorul folosește un user care nu există în baza de date, va primi un mesaj de eroare, iar folosirea aplicației va fi imposibilă.
Login user:
Login admin :
În procesul de login al aplicației se pot conecta un superuser (administratorul) și utilizatorul sau beneficiarul ticketelor în baza cărora primesc sarcinile aferente pe care trebuie să le execute într-un timp stabilit.
Astfel în cadrul aplicației vom folosi 2 fișiere de login separate pentru superuser (login.php care îl vom salva într-un folder separat “../admin/login.php”) și pentru user (login.php care v-a fi salvat în rădăcina aplicației).
../admin/login.php – login superuser
….
$username=mysql_real_escape_string($_POST['username']);
$password=mysql_real_escape_string($_POST['password']);
$password=md5($password);
$sql="SELECT id FROM supervisor WHERE username='$username' and passcode='$password'";
….
login.php – login user
….
$username=mysql_real_escape_string($_POST['username']);
$password=mysql_real_escape_string($_POST['password']);
$password=md5($password);
$sql="SELECT id FROM admin WHERE username='$username' and passcode='$password'";
….
În urma verificării identității dacă utilizatorul nu a introdus datele de login corect, respectiv username și password aplicația ne afișează următorul mesaj (în cazul administratorului):
În cazul user-ului fereastra diferă foarte puțin:
Ferestrele de mai sus au fost generate cu ajutorul unor fișiere login_error.php care au fost create in acest sens pentru fiecare tip de utilizator în parte(administrator, user).
În cazul user-ului în cazul în care am uitat parola avem posibilitatea de a recupera sau reseta parola contactând administratorul printr-un email.
Dacă am introdus corect datele de login aplicația în funcție de tipul utilizatorului ne v-a afișa meniul principal după cum urmează:
în cazul administratorului:
în cazul user-ului sau a beneficiarului ticketelor cu sarcini:
În cazul modulului de administrare s-au creat următoarele facilități:
adăugare user;
ștergere user;
adăugare ticket individual per user;
ștergere ticket per user;
vizualizare detalii user;
export lista de useri in fișier extern.
Modulul adăugare user
Acest proces presupune completarea obligatorie a câtorva campuri după cum se poate observa in fereastra de mai jos:
Codul sursă aferent acestui proces:
<?php
include("db.php");
$user_logat = $_COOKIE['username'];
if(isset($_COOKIE['username'])){
if($_SERVER["REQUEST_METHOD"] == "POST"){
// date sent from Form
$username=mysql_real_escape_string($_POST['username']);
$password=mysql_real_escape_string($_POST['password']);
$password=md5($password); // Encrypted Password
$nume=mysql_real_escape_string($_POST['nume']);
$prenume=mysql_real_escape_string($_POST['prenume']);
$mail=mysql_real_escape_string($_POST['mail']);
$cnp=mysql_real_escape_string($_POST['cnp']);
$tel=mysql_real_escape_string($_POST['tel']);
$departament=mysql_real_escape_string($_POST['departament']);
if(empty($_POST['username'])) echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Mare atentie la username!</font>";
else if(empty($_POST['password'])) echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Mare atentie la password!</font>";
else if(empty($_POST['cnp'])) echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Mare atentie la CNP!</font>";
else if(empty($_POST['mail'])) echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Mare atentie la e-mail!</font>";
else if(empty($_POST['departament'])) echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Mare atentie la departament!</font>";
else{
$email= $_POST['mail'];
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "E-mail is not valid<br>"."<td><input type=\"button\" value=\"Inapoi\" onClick=\"history.go(-1);return true;\"/></td>";
}
else{
$sql="Insert into admin(username,passcode,nume,prenume,mail,cnp,tel,departament) values('$username','$password','$nume','$prenume','$mail','$cnp','$tel','$departament')";
$result=mysql_query($sql);
echo "<font size=\"4\" color=\"light blue\" face=\"Times New Roman\" />Userul : <b>$username</b> a fost adaugat cu succes!</font>";
}
}
}
}
?>
……………
În fereastra de adăugare user s-a folosit puțin cod Javascript pentru a folosi funcția de autopoziționare a cursorului la deschiderea acestei ferestre precum și 2 funcții de verificare a introducerii datelor în formular la nume prenume cnp și telefon:
<script>
<!–start script de autopozitionare a cursorului in 1st forms-editbox–>
window.onload = function k(){document.forms[0].elements[0].focus()}
function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus();
return false;
}
return true;
}
<!–end script autopozitionare cursor–>
function verifica_caractere_introduse(obj) {
obj.value=obj.value.replace(/[^0-9]/gi, (RegExp.$1.indexOf("-") > -1) ? "-" : "");
}
<!–end verifica ce caractere sunt tastate si accepta doar cifre–>
<!–start functia verifica ce caractere sunt tastate si accepta doar litere–>
function doar_litere(obj) {
obj.value=obj.value.replace(/[^a-z;" "]/gi, (RegExp.$1.indexOf("-") > -1) ? "-" : "");
}
<!–end verifica ce caractere sunt tastate si accepta doar litere–>
</script>
……………….
Modulul ștergere user
În priocesul de ștergere a unui user este necesară introducerea username-ului după cum urmează:
<?php
include("db.php");
$user_logat = $_COOKIE['username'];
if(isset($_COOKIE['username'])){
if($_SERVER["REQUEST_METHOD"] == "POST"){
// username and password sent from Form
$username=mysql_real_escape_string($_POST['username']);
$usernamecheck = mysql_query("SELECT * FROM admin WHERE username='".$username."'");
$count = mysql_num_rows($usernamecheck);
if(empty($_POST['username']))
echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Userul ales NU exista in DB!</font>";
else if($count=='0') echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Mare atentie la username!</font>";
else{
$result=mysql_query("DELETE FROM admin WHERE username = '" .$username. "' ");
echo "<font size=\"4\" color=\"light blue\" face=\"Times New Roman\" />Userul : <b>$username</b> a fost sters cu succes!</font>";
}
}
}
?>
………………
Modulul adăugare ticket individual per user:
În procesul de adăugare ticket individual per user sunt necesare introducerea user-ului căruia îi v-a fi alocat acest ticket, titlul ticketului și detaliile aferente acestui ticket după cum urmează:
<?php
include("db.php");
$user_logat = $_COOKIE['username'];
if(isset($_COOKIE['username'])){
#$result = mysql_query("SELECT * FROM admin,detalii");
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty($_POST['username'])) {
echo '<script>alert("Userul a fost omis!")</script>';
}else{
$result = mysql_query("INSERT INTO `detalii` (user,titlu,msg,statusprj) VALUES('".$_POST['username']."','".$_POST['titlu']."','".$_POST['mesaj']."','0') ");
echo '<script>alert("Userul '.$_POST["username"].' a primit un ticket")</script>';
}
}
}
else
{
header("location: login_error.php");
}
…………..
Modulul ștergere ticket:
În modulul ștergere ticket trebuie completat username-ul ticketului care dorim să-l ștergem precum și titlul acestui ticket după cum urmează:
<?php
include("db.php");
$user_logat = $_COOKIE['username'];
if(isset($_COOKIE['username'])){
if($_SERVER["REQUEST_METHOD"] == "POST"){
// username and password sent from Form
$username=mysql_real_escape_string($_POST['username']);
$usernamecheck = mysql_query("SELECT * FROM admin WHERE username='".$username."'");
$titlu =mysql_real_escape_string($_POST['titlu']);
$count = mysql_num_rows($usernamecheck);
if(empty($_POST['username']))
echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Userul ales NU exista in DB!</font>";
else if($count=='0') echo "<font size=\"4\" color=\"red\" face=\"Times New Roman\" />Mare atentie la username!</font>";
else{
$result=mysql_query("DELETE FROM detalii WHERE user = '".$username."' AND titlu = '".$titlu."' ");
echo "<font size=\"4\" color=\"light blue\" face=\"Times New Roman\" />Ticketul userului: <b>$username</b> a fost sters cu succes!</font>";
}
}
}
?>
…………………..
Modulul vizualizare detalii user
În procesul de vizualizare detalii user sunt afișate detaliile legate de userul inregistrat și căruia avem alocate sau nu unul sau mai multe tickete după cum urmează:
<?php
include("db.php");
$user_logat = $_COOKIE['username'];
if(isset($_COOKIE['username'])){
$uid=$_GET['uid'];
if($uid==""){
echo '<script>alert("Eroare de securitate!!!")</script>';
echo '<script>document.location="welcome.php"</script>';
}
$an = date("Y");
$luna = date("m");
$zi = date("d");
$ora = date("H");
$min = date("i");
$result = mysql_query("SELECT * FROM `admin`,`detalii` WHERE admin.username = detalii.user AND admin.username = '".$uid."'");
$r = mysql_query("SELECT * FROM `admin`WHERE username = '".$uid."'");
if ($r){
$fields_num = mysql_num_fields($r);
while($row = mysql_fetch_row($r))
{
echo '<table border ="0">
<tr> <td align="ceter">User Details: </td><td> <strong>'.$row[1].'</strong></td><td>';
for($i=1;$i<=195;$i++) echo ' ';
echo '</td><td>
<a href="welcome.php">
<img src="../img/back_button.gif" border="0" title="back"> </a>
</td>
<td>
<a onclick="logout()" href="logout.php"> LOGOUT </a> </td> </tr></table><HR>';
echo '<table border = "0">
<tr><b>DETALII ANGAJAT</b></tr>
<tr><td>Nume: </td><td align = "right">'.$row[3].'</td></tr>
<tr><td>Prenume: </td><td align = "right">'.$row[4].'</td></tr>
<tr><td>Mail: </td><td align = "right">'.$row[5].'</td></tr>
<tr><td>Telefon: </td><td align = "right">'.$row[6].'</td></tr>
<tr><td>Departament: </td><td align = "right">'.$row[8].'</td></tr>
<tr><td> </td><td align = "right"><a href ="download.php?uid='.$uid.'">Genereaza Raport</a></td></tr>
<tr><td> </td></tr>
<tr><td> </td></tr>
<tr><td><b>DETALII TIKETE</b></td></tr>
<tr><td>Titlu Tickete: </td><td align="center">';
if ($result){
$fields_num = mysql_num_fields($result);
$contor_status_close = 0;
$contor_status_open = 0;
while($row = mysql_fetch_row($result)){
echo '| <b>'.$row[13].'</b> | ';
if ($row[15] =="1"){
$contor_status_close = $contor_status_close + 1;
}
if ($row[15] !="1"){
$contor_status_open = $contor_status_open +1;
}
}
}
echo ' </td></tr><tr><td>Total Tikete: </td><td> ';
$count = mysql_num_rows($result);
echo ' '.$count;
$rr = mysql_query("SELECT `inora` , `inmin` , `outora` , `outmin` FROM `".$uid."` WHERE inzi='".$zi."' AND inluna='".$luna."' AND `user`='".$uid."' ");
if ($rr){
$fields_num = mysql_num_fields($rr);
$sum_ora = 0;
$sum_min = 0;
while($row = mysql_fetch_row($rr)){
if ( ($row[2] !="") && ($row[3]!="") ){
$sum_ora = $sum_ora + ($row[2] – $row[0]);
$sum_min = $sum_min + ($row[3] – $row[1]);
}
}
mysql_free_result($rr);
}
echo ' </td></tr><tr>
<td>Tickete Inchise: </td><td> '.$contor_status_close.'</td></tr>
<tr><td>Tickete Deschise: </td><td> '.$contor_status_open.'</td></tr>
<tr><td>Timp lucrat: </td><td> '.$sum_ora.' ore si '.$sum_min.' minute</td></tr></table>';
}
mysql_free_result($r);
}
}
else
{
header("location: login_error.php");
}
?>
6.Concluzii:
Această lucrare este un studiu în domeniul programării web, studiu ce a presupus dezvoltarea unei aplicații practice folosind unele platforme existente în acest domeniu.
Pentru realizarea aplicației s-a folosit o schemă logică bine structurată atât pe partea de administrare, cât și pe partea de useri. Aplicația conține în total nouă ferestre pentru utilizator și pentru administrare în care se poate adăuga sau șterge useri, adăuga și sterge tickete, vizualizare tickete, login user, login administrator, editare tickete in modul user, generare raport user.
Raportul zilei este foarte benefic pentru utilizator și trebuie trecut in modulul de editare ticket inainte de părăsirea prin logout, fiind evitată lipsa de comunicare și notarea evenimentelor. Raportul zilei permite totodata și vizualizarea din urmă a evenimentelor și sarcinilor efectuate sau neefectuate.
Un alt aspect foarte important este acela ca administratorul are posibilitatea de a emite mai multe tickete cu sarcini pentru fiecare utilizator inregistrat, putand vizualiza in orice moment un raport cu privire la userii inregistrati si la statusurile ticketelor/sarcinilor eliberate.
Bibliografie
Rick Darnell – “HTML 4 UNLEASHED” – Professional Reference Edition;
Ben Forta – “SAMS Teach Yourself SQL in 10 Minutes”;
Bill McCarty – “PHP 4 Programmer’s Guide”;
Laura Thomson – “Dezvoltarea aplicatiilor WEB cu PHP si MySQL: Teora 2004”
Ullman Larry – “PHP pentru World Wide Web in imagini : Teora 2004”
Buraga Sabin – “Aplicatii Web la cheie – Studii de caz implementate in PHP : Polirom 2003”
Gh. Sabau , V. Avram – “Sisteme informatice pentru management”
J. Perkins, B. Morgan – “ SQL fara profesor in 14 zile” : Teora Bucuresti 1998
Kin V., Reiner D. , Batory S. – “Query processing in databases systems”
Virgil Chichernea – “ Bazele informaticii – Sisteme informatice pentru birou” : Sylvi Bucuresti 1998
Donald Bell – “UML basics: The class diagram an iontroduction to structure UML” : 2004
T. Connoly , C. Begg , A. Strachan – “ Baze de date – proiecte , implementare , gestiune” : Teora Bucuresti 2001
V. Stanciu – “Proiectarea Sistemelor Informatice”
Web Information Retrieval Page 69 – 70
www.cs.ubbcluj.ro
www.php.net
www.php.net/quickref.php
www.phpromania.net
www.phpmyadmin.net
www.mysql.com
www.scridb.com
www.w3schools.com
www.google.com ( search engine)
www.yahoo.com (search engine and web directory )
www.search.aol.com (web directories)
http://en.wikipedia.org/wiki/Cross-site_scripting
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sistem de Ticketing Si Pontaj Online (ID: 150479)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
