APLICATIE SOFTWARE DESTINATA GESTIONARII RESURSELOR UMANE SI ADMINISTRARII ACTIVITATILOR IN CADRUL UNEI INTREPRINDERI [311687]
Cuprins Times new roman, 18 puncte, îngroșat, (distanța înainte de 16 puncte, după 10 puncte)
CORPORATE HUB
APLICATIE SOFTWARE DESTINATA GESTIONARII RESURSELOR UMANE SI ADMINISTRARII ACTIVITATILOR IN CADRUL UNEI INTREPRINDERI
Capitolul 1 [anonimizat]. Acest tilu este format din doua cuvinte: corporate([anonimizat]), care se refera la domeniul in care este utilizata o [anonimizat]. Am ales acest nume pentru a se putea identifica inca din titlul aplicatiei functionalitatea de centru de informatii pe care il are aceasta in cadrul unei companii.
Motivatia care a [anonimizat], bazandu-se pe un sistem care sa integreze toate informatiile intr-o [anonimizat]. In ceea ce priveste societatea actuala se poate observa o tendinta din ce in ce mai mare de a atribui sarcinile facute de om catre aplicatii de specialitate. Acest lucru se realizeaza datorita preciziei si rapiditatii cu care un calculator executa anumite sarcini. Fara ajutorul unor astfel de programe specializate pentru realizatea diferitelor activitati nu s-ar putea face fata cererilor sau s-[anonimizat].
[anonimizat].
Printre motivele care sublinieaza necesitatea unei astfel de aplicatii in cadrul intreprinderilor se remarca: inlocuirea unui sistem informational depasit tehnologc si imbunatatirea calitatii si accesibilitatii informatiilor.
Aplicatia CorporateHUB incearca sa vina cu ceva nou prin posibilitatea utilizatorului de a [anonimizat]-l [anonimizat]. In prezent se doreste un nivel cat mai inalt al securitatii autentificarii si prin acesta implementare consider ca aduc si simplitate acestui proces prin care utlizatorul isi valideaza identitatea. Dat fiind faptul ca introducerea manuala a [anonimizat].
[anonimizat], cat si ca functionalitati companiilor mai mici. [anonimizat].
Am incercat sa implementez o [anonimizat]. Pentru aceasta, o aplicatie trebuie sa fie cat mai usor de configurat sau reprogramata astfel incat sa se adapteze fiecarui client in parte si nevoilor lui.
Programul propus de mine se bazeaza exact pe princiipiile mentionate mai sus. [anonimizat]. [anonimizat]voie, se pot crea interfete pentru a usura si mai mult modificarile care se pot aduce.
Pentru stocarea informatiilor am ales o baza de date pentru a avea o accesibilitate cat mai usoara si pentru rapiditatea cu care se pot realiza modificari. O baza de date prezinta avantaje prin securitatea ridicata si prin spatiul de stocare disponibil.
Lucrarea este divizata in doua mari parti, prima parte repzentand cadrul teoretic care curpinde descrierea principiile aflate la baza aplicatiei si una care curpinde implementarea propriu-zisa a aplicatiei. In capitolul Sisteme ERP se face face o scurta descriere a acestor sisteme prin functionalitatile si caracteristicile pe care le au, dar si prin rolul pe care il indeplindesc in evolutia lor.
In urmatorul capitlul Achizitia automata a datelor exista o scurta descriere a tehnologiilor optice prin intermediul carora este posibilia achizitia datelor. In acest capitol se abordeaza notiunea de cod QR, prezentand utilizarile acestuia, dar si tipuri de coduri QR utilizate in prezent.
In cel de-al patrulea capitol, Protocolul SMTP se descrie protocolul prin care se realizeaza transmisia de date folosind posta electronica. S-a abordat acest subiect deoarece aplicatia ofera mesaje in timp real utilizatorului prin intermediul email-ului, fie ca este vorba de situatia pontajelor sau de alte informatii care trebuie sa ajunga la acesta.
Urmatorul capitol este cel al Implementarii aplicatiei in care se prezinta arhitectura aplicatiei cu toate diagramele necesare, pregatirea mediului de lucru, mediile de programare si limbajele utilizate, dar si implementarea fiecarui modul din cadrul aplicatiei. Aplicatia CorporateHUB a fost impartita in patru module pentru o mai buna intelegere a functionalitatilor pe care le indeplineste fiecare dintre aceste. Modulele din cadrul aplicatiei sunt urmatoarele: modulul de autentificare, modulul ADMINISTRATOR, modulul MANAGER si modulul ANGAJAT.
Mai apoi, in capitolul sase, Testare si validare, s-a realizat descrierea etapei de testare a aplicatiei prin realizarea unor diferite scenarii de functionare si evaluarea raspunsului cu care programul implementat raspunse la acestea. Testarea este un pas deosebit de important si confirma stabilitatea si buna functionare a intregului ansamblu.
Ultima parte a lucrarii contine concluziile la care s-a ajuns in urma realizarii acestei aplicatii si se iau in considerare posibilele variante de imbunatatire a aplicatiei si a functionalitatilor implementate in cadrul acesteia.
Ca si o concluzie a introducerii, as putea apune ca am ales sa realizez aceasta aplicatie deoarece prezinta si foloseste tehnologii noi din domeniul programarii. De asemenea consider ca o asemenea aplicatie ar fi utila in viata oricarei intreprinderi si ar aduce beneficii din punctul de vedere al administrarii acesteia prin toate modulele pe care le-am implementat.
Capitolul 2 SISTEME ERP
Sistemul ERP(Figura 2.1) este instrumentul software care facilitează integrarea tuturor informațiilor dintr-o organizație într-o platformă unică.
Un astfel de sistem de planificare a resurselor intreprinderii are ca scop asigurarea transparenței datelor în cadrul unei organizații și facilitarea accesului la orice tip de informație utilă în desfășurarea activității.
ERP-ul este o soluție de gestiune a resurselor unei companii care cuprinde funcționalități și module de management al afacerii și care asigura baza informatică de înregistrare și administrare a proceselor financiar contabile, de vânzări, achiziții, management al producției, management al resurselor umane și servicii în cadrul organizației. Sistemele ERP oferă o privire de ansamblu asupra companiei, permițând luarea deciziilor în timp real. Un sistem ERP poate include atât elemente de gestionare a resurselor interne, cât și elemente de gestionare a relației cu furnizorii și clienții.
2.1 Scurt istoric
Istoria sistemelor ERP[1] datează din anii 1960 când acest tip de aplicație software era folosit cu preponderență pentru asistarea procesului de producție. Primul produs de acest tip a fost MRP (Material Resource Planning).
Deși utile în activitatea de producție, aceste aplicații nu își extindeau funcționalitățile și spre alte zone de interes pentru o întreprindere precum contabilitate, resurse umane, vânzări.
Începând cu anii ’90 sistemele ERP au început să ia formă aplicațiilor actuale. Deși după apariția MRP funcționalitățile acestui tip de programe au început să se extindă, ERP-ul actual a luat ființă în momentul în care informațiile au putut fi centralizate într-o platforma comună și funcționalitățile sale au fost integrate.
Astăzi, sistemele ERP fac un nou pas în dezvoltarea lor prin utilizarea internetului pentru eficientizarea functionalitatilor. Clienții de la mii de kilometri distanță pot avea acces la stadiul propriei comenzi sau la stocurile companiei furnizoare prin integrarea facilităților ERP cu aplicațiile WEB.
[1]https://ro.wikipedia.org/wiki/Planificarea_resurselor_%C3%AEntreprinderii
2.2 Funcționalități
Sistemele ERP[2] reprezinta programe modulare(Figura 2.2). Prin urmare fiecare arie de activitate a companiei este acoperita de catre o aplicatie specifica. Modulele unui sistem ERP functioneaza integrat utilizand o baza de date comuna, sau pot functiona independent. Pot fi enumerate cateva categorii de module care servesc la gestionarea cu eficienta a unei intreprinderi:
Producție: planificarea și urmărirea producției;
Gestiune: evidența stocurilor, a furnizorilor, a plăților și încasărilor;
Vânzări: optimizarea activitățiilor de vânzare, distribuție și facturare;
Salarii: calculul salariilor și managementul informațiilor referitoare la personal;
Contabilitate: evidența contabilă;
FRM (Finance Resource Management): evidența financiară;
Imobilizari: evidența mijloacelor fixe și calculul amortizării;
HRM (Human Resource Management): managementul resurselor umane;
CRM (Customer Relationship Management): managementul relațiilor cu clienții;
SCM (Supply Chain Management): managementul relațiilor cu furnizorii;
BI (Business Intelligence): rapoarte, analize, prognoze.
Companiile au nevoie de un sistem IT flexibil, robust și sigur. Au nevoie de o aplicație care tratează eficient și integral procesele specifice domeniului lor de activitate. Soluția de planificare a resurselor întreprinderii are un rol vital în asigurarea succesului companiei. ERP este azi, tot mai mult, prețul plătit pentru derularea eficientă a unei afaceri.
[2] http://www.aut.upt.ro/staff/diercan/data/PIPPS/curs-01.pdf
2.3 Caracteristici
Prin utilizarea unui sistem de plaificare a resurselor întreprinderii, procesele și activiatile de afaceri sunt organizate eficient punând la dispoziție informații rapide, concrete și concise.
Sistemele ERP au abilitatea de a se adapta rapid la schimbările permanente ale mediului comercial cu întreruperi minime ale activităților companiei și totodată contribuie în luarea deciziilor manageriale pe baze unor informații inteligente oferite în timp real.
Oferă o interfață de utilizare modernă care va crește productivitatea prin scutirea timpului de lucru aferent operării.
Un avantaj foarte important al sistemelor ERP este faptul că informația va fi prezentată într-un format gata de utilizat, conform necesităților personalului care utilizează aplicația. Prin urmare, și aspectele problematice dar și posibilitățile de dezvoltare vor fi mai ușor de identificat și de acționat asupra lor.
Dezavantajele sunt și ele prezente în cadrul acestor sisteme. Primul dintre dezavantaje poate fi considerat costul ridicat pentru realizarea unui astfel de sistem. De asemenea implementarea poate fi dificilă și de lungă durata. La început poate încetini considerabil activitatea companiei, doarece integrarea unui sistem ERP va produce anumite schimbări în modul de lucru al departamentelor.
Performanțele companiei[2] cresc odată cu implementarea unui astfel de sistem prin:
gestionarea mai simplă a structurilor complexe, a canalelor de piață și a scenariilor de afaceri;
uniformizarea proceselor și tranzacțiilor de afaceri;
optimizarea resurselor și a activităților companiei;
accelerarea timpul de comercializare și timpul de valorificare;
îmbunătățirea serviciilor oferite angajaților și clienților, precum și a satisfacției acestora.
Capitolul 3 ACHIZITIA AUTOMATA A DATELOR
Achizitia automata a datelor se refera la tehnologiile prin intermediul carora este posibila introducerea directa a datelor in calculator sau alt microporcesor, fara utilizarea unei tastaturi.
3.1 Noțiuni generale
Sistemele de achiziție automată se împart în două mari categorii: sisteme de achiziție pentru utilizări generale folosite în scopuri variate și sisteme de achiziție utilizate în procesele
industriale.
Unul dintre factorii decisivi care a dus la dezvoltarea sistemelor de achiziție automată a datelor este evoluția calculatorului. În acest sens principalul rol al sistemelor de achiziție automată a datelor este acela de a colecta date specifice unui anumit proces cu scopul prelucrării viitoare. De asemenea, utilizatorul interacționează cu sistemele de achiziție prin intermediul unor interfețe grafice specializate.
Cele trei componente de bază ale sistemelor de achiziție automată a datelor sunt:
codificatoarele,
cititoarele/scanerele,
decodificatoarele.
Senzorul optic[3] al cititorului culege date sub formă de spații negre și distanțele dintre ele. Decodificarea lor într-un format numeric trebuie făcut de un decodificator fizic prezent încorporat în cititor sau de un software de decodificare instalat pe un calculator. De obicei se folosec decodificatoare încorporate în cititoare.
Un decodor încorporat în cititor preia datele culese de senzorul optic, identifica tipul de cod de bare și aplică formulă de decodare pentru acel tip de cod de bare.
Decodoarele fie ele încorporate fi externe, de obicei au posibilitatea de a "prelucra" codul de bare. Astfel se pot adaugă prefixe sau sufixe la începutul sau la sfârșitul codurilor de bare, sau inserția de alte caractere speciale.
[3] http://www.coduridebare.com/decodificare_coduri_de_bare.html
3.1 Tehnologii de achizitie automata a datelor
Tehnologiile de achiziție automată a datelor[4] sunt clasificate după cum urmează:
Optice: aceste tehnologii folosesc simboluri grafice ce pot fi interpretate de scanere optice. Acestea conțin coduri de bare unidimensionale și bidimensionale(Figura 3.0), recunoașterea optică a caracterelor și viziune artificială. Viziunea artificială este folosită pentru inspectarea automată a produselor, fiind necesară pentru operațiile de sortare și recunoașterea de forme.
Magnetice: codează magnetic datele, iar două dintre cele mai importante tehnologii din această categorie sunt benzile magnetice care sunt utilizate pe o scară largă la cardurile de credit sau cardurile de acces și recunoașterea caracterelor scrise cu cerneală magnetică care este cel mai des utilizată în industria bancară, iar în industrie se folosesc pentru identificarea produselor pe fluxul de fabricație sau în depozite. O banda magnetică este compusă dintr-un strat subțire de plastic care conține particule magnetice foarte mici care au ca și scop codificarea și memorarea datelor. Acestea au capacitatea de a stoca un volum mare de informație și oferă posibilitatea de a modifica datele memorate.
Electromagnetice: cea mai importantă tehnologie este identificarea folosind radiofrecvențe (RFID). Aceasta a fost recent introdusă în domeniul fabricației. Etichetele RFID funcționează pe frecvențe multiple cele mai utilizate fiind pe 900MHZ sau 13 MHZ. Acestea se împart în trei tipuri de clase: clasa 0 (scrise din fabrică iar conținutul lor nu poate fi rescris), clasa 1 (pot fi scrise o singură dată și sunt cunoscute ca etichete din generația 1), clasa 1 GEN 2 (sunt ultimele apărute și pot fi rescrise de mai multe ori).
Carduri inteligente: reprezintă cardurile cu circuite integrate sau cu cipuri capabile să memoreze informații de mare capacitate și au dimensiunea apropiată cu a unui card de credit. Un exemplu în acest sens sunt cardurile bancare cu cip integrat.
Tehnici de atigere: sunt reprezentate prin butoane cu memorie și ecrane senzitive.
Biometrice: sunt folosite pentru recunoașterea vocală, analiza amprentelor și scanarea retinei.
[4] S. Herle, Achiziția automată a datelor – Curs, Cluj-Napoca, 2015.
3.1 Codul QR
Codul QR este o gamă de standarde de codare cu formă de bare bidimensionale (cod matrice). QR este o prescurtare din engleză de la quick response („răspuns rapid”). Codul QR a fost creat de către compania japoneză Denso Wave si folosit multa vreme in indrustria auto. A fost lansat in 1994 la targul Japan Scan-Tech si a fost inregistrat la AIM ca si standard in 1996.
Cu toate că inițial a fost folosit pentru monitorizarea componentelor auto în cadrul procesului de producție, domeniile de aplicabilitate a codului QR s-au diversificat în timp. În momentul de față sunt foarte folosite în diverse aplicații comerciale, orientate în special către utilizatorii de telefoane mobile.
Printre caracteristicile de bază ale codului QR se numară: densitatea mare de date pe care o poate încorpora, citirea rapidă si posibilitatea de a codifica întregul set ASCII. Pot stoca o cantinate mare de informație(7089 de caractere numerice sau 4296 de caractere alfanumerice).
Codul QR este folosit azi foarte mult in publicitate pentru a codifica intormatii de pe afise. Sunt utilizate cu regularitate pe telefoanele mobile de tip smartphone, deoarece codurile QR pot reprezenta (în mod codificat) adrese de situri Internet (de tip URL); pentru acces rapid la un site dorit utilizatorul trebuie doar să îi scaneze codul QR cu ajutorul camerei foto din telefonul său mobil. Un software cititor interpretează imaginea și descifrează codul, iar browserul telefonului îl direcționează pe utilizator către URL-ul în cauză. Simplitatea acestor legături de la lumea fizică spre lumea electronică, cunoscute sub numele de „hyperlinkuri fizice” (în engleză hardlink), explică popularitatea lor. Codul QR permite companiilor să câștige noi clienți. El devine foarte util atunci când adresele URL sunt lungi și tastarea acestora într-un browser pe telefonul mobil ar fi nepractică.
Decodarea informațiilor conținute în codurile QR se poate realiza cu orice telefon mobil dotat cu cameră foto, prin intermediul unei aplicații de decodare instalată pe telefon. Aceste aplicații pot fi preinstalate de către producător pe anumite modele de telefoane mobile sau pot fi descărcate de pe Internet, fiind disponibile foarte multe variante.
3.1.1 Clasificarea codurilor QR
Clasificarea codurilor QR[5] se regăsește în cele ce urmează:
A.Modulul 1(Figura 3.1) reprezintă modelul original al codului QR, un cod capabil de
codificare a 1167 cifre.
B. Modelul 2(Figura 3.2) al codului QR a fost creat prin îmbunătățirea modelului 1, astfel încât acest cod sa poată fi citit cu ușurință, chiar dacă acesta este distorsionat în vreun fel.
C. Codul MicroQR este reprezentat in figura 3.3. O caracteristică importantă a codului Micro QR este aceea că are un singur model de detectare a poziției. Codul QR clasic necesită o suprafață mai mare deoarece modelele de detectare se află în cele trei colțuri ale unui simbol. Această configurație a codului Micro QR permite imprimarea în zone chiar mai mic decât codul QR.
D. Codul IQR(Figura 3.4) poate fi generat atât cu module dreptunghiulare, precum și cu cele pătrate, această caracteristică fiind utilă mai ales dacă acest cod este imprimat pe o suprafață cilindrică, menținând lizibilitatea codului. Cu Codul IQR se pot genera coduri care pot stoca mai multe informații decât este posibil cu un cod QR.
E. SQRC este un tip de cod QR echipat cu funcția de citire restricționată. Acest lucru poate fi folosit pentru a stoca informații private și pentru a gestiona informații interne ale companiei SQR. Codurile pot fi citite doar de către anumite tipuri de scanere. Aspectul de SQRC nu este diferit de obișnuit QR cod. Funcțiile care se regăsesc la codul QR, inclusiv funcția de corecție a erorilor, sunt toate păstrate.
F. Structura standardului QR permite organizațiilor să insereze în cod nu numai informația textuală necesară, dar și imagini, logouri sau caractere speciale, pentru a-l face mai atrăgător și mai ușor de recunoscut, fără pierdere de informații. Rezultatul se numește Design QR(Figura 3.5). Acesta a fost prevăzut cu scopul de a putea fi ușor de recunoscut de către clienți. De obicei un Design QR se aseamănă cu logo-ul firmei.
[5]http://www.qrcode.com/en/codes/
Capitolul 4 Protocolul SMTP
SMTP (Simple Mail Transfer Protocol)[6] este un protocol simplu, folosit pentru transmiterea mesajelor în format electronic pe Internet.
Protocolul SMTP specifică modul în care mesajele de poștă electronică sunt transferate între procese SMTP aflate pe sisteme diferite. Procesul SMTP care transmite un mesaj este numit client SMTP, iar procesul SMTP care primește mesajul este numit server SMTP(Figura 4.1).
Protocolul nu se referă la modul în care mesajul ce urmează a fi transmis este trecut de la utilizator către clientul SMTP, sau cum mesajul ce urmează a fi recepționat de serverul SMTP este livrat destinatarului, nici la modul în care este memorat mesajul și nici de câte ori clientul SMTP încearcă să transmită mesajul.
Obiectivul protocolului SMTP este de a trimite mail-uri într-un mod eficient. El este independent de sistemele care participă la comunicație, dacă se asigură un canal prin care datele să fie transmise într-un mod ordonat .
SMTP folosește următorul model de comunicație: transmițătorul, ca urmare a unei cereri de transmisie a mail-ului, stabilește o legătură bidirecțională cu receptorul, care poate fi destinatarul final al mail-ului sau doar un intermediar. De aceea este necesar să se precizeze numele de host al destinației finale precum și utilizatorul căruia îi este destinat mesajul.
4.1 Modul de functionare
Un server SMTP trebuie să cunoască cel putin urmatoarele comenzi :
• HELO – identificare computer expeditor;
• EHLO – identificare computer expeditor cu cerere de mod extins;
• MAIL FROM – specificarea expeditorului;
• RCPT TO – specificarea destinatarului ;
• DATA – conținutul mesajului;
• RSET – Reset;
• QUIT – termină sesiunea;
• HELP – ajutor pentru comenzi;
• VRFY – verifica o adresa;
• EXPN – expandează o adresa;
• VERB – informatii detaliate.
Protocolul SMTP definește un limbaj de comunicare între echipamentul care transmite (client) și echipamentul care primește mesajul electronic (server). Comunicația între echipamentul client și echipamentul server se efectuează în modul următor: clientul trimite o comanda server-ului, acesta o execută și o returnează clientului un cod numeric.
Principalele coduri numerice (și semnificațiile lor) returnate de procesul server sunt:
– 220 – Service ready, procesul server este disponibil pentru a prelua un mesaj;
– 221 – Service closing transmission channel, procesul server urmează a închide canalul de comunicație cu procesul client;
– 250 – Request mail action okay, completed, specifică procesului client că operația specificată de acesta a fost executată cu succes;
– 251 – User not local, informează procesul client că nu cunoaște adrea destinatarului și va redirecționa mesajul respectiv către un alt calculator server;
– 354 – Start mail input, specifică procesului client că acesta poate începe transmisia conținutului mesajului (e-mail-ului);
– 502 – Command not implemented, cod de eroare returnat atunci cînd comanda specificată de către procesul client nu este cunoscută / implementată de către procesul server.
Mod de funcționare:
• Comunicarea între client / transmițător și server / receptor se realizează prin texte ASCII. Inițial clientul stabilește conexiunea către server și așteaptă ca serverul să-i răspundă cu mesajul “220 Service Ready”. Dacă serverul e supraîncărcat, poate să întârzie cu trimiterea unui răspuns.
• După primirea mesajului cu codul 220 , clientul trimite comanda HELO prin care își indică identitatea.
• Odată ce comunicarea a fost stabilită, clientul poate trimite unul sau mai multe mesaje (prin comanda MAIL), poate încheia conexiunea sau poate folosi unele servicii precum verificarea adreselor de e-mail.
• Serverul trebuie să răspundă după fiecare comandă indicând dacă aceasta a fost acceptată, dacă se mai așteaptă comenzi sau dacă există erori în scrierea acestor comenzi.
• Atunci când un mesaj este trimis către mai mulți destinatari, protocolul SMTP urmărește trimiterea datelor din mesaj o singură dată pentru toți destinatarii care aparțin aceluiași sistem destinație.
[6] http://ctptc-airinei.ro/catinfo/iacSimo/html/smtp.html
Capitolul 5 IMPLEMENTAREA APLICATIEI
Pentru realizarea si punere in functiune a acestei aplicatii am utilizat urmatoarele echipamente:
Notebook Asus;
Monitor LG.
Echipamentele utilizate in cadrul dezvoltarii aplicatiei sunt prezentate in Figura 5.1.
Pe baza informatiilor prezentate in capitolele anterioare, am implementat aplicatia in mediul de dezvoltare C Sharp(C#) cu ajutorul programului Microsoft Visual Studio 2013, utilizat pentru realizarea interfetei si a functionalitatilor, dar si a programului Microsoft SQL Server, necesar pentru crearea bazelor de date si pentru realizarea conexiunii cu acestea.
5.1 Arhitectura aplicatiei
Arhitectura aplicatiei este reprezentata in Figura 5.2. Aceasta se compune din doua elemente esentiale: un server cu o instanta de Microsoft SQL si un client pe care se afla interfata aferenta. La serverul de SQL se pot conecta un numar nelimitat de clienti, dar pentru simplificare vom considera un singur client.
Pentru fiecare client se realizeaza o conexiune separata cu serverul SQL si cu ajutorul unui diver de comunicatii se trimit diverse cereri bazei de date.
Diagrama claselor este cea mai esentiala parte a limbajului UML, in special in cazul programarii orientate pe obiect si defineste modelul conceptual al sistemului. Diagrama claselor este prezentata in Figura 5.3.
Diagrama Use Case sau diagrama cazurilor de utilizare are ca scop descrierea comportării sistemului din punct de vedere al utilizatorului și se foloseste de obicei în etapele
de analiză, proiectare și testare.
In ceea ce priveste aplicatia in cauza putem distinge trei diagrame Use Case diferite in totalitate, deoarece exista trei tipuri de utilizatori: administrator, manager si angajat, fiecare cu roluri diferite in cadrul intreprinderii. Aceste roluri se atribuie de catre administrator.
In Figura 5.4 este prezentata diagrama cazurilor de utilizare pentru rolul de administrator. Acesta are acces la vizualizarea intrgii baze de date cu utilizatorii inregistrati in aplicatie. El este responsabil de adaugarea unor noi utilizatori in sistem, de modificarea unor informatii referitoare la utilizatori, dar si de stergerea acestora. Administratorul se ocupa si de biblioteca virtuala de care dispune aplicatia, avand posiblitatea de a introduce carti noi sau de a modifica datele cartilor existenta. De asemenea, acest tip de utilizator este responsabil de configurarile de interfata ale primei pagini afisate angajatilor la logarea in aplicatie, unde poate schimba anumite imagini sau text pentru a mentine angajatul mereu informat despre activitatile din cadrul companiei.
In Figura 5.5 este reprezentata diagrama cazurilor de utilizare pentru rolul de manager. Managerul se ocupa de administrarea pontajelor din cadrul intreprinderii, ceea ce presupune: aprobari de concedii, vizualizarea rapoartelor de prezenta la locul de munca, respectiv aprobarea biletelor de voie. Acesta este responsabil de alocarea resurselor umane pe proiecte si pe echipe. Managerul are acces la sectiunea de anunturi, unde poate posta diferite informari destinate angajatilor. Un alt rol important pe care il indeplineste managerul in cadrul aplicatiei este acela de a gestionare finantele firmei si de a vizualiza rapoarte referitoare la situatia economica.
In Figura 5.6 este prezentata diagrama Use Case pentru rolul de angajat. Acesta din urma are responsabilitatea de a-si completa informatiile referitoare la prezenta la locul de munca in sistemul de pontaje. Poate, de asemenea, sa iti administreze contul prin urmatoarele actiuni: modificarea parolei de autentificare sau generarea unui nou cod QR aferent logarii. Sectiunea de suport tehnic este disponibila angajatului pentru a plasa diferite probleme aparute referitoare la aplicatie. Infopoint este o sectiune in care angajatul va putea urmari informatii din cadrul firmei, informatii postate de manager. Angajatul are la dispozitie o biblioteca virtuala, de unde isi va putea rezerva cartile pe care il intereseaza.
Proiectarea bazei de date este o componenta de baza in arhitectura programului pentru ca inglobeaza toate informatiile cu care se lucreaza si este necesar sa exista o gestiune eficienta a acestora.
Dupa cunoasterea tuturor rolurilor utilizatorilor si actiunilor care se pot petrece in aplicatie, in cele ce urmeaza se va reprezenta o schema a principalelor tabele din baza de date si a legaturilor dintre acestea. Schema bazelor de date este prezenta in Figura 5.7 si Figura 5.8.
Tabelele existente in baza de date sunt urmatoarele:
Angajati;
Bilete de voie;
Pontaje;
Facturi;
Echipe;
Biblioteca;
ImaginiPP.
In Figura 5.7 se poate observa tabelul Angajati, aflat in relatie cu tabelul Bilete de voie si tabelul Pontaje.
In Figura 5.8 se pot observa restul tabelelor intre care nu exista nici o relatie prin care o tabela sa fie legata de o alta tabela.
5.2 Medii de dezvoltare
In continuare voi enumera mediile de dezvoltare utilizate pentru implementarea aplicatiei, dar si biliotecile folosite in cadrul acestora.
5.2.1 Microsoft Visual Studio 2013
Microsoft Visual Studio[26] este un mediu de dezvoltare integrat, realizat de Microsoft. Visual Studio este folosit pentru dezvoltarea aplicațiilor de tip consolă sau aplicații cu interfață grafică.
Acest mediu de dezvoltare ne oferă un editor, un compilator, un debugger, dar și designere. Acest IDE cuprinde mai multe limbaje de programare care se pot folosi, în funcție de necesitate sau de limbajul cunoscut de fiecare utilizator. Printre acestea se numără: Microsoft Visual C++, Microsoft Visual C#, Microsoft Visual Basic, Microsoft Visual Web Developer. Visual Studio oferă suport pentru diferite limbaje de programare, cum ar fi: Python, JavaScript, CSS, HTML, etc.
In fereastra IDE-ului sunt prezente urmatoarele unelte care vin in ajutorul utilizatorului pentru dezvoltarea aplicatiei.
Server explorer are ca scop crearea de conexiuni cu baza de date si managementul bazelor de date.
Toolbox-ul contine toate controalele vizuale care se pot adauga intr-o forma.
In zona centrala a ecranului este situat editorul de cod si designer-ul. Ele sunt utilizate pentru a adauga controalele in fereastra creata si pentru a scrie codul propriu-zis al programului.
Solution Explorer permite vizualizarea proiectelor si a fisierelor din cadrul fiecarui proiect. Tab-ul Properties permite setarea diferitelor proprietati pentru fiecare obiect in parte.
5.2.2 Limbajul C#
Limbajul C# (C Sharp) [27] este un limbaj de programare relativ modern, orientat pe
obiect. Este un limbaj asemănător cu Java si C++. Acesta a fost creat de Microsoft, dar nu este
folosit doar de platformele Microsoft, existând compilatoare C# pentru alte sisteme de
operare, precum Linux sau Macintosh. Este creat ca un instrument de dezvoltare pentru
arhitectura .NET. Limbajul C# are la bază, alte limbaje de mare succes, C si C++.
Există o serie de biblioteci bine dezvoltate, compatibile, printre altele si cu limbajul
C#. Printre aceste biblioteci se numara biblioteca Aforge si biblioteca Zxing, pe care le voi prezenta in cele ce urmeaza.
5.2.3 Biblioteca AForge
Biblioteca Aforge este o biblioteca open-source dedicata procesarilor de imagini. Aceasta biblioteca dispune de o serie de clase care permit accesarea diferitelor surse video. A fost conceputa pentru cercetatori si dezvoltatori, avand diverse aplicatii cum ar fi: masini de invatare, algoritmi genetici, retele neuronale roboti.
In ceea ce priveste aplicatia dezvoltata, aceasta biblioteca are rolul de a permite accesul la camera web a laptop-ului si prelucrarea imaginilor transmise de acesta pentru decodarea codului QR.
5.2.4 Biblioteca ZXing
Biblioteca Zxing este o biblioteca open-source, utilizata la procesarea codurilor de bare si a codurilor QR. Aceasta biblioteca a fost implementata in Java, dar exista variante si pentru alte limbaje de programare.
In cadrul aplicatiei, acesta biblioteca este folosita in codarea si decodarea codului QR utilizat la autentificarea in aplicatie.
5.2.5 Microsoft SQL Server 2012
Pentru stocarea datelor achiziționate, este necesară o bază de date. Astfel, am folosit
mediul Microsoft SQL Server 2012, pentru a crea o bază de date specifică programului
nostru. Limbajul SQL este folosit în diverse medii de dezvoltare, în aplicații diverse și este un
sistem de gestionare al bazelor de date. Acesta este compatibil cu diferite limbaje de
programare, și oferă posibilitatea creării tabelelor, relațiilor dintre acestea, administrarea
bazelor de date dar și multe alte funcționalități. Există mai multe ediții de Microsoft SQL
Server 2012, în funcție de nevoile utilizatorilor.
Componentele unei baze de date sunt: tabelele, relatiile si constrangerile.
Tabelele au rolul de a stoca informatia. Un tabel este alcatuit din randuri, care definesc inregistrarile si coloane, care definesc campurile existente in tabel.
Relatiile sunt cele mai importante componente ale unei baze de date relationale. Ele definesc legaturile intre tabele. Intre tabele se pot stabili trei tipuri de relatii:
-1-N;
-1-1;
-N-N;
Constrangerile de tip cheie nu ar trebui sa lipseasca din nicio tabela dintr-o baza de date relationala. Fiecare tabel trebuie sa aiba o cheie unica, care are constrangere imposibilitatea de a mai adauga inregistrari duplicate.
5.3 Configurarea mediului de lucru
5.3.1 Crearea unui nou proiect
Primul pas in implementarea aplicatiei este deschiderea Microsoft Visual Studio 2013, urmand calea ilustrata in Figura 5.10. Mai exact, deschidem meniul Start, accesam All programs, cautam in lista aparuta Visual Studio 2013 si lansam aplicatia.
Primul pas in implementarea aplicatiei este deschiderea Microsoft Visual Studio 2013, urmand calea ilustrata in Figura 5.10. Mai exact, deschidem meniul Start, accesam All programs, cautam in lista aparuta Visual Studio 2013 si lansam aplicatia.
Pentru crearea unui nou proiect, se va urma calea File -> New -> Project…, prezentata in Figura 5.11.
Se va deschide fereastra prezentata in Figura 5.11. Aici, vom alege varianta de Framework, .NET Framework 4.5, deoarece este compatibila cu bibliotecile pe care la vom folosi. Se va selecta din partea stanga a ferestrei, din meniul Templates -> Visual C# si alegem varianta Windows, unde se deschid mai multe oprtiuni de proiecte. Pentru aplicatia noastra vom folosi varianta Windows Form Application. In campul Name introducem numele proiectului, in cazul nostru CorporateHUB_test. Se apara butonul OK.
Astfel, noul proiect a fost creat si putem incepe scrierea codului pentru programul aplicatiei. Acum, pe ecran, se poate observa interfata de baza a programului, cu o singura fereastra de tip Windows Form(Figura 5.12).
In sectiunea Solution Explorer(Figura 5.13) se pot observa principalele componente ale aplicatiei pe care le voi explica pe fiecare in parte in cele ce urmeaza.
Properties este locul in care se pot face numeroasa configurari precum:
-numele executabilului,
-versiunea de framework,
-icoana executabilului,
-platforma pe care sa se compileze(in caz ca exista mai multe).
Resources este locul in care se gasesc toate imaginile folosite in aplicatie. Nu este obligatoriu ca o poza aflata in proiect sa fie si in resurse, dar accesul se face mult mai usor.
References este locul unde se gasesc toate bibliotecile .NET care sunt folosite in aplicatie.
App.config este fisierul de configurari.Continutul fisierului poate fi vizualizat in figura urmatoare:
Form1.cs este o forma pe care am implementat-o.
Program.cs este fisierul care porneste aplicatia si in care se poate stabili forma care sa fie afisata la deschiderea aplicatiei.
5.3.2 Inserarea bibliotecilor
Dupa documentarea realizata in prealabil, stim ca avem nevoie de adaugarea unor biblioteci pentru achizitia imaginilor, procesarea, codarea si decodarea codurilor QR utilizate in vederea autentificarii utilizatorilor in aplicatie. Este vorba despre bilioteca Aforge, o biblioteca grafica open source implementata de echipa Google, pe care o vom utiliza in procesarea imaginilor. O alta biblioteca pe care o vom adauga este Zxing.Net, pe care o vom utiliza la decodarea codurilor QR in momentul autentificarii. De asemenea, vom adauga si QRCode Library, necesara pentru generarea codului QR de catre utiliator in momentul in care acesta doreste sa isi schimbe parola contului.
Exista doua pobilitati de a insera aceste trei bilioteci. Prima variante este cea de a accesa din meniul PROJECT, Manage NuGet Packages… conform Figurii 5.15. Cea de-a doua varianta se realizeaza accesand calea TOOLS->Library Package Manager-> Package Manager Console. Consola este ilustrata in Figura 5.16. In consola aparuta se vor rula urmatoarele comenzi:
– Install-Package AForge
– Install-Package Aforge.Video
– Install-Package Aforge.Video.DirectShow
– Install-Package Zxing.Net
In urma instalarii biliotecilor acestea vor aparea atat in sectiunea de References, cat si in Manage NuGet Packages…-> All conform Figurii 5.17.
5.3.3 Configurarea serverului necesar bazei de date
Pentru a creaza baza de date necesara si a realiza toate configurarile necesare trebuie urmati mai multi pasi. La instalarea Microsoft SQL Server, pe langa driverele necesare de comunicare cu baza de date, se instaleaza si alte doua programe: SQL Server Management Studio si SQL Server Profiler.
SQL Server Management Studio este utilizat pentru crearea bazei de date si configurarea serverului SQL.
Pentru a crea baza de date necesară, se lansează programul SQL Server Management
Studio, accesând meniul Start-> All Programs, căutăm Microsoft SQL Server 2012, iar din lista care se deschide vom lansa aplicația SQL Server Management Studio. Acest proces este
pretentat în Figura 5.18.
Dupa lansarea aplicatiei, putem observa ca in partea stanga este un meniu, Object Explorer, in care regasim numele serverului, in cazul nostru MARIUS-LAPTOP, urmat de alte foldere, printre care vom gasi si Databases, sectiunea in care se afla baza de date realizata. Se poate observa Figura 5.19.
Pentru configurarea serverului trebuie sa avem in vedere faptul ca ne dorim ca acesta sa poata fi accesat de un numar nelimitat de clienti, clienti care in mod cert nu se afla pe acelasi calculator cu baza de date. Se va accesa Server Properties-> Connections, unde se va bifa optiunea Allow remote connections to this server si se va seta Maximum number of concurent connections pe 0.
De asemenea, este necesar sa realizam si o serie de configurari in functie de sistemul de operare pe care este instalat serverul. In cele ce urmeaza se va descrie configurarea pentru un server avand ca sistem de operare Windows 7.
Se va urma calea Start-> Control Panel->System and Security->Windows Firewall- > Advanced settings si de va deschide o fereastra conform Figurii 5.20. In aceasta fereastra se va selecta din partea stanga, Inbound Rules, apoi din partea dreapta se va apasa New Rule….
La pasul Rule Type se va selecta Port, iar la pasul Protocols and Ports se va bifa TCP si se va introduce portul 1433. Se merge mai departe si se ajunge la cel de-a treilea pas, Action, unde se va selecta optiunea Allow the connection. Se apasa Next. Se selecteaza optiunile: Domain, Private, Public. In urmatoarul pas se va da un nume pentru aceasta regula si se va finaliza configurarea. Serverul devine astfel accesibil si pentru celelalte calculatoare atat timp cat exista conexiune la internet si calculatoarele se afla in aceeasi retea. Fereastra in care se vor urma pasii mentionati mai sus se regaseste in Figura 5.21.
5.4 Baza de date
Pentru implementarea bazei de date s-a folosit tot mediul de lucru Microsoft SQL Server Management Studio. Crearea bazei de date se poate face în două moduri, utilizând interfața din SSMS sau tot din acest program folosind cod.
Pentru a crea o noua tabela in cadrul bazei de date se da click dreapta pe folderul Tabels din cadrul bazei de date cu titlul licenta pe care o regasim in sectiunea Object Explorer precum se poate observa si in Figura 5.22 si in pagina nou aparuta se definesc componentele tabelei.
Baza noastra de date este alcatuita din opt tabele: Angajati, Articole, Biblioteca, Biletedevoie, Echipe, Facturi, ImaginiPP, Pontaje, fiecare cu un un rol important in aplicatie. In cele ce urmeaza vom analiza pe rand fiecare tabel care intra in componenta bazei de date licenta.
Fiecare tabel are o cheie primara, Primary Key, care are urmatoarele caracteristici:are o valore unica pentru fiecare inregistrare, se indexeaza si identifica inregistrarea. In situatie in care se doreste crearea unei relatii intre tabele, aceasta cheie se adauga si intr-un alt tabel, dar sub denumirea de Foreign Key, cheie externa. Un tabel poate avea mai mult de o cheie externa.
Tabelul Angajati contine toate informatiile referitoare la persoanele din cadrul firmei. De asemenea in aceasta tabela se regaseste coloana Rol, in care este specificat tipul de utilizator in cadrul aplicatiei: ADMIN, MANAGER, ANGAJAT. Aceste roluri definesc tipul de acces pe care il are utilizatorul.
Tabela Angajati are urmatoarele coloane:
• AngajatID: reprezinta cheie primara,
• Nume,
• Prenume,
• Email,
• Adresa,
• Utilizator: este necesar la logare,
• Parola,
• Rol,
• Imagine,
• Pozitie,
• Echipa,
• Data_nasterii,
• Salar,
• CNP,
• Seria,
• Nr,
• Telefon,
• Zile_concediu.
Tabelul Articole contine stirile, informatiile despre firma pe care angajatul le va putea vizualiza in sectiunea Infopoint. Coloanele acestui tabel sunt:
• CodArticol: reprezinta cheia primara,
• Titlu,
• Descriere,
• Data_publicarii,
• Link,
• PP: indica zona de afisare a articolului.
Tabelul Biblioteca contine toate cartile din biblioteca firmei, dar si informatii despre inchirierea si stadiul cartilor. Coloanele acestui tabel sunt:
• CarteID: reprezinta cheie primara,
• Denumire,
• Autor,
• Anul_publicarii,
• Domeniu,
• Stare: indica disponibilitatea cartii,
• Utilizator: indica angajatul care a inchiriat cartea,
• Data_inceput: reprezinta inceputul perioadei de inchiriere,
• Data_sfarsit: reprezinta sfarsitul perioadei de inchiriere.
Tabelul Biletedevoie contine biletele de voie pe care angajatul le plaseaseaza spre aprobare managerului. Coloanele acestui tabel sunt:
• BiletID: este cheie primara,
• Data,
• Ora_inceput,
• Ora_sfarsit,
• Motivul cererii: aici anagajatul motiveaza plasarea biletului de voie,
• Aprobare_cerere: are trei posibile variante: ASTEPTARE, DA, NU.
• AngajatID: reprezinta cheia externa.
Tabelul Echipe este tabelul care contine echipele de lucru si poriectele care le sunt asignate. Coloanele acestui tabel sunt:
• EchipaID: este cheie primara,
• Echipa: este numele echipei,
• Proiect.
Facturi reprezinta tabelul in care se adauga facturile intreprinderii pentru a urmari situatia financiara a acesteia. Coloanele acestui tabel sunt:
• FacturaID: este cheie primara,
• Tip: are doua variante: DE PLATA, DE INCASAT,
• Situatie: are doua variante: ACHITAT, NEACHITAT,
• Seria: seria facturii,
• Numarul: numarul facturii,
• Data_facturarii,
• Data_scadentei,
• Total_plata.
Tabelul ImaginiPP este tabelul in care se memoreaza anumite imagini folosite la interfata aplicatiei, interfata configurabila de catre administrator. Coloanele acestui tabel sunt:
• ImagineID: este cheia primara,
• Nume,
• Imagine: este o informatie binara.
Tabelul Pontaje este tabelul in care se introduc datele referitoare la prezenta angajatului la locul de munca si concedii. Coloanele acestui tabel sunt:
• PontajID: este cheia primara,
• Inceput_concediu,
• Sfarsit_concediu,
• Tip: exista doua variante de completare: CONCEDIU, PONTARE.
• AngajatID: este cheia externa,
• Pontare_zilnica: este data in care se face pontarea,
• Ora_intrare,
• Ora_iesire,
• Aprobare_concedii: are trei variante de completare: ASTEPTARE, DA, NU.
• Zile: reprezinta numarul de zile de concediu disponibil.
Pentru a realiza couminicarea cu baza de date in codul aplicatiei se realizeaza urmatorii pasi:
1. Se declara o variabila globala con de tipul SqlConnection care va reprezenta conexiunea cu baza de date.
2. Pentru a executa o comanda care sa afecteze baza de date este necesar ca aceasta conexiune sa fie deschisa inainte de a rula comanda si sa fie inchisa la finalul acesteia
O exemplificare a celor mentionate anterior este prezenta in Figura 5.23.
5.5 Modulul de autentificare
Pentru o mai bune intelegere a procesului de implementare vom distinge patru module separate, pe cale le vom analiza individual cu scopul de a parcurge toate etapele de dezvoltare a aplicatiei intr-un mod cat mai clar.
Aceste module sunt:
Modulul de autentificare;
Modulul destinat administratorului de sistem
Modulul destinat angajatului;
Modulul destinat managerului.
In acest subcapitol va fi descrisa implementarea modulului de autentificare, modul care se ocupa de logarea in sistem si care decide daca cineva are dreptul sau nu sa acceseze programul.
Autentificarea se poate face in doua moduri: fie prin introducerea obisnuita a unui user si a unei parole, fie prin scanarea unui cod QR specific fiecarui user de catre camera din dotare a calculatorului. Interfata de logare se poate observa in Figura 5.24.
5.5.1 Autentificarea cu user si parola
Dupa cum se poate observa si in figura anterioara, interfata de logare este compusa din:
doua textBox-uri necesare pentru introducerea unui user si a unei parola.
doua butoane, unul pentru logare si unul pentru recuperarea parolei in caz de pierdere a acesteia.
doua Label-uri care descriu functionalitatea pentru fiecare din cele doua textbox-uri amintite mai sus;
un GroupBox, care incadreaza elementele mentionate anterior.
Pentru a urmari intregul proces de logare vom incepe sa facem o autentificare propriu-zisa. Se introduc datele de autentificare in campurile specifice. Spre exemplu: utilizatorul este admin si parola este admin si se apasa pe butonul Intra. In spatele interfetei se afla o functie care e apelata la apasarea acestui buton.
Functia preia informatiile scrise in cele doua textbox-uri si cauta in baza de date sa vada daca exista vreun utilizator cu aceste date de identificare si in caz ca il gaseste va prelua si rolul(ADMIN, ANGAJAT, MANAGER) pe care il are acesta in cadrul aplicatiei pentru a sti care forma de fereastra sa o deschida pe mai departe.
Instructiunea utilizata pentru cautarea utilizatorilor este urmatoarea:
SqlDataAdapter sda = new SqlDataAdapter(@"SELECT Count(*) FROM Angajati WHERE Utilizator='"+textBox1.Text+"'COLLATE Latin1_GENERAL_CS_AS AND Parola='"+textBox2.Text +"'COLLATE Latin1_GENERAL_CS_AS AND Rol='"+"ADMIN"+"'",con);
DataTable dt = new DataTable();
sda.Fill(dt);
SqlDataAdapter este tipul variabilei utilizate pentru accesarea bazei de date. Prin instructiunea Count(*) se numara totalitatea elementelor din tabelul Angajati care indeplinesc urmatoarele conditii:
-utilizatorul este acelasi cu ceea ce s-a introdus in campul textBox1;
-parola este aceeasi cu ceea ce s-a introdus in campul textBox2;
Pentru a nu putea sa se realizeze logarea decat cu parola stabilita cu majuscule, respectiv cu minusule se foloseste instructiunea COLLATE Latin1_GENERAL_CS_AS. Astfel, daca numele utilizatorlui este „admin“, aplicatia nu va permite intrarea in sistem atunci cand in campul dedicat numelui de utilizator se va introduce „AdmiN“.
Exista cate o astfel de instructiune pentru fiecare rol din cadrul aplicatiei. Dupa ce a fost gasit utilizatorul se parcurg o serie de verificari pentru a detecta forma de fereastra pe catre trebuie sa o deschida programul. Cazul pe care va intra este ilustrat cu culoarea rosie in Figura 5.25. Se va deschide pagina specifica utilizatorlui ADMIN si se va inchide actuala forma.
In situatia in care user-ul si parola nu sunt corecte, functia de cautare nu va gasi nici un utilizator in baza de date si se va afisa un mesaj precum in Figura 5.24. In situatia in care s-au uitat datele de identificare exista posibilitatea de a accesa sectiunea Recupereaza parola.
5.5.2 Autentificarea prin intermediul codului QR
In ceea ce priveste autentificarea in aceasta aplicatie, se urmareste sa exista un nivel ridicat de securitate, dar si o mai mare rapiditate in mersul lucrurilor. Din aceasta cauza am implementat si autentificarea prin intermediul codului QR. Autentificarea prin cod QR poate fi accesata conform Figurii 5.26.
Autentificarea prin cod QR se realizeaza prin intermediul unui card de acces pe care este imprimat codul QR sau prin smartphone-ul personal. Cu ajutorul unor aplicatii accesibile pe platforma de aplicatii a telefonului, utilizatorul isi poate genera singur codul QR pentru a-l avea in memoria telefonul si pentru a-si facilita logarea fara a mai avea nevoie de un card de acces. In Figura 5.27 se poate vizualiza codul QR pe care l-am generat pe telefon pentru a intra in contul de administrator. Sprea exemplu in situatia de fata am generat codul QR cu ajutorul aplicatiei QR Code Generator, pe care am descarcato din Play Magazine.
De asemenea codul QR poate fi generat si din pagina utilizatoului, dar acest proces va fi descris mai pe larg in capitolul destinat modului de utilizator.
Pentru acest tip de logare este nevoie de mentionarea in zona de declaratii a scriptului de cod a bibliotecilor instalate despre care am discutat in capitolul anterior, biblioteci utilizate pentru achizitia imaginilor, procesarea, decodarea codului QR receptionat prin intermediul camerei web. Bibliotecile trebuie inserate astfel:
using AForge;
using AForge.Video;
using AForge.Video.DirectShow;
using ZXing;
using ZXing.QrCode;
In situatia in care dorim sa utilizam autentificare prin codul QR trbuie sa aplicam o bifa in checkbox-ul aflat deasupra campurilor de introducere a utilizatorului si a parolei. La bifarea checkbox-ului, camera video din dotarea calculatorului va porni si in partea dreapta a ferestrei va putea fi vizualizata imaginea furnizata de aceasta.
In urma pornirii camerei web se vor analiza frame-urile receptionate si in momentul in care se va putea citi codul QR se va decoda informatia. In continuare voi explica care este informatia codata.
Codul QR inglobeaza numele utilizatorului si parola. Un exemplu pentru o intelegere mai bun ar fi urmatorul:
Utilizatorul este marius.crisan.
Parola este admin.
Informatia codata este urmatoarea: „marius.crisan admin”, iar codul QR aferent poate fi vizualizat in Figura 5.28.
In urma decodarii se vor trimite datele de autentificare catre campurile de logarea si se va intra automat in contul utilizatorlui, fara a mai apasa niciun buton.
5.5.2 Recuperarea parolei
Exista posibilitatea ca un utilizator sa iti uite datele de identificare si sa nu aiba telefonul mobil cu codul QR la indemana pentru a se loga in sistem. In aceasta situatie intervine solutia oferita de apasarea butonului Recupereaza parola. La apasarea acestui buton se va deschide o noua fereastra ilustrata in Figura 5.29.
In aceasta fereastra si va introduce email-ul asociat contului de utilizator. Se va genera o noua parola aleatoare compusa din litere si cifrea care va fi trimisa pe email-ul respectiv. Generarea unui sir de caractere aleator se va face cu urmatoarea linie de cod:
string path = Path.GetRandomFileName();
Pentru trimiterea mail-ului cu noua parola avem nevoie de contributia protocolului SMTP, amintit in primele capitole. Pentru a realiza trimirerea unui mail se apela functia SendMail(MailMessage message), creata cu acest scop. Partea teoretica a protocolului SMTP a fost descrisa, dar este necesara si o descriere a codului din functia utilizata in cele ce urmeaza.
Pentru inceput trebuie mentionat ca este necesara includerea bibliotecii System.Net.Mail, care este predefinita in biliotecile de baza si nu mai necesita instalare.
Mai intai trebuie precizat clientul de mail utilizat in situatia de fata. Dupa cum se poate vedea am folosit un mail de la furnizorul Gmail, iar declararea clientului se face conform celor scrise mai jos:
SmtpClient client = new SmtpClient("smtp.gmail.com");
Se adauga mesajul si subiectul acestuia. De asemenea trebuie precizat expeditotul si destinatarul.
MailMessage message = new MailMessage();
message.From = new MailAddress("employeehubsa@gmail.com"); message.To.Add("employeehubsa@gmail.com");
message.To.Add("noua parola");
message.Subject = "Resetare PAROLA Corporate HUB";
Urmatorul pas este acela de a configura cateva setari de conexiune si securitate pentru a se putea realiza trimiterea mail-ului.
client.UseDefaultCredentials = false;
client.Port = 587;
client.EnableSsl = true;
client.Credentials=new System.Net.NetworkCredential("employeehubsa@gmail.com","Pass");
Ultimul pas necesar pentru realizarea functiei SendMail(MailMessage message), il reprezinta instructiunea pentru trimiterea mailului si ulterior eliberarea memoriei.
client.Send(message);
message = null;
In scurt timp de la introducerii mail-ului in campul destinat si a apasarii butonului Trimite in casuta de email v-a intra un nou mail cu parola generata.
5.5 Modulul ADMIN
Acest modul este destinat administratorlui de sistem, al carui rol este de a gestiona baza de date de utilizatori si de a introduce in sistem toate informatiile referitoare la acestia. Pe langa acest rol, administratorul se mai ocupa de adaugarea cartilor in bilioteca virtuala a firmei si de editarea paginii de inceput din modulul ANGAJAT. Interfata administratorlui de sistem se acceseaza prin autentificarea cu utilizatorul admin si parola admin, date de autentificare create de catre mine.
Aceasta forma se ocupa de cele patru operatii posibile asupra unui tabel intr-o baza de date, asa numitul CRUD(Create-Read-Update-Delete). Aceste operatii au loc asupra tabelului cu in care se gasesc utilizatorii aplicatiei, tabelul Angajati.
In cele ce urmeaza vom analiza fiecare element inserat in interfata administratorlului, dar si functionalitatile rolului pe care il inceplineste acesta. Interfata din cadrul formei de administrator poate fi vizualizata in figura urmatoare.
Dupa crearea acestei forme am inserat un TabControl pentru a realiza o interfata cat mai accesibila. Acest TabControl dispune de cinci pagini dupa cum se poate observa in Figura 5.30, dar ca pagina de pornire am setat pagina VIZUALIZARE, in care se poate vedea intreaga baza de date a personalului intreprinderii.
In ceea ce priveste pagina de VIZUALIZARE voi enumera elementele utilizate si functionalitatea fiecaruia:
-TextBox-uri utilizate la selectia utilizatorilor pentru o vizualizare mai clara(in partea de sus a paginii);
-TextBox utilizat pentru cautarea unui utilizator in functie de o categorie anume, care se poate selecte cu ajutorul ListBox-ului; se poate cauta un utilizator dupa nume, prenume sau codul de angajat(in partea de jos a paginii);
-doua butoane necesarea pentru editarea si stergerea utilizatorlui; in situatia in care se doreste a se realiza una dintre aceste operatii este necesar sa se selecteze utilizatorul asupra caruia se fac modificarile;
-GroupBox-uri utilizate la incadrarea unor elemente inserate si indicarea functionalitatii lor(spre ex.: USER SELECTAT).
-un DataGridView, necesar vizualizarii si selectiei utilizatorilor, despre care voi vorbi in continuare.
DataGridView este un element preluat din Toolbox, similar unui tabel si pe care il utilizez pentru o mai usoara prelucrare si vizualizare a datelor a datelor. Pentru a popula DataGridView-ul am creat o metoda void DataGrid_Fill(), care cu ajutorul unei comenzi indreptate asupra bazei de date, preia informatiile si le afiseaza. Aici intra in discutie operatia de SELECT a bazei de date.
In sectiunea Properties dedicata DataGridView-ului trebuie modificat la campul SelectionMode modul de selectie a datelor din tabel. Se selecteaza FullRowSelect, astfel incat atunci cand se va da click pe un utilizator, acesta va fi selectat.
De asemenea in tot in cadrul selectiei utilizatorului avem nevoie de o metoda numite in cazul de fata dataGridView1_MouseClick(object sender, MouseEventArgs e) de tipul void. Cu aceasta metoda la selectia unui utilizator se vor trimite datele lui spre campurile din interioar GroupBox-ului USER SELECTAT. Transmisia datelor se poate realiza prin urmatorul fragment de cod din interiorul metodei:
textBox8.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//ID
textBox1.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//NUME
textBox2.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();//PRENUME
In urma selectiei cu ajutorul click-ului se vor trimite datele spre TextBox-urile mentionate mai sus pentru a putea modifica sau sterge utilizatorul selectat. La apasarea butonului STERGERE am implementat un MessageBox care necesita confirmare pentru realizarea acestei operatii.
Pagina ADAUGARE USER este folosita pentru adaugarea noilor utilizatori in sistem si pentru crearea contului de autentificare al acestora. In aceasta pagina se realizeaza operatia de INSERT asupra bazei de date. Pagina ADMIN poate se poate vedea in Figura 5.31.
Elementele utilizate aici sunt:
-Label-uri utilizate pentru specificarea datelor care trebuie introduce;
-TextBox-uri pentru introducerea datelor;
-butoane pentru adaugarea unei fotografii, eliberarea campului si pentru adaugarea noului utilizator;
-ListaBox-uri pentru selectia rolului si echipei utilizatorului;
-un PictureBox pentru afisarea pozei adaugate;
-un dateTimePicker pentru introducerea datei de nastere.
Printre actiunele ce se pot realiza in aceasta pagina merita mentionate urmatoarele: adaugarea unei imagini de utilizator si crearea datelor de logare. O sa incep cu adaugarea unei fotografii de profil. Pentru realizarea acestei parti am utilizat elementul openFileDialog, din ToolBox. La apasarea butonului de INCARCARE se apeleaza metoda din spatele acestuia si se deschide o fereastra pentru adaugarea pozei, fereastra ce imi filtreaza doar fotografiile de tipul „.jpg“. Metoda preia adresa fotografiei si o incarca in baza de date sub o forma binara.
Trebuie mentionata importanta ListBox-ului care atribuie un rol angajatului, deoarce acest rol va defini tipul de rol din cadrul sistemului.
In ceea ce priveste generarea unui nou cont se va utiliza sectiunea date logare, unde se va introduce un nume de utilizator si o parola. In situatia in care numele de utilizator mai exista in sistem casuta din dreapta numelui se va colora in rosu. Daca numele este disponibil casuta va ramane verde. In spatele acestei generari de cont se afla o metoda numita VerificaDisponibilitate(object sender, EventArgs e), verifica existenta unui alt nume de utulizator similar in baza de date si atribuie un mesaj si o culoare casutei despre care vorbeam anterior, dupa cum se poate observa si in figura urmatoare:
Pentru a facilita introducerea corecta a datelor fiecare camp de introducere a datelor are o metoda specifica de verificare a corectitudinii datelor. Spre exemplu in campul Telefon nu se pot introduce litere. De asemenea aceasta metoda limiteaza si numarul de cifre introduse. Daca numarul de telefon nu a fost introdus corect a aparea o atentionare in acest sens. Acesta situatie poate fi vizualizata in Figura 5.32. Exista cate o astfel de metoda si pentru capurile Zile de concediu, Salar, CNP, Seria, Nr..
Pagina EDITARE USER este similara casi interfata cu pagine ADAUGRE USER, doar ca in aceasta pagina se realizeaza operatia de UPDATE a bazei de date cu utilizatori. Acesta sectiune se acceseaza in momentul in care informatiile unui utilizator trebuie modificate din diferite cauze. Trebuie mentionat ca numele utilizatorul este singur care nu se mai poate modifia in aceasta pagina. Modificarile survenite se realizeaza la apasare butonului FINALIZARE.
Pagina BIBLIOTECA a fost atribuita administratorului pentru adaugarea cartilor in bilioteca intreprinderii. In ceea ce priveste aceasta pagina elementele inserate din Toolbox putem mentiona:
-DataGridView-ul utilizat pentru vizualizarea cartilor;
-campurile din GroupBox-ul in care poate fi vizualizata cartea selectat; exista posiblitatea de stergere in cazul unei carti selectate;
– Label-uri, TextBox-uri, butoane necesare pentru inserarea unei noi carti.
La intrarea pe aceasta pagina GroupBox-ul de adaugare a cartilor nu este vizibil. Acest lucru este posibil prin setarea in Properties a campului Visible ca si False. La apasarea butonului ADAUGARE se executa instructiunea groupBox12.Show() pentru pentru ca groupBox12 sa devina vizibil.
Pagina CONFIGURARI face posibile realizarea de catre administrator a unor modificari in forma care apare angajatilor. Pentru o mai buna intelegere se va vizualiza mai intai pagina de intrare disponibila angajatilor in Figura 5.33
Figura 5.33 Pagina de intrare pentru contul unui angajat
Aceasta pagina disponibila angajatului se imparte in patru sectiuni configurabile de catre administrator conform notatiei de pe figura urmatoare. In continuare vom face o scurta descriere a ceea ce reprezinta fiecare sectiune:
1.Aceasta setiune este compusa din doua PictureBox-uri care devin vizibile pe rand la in intervale de 5 secunde pentru a creea efectul unei tranzitii de imagini.
2.Sectiunea 2 reprezinta titlu articolului postat pe aceasta pagina
3.Sectiunea 3 reprezinta articolul prezent pe aceasta pagina.
4.Aceasta sectiune este un link catre o pagina web, si ea configurabila de asemenea.
Revenind la pagina de configurare din cadrul utilizatorlui ADMIN, se poate observa in Figura 5.34 interfata disponibila aestuia. In prima jumatate a paginii, administratorul are acces la modificarea celor doua imagini, iar in ceea de-a doua jumatate a paginii la apasarea CheckBox-ului EDITARE, se va putea edita si stirea prezenta pe pagina angajatului.
Modificare imaginii se face selectand pe rand fiecare dintre cele doua si apasarea butonului Adauga. Am creat o fereastra din care se va alege fotografia, iar mai apoi se va apasa butonul Finalizare pentru incheierea operatiunii. Pagina de editare se poate vizualiza in figura urmatoare.
Figura 5.34 Pagina de CONFIGURARI
5.6 Modulul ANGAJAT
In continuare vom descrie modulul ANGAJAT si functionalitatile prezente in cadrul acestuia. Se doreste ca acesta seciune sa aiba un grad ridicat de accesibilitate si sa puna la dispozitie toate uneltele necesar unui angajat de a-si gestiona activitatea.
Pe langa pagina de intrare(ACASA) din cadrul modulului, pe care am descris-o in cadrul modulului ADMIN, aceasta forma se compune din urmatoarele pagini:
-pagin CRONOS, destinata pontarii zilnice, adaugarii concediilor si plasarii biletelor de voie spre aprobare;
-pagina HELPDESK, utilizata in situatia in care exista probleme tehnice in intreprindere si prin care angajatul sesizeaza acest lucru;
-pagina INFOPOINT, unde angajatul va putea urmari stiri interne intreprinderii;
-BIBLIOTECA, pagina in care angajatul isi va putea rezerva cartile din bibliooteca firmei.
In continuare o sa analizam pe rand fiecare din aceste pagini.
Pagina CRONOS contine un tabControl creat pentru a facilita impartirea acesteia in trei sectiuni diferite in functie de necesitatea angajatului, care sunt de fapt tabPage-uri la care se ajunge prin apasarea unor butoane. Aceste sectiuni sunt:
CONCEDIU;
PONTARE;
BILET DE VOIE;
Sectiunea CONCEDIU a fost realizata prin inserarea a doua elemente de tipul dateTimePicker, utilizate pentru introducerea datei de inceput si datei de finalizarea a concedului. In continuare am adaugat doua TextBox-uri care afiseaza numarul zilelor de concediu. Dupa completarea acestor campuri se apasa butonul Trimite. In acest moment se trimite un mail catre manager pentru a aproba sau a respinge cererea de concediu. In functie de raspunsul acestuia se trimite starea concediului spre baza de date si anagjatul este informat pe mail. Procesul de transmitere a mailurilor prin procedeul SMTP a fost discutat in subcapitolul 5.5.2 Recuperarea parolei.
Sectiunea PONTARE pastreaza acelasi format in mare parte, doar ca se adauga patru controale de tipul NumericUpDown pentru mentionarea orelor de sosire si de parasire a locului de munca.
Sectiunea BILET DE VOIE necesita si completarea unui TextBox prin care se mentioneaza motivul cererii. Aceasta sectiune se poate vizualiza in Figura 5.34.
Figura 5.34 Pagina de CONFIGURARI
Toate sectiunile apeleaza cate o metoda de tipul DataGridCronosConc_Fill() pentru a actualiza DataGridView-ul in urma modificarilor care se produc la introducerea cererilor.
De asemenea la completarea cu date incorecte utilizatorul este sesizat. Spre exemplu la adaugarea unui concediu, daca data de sfarsit este inaintea datei de inceput va aparea un mesaj care va sesiza utilizatorul.
Pagina HELPDESK este compusa din urmatoarele elemente adaugate din Toolbox:
-un GroupBox care incadreaza mesajul transmis echipei tehnice;
-un DropDownList din care se va selecta prioritatea problemei: ridicata, medie, scazuta;
-doua TextBox-uri necesare pentru completarea mesajului si a subiectului.
Apasand butonul TRIMITE, se va transmite un mail cu datele completate prin intermediul metodei de transmitere a unui mail, utilizandu-se protocolul SMTP. Un exemplu de semnalare a unei probleme se poate observa in Figura 5.35.
Figura 5.35 Semnalarea unei probleme prin intermediul HELPDESK
Pagina INFOPOINT ofera angajatului posibilitatea de a vizualiza cele mai noi stiri din intreprindere in timp real. Anunturile sunt adaugate de catre manager.
Pentru a realiza aceasta pagina am adaugat un ListView, pe care l-am populat cu stirile provenite din baza de date. In ceea ce priveste operatia de SELECT asupra bazei de date trebuie mentionat ca s-a folosit si instructiunea ORDER BY Data_publicarii DESC pentru a putea vizualiza articolele aparute cronologic.
Pagina BIBLIOTECA s-a realizat intr-un tabPage nou asemenea paginilor anterioare. Pentru inceput am adaugat in DataGridView pentru vizualiza baza de date a cartilor. De mentionat este ca in zona de Properties a tabelului am facut urmatoarele modificari: pentru ColumnHeadersHeightSize am aleg AutoSize, pentru o vizualizare mai buna a coloanelor si la SelectionMode am ales FullRowSelect, pentru a putea selecta cate un rand.
La selectarea unui rand informatiile referitoare la carte vor fi afisate sub DataGridView. Campul Stare indica starea in care se afla cartea rezervata: DISPONIBILA si INDISPONIBILA(in situatia in care a fost deja rezervata). Am implementat doua butoane pentru utilizator, necesare pentru imprumutarea si returnarea cartilor, dar si un camp de cautare al cartilor.
La apasarea CheckBox-ului CARTILE MELE in lista de carti se vor putea vizualiza doar cartile imprumutate pana in prezent.
Interfata bibliotecii se poate vizualiza in Figura 5.36.
Figura 5.36 Pagina BIBLIOTECA
O alta functionalitate a aplicatiei in ceea ce priveste biblioteca este faptul ca daca o carte nu a fost returnata la timp, utilizatorul va fi informat de fiecare data cand se va loga in aplicatie. Pentru aceasta am implementat urmatoarea metoda care este apelata de fiecare data cand utilizatorul se va autentifica: void AvertizareReturnareCarte(string User). In interiorul metodei se compara data zilei curente cu data returnarii, iar daca perioada de inchiriere a fost depasita sa afiseaza urmatorul mesaj:
Figura 5.37 Informare returnare carte
Avand in vedere ca angajatul se autentifica cu ajutorul unui cod QR este necesar sa poata sa genereze acest cod in aplicatie. La generarea contului utilizatorul primeste pe mail o parola generata automat pe care trebuie sa o schimbe la intrare in aplicatie. Acest lucru se poate realiza accesand link-ul Schimbare parola, situat sus, in partea dreapta a paginii. Se da click pe acest link si va apare un GroupBox conform Figurii 5.38.
Figura 5.38 Schimbare parola
Pentru generarea codului QR specific contului de utilizator se introduce veche parola, se introduce noua parola in doua TextBox-uri cu scopul de a verifica daca aceasta a fost scrisa identic si de apasa OK. Noua parola este generata. Nu mai ramane decat sa apasam si butonul Generare cod QR. Astfel, in PictureBox-ul din figura anterioara va fi generat noul cod QR. De asemenea se va trimite un mail spre utilizator cu o imagine atasata ce va contine codul QR.
Pentru generarea codului QR este necesara includerea bibliotecilor umatoare in antetul paginii:
using ZXing;
using ZXing.QrCode;
In continuare vom discuta despre cum este generat codul QR la nivel de cod. Pentru inceput se defineste o variabila cu tipul de data IBarcodeWriter pe care o putem utilizata datorita includerii bibliotecii ZXing. Se specifica formatul si faptul ca avem de lucru cu un cod QR. Variabila se declara astfel:
IBarcodeWriter writer = new BarcodeWriter { Format = BarcodeFormat.QR_CODE };
In urmatorul pas se specifica sirul de caracter si se genereaza codul QR. Acesta este mai apoi salvat sub form de imagine cu formatul „jpeg“ pentru a fi atasat si transmis pe mail utilizatorului.
var result = writer.Write(User + " " + Parola);
var barcodeBitmap = new Bitmap(result);
Bitmap img = barcodeBitmap;
In capitolele anterioare am mai discutat despre cum se creaza un mail si cum se trimite acesta. Acum, voi arata in cele ce urmeaza cum se ataseaza o imagine in mail. Se creaza o variabile stream pentru a memora imagine si cu metoda Add() se va adauga ca si atasament.
var stream = new MemoryStream();
img.Save(stream, ImageFormat.Jpeg);
stream.Position = 0;
MailMessage message = new MailMessage();
message.Attachments.Add(new Attachment( stream,"codqr_angajat.jpeg","image/jpeg"));
5.7 Modulul MANAGER
Ultimul modul din cadrul aplicatiei il reprezinta modulul MANAGER, un modul cu diverse functionalitati in cadrul sistemului, printre care se numara: aprobarea biletelor de voie, aprobarea concediilor, vizualizarea pontajelor, adaugarea de anunturi in sectiunea INFOPOINT. Pe langa acestea, modulul dispune si de o sectiune pentru gestionarea resurselor umane pe proiecte, la care se adauga o sectiune destinata administrarii finantelor intreprinderii.
Structura modului se bazeaza pe crearea tabControl principal, care imparte pagina MANAGER in pagini care se ocupa de functionalitatile discutate anterior.
In pagina BILETE DE VOIE, managerul cauta cererile despre care a fost informat pe mail si raspunde la acestea. Biletele de voie pot fi vizualitate intr-un DataGridView. In momentul care o cerere a fost selectat in partea de sus isi face aparitia un GroupBox de unde se realizeaza aprobarea cererii. Pentru cererile la care s-a primit deja nu raspuns acest GroupBox nu mai este vizibil.
Pagina PONTAJE afiseaza managerului pontajul zilnic al angajatilor. Aceasta pagina este reprezentata in Figura 5.39. Managerul are la dispozitie un TextBox de cautare in caz ca doreste sa vizualizeze informatii doar pentru un singur angajat si doua CheckBox-uri in care se precizeaza tabelul in care se cauta.
Tabelele PONTARE ZILNICA si CONCEDII sunt populate de catre tabelul Pontaje baza de date, dar pentru fiecare tabel se extrag din baza de date doar anumite coloane. Pentru a selecta doar anumite campuri, se foloseste, spre exemplu in cazul concediilor urmatoare instructiune unde se poate vedea tipul specificat:CONCEDIU.
SqlCommand cmd = new SqlCommand("
SELECT Angajati.Nume,Angajati.Prenume,Pontaje.Inceput_concediu, Pontaje.Sfarsit_concediu,Pontaje.Zile,Pontaje.Aprobare_concediu,Pontaje.PontajID, Angajati.Zile_concediu
FROM Angajati,Pontaje WHERE Pontaje.AngajatID=Angajati.AngajatID
AND Tip='"+"CONCEDIU"+"'", con);
Figura 5.38 Pagina PONTAJE
In pagina ANUNTURI, managerul poate adauga articole de informare a angajatilor si de asemenea poate sa modifice anuntul inclus pe prima pagina a angajatilor. Pentru vizualizarea tuturor anunturilor s-a folosit un ListView. Pagina are inserat si un GroupBox, cu patru TextBox-uri utilizate la introducerea anuntului. Orice anunt poate fi editat prin bifarea CheckBox-ului MODIFICARE ARTICOL, care face vizibile campurile pentru modificare.
Urmatoarea pagine este dedicata alocarii resurselor umane pe proiectele din cadrul firmei. Pagina ALOCARE PROIECT este impartita in doua zone cu ajutorul a doua GroupBox-uri numite Echipe pe proiect si Alocare angajati.
In primul GroupBox, Echipe pe proiect, am inserat un DataGridView in care se pot vizualiza echipele din cadrul firmei care lucreaza pe diferite proiecte. Butonul Sterge permite stergerea echipei selectate, iar butonul Adauga face vizibil un GroupBox cu campurile necesare pentru introducerea unei noi echipe. La introducerea unei echipe, in urma apasarii butonului Ok se apeleaza o metoda specifica pentru introducerea echipei in baza de date si o metoda care realizeaza repopularea tabelului pentru a se putea vizualiza ultima echipa inserata. Metoda creata este DataGridEchipe_Fill(). Aceasta metoda este apelata si in metoda ManagerForm_Load(object sender, EventArgs e) care se ruleaza odata cu aparitia formei. Aici se gasesc de obicei toate metodele care se ocupa de pregatirea interfetei aplicatiei.
Pe langa ceea ce am mentionat mai sus, la apasarea butonului OK se trimite spre comboBox-urile prezente in a doua zona a paginii ALOCARE PROIECT o lista cu numele tuturor echipelor, necesare pentru cautare angajatilor pe echipe, dar si pentru operatia de atribuire de echipa pentru angajatul selectat. ComboBox-ul poate fi populat cu elemente utilizand urmatoarea metoda:
comboBoxEchipe.Items.Add(textBoxEchipa.Text);
Zona FINANTE este divizata intr-o parte de salarii si o parte de facturi. Accesul la facturi sau la salarii se face prin intermediul elementul de tip menuStrip. In Figura 5.39 se poate vizualiza atat meniul utilizat in cadrul paginii de manager, cat si pagina destinata gestionarii salariilor.
Pagina de salarii are inserate urmatoarele elemente:
-un DataGridView pentru vizualizarea salariilor angajatilor in ordine descrescatoare;
-o sectiune destinata modificarii salarului pentru un angajat selectat;
-o sectiune pentru calculul totalului de plata in ceea ce priveste salariile;
-o diagrama pe care se poate vizualiza situatie salariala din firma.
Butonul pentru generarea totalului de plata apeleaza o functie care preia salariile angajatilor in tabelul alaturat si calculeaza suma, pe care mai apoi o converteste in tipul de data String pentru a putea fi afisata in TextBox.
O alta metoda apelata la apasarea butonului este functia Chart1_Fill(),care se ocupa de realizarea graficului cu salriile. Graficul are diferite posibilitati de configurarea si poate fi afisat sub mai multe reprezentari in functie de configurarile realizate. Eu am ales o reprezentare clasica a graficului in culoarea rosie. In partea dreapta se poate vizualiza legenda inserata pentru o intelegere mai clar a graficului.
Figura 5.38 Pagina SALARII
Metoda Chart1_Fill() a fost realizata in urmatorul mod:
-am obtinut numarul total de angajati din firma:
int contor = 0;
SqlDataReader dr;
SqlCommand cmd = new SqlCommand("SELECT * FROM Angajati", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
contor = contor + 1;
}
-la pasul urmator in interiorul unei bucle parcursa pana la numarul total de angajati am, utilizat o metoda Add, specifica claselor utilizate la realizarea graficului:
chart1.Series["x"].Points.Add(salar);
Mergand mai departe, la pagina FACTURI, trebuie sa mentionam mai intai ca facturile introduse in sistem pot fi de doua tipuri: de plata, de incasat si pot avea doua situatii: achitate, neachitate. Aceasta pagina este prezenta in Figura 5.39.
In DataGridView-ul prezent pe aceasta pagina pot fi vizualizate facturile specifice informatiilor selectate. Tipul de factura poate fi selectat din meniul de tip menuStrip, iar situatie facturii se selecteaza din ComboBox-ul situat deasupra tabelului.
Sectiunea Calculator situatie curenta, calculeaza numarul de facturi si indica starea acestora pentru ca managerul sa poata gestiona mai usor situatia economica a firmei. Acest lucru se realizeaza tot printr-o metoda care numara facturile din baza de date in functie de tip si situatie.
Figura 5.38 Pagina FACTURI
Aceasta pagina dispune si ea de un grafic realizat prin intermediul elementului Chart din Toolbox. Graficul indica situatia facturilor, impreuna cu totalul de plata pentru fiecare dintre acestea.
Butonul Inrolarea factura noua, adaugarea unei noi facturi in baza de date a acestora prin completarea anumitor campuri.
Similar butonului de inrolare este butonul de vizualizare a facturii, unde este posibil si modificarea acesteia in situatia in care a fost achitata. Acesta pagina poate fi vizualizata in figura urmatoare:
Figura 5.40 Fereasta de modificare a facturii
Pentru a realiza editarea facturii a fost nevoie sa trimit cheia primara a facturii dintr-o fereastra in alta. Am modificat structura functiei aferente feresterei care se creaza in mod automat si am adaugat ca parametrii un element de tipul ManagerForm, urmat de un set de variabile de tip string care se refera la campurile care descriu o factura.
Aceasta functie este mai apoi apoi apelata la apasarea butonului Vizualizare si se realizeaza transmiterea valorilor din variabilele unei forme prin parametrii functiei la variabilelei celei de-a doua forme AdaugareFacturaForm.
Atat in ferestrele de administrator si angajat, cat si in forma de admin am realizat cateva elemente de personalizarea a paginilor. Astfel, la autentificarea utilizatorilor in aplicatie, baza de date va fi accesata si va fi preluata imaginea de profil a perosoanei in cauza, respectiv numele de utilizator conform Figurii 5.41.
Figura 5.41 Personalizarea paginii pentru fiecare utilizator
Fiecare dintre ferestrele specifice celor trei tipuri de utilizatori au cate o metoda care isi transmite parametrii spre o variabile globala. Parametrii acestor functii sunt parola si utilizatorul. Se poate observa structura functiei in continuare:
public ManagerForm(string user, string parola)
Numele de utilizator este transmis catre o variabile globala, iar apoi adaugat in textBox-ul care se poate vedea si in imagine.
Tot in aceasta metoda, trebuie preciza ca in baza de date se realizeaza o cautare a fotografiei de profil, care dupa ce este gasita se atribuie pictureBox-ului corespunzator. Pentru asignarea fotografiei am folosit urmatorul procedeu:
SqlCommand cmd = new SqlCommand("SELECT * FROM Angajati WHERE (Utilizator='"+user+"') AND (Parola= '" + parola + "')", con);
SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataTable dtp = new DataTable();
dap.Fill(dtp);
byte[] img = (byte[])dtp.Rows[0][8];
MemoryStream msp = new MemoryStream(img);
pictureBox1.Image = Image.FromStream(msp);
Se preia poza din baza de date si se asigneaza unei variabile de tipul byte care mai apoi este salvata intr-un MemoryStream. In ultima linie de cod se poate observa cum imaginea este atribuita pictureBox-ului utilizat.
Atat in acest subcapitol cat si in subcapitolele anteriore s-a descris fiecare etapa a implementarii aplicatiei CorporateHUB din perspectiva bazelor de date, a functionalitatilor realizate, dar si a algoritmilor folositi. In capitolul urmator se vor descrie pasii realizati in testarea si validarea aplicatiei, dar si scenariile utilizate.
Capitolul 6 Testare si validare
Testarea este o etapa necesara in procesul de realizare a produselor software. Testarea acorda o importanta deosebita efortului de inlaturare a erorilor de analiza, proiectare si programare prin folosirea unor mijloace si tehnici de testare evoluate. In cadrul testarii trebuie sa ne concentram atat pe logica interna a programului, cat si pe functionalitatea sa externa.
Pentru a testa si verifica programul descris in capitlul anterioar este nevoie de crearea anumitor scenarii de test in cele ce urmeaza. Aceste scenarii trebuie sa urmareasca fiecare etapa pe care o parcurge aplicatia in urma comenzilor si a datelor de intrare introduse. In continuare vom crea o serie de scenarii de testare pentru a valida functionalitatea programului.
1.SCENARIUL 1: Introducerea unui nou utilizator in baza de date
Conditiile initiale in care se realizeaza acest scenariu sunt urmatoarele: baza de date este pornita si programul a fost deschis.
Primul pas in testarea acestui scenariu este logarea administratorului pentru a putea intra in interfata de crearea a utilizatorilor. Logarea se realizeaza prin introducerea utilizatorlui „admin” si a parolei „admin”. Se acceseaza pagina ADAUGARE USER, unde se incepe completarea campurilor de date cu un nume, Deac si un prenume, Andrei. In incercarea de a realiza adaugarea unui utilizator completand doar campul Nume si campul Prenume, la apasarea butonului de adauga apare un mesaj pe ecran conform Figurii 6.1, doarece nici un utilizator nu va putea fi introdus in complet fara a avea toate informatiile.
Figura 6.1 Mesaj aparut la introducerea unor date incomplete
Se vor adauga si restul informatiilor referitoatre la utilizator. In campurile pentru telefon, zile de concediu si salar se incearca sa se introduca litere sau o numar de cifre mai mare decat cel din cazul real. Aplicatia nu permite decat introducerea unor date corecte in sistem.
In continuare se incearca adaugarea utilizatorlui fara ca acesta sa aiba date de logare disponibile. Din nou, aplicatia avertizeaza in legatura cu introducerea reintroducerea corecta a datelor. Dupa ce toate informatiile au fost introduse conform Figurii 6.2 se apasa butonul de adaugare si noul utilizator se introduce in baza de date.
Figura 6.2 Adaugare utilizator
Introducerea utilizatorlui in sistem presupune actualizarea tabelului prezent in pagina de VIZUALIZARE, lucru care se si intampla conform figurii 6.3. Utilizatorul este acum in baza de date.
Figura 6.3 Actualizarea paginii VIZUALIZARE
In urma crearii contului un mesaj cu datele de autentificare au fost trimise pe mail-ul noului utilizator. Mail-ul receptionat este urmatorul:
Buna Andrei !
Datele tale de identificare sunt urmatoarele:
Utilizator: andrei.deac
Parola este: admin
2.SCENARIUL 2: Autentificarea unui utilizator de tip ANGAJAT, modificarea parolei si generarea codului QR
In continuarea prmului secenariu vom realiza si logarea utilizatorlui creat in sistem. Se vor introduce in fereastra de logare numele de utilizator: „andrei.deac” si parola „admin”. Logarea se realizeaza cu succes si noul utilizator are acces la toate functionalitatile disponibile in cadrul rolului pe care il detine. Confirmarea autentificarii este realizata de personalizarea paginii in coltul din dreapta-sus cu numele si imaginea utilizatorlui.
Pentru a modifica parola initiala, o sa dam click pe link-ul Schimbare parola. Acum vom introduce vechea parola gresita pentru a observa ce se intampla. Aplicatia afiseaza urmatoarea avertizare „Parola curenta introdusa este gresita!”.
In continuare voi completa corect parola curenta, iar la parola noua voi scrie „progtamare”, iar la parola noua voi scrie „12345678”. Numarul minim de caractere introdus este cinci. De aceasta data plicatia afiseaza urmatoarea avertizare „Parolele nu corespund!”.
La introducerea unor date valide parola contului se schimba si mi se solicita generearea unui cod QR in vederea autentificarii. Apasand butonul de generarea a codului QR in casuta speficica mail-ului introdus la crearea contului va fi primit un mesaj in care este atasata imaginea codul QR pentru utilizatorul in cauza.
Figura 6.3 Mail-ul care contine codul QR
3.SCENARIUL 3: Autentificarea prin intermediul codului QR
Se deschide programul si apare fereastra de autentificare. In urma primirii mailului anterior se descarca imagine cu codul QR pe telefon si se incepe autentificarea.
In campurile pentru datele de logare nu se introduce nimic. Se bifeaza checkbox-ul pentru a activa logarea prin cod QR. Se poate observa ca webcam-ul din dotarea calculatorului porneste conform Figurii 6.4.
Figura 6.3 Pornirea camerei web
In continuare, se indrepta ecranul telefonului cu imaginea cod QR spre camera web si in mai putin de 5 secunde se realizeaza operatia de decodare. Se deschide pagina utilizatorlui.
4.SCENARIUL 4: Autentificarea utilizatorilor cu roluri diferite
In acest scenariu se realizeaza o serie de incercari de logare cu diferite date de logare . Datele de autentificare se regasesc in tabelul de maj jos:
In primul caz logarea s-a realizat si s-a deschid pagina specifica managerului.
In al doilea caz logarea s-a realizat si s-a deschid pagina specifica administratorlui.
In al treilea caz logarea s-a realizat si s-a deschid pagina specifica angajatului.
In al patrulea caz logarea nu s-a realizat, deoarece parola este incorecta.
In al cincilea caz logarea nu s-a realizat, deoarece utilizatorul nu exista in baza de date.
5.SCENARIUL 5: Adaugarea unei echipe noi, modificarea echipei si salarului pentru un angajat
Conditiile initiale in care se realizeaza acest scenariu sunt urmatoarele: utilizatorul logat este de tip manager deschide pagina si acceseaza pagina ALOCARE PROIECT. In continuare se urmeaza urmatorii pasi pentru realizarea acestui scenariu de test.
Pentru a introduce o echipa noua se apasa butonul Adauga si se completeaza campurile disponibile astfel:
Echipa: alfa
Proiect: beta
Se apasa butonul OK si se face o verificare in baza de date, dar si in tabelul alaturat pentru a ne convinge ca s-a realizat actualizarea. Tabelul din baza de date poate fi vizualizat in figura urmatoare:
Figura 6.3 Tabela din baza de date
Pasul urmator presunupune asignarea acestei echipa utilizatorului despre care am discutat la scenariile anterioare. Se selecteaza utilizatorul si in partea dreapta vor trebui completate informatiile care se doresc modificate. Se selecteaza echipa alfa si se introduce o alta suma in campul destinat salarului. Se apasa OK. Dupa ce se apasa butonul Modifica angajatul va fi atribuit unei noi echipe. Rezultatul este conform figurii urmatoare.
Figura 6.3 Modificarea echipei si salarului unui utilizator
In urma documentarilor necesare pentru implementarea aplicatiei, a realizarii propriu-zise a aplicatiei si a etapei de testare si validare, s-a ajuns la anumite concluzii si posibile dezvoltari ulterioare perezentate in cele ce urmeaza.
Capitolul 7 Concluzii
In prezent se poate observa din ce in ce mai mult tendinta de a utiliza aplicatii specializate in toate domeniile. Aceste aplicatii sunt concepute pentru a reduce semnificativ costurile si a creste productivitatea, respectiv profitabilitatea companiilor. Evolutia constanta a mediilor de dezvoltare software este un factor fundamental in dezvoltarea aplicatiilor, care odata cu trecerea timpului devin tot mai performante.
Aplicatia realizata permita gestionarea resurselor umane si administrarea activitatilor intr-o intreprindere prin functionalitatile pe care le-am implementat si poate fi utilizata de catre persoane cu diferite roluri in cadrul atat in cadrul intreprinderii, cat si in cadrul aplicatiei. Aceasta aplicatie poate fi considerata o platforma care inglobeaza toate informatiile cu care se lucreaza in interiorul intreprinderii in care este implementata.
Cu toate ca aplicatia incearca sa acopere toate activitatile din cadrul unei firme, in functie de necesitatile si de dorintele clientului se poat adauga module care sa sporeasca gradul de eficienta. Aplicatia poate fi adaptata in functie de domeniul de activitate al intreprinderii, de departamentele firmei si de alti factori care o influenteaza.
Consider ca aplicatia realizata poate fi utilizata intr-o intreprindere deoarece permite o buna gestionare a datelor si ofera o interfata usor de utilizat pe care se pot efectua operatiuni de diverse complexitati: de la gestionarea bazei de date a angajatilor pana la administrarea situatiei financiare a firmei.
In ceea ce priveste posiblitatea de imbunatatire a aplicatiei in viitorul apropiat se pot enumera cateva directii:
crearea unei aplicatii pentru telefonul mobile care sa fie conectata cu aplicatia actuala si in momentul in care user isi introduce datele de autentificare sa genereze codul QR;
adaptarea aplicatiei in functie de domeniul in care este utilizata;
imbunatatirea interfetei grafice a aplicatiei;
introducerea unui modul de planificare a task-urilor asignate angajatilor.
In concluzie, prin aplicarea unor diferite scenarii de test si prin urmarirea pasilor bunei functionari, se poate concluziona ca aplicatia functioneaza optim si rezultatele obtinute sunt cele dorite. Faptul ca traim intr-o societate in care nevoie de aplicatii este intr-o continua ascentiune si avand in vedere eficienta acestor aplicatii consider ca solutia aleasa si implementata este una justificata.
Imaginile din aplicatie sunt disponibile la:
[10] http://www.thebitesizeconcepts.com/wp-content/uploads/2016/05/corporate-website-design.jpg
[11] http://blog.dashlane.com/wp-content/uploads/2015/04/5-Huge-Holes-in-Your-Password-Security-to-Lock-Down-Now.jpg
[12] http://medias.photodeck.com/e712a623-e1aa-49ed-88cc-9baede7b4b1d/Corp_Cover_xlarge.jpg
[13] http://floridapolitics.com/wp-content/uploads/2015/06/technology.jpg
[14] http://www.global-context.com/wp-content/uploads/Vetta-walking-at-sunset.jpg
[15] http://www.srwaite.com/wp-content/uploads/2015/07/help-desk-.jpg
[16] http://img.talkandroid.com/uploads/2013/11/stack_of_books.jpg
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: APLICATIE SOFTWARE DESTINATA GESTIONARII RESURSELOR UMANE SI ADMINISTRARII ACTIVITATILOR IN CADRUL UNEI INTREPRINDERI [311687] (ID: 311687)
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.
