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.

Dalibor Gajdos - Zrad

Embed Size (px)

DESCRIPTION

ZRAD

Citation preview

Page 1: Dalibor Gajdos - Zrad

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.

Page 2: Dalibor Gajdos - Zrad

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

Page 3: Dalibor Gajdos - Zrad

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.

Page 4: Dalibor Gajdos - Zrad

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.

Page 5: Dalibor Gajdos - Zrad

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. 

Page 6: Dalibor Gajdos - Zrad

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. 

Page 7: Dalibor Gajdos - Zrad

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. 

Page 8: Dalibor Gajdos - Zrad

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 

Page 9: Dalibor Gajdos - Zrad

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.

Page 10: Dalibor Gajdos - Zrad

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) 

Page 11: Dalibor Gajdos - Zrad

7/17/2019 Dalibor Gajdos - Zrad

http://slidepdf.com/reader/full/dalibor-gajdos-zrad 11/39

Page 12: Dalibor Gajdos - Zrad

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. 

Page 13: Dalibor Gajdos - Zrad

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. 

Page 14: Dalibor Gajdos - Zrad

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. 

Page 15: Dalibor Gajdos - Zrad

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. 

Page 16: Dalibor Gajdos - Zrad

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. 

Page 17: Dalibor Gajdos - Zrad

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.

Page 18: Dalibor Gajdos - Zrad

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).

Page 19: Dalibor Gajdos - Zrad

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();

Page 20: Dalibor Gajdos - Zrad

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; 

Page 21: Dalibor Gajdos - Zrad

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)

Page 22: Dalibor Gajdos - Zrad

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. 

Page 23: Dalibor Gajdos - Zrad

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.

Page 24: Dalibor Gajdos - Zrad

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

Page 25: Dalibor Gajdos - Zrad

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. 

Page 26: Dalibor Gajdos - Zrad

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.

Page 27: Dalibor Gajdos - Zrad

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.

Page 28: Dalibor Gajdos - Zrad

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. 

Page 29: Dalibor Gajdos - Zrad

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 

Page 30: Dalibor Gajdos - Zrad

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";

Page 31: Dalibor Gajdos - Zrad

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

Page 32: Dalibor Gajdos - Zrad

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();

Page 33: Dalibor Gajdos - Zrad

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)

Page 34: Dalibor Gajdos - Zrad

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"));

Page 35: Dalibor Gajdos - Zrad

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 = "";

Page 36: Dalibor Gajdos - Zrad

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 = "";

}

Page 37: Dalibor Gajdos - Zrad

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.

Page 38: Dalibor Gajdos - Zrad

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.

Page 39: Dalibor Gajdos - Zrad

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