Licenta Motoc Vlad V4 [307500]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT ZI
Proiect de diplomă
COORDONATOR ȘTIINȚIFIC
Șef lucrări. dr. ing. Maștei Daniela
ABSOLVENT: [anonimizat]
2016
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT ZI
Aplicație web pentru managementul unei entități comerciale
COORDONATOR ȘTIINȚIFIC
Șef lucrări. dr. ing. Maștei Daniela
ABSOLVENT: [anonimizat]
2016
Capitolul 1
Introducere
Am realizat proiectul cu scopul de a-[anonimizat] o aplicație utilă în activitatea economică. În primul rând am ales să implementez acestă aplicație deoarece tehnologiile folosite în vederea dezvoltării proiectului îmi sunt destul de familiare și în același timp acestea au o sferă largă de utilizare.
[anonimizat]-side, în același timp fiind și gratuite. [anonimizat]-[anonimizat].
Prezenta lucrare este structurată în 4 capitole, după cum urmează:
Capitolul 1 – Introducere – reprezintă justificarea temei alese precum și structurarea aplicației.
Capitolul 2 – [anonimizat] o scurtă introducere a principalelor tehnologii web utilizate pentru a [anonimizat].
Capitolul 3 – Specificațiile aplicației. [anonimizat] a aplicației, [anonimizat] a informațiilor și a datelor.
Capitolul 4 – Concluzii.
Capitolul 2
Considerente teoretice
Internetul reprezintă un ansamblu de rețele de calculatoare interconectate din întreaga lume. [anonimizat] – care permit transferul de date între diferite rețele de pe glob și totodată permite și accesul la informațiile stocate îm respectivele calculatoare.
[anonimizat]:
Front-end: HTML, CSS
Limbajul folosit pentru scripting: PHP, [anonimizat]: MySQL
Cerințele software minime necesare pentru a putea rula aceasta aplicație pe calculatorul personal sunt:
PHP 4.0
APACHE HTTP Server
Microsoft Windows or Linux
2.1 Pagini Web și Servere Web
Realizarea unui World Wide Web se bazează pe un protocol numit Hypertext Transfer Protocol(HTTP). [anonimizat].
O aplicație web este o [anonimizat] 2 părți: [anonimizat] (client) [anonimizat] (server). [anonimizat] o arhitectură ce descrie relația dintre 2 [anonimizat]. Clientul face o [anonimizat].
[anonimizat]-ul (navigatorul) este clientul care trimite cereri unui server web. [anonimizat]ită niciun fel de procesare pe partea de server, sau pagini dinamice, care cuprind script-uri scrise într-un anumit limbaj de programare pe care serverul weble interpretază și le trimite înapoi clientului sub formă de pagină statică.
În momentul în care un site local este publicat, întreg directorul în care se regăsesc fișierele sursă, este transferat la server-ul Web care conține software-ul prin care site-ul respectiv este transmis navigatoarelor Web ale calculatoarelor conectate la Internet. Odată publicat, site-ul se transformă din site local în site Web, iar interacțiunea cu el se petrece similar cu interacțiunea modulului descris în Fig.1.
Fig. 1 Comunicarea dintre navigatorul Web și serverul Web.(preluată din)
Orice aplicație web care este alcătuită atât din partea de client(de ex. HTML) cât și din partea de server(de ex. PHP). Partea de client, adică limbajul HTML afișează informațiile utilizatorilor, în timp ce partea de server, are rol de a stoca și procesa informațiile prezentate de HTML.
2.2 HTML și CSS
În scopul de a face ca o aplicație web să poată fi funcțională, este necesar ca pentru implementarea aplicației să se folosească un limbaj de marcare. Acest limbaj are ca și scop structurarea și prezentarea aplicației într-un mod cât mai ușor de înțeles și utilizat.
Paginile Web reprezintă un ansamblu de fișiere care conțin un text simplu bazat pe limbajul HTML(HyperText Mark-up Language). Pentru a putea realiza un site web, avem nevoie de HTML care are la baza folosirea unor etichete denumite tag-uri cu ajutorul cărora oferă indicații de redare a informației. Navigatorul Web interpretează aceste etichete, și astfel documentul ia forme diferite cum ar fi: tabele, liste, paragrafe, titluri etc.
World Wide Web Consortium (W3C) este o ascociație fondată și condusă în prezent de Tim Berners-Lee, care are ca scop dezvoltarea standardelor pentru World Wide Web în vederea creșterii și a îmbunătățirii acestuia, pentru a-l face accesibil unei sfere largi de utilizatori. Astfel, această asociație deține standardele HTML.
Un document HTML înceape cu declarația <!DOCTYPE>. Aceasta reprezintă o instrucțiune care îi asociază browser-ulului definiția formală a unei anumite versiuni HTML. Următoarea eticheta prezentă în orice document HTML, o reprezintă eticheta <html>..</html>. Acest tag încorporează toate celelalte etichete din fișierul HTML și îi transmite navigatorului Web faptul că documentul curent este de tip HTML. În continuare este reprezentată secțiunea de antent prin tag-ul <head>…</head>. Între cele 2 marcaje, <head> și </head> vom putea scrie informații generale despre documentul HTML. Câteva tag-uri care se pot scrie în secțiunea <head> sunt titlu(reprezentat prin tag-ul <title> care îl vom putea vizualiza în fereastra de titlu a ferestrei browser-ului sau detaliile despre autor (folosind tag-ul <meta>, care ajută la controlarea modului în care motoarele de căutare indexează site-ul). Totodată, în această zonă putem adăuga anumite fișiere externe, acest lucru putând fi posibil cu ajutorul tag-ul <link>.
Corpul documentului este delimitat în documentul HTML prin intermediul tag-ului <body>…</body>. Acest bloc cuprinde conținutul propriu-zis al paginii web, adică toate elementele fișierului HTML: imagini, câmpuri, text, liste, tabele etc. În fereastra browser-ului va fi afișat conținutul ce a fost scris în secțiunea de <body>…</body>.
Pentru a formata respectiv a stiliza elementele unui fișier HTML, a fost nevoie de introducerea unui nou standard care are ca și rol de a ajuta la dezvoltarea noilor concepte în aplicațiile de webdesign. În acest scop s-a introdus limbajul CSS(Cascading Style Sheet), care se ocupă de personalizarea tag-urilor.
CSS(Cascading Style Sheet) este un limbaj de stilizare care se ocupă cu acest lucru, personalizând tag-urile. Standardele acestui limbaj sunt menționate tot de asociația lui Tim Berners-Lee World Wide Web Consortium (W3C). La baza formatării unui document HTML stau proprietățile limbajului CSS. Utilizând aceste proprietăți avem posibilitatea de a formata orice element al unei pagini web pornind de la culorile textelor, margini, imagini și culori de fundal până la poziționarea elementelor în pagină. Limbajul de stilizare CSS are o sintaxă simplă, proprietățile cu ajutorul cărora formatăm pagina web, sunt specificate prin cuvinte cheie din limba engleză: font, font-size, text-align, margin, padding, float, height, border, background etc.
Pentru a formata un fișier HTML cu ajutorul CSS-ului avem la dispoziție 2 metode și anume:
CSS inline – stilizarea paginii web se realizează direct în interiorul tag-urilor HTML prin atributul „style” (de exemplu <p style=”font-size: 16px;”>Primul paragraf</p>).
CSS extern – această metodă presupune utilizarea unui utilizarea unui fișier CSS extern, care să fie inclus în partea de head a fișierului HTML cu ajutorul tag-ului <link>.
În concluzie pentru a formata un fișier HTML cu ajutorul limbajului CSS este de preferat utilizarea celei de a doua metodă deoarece modificările ulterioare vor fi făcute numai în fișierul CSS, nu și în HTML.
2.3PHP și Javascript
Acronimul PHP provine din limba engleză de la ”PHP: Hypertext Preprocessor”. Acesta reprezintă un limbaj de scripting folosit pe scară largă în dezvoltarea paginilor și a aplicațiilor web prin înglobarea codului PHP în fișierele HTML. Inițial, fondatorul acestui limbaj, Rasmus Lerdof, l-a denumit Personal Home Page în anul 1995, din dorința acestuia de a urmări numărul de vizitatori ai site-ului său, prin crearea unui script care să execute acest lucru.
În momentul actual această tehnologie este una dintre cele mai utilizate în scopul dezvoltării și implementării unei aplicații web. Acest lucru se datorează faptului că, PHP-ul fiind un limbaj de scripting, codul ce va fi scris nu trebuie compilat în cod mașină înainte de rulare, ceea ce îl face ușor de editat și testat. În al doilea rând ceea ce face ca PHP-ul să fie utilizat de foarte mulți dezvoltatori de aplicații web îl reprezintă faptul că sintaxa acestui limbaj este relativ simplă provenind din celelate limbaje cum ar fi C, JavaScript sau Perl.
PHP-ul permite dezvoltatorilor să creeze unele aplicații web dinamice a căror conținut se modifică în timp. Scopul principal al PHP-ului este crearea de script-uri pentru a putea fi rulate pe un server web și nu în browser-ul web, permițând modificarea paginilor web înainte ca acestea să fie transmise de server către browserele utilizatorilor.
JavaScript este unul dintre cele mai cunoascute limbaje de scripting pe partea de client, deoarece acesta este suportat de orice browser existent. Cu ajutorul acestui limbaj se pot încorpora în paginile HTML unele script-uri pentru diferite activități cum ar fi de exemplu verificarea datelor introduse de către utilizator. Reprezentarea unei pagini web se realizează cu ajutorul browserului care reține în memorie respectiva reprezentare sub forma unui arbore de obiecte și pune la dispoziție obiectele respective script-urilor JavaScript care le pot citi și manipula. Browserul execută script-urile în momentul în care are loc un eveniment. Am ales să folosesc JavaScript în aplicația aceasta în momentul în care contabilul este nevoit să apese butonul care are rolul de a calcula salariul unui angajat.
2.4 Apache și MySQL
Spre deosebire de script-urile scrise în alte limbaje, script-urile PHP au nevoie de un server care să le proceseze. Un exemplu de server, ca și cel folosit de către mine în dezvoltarea acestei aplicații este Apache. În prezent acesta este unul dintre cele mai populare servere web utilizate pentru dezvoltarea de aplicații web dinamice. Apache este un server de tip open-source, care are la bază protocolul HTTP(Hypertext Transfer Protocol). Cu ajutorul acestuia dezvoltatorii au posibilitatea să ruleze script-urile PHP local, bineînțeles doar dacă au instalat această aplicație pe calculator. Un alt lucru interesant la această aplicație este faptul că dispune de găzduire virtuală. Acest lucru înseamnă ca aplicația are posibilitatea de a găzdui mai multe site-uri simultan pe același server.
În scopul implementării unei aplicații web dinamice, pe de-o parte iar pe de altă parte în scopul implementării acestei aplicații s-a pus problema stocării datelor astfel încât accesul la aceste date să poată fi realizat cât mai fiabil cu putință pentru a putea fi modificate rapid și ușor. Tocmai acest lucru reprezintă principala diferență dintre un website dinamic și un website static realizat în HTML.
Chiar dacă am prezentat numeroase avantaje a limbajului PHP, singurul inconvenient al acestuia este faptul că acesta nu dispune de o metodă eficientă de stocare a informațiilor. Tocmai din această pricină este nevoie de un Sistem de Gestiune a Bazelor de Date(SGBD).
O bază de date bine structurată are rolul de a asigura următoarele funcții:
Abstractizarea datelor – baza de date fiind un model al realității;
Integrarea datelor – datele să fie încărcate în baza de date corect, iar manipularea acestora să respecte restricțiile de integritate;
Securitatea datelor – se referă la limitarea accesului la baza de date;
Partajarea datelor – această funție are rolul de a asigura faptul că datele pot fi accesate de mai mulți utilizatori și eventual în același timp;
Independența datelor – se referă la faptul că dacă intervine o modificare asupra bazei de date, această modificare să nu afecteze programele de aplicații.
Fig. 2 Funcțiile unei baze de date
Unul dintre cele mai întâlnite Sisteme de Gestiune a Bazelor de Date în aplicațiile web dezvoltate cu ajutorul limbajului PHP este MySQL. Denumirea acestui limbaj provine de la numele fiicei co-fondatorului Michael Wideniu, My și SQL(Structured Query Language). Lansat în anul 1996, MySQL permite dezvoltatorilor aplicațiilor web dinamice să stocheze datele în tabele structurate pe linii și coloane fiind o parte integrată a platformelor LAMP sau WAMP. Datorită datelor structurate în tabele, informațiile sunt foarte bine organizate, pot fi adăugate, modificate sau șterse date foarte ușor. Principalele avantaje ale acestui server de baze de date sunt faptul că este un server multi-user și multi-thread, adică garantează faptul că mai mulți utilizatori pot accesa datele simultan.
Din pricina faptului că MySQL utilizează limbajul de programare SQL, acesta are rolul de a se ocupa 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 fiind un limbaj specific pentru gestiunea datelor în SGBD-uri, și fiind regăsit într-o foarte mare măsura combinat cu limbajul PHP ca aplicație web mai este denumit și Duo-ul Dinamic.
În concluzie voi sumariza câteva avantaje ce m-a determinat să implementez această aplicație utilizând Duo-ul Dinamic:
Atât limbajul de programare PHP cât și sistemul de baze de date SQL sunt gratuite;
Ambele tehnologii sunt focalizate pe aplicații web;
Comunicarea dintre cele două este foarte eficientă;
Gradul de utilizare a celor două este foarte mare, ceea ce face ca orice informație să poată fi găsită cu ușurință;
Funcțiile SQL sunt implementate folosind o bibliotecă de clase optimizată și sunt foarte rapide;
Serverul este disponibil ca program separat ce poate fi folosit într-un mediu de rețea de tip client/server.
Capitolul 3
Specificațiile aplicației
3.1 Prezentare generală
Aplicația are următoarele obiective:
Înregistrare online a angajaților;
Evidența salarială a personalului;
Menținerea bazei de date cu angajați;
Vizualizarea informațiilor despre angajați după anumite criterii.
Versiunea momentană a aplicației este structurată în 3 părți, pentru cele 3 tipuri de utilizatori cu drepturi de acces:
Administratorul
întreține baza de date;
adaugă noi angajați în companie;
editează informațiile deja existente în baza de date a angajaților;
vizualizează angajații în funcție de anumite criterii.
Contabilul
calculează salariile, lunar și face plățile salariale către angajați;
are drepturi doar de a vizualiza informațiile despre angajați, fără posibilitatea de a modifica anumite informații despre aceștia;
aplicația îi oferă posibilitatea de a printa calculul salariului net după ce se rețin contribuțiile și reținerile către stat;
are la dispoziție în orice moment o evidență a sumelor plătite către angajați.
Angajatul
se poate conecta în aplicație doar cu un identificator unic, pe lângă numele de utilizator și parolă;
poate să își vizualizeze profilul complet cu toate informațiile;
are o evidență lunară asupra salariilor plătite de către contabil;
are acces la schimbarea parolei de autentificare.
Prin acest proiect mi-am propus să implementez o aplicație care să poată să fie folosită într-o socicetatea comercială, putând fi utilizată și de acele persoane care nu dispun de cunoștințe superioare în domeniul informaticii. Aplicația are la bază o implementare simplă cu ajutorul unor ferestre, butoane, câmpuri de introducere a datelor și tabele care nu fac altceva decât să ușureze munca de zi cu zi a persoanelor ce lucrează în domeniul respectiv. Adăugarea, ștergerea sau modificarea datelor unui angajat, evidența salarială a angajaților, repartizarea acestora pe diferite criterii sunt doar câteva dintre operațiile care se pot efectua.
Structura aplicației este reprezentată în Fig. 3.
Fig. 3 Structura aplicației
3.2 Stocarea datelor
Acest proiect are ca punct de pornire prelucrarea datelor, care pot fi de la șiruri de caractere, numere întregi până la date calendaristice ș.a.m.d.
În stocarea datelor introduse în baza de date am folosit WampServer folosind phpMyAdmin. Acesta este un pachet de aplicații software pentru sistemul de operare Microsoft Windows constând din serverul web Apache pentru suportul bazei de date MySQL și limbajului de scripting PHP. Odată instalat pachetul de aplicații WampServer are un comportamentul unui server, ceea ce mi-a permis să testez aplicația. Ca aplicație de tip server am folosit Apache, acesta fiind un program reactiv, adică acesta rulează în continuu pe calculatorul personal unde se regăsește aplicația și așteaptă cererea din partea clientului(browser).
În figura următoare este reprezentată structura bazei de date aplicației curente:
Fig. 4 Structura bazei de date creată cu PhpMyAdmin.
Conform figurii de mai sus baza de date este structurată în 4 tabele cu câmpurile aferente astfel:
tabela admin – sunt stocate datele despre numele de utilizator administratorului respective parola acestuia
tabela inreg_ang – în momentul în care administratorul adaugă un angajat nou, toate datele sunt stocate în această tabelă
tabela sal – în această tabelă sunt stocate datele cu privire la salariile angajaților după ce contabilul achită salariul angajului respectiv
tabela var – conține 3 câmpuri cu variabile cu ajutorul cărora se calculează salariul în funcție de valoarea lor
3.3 Pagina de acces
Pentru a se accesa serverul în momentul în care vom dori să accesăm serverul prin comanda http://localhost/Lic, serverul va trimite prima pagină a aplicației ce va fi afișat in browser așa cum este prezentat în Fig 5.
Fig. 5 Prima pagină a aplicației
După cum se poate vedea, prima pagină reprezintă doar pagina de autentificare pentru administrator. Prin intermediul acestei pagini, ceilalți utilizatori respectiv contabilul și angajatul, vor putea naviga spre pagina lor de autentificare, după cum am prezentat și în capitolul anterior cu ajutorul etichetei HTML <a href>, unde a este eticheta pentru Link, iar href reprezintă adresa fișierului HTML pentru accesul contabilului, respectiv al angajaților. Astfel în momentul în care vom face click pe “––-Spre serviciul Contabilitate–” se va deschide o nouă pagină unde contabilul va fi nevoit să își introducă numele de utilizator și parola pentru a se putea autentifica. Acest lucru se întamplă tocmai cu ajutorul etichetei<a href>, unde href în cazul de față reprezintă pagina de autentificare a contabilului. Administratorul în această pagină trebuie să își introducă numele de utilizator și parola după care să apese butonul Autentificare pentru a avea acces în aplicație. În timp ce administratorul face un singur click, codul sursă realizează o interogare a bazei de date, în care se verifică dacă în tabela admin există utilizatorul cu numele și parola identică cu cele introduse. Codul ce se execută este prezentat mai jos:
<?php
include('admin/connection.php');
$nume_utilizator = ($_POST[' nume_utilizator ']);
$parola = ($_POST[' parola]);
$intrg1 = mysql_query("SELECT * FROM admin WHERE nume_utilizator = '$ nume_utilizator AND parola = '$ parola '");
$count = mysql_num_rows($intrg1);
if($count==1)
{
session_start();
$_SESSION[' nume_utilizator '] = $ nume_utilizator;
header('Location: admin/index.php');
}
else
{
echo "Nume de utilizator sau parola incorecta!";
}
?>
Cu ajutorul codului de mai sus, odată selectată baza de date din PhpMyAdmin, cu ajutorul variabilei array globale $_POST sunt accesate valorile câmpurilor din formularul de autentificare. În continuare se face o interogare în tabela admin din baza de date și se selectează numele de utilizator și parola administratorului. Dacă valorile câmpurilor din formularul de autentificare corespund cu cele existente în tabela admin cu ajutorul funcției header din php se face redirecționare către prima pagină din aplicație pentru modul de utilizator administrator. În caz contrar celui ce dorește să accese pagina în modul administrator i se va afișa un mesaj de eroare.
Din motive de securitate, fiecărui angajat i s-a atribuit un identificator unic care este necesar în momentul autentificării în aplicație, dar se execută aproximativ același cod sursă doar pe langă interogarea numelui de utilizator și a parolei se mai face o verificare ca identificatorul unic introdus să fie identic cu cel existent în tabela angajați.
3.4 Pagina pentru secțiunea administrator
În momentul în care autentificarea administratorului s-a efectuat cu succes, acestuia i se va deschide prima pagină (Fig. 6).
Fig. 6 Prima pagină a tipului de utilizator administrator
Administratorului, odată ce a accesat aplicația, sus în partea stângă, îi va apărea un mesaj de forma :”Bine ai venit <numele administratorului> !”. Acest lucru a putut fi făcut posibil prin urmatoarea secvență de cod care va afișa numele de utilizator din formularul de autentificare: “Bine ai venit <?php echo $_SESSION[' nume_utilizator];?> !”. Acesta poate vizualiza toți angajații din entitatea economică repartizați în funcție de anumite criterii, acest lucru putându-se realiza în butonul Acasa. Pentru a realiza acest lucru, am fost nevoit să pun un contor care face o însumare a tuturor angajaților. De exemplu următoare secvență de cod:
$intrg5 = "SELECT *, count(*) FROM inreg_ang GROUP BY departament";
$rn5 = mysql_query($intrg5) or die(mysql_error());
contorizează numărul total de angajați din fiecare departament
Cu ajutorul interogărilor din baza de date, am putut face posibilă vizualizarea angajaților în funcție de anumite criterii, punând în condiția interogării criteriul respectiv. Administratorul făcând click pe una din funcții, pe unul din departamente sau pe tipul de sex al angajților i se va deschide o noua pagină unde va putea vizualiza respectivii angajați. Astfel cu ajutorul variabilei array globale $_GET, în momentul în care administratorul face click de exemplu pe Tehnician, se verifică în tabela angajaților în câmpul funcție dacă există angajați cu funcția de tehnician, după care se returnează toți angajați cu această funcție și se afișează într-o pagină nouă, după cum putem observa și in Fig. 7.
Fig. 7 Exemplu de afișare a tuturor angajaților cu funcția tehnician
Un lucru de remarcat aici e faptul că data angajării nu face parte din formularul de înregistrare a angajaților. Pentru a putea vizualiza și data angajării, în structura tabelei angajaților (Fig.3) fac referință la câmpul data_inrg care este de tipul timestamp, iar la default apare funția CURRENT_TIMESTAMP. Această funcție returnează timpul curent sub forma an – luna – zi oră. Această valoare este preluată din sistemul de operare al computerului pe care instanța de SQL Server se execută.
În momentul în care administratorul dorește să înregistreze un nou angajat, acesta trebuie doar să meargă pe butonul Înregistrare Angajat, după care se va deschide un formular precum cel din Fig. 8.
Fig. 8 Formular pentru a înregistra un nou angajat
Odată ce sunt completate toate câmpurile din formular cu datele personale ale fiecărui angajat, și este apăsat butonul de Înregistrare angajat, în spate se inserează în tabela angajaților toate aceste date despre angajat prin intermediul următoarei secvențe de cod:
$intrg4 = "INSERT INTO inreg_ang (nume, sex, zi_nas, departament, functie, exp, nume_utilizator, parola) VALUES ('$nume', '$sex', '$zi_nas', '$departament', '$functie', '$exp', '$ nume_utilizator ', md5('$parola'))";
Pentru a insera parola angajatului, am folosit funcția MD5 (Message Digest Algorithm 5), care este o funcție criptografică de tip hash unidirecțional, care livrează ca rezultat o valoare fixă ca lungime de 128 Biți. Astfel în baza de date, orice parolă a fiecărui angajat este criptată după cum se poate vedea și în Fig. 9.
Fig. 9 Înregistrarea unui angajat în baza de date
Tot în cadrul paginii administratorului mergând pe butonul de Vizualizare Angajati, acesta poate să vizualizeze toți angajații din instituție conform Fig.10.
Fig. 10 Vizualizarea tuturor angajaților din instituție prin prisma administratorului
Această opțiune a aplicație și anume de a vizualiza toți angajați a fost posibilă unei simple interogări a tabelei angajaților din baza de date. Am ales această metodă de vizualizare prin implementarea unui tabel în HTML, deoarece aceste date sunt păstrate în baza de date sub formă tabelară fiind unul dintre cele mai logice mijloace de păstrare a datelor. După ce am realizat conectarea la tabela angajaților din baza de date, am selectat toate informațiile din tabela respectivă urmând sa creez un tabel HTML cu ajutorul etichetei <table>. Aceste lucruri fiind făcute, cu ajutorul funcției mysql_fetch_array, va apărea informațiile preluate din tabela atât timp cât există inregistrări în tabela respectivă, punând fiecare informație într-o coloană nouă.În momentul în care se ajunge la ultima informație despre un angajat, mysql_fetch_array va returna datele despre cel de-al doilea angajat pe un rând nou. Pentru a se înțelege mai bine, în cele ce urmează se regăsește codul sursă ce realizează aceste lucruri:
<?php
//conectare la baza de date
include('connection.php');
//vizualizare înregistrări
$intrg = mysql_query("SELECT * FROM inreg_ang");
echo "<table border='1' align='center'>
<tr>
<th>Identificator Unic</th>
<th>Nume</th>
<th>Sex</th>
<th>Zi de nastere</th>
<th>Departament</th>
<th>Functie</th>
<th>Experienta</th>
<th>Data angajarii</th>
</tr>";
while ($rand = mysql_fetch_array($intrg))
{
echo "<tr>";
echo "<td>" .$rand['id_ang'] . "</td>";
echo "<td>" .$rand ['nume'] . "</td>";
echo "<td>" .$rand ['sex'] . "</td>";
echo "<td>" .$rand ['zi_nas'] . "</td>";
echo "<td>" .$rand ['departament'] . "</td>";
echo "<td>" .$rand ['functie'] . "</td>";
echo "<td>" .$rand['exp'] . "</td>";
echo "<td>" .$rand['data_inrg'] . "</td>";
echo "<td> <a href= delete.php?id_ang=".$rand['id_ang'].">Stergere</a>";
echo "<td> <a href= up_ang.php?id_ang=".$rand['id_ang'].">Modifica</a>";
echo "</tr>";
}
echo "</table>";
echo "<a href=index.php>Acasa</a>";
?>
Fig. 11 Tabelul HTML pentru vizualizarea angajaților
După cum se poate observa și în figura de mai sus, tot în acest tabel apar și opțiunile de a modifica sau de a șterge un angajat din baza de date. Pentru realizarea uneia dintre aceste 2 opțiuni, administratorul trebuie să dea click pe Ștergere sau Modifică. Ștergea unui angajat se realizează în funcție de identificatorul unic al acestuia. Astfel în momentul în care administratorul face click pe opțiunea Ștergere, se caută în tabela angajaților angajatul cu identificatorul unic ce apare în prima coloană, după care se realizează ștergerea prin codul prezentat mai jos:
$intrg = ("DELETE FROM inreg_ang WHERE id_ang = '$id_ang'");
A doua opțiunea prezentă aici este cea de a modifica datele despre un angajat.În momentul în care utilizatorul face click pe Modifică, se deschide o pagină nouă prin eticheta a href, unde acesta poate modifica doar anumite date despre angajat cum ar fi numele, departamentul în care acesta lucrează sau funcția pe care acesta o deține (Fig.12).
Fig. 12 Opțiunea de a modifica datele despre un angajat
După cum se poate observa și în Fig. 11, datele unui angajat sunt modificate în funcție de identificatorul unic al acestuia. Chiar dacă apare și un câmp cu indetificatorul unic al acestuia, acest număr nu poate fi modificat deoarece în acest formular, la câmpul Idetificator Unic i s-a setat atributul read-only. Astfel după ce utilizatorul a modificat datele din formular, acesta are la atributul action un alt fișier php care va rula în momentul în care se va apasa butonul Modifica. Acest fișier este cel care realizează de fapt modificarea datelor angajatului.În funcție de identificatorul unic al angajatului, prin intermediul acestui nou fișier se inserează noile date despre angajat în tabela angajaților cu ajutorul următoarei interogări. Fiecare informație din fiecare câmp din formular este luată în parte și este introdusă în tabela angajaților cu ajutorul următoarei interogări:
$intrg =("UPDATE inreg_ang SET nume = '$nume', departament = '$departament', functie = '$functie', exp = '$exp', WHERE id_ang = '$id_ang'");
Tot în cadrul acestei pagini, este prezent butonul Acasa. Dacă utilizatorul va face click pe acest buton, îl va trimite la prima pagină. Acest lucru este posibil prin simpla etichetă a href, unde destinația este fișierul care conține prima pagină.
Ultima opțiune accesibilă de către administrator este cel de Ieșire din aplicație. În momentul în care acesta accesează această opțiune se realizează o trimitere către un alt fișier php care conține o funcție existentă în PHP, session_destroy(). Această funcție, după cum îi spune și numele distruge toate datele asociate sesiunii curente.Odată accesată acestă funcție, utilizatorul este trimis în prima pagină a aplicației (Fig 4).
3.5 Pagina pentru secțiunea contabil
În momentul în care contabilul dorește să se conecteze pe platformă, i se va deschide un formular de autentificare unde va trebui să completeze numele de utilizator respectiv parola. După ce acesta s-a autentificat cu succes, acestuia îi va apărea prima pagină.(Fig.13)
Fig. 13 Prima pagină pentru utilizatorul contabil
Astfel, în cadrul primei pagini acesta pot vizualiza câteva informații legate de plata salariilor cum ar fi, totalul de salarii plătite în intervalul unei luni calendaristice, totalul salariilor net plătite precum și al salariilor brute și totalul reținerilor datorate către stat. De remarcat aici faptul că aceste cifre apar în cadrul primei pagini, abia după ce contabilul execută operația de calcul salarial. Această operație are loc atunci când contabilul face un click pe butonul Calcul Salarial. În momentul în care contabilul dorește să achite salariul unui angajat, acesta va efectua această operație deschizându-se o nouă pagină (Fig.14).
Fig. 14 Vizualizare angajați prin prisma contabilului
În această pagină, contabilul va putea vizualiza toți angajați din enitatea economică, având la dispoziție și un buton pentru a achita salariul respectivului angajat. Am implementat acest lucru, prin interogarea tabelei angajaților din baza de date și punând fiecare câmp din tabelă, în cadrul acestui tabel implementat în HTML. Totodată din această pagină, contabilul mai are posibilitatea de a se întoarce la prima pagină. Odată apăsat butonul Achita, contabilului i se va deschide un formular cu informațiile angajatului respectiv, el fiind nevoit să completez doar câmpul cu valoarea salariului brut.
Fig. 15 Formular pentru achitarea salariului angajatului
Contabilul nu are acces la modificarea câmpurilor respective din formularul implementat în HTML, el având posibilitatea doar să completeze câmpul Salariul Brut. Cu ajutorul indentificatorului unic se realizează o interogare se preia toate datele despre angajatul respectiv și vor fi afișate în formular. Astfel, după ce acesta completează cu valoarea salariului angajatului, acesta apasă butonul Achita salariul. În momentul acela script-ul JavaScript este activat prin atribuirea butonului un atribuit de forma onclick care va afișa un mesaj de forma window.alert implementat tot cu limbajul JavaScript în care se precizează faptul că salariul a fost calculat după care va apărea o noua pagină unde contabilul va putea vizualiza acțiunea realizată anterior. Pentru ca aplicația să calculeze salariul, am realizat o tabelă cu 3 variabile. Aceste 3 variabile sunt de fapt reținerile și contribuțiile datorate către stat de fiecare angajat stocate sub formă de număr în tabela respectivă. În momentul în care contabilul dorește să achite salariul angajatului și a apăsat butonul de a achita salariul, în spate realizează o trimitere la un alt fișier php unde au loc operațiile matematice pentru a calcula salariul. După ce această operație a avut loc, pasul imediat următor este de a introduce salariul calculat al angajatului respectiv într-o altă tabelă din baza de date. Acest lucru are loc tot cu ajutorul identificatorului unic. Cu ajutorul acestui câmp se verifică dacă în tabela salariilor nu există deja salariul plătit pe luna curenta. Această operație am implementat-o cu ajutorul funcției month(now()) care returnează luna curentă. Astfel cu ajutorul unei instrucțiuni if, se verifică dacă există în tabelă angajatul cu identificatorul unic respectiv. Dacă exista intentificatorul unic în tabelă, se va afișa un mesaj ce îi va aduce la cunoștință contabilului faptul că a achitat deja salariul angajtului respectiv pe luna curenta. Dacă acesta nu există în tabelă, se inserează toate informațiile atât despre angajat (nume, departament, etc.) cât și calculele salariale rezultate anterior.
Fig. 16 Evidența plăților angajaților
În figura de mai sus este prezentată evidența plăților pentru respectivii angajați după ce contabilul a realizat toate operațiunile. Câmpul Data plății salariului din tabelă este tot de tipul timestamp care returnează timpul curent sub forma an – luna – zi oră preluată din sistemul de operare al computerului pe care instanța de SQL Server se execută.
Din această pagină, contabilul are opțiunea de a printa statul de plată lunar al fiecărui angajat cu toate informațiile evidențiate. Pentru a realiza acest lucru, este necesar ca salariul angajatului să fie achitat în cadrul lunii respective după cum a fost prezentat mai sus. Aceste operațiuni fiind realizate, contabilul va apasa pe butonul Printează după care i se va deschide o nouă pagină(Fig. 17).
Fig. 17 Statul de plată lunar al unui angajat
Această pagină am implementat-o formatând etichetele html ce aparțin de un tabel. Informațiile ce sunt prezentate în câmpurile tabelului sunt preluate din tabela în care sunt angajații cu salariile achitate. Acest lucru l-am realizat prin interogarea bazei de date și asocierea fiecărui câmp din baza de date cu cele prezentate în tabelul html. Am adăugat acestei pagini și opțiunea de a printa acest stat de plată prin adăugarea destinației etichetei <a href> funcția din JavaScript window.print()care permite utilizatorului să selecteze opțiunile de imprimare preferate deschizând Print Dialog Box.
Contabilul după ce a realizat operațiunile de plăți către angajat, mergând la prima pagină va putea regăsi un sumar cu toate plățile efectuate(Fig.13). Pentru a vedea o evidență a tuturor sumelor plătite, atunci când are loc interogarea bazei de date, am realizat însumarea fiecărui câmp din tabela salariilor din baza de date, punând în tabelul html rezultatul. În cadrul acelui tabel ultimul câmp reprezintă evidența lunară a plăților achitate. Acel câmp l-am implementat cu ajutorul funcției monthname din php care returnează doar luna din data integrală a plății salariului. Acest lucru este evidențiat doar după ce contabilul a achitat salariile pe minimum 2 luni.
3.6 Pagina pentru secțiunea angajat
În momentul în care un angajat dorește să se conecteze în aplicație, acesta din pagina principală a aplicației va selecta <–––-Spre pagina personala a fiecarui angajat–––->. Aici se află o etichetă a href care are ca destinație pagina de autentificare a angajaților(Fig.18).
Fig. 18 Pagina de autentificare pentru angajați
Angajatul după ce completează formularul din pagină, în momentul în care apasă pe butonul Conectare, se realizează o interogare a tabelei angajaților din baza de date și se verifică daca există identificatorul unic, numele de utilizator și parola scrise de către acesta în formular în tabela angajaților. Tot în cadrul acestei pagini, angajatul are posibilitatea să își recupereze parola în cazul în care a uitat-o. Acest lucru de schimbare a parolei, l-am implementat prin realizarea unui update a câmpului parolă din tabela angajaților în funcție de identificatorul unic și numele de utilizator. Astfel dacă un angajat nu se poate conecta în aplicație din cauza faptului că nu își mai aduce aminte parola, acesta va apăsa pe Resetare parola după care i se va deschide o nouă pagină unde am implementat un formular pentru a își reseta parola(Fig. 19).
Fig. 19 Formularul necesar de completat pentru ca un angajat să își reseteze parola
După ce angajatul completează câmpurile din formular și apasă butonul de Resetare parola, cu ajutorul instrucțiunilor din MySQL UPDATE respectiv SET, se realizează o verificare dacă există angajatul cu identificatorul unic și numele de utilizator ce au fost scrise în formular. În continuare valoarea memorată în câmpul parolă din tabela angajaților va fi actualizată cu valoarea scrisă de către angajat de către angajat în câmpul Noua parola. După ce angajatul și-a resetat cu succes parola și a reușit să se conecteze în aplicație, prima pagină va avea o structură identică cu cea din Fig 20.
Fig. 20 Prima pagină pentru tipul de utilizator angajat.
În cadrul primei pagini pentru tipul de utilizator angajat, am implementat tot sub formă tabelară principalele date stocate în tabela angajaților din baza de date. Cu ajutorul unei interogări am preluat aceste date punându-le în câmpuri diferite în tabelul html. Angajatul are facilitatea de a-și schimba parola, precum și de a vizualiza profilul complet. În momentul în care acesta dorește să își schimbe parola, apăsând pe Schimbare parola, acesta va fi redirecționat către pagina de schimbare parolă care este identică cu cea de resetare a parolei(Fig. 19). Tot din această pagină, angajatul are posibiliteatea de a-și vizualiza profilul complet. Atunci când angajatul dorește acest lucru, acesta va fi redirecționat către o altă pagină unde se vor regăsi toate informațiile din tabela angajaților din baza de date extrase și sumarizate într-un tabel html. Toate aceste date sunt extrase din baza de date în funcție de identificatorul unic al angajatului care este cel mai important câmp din tabela angajaților din baza de date.
Angajatul are posibilitatea de a vizualiza un sumar cu toate plățile efectuate de către contabil. Acest lucru se întâmplă în pagina de Vizualizare plăți. În momentul în care angajatul dorește să vadă un istoric al plăților precum și sumele aferente acesta dând click pe Vizualizare plăți din meniu, va fi redirecționat către o alta pagină cu ajutorul etichetei a href(Fig.21).
Fig. 21 Vizualizarea profilului complet al angajatului
Odată ce administratorul a înregistrat angajatul în baza de date, vizualizarea datelor despre angajat reprezintă de fapt doar o interogare a tabelei angajaților prin care aceste date sunt preluate și aranjate în tabelul html. Astfel pentru realizarea tabelului din Fig. 20, am avut ca punct de pornire identificatorul unic al angajatului. Pornind de la acest lucru, se caută în tabela angajaților angajatul cu identificatorul unic respectiv, și se returnează toate informațiile despre acesta. Acest date sunt mai apoi aranjate în tabelul html.
Prin opțiunea Vizualizare plăți angajatul are facilitate de a obține informații despre achitarea salariului de către contabil, cum ar fi data plății precum și restul de plată după ce se rețin toate contribuțiile datorate statului. În momentul în care angajatul dorește acest lucru, apăsând pe opțiunea din meniu acesta va fi redirecționat către o altă pagină unde va putea vizualiza aceste informații(Fig.22).
Fig. 22 Vizualizarea de către angajat a plăților efectuate de către contabil
În cadrul acestei pagini, angajatul poate vizualiza plățile achitate lunar de către contabil. Am realizat acest lucru, prin tabela salariilor din baza de date care este comună atât pentru angajați cât și pentru contabil. Pentru a prelua datele din baza de date, am realizat o interogare în funcție de identificatorul unic al angajatului iar datele respective sunt preluate și aranjate în tabelul html. Deoarece în tabela respectivă sunt mai multe câmpuri, pentru a implementa această pagină, în interiorul interogării nu a fost folosită selectarea tuturor câmpurilor, ci doar acelor câmpuri care sunt de interes angajatului.
Concluzii
Exploatarea tuturor oportunităților oferite de către internet ar trebui să fie prioritatea nr. 1 pentru orice societate comercială. O aplicație web costă o singură dată și rămăne la dispoziția utilizatorilor 24 de ore din 24 din orice zonă geografică. Totodată, conținutul unei astfel de aplicații poate fi actualizat sau modificat cu ușurință.????
Prin prezentul proiect am realizat o aplicație care are ca și scop implementarea unei modalități mai simple pentru întreținerea datelor privind angajați unei entități economice. Această aplicație este utilă oricărei societăți comerciale pentru ușurința cu care se pot executa anumite operații de evidență a angajaților.
La baza aplicației stă unul dintre cele mai importante limbaje care????de programare web open-source și server-side. Fiind un limbaj foarte des utilizat în dezvoltarea paginilor și aplicațiilor web, acesta se bucură de un grad de popularitate foarte ridicat. Popularitatea sa se datorează simplității sale, eficienței, securității, flexibilitătii și, nu în ultimul rând, gratuității sale. Din aceste motive am ales utilizarea acestui limbaj pentru implementarea aplicației.
Aplicația poate fi îmbunătățită prin adăugarea unor noi facilități cum ar fi:
transformarea aplicației într-o aplicație de tip RWD (Responsive Web Design)
adăugarea unei secțiuni pentru a putea vizualiza și concediile de care a beneficiat fiecare angajat
realizarea unei secțiuni pentru a vizualiza fișa personală a fiecărui angajat.
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: Licenta Motoc Vlad V4 [307500] (ID: 307500)
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.
