CATEGORII DOCUMENTE |
Agricultura | Asigurari | Comert | Confectii | Contabilitate | Contracte | Economie |
Transporturi | Turism | Zootehnie |
Plan Lucrare de licenta:
Cap 1:
Introducere.
Partea economic: Descrierea cerinteleor din punct de vedere economic(definitii, explicatii)
Partea de aplicatie: Descrierea arhitecturii client server, a mediilor de lucru in care va fi realizata aplicatia
Cap 2:
Analiza si poriectarea aplicatiei.
Intrarile, iesirile, porcesele de prelucrare a datelor
Diagram de clase si de activitati
Nivelul acesului la date
Schema bazei de date
Graful bazei de date
Cap 3:
Baza de date, descrierea tabelelor
Proiectarea formularelor
Proiectarea Rapoartelor
Cap 4:
Alte solutii
Exemplu aplicatie
Concluzii
Motivarea pentru tema de licenta aleasa
Tema de licenta: Aplicatie client server si web pentru gestiunea salariilor intr-o institutie publica (liceu).
Aplicatiile client/server reprezinta la acest moment cea mai ingenioasa si simpla solutie legata de porblema centralizarii datelor. Odata cu aparitia si dezvoltarea societatii cunosterei numarul datelor supuse prelucrarii a crescut radical si pentru a pastra integritatea, corectitudinea si a rezolva porblema redundatei datelor acestea au inceput sa fie centralizate, astlef prevenindu-se numarul mare de modificare neadecvate a lor.
Prin lucrarea mea de licenta incerc sa pun in practica cunostintile acumulate la disciplinele studiate in anii de facultate si incerc sa vin cu o solutie la problema centralizarii datelor privitoare la salarizarea cadrelor didactice din institutiile preuniversitare.
Impreuna cu domn porfesor Marin Fotache ne-am gandit la o aplicatie, bazata pe arhitectura client/server, care sa stocheze datele privitoare la salarizarea din toate liceele unui oras intr-o singura baza de date centrala la sediu inspetcoratului scolar, in acest mod obtinandu-se o imagine de ansablu asupra acestui sistem si oferind posibilitatea de a monitoriza si actualiza informatiile referitoare la calculul salarial intr-un singur loc o singura data, eliminand greselile ce ar putea aparea pe parcurs.
Descrierea aplicatie
Aplicatia va permite stocarea tuturor datelor referitoare la salarizare intro singura baza de date. Astfel se va putea
Partea economic
Crearea unei aplicatii client/server pentru gestiunea salariilor presupune combinare si exploatarea in egala masura a doua domenii diferite, cel economic si informatic. Pentru a realiza o asemeana aplicatie se va pleca de la descrierea principalelor componente care i-au parte la realizarea unei astfel de aplicatii.
In primul rand se pune problema cunoasterii porcesului economic care sta la baza aplicatiei, ca ulterior cu ajutorul softurilor specializate, acest porces sa fie transpus intr-o program informatic.
Din punct de vedere economic, gestiunea salariilor presupune abordarea urmatoarelor concepte: salariu, salarizare, sistem de salarizare.
Salariu:
Salariul reprezinta, intr-o expresie foarte generala, pretul fortei de munca. Definitia legala a salariului o regasim insa in Codul muncii, astfel: 'salariul reprezinta contraprestatia muncii depuse de salariat in baza contractului individual de munca' (art. 154 alin. (1)). 'Contractul individual de munca este contractul in temeiul caruia o persoana fizica, denumita salariat, se obliga sa presteze munca pentru si sub autoritatea unui angajator, persoana fizica sau juridica, in schimbul unei remuneratii denumite salariu' (art. 10 din Codul muncii).
Dar veniturile din salarii, conform Codului fiscal, sunt realizate de catre o categorie mai larga de persoane care lucreaza in baza unor relatii de serviciu reglementate prin legi sau statute speciale (fara a fi necesar contract de munca). Astfel din punct de vedere fiscal (art.55 - Cod fiscal 'sunt considerate venituri din salarii toate veniturile in bani si/sau in natura obtinute de o persoana fizica ce desfasoara o activitate in baza unui contract individual de munca sau a unui statut special prevazut de lege, indiferent de perioada la care se refera, de denumirea veniturilor ori de forma sub care ele se acorda, inclusiv indemnizatiile pentru incapacitate temporara de munca.' Sunt asimilate salariilor, in vederea impunerii si o serie de alte venituri prevazute la art. 55, alin.(2, lit.a-k) din Codul fiscal.
In figura nr. 1 este prezentata structura salariului brut, contributiile obligatorii ale angajatului precum si contributiile obligatorii ale angajatorilor in raport cu fondul de salarii, pentru conditii normale de munca, in anul 2007:
in care:
SB - Salariul brut (lunar); FSB Fondul lunar brut de salarii;
Sb - Salariul de baza brut (lunar)
IS - Impozit pe (venitul din) salariu
SN - Salariul net ca diferenta intre salariul brut, pe de o parte, si contributiile sociale individuale (retinerile) la care se adauga impozitul pe salariu, pe de alta parte;
CSI - Contributii sociale individuale (retineri din salariu);
CSC - Contributii sociale colective (contributiile unitatii);
CAS contributia pentru asigurari sociale (de stat);
CASJ contributia de asigurari sociale impotriva riscului de somaj;
CASS contributia pentru asigurari sociale de sanatate;
CAMBP contributia de asigurare pentru accidente de munca si boli profesionale;
CCIS contributia pentru concediile si indemnizatiile de asigurari sociale de sanatate;
FGCS Fondul pentru garantarea creantelor salariale;
ITM1 (0,75%) si ITM2 (0,25%) comisioane contravaloare servicii datorate Inspectoratelor Teritoriale ale Muncii pentru gestiunea carnetelor de munca.
Baza de aplicare a cotelor procentuale o reprezinta, de regula, salariul brut (SB sau FSB).
Prin exceptie, cota procentuala individuala a asigurarilor pentru somaj se aplica la salariul de baza brut lunar la care se adauga alte sporuri cu caracter permanent, iar CAS-ul nu se retine pentru prestatiile sociale. Contributia la asigurarile sociale de sanatate nu se plateste pentru veniturilor care nu se impoziteaza s.a.
Salarizare:
Salarizarea este componenta centrala a sistemului de recompense. Salariile
acordate trebuie sa fie corelate cu productivitatea muncii, si anume
cresterile fondului de salarii trebuie sa se situieze, ca ritm, in
urma cresterii productivitatii.
Sistemul de salarizare:
Este un ansamblu de resurse umane si de capital, investite intr-o unitate economica, in vederea colectarii si prelucrarii datelor necesare producerii informatiilor, care vor fi folosite la nivelul decizional prentru gestiunea salariilor.
Spre deosebire de mediul privat in care actioneaza persoane juridice ale caror obiectiv principal este porfitul si unde angajatorul este mai mult sau mai putin "liber" sa acorde salarii in functie de sporuri stalilite de acea institutie si de unele prevederi legislative, in institutiile publice de invatamant (licee) lucruri stau diferit, deoarece scolile sunt subordonate ministerului de invatamant, beneficiind de resurse bugetare din partea statului, acesta din urma isi asuma dreptul de a controla aceste resurse prin norme special create pentru calculul salariilor din institutiile de invatamant.
Astfel cea mai importanta componenta a porcesului de salarizare intr-o institutie publica (liceu) este data de legea salarizarii pentru personalul din invtamant. Este cea mai important pentru are caracter obligatoriu care rezulta din statutull sau de lege.
In aceasta lege sunt descrise toate componetele necesare pentru remunerarea unui salariat in invatamant. Cea mai mare parte din lege explica cum sunt aplicate sporurile si la ce se aplica, precum si nota de plecare pentru calculul unui salariu care o reprezinta salariu de baza, el se diferentiaza in raport cu raspunderea si importanta sociala, a domeniului de activitate, precum si cu nivelul pregatirii profesionale a fiecarei persoane necesara functiei ocupate, nivelul la care se presteaza activitatea(centrala sau locala), prioritatie de dezvoltare sau de crestere a calitatii serviciilor in anumite domenii, necesitatile de atragere a personalului specializat spre anumite activitati sau alte elemente in functie de care se diferentiaza salariile de baza. In cazul salariatiolr din invatamant salariu de baza se stabileste in functie de criteriile specificate mai sus, care sunt cuprinsa intr-o grila de salarizare, care inclute si valori evective ale salariilor.
Sporurile salariale sunt sume de bani platite salariatilor peste salariul de baza (tarifar) pentru conditii deosebite de munca (toxicitate, vechime in munca etc.).Sistemul de sporuri la salariul de baza este format din: sporuri pentru conditii deosebite de munca, cum sunt: sporuri pentru conditii grele, periculoase, nocive sau penibile de munca, sporuri pentru orele lucrate suplimentar peste programul normal de lucru si lucrul in zilele libere si sarbatori legale, spor pentru vechime in munca, spor pentru lucrul in timpul noptii, spor de santier, spor pentru exercitarea unei functii suplimentare, alte sporuri in functie de conditiile concrete de munca (spor de izolare, spor pentru folosirea unei limbi straine - daca aceasta nu este cuprinsa in obligatiile postului, etc.).Prin contractul colectiv de munca se poate preciza si acordarea 'sporului de fidelitate fata de intreprindere', in functie de vechimea in aceeasi unitate si rezultatele obtinute in munca, pe langa aceste sporuri in invatant mai exista si o alte categori, care sunt sunt caracteristice doar acestui acestei ramuri de activitati.
Sporuri specifice personalului didactic:
. 15%-indemnizatie pentru personalul didactic din invatamantul special;
20%-gradatie de merit-spor ce se acorda prin concurs personalului didactic cu performante deosebite in inovarea didactica, in pregatirea elevilor pentru concursuri scolare, faza nationala si internationala, pentru pregatirea elevilor proveniti din grupuri dezavantajate si care au o vechime in invatamant mai mare de 5 ani. Concursul pentru acordarea gradatiei de merit se desfasoara dupa o Metodologie elaborata de Ministerul Educatiei si Cercetarii iar numarul de locuri reprezinta 16% din numarul total al cadrelor didactice. Gradatia de merit se acorda pentru o perioada de 4 ani. Proiectul legii, la articolul 75, indica procentul din salariul de baza pentru gradatia de merit 25%.
. 15%-salariul de merit-spor care se stabileste pentru un procent din numarul cadrelor didactice (15%) in Consiliul Profesoral si in Consiliul de Administratie al Scolii pe baza unui punctaj ;
. 15%-spor de stabilitate pentru personalul didactic cu vechime neintrerupta in invatamant de peste 10 ani ;
. 3% -spor pentru suprasolicitare neuropsihica -pentru fiecare transa de vechime recunoscuta in invatamant, structurata conform grilei de salarizare;
. 10%-indemnizatia de diriginte-pentru diriginte consilier, invatator, institutor, educatoare si functia de profesor metodist coordinator de cerc pedagogic;
. indemnizatii de conducere sau indemnizatii de monitorizare si evaluare:
-20-30%-profesor metodist;
-50%-director;
-40%-director educativ si director adjunct;
-40%-director al unitatilor de invatamant pentru activitati extrascolare;
-5-10%-sefi de catedra; 8. 25%-spor pentru titlul stiintific de doctor;
Odata parcursa si inteleasa legea de salarizare ne putem crea o imagine de ansablu despre sistemul de salarizare si despre cum functioaneaza acest sistem, de exemplu cum sunt aplicate sporurile, cum se copmune salariu in fungie de gradul si vechimea in munca, precum si alte componente care completeazaa salariu unui angajat in invatamant. Toate aceste componente ale legii vor fi transformate ulterior in formule de calcul care vor fi implementate si poriectate in logica aplicatiei.
Aplicatiile si arhitectura client server
Ideia subiacenta modelului client/server este serviciu. O aplicatie distribuita, dezvoltata conform acestui model, este descompusa in doua grupuri de porcese: consumatorii de servicii, numiti clienti, si furnizorii de servicii, numimti server. Modelul client/server poate fi definit ca un model de dezvoltare a aplicatiilor distribuite, in care acestea sunt descompuse intru-un numar de functii server, executate pe una sau mai multe platforme hardware, care furnizeaza servicii comune unui numar de functii client, rulate pe platforme hardware diferite.
Componetele client si server comunica intre ele prin schimbul de mesaje de tip cerere-raspuns. Clientul solicita serverului un serviciu, prin transmiterea unui mesaj de tip cerere. La randul sau , serverul va transmite clientului rezultatul solicitarii sale printr-un mesaj de tip raspuns.
Figura 2 Modelul general al interactiunii dintre client si server
Utilizatorul comunica cu porgramul client, iar schimbul de mesaje realizat intre porgrame client si server ii sunt transparente. El percepe aplicatia ca un asnsamblu de executat doar pe calculatorul sau. De exemplu un server poate fi conceput pentru a oferi clientilor sai servicii specifice bazelor de date. Serverul este functional independent de client, iar relatia intre client si server este de colaborare, care este de tip "stapan - sclav" (master-slave).
Proiectarea aplicatiilor client/server presupune conceperea unor straturi bine definite, realizate independent, singura grija constand in definirea neta si poriectarea atenta a interfetelor, urmarindu-se ca:
Fiecare strat sa aiba un domeniu bine definit, din punct de vedere al sarcinilor atribuite.
Un tip de sarcina va fi repartizat unui singur strat. Daca unul dintre straturi este responsabil de interactiunea cu utilizatorul, atunci numai acel strat va asigura comunicarea cu acesta.
Stabilirea unor portocoale bine definite pentru interactiunea dintre straturi, care sa se realizeze numai prin intermediuil acestor protocoale.
O prima incercare de structurare a aplicatiilor client/server a constituit-o impartirea pe doua straturi, realizandu-se arhitectura cu doua straturi:
Stratul corespunzator aplictiei, in care se includ logica prezentarii, adica interfata grafica cu utilizatorul si logica aplicatiei. Tot acest strat poate coordona si logica tranzactiei, care garanteaza corectitudinea si completitudinea actualizarii bazei de date.
Pentru elaborarea acestei lucrari am optat pentru o versiune de evaluare a softului Microsoft Visual Studio, care permite dezvoltarea si crearea aplicatiilor de sine statatoare, a interfetelor pentru utilizatori precum si aplicatii care se pot conecta la un SGDB, in vederea extragerii, prelucrarii si modificarii datelor.
Stratul corespunzator bazei de date, este responsabil de mentinerea integritatii bazei de date. In acest strat poate fi implementata intreaga logica a tranzactiei sau o parte a ei.
Distinctia dintre cele doua straturi nu este intotdeauna clara, deoarece logica aplicatie este adesea imlpementata si pe serverul de date sub forma procedurilor stocate.
Pentru crearea si administrarea acestei aplicatii am folosit PostgreSQL. Sistemul de administrare a bazelor de date PostgreSQL este gratuity, ofera o functionalitate comparabila cu oricare server de baze de date comercial. O prezentare a caracteristicilor mai putin uzuale, printre care se numara mostenirea si posibilitatea de a defini reguli, operatori, functii de agregare si triggers.
Aspectele economice ale sistemelor client/server
Pe masura ce companiile cautau un avantaj competitiv in recesiunea economica de la inceputul anilor '90, bunul cel mai de pret folosit ca parghie s-a dovedit a fi informatia. Mai precis, furnizarea oportuna a informatiei, in formatul potrivit, catre decidentul potrivit, la locul si timpul potrivit poate fi factorul de diferentiere intre succes si esec, in viata economica a zilelor noastre. De o mare importanta s-a dovedit a fi inca un criteriu: informatia trebuie furnizata la costul potrivit. Mainframe-urile cu reteaua ierarhica si bugetul de intretinere/dezvoltare asociate au fost considerate, poate pe nedrept, ca punctul cu cel mai mare buget din cadrul departamentelor sistemelor informatice.
Este important de inteles ca "reducerea dimensiunii sistemelor informatice" si "ajustarea optima a dimensiunii aplicatiilor" nu se refera numai la economisirea de bani. Aparitia unei noi arhitecturi distribuite pentru procesare si livrare a sistemelor informatice a fost posibila prin combinarea urmatoarelor evenimente:
introducerea de statii de lucru personale puternice, la preturi rezonabile;
aparitia unor sisteme de operare server multitasking, accesibile si puternice;
cereri in continua schimbare a sistemelor informatice, rezultate din climatul economic din zilele noastre.
Sistemele client/server necesita ca o gama larga de tehnologii hard si soft, provenite de la o multitudine de furnizori, sa fie imbinate armonios, prin intermediul retelei, pentru a asigura utilizatorului, in final, in mod transparent, interoperabilitate. Aceasta armonie implica legarea cu succes, prin protocoale mutual compatibile, a tuturor interfetelor soft/soft ,soft/hard si hard/hard.
Cap 2
Analiza iesirilor
Proiectarea iesirilor constituie poate cea mai importanta activitate in dezvoltarea sistemelor informationale precum si a aplicatiilor, deoarece obtinerea lor reprezinta scopul general al oricarui sistem. Utilizatorul va aprecia noul sistem mai ales prin prisma iesirilor. Obliectivul principal al poriectarii iesirilor este de a prezenta informatia solicitata intr-o forma inteligibila, unde trebuie, cand trebuie si cui trebuie.
De asemenea cunoasterea destinatarilor serveste la o buna proiectare a iesirilor dintr-un sistem/aplicatie. Identificare si descrierea destinatarilor precum si a sarcinilor de lucrual ale acestora, vor permite o mai buna intelegere a scopului in care va fi utilizata fiecare iesire.
In aceasta lucrare, aplicatia are drept scop generarea unei singure iesiri, statul de salarii, care se poate obtine sub forma unui formular sau raport si are ca destinatari clientii aplicatiei, personale responsabile de salarizare de la liceile conectate la server, insa logica bazei de date va permite diverse interogari care ar putea genera rapoarte utile si in alte domenii decat salarizarea. Persoanele interesate de acest domeniu de aplicatii vor avea un punct de plecare, baza de date la care se pot adauga formulare si rapoarte cu diverse functii de extragerea, modificare, adaugare sau monitorizare si evidenta a datelor si a diferitor indicatori economici si statistici.
Din punct de vedere al frecventei iesirilor statul de salarii este un raport porgramat sau (la termen). Astfel de rapoarte sunt elaborate la anumite intervale regulate, au un continut predefinit si forma lor este dinainte stabilita. Aici se incadreaza rapoartele ralizate zilnic, saptamanal sau lunar cum este cazul raportului nostru.
O alta caracteristica a iesirilor este formatul lor, care defineste modalitatea de organizare si prezentare a informatiilor, astfel incat ele sa fie atragatoare si usor de utilizat. La aceasta categorie vom opta pentru forma tabelara, care este cea mai frecvent intalnita, ea presupune organizarea informatiilor in linii si coloane, de cele mai multe ori aceasta forma inlestenste pe cea grafica.
Un exeplu de astefel de raport este prezentat in figura 2
Figura Exeplu date de iesire
Analiza Intrarilor
Activitatea de analiza a datelor de intrare urmareste toate aspectele legate de documentele sau datelel care sunt supuse prelucrarii in sistemul/aplicatie existenta. In mod normal abordarea datelor se realizeaza separat in urmatoarele doua situatii:
pentru documentele intrate in sistem pe suport de hartie, cand se recurge la culegerea datelor continute de acestea.
pentru informatiile porvenite din alte sisteme/aplicatii, care presupun retratarea sub aspectul compatibilitatii cu formatul datelor existente in aplicatia analizata.
Nivelul acesului
Controlul accesului de catre un subiect (o entitate activa, cum ar fi o persoana sau proces) asupra unui obiect (fisier, aplicatie) presupune stabilirea unor reguri de acces.
Aplicatia de salariyare va permite delegarea de acces special pentru anute categorii de useri care vor putea realiya operatiune de sterge sau modificare, cu alte cuvinte nu toti clientii vor avea acces deplin la resursele aplicatie, anumite operatiune precum modificarea porcentelor la sporuri sau adaugarea unui liceu nou se vor realiya doar de persoane cu acces special, delegarea accesului se va face pe baya de parole.
Parolele sunt utilizate pentru a se permite accesul la un calculator sau la o aplicatie. Dupa introducerea parolei in zona de log in, parola tastata este comparata cu cea din baza de date, daca sunt identice se poate deschide sesiunea de lucru cu aplicatia si se pot realiza operatiuni de vizualizare, adaugare, modificare, stergere, salvare.
Logica bazei de date
Pentru a concepe baza de date este nevoie de a intelege cum functioneaza sistemul de salarizare, adica din ce este format acesta si in special care sunt procesele la care sunt supuse datele si cum se modifica datele in uram acestor porcese, precum si cum interactioneaza datele intre ele.
Este important de specificat ca nu exista o sigura modalitate corecta de creea baza de date, aceasta poate fi abordata dim mai multe perspective, important este sa raspunda la toate necesitatile sistemului. Un alt argument pentru a adorda o atentie deosebita logicii bazei de date este faptul ca nu este suficiet ca baza de date sa fie functional, mai trebuie si ca aceasta sa fie oarecum optima, pentru ca odata cu cresterea numarului de inregistrari timpul necesar exragerii datetelor se maresti, astfel la un numar mai mare ce cereri creste posibilitatea ca serverul sa nu mai faca fata.
Prin urmare la inceput trebuiesc identificate toate datele care sunt folosite la compunerea salariului a unui angajat in sitemul de invataman preuniversita. Dupa care trebuiec identificare relatiile intre aceste date. Aceste realtii trebuies tratate prin prisma normalizarii, care lucreaza strict cu tehnologia relationala. Se spune ca pentru a putea implementa o baza de date este nevoie ca aceasta sa fie cel putin in forma a treia de normalizare. Acest lucru presupune doua conditii a) toate atributele ne-cheie din R sunt independente unele de altele, in sensul ca nici unul dintre atribute neparticipante in chiea primara nu apare in vreo dependenta functional in care sursa este constituita dintr-o conbinatie de celelalte attribute ne-cheie; b) toate atributele ne-cheie din R sunt dependente ireductibil de cheia primara.
Pana la acest moment am ralizat o analiza a aplicatiei din mai multe puncte de vedere, incepand cu alaliza factorilor economici in functie de care se stabileste salariul unui angajat pana la modelarea grafica a bazei de date care va retine toate datele necesare calculului salarial, si nu numai. Din acest moment creare aplicatie de salarizare va avea un demers mai mult practic, cu unele comenatarii si sugestii pe parcurs.
Urmatorul pas in realizarea aplicatiei il reprezinta transpunerea schemei bazei de date in sintaxa SQL, care permite creare tabelelor si al legaturilor dintre acestea prin comezi relativ simple, deoarece limbajul sql este unul de nivel patru, fiind cel mai apropiat de limbaj de porgramare de cel uman.
Comanda sql pentru crearea unui tabel simplu este:
CREATE TABLE numetabela
camp1 tip_date1,
camp2 tip_date2,
campN tip_dateN
In care camp1campN reprezinta atributele care se regasesc in tabela si tip_data sunt tipurile de date care definesc aceste atribute. Pentru aplicatie se vor folosi patru tipuri de date: a) numeric (nu necesita explicatii) b) varchar - sir de caractere cu lunghime variabila, c) text - sir de caractere cu lungime variabila, nelimitata, d) date - retine daca calindaristica.
CREATE TABLE liceu (
id_liceu NUMERIC (5) NOT NULL PRIMARY KEY,
CONSTRAINT ck_id_liceu CHECK (id_liceu > 0),
Adresa VARCHAR(50),
Denumire VARCHAR (50),
Profil VARCHAR (40)
Asa arata tabela parinte "liceu" din schema baze de date. Prin atribuirea proprietatii de cheie primara elementului id_liceu acesta nu poate lua valori nule, in sql aceasta restrictie se seteaza prin comanda NOT NULL. In acest mod se pot defini o multine de restrictii daca e cazul, in functie de necesitatile aplicatiei sau din preferintele porgramatorului, care se poate lipsi de niste restrictii la nivelul bazei de daca pentru a le implementa in aplicatia care va folosi aceasta baza de date.
Exemplu tabela copil:
CREATE TABLE useri (
username VARCHAR (20),
parola VARCHAR (20),
id_liceu NUMERIC (5)
CONSTRAINT fk_useri_liceu REFERENCES liceu(id_liceu)
ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT pk_useri_liceu PRIMARY KEY (id_liceu)
In aceasta tabela se specifica ca atributul id_liceu se "refera" la id_liceu din tabela parinte de la mai sus. Inserarea unei linii intr-o tabela parinte, ca si stergerea de linii dintr-o tabela copil nu reprezinta nici un pericol "referential", la stergerea unei linii dintr-o tabela parinte trebuie precizat cum se prezenta restrictia referentiala: fie prin stergerea in cascada a tuturor inregistrarilor copil (ON DELETE CASCADE), (cum ar fi cazul si in exeplu de mai sus, deoarece odata sters din baza de date un liceu nu va mai fi nevoie nici de contul alcelui liceu) fie , pur si simplu prin interzicerea stergerii (ON DELETE RESTRICT). In aceeas maniera se porcedeaza si la modificarea unei chei primare/alternative pentru care exista in alta tabela, inregistrari-copil, fiind necesara precizarea actiunii intreprinsa de SGBD: modificarea in cascada a tuturor liniilor copil (ON UPDATE CASCADE) sau se interzicerea modificarii daca exista cel putin o inregitrare copil (ON UPDATE RESTRICT).
Creare interfetelot pentru utilizatori
Pentru a incepe crearea formularelor in mediul de lucru Visula Baisic, se va deschide un proiect nou, care il vom numi "Alpicatie Salarizare" si se va selecta windows aplication care va avea in mod implicti un formular gol, se va seta denumirea formularului, intr-un mod sugestiv.
Primul formular descris amanuntit in acest demers teoretic va servi la autentificarea utilizatorilor. Pentru a incepe sesiunea de editare se va aplica clic dreapta view code
LOGARE
Public Class Logare
Primul lucru care trebuie facut este crearea unei functii care va fi responsabila de conectarea la baza de date si care o vom folosi de fiecare data cand vom avea nevoie de a deschide o sesiune de lucru cu postgres-ul. Pentru a putea fi folosita de toate porcedurile si functie din acest formular o vom declara la inceput. O alta medota ar fi declarearea functiei intr-un modul de unde va putea fi apelata pe tot parcursul aplicatie.
Public postgres As String = 'DRIVER=;DATABASE=postgres; SERVER=localhost; UID=postgres; PWD=licenta;'
Function conexiune() As Odbc.OdbcConnection
conexiune = New Odbc.OdbcConnection(postgres)
Return conexiune
End Function
Declaram setul de date(DataSet) de care vom avea nevoie, ele servesc la afisarea datelor extrase de adaptoare in structurile vizulare
Dim dslog As New DataSet
Dim dslic As New DataSet
Porcedura urmatoare se ocupa de "incarcarea" formularului, ea este responsabila de starea de "start" a formularului si a datelor care apar in, el chiar la inceput, inainte de a declasa un alt eveniment
Private Sub Logare(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
In continuare este descrisa porcedura care este apelata la clicul butonului de Logare, cele mai importante obiecte care raspund la acest evenimet sunt: adaptorule denumit OdbcDataAdapter1 si OdbcDataAdapter2 care are rol de intermediari intelicenti inteligent intre setulurile de date locale si baza de date , precum si obiectele de tip TextBox cum este Me.usertxt in care se va introduce nume de cont.
Private Sub Logare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
conexiune.Open()
Dim OdbcDataAdapter1 As New Odbc.OdbcDataAdapter
Dim user As String
user = Me.usertxt.Text
Dim parola As String
parola = Me.parola.Text
OdbcDataAdapter1.SelectCommand = New System.Data.Odbc.OdbcCommand('Select * from useri where parola = '' & parola & '' and username = '' & user & )
OdbcDataAdapter1.SelectCommand.Connection = conexiune()
OdbcDataAdapter1.Fill(dslog) serveste la popularea setului de date dslog de catre adaptorul OdbcDataAdapter1 prin instructiunea Fill, dupa care datele sunt transmise si afisate prin obiectele de tip TextBox.
dslog.Clear()
OdbcDataAdapter1.Fill(dslog)
Me.idlictxt.DataBindings.Clear()
Me.idlictxt.DataBindings.Add('TEXT', dslog.Tables(0), 'id_liceu')
Dim OdbcDataAdapter2 As New Odbc.OdbcDataAdapter
OdbcDataAdapter2.SelectCommand = New System.Data.Odbc.OdbcCommand('Select * from liceu where id_liceu = '' & Me.idlictxt.Text & )
OdbcDataAdapter2.SelectCommand.Connection = conexiune()
OdbcDataAdapter2.Fill(dslic)
Me.numelictxt.DataBindings.Clear()
Me.numelictxt.DataBindings.Add('TEXT', dslic.Tables(0), 'Denumire')
Se verifica daca sa reusit extragerea datelor si afisarea lor in obiectele de tip TextBox, in caz ca nu sa reusit aceste se golesc pentru a mai permite incercari de completare a lor.
If Me.numelictxt.Text = Then
Me.usertxt.Text =
Me.parola.Text =
End If
Catch ex As Exception
dslog.Clear()
MsgBox('Nume de cont sau parola gresita')
End Try
End Sub
La apasarea butonui Continuare se va testa daca au fost extrase datele necesare, si se va deschide urmatorul formular, autentificare realizandus-es cu succes.
Private Sub Continuare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Val(Me.idlictxt.Text) > 0 Then
Me.SetVisibleCore(False)
MeniuLiceu.Show()
End If
End Sub
Butonul de Revocare va inchide formularul curent
Private Sub Revocare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Close()
End Sub
End Class
Figura nr x- Formular "Autentificare" primul pas
Figura 3 Formular "Autentificare" pasul al doilea
Pasul 1- Se introduce numele de cont si parola, ca in figura nr x, dupa care se apasa butonul Logare, in acest moment se va executa secventa de cod din "spatele" butonului, care a fost comentata mai sus.
Pasul 2- Dupa executia secventei de cod echivalenta butonului Logare se va optine situatia din figura nr y, in care se specifica carei institutie ii corespunde nume de cont si numarul de ordine al institutiei. La apasarea butonului Continuare va fi deschis formularul denumit MeniuLiceu.
Figura nr y- Formular "Autentificare" pasul doi
In ameble situatii la apasaea butonului Revocare formularul se va inchide
In cazul in care se va introduce un nume de cont inexistent sau o parola gresita aplicatai fa furniza un mesaj de avertizare prezentat in figura z
Figura nr z
CALCUL SALARII PERSONAL
Date personale:
Pentru a resusi implementarea acestei aplicatii in mai multe licee este nevoie de o limitare a acesului utilizatorilor doar la datele unui liceu pentru care a fost creat un cont, in acest fel cu un cont creat un utilizator va putea manipula datele aferentei unei singure institutii. Acest lucru presupune declarara unei varialibe globale care va putea fi "vazuta" in orece loc al aplicatiei, astfel incat sa permita mentinerea "legaturii" dintre contul utilizat si datele care pot fi accesate folosind acel cont.
Am realizat aceasta legatura prin atributul id_liceu, care corespunde unui nume de cont si unei parole asa cum se vede din schema bazei de date.
Module Functii
Public idlictxt As TextBox
In acest fel voi putea extragre datele in functie de contul liceului care este logat.
Private Sub CalculSalariiPersonal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim idlic As Integer
Atribui unei variabile valoare extrasa la logare.
idlic = Val(Logare.idlictxt.Text)
conexiune.Open
Volosesc aceasta variabila in fraza SQL a adaptorului pentru a obtine datele necesare.
Dim adapterpers As New Odbc.OdbcDataAdapter
adapterpers.SelectCommand = New System.Data.Odbc.OdbcCommand('select distinct nume, prenume from liceu l inner join stat_salariu ss on ss.id_liceu = l.id_liceu inner join personal p on p.id_personal = ss.id_personal where l.id_liceu = '' & idlic & )
adapterpers.SelectCommand.Connection = conexiune()
dslic.Clear()
adapterpers.Fill(dslic)
Me.numetxt.DataBindings.Clear()
Me.numetxt.DataBindings.Add('TEXT', dslic.Tables(0), 'nume')
Me.prenumetxt.DataBindings.Clear()
Me.prenumetxt.DataBindings.Add('TEXT', dslic.Tables(0), 'prenume')
Me.cbolistanume.DataSource = dslic.Tables(0)
Me.cbolistanume.DisplayMember = 'nume'
End Sub
In urma executiei acestei secvente de cod sunt extrase in formular numele si prenumele pesonalului dintr-un singur liceu. M-am limitat doar la nume si prenume, insa se mai pot extrage si alte date precum: CNP, Adresa, Sex sau se poate verifica daca angajatul este profesor
(CREATE TABLE personal ( []Profesor boolean,[] );
Me.numetxt Me.cbolistanume (Obiect de tip comboBox) In aceasta zona se
introduc luna si anul. Exemplu(luna: 08 anul:2008)
Pentru a naviga spre o anumita persoana se foloseste obiectul de tip ComboBox care permite afisarea, intr-o lista, a tuturor persoanelor dintr-un liceu. Lista este completata prin setul de date dslic odata cu "incarcarea" formularului. Odata cu selectarea altei persoane din lista adica la modificarea de stare a acesteea se vor "goli" toate campurile care sunt folosite la extragerea datelor unei persoane, pentru ca datele sunt extrase in functie de nume si prenume.
Private Sub cbolistanume_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbolistanume.SelectedIndexChanged
Me.imptxt.Text = |
TextBox impozit |
Me.cboimp.Text = |
ComboBox impozit |
Me.totalimptxt.Text = |
TextBox total impozit |
Me.vechimetxt.Text = '' |
TextBox vechime invatamant |
Me.gradtxt.Text = '' |
TextBox grad didactic |
Me.studiitxt.Text = '' |
TextBox nivel studii |
Me.salbazatxt.Text = '' |
TextBox valoare salariu de baza |
Me.vspor.Text = '' |
TextBox valoare spor |
Me.cbospor.Text = |
ComboBox lista sporuri |
Me.tspor.Text = |
TextBox total sporuri |
Tabelul 2 obiectele de TextBox si ComboBox folosite in formularul "Calcul salarii personal"
End Sub
Salariu de baza:
Buton "Continuare"
La calculul salariului de baza am tratat una din
doua situatii posibile, logica bazei de date permite adordarea ambelor solutii,
pentru acest demers teoretic am ales varianta cea mai des intalnita in
preactica, calcularea salariului de baza in functie de grilele de salarizare si
a numarului de zi lucrate lunar.
Butoane Radio
Toate obiectele din acest formular, de tip TextBox, sunt descrise in Tabelul 2.Chiar daca sunt extrase alte date, principiul de lucru nu sa schimbat, din acest motiv se vor mentine doar secventele de cod care sunt ami importante, precum fraza SQL si cazul structurii alterative IF ELSE.
Private Sub Continuare_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
In cazul in care este bifat butonul radio Nu exista exceptii se intra pe aceasta prima ramura a structurii alterative unde sunt extrase datele si sunt afisate asa cum sunt stocate in baza de date adica in conformitate cu grilele de salariza din invatamant.
If Me.RadioButton1.Checked = True Then
conexiune.Open()
Dim adaptersalbaza As New Odbc.OdbcDataAdapter
adaptersalbaza.SelectCommand = New System.Data.Odbc.OdbcCommand('select distinct v_grila, nr_zile, Grad_didactic, Vechime, Nivel_studii from v_sal_baza v inner join sal_baza sb on sb.id_sal_baza = v.id_sal_baza inner join stat_salariu ss on ss.id_sal_baza = v.id_sal_baza inner join personal p on p.id_personal = ss.id_personal where p.nume = '' & nume & '' and p.prenume = '' & prenume & '' and ss.luna = '' & luna & '' and ss.an ='' & an & )
adaptersalbaza.SelectCommand.Connection = conexiune()
(Setul de date este "incarcat" si datele sunt afisate in obiecte de timp TexBox)
Else
Exista insa si situatii cand norma de zile lucratoare dintr-o luna nu se respecta, aceste sunt cazuri de exceptie, chiar si asa, aceste exceptii sun foarte des intalnite, pentru a rezolva aceasta porblema se va bifa butonul radio Exista exceptii, odata bifat acest buton va face vizibile un set de obiecte, care vor ajuta la tratarea exceptiei
If Me.RadioButton2.Checked = True Then
(Setul de date este "incarcat" si datele sunt afisate in obiecte de timp TexBox)
Me.nrluc.Visible = True
Me.Numarzile.Visible = True
Me.salnou.Visible = True
Me.ok.Visible = True
Me.zileluc.Visible = True
Me.zileluctxt.Visible = True
Me.Panel5.Visible = True
End If
End If
If Me.RadioButton2.Checked = False And Me.RadioButton1.Checked = False Then
Tratarea situatiei cand nu e bifat nici unul dintre butoale radio:
MsgBox('Selectati situatia care se potriveste')
End If
End Sub
Drep raspuns la cea de a doua situatie cand exista exceptii codul va genera urmatorul formular:
Me.Numarzile tMe.nrluc Me.nrluc
Me.salnou Me.salnou Me.salnou Me.nrluc Me.nrluc
|
Private Sub ok_Click_1(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles ok.Click Dim a As Integer a = Val(Me.salbazatxt.Text) / Val(Me.zileluctxt.Text) Me.salnou.Text = a * Val(Me.Numarzile.Text) End Sub
Impozite:
Chiar daca se extrag date diferite in acest formular, modalitatea lor de extragere este aceeas, la fel se intampla si la afisarea lor cu ajutorul obiectelor de tip TexBox sau ComboBox sau la actionarea butoanelor, se executa secvente de cod diferite, dar asemanatoare ca modalitate de concepere. (precizez ca graficul din antetul formularului este o imagine, coloanele nu se modifica odata cu modificaea datelor extrase)
Stat salariii:
In acest formular se extrag si se calculeaza datele referitoare la salariile angajatilor, oferind si posibilitatea de a modifica unele dintre ele. Initial se la "incarcarea formularului in obiectul de tip grid" sunt extrase datele la tot personalul angaja, in conditiile in care se doreste vizualizarea a mai multor informatii decat cele extrase initial sau mai ales daca este necesara modificarea unor date, utilizatorul are la dispozitie o zona de cautare care ii permite accesul rapid la informatiile dorite, in plus are posibilitara de a rezolva direct din acest formular situatii des intalnite in practica precum: a) recalcularea salariului de baza in cazul in care nu a fost indeplinita norma de lucru si adaugarea unor retineri la totalul salariului. Acest lucru se face prin bifarea obiectelor de tip CheckBox care corespund celor doua situatii descrise anterior. Odata comise aceste modificari se pot salva prin apasarea butonuli salvare sau se poate renunta la ele prin apasarea butonului revocare.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2312
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved