ПСИ/К2 2022

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

Drugi kolokvijum 2022. godine održan je 4. maja. Trajao je 120 minuta, nosio je 20 bodova i radio se na računaru. Štampana literatura nije bila dozvoljena, dok je za radne okvire koji su se koristili (Django, Laravel, CodeIgniter) bila dostupna dokumentacija. Tekst kolokvijuma dostupan je sa stranice predmeta, kao i fajlovi za implementaciju i skript baze.

Postavka

Data je specifikacija korisničkih zahteva veb sistema za sajam poslova i stručnih praksi za studente tehničkih fakulteta u Srbiji. Korisnici sistema se prijavljuju korišćenjem svojih kredencijala: jedinstvenog korisničkog imena i lozinke. Fizička lica su korisnici koji imaju svoje ime, prezime, datum rođenja, indeks (u obliku: GGGG-BBBB, gde su G oznake godine upisa, a B broja indeksa), i fakultet koji studiraju. Ukoliko su završili fakultet, takva lica treba označiti kao da su diplomirala. Pravna lica, odnosno kompanije, su korisnici sistema koji imaju svoj naziv, adresu, grad, poštanski broj, jedinstveni PIB (poreski identifikacioni broj), i ime i prezime odgovornog lica (direktora kompanije). Kompanija može imati jedan (glavni) ili više (dodatnih) računa (za svaki račun čuvati informacije o broju računa i kojoj banci pripada). Svi podaci su obavezni.

Kompanije raspisuju konkurse. Tip konkursa može biti konkurs za stručnu praksu ili zaposlenje. Svaki konkurs koji kompanija raspiše mora da poseduje naziv, oznaku tipa konkursa, broj otvorenih pozicija po tom konkursu, datume otvaranja i zatvaranja konkursa, broj godina iskustva osobe (samo za zaposlenje), i potrebne kompetencije. Konkurs ne mora imati nikakve tražene kompentencije, ali ih može imati i više. Kompetencije su na primer: PHP, Python, testiranje softvera, arhitekturalni uzorci, itd. Fizička lica se prijavljuju na konkurse, samo u trenutku kada su oni otvoreni. Kada se konkurs završi kompanija treba da odabere određeni broj prijavljenih osoba (fizičkih lica), prema broju otvorenih pozicija, i da ih zaposli ili primi na stručnu praksu.

Za zaposlenje mogu konkurisati samo fizička lica koja su diplomirala. Za stručnu praksu mogu konkurisati i lica koja nisu diplomirala. Nije potrebno čuvati podatke o aktivnim (potvrđenim) praktikantima u bazi podataka. Fizičko lice koje se zaposlilo, dobija svoj jedinstveni ID (identifikator) u toj kompaniji u kojoj počinje da radi i sve zaposlene osobe neophodno je čuvati u bazi podataka.

Zadaci za izradu:

  1. Na nivou relacione baze, date u MySQL skripti jobfair22.sql ili modela u models.py, utvrditi da li su podaci u bazi i da li su svi entiteti i odnosi u bazi u skladu sa gore opisanom specifikacijom. Realizovati izmene, kako bi baza podataka odgovarala ovim korisničkim zahtevima. Nije potrebno realizovati trigere i procedure.
  2. Realizovati MVC (Model-View-Controller) aplikaciju korišćenjem programskog jezika PHP ili Python. Implementaciju je moguće raditi korišćenjem objektno orijentisanog PHP koda, ili korišćenjem radnih okvira CodeIgniter, Laravel ili Django MTV (Model-Template-View). Sledeći scenariji treba da budu realizovani:
    1. Početna strana se sastoji iz gornjeg i donjeg zaglavlja i menija sa strane (header, footer i meni stranice) i centralnog dela (sadržaja). U meniju prikazati dve opcije: strana za prijavu i strana za pregled kompanija. Realizovati kontroler koji učitava stranu za prijavu kao početnu. Na strani se prikazuje forma sa tekstualnim poljem za unos naziva konkursa (ili samo dela naziva konkursa), kao i 2 polja za potvrdu (checkbox) koja označavaju tip konkursa koji pretražuje (stručna praksa ili zaposlenje). Fizičko lice unosi željene podatke i pritiska dugme TRAŽI, kojim se veb strana osvežava i iz baze dohvataju podaci koji odgovaraju parametrima pretrage. Rezultate (naziv konkursa sa kompetencijama, naziv kompanije, i datum zatvaranja konkursa) prikazati jedan ispod drugog, i pored svakog radio dugme. Lice bira tačno jednu opciju (jedan konkurs), unosi u tekstualno polje ispod rezultata pretrage svoje jedinstveno korisničko ime i pritiska dugme KONKURIŠI, čime se prijava beleži u bazi podataka. Voditi računa da se u rezultatima pretrage prikazuju samo aktuelni konkursi (koji su otvoreni i koji još uvek nisu završeni). Fizičko lice može konkurisati na više konkursa istovremeno i o tome, kao i o statusu zaposlenja ne treba voditi računa (ne implementirati provere oko toga!). Fizičko lice ne može dva puta da se prijavi na isti konkurs i tada ispisati grešku. Pravno lice ne može da se prijavljuje na konkurs za posao/zaposlenje, tada isto ispisati grešku.
    2. Druga strana za pregled konkursa po kompanijama, koja se može izabrati iz menija, sadrži padajuću listu svih pravnih lica (kompanija). Odabirom neke od kompanija iz liste, i pritiskom na dugme IZABERI, prikazati tabelarno sve konkurse, sa sledećim kolonama: korisničko ime osobe koja je konkurisala, datum i vreme kada je konkurisala osoba, naziv konkursa i tip (praksa ili zaposlenje). Rezultate prikazati rastuće po korisničkom imenu osobe i prema nazivu konkursa.

NAPOMENA - Kao rešenje zadatka potrebno je priložiti:

  1. Novi skript jobfair22.sql ili Python skripte sa preuređenom bazom podataka i dovoljno popunjenom za testiranje svih scenarija.
  2. Čitav projekat veb aplikacije, sa izvornim kodom.

Rešenje

  • CodeIgniter projekat i SQL skripta
    • Za pokretanje potrebno je sledeće:
      1. Pokrenuti SQL skriptu koja će napraviti bazu i popuniti je podacima
      2. U app/Config/Database.php izmeniti kredencijale za bazu sa is1 / tubic na korisnika koji postoji i njegovu lozinku
      3. Imati Composer instaliran
      4. Pokrenuti composer install kako bi se instalirati potrebni paketi za projekat
      5. Pokrenuti php spark serve
      6. Posetiti http://127.0.0.1:8080