View
275
Download
3
Category
Preview:
DESCRIPTION
ZRAD
Citation preview
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 1/39
VISOKA ŠKOLA ZA MENADŽMENT
U TURIZMU I INFORMATICI U VIROVITICI
RAZVOJ PROGRAMSKOG MODULA ZA UNOS I ISPIS VIRMANA
ZAVRŠNI RAD
Predmet: Osnove programiranja
Mentor: Student:
dr. sc. Oliver Jukić, prof. v. š. Dalibor Gajdoš
VIROVITICA, 2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 2/39
SADRŽAJ
1. UVOD .............................................................................................................................. 1
2. ZNAČENJE PROGRAMSKOG MODULA ZA UNOS I ISPIS VIRMANA ................ 2
3. ALATI I PROGRAMSKI JEZICI KORIŠTENI PRI IZRADI PROGRAMSKOG
MODULA ZA UNOS I ISPIS VRIMANA ................................................................... 2
3.1. .NET Framework ..................................................................................................... 3
3.2. Računalni jezik C# ................................................................................................... 3
3.3. Računalni jezik SQL ................................................................................................ 4
4. BAZA PODATAKA ....................................................................................................... 5
5. SDL DIJAGRAM ............................................................................................................ 7
6. ZAŠTITA SOFTVERA ................................................................................................... 10
6.1. Metode zaštite softvera ............................................................................................ 10
6.1.1. Dongle ...................................................................................................... 11
6.1.2. Zaštita pomoću instalacijskog medija ...................................................... 12
6.1.3. Zaštita CD-a protiv kopiranja .................................................................. 12
6.1.4. Fiksna registracijska šifra......................................................................... 12
6.1.5. Promjenjiva registracijska šifra ................................................................ 13
6.1.6. Zaštita programa pomoću registracijske datoteke .................................... 136.2. Metoda zaštite programskog modula za unos i ispis virmana ................................ 14
7. OPIS RADA PROGRAMSKOG MODULA ZA UNOS I ISPIS VIRMANA ............... 16
7.1. Opis klasa IBANiliZR, Korisnici, Model, SifraNamjene i ValutePlacanja ............. 17
7.2. Opis klase Virmani ................................................................................................. 20
8. ZAKLJUČAK .................................................................................................................. 35
9. LITERATURA ................................................................................................................ 36
10. POPIS ILUSTRACIJA .................................................................................................. 37
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 3/39
1
1. UVOD
Svakim danom povećava se potreba za razvojem raznih aplikacija ili samostalnih
modula koji će omogućiti unapređivanje obavljanja posla. Tema ovog završnog rada je
Razvoj modula za unos i ispis virmana, pri čemu su primijenjena znanja stečena u nastavnom
kolegiju Osnove programiranja. Modul je zamišljen na način da može funkcionirati kao
samostalan program ili kao dio već postojeće aplikacije za vođenje financijskog poslovanja.
Prilikom izrade programskog modula korišteni su programski jezici C#, SQL, te .NET
Framework. U uvodnom dijelu ovog završnog rada opisano je značenje razvoja programskog
modula za unos i ispis virmana te su ukratko navedeni i opisani korišteni programski jezici.
Nadalje, poseban naglasak je stavljen na zaštitu softvera i metode zaštite te je opisana i
prikazana zaštita koja se koristi u programskom modulu. Središnji dio rada sadrži opis rada programskog modula za unos i ispis virmana i grafički prikaz. Zadnji dio rada prikazuje
strukturu tablica unutar baze podataka.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 4/39
2
2. ZNAČENJE PROGRAMSKOG MODULA ZA UNOS I ISPIS
VIRMANA
Modul omogućuje implementaciju klijent-server tehnologije uz mogućnost smještanja
glavne baze podataka i aplikacija na istom računalu. Programski modul čine nezavisne
programske jedinice s naglaskom na fleksibilnost što omogućuje prilagođavanje rješenja
prema potrebama klijenta i kasniju nadogradnju poslovnog sustava željenim poslovnim
modulima.
Za potrebe r azvoja programskog modula stvoreno je virtualno okruženje unutar
besplatnog rješenja VMware, s instaliranim Windows 7 operativnim sustavom i Microsoft
Visual Studio 2012 alatom za razvoj aplikacija. Sve aplikacije se koriste u probnom besplatnom periodu.
Ovaj programski modul omogućuje:
upis podataka za ispis na virman, kao i mogućnost ispisa već ispunjenih virmana za
uplatu na račun te
pregled korisnika, virmana, modela plaćanja i žiro računa.
3. ALATI I PROGRAMSKI JEZICI KORIŠTENI PRI IZRADIPROGRAMSKOG MODULA ZA UNOS I ISPIS VRIMANA
Prilikom izrade programskog modula za unos i ispis virmana korišten je C# programski
jezik koji je Microsoft razvio da bude moćan, ali jednostavan za pisanje. U kombinaciji sa
.NET Framework-om moguće je brzo razvijati aplikacije i programske module temeljene na
Microsoft operativnom sustavu bilo za desktop, mobilne ili web aplikacije. Za pristup
podacima i manipuliranje njima korišten je SQL jezik kao široko usvojeni standard u velikom broju različitih baza podataka. U daljnjem dijelu ovog završnog rada opisani su gore navedeni
programski jezici.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 5/39
3
3.1. .NET Framework
U stručnoj literaturi .NET (dot-net) navodi se kao najmodernija platforma koju
Microsoft veže uz softverske tehnologije budućnosti i razvoj modernih aplikacija. Radni okvir
.NET razvijen je s ciljem osiguranja okruženja za razvoj svih modernih aplikacija na
Windows operativnom sustavu (Ćirović, Dundevski, 2005).
Microsoft trenutno razvija .NET Framework 4.5, a njegova arhitektura je prikazana na
slici 1.
Slika 1. Arhitektura .NET Framework 4.5.
Izvor:http://www.dotnet-tricks.com/Tutorial/netframework/NcaT161013-Understanding-.Net-
Framework-4.5-Architecture.html, 25.10.2014.
3.2. Programski jezik C#
C#1 je moderan, tipski siguran i objektno orijentiran jezik s ugrađenim automatskim
čišćenjem memorije2, a namijenjen je širokoj primjeni (Sarić, 2007). Za razliku od
tradicionalnog proceduralnog programiranja koje se sastoji od niza funkcija i njihovih poziva,
objektno programiranje bolje oslikava realan svijet i omogućuje logičnije projektiranje
1 C# se čita kao C Sharp.
2 Čišćenje memorije na engleskom jeziku se naziva Garbage colletion.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 6/39
4
programskih zahtjeva. Na taj način C# predstavlja skladniji programski jezik, pri čemu je
jedan objekt uvijek predstavljen jednom klasom.3 Novi tipovi u programskom jeziku C#
zadaju se deklariranjem i definiranjem klasa. "Kad je klasa definirana, iz nje se mogu
instancirati, odnosno stvarati objekti. Na klase i objekte može se analogno gledati kao na
tipove i varijable. U tom kontekstu klasa je zapravo tip objekta, a objekt je varijabla određene
klase" (Petričević, 2009:50). Kada objekt na temelju klase bude napravljen, kreira se u
memoriji računala i tek tada se može koristiti. Temeljem jedne klase može se napraviti
neograničen broj objekata, odnosno broj koji je tehnički ograničen memorijom računala.4
Ono što C# čini uspješnim programskim jezikom je (Sarić, 2007:9):
"sintaksa naslijeđena iz C generacije jezika,
moćan i uporabljiv .Net Framework Class Library (FCL) s velikim brojem klasa i
objekata, te
moćan Microsoft iza sebe, koji C# predstavlja kao glavni programski jezik za sve
svoje buduće projekte."
Bit C#-a je mogućnost stvaranja novih, složenih tipova koji jasno preslikavaju objekte od
kojih se sastoji problem koji se pokušava riješiti (Petričević, 2009).
3.3. SQL - Structured Query Language
Structured Query Language (u daljnjem dijelu teksta koristi se skraćeni izraz: SQL)
prevodi se kao strukturirani upitni jezik. No, osim za postavljanje upita, SQL se koristi i za
kreiranje i brisanje objekata u bazi, manipuliranje podacima i slično (Rabuzin, 2011).
Povijest SQL-a počinje 70.-tih godina 20. stoljeća k ada je razvijen sustav System R u
laboratorijima IBM-a u San Joseu u Kaliforniji.5 Kasnije je SQL standardiziran, a iza njega
stoje dvije važne organizacije standarda ANSI6 i ISO7 (Rabuzin, 2011).
3 Mala škola programiranja C#, Microsoft, str. 6, http://www.microsoftsrb.rs/download/obrazovanje/pil/
Mala_skola_programiranja_Csharp.pdf, 18.10.2014.4 Mala škola programiranja C#, Microsoft, str. 6, http://www.microsoftsrb.rs/download/obrazovanje/pil/
Mala_skola_programiranja_Csharp.pdf, 18.10.2014.5 1970. godine Edgar Frank Ted Codd objavio je članak naziva A Relational Model of Dana for Large Shared
Dana Banks u kojem je kao osnovnu strukturu za pohranu i prikaz podataka predložio tablicu, odnosno relaciju, s
tim da bi se podacima moglo upravljati pomoću operacija kao što su selekcija, projekcija, spajanje, a za povezivanje redova u tablicama koristili bi se redundantni podaci (um jesto pokazivača). Bitno je da su podaci u
relacijskoj bazi organizirani u redove odnosno slogove koji su grupirani u tablice, s tim da red (odnosno slog)
reprezentira određeni objekt kao npr. kupca, proizvod, studenta i slično. Rabuzin, K. (2011): Uvod u SQL.
Varaždin:Fakultet organizacije i informatike. Sveučilište u Zagrebu., str.3.6 ANSI je skraćeni naziv od American National Standard Institute.
7 ISO je skraćeni naziv od International Organization for Standardization.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 7/39
5
SQL se sastoji od određenog broja naredbi koje imaju određene dijelove, odnosno
klauzule. Rabuzin (2011) naredbe klasificira u ove grupe8:
naredbe za kreiranje objekata9 - koje obuhvaćaju naredbe create, alter, drop, a
omogućuju kreiranje, mijenjanje ili brisanje postojećih objekata, s time da objekti
mogu biti tablice, indeksi, domene, sheme i slično,
naredbe za manipuliranje podacima10 - koje obuhvaćaju naredbe insert, update, delete
te u novije vrijeme naredbe merge, i
naredbe za postavljanje upita11 - koje obuhvaćaju osnovnu naredbu za zadavanje upita,
naredbu select.
Navedenim naredbama mogu se obaviti gotovo sve akcije koje su potrebne za
upravljanje podacima u bazi podataka.
4. BAZA PODATAKA
Baza podataka izrađena je u Microsoft Office Acess 2007 programu, izvršavajući upite
kojima se definiraju pojedine relacije, njihovi atributi te primarni i strani ključevi.
CREATE TABLE Korisnici (ID AUTOINCREMENT PRIMARY KEY, Naziv1red VARCHAR(21), Naziv2red
VARCHAR(21), Naziv3red VARCHAR(21), Naziv4red VARCHAR(21), NazivKorisnika VARCHAR(40))
CREATE TABLE IBANiliZR (ID AUTOINCREMENT PRIMARY KEY, IDKorisnika INTEGER, IBANiliZR
VARCHAR(21), CONSTRAINT fkKorisnik FOREIGN KEY IDKorisnika REFERENCES Korisnici(ID))
CREATE TABLE ValutePlacanja (ID AUTOINCREMENT PRIMARY KEY, OznakaValute VARCHAR(3),
NazivValute VARCHAR(40), Drzava VARCHAR(40))
CREATE TABLE Model (ID AUTOINCREMENT PRIMARY KEY, OznakaModela VARCHAR(4),
OznakaModela VARCHAR(80))
CREATE TABLE SifraNamjene (ID AUTOINCREMENT PRIMARY KEY, OznakaSifreNamjene VARCHAR(4),
Klasifikacija VARCHAR(40), OpisSifreNamjene VARCHAR(80), Definicija VARCHAR(255))
8 U stručnoj literaturi neki autori naredbe dijele u dvije osnovne grupe, dok drugi smatraju kako postoji pet grupa
naredbi.9 Naredbe za kreiranje objekata na engleskom jeziku nazivaju se Data Definition Language, odnosno skraćeno
DDL.10
Naredbe za manipuliranje podacima na engleskom jeziku nazivaju se Data Manipulation Language, odnosnoskraćeno DML. 11
Naredbe za postavljanje upita na engleskom jeziku nazivaju se Dana Query Language, skraćeno DQL ili QL.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 8/39
6
CREATE TABLE Virmani (ID AUTOINCREMENT PRIMARY KEY, NazivVirmana VARCHAR(80), IDKorisnici
INTEGER, Primatelj1red VARCHAR(20), Primatelj2red VARCHAR(20), Primatelj3red VARCHAR(20),
Primatelj4red VARCHAR(20), Hitno bit, ValutaPlacanja INTEGER, Iznos VARCHAR(20),
IBANiliZRPlatitelja INTEGER, ModelPlatitelja INTEGER, PozivNaBrojPlatitelja VARCHAR(22),
IBANiliZRPrimatelja VARCHAR(21), ModelPrimatelja INTEGER, PozivNaBrojPrimatelja VARCHAR(22),
SifraNamjene INTEGER, DatumIzvrsenja VARCHAR(11), Opis1red VARCHAR(25) , Opis1red
VARCHAR(25) , Opis2red VARCHAR(25) , Opis3red VARCHAR(25), Opis4red VARCHAR(25)
CONSTRAINT fkKorisnici FOREIGN KEY IDKorisnici REFERENCES Korisnici(ID), CONSTRAINT
fkValutePlacanja FOREIGN KEY ValutePlacanja REFERENCES ValutePlacanja(ID), CONSTRAINT
fkModelPlatitelja FOREIGN KEY ModelPlatitelja REFERENCES ModelPlatitelja(ID), CONSTRAINT
fkSifraNamjene FOREIGN KEY SifraNamjene REFERENCES SifraNamjene(ID)). Navedeno je prikazano
na slici 2.
Slika 2. Model baze podataka
Izvor: autor završnog rada
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 9/39
7
Pristup podacima iz programa ostvaren je koristeći tri osnovne klase: DataSet,
OleDbDataAdapter i OleDbConnection. DataSet predstavlja skup podataka prikupljenih u
memoriju. Ti podaci mogu se nalaziti u jednoj ili više različitih baza, pa čak i u različitim
bazama koje se nalaze na različitim serverima. OleDbConnection čini vezu prema tim
bazama, određuje vrstu baze, njen naziv i lokaciju. OleDbDataAdapter predstavlja skup SQL
upita nad podacima koje je potrebno prikupiti ili spremiti u bazu podatak 12 (slika 3).
Slika 3. Prikaz prikupljanja podataka u DataSet iz različitih baza podataka
Izvor: http://flylib.com/books/en/2.78.1.50/1/, 24.10.2014.
5. SDL DIJAGRAM
Kako bi se prikazalo ponašanje programskog modula i odvijanje procesa unutar njega,
izrađen je SDL dijagram. SDL dijagramom prikazuje se Sustav virmani na najvišoj razini
dekompozicije (slika 4). Kako bi se podrobnije objasnio način funkcioniranja zaštite od
neovlaštenog korištenja izdvojen je Blok registriranje, a njegova dekompozicija je prikazana
na slici 5 te je prikazan glavni Blok virmani na najnižoj razini dekompozicije (slika 6).
12 Više o tome na: http://msdn.microsoft.com/en-us/library/, 17.10.2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 10/39
8
Slika 4. Sust av virmani na najvišoj razini dekompozicije
Blok virmani
Sustav virmani
Blok registriranje
Blok
korisnici
Blok
IBAN ili ZR
Blok
valute placanja
Blok
modeli
Blok
sifre namjene
Izvor: autor završnog rada
Slika 5. Blok registriranje na razini dekompozicije
Izvor: autor završnog rada
blok registriranje
[pin1][bool] [pin1] [bool][bool]
[firma] [pin1] [pin1][firma][pin1]
[pin1]
P3 P2 P1
P4
P5 P6 P7
SIGNAL
bool, firma,
pin1;
provjeri_PIN2 provjera_uspjesn
og_registriranja
PIN1 PIN1(string)
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 11/39
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 12/39
10
6. ZAŠTITA SOFTVERA
Sa svrhom zaštite intelektualnog vlasništva razvijenog softvera, proizvođači istih,
implementiraju razne hardverske i softverske metode koje onemogućuju neovlaštenokopiranje i distribuciju programa te njihovo korištenje. Zaštite uključuju provjeru serijskog
broja isporučenog softvera, provjeru raznih parametara računala na koje je softver instaliran,
obveznu autentifikaciju svake zasebne kopije softvera, provjeru ispravnosti isporučenih
licenci i slično. 13
Sukladno navedenom, hardverska zaštita podrazumijeva da korisnik ima poseban uređaj
(hardver) koji se spaja na neki komunikacijski port računala, poput usb uređaja, paralelnog ili
serijskog komunikacijskog porta i slično. U njemu se može nalaziti šifra potrebna za ispravan
rad aplikacije ili dio izvršnog koda programa.14 Softverska zaštita obuhvaća unos neke
registracijske šifre ili ubacivanje registracijske datoteke, bez kojih se prekida instalacija
programa ili onemogućuje rad programa nakon završene instalacije. U obje ove metode od
korisnika se zahtijeva neka vrsta verifikacije kako bi se onemogućilo nelegalno korištenje
softvera.15
Nadalje, kao osnovni preduvjet u borbi protiv softverskog piratstva je donošenje
odgovarajuće zakonske regulative kojom se na adekvatan način reguliraju prava autora
softvera kao i prava njegovih korisnika.16 Pri tome se razlikuju ove vrste zaštite17:
autorsko pravo - kojim se štiti prezentacija neke ideje i oblika izražavanja,
patent - odnosno zaštita izuma, kojom se štiti sama ideja te
licenca - koja predstavlja proširenje autorskog prava na neki softver.
6.1. Metode zaštite softvera
U cilju zaštite softvera koriste se razna hardverska i softverska rješenja, donosno
metode zaštite softvera. Svrha zaštite je autentifikacija koja se zahtijeva od korisnika prije
korištenja softvera.18
13 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str.5.
14 Zaštita softvera, www.cis.hr/www.edicija/.../ CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 5.
15 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 5.
16
Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 5.17 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 5-6.
18 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 8.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 13/39
11
Najčešće metode zaštite su:19
dongle,
zaštita pomoću instalacijskog medija,
zaštita CD-a protiv kopiranja, fiksna registracijska šifa,
promjenjiva registracijska šifra,
zaštita programa pomoću registracijske datoteke,
metoda probijanja zaštite softvera,
debugging,
disassembling, te
decompiling.Pojedine od navedenih metoda detaljnije su opisane u ovom završnom radu.
6.1.1. Dongle
Dongle je način zaštite kod kojeg je potrebno osim softvera posjedovati i uređaj koji se
spaja na računalo koji u sebi sadrži hardverski implementirani ključ. Aplikacija prilikom
pokretanja ili na određenim mjestima unutar aplikacije provjerava postojanje ključa i prekida
rad ili obavještava o neispravnosti registracijskih podataka.20 Unutar uređaja ugrađena je
EPROM memorija u koju je moguće pohraniti dijelove programskog koda kako bi se
osigurala nemogućnost probijanja zaštite bez posjedovanja originalnog Dongle uređaja.21 Iako
je nivo zaštite koristeći Dongle uređaje vrlo visok , razlozi zbog kojih se navedena metoda u
današnje vrijeme jako rijetko koristi su:22
metoda zahtijeva instalaciju dodatnih upravljačkih softvera, odnosno drivera,
distribucija i prodaja aplikacije je ograničena jer zahtjeva fizičko slanje
Dongla korisniku,
za svaku aplikaciju postoji drugi Dongle uređaj, što bi bilo otežano ukoliko
korisnik ima više različitih softvera, te
mogućnost fizičkog oštećenja uređaja.
19 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 8 - 11.
20
Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 8.21 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 8.
22 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 14/39
12
6.1.2. Zaštita pomoću instalacijskog medija
Zaštita pomoću instalacijskog medija je zaštita kod koje se softver isporučuje najčešće
na optičkom mediju, CD-RW ili DVD-RW. Na optičkom mediju se nalazi poseban prostor u
kojem je brojač instalacija programa.23 Nakon svake uspješno obavljene instalacije brojač se
povećava i ponovo zapiše u istu datoteku.24 Ovaj način zaštite se rijetko koristi, zbog
nepraktičnosti pohranjivanja sadržaja koja je vezana samo uz posebnu vrstu optičkih medija
RW te u nemogućnosti distribuiranja programa putem interneta.25
6.1.3. Zaštita CD-a protiv kopiranja
U teoriji se navodi više vrsta zaštite CD medija protiv neovlaštenog kopiranja. Kao
najjednostavniji oblik zaštite obavlja se provjera da li se ispravan CD nalazi u CD čitaču, što
može spriječiti kopiranje i pokretanje programa s tvrdog diska računala.26 No, ova vrsta
zaštite ne razlikuje originalne od ilegalno kopiranih CD-a. Kompliciranije zaštite se obično
rade na način da se na originalni CD snimi informacija koju je nemoguće kopirati pomoću
softvera za kopiranje CD-ova. Pojavom aplikacija koje su u stanju napraviti identičnu kopiju
CD-a, aplikacija koje su u mogućnosti takve kopije reproducirati u virtualnim CD uređajima,
pristup brzom internetu i niskoj cijeni diskova za pohranu podataka navedeni način zaštite je
postao jednostavan za probijanje i lako dostupan.27
6.1.4. Fiksna registracijska šif ra
Ova vrsta zaštite unutar softvera sadrži dio koji zahtijeva unos registracijske šifre koja
se isporučuje korisniku i nije vezana uz korisničke podatke niti podatke o računalu na kojem
se instalira.28 Ova j način zaštite ima prednost jer se šifra koju unosi korisnik ne nalazi pohranjena u kodu, već se njena ispravnost provjerava kompliciranim matematičkim
obradama. Navedena metoda može se relativno jednostavno probiti pronalaženjem dijela koda
23 http://www.am.unze.ba/rg/2007/zastita%20digitalnih%20podataka/HTML/instalacijski%20mediji.html,
19.10.2014.24
Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 8.25
http://www.am.unze.ba/rg/2007/zastita%20digitalnih%20podataka/HTML/instalacijski%20mediji.html,
19.10.2014.26
Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 9.27 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 9.
28 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 9.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 15/39
13
koji provjerava ispravnost šifre te preskočiti njegovo izvršenje. Dodatno povećanje zaštite
postiže se kriptiranjem dijela koda registracijskom šifrom koji se prilikom izvršavanja može
pročitati samo ukoliko je šifra ispravna.29
6.1.5. Promjenjiva registracijska šifra
Bolji način zaštite omogućava korištenje promjenjive šifre k oja ovisi o podacima
prikupljenim o korisniku te s računala na koje je instaliran softver ili serijskom broju
isporučenog softvera. Iz navedenih podataka generira se identifikacijski broj koji je jedinstven
za korisnika i njegov kompjuter.30 Identifikacijski broj se može trajno pohraniti u skrivenu
datoteku na računalu u postavke Windows Registry-a ili ponovo generirati kada je to
potrebno. Korisnik mora davatelju registracijskih podataka poslati identifikacijski broj na
osnovu kojega mu se isporučuje odgovarajuća šifra za registraciju.31 Ova vrsta zaštite
najčešće se koristi u kombinaciji s registracijom putem interneta gdje je u toku instalacije
potrebno imati internet vezu kako bi se registracijski postupak odmah završio. Prilikom
pokretanja softvera identifikacijski broj se uspoređuje sa šifr om. Postupak uspoređivanja
odvija se koristeći matematičke obrade što dodatno otežava probijanje zaštite.32
6.1.6. Zaštita programa pomoću registracijske datoteke
Kod ovoga oblika zaštite, umjesto šifre koja su unosi u aplikaciju, učitava se
registracijska datoteka. Prednost registracijskih datoteka u odnosu na registracijske šifre je u
tome što one osim šifre mogu sadržavati i druge podatke poput informacije o korisniku,
informacije o hardveru, ključeve za dekriptiranje enkriptiranih dijelova koda softvera pa čak i
dijelove koda programa.33 Implementacija dijelova koda u registracijsku datoteku dodatno
otežava probijanje zaštite te ako bi se pronašao dio koji provjerava ispravnost i preskočilonjegovo izvršavanje, dio koda će nedostajati i aplikacija neće raditi ispravno.34 Poželjno je da
29 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 9.
30 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 9.
31 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 9.
32
Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 9 - 10. 33 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 10.
34 Zaštita sof tvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 10.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 16/39
14
provjera registracijske datoteke bude ugrađena na više mjesta u programu. Ako se
registracijska datoteka trajno pohranjuje na disku, potrebno ju je kriptirati kako bi se
onemogućilo čitanje i mijenjanje njenog sadržaja.35
6.2. Metoda zaštite programskog modula za unos i ispis virmana
U programskom modulu za unos i ispis virmana koristi se registracija pomoću
promjenjive registracijske šifr e. Prikupljaju se podaci o korisniku i podaci o serijskom broju
tvrdog diska korisničkog računala. Prikupljeni podaci se kombiniraju i matematičkom
obradom pretvaraju u identifikacijski broj koji se naziva PIN1. Generirani identifikacijski broj
se ne pohranjuje na računalo nego se prema potrebi ponovo generira. Korisnik mora
proizvođaču softvera poslati generirani identifikacijski broj računala na osnovu kojeg mu
proizvođač softvera vraća odgovarajuću šifru za registraciju softvera koja se naziva PIN2.
Završetak registracije uspješan je kada se PIN2, nakon provjere njegove ispravnosti, trajno
spremi u datoteku postavki aplikacije.
Za potrebe provjeravanja ispravnosti registracijskih podataka prilikom pokretanja
programa prvo se stvara objekt "reg" tipa klase "registriranje". On u sebi sadrži metode
"provjera_uspješnog_registriranja()", koja prilikom pozivanja vraća vrijednost "true" ili
"false" ovisno o ispravnosti podatak a za registriranje. Ako su podaci ispravni pokreće se
aplikacija, ako podaci nisu ispravni, stvara se objekt forme za unos "formaRegistracije" (slika
7).
registriranje reg = new registriranje();
if (reg.provjera_uspjesnog_registriranja())
{
Application.Run(new Virmani());
}
else
{
Form formaRegistracije = new Postavke();
formaRegistracije.ShowDialog();
}
35 Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf, 16.10.2014., str. 10.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 17/39
15
Slika 7. Forma za unos registracijskih podataka
Izvor: autor završnog rada
U polju za opis "Pin1" prikazuje se vrijednost PIN1 ovisno o serijskom broju tvrdog
diska i vrijednosti koja je upisana u tekstualno polje "Firma". U tekstualno polje za unos pod
nazivom "Pin2" unosi se vrijednost PIN2. Vrijednost koja se unosi u tekstualno polje "Firma"
je proizvoljna. Serijski broj tvrdog diska dobije se koristeći klasu "ManagementOb ject" koja
stvara instancu Windows Management Instrumentation (skraćeno WMI)36 od diska "C:\" i
njenu metodu "Get()" te čitajući njegovo svojstvo "VolumeSerialNumber".
string drive = "C";
System.Management.ManagementObject disk = new
ManagementObject("win32_logicaldisk.deviceid=\"" + drive +
":\"");
disk.Get();
Vrijednost polja PIN1 izračunava se na način da se dobiveni serijski broj diska i vrijednost
tekstualnog polja za unos "Firma" zbroje. Nakon toga, koristeći matematičke operacije,
metodu "Convert.ToInt32()" i vrijednost položaja svakog karaktera u izrazu, dobije se broj
PIN1.
Int32 pin1 = 0;
int index = 1;
foreach (Char ch in (disk["VolumeSerialNumber"].ToString() +
pFirma))
{
pin1 += pin1 + Convert.ToInt32(ch) * (index * 2);
}
36 Windows Management Instrumentation (WMI) čini osnovu za upravljanje podacima i postupcima na sustavu
baziranom na Windows-u. Dostupno na: http://msdn.microsoft.com/en-us/library/aa394582%28v=vs.85%29.aspx, 17.10.2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 18/39
16
Za dobivanje PIN2 i završetka unosa registracijskih podataka potrebno je poslati zahtjev
s brojem PIN1 davatelju registracijskih podataka. Potom, davatelj registracijskih podataka u
aplikaciju "KeyGen" unosi broj koji čini PIN1, koji se potom matematičkom obradom
generira u odgovarajući PIN2 te se ispisuje u programskom modulu kao tekst u "Label3", što
je vidljivo na slici 8.
if (textBox1.Text != "")
{
Int32 pin1 = Convert.ToInt32(textBox1.Text);
Label3.Text = (pin1 * pin1 + 53 / (pin1+1) + 113 *
(pin1/4)).ToString();
}
Dobiveni PIN2 se zatim šalje korisniku kako bi mogao uspješno završiti registraciju podataka.
Slika 8. Forma za generiranje PIN2 broja
Izvor: autor završnog rada
7. OPIS PROGRAMSKOG MODULA ZA UNOS I ISPIS VIRMANA
Programski modul za unos i ispis virmana sastoji se od nekoliko pojedinačnih klasa:
Program,
Virmani,
registriranje,
Postavke,
IBANiliZR,
Korisnici,
Model,
SifraNamjene,
ValutePlacanja (slika 9).
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 19/39
17
Slika 9. Klase programskog modula za unos i ispis virmana
Izvor: autor završnog rada
Klase IBANiliZR, Korisnici, Model, SifraNamjene i ValutePlacanja koriste se za
popunjavanje matičnih tablica podataka i koriste isti način rada kako je opisano u poglavlju
7.1. ovog završnog rada. Način rada k lasa Virmani i Postavke se razlikuju, što je opisano u
poglavlju 7.2. ovog završnog rada. Klasa registriranje sadrži metode koje su vezane za
provjeravanje ispravnosti registracijskih podataka.
7.1. Opis klasa IBANiliZR, Korisnici, Model, SifraNamjene i ValutePlacanja
Prilikom inicijalizacije forme definiraju se objekti:
set podataka "ds",
veza prema bazi "cs" i
dva prilagodnika podataka koji se koriste i za pristup podacima.
Prvi prilagodnik podataka definira upite za podatke koji se žele ažurirati, a drugi sadrži upite
za podatke iz tablice Virmani koji se moraju provjeriti prije brisanja.
DataSet ds = new DataSet();
OleDbConnection cs = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=|DataDirectory|\Virmani.mdb");
OleDbDataAdapter daValutePlacanja = new OleDbDataAdapter();
OleDbDataAdapter daVirmani = new OleDbDataAdapter();
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 20/39
18
Nakon toga, kako bi se osiguralo da u "ds" nema nepotrebnih podataka s naredbom
ds.Clear() briše se sav njegov sadržaj. Nadalje, određuje se naredba "SelectComand" koja će
preko definirane veze "cs" prema bazi podataka "Virmani.mdb" dohvatiti željene podatke i
zapisati ih u tablicu "ValutePlacanja" u "ds".
ds.Clear();
daValutePlacanja.SelectCommand = new OleDbCommand("SELECT *
FROM valuteplacanja ORDER BY ID", cs);
daValutePlacanja.Fill(ds, "ValutePlacanja");
Svaka od navedenih klasa sastoji se od grafičke forme za unos na kojoj se nalazi
element podatkovne mreže (DataGrid). Podatkovna mreža se povezuje s tablicom
"ValutePlacanja" u "ds" koristeći svoje svojstvo izvor podataka "DataSource". Zbog
preglednosti se sakriva nulta kolona u podatkovnoj mreži koja prikazuje redne brojeve redova.
dgValutePlacanja.DataSource = ds.Tables["ValutePlacanja"];
dgValutePlacanja.Columns[0].Visible = false;
Zatim se podatkovnoj mreži podese grafička svojstva, kao što su maksimalna dužina
unosa u svaku od kolona te se podese prve dvije kolone da svoju širinu prilagode dužini teksta
u njima, a treća da ispuni formu do kraja kako je prikazano na slici (slika 10).
((DataGridViewTextBoxColumn)dgValutePlacanja.Columns[1]).MaxInp
utLength = 3;
((DataGridViewTextBoxColumn)dgValutePlacanja.Columns[2]).MaxInp
utLength = 40;
((DataGridViewTextBoxColumn)dgValutePlacanja.Columns[3]).MaxInp
utLength = 40;
dgValutePlacanja.Columns[1].AutoSizeMode=
DataGridViewAutoSizeColumnMode.AllCells;
dgValutePlacanja.Columns[2].AutoSizeMode=
DataGridViewAutoSizeColumnMode.AllCells;
dgValutePlacanja.Columns[3].AutoSizeMode=
DataGridViewAutoSizeColumnMode.Fill;
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 21/39
19
Slika 10. Forma za unos valute plaćanja
Izvor: autor završnog rada
Dodavanje novog sloga vrši se u praznom retku označenom (*), za spremanje
podataka služi tipka "Spremi" koja poziva metodu "btnSpremi_Click". Pozvana metoda
onemogućuje daljnje uređivanje podatkovne mreže, ažurira podatke u tablici "ValutePlacanja"
u "ds"-u i sprema ih u bazu podataka "Virmani.mdb".
private void btnSpremi_Click(object sender, EventArgs e)
{
dgValutePlacanja.EndEdit();
daValutePlacanja.Update(ds.Tables["ValutePlacanja"]);
}
Za brisanje retka služi tipka "Obrisi" koja poziva metodu "btnObrisi_Click". Prilikom
brisanja podataka treba provjeriti da li se podaci negdje ne koriste. Pozvana metoda prvo
definira "SelectCommand" drugog OleDbDataAdaptera koja će prikupiti u tablicu virmani
sve slogove u kojima se koristi odabrani slog za brisanje u podatkovnoj mreži. Ako takvih
podataka nema, redak se briše i ažurira se "ds" i baza podataka. Ako takvih slogova ima, na
ekranu se prikazuje upozorenje s porukom "Postoje virmani ko ji koriste Valutu plaćanja" i
oznaka valute o kojoj se radi (slika 11).
private void btnObrisi_Click(object sender, EventArgs e)
{
daVirmani.SelectCommand = new OleDbCommand(
"SELECT * FROM Virmani WHERE ValutaPlacanja = " +
dgValutePlacanja.CurrentRow.Cells[0].Value, cs);
cs.Open();
if (daVirmani.SelectCommand.ExecuteScalar() == null)
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 22/39
20
{
DataGridViewRow row = dgValutePlacanja.CurrentRow;
dgValutePlacanja.Rows.Remove(row);
daValutePlacanja.Update(ds.Tables
["ValutePlacanja"]);
}
else
{
MessageBox.Show("Postoje virmani koji koriste Valutu
plaćanja ='"+
dgValutePlacanja.CurrentRow.Cells["OznakaValute"].
Value.ToString()+ "'");
}
cs.Close();
}
Slika 11. Upozorenje prilikom brisanja postojeće valute plaćanja
Izvor: autor završnog rada
7.2. Opis klase Virmani
Početna klasa Program() pokreće formu Virmani() koristeći klasu "Application" koja
pruža metode i svojstva za manipuliranje aplikacijom, poput pokretanja, zaustavljanja,
prikazivanja informacija o pokrenutoj aplikaciji i mnogih drugih.37 Pristup klasi "Application"
moguć je uključivanjem klase System.Windows.Forms koja je dio .NET-a. 38
37
http://msdn.microsoft.com, 17.10.2014. 38 http://msdn.microsoft.com/enus/library/system.windows.forms.application%28v=vs.110%29.aspx,
15.10.2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 23/39
21
using System.Windows.Forms;
namespace Virmani
{
static class Program
{
static void Main()
{
registriranje reg = new registriranje();
if (reg.provjera_uspjesnog_registriranja())
{
Application.Run(new Virmani());
}
else
{
Form formaRegistracije = new Postavke();
formaRegistracije.ShowDialog();
}
Application.Exit();
}
}
}
Prilikom učitavanja glavne forme Virmani provjerava se da li su registracijski podaci
ispravni na način kako je opisao u poglavlju 6.2. ovog završnog rada.
Početna forma Virmani sastoji se od grafičkih elemenata detaljnije prikazanih na slici 12.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 24/39
22
Slika 12. Početna forma virmani
Izvor: autor završnog rada
Na traci izbornika mogu se odabrati pozivi klasa i brzo pristupiti unosu za pojedine tablice
podataka koje se koriste prilikom popunjavanja virmana (slika 13).
Slika 13. Traka izbornika
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 25/39
23
Izvor: autor završnog rada
Početna forma sadrži padajući izbornik 39 "cbKorisnici" koji omogućava odabir
korisnika za kojeg se žele pregledati, uređivati ili unositi novi virmani te brisati ili ispisivati
isti. Forma sadrži i tipku "Obrisi korisnika" pomoću kojeg se odabrani korisnik može obrisati
ako ne sadrži niti jedan pripadajući virman (slika 14).
Slika 14. Padajući izbornik za izbor korisnika
Izvor: autor završnog rada
Popisni okvir 40 koji sadrži popis već unesenih virmana za odabranog korisnika, ispod kojeg se
nalaze dvije tipke, kojima je moguće dodati novi ili obrisati već postojeći virman. Forma
39 Padajući izbornik na engleskom jeziku glasi ComboBox.
40 Popisni okvir na engleskom jeziku glasi ListBox.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 26/39
24
sadrži element za unos teksta41 u koji se upisuje naziv virmana sa svrhom lakšeg snalaženja u
odabiru željenog virmana (slika 15).
Slika 15. Popisni okvir za izbor virmana
Izvor: autor završnog rada
Nadalje, na formi se nalazi i grupa elemenata za unos teksta koja sadrži podatke o uplatitelju,
a koji su isti za sve virmane jednog korisnika (slika 16).
Slika 16. Grupa elemenata za unos teksta
Izvor: autor završnog rada
Također, Forma se sastoji i od elemenata za unos teksta i padajućih izbornika koji sadrže
podatke o odabranom Virmanu (slika 17).
41 Unos teksta na engleskom jeziku naziva se TextBox.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 27/39
25
Slika 17. Različiti elementi za unos podataka o virmanu
Izvor: autor završnog rada
Svaki korisnik ima mogućnost unosa nekolik o svojih IBAN računa ili Žiro računa koji se
mogu izabrati u padajućem izborniku pod nazivom "cbIBANiliZR" (slika 18).
Slika 18. Padajući izbornik za odabir IBAN ili Žiro računa
Izvor: autor završnog rada
Na f ormi je moguće odabrati model koji opisuje način kontrole poziva na broj. Modeli koji se
mogu koristiti propisani su od strane FINE42
i isti se nude za izbor svim korisnicima.43
Odabirmodela prikazan je na slici 19.
42 FINA je Financijska agencija, vodeća hrvatska tvrtka na području financijskog posredovanja. Nacionalna
pokrivenost, informatički sustav prokušan na najzahtjevnijim poslovima od nacionalne važnosti te visoka profesionalna razina stručnih timova omogućuju pripremu i provedbu različitih projekata, od jednostavnih
financijskih transakcija do najsofisticiranijih poslova u elektroničkom poslovanju. http://www.fina.hr/Default.aspx?sec=896, 18.10.2014.43
http://www.fina.hr/fgs.axd?id=14625, 17.10.2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 28/39
26
Slika 19. Padajući izbornik za odabir modela za plaćanje
Izvor: autor završnog rada
Odabir šifre namjene standardiziran je prema ISO standardu ISO 20022 te je isto kao i model
u prethodno opisanom stavku, ponuđen za odabir svim korisnicima.44 (slika 20).
Slika 20. Padajući izbornik za odabir šifre namjene plaćanja
Izvor: autor završnog rada
Za spremanje izmijenjenih podataka služi tipka "cbSpremi" prikazana na slici 21.
Slika 21. Tipka za spremanje podataka
Izvor: autor završnog rada
Ukoliko je sve uspješno spremljeno, otvara se prozor za obavijest s porukom "Spremljeno", a
u slučaju ako je došlo do greške, s porukom o grešci (slika 22).
Slika 22. Obavijest o uspješnom spremanju podataka
Izvor: autor završnog rada
44 Pregled šifri namjene može se vidjeti ovdje: http://www.sberbank.hr/UserDocsImages/Novosti%20iz%20
poslovanja/HUB%20%C5%A1ifre%20namjene.pdf , 15.10.2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 29/39
27
Zbog različitih margina i pomaka ispisa, ovisno o vrsti pisača i položaju prethodno tiskanih
obrazaca na koje se vrši ispis, dodana je mogućnost pomaka po x i y osi. Vrijednosti se
pohranjuju u postavke aplikacije i vrijede za sve korisnike ( slika 23).
Slika 23. Tekstualni unos pomaka ispisa
Izvor: autor završnog rada
Za ispis odabranog virmana služi tipka "cbIspisivirman" koja poziva pregled ispisa te ako je
sve u redu može se ispisati na pisač. Ispis je prilagođen za ispis na HUB 3a obrascu (slika 24).
Slika 24. Pregled prije ispisa
Izvor: autor završnog rada
Prilikom inicijalizacije glavne forme Virmani kreiraju se objekti "ds" (DataSet), "cs"
(OleDbConnection), "daKorisniciVirmani" (OleDbDataAdapter) (slika 25).
DataSet ds = new DataSet();
OleDbConnection cs = new
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 30/39
28
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=|DataDirectory|\Virmani.mdb");
OleDbDataAdapter daKorisniciVirmani = new OleDbDataAdapter();
Za prikupljanje podataka u "ds" iz baze "Virmani.mdb" koristi se "daKorisniciVirmani".
Za svaku tablicu u "ds" potrebno je definirati naredbu pomoću koje će se pojedina tablica
popuniti podacima.
daKorisniciVirmani.SelectCommand = new OleDbCommand("SELECT *
FROM korisnici ORDER BY ID",cs);
daKorisniciVirmani.Fill(ds, "Korisnici");
daKorisniciVirmani.SelectCommand = new OleDbCommand("SELECT *
FROM virmani ORDER BY ID", cs);
daKorisniciVirmani.Fill(ds, "Virmani");
daKorisniciVirmani.SelectCommand = new OleDbCommand("SELECT *
FROM valuteplacanja ORDER BY ID", cs);
daKorisniciVirmani.Fill(ds, "ValutePlacanja");
daKorisniciVirmani.SelectCommand = new OleDbCommand("SELECT *
FROM model ORDER BY ID", cs);
daKorisniciVirmani.Fill(ds, "Model");
daKorisniciVirmani.SelectCommand = new OleDbCommand("SELECT *
FROM sifrenamjene ORDER BY ID", cs);
daKorisniciVirmani.Fill(ds, "SifraNamjene");
daKorisniciVirmani.SelectCommand = new OleDbCommand("SELECT *
FROM IBANiliZR ORDER BY ID", cs);
daKorisniciVirmani.Fill(ds, "IBANiliZR");
K oristeći svojstva "DataSource", "DisplayMember" i "ValueMember" povezuju se
elementi grafičke forme padajući izbornik i tekstualni okvir (ComboBox, ListBox) i podaci u
"ds". Na taj način se definira koji će podatak biti prikazan na formi te koja je njegova
vrijednost.
//**** ComboBoxKorisnici
cbKorisnici.DataSource=ds.Tables["Korisnici"];
cbKorisnici.DisplayMember = "NazivKorisnika";
cbKorisnici.ValueMember = "ID";
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 31/39
29
//**** ListBoxVirmani
lbVirmani.DataSource = ds.Tables["Virmani"];
lbVirmani.DisplayMember = "NazivVirmana";
lbVirmani.ValueMember = "ID";
//**** ComboBoxValutePlacanja
cbValutaplacanja.DataSource = ds.Tables["ValutePlacanja"];
cbValutaplacanja.DisplayMember = "OznakaValute";
cbValutaplacanja.ValueMember = "ID";
//**** ComboBoxModelPlatitelja
cbModelPlatitelja.DataSource = new
BindingSource(ds.Tables["Model"], null);
cbModelPlatitelja.DisplayMember = "OznakaModela";
cbModelPlatitelja.ValueMember = "ID";
//**** ComboBoxModelPrimatelja
cbModelPrimatelja.DataSource = new
BindingSource(ds.Tables["Model"], null);
cbModelPrimatelja.DisplayMember = "OznakaModela";
cbModelPrimatelja.ValueMember = "ID";
//**** ComboBoxSifraNamjene
cbSifranamjene.DataSource = ds.Tables["SifraNamjene"];
cbSifranamjene.DisplayMember = "OznakaSifreNamjene";
cbSifranamjene.ValueMember = "ID";
//**** ComboBoxIBANiliZRPlatitelja
cbIBANiliZRPlatitelja.DataSource = ds.Tables["IBANiliZR"];
cbIBANiliZRPlatitelja.DisplayMember = "IBANiliZR";
cbIBANiliZRPlatitelja.ValueMember = "ID";
//****
Kada se na formi promjeni odabrani korisnik potrebno je ažurirati i sve ostale elemente
forme. Za to je potrebno kreirati metodu "cbKorisniciSelectedIndexChanged" koja će se
pokrenuti kada se na željenom elementu "cbKorisnici" izvrši promjena odabranog sadržaja.
Na svim elementima forme potrebno je prikazati samo virmane za odabranog korisnika, što se
postiže koristeći svojstvo "DataSet.RowFilter" tablica "Virmani" i "IBANiliZR" tako da se
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 32/39
30
prikažu samo podaci koji sadrže selektirani "ID" u padajućem izborniku "cbKorisnici".
Nadalje, potrebno je osvježiti sadržaj ostalih elemenata na glavnoj formi, što se postiže
pozivanjem metode "ucitajVirman()".
private void cbKorisnici_SelectedIndexChanged(object sender,
EventArgs e)
{
if (cbKorisnici.SelectedIndex >= 0)
{
ds.Tables["virmani"].DefaultView.RowFilter =
"IDkorisnici = " + ((System.Data.DataRowView)
(cbKorisnici.SelectedItem))["ID"];
ds.Tables["IBANiliZR"].DefaultView.RowFilter =
"IDkorisnika = " + ((System.Data.DataRowView)
(cbKorisnici.SelectedItem))["ID"];
ucitajVirman();
}
}
Elemente vezane uz sadržaj virmana potrebno je ažurirati u slučaju kada se promijeni
odabrani virman na elementu popisni okvir "lbVirmani". Kada se dogodi promjena odabira
virmana tada se pokreće metoda "lbVirmani_SelectedIndexChanged" koja poziva metodu
"ucitajVirman()".
private void lbVirmani_SelectedIndexChanged(object sender,
EventArgs e)
{
ucitajVirman();
}
Metoda "ucitajVirman()" koristi svojstvo "DataBindings" grafičkih elemenata kojim se
povezuje sadržaj koji treba prikazati i izvor podataka "ds".
private void ucitajVirman()
{
tbPlatitelj1.DataBindings.Clear();
tbPlatitelj2.DataBindings.Clear();
tbPlatitelj3.DataBindings.Clear();
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 33/39
31
tbPlatitelj4.DataBindings.Clear();
if (cbKorisnici.SelectedIndex >= 0)
{
tbPlatitelj1.DataBindings.Add(new Binding("Text",
cbKorisnici.SelectedItem, "Naziv1red"));
tbPlatitelj2.DataBindings.Add(new Binding("Text",
cbKorisnici.SelectedItem, "Naziv2red"));
tbPlatitelj3.DataBindings.Add(new Binding("Text",
cbKorisnici.SelectedItem, "Naziv3red"));
tbPlatitelj4.DataBindings.Add(new Binding("Text",
cbKorisnici.SelectedItem, "Naziv4red"));
}
tbPrimatelj1.DataBindings.Clear();
tbPrimatelj2.DataBindings.Clear();
tbPrimatelj3.DataBindings.Clear();
tbPrimatelj4.DataBindings.Clear();
cbHitno.DataBindings.Clear();
cbValutaplacanja.DataBindings.Clear();
tbIznos.DataBindings.Clear();
cbIBANiliZRPlatitelja.DataBindings.Clear();
cbModelPlatitelja.DataBindings.Clear();
tbPozivnabrojplatitelja.DataBindings.Clear();
tbIBANiliZRprimatelja.DataBindings.Clear();
cbModelPrimatelja.DataBindings.Clear();
tbPozivnabrojprimatelja.DataBindings.Clear();
cbSifranamjene.DataBindings.Clear();
tbDatumizvrsenja.DataBindings.Clear();
tbOpisplacanja1.DataBindings.Clear();
tbOpisplacanja2.DataBindings.Clear();
tbOpisplacanja3.DataBindings.Clear();
tbOpisplacanja4.DataBindings.Clear();
tbNazivVirmana.DataBindings.Clear();
if (lbVirmani.SelectedIndex >= 0)
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 34/39
32
{
tbPrimatelj1.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Primatelj1red"));
tbPrimatelj2.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Primatelj2red"));
tbPrimatelj3.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Primatelj3red"));
tbPrimatelj4.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Primatelj4red"));
cbHitno.DataBindings.Add(new Binding("Checked",
lbVirmani.SelectedItem, "Hitno"));
cbValutaplacanja.DataBindings.Add(new
Binding("SelectedValue",lbVirmani.SelectedItem,
"ValutaPlacanja"));
tbIznos.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Iznos"));
cbIBANiliZRPlatitelja.DataBindings.Add(new
Binding("SelectedValue",lbVirmani.SelectedItem,
"IBANiliZRPlatitelja"));
cbModelPlatitelja.DataBindings.Add(new
Binding("SelectedValue",lbVirmani.SelectedItem,
"ModelPlatitelja"));
tbPozivnabrojplatitelja.DataBindings.Add(new
Binding("Text", lbVirmani.SelectedItem,
"PozivNaBrojPlatitelja"));
tbIBANiliZRprimatelja.DataBindings.Add(new
Binding("Text", lbVirmani.SelectedItem,
"IBANiliZRPrimatelja"));
cbModelPrimatelja.DataBindings.Add(new
Binding("SelectedValue",lbVirmani.SelectedItem,
"ModelPrimatelja"));
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 35/39
33
tbPozivnabrojprimatelja.DataBindings.Add(new
Binding("Text", lbVirmani.SelectedItem,
"PozivNaBrojPrimatelja"));
cbSifranamjene.DataBindings.Add(new
Binding("SelectedValue",lbVirmani.SelectedItem,
"SifraNamjene"));
tbDatumizvrsenja.DataBindings.Add(new
Binding("Text", lbVirmani.SelectedItem,
"DatumIzvrsenja"));
tbOpisplacanja1.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Opis1red"));
tbOpisplacanja2.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Opis2red"));
tbOpisplacanja3.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Opis3red"));
tbOpisplacanja4.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "Opis4red"));
tbNazivVirmana.DataBindings.Add(new Binding("Text",
lbVirmani.SelectedItem, "NazivVirmana"));
}
else
{
tbPrimatelj1.Text = "";
tbPrimatelj2.Text = "";
tbPrimatelj3.Text = "";
tbPrimatelj4.Text = "";
cbHitno.Checked = false;
cbValutaplacanja.Text = "";
tbIznos.Text = "";
cbIBANiliZRPlatitelja.Text = "";
cbModelPlatitelja.Text = "";
tbPozivnabrojplatitelja.Text = "";
tbIBANiliZRprimatelja.Text = "";
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 36/39
34
cbModelPrimatelja.Text = "";
tbPozivnabrojprimatelja.Text = "";
cbSifranamjene.Text = "";
tbDatumizvrsenja.Text = "";
tbOpisplacanja1.Text = "";
tbOpisplacanja2.Text = "";
tbOpisplacanja3.Text = "";
tbOpisplacanja4.Text = "";
}
}
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 37/39
35
8. ZAKLJUČAK
Programski modul za unos i ispis virmana omogućuje upis podataka za ispis na virman,
kao i mogućnost ispisa već ispunjenih virmana za uplatu na račun te pregled virmana,korisnika, banaka i žiro računa. Na taj način korisnicima se omogućuje kvalitetnije,
produktivnije i preglednije poslovanje. Programski modul može se koristiti uz već postojeće
knjigovodstvene aplikacije, ali može biti korišten i kao samostalna aplikacija.
Prilikom razvoja programskog modula stvoreno je virtualno okruženje unutar
besplatnog rješenja VMware, Windows 7 operativni sustav i Microsoft Visual Studio 2012
alat za razvoj aplikacija. Sve aplikacije mogu se koristiti u probnom besplatnom periodu.
Također, k orištenjem kombinacije programskih jezika C# i SQL- a te .NET-a pojednostavljuje se programiranje i količina koda koji treba pisati, a mogu se stvoriti
aplikacije velikih mogućnosti.
Na kraju, velika važnost pridaje se i zaštiti softvera. Proizvođači softvera s ciljem zaštite
intelektualnog vlasništva razvijenog softvera, implementiraju razne hardverske i softverske
metode koje onemogućuju neovlašteno kopiranje i distribuciju programa te njihovo
korištenje. Zaštite uključuju provjeru serijskog broja isporučenog softvera, provjeru raznih
parametara računala na koje je softver instaliran, obveznu autentifikaciju svake zasebne
kopije softvera, provjeru ispravnosti isporučenih licenci i slično. Sa ciljem zaštite
programskog modula za unos i ispis virmana koristi se registracija pomoću promjenjive
registracijske šifre, pri čemu se prikupljaju podaci o korisniku i podaci o serijskom broju
tvrdog diska korisničkog računala. Prikupljeni podaci se kombiniraju i matematičkom
obradom pretvaraju u identifikacijski broj koji se ne pohranjuje na računalo korisnika već se
prema potrebi ponovo generira.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 38/39
36
9. LITERATURA
Knjige:
1. Ćirović, Z., Dunđerski, I. (2005): Tehnike vizuelnog programiranja. Beograd: Viša
elektrotehnička škola.
2. Petričević, M. (2009): Objektno orijentirano programiranje. Zagreb: Algebra d.o.o.
3. Rabuzin, K. (2011): Uvod u SQL. Varaždin:Fakultet organizacije i informatike, Sveučilište
u Zagrebu.
4. Sarić, S. (2007): C". Varaždin: Pro - mil d.o.o.
I zvori dostupni na internetu:
1. Mala škola programiranja C#, Microsoft, http://www.microsoftsrb.rs/download
/obrazovanje/ pil/ Mala_skola_programiranja_Csharp.pdf, 18.10.2014.
2. Zaštita softvera, www.cis.hr/www.edicija/.../CCERT-PUBDOC-2004-04-71.pdf,
16.10.20143.http://www.am.unze.ba/rg/2007/zastita%20digitalnih%20podataka/HTML/instalacijski
%20mediji.html, 19.10.2014.
4. http://www.fina.hr/Default.aspx?sec=896, 18.10.2014.
5. http://www.fina.hr/fgs.axd?id=14625, 17.10.2014.
6. http://msdn.microsoft.com, 17.10.2014.
7. http://msdn.microsoft.com/en-us/library/, 17.10.2014.
8. http://msdn.microsoft.com/en-us/library/aa394582%28v=vs.85%29.aspx, 17.10.2014.
9.http://msdn.microsoft.com/enus/library/system.windows.forms.application%28v=
vs.110%29.aspx, 15.10.2014
10. http://www.sberbank.hr/UserDocsImages/Novosti%20iz%20poslovanja/HUB%20%
C5%A1ifre%20namjene.pdf), 15.10.2014.
7/17/2019 Dalibor Gajdos - Zrad
http://slidepdf.com/reader/full/dalibor-gajdos-zrad 39/39
10. POPIS ILUSTRACIJA
Slika 1. Arhitektura .NET Framework 4.5.
Slika 2. Model baze podataka
Slika 3. Prikaz prikupljanja podataka u DataSet iz različitih baza podataka
Slika 4. Sustav virmani na najvišoj razini dekompozicije
Slika 5. Blok registriranje na razini dekompozicije
Slika 6. Sustav na najnižoj razini dekompozicije
Slika 7. Forma za unos registracijskih podataka
Slika 8. Forma za generiranje PIN2 broja
Slika 9. Klase programskog modula za unos i ispis virmana
Slika 10. Forma za unos valute plaćanja
Slika 11. Upozorenje prilikom brisanja postojeće valute plaćanja
Slika 12. Početna forma virmani
Slika 13. Traka izbornika
Slika 14. Padajući izbornik za izbor korisnika
Slika 15. Popisni okvir za izbor virmana
Slika 16. Grupa elemenata za unos teksta
Slika 17. Različiti elementi za unos podataka o virmanu
Slika 18. Padajući izbornik za odabir IBAN ili Žiro računa
Slika 19. Padajući izbornik za odabir modela za plaćanje
Slika 20. Padajući izbornik za odabir šifre namjene plaćanja
Slika 21. Tipka za spremanje podataka
Slika 22. Obavijest o uspješnom spremanju podataka
Slika 23. Tekstualni unos pomaka ispisaSlika 24. Pregled prije ispisa
Recommended