You are on page 1of 31

PANEVROPSKI UNIVERZITET APEIRON

FAKULTET INFORMACIONIH TEHNOLOGIJA


Redovne studije
Smjer: “Poslovna Informatika”

Predmet:
Viši programski jezici i RAD alati

S.U.T.U.R KRŠIĆ
Seminarski rad

Predmetni nastavnik:
Prof. dr Zoran Ž. Avramović, dipl.inž.elek.
Student:
Aleksa Marčeta
Indeks br. 38-17/RPI-S

Banja Luka, septembar 2019


S.U.T.U.R KRŠIĆ

SADRŽAJ
1. Uvod ..................................................................................................................... 3
2. O samom projektu ................................................................................................ 4

2.1. Administratorski tip naloga ........................................................................... 5

2.1.1. Dodavanje novog korisnika.................................................................... 7


2.1.2. Pretraga radnika...................................................................................... 9
2.1.3. Pregled radnika ..................................................................................... 12
2.1.4. Skladište ............................................................................................... 13

2.2. Korisnički tip naloga ................................................................................... 14


2.3. Gost.............................................................................................................. 18

3. Dodatni kod ........................................................................................................ 22


4. Baza podataka .................................................................................................... 25
5. Zaključak ............................................................................................................ 29
6. Slike.................................................................................................................... 30

2
S.U.T.U.R KRŠIĆ

1. Uvod

Proizvod povezanosti znanja između dva predmeta (baze podataka i viši


programski jezici i RAD alati ) je seminarski rad na temu S.U.T.U.R Kršić, koji služi
kao osnova za objašnjavanje istoimenog projekta.
Projekat je sam po sebi baziran na zahtjevu prijatelja da mu se olakša rad u
njegovoj firmi pri računanju stanja robe i administracije radnika. Ovu priliku smo
kolega Aleksandar Panzalović i ja iskoristili da ujedno pomognemo našem
zajedničkom prijatelju i u isto vrijeme unaprijedimo naše znanje te pokrijemo dva
predmeta na fakultetu.
Pošto je projekat poprilično opširan sa širokom lepezom opcija, ovde ću se
osvrnuti na glavne funkcionalnosti i potruditi se da ih što detaljnije opišem.

U seminarskom radu ću početi od tipova naloga koji se mogu prijaviti u


program i funkcije koje oni mogu imati na osnovu njihove pozicije unutar
“hipotetičke” firme za koju se pravi program. U nastavku ću prikazati bazu podataka
zajedno sa dijagramom relacije entiteta koji se nalaze u toj bazi, te osvrnuti se na
objašnjavanje tabela i ostalih faktora za rad baze.
Baza korištena u ovom projektu je MS SQL Server 2014, bazu smo povezali
pomoću već postojećih funkcija programskog jezika “Visual Basic” koji se koristio u
projetku. Projekat je rađen u programu Visual Studio 2019. Izvorni kod projekta se
može preuzeti na linku.

3
S.U.T.U.R KRŠIĆ

2. O samom projektu

Kao što sam rekao krenuću prvo od opisivanja samog projekta i njegove
svrhe. Pošto sam objasnio kako smo kolega i ja došli na ideju ovog projekta sada
je red da se detaljnije osvrnem na sam projekat.
S.U.T.U.R Kršić, ime projekta je dato po imenu firme koja se bavi
pogrebnim uslugama, prodajom opreme, organizovanje ručka, prevza, hladnjače
itd. Vlasnik ove firme je naš prijatelj preko kog smo došli do projekta tako da
smo zaključili da ovo ime najviše odgovara ovoj pomalo i morbidnoj temi.
Projekat se odma od samog početka i prvih dana svog nastanka granao
na tri glavne strane, administratorska grana, korisnička i gost. Sad unaprijed ću
napomenuti da smo svijesni nekih nelogičnosti u programu, ali na kraju ovo je
samo prezentacioni program, koji se neće prodavati i koristiti za bilo kakvu
finansijsku dobit, njegova primarna uloga je da bude pokazatelj znanja koje smo
koleg i ja postigli, no da se vratim na temu. Kao što sam već spomenuo, imamo
tri ogranka. Administratorski ogranam služi za kontrolisanje robe i radnika, dok
korisnicki ogranak predstavlja ustvari obične radnike firme tako da nemaju neku
veliku mogućnost manipulacije u samom programu. Zadnji ogranak je gost, to je
jedini ogranak koji nema svoju način prijate povezan sa bazom. već pristupa
programu kao posmatrač sa ulogom kupca. Gost je nalog napravljen i namjenjen
da služi kao kupac proizvoda koje firma nudi. Tu se već vidi prva nelogičnost, jer
po nekom logičnom načinu zaključivanja, osoba mora da skine aplikaciju recimo
sa interneta, instalira je i tek onda da izabere šta će da kupi. Tako da ovaj sistem
kupovine najviše bi odgovarao nekoj aplikaciji koja bi bila na intenetu, radjena u
PHP-u ili Python-u.

4
S.U.T.U.R KRŠIĆ

2.1. Administratorski tip naloga

U prethodnoj glavi je već spomenuto šta su glavna zaduženja administartora.


Mi smo se odlučili za malo drugčiji pristup programu te smo napravili više različitih
tipova administratorskih naloga:
 Administrator
 Vlasnik
 Menadžer
Svaka od ovih radnih pozicija unutar firme, ima različita dopuštenja.
Administrator kao i svaki administrator unutar nekog sistema, treba imati sva
odobrenja.
Njegove mogućnosti
su da pregleda Log
datoteke. Log
datoteke dijelimo na
tri gurpe, gdje prve
dvije imaju po dvije
podgrupe.
Prva Log datoteka je
Prijava (Login) koja
u sebi snima
Slika 1. Administratorski panel
pokušaje prijave
korisnika. Kako bi sebi kao administratorima olakšali posao, napravili smo dvije
različite datoteke unutar Prijava Log-a, imamo uspješne i neuspješne pokušaje
prijave. Ovaj princip kada imamo uspješne i neuspješne pokušaje prijave
poprilično puno pomaže kad se radi debugging. Uvođenje logova u radnim
danima projekta, pokazalo se kao odlična praksa jer da nije bilo logova neke od
popriligno velikih grešaka možda nikad ne bi uočili, dok sa druge strane neke
nevjerovatno komplikovane nikad ne bi otklonili. Logovi su nam bili ključ za
popravljanje hash prijave i problema koju su nastali kasnije u završnim fazama
projekta.

5
S.U.T.U.R KRŠIĆ

Slika 2. Uspješne prijave

Slika 3. Neuspješne prijave

Pored ovih nama kao administratorima najbitnijih logova, uveli smo i uspješne i
neuspješne pokušaje kupovine koji su bitni menadžeru. Treći i poslednji logovi su
logovi izbrisanih korisnika od strane administratora. Tu je prikazano kad je
administrator izbrisao, ko je administrator koji je izbrisao i koji je korisnik izbrisan.

6
S.U.T.U.R KRŠIĆ

Slika 4. Kod za pravljenje Log datoteka

Način na koji pravimo ove log datoteke je taj da, promjenjivoj dodijelimo vrijednost
trenutnog vremena, koju u kombinaciji sa korisničkim imemon i lozinkom
zapisujemo u .txt tip datoteke. Na slici je prikazan princip za uspješne prijave, isti
šablon se koristi i za ostale log datoteke samo sa malim izmjenama.
2.1.1. Dodavanje novog korisnika

Slika 5. Unos novog radnika

Dodavanje novog korisnika se do sad pokazalo kao najkorišćenija funkcija


koju smo uveli. Ona je direktno povezana sa bazom, i prva koja ostavlja trajni zapis u
bazi. Vrlo je jednostavna za koristiti, unosimo ime i prezime radnika, datum rođenja
u format YYYY-MM-DD i dodjeljujemo poziciju, ovo je isključivo administratorska
funkcija, tako da samo administrator može dodavati nove korisnike. Na osnovu
pozicije koju izaberemo, automatski se određuje tip naloga. Kao što je ranije
navedeno administratorske naloge čine: Administrator, menadžer i vlasnik. Sa druge
strane imamo korisnike to jeste radnike u firmi, oni po zanimanju mogu biti: grobari,
kuhari, konobari i vozači.

7
S.U.T.U.R KRŠIĆ

Korisničko ime ovde je unikatno i ne mogu se ponavljati. Lozinka koja se unosi


nakon unosa se hešuje da bi se takva hešovana unjela u bazu podataka.

Slika 6. Heš pri unosu novog korisnika

Na slici 6. je prikazan samo kod vezan za lozinku u „Unos Radnika“ heš kod će biti
naknadno prikazan u jednom od narednih poglavlja.

Slika 7. Unos podataka u bazu

Kod na slici 7. pokazuje kako se program prepoznaje koje ime pozicije je


vezano za koju poziciju to jeste ID pozicije. I kako izlgeda unos korisnika iza
grafičkog interfejsa. Kao što je objašnjeno ranije, koristi se heš prije nego što se
podatci unesu u bazu kako bi se hešovana lozinka unijela. Metod korišten za to je
„Enkripcija.EncrpytPass()“.

8
S.U.T.U.R KRŠIĆ

Slika 8. Kod za unos novog radnika

U program je uveden brojač koji se povećava za jedan kada je neki od potrebnih


uslova ispunjen, to jeste polja koja su u bazi označena sa „NOT NULL“, brojač kada
naraste na broj 4 i pritisne se dugme registruj, primjenjuju se podešavanja koja se
mogu vidjeti na slici 8. praznimo „HashStoreUser“, kutije za tekst koje smo koristili
više ne sadrže informacije koje smo unijeli već se vraćaju na svoje početno stanje.

2.1.2. Pretraga radnika

Nakon što smo unijeli radnike sada je red da ih i pretražujemo, kako bi prvo
koliko radnika imamo, ko su radnici i po potrebi da ih izbrišemo. Pretraga radnika je
nastala kao sasvim nova forma odvojena od „Pregleda radnika“ radi
pojednosatvljivanja posla i pregleda jer upočetku je bilo predviđeno da te dvije forme
budu jedna.

9
S.U.T.U.R KRŠIĆ

Slika 9. Pretraga radnika

Klikom na drop-down meni koji se nalazi na broju 1 (označen na slici 9.)


otvaramo listu radnika klikom na korisničko ime radnika, mi biramo koga tačno
želimo da pregledamo detaljnije. Nakon što smo odabrali radnika, broj 2 nam
prikazuje informacije o tom radniku, sve informacije su osim „POZICIJA“ su
izvučene iz iste tabele, poziciju dobijamo tako što smo odratili „JOIN“ u uputu.
Detalji popunjavanja ove forme će biti prikazani u kodu na jednoj od narednih slika.
Broj 3 nam označava gdje se dugme za brisanje radnika nalazi, dugme je trenutno
sakriveno jer ni jedan radnik nije izabran. Na slici broj 10. možemo vidjeti kako
izgleda popunjena forma,
sada se može primjetiti kako
se dugme „Izbriši korisnika:“
pojavljuje.

Slika 10. Pretraga radnika, popunjena

10
S.U.T.U.R KRŠIĆ

Slika 11. Kod za pretragu

Na slici 11. vidimo kod koji se koristi da dobijemo listu korisnika sa koje želimo da
odaberemo nekog i posebno ga pregledamo. Korišćena je već postojeća konekcija sa
bazom koju ću opisati u poglavlju baze podataka.

Slika 12. Popunjavanje forme Pretraga Radnika

Tražeći da nam baza prikaže sve podatke iz tabele „korisnici“ gdje je korisnički ID
jednak onome koji smo izabrali da pregledamo, vršimo popunjavanje tabele
„user_table“ sa tim podatcima, koristeći adapter vršimo to popunjavanje i sada
poljima za tekst dodjeljujemo vrijednost koje se nalaze u tabeli „user_table“ kako bi
je popunili. Za dobijanje pozicije je pisan poseban upit, gdje radimo „JOIN“ za
spajanje tabela korisnici i pozicija na osnovu istog ID (u tabeli korisnici
„radna_pozicija“ ima vrijednost intedžera i vezana je za pozicija_id). Gdje je
korisnik onaj kojeg smo odabrali. Na istoj slici se vidi kako je dugme „Izbriši
korisnika“ podešeno da nestane.

11
S.U.T.U.R KRŠIĆ

2.1.3. Pregled radnika

Pregled radnika je forma urađena sa idejmo da olakša vršenje izmjena nad


radnicima. To već prelazi u funkcije koje su namjenjene više vlasniku nego
administatorima jer oni imaju svoj sistem pregleda, jedino u slučaju da dođe do neke
greške pri unošenju novog krosinika ovo je lakši način za ispravku tih grešaka.

Slika 13. Pregled radnika

Broj 1 označava dugme koje nam otključava polja kako bi vršili izmjene i klikom na
to dugme ono nestaje i pojavljuju se dva nova prikazana na slici 14.
Ovde možemo sačuvati izmjene o
radnicima ili jednostavno odlučiti da
ne želimo ništa od izmjena da
sačuvamo ze ih poništavamo. Broj 2
sa slike 13. predstavlja imena kolona
Slika 14. Sačuvaj, poništi izmjene na pregledu radnika
koje ce biti popunjene, popunjavanje
je automatizovano i na prostoru gdje je broj 3 se automtski prikazuje lista svih
radnika. Za popunjavanje ove tabele koristio se alat „DataSet“.

12
S.U.T.U.R KRŠIĆ

2.1.4. Skladište

Jedina potrebna funkcija menadžeru, skladište. U skladištu se vrši popunjavanje


istog, promjena cijena i pregled artikala. Administrator i vlasnik imaju mogućnost
prisupa ali to nije nešto za šta su oni zainteresovani, vlasniku je potrebno kako bi
mogao pregledati skladište sa vremena na vrijeme, ali njemu je najbitnije da ima
radnika koji će se o tome starati. Kada bi povukli neku paralelu koliko mogućnosti
ima koji od tipova administratorskih naloga rekli bi da je administrator kao
Linuxova „SUDO“ komanda, vlasnik bi bio administratorski nalog linuxa i menadžer
obični korisnik.

Slika 15. Skladište

Pri otvaranju skladišta automatski nam se pomoću DataSet-a popunjava tabela


(broj 1), tako da vidimo sve zalihe koje imamo, ali one su zaključane. Tek klikom na
dugme označeno brojem 3 (izmjene) možemo da mijenjmo stvari po tabeli ali samo
u kolonama količina i cijena. Isti ovaj šablon koriste i obični korisnici u svom
skladištu ali oni su u stanju samo da mjenjaju količinu opreme koju imamo na stanju

13
S.U.T.U.R KRŠIĆ

trenutno. Kolikom na dugme označeno brojem 2 (Izalz) vraćamo se nazad u


administratorski panel.

2.2. Korisnički tip naloga

Korisnički tip naloga nije ni izbliza bogat kao administratorski koji je bio
glavni fokus tokom ovog projekta. To naravno ne znači da je ovaj dio zapostavljen.
Saznali smo ukratko šta sve može administratorski panel i kroz jednu od opcija iz
administratorskog naloga uveli nas u neke od osnova korisničkog. Korisnički nalog
se po sebi dijeli na osnovu sledećih pozicija:
 Grobar
 Vozač
 Konobar
 Kuhar
S.U.T.U.R Kršić se na bavi samo prodajom pogrebne opreme, već sam u počteku
naveo sve čime se oni bave, te za te stvari su im potrebni njivohi radnici. Kada
orgnizuju ručak za sahrane potrebni su kuhari i konobari koji će tu raditi. Korisnički
panel je sam po sebi poprilično skroman, sadrži skladište i informacije o korisniku.
Skladište je slično ono administratorskom sa nekim sitnim izmjenama, isto
popunjeno pomoću DataSet-a. Za razliku od administratorskog, korisnički panel ima
sve kolone zaključane osim one za količinu, korisnici automatski mogu mjenjati
količinu stvari u skladištu.

Slika 16. Skladište Korisničkog panela

14
S.U.T.U.R KRŠIĆ

Po meni jedan od najtežih zadataka u projektu je bio pravljenje Informacija o


korisniku. Prvi put smo upotrijebili povlačenje podataka iz baze i popunjavanje polja
tim podatcima. Jedan od interesantnijih problema je bio računanje plate radnicima
koji smo u potpunosti uspijeli riješiti tek na samom kraju projekta.

Slika 17. Korisnički panel, provjera informacija

Kao što se da vidjeti na slici iznad, imamo podatke trenutno prijavljenog


korisnika Amara Badnjevića sa lijeve strane, a sa desne provjeravamo platu za
mjesec januar. Tokom odabira mjeseca program provjerava trenutni mjesec, i u
slučaju da smo mi izabrali platu za neki mjesec koji je prošao neće se ništa desiti, ako
smo odabrali ternutni mjesec program nas obavještava da je to trenutni mjesec, u
slučaju da smo odabrali mjesec koji još nije nastupio, program nam izbacuje
upozorenje da je ovo samo prikaz kakva plata može biti u tom mjesecu. Korisnik ima
dugme izmjeni što mu omogućava da promjeni neke od informacija o sebi, naravno
neke kao što su pozicija, korisničko ime i email ne može (pretpostavlja se da
korisnici koriste email dodjeljen od strane firme vezan za mail server).

15
S.U.T.U.R KRŠIĆ

Slika 18. Popunjavanje polja u formi informacije o korisniku

U ovom kodu nam se prvi put pojavilo povlačenje promjenjive iz druge forme, kako
bi smo prepoznali za kog korisnika trebamo da očitamo podatke, iz prove forme smo
nakon prijave povukli informaciju koji se to korisnik prijavi na osnovu toga pomoću
„WHERE“ komande izvukli tražene informacije.

Slika 19. Drop down meni za biranje mjeseca

Select Case grananje nam na primjeru sa slike 19. prikazuje kako smo dobijali
vrijednosti za mjesec kasnije upotrebljene u kodu ispod kako bi uspješno izračunali
platu za svaki dan.

16
S.U.T.U.R KRŠIĆ

Slika 20. Kod za računanje plate

Na početku koda se opet vidi primjer SELECT CASE, gdje provjeravamo da li je


trenutni mjesec veći od izabranog mjeseca (Mjesec ima vrijednost od 0-11 zato
moramo dodjeljivati +1 kako bi poređenje bilo ispravno), na primjeru ispod
provjeravamo da li je izabrani mjesec jednak trenutnom mjesecu i ostavljamo poruku
u slučaju da jeste, na kraju na trećem primjeru provjeravamo da li je trenutni mjesec
manji od izabranog u kom slučaju nemoguće je izračunati pretpostavku te ostavljamo
upozorenje da je ovo samo pretpostavka.

SQL upit u drugom dijelu koda počinje tako što dodjeljujemo skalarnu promjenjivu
koja će nam služiti kao početni datum. Definišemo ispod nje novu skalarnu
promjenjivu koja se zove mjesec i dobija vrijednost mjeseca koju smo u prošlom
kodu prikazali. Naredna skalarna promjenjiva je traženi datum, koja ima vrijednost
samo mjeseca od početnog datuma + vrijednost „@Mjesec“ što znači da ako je
mjesec nula mi dobijamo vrijednost od Januar + 0 = Januar, da nam je „@Mjesec“ sa
vrijednošću 1 to bi bilo Januar + 1 = Februar. SQL komande ne funkcionišu ovako,
ovo je recimo pseudo kod kako u nekoj teoriji gore navedena komanda funkcioniše.
Dodjeljuemo našem upitu novu promjenjivu, radni dani koja će ustvari izračunati
koliko dana ima mjesec. Radni dani sa formulom FORMAT od traženog datuma koji
recimo ima vrijednost februar traži zadnji dan, koji je trenutno 28. Ispod njega
dodjeljujemo zadnju varijablu dana rađeno. Krećemo sa pretpostavkom da nema
svako mjesec isti broj radnih dana, te da nema svaki radnik iste radne dane. Zato
ćemo računati radne dane na osnovu toga da ako mjesec ima 31 dan onda će radnici
imati 22 radna dana, ako mjesec ima 30 dana radnici imaju 19 radnih dana i na kraju
ako je mjesec februar to jeste ako ima ispot 30 dana imamo 17 radnih dana. Praznici i
godišnji nisu uračunati u ovim računicama. Na početku predavanja i vježbi nam je
rečeno. Sve što se može izračunati ne treba biti zapisano u bazi, već upravo
izračunato kad se stvori potreba za tim. Tako i mi ovde koristimo radne dane možeći

17
S.U.T.U.R KRŠIĆ

ih sa satnicom koju neka pozicija ima i sa radnim satima u danu jer opet nema svaka
pozicija isto radnih sati.

2.3. Gost

Poslednji „tip naloga“ na koji ćemo se osvrnuti je gost. Gost sam po sebi nije tip
naloga već samo pokretanje programa i korišćenje njegovih funkcija bez prijave.
Njegova jedina mogućnost je naručivanje opreme. Već je spomenuto da je ovo
funkcija kojo bi bilo najbolje da je za internet aplikaciju napravljena, ali ovde se
bavimo prezentacionim projektom. U sklopu gost forme, odlučili smo da radi
postizanja više znanja, kolega i ja napravimo novi program i pokušamo prebaciti
vrijednost iz jednog programa u drugi i isto tako pokrenuti jedan program iz drugog.

Slika 21. Kupovina

Na slici 21. vidimo kako izgleda korpa za kupovinu, imamo listu proizvoda sa
nazivom, pored količina i cijena u KM. U korpu stavljamo broj koliko artikala želimo
i dobijamo ispisan iznos sa strane koji se automatski sabira i ispisuje u polju desno od

18
S.U.T.U.R KRŠIĆ

„CIJENA“. Klikom na dugme „NARUČI“ pokrećemo drugi program.

Slika 22. Kupovina proizvoda

Program je jednostavan i sastoji se samo od jedne forme, on prima vrijednost iz


prvog programa i pokazuje je ispod kreditnih kartica. Nakon što je kupac unjeo svoje
podatke i pritisnuo „KUPITE“ program provjerava stanje na njegovom računu i u
slučaju da ima dovoljno novca program sam oduzima vrijednost iz korpe od stanja na
računu snimajući u bazi novo stanje, te šalje email na datu email adressu u kojoj piše
da su sledeći produkti kupljeni, u XZY količini i da će stići na datu adresu stanovanja
u roku od 7~21 dan.

Slika 23. Popunjavanje liste proizvoda za gosta

Slika 24. Komanda za pokretanje drugog programa

19
S.U.T.U.R KRŠIĆ

Slika 25. Preuzimanje cijene

Slika 26. Kod za slanje emaila

Kako bi čitav kod mogao fino stati, poruku sam skratio, i na mjesto „OVDE IDE
LOZINKA“ namjerno nisam napisao svoju u seminarskom radu, ali na prezentaciji
projekta će vjerovatno biti zajedno sa nekim emailom napravljenim striktno za
prezentaciju i projekat.

Slika 27. Biranje kreditne kartice i provjera da li su unjete informacije tačne

Početno izabrana kartica nam je MasterCard tako da je zato ostavljamo kao i ELSE
na IF grananju. Na osnovu izabrane kartice i podataka unesenih u bazi mi
provjeravamo da li neko sa tim informacijama postoji. U slučaju da su informacije
ispravne pomoću adaptera mi punimo tabelu napravljenu samo za prijem tih podataka
iz baze.

20
S.U.T.U.R KRŠIĆ

Slika 28. Provjera stanja na računu

U ovom kodu na slici 28. vidimo nastavak onog sa slike 27. ako je broj redova u
tabeli koju smo pokušali popuniti program nam javlja da nismo unijeli tačne
informacije. U slučaju da je tabela popunjena, mi preko primarnog ključa (CVV)
tražimo stanje računa iz sasvim druge tabele u bazi i popunjavamo drugu tabelu sa
novčanim iznosom. Tek sada dolazi do provjere stanja računa, novo stanje računa je
jednako trenutno – cijena povučena iz prvog programa i tu novu vrijednost sada
unosimo u bazu.

21
S.U.T.U.R KRŠIĆ

3. Dodatni kod

U kod koji nije naveden preko formi koje sam do sada prikazivao, svrstavam kod
za povezivanje sa bazom podataka i enkrpciju (heš) pored ovih ću prikazati još
login formu koja nije vezana za naloge. Kako ne bi svaki put bili prisiljeni da na
svakoj novoj formi iznova pravimo vezu sa bazom, kolega i ja smo napravili
jednu vezu i pozivamo je svaki put kad nam treba baza.

Slika 29. Konekcija sa bazom

Ovde se nema šta posebno vidjeti, ostvarena je veza sa bazom na najjednostavniji


moguć način. Za otvaranje veze sa bazom pozivamo je pomoću
containerdb.connection.

Slika 30. Heš metod

Heš metod zajedno sa dva grananja jedno koje se koristi u pokušaju prijave i drugo
koje koristimo za hešovanje lozinke tokom pravljenja novog naloga.
HashStore promjenjiva zadužena za rad sa lozinkom iz forme za prijavu pravi heš
dužine 31 karakter pomoću MD5 od nečeg navedenog u zagradi () kod nas je u
primjeru naveden Prijava.Password_form_Box.Text, što znači tekst koji unosimo
kada se pokušavamo prijaviti. Kasnije se sadržaj iz HashStore promjenjive poredi sa
lozinkom iz baze kako bi provjerili da li je korisnik unjeo ispravne kredencijale.

22
S.U.T.U.R KRŠIĆ

Slika 31. Forma za prijavu

Na osnovu same forme može se zaključiti kako funkcioniše, ako želimo da


pristupimo kao gost, idemo na dugme gost. Ako želimo da se prijavimo unosimo
naše kredencijale i program nas razvrstava ili na korisnike ili na administratore.

Slika 32. Provjera kredencijala

Prvo sa čim počinjemo je automatsko pozivanje heš metoda


(Enkripcija.EncryptPass()), kako bi dobili hešovanu lozinku. Sada šaljemo upit bazi
da vidimo da li su informacije unesene ispravne, a nazad tražimo radnu poziciju,
korisnički_id (username) i lozinku. Pošto je radna pozicija intdžer u bazi, to znači da
dobijamo broj. Kako bi ga dalje koristili, pravimo globalnu promjenjivu tipNaloga
koji dobija vrijednost tipPozicija nove promjenjive koja preuzima od baze broj radne

23
S.U.T.U.R KRŠIĆ

pozicije za korisnika koji se pokušao povezati. U kodu na slici 33. vidimo da se


provjerava tipNaloga i na osnovu toga
upućuje na ili administratorski ili
korisnički panel. U svemu tome vidimo
kako logovi.Log (logovi se pune pri
uspješnom i neuspješnom pokušaju
prijave) i Enkripcija.HashStore
(praznimo tako da ne sadrži ništa u
slučaju da se korisnik pogrešno pokušao
prijaviti ili u toku odjave odjavio) se
pojavljuju ovde.

Slika 33. Gdje uptiti korisnika?

24
S.U.T.U.R KRŠIĆ

4. Baza podataka

Već je pomenuto da je baza koja se koristi MSSQL, tako da ćemo moći priložiti i
dijagram, sliku tabela i skriptu za instaliranje baze.

Slika 34. Dijagram relacija između tabela u bazi

Ovde nam se pojavljuju sve tabele koje smo do sada vidjeli u kodu ili spomenuli.
Nismo išli previše u detalje sa pravljenje više tabela pošto je projekat sam po sebi
opširan tako da su za svaku oblast dovoljne po dvije tabele.
Imamo naziv_opreme tabelu koja u sebi sadrži ustvari ime od čega je oprema i ID
kao primarni ključ. Šta mislim pod ime može se vidjeti na slici 35.
Ovo je ustvari tip kojem naša roba pripada.

Slika 35. Naziv opreme tabela

25
S.U.T.U.R KRŠIĆ

Oprema u sebi sadrži našu robu, opremu koju prodajemo, znači nešto od navedenog
iz tabele naziv_opreme, samo daleko opširnije.

Slika 36. Lista proizvoda

Slika 37.Tabela pozicije

26
S.U.T.U.R KRŠIĆ

Slika 38. Tabela korisnici

Kako bi komplet tabela stala, morali smo suziti polja. A da ne bi zaboravili koja
lozinka pripada kom korisniku napravili
smo dodatnu .txt datoteku sa svim
lozinkama i korisničkim ID. Kada se radi
sa heš metodima i uz to koristi puno
različitih naloga za različitim lozinkama
lako se zaboravi kom nalogu je koja bila
dodjeljena.

Slika 39. Lozinke

Slika 40. Kreditne Kartice

Lista kreditnih kartica i vlasnika tih istih kartica. Radi uvjerljivije prezentacije i kako
ne bi bili u potrebi da stalno otvaramo bazu podataka i iz nje kopiramo i unosimo ove
podatke, napravili smo partice koje ćemo koristiti.

27
S.U.T.U.R KRŠIĆ

Slika 41. Kreditna kartica

Slika 42. Tabela stanja računa

Tabele su poprilično jasne same po sebi kad se pogledaju i kad se utvrdi veza između
njih. Jedina pometnja koja može postojati je kod korisničke tabele i zašto je radna
pozicija broj. Radna pozicija je vezana sa pozicija_id iz tabele pozicija.
INSERT [dbo].[korisnici] ([korisnicki_id], [ime_korisnika],
[prezime_korisnika], [lozinka], [adresa_stanovanja], [broj_telefona], [email],
[datum_rodjenja], [pol], [radna_pozicija]) VALUES (N'MarLeksa', N'Aleksa',
N'Marceta', N'_C53E479B03B3220D3D56DA88C4CACE20', N'Zore Kovacevic 9a',
N'38766311227', N'aleksa.marceta@suturk.ba', CAST(N'1998-01-23' AS Date),
N'Muski', 1)
Ovde imamo primjer komande za popunjavanje tabele u bazi, ovo je jedna od
mnogih koje se nalaze u generisanoj skripti.

28
S.U.T.U.R KRŠIĆ

5. Zaključak
Rad na projektu je bio jako vremenski zahtjevan, puno je vremena truda i rada
uloženo u njega. Na kraju kada vidimo koliko smo uspjeli stvoriti počevši od toga da
ni kolega ni ja nikad nismo napisali ozmiljniju liniju koda. Mogu sa ponosom reći da
je ovo bilo jedno divno iskustvo, tema je opširna i mi smo je dodatno razvukli možda
u neke strane u koje i nismo trebali, ali kad se sve sumira znanje koje smo steli radeći
ovo je ono što je najbitnije i razlog zbog kog smo se odlučili na rad ovog projekta.
Mislim da su projekti nešto što bi svaki student informatike trebao više da forsira u
poređenju sa izlaskom na integralni ispit.

29
S.U.T.U.R KRŠIĆ

6. Slike
Slika 1. Administratorski panel .................................................................................... 5
Slika 2. Uspješne prijave .............................................................................................. 6
Slika 3. Neuspješne prijave .......................................................................................... 6
Slika 4. Kod za pravljenje Log datoteka ...................................................................... 7
Slika 5. Unos novog radnika ........................................................................................ 7
Slika 6. Heš pri unosu novog korisnika ....................................................................... 8
Slika 7. Unos podataka u bazu ..................................................................................... 8
Slika 8. Kod za unos novog radnika............................................................................. 9
Slika 9. Pretraga radnika ............................................................................................ 10
Slika 10. Pretraga radnika, popunjena ........................................................................ 10
Slika 11. Kod za pretragu ........................................................................................... 11
Slika 12. Popunjavanje forme Pretraga Radnika ........................................................ 11
Slika 13. Pregled radnika ........................................................................................... 12
Slika 14. Sačuvaj, poništi izmjene na pregledu radnika ............................................. 12
Slika 15. Skladište ...................................................................................................... 13
Slika 16. Skladište Korisničkog panela ...................................................................... 14
Slika 17. Korisnički panel, provjera informacija ....................................................... 15
Slika 18. Popunjavanje polja u formi informacije o korisniku .................................. 16
Slika 19. Drop down meni za biranje mjeseca ........................................................... 16
Slika 20. Kod za računanje plate ................................................................................ 17
Slika 21. Kupovina ..................................................................................................... 18
Slika 22. Kupovina proizvoda .................................................................................... 19
Slika 23. Popunjavanje liste proizvoda za gosta ........................................................ 19
Slika 24. Komanda za pokretanje drugog programa .................................................. 19
Slika 25. Preuzimanje cijene ...................................................................................... 20
Slika 26. Kod za slanje emaila ................................................................................... 20
Slika 27. Biranje kreditne kartice i provjera da li su unjete informacije tačne .......... 20
Slika 28. Provjera stanja na računu ............................................................................ 21
Slika 29. Konekcija sa bazom .................................................................................... 22
Slika 30. Heš metod ................................................................................................... 22
Slika 31. Forma za prijavu ......................................................................................... 23
Slika 32. Provjera kredencijala................................................................................... 23

30
S.U.T.U.R KRŠIĆ

Slika 33. Gdje uptiti korisnika? .................................................................................. 24


Slika 34. Dijagram relacija između tabela u bazi ....................................................... 25
Slika 35. Naziv opreme tabela.................................................................................... 25
Slika 36. Lista proizvoda............................................................................................ 26
Slika 37.Tabela pozicije ............................................................................................. 26
Slika 38. Tabela korisnici ........................................................................................... 27
Slika 39. Lozinke........................................................................................................ 27
Slika 40. Kreditne Kartice .......................................................................................... 27
Slika 41. Kreditna kartica ........................................................................................... 28
Slika 42. Tabela stanja računa .................................................................................... 28

31

You might also like