From 3ec7067ee7584d53c7cef6f75a7b7ccc0d4c135c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Koivisto=20Ida=20Maria=20Hannuntyt=C3=A4r?= <ida.m.koivisto@student.jyu.fi> Date: Tue, 25 Mar 2025 16:34:52 +0200 Subject: [PATCH] henkilotiedot saadaan tallennettua --- bin/RalliJava/Henkilo.class | Bin 4153 -> 0 bytes bin/RalliJava/Henkilot.class | Bin 2128 -> 0 bytes bin/RalliJava/Ralli.class | Bin 378 -> 0 bytes bin/RalliJava/Rallit.class | Bin 381 -> 0 bytes bin/RalliJava/Rekisteri.class | Bin 2154 -> 0 bytes bin/application/RalliController.class | Bin 5303 -> 0 bytes .classpath => kerho/.classpath | 0 .project => kerho/.project | 0 .../org.eclipse.core.resources.prefs | 0 kerho/bin/RalliJava/Henkilo.class | Bin 0 -> 4468 bytes kerho/bin/RalliJava/Henkilot.class | Bin 0 -> 3503 bytes kerho/bin/RalliJava/Ralli.class | Bin 0 -> 3578 bytes kerho/bin/RalliJava/Rallit.class | Bin 0 -> 2645 bytes kerho/bin/RalliJava/Rekisteri.class | Bin 0 -> 3796 bytes .../bin}/RalliJava/SailoException.class | Bin {bin => kerho/bin}/application/Main.class | Bin kerho/bin/application/RalliController.class | Bin 0 -> 6216 bytes {src => kerho/bin}/application/Sample.fxml | 0 .../application/UudenlisaysController.class | Bin .../bin}/application/application.css | 0 .../bin}/application/henkilonLisays.fxml | 0 .../bin}/application/muokkausRalli.fxml | 0 .../application/osallistujaTuloslista.fxml | 0 .../bin}/application/rallinLisays.fxml | 0 build.fxbuild => kerho/build.fxbuild | 0 kerho/kerho/nimet.dat | 3 + {kuvat => kerho/kuvat}/README.md | 0 {kuvat => kerho/kuvat}/aloitusikkuna.png | Bin {kuvat => kerho/kuvat}/eihakutuloksia.png | Bin {kuvat => kerho/kuvat}/henkhakutulos.png | Bin {kuvat => kerho/kuvat}/paaikkuna.png | Bin {kuvat => kerho/kuvat}/rallihakutulos.png | Bin {kuvat => kerho/kuvat}/tarkastele.png | Bin {kuvat => kerho/kuvat}/uusihenk.png | Bin {kuvat => kerho/kuvat}/uusiralli.png | Bin {src => kerho/src}/RalliJava/Henkilo.java | 35 ++- kerho/src/RalliJava/Henkilot.java | 151 +++++++++++++ {src => kerho/src}/RalliJava/Ralli.java | 24 ++- {src => kerho/src}/RalliJava/Rallit.java | 0 {src => kerho/src}/RalliJava/Rekisteri.java | 19 ++ .../src}/RalliJava/SailoException.java | 0 {src => kerho/src}/application/Main.java | 4 +- .../src}/application/RalliController.java | 0 {bin => kerho/src}/application/Sample.fxml | 5 +- .../application/UudenlisaysController.java | 0 .../src}/application/application.css | 0 .../src/application/henkilonLisays.fxml | 54 +---- .../src}/application/muokkausRalli.fxml | 0 .../application/osallistujaTuloslista.fxml | 0 kerho/src/application/rallinLisays.fxml | 111 ++++++++++ src/RalliJava/Henkilot.java | 82 ------- src/application/uudenlisays.fxml | 203 ------------------ 52 files changed, 327 insertions(+), 364 deletions(-) delete mode 100644 bin/RalliJava/Henkilo.class delete mode 100644 bin/RalliJava/Henkilot.class delete mode 100644 bin/RalliJava/Ralli.class delete mode 100644 bin/RalliJava/Rallit.class delete mode 100644 bin/RalliJava/Rekisteri.class delete mode 100644 bin/application/RalliController.class rename .classpath => kerho/.classpath (100%) rename .project => kerho/.project (100%) rename {.settings => kerho/.settings}/org.eclipse.core.resources.prefs (100%) create mode 100644 kerho/bin/RalliJava/Henkilo.class create mode 100644 kerho/bin/RalliJava/Henkilot.class create mode 100644 kerho/bin/RalliJava/Ralli.class create mode 100644 kerho/bin/RalliJava/Rallit.class create mode 100644 kerho/bin/RalliJava/Rekisteri.class rename {bin => kerho/bin}/RalliJava/SailoException.class (100%) rename {bin => kerho/bin}/application/Main.class (100%) create mode 100644 kerho/bin/application/RalliController.class rename {src => kerho/bin}/application/Sample.fxml (100%) rename {bin => kerho/bin}/application/UudenlisaysController.class (100%) rename {bin => kerho/bin}/application/application.css (100%) rename {src => kerho/bin}/application/henkilonLisays.fxml (100%) rename {bin => kerho/bin}/application/muokkausRalli.fxml (100%) rename {bin => kerho/bin}/application/osallistujaTuloslista.fxml (100%) rename {src => kerho/bin}/application/rallinLisays.fxml (100%) rename build.fxbuild => kerho/build.fxbuild (100%) create mode 100644 kerho/kerho/nimet.dat rename {kuvat => kerho/kuvat}/README.md (100%) rename {kuvat => kerho/kuvat}/aloitusikkuna.png (100%) rename {kuvat => kerho/kuvat}/eihakutuloksia.png (100%) rename {kuvat => kerho/kuvat}/henkhakutulos.png (100%) rename {kuvat => kerho/kuvat}/paaikkuna.png (100%) rename {kuvat => kerho/kuvat}/rallihakutulos.png (100%) rename {kuvat => kerho/kuvat}/tarkastele.png (100%) rename {kuvat => kerho/kuvat}/uusihenk.png (100%) rename {kuvat => kerho/kuvat}/uusiralli.png (100%) rename {src => kerho/src}/RalliJava/Henkilo.java (77%) create mode 100644 kerho/src/RalliJava/Henkilot.java rename {src => kerho/src}/RalliJava/Ralli.java (89%) rename {src => kerho/src}/RalliJava/Rallit.java (100%) rename {src => kerho/src}/RalliJava/Rekisteri.java (85%) rename {src => kerho/src}/RalliJava/SailoException.java (100%) rename {src => kerho/src}/application/Main.java (94%) rename {src => kerho/src}/application/RalliController.java (100%) rename {bin => kerho/src}/application/Sample.fxml (97%) rename {src => kerho/src}/application/UudenlisaysController.java (100%) rename {src => kerho/src}/application/application.css (100%) rename bin/application/uudenlisays.fxml => kerho/src/application/henkilonLisays.fxml (66%) rename {src => kerho/src}/application/muokkausRalli.fxml (100%) rename {src => kerho/src}/application/osallistujaTuloslista.fxml (100%) create mode 100644 kerho/src/application/rallinLisays.fxml delete mode 100644 src/RalliJava/Henkilot.java delete mode 100644 src/application/uudenlisays.fxml diff --git a/bin/RalliJava/Henkilo.class b/bin/RalliJava/Henkilo.class deleted file mode 100644 index 72c68bbe03f3ae320e230b7d09b6c99b6fda555f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4153 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�el9!%dl_Rl z7vU+$r9I+F^__B|S$0|3<<w%g>PME3SdOp<9;R3I^kpr74b09uZkA?#*7JGY$lNqx z4<4y9W^a`-6M->eD~(A~*Tny8OirGW+!kql8xfvsib}gT#|hco<`_YiYf4BbnlyT` zZ25qy92Y)=<<oe8=sC#T9%Xh<FtakJr<lz%%;Py`P!^cS0_#K1=!dFwGB*>d*3~IW z)~$%5WW9?jN>;X*qGYX;)onul$04yrO4dP*G2#m|OxsPaNNt7IbS3r)B4;Bq`8RQC z>})hHhnskoD@zAz0bd8M<3(9rMi%hhrAhY!UR#=E7x4PhB)5R?sR>VA+N11p++;xn zd?K&Hlk+6{aS7vmW=`TMM&@Z1iw%K&OR*^6`<SBj0&n82(2LFxeD!xsUBC~352(8u z!Y@>zrash{#E<afP|Iy{%P98BN^%45429!xIF7Vl$4}U<wg&ZMH>Ye@cL&opPT8)u zEmxOd_x=1&3Vb1Ic!`L98JqYX+=^F_VfgOFW!9Qk8G+YWPhKZ7uCR8zL1etCtjz@$ z;b)km4vpV_&NI%Z47q<ns*c*)@k>$>{(hxAeh<Iq*v!m+K+X?U|B>qFRewYEe^C7` Qd_rFN?z)XX<1g6!UqA<;uK)l5 diff --git a/bin/RalliJava/Henkilot.class b/bin/RalliJava/Henkilot.class deleted file mode 100644 index 830dc8df1ba75530813d9acbbe9bb5f0db1bc1b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2128 zcmaJ?+fo}x5Iv&{E9Aun1o%P>BH#oB7+(@6K@PT2APB@I7Qqmb*n?QZSgT!XcSV^$ zNmZUwdB{s1VwY{IOvQQ6M<qG4k`a`sJZLW6)2F*n_qP82=j}THIqVpS2y{M_wyoyn zzMPn|oU*drz(7o({h1co(%G3<-g;)00s(XJ!TRI5nWcq%VR=<R<OSMtuHy&N3D%@t zwW7q03q<X5MW996W#!VWYqQYgBTM~V<)~na&xc3W1Y$XN+e#veb`vJrTEWmvw4%j8 zmq14of_~6rB8hVX7YfR;ma3I4%UhLOwnfu|Taxyg^pw8Wg|T2)`HZJIoPhDfZRJZz z(BWo%R!5ked0w*i0>z9C^b1^S#8i~z?O2__Kp2xMOPLN?P=QRM4}&_jA%X7ULWA96 z;3;P(^kD4PDj<+LBL=cv3}mUiDEI0Kwd`0yL32$CS&W!;oG^j>$QkAa#svl&e)G<@ z^?bP+EI*xgtIoE69DXOOIAP)jZVFti$g;&6mt^or1-tL7O%}U{>7{{I&mxI246-#8 zqp3*cXgW8WpN*^~S-$opQnlp^6O(8o#hz7Geqed7(z?4QzSQE@eaR-1ySA&%?wRPt z2d#L3oPp_6omxDgamB<}m?0^a=P}NjcjZp3kmrDLTC$Q&;A`C^>Qsr+lQ)vcW5K{Y zD-h;(+RQ{jm(SSKNH&v;NpFW-q|QiDAW^R-KY_UC?(5bwq+fL^y3690{q%qcg3Ws6 zM72(LQr5r{St+_zuVl?C-PvvLztZbEKxRMfx`7{fa&OTJcHM11iSO{eflYy-MtPL8 z@0P8JT9s<`oRy`(^$v8Qe-QZTWJ}gx*8u0Fvu#`cP{DP})xB(UF;7TN8Ll4eS!X;y z$yIH#WKT9y9U{l6R8)bLz0iV<1fB@=7o-YYC#~4GWnZOz{jE6ZvaH(5nM@1Lr@Z4> zUe1=jZ}Af?30!Mp;H;bskk`Kdf694PBLD+zK|ScAxPmxZcr$p5Ai<U6Dm-&4agS5S zQO5N=Z*zPjxOZj_aUm0ZjgCy>Po!R>`$cGTQR@)nn&PTQUl%&ijZ2i6HA`HkPw>qC zC)!n>W4!f+_yHq|P%@f%Md(-Pe)kL7j?lN!nLfmae`$%<j21H+++t4{fOZ^3!|_%0 z5G;*;WVmX_JvGR>V}j!vKBCKyLrc-a<1j|J>I^5i>kQ-C&+j}$LTpVDXwgU{ew;{# zh>b+XLYSR;A_KiY<D7=-{S_TY7~AN5i|fE4ZiUJ8-ui>EweZh#2X2z5TV&|=iO>g* zLm!}AhoVD|A!4?X;ZN`>C5&BkFpM}g>qih9hqzNXLW=umi}ih}zE8%+-r#fovg6$O z%U+K0pqK0@#Z#k{O^xdN)NlO9e2M#=vu`l>f_@TMz!C|r#XOC6`pZ%}#nU~;e4oAb zfCNvI(HzD(#cpB-cQDIWbJXT}n<vHsmN|$XVI|CSD(ty+ED{?;TcP#}y|vS7g~f{S z)opykQ<V4_Jme|HHwhH6O0DK2g~-1&j~MvYps6s>m*Dd?sv>l>9s&#eNZn&d-t-*a J!Zx1b@_*&=)AIlT diff --git a/bin/RalliJava/Ralli.class b/bin/RalliJava/Ralli.class deleted file mode 100644 index aaae8e1c079552831f35c393cbaced43015a30b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmZut!Ab)$5Ph@VcH6aD+lnVI-l~H80WDq%9%NCl(u=3rHLNLV7UI_b@+5fh1N<m) z5(TAr$eVeYnfE67_<VZ@FvmfHh%mTiWAqh2a~84$F=2n@xnWynH^oYo4WTpBRyP-f z*5qVKi0Ac#O3^~Ek2X4@lWVK4H|s*VJ1&eOjPkl<vt*|||GA8tNBu+?=3BN?kzBL3 zgu}^w{%gNzoVL|8ShA~Rbo@`5kS^+tE7hg;&S?-o_bNDstSs*ZBFSV`!9-XlktDWH vU(tOD<y6p@fi89g``--`cZKz^hk@Mq;WIhDkG2Po{tU`DVi+1nf)U1FgltB* diff --git a/bin/RalliJava/Rallit.class b/bin/RalliJava/Rallit.class deleted file mode 100644 index 5d9d459c3c07e35f3a1b1deebc9c9bf122583006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmZut%TB^T6g{^T3I#2KaqkW_u^)h8L*l|Tl89l$YFa0C$S_UD!T)k);=&K`qYQTn ziH5M4b06oP`<S2KuWtZToJR-<{U@QddJyj-tvweZ<m}2Pv@m5l%U7~+gw~xh%1sE3 z(ba+wPOBFgqk&EjO|%F}ri^^ttaE9fMXn`bkX41y3t^Ry_sP(`syELa&K+~lwNQp| zF<NGS^XJYgQ;zGI!j`NZ9-#^GyxQ18-YY-4ySwGqx4|WNX+9YU*yCjxBaTwG#I||; uiS|cL$Bdo^+UPR&b_HxtIO^aO31__chM%vaLt*ky$RCNbx^Tc4V7LWA)JO^d diff --git a/bin/RalliJava/Rekisteri.class b/bin/RalliJava/Rekisteri.class deleted file mode 100644 index b6c5266ea5fb238d7ee7346ea2a6033c031eac0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2154 zcmaJ@TUQfT6#h;w%n$}q(1?mQw9q0EQBkx+Y=MHJ0j=>;FTEVXNDi6IWKAZl(uY2^ z{)WDGE!Xm;57pJiwREk%_}0JDztC0toyin}#6HZq?6dcG_Wt%hJNfgUmwy15L)Ab` zpzo%19CcN0$nl$YS=9pDR|XOSd)Kwhk?z{~^_6wI7zmgp+bt`{<8ps~+wMvv%?Wf| zRIUmx3B*T^-w{a6d8>8`adcTQU>fKa=-q9Yf`zV5@J<U!bO`k1m1{58D=W5tORhLJ zt@2(`I(MY6^ga?Mf|9BU9BA=nD+W5#y=DiIZz_<XPmB7hehY_?rn5ZHmn#BEN7W=1 z(jzTMk!4QDk(&RuXjcQ}xitgF1p2pQC`b~rb*$kt77pWxfDy4pj@!TrbV=8h(JlJ! z#p7+%G~kC8KEe>$)CK}V@mu7!B9*HRALO@FRS10LuF>ff>FhFaQefY<v(arSjG;>p zr!Aa;$@u&z^`6q=vlh;2ap#7t1yYtAPorfzaRE~XKHgCqg-w=B#X=4j$*}GFIv=4w z${W8yX9Bup%Sz4!%c3{0R9VW5bjr$OQZiE`DSV1q12d$ljhV$l{ft~zHIl<{4~)Dk z+64<AU`RW8#lm9fj#m$KJl8Dbu|$-h?s$xd35-zQ^07(VbqfcO?&Tx-+`>&11P)eY z*`D*<q73e;pu`nX+(6f!PTMZ}b*}t19{07$4SD^KZe}v+dmFll4Oy$Z6<vi%+j+Ff zNCnIOa7#(-tTfhl+|k9`T?k~cyd<mPqcCur=`474zi2Ng{c`qfJ&BXrPbP2H^MYF7 z%j%LHl)Tki3PsokRt1K(BT?>#SGLES_0$Y~K^6ng-_)Eu68Nb#5s`Ki@QQR-9lJJ^ z_q=kwn%hlJi)4r4t<9?4M!l88W-H3Iavnj<v5ys0VCQ-|uwsJLrkmydx}k#CPcojH zaW{jE7!<G;UDx*K99gT`e9(@-@UFnyg<^ndIrjgmY%9&UF~~O)XA!aLbywpm$u-*` z$4>5Mc`7*X9esh+=qp(FUSQAf=y^t24Es3l3GGcJkU|gbbV*uG8}wm6cPv1pBfK-5 zHJ&;88+sZz_zTxfoQ_bwuf^WnvS+KJ)&O-A)H)h^HbY5_l1`13ZQ#9amr~)u5jryv z!lj#v5gbhz_WPkDe2biQpwq2zM;aLZ^)1ha-T^g&;~~T-vV_>-qxg=JByk?Uf*^4x z@~<$)d3-6Fm!o+qaiW1!{3gaY^P4!7;6e`*S&ApKluc&!e)1`-rRO-`JKex1@#&}N z%MLU!zdZIFmm9eHLre^ijOCx-{H3R9N(Wxz20-m+^wY#OER(@_n7jMT3)p*1oWfq5 zMn604ASN)3vyAE-PbMin&+!6#=M<Y@4)eH3jA>lQCEUdf9<oMO*Z>vR0T!@{%lMJ4 zP1nK0klM$%h1=Yj_#Ssy5q#amxyuy9c;f`V;4030M{$p<1d&bL#{-_;W8O8tG2UQ= zNsAM|o48u`B{BPvc*B5V2EH-~EDRhq|K>k~9wL6t^BBH?4DS|Lqe2Pm-05G6GAi(J F=wIYU-B$nr diff --git a/bin/application/RalliController.class b/bin/application/RalliController.class deleted file mode 100644 index 335fa4e066bed39ed6fe8241a8723d8cde1c5abb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5303 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 S;@|iW-^;f46#k26(eyu=n>ZQ( diff --git a/.classpath b/kerho/.classpath similarity index 100% rename from .classpath rename to kerho/.classpath diff --git a/.project b/kerho/.project similarity index 100% rename from .project rename to kerho/.project diff --git a/.settings/org.eclipse.core.resources.prefs b/kerho/.settings/org.eclipse.core.resources.prefs similarity index 100% rename from .settings/org.eclipse.core.resources.prefs rename to kerho/.settings/org.eclipse.core.resources.prefs diff --git a/kerho/bin/RalliJava/Henkilo.class b/kerho/bin/RalliJava/Henkilo.class new file mode 100644 index 0000000000000000000000000000000000000000..dceb3beb503b8531c32b6e785c535ded2a34928b GIT binary patch literal 4468 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 bcvFqPQsb}H_#6C=67od&d;Af9!iIkXOe*tt literal 0 HcmV?d00001 diff --git a/kerho/bin/RalliJava/Henkilot.class b/kerho/bin/RalliJava/Henkilot.class new file mode 100644 index 0000000000000000000000000000000000000000..4aa4aef19a48b842e56e094154c23f78445581a2 GIT binary patch literal 3503 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 literal 0 HcmV?d00001 diff --git a/kerho/bin/RalliJava/Ralli.class b/kerho/bin/RalliJava/Ralli.class new file mode 100644 index 0000000000000000000000000000000000000000..d00ee8801a7c6a95ab2a078af392af1c2060eb2b GIT binary patch literal 3578 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 OlA~Er-<$Y7_Wd8=dL+;Q literal 0 HcmV?d00001 diff --git a/kerho/bin/RalliJava/Rallit.class b/kerho/bin/RalliJava/Rallit.class new file mode 100644 index 0000000000000000000000000000000000000000..ada51a5827284973604ea60f607fb2ef501aed01 GIT binary patch literal 2645 zcmaJ?TT>iG6#jbIWnh^E0)b?WMvz=!fsl*Q$OdvD5;j=~2?)7pw1E+Zot;@{W-)lb z>yzc9`e5mcDc=&ykRqwFEFXRM)t_Sgx@QT?C9+gcPxt9_zVm(O^!)YjgWmxR;wu9& zfrcy6aqJ6nQTFOtXduqj1-0Nvcdqx+^nx`L3RFucZ+o1y<n(4Kw4L5T&vCeGdu~Rc zcHEwGWmxhpfzB<BPUbd5%M9>bm6I<Bh%95Av|T$K;8I8Dq(FSoo3)atLcNJPm<DzT zG_3_c<NI<cX9r;t4XCe$z)lkhRI6EwiCQED>T|Yhjg|`2mOmk<9U^PYc{9?Pl)kOr z%Zu@F-VW5>27DpmC8g`ih#Q9Q$X2GNqSNHS=GCoIt;4fuGtf$)Ygw#OXyQ4v3)I-5 z<;&3XnMFrsuxxofQ-}RHXy5<=ulZTsHPL}ia_3sNDAvwZ4;5Nw40Ms14XGxPMvsX@ z=;f(7D;&1myzO}IM9Fna!Km+PRkC$Bf@21b3T$7Ct!OauJdV>w&dv%ncSQPEM(w<= zaKC8c1YQy_=4CLdAyVt>ES_*JPL1O&&066S@i$b|QJL(7uPRnx$40RzM9X?{mx`+b zw{P&Xl{^C5#zQ%iACbj!StJ}gkW#U@DOTsCQu7#zE=b!|Qr)OXc|7!OcP`U8nPe^2 zD{A#{!Nf(yZ_>B&q|EX?TkVaQ7{w)lx<wg;GO9H?W>M+$mrb0-U@gY+ih+rB%{jhA zF9j2mm?HIFiHtQzFl?`Pj2J>9v1B2m!dx?P9XCjQSaLiD64+gqX@ha+WDQ;u80de( zUu)D2t)Uf!cIy+2`jdDa(!d+5J-a@LiD}FbOHqMzNZ`7XS;wDcVh^5Hh1b@|n`_>L zjRk>S1(~-7J$FWiQ+7Dd8FO+&wsG_0cGUG(cBb$+CJHKSLWd>C(x2mjrY*GNZKMm0 zl-3r#`330~R4G*FOJ31tGb93De0&;_6&s?8GXq>oj(a74#u~EKeNz{abx3s!wL9y1 zVG#PVIAVqK-fWP>yLjKgdjk7(KWW6ayXfVu-UxV<;*exCe@W&3fxx$w{Z+P(91cr& z*0F+pInT?NikZzdS+TP2-~^jx3-d~5qEA7ld?!^R9b`+6^WMtTSL2-;d@T5B;WcMw zUDxsl9T@~xVBj->{hN~93buhS1or;FDW!;VL>qgoiiHtFqq_e2X6UyXj{FF4jB|}2 z5RTjUc9GVC&*t=fY)?N#!?pWpyoaWA)jc%d<wgv<I5zSa(895vza7|#-TXnj;bElk z6yJoZO`eECKBEKt$@c{J`pdpY(!Zf;1$zbh;<vFk6<@(Vfj^KQ?O8_mo*z-y-Lrzj zF-)ng7X-e4^iTI4I*4l^E!tT-YIuFN;Q;$!KQcI|!K5|F{xTSbL?1KeM+C=dbCN*X z_;KvV0CPT71|RL6=H3~uG$ZziStbk!VbHfh@61f7JBOnp>>N#F>afbAYX#?sbd9H^ z-aA5qk7`IQk?mthrVh_8!pj(nJc`@2QS#h<2toGG=N=->=kQ4RIa+@9#k-f0o$9Vy zMvh!%r+VU?r8s2Cm6~_aV62OKV_j-_tov77S;p0#=#h#?PmYbRF5_lbVi~i2iBw_* zZ&D58HV&qYRW<smX_l&{Bo8nLEF+&%EA*ypv@CzCv?En+YHdz1jSLw+$<+JF^#Jub zg)W@NVX}LiBxXqC8J+qNEAKomV;EPF<z;k%QF8Ej_b=iKzUKY@119h@=XY>JQ#q{5 z>MmSbfsuYeQA^W+pYRrA#c1^%e64O9zCplQoZd1Bi6}vzyHVm=^<(X$z0=%N+P5n0 rKS7OwMapj=z4~7+gLYQU+q8?}7M3&ufe$I+M?3^wXP@G8e2LV5Sr2ER literal 0 HcmV?d00001 diff --git a/kerho/bin/RalliJava/Rekisteri.class b/kerho/bin/RalliJava/Rekisteri.class new file mode 100644 index 0000000000000000000000000000000000000000..f50f040b8d1c22eee72461074bed396d551ddc7b GIT binary patch literal 3796 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 literal 0 HcmV?d00001 diff --git a/bin/RalliJava/SailoException.class b/kerho/bin/RalliJava/SailoException.class similarity index 100% rename from bin/RalliJava/SailoException.class rename to kerho/bin/RalliJava/SailoException.class diff --git a/bin/application/Main.class b/kerho/bin/application/Main.class similarity index 100% rename from bin/application/Main.class rename to kerho/bin/application/Main.class diff --git a/kerho/bin/application/RalliController.class b/kerho/bin/application/RalliController.class new file mode 100644 index 0000000000000000000000000000000000000000..5ae638ca7e31336f6d258077af71425512a5fe76 GIT binary patch literal 6216 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 literal 0 HcmV?d00001 diff --git a/src/application/Sample.fxml b/kerho/bin/application/Sample.fxml similarity index 100% rename from src/application/Sample.fxml rename to kerho/bin/application/Sample.fxml diff --git a/bin/application/UudenlisaysController.class b/kerho/bin/application/UudenlisaysController.class similarity index 100% rename from bin/application/UudenlisaysController.class rename to kerho/bin/application/UudenlisaysController.class diff --git a/bin/application/application.css b/kerho/bin/application/application.css similarity index 100% rename from bin/application/application.css rename to kerho/bin/application/application.css diff --git a/src/application/henkilonLisays.fxml b/kerho/bin/application/henkilonLisays.fxml similarity index 100% rename from src/application/henkilonLisays.fxml rename to kerho/bin/application/henkilonLisays.fxml diff --git a/bin/application/muokkausRalli.fxml b/kerho/bin/application/muokkausRalli.fxml similarity index 100% rename from bin/application/muokkausRalli.fxml rename to kerho/bin/application/muokkausRalli.fxml diff --git a/bin/application/osallistujaTuloslista.fxml b/kerho/bin/application/osallistujaTuloslista.fxml similarity index 100% rename from bin/application/osallistujaTuloslista.fxml rename to kerho/bin/application/osallistujaTuloslista.fxml diff --git a/src/application/rallinLisays.fxml b/kerho/bin/application/rallinLisays.fxml similarity index 100% rename from src/application/rallinLisays.fxml rename to kerho/bin/application/rallinLisays.fxml diff --git a/build.fxbuild b/kerho/build.fxbuild similarity index 100% rename from build.fxbuild rename to kerho/build.fxbuild diff --git a/kerho/kerho/nimet.dat b/kerho/kerho/nimet.dat new file mode 100644 index 0000000..ce1596a --- /dev/null +++ b/kerho/kerho/nimet.dat @@ -0,0 +1,3 @@ +0|Rovanperä|Oskari|18|Keuruu|Kuopion nopeet|59|41| +1|Sokka|Oskari|54|Rovaniemi|Rovaniemen nopeet shamaanit|83|17| +2|Rovanperä|Teemu|59|Seinäjoki|Kuopion nopeet|99|76| diff --git a/kuvat/README.md b/kerho/kuvat/README.md similarity index 100% rename from kuvat/README.md rename to kerho/kuvat/README.md diff --git a/kuvat/aloitusikkuna.png b/kerho/kuvat/aloitusikkuna.png similarity index 100% rename from kuvat/aloitusikkuna.png rename to kerho/kuvat/aloitusikkuna.png diff --git a/kuvat/eihakutuloksia.png b/kerho/kuvat/eihakutuloksia.png similarity index 100% rename from kuvat/eihakutuloksia.png rename to kerho/kuvat/eihakutuloksia.png diff --git a/kuvat/henkhakutulos.png b/kerho/kuvat/henkhakutulos.png similarity index 100% rename from kuvat/henkhakutulos.png rename to kerho/kuvat/henkhakutulos.png diff --git a/kuvat/paaikkuna.png b/kerho/kuvat/paaikkuna.png similarity index 100% rename from kuvat/paaikkuna.png rename to kerho/kuvat/paaikkuna.png diff --git a/kuvat/rallihakutulos.png b/kerho/kuvat/rallihakutulos.png similarity index 100% rename from kuvat/rallihakutulos.png rename to kerho/kuvat/rallihakutulos.png diff --git a/kuvat/tarkastele.png b/kerho/kuvat/tarkastele.png similarity index 100% rename from kuvat/tarkastele.png rename to kerho/kuvat/tarkastele.png diff --git a/kuvat/uusihenk.png b/kerho/kuvat/uusihenk.png similarity index 100% rename from kuvat/uusihenk.png rename to kerho/kuvat/uusihenk.png diff --git a/kuvat/uusiralli.png b/kerho/kuvat/uusiralli.png similarity index 100% rename from kuvat/uusiralli.png rename to kerho/kuvat/uusiralli.png diff --git a/src/RalliJava/Henkilo.java b/kerho/src/RalliJava/Henkilo.java similarity index 77% rename from src/RalliJava/Henkilo.java rename to kerho/src/RalliJava/Henkilo.java index a28ad64..ba68560 100644 --- a/src/RalliJava/Henkilo.java +++ b/kerho/src/RalliJava/Henkilo.java @@ -12,7 +12,7 @@ import java.util.Random; public class Henkilo { private int henkilonTunnusNro = 0; - private String nimi = ""; + private String etunimi = ""; private String sukunimi = ""; private int ika = 0; private int rallienMaara = 0; @@ -46,10 +46,10 @@ public class Henkilo { rallienMaara = r.nextInt(100); voitetutRallit = (rallienMaara - r.nextInt(rallienMaara)); - if(n==0) nimi = "Kalle"; - if(n==1) nimi = "Teemu"; - if(n==2) nimi = "Oskari"; - if(n==3) nimi = "Mikko"; + if(n==0) etunimi = "Kalle"; + if(n==1) etunimi = "Teemu"; + if(n==2) etunimi = "Oskari"; + if(n==3) etunimi = "Mikko"; if(s==0) sukunimi = "Rovanperä"; if(s==1) sukunimi = "Asunmaa"; @@ -70,7 +70,7 @@ public class Henkilo { if(kp==5) kotipaikkakunta = "Rovaniemi"; if(kp==6) kotipaikkakunta = "Keuruu"; - Henkilo henkilo = new Henkilo(henkilonTunnusNro, nimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit); + Henkilo henkilo = new Henkilo(henkilonTunnusNro, etunimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit); henkilo.tulosta(System.out); } @@ -91,7 +91,7 @@ public class Henkilo { /** * @param tunnusNro id - * @param nimi nimi + * @param etunimi nimi * @param sukunimi sukunimi * @param ika ikä * @param kotipaikkakunta mistä kotoisin @@ -99,8 +99,8 @@ public class Henkilo { * @param rallienMaara rallien määrä * @param voitetutRallit voitetut rallit */ - public Henkilo(int tunnusNro, String nimi, String sukunimi, int ika, String kotipaikkakunta, String seura, int rallienMaara, int voitetutRallit) { - this.nimi = nimi; + public Henkilo(int tunnusNro, String etunimi, String sukunimi, int ika, String kotipaikkakunta, String seura, int rallienMaara, int voitetutRallit) { + this.etunimi = etunimi; this.henkilonTunnusNro = tunnusNro; this.sukunimi = sukunimi; this.ika = ika; @@ -114,7 +114,7 @@ public class Henkilo { * @param tulostettava tietovirta mitä tulostetaan */ public void tulosta(PrintStream tulostettava) { - tulostettava.println(String.format("%03d", henkilonTunnusNro, 3) + " " + nimi + " " + sukunimi + ", ikä: " + ika); + tulostettava.println(String.format("%03d", henkilonTunnusNro, 3) + " " + etunimi + " " + sukunimi + ", ikä: " + ika); tulostettava.println("Kotipaikkakunta: " + kotipaikkakunta); tulostettava.println("Seura: " + seura); tulostettava.println("Osallistunut " + rallienMaara + " ralliin"); @@ -127,7 +127,20 @@ public class Henkilo { * @return henkilön nimi */ public String getNimi() { - return this.nimi + " " + this.sukunimi; + return this.etunimi + " " + this.sukunimi; + } + + @Override + public String toString() { + return "" + + getHenkilonTunnusNro() + "|" + + sukunimi + "|" + + etunimi + "|" + + ika + "|" + + kotipaikkakunta + "|" + + seura + "|" + + rallienMaara + "|" + + voitetutRallit + "|"; } /** diff --git a/kerho/src/RalliJava/Henkilot.java b/kerho/src/RalliJava/Henkilot.java new file mode 100644 index 0000000..1471cdc --- /dev/null +++ b/kerho/src/RalliJava/Henkilot.java @@ -0,0 +1,151 @@ +package RalliJava; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.PrintStream; + +//import java.util.ArrayList; +//import java.util.List; + +/** + * @author idamk + * @version 12.2.2025 + * + */ +public class Henkilot { + + private static final int MAX_HENKILOT = 5; + + int lkm = 0; + private Henkilo[] alkiot; + + + /** + * luodaan alustava taulukko + */ + public Henkilot() { + this.alkiot = new Henkilo[MAX_HENKILOT]; + } + + + /** + * @param henkilo lisättävä henkilö + * @throws SailoException säilö + */ + public void lisaa(Henkilo henkilo) throws SailoException { + if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita"); + this.alkiot[this.lkm] = henkilo; + this.lkm++; + } + + + /** + * Tallentaa henkilön tiedot tiedostoon + * @param hakemisto mihin hakemistoon tallentaa + * @throws SailoException jos tallennus epäonnistuu + */ + public void tallenna(String hakemisto) throws SailoException { + File tiedosto = new File(hakemisto + "/nimet.dat"); + try (PrintStream out = new PrintStream(new FileOutputStream(tiedosto,true))){ + // jos asiat menee avauksessa hyvin, lähdetään käymään nimiä läpi + for (int i = 0; i < this.getLkm(); i++) { + Henkilo henkilo = this.anna(i); + out.println(henkilo.toString()); //pyydetään henkilöä muuttumaan merkkijonoksi + } + } catch (FileNotFoundException e) { + throw new SailoException("Tiedosto " + tiedosto.getAbsolutePath()); + } + } + + /** + * @param rallinTunnusNro tarkasteltavan rallin tunnusnumero + * @return listan ilmottautuneista + */ + //public List<Henkilo> annaOsallistujat(int rallinTunnusNro) { + // List<Henkilo> ilmottautuneet = new ArrayList<Henkilo>(); + // return null; + //} + + /** + * Haetaan kaikki henkilön osallistumat rallit. + * Käy rallit läpi ja etsii sieltä ne, + * mihin kysytty henkilö on osallistunut + * @param tunnusNro rallin tunnusnumero + * @return lista ralleista johon haluttu henkilö on osallistunut + */ + /*public List<Ralli> annaRallit(int tunnusNro) { + List<Ralli> loydetyt = new ArrayList<Ralli>(); + // Käy rallit läpi ja etsii sieltä ne, mihin kysytty henkilö on osallistunut + for (Ralli ralli:alkiot) //ITERAATTORI + if(ralli.getHenkilonTunnusNro() == tunnusNro) loydetyt.add(ralli); + return loydetyt; + +*/ + + /** + * @return lkm + */ + public int getLkm() { + return lkm; + } + + + /** + * @param i indeksi + * @return henkilön + * @throws IndexOutOfBoundsException laiton indeksi + */ + public Henkilo anna(int i) throws IndexOutOfBoundsException { + if (i < 0 || this.lkm <= i) + throw new IndexOutOfBoundsException("Laiton indeksi senkin kaulin: " + i); + return alkiot[i]; + } + + + /** + * @param args ei käytössä + */ + public static void main(String[] args) { + Henkilot henkilot = new Henkilot(); + + Henkilo rovis = new Henkilo(); + Henkilo asunmaa = new Henkilo(); + Henkilo elfyn = new Henkilo(); + + rovis.rekisteroi(); + rovis.vastaahlo(); + asunmaa.rekisteroi(); + asunmaa.vastaahlo(); + elfyn.rekisteroi(); + elfyn.vastaahlo(); + + try { + henkilot.lisaa(rovis); + henkilot.lisaa(asunmaa); + henkilot.lisaa(elfyn); + + System.out.println("==================== Testi ======================"); + + for (int i = 0; i < henkilot.getLkm(); i++) { + Henkilo henkilo = henkilot.anna(i); + System.out.println("Henkilo nro: " + i); + henkilo.tulosta(System.out); + } + + } catch (SailoException e) { + System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii + } + + try { + henkilot.tallenna("kerho"); + } catch (SailoException e) { + System.err.println(e.getMessage()); + } + + + } + + + +} diff --git a/src/RalliJava/Ralli.java b/kerho/src/RalliJava/Ralli.java similarity index 89% rename from src/RalliJava/Ralli.java rename to kerho/src/RalliJava/Ralli.java index 80b1fd6..481f082 100644 --- a/src/RalliJava/Ralli.java +++ b/kerho/src/RalliJava/Ralli.java @@ -1,6 +1,7 @@ package RalliJava; import java.io.PrintStream; +//import java.util.List; import java.util.Random; /** @@ -18,18 +19,19 @@ public class Ralli { * Vois kirjottaa luokan CRC-kortin vastuut * */ - private int rallinTunnusNro; - private int henkilonTunnusNro; - private String rallinNimi = ""; - private String sijainti = ""; - private int osallistujienMaara; - private String jarjestaja = ""; - //private String pvm = ""; - private int ilmottautumismaksu = 0; - //private String ilmottautuneet = ""; - //private String nettisivut = ""; - //private String tulokset = ""; + private int rallinTunnusNro; + private int henkilonTunnusNro; + private String rallinNimi = ""; + private String sijainti = ""; + private int osallistujienMaara; + private String jarjestaja = ""; + //private String pvm = ""; + private int ilmottautumismaksu = 0; + //private String nettisivut = ""; + //private String tulokset = ""; + + //private List<Henkilo> ilmottautuneet; private static int seuraavaNro = 0; /** diff --git a/src/RalliJava/Rallit.java b/kerho/src/RalliJava/Rallit.java similarity index 100% rename from src/RalliJava/Rallit.java rename to kerho/src/RalliJava/Rallit.java diff --git a/src/RalliJava/Rekisteri.java b/kerho/src/RalliJava/Rekisteri.java similarity index 85% rename from src/RalliJava/Rekisteri.java rename to kerho/src/RalliJava/Rekisteri.java index 185a45c..5c4e478 100644 --- a/src/RalliJava/Rekisteri.java +++ b/kerho/src/RalliJava/Rekisteri.java @@ -40,6 +40,15 @@ public class Rekisteri { } + /** + * @param rekisterinHakemistonNimi hakemiston nimi + * @throws SailoException jos tallennus ei onnistu + */ + public void tallenna(String rekisterinHakemistonNimi) throws SailoException { + henkilot.tallenna(rekisterinHakemistonNimi); + } + + /** * @param i indeksi * @return henkilön tiedot @@ -57,6 +66,16 @@ public class Rekisteri { } + /** + * Palauttaa tarkasteltavan rallin osallistujalistan, eli ilmottautuneet + * @param ralli ralli jonka osallistujalista halutaan + * @return osallistujalistan + */ + //public List<Henkilo> annaOsallistujat(Ralli ralli) { + // return rallit.annaOsallistujat(ralli.getRallinTunnusNro()); + //} + + /** * @param args ei käytössä * @throws SailoException liikaa diff --git a/src/RalliJava/SailoException.java b/kerho/src/RalliJava/SailoException.java similarity index 100% rename from src/RalliJava/SailoException.java rename to kerho/src/RalliJava/SailoException.java diff --git a/src/application/Main.java b/kerho/src/application/Main.java similarity index 94% rename from src/application/Main.java rename to kerho/src/application/Main.java index ba7e9a1..a528bdd 100644 --- a/src/application/Main.java +++ b/kerho/src/application/Main.java @@ -2,10 +2,10 @@ package application; import RalliJava.Rekisteri; import javafx.application.Application; -import javafx.application.Platform; +//import javafx.application.Platform; import javafx.stage.Stage; import javafx.scene.Scene; -import javafx.scene.layout.BorderPane; +//import javafx.scene.layout.BorderPane; import javafx.scene.layout.Pane; import javafx.fxml.FXMLLoader; diff --git a/src/application/RalliController.java b/kerho/src/application/RalliController.java similarity index 100% rename from src/application/RalliController.java rename to kerho/src/application/RalliController.java diff --git a/bin/application/Sample.fxml b/kerho/src/application/Sample.fxml similarity index 97% rename from bin/application/Sample.fxml rename to kerho/src/application/Sample.fxml index 339c4ff..22d0a5f 100644 --- a/bin/application/Sample.fxml +++ b/kerho/src/application/Sample.fxml @@ -44,8 +44,9 @@ <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> </BorderPane.margin> <children> - <Button mnemonicParsing="false" onAction="#handleUusi" text="Lisää uusi" /> - <Button mnemonicParsing="false" onAction="#handleMuokkaa" text="Muokkaa tietoja" /> + <Button mnemonicParsing="false" onAction="#handleUusiHenkilo" text="Lisää uusi henkilö" /> + <Button mnemonicParsing="false" onAction="#handleUusiRalli" text="Ilmoita henkilö ralliin" /> + <Button mnemonicParsing="false" onAction="#handleMuokkaa" text="Muokkaa henkilötietoja" /> <Button mnemonicParsing="false" onAction="#handlePoistu" text="Takaisin" /> <Button mnemonicParsing="false" onAction="#handlePoistu" text="Poistu" /> </children> diff --git a/src/application/UudenlisaysController.java b/kerho/src/application/UudenlisaysController.java similarity index 100% rename from src/application/UudenlisaysController.java rename to kerho/src/application/UudenlisaysController.java diff --git a/src/application/application.css b/kerho/src/application/application.css similarity index 100% rename from src/application/application.css rename to kerho/src/application/application.css diff --git a/bin/application/uudenlisays.fxml b/kerho/src/application/henkilonLisays.fxml similarity index 66% rename from bin/application/uudenlisays.fxml rename to kerho/src/application/henkilonLisays.fxml index 23ac227..7fcfc85 100644 --- a/bin/application/uudenlisays.fxml +++ b/kerho/src/application/henkilonLisays.fxml @@ -109,63 +109,10 @@ </children> </GridPane> <Label layoutX="150.0" layoutY="276.0" text="Ideointi rallien lisäämiseen vielä kesken..." /> - <Button layoutX="407.0" layoutY="272.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" /> </children> </AnchorPane> </content> </Tab> - <Tab text="Uusi ralli"> - <content> - <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"> - <children> - <GridPane layoutX="46.0" layoutY="33.0"> - <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="123.199951171875" minWidth="10.0" prefWidth="84.0" /> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="151.20001220703125" /> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="134.79998779296875" minWidth="10.0" prefWidth="134.79998779296875" /> - </columnConstraints> - <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints maxHeight="28.79999389648438" minHeight="0.0" prefHeight="28.00000610351563" vgrow="SOMETIMES" /> - <RowConstraints maxHeight="60.80000000000001" minHeight="10.0" prefHeight="32.79999389648438" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - </rowConstraints> - <children> - <Label text="Rallin nimi" GridPane.columnIndex="1" /> - <Label text="Paikkakunta" GridPane.columnIndex="1" GridPane.rowIndex="1" /> - <Label text="Ajankohta" GridPane.rowIndex="2" /> - <TextField GridPane.columnIndex="2" /> - <ChoiceBox prefWidth="150.0" GridPane.columnIndex="2" GridPane.rowIndex="1" /> - <DatePicker GridPane.columnIndex="1" GridPane.rowIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </DatePicker> - <DatePicker prefHeight="26.0" prefWidth="128.0" GridPane.columnIndex="2" GridPane.rowIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </DatePicker> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="3" /> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="4" /> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="5" /> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="6" /> - <Label text="Tuloslista" GridPane.columnIndex="1" GridPane.rowIndex="6" /> - <Label text="Osallistujalista" GridPane.columnIndex="1" GridPane.rowIndex="5" /> - <Label text="Linkki tapahtuman sivuille" GridPane.columnIndex="1" GridPane.rowIndex="4" /> - <Label text="Järjestäjä" GridPane.columnIndex="1" GridPane.rowIndex="3" /> - </children> - <padding> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </padding> - </GridPane> - <Button layoutX="408.0" layoutY="267.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" /> - </children></AnchorPane> - </content> - </Tab> </tabs> </TabPane> </center> @@ -197,6 +144,7 @@ </BorderPane.margin> <children> <Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" /> + <Button mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" /> </children> </HBox> </bottom> diff --git a/src/application/muokkausRalli.fxml b/kerho/src/application/muokkausRalli.fxml similarity index 100% rename from src/application/muokkausRalli.fxml rename to kerho/src/application/muokkausRalli.fxml diff --git a/src/application/osallistujaTuloslista.fxml b/kerho/src/application/osallistujaTuloslista.fxml similarity index 100% rename from src/application/osallistujaTuloslista.fxml rename to kerho/src/application/osallistujaTuloslista.fxml diff --git a/kerho/src/application/rallinLisays.fxml b/kerho/src/application/rallinLisays.fxml new file mode 100644 index 0000000..c650f23 --- /dev/null +++ b/kerho/src/application/rallinLisays.fxml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.ChoiceBox?> +<?import javafx.scene.control.DatePicker?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.control.Menu?> +<?import javafx.scene.control.MenuBar?> +<?import javafx.scene.control.MenuItem?> +<?import javafx.scene.control.Tab?> +<?import javafx.scene.control.TabPane?> +<?import javafx.scene.control.TextField?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.BorderPane?> +<?import javafx.scene.layout.ColumnConstraints?> +<?import javafx.scene.layout.GridPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.RowConstraints?> + +<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="402.0" prefWidth="483.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fi.jyu.mit.fxgui.ModalController"> + <center> + <TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER"> + <tabs> + <Tab text="Uusi ralli"> + <content> + <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"> + <children> + <GridPane layoutX="46.0" layoutY="33.0"> + <columnConstraints> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="123.199951171875" minWidth="10.0" prefWidth="84.0" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="151.20001220703125" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="134.79998779296875" minWidth="10.0" prefWidth="134.79998779296875" /> + </columnConstraints> + <rowConstraints> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints maxHeight="28.79999389648438" minHeight="0.0" prefHeight="28.00000610351563" vgrow="SOMETIMES" /> + <RowConstraints maxHeight="60.80000000000001" minHeight="10.0" prefHeight="32.79999389648438" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + </rowConstraints> + <children> + <Label text="Rallin nimi" GridPane.columnIndex="1" /> + <Label text="Paikkakunta" GridPane.columnIndex="1" GridPane.rowIndex="1" /> + <Label text="Ajankohta" GridPane.rowIndex="2" /> + <TextField GridPane.columnIndex="2" /> + <ChoiceBox prefWidth="150.0" GridPane.columnIndex="2" GridPane.rowIndex="1" /> + <DatePicker GridPane.columnIndex="1" GridPane.rowIndex="2"> + <GridPane.margin> + <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> + </GridPane.margin> + </DatePicker> + <DatePicker prefHeight="26.0" prefWidth="128.0" GridPane.columnIndex="2" GridPane.rowIndex="2"> + <GridPane.margin> + <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> + </GridPane.margin> + </DatePicker> + <TextField GridPane.columnIndex="2" GridPane.rowIndex="3" /> + <TextField GridPane.columnIndex="2" GridPane.rowIndex="4" /> + <TextField GridPane.columnIndex="2" GridPane.rowIndex="5" /> + <TextField GridPane.columnIndex="2" GridPane.rowIndex="6" /> + <Label text="Tuloslista" GridPane.columnIndex="1" GridPane.rowIndex="6" /> + <Label text="Osallistujalista" GridPane.columnIndex="1" GridPane.rowIndex="5" /> + <Label text="Linkki tapahtuman sivuille" GridPane.columnIndex="1" GridPane.rowIndex="4" /> + <Label text="Järjestäjä" GridPane.columnIndex="1" GridPane.rowIndex="3" /> + </children> + <padding> + <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> + </padding> + </GridPane> + </children></AnchorPane> + </content> + </Tab> + </tabs> + </TabPane> + </center> + <top> + <MenuBar BorderPane.alignment="CENTER"> + <menus> + <Menu mnemonicParsing="false" text="Tiedosto"> + <items> + <MenuItem mnemonicParsing="false" text="Close" /> + </items> + </Menu> + <Menu mnemonicParsing="false" text="Muokkaa"> + <items> + <MenuItem mnemonicParsing="false" text="Delete" /> + </items> + </Menu> + <Menu mnemonicParsing="false" text="Apua"> + <items> + <MenuItem mnemonicParsing="false" text="About" /> + </items> + </Menu> + </menus> + </MenuBar> + </top> + <bottom> + <HBox spacing="10.0" BorderPane.alignment="CENTER"> + <BorderPane.margin> + <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> + </BorderPane.margin> + <children> + <Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" /> + <Button mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" /> + </children> + </HBox> + </bottom> +</BorderPane> diff --git a/src/RalliJava/Henkilot.java b/src/RalliJava/Henkilot.java deleted file mode 100644 index 9a872ba..0000000 --- a/src/RalliJava/Henkilot.java +++ /dev/null @@ -1,82 +0,0 @@ -package RalliJava; - -/** - * @author idamk - * @version 12.2.2025 - * - */ -public class Henkilot { - - private static final int MAX_HENKILOT = 5; - - int lkm = 0; - private Henkilo[] alkiot; - - - /** - * luodaan alustava taulukko - */ - public Henkilot() { - this.alkiot = new Henkilo[MAX_HENKILOT]; - } - - - /** - * @param henkilo lisättävä henkilö - * @throws SailoException säilö - */ - public void lisaa(Henkilo henkilo) throws SailoException { - if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita"); - this.alkiot[this.lkm] = henkilo; - this.lkm++; - } - - - /** - * @return lkm - */ - public int getLkm() { - return lkm; - } - - - /** - * @param i indeksi - * @return henkilön - * @throws IndexOutOfBoundsException laiton indeksi - */ - public Henkilo anna(int i) throws IndexOutOfBoundsException { - if (i < 0 || this.lkm <= i) - throw new IndexOutOfBoundsException("Laiton indeksi senkin kaulin: " + i); - return alkiot[i]; - } - - - /** - * @param args ei käytössä - */ - public static void main(String[] args) { - Henkilot henkilot = new Henkilot(); - - try { - Henkilo rovis = new Henkilo(); - Henkilo asunmaa = new Henkilo(); - Henkilo elfyn = new Henkilo(); - rovis.rekisteroi(); - rovis.vastaahlo(); - asunmaa.rekisteroi(); - asunmaa.vastaahlo(); - elfyn.rekisteroi(); - elfyn.vastaahlo(); - - henkilot.lisaa(rovis); - henkilot.lisaa(asunmaa); - henkilot.lisaa(elfyn); - } catch (SailoException e) { - System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii - } - - - } - -} diff --git a/src/application/uudenlisays.fxml b/src/application/uudenlisays.fxml deleted file mode 100644 index 23ac227..0000000 --- a/src/application/uudenlisays.fxml +++ /dev/null @@ -1,203 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.CheckBox?> -<?import javafx.scene.control.ChoiceBox?> -<?import javafx.scene.control.DatePicker?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.Menu?> -<?import javafx.scene.control.MenuBar?> -<?import javafx.scene.control.MenuItem?> -<?import javafx.scene.control.Tab?> -<?import javafx.scene.control.TabPane?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.BorderPane?> -<?import javafx.scene.layout.ColumnConstraints?> -<?import javafx.scene.layout.GridPane?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.RowConstraints?> - -<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="402.0" prefWidth="483.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fi.jyu.mit.fxgui.ModalController"> - <center> - <TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER"> - <tabs> - <Tab text="Uusi henkilö"> - <content> - <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"> - <children> - <GridPane layoutX="206.0" layoutY="29.0"> - <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - </columnConstraints> - <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - </rowConstraints> - <children> - <Label text="Nimi" /> - <Label text="Syntmäpäivä" GridPane.rowIndex="1" /> - <Label text="Seura" GridPane.rowIndex="3" /> - <TextField fx:id="henkilonNimi" GridPane.columnIndex="1" /> - <DatePicker fx:id="henkilonSyntymaAika" GridPane.columnIndex="1" GridPane.rowIndex="1" /> - <ChoiceBox fx:id="henkilonSeura" prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="3" /> - <CheckBox fx:id="onKartturi" mnemonicParsing="false" text="Kartturi" GridPane.columnIndex="1" GridPane.rowIndex="2" /> - <CheckBox fx:id="onKuljettaja" mnemonicParsing="false" text="Kuljettaja" GridPane.rowIndex="2" /> - </children> - </GridPane> - <GridPane layoutX="135.0" layoutY="164.0"> - <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="124.79998779296875" minWidth="10.0" prefWidth="124.79998779296875" /> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="124.00000000000001" minWidth="10.0" prefWidth="103.19995117187501" /> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="95.20001220703125" minWidth="10.0" prefWidth="72.800048828125" /> - </columnConstraints> - <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - </rowConstraints> - <children> - <Label contentDisplay="BOTTOM" text="Ralli"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </Label> - <Label text="Auto" GridPane.columnIndex="1"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </Label> - <Label text="Sijoitus" GridPane.columnIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </Label> - <TextField GridPane.columnIndex="1" GridPane.rowIndex="1"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </TextField> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="1"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </TextField> - <TextField GridPane.columnIndex="1" GridPane.rowIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </TextField> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </TextField> - <ChoiceBox prefWidth="150.0" GridPane.rowIndex="1"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </ChoiceBox> - <ChoiceBox prefWidth="150.0" GridPane.rowIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </ChoiceBox> - </children> - </GridPane> - <Label layoutX="150.0" layoutY="276.0" text="Ideointi rallien lisäämiseen vielä kesken..." /> - <Button layoutX="407.0" layoutY="272.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" /> - </children> - </AnchorPane> - </content> - </Tab> - <Tab text="Uusi ralli"> - <content> - <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"> - <children> - <GridPane layoutX="46.0" layoutY="33.0"> - <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="123.199951171875" minWidth="10.0" prefWidth="84.0" /> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="151.20001220703125" /> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="134.79998779296875" minWidth="10.0" prefWidth="134.79998779296875" /> - </columnConstraints> - <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints maxHeight="28.79999389648438" minHeight="0.0" prefHeight="28.00000610351563" vgrow="SOMETIMES" /> - <RowConstraints maxHeight="60.80000000000001" minHeight="10.0" prefHeight="32.79999389648438" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - </rowConstraints> - <children> - <Label text="Rallin nimi" GridPane.columnIndex="1" /> - <Label text="Paikkakunta" GridPane.columnIndex="1" GridPane.rowIndex="1" /> - <Label text="Ajankohta" GridPane.rowIndex="2" /> - <TextField GridPane.columnIndex="2" /> - <ChoiceBox prefWidth="150.0" GridPane.columnIndex="2" GridPane.rowIndex="1" /> - <DatePicker GridPane.columnIndex="1" GridPane.rowIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </DatePicker> - <DatePicker prefHeight="26.0" prefWidth="128.0" GridPane.columnIndex="2" GridPane.rowIndex="2"> - <GridPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </GridPane.margin> - </DatePicker> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="3" /> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="4" /> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="5" /> - <TextField GridPane.columnIndex="2" GridPane.rowIndex="6" /> - <Label text="Tuloslista" GridPane.columnIndex="1" GridPane.rowIndex="6" /> - <Label text="Osallistujalista" GridPane.columnIndex="1" GridPane.rowIndex="5" /> - <Label text="Linkki tapahtuman sivuille" GridPane.columnIndex="1" GridPane.rowIndex="4" /> - <Label text="Järjestäjä" GridPane.columnIndex="1" GridPane.rowIndex="3" /> - </children> - <padding> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </padding> - </GridPane> - <Button layoutX="408.0" layoutY="267.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" /> - </children></AnchorPane> - </content> - </Tab> - </tabs> - </TabPane> - </center> - <top> - <MenuBar BorderPane.alignment="CENTER"> - <menus> - <Menu mnemonicParsing="false" text="Tiedosto"> - <items> - <MenuItem mnemonicParsing="false" text="Close" /> - </items> - </Menu> - <Menu mnemonicParsing="false" text="Muokkaa"> - <items> - <MenuItem mnemonicParsing="false" text="Delete" /> - </items> - </Menu> - <Menu mnemonicParsing="false" text="Apua"> - <items> - <MenuItem mnemonicParsing="false" text="About" /> - </items> - </Menu> - </menus> - </MenuBar> - </top> - <bottom> - <HBox spacing="10.0" BorderPane.alignment="CENTER"> - <BorderPane.margin> - <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> - </BorderPane.margin> - <children> - <Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" /> - </children> - </HBox> - </bottom> -</BorderPane> -- GitLab