ПИА/Фебруар 2022

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

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:

  1. uvezite kolekcije iz JSON fajlova u biblioteka2022 bazu unutar MongoDB
  2. otvorite tri terminala
  3. u jednom se pozicionirajte unutar backend direktorijuma, pokrenite npm install a zatim npm run watch-ts direktorijuma (kako bi se konstantno nadgledao fajl sistem za promene u TypeScript fajlovima i automatski prevodio u JavaScript)
  4. u drugom se pozicionirajte unutar backend direktorijuma i pokrenite npm run watch-node (kako bi se konstantno nadgledao prevedeni JavaScript i restartovao Node.js čim se primeti promena)
  5. u trećem se pozicionirajte unutar frontend direktorijuma i pokrenite npm install a zatim npm 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.