Post on 03-Apr-2018
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.php7/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.php37/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