Univerzitet u Novom Sadu Tehnički fakultet „Mihajlo Pupin ... · Seminarski rad Aplikacija ......

120
Univerzitet u Novom Sadu Tehnički fakultet „Mihajlo Pupin“ Zrenjanin Predmet: Softversko inženjerstvo 1 Seminarski rad Aplikacija Fudbalska utakmica Profesor: Student: Prof. dr Dragica Radosav Siniša Mihajlović IT 51/13 Smer: Informacione tehnologije Asistent: Dr. Zdravko Ivanković Zrenjanin, 2016.

Transcript of Univerzitet u Novom Sadu Tehnički fakultet „Mihajlo Pupin ... · Seminarski rad Aplikacija ......

Univerzitet u Novom Sadu

Tehnički fakultet „Mihajlo Pupin“

Zrenjanin

Predmet: Softversko inženjerstvo 1

Seminarski rad

Aplikacija – Fudbalska utakmica

Profesor: Student:

Prof. dr Dragica Radosav Siniša Mihajlović IT 51/13

Smer: Informacione tehnologije

Asistent:

Dr. Zdravko Ivanković

Zrenjanin, 2016.

SADRŽAJ

Predmetni cilj .................................................................................................................................. 4

Cilj seminarskog rada ..................................................................................................................... 5

1. Uvod ............................................................................................................................................ 6

2. Korišćene tehnologije ................................................................................................................. 8

2.1 C# programski jezik .............................................................................................................. 8

2.2. Microsoft Visual Studio 2015 .............................................................................................. 8

2.3. .NET Framework ................................................................................................................ 9

2.4. Entity Framework ................................................................................................................ 9

2.5 Microsoft SQL Server ........................................................................................................... 9

2.6. XML ................................................................................................................................... 10

3. Postupak kreiranja aplikacije .................................................................................................... 10

4. Zaključak................................................................................................................................... 28

LITERATURA ............................................................................................................................. 28

5. Priložen kod .............................................................................................................................. 29

5.1 Kod klase Fudbaler ............................................................................................................. 29

5.2 Kod klase FudbalerXML .................................................................................................... 34

5.3 Kod klase Klub ................................................................................................................... 37

5.4 Kod klase Liga .................................................................................................................... 42

5.5. Kod klase Reprezentacija ................................................................................................... 45

5.6 Kod klase Takmicenje ......................................................................................................... 49

5.7 Kod klase Trener ................................................................................................................. 53

5.8 Kod klase TrenerXML ........................................................................................................ 55

5.9 Kod klase Utakmica ............................................................................................................ 57

6. Kod forme frmFudbaler ........................................................................................................ 64

6.1 Kod forme frmKlub ............................................................................................................ 71

6.2 Kod forme frmLiga ............................................................................................................. 78

6.3 Kod forme frmReprezentacija ............................................................................................. 83

6.4 Kod forme frmTakmicenje ................................................................................................. 89

6.5 Kod forme frmTrener .......................................................................................................... 95

6.6 Kod forme frmUtakmice ................................................................................................... 101

6.7 Kod forme frmFudbaleriKlub ........................................................................................... 108

6.8 Kod forme frmFudbaleriReprezentacija ........................................................................... 109

6.9 Kod forme frmKluboviLiga .............................................................................................. 110

7. Kod forme frmKluboviTreneri ........................................................................................... 111

7.1 Kod forme frmReprezentacijaTrener ................................................................................ 112

7.2 Kod forme frmUtakmiceDomacin .................................................................................... 113

7.3 Kod forme frmUtakmiceGost ........................................................................................... 114

7.4 Kod forme frmUtakmiceLiga ........................................................................................... 115

7.5 Kod forme Form1 ............................................................................................................. 116

Predmetni cilj

Оsnоvni cilј prеdmеtа је sintеzа stеčеnih znаnjа iz užе stručnih prеdmеtа infоrmаtikе,

usmеrеnа nа primеnu sаvrеmеnih аlаtа zа rаzvој sоftvеrskih prоizvоdа. Pоsеbаn cilј prеdmеtа је

оspоsоblјаvаnjе studеnаtа zа sаmоstаlаn i timski rаd pri izrаdi sоftvеrskih prоizvоdа. Zаdаci

kоје оvај prеdmеt trеbа dа оstvаri је оvlаdаvаnjе tеоriјskim, mеtоdоlоškim, i prаktičnim

znаnjimа rаzvоја sоftvеrskоg prоizvоdа.

Cilj seminarskog rada

Cilj seminarskog rada je omogućiti unos fudbalera, fudbalskih klubova, reprezentacija,

trenera, fudbalskih liga, fudbalskih takmičenja, i što je najvažnije od svega fudbalskih utakmica.

Na ovaj način se može videti kojem fudbalskom klubu i reprezentaciji pripada određeni

fudbaler. Kojoj fudbalskoj ligi pripada određeni klub, koji trener trenira određeni fudbalski klub

ili reprezentaciju. Koje takmičenje igra određeni klubovi, i koju utakmicu igraju određeni

klubovi u određenoj ligi. Ovo je sve prikazano u zasebnim izveštajima

1. Uvod

Aplikacija se sastoji od skupa tabela koje su međusobno povezane u jednu bazu podataka.

Svaka tabela ima svoj naziv, i podatke koji su određenog tipa koji čine datu tabelu koja se nalazi

u bazi podataka. Tabele koje se nalaze u bazi su: T_FUDBALER, T_KLUB, T_KLUB_

TAKMICENJE, T_LIGA, T_REPREZENTACIJA, T_TAKMICENJE, T_TRENER,

T_UTAKMICA.

Podaci tabele T_FUDBALER su: FudbalerId, Ime, Prezime, Broj, Pozicija, Nacionalnost,

KlubId, ReprezentacijaId. Podatak FudbalerId je primarni ključ tabele T_FUDBALER i ima

vrednost IDENTITY, što znači da se vrednost FudbalerId povećava za jedan za svakog novog

unetog fudbalera. Podaci Ime, Prezime, Broj, Pozicija i Nacionalnost unosimo sami, dok podatak

KlubId i ReprezentacijaId su strani ključevi u tabeli T_FUDBALER. Tabela T_FUDBALER je

povezana sa tabelom T_KLUB i tabelom T_REPREZENTACIJA vezom jedan prema više. Ove

veze nam omogućavaju da kada dodajemo novog fudbalera, da možemo iz comboBoxova Klub i

Reprezentacija, da dodelimo odgovarajući Klub i Reprezentaciju odgovarajućem fudbaleru. Da

bi to uradili, pre toga moraju biti uneti podaci u tabeli T_KLUB i tabeli T_REPREZENTACIJA.

Podatak Ime predstavlja ime fudbalera, podatak Prezime prezime fudbalera, podatak Broj broj

fudbalera, podatak Pozicija poziciju fudbalera i podatak Nacionalnost nacionalnost fudbalera.

Postoje izveštaji koji nam prikazuju tačne podatke za svakog fudbalera, tj. koji fudbaler igra

za koji fudbalski klub, a drugi izveštaj je taj koji nam prikazuje za koju fudbalsku reprezentaciju

nastupa određeni fudbaler.

Podaci tabele T_KLUB su: KlubId, Naziv, Stadion, Kapacitet, GodinaOsnivanja, LigaId,

TrenerId. Podatak KlubId je primarni ključ tabele T_KLUB i ima vrednost IDENTITY, što znači

da se vrednost KlubId povećava za jedan za svaki novi uneti klub. Podaci Naziv, Stadion,

Kapacitet i GodinaOsnivanja unosimo sami, dok podatak LigaId i TrenerId su strani ključevi u

tabeli T_KLUB. Tabela T_KLUB je povezana sa tabelom T_LIGA i tabelom

T_REPREZENTACIJA vezom jedan prema više. Ove veze nam omogućavaju da kada dodajemo

novi klub, da možemo iz comboBoxova Liga i Trener, da dodelimo odgovarajuću Ligu i Trenera

odgovarajućem Klubu. Da bi to uradili, pre toga moraju biti uneti podaci u tabeli T_LIGA i

tabeli T_TRENER. Podatak Naziv predstavlja naziv kluba, podatak Stadion predstavlja stadion

kluba, podatak Kapacitet predstavlja kapacitet kluba i podatak GodinaOsnivanja predstavlja

godinu osnivanja kluba.

Postoje izveštaji koji nam prikazuju koji trener trenira određeni fudbalski klub, a drugi

izveštaj prikazuje u kojoj fudbalskoj ligi se nalazi određeni fudbalski klub.

Podaci tabele T_LIGA su: LigaId, Naziv, Rang, BrojKlubova. Podatak LigaId je primarni

ključ tabele T_LIGA i ima vrednost IDENTITY, što znači da se vrednost LigaId povećava za

jedan za svaku novu unetu ligu. Podaci Naziv, Rang i BrojKlubova unosimo sami. Tabela

T_LIGA je povezana sa T_KLUB vezom jedan prema više i time imamo mogućnost da se u

formi Kluba prikaže comboBox Lige. Da bi dodali klub prvo moramo uneti podatke u tabeli

T_LIGA, zato što tabela T_KLUB učitava podatke iz tabele T_LIGA. Podatak Naziv predstavlja

naziv lige, podatak Rang predstavlja rang lige i podatak BrojKlubova predstavlja broj klubova

koji se nalazi u ligi.

Podaci tabele T_REPREZENTACIJA su: ReprezentacijaId, Naziv, Ime, Prezime,

BrojnoStanje, TrenerId. ReprezentacijaId je primarni ključ tabele T_REPREZENTACIJA i ima

vrednost IDENTITIY, što znači da se vrednost ReprezentacijaId povećava za jedan za svaku

novu unetu reprezentaciju. Podaci Naziv, Ime, Prezime i BrojnoStanje unosimo sami, dok

podatak TrenerId predstavlja strani ključ u tabeli T_REPREZENTACIJA. Tabela

T_REPREZENTACIJA je povezana sa tabelom T_TRENER vezom jedan prema više. Ova veza

nam omogućava da kada dodajemo novu reprezentaciju, da možemo iz comboBoxa Trener, da

dodelimo odgovarajućeg Trenera odgovarajućoj reprezentaciji. Da bi to uradili, pre toga moraju

biti uneti podaci u tabeli T_TRENER. Podatak Naziv predstavlja naziv reprezentacije, podatak

Ime predstavlja ime kapitena reprezentacije, podatak Prezime predstavlja prezime kapitena

reprezentacije i podatak BrojnoStanje predstavlja brojno stanje reprezentacije, tj. koliko igrača

nastupa za reprezentaciju sve ukupno.

Postoji izveštaj koji nam prikazuje koji trener trenira određenu fudbalsku reprezentaciju.

Podaci tabele T_TAKMICENJE su: TakmicenjeId, Naziv i Datum. Podatak TakmicenjeId je

primarni ključ tabele T_TAKMICENJE i ima vrednost IDENTITY, što znači da se vrednost

TakmicenjeId povećava za jedan za svako novo uneto takmičenje. Podaci Naziv i Datum se

unosi sami. Tabela T_TAKMICENJE je povezano sa tabelom T_KLUB vezom više prema više

preko tabele T_KLUB_TAKMICENJE u kojoj se nalaze primarni ključevi tabela

T_TAKMICENJE i T_KLUB koji su: KlubId i TakmicenjeId koji su u stvari strani ključevi. Ovo

nam omogućava da se u formi Takmičenje nalazi checkedListBox koji nam omogućava prikaz

klubova koji se prijavljivaju za određeno takmičenje. Da bi se prikazali Klubovi u

checkedListBoxu moramo imati unete klubove u tabeli T_KLUB. Podatak Naziv predstavlja

naziv takmičenja, a podatak Datum predstavlja datum prijave određenog kluba za određeno

takmičenje.

Podaci tabele T_TRENER su: TrenerId, Ime, Prezime, Nacionalnost, Vrsta. Podatak

TrenerId je primarni ključ tabele T_TRENER i ima vrednost IDENTITY, što znači da se

vrednost TrenerId povećava za jedan za svakog novog unetog trenera. Podaci Ime, Prezime i

Nacionalnost unosimo sami. Tabela T_TRENER je povezana sa tabelom T_KLUB i

T_REPREZENTACIJA vezom jedan prema više. Ove veze nam omogućavaju da se u tabelama

T_REPREZENTACIJA i T_KLUB prikaže comboBox Trener, kada dodajemo novu

reprezentaciju ili klub, a da bi ih dodali prvo moramo uneti podatke u tabeli T_TRENER pa onda

u tabelama T_REPREZENTACIJA i T_KLUB. Podatak Ime predstavlja ime trenera, podatak

prezime predstavlja prezime trenera, podatak Nacionalnost predstavlja nacionalnost trenera i

podatak Vrsta predstavlja vrstu treneru.

Podaci tabele T_UTAKMICA su: UtakmicaId, Datum, Stadion, Prognoza, KlubId1, KlubId2,

LigaId. Podatak UtakmicaId je primarni ključ koji tabele T_UTAKMICA i ima vrednost

IDENTITY, što znači da se vrednost Utakmicaid povećava za jedan za svaku novu unetu

utakmicu. Podaci Datum, Stadion i Prognoza unosimo sami, dok su KlubId1, KlubId2 i LigaId

strani ključevi. Tabela T_UTAKMICA je povezana sa tabelama T_UTAKMICA i T_LIGA

vezom jedan prema više. Ove veze nam omogućavaju da kada unosimo novu utakmicu da

možemo da odaberemo odgovarajući klub i njegovog protivnika iz comboBoxova Klub,

odgovarajuću Ligu iz comboBoxa Liga za odgovarajuću utakmicu. KlubId1 predstavlja jedan

fudbalski klub, a KlubId2 predstavlja drugi fudbalski klub. Podatak Datum predstavlja podatak

održavanja fudbalske utakmice, podatak Stadion predstavlja mesto održavanje fudbalske

utakmice i podatak Prognoza predstavlja vremensku prognozu.

Postoje izveštaji koji nam prikazuju utakmice domaćina, utakmice gosta, i utakmice koje se

igraju u određenoj fudbalskoj ligi.

2. Korišćene tehnologije

Korišćene tehnologije predstavljaju koje smo sve tehnologije koristili prilikom izrade ove

Windows aplikacije. Postoji veliki broj tehnologija koji je potreban za izradu aplikacije.

2.1 C# programski jezik

C# (C Sharp) programski jezik je jedan od mlađih programskih jezika nastao 2002. godine

kao sastavni deo MS .NET Framework-a 1.0. C# je objektno orijentisani programski jezik

namenjen razvoju aplikacija na .NET Framework platformi. Pošto je objekno orijentisan

programski jezik, prvenstveno je sagrađen od klasa koje čine skupove objekata koji imaju

zajedničku strukturu i ponašanje. Takođe kao i mnogi objektno orijentisani programski jezici,

sadrži sposobnost ekapsulacije, pisanje metoda, nasleđivanje između klasa i visoke performanse

tokom kompajliranja. Iz razloga enkapsulacije postoji obrazac kojim atributima različitih klasa

možemo spolјa pristupiti indirektno i to metodama get i set. C# je case sensitive programski

jezik, što znači da je od velike važnosti da li kucamo malim ili velikim slovima.

2.2. Microsoft Visual Studio 2015

Microsoft Visual Studio je integrisano razvojno okruženje iz Microsofta. Koristi se za razvoj

kompjuterskih programa za Microsoft Windows, kao i veb sajtove, veb aplikacije i veb servise.

Visual Studio koristi Microsoft platforme za razvoj softvera kao što su Windows API, Windows

Forms, Windows Presentation Foundation, Windows Store i Microsoft Silverlight. Može da se

piše i upravlja kodom.

Visual Studio uključuje editor koda koji podržava IntelliSense. Dolazi sa ugrađenim C# i

C++ , VB NET (Visual Basic .NET) i u Visual Studio 2015 verziji F# programskim jezicima.

Takođe se možep rogramirati i u drugim programskim jezicima kao što su JavaScript, CSS,

XML, HTML, itd.. instaliranjem jezičkih servisa za ovo razvojno okruženje. Microsoft Visual

Studio je jedan od najpopularnijih razvojnih okruženja koji pruža velike mogućnosti u razvoju

programa. Njegove mane su donekle ispravljene pomoću raznih ekstenzija razvijenih kako od

„Microsofta“ tako i od strane drugih programera. Konkretno kod programiranja Windows form

aplikacija, on sam generiše skelet aplikacije i sve podesi automatski kako bi korisnik mogao da

se bavi problemom koji treba da reši, a ne pravljenjem prozora aplikacije. Pored desktop

aplikacija takođe nudi mogućnost kreiranja i web aplikacija. Microsoft je jako dobro razvio

pronalaženje i uklanjanje grešaka pri programiranju zbog toga predstavlja jako popularnu i

korisnu alatku programerima.

2.3. .NET Framework

Microsoft .NET Framework je softverska platforma koja je dostupna samo na Wndows

računarima. On uključuje veliki broj gotovih biblioteka kodova za uobičajene probleme u

programiranju i virtuelnu mašinu koja upravlja izvršavanjem programa pisanih specijalno za

.NET Framework. Biblioteka klasa .NET Framework-a obezbeđuje korisnički interfejs, pristup

podacima, kriptografiju, razvoj veb aplikacija, numeričke algoritme i mrežnu komunikaciju.

Programeri kombinuju biblioteke klasa sa sopstvenim kodom za kreiranje svojih programa. .NET

Framework podržava više programskih jezika na način koji omogućava interoperabilnost, pri

čemu svaki jezik može biti napisan na drugom. .NET Framework uključuje i dve verzije za

mobilne uređaje – NET Compact Framework, je dostupna za Windows CE platforme, i uključuje

Windows Mobile uređaje.

2.4. Entity Framework

Entity Framework je set tehnologija u ADO .NET koje se koriste za razvoj bazno

orijentisanih softver aplikacija. Pomoću Entity Frameworka možemo da kreiramo aplikacije čije

ćemo podatke čuvati u bazi, a u okviru te baze u ovom Framework-u možemo da manipulišemo

podacima od sortiranja, do izemene sadržaja i brisanje podataka iz baze. Zahvaljujući Entity

Framework-u, programeri mogu apstraktnije da konstruišu bazu sa mnogo manje koda nego što

je ranije bilo potrebno.

2.5 Microsoft SQL Server

Microsoft SQL Server je relacijska baza podataka kojoj je primarni jezik za upite Transact SQL

(T-SQL), što znači da osim osnovnih i klasičnih (SELECT tipa) SQL upita dozvoljava i složenije

stvari poput menjanja programskog toka (IF naredba) i slično. Transact SQL nastao je kao plod

saradnje između Microsofta i Sybasea. SQL server je baza podataka koja se smestila na prag

između manjih i srednjih baza. Prvi SQL Server za Windows NT izašao je isto kada i sami

Windows-i.

SQL Server je prva baza podataka na svetu koja je posedovala korisnički interfejs. Takođe, SQL

Server je prva komercijalna baza podataka koja je podržala Intelovu 64-bitnu arhitekturu

procesora. Od SQL Servera 2000 do SQL Servera 2005 napravljeni su golemi pomaci u

poboljšanju same baze podataka. Najbitniji od njih su: Klijentski deo IDE alata, SQL Server

Integration Services, Reporting Server, OLAP server, podrška za data mining, Notification

Services itd.

Microsoft SQL podržava „Open Database Connectivity“, odnosno skraćeno ODBC tehnologiju.

SQL Server 2005 poseduje i podršku za Web servise, tj. za Simple Object Access Protocol,

Service Oriented Architecture Protocol odnosno skraćeno SOAP W3C standard. To je

izvanredna stvar zato što omogućuje ne Windows klijentima da komuniciraju preko te platforme

sa SQL Serverom. U verziji 2005 takođe je izdan i sertifikovan JDBC API za komunikaciju sa

Java aplikacijama. SQL Server također poseduje i mogućnosti poput mirroringa, clusteringa i

snapshots-ova. Microsoft se stvarno potrudio, te je omogućio brojne aplikacije koje spremaju

podatke na SQL Server. SQL Server 2005 uključuje i Common Language Runtime odnosno

CLR.

2.6. XML

XML je skraćenica za EXtensible Markup Language - odnosno jezik za označavanje

podataka. Ideja je bila stvoriti jedan jezik koji će biti jednostavno čitljiv i ljudima i

kompjuterskim programima. Princip realizacije je vrlo jednostavan: odgovarajući sadržaj treba se

uokviriti odgovarajućim oznakama koje ga opisuju i imaju poznato, ili lako shvatljivo značenje.

Format oznaka u XMLu vrlo je sličan formatu oznaka u npr. HTML jeziku. Danas je XML jezik

vrlo raširen i koristi se za različite namene: odvajanje podataka od prezentacije, razmenu

podataka, skladištenje podataka, povećavanje dostupnosti podataka i izradu novih

specijaliziranih jezika za označavanje. XML je standardizirani jezik i za njegovu standardizaciju

brine se World Wide Web Consortium.

3. Postupak kreiranja aplikacije

Prva stvar koju radimo jeste kreiranje baze podataka sa nazivom FudbalDB. Nakon toga

kreiraju se tabele sa njihovim atributima. U svakoj tabeli treba da se nalazi jedan od atributa koji

će biti primarni ključ te tabele.

Slika 1. Tabela T_FUDBALER

U tabeli T_FUDBALER postavljen je FudbalerId kao primarni ključ. Ovaj atribut ima

osobinu IDENTITY i povećava se za 1 prilikom unosa svakog novog fudbalera. Takođe

poseduje strane ključeve KlubId i ReprezentacijaId koji će nam prikazivati sve dodate klubove i

reprezentacije za koju mogu da igraju dodati fudbaleri.

Slika 2. Tabela T_KLUB

U tabeli T_KLUB postavljen je KlubId kao primarni ključ. Ovaj atribut ima osobinu

IDENTITY i povećava se za 1 prilikom unosa svakog novog kluba. Takođe poseduje strane

ključeve LigaId i TrenerId koji će nam prikazivati sve dodate lige za koji može da nastupaju

klubovi, i treneri koji mogu da treniraju određeni klub.

Slika 3. Tabela T_LIGA

U tabeli T_LIGA postavljen je Liga kao primarni ključ. Ovaj atribut ima osobinu IDENTITY

i povećava se za 1 prilikom unosa svake nove lige.

Slika 4. Tabela T_REPREZENTACIJA

U tabeli T_REPREZENTACIJA postavljen je ReprezentacijaId kao primarni ključ. Ovaj

atribut ima osobinu IDENTITY i povećava se za 1 prilikom unosa svakog novog kluba. Takođe

poseduje strani ključ TrenerId koji će nam prikazivati trenere koji mogu da treniraju određenu

reprezentaciju.

Slika 5. Tabela T_TRENER

U tabeli T_TRENER postavljen je TrenerId kao primarni ključ. Ovaj atribut ima osobinu

IDENTITY i povećava se za 1 prilikom unosa svakog novog trenera.

Slika 6. Tabela T_UTAKMICA

U tabeli T_UTAKMICA postavljen je UtakmicaId kao primarni ključ. Ovaj atribut ima

osobinu IDENTITY i povećava se za 1 prilikom unosa svakog novog kluba. Takođe poseduje

strane ključeve KlubId1, KlubId2 i LigaId koji će nam prikazivati klubove koji mogu da igraju

određenu utakmicu i u kojoj ligi se igra određena utakmica.

Slika 7. Tabela T_TAKMICENJE

U tabeli T_TAKMICENJE postavljen je TakmicenjeId kao primarni ključ. Ovaj atribut ima

osobinu IDENTITY i povećava se za 1 prilikom unosa svakog novog takmičenja.

Slika 8. Tabela T_KLUB_TAKMICENJE

U tabeli T_KLUB_TAKMICENJE postavljeni su KlubId i TakmicenjeId kao primarni

ključevi. Tj. oni su strani ključevi koji spajaju tabelu T_KLUB i tabelu T_TAKMICENJE.

Omogućava nam da prilikom dodavanja takmičenja možemo u checkedListBoxu da izaberemo

određene klubove koji igraju određeno takmičenje.

Napravljeno je 9 klasa koje su sledeće: Fudbaler, FudbalerXML, Klub, Liga, Reprezentacija,

Takmicenje, Trener, Utakmica, TrenerXML.

Zatim je napravljeno 16 formi koje su sledeće: Form1, frmFudbaler, frmFudbaleriKlub,

frmFudbaleriReprezentacija, frmKlub, frmKluboviLiga, frmKluboviTreneri, frmLiga,

frmReprezentacija, frmReprezentacijaTrener, frmTakmicenje, frmUtakmice,

frmUtakmiceDomacin, frmUtakmiceGost, frmUtakmiceLiga.

Posle je napravljeno 8 izveštaja rptFudbalerKlub, rptFudbalerReprezentacija, rptKlubLiga,

rptKlubTrener, rptReprezentacijaTrener, rptUtakmicaLiga, rptUtakmiceDomacin,

rptUtakmiceGost.

Slika 9. Izgled forme Form1 (Podaci)

U glavnoj formi Form1 je ubačena menuStrip alatka sa poljima „Podaci“ i „Izvestaji“. Polje

„Podaci“ sadrži 7 podpolja preko kojih se pristupa formama za unos podataka o fudbalerima,

klubovima, takmičenjima, trenerima, utakmicama, reprezentacijama i ligama.

Slika 10. Izgled forme Form1 (Izvestaji)

Polje „Izvestaji“ sadrži 8 podpolja koja omogućuju prikaz podataka o tome za koji klub igra

određeni fudbaler, za koju reprezentaciju nastupa određeni fudbaler, koji trener trenira određeni

klub, u kojoj ligi nastupa određeni klub, koji trener trenira određenu reprezentaciju, spisak

utakmica klubova kao domaćina, spisak utakmica klubova kao gosta i spisak utakmica po ligi.

Slika 11. Izgled forme frmFudbaleri

Karakteristike fudbalera su njegovo: Ime, Prezime, Broj, Pozicija, Nacionalnost, Klub i

Reprezentacija. Prvih pet karakteristika su polja tipa textBox i u njih se vrši upis. Polje klub je

tipa comboBox, kao i polje reprezentacija. ComboBoxovi iščitavaju podatke koji se nalaze u

formama frmKlub i frmReprezentacija. Tj. comboBox Klub iščitava Naziv i GodinaOsnivanja

kluba, a comboBox Reprezentacija samo Naziv. Da bi se iščitalo moraju se kreirati klubovi i

reprezentacije. U ovoj formi se nalazi i DataGridView kontrola, koja omogućuje prikaz podataka

za sve dodate fudbalere u bazu podataka, dugmad za dodavanje, promenu i brisanje podataka,

kao i dugmad za potvrđivanje i odustajanje od započete akcije nad podacima iz baze. Klasa

Fudbaler je povezana sa formom frmFudbaleri.

Slika 12. Izgled forme frmFudbaleri (XML)

Takođe se nalazi menuStrip na kojoj je prikazano polje XML. XML sadrži Uvezi i Izvezi,

koje služi za to da se upisani podaci izveze u XML, kao i da se uveze u bazu podataka. XML je

povezan sa klasom FudbalerXML.

Slika 13. Izgled forme frmKlubovi

Karakteristike kluba su njegov: Naziv, Stadion, Kapacitet, Godina osnivanja, Liga i Trener.

Prve četiri karakteristike su polja tipa textBox i u njih se vrši upis. Polje liga je tipa comboBox,

kao i polje trener. ComboBoxovi iščitavaju podatke koji se nalaze u formama frmLiga i

frmTrener. Tj. comboBox Liga iščitava Naziv i Rang lige, a comboBox Trener Ime i Prezime

trenera. Da bi se iščitalo moraju se kreirati lige i treneri. U ovoj formi se nalazi i DataGridView

kontrola, koja omogućuje prikaz podataka za sve dodate klubove u bazu podataka, dugmad za

dodavanje, promenu i brisanje podataka, kao i dugmad za potvrđivanje i odustajanje od započete

akcije nad podacima iz baze. Klasa Klub je povezana sa formom frmKlubovi.

Slika 14. Izgled forme frmTakmicenje

Karakteristike takmičenja su njegov: Naziv, Datum i Klubovi. Prva karakteristika je polje

tipa textBox i u njega se vrši upis. Polje datum je DateTimePicker koji nam prikazuje datum u

određenom formatu. CheckedListBox iščitava podatke koji se nalaze u formama frmKlubovi. Tj.

CheckedListBox Klubovi iščitava sve postojeće klubove. Da bi se iščitalo moraju se kreirati

klubovii. U ovoj formi se nalazi i DataGridView kontrola, koja omogućuje prikaz podataka za

sva dodata takmičenja u bazu podataka i druga DataGridView kontrola koja prikazuje prijavljene

klubove na određeno takmičenje, dugmad za dodavanje, promenu i brisanje podataka, kao i

dugmad za potvrđivanje i odustajanje od započete akcije nad podacima iz baze. Klasa

Takmicenje je povezana sa formom frmTakmicenje.

Slika 15. Izgled forme frmTrener

Karakteristike trenera su njegovo: Ime, Prezime, Nacionalnost i Vrsta. Sve karakteristike

polja su tipa a textBox i u njih se vrši upis. U ovoj formi se nalazi i DataGridView kontrola, koja

omogućuje prikaz podataka za sve dodate trenere u bazu podataka, dugmad za dodavanje,

promenu i brisanje podataka, kao i dugmad za potvrđivanje i odustajanje od započete akcije nad

podacima iz baze. Klasa Trener je povezana sa formom frmTrener.

Slika 16. Izgled forme frmTrener (XML)

Takođe se nalazi menuStrip na kojoj je prikazano polje XML. XML sadrži Uvezi i Izvezi,

koje služi za to da se upisani podaci izveze u XML, kao i da se uveze u bazu podataka. XML je

povezan sa klasom TrenerXML.

Slika 17. Izgled forme frmUtakmice

Karakteristike utakmice su njene: Liga, Datum, Stadion, Vremenska prognoza, Domaćin i

Gost. Stadion i Vremenska prognoza je karakteristike tipa polja textBox i u njih se vrši upis.

Polje liga je tipa comboBox, kao i polje Domaćin i Gost. ComboBoxovi iščitavaju podatke koji

se nalaze u formama frm Liga i frmKlubovi. Tj. comboBox Liga iščitava Naziv i Rang lige, a

comboBoxovi Domaćin i Gost Naziv i Godina osnivanja klubova. Da bi se iščitalo moraju se

kreirati lige i klubovi. U ovoj formi se nalazi i DataGridView kontrola, koja omogućuje prikaz

podataka za sve dodate utakmice u bazu podataka, dugmad za dodavanje, promenu i brisanje

podataka, kao i dugmad za potvrđivanje i odustajanje od započete akcije nad podacima iz baze.

Klasa Utakmica je povezana sa formom frmUtakmice.

Slika 18. Izgled forme frmReprezentacija

Karakteristike reprezentacije su njen: Naziv, Ime kapitena, Prezime Kapitena, Brojno stanje

i Trener. Prvih četiri karakteristika su polja tipa textBox i u njega se vrši upis. Polje trener je tipa

comboBox . ComboBox iščitava podatke koji se nalazi u formi frmTrener. Tj comboBox Trener

iščitava Ime i Prezime trenera. Da bi se iščitalo mora se kreirati trener. U ovoj formi se nalazi i

DataGridView kontrola, koja omogućuje prikaz podataka za sve dodate reprezentacije u bazu

podataka, dugmad za dodavanje, promenu i brisanje podataka, kao i dugmad za potvrđivanje i

odustajanje od započete akcije nad podacima iz baze. Klasa Reprezentacija je povezana sa

formom frmReprezentacija.

Slika 19. Izgled forme frmLiga

Karakteristike lige su njen: Naziv, Rang lige i Broj klubova. Sva tri su karakteristike tipa

polja textBox i u njega se vrši upis.. U ovoj formi se nalazi i DataGridView kontrola, koja

omogućuje prikaz podataka za sve dodate lige u bazu podataka, dugmad za dodavanje, promenu

i brisanje podataka, kao i dugmad za potvrđivanje i odustajanje od započete akcije nad podacima

iz baze. Klasa Liga je povezana sa formom frmLiga.

Slika 20. Izgled forme frmFudbaleriKlubovi (Izveštaj svi klubovi)

U izveštaju se prikazuje: Ime, Prezime, Broj, Pozicija, Nacionalnost, Naziv kluba i Godina

osnivanja kluba. Ovim izveštajem je omogućen prikaz svih fudbalera koji nastupaju za određene

klubove. Sa formom frmFudbaleriKlubovi povezan je izveštaj rptFudbalerKlub.

Slika 21. Izgled forme frmFudbaleriKlubovi (Izveštaj jedan klub)

Slika 22. Izgled forme frmFudbaleriReprezentacije (Izveštaj sve reprezentacije)

U izveštaju se prikazuje: Ime, Prezime, Broj, Pozicija, Nacionalnost i Naziv reprezentacije.

Ovim izveštajem je omogućen prikaz svih fudbalera koji nastupaju za određene reprezentacije.

Sa formom frmFudbaleriReprezentacije povezan je izveštaj rptFudbalerReprezentacija.

Slika 23. Izgled forme frmFudbaleriReprezentacije (Izveštaj jedna reprezentacija)

Slika 24. Izgled forme frmKluboviTreneri (Izveštaj svi treneri)

U izveštaju se prikazuje: Naziv, Stadion, Kapacitet, Godina osnivanja, Ime i Prezime trenera.

Ovim izveštajem je omogućen prikaz svih trenera koji treniraju određene klubove. Sa formom

frmKluboviTreneri povezan je izveštaj rptKlubTrener.

Slika 25. Izgled forme frmKluboviTreneri (Izveštaj jedan trener)

Slika 26. Izgled forme frmKluboviLiga (Izveštaj sve lige)

U izveštaju se prikazuje: Naziv, Stadion, Kapacitet, Godina osnivanja, Naziv i Rang lige.

Ovim izveštajem je omogućen prikaz svih liga i njenih klubovae. Sa formom frmKluboviLiga

povezan je izveštaj rptKlubLiga.

Slika 27. Izgled forme frmKluboviLiga (Izveštaj jedna liga)

Slika 28. Izgled forme frmReprezentacijaTrener (Izveštaj svi treneri)

U izveštaju se prikazuje: Naziv, Ime kapitena, Prezime kapitena, Brojno stanje, Ime i

Prezime trenera. Ovim izveštajem je omogućen prikaz svih trenera koji treniraju određene

reprezentacije. Sa formom frmReprezentacijaTrener povezan je izveštaj rptReprezentacijaTrener.

Slika 29. Izgled forme frmReprezentacijaTrener (Izveštaj jedan trener)

Slika 30. Izgled forme frmUtakmiceDomacin (Izveštaj svi domacini)

U izveštaju se prikazuje: Naziv lige, Rang lige, Datum utakmice, Stadion, Vremenska

prognoza, Naziv domacina, Godina osnivanja domacina, Naziv gosta i Godina osnivanja Gosta.

Ovim izveštajem je omogućen prikaz svih utakmica koji određeni klub igra kao domaćin. Sa

formom frmUtakmiceDomacin povezan je izveštaj rptUtakmiceDomacin.

Slika 31. Izgled forme frmUtakmiceDomacin (Izveštaj jedan domacin)

Slika 32. Izgled forme frmUtakmiceGost (Izveštaj svi gosti)

U izveštaju se prikazuje: Naziv lige, Rang lige, Datum utakmice, Stadion, Vremenska

prognoza, Naziv domacina, Godina osnivanja domacina, Naziv gosta i Godina osnivanja Gosta.

Ovim izveštajem je omogućen prikaz svih utakmica koji određeni klub igra kao gost. Sa formom

frmUtakmiceGost povezan je izveštaj rptUtakmiceGost.

Slika 33. Izgled forme frmUtakmiceGost (Izveštaj jedan gost)

Slika 34. Izgled forme frmUtakmiceLiga (Izveštaj sve lige)

U izveštaju se prikazuje: Naziv lige, Rang lige, Datum utakmice, Stadion, Vremenska

prognoza, Naziv domacina, Godina osnivanja domacina, Naziv gosta i Godina osnivanja Gosta.

Ovim izveštajem je omogućen prikaz svih utakmica koji se igraju u određenoj ligi. Sa formom

frmUtakmiceLiga povezan je izveštaj rptUtakmicaLiga.

Slika 35. Izgled forme frmUtakmiceLiga (Izveštaj jedna liga)

4. Zaključak

Mogućnosti za dalji razvoj aplikacije su na primer, da se na formi frmUtakmice doda još

sudije. Da se omogući da kada se izabere određenea liga prikažu samo klubovi iz te lige, i da

Domaćin i Gost ne mogu biti isti klubovi. Moglo bi se dodati da se izlistaju fudbaleri koji igraju

kao domaćini i kao gosti. Na formi frmFudbaleri bi se moglo uraditi da igrač koji je povređen,

ima žuti, crveni karton ili je suspendiran. To su neke opcije koje postoje za unapređivanje ovog

programa.

LITERATURA

1. https://sh.wikipedia.org/wiki/Microsoft_SQL_Server

2. http://en.wikipedia.org/wiki/Entity_Framework

3. http://en.wikipedia.org/wiki/Microsoft_Visual_Studio

4. https://en.wikipedia.org/wiki/.NET_Framework

5. https://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29

6. https://hr.wikipedia.org/wiki/XML

5. Priložen kod

5.1 Kod klase Fudbaler using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fudbal { [Serializable] public class Fudbaler { private int id; private string ime; private string prezime; private int broj; private string pozicija; private string nacionalnost; private Klub klub; private Reprezentacija reprezentacija; public int ID { get { return id; } set { id = value; } } public string Ime { get { return ime; } set { if (value == "") throw new Exception("Morate uneti ime fudbalera!!!"); ime = value; } } public string Prezime { get { return prezime; } set { if (value == "") throw new Exception("Morate uneti prezime fudbalera!!!"); prezime = value; } }

public int Broj { get { return broj; } set { if (value == 0) throw new Exception("Morate uneti broj fudbalera!!!"); broj = value; } } public string Pozicija { get { return pozicija; } set { if (value == "") throw new Exception("Morate uneti poziciju fudbalera!!!"); pozicija = value; } } public string Nacionalnost { get { return nacionalnost; } set { if (value == "") throw new Exception("Morate uneti nacionalnost fudbalera!!!"); nacionalnost = value; } } public Klub Klub { get { return klub; } set { if (value.ID == 0) throw new Exception("Morate uneti Klub!!!"); klub = value; } } public Reprezentacija Reprezentacija { get { return reprezentacija; } set { if (value.ID == 0) throw new Exception("Morate uneti Reprezentaciju!!!"); reprezentacija = value; } } private string _connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FudbalDB.mdf;Integrated Security=True";

public void dodajFudbalera() { string insertSql = "INSERT INTO T_FUDBALER " + "(Ime, Prezime, Broj, Pozicija, Nacionalnost,KlubId, ReprezentacijaId) VALUES " + "(@Ime, @Prezime, @Broj, @Pozicija, @Nacionalnost,@KlubId, @ReprezentacijaId)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = insertSql; command.Parameters.Add(new SqlParameter("@Ime", Ime)); command.Parameters.Add(new SqlParameter("@Prezime", Prezime)); command.Parameters.Add(new SqlParameter("@Broj", Broj)); command.Parameters.Add(new SqlParameter("@Pozicija", Pozicija)); command.Parameters.Add(new SqlParameter("@Nacionalnost", Nacionalnost)); command.Parameters.Add(new SqlParameter("@KlubId", Klub.ID)); command.Parameters.Add(new SqlParameter("@ReprezentacijaId", Reprezentacija.ID)); connection.Open(); command.ExecuteNonQuery(); } } public void azurirajFudbalera() { string updateSql = "UPDATE T_FUDBALER " + "SET Ime= @Ime, Prezime = @Prezime, Broj= @Broj, Pozicija=@Pozicija," + "Nacionalnost= @Nacionalnost, KlubId = @KlubId, ReprezentacijaId = @ReprezentacijaId WHERE FudbalerId = @FudbalerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = updateSql; command.Parameters.Add(new SqlParameter("@FudbalerId", ID)); command.Parameters.Add(new SqlParameter("@Ime", Ime)); command.Parameters.Add(new SqlParameter("@Prezime", Prezime)); command.Parameters.Add(new SqlParameter("@Broj", Broj)); command.Parameters.Add(new SqlParameter("@Pozicija", Pozicija)); command.Parameters.Add(new SqlParameter("@Nacionalnost", Nacionalnost)); command.Parameters.Add(new SqlParameter("@KlubId", Klub.ID)); command.Parameters.Add(new SqlParameter("@ReprezentacijaId", Reprezentacija.ID)); connection.Open(); command.ExecuteNonQuery(); } } public void obrisiFudbalera() { string deleteSql = "DELETE FROM T_FUDBALER WHERE FudbalerId = @FudbalerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql;

command.Parameters.Add(new SqlParameter("@FudbalerId", ID)); connection.Open(); command.ExecuteNonQuery(); } } public List<Fudbaler> ucitajFudbalere() { List<Fudbaler> fudbaleri = new List<Fudbaler>(); string queryString = "SELECT " + " fud.FudbalerId, fud.Ime, fud.Prezime, fud.Broj, fud.Pozicija, fud.Nacionalnost, " + " klub.KlubId, klub.Naziv, klub.Stadion, klub.Kapacitet,klub.GodinaOsnivanja, " + "reprezentacija.ReprezentacijaId, reprezentacija.Naziv AS NazivReprezentacije, reprezentacija.Ime, reprezentacija.Prezime, reprezentacija.BrojnoStanje " + "FROM T_FUDBALER fud, T_KLUB klub, T_REPREZENTACIJA reprezentacija WHERE fud.KlubId = klub.KlubId AND fud.ReprezentacijaId = reprezentacija.ReprezentacijaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Fudbaler fud; while (reader.Read()) { fud = new Fudbaler(); fud.ID = Int32.Parse(reader["FudbalerId"].ToString()); fud.Ime = reader["Ime"].ToString(); fud.Prezime = reader["Prezime"].ToString(); fud.Broj = Int32.Parse(reader["Broj"].ToString()); fud.Pozicija = reader["Pozicija"].ToString(); fud.Nacionalnost = reader["Nacionalnost"].ToString(); fud.klub = new Klub(); fud.klub.ID = Int32.Parse(reader["KlubId"].ToString()); fud.klub.Naziv = reader["Naziv"].ToString(); fud.klub.Stadion = reader["Stadion"].ToString(); fud.klub.Kapacitet = Int32.Parse(reader["Kapacitet"].ToString()); fud.klub.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanja"].ToString()); fud.reprezentacija = new Reprezentacija(); fud.reprezentacija.ID = Int32.Parse(reader["ReprezentacijaId"].ToString()); fud.reprezentacija.Naziv = reader["NazivReprezentacije"].ToString(); fud.reprezentacija.Ime = reader["Ime"].ToString(); fud.reprezentacija.Prezime = reader["Prezime"].ToString(); fud.reprezentacija.BrojnoStanje = Int32.Parse(reader["BrojnoStanje"].ToString()); fudbaleri.Add(fud); } } } return fudbaleri;

} public List<Fudbaler> ucitajFudbalereZaKlub(int klubId) { List<Fudbaler> fudbaleri = new List<Fudbaler>(); string queryString = "SELECT " + " fud.FudbalerId, fud.Ime, fud.Prezime, fud.Broj, fud.Pozicija,fud.Nacionalnost, " + " klub.KlubId, klub.Naziv, klub.Stadion, klub.Kapacitet,klub.GodinaOsnivanja " + "FROM T_FUDBALER fud, T_KLUB klub WHERE fud.KlubId = klub.KlubId AND klub.KlubId = @KlubId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; command.Parameters.Add(new SqlParameter("@KlubId", klubId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Fudbaler fud; while (reader.Read()) { fud = new Fudbaler(); fud.ID = Int32.Parse(reader["FudbalerId"].ToString()); fud.Ime = reader["Ime"].ToString(); fud.Prezime = reader["Prezime"].ToString(); fud.Broj = Int32.Parse(reader["Broj"].ToString()); fud.Pozicija = reader["Pozicija"].ToString(); fud.Nacionalnost = reader["Nacionalnost"].ToString(); fud.klub = new Klub(); fud.klub.ID = Int32.Parse(reader["KlubId"].ToString()); fud.klub.Naziv = reader["Naziv"].ToString(); fud.klub.Stadion = reader["Stadion"].ToString(); fud.klub.Kapacitet = Int32.Parse(reader["Kapacitet"].ToString()); fud.klub.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanja"].ToString()); fudbaleri.Add(fud); } } } return fudbaleri; } public List<Fudbaler> ucitajFudbalereZaReprezentaciju(int reprezentacijaId) { List<Fudbaler> fudbaleri = new List<Fudbaler>(); string queryString = "SELECT " + " fud.FudbalerId, fud.Ime, fud.Prezime, fud.Broj,fud.Pozicija,fud.Nacionalnost, " + "reprezentacija.ReprezentacijaId, reprezentacija.Naziv AS NazivReprezentacije, reprezentacija.Ime, reprezentacija.Prezime, reprezentacija.BrojnoStanje " + "FROM T_FUDBALER fud, T_REPREZENTACIJA reprezentacija WHERE fud.ReprezentacijaId = reprezentacija.ReprezentacijaId AND reprezentacija.ReprezentacijaId = @ReprezentacijaId;"; using (SqlConnection connection = new SqlConnection(_connectionString))

{ SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; command.Parameters.Add(new SqlParameter("@ReprezentacijaId", reprezentacijaId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Fudbaler fud; while (reader.Read()) { fud = new Fudbaler(); fud.ID = Int32.Parse(reader["FudbalerId"].ToString()); fud.Ime = reader["Ime"].ToString(); fud.Prezime = reader["Prezime"].ToString(); fud.Broj = Int32.Parse(reader["Broj"].ToString()); fud.Pozicija = reader["Pozicija"].ToString(); fud.Nacionalnost = reader["Nacionalnost"].ToString(); fud.reprezentacija = new Reprezentacija(); fud.reprezentacija.ID = Int32.Parse(reader["ReprezentacijaId"].ToString()); fud.reprezentacija.Naziv = reader["NazivReprezentacije"].ToString(); fud.reprezentacija.Ime = reader["Ime"].ToString(); fud.reprezentacija.Prezime = reader["Prezime"].ToString(); fud.reprezentacija.BrojnoStanje = Int32.Parse(reader["BrojnoStanje"].ToString()); fudbaleri.Add(fud); } } } return fudbaleri; } } }

5.2 Kod klase FudbalerXML using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace Fudbal { class FudbalerXML { public static void uveziXML(string putanja) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(putanja);

XmlNodeList fudbaleriNodes = xmlDoc.GetElementsByTagName("Fudbaler"); foreach (XmlNode fudbalerNodes in fudbaleriNodes) { Fudbaler fud = new Fudbaler(); fud.Ime = fudbalerNodes.ChildNodes[0].InnerText; fud.Prezime = fudbalerNodes.ChildNodes[1].InnerText; fud.Broj = Convert.ToInt32(fudbalerNodes.ChildNodes[2].InnerText); fud.Pozicija = fudbalerNodes.ChildNodes[3].InnerText; fud.Nacionalnost = fudbalerNodes.ChildNodes[4].InnerText; Klub klub = new Klub(); klub.ID = Convert.ToInt32(fudbalerNodes.ChildNodes[5].InnerText); klub.Naziv = fudbalerNodes.ChildNodes[6].InnerText; klub.Stadion = fudbalerNodes.ChildNodes[7].InnerText; klub.Kapacitet = Convert.ToInt32(fudbalerNodes.ChildNodes[8].InnerText); klub.GodinaOsnivanja = Convert.ToInt32(fudbalerNodes.ChildNodes[9].InnerText); fud.Klub = klub; Reprezentacija rep = new Reprezentacija(); rep.ID = Convert.ToInt32(fudbalerNodes.ChildNodes[10].InnerText); rep.Naziv = fudbalerNodes.ChildNodes[11].InnerText; rep.Ime = fudbalerNodes.ChildNodes[12].InnerText; rep.Prezime = fudbalerNodes.ChildNodes[13].InnerText; rep.BrojnoStanje = Convert.ToInt32(fudbalerNodes.ChildNodes[14].InnerText); fud.Reprezentacija = rep; fud.dodajFudbalera(); } } public static Boolean izveziXML(string putanja, List<Fudbaler> fudbaleri) { XmlDocument xmlDoc = new XmlDocument(); XmlTextWriter xmlWriter = new XmlTextWriter(putanja, System.Text.Encoding.UTF8); xmlWriter.WriteProcessingInstruction( "xml", "version='1.0' encoding='UTF-8'"); xmlWriter.WriteStartElement("Fudbaleri");

xmlWriter.Close(); xmlDoc.Load(putanja); foreach (Fudbaler fud in fudbaleri) { XmlElement fudbalerNode = xmlDoc.CreateElement("Fudbaler"); XmlElement imeFudbalera = xmlDoc.CreateElement("ImeFudbalera"); imeFudbalera.InnerText = fud.Ime; fudbalerNode.AppendChild(imeFudbalera); XmlElement prezimeFudbalera = xmlDoc.CreateElement("PrezimeTrenera"); prezimeFudbalera.InnerText = fud.Prezime; fudbalerNode.AppendChild(prezimeFudbalera); XmlElement broj = xmlDoc.CreateElement("Broj"); broj.InnerText = fud.Broj.ToString(); fudbalerNode.AppendChild(broj); XmlElement pozicija = xmlDoc.CreateElement("Pozicija"); pozicija.InnerText = fud.Pozicija; fudbalerNode.AppendChild(pozicija); XmlElement nacionalnost = xmlDoc.CreateElement("Nacionalnost"); nacionalnost.InnerText = fud.Nacionalnost; fudbalerNode.AppendChild(nacionalnost); XmlElement idKluba = xmlDoc.CreateElement("IdKluba"); idKluba.InnerText = fud.Klub.ID.ToString(); fudbalerNode.AppendChild(idKluba); XmlElement klub = xmlDoc.CreateElement("NazivKluba"); klub.InnerText = fud.Klub.Naziv; fudbalerNode.AppendChild(klub); XmlElement stadion = xmlDoc.CreateElement("Stadion"); stadion.InnerText = fud.Klub.Stadion; fudbalerNode.AppendChild(stadion); XmlElement kapacitet = xmlDoc.CreateElement("Kapacitet"); kapacitet.InnerText = fud.Klub.Kapacitet.ToString(); fudbalerNode.AppendChild(kapacitet); XmlElement godinaOsnivanja = xmlDoc.CreateElement("GodinaOsnivanja"); godinaOsnivanja.InnerText = fud.Klub.GodinaOsnivanja.ToString();

fudbalerNode.AppendChild(godinaOsnivanja); XmlElement idReprezentacije = xmlDoc.CreateElement("IdReprezentacije"); idReprezentacije.InnerText = fud.Reprezentacija.ID.ToString(); fudbalerNode.AppendChild(idReprezentacije); XmlElement nazivReprezentacije = xmlDoc.CreateElement("NazivReprezentacije"); nazivReprezentacije.InnerText = fud.Reprezentacija.Naziv; fudbalerNode.AppendChild(nazivReprezentacije); XmlElement imeKapitena = xmlDoc.CreateElement("ImeKapitena"); imeKapitena.InnerText = fud.Reprezentacija.Ime; fudbalerNode.AppendChild(imeKapitena); XmlElement prezimeKapitena = xmlDoc.CreateElement("PrezimeKapitena"); prezimeKapitena.InnerText = fud.Reprezentacija.Prezime; fudbalerNode.AppendChild(prezimeKapitena); XmlElement brojnoStanje = xmlDoc.CreateElement("BrojnoStanje"); brojnoStanje.InnerText = fud.Reprezentacija.BrojnoStanje.ToString(); fudbalerNode.AppendChild(brojnoStanje); xmlDoc.DocumentElement.InsertAfter( fudbalerNode, xmlDoc.DocumentElement.LastChild); } xmlDoc.Save(putanja); return true; } } }

5.3 Kod klase Klub using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fudbal { [Serializable] public class Klub { private int id; private string naziv; private string stadion; private int kapacitet; private int godinaOsnivanja; private List<Fudbaler> fudbaleri;

private Trener trener; private Liga liga; public int ID { get { return id; } set { id = value; } } public string Naziv { get { return naziv; } set { if (value == "") throw new Exception("Morate uneti naziv kluba!!!"); naziv = value; } } public string Stadion { get { return stadion; } set { if (value == "") throw new Exception("Morate uneti stadion!!!"); stadion = value; } } public int Kapacitet { get { return kapacitet; } set { if (value == 0) throw new Exception("Morate uneti kapacitet stadiona!!"); kapacitet = value; } } public int GodinaOsnivanja { get { return godinaOsnivanja; } set { if (value == 0) throw new Exception("Morate uneti godinu osnivanja!!!"); godinaOsnivanja = value; } } public List<Fudbaler> Fudbaleri { get { return fudbaleri; } set { fudbaleri = value; } }

public Liga Liga { get { return liga; } set { if (value.ID == 0) throw new Exception("Morate uneti Ligu!!!"); liga = value; } } public Trener Trener { get { return trener; } set { if (value.ID == 0) throw new Exception("Morate uneti Trenera!!!"); trener = value; } } private string _connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FudbalDB.mdf;Integrated Security=True"; public void dodajKlub() { string insertSql = "INSERT INTO T_KLUB " + "(Naziv, Stadion, Kapacitet, GodinaOsnivanja, LigaId, TrenerId) VALUES " + "(@Naziv, @Stadion, @Kapacitet, @GodinaOsnivanja, @LigaId, @TrenerId)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = insertSql; command.Parameters.Add(new SqlParameter("@Naziv", Naziv)); command.Parameters.Add(new SqlParameter("@Stadion", Stadion)); command.Parameters.Add(new SqlParameter("@Kapacitet", Kapacitet)); command.Parameters.Add(new SqlParameter("@GodinaOsnivanja", GodinaOsnivanja)); command.Parameters.Add(new SqlParameter("@LigaId", Liga.ID)); command.Parameters.Add(new SqlParameter("@TrenerId", Trener.ID)); connection.Open(); command.ExecuteNonQuery(); } } public void azurirajKlub() { string updateSql = "UPDATE T_KLUB " + "SET Naziv = @Naziv, Stadion= @Stadion, Kapacitet= @Kapacitet, GodinaOsnivanja = @GodinaOsnivanja, LigaId = @LigaId, TrenerId = @TrenerId WHERE KlubId = @KlubId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) {

SqlCommand command = connection.CreateCommand(); command.CommandText = updateSql; command.Parameters.Add(new SqlParameter("@KlubId", ID)); command.Parameters.Add(new SqlParameter("@Naziv", Naziv)); command.Parameters.Add(new SqlParameter("@Stadion", Stadion)); command.Parameters.Add(new SqlParameter("@Kapacitet", Kapacitet)); command.Parameters.Add(new SqlParameter("@GodinaOsnivanja", GodinaOsnivanja)); command.Parameters.Add(new SqlParameter("@LigaId", Liga.ID)); command.Parameters.Add(new SqlParameter("@TrenerId", Trener.ID)); connection.Open(); command.ExecuteNonQuery(); } } public void obrisiKlub() { string deleteSql = "DELETE FROM T_KLUB WHERE KlubId = @KlubId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql; command.Parameters.Add(new SqlParameter("@KlubId", ID)); connection.Open(); command.ExecuteNonQuery(); } } public List<Klub> ucitajKlubove() { List<Klub> klubovi = new List<Klub>(); string queryString = "SELECT klub.KlubId, klub.Naziv, klub.Stadion, klub.Kapacitet, klub.GodinaOsnivanja, liga.LigaId, liga.Naziv AS NazivLige, liga.Rang, liga.BrojKlubova, trener.TrenerId, trener.Ime, trener.Prezime, trener.Nacionalnost, trener.Vrsta FROM T_KLUB klub, T_LIGA liga, T_TRENER trener WHERE klub.LigaId = liga.LigaId AND klub.TrenerId=trener.TrenerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Klub klub; while (reader.Read()) { klub = new Klub(); klub.ID = Int32.Parse(reader["KlubId"].ToString()); klub.Naziv = reader["Naziv"].ToString(); klub.Stadion = reader["Stadion"].ToString(); klub.Kapacitet = Int32.Parse(reader["Kapacitet"].ToString()); klub.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanja"].ToString()); klub.liga = new Liga();

klub.liga.ID = Int32.Parse(reader["LigaId"].ToString()); klub.liga.Naziv = reader["NazivLige"].ToString(); klub.liga.Rang = Int32.Parse(reader["Rang"].ToString()); klub.liga.BrojKlubova = Int32.Parse(reader["BrojKlubova"].ToString()); klub.trener = new Trener(); klub.trener.ID = Int32.Parse(reader["TrenerId"].ToString()); klub.trener.Ime = reader["Ime"].ToString(); klub.trener.Prezime = reader["Prezime"].ToString(); klub.trener.Nacionalnost = reader["Nacionalnost"].ToString(); klub.trener.Vrsta = reader["Vrsta"].ToString(); klubovi.Add(klub); } } } return klubovi; } public List<Klub> ucitajKluboveZaTrenere(int trenerId) { List<Klub> klubovi = new List<Klub>(); string queryString = "SELECT klub.KlubId, klub.Naziv, klub.Stadion, klub.Kapacitet, klub.GodinaOsnivanja, trener.TrenerId, trener.Ime, trener.Prezime, trener.Nacionalnost, trener.Vrsta FROM T_KLUB klub, T_TRENER trener WHERE klub.TrenerId=trener.TrenerId AND trener.TrenerId = @TrenerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; command.Parameters.Add(new SqlParameter("@TrenerId", trenerId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Klub klub; while (reader.Read()) { klub = new Klub(); klub.ID = Int32.Parse(reader["KlubId"].ToString()); klub.Naziv = reader["Naziv"].ToString(); klub.Stadion = reader["Stadion"].ToString(); klub.Kapacitet = Int32.Parse(reader["Kapacitet"].ToString()); klub.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanja"].ToString()); klub.trener = new Trener(); klub.trener.ID = Int32.Parse(reader["TrenerId"].ToString()); klub.trener.Ime = reader["Ime"].ToString(); klub.trener.Prezime = reader["Prezime"].ToString(); klub.trener.Nacionalnost = reader["Nacionalnost"].ToString(); klub.trener.Vrsta = reader["Vrsta"].ToString(); klubovi.Add(klub); } } } return klubovi; }

public List<Klub> ucitajKluboveZaLige(int ligaId) { List<Klub> klubovi = new List<Klub>(); string queryString = "SELECT klub.KlubId, klub.Naziv, klub.Stadion, klub.Kapacitet, klub.GodinaOsnivanja, liga.LigaId, liga.Naziv AS NazivLige, liga.Rang, liga.BrojKlubova FROM T_KLUB klub, T_LIGA liga WHERE klub.LigaId=liga.LigaId AND liga.LigaId = @LigaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; command.Parameters.Add(new SqlParameter("@LigaId", ligaId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Klub klub; while (reader.Read()) { klub = new Klub(); klub.ID = Int32.Parse(reader["KlubId"].ToString()); klub.Naziv = reader["Naziv"].ToString(); klub.Stadion = reader["Stadion"].ToString(); klub.Kapacitet = Int32.Parse(reader["Kapacitet"].ToString()); klub.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanja"].ToString()); klub.liga = new Liga(); klub.liga.ID = Int32.Parse(reader["LigaId"].ToString()); klub.liga.Naziv = reader["NazivLige"].ToString(); klub.liga.Rang = Int32.Parse(reader["Rang"].ToString()); klub.liga.BrojKlubova = Int32.Parse(reader["BrojKlubova"].ToString()); klubovi.Add(klub); } } } return klubovi; } } }

5.4 Kod klase Liga using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fudbal { [Serializable]

public class Liga { private int id; private string naziv; private int rang; private int brojKlubova; private List<Klub> klub; public int ID { get { return id; } set { id = value; } } public string Naziv { get { return naziv; } set { if (value == "") throw new Exception("Morate uneti naziv lige!!!"); naziv = value; } } public int Rang { get { return rang; } set { if (value == 0) throw new Exception("Morate uneti rang lige!!"); rang = value; } } public int BrojKlubova { get { return brojKlubova; } set { if (value == 0) throw new Exception("Morate uneti broj klubova lige!!"); brojKlubova = value; } } public List<Klub> Klub { get { return klub; } set { klub = value; } } private string _connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FudbalDB.mdf;Integrated Security=True"; public void dodajLigu() { string insertSql = "INSERT INTO T_LIGA" + "(Naziv, Rang, BrojKlubova) VALUES " +

"(@Naziv, @Rang, @BrojKlubova)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = insertSql; command.Parameters.Add(new SqlParameter("@Naziv", Naziv)); command.Parameters.Add(new SqlParameter("@Rang", Rang)); command.Parameters.Add(new SqlParameter("@BrojKlubova", BrojKlubova)); connection.Open(); command.ExecuteNonQuery(); } } public void azurirajLigu() { string updateSql = "UPDATE T_LIGA " + "SET Naziv = @Naziv, Rang= @Rang, BrojKlubova= @BrojKlubova WHERE LigaId = @LigaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = updateSql; command.Parameters.Add(new SqlParameter("@LigaId", ID)); command.Parameters.Add(new SqlParameter("@Naziv", Naziv)); command.Parameters.Add(new SqlParameter("@Rang", Rang)); command.Parameters.Add(new SqlParameter("@BrojKlubova", BrojKlubova)); connection.Open(); command.ExecuteNonQuery(); } } public void obrisiLigu() { string deleteSql = "DELETE FROM T_LIGA WHERE LigaId = @LigaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql; command.Parameters.Add(new SqlParameter("@LigaId", ID)); connection.Open(); command.ExecuteNonQuery(); } } public List<Liga> ucitajLige() { List<Liga> lige = new List<Liga>(); string queryString = "SELECT * FROM T_LIGA;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader())

{ Liga liga; while (reader.Read()) { liga = new Liga(); liga.ID = Int32.Parse(reader["LigaId"].ToString()); liga.Naziv = reader["Naziv"].ToString(); liga.Rang = Int32.Parse(reader["Rang"].ToString()); liga.BrojKlubova = Int32.Parse(reader["BrojKlubova"].ToString()); lige.Add(liga); } } } return lige; } } }

5.5. Kod klase Reprezentacija using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fudbal { [Serializable] public class Reprezentacija { private int id; private string naziv; private string ime; public string prezime; private int brojnoStanje; private List<Fudbaler> fudbaleri; private Trener trener; private Fudbaler fudbaler; public int ID { get { return id; } set { id = value; } } public string Naziv { get { return naziv; } set { if (value == "") throw new Exception("Morate uneti naziv reprezentacije!!!"); naziv = value;

} } public string Ime { get { return ime; } set { if (value == "") throw new Exception("Morate uneti ime kapitena!!!"); ime = value; } } public string Prezime { get { return prezime; } set { if (value == "") throw new Exception("Morate uneti prezime kapitena!!!"); prezime = value; } } public int BrojnoStanje { get { return brojnoStanje; } set { if (value == 0) throw new Exception("Morate uneti brojno stanje fudbalera!!"); brojnoStanje = value; } } public List<Fudbaler> Fudbaleri { get { return fudbaleri; } set { fudbaleri = value; } } public Trener Trener { get { return trener; } set { if (value.ID == 0) throw new Exception("Morate uneti Trenera!!!"); trener = value; } } public Fudbaler Fudbaler { get { return fudbaler; } set { if (value.ID == 0) throw new Exception("Morate uneti Fudbalera!!!");

fudbaler = value; } } private string _connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FudbalDB.mdf;Integrated Security=True"; public void dodajReprezentaciju() { string insertSql = "INSERT INTO T_REPREZENTACIJA " + "(Naziv, Ime, Prezime, BrojnoStanje, TrenerId) VALUES " + "(@Naziv, @Ime, @Prezime, @BrojnoStanje, @TrenerId)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = insertSql; command.Parameters.Add(new SqlParameter("@Naziv", Naziv)); command.Parameters.Add(new SqlParameter("@Ime", Ime)); command.Parameters.Add(new SqlParameter("@Prezime", Prezime)); command.Parameters.Add(new SqlParameter("@BrojnoStanje", BrojnoStanje)); command.Parameters.Add(new SqlParameter("@TrenerId", Trener.ID)); connection.Open(); command.ExecuteNonQuery(); } } public void azurirajReprezentaciju() { string updateSql = "UPDATE T_REPREZENTACIJA " + "SET Naziv = @Naziv, Ime= @Ime, Prezime= @Prezime, BrojnoStanje= @BrojnoStanje, TrenerId=@TrenerId WHERE ReprezentacijaId = @ReprezentacijaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = updateSql; command.Parameters.Add(new SqlParameter("@ReprezentacijaId", ID)); command.Parameters.Add(new SqlParameter("@Naziv", Naziv)); command.Parameters.Add(new SqlParameter("@Ime", Ime)); command.Parameters.Add(new SqlParameter("@Prezime", Prezime)); command.Parameters.Add(new SqlParameter("@BrojnoStanje", BrojnoStanje)); command.Parameters.Add(new SqlParameter("@TrenerId", Trener.ID)); connection.Open(); command.ExecuteNonQuery(); } } public void obrisiReprezentaciju() { string deleteSql = "DELETE FROM T_REPREZENTACIJA WHERE ReprezentacijaId = @ReprezentacijaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql; command.Parameters.Add(new SqlParameter("@ReprezentacijaId", ID));

connection.Open(); command.ExecuteNonQuery(); } } public List<Reprezentacija> ucitajReprezentacije() { List<Reprezentacija> reprezentacije = new List<Reprezentacija>(); string queryString = "SELECT rep.ReprezentacijaId, rep.Naziv, rep.Ime AS ImeKapitena, rep.Prezime AS PrezimeKapitena, rep.BrojnoStanje, trener.TrenerId, trener.Ime, trener.Prezime, trener.Nacionalnost, trener.Vrsta FROM T_REPREZENTACIJA rep, T_TRENER trener WHERE rep.TrenerId = trener.TrenerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Reprezentacija reprezentacija; while (reader.Read()) { reprezentacija = new Reprezentacija(); reprezentacija.ID = Int32.Parse(reader["ReprezentacijaId"].ToString()); reprezentacija.Naziv = reader["Naziv"].ToString(); reprezentacija.Ime = reader["ImeKapitena"].ToString(); reprezentacija.Prezime = reader["PrezimeKapitena"].ToString(); reprezentacija.BrojnoStanje = Int32.Parse(reader["BrojnoStanje"].ToString()); reprezentacija.trener = new Trener(); reprezentacija.trener.ID = Int32.Parse(reader["TrenerId"].ToString()); reprezentacija.trener.Ime = reader["Ime"].ToString(); reprezentacija.trener.Prezime = reader["Prezime"].ToString(); reprezentacija.trener.Nacionalnost = reader["Nacionalnost"].ToString(); reprezentacija.trener.Vrsta = reader["Vrsta"].ToString(); reprezentacije.Add(reprezentacija); } } } return reprezentacije; } public List<Reprezentacija> ucitajReprezentacijeZaTrenere(int trenerId) { List<Reprezentacija> reprezentacije = new List<Reprezentacija>(); string queryString = "SELECT rep.ReprezentacijaId, rep.Naziv, rep.Ime AS ImeKapitena, rep.Prezime AS PrezimeKapitena, rep.BrojnoStanje, trener.TrenerId, trener.Ime, trener.Prezime, trener.Nacionalnost, trener.Vrsta FROM T_REPREZENTACIJA rep, T_TRENER trener WHERE rep.TrenerId = trener.TrenerId AND trener.TrenerId=@TrenerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString;

command.Parameters.Add(new SqlParameter("@TrenerId", trenerId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Reprezentacija reprezentacija; while (reader.Read()) { reprezentacija = new Reprezentacija(); reprezentacija.ID = Int32.Parse(reader["ReprezentacijaId"].ToString()); reprezentacija.Naziv = reader["Naziv"].ToString(); reprezentacija.Ime = reader["ImeKapitena"].ToString(); reprezentacija.Prezime = reader["PrezimeKapitena"].ToString(); reprezentacija.BrojnoStanje = Int32.Parse(reader["BrojnoStanje"].ToString()); reprezentacija.trener = new Trener(); reprezentacija.trener.ID = Int32.Parse(reader["TrenerId"].ToString()); reprezentacija.trener.Ime = reader["Ime"].ToString(); reprezentacija.trener.Prezime = reader["Prezime"].ToString(); reprezentacija.trener.Nacionalnost = reader["Nacionalnost"].ToString(); reprezentacija.trener.Vrsta = reader["Vrsta"].ToString(); reprezentacije.Add(reprezentacija); } } } return reprezentacije; } } }

5.6 Kod klase Takmicenje using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fudbal { [Serializable] public class Takmicenje { private int id; private string naziv; private DateTime datum; private List<Klub> klubovi; public int ID { get { return id; } set { id = value; } }

public string Naziv { get { return naziv; } set { if (value == "") throw new Exception("Morate uneti naziv takmicenja!!!"); naziv = value; } } public DateTime Datum { get { return datum; } set { datum = value; } } public List<Klub> Klubovi { get { return klubovi; } set { klubovi = value; } } private string _connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FudbalDB.mdf;Integrated Security=True"; public void dodajTakmicenje() { string insertTakmicenjeSql = "INSERT INTO T_TAKMICENJE " + "(Naziv, Datum) VALUES " + "(@Naziv, @Datum);" + "SELECT CAST(SCOPE_IDENTITY() AS INT);"; string insertTakmicenjeKlubSql = "INSERT INTO T_KLUB_TAKMICENJE " + "(KlubId, TakmicenjeId) VALUES " + "(@KlubId, @TakmicenjeId);"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand takmicenjeCommand = connection.CreateCommand(); takmicenjeCommand.CommandText = insertTakmicenjeSql; takmicenjeCommand.Parameters.Add(new SqlParameter("@Naziv", Naziv)); takmicenjeCommand.Parameters.Add(new SqlParameter("@Datum", Datum)); connection.Open(); int insertedId = (int)takmicenjeCommand.ExecuteScalar(); SqlCommand takmicenjeKlubCommand = connection.CreateCommand(); takmicenjeKlubCommand.CommandText = insertTakmicenjeKlubSql; foreach (Klub klub in Klubovi) { takmicenjeKlubCommand.Parameters.Clear(); takmicenjeKlubCommand.Parameters.Add(new SqlParameter("@KlubId", klub.ID)); takmicenjeKlubCommand.Parameters.Add(new SqlParameter("@TakmicenjeId", insertedId)); takmicenjeKlubCommand.ExecuteNonQuery();

} } } public void azurirajTakmicenje() { string updateTakmicenjeSql = "UPDATE T_TAKMICENJE " + "SET Naziv = @Naziv, Datum = @Datum " + "WHERE TakmicenjeId = @TakmicenjeId;"; string deleteTakmicenjeKlubSql = "DELETE T_KLUB_TAKMICENJE WHERE TakmicenjeId = @TakmicenjeId"; string insertTakmicenjeKlubSql = "INSERT INTO T_KLUB_TAKMICENJE " + "(KlubId, TakmicenjeId) VALUES " + "(@KlubId, @TakmicenjeId);"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand updateCommand = connection.CreateCommand(); updateCommand.CommandText = updateTakmicenjeSql; updateCommand.Parameters.Add(new SqlParameter("@TakmicenjeId", ID)); updateCommand.Parameters.Add(new SqlParameter("@Naziv", Naziv)); updateCommand.Parameters.Add(new SqlParameter("@Datum", Datum)); connection.Open(); updateCommand.ExecuteNonQuery(); SqlCommand deleteCommand = connection.CreateCommand(); deleteCommand.CommandText = deleteTakmicenjeKlubSql; deleteCommand.Parameters.Add(new SqlParameter("@TakmicenjeId", ID)); deleteCommand.ExecuteNonQuery(); SqlCommand takmicenjeKlubCommand = connection.CreateCommand(); takmicenjeKlubCommand.CommandText = insertTakmicenjeKlubSql; foreach (Klub klub in Klubovi) { takmicenjeKlubCommand.Parameters.Clear(); takmicenjeKlubCommand.Parameters.Add(new SqlParameter("@KlubId", klub.ID)); takmicenjeKlubCommand.Parameters.Add(new SqlParameter("@TakmicenjeId", ID)); takmicenjeKlubCommand.ExecuteNonQuery(); } } } public void obrisiTakmicenje() { string deleteSql = "DELETE FROM T_KLUB_TAKMICENJE WHERE TakmicenjeId = @TakmicenjeId;" + "DELETE FROM T_TAKMICENJE WHERE TakmicenjeId = @TakmicenjeId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql; command.Parameters.Add(new SqlParameter("@TakmicenjeId", ID)); connection.Open(); command.ExecuteNonQuery();

} } public List<Takmicenje> ucitajTakmicenja() { List<Takmicenje> takmicenja = new List<Takmicenje>(); string queryString = "SELECT " + " klub.KlubId, klub.Naziv as NazivKluba, klub.Stadion, klub.Kapacitet, klub.GodinaOsnivanja, " + " takm.TakmicenjeId, takm.Naziv as NazivTakmicenja, takm.Datum " + "FROM T_KLUB klub, T_TAKMICENJE takm, T_KLUB_TAKMICENJE kp " + "WHERE klub.KlubId = kp.KlubId AND takm.TakmicenjeId = kp.TakmicenjeId " + "ORDER BY takm.TakmicenjeId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { int prethodniIdTakmicenja = 0; Takmicenje takmicenje = new Takmicenje(); while (reader.Read()) { int idTakmicenja = Int32.Parse(reader["TakmicenjeId"].ToString()); if (idTakmicenja != prethodniIdTakmicenja) { prethodniIdTakmicenja = idTakmicenja; takmicenje = new Takmicenje(); takmicenja.Add(takmicenje); takmicenje.ID = idTakmicenja; takmicenje.Naziv = reader["NazivTakmicenja"].ToString(); takmicenje.Datum = DateTime.Parse(reader["Datum"].ToString()); takmicenje.Klubovi = new List<Klub>(); } Klub klub = new Klub(); klub.ID = Int32.Parse(reader["KlubId"].ToString()); klub.Naziv = reader["NazivKluba"].ToString(); klub.Stadion = (reader["Stadion"].ToString()); klub.Kapacitet = Int32.Parse(reader["Kapacitet"].ToString()); klub.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanja"].ToString()); takmicenje.Klubovi.Add(klub); } } } return takmicenja; } } }

5.7 Kod klase Trener using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fudbal { [Serializable] public class Trener { private int id; private string ime; private string prezime; private string nacionalnost; private string vrsta; public int ID { get { return id; } set { id = value; } } public string Ime { get { return ime; } set { if (value == "") throw new Exception("Morate uneti ime trenera!!!"); ime = value; } } public string Prezime { get { return prezime; } set { if (value == "") throw new Exception("Morate uneti prezime trenera!!!"); prezime = value; } } public string Nacionalnost { get { return nacionalnost; } set { if (value == "") throw new Exception("Morate uneti nacionalnost trenera!!!"); nacionalnost = value; }

} public string Vrsta { get { return vrsta; } set { if (value == "") throw new Exception("Morate uneti vrstu trenera!!!"); vrsta = value; } } private string _connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FudbalDB.mdf;Integrated Security=True"; public void dodajTrenera() { string insertSql = "INSERT INTO T_TRENER " + "(Ime, Prezime, Nacionalnost, Vrsta) VALUES " + "(@Ime, @Prezime, @Nacionalnost, @Vrsta)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = insertSql; command.Parameters.Add(new SqlParameter("@Ime", Ime)); command.Parameters.Add(new SqlParameter("@Prezime", Prezime)); command.Parameters.Add(new SqlParameter("@Nacionalnost", Nacionalnost)); command.Parameters.Add(new SqlParameter("@Vrsta", Vrsta)); connection.Open(); command.ExecuteNonQuery(); } } public void azurirajTrenera() { string updateSql = "UPDATE T_TRENER " + "SET Ime= @Ime, Prezime = @Prezime," + "Nacionalnost= @Nacionalnost, Vrsta= @Vrsta WHERE TrenerId = @TrenerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = updateSql; command.Parameters.Add(new SqlParameter("@TrenerId", ID)); command.Parameters.Add(new SqlParameter("@Ime", Ime)); command.Parameters.Add(new SqlParameter("@Prezime", Prezime)); command.Parameters.Add(new SqlParameter("@Nacionalnost", Nacionalnost)); command.Parameters.Add(new SqlParameter("@Vrsta", Vrsta)); connection.Open(); command.ExecuteNonQuery(); } } public void obrisiTrenera() { string deleteSql =

"DELETE FROM T_TRENER WHERE TrenerId = @TrenerId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql; command.Parameters.Add(new SqlParameter("@TrenerId", ID)); connection.Open(); command.ExecuteNonQuery(); } } public List<Trener> ucitajTrenere() { List<Trener> treneri = new List<Trener>(); string queryString = "SELECT * FROM T_TRENER;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Trener trn; while (reader.Read()) { trn = new Trener(); trn.ID = Int32.Parse(reader["TrenerId"].ToString()); trn.Ime = reader["Ime"].ToString(); trn.Prezime = reader["Prezime"].ToString(); trn.Nacionalnost = reader["Nacionalnost"].ToString(); trn.Vrsta = reader["Vrsta"].ToString(); treneri.Add(trn); } } } return treneri; } } }

5.8 Kod klase TrenerXML using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace Fudbal { class TrenerXML {

public static void uveziXML(string putanja) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(putanja); XmlNodeList treneriNodes = xmlDoc.GetElementsByTagName("Trener"); foreach (XmlNode trenerNode in treneriNodes) { Trener tren = new Trener(); tren.Ime = trenerNode.ChildNodes[0].InnerText; tren.Prezime = trenerNode.ChildNodes[1].InnerText; tren.Nacionalnost = trenerNode.ChildNodes[2].InnerText; tren.Vrsta = trenerNode.ChildNodes[3].InnerText; tren.dodajTrenera(); } } public static Boolean izveziXML(string putanja, List<Trener> treneri) { XmlDocument xmlDoc = new XmlDocument(); XmlTextWriter xmlWriter = new XmlTextWriter(putanja, System.Text.Encoding.UTF8); xmlWriter.WriteProcessingInstruction( "xml", "version='1.0' encoding='UTF-8'"); xmlWriter.WriteStartElement("Treneri"); xmlWriter.Close(); xmlDoc.Load(putanja); foreach (Trener tren in treneri) { XmlElement trenerNode = xmlDoc.CreateElement("Trener");

XmlElement imeTrenera = xmlDoc.CreateElement("ImeTrenera"); imeTrenera.InnerText = tren.Ime; trenerNode.AppendChild(imeTrenera); XmlElement prezimeTrenera = xmlDoc.CreateElement("PrezimeTrenera"); prezimeTrenera.InnerText = tren.Prezime; trenerNode.AppendChild(prezimeTrenera); XmlElement nacionalnost = xmlDoc.CreateElement("Nacionalnost"); nacionalnost.InnerText = tren.Nacionalnost; trenerNode.AppendChild(nacionalnost); XmlElement vrsta = xmlDoc.CreateElement("Vrsta"); vrsta.InnerText = tren.Vrsta; trenerNode.AppendChild(vrsta); xmlDoc.DocumentElement.InsertAfter( trenerNode, xmlDoc.DocumentElement.LastChild); } xmlDoc.Save(putanja); return true; } } }

5.9 Kod klase Utakmica using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fudbal { [Serializable] public class Utakmica { private int id; private DateTime datum; private string stadion; private string prognoza; private Klub klub1;

private Klub klub2; private Liga liga; public int ID { get { return id; } set { id = value; } } public DateTime Datum { get { return datum; } set { datum = value; } } public string Stadion { get { return stadion; } set { if (value == "") throw new Exception("Morate uneti stadion!!!"); stadion = value; } } public string Prognoza { get { return prognoza; } set { if (value == "") throw new Exception("Morate uneti vremensku prognozu!!"); prognoza = value; } } public Klub Klub1 { get { return klub1; } set { if (value.ID == 0) throw new Exception("Morate uneti Domaćina!!!"); klub1 = value; } } public Klub Klub2 { get { return klub2; } set { if (value.ID == 0) throw new Exception("Morate uneti Gosta!!!");

klub2 = value; } } public Liga Liga { get { return liga; } set { if (value.ID == 0) throw new Exception("Morate uneti Ligu!!!"); liga = value; } } private string _connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FudbalDB.mdf;Integrated Security=True"; public void dodajUtakmicu() { string insertSql = "INSERT INTO T_UTAKMICA " + "(Datum, Stadion, Prognoza, KlubId1, KlubId2, LigaId) VALUES (@Datum, @Stadion, @Prognoza, @KlubId1, @KlubId2, @LigaId)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = insertSql; command.Parameters.Add(new SqlParameter("@Datum", Datum)); command.Parameters.Add(new SqlParameter("@Stadion", Stadion)); command.Parameters.Add(new SqlParameter("@Prognoza", Prognoza)); command.Parameters.Add(new SqlParameter("@KlubId1", Klub1.ID)); command.Parameters.Add(new SqlParameter("@KlubId2", Klub2.ID )); command.Parameters.Add(new SqlParameter("@LigaId", Liga.ID)); connection.Open(); command.ExecuteNonQuery(); } } public void azurirajUtakmicu() { string updateSql = "UPDATE T_UTAKMICA " + "SET Datum= @Datum, Stadion = @Stadion, Prognoza= @Prognoza," + "KlubId1 = @KlubId1, KlubId2 = @KlubId2, LigaId =@LigaId WHERE UtakmicaId = @UtakmicaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = updateSql; command.Parameters.Add(new SqlParameter("@UtakmicaId", ID)); command.Parameters.Add(new SqlParameter("@Datum", Datum)); command.Parameters.Add(new SqlParameter("@Stadion", Stadion)); command.Parameters.Add(new SqlParameter("@Prognoza", Prognoza)); command.Parameters.Add(new SqlParameter("@KlubId1", Klub1.ID)); command.Parameters.Add(new SqlParameter("@KlubId2", Klub2.ID)); command.Parameters.Add(new SqlParameter("@LigaId", Liga.ID));

connection.Open(); command.ExecuteNonQuery(); } } public void obrisiUtakmicu() { string deleteSql = "DELETE FROM T_UTAKMICA WHERE UtakmicaId = @UtakmicaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql; command.Parameters.Add(new SqlParameter("@UtakmicaId", ID)); connection.Open(); command.ExecuteNonQuery(); } } public List<Utakmica> ucitajUtakmice() { List<Utakmica> utakmice = new List<Utakmica>(); string queryString = "SELECT utk.UtakmicaId,utk.Datum,utk.Stadion,utk.Prognoza, k1.KlubId AS KlubId1,k1.Naziv AS Domacin,k1.Stadion AS StadionDomacina,k1.Kapacitet AS KapacitetDomacina,k1.GodinaOsnivanja AS GodinaOsnivanjaDomacina, k2.KlubId AS KlubId2,k2.Naziv AS Gost,k2.Stadion AS StadionGosta,k2.Kapacitet AS KapacitetGosta,k2.GodinaOsnivanja AS GodinaOsnivanjaGosta,liga.LigaId, liga.Naziv AS NazivLige, liga.Rang,liga.BrojKlubova FROM T_UTAKMICA utk, T_KLUB k1, T_KLUB k2, T_LIGA liga WHERE utk.KlubId1 = k1.KlubId AND utk.KlubId2 = k2.KlubId AND utk.LigaId=liga.LigaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Utakmica utk; while (reader.Read()) { utk = new Utakmica(); utk.ID = Int32.Parse(reader["UtakmicaId"].ToString()); utk.Datum = DateTime.Parse(reader["Datum"].ToString()); utk.Stadion = reader["Stadion"].ToString(); utk.Prognoza = reader["Prognoza"].ToString(); Klub k1 = new Klub(); k1.ID = Int32.Parse(reader["KlubId1"].ToString()); k1.Naziv = reader["Domacin"].ToString(); k1.Stadion = reader["StadionDomacina"].ToString(); k1.Kapacitet = Int32.Parse(reader["KapacitetDomacina"].ToString()); k1.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaDomacina"].ToString()); utk.Klub1 = k1; Klub k2 = new Klub();

k2.ID = Int32.Parse(reader["KlubId2"].ToString()); k2.Naziv = reader["Gost"].ToString(); k2.Stadion = reader["StadionGosta"].ToString(); k2.Kapacitet = Int32.Parse(reader["KapacitetGosta"].ToString()); k2.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaGosta"].ToString()); utk.Klub2 = k2; Liga liga = new Liga(); liga.ID = Int32.Parse(reader["LigaId"].ToString()); liga.Naziv = reader["NazivLige"].ToString(); liga.Rang = Int32.Parse(reader["Rang"].ToString()); liga.BrojKlubova = Int32.Parse(reader["BrojKlubova"].ToString()); utk.Liga = liga; utakmice.Add(utk); } } } return utakmice; } public List<Utakmica> ucitajUtakmiceZaDomacina(int klubId) { List<Utakmica> utakmice = new List<Utakmica>(); string queryString = "SELECT utk.UtakmicaId,utk.Datum,utk.Stadion,utk.Prognoza, k1.KlubId AS KlubId1,k1.Naziv AS Domacin,k1.Stadion AS StadionDomacina,k1.Kapacitet AS KapacitetDomacina,k1.GodinaOsnivanja AS GodinaOsnivanjaDomacina, k2.KlubId AS KlubId2,k2.Naziv AS Gost,k2.Stadion AS StadionGosta,k2.Kapacitet AS KapacitetGosta,k2.GodinaOsnivanja AS GodinaOsnivanjaGosta,liga.LigaId, liga.Naziv AS NazivLige, liga.Rang,liga.BrojKlubova FROM T_UTAKMICA utk, T_KLUB k1, T_KLUB k2, T_LIGA liga WHERE utk.KlubId1 = k1.KlubId AND utk.KlubId2 = k2.KlubId AND k1.KlubId = @KlubId AND utk.LigaId=liga.LigaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; command.Parameters.Add(new SqlParameter("@KlubId", klubId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Utakmica utk; while (reader.Read()) { utk = new Utakmica(); utk.ID = Int32.Parse(reader["UtakmicaId"].ToString()); utk.Datum = DateTime.Parse(reader["Datum"].ToString()); utk.Stadion = reader["Stadion"].ToString(); utk.Prognoza = reader["Prognoza"].ToString(); Klub k1 = new Klub(); k1.ID = Int32.Parse(reader["KlubId1"].ToString()); k1.Naziv = reader["Domacin"].ToString(); k1.Stadion = reader["StadionDomacina"].ToString();

k1.Kapacitet = Int32.Parse(reader["KapacitetDomacina"].ToString()); k1.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaDomacina"].ToString()); utk.Klub1 = k1; Klub k2 = new Klub(); k2.ID = Int32.Parse(reader["KlubId2"].ToString()); k2.Naziv = reader["Gost"].ToString(); k2.Stadion = reader["StadionGosta"].ToString(); k2.Kapacitet = Int32.Parse(reader["KapacitetGosta"].ToString()); k2.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaGosta"].ToString()); utk.Klub2 = k2; Liga liga = new Liga(); liga.ID = Int32.Parse(reader["LigaId"].ToString()); liga.Naziv = reader["NazivLige"].ToString(); liga.Rang = Int32.Parse(reader["Rang"].ToString()); liga.BrojKlubova = Int32.Parse(reader["BrojKlubova"].ToString()); utk.Liga = liga; utakmice.Add(utk); } } } return utakmice; } public List<Utakmica> ucitajUtakmiceZaGosta(int klubId) { List<Utakmica> utakmice = new List<Utakmica>(); string queryString = "SELECT utk.UtakmicaId,utk.Datum,utk.Stadion,utk.Prognoza, k1.KlubId AS KlubId1,k1.Naziv AS Domacin,k1.Stadion AS StadionDomacina,k1.Kapacitet AS KapacitetDomacina,k1.GodinaOsnivanja AS GodinaOsnivanjaDomacina, k2.KlubId AS KlubId2,k2.Naziv AS Gost,k2.Stadion AS StadionGosta,k2.Kapacitet AS KapacitetGosta,k2.GodinaOsnivanja AS GodinaOsnivanjaGosta,liga.LigaId, liga.Naziv AS NazivLige, liga.Rang,liga.BrojKlubova FROM T_UTAKMICA utk, T_KLUB k1, T_KLUB k2, T_LIGA liga WHERE utk.KlubId1 = k1.KlubId AND utk.KlubId2 = k2.KlubId AND k2.KlubId = @KlubId AND utk.LigaId=liga.LigaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; command.Parameters.Add(new SqlParameter("@KlubId", klubId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Utakmica utk; while (reader.Read()) { utk = new Utakmica(); utk.ID = Int32.Parse(reader["UtakmicaId"].ToString()); utk.Datum = DateTime.Parse(reader["Datum"].ToString()); utk.Stadion = reader["Stadion"].ToString();

utk.Prognoza = reader["Prognoza"].ToString(); Klub k1 = new Klub(); k1.ID = Int32.Parse(reader["KlubId1"].ToString()); k1.Naziv = reader["Domacin"].ToString(); k1.Stadion = reader["StadionDomacina"].ToString(); k1.Kapacitet = Int32.Parse(reader["KapacitetDomacina"].ToString()); k1.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaDomacina"].ToString()); utk.Klub1 = k1; Klub k2 = new Klub(); k2.ID = Int32.Parse(reader["KlubId2"].ToString()); k2.Naziv = reader["Gost"].ToString(); k2.Stadion = reader["StadionGosta"].ToString(); k2.Kapacitet = Int32.Parse(reader["KapacitetGosta"].ToString()); k2.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaGosta"].ToString()); utk.Klub2 = k2; Liga liga = new Liga(); liga.ID = Int32.Parse(reader["LigaId"].ToString()); liga.Naziv = reader["NazivLige"].ToString(); liga.Rang = Int32.Parse(reader["Rang"].ToString()); liga.BrojKlubova = Int32.Parse(reader["BrojKlubova"].ToString()); utk.Liga = liga; utakmice.Add(utk); } } } return utakmice; } public List<Utakmica> ucitajUtakmiceZaLigu(int ligaId) { List<Utakmica> utakmice = new List<Utakmica>(); string queryString = "SELECT utk.UtakmicaId,utk.Datum,utk.Stadion,utk.Prognoza, k1.KlubId AS KlubId1,k1.Naziv AS Domacin,k1.Stadion AS StadionDomacina,k1.Kapacitet AS KapacitetDomacina,k1.GodinaOsnivanja AS GodinaOsnivanjaDomacina, k2.KlubId AS KlubId2,k2.Naziv AS Gost,k2.Stadion AS StadionGosta,k2.Kapacitet AS KapacitetGosta,k2.GodinaOsnivanja AS GodinaOsnivanjaGosta,liga.LigaId, liga.Naziv AS NazivLige, liga.Rang,liga.BrojKlubova FROM T_UTAKMICA utk, T_KLUB k1, T_KLUB k2, T_LIGA liga WHERE utk.KlubId1 = k1.KlubId AND utk.KlubId2 = k2.KlubId AND utk.LigaId=liga.LigaId AND liga.LigaId = @LigaId;"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.Parameters.Add(new SqlParameter("@LigaId", ligaId)); command.CommandText = queryString; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Utakmica utk;

while (reader.Read()) { utk = new Utakmica(); utk.ID = Int32.Parse(reader["UtakmicaId"].ToString()); utk.Datum = DateTime.Parse(reader["Datum"].ToString()); utk.Stadion = reader["Stadion"].ToString(); utk.Prognoza = reader["Prognoza"].ToString(); Klub k1 = new Klub(); k1.ID = Int32.Parse(reader["KlubId1"].ToString()); k1.Naziv = reader["Domacin"].ToString(); k1.Stadion = reader["StadionDomacina"].ToString(); k1.Kapacitet = Int32.Parse(reader["KapacitetDomacina"].ToString()); k1.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaDomacina"].ToString()); utk.Klub1 = k1; Klub k2 = new Klub(); k2.ID = Int32.Parse(reader["KlubId2"].ToString()); k2.Naziv = reader["Gost"].ToString(); k2.Stadion = reader["StadionGosta"].ToString(); k2.Kapacitet = Int32.Parse(reader["KapacitetGosta"].ToString()); k2.GodinaOsnivanja = Int32.Parse(reader["GodinaOsnivanjaGosta"].ToString()); utk.Klub2 = k2; Liga liga = new Liga(); liga.ID = Int32.Parse(reader["LigaId"].ToString()); liga.Naziv = reader["NazivLige"].ToString(); liga.Rang = Int32.Parse(reader["Rang"].ToString()); liga.BrojKlubova = Int32.Parse(reader["BrojKlubova"].ToString()); utk.Liga = liga; utakmice.Add(utk); } } } return utakmice; } } }

6. Kod forme frmFudbaler using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks;

using System.Windows.Forms; namespace Fudbal { public partial class frmFudbaler : Form { List<Fudbaler> fudbaleriList = new List<Fudbaler>(); string akcija = ""; int indeksSelektovanog = -1; public frmFudbaler() { InitializeComponent(); dgFudbaleri.AllowUserToAddRows = false; dgFudbaleri.AllowUserToDeleteRows = false; dgFudbaleri.ReadOnly = true; dgFudbaleri.AutoGenerateColumns = false; dgFudbaleri.Columns.Add("ID", "ID"); dgFudbaleri.Columns["ID"].Visible = false; dgFudbaleri.Columns.Add("imeFudbalera", "Ime fudbalera"); dgFudbaleri.Columns.Add("prezimeFudbalera", "Prezime fudbalera"); dgFudbaleri.Columns.Add("broj", "Broj fudbalera"); dgFudbaleri.Columns.Add("pozicija", "Pozicija fudbalera"); dgFudbaleri.Columns.Add("nacionalnost", "Nacionalnost fudbalera"); dgFudbaleri.Columns.Add("nazivKluba", "Naziv kluba"); dgFudbaleri.Columns.Add("godinaOsnivanja", "Godina osnivanja"); dgFudbaleri.Columns.Add("nazivReprezentacije", "Naziv reprezentacije"); List<Klub> kluboviList = new Klub ().ucitajKlubove(); cbxKlub.Items.Add(new DictionaryEntry("Odaberite klub", 0)); foreach (Klub klub in kluboviList) { cbxKlub.Items.Add(new DictionaryEntry(klub.Naziv + " " + klub.GodinaOsnivanja, klub.ID)); } cbxKlub.DisplayMember = "Key"; cbxKlub.ValueMember = "Value"; cbxKlub.DataSource = cbxKlub.Items; List<Reprezentacija> reprezentacijaList = new Reprezentacija().ucitajReprezentacije(); cbxReprezentacija.Items.Add(new DictionaryEntry("Odaberite reprezentaciju", 0)); foreach (Reprezentacija reprezentacija in reprezentacijaList) { cbxReprezentacija.Items.Add(new DictionaryEntry(reprezentacija.Naziv, reprezentacija.ID)); } cbxReprezentacija.DisplayMember = "Key"; cbxReprezentacija.ValueMember = "Value"; cbxReprezentacija.DataSource = cbxReprezentacija.Items;

txtDisabled(); btnChangeEnabled(); btnSubmitDisabled(); prikaziFudbalereDGV(); } private void txtDisabled() { txtIme.Enabled = false; txtPrezime.Enabled = false; txtBroj.Enabled = false; txtPozicija.Enabled = false; txtNacionalnost.Enabled = false; cbxKlub.Enabled = false; cbxReprezentacija.Enabled = false; } private void txtEnabled() { txtIme.Enabled = true; txtPrezime.Enabled = true; txtBroj.Enabled = true; txtPozicija.Enabled = true; txtNacionalnost.Enabled = true; cbxKlub.Enabled = true; cbxReprezentacija.Enabled = true; } private void btnChangeDisabled() { btnDodaj.Enabled = false; btnPromeni.Enabled = false; btnObrisi.Enabled = false; } private void btnChangeEnabled() { btnDodaj.Enabled = true; btnPromeni.Enabled = true; btnObrisi.Enabled = true; } private void btnSubmitDisabled() { btnPotvrdi.Enabled = false; btnOdustani.Enabled = false; } private void btnSubmitEnabled() { btnPotvrdi.Enabled = true; btnOdustani.Enabled = true;

} private void ponistiUnosTxt() { txtIme.Text = ""; txtPrezime.Text = ""; txtBroj.Text = ""; txtPozicija.Text = ""; txtNacionalnost.Text = ""; cbxKlub.SelectedIndex = 0; cbxReprezentacija.SelectedIndex = 0; } private void prikaziFudbaleraTxt() { int idSelektovanog = (int)dgFudbaleri.SelectedRows[0].Cells["ID"].Value; Fudbaler selektovaniFudbaler = fudbaleriList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniFudbaler != null) { txtIme.Text = selektovaniFudbaler.Ime; txtPrezime.Text = selektovaniFudbaler.Prezime; txtBroj.Text = selektovaniFudbaler.Broj.ToString(); txtPozicija.Text = selektovaniFudbaler.Pozicija; txtNacionalnost.Text = selektovaniFudbaler.Nacionalnost; int klubIndex = cbxKlub.FindString( selektovaniFudbaler.Klub.Naziv + " " + selektovaniFudbaler.Klub.GodinaOsnivanja); cbxKlub.SelectedIndex = klubIndex; int reprezentacijaIndex = cbxReprezentacija.FindString( selektovaniFudbaler.Reprezentacija.Naziv); cbxReprezentacija.SelectedIndex = reprezentacijaIndex; } } private void prikaziFudbalereDGV() { fudbaleriList = new Fudbaler().ucitajFudbalere(); dgFudbaleri.Rows.Clear(); for (int i = 0; i < fudbaleriList.Count; i++) { dgFudbaleri.Rows.Add(); dgFudbaleri.Rows[i].Cells["ID"].Value = fudbaleriList[i].ID; dgFudbaleri.Rows[i].Cells["imeFudbalera"].Value = fudbaleriList[i].Ime; dgFudbaleri.Rows[i].Cells["prezimeFudbalera"].Value = fudbaleriList[i].Prezime; dgFudbaleri.Rows[i].Cells["broj"].Value = fudbaleriList[i].Broj; dgFudbaleri.Rows[i].Cells["pozicija"].Value = fudbaleriList[i].Pozicija; dgFudbaleri.Rows[i].Cells["nacionalnost"].Value =

fudbaleriList[i].Nacionalnost; dgFudbaleri.Rows[i].Cells["nazivKluba"].Value = fudbaleriList[i].Klub.Naziv; dgFudbaleri.Rows[i].Cells["godinaOsnivanja"].Value = fudbaleriList[i].Klub.GodinaOsnivanja; dgFudbaleri.Rows[i].Cells["nazivReprezentacije"].Value = fudbaleriList[i].Reprezentacija.Naziv; } ponistiUnosTxt(); dgFudbaleri.CurrentCell = null; if (fudbaleriList.Count > 0) { if (indeksSelektovanog != -1) dgFudbaleri.Rows[indeksSelektovanog].Selected = true; else dgFudbaleri.Rows[0].Selected = true; prikaziFudbaleraTxt(); } } private void btnDodaj_Click(object sender, EventArgs e) { ponistiUnosTxt(); txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "dodaj"; } private void btnObrisi_Click(object sender, EventArgs e) { if (dgFudbaleri.SelectedRows.Count > 0) { if (MessageBox.Show("Da li zelite da obrisete odabranog fudbalera?", "Potvrda brisanja", MessageBoxButtons.YesNo) == DialogResult.Yes) { int idSelektovanog = (int)dgFudbaleri.SelectedRows[0].Cells["ID"].Value; Fudbaler selektovaniFudbaler = fudbaleriList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniFudbaler != null) { selektovaniFudbaler.obrisiFudbalera(); } indeksSelektovanog = -1; prikaziFudbalereDGV(); }

} else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPromeni_Click(object sender, EventArgs e) { if (dgFudbaleri.SelectedRows.Count > 0) { txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "promeni"; } else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPotvrdi_Click(object sender, EventArgs e) { try { if (akcija == "promeni") { int idSelektovanog = (int)dgFudbaleri.SelectedRows[0].Cells["ID"].Value; Fudbaler selektovaniFudbaler = fudbaleriList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniFudbaler != null) { selektovaniFudbaler.Ime = txtIme.Text; selektovaniFudbaler.Prezime = txtPrezime.Text; selektovaniFudbaler.Broj = Int32.Parse(txtBroj.Text); selektovaniFudbaler.Pozicija = txtPozicija.Text; selektovaniFudbaler.Nacionalnost = txtNacionalnost.Text; Klub klub = new Klub(); klub.ID = Int32.Parse(cbxKlub.SelectedValue.ToString()); selektovaniFudbaler.Klub = klub; Reprezentacija reprezentacija = new Reprezentacija(); reprezentacija.ID = Int32.Parse(cbxReprezentacija.SelectedValue.ToString()); selektovaniFudbaler.Reprezentacija = reprezentacija;

selektovaniFudbaler.azurirajFudbalera(); indeksSelektovanog = dgFudbaleri.SelectedRows[0].Index; } } else if (akcija == "dodaj") { Fudbaler fud = new Fudbaler(); fud.Ime = txtIme.Text; fud.Prezime = txtPrezime.Text; fud.Broj = Int32.Parse(txtBroj.Text); fud.Pozicija = txtPozicija.Text; fud.Nacionalnost = txtNacionalnost.Text; Klub klub = new Klub(); klub.ID = Int32.Parse(cbxKlub.SelectedValue.ToString()); fud.Klub = klub; Reprezentacija reprezentacija = new Reprezentacija(); reprezentacija.ID = Int32.Parse(cbxReprezentacija.SelectedValue.ToString()); fud.Reprezentacija = reprezentacija; fud.dodajFudbalera(); indeksSelektovanog = dgFudbaleri.Rows.Count; } txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); akcija = ""; prikaziFudbalereDGV(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnOdustani_Click(object sender, EventArgs e) { txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); } private void dgFudbaleri_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgFudbaleri.CurrentRow != null)

{ dgFudbaleri.Rows[dgFudbaleri.CurrentRow.Index].Selected = true; prikaziFudbaleraTxt(); } } private void mniXMLUvezi_Click(object sender, EventArgs e) { OpenFileDialog oDlg = new OpenFileDialog(); oDlg.InitialDirectory = "C:\\"; oDlg.Filter = "xml Files (*.xml)|*.xml"; if (DialogResult.OK == oDlg.ShowDialog()) { FudbalerXML.uveziXML(oDlg.FileName); } prikaziFudbalereDGV(); } private void mniXMLIzvezi_Click(object sender, EventArgs e) { SaveFileDialog sDlg = new SaveFileDialog(); sDlg.InitialDirectory = "C:\\"; sDlg.Filter = "xml Files (*.xml)|*.xml"; if (DialogResult.OK == sDlg.ShowDialog()) { FudbalerXML.izveziXML(sDlg.FileName, fudbaleriList); } } } }

6.1 Kod forme frmKlub using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;

using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmKlub : Form { List<Klub> kluboviList = new List<Klub>(); string akcija = ""; int indeksSelektovanog = -1; public frmKlub() { InitializeComponent(); dgKlubovi.AllowUserToAddRows = false; dgKlubovi.AllowUserToDeleteRows = false; dgKlubovi.ReadOnly = true; dgKlubovi.AutoGenerateColumns = false; dgKlubovi.Columns.Add("ID", "ID"); dgKlubovi.Columns["ID"].Visible = false; dgKlubovi.Columns.Add("nazivKluba", "Naziv"); dgKlubovi.Columns.Add("stadion", "Stadion"); dgKlubovi.Columns.Add("kapacitet", "Kapacitet"); dgKlubovi.Columns.Add("godinaOsnivanja", "Godina osnivanja"); dgKlubovi.Columns.Add("nazivLige", "Liga"); dgKlubovi.Columns.Add("rang", "Rang"); dgKlubovi.Columns.Add("imeTrenera", "Ime trenera"); dgKlubovi.Columns.Add("prezimeTrenera", "Prezime trenera"); List<Liga> ligaList = new Liga().ucitajLige(); cbxLiga.Items.Add(new DictionaryEntry("Odaberite ligu", 0)); foreach (Liga liga in ligaList) { cbxLiga.Items.Add(new DictionaryEntry(liga.Naziv + " " + liga.Rang, liga.ID)); } cbxLiga.DisplayMember = "Key"; cbxLiga.ValueMember = "Value"; cbxLiga.DataSource = cbxLiga.Items; List<Trener> treneriList = new Trener().ucitajTrenere(); cbxTrener.Items.Add(new DictionaryEntry("Odaberite trenera", 0)); foreach (Trener trener in treneriList) { cbxTrener.Items.Add(new DictionaryEntry(trener.Ime + " " + trener.Prezime, trener.ID)); } cbxTrener.DisplayMember = "Key";

cbxTrener.ValueMember = "Value"; cbxTrener.DataSource = cbxTrener.Items; txtDisabled(); btnChangeEnabled(); btnSubmitDisabled(); prikaziKluboveDGV(); } private void txtDisabled() { txtNaziv.Enabled = false; txtStadion.Enabled = false; txtKapacitet.Enabled = false; txtGodinaOsnivanja.Enabled = false; cbxLiga.Enabled = false; cbxTrener.Enabled = false; } private void txtEnabled() { txtNaziv.Enabled = true; txtStadion.Enabled = true; txtKapacitet.Enabled = true; txtGodinaOsnivanja.Enabled = true; cbxLiga.Enabled = true; cbxTrener.Enabled = true; } private void btnChangeDisabled() { btnDodaj.Enabled = false; btnPromeni.Enabled = false; btnObrisi.Enabled = false; } private void btnChangeEnabled() { btnDodaj.Enabled = true; btnPromeni.Enabled = true; btnObrisi.Enabled = true; } private void btnSubmitDisabled() { btnPotvrdi.Enabled = false; btnOdustani.Enabled = false; } private void btnSubmitEnabled() {

btnPotvrdi.Enabled = true; btnOdustani.Enabled = true; } private void ponistiUnosTxt() { txtNaziv.Text = ""; txtStadion.Text = ""; txtKapacitet.Text = ""; txtGodinaOsnivanja.Text = ""; cbxLiga.SelectedIndex = 0; cbxTrener.SelectedIndex = 0; } private void prikaziKlubTxt() { int idSelektovanog = (int)dgKlubovi.SelectedRows[0].Cells["ID"].Value; Klub selektovaniKlub = kluboviList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniKlub != null) { txtNaziv.Text = selektovaniKlub.Naziv; txtStadion.Text = selektovaniKlub.Stadion; txtKapacitet.Text = selektovaniKlub.Kapacitet.ToString(); txtGodinaOsnivanja.Text = selektovaniKlub.GodinaOsnivanja.ToString(); int ligaIndex = cbxLiga.FindString( selektovaniKlub.Liga.Naziv + " " + selektovaniKlub.Liga.Rang); cbxLiga.SelectedIndex = ligaIndex; int trenerIndex = cbxTrener.FindString( selektovaniKlub.Trener.Ime + " " + selektovaniKlub.Trener.Prezime); cbxTrener.SelectedIndex = trenerIndex; } } private void prikaziKluboveDGV() { kluboviList = new Klub().ucitajKlubove(); dgKlubovi.Rows.Clear(); for (int i = 0; i < kluboviList.Count; i++) { dgKlubovi.Rows.Add(); dgKlubovi.Rows[i].Cells["ID"].Value = kluboviList[i].ID; dgKlubovi.Rows[i].Cells["nazivKluba"].Value = kluboviList[i].Naziv; dgKlubovi.Rows[i].Cells["stadion"].Value = kluboviList[i].Stadion; dgKlubovi.Rows[i].Cells["kapacitet"].Value = kluboviList[i].Kapacitet; dgKlubovi.Rows[i].Cells["godinaOsnivanja"].Value = kluboviList[i].GodinaOsnivanja;

dgKlubovi.Rows[i].Cells["nazivLige"].Value = kluboviList[i].Liga.Naziv; dgKlubovi.Rows[i].Cells["rang"].Value = kluboviList[i].Liga.Rang; dgKlubovi.Rows[i].Cells["imeTrenera"].Value = kluboviList[i].Trener.Ime; dgKlubovi.Rows[i].Cells["prezimeTrenera"].Value = kluboviList[i].Trener.Prezime; } ponistiUnosTxt(); dgKlubovi.CurrentCell = null; if (kluboviList.Count > 0) { if (indeksSelektovanog != -1) dgKlubovi.Rows[indeksSelektovanog].Selected = true; else dgKlubovi.Rows[0].Selected = true; prikaziKlubTxt(); } } private void btnDodaj_Click(object sender, EventArgs e) { ponistiUnosTxt(); txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "dodaj"; } private void btnObrisi_Click(object sender, EventArgs e) { if (dgKlubovi.SelectedRows.Count > 0) { if (MessageBox.Show("Da li zelite da obrisete odabrani klub?", "Potvrda brisanja", MessageBoxButtons.YesNo) == DialogResult.Yes) { int idSelektovanog = (int)dgKlubovi.SelectedRows[0].Cells["ID"].Value; Klub selektovaniKlub = kluboviList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniKlub != null) { selektovaniKlub.obrisiKlub(); } indeksSelektovanog = -1;

prikaziKluboveDGV(); } } else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPromeni_Click(object sender, EventArgs e) { if (dgKlubovi.SelectedRows.Count > 0) { txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "promeni"; } else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPotvrdi_Click(object sender, EventArgs e) { try { if (akcija == "promeni") { int idSelektovanog = (int)dgKlubovi.SelectedRows[0].Cells["ID"].Value; Klub selektovaniKlub = kluboviList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniKlub != null) { selektovaniKlub.Naziv = txtNaziv.Text; selektovaniKlub.Stadion = txtStadion.Text; selektovaniKlub.Kapacitet = Int32.Parse(txtKapacitet.Text); selektovaniKlub.GodinaOsnivanja = Int32.Parse(txtGodinaOsnivanja.Text); Liga liga = new Liga(); liga.ID = Int32.Parse(cbxLiga.SelectedValue.ToString()); selektovaniKlub.Liga = liga; Trener trener = new Trener();

trener.ID = Int32.Parse(cbxTrener.SelectedValue.ToString()); selektovaniKlub.Trener = trener; selektovaniKlub.azurirajKlub(); indeksSelektovanog = dgKlubovi.SelectedRows[0].Index; } } else if (akcija == "dodaj") { Klub klub = new Klub(); klub.Naziv = txtNaziv.Text; klub.Stadion = txtStadion.Text; klub.Kapacitet = Int32.Parse(txtKapacitet.Text); klub.GodinaOsnivanja = Int32.Parse(txtGodinaOsnivanja.Text); Liga liga = new Liga(); liga.ID = Int32.Parse(cbxLiga.SelectedValue.ToString()); klub.Liga = liga; Trener trener = new Trener(); trener.ID = Int32.Parse(cbxTrener.SelectedValue.ToString()); klub.Trener = trener; klub.dodajKlub(); indeksSelektovanog = dgKlubovi.Rows.Count; } txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); akcija = ""; prikaziKluboveDGV(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnOdustani_Click(object sender, EventArgs e) { txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); } private void dgKlubovi_CellClick(object sender, DataGridViewCellEventArgs e) {

if (dgKlubovi.CurrentRow != null) { dgKlubovi.Rows[dgKlubovi.CurrentRow.Index].Selected = true; prikaziKlubTxt(); } } } }

6.2 Kod forme frmLiga using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmLiga : Form { List<Liga> ligeList = new List<Liga>(); string akcija = ""; int indeksSelektovanog = -1; public frmLiga() { InitializeComponent(); dgLige.AllowUserToAddRows = false; dgLige.AllowUserToDeleteRows = false; dgLige.ReadOnly = true; dgLige.AutoGenerateColumns = false; dgLige.Columns.Add("ID", "ID"); dgLige.Columns["ID"].Visible = false; dgLige.Columns.Add("nazivLige", "Naziv"); dgLige.Columns.Add("rang", "Rang lige"); dgLige.Columns.Add("brojKlubova", "Broj klubova"); txtDisabled(); btnChangeEnabled();

btnSubmitDisabled(); prikaziLigeDGV(); } private void txtDisabled() { txtNaziv.Enabled = false; txtRang.Enabled = false; txtBrojKlubova.Enabled = false; } private void txtEnabled() { txtNaziv.Enabled = true; txtRang.Enabled = true; txtBrojKlubova.Enabled = true; } private void btnChangeDisabled() { btnDodaj.Enabled = false; btnPromeni.Enabled = false; btnObrisi.Enabled = false; } private void btnChangeEnabled() { btnDodaj.Enabled = true; btnPromeni.Enabled = true; btnObrisi.Enabled = true; } private void btnSubmitDisabled() { btnPotvrdi.Enabled = false; btnOdustani.Enabled = false; } private void btnSubmitEnabled() { btnPotvrdi.Enabled = true; btnOdustani.Enabled = true; } private void ponistiUnosTxt() { txtNaziv.Text = ""; txtRang.Text = ""; txtBrojKlubova.Text = ""; }

private void prikaziLiguTxt() { int idSelektovanog = (int)dgLige.SelectedRows[0].Cells["ID"].Value; Liga selektovanaLiga = ligeList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovanaLiga != null) { txtNaziv.Text = selektovanaLiga.Naziv; txtRang.Text = selektovanaLiga.Rang.ToString(); txtBrojKlubova.Text = selektovanaLiga.BrojKlubova.ToString(); } } private void prikaziLigeDGV() { ligeList = new Liga().ucitajLige(); dgLige.Rows.Clear(); for (int i = 0; i < ligeList.Count; i++) { dgLige.Rows.Add(); dgLige.Rows[i].Cells["ID"].Value = ligeList[i].ID; dgLige.Rows[i].Cells["nazivLige"].Value = ligeList[i].Naziv; dgLige.Rows[i].Cells["rang"].Value = ligeList[i].Rang; dgLige.Rows[i].Cells["brojKlubova"].Value = ligeList[i].BrojKlubova; } ponistiUnosTxt(); dgLige.CurrentCell = null; if (ligeList.Count > 0) { if (indeksSelektovanog != -1) dgLige.Rows[indeksSelektovanog].Selected = true; else dgLige.Rows[0].Selected = true; prikaziLiguTxt(); } } private void btnDodaj_Click(object sender, EventArgs e) { ponistiUnosTxt();

txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "dodaj"; } private void btnObrisi_Click(object sender, EventArgs e) { if (dgLige.SelectedRows.Count > 0) { if (MessageBox.Show("Da li zelite da obrisete odabranu ligu?", "Potvrda brisanja", MessageBoxButtons.YesNo) == DialogResult.Yes) { int idSelektovanog = (int)dgLige.SelectedRows[0].Cells["ID"].Value; Liga selektovanaLiga = ligeList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovanaLiga != null) { selektovanaLiga.obrisiLigu(); } indeksSelektovanog = -1; prikaziLigeDGV(); } } else { MessageBox.Show("Nema unetih podataka"); } } private void btnPromeni_Click(object sender, EventArgs e) { if (dgLige.SelectedRows.Count > 0) { txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "promeni"; } else {

MessageBox.Show("Nema unetih podataka"); } } private void btnPotvrdi_Click(object sender, EventArgs e) { try { if (akcija == "promeni") { int idSelektovanog = (int)dgLige.SelectedRows[0].Cells["ID"].Value; Liga selektovanaLiga = ligeList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); selektovanaLiga.Naziv = txtNaziv.Text; selektovanaLiga.Rang = Int32.Parse(txtRang.Text); selektovanaLiga.BrojKlubova = Int32.Parse(txtBrojKlubova.Text); selektovanaLiga.azurirajLigu(); indeksSelektovanog = dgLige.SelectedRows[0].Index; } else if (akcija == "dodaj") { Liga liga = new Liga(); liga.Naziv = txtNaziv.Text; liga.Rang = Int32.Parse(txtRang.Text); liga.BrojKlubova = Int32.Parse(txtBrojKlubova.Text); liga.dodajLigu(); indeksSelektovanog = dgLige.Rows.Count; } txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); akcija = ""; prikaziLigeDGV(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnOdustani_Click(object sender, EventArgs e) {

txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); } private void dgLige_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgLige.CurrentRow != null) { dgLige.Rows[dgLige.CurrentRow.Index].Selected = true; prikaziLiguTxt(); } } } }

6.3 Kod forme frmReprezentacija using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmReprezentacija : Form { List<Reprezentacija> reprezentacijaList = new List<Reprezentacija>(); string akcija = ""; int indeksSelektovanog = -1; public frmReprezentacija() { InitializeComponent(); dgReprezentacije.AllowUserToAddRows = false; dgReprezentacije.AllowUserToDeleteRows = false; dgReprezentacije.ReadOnly = true;

dgReprezentacije.AutoGenerateColumns = false; dgReprezentacije.Columns.Add("ID", "ID"); dgReprezentacije.Columns["ID"].Visible = false; dgReprezentacije.Columns.Add("nazivReprezentacije", "Naziv"); dgReprezentacije.Columns.Add("imeKapitena", "Ime"); dgReprezentacije.Columns.Add("prezimeKapitena", "Prezime"); dgReprezentacije.Columns.Add("brojnoStanje", "Brojno stanje"); dgReprezentacije.Columns.Add("imeTrenera", "Ime trenera"); dgReprezentacije.Columns.Add("prezimeTrenera", "Prezime trenera"); List<Trener> treneriList = new Trener().ucitajTrenere(); cbxTrener.Items.Add(new DictionaryEntry("Odaberite trenera", 0)); foreach (Trener trener in treneriList) { cbxTrener.Items.Add(new DictionaryEntry(trener.Ime + " " + trener.Prezime, trener.ID)); } cbxTrener.DisplayMember = "Key"; cbxTrener.ValueMember = "Value"; cbxTrener.DataSource = cbxTrener.Items; txtDisabled(); btnChangeEnabled(); btnSubmitDisabled(); prikaziReprezentacijeDGV(); } private void txtDisabled() { txtNaziv.Enabled = false; txtIme.Enabled = false; txtPrezime.Enabled = false; txtBrojnoStanje.Enabled = false; cbxTrener.Enabled = false; } private void txtEnabled() { txtNaziv.Enabled = true; txtIme.Enabled = true; txtPrezime.Enabled = true; txtBrojnoStanje.Enabled = true; cbxTrener.Enabled = true; } private void btnChangeDisabled() {

btnDodaj.Enabled = false; btnPromeni.Enabled = false; btnObrisi.Enabled = false; } private void btnChangeEnabled() { btnDodaj.Enabled = true; btnPromeni.Enabled = true; btnObrisi.Enabled = true; } private void btnSubmitDisabled() { btnPotvrdi.Enabled = false; btnOdustani.Enabled = false; } private void btnSubmitEnabled() { btnPotvrdi.Enabled = true; btnOdustani.Enabled = true; } private void ponistiUnosTxt() { txtNaziv.Text = ""; txtIme.Text = ""; txtPrezime.Text = ""; txtBrojnoStanje.Text = ""; cbxTrener.SelectedIndex = 0; } private void prikaziReprezentacijuTxt() { int idSelektovanog = (int)dgReprezentacije.SelectedRows[0].Cells["ID"].Value; Reprezentacija selektovanaReprezentacija = reprezentacijaList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovanaReprezentacija != null) { txtNaziv.Text = selektovanaReprezentacija.Naziv; txtIme.Text = selektovanaReprezentacija.Ime; txtPrezime.Text = selektovanaReprezentacija.Prezime; txtBrojnoStanje.Text = selektovanaReprezentacija.BrojnoStanje.ToString(); int trenerIndex = cbxTrener.FindString( selektovanaReprezentacija.Trener.Ime + " " + selektovanaReprezentacija.Trener.Prezime); cbxTrener.SelectedIndex = trenerIndex; } }

private void prikaziReprezentacijeDGV() { reprezentacijaList = new Reprezentacija().ucitajReprezentacije(); dgReprezentacije.Rows.Clear(); for (int i = 0; i < reprezentacijaList.Count; i++) { dgReprezentacije.Rows.Add(); dgReprezentacije.Rows[i].Cells["ID"].Value = reprezentacijaList[i].ID; dgReprezentacije.Rows[i].Cells["nazivReprezentacije"].Value = reprezentacijaList[i].Naziv; dgReprezentacije.Rows[i].Cells["imeKapitena"].Value = reprezentacijaList[i].Ime; dgReprezentacije.Rows[i].Cells["prezimeKapitena"].Value = reprezentacijaList[i].Prezime; dgReprezentacije.Rows[i].Cells["brojnoStanje"].Value = reprezentacijaList[i].BrojnoStanje; dgReprezentacije.Rows[i].Cells["imeTrenera"].Value = reprezentacijaList[i].Trener.Ime; dgReprezentacije.Rows[i].Cells["prezimeTrenera"].Value = reprezentacijaList[i].Trener.Prezime; } ponistiUnosTxt(); dgReprezentacije.CurrentCell = null; if (reprezentacijaList.Count > 0) { if (indeksSelektovanog != -1) dgReprezentacije.Rows[indeksSelektovanog].Selected = true; else dgReprezentacije.Rows[0].Selected = true; prikaziReprezentacijuTxt(); } } private void btnDodaj_Click(object sender, EventArgs e) { ponistiUnosTxt(); txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "dodaj"; } private void btnObrisi_Click(object sender, EventArgs e)

{ if (dgReprezentacije.SelectedRows.Count > 0) { if (MessageBox.Show("Da li zelite da obrisete odabranu reprezentaciju?", "Potvrda brisanja", MessageBoxButtons.YesNo) == DialogResult.Yes) { int idSelektovanog = (int)dgReprezentacije.SelectedRows[0].Cells["ID"].Value; Reprezentacija selektovanaReprezentacija = reprezentacijaList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovanaReprezentacija != null) { selektovanaReprezentacija.obrisiReprezentaciju(); } indeksSelektovanog = -1; prikaziReprezentacijeDGV(); } } else { MessageBox.Show("Nema unetih podataka"); } } private void btnPromeni_Click(object sender, EventArgs e) { if (dgReprezentacije.SelectedRows.Count > 0) { txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "promeni"; } else { MessageBox.Show("Nema unetih podataka"); } } private void btnPotvrdi_Click(object sender, EventArgs e) { try {

if (akcija == "promeni") { int idSelektovanog = (int)dgReprezentacije.SelectedRows[0].Cells["ID"].Value; Reprezentacija selektovanaReprezentacija = reprezentacijaList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); selektovanaReprezentacija.Naziv = txtNaziv.Text; selektovanaReprezentacija.Ime = txtIme.Text; selektovanaReprezentacija.Prezime = txtPrezime.Text; selektovanaReprezentacija.BrojnoStanje = Int32.Parse(txtBrojnoStanje.Text); Trener trener = new Trener(); trener.ID = Int32.Parse(cbxTrener.SelectedValue.ToString()); selektovanaReprezentacija.Trener = trener; selektovanaReprezentacija.azurirajReprezentaciju(); indeksSelektovanog = dgReprezentacije.SelectedRows[0].Index; } else if (akcija == "dodaj") { Reprezentacija reprezentacija = new Reprezentacija(); reprezentacija.Naziv = txtNaziv.Text; reprezentacija.Ime = txtIme.Text; reprezentacija.Prezime = txtPrezime.Text; reprezentacija.BrojnoStanje = Int32.Parse(txtBrojnoStanje.Text); Trener trener = new Trener(); trener.ID = Int32.Parse(cbxTrener.SelectedValue.ToString()); reprezentacija.Trener = trener; reprezentacija.dodajReprezentaciju(); indeksSelektovanog = dgReprezentacije.Rows.Count; } txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); akcija = ""; prikaziReprezentacijeDGV(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnOdustani_Click(object sender, EventArgs e)

{ txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); } private void dgReprezentacije_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgReprezentacije.CurrentRow != null) { dgReprezentacije.Rows[dgReprezentacije.CurrentRow.Index].Selected = true; prikaziReprezentacijuTxt(); } } } }

6.4 Kod forme frmTakmicenje using Fudbal; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; namespace Prijave { public partial class frmTakmicenje : Form { List<Takmicenje> takmicenjeList = new List<Takmicenje>(); string akcija = ""; int indeksSelektovanog = -1; public frmTakmicenje() { InitializeComponent(); dgTakmicenja.AllowUserToAddRows = false; dgTakmicenja.AllowUserToDeleteRows = false; dgTakmicenja.ReadOnly = true; dgTakmicenja.AutoGenerateColumns = false;

dgKlubovi.AllowUserToAddRows = false; dgKlubovi.AllowUserToDeleteRows = false; dgKlubovi.ReadOnly = true; dgKlubovi.AutoGenerateColumns = false; dgTakmicenja.Columns.Add("ID", "ID"); dgTakmicenja.Columns["ID"].Visible = false; dgTakmicenja.Columns.Add("nazivTakmicenja", "Naziv"); dgTakmicenja.Columns.Add("datumPrijave", "Datum"); dgKlubovi.Columns.Add("nazivKluba", "Prijavljeni klubovi"); List<Klub> kluboviList = new Klub().ucitajKlubove(); foreach (Klub klub in kluboviList) { clbxKlubovi.Items.Add(new DictionaryEntry(klub.Naziv, klub.ID)); } clbxKlubovi.DisplayMember = "Key"; clbxKlubovi.ValueMember = "Value"; clbxKlubovi.DataSource = clbxKlubovi.Items; txtDisabled(); btnChangeEnabled(); btnSubmitDisabled(); prikaziTakmicenjeDGV(); prikaziKlubDGV(); } private void txtDisabled() { dtDatumPrijave.Enabled = false; txtNaziv.Enabled = false; clbxKlubovi.Enabled = false; } private void txtEnabled() { dtDatumPrijave.Enabled = true; txtNaziv.Enabled = true; clbxKlubovi.Enabled = true; } private void btnChangeDisabled() { btnDodaj.Enabled = false; btnPromeni.Enabled = false; btnObrisi.Enabled = false; }

private void btnChangeEnabled() { btnDodaj.Enabled = true; btnPromeni.Enabled = true; btnObrisi.Enabled = true; } private void btnSubmitDisabled() { btnPotvrdi.Enabled = false; btnOdustani.Enabled = false; } private void btnSubmitEnabled() { btnPotvrdi.Enabled = true; btnOdustani.Enabled = true; } private void ponistiUnosTxt() { dtDatumPrijave.Value = DateTime.Now; txtNaziv.Text = ""; foreach (int i in clbxKlubovi.CheckedIndices) { clbxKlubovi.SetItemCheckState(i, CheckState.Unchecked); } } private void prikaziTakmicenjeTxt() { int idSelektovanog = (int)dgTakmicenja.SelectedRows[0].Cells["ID"].Value; Takmicenje selektovanoTakmicenje = takmicenjeList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); dtDatumPrijave.Value = selektovanoTakmicenje.Datum; txtNaziv.Text = selektovanoTakmicenje.Naziv; foreach (int i in clbxKlubovi.CheckedIndices) { clbxKlubovi.SetItemCheckState(i, CheckState.Unchecked); } foreach (Klub klub in selektovanoTakmicenje.Klubovi) { int listIndeks = clbxKlubovi.FindString(klub.Naziv); clbxKlubovi.SetItemCheckState(listIndeks, CheckState.Checked); } } private void prikaziTakmicenjeDGV() {

takmicenjeList = new Takmicenje().ucitajTakmicenja(); dgTakmicenja.Rows.Clear(); for (int i = 0; i < takmicenjeList.Count; i++) { dgTakmicenja.Rows.Add(); dgTakmicenja.Rows[i].Cells["ID"].Value = takmicenjeList[i].ID; dgTakmicenja.Rows[i].Cells["nazivTakmicenja"].Value = takmicenjeList[i].Naziv; dgTakmicenja.Rows[i].Cells["datumPrijave"].Value = takmicenjeList[i].Datum; } ponistiUnosTxt(); dgTakmicenja.CurrentCell = null; if (takmicenjeList.Count > 0) { if (indeksSelektovanog != -1) dgTakmicenja.Rows[indeksSelektovanog].Selected = true; else dgTakmicenja.Rows[0].Selected = true; prikaziTakmicenjeTxt(); } } private void prikaziKlubDGV() { if (dgTakmicenja.SelectedRows.Count > 0) { int idSelektovanog = (int)dgTakmicenja.SelectedRows[0].Cells["ID"].Value; Takmicenje selektovanoTakmicenje = takmicenjeList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); List<Klub> klubovi = selektovanoTakmicenje.Klubovi; dgKlubovi.Rows.Clear(); for (int i = 0; i < klubovi.Count; i++) { dgKlubovi.Rows.Add(); dgKlubovi.Rows[i].Cells["nazivKluba"].Value = klubovi[i].Naziv; } } else { dgKlubovi.Rows.Clear(); } } private void btnDodaj_Click(object sender, EventArgs e) { ponistiUnosTxt();

txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "dodaj"; } private void btnObrisi_Click(object sender, EventArgs e) { if (dgTakmicenja.SelectedRows.Count > 0) { if (MessageBox.Show("Da li zelite da obrisete odabrano takmicenje ?", "Potvrda brisanja", MessageBoxButtons.YesNo) == DialogResult.Yes) { int idSelektovanog = (int)dgTakmicenja.SelectedRows[0].Cells["ID"].Value; Takmicenje selektovanoTakmicenje = takmicenjeList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); selektovanoTakmicenje.obrisiTakmicenje(); indeksSelektovanog = -1; prikaziTakmicenjeDGV(); prikaziKlubDGV(); } } else { MessageBox.Show("Nema unetih podataka"); } } private void btnPromeni_Click(object sender, EventArgs e) { if (dgTakmicenja.SelectedRows.Count > 0) { txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "promeni"; } else { MessageBox.Show("Nema unetih podataka"); } }

private void btnPotvrdi_Click(object sender, EventArgs e) { try { if (akcija == "promeni") { int idSelektovanog = (int)dgTakmicenja.SelectedRows[0].Cells["ID"].Value; Takmicenje selektovanoTakmicenje = takmicenjeList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); selektovanoTakmicenje.Datum = dtDatumPrijave.Value.Date; selektovanoTakmicenje.Naziv = txtNaziv.Text; selektovanoTakmicenje.Klubovi = new List<Klub>(); foreach (var item in clbxKlubovi.CheckedItems) { int klubId = (int)((DictionaryEntry)item).Value; selektovanoTakmicenje.Klubovi.Add(new Klub() { ID = klubId }); } selektovanoTakmicenje.azurirajTakmicenje(); indeksSelektovanog = dgTakmicenja.SelectedRows[0].Index; } else if (akcija == "dodaj") { Takmicenje takmicenje = new Takmicenje(); takmicenje.Naziv = txtNaziv.Text; takmicenje.Datum = dtDatumPrijave.Value.Date; takmicenje.Klubovi = new List<Klub>(); foreach (var item in clbxKlubovi.CheckedItems) { int klubId = (int)((DictionaryEntry)item).Value; takmicenje.Klubovi.Add(new Klub() { ID = klubId }); } takmicenje.dodajTakmicenje(); indeksSelektovanog = dgTakmicenja.Rows.Count; } txtDisabled(); btnSubmitDisabled();

btnChangeEnabled(); prikaziTakmicenjeDGV(); prikaziKlubDGV(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnOdustani_Click(object sender, EventArgs e) { txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); } private void dgTakmicenja_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgTakmicenja.CurrentRow != null) { dgTakmicenja.Rows[dgTakmicenja.CurrentRow.Index].Selected = true; prikaziTakmicenjeTxt(); prikaziKlubDGV(); } } } }

6.5 Kod forme frmTrener using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmTrener : Form { List<Trener> treneriList = new List<Trener>();

string akcija = ""; int indeksSelektovanog = -1; public frmTrener() { InitializeComponent(); dgTreneri.AllowUserToAddRows = false; dgTreneri.AllowUserToDeleteRows = false; dgTreneri.ReadOnly = true; dgTreneri.AutoGenerateColumns = false; dgTreneri.Columns.Add("ID", "ID"); dgTreneri.Columns["ID"].Visible = false; dgTreneri.Columns.Add("imeTrenera", "Ime"); dgTreneri.Columns.Add("prezimeTrenera", "Prezime"); dgTreneri.Columns.Add("nacionalnost", "Nacionalnost"); dgTreneri.Columns.Add("vrsta", "Vrsta"); txtDisabled(); btnChangeEnabled(); btnSubmitDisabled(); prikaziTrenereDGV(); } private void txtDisabled() { txtIme.Enabled = false; txtPrezime.Enabled = false; txtNacionalnost.Enabled = false; txtVrsta.Enabled = false; } private void txtEnabled() { txtIme.Enabled = true; txtPrezime.Enabled = true; txtNacionalnost.Enabled = true; txtVrsta.Enabled = true; } private void btnChangeDisabled() { btnDodaj.Enabled = false; btnPromeni.Enabled = false; btnObrisi.Enabled = false; } private void btnChangeEnabled() { btnDodaj.Enabled = true; btnPromeni.Enabled = true; btnObrisi.Enabled = true; } private void btnSubmitDisabled() {

btnPotvrdi.Enabled = false; btnOdustani.Enabled = false; } private void btnSubmitEnabled() { btnPotvrdi.Enabled = true; btnOdustani.Enabled = true; } private void ponistiUnosTxt() { txtIme.Text = ""; txtPrezime.Text = ""; txtNacionalnost.Text = ""; txtVrsta.Text = ""; } private void prikaziTreneraTxt() { int idSelektovanog = (int)dgTreneri.SelectedRows[0].Cells["ID"].Value; Trener selektovaniTrener = treneriList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniTrener != null) { txtIme.Text = selektovaniTrener.Ime; txtPrezime.Text = selektovaniTrener.Prezime; txtNacionalnost.Text = selektovaniTrener.Nacionalnost; txtVrsta.Text = selektovaniTrener.Vrsta; } } private void prikaziTrenereDGV() { treneriList = new Trener().ucitajTrenere(); dgTreneri.Rows.Clear(); for (int i = 0; i < treneriList.Count; i++) { dgTreneri.Rows.Add(); dgTreneri.Rows[i].Cells["ID"].Value = treneriList[i].ID; dgTreneri.Rows[i].Cells["imeTrenera"].Value = treneriList[i].Ime; dgTreneri.Rows[i].Cells["prezimeTrenera"].Value = treneriList[i].Prezime; dgTreneri.Rows[i].Cells["nacionalnost"].Value = treneriList[i].Nacionalnost; dgTreneri.Rows[i].Cells["vrsta"].Value = treneriList[i].Vrsta; } ponistiUnosTxt(); dgTreneri.CurrentCell = null;

if (treneriList.Count > 0) { if (indeksSelektovanog != -1) dgTreneri.Rows[indeksSelektovanog].Selected = true; else dgTreneri.Rows[0].Selected = true; prikaziTreneraTxt(); } } private void btnDodaj_Click(object sender, EventArgs e) { ponistiUnosTxt(); txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "dodaj"; } private void btnObrisi_Click(object sender, EventArgs e) { if (dgTreneri.SelectedRows.Count > 0) { if (MessageBox.Show("Da li zelite da obrisete odabranog trenera?", "Potvrda brisanja", MessageBoxButtons.YesNo) == DialogResult.Yes) { int idSelektovanog = (int)dgTreneri.SelectedRows[0].Cells["ID"].Value; Trener selektovaniTrener = treneriList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniTrener != null) { selektovaniTrener.obrisiTrenera(); } indeksSelektovanog = -1; prikaziTrenereDGV(); } } else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPromeni_Click(object sender, EventArgs e) { if (dgTreneri.SelectedRows.Count > 0) { txtEnabled();

btnSubmitEnabled(); btnChangeDisabled(); akcija = "promeni"; } else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPotvrdi_Click(object sender, EventArgs e) { try { if (akcija == "promeni") { int idSelektovanog = (int)dgTreneri.SelectedRows[0].Cells["ID"].Value; Trener selektovaniTrener = treneriList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovaniTrener != null) { selektovaniTrener.Ime = txtIme.Text; selektovaniTrener.Prezime = txtPrezime.Text; selektovaniTrener.Nacionalnost = txtNacionalnost.Text; selektovaniTrener.Vrsta = txtVrsta.Text; selektovaniTrener.azurirajTrenera(); indeksSelektovanog = dgTreneri.SelectedRows[0].Index; } } else if (akcija == "dodaj") { Trener trn = new Trener(); trn.Ime = txtIme.Text; trn.Prezime = txtPrezime.Text; trn.Nacionalnost = txtNacionalnost.Text; trn.Vrsta = txtVrsta.Text; trn.dodajTrenera(); indeksSelektovanog = dgTreneri.Rows.Count; } txtDisabled(); btnSubmitDisabled(); btnChangeEnabled();

akcija = ""; prikaziTrenereDGV(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnOdustani_Click(object sender, EventArgs e) { txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); } private void dgTreneri_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgTreneri.CurrentRow != null) { dgTreneri.Rows[dgTreneri.CurrentRow.Index].Selected = true; prikaziTreneraTxt(); } } private void mniXMLUvezi_Click(object sender, EventArgs e) { OpenFileDialog oDlg = new OpenFileDialog(); oDlg.InitialDirectory = "C:\\"; oDlg.Filter = "xml Files (*.xml)|*.xml"; if (DialogResult.OK == oDlg.ShowDialog()) { TrenerXML.uveziXML(oDlg.FileName); } prikaziTrenereDGV(); } private void mniXMLIzvezi_Click(object sender, EventArgs e) { SaveFileDialog sDlg = new SaveFileDialog(); sDlg.InitialDirectory = "C:\\";

sDlg.Filter = "xml Files (*.xml)|*.xml"; if (DialogResult.OK == sDlg.ShowDialog()) { TrenerXML.izveziXML(sDlg.FileName, treneriList); } } } }

6.6 Kod forme frmUtakmice using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmUtakmice : Form { List<Utakmica> utakmiceList = new List<Utakmica>(); string akcija = ""; int indeksSelektovanog = -1; public frmUtakmice() { InitializeComponent(); dgUtakmice.AllowUserToAddRows = false; dgUtakmice.AllowUserToDeleteRows = false; dgUtakmice.ReadOnly = true; dgUtakmice.AutoGenerateColumns = false; dgUtakmice.Columns.Add("ID", "ID"); dgUtakmice.Columns["ID"].Visible = false; dgUtakmice.Columns.Add("ligaUtakmice", "Liga"); dgUtakmice.Columns.Add("rangLige", "Rang lige"); dgUtakmice.Columns.Add("datumUtakmice", "Datum"); dgUtakmice.Columns.Add("stadionUtakmice", "Stadion"); dgUtakmice.Columns.Add("prognoza", "Vremenska prognoza"); dgUtakmice.Columns.Add("nazivDomacina", "Naziv"); dgUtakmice.Columns.Add("godinaOsnivanjaDomacina", "Godina osnivanja"); dgUtakmice.Columns.Add("nazivGosta", "Naziv");

dgUtakmice.Columns.Add("godinaOsnivanjaGosta", "Godina osnivanja"); List<Klub> kluboviList = new Klub().ucitajKlubove(); cbxKlub.Items.Add(new DictionaryEntry("Odaberite klub", 0)); cbxKlub2.Items.Add(new DictionaryEntry("Odaberite klub", 0)); foreach (Klub klub in kluboviList) { cbxKlub.Items.Add(new DictionaryEntry(klub.Naziv + " " + klub.GodinaOsnivanja, klub.ID)); cbxKlub2.Items.Add(new DictionaryEntry(klub.Naziv + " " + klub.GodinaOsnivanja, klub.ID)); } cbxKlub.DisplayMember = "Key"; cbxKlub.ValueMember = "Value"; cbxKlub2.DisplayMember = "Key"; cbxKlub2.ValueMember = "Value"; cbxKlub.DataSource = cbxKlub.Items; cbxKlub2.DataSource = cbxKlub2.Items; List<Liga> ligaList = new Liga().ucitajLige(); cbxLiga.Items.Add(new DictionaryEntry("Odaberite ligu", 0)); foreach(Liga liga in ligaList) { cbxLiga.Items.Add(new DictionaryEntry(liga.Naziv + " " + liga.Rang, liga.ID)); } cbxLiga.DisplayMember = "Key"; cbxLiga.ValueMember = "Value"; cbxLiga.DataSource = cbxLiga.Items; txtDisabled(); btnChangeEnabled(); btnSubmitDisabled(); prikaziUtakmiceDGV(); } private void txtDisabled() { dtDatumUtakmice.Enabled = false; txtStadion.Enabled = false; txtPrognoza.Enabled = false; cbxKlub.Enabled = false; cbxKlub2.Enabled = false; cbxLiga.Enabled = false; } private void txtEnabled() {

dtDatumUtakmice.Enabled = true; txtStadion.Enabled = true; txtPrognoza.Enabled = true; cbxKlub.Enabled = true; cbxKlub2.Enabled = true; cbxLiga.Enabled = true; } private void btnChangeDisabled() { btnDodaj.Enabled = false; btnPromeni.Enabled = false; btnObrisi.Enabled = false; } private void btnChangeEnabled() { btnDodaj.Enabled = true; btnPromeni.Enabled = true; btnObrisi.Enabled = true; } private void btnSubmitDisabled() { btnPotvrdi.Enabled = false; btnOdustani.Enabled = false; } private void btnSubmitEnabled() { btnPotvrdi.Enabled = true; btnOdustani.Enabled = true; } private void ponistiUnosTxt() { dtDatumUtakmice.Value = DateTime.Now; ; txtStadion.Text = ""; txtPrognoza.Text = ""; cbxKlub.SelectedIndex = 0; cbxKlub2.SelectedIndex = 0; cbxLiga.SelectedIndex = 0; } private void prikaziUtakmicuTxt() { int idSelektovanog = (int)dgUtakmice.SelectedRows[0].Cells["ID"].Value; Utakmica selektovanaUtakmica = utakmiceList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovanaUtakmica != null) { dtDatumUtakmice.Value = selektovanaUtakmica.Datum;

txtStadion.Text = selektovanaUtakmica.Stadion; txtPrognoza.Text = selektovanaUtakmica.Prognoza; int klubIndex = cbxKlub.FindString( selektovanaUtakmica.Klub1.Naziv + " " + selektovanaUtakmica.Klub1.GodinaOsnivanja); cbxKlub.SelectedIndex = klubIndex; int klubIndex2 = cbxKlub2.FindString( selektovanaUtakmica.Klub2.Naziv + " " + selektovanaUtakmica.Klub2.GodinaOsnivanja); cbxKlub2.SelectedIndex = klubIndex2; int ligaIndex = cbxLiga.FindString( selektovanaUtakmica.Liga.Naziv + " " + selektovanaUtakmica.Liga.Rang); cbxLiga.SelectedIndex = ligaIndex; } } private void prikaziUtakmiceDGV() { utakmiceList = new Utakmica().ucitajUtakmice(); dgUtakmice.Rows.Clear(); for (int i = 0; i < utakmiceList.Count; i++) { dgUtakmice.Rows.Add(); dgUtakmice.Rows[i].Cells["ID"].Value = utakmiceList[i].ID; dgUtakmice.Rows[i].Cells["datumUtakmice"].Value = utakmiceList[i].Datum; dgUtakmice.Rows[i].Cells["stadionUtakmice"].Value = utakmiceList[i].Stadion; dgUtakmice.Rows[i].Cells["prognoza"].Value = utakmiceList[i].Prognoza; dgUtakmice.Rows[i].Cells["nazivDomacina"].Value = utakmiceList[i].Klub1.Naziv; dgUtakmice.Rows[i].Cells["godinaOsnivanjaDomacina"].Value = utakmiceList[i].Klub1.GodinaOsnivanja; dgUtakmice.Rows[i].Cells["nazivGosta"].Value = utakmiceList[i].Klub2.Naziv; dgUtakmice.Rows[i].Cells["godinaOsnivanjaGosta"].Value = utakmiceList[i].Klub2.GodinaOsnivanja; dgUtakmice.Rows[i].Cells["ligaUtakmice"].Value = utakmiceList[i].Liga.Naziv; dgUtakmice.Rows[i].Cells["rangLige"].Value = utakmiceList[i].Liga.Rang; } ponistiUnosTxt(); dgUtakmice.CurrentCell = null; if (utakmiceList.Count > 0) { if (indeksSelektovanog != -1) dgUtakmice.Rows[indeksSelektovanog].Selected = true;

else dgUtakmice.Rows[0].Selected = true; prikaziUtakmicuTxt(); } } private void btnDodaj_Click(object sender, EventArgs e) { ponistiUnosTxt(); txtEnabled(); btnSubmitEnabled(); btnChangeDisabled(); akcija = "dodaj"; } private void btnObrisi_Click(object sender, EventArgs e) { if (dgUtakmice.SelectedRows.Count > 0) { if (MessageBox.Show("Da li zelite da obrisete odabranu utakmicu?", "Potvrda brisanja", MessageBoxButtons.YesNo) == DialogResult.Yes) { int idSelektovanog = (int)dgUtakmice.SelectedRows[0].Cells["ID"].Value; Utakmica selektovanaUtakmica = utakmiceList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovanaUtakmica != null) { selektovanaUtakmica.obrisiUtakmicu(); } indeksSelektovanog = -1; prikaziUtakmiceDGV(); } } else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPromeni_Click(object sender, EventArgs e) { if (dgUtakmice.SelectedRows.Count > 0) { txtEnabled(); btnSubmitEnabled();

btnChangeDisabled(); akcija = "promeni"; } else { MessageBox.Show("Nema unetih podataka!"); } } private void btnPotvrdi_Click(object sender, EventArgs e) { try { if (akcija == "promeni") { int idSelektovanog = (int)dgUtakmice.SelectedRows[0].Cells["ID"].Value; Utakmica selektovanaUtakmica = utakmiceList.Where(x => x.ID == idSelektovanog).FirstOrDefault(); if (selektovanaUtakmica != null) { selektovanaUtakmica.Datum = dtDatumUtakmice.Value.Date; selektovanaUtakmica.Stadion = txtStadion.Text; selektovanaUtakmica.Prognoza = txtPrognoza.Text; Klub klub1 = new Klub(); klub1.ID = Int32.Parse(cbxKlub.SelectedValue.ToString()); Klub klub2 = new Klub(); klub2.ID = Int32.Parse(cbxKlub2.SelectedValue.ToString()); Liga liga = new Liga(); liga.ID = Int32.Parse(cbxLiga.SelectedValue.ToString()); selektovanaUtakmica.Klub1 = klub1; selektovanaUtakmica.Klub2 = klub2; selektovanaUtakmica.Liga = liga; selektovanaUtakmica.azurirajUtakmicu(); indeksSelektovanog = dgUtakmice.SelectedRows[0].Index; } } else if (akcija == "dodaj") { Utakmica utk = new Utakmica(); utk.Datum = dtDatumUtakmice.Value.Date;

utk.Stadion = txtStadion.Text; utk.Prognoza = txtPrognoza.Text; Klub k1 = new Klub(); k1.ID = Int32.Parse(cbxKlub.SelectedValue.ToString()); utk.Klub1 = k1; Klub k2 = new Klub(); k2.ID = Int32.Parse(cbxKlub2.SelectedValue.ToString()); utk.Klub2 = k2; Liga liga = new Liga(); liga.ID = Int32.Parse(cbxLiga.SelectedValue.ToString()); utk.Liga = liga; utk.dodajUtakmicu(); indeksSelektovanog = dgUtakmice.Rows.Count; } txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); akcija = ""; prikaziUtakmiceDGV(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnOdustani_Click(object sender, EventArgs e) { txtDisabled(); btnSubmitDisabled(); btnChangeEnabled(); } private void dgUtakmice_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgUtakmice.CurrentRow != null) { dgUtakmice.Rows[dgUtakmice.CurrentRow.Index].Selected = true; prikaziUtakmicuTxt(); } } }

}

6.7 Kod forme frmFudbaleriKlub using System; using System.Collections; using System.Collections.Generic; using System.Windows.Forms; namespace Fudbal { public partial class frmFudbaleriKlub : Form { public frmFudbaleriKlub() { InitializeComponent(); List<Klub> kluboviList = new Klub().ucitajKlubove(); cbxKlub.Items.Add(new DictionaryEntry("Svi klubovi", 0)); foreach (Klub klub in kluboviList) { cbxKlub.Items.Add(new DictionaryEntry( klub.Naziv + " " + klub.GodinaOsnivanja, klub.ID)); } cbxKlub.DisplayMember = "Key"; cbxKlub.ValueMember = "Value"; cbxKlub.DataSource = cbxKlub.Items; } private void frmIzvestaj_Load(object sender, EventArgs e) { FudbalerBindingSource.DataSource = new Fudbaler().ucitajFudbalere(); this.reportViewer1.RefreshReport(); } private void cbxKlub_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxKlub.SelectedValue.ToString()); if (itemValue == 0) FudbalerBindingSource.DataSource = new Fudbaler().ucitajFudbalere(); else FudbalerBindingSource.DataSource = new Fudbaler().ucitajFudbalereZaKlub(itemValue); this.reportViewer1.RefreshReport(); } }

}

6.8 Kod forme frmFudbaleriReprezentacija using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmFudbaleriReprezentacija : Form { public frmFudbaleriReprezentacija() { InitializeComponent(); List<Reprezentacija> reprezentacijaList = new Reprezentacija().ucitajReprezentacije(); cbxReprezentacija.Items.Add(new DictionaryEntry("Sve reprezentacije", 0)); foreach (Reprezentacija reprezentacija in reprezentacijaList) { cbxReprezentacija.Items.Add(new DictionaryEntry(reprezentacija.Naziv,reprezentacija.ID)); } cbxReprezentacija.DisplayMember = "Key"; cbxReprezentacija.ValueMember = "Value"; cbxReprezentacija.DataSource = cbxReprezentacija.Items; } private void frmIzvestaj2_Load(object sender, EventArgs e) { FudbalerBindingSource.DataSource = new Fudbaler().ucitajFudbalere(); this.reportViewer1.RefreshReport(); } private void cbxReprezentacija_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxReprezentacija.SelectedValue.ToString()); if (itemValue == 0) FudbalerBindingSource.DataSource = new Fudbaler().ucitajFudbalere(); else

FudbalerBindingSource.DataSource = new Fudbaler().ucitajFudbalereZaReprezentaciju(itemValue); this.reportViewer1.RefreshReport(); } } }

6.9 Kod forme frmKluboviLiga using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmKluboviLiga : Form { public frmKluboviLiga() { InitializeComponent(); List<Liga> ligaList = new Liga().ucitajLige(); cbxLiga.Items.Add(new DictionaryEntry("Sve lige", 0)); foreach (Liga liga in ligaList) { cbxLiga.Items.Add(new DictionaryEntry(liga.Naziv + " " + liga.Rang, liga.ID)); } cbxLiga.DisplayMember = "Key"; cbxLiga.ValueMember = "Value"; cbxLiga.DataSource = cbxLiga.Items; } private void frmKluboviLiga_Load(object sender, EventArgs e) { KlubBindingSource.DataSource = new Klub().ucitajKlubove(); this.reportViewer1.RefreshReport(); } private void cbxLiga_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxLiga.SelectedValue.ToString()); if (itemValue == 0) KlubBindingSource.DataSource = new Klub().ucitajKlubove();

else KlubBindingSource.DataSource = new Klub().ucitajKluboveZaLige(itemValue); this.reportViewer1.RefreshReport(); } } }

7. Kod forme frmKluboviTreneri using System; using System.Collections; using System.Collections.Generic; using System.Windows.Forms; namespace Fudbal { public partial class frmKluboviTreneri : Form { public frmKluboviTreneri() { InitializeComponent(); List<Trener> treneriList = new Trener().ucitajTrenere(); cbxTrener.Items.Add(new DictionaryEntry("Svi treneri", 0)); foreach (Trener trener in treneriList) { cbxTrener.Items.Add(new DictionaryEntry(trener.Ime + " " + trener.Prezime, trener.ID)); } cbxTrener.DisplayMember = "Key"; cbxTrener.ValueMember = "Value"; cbxTrener.DataSource = cbxTrener.Items; } private void frmIzvestaj_Load(object sender, EventArgs e) { KlubBindingSource.DataSource = new Klub().ucitajKlubove(); this.reportViewer1.RefreshReport(); } private void cbxTrener_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxTrener.SelectedValue.ToString()); if (itemValue == 0)

KlubBindingSource.DataSource = new Klub().ucitajKlubove(); else KlubBindingSource.DataSource = new Klub().ucitajKluboveZaTrenere(itemValue); this.reportViewer1.RefreshReport(); } } }

7.1 Kod forme frmReprezentacijaTrener using System; using System.Collections; using System.Collections.Generic; using System.Windows.Forms; namespace Fudbal { public partial class frmReprezentacijaTrener : Form { public frmReprezentacijaTrener() { InitializeComponent(); List<Trener> treneriList = new Trener().ucitajTrenere(); cbxTrener.Items.Add(new DictionaryEntry("Svi treneri", 0)); foreach (Trener trener in treneriList) { cbxTrener.Items.Add(new DictionaryEntry(trener.Ime + " " + trener.Prezime, trener.ID)); } cbxTrener.DisplayMember = "Key"; cbxTrener.ValueMember = "Value"; cbxTrener.DataSource = cbxTrener.Items; } private void frmIzvestaj_Load(object sender, EventArgs e) { ReprezentacijaBindingSource.DataSource = new Reprezentacija().ucitajReprezentacije(); this.reportViewer1.RefreshReport(); } private void cbxTrener_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxTrener.SelectedValue.ToString());

if (itemValue == 0) ReprezentacijaBindingSource.DataSource = new Reprezentacija().ucitajReprezentacije(); else ReprezentacijaBindingSource.DataSource = new Reprezentacija().ucitajReprezentacijeZaTrenere(itemValue); this.reportViewer1.RefreshReport(); } private void frmReprezentacijaTrener_Load(object sender, EventArgs e) { } } }

7.2 Kod forme frmUtakmiceDomacin using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmUtakmiceDomacin : Form { public frmUtakmiceDomacin() { InitializeComponent(); List<Klub> kluboviList = new Klub().ucitajKlubove(); cbxKlub.Items.Add(new DictionaryEntry("Svi klubovi", 0)); foreach (Klub klub in kluboviList) { cbxKlub.Items.Add(new DictionaryEntry(klub.Naziv + " " + klub.GodinaOsnivanja, klub.ID)); } cbxKlub.DisplayMember = "Key"; cbxKlub.ValueMember = "Value"; cbxKlub.DataSource = cbxKlub.Items; } private void frmUtakmica_Load(object sender, EventArgs e) {

UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmice(); this.reportViewer1.RefreshReport(); } private void cbxKlub_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxKlub.SelectedValue.ToString()); if (itemValue == 0) UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmice(); else UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmiceZaDomacina(itemValue); this.reportViewer1.RefreshReport(); } } }

7.3 Kod forme frmUtakmiceGost using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmUtakmiceGost : Form { public frmUtakmiceGost() { InitializeComponent(); List<Klub> kluboviList = new Klub().ucitajKlubove(); cbxKlub2.Items.Add(new DictionaryEntry("Svi klubovi", 0)); foreach (Klub klub in kluboviList) { cbxKlub2.Items.Add(new DictionaryEntry(klub.Naziv + " " + klub.GodinaOsnivanja, klub.ID)); } cbxKlub2.DisplayMember = "Key"; cbxKlub2.ValueMember = "Value"; cbxKlub2.DataSource = cbxKlub2.Items; }

private void frmUtakmica_Load(object sender, EventArgs e) { UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmice(); this.reportViewer1.RefreshReport(); } private void cbxKlub2_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxKlub2.SelectedValue.ToString()); if (itemValue == 0) UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmice(); else UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmiceZaGosta(itemValue); this.reportViewer1.RefreshReport(); } } }

7.4 Kod forme frmUtakmiceLiga using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class frmUtakmiceLiga : Form { public frmUtakmiceLiga() { InitializeComponent(); List<Liga> ligeList = new Liga().ucitajLige(); cbxLiga.Items.Add(new DictionaryEntry("Sve lige", 0)); foreach (Liga liga in ligeList) { cbxLiga.Items.Add(new DictionaryEntry(liga.Naziv + " " + liga.Rang, liga.ID)); } cbxLiga.DisplayMember = "Key";

cbxLiga.ValueMember = "Value"; cbxLiga.DataSource = cbxLiga.Items; } private void frmUtakmiceLiga_Load(object sender, EventArgs e) { UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmice(); this.reportViewer1.RefreshReport(); } private void cbxLiga_SelectedIndexChanged(object sender, EventArgs e) { int itemValue = Int32.Parse(cbxLiga.SelectedValue.ToString()); if (itemValue == 0) UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmice(); else UtakmicaBindingSource.DataSource = new Utakmica().ucitajUtakmiceZaLigu(itemValue); this.reportViewer1.RefreshReport(); } } }

7.5 Kod forme Form1 using Prijave; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fudbal { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void mniPodaciKlubovi_Click(object sender, EventArgs e) { CloseAllForms(); frmKlub klubForm = new frmKlub(); klubForm.MdiParent = this; klubForm.WindowState = FormWindowState.Maximized; klubForm.ControlBox = false; klubForm.Show();

} private void mniPodaciFudbaleri_Click(object sender, EventArgs e) { CloseAllForms(); frmFudbaler fudbalerForm = new frmFudbaler(); fudbalerForm.MdiParent = this; fudbalerForm.WindowState = FormWindowState.Maximized; fudbalerForm.ControlBox = false; fudbalerForm.Show(); } private void mniPodaciTakmicenja_Click(object sender, EventArgs e) { CloseAllForms(); frmTakmicenje takmicenjeForm = new frmTakmicenje(); takmicenjeForm.MdiParent = this; takmicenjeForm.WindowState = FormWindowState.Maximized; takmicenjeForm.ControlBox = false; takmicenjeForm.Show(); } private void mniPodaciTreneri_Click(object sender, EventArgs e) { CloseAllForms(); frmTrener trenerForm = new frmTrener(); trenerForm.MdiParent = this; trenerForm.WindowState = FormWindowState.Maximized; trenerForm.ControlBox = false; trenerForm.Show(); } private void mniPodaciUtakmice_Click(object sender, EventArgs e) { CloseAllForms(); frmUtakmice utakmiceForm = new frmUtakmice(); utakmiceForm.MdiParent = this; utakmiceForm.WindowState = FormWindowState.Maximized; utakmiceForm.ControlBox = false; utakmiceForm.Show(); } private void mniPodaciReprezentacije_Click(object sender, EventArgs e) { CloseAllForms(); frmReprezentacija reprezentacijeForm = new frmReprezentacija(); reprezentacijeForm.MdiParent = this; reprezentacijeForm.WindowState = FormWindowState.Maximized; reprezentacijeForm.ControlBox = false; reprezentacijeForm.Show(); } private void mniPodaciLige_Click(object sender, EventArgs e) { CloseAllForms();

frmLiga ligeForm = new frmLiga(); ligeForm.MdiParent = this; ligeForm.WindowState = FormWindowState.Maximized; ligeForm.ControlBox = false; ligeForm.Show(); } private void mniIzvestajiFudbaleri_Click(object sender, EventArgs e) { CloseAllForms(); frmFudbaleriKlub izvestajForm = new frmFudbaleriKlub(); izvestajForm.MdiParent = this; izvestajForm.WindowState = FormWindowState.Maximized; izvestajForm.ControlBox = false; izvestajForm.Show(); } private void mniIzvestajiFudbaleri2_Click(object sender, EventArgs e) { CloseAllForms(); frmFudbaleriReprezentacija izvestajForm2 = new frmFudbaleriReprezentacija(); izvestajForm2.MdiParent = this; izvestajForm2.WindowState = FormWindowState.Maximized; izvestajForm2.ControlBox = false; izvestajForm2.Show(); } private void mniIzvestajiTreneri_Click(object sender, EventArgs e) { CloseAllForms(); frmKluboviTreneri izvestajForm3 = new frmKluboviTreneri(); izvestajForm3.MdiParent = this; izvestajForm3.WindowState = FormWindowState.Maximized; izvestajForm3.ControlBox = false; izvestajForm3.Show(); } private void mniIzvestajiLige_Click(object sender, EventArgs e)

{ CloseAllForms(); frmKluboviLiga izvestajForm4 = new frmKluboviLiga(); izvestajForm4.MdiParent = this; izvestajForm4.WindowState = FormWindowState.Maximized; izvestajForm4.ControlBox = false; izvestajForm4.Show(); } private void mniIzvestajiReprezentacije_Click(object sender, EventArgs e) { CloseAllForms(); frmReprezentacijaTrener izvestajForm5 = new frmReprezentacijaTrener(); izvestajForm5.MdiParent = this; izvestajForm5.WindowState = FormWindowState.Maximized; izvestajForm5.ControlBox = false; izvestajForm5.Show(); } private void mniIzvestajiUtakmiceDomacin_Click(object sender, EventArgs e) { CloseAllForms(); frmUtakmiceDomacin izvestajForm6 = new frmUtakmiceDomacin(); izvestajForm6.MdiParent = this; izvestajForm6.WindowState = FormWindowState.Maximized; izvestajForm6.ControlBox = false; izvestajForm6.Show(); } private void mniIzvestajiUtakmiceGost_Click(object sender, EventArgs e) { CloseAllForms(); frmUtakmiceGost izvestajForm7 = new frmUtakmiceGost(); izvestajForm7.MdiParent = this; izvestajForm7.WindowState = FormWindowState.Maximized; izvestajForm7.ControlBox = false;

izvestajForm7.Show(); } private void mniIzvestajiUtakmiceLige_Click(object sender, EventArgs e) { CloseAllForms(); frmUtakmiceLiga izvestajForm8 = new frmUtakmiceLiga(); izvestajForm8.MdiParent = this; izvestajForm8.WindowState = FormWindowState.Maximized; izvestajForm8.ControlBox = false; izvestajForm8.Show(); } private void CloseAllForms() { Form[] formToClose = null; int i = 1; foreach (Form form in Application.OpenForms) { if (form != this) { Array.Resize(ref formToClose, i); formToClose[i - 1] = form; i++; } } if (formToClose != null) for (int j = 0; j < formToClose.Length; j++) formToClose[j].Dispose(); } } }