Transcript
  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    1/51

    Studiu de caz privin dezvoltarea si implementarea unui sistem

    administrativ pentru un camin de studenti

    DEZVOLTAREA SI IMPLEMENTAREA UNUI SISTEM ADMINISTRATIV

    PENTRU UN CAMIN DE STUDENTI

    Introducere

    In 1997 , Facultatea de Stiinte Ingineresti din cadrul Universitatii Duisburg-Essen a

    inceput internationalizarea programelor sale de studiu. Incepand cu anul 2001 facultatea a

    rulat programul International Studies in Engineering (ISE) adresat atat studentilor la

    programele de Bachelor cat si celor de la programele de Master.

    Datorita cresterii problemelor legate de cazare, facultatea a preluat conducerea unui

    camin propriu pentru studenti International Student House(ISH).La inceput caminul putea

    oferi locuri de cazare pentru numai 20 de studenti care locuiau in 2 apartmanete complet

    renovate.O data cu cresterea cererilor de cazare , datorata intelegerilor cu universitati din

    afara granitelor germane , caminul s-a dezvoltat ajungand la un total de 250 de locuri de

    cazare organizate in 36 de apartamente din 9 cladiri.

    Imaginea de ansamblu a caminului Bruckhausen

    Spatiul disponibil pentru acest camin a fost gasit in cartierul Bruckhausen din partea

    de nord a orasului Duisburg. Din acel moment proiectul Bruckhausen a inceput sa fie

    dezvoltat. Activitatile pe care acest proiect le implica nu se limiteaza doar la a oferi un loc de

    cazare pentru studentii straini. O atentie deosebita este data integrarii studentilor in mediul

    international al caminului cat si modului german de viata. Activitati speciale cu si pentru

    studenti sunt organizate in mod regulat. Dezvoltarea rapida a caminului a creat lacune in

    Pagina 1 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    2/51

    domeniul administrativ. Personalul care initial se ocupa de camin a devenit din ce in ce mai

    ocupat , cantitatea de munca depusa crescand in mod vizibil. Sarcinile ce trebuiau indeplinite

    aveau un grad mare de repetabilitate , multe din procedurile administrative putand fi

    implementate prin programe de calculator care sa reduca munca umana sau sa o inlocuiasca

    in totalitate. Aceasta a dus la idea de a dezvolta o unealta software pentru a administra

    caminul de studenti. Initial cateva aplicatii stand alone au fost dezvoltate:

    Conexiunea la internet a fost efectuata printr-un router dedicate.Accesul la internet era

    pus la dispozitie pe baza unei inregistrari si folosind adresa fizica a calculatorului pentru

    identificare.Inregistrarea , schimbarile de locatii si modificarileerau facute manual;

    O baze de date pentru administrarea camerelor a fost dezvoltata

    Un program financiar a fost cumparat pentru a efectua tranzactii bancare

    Au fost incercari de dezvoltare a unor programe pentru cresterea securitatii retelei in

    special datorita aparitiei furtului de traffic.

    Aceste aplicatii au fost dezvoltate separat datorita distributiei muncii cat si a

    distributiei locurilor de munca unde aceste probleme erau tratate. Eficienta acestor unelte a

    fost limitata datorita lipsei de comunicare dintre componentele software , lasand multe

    probleme sa fie rezolvate manual.Pentru acest motiv a fost necesara o unealta software care

    sa uneasca toate aceste functionalitati necesare caminului.

    Motivatie si obiective

    Acest proiect este menit sa imbine toate functionalitatile necesare pentru

    managementul unui camin international de studenti.Aceste functionalitati asigura facilitati

    pentru administratorii caminului in ceea ce priveste cazarea unui student sau a unui grup de

    studenti, efectuare de operatiuni financiare sau asigurarea securitatii retelei. Modularizarea

    acestui proiect asigura o buna comunicare intre diferitele componente si asigura posibilitatea

    reutilizarii codului.

    Securitatea tranzactiilor este un aspect foarte important, daca consideram faptul ca

    sistemul ar trebui sa rezolve probleme financiare si chiar tranzactii bancare. Pentru ca

    sistemul este unul disponibil pe internet , el va fi practic disponibil pentru toata lumea si

    astfel aspecte de securitate trebuiesc avute in vedere. Pentru acest lucru tranzactii securizate

    http trebuie folosite (HTTPS). Limbajul Java ofera resurse pentru generare de pagini

    Pagina 2 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    3/51

    web(java servlets) . Baza de date trebuie sa ofere mai multe conexiuni in acelasi timp.Pentru

    aceasta sistemul MySQL a fost ales. De asemenea a fost ales web serverul Apache Tomcat

    pentru functiile necesare pentru internet(https,interpretare de servleti).

    Descrierea proiectului

    In cadrul acestui proiect un modul de management al camerelor trebuie

    dezvoltat.Acest modul va da posibilitatea unui user cu drepturi de administrator sa efectueze

    rezervari de camere, management de camere si administrare financiara.Un aspect al

    caminului de studenti este cel international , experienta anterioara scotand in evidenta

    importanta tiparelor sociale printre studentii caminului. Pentru aceasta sistemul de rezervari

    trebuie imbunatatit cu functionalitati de inteligenta artificiala care sa aiba aceste tipare drept

    criteriu.

    Trebuie avute in vedere urmatoarele facilitati:

    crearea unui sistem administrativ pentru efectuarea de proceduri financiare si

    adminstrative;

    includerea in sistem a unor functionalitati de inteligenta artificiala pentru efectuarea

    unor rezervari optime

    implementarea unor criterii sociale pentru a imbunatatii performanta sistemului

    In efectuarea acestei teze urmatoarele sarcini trebuiesc indeplinite:

    Analiza tiparelor sociale ale studentilor din camin si folosirea acestora drept criteriu

    Proiectarea si implementarea unui system de rezervari si a unei componente

    financiare.

    Sistemul va fi implementat ca un serviciu web in limbajul Java folosind un sistem de

    baza de date MySQL.

    Sumar

    In cel de-al doilea capitol va fi prezentata o vedere generala asupra intregului proiect,

    structura si modulele principale impreuna cu functionalitatile pentru fiecare in parte.

    Pagina 3 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    4/51

    Cel de-al treilea capitol va fi o incursiune in fundamentele teoretice necesare

    dezvoltarii modulului ,o prezenatare a algoritmilor genetici cat si principalele caracteristici

    ale protocolului http securizat.

    In capitolul patru se va prezenta designul componentelor software urmand ca in al

    cincilea capitol sa fie expus modul in care structura proiectata va fi implementata.

    In capitolul sase vor fi prezentate concluziile acestei lucrari si vor fi indicate directiile

    in care aceasta poate fi extinsa.

    Prezentare generala

    Nu au fost dezvoltate unelte software pentru administrarea caminului de studenti cat si

    pentru schimbul de date intre biroul de admisii ISE (International Studies in Engineering) si

    stafful caminului.O cautare anterioara a unor aplicatii software disponibile a fost efectuata.

    Nu a fost gasita , din pacate, nici o astfel de unealta care sa asigure toate operatiile complexe

    necesare administrarii caminului de studenti. Aceasta aplicatie trebuie sa ofere facilitate

    pentru operatii cum ar fi: managementul camerelor , managementul financiar in cadrul

    caminului , reportarea problemelor , administrarea retelei etc. Datorita distributiei spatiale a

    birourilor administrative o aplicatie de sine statatoare nu poate rezolva aceste cerinte. Astfel o

    aplicatie disponibila pe internet este necesara.

    Legaturile stranse dintre universitatea din Duisburg si alte centre universitare de pe tot

    globul face ca in acest camin sa traiasca o diversitate mare de studenti provenind din tari cu

    valori si obiceiuri diferite. Este necesara astfel acordarea unei atentii deosebite modului de

    distribuire a acestora in cladiri si apartamente pentru ca acestia sa isi desfasoare activitatea

    intr-un mediu cat mai prietenos.

    Rezervari de camere si administrare financiara

    Una dintre problemele ce sporeste complexitatea administrarii caminului de studenti

    este insusi aranjamentul fizic al cladirilor. Caminul reprezinta de fapt un grup de cladiri ,

    fiecare avand apartamente independente complet echipate si mobilate. Aceasta structura este

    destul de neobisnuita cauzand diferente intre camere si apartamente. O atentie sporita trebuie

    data modului in care rezervarile si contractele trebuiesc facute.

    Pagina 4 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    5/51

    Caracterul international al caminului de studenti este un alt argument pentru

    dezvoltarea unei aplicatii originale.Oamenii de pe intreg globul au obiceiuri diferite si

    diferentele culturale dintre studenti pot afecta viata in aceasta comunitate.Experienta

    anterioara a subliniat diferentele culturale si posibilele conflicte care pot aparea.Din aceasta

    cauza trebuie implementate aceste tipare culturale pentru o distribuire optima a studentilor.

    Conducerea universitati doreste o asezare spatiala si temporala a studentilor de

    aceeasi nationalitate Astfel este preferata o cazare a unor studenti de aceeasi nationalitate in

    acelasi apartament sau daca aceasta nu este posibila plasarea lor in aceeasi cladire.De

    asemenea este de preferat ca acestia sa fie cazati in apartamenet sau case in care sunt cazati

    alti studenti cu perioade contractuale asemnatoare

    Administrarea financiara este o sarcina importanta in cadrul caminului.Tranzactiile

    financiare include plati prin banca a chiriilor , servicii, reparatii, si renovari. Pentru relatia cu

    banca un program dedicate este deja utilizat , dar introducerea cheltuilelilor suplimentare este

    facuta manual.Una din sarcinile acestui proiect este crearea unor proceduri automatice pentru

    tranzactii financiare.

    Chelutielile ce pot aparea in administrarea caminului pot fi de doua tipuri: permanente

    sau dirijate de evenimente aleatoare.Cele permanente pot fi legate de cheluieli programate de

    catre facultate lunar sau trimestrial. Cele dirijate de evenimente pot aparea la observarea unor

    obiecte de inventar stricate si care necesita inclocuire.

    Probleme tehnice si raportarea acestor probleme

    O reactie rapida este necesara atunci cand probleme tehnice apar.Un sistem de

    notificare in timp real al acestor probleme este necesar pentru ca ele pot afecta siguranta

    studentilor ,conditiile in care locuiesc sau reputatie intregului camin.Asistenta profesionala

    este scumpa si uneori tardiva. Din acest motiv administratorul caminului trebuie sa filtreze

    aceste probleme tehnice si sa le resolve in functie de gravitatea lor si de gradul de

    urgenta.Pentru aceasta acest sistem software ar trebui sa aiba prevazute functionalitati pentru

    clasificarea si administrarea problemelor tehnice.

    Acces la internet si securitatea retelei

    Pagina 5 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    6/51

    In zilele noastre Internetul a evoluat de la o posibila sursa de informatii la o

    necessitate. Unui student ii este necesar accesul la informatie si de aceea accesul la internet a

    fost garantat in interiorul caminului. Un server router a fost implementat pentru a da acces la

    internet celor peste 250 de calculatoare conectate la reteaua caminului.Pentru evitarea furtului

    de trafic si a virusilor este necesara implementarea unui modul care sa elimine sau macar sa

    reduca aceste actiuni care dauneaza functionalitatii retelei.

    Messaging

    De indata ce o anumita problema apare , un dialog trebuie purtat intre persoana care

    rezolva problemele sic ea care a raportat respective problema.Dialogul poate fi direct , prin

    intermediu email-ului sau folosind un software dedicate.In cazul caminului cel din urma este

    necesar. Un astfel de system de mesaje este necesar pentru informarea personalului

    administrative de problemele aparute,pentru trimiterea de raspunsuri sau chiar pentru

    trimiterea unor mesaje automate.

    Notiuni teoretice

    Design

    Arhitectura generala a sistemului

    Serverul de internet are propria baza de date continand informatii reutilizabile cum ar

    fi numele utilizatorilor si parolele acestora, cat si alte informatii legate de studentii

    caminului.Din pacate baza de date nu este accesibila din afara acestui server.Accesarea

    serverului este posibila numai prin interfata web pusa la dispozitie pentru administrarea

    serverului. Pentru a folosi aceasta interfata un cont de inregistrare cu drepturi de

    administrator trebuie creat. Conectivitatea cu serverul este facuta printr-un modul de

    conectare care pastreaza o conexiune permanenta cu serverul. In acest mod comunicarea cu

    serverul este asigurata si metodele de autentificare sunt refolosite. Pentru a identifica userul

    pentru sistemul nostru se face o trimitere mai departe a numelui utilizatorului si a parolei

    catre serverul de internet si se incearca deschiderea unei conexiuni.In cazul in care

    Pagina 6 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    7/51

    conexiunea este permisa inseamna ca userul are drepturile necesare pentru a accesa

    sistemul.In acest mod sistemul nu trebuie sa faca verificari ale utilizatorilor si in acelasi timp

    utilizatorul nu trebuie sa aiba doua parola pentru cele doua sisteme.

    Informatiile necesare ca sistemul sa functioneze sunt pastrate intr-o baza de date

    proprie numita Bruckhausen.

    Componentele principale ale sistemului sunt componenta de administrare a

    camerelor , componenta de securitate a retelei si componenta de probleme tehnice.

    Componenta de rezervari de camere si administrare financiara

    Acesta componenta este disponibila utilizatorilor cu drepturi de administrator si pune

    la dispozitie mai multe functionalitati care vor fi dezvoltate in continuare:

    Optiunea de adaugare costuri. Aceasta optiune permite administratorului sa adauge

    cheluieli suplimentare ce pot apare in mod aleatoriu.Astfel in cazul in care un student strica

    un obiect de inventar pus la dispozitie de universitate sau mobilierul dintr-un apartament este

    deteriorate se impune repararea sau inlocuirea obiectelor cu defecte.Cheltuielile pentru aceste

    operatii vor fi suportate de studenti ce locuiesc in camin.Administratorul poate sa aleaga ca

    aceste costuri sa fie suportate de catre un singur student sau de catre toti studentii care traiesc

    intr-o anumita zona a caminului.(casa , apartament sau camera).

    Optiunea de afisare a camerelor libere. Aceasta functionalitate a fost implementata

    pentru a da posibilitatea administratorului sa vizualizeze camerele disponibile intr-o anumita

    perioada.Dupa vizioanerea acestora el va avea posibilitatea sa faca o rezervare pentru un

    anumit student.

    Optiunea de afisare a camerelor cu contracte scadente de la o anumita data.

    Administratorul poate vizualiza studentii al caror contract urmeaza sa se termine intr-un

    interval dinainte stabilit. Acest interval este o variabila globala a aplicatiei si poate fi

    modificat.

    Pagina 7 din 51

    InternetServer

    ServerConnection

    Internetdb

    BruckhausenDB

    TechnicalProblemsModule

    RoomAdministration

    Module

    NetworkSecurityModule

    MessagingModuleConnection Pool

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    8/51

    Optiunea de cautare a unei persoane. Administratorul poate efectua cautari ale unei

    personae in functie de trei criterii care au fost implemnetate: numele si/sau prenumele ,

    nationalitatea sau locul unde este cazata respectiva persoana.Dupa identificarea exact a

    persoanei cautate se poate cere o vizualizare a detaliilor persoanei respective.

    Optiunea de setari avansate. Aceasta optiune da posibilitatea administratorului sa

    particularizeze aplicatia in functie de necesitati. Se pot configura numarul de ani cu care se

    poate face rezervare in avans, numarul minim de luni premise pentru rezervare , numarul de

    luni pentru care se face vizualizarea persoanelor ce au contracte scadente.

    Optinuea de cazare in functie de nationalitate. Acesta functionalitate asigura gasirea

    unei variante optime de cazare a unui student sau a unui grup de studenti.Se va incerca

    gasirea unui numar cat mai mare de studenti de aceeasi nationalitate in acelasi apartament sau

    in aceeasi casa.

    .. .

    .. ..

    ..

    Figura 4.1 Structura caminului de studenti

    Implementare

    Prezentare generala

    Aplicatia se numeste camin si este dezvoltata in mediul Eclipse.Acest mediu a fost

    ales pentru ca nu necesita licenta putand fi downloadad gratis de pe internet de la adresa

    http://www.eclipse.org/downloads/index.php. La acest mediu a fost adaugat plugin-ul de Java

    JEM-runtime-1.0.2.zip pentru a usura dezvoltarea aplicatiei. Pentru interpretarea

    servletilor Java a fost folosit serverul web Apache Tomcat disponibil de asemenea gratis pe

    Pagina 8 din 51

    International Students House (ISH)

    House 9 House 17House 44

    Appartment

    1Appartment

    2

    Appartment

    3

    Kitchen Bathroom Room 21a Room 22a

    http://www.eclipse.org/downloads/index.phphttp://www.eclipse.org/downloads/index.php
  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    9/51

    internet la adresa: http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi. Pentru

    aplicatia prezentata a fost folosita varianta jakarta-tomcat-5.0.28.exe. Pentru conectare si

    vizualizari in baza de date a fost folosit serverul Easyphp disponibil gratis la adresa

    http://www.easyphp.org/telechargements.php3. Am folosit varianta 1.7 a acestuia.

    Pentru realizarea tuturor functiilor au fost necesara adaugarea urmatoarelor pachete

    disponibile pe Internet: mysql-connector-java-3.0.11-stable-bin.jar pentru asigurarea

    conectarii la baza de date , servlet.jar pentru a putea lucra cu servleti , mail.jar si

    activation.jar pentru a trimite e-mailuri folosind un server de mail local. Toate aceste pachete

    au fost introduce in proiect ca biblioteci externe.

    Mediul Eclipse necesita un Java Software Development Kit (JSDK) potrivit pentru

    rulare.A fost necesara o varianta mai noua a acestuia ,varianta aleasa fiind j2sdk1.4.2_08.

    Instalarea serverului Apache Tomcat a necesitat setarea variabilei de mediu JAVA_HOME.

    Valoarea acesteia a fost C:\j2sdk1.4.2_08 , indicand locatia unde JDK a fost instalat.

    O alta varaiabila de mediu necesara rularii servletilor a fost CLASSPATH , variabila

    setata cu valoarea: C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib

    indicand folderol de biblioteci din zona in care serverul a fost instalat.

    Mai jos sunt prezentate fisierele si directoarele utlizate pentru aplicatia camin:

    Directorul CSS contine foaia de stil a aplicatiei numita style.css.Sunt definite aici

    clase folosite in paginile HTML generate de servleti.

    Directorul DbAccess contine sursele in Java ale clasei de conectare la driverul de

    MySQL

    Directorul scripturi contine sursele JavaScript ale scripturilor folosite in paginile

    HTML generate de servleti.

    Directorul WEB_INF contine directorul classes si fisierul web.xml.Directorul classes

    contine fisierele obiect obtinute in urma compilarii fisierelor sursa .java. Fisierul web.xml

    contine definirea si descrierea servletilor utilizati in aplicatie.

    Fisierul .project contine date despre acest proiect cum ar fi caile catre bibliotecile

    externe folosite

    Pagina 9 din 51

    http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgihttp://www.easyphp.org/telechargements.php3http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgihttp://www.easyphp.org/telechargements.php3
  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    10/51

    Fisierul euro.gif contine simbolul monedei Euro.Acesta este folosit ca poza pentru a

    evita nerecunoasterea acestuia de catre sistemele mai vechi.

    Fisierul IshLogoGrey1.bmp contine sigla International Students House

    Interfata grafica s-a dorit a fi una simpla si usor accesibila unui user cu drepturi de

    administrator.A fost pus accent pe partea practica a acestuia fiind considerate mai importanta

    decat partea vizuala de catre stafful administrativ.Aceasta interfata este prezentata mai jos.

    Figura 5.1 Pagina principala a aplicatiei

    Algoritmul de cazare

    Algoritmul de cazare este prezentat in cele ce urmeaza.

    Mai intai se gasesc camerele libere in perioada pentru care se doreste cazarea. Daca

    numarul de persoane din grupul ce urmeaza a fi cazat este mai mare decat numarul de camere

    libere atunci se va afisa un mesaj de atentionare.

    Vom continua cu cazul in care sunt destule camere disponibile.Se vor obtine apoi

    camerele care sunt ocupate in perioada ceruta de grup.

    Pagina 10 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    11/51

    Cu aceste date obtinute se va intra intr-o bucla. Aceasta se va repeta de un numar

    prestabilit de ori.

    Aceasta bucla consta in urmatoarele operatii.

    Lista continand camerele libere la data ceruta este amestecata astfel ca o lista aleatorie

    de camere libere este obtinuta.Din aceasta lista rezultata vor fi luate in considerare doar

    primele n camere unde n reprezinta numarul de personae din grup. Aceste prime n camere vor

    fi marcate ca fiind ocupate.Practic vom simula ca deja am rezervat aceste camere pentru

    grupul de studenti. La cele n camere se va seta si un flag pentru a deosebi studenti din grupul

    nou cazat de ceilalti. Cele n camere vor fi adaugate la lista de camere ocupate dar si intr-o

    lista auxiliara ce va contine numai camerele rezervate pentru grup.

    Pentru fiecare din cele n persoane din lista auxiliara se va face o verificare in lista de

    camere ocupate pentru a gasi persoane ,de aceeasi nationalitate cu cea a grupului, care deja

    sunt cazate in camin. Cand o astfel de persoana este gasita un coeficient va fi adaugat tinand

    cont de situarea persoanelor in aceeasi casa sau in acelasi apartament.

    Dupa ce toate camerele ocupate sunt verificate, lista auxiliara continand una din

    posibilitatile de distribuire a camerelor pentru grup va fi adaugata la un vector.

    In acest moment operatiile din bucla se termina. Dupa terminarea tuturor buclelor va

    rezulta un vector ce va contine atatea variante de cazare cate bucle au fost effectuate. List ace

    va avea cel mai bun coeficient va fi cea prezentata administratorului ca fiind varianta optima

    de cazare.

    Pseudocod

    obtine lista camere libere la data ceruta

    daca nr_persoane > numarul de camere libere

    atunci afiseaza mesaj

    altfel

    obtine lista camere ocupate la data ceruta

    pentru i de la 1 la LOOP_NUMBER

    amestecare lista camere libere

    preia primele nr_persoane camere

    Pagina 11 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    12/51

    introduce nr_persoane camere alese in lista de camere ocupate

    introduce nr_persoane camere alese in lista auxiliara

    pentru j de la 1 la numarul de elem din lista auxiliara

    pentru k de la 1 la numarul de elemente din lista de camere ocupate

    daca persoana din lista auxiliara(j) are aceeasi nationalitate cu persoana din lista de

    camere ocupate(k) atunci

    daca sunt in acelasi apartament atunci

    daca sunt in acelasi grup atunci

    adauga coeficient 12

    altfel

    adauga coeficient 3

    daca sunt in aceeasi cladire atunci

    daca sunt in acelasi grup atunci

    adauga coeficient 6

    altfel

    adauga coeficient 1

    sfarsit pentru k

    sfarsit pentru j

    adaugare lista in vector

    sfarsit pentru i

    Blocuri

    Codul in Java

    LinkedList free=obj.getFreeRooms(wishedStart,wishedFinish);

    for(int i=0;i

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    13/51

    //auxList will be filled with the first combination of rooms

    LinkedList auxList=new LinkedList();

    //loop for one variant of room assignation

    for(int j=0;j

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    14/51

    else

    if( rms.nationality.compareTo("")!=0)

    {//if room is occupied

    if(rmsBook.isEqual(rms)==true)

    continue;

    if(rmsBook.isSameNationality(rms)==true)

    {

    //if i find a person of same nationality

    //i search for the building or appartment match

    if(rmsBook.isSameAppartment(rms))

    //we have found another person with the same nationality

    //in the apartment that had been randomly chosen

    if(rms.sameGroup==true)

    //if rms is from same group

    {

    rmsBook.coeficient=rmsBook.coeficient+12;

    }

    else

    //another person of same nationality already

    //living in the apartment , but not from same group

    {

    rmsBook.coeficient=rmsBook.coeficient+3;

    }

    else

    if(rmsBook.isSameHouse(rms)==true)

    if(rms.sameGroup==true)

    {

    //if rms is from same group

    rmsBook.coeficient=rmsBook.coeficient+6;

    }

    else

    {

    Pagina 14 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    15/51

    rmsBook.coeficient=rmsBook.coeficient+1;

    }

    }//end if nationality.compare()

    }//end for k

    }//end for j

    auxList.remove(j);

    auxList.add(j,rmsBook);

    }//end for i

    LinkedList aux=new LinkedList();

    aux=auxList;

    globalVector.add(aux);

    }

    5.2.4 Exemplu

    In continuare vom prezenta un exemplu asupra modului in care functioneaza

    algorimul de cazare.

    Pentru inceput vom stabili o corelatie intre anumite culori si nationalitatile studentilor

    luate ca exemplu :

    Figura 5.2.4.1 Legenda nationalitatilor

    In continuare vom considera una din casele caminului de studenti,casa 44 de exemplu,

    ce contine patru apartamente (1,2,3,4).Presupune ca avem urmatoarea distributie a

    nationalitatilor in apartamente:

    Camera 1 Camera 2 Camera 3 Camera 4 Camera 5 Camera 6

    Apartamentul 1

    Apartamentul 2

    Pagina 15 din 51

    India

    Malaysia

    China

    Romania

    EmptyRoom

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    16/51

    Apartamentul 3

    Apartamentul 4

    Figura 5.2.4.2 Dispunerea studentilor in camerele apartamentelor casei 44.

    Vom presupune in continuare ca avem de cazat un student din China.

    Figura 5.2.4.3 Reprezentarea studentului din China pentru care se cauta cazare

    Intai se va trece la alegerea apartamentelor ce au camere libere.Apartamentul 4 fiind

    complet ocupat va fi eliminat din cautare.

    Camera 1 Camera 2 Camera 3 Camera 4 Camera 5 Camera 6

    Apartamentul 1

    Apartamentul 2

    Apartamentul 3

    Figura 5.2.4.3 Reprezentarea apartmentelor ce raman dupa eliminarea celor complet

    ocupate

    Vom completa fiecare din apartamentele ramase cu noul student si vom calcula un

    coeficient al nationalitatilor prezente in fiecare apartament.In functie de accesti coeficienti

    vom alege cea mai buna solutie pentru studentul respectiv.

    Camera 1 Camera 2 Camera 3 Camera 4 Camera 5 Camera 6

    Apartamentul 1

    Apartamentul 2

    Apartamentul 3

    Pagina 16 din 51

    Nou

    Nou

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    17/51

    Figura 5.2.4.3 Reprezentarea apartmentelor cu noul student

    Pentru fiecare apartament vom calcula un coefficient.A fost stabilita urmatoarea

    schema de acordare a coeficientilor: pentru fiecare coleg de apartament de aceeasi

    nationalitate coeficientul creste cu 6 puncte.In cazul in care in apartament nu se afla nici un

    coleg de aceeasi nationalitate se va cauta in aceeasi cladire si se va acorda 1 punct pentru

    fiecare coleg de aceeasi nationalitate.

    Pentru apartamentul 1 studentul chinez va avea inca 4 colegi de aceeasi nationalitate ,

    rezultand astfel un coeficient de 24. In acelasi mod pentru apartamentul 2 vom avea un

    coeficient de 6 pentru ca mai este un singur student chinez in apartament iar pentru

    apartamentul 3 vom avea un coefficient de 5 datorita celor 5 studenti chinezi din cladire.

    Figura 5.2.4.3 Reprezentarea apartmentelor si a coeficientilor calculati

    Aceasta cautare va fi executata in toate cladirile caminului de studenti.In cazul in care

    nu se gaseste o varianta mai buna de cazare intr-o alta casa rezultatul final al algoritmului va

    fi Casa 44 Apartamentul 1 Camera 5.

    5.3 Implementare software

    5.3.1 Clasa AddCosts

    Clasa este mostenita din clasa HttpServlet si este utilizata pentru a permite

    utilizatorului sa insereze cheltuieli in contul unor studenti.Cheltuielile se clasifica in patru

    categorii. Prima categorie este legata de o camera si de obicei este datorata deteriorarii unui

    Pagina 17 din 51

    => 24

    => 6

    => 5

    Camera 1 Camera 2 Camera 3 Camera 4 Camera 5 Camera 6

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    18/51

    obiect din camera pe care universitatea l-a pus la dispozitie.Intreaga suma cheltuita cu

    repararea sau inlocuirea va fi suportata de studentul ce locuieste in acea camera.

    A doua categorie reprezinta cheltuieli legate de un apartament si sunt cauzate de

    reparari sau inlocuiri necesare intregului apartament. Suma cheltuita va fi impartita in mod

    egal la toti studentii din respectivul apartament.Categoria a treia reprezinta cheltuielile legate

    de o casa de studenti cum ar fi inlocuirea usii de la intrarea in cladire sau necesitatea unor

    reparatii la scara dintra apartamente.Ultima categorie de cheltuieli se refera la cele generale

    necesare pentru intretinerea intregului camin.De asemenea aceste cheltuieli vor fi impartite in

    mod echitabil intre toti studenti ce locuiesc la acea data in camin.

    Metoda doGet este folosita pentru a afisa pagina principala a acestei optiuni. Initial se

    va oferi posibilitatea alegerii tipului de cheltuieli care urmeaza a fi introdus.In urma acestei

    alegeri vor fi afisate optiuni de alegere a unei case , a unui apartament sau a unei camere unde

    cheltuielile au fost facute.

    Metoda doPost preia informatiile introduse de utilizator si le foloseste pentru a calcula

    suma exacta ce trebuie platita de fiecare student. Cheltuielile sunt impartite la toti studentii

    care traiesc in locatia selectata de catre utilizator. Acesti studenti sunt cautati in baza de date

    si cheltuielile sunt adaugate in contul lor.

    5.3.2 Clasa AddRoom

    5.3.3 Clasa AdvancedSettings

    mosteneste clasa HttpSevlet si asigura functionalitati cum ar fi modificarea unor

    parametrii ai aplicatiei.De asemenea exista posibilitatea revenirii la parametrii default ai

    aplicatiei.

    Acesti parametrii vor fi prezentati in continuare:

    RESERVATION_YEARS reprezinta numarul maxim de ani cu care se poate rezerva

    inainte incpand cu anul current.Valoarea default este 5 ani.

    MINIMUM_MONTHS_BOOK reprezinta numarul minim de luni permis pentru o

    rezervare.Valoarea default a sistemului este de 3 luni.

    Pagina 18 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    19/51

    LOOP_NUMBER reprezinta numarul de bucle executate de algortimul de cazare si

    practic semnifica numarul de variante generate din care urmeaza sa se aleaga varianta cea mai

    buna.Valoarea default este 15.

    DEPARTURE_VIEW_MONTHS_NUMBER reprezinta numarul de luni ce va fi

    adaugat la data aleasa de user pentru vizualizarea contractelor ce urmeaza sa se incheie.Astfel

    un contract al unei camere va fi afisat daca data de sfarsit a acestuia se situeaza intre data

    aleasa de utilizator si o noua data obtinuta orin adaugarea la data utilizatorului a numarulu de

    luni dat de parametru.

    Metoda doGet este accesata la selectarea optiunii de setari avansate din pagina

    principala.Aceasta va afisa valorile curente ale parametrilor mentionati mai sus.Sunt oferite

    posibilitati de modificare a parmetrilor si de revenire la cei default.

    Metoda doPost este apelata atunci cand s-a decis schimbarea parametrilor

    aplicatiei.Aceasta este adusa la cunostiinta prin setarea parametrului c cu valoarea 2. Noila

    varaiabile sunt preluate si se opreaza modificarile cerute.

    writeFile scrie noile valori ale parametrilor in fisier.

    5.3.4 Clasa Booking

    Aceasta clasa preia date despre potentiali studenti ce doresc care in caminul

    universitatii.Aceste date sunt folosite pentru a oferi cea mai buna cazare disponibila pentru un

    student sau pentru un grup de student bazat pe nationalitatea acestora.

    Pentru rezultate mai bune parametrul LOOP_NUMBER se poate modifica in sensul

    cresterii acestuia.O dat cu cresterea acestuia varianata de cazare va fi una mai buna insa

    timpul de cautare va fi si acesta mai mare.

    Metoda doGet prezinta un formular in care utilizatorul trebuie sa introduca un minim

    de informatii necesare algoritmului de cazare cum ar fi numarul de personae din grup,

    nationalitatea acestor personae si datele intre care cazarea este dorita.

    Metoda doPost va prleua datele generale si va genera urmatorii pasi necesari

    efectuarii cazarii.

    Pagina 19 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    20/51

    bestAccomodation este metoda principala pentru algoritmul de cazare.Mai intai

    gaseste camerele care nu sunt ocupate in perioada specificata.Se va verifica numarul de

    camere libere gasite acesta trebuind sa fie mai mare decat numarul de persoane din grup.

    Urmatoarele operatii vor fi effectuate de un numar de LOOP_NUMBER ori.

    Lista de camere libere va fi amestecata astfel incat sa obtinem o lista

    aleatoare.Primele n camere vor fi considerate unde n va fi numarul de studenti din grup.

    Aceste camere vor fi adaugate la lista de camere ocupate si la o lista auxiliara.

    In continuare se va efectua o cautare , pentru fiecare din cele n personae .Se vor

    cauta , in lista de camere ocupate , persoane care sa aiba aceeasi nationalitate cu cele n

    persoane. Cand acestea sunt gasite se va adauga un coeficient. Lista de n camere asignate

    grupului impreuna cu coeficientii calculate va fi adaugata la un vector.

    Dupa terminarea buclelor algoritmului se va face o cautare in vector a listei cu cei mai

    mari coeficienti. Aceasta lista va constitui si varianta finala oferita utlizatorului.

    bestList realizeaza calculul sumei coeficientilor din toate camerele din lista si

    returneaza acea lista cu coeficientul cel mai mare.

    getCoeficient este o metoda ce calculeaza suma coeficientilor dintr-o lista data ca

    parametru.In lista respectiva se afla mai n obiecte de tipul RoomStruct.

    listAccomodation este metoda apelata pentru afisarea pe ecran a listei finale de

    camere gasita ca fiind cea mai potrivita.

    5.3.5 Clasa DbQueries

    Aceasta clasa este folosita de catre toti servletii care trebuie sa interactioneze cu baza

    de date.Pune la dispozitie functii cum ar fi conectarea la baza de date , inserare de date ,

    modificarea acestora si preluarea informatiilor cerute de utlizator.

    Variabilele globale ale clasei sunt:

    RESERVATION_YEARS-numarul de ani cu care se poate face in avans rezervare

    MINIMUM_MONTHS_BOOK- numarul minim de luni premise pentru o rezervare

    LOOP_NUMBER-numarul de bucle executate de algoritmul de cazare

    DEPARTURE_VIEW_MONTH_NUMBER-intervalul de luni pe care se doreste

    vizualizarea contractelor cu termene scadente

    Pagina 20 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    21/51

    dbConn este metoda ce obtine un obiect de Connection.Astfel se poate interactiona cu

    baza de date mySQL.

    dbSearchUser este metoda ce realizeaza verificarea unui utilizator prin numele si

    parola introduse.Aceasta metoda este folosita pentru modulul de inregistrare si permite

    accesul la functionalitatile puse la dispozitie utilizatorului cu drepturi de administrator.

    Metoda getCountries este utilizata la conectarea cu baza de date si preluarea

    informatiilor despre tarile inscrise in tabelul Countries. Se returneaza o lista continand toate

    aceste tari.

    getRent este folosita pentru a gasi identificatorul unic al camerei primate ca parametru

    si pentru a prelua chiria ce trebuie platita pentru camera respectiva.

    Metoda getYear preia anul curent al sistemului pe care lucreaza aplicatia si il

    returneaza intr-un format de patru cifre: aaaa.

    Metoda getMonth preia luna curenta a sistemului pe care lucreaza aplicatia si o

    returneaza intr-un format de doua cifre: ll.

    Metoda getDay preia ziua curenta a sistemului pe care lucreaza aplicatia si o

    returneaza intr-un format de doua cifre: zz.

    Metoda getDepartures se conecteaza la baza de date pentru a prelua toate persoanele

    ale caror contracte se incheie dupa data primita ca parametru.Se va returna o lista continand

    obiecte RoomStruct care pastreaza informatii despre persoanele gasite de metoda.

    getRooms este o metoda ce se conecteaza la baza de date si preia toate camerele

    inregistrate aici.Se returneaza o lista continand obiecte de tip RoomStruct care stocheaza date

    despre camerele gasite.

    Pagina 21 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    22/51

    Metoda getOccupiedRooms se conecteaza la baza de date si cauta camerele care sunt

    ocupate intre datele primite ca parametrii.Valoarea returnata va fi o lista de obiecte

    roomStruct ce vor contine detalii despre camerele ocupate gasite.

    Metoda getfreeRooms se conecteaza la baza de date si cauta camerele care sunt libere

    intre cele doua date primite ca parametrii.Valoarea returnata va fi o lista de obiecte

    roomStruct ce vor contine detalii despre camerele libere gasite.

    isDateDeparture este utilizata pentru a verifica daca data de sfarist a unui contract ,

    primita ca parametru se afla in perioada dintre data cerutra de utilizator primita de asemenea

    ca parametru si data rezultata dupa adunarea variabilei

    DEPARTURE_VIEW_MONTH_NUMBER.

    Pentru a ilustra grafic aceasta verificare vom nota cu SC data de sfarsit a contractului

    si cu DI data introdusa de utilizator.De asemenea vom nota cu DI+ data rezultata prin

    adunarea la DI a

    DEPARTURE_VIEW_MONTH_NUMBER luni.

    DI SC DI +

    timp

    Figura 5.3.5.1

    In situatia respective data de sfarsit a contractului se incadreaza in perioada dorita de

    utilizator si va fi adaugata in lista pentru afisare.

    Metoda isDateFree este folosita pentru a verifica daca cele doua periode primite ca

    parametrii prin patru date calendaristice, se suprapun.Pentru aceasta doua verificari vor fi

    facute:

    daca data de start si data de sfarsit sunt anterioare datei de inceput dorita pentru

    rezervare

    daca data de start si data de sfarsit sunt ulterioare datei de sfarsit dorita pentru

    rezervare

    Pentru a reprezenta graphic cele doua situatii notam data de inceput cu S si data de

    sfarsit cu F iar data de inceput a rezervarii dorite cu WS si data de sfarist a rezervarii cu WF.

    Pagina 22 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    23/51

    Prima varianta pentru care functia va returna true este:

    S F WS WF

    Timpul

    Figura 5.3.5.1

    A doua varianta pentru care rezultatul va fi true este:

    WS WF S F

    Timpul

    Figura 5.3.5.2

    Altfel va insemna ca cele doua perioade se suprapun si astfel data dorita pentru cazare

    nu va fi disponibila.

    Metoda searchNationality realizeaza o conexiune cu baza de date si cauta toate

    persoanele de nationalitatea primita ca parametru.Se returneaza o lista de obiecte de tip

    RoomStruct ce contin detalii despr persoanele gasite.

    searchName realizeaza o conexiune cu baza de date si cauta persoane dupa

    urmatoarele criterii:

    acelasi nume si prenume cu cele primiteca parametru

    acelasi nume ca si cel primit ca parametru

    acelasi prenume ca si cel primit ca parametru

    in functie de parametrii trimisi.Astfel in cazul in care atat numele cat si prenumele au

    o valoare diferita de null atunci cautarea se face dupa nume si prenume.In cazul in care nume

    are valoarea null atunci cautarea se face dupa prenume si in ultimul caz in care prenume are

    valoarea null cautarea se face dupa nume.

    Se returneaza o lista de obiecte de tip RoomStruct ce contin detalii despre persoanele

    gasite.

    Pagina 23 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    24/51

    searchBuliding realizeaza o conexiune cu baza de date si cauta cauta persoane dupa

    urmatoarele criterii:

    situarea in aceeasi casa,apartament si camera cu cele primite ca parametru

    situarea in aceeasi casa si apartament cu cele primite ca parametru

    situarea in aceeasi casa cu cea primita ca parametru

    toate cladirile

    In functie de parametrii primiti , daca parametrul building are valoarea all atunci

    cautarea va fi generala toate perosanele din toate cladirile fiind adaugate intr-o lista.Altfel

    daca parametrul appartament are valoarea all atunci se vor cauta persoanele din toate

    apartamentele casei selectate.

    In cazul in care si parametrul apartment are alta valoare decat all se va verifica si

    parametrul room. Daca acesta are valoarea all atunci se vor cauta perosanele din casa si

    apartamentul selectat, altfel se va selecta numai persoana din camera respectiva.

    Se returneaza o lista de obiecte de tip RoomStruct ce contin detalii despre persoanele

    gasite.

    Metoda insertNewStudent realizeaza o conexiune la baza de date si insereaza datele

    primate ca paramteru prin obiectul de tip RoomStruct in tabelele person si person_room_rel.

    Operatiile decurg in felul urmator.Mai intai se cauta ultima inregistrare din tabelul person

    apoi fiind introduse informatiile despre noul student in baza de date,la pozitia imediat

    urmatoare. Se cauta in continuare ultima inregistrare din tabelul room_person_rel si la pozitia

    imediat urmatoare se introduc datele corespunzatoare.

    Metoda readFile deschide fisierul de configurare al parametrilor aplicatiei.Variabilele

    sunt citite din fisier , apoi sunt verificate in cazul ca fisierul ar fi fost corrupt si apoi valorile

    preluate sunt asignate variabilelor globale ale clasei.

    getKaution este folosita pentru preluarea informatiilor despre sumele datorate de

    studenti universitatii.Se returneaza o lista continand obiecte de tip kauitionStruct.

    addCost este utilizata pentru adaugarea de costuri studnetilor din baza de date.

    Studentul pentru care trebuie introdus costul se primeste ca parametru. Pentru stabilirea

    tipului de operatie ce urmeaza a fi efectuat se executa o verificare a existentei studentului

    primit ca parametru in tabelul de datorii al caminului.Daca studentul deja figureaza cu datorii

    Pagina 24 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    25/51

    atunci se va face o modificare a sumei datorate,altfel se va introduce studentul in tabel cu

    noua suma datorata.

    5.3.6 Clasa DeparturesRooms

    Aceasta clasa este utilizata pentru a oferi posibilitatea utilizatorului de a vizualiza

    contractele ce au o data scadenta intr-o anumita perioada aleasa de utilizator.

    Metoda doGet afiseaza o pagina in care utilizatorul poate sa introduca data incepand

    cu care se doreste afisarea contractelor scadente.

    Metoda doPost preia data introdusa de utlizator sip e baza ei se obtine o lista de

    camere pentru care contractele urmeaza sa se incheie in perioada ceruta.Aceste camere sunt

    ordonate in functie de data cea mai recenta de expirare a contractului si sunt afisate.

    sortByDate este utlizata pentru a sorta elementele de tip RoomStruct din lista primita

    ca parametru.Primul element al noii liste va fi cel care are data de expirare a contractului cea

    mai recenta.Aceasta noua listava fi returnata.

    Metoda isDateEarlier primeste ca parametrii doua date calendaristice.Rolul ei este de

    a calcula daca prima data este anterioara celei de-a doua In acest caz datele ar trebui

    interschimbate pentru a avea pe cea mai recenta pe primul loc.Valoarea returnata in acest caz

    este true.Altfel se va returna false.

    5.3.7 Clasa HtmlCode

    Aceasta clasa este utlizata pentru a aduna toate metodele ce necesita introducerea de

    cod Html. Astfel se va separa partea de interfata de cea de calcule.

    Metoda firstDeparturePage este utilizata pentru a da posibilitatea introducerii datei

    intr-un formular Html.Aceasta data va fi folosita pentru a afisa persoanele ale caror contracte

    expira dupa aceasta data.

    Pagina 25 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    26/51

    firstBookPage afiseaza un formular de cazare sau unul de vizualizare in functie de

    parametrul param.Acest formular poate sa preia date privitoare la numarul de persoane pentru

    care se doreste rezervare si nationalitatea acestora.De asemenea trebuie introdusa si data de

    incepere a cazarii cat si cea de terminare a acesteia.

    insertForm introduce un formular personalizat in functie de parametrii primiti pentru

    fiecare persoana din grupul ce urmeaza a fi cazat.Datele fiecarei personae vor fi trecute in

    formular pentru a putea fi introduse apoi in baza de date.

    Metoda login afiseaza prima pagina a aplicatiei.Pagina este folosita de catre utilizatori

    pentru a se inregistra si a putea avea acces la functionalitatile oferite de aplicatie.Pagina

    contine un formular in care se preiau numele si parola utilizatorului ce doreste inregistrarea.

    administratorLogin afiseaza o pagina din care sunt disponibile functionalitatile oferite

    pentru administrator.Aceste functionalitati sunt:

    adaugare camera

    adaugare costuri

    vizualizare camere libere cu posibilitate de rezervare

    vizualizare contracte scadente la o data

    cautare personae in functie de trei criterii

    setari avansate

    rezervare in functie de nationalitate

    trimitere email catre conducerea universitatii

    insertHeader insereaza logoul International Students House , acesta fiind present in

    toate paginile aplicatiei.

    insertFooter insereaza data ultimei actualizari si posibilitatea de trimitere e-mail

    International Students House , acesta fiind present in toate paginile aplicatiei.

    printFreeRooms metoda obtine o lista cu camerele libere intr-o anumita perioada si o

    afiseaza utlizatorului. Detaliile afisate includ numarul casei , apartamentului si al camerei ,

    chiria si tipul camerei pentru fiecare obiect de tipul RoomStruct din lista.

    Pagina 26 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    27/51

    Metoda ListStudents este utlizata pentru a vizualiza informatii in legatura cu studentii

    din lista primta ca parametru.Informatiile afisate sunt numele si prenumele studentului,

    nationalitatea acestuia , casa , apartamentul si camera unde este cazat cat si data de inceput si

    cea de sfarsit a contractului.

    Metoda insertStudents este utlizata pentru a afisa un formular in care pentru un nou

    student, caruia i-a fost facuta rezervare, se vor introduce date cum ar fi nume , prenume , ziua

    nasterii, locul nasterii si nationalitatea. Aceste date vor fi apoi introduse in baza de date.

    searchForms introduce trei formulare in pagina de cautare a unei persoane. Astfel

    utilizatorul are posibilitatea sa caute o persoana dupa nume si/sau prenume , dupa

    nationalitate sau dupa locul in care este cazata.

    listDetails este utilizata pentru a afisa informatii detaliate despre o persoana al carui id

    este primit ca parametru.Tot ca parametru se primeste si o lista de persoane in care acest id

    este cautat.

    Metoda advancedSettingsMain afiseaza valorile curente ale parametrilor aplicatiei.De

    asemenea se ofera posibilitatea resetarii acestor parametrii la valorile default sau se pot

    modifica aceste variabile.

    readFile realizeaza citirea prametrilor din fisierul de configurare si atribuie aceste

    valori variabilelor globale ale obiectului de ipul DbQueries primit ca parametru.Acest obiect

    este apoi returnat.

    Metoda addCostsMain este folosita pentru a da posibilitatea utlizatorului sa aleaga

    tipul de costuri pe care vrea sa le introduca.Pe baza acestei alegeri un script JavaScript este

    apelat si informatii aditionale sunt afisate in pagina.Utlizatorul va putea apoi sa aleaga locatia

    exacta unde costurile trebuiesc impartite.

    insertCurrentDate insereaza un formular de alegere a datei in care data curenta a

    sistemului este deja selectata.

    Pagina 27 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    28/51

    Metoda addCostsAmount serveste la afisarea unui mesaj personalizat in functie de

    alegerile facute de client.Acest mesaj are rolul unei confirmari a locatiei unde costurile vor fi

    introduse pentru a nu exista erori la adaugarea acestor costuri.. Pagina va permite de

    asemenea utlizatorului sa introduca suma pe care studentii dintr-o anumita locatie a caminului

    o datoreaza universitatii. Semnul monedei Euro a fost introdus aici ca o poza pentru a permite

    si sistemelor mai vechi sa interpreteze correct simbolul.

    5.3.8 Clasa Inregistrare

    Aceasta este clasa principala a aplicatiei.Este folosita pentru inregistrarea utilizatorilor

    pentru ca ei sa poata avea acces la functionalitatile oferite de aplicatie.

    doGet afiseaza prima pagina pe care un user o vizualizeaza la initierea aplicatiei.Aici

    se ofera posibilitatea inregistrarii userului prin introducerea numelui si a parolei.

    doPost sunt afisate operatiile puse la dispozitie unui utilizator cu drepturi de

    administrator.

    5.3.9 Clasa KautionStruct

    Aceasta clasa este utilizata pentru a pastra informatii despre studenti si despre sumele

    pe care acestia le datoreaza universitatii.

    5.3.10 Clasa PersonStruct

    Clasa este folosita pentru a pastra informatii despre studenti incluzand detalii cum ar

    fi nume , prenume , locul nasterii , data nasterii etc. Ea este folosita la operatiunile cu baza de

    date pentru a evita trimiterea multor parametrii intre diferite functii.Astfel un singur obiect

    este trimis , acesta continand toate informatiile necesare despre o persoana.

    5.3.11 Clasa RoomStruct

    Clasa este folosita pentru a pastra informatii despre scamere incluzand detalii cum ar

    fi chirie , apartament in care se afla , casa in care se afla , data inceperii contractului ,data

    Pagina 28 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    29/51

    expirarii contractului etc. Ea este folosita la operatiunile cu baza de date pentru a evita

    trimiterea multor parametrii intre diferite functii.Astfel un singur obiect este trimis , acesta

    continand toate informatiile necesare despre o camera.

    Metoda isEqual este folosita pentru a compara doua obiecte de tip RoomStruct.Unul

    este obiectul care apeleaza metoda iar celalalt este obiectul primit ca parametru.Compararea

    se face dupa campul room_id al fiecarui obiect.Se returneaza true daca ambele campuri sunt

    identice.

    isSameNationality este folosita pentru a compara doua obiecte de tip

    RoomStruct.Unul este obiectul care apeleaza metoda iar celalalt este obiectul primit ca

    parametru.Compararea se face dupa campul nationality al fiecarui obiect.Se returneaza true

    daca ambele campuri sunt identice.

    isSameAppartment este utilizata pentru a compara doua obiecte de tip

    RoomStruct.Unul este obiectul care apeleaza metoda iar celalalt este obiectul primit ca

    parametru.Compararea se face dupa campul appartment al fiecarui obiect.Se returneaza true

    daca ambele campuri sunt identice.

    Metoda isSameHouse este folosita pentru a compara doua obiecte de tip

    RoomStruct.Unul este obiectul care apeleaza metoda iar celalalt este obiectul primit ca

    parametru.Compararea se face dupa campul house al fiecarui obiect.Se returneaza true daca

    ambele campuri sunt identice.

    5.3.12 Clasa SearchPerson

    Clasa este folosita pentru a permite utlizatorului sa faca o cautare a unei personae

    bazata pe unul din cele trei criterii de mai jos:

    nationalitate

    nume si/sau prenume

    locul unde persoana este cazata

    Metoda doGet este folosita pentru a afisa formularele de cautare sau pentru a arata

    detaliile complete ale unei persoane anume.

    Pagina 29 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    30/51

    doPost preia informatiile completate de utlizator in unul din cele trei formulare ,

    identifica tipul de cautare ce urmeaza a fi facut si apleaza functia de cautare

    corespunzatoare.Functia de cautare returneaza o lista care este apoi ordonata in functie de

    data terminarii contractului si apoi se afiseaza persoana sau persoanele gasite.

    sortByDate pune obiectul de tip RoomStruct cu data de plecare cea mai recenta pe

    prima pozitie in lista.Astfel lista va fi sortata in functie de data de sfarsit a cazarii.

    Metoda isDateEarlier primeste ca parametrii doua date calendaristice.Rolul ei este de

    a calcula daca prima data este anterioara celei de-a doua In acest caz datele ar trebui

    interschimbate pentru a avea pe cea mai recenta pe primul loc.Valoarea returnata in acest caz

    este true.Altfel se va returna false.

    5.3.13 Clasa SendMail

    Clasa este folosita pentru a trimite emailuri direct din pagina Html generate de servlet,

    folosind serverul de mail de pe sistemul gazda.

    Metoda doGet afiseaza un formular in care se pot introduce informatiile necesare

    trimiterii emailului.

    doPost preia informatiile legate de expeditor ,de mesaj si de subiect si creeaza un

    email care apoi este trimis.

    5.3.14 Clasa ViewFreeRooms

    Clasa este folosita pentru a afisa pe ecran date despre camerele libere disponibile intr-

    o anumita perioada.Exista de asemenea si posibilitatea de a face rezervari.

    Metoda doGet pune la dispozitie un formular in care trebuiesc trecute datele necesare

    cautarii camerelor libere. Aceasta metoda preia de asemenea datele despre un nou student

    pentru care se face rezervarea si insereaza un nou formular Html in care sunt cerute detaliile

    studentului.

    Pagina 30 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    31/51

    doPost preia datele pentru cautare trimise prin metoda post ,obtine lista de camere

    libere in perioada ceruta si afiseaza aceste camere.De asemenea tot aici sunt preluate si datele

    completate pas cu pas pentru un nou student ce urmeaza a fi cazat sunt introduse in baza de

    date.

    5.3.15 Scripturi JavaScript

    AddCostsScript.js

    Fisierul contine functia option. Aceasta preia tipul de cost selectat de utilizator si

    trimite prin get o anumite valoare ,pagina curenta fiind reincarcata.Dupa reincarcare valoarea

    trimisa prin get este preluata si in functie de aceasta se vor afisa locatiile unde cheltuielile

    trebuiesc introduse.

    function option()

    {

    type=this.expenseType.options[this.expenseType.selectedIndex].value;

    window.location.href="addcosts?type="+type;

    }

    checkStudent.js

    Acest fisier contine functia check apelata la apsarea butonului de inserare a unui nou

    student in baza de date.Functia realizeaza verificarea unor campuri ce nu trebuiesc lasate

    necompletate.In cazul in care macar un cam este necompletat ,nu se va realize inserarea si se

    va face vizibil un mesaj de eroare.

    Clasa vazut folosita este o clasa de stil si este definite in fisierul style.css.

    function check()

    {

    var ok=1;

    if(this.newStudent.surname.value=="")

    {

    lastMsg.className = "vazut";

    ok=0;

    Pagina 31 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    32/51

    }

    if(this.newStudent.firstName.value=="")

    {

    firstMsg.className = "vazut";

    ok=0;

    }

    if(this.newStudent.birthPlace.value=="")

    {

    placeMsg.className = "vazut";

    ok=0;

    }

    if(ok==1)

    return true;

    else

    return false;

    }

    studentHouse.js

    Fisierul implementeaza trei functii:

    function appHouse()

    function appLocations()

    function roomApp()

    Functiile sunt folosite pentru generarea optiunilor ce vor fi introduse in obiectele Html

    de tip select din diferite agini ale aplicatiei.Aceste optiuni vor fi generate pe baza unor

    variabile intrduse in pagina mai devreme ce contin infromatii despre case , apartamente si

    camere preluate din baza de date.

    viewFreeRoomsScript.js

    Sunt implementate urmatoarele functii:

    Pagina 32 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    33/51

    function date().Aceasta este apelata atunci cand se face o modificare asupra datei de

    incepere a unei perioade.In functie de aceasta data si de parametrii globali ai aplicatiei care

    sunt preluati in aceasta pagina, se va permite alegerea numai a anumitor date.Daca spre

    exemplu data dorita de cautare a unei camere este 4.06.2005 iar numarul minim de luni

    pentru care se poate face o cazare este de 9 luni. In aceste conditii data de sfarsit al cazarii

    permisa de aplicatie va incepe de la data de 4.03.2006.O data anterioara acesteia nu va putea

    fi permisa.

    function year().Se apeleaza atunci cand anul de sfarsit al unei perioade este schimbat.

    Sa continuam exemplul de mai sus. In stadiul la care am ramas nu se poate selecta o data cum

    ar fi 4.01.2006 din motivele explicate.La modificarea anului in sensul incrementarii acestuia ,

    spre exemplu la alegerea anului 2007, primele luni din an vor putea fi disponibile pentru a fi

    alese. De asemenea la revenirea la anul 2006 vor trebui scoase lunile pentru care cazarea nu

    este permisa.

    function removeOptions() realizeaza stergerea tuturor optiunilor dintr-un select.

    function appendOptionLast(num,id) realizeaza introducerea optiunii num in selectul

    dat de variabila id.

    function appendOptionLast(num,id)

    {

    var elOptNew = document.createElement('option');

    elOptNew.text = num;

    elOptNew.value = num;

    var elSel = document.getElementById(id);

    try {

    elSel.add(elOptNew, null); // standards compliant; doesn't work in IE

    }

    catch(ex) {

    elSel.add(elOptNew); // IE only

    }

    }

    Pagina 33 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    34/51

    Concluzii si dezvoltare ulterioara

    Acest proiect reprezinta un pas important pentru usurarea muncii administratiei

    caminului si eliminarea efectuarii manuale a unor operatii cu o mare doza de repetabilitate.

    Pentru o buna intelegere a nevoilor administratorilor caminului a fost nevoie de o comunicare

    stransa cu acestia. Sugestiile lor au dus la imbuntatirea unor aspecte ale aplicatiei. Un

    exemplu ar fi faptul ca intreband una dintre persoanele implicate in administrarea caminului

    despre perioada minima de cazare mi s-a raspuns ca in principiu aceasta perioada ar trebui sa

    fie de trei luni insa ea poate fi si mai mare. Astfel am hotarat introducerea optiunii de

    configurare a parametrilor aplicatiei, unul dintre parametrii configurabili fiind chiar aceasta

    perioada minima.

    Baza de date pusa la dispozitie nu a fost cea care va fi folosita cu aplicatia de fata din

    motive de confidentialitate a unor informatii din aceasta cum ar fi conturile studentilor la

    banca , din care se preiau chiriile si eventualele cheltuieli suplimentare.Testarea aplicatiei a

    fost facuta cu success fara aceste date . Aplicatia este gata sa fie implementata in mediul de

    lucru real.

    Proiectul a fost conceput sa fie modular pentru a face astfel usoara continuarea

    acestuia. Algoritmul pentru cazarea studentilor poate fi usor continuat prin adaugarea unor

    noi criterii pentru a putea face o cautare personalizata in functie de apartenenta etnica is

    religioasa a fiecarui student.Algoritmul imlementat pana acum poate pune la dispozitie atat

    rezultatul final concretizat prin lista de camere gasita ca fiind cea mai buna , cat si rezultatele

    partiale constand intr-un vector de liste din care a fost extrasa lista cu coeficientul cel mai

    bun. In functie de noile criterii ce pot fi implemntate in continuare coeficientul acestor liste

    partiale poate fi modificat , noul algoritm putand genera o noua lista de camere care saindeplineasca toate criteriile implementate. In acest scop , de a oferi studentilor o atmosfera

    cat mai primitoare, a fost angajata o studenta la sociologie , a carei sarcina este de a propune

    noi criterii care sa fie implementate.

    Referinte

    Html

    Genetic algorithms

    Pagina 34 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    35/51

    Servleti

    Java

    Https

    Figura 3.1 Structura bazei de date bruckhausen

    Pagina 35 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    36/51

    Tabelul address va pastra informatii referitoare la adresele din tara de origine a

    studentilor

    Figura 3.2 Structura tabelului address

    Campul AdressID este cheia primara a tabelului si va fi utilizata si in alte tabele

    pentru a identifica adresa unui anumit student.

    Tabelul appartment retine date referitoare la apartamentele din casele care alcatuiesc

    caminul de studenti.

    Figura 3.3 Structura tabelului appartment

    Campul app_id este cheia primara a tabelului.Aceasta cheia va fi necesara si in alte

    tabele pentru a identifica in mod unic un anumit apartament. Campul appartment reprezinta

    numarul apartamentului asa cum este el mentionat in actele facultatii.Campul house_id este o

    cheie externa prin care stim carei case ii apartine respectivul apartament. Mai multe

    apartamente se pot gasi in aceeasi casa.

    Tabelul banks este utilizat pentru pastrarea informatiilor despre toate bancile din

    Germania cu care scoala are relatii de colaborare.

    Figura 3.4 Structura tabelului banks

    Pagina 36 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    37/51

    Campul BLZ(BankLeitZahlen) indica codul unei anumite banci , cod folosit si

    intranzactiile interbancare. Campul Bezeichnung se refera la denumirea bancii. Campul

    PLZ(PostLeitZahl) indica codul postal al regiunii in care sediul central al bancii se afla.

    Campul Ort reprezinta orasul in care banca isi are sediul central.Campul KennZahl reprezinta

    indicele propriu dat de scoala acestei banci.Acest camp este si cheia primara a tabelului.

    Tabelul bank_account este necesar pentru pastrarea datelor referitoare la conturile pe

    care studentii le au in bancile din Germania. Din aceste conturi se va extrage chiria lunara si

    eventual alte cheltuieli suplimentare.

    Figura 3.5 Structura tabelului bank_account

    Campul BankKontoID este un indice unic pentru contul unui student si este cheia

    primara a tabelului.Campul KontoNr reprezinta numarul contului la banca.Banca la care se

    afla acest cont este data de campul bank_id fiind o cheie externa spre tabelul banks.

    Tabelul bathroom a

    Figura 3.6 Structura tabelului bathroom

    Tabelul bath_inventory_rel este utilizat pentru a pastra o evidenta a obiectelor dinbaile din caminul de studenti .

    Figura 3.7 Structura tabelului bath_inventory_rel

    Pagina 37 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    38/51

    Campul rel_id este cheia primara a tabelului. Campul bath_id este o cheie externa ce

    indica baia in care exista un anumit obiect de inventar precizat prin inventory_id.Campul

    inventory_id este o cheie externa pentru tabelul inventory. El indica un obiect de inventar.

    Tabelul bath_inv_item_status pastreaza informatii privitoare la starea articolelor din

    baile casei de studenti.

    Figura 3.8 Structura tabelului bath_inv_item_status

    Campul id este cheia primara a tabelului.Campul rel_id este o cheie externa pentru

    tabelul bath_inventory_rel. si indica obiectul caruia ii este apreciata starea.Campul date

    indica data la care constatarea a fost facuta.Campul status indica o apreciere asupra starii

    obiectului respectiv.

    Tabelul bath_problem_rel este folosit pentru retinerea datelor privitoare la problemele

    unei bai.

    Figura 3.9 Structura tabelului bath_problemCampul rel_id este cheia primara a tabelului.Campul bath_id este o cheie externa

    pentru tabelul bathroom si indica baia in care a fost sesizata problema.Campul problem_id

    este o cheie externa pentru tabelul problems si indica problem ace a fost gasita in baia

    respectiva.

    Tabelul Countries este utilizat pentru pastrarea informatiilor despre toate tarile

    globului.

    Pagina 38 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    39/51

    Figura 3.10 Structura tabelului Countries

    Campul KFZ-KZ(Kraftfahrzeug) reprezinta abrevierea generala utilizata pentru

    denumirile tarilor.Acest camp este cheia primara a tabelului.Campul country_short reprezinta

    denumirea in general cunoscuta de toata lumea a unei tari.Campul country_long reprezinta

    denumirea completa a tarii respective.

    Tabelul deposit_room este necesar pentru a retine date referitoare la depozite de

    articole ce pot fi facute.

    Campul deposit_id este cheia primara a tabelului.

    Figura 3.11 Structura tabelului deposit_room

    Tabelul email pastreaza date privind adresele de email ale studentilor din camin.

    Figura 3.12 Structura tabelului email

    Campul EmailID este cheia primara a tabelului si va fi folosita in alte tabele.Campul

    Primary poate lua valorile Yes sau No si indica daca aceasta adresa de e-mail este cea

    specificata ca fiind primara sau nu.Mai multe adrese pot fi introduce pentru aceeasi persoana.

    Tabelul house este utilizat pentru a retine informatii legate de casele ce constituie

    caminul de studenti.

    Pagina 39 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    40/51

    Figura 3.13 Structura tabelului house

    Campul house_id reprezinta cheia primara a acestui tabel.Campul house_nr este

    numarul casei asa cum figureaza ea in documentele universitatii.Campul street reprezinta

    strada pe care se afla casa din respective inregistrare.

    Tabelul inventory este utilizat pentru a pastra informatii despre obiectele puse la

    dispozitie de universitate in cadrul caminului.

    Figura 3.14 Structura tabelului inventory

    Campul ItemID este cheia primara a acestui table.Denumirile atat in limba germana

    cat si in limba engleza sunt pastrate.

    Tabelul kautionszahlung este folosit pentru a retine date privitoare la cheltuielile

    financiare efectuate de catre un student.

    Figura 3.15 Structura tabelului kautionszahlung

    Campul KautionID este cheia primara a tabelului.Campul date reprezinta data la care

    a fost facuta o inserare de cheltuieli pentru o persoana.Campul PersonID este o cheie externa

    pentru tabelul Person si indica o persoana pentru care se face adaugare de cheltuieli.Campul

    HausNr reprezinta numarul casei in acre locuieste studentul.ZimmerNr reprezinta numarul

    camerei acestuia.iar UnterNummer reprezinta subnumarul camerei in cazul in care camera

    este dubla.

    Pagina 40 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    41/51

    Tabelul kitchen pastreaza date despre bucatariile din caminul de studenti.

    Figura 3.16 Structura tabelului kitchen

    Campul kitchen_id este cheia primara a tabelului.Campul kitchen_code este codul sub

    care este cunoscuta bucataria in actele pastrate de administratia caminului.Campul app_id

    este o cheie primara pentru tabelul appartment si indica acpartamentul in care se afla

    bucataria.

    Tabelul kitchen_inventory_rel este utilizat pentru a pastra o evidenta a obiectelor din

    bucatariile din caminul de studenti .

    Figura 3.17 Structura tabelului kitchen_inventory_rel

    Campul rel_id este cheia primara a tabelului. Campul kitchen_id este o cheie externa

    ce indica bucataria in care exista un anumit obiect de inventar precizat prin

    inventory_id.Campul inventory_id este o cheie externa pentru tabelul inventory. El indica un

    obiect de inventar.

    Tabelul kitchen_inv_item_status pastreaza informatii privitoare la starea articolelor

    din bucatariile casei de studenti.

    Figura 3.18 Structura tabelului kitchen_inv_item_status

    Pagina 41 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    42/51

    Campul id este cheia primara a tabelului.Campul rel_id este o cheie externa pentru

    tabelul kitchen_inventory_rel si indica obiectul caruia ii este apreciata starea.Campul date

    indica data la care constatarea a fost facuta.Campul status indica o apreciere asupra starii

    obiectului respectiv.

    Tabelul kitchen_problem_rel este folosit pentru retinerea datelor privitoare la

    problemele unei bucatarii.

    Figura 3.19 Structura tabelului problem_rel

    Campul rel_id este cheia primara a tabelului.Campul kitchen_id este o cheie externa

    pentru tabelul kitchen si indica bucataria in care a fost sesizata problema.Campul problem_id

    este o cheie externa pentru tabelul problems si indica problema ce a fost gasita in bucataria

    respectiva.

    Tabelul mac este utilizat in memorarea unor informatii pentru accesul la internet al

    studentilor.

    Figura 3.20 Structura tabelului mac

    Campul mac_id este cheia primara a tabelului.Campul mac_value reprezinta adresa

    MAC a placii de retea a unui calculator din reteaua caminului.Campul ip_value reprezinta

    adresa IP pe care respectivul user o are pentru a avea acces la internet

    Tabelul messages pastreaza informatii despre mesajele trimise de catre administrator

    catre un student sau invers.

    Pagina 42 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    43/51

    Figura 3.21 Structura tabelului messages

    Campul id este cheia primara a acestui tabel.

    Tabelul person este necesar pentru a retine informatii despre studentii din caminul

    administrat de universitate.

    Figura 3.22 Structura tabelului person

    Campul PersonID este cheia primara a tabelului.

    Tabelul person_address_rel este folosit pentru a lega o inregistrare de tip persoana de

    una de tip adresa.Astfel se pot prelua informatii detaliate despre o anumita persoana.

    Figura 3.23 Structura tabelului person_address_rel

    Campul PersonID este o cheie externa pentru tabelul person si indica persoana pentru

    care avem adresa data de campul AdressID.Si acest camp este o cheie externa pentru tabeluladdress.Campul RelationshipID este cheia primara a acestui tabel.

    Tabelul person_bank_account_rel este utiliza pentru a lega o inregistrare de tip

    persoana de una de tip cont la banca.Astfel se pot prelua informatii financiare detaliate despre

    o anumita persoana.

    Pagina 43 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    44/51

    Figura 3.24 Structura tabelului person_bank_account_rel

    Campul PersonBankKontoID este cheia primara a acestui tabel.Campul PersonID este

    o cheie externa pentru tabelul person si indica persoana pentru care avem contul de banca dat

    de campul BankContoID.Si acest camp este o cheie externa pentru tabelul bank_account.

    Tabelul person_email_rel realizeaza o legatura intre o inregistrare de tip persoana si

    una de tip email.Astfel se pot prelua informatii de contact detaliate despre o anumita

    persoana.

    Figura 3.25 Structura tabelului person_email_rel

    Campul Person-Email-ID este cheia primara a acestui tabel.Campul PersonID este o

    cheie externa pentru tabelul person si indica persoana pentru care avem emailul dat de

    campul EmailID.Si acest camp este o cheie externa pentru tabelul email.

    Tabelul person_phone_rel este folosit pentru a lega o inregistrare de tip persoana de

    una de tip phone.Astfel se pot prelua informatii de contact detaliate despre o anumita

    persoana.

    Figura 3.26 Structura tabelului person_phone_rel

    Campul Person-Phone-ID este cheia primara a acestui tabel.Campul PersonID este o

    cheie externa pentru tabelul person si indica persoana pentru care avem telefonul dat de

    campul PhoneID.Si acest camp este o cheie externa pentru tabelul phone.

    Pagina 44 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    45/51

    Tabelul person_room_rel pastreaza informatii despre studentii care locuiesc in camin

    si despre locul unde acestia locuiesc.Datele din contractile acestora sunt pastrate aici.

    Figura 3.27 Structura tabelului person_room_rel

    Campul ID este cheia primara a acestui tabel. Campul PersonID este o cheie externa

    pentru tabelul person si indica persoana pentru care sunt mentionate datele de cazare in

    inregistrare.Campul ZimmerID reprezinta camera pe care o ocupa persoana mentionata prin

    Id-ul din tabel.Acest camp este o cheie externa pentru tablul room.Campul Vertrag-Von

    reprezinta data de inceput a contractului pentru camera si persoana mentionate in

    inregistrare.Campul Vertrag-Bis reprezinta data de sfarsit a cazarii.Campul Vertragsabschluss

    reprezinta data la care contractul ia sfarsit.Campul Miete reprezinta costul lunar al cazarii

    pentru camera respectiva.Campul KautionID este o cheie externa pentru tabelul kaution si

    indica cheltuielile suplimentare effectuate cu studentul respectiv.

    Tabelul phone retine informatii referitoare la numarele de telefon ale studentilor din

    camin.

    Figura 3.28 Structura tabelului phone

    Campul PhoneID etse cheia primara a tabelului. Campul PhoneNr este numarul de

    telefon al unui student din camin.Campul Primary poate lua valorile Yes sau No si precizeaza

    daca telefonul este telefonul principal al studentului sau nu.

    Tabelul problems retine informatii referitoare la problemele raportate de studenti din

    camin.

    Pagina 45 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    46/51

    Figura 3.29 Structura tabelului problems

    Campul problem_id este cheia primara a tabelului.Campul description_user reprezinta

    modul in care studentul a prezentat problema administratorului.Campul description_expert

    reprezinta descrierea problemei dup ace aceasta a fost observata de un profesionist.User este

    o cheie externa pentru tabelul person.Aceasta indica persoana care a raportat existenta

    problemei.Campul professional_assistance indica daca a fost necesar sau nu chemarea unui

    profesionist la rezolvarea problemei.Campul solved poate lua valoarea Yes sau No si

    raporteaza daca problema a fost rezolvata sau nu.

    Tabelul room este necesar pentru a retine informatii despre camerele din caminul administrat

    de universitate.

    Figura 3.30 Structura tabelului room

    Campul room_id reprezinta cheia primara a tabelului.Room_number reprezinta

    numarul camerei asa cum este el trecut in documentele administrative ale

    caminului.Sub_number reprezinta sub numarul camerei si este utilizat pentru camerele duble

    unde doi studenti pot fi cazati.Campul default_rent reprezinta suma standard ce trebuie platit

    pentru camera.Campul actual_rent reprezinta suma ce trebuie platita de fapt pentru

    camera.Aceasta poate diferi de suma din campul default_rent datorita unor posibiule

    defectiuni sau imbunatatiri pe care camere la are la momentul efectuarii contractului.Campul

    app_id este o cheie externa pentru tabelul appartment ce indica apartamentul in care se afla

    camera.

    Tabelul room_inv_item_status pastreaza informatii privitoare la starea articolelor din

    camerele casei de studenti.

    Figura 3.31 Structura tabeluluiroom_inv_item_status

    Pagina 46 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    47/51

    Campul id este cheia primara a tabelului.Campul rel_id este o cheie externa pentru

    tabelul room_inventory_rel si indica obiectul caruia ii este apreciata starea.Campul date

    indica data la care constatarea a fost facuta.Campul status indica o apreciere asupra starii

    obiectului respectiv.

    Tabelul room_inventory_rel este utilizat pentru a pastra o evidenta a obiectelor din

    camerele din caminul de studenti .

    Figura 3.32 Structura tabelului room_inventory_rel

    Campul rel_id este cheia primara a tabelului. Campul zimmer_id este o cheie externa

    ce indica idul camerei in care exista un anumit obiect de inventar precizat prin

    inventory_id.Campul inventory_id este o cheie externa pentru tabelul inventory. El indica un

    obiect de inventar.

    Tabelul users pastreaza date despre conturile pentru acces la internet ale studentilor

    din camin.

    Figura 3.33 Structura tabelului users

    Campul user reprezinta numele de identificare ales de student.Campul privileges

    reprezinta tipul de privilegii acordate utilizatorului.person_id este o cheie externa pentru

    tabelul person ce indica persona pentru care acest cont este valid.

    Diagrama de clase

    Pagina 47 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    48/51

    Bayreutherstrasse

    Planul apartamentului 1 din casa 44

    Figura Planul caminului de studenti International Students House

    Mod de utilizare al aplicatiei.

    Pentru a avea acces la prima pagina a aplicatiei va trebui accesata adresa

    http://localhost:8080/camin/Inregistrare. Va fi afisata o pagina de intampinare in care este

    ceruta inregistrarea utilizatorului. La introducerea datelor se va face o verificare a acestora si

    in functie de ele vor exista urmatoarele situatii:

    parola si numele vor fi considerate valide si pagina principala a aplicatiei va fi

    afisata.De aici se pot alege principalele functionalitati.

    numele utilizatorului nu este gasit si se va afisa din nou pagina de inregistrare cu un

    mesaj de eroare corespunzator

    numele utilizatorului este bun insa parola introdusa este incorecta.Se ve afisa din nou

    pagina de inregistrare utilizatorul fiind avertizat de cauza nereusitei inregistrarii sale.

    In continuare vom trata prima situatie de mai sus in care utilizatorului ii sunt permise

    operatiile implementate. In celelalte doua situatii utilizatorul nu poate trece de prima pagina

    de inregistrare.

    Pentru a adauga cheltuieli unor studenti dintr-o anumita locatie din cadrul caminului

    trebuie aleasa optinuea Add Cost.La selectarea acesteia o pagina va fi afisata in care se va

    cere alegerea locatiei unde cheltuielile au fost facute.Astfel se pot selecta urmatoarele tipuri

    de cheltuieli:

    Pagina 48 din 51

    House

    44

    House

    42

    4 40

    House

    46

    House

    19

    House

    17

    House11

    House

    09A

    House

    09

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    49/51

    la nivel de casa .In urma acestei selectii se va adauga in pagina o noua posibilitate de

    selectare a unei case.Se poate selecta de asemenea varianta all cheltuielile fiind astfel

    distribuite tuturor studentilor din camin.

    la nivel de apartament dintr-o anumita casa .In acest caz doua posibilitati de selectare

    vor fi introduse , una pentru casa si alta pentru apartament

    la nivel de camera.Pentru selectarea camerei se vor introduce trei posibilitati de

    selectie cate una pntru casa,apartament si camera.

    In pagina va mai fi disponibil si un formular pentru introducerea datei la care aceste

    cheltuieli au fost facute.Aceasta este necesara pentru a identifica studentii cazati in locatia

    respectiva la data efectuarii reparatiilor sau inlocuirilor. Dupa completarea informatiilor

    ,pentru a merge mai departe trebuie apasat butonul din partea de jos a paginii. Astfel se va

    afisa o noua pagina in care se va cere introducerea cheltuielilor totale efectuate. In partea de

    sus a pagini se vor afisa datele locatiei unde urmeaza sa fie introduse cheltuielile.Astfel

    utilizatorul poate sa verifice daca informatiile introduse sunt chiar cele dorite. Ultima operatie

    ce trebuie executata este apasarea butonulu Insert Expense.In urma apasarii se va calcula

    suma ce revine fiecarui student din locatia aleasa si aceasta se va introduce in contul

    studentilor.

    Urmatoarea optiune prezentata este cea de vizualizare camere libere.Pentru aceasta

    din pagina principala a aplicatiei se acceseaza View free rooms. Se va afisa o pagina in care

    este pus la dispozitie un formular pentru completarea perioadei pentru care se cauta camere

    libere. In functie de parametrii curenti ai aplicatiei data de final nu va putea lua decat anumite

    valori.Dupa alegerea perioadei dorite si apasarea butonului Next se vor afisa toate camerele

    disponibile la data ceruta impreuna cu detalii legate de acestea. Din aceasta pagina este

    posibila o cerere de rezervare a unei camere.Astfel apasand optiunea Book din dreptul

    camerei dorite vom fi redirectionati catre o noua pagina in care datele studentului ce urmeaza

    a fi cazat vor fi introduse.Inserarea in baza de date nu se va face inainte ca datele sa fie

    verificate. In cazul aparitiei unor mesaje, casutele text mentionate trebuiesc obligatoriu

    completate.

    Pentru a vizualiza contractele cu data de terminare situate intr-o perioada anume se va

    accesa optiunea Departures from rooms din pagina principala. Dupa selectare va fi afisata o

    pagina din care se poate selecta data incepand cu care se cauta contractele scadente.Sfaristul

    perioada de cautare va fi dat de parametrul aplicatiei

    Pagina 49 din 51

  • 7/28/2019 Studiu de Caz Privin Dezvoltarea Si Implementarea Unui Sistem Administrativ Pentru Un Camin de Studenti

    50/51

    DEPARTURE_VIEW_MONTH_NUMBER care indica numarul de luni ce se adauga la

    perioada de start a cautarii pentru a obtine ultima data luata in considerare. Astfel daca

    parametrul are valoarea 5 de exemplu inseamna ca se vor cauta camerele cu contracte

    scadente in maxim 5 luni de la data introusa de utlizator.Dupa apasarea butonului next se va

    declasna cautarea si eventualele rezultate gasite vor fi afisate.

    O alta optiune a aplicatiei este cea de cautare a unei persoane.Pentru a o acesa trebuie

    apasat Search Person. Cautarea se va face in functie de unul din cele trei criterii de mai jos:

    nume si/sau prenume

    nationalitate

    locatia unde este cazata

    Pentru fiecare din aceste criterii este pus la dispozitie un formular pentru a prelua date

    despre persoana cautata.

    Primul formular preia date despre numele si prenumele persoanei cautate. In cazul in

    care una dintre aceste date nu este cunoscuta se poate face si o cautare numai dupa prenume

    sau numai dupa nume.

    In cel de-al doilea formular se poate selecta nationalitatea persoanei cautate dintr-o

    lista de tari pusa la dispozitie utilizatorului.

    Ultimul formular incearca sa gaseasca o persoana in functie de locatie unde este

    cazat.Se pot introduce date doar despre casa rezultatul obtinut fiind afisarea tuturor

    studentilor cazati in casa. Cautarea se va restrange in cazul in care se va introduce si un

    anume apartament , iar daca si camera este introdusa atunci cautarea va fi foarte exacta.La

    selecta