Sunteți pe pagina 1din 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

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

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

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

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

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

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


Internet Acesta componenta este disponibila utilizatorilor cu drepturi de administrator si pune Server Internet

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


Server

db

Optiunea de adaugare costuri. Aceasta optiune permite administratorului sa adauge Connection 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 Problems Administration Security 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
Module Module Module Technical Room Network

Messaging Connection Pool Module 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.
Bruckhausen DB

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

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.

International Students House (ISH) .. Appartment 1 House 9 .. Kitchen Bathroom Room 21a Figura 4.1 Structura caminului de studenti .. Appartment 2 House 44 . Appartment .. 3 House 17 Room 22a

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

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

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

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

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<obj.LOOP_NUMBER;i++) { LinkedList list=obj.getOccupiedRooms(wishedStart,wishedFinish); Random rand=new Random(); //shuffle elements of the list of free rooms Collections.shuffle(free);

Pagina 12 din 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<persnr;j++) { //I fill the auxiliary list with the first "persnr" elements of the shuffled list //I now have assigned rooms for all "persnr" students RoomStruct rm=(RoomStruct)free.get(j); //insert the groups given nationality rm.nationality=nationality; rm.sameGroup=true; //I set the sameGroup variable to true to know in future searches //the exact students that have been added //insert the rooms that were at first free , into the occupied //list , after having been assigned to the group of students list.addLast(rm); //also add the room to the supplementary list which only contains //the persons in the group to be accomodated auxList.add(j,rm); } for(int j=0;j<persnr;j++) { RoomStruct rmsBook=new RoomStruct(); rmsBook=(RoomStruct)auxList.get(j); for(int k=0;k<list.size();k++) { //take each room RoomStruct rms=new RoomStruct(); rms=(RoomStruct)list.get(k); if(rms.nationality==null) out.println("rms.nationality este null "+k);
Pagina 13 din 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

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 :

Empty Romani Room Chin a Malaysi a Indi a nationalitatilor Figura 5.2.4.1 Legenda a
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

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 Nou Apartamentul 3 Nou Nou

Pagina 16 din 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.

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

=> 24 => 6 => 5


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

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

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

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

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

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 timp Figura 5.3.5.1

SC

DI +

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

Prima varianta pentru care functia va returna true este: S Timpul Figura 5.3.5.1 A doua varianta pentru care rezultatul va fi true este: WS WF S F F WS WF

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

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

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

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

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

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

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

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 intro 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

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

} 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

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

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 sa indeplineasca 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

Servleti Java Https

Figura 3.1 Structura bazei de date bruckhausen

Pagina 35 din 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

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 din baile din caminul de studenti .

Figura 3.7 Structura tabelului bath_inventory_rel

Pagina 37 din 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_problem Campul 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

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

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

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

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

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 tabelul address.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

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

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

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

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

Planul apartamentului 1 din casa 44

Figura Planul caminului de 4 studenti 40 International Students House

House Mod de utilizare al aplicatiei.42

Bayreuther strasse

House 09

Pentru a avea acces la prima pagina a aplicatiei House va trebui accesata adresa House 09A de intampinare in care este http://localhost:8080/camin/Inregistrare. Va fi afisata o pagina 44 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 House pagina principala a aplicatiei va fi House 11 46 principalele functionalitati. afisata.De aici se pot alege 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 House pagina de inregistrare utilizatorul fiind avertizat de cauza nereusitei inregistrarii sale. 17 House In continuare19 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

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

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 selectarea unuia dintre butoanele de cautare se va afisa o lista cu studentii gasiti in functie de criteriul ales.In cazul in care sunt mai multi studenti acestia vor fi afisati ordonati dupa cea mai recenta data de sfarsit a contractelor lor. Pentru vizualizarea unor informatii detaliate despre o anumita persoana gasita se poate apasa pe numele de familie a acesteia si o noua pagina va fi deschisa. Utilizatorul are de asemenea posibilitatea sa personalizeze parametrii aplicatiei in functie de nevoile de moment.Astfel la alegerea optiunii Advanced Settings din pagina principala se va afisa o pagina in care vor fi explicate parametri configurabili ai aplicatiei. De asemenea valorile lor curente vor fi prezentate.Aceasta pagina pune la dispozitie utilizatorului o operatie de resetare a acestor valori la niste unele prestabilite prin apasarea Restore default

Pagina 50 din 51

values. De asemenea se pot introduce in campurile aferente fiecarui parametru , valori noi care apoi pot fi salvate prin apasarea butonului Update. Optiunea de cautare cazare optima este disponibila apasand Best Accomodation in pagina principala. Se va afisa o pagina in care se vor putea introduce numarul de persoane pentru care se doreste cazarea, nationalitatea acestora si perioada ceruta de persoana sau de grupul de persoane. La apasare butonului Next se va incepe cautarea variantei optime de cazare a persoanei sau grupului si se va afisa rezultatul acesteia. Administratorul va putea sa confirme aceasta varianta de cazare si sa introduca detaliile fiecarei persoane in parte.

Pagina 51 din 51