ПИА/Фебруар 2022
Ispit u februarskom ispitnom roku 2022. održan je 11. februara. Bilo je moguće raditi u Java Server Faces ili Angular i Node.js tehnologijama. Na stranici predmeta dostupan je tekst zadatka kao i baze podatka za MySQL i MongoDB.
Postavka
Napraviti sledeću mini internet aplikaciju za biblioteku.
Na početnoj strani aplikacije, napraviti HTML formu, preko koje mogu da se prijavljuju korisnici sistema, a to su čitaoci i bibliotekari. Korisnici treba da imaju mogućnost unošenja korisničkog imena i lozinke i da pomoću padajuće liste odaberu: da li se prijavljuju u sistem kao čitaoci ili bibliotekari. U slučaju ispravno unetih podataka, korisniku treba omogućiti rad sa ostatkom sistema (za svaki tip treba prikazati posebnu početnu stranicu nakon prijavljivanja). Ukoliko korisnik ne unese neki od podataka ili unese pogrešne podatke, potrebno je ispisati poruku greške crvenim slovima sa mogućnošću ispravljanja greške. Po uspešnoj prijavi u sistem, korisniku dati i opciju da se odjavi. [7 poena]
Čitalac nakon prijave na sistem vidi svoje informacije (ime i prezime) i tabelarni prikaz svojih zaduženih knjiga (identifikator, naziv, autora i datum roka za vraćanje). Polje person
u bazi označava ko je zadužio knjigu. Ukoliko knjiga nije zadužena, to polje ima vrednost null
. [3 poena] Ukoliko je istekao datum za vraćanje knjige, obojiti pozadinu reda narandžastom bojom. [2 poena] Zadužene knjige se mogu i razdužiti, tj. vratiti u biblioteku (obratiti pažnju na informacije o knjizi: treba odgovarajuće kolone postaviti na null
). Osvežiti stranicu nakon izmena. [4 poena]
Čitalac može da pretražuje knjige u biblioteci, po nazivu (uključujući i deo naziva) i/ili autoru. Forma treba da sadrži dva polja za unos – jedno polje za naziv i drugo za autora, kao i dugme „Pretraga“. Ako nije unet nijedan parametar, prikazati sve knjige u biblioteci. Rezultate dati tabelarno (identifikator, naziv, autora i oznaku da li je trenutno zadužena). [7 poena] Svaku knjigu iz rezultata čitalac može da zaduži, osim ukoliko ona već nije zadužena i ukoliko čitalac već nema 3 knjige na zaduženju, i u takvom slučaju treba prikazati prikladnu poruku. Knjiga se zadužuje uvek na dve nedelje (14 dana) od datuma zaduživanja. (Pomoć: JSF – koristiti LocalDate
i njegove metode; MEAN – koristiti setDate
i getDate
metode datuma, uz pomeraj) [7 poena]
Bibliotekar nakon prijave na sistem može da doda novu knjigu u biblioteku, uz ispravan unos svih podataka – identifikatora (mora biti jedinstven), naziva knjige i imena autora. Ukoliko neki podatak nije unet u okviru forme, a pokuša se unošenje nove knjige, ispisati prigodnu poruku. Smatrati da jednu knjigu uvek piše tačno jedan autor. [5 poena]
Rešenje
Java Server Faces
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
Angular i Node.js
Rešenje se može preuzeti kao ZIP arhiva. Kako biste ga pokrenuli:
- uvezite kolekcije iz JSON fajlova u
biblioteka2022
bazu unutar MongoDB - otvorite tri terminala
- u jednom se pozicionirajte unutar
backend
direktorijuma, pokrenitenpm install
a zatimnpm run watch-ts
direktorijuma (kako bi se konstantno nadgledao fajl sistem za promene u TypeScript fajlovima i automatski prevodio u JavaScript) - u drugom se pozicionirajte unutar
backend
direktorijuma i pokrenitenpm run watch-node
(kako bi se konstantno nadgledao prevedeni JavaScript i restartovao Node.js čim se primeti promena) - u trećem se pozicionirajte unutar
frontend
direktorijuma i pokrenitenpm install
a zatimnpm start
(kako bi se pokrenuo frontend server)
Kad posetite localhost:4200, trebalo bi da vidite frontend i da se pri svakoj izmeni frontend ili backend fajlova oni automatski prevode i pokreću. Ignorišite sve "sigurnosne greške" koje bi npm install
mogao da vam prikaže.