Sunteți pe pagina 1din 12

EVALEDIT - EDITOR ON-LINE DE TESTE GRILA

Cristea BOBOILĂ *

EvalEdit reprezintă o aplicaţie tip Internet al cărei scop este evaluarea on-line şi
editarea testelor grilă existente pentru evaluare. Aplicaţia are rolul de a înlesni studiul pe
internet precum şi de a oferi posibilitatea de actualizare periodică în scopul unei evaluări
cât mai reale a cunoştintelor utilizatorilor. Rolul produsului software este nu numai de a crea
posibilitatea utilizatorilor de a-şi verifica cunoştinţele on-line dar şi de crea posibilitatea
acestora de evoluţie în timp permiţându-le o bună monitorizare a rezultatelor obţinute. Pe de
altă parte aplicaţia va oferi posibilitatea operatorilor/administratorului de a schimba
periodic testel egrilă pentru a permite o actualizare cât mai eficientă a sistemului de
evaluare.
Pentru realizarea acestui software educational - EvalEdit se folosesc PHP şi MySQL.
Am ales realizarea unei baze de date în MySQL, deoarece accesul şi lucrul cu bazele de date
este mai uşor comparativ cu alte platforme, ceea ce permite o reînnoire uşoară şi rapidă a
informaţiei expuse. Un alt motiv important pentru folosirea PHP şi MySQL este că acestea
sunt cross-platform, putând rula atât pe Windows cât şi pe Linux. PHP şi MySQL oferă
posibilitatea realizării unui site dinamic, printr-o interfaţare simplă şi accesibilă oricărui
utilizator. De asemenea, pentru realizarea produsului am folosit serverul HTTP Apache, care
se caracterizează prin siguranţă şi extensibilitate.
Cuvinte cheie: Internet, e-learning, educaţia la distanţă, software educaţional

1. Introducere
Scopul acestui document este prezentarea proiectării unui sistem conform
cu standardul IEEE STD-1016-1998, IEEE Recommended Practice for Software
Design Descriptions.
Sistemul a cărui proiectare se descrie prin acest articol reprezintă o
aplicaţie tip Internet (EvalEdit) al cărei scop este evaluarea on-line şi editarea
testelor grilă existente pentru evaluare. Acest sistem are rolul de a uşura studiul
pe internet precum şi de a oferi posibilitatea de a fi reactualizat periodic în
scopul unei evaluări cât mai reale a cunoştinţelor utilizatorilor. Rolul acestui
sistem este nu numai de a crea posibilitatea utilizatorilor de a-şi verifica
cunoştinţele on-line dar şi de crea posibilitatea de analiză a evoluţiei lor în timp,
permiţându-le o bună monitorizare a rezultatelor acestora de-a lungul timpului.
Pe de altă parte această aplicaţie va crea posibilitatea de a fi schimbate periodic
testele pentru a permite o actualizare cât mai eficientă a sistemului de evaluare.
Proiectul astfel realizat se adresează în primul rând programatorilor,
designerilor şi managerilor de proiect, dar şi utilizatorului obişnuit care este
beneficiarul acestei aplicaţii, publicul ţintă al acestui document.

Page 1 of 12
Vom utiliza în continuare următoarele definiţii, acronime şi abrevieri:
• site dinamic = site care oferă posibilitatea schimbării rapide a
informaţiilor expuse, furnizând utilizatorilor informatie noua şi posibilitatea de a
interactiona. Într-un site dinamic, elementele de interactivitate se pot adăuga
foarte uşor. De asemenea, având continutul separat de prezentare, într-o bază de
date, se pot crea uşor duplicate ale site-ului, cu format potrivit destinaţiei.
• cross-platform = aplicaţii care pot rula pe o varietate de sisteme de
operare (Linux, Windows, etc.)

2. Tehnologii folosite

Pentru realizarea aplicaţiei de tip Internet - EvalEdit se folosesc PHP şi


MySQL [7][8]. Un motiv important pentru folosirea acestora este că acestea sunt
cross-platform, putând rula atât pe sisteme Windows şi Linux, cât şi pe o
mulţime de alte sisteme mai rar întâlnite. PHP şi MySQL oferă posibilitatea
realizării unui site dinamic, printr-o interfaţare simplă şi accesibilă oricui şi
lucrul cu bazele de date, ceea ce permite o reînnoire uşoară şi rapidă a
informaţiei expuse [1][5].
De asemenea, pentru realizarea site-ului se va folosi serverul HTTP
Apache, care se caracterizează prin siguranţă şi extensibilitate [11].

3. Descriere structurală a aplicaţiei


3.1. Descriere module

3.1.1. Descriere modul adaugaInfo

Nume adaugaInfo
Tip Modul de Cod
Scop Scopul acestui modul este de a facilita adăugarea în
baza de date a numelui cursantului, a unui domeniu sau a
unui test.
Mod de Funcţiile acestui modul vor fi apelate la cerinţa
operare utilizatorului, prin interfaţa cu acesta. Toate aceste funcţii
vor accesa baza de date pentru a adăuga informaţiile
corespunzătoare. Identificarea obiectului de adăugat
(nume cursant, domeniu, sau test) se face pe baza unui
parametru.
Submodule editIntrebare, este subordonat modulului
adaugaInfo, având rolul de a prelua informaţii
corespunzătoare unei întrebări a testului (număr întrebare,
număr puncte alocat întrebării, variante de răspuns,
raspunsul corect) şi a le adăuga în baza de date.
Resurse MySQL, PHP

Page 2 of 12
3.1.2. Descriere modul identificTest

Nume identificTest
Tip Modul de Cod
Scop Acest modul permite alegerea unui domeniu şi a
unui test în vederea evaluării sau în vederea editării, pe
baza informaţiilor introduse de utilizator. Funcţionalitatea
acestuia este de bază pentru submodulele pe care le are în
subordine prin faptul că identifică testul ce se va accesa în
continuare.
Mod de Funcţiile acestui modul vor fi apelate la cerinţa
operare utilizatorului, prin interfaţa cu acesta. Toate aceste funcţii
vor accesa baza de date pentru a identifica domeniul şi
testul cerut de utilizator pentru evaluare.
Submodule extragTest, este subordonat modulului
identificTest, având rolul de a extrage din baza de date şi
afişa întrebările corespunzătoare testului curent.
cronometrareTimp, este subordonat modulului
identificTest, având rolul de a extrage din baza de date
timpul setat pentru evaluare şi a cronometra scurgerea
acestuia; când acesta expiră, se opreşte derularea testului.
editIntrebare, este subordonat nu numai
modulului adaugaInfo prezentat mai sus, dar şi modulului
identificTest, având rolul de a prelua informaţii
corespunzătoare unei întrebari a testului (număr întrebare,
număr puncte alocat întrebării, variante de răspuns,
răspunsul corect) şi a le adăuga în baza de date.
stergeIntrebare, are rolul de a prelua de la
utilizator numărul întrebării care se doreşte a fi ştearsă şi
a elimina înregistrarea corespunzătoare acesteia din baza
de date.
editTimp, are rolul de a prelua de la utilizator noul
timp de evaluare care este setat pentru testul curent, şi a
reactualiza valoarea sa din baza de date.
editPondere, are rolul de a prelua de la utilizator
numărul întrebării din test pentru care se doreşte editarea
ponderii şi de a reactualiza valoarea sa din baza de date.
Resurse MySQL, PHP

Page 3 of 12
3.1.3. Descriere modul eval

Nume eval
Tip Modul de Cod
Scop Acest modul permite evaluarea răspunsurilor
cursantului. Modulul eval permite calculul
răspunsurilor corecte, greşite, a numărului de puncte
obţinute, afişarea răspunsurilor cursantului în paralel
cu răspunsurile corecte şi cu punctele alocate fiecărei
întrebări.
Mod de operare Funcţiile acestui modul accesează baza de date
pentru a compara răspunsurile cursantului cu cele
înregistrate ca fiind corecte în baza de date, şi
calculează numărul de răspunsuri corecte, numărul
de răspunsuri greşite şi pe baza acestor valori
calculează în final numărul de puncte obţinute. De
asemenea, cunoaşterea răspunsurilor cursantului în
paralel cu a celor corecte la nivelul acestui modul,
permite adăugarea unei funcţii pentru afişarea în
paralel a acestora.
Submodule grafic, este subordonat modulului eval, şi
realizează, pe baza calculelor furnizate de acest
modul, afişarea unui grafic comparativ pentru
cursantul care a mai efectuat teste anterior şi care
astfel se află deja în baza de date.
Resurse MySQL, PHP

3.1.4. Descriere modul login


Nume login
Tip Modul de Cod
Scop Acest modul are drept scop obţinerea unor
informaţii de identificare: nume de utilizator şi parolă,
pentru a limita accesul la o anumita zonă (zona de editare
sau zona de administrare).
Mod de Funcţiile acestui modul au rolul de a căuta în baza
operare de date şi a identifica existenţa înregistrării
corespunzătoare numelui de utilizator şi parolei introduse
de utilizator. Dacă această înregistrare este găsită,
accesul la următoarele pagini ale site-ului este permis,
altfel se refuză accesul.
Submodule Nu prezintă subordonări.
Resurse MySQL, PHP

Page 4 of 12
3.2. Descrierea bazei de date

Baza de date facilitează accesul la informaţiile site-ului [12][13]. Aceasta


este accesată de către toate modulele existente, permitând adăugarea
informaţiilor, ştergerea acestora sau modificarea lor. Accesul la date este realizat
prin funcţii corespunzătoare, compatibile MySQL [7].

3.2.1. Funcţionalităţile disponibile

Funcţionalităţile disponibile sunt următoarele :


– adăugare în baza de date : se realizează prin intermediul modulului
adaugInfo, care permite introducerea unor înregistrări sau câmpuri conţinând
numele cursantului, numele unui domeniu, sau numele unui test, şi a
submodulului editIntrebare (subordonat modulelor adaugInfo şi identificTest),
care permite adăugarea unei întrebări la baza de date. Adăugarea întrebării se
realizează practic prin adăugarea câmpurilor număr întrebare, număr puncte
alocat întrebării, variante de răspuns, răspunsul corect.
– extragere informaţii din baza de date: se realizează prin intermediul
modulelor:

) identificTest şi a submodulelor acestuia. Pe baza informaţiilor


introduse de utilizator, şi anume nume domeniu şi nume test, se caută în baza de
date înregistrarea corespunzătoare. Submodulele folosesc informaţiile din
câmpurile acestei înregistrări pentru a efectua anumite acţiuni : afişare test
curent (extragTest), cronometrare timp scurs, pe baza câmpului care conţine
timpul setat pentru acest test (cronometrareTimp).
) eval, care permite extragerea din baza de date a răspunsurilor corecte
şi a răspunsurilor date de cursant pentru fiecare întrebare a testului, precum şi a
punctajelor alocate fiecărei întrebări.

– ştergere informaţii din baza de date: se realizează prin intermediul


submodulului stergeIntrebare (subordonat modulului identificTest), care
elimină din baza de date câmpurile corespunzătoare întrebării ce se doreşte a fi
ştearsă.
– modificare informaţii din baza de date: se realizează prin
intermediul submodulelor editTimp, cu rolul de a reactualiza valoarea câmpului
din baza de date, corespunzătoare timpului alocat testului şi editPondere, pentru
a reactualiza valoarea câmpului din baza de date, corespunzătoare ponderii
alocate unei anumite întrebări.

Page 5 of 12
3.2.2. Resurse

Resursele necesare accesului la baza de date [6][9][10] sunt compatibile


MySQL.

3.2.3. Descrierea tabelelor bazei de date

TABEL domenii
id_domeniu smallint(5) unsigned NOT NULL auto_increment,
domeniu text,
PRIMARY KEY (id_domeniu),
UNIQUE KEY id_domeniu (id_domeniu),

Tabelul domenii conţine câmpul id_domeniu, reprezentând un


identificator numeric unic al unui domeniu, şi numele acelui domeniu.

TABEL info_test
id_domeniu smallint(5) unsigned default NULL,
nume_test text,
nr_intrebari smallint(5) unsigned default NULL,
data timestamp(10) NOT NULL,
punctaj_total smallint(5) unsigned NOT NULL default '0'

Tabelul info_test cuprinde informaţii generale despre un anumit test: cărui


domeniu îi aparţine, numele testului, numărul de întrebări al testului, data la care
a fost creat (eventual pentru ştergerea sa dacă este prezent de foarte mult timp,
nu mai e de actualitate), punctajul total al testului.

TABEL cursant
id_cursant smallint(5) unsigned default NULL,
id_domeniu smallint(5) unsigned default NULL,
nume_test text,
nr_intrebare smallint(5) unsigned default NULL,
raspA smallint(5) unsigned NOT NULL default '0',
raspB smallint(5) unsigned NOT NULL default '0',
raspC smallint(5) unsigned NOT NULL default '0',
raspD smallint(5) unsigned NOT NULL default '0'

Tabelul cursant conţine informaţii pentru testul curent efectuat, şi anume:


id-ul cursantului care susţine testul, id-ul domeniului în care se încadrează acest
test, numele testului, şi apoi, pentru fiecare întrebare din test câte o înregistrare
cu numărul întrebării şi răspunsurile la fiecare întrebare (0=incorect, 1=corect).

Page 6 of 12
TABEL cursant_evolutie
id_cursant smallint(5) unsigned default NULL,
id_domeniu smallint(5) unsigned default NULL,
nume_test text,
nr_intrebari smallint(5) unsigned NOT NULL default '0',
nr_corecte smallint(5) unsigned NOT NULL default '0',
data timestamp(12) NOT NULL,
nr_puncte smallint(5) unsigned NOT NULL default '0',
punctaj_total smallint(5) unsigned NOT NULL default '0'

Tabelul cursant_evolutie prezinta informaţii despre evoluţia în timp a


fiecărui student. Conţine id-ul cursantului, şi pentru fiecare test susţinut, id-ul
domeniului din care a fost testul, numele testului, numărul de întrebări total al
testului, numărul de răspunsuri corecte, data la care a fost susţinut testul,
numărul de puncte primite şi punctajul total al testului.

TABEL nume_cursanti
id_cursant smallint(5) unsigned NOT NULL auto_increment,
cursant text,
PRIMARY KEY (id_cursant),
UNIQUE KEY id_cursant (id_cursant),

Tabelul nume_cursanti conţine id-ul cursantului şi numele cursantului,


pentru fiecare în parte.

TABEL nume_teste
id_domeniu smallint(5) unsigned default NULL,
nume_test text

Tabelul nume_teste conţine id-ul domeniului în care se încadrează fiecare


test şi numele testului respectiv. Ajută la o accesare mai rapidă a acestor
informaţii.

TABEL teste
id_domeniu smallint(5) unsigned default NULL,
nume_test text,
nr_intrebare smallint(5) unsigned default NULL,
enunt text,
raspA text,
raspB text,
raspC text,
raspD text,
rcorectA smallint(5) unsigned NOT NULL default '0',

Page 7 of 12
rcorectB smallint(5) unsigned NOT NULL default '0',
rcorectC smallint(5) unsigned NOT NULL default '0',
rcorectD smallint(5) unsigned NOT NULL default '0',
pondere smallint(5) unsigned default NULL

Tabelul teste conţine, pentru fiecare test, informaţii referitoare la id-ul


domeniului în care se încadrează, numele testului, şi pentru fiecare întrebare
numărul ei, enunţul, răspunsurile la întrebare cu valorile 0=incorect, 1=corect şi
răspunsurile studentului, iniţial nici unul bifat (0).

TABEL users
user_name text NOT NULL,
parola text NOT NULL

Tabelul users conţine numele userului ce poate accesa zona de editare şi


parola sa.

TABEL admin
admin_nume text NOT NULL,
admin_parola text NOT NULL

Tabelul admin conţine numele administratorului ce poate accesa zona de


administrare şi parola sa.

4. Descriere dependenţe între module şi submodule [4][3]


Site-ul EvalEdit are la bază patru module de nivel înalt:

1. adaugaInfo;
2. identificTest;
3. eval;
4. login.

Submodulele corespunzătoare fiecăruia dintre modulele de mai sus sunt


următoarele:

Pentru modulul adaugaInfo:


1. editIntrebare
Acest submodul este subordonat modulului adaugaInfo, deoarece se
bazează pe informaţia oferită de acesta referitor la numele testului selectat. Are
rolul de a prelua informaţii corespunzatoare unei întrebări a testului (număr
întrebare, număr puncte alocat întrebării, variante de răspuns, răspunsul corect)
şi a le adăuga în baza de date. Este folosit în partea de adăugare de teste.

Page 8 of 12
Pentru modulul identificTest:
1. extragTest;
Acest submodul este subordonat modulului identificTest, deoarece
foloseşte informaţia furnizată de acesta referitoare la numele testului. Rolul său
este de a extrage din baza de date şi afişa întrebările corespunzătoare testului
curent.
2. cronometrareTimp;
Acest submodul este subordonat modulului identificTest, deoarece
foloseşte informaţia furnizată de acesta referitoare la numele testului, şi are rolul
de a extrage din baza de date timpul setat pentru evaluare şi a cronometra
scurgerea acestuia; când acesta expiră, se opreşte derularea testului.
3. editIntrebare;
Acest submodul este subordonat nu numai modulului adaugaInfo (cu rol
în secţiunea de adăugare de teste), dar şi modulului identificTest, deoarece
foloseşte informaţia furnizată de acesta referitoare la numele testului. Rolul său
este acelaşi ca mai sus: de a prelua informaţii corespunzătoare unei întrebări a
testului (număr întrebare, număr puncte alocat întrebării, variante de răspuns,
răspunsul corect) şi a le adauga în baza de date. Este folosit astfel şi în secţiunea
de modificare de teste, adăugând întrebări la un test deja existent.
4. stergeIntrebare;
Acest submodul este subordonat modulului identificTest, deoarece
foloseste informaţia furnizată de acesta referitoare la numele testului, şi are rolul
de a prelua de la utilizator numărul întrebării care se doreşte a fi ştearsă şi a
elimina înregistrarea corespunzătoare acesteia din baza de date.
5. editTimp;
Acest submodul este subordonat modulului identificTest, deoarece
foloseşte informaţia furnizată de acesta referitoare la numele testului. Rolul său
este de a prelua de la utilizator noul timp de evaluare care este setat pentru testul
curent, şi a reactualiza valoarea sa din baza de date.
6. editPondere;
Acest submodul este subordonat modulului identificTest, deoarece
foloseste informaţia furnizată de acesta referitoare la numele testului. În cadrul
său, este preluat de la utilizator numărul întrebării din test pentru care se doreşte
editarea ponderii şi se reactualizează valoarea sa din baza de date.

Pentru modulul eval:


1. grafic;
Acest submodul este subordonat modulului eval. Subordonarea se
datorează folosirii de către acesta a rezultatelor calculelor furnizate de modulul
eval. Pe baza acestora, este afişat unui grafic comparativ pentru cursantul care a
mai efectuat teste anterior şi care astfel se află deja în baza de date.

Page 9 of 12
Pentru modulul login: - nu există submodule.

5. Descriere interfeţe
5.1. Descriere interfaţă adaugaInfo

Interfaţa acestui modul permite adăugarea în baza de date a


numelui cursantului, a unui domeniu sau a unui test [2]. Numele cursantului sau
domeniul ce se adaugă sunt introduse de către utilizator în câmpurile etichetate
corespunzător. La fel se procedează şi în cazul adaugării unui test : în câmpurile
etichetate corespunzător sunt introduse numele testului şi timpul de evaluare.
adaugaInfo lucrează cu submodulul editIntrebare, pentru a permite utilizatorului
să adauge, în cazul creării unui test nou, a unei noi întrebări, completând
câmpurile: număr întrebare, număr puncte alocat întrebării, variante de răspuns,
răspunsul corect.

5.2. Descriere interfaţă identificTest

Interfaţa acestui modul permite alegerea unui domeniu şi a unui test în


vederea evaluării sau în vederea editării, pe baza informaţiilor introduse de
utilizator. Utilizatorul introduce în câmpurile etichetate corespunzător numele
domeniului din care face parte testul şi numele testului dorit. Modulul lucrează
cu submodulele :
– extragTest – care afişează întrebările corespunzătoare testului
curent;
– cronometrareTimp – care permite utilizatorului vizualizarea
timpului scurs;
– editIntrebare – care preia informaţiile corespunzătoare unei
întrebări (număr întrebare, număr puncte alocat întrebării, variante de răspuns,
răspunsul corect), introduse de către utilizatorul care editează testul, în
câmpurile etichetate corespunzător.
– stergeIntrebare – preia de la utilizator numărul întrebării care se
doreşte a fi ştearsă;
– editTimp - preia de la utilizator noul timp de evaluare care este
setat pentru testul curent;
– editPondere - preia de la utilizator numărul întrebării din test
pentru care se doreşte editarea ponderii, şi valoarea care se doreşte a fi setată
pentru aceasta.

5.3. Descriere interfaţă eval

Interfaţa acestui modul permite afişarea numărului de răspunsuri corecte,


greşite, a numărului de puncte obţinute, precum şi afişarea răspunsurilor

Page 10 of 12
cursantului în paralel cu răspunsurile corecte şi cu punctele alocate fiecărei
întrebări.
Modulul lucrează cu submodulul grafic, care afişează un grafic
comparativ pentru cursantul care a mai efectuat teste anterior şi care astfel se
află deja în baza de date.

5.4. Descriere interfaţă login

Interfaţa acestui modul permite utilizatorului introducerea numelui de


login şi a parolei, în câmpurile etichetate corespunzător, facilitând accesul în
zona de editare de teste sau în zona de evaluare.

6. Concluzii

Această aplicaţie de eLearning este un mijloc eficient de evaluare a


elevilor din mediul preuniversitar, fiind utilă în aprecierea gradului de însuşire a
unor cunoştinţe de programare în limbajul C, baze de date etc. Aplicaţia
cuprinde în varianta actuală un număr de două teste de cunoştinţe de programare
în limbajul C, fiecare conţinând câte 10 întrebări, privind cunoştinţe despre
declarare de variabile, tipuri de date, sintaxa instrucţiunilor, atribuirea etc.
De asemenea, este prevăzută cu un cronometru, care blochează
posibilitatea de a răspunde în continuare la întrebări o dată cu expirarea
timpului. Utilizatorul are posibilitatea de a se evalua, putând să vadă numărul de
răspunsuri corecte şi numărul de răspunsuri greşite la test, un grafic cu evoluţia
cursantului, care înfăţişează în paralel rezultatele la testul curent şi la testul
anterior, precum şi răspunsurile bifate de el şi răspunsurile corecte, pentru
fiecare întrebare.
Aplicaţia poate fi constituită ca site gratuit, pe Internet. Atât evaluarea cât
şi înregistrarea de noi teste de evaluare vor fi disponibile, fără restricţii, oricui va
accesa site-ul respectiv prin Internet. Va trebuie să existe un operator care să
asigure eliminarea testelor care nu mai sunt valabile, şi să reactualizeze pe cele
vechi.

Bibliografie

[1] Aho, A.V., Ullman, J.D., Concepts fondamentaux de l'informatique, Dunod,


Paris, 1993.
[2] Aho, A.V., Hopcroft, J.E., Ullman, J.D., Structures de données et algorithmes,
InterEditions, Paris, 1987.

Page 11 of 12
[3] Braganholo,V., Davidson, S. and Heuser, C., On the updatability of XML views
over relational databases, in Proceedings of WEBDB 2003.
[4] Chandra, A.K., Merlin, P.M., Optimal implementation of conjunctive queries in
relational data bases, 9th Annual ACM Symposium on Theory of Computing, pp. 77 -
90, 1977.
[5] Codd, E.F., A Relational Data Model for Large Shared Data Banks, Comm. of
the ACM, 13 (6), 1970, pp. 377-387.
[6] Codd, E.F., Extending the Database Relational Model to Capture More
Meaning, ACM Transactions on Database Systems (TODS), v.4, pp: 397 - 434,
1979.
[7] MySQL 5.0 Community Server, Database Design and Maintenance. Web site
http://www.mysql.com/.
[8] McCarty, B., PHP 4, Trad. Mănăstireanu Mihai, Teora, Bucureşti, 2003.
[9] Paré, R.C., From ternary relationship to relational tables: a case against
common beliefs, ACM SIGMOD Record, v.31 n.2, June 2002.
[10] Silberschatz, A., Korth, H.F., Sudarshan, S., Database System Concepts, Fifth
Edition, McGraw-Hill, 2005.
[11] The Apache Software Foundation, APACHE Server Project, Web site
http://httpd.apache.org/, 2005.
[12] Ullman, J.D., Principles of Database and Knowledge Base Systems, Computer
Science Press, 1988.
[13] Winemiller, E., Roff, J.T., Hezman, B., Groom, R., Visual Basic 6. Baze de
date, Trad. Mănăstireanu Mihai, Teora, Bucureşti, 2001.

*
Lect., PhD, Mathematics and Informatics Department University of Craiova

Page 12 of 12

S-ar putea să vă placă și