QResent este o aplicatie de tip mobile ce vine in intampinarea problemelor digitalizarii sistemului educational. Aceasta este adresata atat studentilor, profesorilor cat si a adminitratorilor inregistrati. In functie de rolul utilizatorului aplicatia ofera diverse avantaje, precum:
- urmarire atenta a informatiilor de actualitate si a statisticilor oferite de fiecare materie
- un sistem de identificare a studentilor prezenti in cadrul activitatiilor prin scanarea codurilor QR
- configurarea materiilor (informatii utile: cerinte minime, intervale orare)
- descarcarea listelor de prezente pentru orice activitate din trecut
git clone https://github.com/iuliiaioana/QResentB.git
cd QResentB
pip install -r requirements.txt
Sablonul arhitectural ales pentru dezvoltarea acestui proiect a fost cel de back-end și front-end.
Utilizatorul interacționează cu aplicația prin intermediul paginilor din front-end, unde se colectează inițial datele introduse/cerute de acesta. Pe baza acestora, din front-end se trimit cereri HTTP către back-end. În back-end aplicația interacționează cu baza de date și trimite răspunsuri înapoi către front-end pentru a le interfața cu utilizatorul. Acțiuni care se fac din back-end sunt: Modificarea bazei de date (ex: la crearea unui nou cont de utilizator se adaugă o nouă intrare în tabela User, la o scanare de QR se adaugă o intrare în tabelele de prezență etc) Extragerea datelor din baza de date și trimiterea lor către front-end (ex: la crearea statisticilor despre prezență, se selectează date din baza de date, se procesează pentru a fi în formatul adecvat pentru crearea de statistici și se transmit către front-end unde se realizează afișarea acestora.
Observație: în toate tabelele coloana id este cheie primară.
User– tabelă în care sunt stocați utilizatorii aplicației. În funcție de coloana rol ei pot fi admin, profesor sau student iar asta va modifica valorile altor coloane (de exemplu un profesor va avea null în dreptul coloanei grupa). Celelalte coloane au aceeași utilizare pentru toți utilizatorii, oferind date suplimentare
Materie – tabelă în care sunt păstrate informații despre materii, în funcție de profesorul care predă. Ea se leagă de tabela de utilizatori (doar utilizatorii profesori) prin cheia id_profesor și relația user-materie este one to many.
Activitate – tabelă în care sunt stocate toate activitățile, adică orele de curs ale materiilor în intervalul de timp alocat.
User_prezenta – o tabelă intermediară între studenți și tabela propriu-zisă de prezență, în care sunt stocate toate scanările de qr ale unui student
Prezenta_activitate – tabelă în care pentru fiecare activitate, se rețin toate scanările ale tuturor studenților prezenți la activitatea respectivă. O scanare din parte unui student ajunge în baza de date ca o intrare în care se află identificatorul activității, ora la care a fost generat QR-ul, ora la care scanarea a ajuns în server și poziția de la care scanarea a fost făcută. Aceste ultime detalii au rolul de a asigura un mecanism antifraudă, atât pentru mediul online cât și pentru fizic.
POST /scan
Body | Type | Description |
---|---|---|
activitate_id |
string |
Required Activitatea la care se doreste inregistrarea |
user_id |
string |
Required Identificatorul utilizatorului |
locatie |
string |
Locatia utilizatorului |
long |
string |
Coordonata a locatiei |
lat |
string |
Coordonata a locatiei |
POST /generare_qr
Body | Type | Description |
---|---|---|
profesor_id |
string |
Required Identificatorul profesorului |
GET /prezenta/<int:activitate_id>
Parameter | Type | Description |
---|---|---|
activitate_id |
int |
Required Activitatea de la care se doreste prezenta |
Body | Type | Description |
data |
string |
Required Data de la care se doreste prezenta |
GET /dati/<int:activitate_id>
Parameter | Type | Description |
---|---|---|
activitate_id |
int |
Required Activitatea de la care se doreste zilele disponibile pentru prezenta |
- @Iulia Anghel PM
- @Lucian Roinita TEAM LEAD
- @Dragos Calin FE Developer + Tester
- @Roberta Calin FE Developer
- @Vlad Radutoiu FE Developer
- @Lavinia Nedelea BE Developer