You are on page 1of 4

Web programiranje – Specifikacija domaćih

zadataka - Grupa 2
Primenjeno Softversko Inženjerstvo 2020/2021

Uputstvo za izradu i predaju


1. Zadatak se radi samostalno i nije dozvoljeno kopirati ili koristiti kod od nekog drugog
studenta.
2. U sklopu jednog projekta potrebno je uraditi sve zadatke koji su definisani u ovom
dokumentu (rešenje koje se sastoji od tri zasebna projekta neće biti priznato).
3. Rok za završetak i predaju rešenja je 22.05.2021. u 19.59h.
4. Sav kod aplikacije je potrebno da bude na privatnom GitLab repozitorijumu koji
otvorite i na koji dodate asistentski nalog web.programiranje.psi i dodelite tom
nalogu ulogu Maintainer-a. Ime repozitorijuma mora biti sledećeg formata:
WP-DZ-XX-YYY-ZZZZ pri čemu je XX-YYY-ZZZZ broj indeksa (primer naziva
repozitorijuma: WP-DZ-PR-047-2016).
5. Minut nakon isteka roka, skripta će automatski pokupiti sve projekte sa svih
repozitorijuma studenata koji su uspešno izvršili prethodni (4.) korak i biće testirani na
plagijate. Studenti čiji projekti se pokažu da su plagijati neće biti ocenjeni (kako onaj
student koji je prepisao tako i onaj student od koga je prepisano).
6. Zadatak se radi u Visual Studio (2015 ili 2017) okruženju.
7. Zadatak se radi u .NET Framework (<=4.7.0) MVC tehnologiji.
8. Nije dozvoljeno koristiti bilo kakve dodatne biblioteke prilikom izrade zadatka sem onoga
što je ugrađeno u sam Framework.
9. Nije potrebno koristiti Javascript (niti bilo koju Javascript biblioteku).
10. Nije dozvoljeno korišćenje HTML helpera.
11. Nije dozvoljen scaffolding, odnosno automatsko generisanje koda pomoću alata koje
pruža Visual Studio.
12. Sve podatke potrebne za pravilan rad aplikacije neophodno je trajno čuvati isključivo u
tekstualnim datotekama (student bira jedan od sledećih formata: json, xml, csv, tsv ili
neki proizvoljni dsv - delimiter-separated value, odnosno delimiter kojim će odvajati
vrednosti unutar datoteke) pri čemu je potrebno u aplikaciji koristiti relativne putanje do
datoteka.
13. Svako brisanje u aplikaciji je logičko.
14. Svaki datum čuvati u formatu dd/MM/yyyy, a datum i vreme u formatu dd/MM/yyyy
HH:mm:ss.
15. Obavezno validirati sve podatke na serverskoj strani prilikom unosa i obavestiti korisnika
u slučaju da neku vrednost nije validno uneo.
16. Nije potrebno raditi validaciju na klijentskoj strani.
17. Izgled aplikacije student može napraviti po želji.
18. Sve dodatno što student implementira, a što nije navedeno u specifikaciji, se neće
bodovati i neće moći da zameni postojeće funkcionalnosti. Bodovaće se samo one
funkcionalnosti koje su navedene u specifikaciji.
19. Sva pitanja o specifikaciji domaćih zadataka postaviti isključivo unutar odgovarajuće
diskusije na Canvas platformi.
20. Dozvoljeno je dodavati nove klase i nove atribute u postojeće klase (navedene u
nastavku), ali nije dozvoljeno brisati postojeće klase (navedene u nastavku) ili atribute
koji im pripadaju.

Specifikacija zahteva
Potrebno je realizovati veb aplikaciju za prodaju gramofonskih ploča iz različitih radnji. Aplikaciju
koriste 2 grupe (uloge) korisnika: Kupac i Administrator. Aplikacija rukuje sa sledećim entitetima:

Korisnik
● Korisničko ime (jedinstveno i minimalno 3 karaktera)
● Lozinka (minimalno 8 karaktera koji mogu biti slova i brojevi)
● Ime
● Prezime
● Pol
● Email
● Datum rođenja
● Uloga (Administrator, Kupac)

Gramofonska ploča
● Naziv (minimalno 1 karakter)
● Izvođač (ime izvođača ili benda)
● Stanje (polovna ili nova)
● Žanr
● Opis
● Cena (od 0 do 30 000)
● Broj kopija na stanju (od 0 do 1000)

Radnja
● Naziv (minimalno 1 karakter)
● Adresa (tekstualna vrednost koja sadrži ulicu, broj i grad)
● Ploče

Kupovina
● Kupac (Korisnik)
● Izabrane ploče
● Datum kupovine
● Ukupno naplaćeno
Domaći zadatak 1 (5 bodova)
Implementirati sledeće funkcionalnosti:

● Registracija - neregistrovan korisnik se registruje na aplikaciju popunjavajući polja koja


su za to predviđena i nakon toga postaje Kupac. Ako je registracija neuspešna prikazuje
se korisniku poruka greške. Ako je registracija uspešna redirektuje se na stranicu za
prijavu.
● Administratori se programski učitavaju iz tekstualne datoteke i ne mogu se naknadno
dodati.
● Prijavljivanje na sistem - neprijavljeni korisnik loguje se na sistem tako što unosi
korisničko ime i lozinku korisnika za koji je registrovan. Ako je prijava neuspešna
prikazuje se korisniku poruka greške. Ako je prijava uspešna redirektuje se na stranicu
za pregled ploča koje se prodaju.

Neregistrovani korisnik

● Može da vidi sve gramofonske ploče u sistemu koje je moguće kupiti (kojih ima na
stanju i koje nisu obrisane) u vidu tabele pri čemu su ploče prikazane u redovima jedna
ispod druge.
● Može da sortira ploče po nazivu (opadajuće i rastuće), po autoru (opadajuće i rastuće) ili
ceni (opadajuće i rastuće).
● Može da pretražuje sve ploče po nazivu, po autoru ili po ceni od-do (nije potrebno
implementirati kombinovanu pretragu).
● Sortiranje i pretraga se implementiraju sa serverske strane.

Domaći zadatak 2 (5 bodova)

Administrator

● Može da obriše Kupca (logički) nakon čega on ne može više da se prijavi.


● Može da vidi listu svih ploča koje nisu obrisane u vidu tabele (vidi ploče koje je su kreirali
on i drugi administratori) i tom prilikom može da ih pretražuje i sortira kao i neregistrovani
korisnik.
● Može da vidi listu svih radnji koje nisu obrisane (vidi radnje koje je su kreirali on i drugi
administratori).
● Može da dodaje nove radnje. Ako je dodavanje neuspešno prikazuje se korisniku poruka
greške. Ako je dodavanje uspešno redirektuje se na stranicu koja prikazuje listu svih
radnji.
● Može da briše radnje. Kada se obriše neka radnja, briše se i svaka ploča iz te radnje.
● Može da dodaje nove ploče koje se prodaju. Ako je dodavanje neuspešno prikazuje se
korisniku poruka greške. Ako je dodavanje uspešno redirektuje se na stranicu koja
prikazuje listu svih ploča. Prilikom dodavanja nove ploče navodi u kojoj radnji se prodaje
i koliki je dostupan broj kopija.
● Može da modifikuje ploče koje nisu obrisane (pri čemu je moguće ažurirati/izmeniti
vrednost svakog atributa).

Domaći zadatak 3 (5 bodova)

Kupac

● Može da vidi sve svoje kupovine (sa informacijama koje ploče su kupljene u sklopu
kupovine i koliko je koštala svaka od njih, kada je izvršena kupovina i ukupno koliko je
plaćeno) u vidu tabele pri čemu su one prikazane u redovima jedna ispod druge.
● Može da vidi sve ploče koje je moguće kupiti u sistemu u vidu tabele pri čemu su one
prikazane u redovima jedna ispod druge i tom prilikom može da ih pretražuje i sortira kao
i neregistrovani korisnik.
● U sklopu jedne kupovine kupac bira ploče koje bi da kupi. Klikom na korpu može da vidi
ploče koje je izabrao i ukupnu vrednost kupovine. Ako u korpi ima ploča, može da izvrši
kupovinu. Ako je kupovina neuspešna prikazuje se korisniku poruka greške. Ako je
kupovina uspešna redirektuje se na stranicu koja prikazuje sve ranije kupovine. Nakon
svake kupovine ažurira se količna tih ploča na stanju. Ako na stanju nema neke ploče u
radnji, ona ne može biti kupljena (jedna ista ploča može da se prodaje u više radnji i tom
prilikom radnje mogu imati različiti broj kopija na stanju).
● Može da vidi sve radnje u sistemu. Odabirom neke od radnji može da vidi sve ploče
(koje nisu obrisane) u toj radnji pri čemu vidi sve informacije tih ploča uključujući broj
kopija na stanju.

You might also like