Download - INFORMACIJSKI SISTEM ZA VODENJE TEKEM V JUDU
David Mesarič
INFORMACIJSKI SISTEM ZA VODENJE TEKEM V JUDU
Diplomsko delo
Maribor, avgust 2011
I
Diplomsko delo univerzitetnega strokovnega študijskega programa
INFORMACIJSKI SISTEM ZA VODENJE TEKEM V JUDU
Študent: David Mesarič
Študijski program: UN ŠP Računalništvo in informacijske tehnologije
Mentor: izred. prof. dr. Milan Zorman
Somentorica: asist. dr. Mateja Verlič
Lektorica: Petra Zupanc
Maribor, avgust 2011
II
III
ZAHVALA
Zahvaljujem se mentorju izred. prof. dr. Milanu
Zormanu in somentorici asist. dr. Mateji Verlič za
pomoč in vodenje pri opravljanju diplomskega
dela.
Posebna zahvala velja staršem, ki so mi omogočili
študij.
IV
INFORMACIJSKI SISTEM ZA VODENJE TEKEM V JUDU
Ključne besede: Judo, vodenje tekme, informacijski sistem, C#, ASP.NET, MySQL
UDK: [659.2:004]:004.43(043.2)
Povzetek
Cilj diplomske naloge je bil razviti aplikacijo, ki nam bo olajšala vodenje judo tekem ter
beležila rezultate posameznih tekem. V aplikacijo smo vključili spletno stran za prijavo
tekmovalcev ter prikaz rezultatov posameznih tekem, žreb in semafor za prikazovanje točk.
Opisali smo tudi vsa razvojna okolja, ki so bila potrebna za razvoj te aplikacije.
V
INFORMATION SYSTEM FOR JUDO COMPETITION
MANAGEMENT
Key words: Judo, match management, information system, C#, ASP.NET, MySQL
UDK: [659.2:004]:004.43(043.2)
Abstract
The goal of this thesis was to develop an application which will make the management of
judo tournaments easier and keep track of the results. The application will include a
website which will allow online registration of competitors for a tournament and show the
results of previous competitions. The application will offer an automatic draw and
scoreboard. We also described the programming environments necessary for its
development.
VI
VSEBINA
1 UVOD ............................................................................................................................ 1
1.1 PREDPOSTAVKE IN OMEJITVE ................................................................................... 1
1.2 STRUKTURA DIPLOMSKEGA DELA ............................................................................ 2
2 RAZVOJNO OKOLJE ................................................................................................ 3
2.1 PROGRAMSKI JEZIK C# ............................................................................................. 3
2.1.1 Kaj lahko C# program naredi? .......................................................................................... 3
2.2 ASP.NET ................................................................................................................ 3
2.3 MYSQL PODATKOVNA BAZA ................................................................................... 3
3 IMPLEMENTACIJA APLIKACIJE ......................................................................... 5
3.1 PROGRAMSKO OKOLJE ............................................................................................. 5
3.2 PODATKOVNA BAZA ................................................................................................. 5
3.3 IZDELAVA INTERNETNE STRANI ............................................................................... 6
3.3.1 Vnos ter pregled tekem ......................................................................................................... 7
3.3.2 Vnos ter pregled klubov ....................................................................................................... 8
3.3.3 Vnos ter pregled tekmovalcev ............................................................................................ 9
3.3.4 Prijava na tekmo .................................................................................................................. 10
3.4 IZDELAVA ŢREBA ................................................................................................... 11
3.4.1 Pridobivanje ter dodajanje tekmovalcev za žreb ........................................................ 12
3.4.2 Žrebanje nasprotnikov ........................................................................................................ 14
3.5 VODENJE TEKME..................................................................................................... 15
3.5.1 Uvoz kategorije ..................................................................................................................... 16
3.5.2 Vodenje tekmovanja ............................................................................................................ 16
3.6 SEMAFOR ............................................................................................................... 17
3.6.1 Semafor za vodenje tekme ................................................................................................. 18
3.6.2 Semafor za prikaz gledalcem ............................................................................................ 19
4 REZULTATI .............................................................................................................. 20
4.1 SPLETNA STRAN ..................................................................................................... 20
4.2 ŢREB ...................................................................................................................... 20
4.3 VODENJE TEKME .................................................................................................... 21
4.4 SEMAFOR ............................................................................................................... 22
5 SKLEP ......................................................................................................................... 24
6 LITERATURA, VIRI ................................................................................................ 25
VII
7 PRILOGE ................................................................................................................... 27
7.1 SEZNAM SLIK ......................................................................................................... 27
7.2 SEZNAM PRIMEROV KODE ...................................................................................... 27
7.3 NASLOV ŠTUDENTA................................................................................................ 28
7.4 KRATEK ŢIVLJENJEPIS ............................................................................................ 28
Informacijski sistem za vodenje tekem v judu Stran 1
1 UVOD
Judo je borilna veščina in šport, ki od človeka terja veliko telesno sposobnost, znanje ter
disciplino. Judo tehnike se izvajajo stoje in na tleh. Stoje se večinoma izvajajo meti,
medtem ko se na tleh izvajajo končni prijemi, davljenja ter vzvodi [1].
Judo izvira iz Japonske in je nastal leta 1882 kot mešanica tehnik drugih borilnih veščin, ki
so jih uporabljali samuraji več sto let. Njen začetnik je bil Jigoro Kano [2]. Čeprav judo
izvira iz borilnih, vojaških veščin, katerih namen je ubiti, poškodovati ali onemogočiti
nasprotnika, se ta danes močno razlikuje od izvirnih veščin, katere tehnike vsebuje še
dandanes. Tehnike juda so danes prilagojene tako, da tisti, ki se ukvarja z judom, lahko
izvaja tehnike varno in brez nevarnosti, da bi pri tem poškodoval svojega nasprotnika.
Tekmovalni judo za razliko od ostalih borilnih veščin ne vsebuje brc, udarcev, vzvodov za
metanje in oroţja, temveč temelji na podlagi rušenja nasprotnikovega ravnoteţja na tla s
pomočjo izkoriščanja njegove sile[1]
Izraz judo vsebuje dve japonski besedi; ju pomeni mehka, do pa pomeni pot, torej mehka
pot [1].
V letu ustanovitve je judo treniralo 9 učencev, tretje leto pa se je število povzpelo kar na
174. Prvi uspeh te borilne veščine se je pokazal ţe leta 1886, ko so judoisti pod okriljem
Jigora Kana premagali šolo zelo znanega učitelja ju-jitsa. V 15 borbah so dosegli kar 13
zmag in 2 neodločena rezultata.
Leta 1964 je bil judo prvič na olimpijskih igrah v Tokiu [3]. Danes je judo najuspešnejša
japonska borilna veščina. Po vsem svetu naj bi bilo preko 30 milijonov judoistov, kar judo
uvršča na tretje mesto v številčnosti na svetu [4]. Na samem začetku juda na tekmovanjih
še ni bilo pravil, tako so zmagovalce proglašali vodilni mojstri takratnih veščin. O pravilih
borbe se lahko govori le od prvega japonskega prvenstva leta 1930 dalje. Takrat so se
tehnike začele tudi točkovati [1].
Zaradi napredka v tehnologiji smo se odločili, da v diplomskem delu razvijemo
elektronsko aplikacijo, ki bo v pomoč pri prijavi na tekmo ter pri samem vodenju tekem.
Razvili smo spletno stran, kjer je moţno prijaviti klube ter posamezne tekmovalce na
določeno tekmo, ţreb, ki skrbi za naključno razvrstitev nasprotnikov in hkrati upošteva
tudi pravila ţrebanja, ter semafor, ki prikazuje točke.
1.1 Predpostavke in omejitve
Kot glavno omejitev v diplomskem delu smo predpostavili, da končni rezultat za delovanje
celotne aplikacije potrebuje internetno povezavo. Lahko pa se izvaja tudi vsak del
aplikacije posebej. Prav tako je naša aplikacija prilagodljiva za prihodnje nadgradnje.
Informacijski sistem za vodenje tekem v judu Stran 2
1.2 Struktura diplomskega dela
V drugem poglavju smo opisali tehnologije, ki smo jih potrebovali za izdelavo
diplomskega dela. To so programski jezik C#, ASP.NET framework ter MySQL
podatkovna baza.
Tretje poglavje smo namenili razvoju naše aplikacije. Opisali smo funkcionalnosti, ki smo
jih vključili, ter njihov namen.
V četrtem poglavju smo prikazali rezultate naše aplikacije. Dodali smo tudi slike končnega
izdelka.
Informacijski sistem za vodenje tekem v judu Stran 3
2 RAZVOJNO OKOLJE
2.1 Programski jezik C#
C# je splošno namenski, objektno orientirani programski jezik. Izumil ga je Anders
Hejlsberg leta 1999 ali 2000 na Microsoftu. Njegova sintaksa je zelo podobna Javini z eno
veliko razliko, in sicer so vsi tipi spremenljivk potomci skupnega razreda (prednika).
Naloga C# je natančno definirati serijo operacij, ki naj jih računalnik izvede za dosego
zadanega cilja. Večina teh operacij vključuje manipulacijo s števili in tekstom. To pa ni
vse, kar C# zmore. Vse, kar lahko računalnik fizično izvede, je mogoče v C# tudi
sprogramirati. Računalniki nimajo inteligence, zato jim mora biti natančno povedano, kaj
narediti; to pa je definirano s programskim jezikom, ki ga uporabljamo. Ko so enkrat
sprogramirani, lahko ponavljajo v kodi zapisane korake koliko krat ţelimo in z zelo visoko
hitrostjo. Sodobni računalniki so tako hitri, da lahko preštejejo do milijarde v samo sekundi
ali dveh [5].
2.1.1 Kaj lahko C# program naredi?
Tipične programske naloge vključujejo vstavljanje podatkov v podatkovne baze in branje
iz le-teh, prikazovanje grafik z veliko hitrostjo pri igrah ali videu, krmiljenje elektronskih
naprav, priključenih na računalnik, ter celo predvajanje glasbe in posebnih zvočnih
efektov. Lahko napišemo tudi program za generacijo glasbe [5].
2.2 ASP.NET
ASP.NET je Microsoftov brezplačni spletni okvir. Z njim lahko ustvarimo dinamične
spletne strani, aplikacije in storitve [6]. Prvič je bil izdan leta 2002 z verzijo 1.0 kot del
.NET programske platforme in je naslednik Microsoftove ASP tehnologije [7]. ASP.NET
je zgrajen na osnovi Common Language Runtime (CLR), ki dovoljuje programerjem, da
lahko napišejo ASP.NET kode z uporabo katerega koli podprtega .NET jezika. Eden
najpomembnejših ciljev .NET je bil, da lahko programerji, ki pišejo ASP.NET aplikacijo,
uporabljajo več programskih jezikov. Dokler vsaka stran ASP.NET vsebuje le en
programski jezik, lahko premešamo različne strani, ki uporabljajo različen jezik, in skupaj
bodo delovale brezhibno[8].
2.3 MySQL podatkovna baza
MySQL podatkovna baza je postala najbolj popularna odprtokodna baza na svetu zaradi
njene zmogljivosti, zanesljivosti in enostavnosti za uporabo. Podatkovna baza MySQL je
bila prvič izdana januarja leta 1998. Prav tako se ta podatkovna baza pogosto uporablja za
Informacijski sistem za vodenje tekem v judu Stran 4
novo generacijo aplikacij, ki temeljijo na skupku odprtokodne programske opreme LAMP
(Linux, Apache, MySQL, PHP / Perl / Python) [9]. Veliko največjih in najhitreje
razvijajočih se svetovnih organizacij, kot so Facebook, Google, Adobe, Lucent in Zappos,
se zanaša na podatkovno bazo MySQL, da prihranijo čas in denar pri delovanju njihovih
obseţnih spletnih strani. MySQL deluje na skoraj vseh platformah, vključno z
operacijskimi sistemi Linux, UNIX in Windows, ter zagotavlja tudi delovanje na večini
programskih jezikov, kot so C, C#, Java, Eiffel, Perl, PHP, Python in Tcl [10].
MySQL podatkovna baza se kot vse ostale podatkovne baze uporablja za sledenje spletnih
ali programskih podatkov. Tehnični izraz za MySQL je Relational Database Management
System (RDBMS). MySQL je programska oprema , ki neprekinjeno deluje in omogoča
drugim programom, da dostopajo do njenih podatkov. Podatkovna baza je zgrajena iz
tabel, ki so strukturirane tako, da lahko vsebujejo posebne tipe informacij. Nekatera polja
lahko vsebujejo samo števila, medtem ko druga polja samo datume oziroma druge
podatkovne tipe [10].
Informacijski sistem za vodenje tekem v judu Stran 5
3 IMPLEMENTACIJA APLIKACIJE
Cilj razvoja aplikacije informacijskega sistema za vodenje judo tekem je bil olajšati in
pospešiti potek prijave, ţreba in vodenja na judo tekmovanjih.
Omogočili smo preprosto registracijo klubov in tekmovalcev ter prijavo le-teh na
tekmovanje preko naše spletne strani. Izdelali smo elektronski ţreb, ki razvrsti ter grafično
prikaţe tekmovalne pare za vse starostne in teţnostne kategorije. Izdelali smo tudi
vmesnik, ki sledi poteku borb ter beleţi zmagovalce, in semafor, ki je namenjen
prikazovanju borbenega časa ter točk, ki jih prisodi sodnik.
V tem poglavju smo podrobneje opisali ter slikovno prikazali implementacijo zgoraj
naštetih funkcionalnosti.
3.1 Programsko okolje
Za razvoj diplomskega dela smo uporabili programski jezik C#. Za shranjevanje podatkov
smo uporabili MySQL podatkovno bazo, za implementacijo internetne strani pa spletno
aplikacijo ASP.NET.
3.2 Podatkovna baza
Za vsako obširnejšo spletno aplikacijo stoji podatkovna baza, ki sluţi za shranjevanje
podatkov. V naši aplikaciji smo uporabili Microsoftovo MySQL podatkovno bazo.
Najprej smo na podlagi podatkov, ki jih potrebujemo za delovanje spletne aplikacije in
izvedbo ţreba, kreirali tabele; torej tabele tekmovalcev, klubov, tekem, prijav na tekmo ter
rezultatov. Da lahko pridobimo podatke, ki so v različnih tabelah, moramo tabele najprej
povezati in se prepričati, da so relacije med njimi ena proti mnogo oziroma mnogo proti
ena. V nasprotnem primeru moramo za dosego takih relacij ustvariti vmesno tabelo.
Da lahko iz spletne strani dostopamo do podatkovne baze ter pridobimo ţelene podatke, se
je potrebno z bazo najprej povezati. To povezavo doseţemo s pomočjo t.i. connection
stringov. Povezavo z bazo moramo vzpostaviti pred vsakim dostopanjem do podatkov ter
jo po končanem delu tudi prekiniti. Ko ţelimo pridobiti podatke iz podatkovne baze,
moramo vnaprej določiti tabelo, oziroma tabele, v katerih se ti podatki nahajajo. To
storimo z uporabo poizvedbenih stavkov.
Informacijski sistem za vodenje tekem v judu Stran 6
Slika 1: ER diagram podatkove baze
<connectionStrings>
<add name="baza" providerName="System.Data.SqlClient" connectionString="Data Source='';Initial
Catalog='';User Id='';Password='';" />
</connectionStrings>
Primer kode 1: Connection string
SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["baza"].
ConnectionString);
myConnection.Open();
Primer kode 2: povezava na bazo
3.3 Izdelava internetne strani
Na večini tekmovanj po svetu klubi svoje tekmovalce prijavljajo zadnji trenutek pred
začetkom tekmovanja. To je zelo nezaţeleno ter zamudno, saj je treba za vsak klub in
vsakega tekmovalca preveriti, če je le-ta registriran, ter ga ročno vnesti v računalnik za
kasnejši ţreb.
Informacijski sistem za vodenje tekem v judu Stran 7
Zato smo naredili spletno aplikacijo, s katero vodimo predčasno prijavo na tekmovanja,
hkrati pa nam računalnik tudi sam preverja, če je tekmovalec oziroma klub, ki se ţeli
prijaviti na tekmo, registriran. Dobra lastnost takšnega pristopa je tudi v tem, da podatkov
kluba ter tekmovalcev ni potrebno ponovno vnašati pri udeleţbi na naslednjem
tekmovanju, saj se vse shrani v podatkovni bazi in tako se preprosto označi prisotnost
tekmovalca za naslednjo tekmo.
V našo spletno aplikacijo smo vključili moţnost pregleda registriranih tekmovalcev in
klubov ter samo registracijo le-teh. Prav tako nam omogoča prijavo na tekmo ter dodajanje
samih tekem, na katere se lahko prijavimo.
3.3.1 Vnos ter pregled tekem
Vsako tekmo, ki naj bi se izvedla, je potrebno pred začetkom sezone prijaviti na judo
zvezo, da jo ta odobri ter doda na koledar judo tekmovanj. Navesti je potrebno točno
določen kraj in datum tekme.
Če ţelimo uporabljati spletno prijavo na tekmovanja, moramo uporabniku najprej prikazati
nabor tekem, na katere se lahko prijavi. Za kaj takšnega pa je najprej potrebna opcija za
vnos novih tekem, tako da nam ni potrebno neposredno dostopati do podatkovne baze.
Moţnosti vnašanja tekem nimajo vsi, saj bi to privedlo do velike zmede ter podvajanja
tekmovanj oziroma laţnih vnosov. Pri vnosu nove tekme je potrebno vpisati ime, kraj,
naslov, občino, poštno številko in datum tekme. Vse to je tudi vidno pri samem pregledu
tekem.
Za vnos tekme smo uporabili gradnik detailsview, za pregled tekem pa gradnik gridview.
Slika 2:Pregled tekem
Informacijski sistem za vodenje tekem v judu Stran 8
Slika 3: Vnos nove tekme
3.3.2 Vnos ter pregled klubov
Zaradi laţjega iskanja ter sortiranja tekmovalcev pri sami prijavi na tekmo smo v
aplikacijo dodali moţnost registracije novih klubov. Ta korak je obvezen, saj je potrebno
pri dodajanju novega tekmovalca iz gradnika DropDownList poimenuj! izbrati klub. Če
klub še ni registriran, je nemogoča tudi registracija samega tekmovalca. V primeru, da bi
klub bilo potrebno ročno vnašati pri prijavi vsakega tekmovalca, bi se zapisi gotovo
razlikovali, torej bi bilo sortiranje po klubih nemogoče. Za registracijo kluba smo uporabili
gradnik detailsview.
Vsak klub mora pri registraciji navesti ime, lokacijo ter elektronski naslov kluba. Ti
podatki so vidni pri pregledu vseh klubov, kar nam omogoča kontaktiranje klubov. Za
prikaz vseh klubov smo uporabili gradnik gridview.
Slika 4: Pregled klubov
Informacijski sistem za vodenje tekem v judu Stran 9
Slika 5: Vnos novega kluba
3.3.3 Vnos ter pregled tekmovalcev
V našo aplikacijo smo dodali moţnost za pregled tekmovalcev, shranjenih v podatkovni
bazi. S pomočjo gradnika DropDownList preprosto izberemo klub, iz katerega ţelimo
prikazati tekmovalce.
Prav tako smo vključili moţnost dodajanja novih tekmovalcev, ki jih ţelijo klubi prijaviti
na tekmovanje preko naše spletne strani. To smo rešili s pomočjo gradnika DetailsView.
Ob registraciji novega tekmovalca je potrebno vpisati osebne podatke, spol ter trenutno
teţnostno kategorijo. S pomočjo gradnika DropDownList je potrebno izbrati klub. Če
tekmovalec zamenja kategorijo, se to ob prvi tekmi popravi ter ponovno zapiše v bazo.
Slika 6: Pregled tekmovalcev
Informacijski sistem za vodenje tekem v judu Stran 10
Slika 7:Vnos novega tekmovalca
3.3.4 Prijava na tekmo
Prijava tekmovalcev na tekmo mora biti kar se da enostavna in hitra, saj bi v nasprotnem
primeru pri klubih z velikim številom tekmovalcev povzročala le še več teţav.
V naši aplikaciji smo enostavnost zagotovili tako, da s pomočjo gradnikov DropDownList
najprej izberemo tekmo, na katero prijavljamo tekmovalce, in klub, iz katerega so. S tem si
zelo olajšamo delo, saj nam ni potrebno ročno iskati tekmovalcev iz določenega kluba. Ko
pridobimo seznam tekmovalcev, s pritiskom na gradnik button prijavi prijavimo vse, ki se
bodo udeleţili tekme.
Slika 8: Prijava na tekmo
Informacijski sistem za vodenje tekem v judu Stran 11
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
SqlConnection myConnection = new SqlConnection(ConfigurationManager.
ConnectionStrings["baza"].ConnectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO Tekma (Kraj, Naslov, Obcina,
Postna_stevilka, Datum, Ime_tekme) VALUES (@Kraj, @Naslov, @Obcina,
@Postna_stevilka, @Datum, @Ime_tekme);", myConnection);
cmd.Parameters.Add(new SqlParameter("@Kraj", SqlDbType.VarChar, 50));
cmd.Parameters.Add(new SqlParameter("@Naslov", SqlDbType.VarChar, 50));
cmd.Parameters.Add(new SqlParameter("@Obcina", SqlDbType.VarChar, 50));
cmd.Parameters.Add(new SqlParameter("@Postna_stevilka", SqlDbType.VarChar, 4));
cmd.Parameters.Add(new SqlParameter("@Datum", SqlDbType.Date));
cmd.Parameters.Add(new SqlParameter("@Ime_tekme", SqlDbType.VarChar, 50));
cmd.Parameters["@Kraj"].Value = ((TextBox)(DetailsView1.FindControl("TextBox1"))).Text;
cmd.Parameters["@Naslov"].Value = ((TextBox)(DetailsView1.FindControl("TextBox2"))).Text;
cmd.Parameters["@Obcina"].Value = ((TextBox)(DetailsView1.FindControl("TextBox4"))).Text;
cmd.Parameters["@Postna_stevilka"].Value=((TextBox)(DetailsView1.FindControl("TextBox5"))).Text;
cmd.Parameters["@Datum"].Value =
((Calendar)DetailsView1.Rows[5].FindControl("Calendar1")).SelectedDate.Date;
cmd.Parameters["@Ime_tekme"].Value = ((TextBox)(DetailsView1.FindControl("TextBox6"))).Text;
myConnection.Open();
cmd.ExecuteNonQuery();
myConnection.Close();
}
Primer kode 3: Vpis nove tekme
3.4 Izdelava žreba
Prizadevanje za enake moţnosti za vse tekmovalce se je najbolj pokazalo z določitvijo
kategorij glede na teţo ter starost tekmovalcev. Začelo se je s tremi teţnostnimi
kategorijami, skozi leta so dodali še 4, tako da je trenutno 7 teţnostnih kategorij v starostni
kategoriji članov. Poleg kategorij pa so za večje moţnosti tekmovalcev uvedli tudi sistem
dvojnega repasaţa na tekmovanjih, ki dovoljuje poraţencu iz prvega kola po zmagah v
repasaţu zasesti tretje mesto [1].
Na večjih judo tekmovanjih se danes zbere ţe tudi preko 70 tekmovalcev na kategorijo,
zato mora temu primerno ţrebanje tekmovalnih parov potekati dokaj hitro. Glede na veliko
število tekmovalcev se danes skoraj po vsem svetu ţe uporablja računalniško vodenje
ţreba tekmovalcev.
Pri judo ţrebu moramo biti pozorni na mnoga pravila. Tako je potrebno tekmovalce iz istih
drţav ali klubov v ţrebu razvrstiti tako, da se ne pomerijo ţe v prvem kolu. Pomembno je
tudi razvrščanje nosilcev v posamezni kategoriji na drţavnih prvenstvih. Tekmovalca, ki
sta v svoji kategoriji na prejšnjem drţavnem prvenstvu dosegla prvo in drugo mesto, sta
nosilca v tej kategoriji in sta pri ţrebu razvrščena tako, da se lahko srečata le v finalnem
dvoboju oziroma v borbi za tretje mesto.
Informacijski sistem za vodenje tekem v judu Stran 12
V naši aplikaciji smo izdelali elektronski ţreb tekmovalcev ter pri tem upoštevali pravila,
ki so predpisana s strani Judo zveze Slovenije (JZS). Sam ţreb se deli na vnos ter
pridobivanje tekmovalcev iz podatkovne baze in na ţrebanje tekmovalnih parov. Imamo
tudi moţnost tiskanja narejenih ţrebov.
3.4.1 Pridobivanje ter dodajanje tekmovalcev za žreb
Ker je velika moţnost, da kakšen klub zamudi s prijavo na tekmo preko spletne strani ali
pa se tekmovanja udeleţijo ekipe iz drugih drţav, ki jim je ta način prijave neznan, smo
morali zagotoviti, da se lahko kljub temu prijavijo na dan samega tekmovanja.
Naredili smo vmesni korak pridobivanja ter dodajanja tekmovalcev, kjer lahko dodajamo
nove tekmovalce ter klube in prijavljamo ţe obstoječe tekmovalce, ki so zamudili s prijavo
na tekmovanje. Podatke lahko sortiramo po klubih, drţavi, spolu ter teţnostni in starostni
kategoriji. Tu lahko tudi urejamo podatke, saj tekmovalci pogosto zamenjajo kategorijo ali
klub. To nam olajša delo, saj nam ni potrebno dostopati direktno do podatkovne baze, da
spremenimo ali zbrišemo podatke.
Prav tako smo vključili moţnost branja podatkov iz excelove datoteke, tako da lahko
podake o tekmovalcih pridobimo tudi na ta način.
Ko zagotovimo, da so vsi tekmovalci prijavljeni in so njihovi podatki pravilni, izberemo
teţnostno in starostno kategorijo ter spol in pritisnemo gradnik button žrebanje. S tem
odpremo novo okno, kjer se bo izvedel ţreb. Ta korak je potrebno narediti za vsako
kategorijo posebej.
Informacijski sistem za vodenje tekem v judu Stran 13
Slika 9: Priprava za žreb
private void pridobi_excel_file_Click(object sender, EventArgs e)
{
try
{
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.DataSet ds;
System.Data.OleDb.OleDbDataAdapter MyCommand;
MyConnection = new System.Data.OleDb.OleDbConnection("provider=
Microsoft.Jet.OLEDB.4.0;Data Source='c:\\kategorija.xsl';Extended
Properties=Excel 8.0;");
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from
[List1$]", MyConnection);
MyCommand.TableMappings.Add("Table", "TestTable");
ds = new System.Data.DataSet();
MyCommand.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
MyConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Primer kode 4: Pridobi podatke iz excelovega dokumenta
Informacijski sistem za vodenje tekem v judu Stran 14
private void prijavi_tekmovalce(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = "my connection string";
myConnection.Open();
SqlCommand vse_prijave = new SqlCommand("insert into Prijava_na_tekmovanje (FK_TEKMA,
FK_TEKMOVALEC) values (@idTekme,@idTekmovalca);", myConnection);
vse_prijave.Parameters.Add(new SqlParameter("@idTekme", SqlDbType.Int));
vse_prijave.Parameters.Add(new SqlParameter("@idTekmovalca", SqlDbType.Int));
vse_prijave.Parameters["@idTekme"].Value = tekme[izberi_tekmo_combo.SelectedIndex];
for (int i = 0; i < tabela_s_tekmovalci.RowCount; i++)
{
if (tabela_s_tekmovalci.Rows[i].Selected == true)
{
tabela_s_tekmovalci.Rows[i].Cells[8].Value = true;
vse_prijave.Parameters["@idTekmovalca"].Value =int.Parse(tabela_s_tekmovalci.Rows[i].Cells[0].
Value.ToString());
vse_prijave.ExecuteNonQuery();
}
}
}
Primer kode 5: Prijavi tekmovalca na tekmo
3.4.2 Žrebanje nasprotnikov
V naši aplikaciji najprej s pomočjo gradnikov radiobutton določimo ali bo ţreb potekal na
podlagi drţav ali klubov. Nato v primeru, da sta drţavna nosilca na tekmi, obkljukamo
gradnika checkbox na desni strani njunih imen. Če je iz istega kluba prisotnih 3 ali več
tekmovalcev, lahko trenerji določijo, kateri se med seboj ne smejo srečati pred finalom oz.
borbo za 3. mesto (določijo t. i. klubske nosilce). To pri ţrebu zagotovimo tako, da
tekmovalcem, ki jih ţelimo na eni strani ţreba, dodelimo liha števila, ostalim pa soda.
S pritiskom na gradnik button žrebanje program tekmovalcem naključno dodeli števila, ki
so povezana z mesti v grafičnem prikazu. Pri tem upošteva drţavne in klubske nosilce.
V primeru napak smo vključili tudi moţnost preklica ţreba. S tem se nam vsa prejšnja
urejanja razveljavijo.
Ko je ţreb končan, se podatki shranijo v podatkovno polje in se zapišejo v datoteko, iz
katere jih preberemo za prikaz na semaforju.
Glede na to da potek tekmovanja deluje na podlagi izpadanja, smo za grafični prikaz ţreba
uporabili binarno drevo in ga zaradi laţjega pregleda razdelili na dva enaka dela. Program
to drevo napolni v največji globini s podatki, pridobljenimi pri ţrebu. Nato tekmovalce, ki
imajo prvo borbo prosto, prestavi za eno stopnjo višje.
Ker je potrebno ţreb pokazati tudi trenerjem in vsem tekmovalcem, smo dodali moţnost
tiskanja ţreba.
Informacijski sistem za vodenje tekem v judu Stran 15
Slika 10: Grafični prikaz žrebanja
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Bitmap bmp = new Bitmap(PrikazZrebaPanel.Width, PrikazZrebaPanel.Height);
PrikazZrebaPanel.DrawToBitmap(bmp, new Rectangle(0, 0, PrikazZrebaPanel.Width,
PrikazZrebaPanel.Height));
e.Graphics.DrawImage(bmp, 0, 0);
}
Primer kode 6: Tiskanje žreba
3.5 Vodenje tekme
Pri judo tekmovanjih je klicanje tekmovalcev na blazine in rezultate borb potrebno
zapisovati sproti. Vse to vzame veliko časa, saj je na večjih tekmah tudi do pet borilnih
prostorov. Prihaja lahko tudi do napak. Prav tako je potrebno določiti popravne borbe
(repasaţe), ko so znani polfinalisti kategorije,
V naši aplikaciji smo implementirali vmesnik, ki skrbi za elektronsko sprotno zapisovanje
rezultatov ter pošilja podatke o naslednji borbi do semaforja, kjer se izpišejo. Ker pa je
namen aplikacije, da daje moţnost delovanja brez semaforja, smo omogočili tudi ročno
vodenje zmagovalcev.
Informacijski sistem za vodenje tekem v judu Stran 16
3.5.1 Uvoz kategorije
Kot smo ţe omenili, smo ţrebe po kategorijah shranili v tekstovno datoteko na trdem
disku. V tem delu aplikacije preprosto s pomočjo gradnika OpenFileDialog s pritiskom na
gumb preberemo datoteko, ki vsebuje kategorijo, ki jo potrebujemo, in program jo grafično
prikaţe. Uvozimo lahko dve kategoriji naenkrat, saj se pogosto na enem borilnem prostoru
vodijo dve kategoriji hkrati.
Slika 11: Uvoz kategorije
3.5.2 Vodenje tekmovanja
V tem delu aplikacije je predvsem pomembno beleţenje zmagovalcev ter klicanje
naslednjih tekmovalnih parov na borilni prostor. V naši aplikaciji smo to avtomatizirali
tako, da se podatki o zmagah beleţijo sami, ko jih pridobimo iz aplikacije semafor, ki šteje
točke v borbi. Vključili smo tudi moţnost ročnega določanja ter popravljanja podatkov.
Semafor, s katerim točkujemo borbe, avtomatsko pridobi naslednji par nasprotnikov iz
aplikacije za vodenje tekme ter jih izpiše na ekran. Prav tako pa po končani borbi določi
zmagovalca na podlagi borbenih točk ter podatke pošlje nazaj in temu primerno posodobi
grafični prikaz.
Zaradi moţnih napak ter tudi zato, da bi lahko aplikacija za vodenje tekme delovala brez
semaforja za prikaz točk, smo dodali moţnost ročnega vnašanja podatkov. Za
napredovanje zmagovalca v naslednji krog tekmovanja je potrebno le klikniti na gumb z
njegovim imenom, vse ostalo pa je narejeno programsko.
Informacijski sistem za vodenje tekem v judu Stran 17
Tekmovalni judo je šport na izpadanje, vendar pa dobiš moţnost za popravne borbe v
primeru, če pride nasprotnik, ki te je premagal, do polfinala. Ker se na začetku tekmovanja
še ne ve, kako se bo razvijal potek tekme, je potrebno popravne borbe določiti šele, ko sta
znana oba polfinalista. Ta postopek je časovno zelo potraten in zahteva veliko pozornosti,
da ne pride do napak, zato smo v naši aplikaciji to naredili programsko. Ko sta znana oba
polfinalista, preprosto kliknemo na gradnik button repasaž in avtomatsko pridobimo nove
tekmovalne pare.
private void ShraniRezultate_Click(object sender, EventArgs e)
{
SaveFileDialog dialog = new SaveFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
pictureBox1.BringToFront();
Bitmap bmp = new Bitmap(VodenjePanel.Width, VodenjePanel.Height);
VodenjePanel.DrawToBitmap(bmp, new Rectangle(0, 0, VodenjePanel.Width, VodenjePanel.Height));
bmp.Save(dialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
pictureBox1.SendToBack();
}
}
Primer kode 7: Naredimo sliko končnih rezultatov
3.6 Semafor
Pri judu se vsaka izvedena tehnika judoista točkuje s točkami ippon, waza-ari in yuko,
vsaka prepovedana akcija pa je kaznovana s shido ali hansoku-make (izključitev). Prvi
shido je le opozorilo, drugi nasprotniku prinese točko yuko, tretji pa waza-ari. Četrta kazen
pomeni ippon in zmago za nasprotnika. Tekmovalec si lahko prisluţi tudi direktni
hansoku-make, če izvede nevarno ali prepovedano tehniko ali se med borbo neprimerno
vede. Z direktnim hansoku-make tekmovalec tudi izgubi pravico do nadaljnjega nastopanja
na tekmovanju.
Na tekmovanjih poleg sodnika, ki sodi borbo, potrebujemo še vsaj dva ali več pomočnikov,
ki beleţijo sodniške odločitve na registrator ter merijo čas tekme. Število dodatnih ljudi, ki
jih potrebujemo za pomoč pri sojenju na velikih tekmovanjih, kjer se tekmuje na več
blazinah, precej naraste.
V našo aplikacijo smo zato vključili tudi semafor za točkovanje ter merjenje časa. S tem
smo zmanjšali potrebo po dodatni pomoči in olajšali samo beleţenje rezultatov.
V naši aplikaciji smo semafor razdelili na semafor za vodenje tekme ter semafor za prikaz
gledalcem. Semafor za vodenje tekme je vmesnik, s katerim merimo čas, beleţimo točke in
pridobivamo naslednje tekmovalne pare. Semafor za prikaz gledalcem pa je namenjen za
prikaz rezultatov in časa gledalcem.
Informacijski sistem za vodenje tekem v judu Stran 18
3.6.1 Semafor za vodenje tekme
V tem delu aplikacije imamo veliko funkcionalnosti. Imamo moţnost določanja in
merjenje borbenega časa, pridobivanje tekmovalnih parov in beleţenje točk.
private void cas_Tick(object sender, EventArgs e)
{
if ((minutes == 0) && (seconds == 0))
{
cas.Enabled = false;
sekundeLabel.Text = "00";
minuteLabel.Text = "0";
minuteLabel.ForeColor = Color.Red;
sekundeLabel.ForeColor = Color.Red;
Beep(300, 1500);
}
else
{
if (seconds < 1)
{
seconds = 59;
if (minutes == 0)
{
minutes = 59;
}
else
{
minutes -= 1;
}
}
else
seconds -= 1;
minuteLabel.Text = minutes.ToString();
if (seconds / 10 == 0)
{
sekundeLabel.Text = "0" + seconds.ToString();
}
else
{
sekundeLabel.Text = seconds.ToString();
}
}
if (semafor_open)
prikaz_na_semaforju();
}
Primer kode 8: Timer za prikaz glavnega časa
Prav tako je to del, ki se prikaţe ob zagonu aplikacije. Na tem oknu imamo moţnosti, ki
nam odprejo ţreb ter okno za vodenje tekme.
Ker se lahko na isti blazini vodi več starostnih kategorij hkrati, ki nimajo enakega časa
borbe, smo naredili funkcionalnost hitrega spreminjanja časa. To smo dosegli tako, da
uporabnik za spremembo dolţine borbe preprosto klikne na gradnik button spremeni, vpiše
Informacijski sistem za vodenje tekem v judu Stran 19
nov čas borbe ter pritisne na gradnik button potrdi.
V tem delu aplikacije s pritiskom na gumb pridobimo naslednje tekmovalne pare iz
aplikacije vodenja tekme. Imena tekmovalcev se izpišejo na sam semafor, kjer so vidna
tako nam kot gledalcem. Istočasno program pridobi tudi tekmovalni par, ki se bo boril
naslednjo borbo.
Ko se borba konča in je znan zmagovalec, s pritiskom na gradnik button Prenesi
zmagovalca prenesemo zmagovalca v aplikacijo za vodenje tekme.
3.6.2 Semafor za prikaz gledalcem
To okno sluţi za prikaz podatkov gledalcem ter sodniku na blazini. Na njem so prikazani
identični podatki kot na semaforju, kjer beleţimo točke; torej ime, priimek ter drţava
trenutnih tekmovalcev, ki sta na borilnem prostoru, in pa točke, ki smo jih zabeleţili. Na
tem semaforju je tudi moţnost za prikaz reklamnih sporočil.
Informacijski sistem za vodenje tekem v judu Stran 20
4 REZULTATI
V tem poglavju kot rezultate opišemo in prikaţemo videz naše aplikacije.
4.1 Spletna stran
Ob obisku naše spletne strani se nam kot domača stran odpre koledarček s tekmami, ki se
jih lahko udeleţimo. Na zgornji levi strani imamo meni, s katerim se lahko premikamo do
ostalih funkcionalnosti.
Slika 12: spletna storitev
4.2 Žreb
Najprej izberemo, za katero tekmo ţelimo izdelati ţreb, in pridobimo podatke iz
podatkovne baze s klikom na gradnik button pridobi ter jih zapišemo v tabelo. Nad tabelo
imamo moţnosti sortiranja. Prav tako imamo moţnost dodajanja novih klubov ter
tekmovalcev in urejanja le-teh. Tekmovalce za ţreb lahko tudi uvozimo iz excelovega
dokumenta. S klikom na gradnik button žrebanje se nam odpre novo okno, kjer se izvaja
ţreb. V zgornjem desnem kotu imamo vse podatke trenutne kategorije. Ţreb se grafično
prikaţe na levi strani aplikacije.
Informacijski sistem za vodenje tekem v judu Stran 21
Slika 13: Žreb
4.3 Vodenje tekme
Imamo moţnost vodenja dveh kategorij naenkrat, kjer ima vsaka kategorija svoj zavihek.
Najprej pridobimo ţreb s trdega diska s pritiskom na gradnik button izberi kategorijo. Prav
tako imamo moţnost vodenja kategorije elektronsko oziroma ročno. Elektronsko vodenje
kategorije je avtomatizirano s pomočjo semaforja. Če pa ţelimo kategorijo voditi ročno,
zmagovalce določamo s pritiskom na njihova imena. Ko so znani polfinalisti, s pritiskom
na gradnik button repasaž določimo popravne borbe. Ko so končane vse borbe v kategoriji,
se grafični prikaz rezultatov shrani za prikaz na internetni strani.
Informacijski sistem za vodenje tekem v judu Stran 22
Slika 14: Vodenje tekme
4.4 Semafor
Semafor upravljamo s pomočjo miške. Na spodnjem delu aplikacije imamo moţnosti za
nastavljanje časa ter pridobivanje naslednjih tekmovalnih parov. Prav tako imamo tu
moţnost odpreti okno, kjer se izvajata ţreb in samo vodenje tekme.
Slika 15: Semafor za prikaz gledalcem
Informacijski sistem za vodenje tekem v judu Stran 23
Slika 16: Semafor za točkovanje
Informacijski sistem za vodenje tekem v judu Stran 24
5 SKLEP
V diplomskem delu smo se ukvarjali z izdelavo informacijskega sistema za vodenje judo
tekem. Razvili smo aplikacijo, ki nam sluţi za prijavo na tekmovanja, prikazovanje točk,
vodenje rezultatov ter sam ţreb. Vsak del aplikacije lahko deluje tudi neodvisno drug od
drugega.
S tem smo poenostavili ter olajšali vodenje tekme, prav tako pa smo zmanjšali število
dodatnih pomočnikov, saj aplikacija večino dela naredi sama.
V tretjem poglavju smo opisali funkcionalnosti naše aplikacije, le-to pa smo prikazali v
četrtem poglavju. Naleteli smo tudi na teţave pri ţrebu zaradi pomanjkanja literature v
zvezi s pravili ţrebanja.
V prihodnosti načrtujemo nadgradnjo aplikacije s kamero in mikrofonom, ki bosta
prepoznavala sodniške odločitve ter s tem avtomatizirala tudi ta del aplikacije. S tem bomo
še zmanjšali potrebo po dodatni pomoči.
Informacijski sistem za vodenje tekem v judu Stran 25
6 LITERATURA, VIRI
[1] Michael Brousse, David Matsumoto, Judo – a sport and a way of life,
JAJKZS, 2002 Maribor
[2] Judo, dostopno na
http://sl.wikipedia.org/wiki/Judo
[Zadnji obisk: 3.9.2011]
[3] Zgodovina juda, dostopno na
http://www.os-brsljin.si/izdelki/borilne/Miklavc/Judo/zj.html
[Zadnji obisk: 1.9.2011]
[4] Gorazd Meško, 50 let juda v Sloveniji,
Judo zveza Slovenije, 2002 Slovenj Gradec
[5] David Bolton, C# For Beginners - Learn about C#, dostopno na
http://cplus.about.com/od/introductiontoprogramming/a/cshbeginners.htm
[Zadnji obisk: 6.9.2011]
[6] Get Started with ASP.NET, dostopno na
http://www.asp.net/get-started]
[Zadnji obisk: 5.9.2011]
[7] ASP.NET, dostopno na
http://www.startvbdotnet.com/aspsite/asp/
[Zadnji obisk: 2.9.2011]
[8] Scott Hanselman, What is ASP.NET, dostopno na
http://www.asp.net/general/videos/what-is-asp-net
[Zadnji obisk: 1.9.2011]
[9] Why MySQL, dostopno na
http://www.mysql.com/why-mysql/
[Zadnji obisk: 7.9.2011]
Informacijski sistem za vodenje tekem v judu Stran 26
[10] MySQL, dostopno na
http://en.wikipedia.org/wiki/MySQL
[Zadnji obisk: 8.9.2011]
Informacijski sistem za vodenje tekem v judu Stran 27
7 PRILOGE
7.1 Seznam slik
Slika 1: ER diagram podatkove baze ..................................................................................... 6
Slika 2:Pregled tekem ............................................................................................................ 7
Slika 3: Vnos nove tekme ...................................................................................................... 8
Slika 4: Pregled klubov ......................................................................................................... 8
Slika 5: Vnos novega kluba ................................................................................................... 9
Slika 6: Pregled tekmovalcev ................................................................................................ 9
Slika 7:Vnos novega tekmovalca ........................................................................................ 10
Slika 8: Prijava na tekmo ..................................................................................................... 10
Slika 9: Priprava za ţreb ...................................................................................................... 13
Slika 10: Grafični prikaz ţrebanja ....................................................................................... 15
Slika 11: Uvoz kategorije .................................................................................................... 16
Slika 12: spletna storitev ..................................................................................................... 20
Slika 13: Ţreb ...................................................................................................................... 21
Slika 14: Vodenje tekme ..................................................................................................... 22
Slika 15: Semafor za prikaz gledalcem ............................................................................... 22
Slika 16: Semafor za točkovanje ......................................................................................... 23
7.2 Seznam primerov kode
Primer kode 1: Connection string .......................................................................................... 6
Primer kode 2: povezava na bazo .......................................................................................... 6
Primer kode 3: Vpis nove tekme ......................................................................................... 11
Primer kode 4: Pridobi podatke iz excelovega dokumenta ................................................. 13
Primer kode 5: Prijavi tekmovalca na tekmo....................................................................... 14
Primer kode 6: Tiskanje ţreba ............................................................................................. 15
Primer kode 7: Naredimo sliko končnih rezultatov ............................................................. 17
Primer kode 8: Timer za prikaz glavnega časa .................................................................... 18
Informacijski sistem za vodenje tekem v judu Stran 28
7.3 Naslov študenta
David Mesarič
Gozdarska cesta 49
2382 Mislinja
Tel.studenta: 041 292 257
e-mail študenta: [email protected]
7.4 Kratek življenjepis
Rojen: 15.1.1988
Šolanje: OŠ Mislinja
Poklicna in tehniška elektro in računalniška šola Velenje
Fakulteta za elektrotehniko, računalništvo in informatiko Maribor
Informacijski sistem za vodenje tekem v judu Stran 29
Informacijski sistem za vodenje tekem v judu Stran 30
Informacijski sistem za vodenje tekem v judu Stran 31