From 1d16eeacb2a19da3dc10bd621b250c2cbbd09e03 Mon Sep 17 00:00:00 2001 From: user Date: Sun, 12 Jul 2026 16:06:18 +0400 Subject: [PATCH] Initial commit --- .gitignore | 66 ++ Database.accdb | Bin 0 -> 815104 bytes Database.sln | 31 + Database/App.config | 6 + Database/Database.csproj | 112 +++ Database/FishFood.cs | 29 + Database/FishRations.cs | 35 + Database/FishTypes.cs | 29 + Database/Fishes.cs | 51 + Database/Locations.cs | 27 + Database/MainForm.Designer.cs | 1066 +++++++++++++++++++++ Database/MainForm.cs | 181 ++++ Database/MainForm.resx | 120 +++ Database/OleDBDataGridViewHandler.cs | 56 ++ Database/OleDBHandler.cs | 127 +++ Database/PlantTypes.cs | 29 + Database/Plants.cs | 50 + Database/Program.cs | 24 + Database/Properties/AssemblyInfo.cs | 36 + Database/Properties/Resources.Designer.cs | 70 ++ Database/Properties/Resources.resx | 117 +++ Database/Properties/Settings.Designer.cs | 29 + Database/Properties/Settings.settings | 7 + 23 files changed, 2298 insertions(+) create mode 100644 .gitignore create mode 100644 Database.accdb create mode 100644 Database.sln create mode 100644 Database/App.config create mode 100644 Database/Database.csproj create mode 100644 Database/FishFood.cs create mode 100644 Database/FishRations.cs create mode 100644 Database/FishTypes.cs create mode 100644 Database/Fishes.cs create mode 100644 Database/Locations.cs create mode 100644 Database/MainForm.Designer.cs create mode 100644 Database/MainForm.cs create mode 100644 Database/MainForm.resx create mode 100644 Database/OleDBDataGridViewHandler.cs create mode 100644 Database/OleDBHandler.cs create mode 100644 Database/PlantTypes.cs create mode 100644 Database/Plants.cs create mode 100644 Database/Program.cs create mode 100644 Database/Properties/AssemblyInfo.cs create mode 100644 Database/Properties/Resources.Designer.cs create mode 100644 Database/Properties/Resources.resx create mode 100644 Database/Properties/Settings.Designer.cs create mode 100644 Database/Properties/Settings.settings diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9a01d25 --- /dev/null +++ b/.gitignore @@ -0,0 +1,66 @@ +# Visual Studio +.vs/ +*.suo +*.user +*.userosscache +*.sln.docstates + +# Build results +[Bb]in/ +[Oo]bj/ +Debug/ +Release/ +x64/ +x86/ + +# Visual Studio cache +.vscode/ +.idea/ + +# ReSharper +_ReSharper*/ +*.ReSharper* + +# Logs +*.log + +# Temporary files +*.tmp +*.temp +*.cache + +# Generated files +*.pdb +*.dll +*.exe + +# Test results +TestResults/ +*.trx + +# NuGet packages +packages/ +*.nupkg + +# MS Access temporary files +*.laccdb +*.ldb + +# User-specific settings +*.user +*.suo + +# Database backups +*.bak +*.backup + +# OS files +.DS_Store +Thumbs.db + +# Publish files +Publish/ +*.publish.xml + +# Keep database file +!Database.accdb diff --git a/Database.accdb b/Database.accdb new file mode 100644 index 0000000000000000000000000000000000000000..43319ac6ddec15a1c91cf174c9ef4c8927f83765 GIT binary patch literal 815104 zcmeF42VfM{*2nMcZhEpw5Rp!(BFzvWbW8_A3Ly}PAdm`yG?UOoC4v?7*?YlWvGTBY z1-t08e>N=G6&34y%6|WIXJ=bN#{l}D&1BBpa_*Vmo!On+m7!FALs4~UQC(?Va%y^9 zT8gqMrPfv3i)V*DIpxb+=F}w}rLH(}^*OFnE*rRh$%EgdQD6}mKW&37N(Jz(x3sTU2pdr;M%OQyeY#PNNu+jRV; zp|0mJGa1(`ZWHsVZ8qbB2(hO< zVi%&#JyA}uS#<)|F+WyCs94=KK)MGg1U0bBHo`pk$&sQfOxfWW2FE7wDm_((HVYs7>39FiAYvbAbt>UTs?C zHrLDmFA|4kZlvUakE)e`tyM*+AU_Yg+Gf}#4Z9}|^U5U~oGMk-sA_!5REcU(F)B?J z;aH@KvDd@3wcDi(A?t81zP_$gRIMs?yN0U_RS9_xVzz-?qhnOyyjtbJy$UfMYCOU_ zRF+zZ)a8G=S`3|a@Q=~w*@#!F7C=*(iqtL>;ah`rLOoi-Rjyj3t*%3?iHIw)>WT={~mLP>PwE}kmDg$lG!2RlStjphoUQt;Vsd0dxcO%p_wStM2{#|Eop6hpI7kjv18 zySXT^)u{>;;H1DR1;!W@42#t~NK%}Y!eFq<$1zP8?2xK1l}Y(V|IKx|!YoS&e!Et~Vv-i`)Lan@ewG+^kC16BZ~Y!csFXgAxKrOH6J`3D7b29S8VRXP}oeQOMY z&?@b2+V}SeK|tMz?rq05`xQvVfc9{BIs9rp#dMMS13j^wAtJ( zjnuWek+~j?+ZDP&In>kK9oUc^?rEqVh#Cc}X*Qvm+6igMu0t(_)ML1tk$qa9QRk3n zRZmDgg#*kZHFCq<^z55yJ~b3NAG$TE3u$^~zzv;t?5w@eVEK;(NPq-LfCNZ@1W14c zNPqh3%WenAHBz=C~5U;Hp}teYexA$2<3n2&@VfB6e~kl9H8j#4W*0n)~Tgx zyZr*Rhs?X+Tl|;q_}ar;%C~x}yNmx)L14ykm+}XAivN}>Z}DH(3rNj@Ukt0lAh=1T zgj%S~ZkW(A- zQuhN^WHRD*7M*4;e z=wTs#lGm~$HsWJ*NM8C^Rt5U)4(nZ~XeO@{=RXo40TLhq5+DH*AOR8}0TMX)2pGms z(&Jrkt@QkV1Earj-sCKHc5=QQb$(P%R9Mv0k;@`SME)FcSH%2?UIC5%R$LxQfCNZ@ z1W14cNPq-L;O|BtuuW`FuCH-VBJFCNxLpmnqj38~$&M2EtNj|i2^`X>4)dPvj`sCV`;RAJHf-)L2HiO7jkKFe97bYjfCjHFc%ZQs-SJhNQb{7k$ie&`gcBw-ljP!5 zquHu!lW=;PGwq&)lSb?kM?$#;i4M&=t{fY&>o#FI!ERVCaX2?q&`CDxpf-1^S_A$i zNf>x3hnWNaAg~O3(6Y?j*@eZzeWi2R+2Wd;S(TZYot-y-etG7Uy!ql4+sf;e zl{w$-Xqb-qr4_TyP=}ZfvrBVpX1c?)Hk~T+W@c6umKM*ST3Bv|wOJnJr4?1C)1ju* z{OpRta<@|(x6{J;(4Z|j%yg;B%(9YD;$kez?`t2ImoXx7RPMNx%(SF2S&13r5_2>2 z$Bh{_CNVKBdsNDZzIM4bt){&@QsMlmeeL23M&BK# z>26ERvz&4)5Gs8jQvRi&j_)AO?3H+knKflS}RTvJIGufK0J_YEeu%iNkgk3H@?QJkAT zbs=6=6?yYZYbx-V>uZhkdeqO)#WiM6&GWnA0Hqw+rvrBl2s|~jcuHPX>5RN$-%#EB zL-`ux8?3t-tbAr>aaCWt_o1`Sw{GAD-MSZHNwITQvtkeXX@ob_+KT!5% zp6B03hrV-ty!5r3*QlQhyS~Qa%;xSn$yZ+=Gy8g&m*xx6N2$9r9?a)P0wh2JBtQZr zKmt1?;4rcxby2#RP&P+sOk7eU=0e|Hp&4a#+Ajp8{ErQVd;G`CZR{Z;Aje}{i-5lS zv4@I)`jXf-B4F)+*uz9X-}~6MB48juY&#K9-4okG1dRB=J2C`x23Z*<0>+T63>N{f zp(`Urz-WS%Q6fY`aEgFxnU&GY8qL%lB1q~%B1r1NB1q~XB47kZY^VsRzl{wOp&f*9 z5jsGK5TO%O|kPV@$2ooW66Coc$cMWy#Ry@AlOB? z1cHWe6$B08dI)C04$*amhh&qkmk?04W#=f_VsXNa1W14cNPq-LfCNZ@1W14ccAtP@ zbV32m-0bS1=!MY(J?EA?k0d|>BtQZrKmsH{0wh2JBtQZr@DC+`2Frc9Nv}iqmShRL zdraCRB@W~A(CsxS?sl{Po^=-3XR&sd*gqk>G`wRg&;tQPFf13FCD=v4%~KF$3Bi`2 z8~Md6R9w&;U7%b0MbNGNB1BkTy4fH1QbDY^h@d+ih@d+ih@d+i;NdB-Ivo_~P6y(m zI~|CiI~|}SK!NUbAVPalC_)EI=qLhuC=}@a2Io2UP+daYzZkMpyNitXiFGl2}g<01zsa8VWcID5}_-+hFZcfOBgOfcX$o9gdvuY zC_+zoWmv*kOBg2tx`Y%Aw1fmp7$gEZi4^Fr93tqh93u1dt%&>dvZA!VBG&muxA zQ7FP8BA|=PwAPkzs3o)!VIsT^vxK&m&`tz&W0|J=#fYH$#fYH$#lUx3cL^gx4@>AN z!V0)peO{(%P~xINq4Uc$eP@cG?@ST&J$5z(eUFKt?=cZ{UZ8`_G@TbB=)4d?XD+(T zOw*Ywg3eqK^eur-G}H7gA%eaoM9??V^$_%pB!a$?L>R3{9w1Z9(HjuV5gHK8p%@VK zcnSH6)1xrt`O*VlM9>3eL@-AHK!|a7&nf6?3EeEAyW&OyBtQZrKmsH{0tXHO!#LZV z_Z=n$x!eC`{=WmqLRvxsBtQZrKmsH{0wh2JBtQZr@Q)*ahB0pYmVm>Eb2|2|N@^nk z5+DH*AOR8}0TLhq5+DH*AOR9MzzDGY{{YJnnnMC4KmsH{0wh2JBtQZrKmsHH0zO0B z_n1fH9>?^FnB*hx0}+D^_kP`~NPq-LfCNZ@ z1W14cNPq-(kATCtWC!K{Bq)nfHXM>r53nz4U!ag%3liATg7*GJ|G>qqQMmUmXYH;H zFc%U>0l(Q5s;vUMUalJDeV@WVOYAL}=S+$ONPq-LfCNZ@1W14cNPq;IBj7MD-hTPt zhC+Xw{^&OUJ?dc4T%vSqF#c>`rpo3&KT!IQAbDp z9(i(Pr^x#w#zwpuer$Mf_%&hiVXuX*3>_W%eaLko(?Wg?z9={>_~xJ?L9aVX9Dmra zvv;%KX&Yg?!MNdxamH4)^>MfAy*k9I(-0rU$Y?{2@A=L($A7musj|d8isEjLc*j7; zNXIZohDa*&=mgdD6R+a1(%VXPhKtRtYbKQvauA_5>>BqRFSGuWjHTV zwNN@tHT@)Nr7lt0=ux`CW-5KLXL8&3p&TBnTvb5jTr~?)4L+q%cz%dVvfV7cQoSOd z!G50vQ+X1UV-Q9omYa$WRkgO0*C(v{B*{8TWM7LHVvVmNRSmnxsyZaJ0Jf*Xr2#H; za9#&P%3#XQ;?%>y#j5FNq4$chKA0Qh`b8t36{G$jk$6)?`kTMM(QVPNLb(^S(>fj3dCVCGJA+I%yye;vF1L{ouWXv{(4lacIv9IKlo zS%CEs13#0!Nn$-Ucam088{F61+;s}<5+qv&>@~Q7YH`(N04Zmc$d0OJ3@F9@5cnzf z8ZgddK;o@t?*HGz<}n{dvHv>PD zya|qMlHl*@H+CD0>)VwCC4n?tS>Pwdn*dh&bAz-0VqVdIcO!x3p2y6i1MfgN_qhwP z?w~u#HjkP~W`P!B*Cza&bwFEG# zt`VA|?dqa0%`32uW&-jPV}2)Q9z8%c{q*y~zy!T+RkJ=ZRar+b&u!WB1#{2CVFKJ`8-@|!6SiCCGWe~SJ8kMSx$ z94cTb-bI2|o61MsU>>msYoqmL?El?A88=Za)Xzeq4LWi8g^-tvYMcdrk(uZ6w(^*~ zSoCa?V6Z#kT}f~<5?PEy#x?u#BqD26`d`)VBqGmY32s4oU@GzA)ZE9DRM)*qYAhap z`PtdY^w$*Hb{=Hkm$-V|9?g9`3COr=|7WVX1h)5HT(2ffYfgQNz5-q3aO_e7dANn;$I^W7 zpD@k;C(%6fDaYXVVHd1U#*cbBs85*Iw4^032m(Rdh+l|ZQ0M=Cw^JLTGe+JHY@YAn zpv+_@~{PXK#^+gSMIWk^sTh3w`?XqD7^yQtlw{66BEtNPq-L zfCNZ@1W14cNPq-LVAlw6{{LO$#84za0wh2JBtQZrKmsH{0wh2JElD70UnCZ{FOt=C@;`=;v;2Pm<_%3E0TLhq5+DH*AOR8}0TLjAmL$OPe@oJC z`Lv|`kBPll{%?8oOpydgfCNZ@1W14cNPq-LfCLUG0yg73nMe@R8=JGdS;kot`N1Pr58m;WVwn|dgEq33LWS;TZnfCNZ@1W14cNPq-LfCNZ@1W14c_BDY$ZU1kN zMt9pLvxeKmsH{0wh2JBtQZrKmsH{0{?6Rd)ofr8SVergW3N7&%S?n^&~(7 zBtQZrKmsH{0wh2JBtQZO2LZPK9~}8aD@lL^NPq-LfCNZ@1W14cNPq-LU~dTQY5RX1 z+W)bKG~fOo%JKh-8wrpA36KB@kN^pg011!)36KB@95@8n{(s=)1uY=~5+DH*AOR8} z0TLhq5+DH*Ac4P%z@E1McSHL>_UPu@|6|zx|5s%g^^yPykN^pg011!)36KB@kN^pg zz#b4_`~Mz5V-yk~0TLhq5+DH*AOR8}0TLhq5;({R>_+>)p$zZE^+5YS_84#be=B&} z+yTPa{_jOai3CW11W14cNPq-LfCNZ@1W14c_B#Q#|L^xKpaCR60wh2JBtQZrKmsH{ z0wh2JB=DCL*wgm^UTFWv9`0@b4|90i|F;?8sz4Q~O0__hDVOUnzYHco0wh2JBtQZr zKmsH{0wh2JBtQZrumb{Y|K9-|dXWGLkN^pg011!)36KB@kN^pgz~6*`&A8Ypmr{hW z{ob~GH14~v&xI`la!#;vs9?7v4!scsdxXTXe6z96f zfH{?bH-=K%j8KW;2#BFns2Rhi=N9nBi27=q5$QG9>mdfjs0>ws&Ie^G4V@4gu($HK zWWc>h%~AC}p>p6-h0yIip(Z1~xa8~DRjSq}^klUJ=Vi+22|YzkQdxlD0FfZ<=m>%T zcI@o>AT+p<011!)36KB@kN^pg011!)3G8;YW?4omfP9uU*KF&tLsfuMj63hQItod={-gKy7;Gaqp$9)i9L z<`yg=)K{M%aW%`+pJ4y=FzBJO(Ia6A`YudD|ATr}gXtCOREd_owyg*eiw&3S0+(xz z%XOv872~cNka((M^MY~*21taJBBh1__|66jp1Xk`ic8PX{%XOB^)yL%ucDYhr zuE8!>YnSVb5X2dPkgv}EE#eGMoDhky$mP1;<+{Y>8t-z|xLoU9uBk59N|$SFDB>K6 zu-krm^>Q5xArhT z36KB@v^W9j4{{m$GcBHZR>6|Nt-ovEdHOXQs{6f`kWl{HI}$!`1cfDX-&qWWu@a4>#mTo-Z(XEeuxOL;NSNytku01PrD&#<%Zw7y|(tNPYU{UIc!n>H8riiYCq-Bv!4HX@U*AqzuV=k zHEp)c%TM|$;m8h~W|jWf^Vs2&=b!ic9TR_EI`Z?iE9R`46Sw+bPycw%ZD)V{&HwUZ zx_)^>;^uzu^{IOCzXe+xI(8i}?bSOr-dwVJ<43E$TKd69W6q2^^@DT&JmE(BpMBc) zJ?^cXIV*qK(D|AVe|hxf`~D~`J8|>rzn!?~p7&n8`R8XZ`u>TS*Sg+w^|Y%ilb4@b zIWu(j%#NQN7oKIm^OZ9nioSd3-5HFSap!K2y*lyR1y@E- zu6Szp5$FD%Uc4qzdNVDmNc&&;`A<9?F?mVtNiPq2;P6pbME5%D@|XI&ab@rkGg6N` zdT>yW*7+BFQF7FY2}35#&5_-BBcT{1d$d~kKm zxx?4r6EXGZRx7WZFg7PL=Icez{L)r>Gu?N7@<$DA{+vJT#He#_TYK8tZyqa49h*D$ zg0)-j3>*G`bDqsPwf2^mPW#l+Gpk$m;4|iT4SVFm>~~ev!{6WV-A$?Q{QHOXr_?@u zTj8UxMxJo>y4Ks`$Y#+n7?7>;PgimUp^!5^vB*hcJbBUf7JNJ8JC?Io?3g;oY%vK z&ba4|3umnB`hLv!uc!33Kk(|nQ?9AV{_dhrRmu6w5?}0f>+&x&E$#!X+97l!xmlCgf+AtOH=*!H~e6}Og851r7h z=Le&l$2^=mJ^rPUq3hed_}?WD-S*zF#BTE$GlIxc9_@`sBae{z*A_|T`v zZ|pPj;T6W(;;-heNd4sg+IByL&g$n}J~`&vjL*9D8NDdykp>#mOCRol&>!r*Wn4<~=^&h>Gp9 zwrtJE>u!H6_R!;<=WgkG&+$DT`FHIz14n!lx!|_VzkD|{BhwW(dRWfAM+CXrUbQUp z?3K^FKIG$L2lu?U?aZYw{`y?y(yVWCf6DzT^V}0A)zo}6|VEZLHN z|L+YCeE-EqokoQZ9(eJ(kMB)*XU3YlpP78;f_YW{wtc*&XzpWO>|=hm-GAAPyGxI} zz5T1l{rJG;k!#OuzxBC|{ZcwiK5N{g5#!$N(Z1dLZypwUYKQmpXKwmB?5+ueE}Ope z>Q8_FVerg9-o7sMhd+MKu8zGs`NEsJcQR@hKesfve}(;ob2ooonrspWm8w zqQmj)=+`pyPP}RBD{qhLzV7&2A|JbL-b?5HzV><}|Id#K64qo)TE6AC^EZEX+UKP| zj~beN;rI^IZ=Ck?;!AG%GV!(H{WeCtb-_KaUH;5b1$C#Wn)~v{ZCjgu<%1(Hf35!T z#%JiQTzvQIb zM+|@F>PNqBcsF^)S7)vsde@^L{@niF<0s++S<&2PV@ z=Nsko;?5}TwfVF6de8eavE7!_)@|w2Vc4mK57rc(c0#|(*Ustp#CcyXxbES>TaS;r z`}Naqz50#OH+;Wv?&D94Y+n#nzG3ZUZ>P_E_1Bm&vHcEj|K^ZKdQ^8z?OJ%)S9AL& zuleMUS-y{rRhx56!9k{Fp7H{`hR{_yX4fqeXF(w&pcs`y6A%T4}6sKU}okAx1Dim zKUeAPp^tw1{ST7|hE4r%x3mq{oIYsQBa@HLd_80FbN@LnZ(jTZ$3HeS?xzXEulwzu z#6Jf8r(N68HLgoveb=>e+X-h4EgSb_Y+ljkhbq$6uDa;5=?~PaO((x`>vcJopSj-t zTmDt|uL{06#F04r;;o}bb-4NS%0Fg}3YlB~+b17JJ=NH6Ky~c8{_{ru@Y3sHw~eV9 zeo^P?+veRk{Lj1Aj(+FxiBJ7-)bI-(kAGWy=fsi6UVcZPcj8(PX?Xd=?8>+iZEx?> zbEsp@%wL`xzW&^6j;#E@UhSU0bihmJIOm?&Vf<|;4mmRWy$ips`18xM{DjL=FPOUg zviGLE@^r$a>{eZKY$t6h+Bz(M!mYzz?v{PtD_^diTrn}Zq+8qR?<`$%!3~F0uPPZn zqxG?yvp1bO>bV~-n)+nKIp@ChblA69SO0IqInTWOR=0asu1mh-`WxGPwC1OvHySTH z{iIutxp-to&sU4KJTd3qs--`_Q~bOAv3X}d_mVSx=J5U>Je~c#xS4!+X4bZ;v@6{&?ZLGp1LpxxG{F>KT_!UVGP_VV@N`zx;et=;rH> zxo6=0zx0^&L&i<7<20v-(3@U{%EUf-yNEh`^H`Yx3?W8|{kA9~9726-L8SU;l|I^>PExapv&CHokoi*c( zyS@yuAKE=Dwq~R4&?(p4c-#EPGmj{^wD&V_4!-Zk3$ntuob}qEAMd!~$u*x}y!yB6 z7cGAM&JDL*deWJ-=RcqGhV$)VM?T&Ds6KhK-irwya>&K!=Kj37@$1nWqSG$la%w@J z&FiN>I{Lz?i*LE9B5BUyai4x!9-R7p#N3GUzW%OvQtx+qobcGf-0^KsJ8yK@gWF#F z>AVk1d#qYqJ@vyY=4RYtY@KlVh7B(lKK|IFFF)Qp>bETy{dUw3AuEobxasP#e?$#G z)m3|DNSDq(&3LTq)4x5|>FwkjRs?@Bbi=mmd$a8zR-dk4l?1yUci_1G3#`)1lxZl$abzQVu>n7gy?bb?D{h92i!y5Ni$Qz*UA` z#9$#gS!S*bOUX6p5TO{Du>|qT^g??!Sv0Q*OUYS(m6jkb4qzRu?GIAkh4zA!p`+QX zpt5$J^;Z;xI78gme3CxOf_{kOkfc1}Aeg5TIT&#gby$Zo<9PE4&H;<;iJ#mP`o8e` z>G)H38x!{>&o@xKgyBp5iFn&X; z4I9^=vwrOQZBIY*^vO@BKmAAQ+SKDyho}BGWmm6<;Yi>wC$LPZUlw=UvNRx;`d@;jC=uOy1_UTNJy6jA zC`#5-iPo!nx56~t*QE&kTTB+sDLP)M#_57Gw8T92M__+DEDp_~ToM>vrl#93*}RO}oj?n?h?JrQkBP+k$Js0S472}(TRSu5`b%8u*IWA`R3c7zf) zwHa;m9p~OZT1ak0Gm7%}atskakO%rGfMQwZ%kW?Ho z*(x7>66?|1u~;0?sWMIf@>t*Z5pa_peG~Ph(Zis@Cy8Ez&1g4BF=zGpO$~s@;@ph7q`N8vb$J7$s3f7(1%)3fc71C^& zsumzx1FWc0W3@F4pvimHT?VtEeqP1g(XI`8ZvByhZv`&0~<_oTMl zi()-%64<)Ii}7Mp4|ra4cj>yreN@QfS)x_c$}zW{>azQNuB#HnFai*fRKz*Mk=P{mspaF`E9$Md&as7 z3AigsNKqyi2}pR^<+mcmACX}^&J!NoudTL6>3EiT?bBe0UMt4gq zYA7l$sxO1XxU$OH)SBvsvc(OeC>~A)Wp(uxHPxv#RkcM86~&chgAzt}8#H`SLPA1( zyaY(i9y_{Q;)_L>DcSc^`sstx2PP&C8!|X;*l^z+_N7fs8Qm>4F?I0ZLCMLfLlV=I zhbLy3JAB8cj_#H`JUJyHbhE@m_mfiHu3ld=p80<;Ugl3w-JxLsG<8?Qv8UoidWQQKc@EwdWQbK9^jElF zJZ2z-yna^Ue|3OQHbTieP7PiYYOqR91N`%`Dvmigs}y?8S10Q@6zL9hyQV8SOGDu& z3sw|BQ$1dGijZm?enaKWQFMzX@(vS+AM#p!Dz&Q&8LQCt)cZXm9X+%LBYXxvskp{u zFzJusTN#jtLmG(lfk>mj4kI*8TFE+OJjx&$2qF7WO=~#pjE9Y~@0?b1Onlc6nxT2s z;0k8o-NC!I&_LwP4E@%Tj8syQW-iF2AkF49`o8$Y;c61Kjd6%m>?yFsA$|qUB~R;6 z6!qO6MiHjzeKiQz=)H4%rCqzPq-f+%YAP(K#%pX1Ds=0SqFE%C0e@BCoB$Uo-iW`v z=1TkqNX58nx%zaS?+f52cc3@deXnGOU!F^Tr-Mft@>23#YHZUW$^DRu{Ope+Ln1;9 zf|LN)4D6{0kqWm|gh_zEJRv1buEcz2-SitgxPt=I#RD z`^Wb#@V`6E!IVY1{3GSDIPBFZN=eSh*{MWDwB+2Ymd7g$9yW|oNW7!XhFi0<4ZrQ~ zEf@tvm&<%ioIAO3r3S>j^^HgGZj=`Rc}s}zW3!zTrfORUkF%@gHdXqG!+}bvj>@{S zYlCFU@g!U8U|aanqix|KwrZnwXmG1A!`8}t9wU3&GDq3M+bE+BuQy`;7+X8=vA%(? zE>ltX`R+Lr$@Q5rb}3$U5@yE_9u(gn03E3zD%|EYTE)i?PQ-U)!hrbh@!j!*I0GC@ zYw-O(qkc(!Ls?bmpoAIrvV;K*_#*F~o0T4yjBoIoD!f3}R7a@U%4oBE8GwyRwq?rK zbgoK%AxcF((P$XSgOgM7{XH-(x&M%qWJg;6#^9m-hb7|cx_`ppjKQh+o=#6qP8fDV zcUy@qIc>y@+;S|;pI&dr&Tov-r8B~MCEn}M(2jPa@I0|(CtO-@Z$69%MZ;e8~#qNJ{-z9zK1 zAMK(+zxAViEB+NK1LO@E+ zy2y_TJF^nNzXCv?d1?XlnWrj1pLyy7^qHqpK%aSP2K1SydO)9f>In3ir=mcgdFlrA znWut4*GPEkD0EGOr_Mm1d8!F?RfDI_L7#c*5_Ii@ry4@nGk7W-^qHqdL7(Yr1)&rx z|2*{%`b<|sv`98F5fUH)5+DH*AOR8}0TLhq68OsrIE*3NE&of)FaDC`KMG%ocoOS$56*s?yn0DoSh0 zO?TZ`Z!F8rtjf&H&d!@ZzdUnFp6R9A`c1E_%=vCd-R^HJ%P*~%ZHChQ2#jTgv-1|r zFVD+19d*mUv21o}Zp}=0MBTdpPV*PeHxq&(6-cYEy`r?VO53P=D;UelD@x179_^-U z2aIJEdF7=QRi<*?VZm57Kf9u^-0h@$EEvm<%`zkDehaqd(n6%ns_dy+wXTK;U6v_V zjhLP!b(e%tQ3gw<=VhD5={^h*%Mx`|UH1^NEVr;i$HH`)jUmA@zRB#^5VJvR~{0TLhq z5+DH*AOR8}0TS3g0h`ett+7gdfHH)v<0b<M-36z;v$`IOj zklJ_*ifd-YKX9zZ*fWZJ@f$r=gd zaOeyRMo;=W3@S9Q!1NMtZX`egBtQZrKmsH{0wh2JBtQcHbOMIa3H`6l&F)_R&pPLk z1W14cNPq-LfCNZ@1W14cNPq-L00hv=z4x2Do!p~nk9yAUu@b{LHhQQ#ZM%9m`rh1A zJoNz{lPHh?36KB@kN^pg011!)36KB@kN^qnJpoyb(d7|CDvuck|8+1_* zMyGmNe0-*QNFqo8tDk-=Ot|hu5O1IYQ>zs~j?Dye7(q^}{4Y9vH%$BQdrJ8rB%sIt zE37&s0&bY$daOH!Z43{rGCBw^jwX`;36KB@kN^pg011!)36KB@>@oqHk$}0yjC?x8a|`{J7YO(Su%P7mUB+ki~5#fRsdP# zc?sqPNJD7<*#Wxwjs1^PlM${Ka{|Qq=!x+QBU)mxq_zK?0xM8o127o0?{XFD|1u!} zR_wH7!v^4EG+w0|^-0FufkDWcNkb^MH9`J;3yr4cNkb2P$lpMI7$!d9R`;E*An<_9A&)s z4g*U8OaiaMQ954lFmQxBa3hY=b+_5TlB8&o?%SdnhaGE{z+u>Z$Ey2wc8*g6J&GjN zM3sPL$@=Kw>1G}*GxI<^C6laC<~zhHfhC$5bthOQuxOKAwjJhy1eO4@%eKQjkiZf^ zcG-5A2NGBUSe@zRyxBZ}yUrj9U~Lkq*}#&tc*;Hn9jNQ{QglV`h3Mk^x|&PpXfsPC z^e8n<4Oa2KIpHu)i?Yi92;sM3{C`YbQlm1wf}cN64txUc@&BXs_h*{ z=!NM;h_bw#mY|oq7cadEJ?_rYdinqnY!XHUyCpa*A;=PfEg?h%JPD&iEkV9OxRC$} zkN^pg011!)36KB@kN^p^908X9TaNYqNJ+}uQh>MS|1%5lQWVz(c+@4C1$b0`jn)Nt zRGE#|1$b1njn)NtRL_mp1$dO%%>q2C3P*>DW>hem6$+@99IY!9P?>2~D4+_|tWZG3 z>1bV{fa=!Kxc{)SGlRfS1Y%LC=d2ZzqLh1i>zSCaj<$OH|qRdj3C2Q#SXEf#&>wGHIXHrNccj zAp8+34F9Yc?uh|+dH%mS(BM1&pVMdFKAEX66!ZO+V6MJug!7;IZ+B<)n}?nlE?0y8 z4*`Gm_-_NoRDG>VHR_|x>SydF^t(!N$%90>b2+_qnAWyMR$q*(YfAviF3Ylj5F5xY1DmDD|Ih{ zy*85yNPq-LfCNZ@1W14cNPq-LfCStV+gZJsr6cwA*rnKI&H^XX7>1+!vrJ-GW6pwS z1(rZEiJ?pmxYNKANG36q$pLp7SOUo;hB7(eP6JCInZ!`$_S$J+3A75k6rpz-SOT4f zT`qX1frU*Yb~)}euyiLs8oP92-)Ug!;ob_n6t;I7SOQ4|nE-I7fhCYc*rf}UKoVh> zY?eUQebS5>4&z!+`5z(uHt)25dLlqSKb{;M1Z0#xvOmQd|DR$_;Fn@e;Fn@e;Fn@e z;Fn@e;Fn@e;FqGu|BD_yfu9I^{J#i#LO~Jq_?`(F@{})jHN9~bW{zsjYS^h^&m0A8rg_v3XNA;Om{zv7TS^h_r zomu`zMW0#zNA;jt{zs*vS^h_n-z@*50+Z$czxTbxt0MstAOR8}0TLhq5+DH*IJgMd zj7gZFU8x(f%lv4vaRJ*5J(9qtmC3jOE4n*| zU8n3HL#uM=K?z=uBDKv3RcWe7HDGV0($!)}WvW`$14Rvv+aG7JLYrw|xPi-6qyLZB z|78Gz%Te}<0fWrI@}HgR^I-^)f#Xo@Ll80*d%8;2p_Acf zQZSR&3G*KbkN^pg011!)36KB@kN^pgz~7pHVZ13zP3X;``~MG&{>I~C`S3^rBtQZr zKmsH{0wh2JBtQZrKmrFVftY<^xGYS#*PGe$yO(PAP>EsO9X-ySw4t8h=>NUU21X|V z5+DH*AOR8}0TLhq5+DH*Ac4PxK#=Y--=OBIDs*+1e&V^R9G?nRf^P3|m_&arj#b#L zFbS#;I>tNE#onR1IE=%bR{1~BKHb4R(2?f{6#@79f0+lB(KMC>NPq-LfCNZ@1W14c zNPq-LV4o9U`G21yJ)jh_{C_}Y2aO>C5+DH*AOR8}0TLhq5+H&7M!;s&>(TzFpyz<^ zymWfPIan36dd2#LRi7l~IM7?bq5BtTuN=(#huwG6^YNJudOkiK&Vl*(+;jdJi0$=I zmWK`V=h>R`uw!aJdw@qP^k*ni#i|nh8FC;=zlQdh+^z;vt#)0k&nnddxKyjS0Ka_9 zhFIbkq9e}cqPIk)Ds4u$@05UgIzE{R&@dOYGc>Z|v~=re_%_G`|5 zPQs_r@E-|~011!)36KB@kN^pg011%5UrE3)I(f$Y+uig3{gvraHwlmc36KB@kN^pg z011!)36KB@9E1cK4?>&$Om-M?&TKyyo{#_ukN^pg011!)36KB@kN^pg015ov2-uAO zM#(j8LvMZGj_bPfKHOzl0htFdCj@=*L%jX}^U(hvyYJR)|9@p{um8Voo8gcY&Hn$f zNXYKihJgm+VTYGpc|G(91o3dd!{Or*iZdM}2p&N`9+B{flo-MA2=*CDP>Gb9>x$o5 zWnoZ3J*G;OK>+%0` zp+WBc|KB)o^0@u&0q_DzfCNZ@1W14cNPq-LfCNZ@1P)*V(kjhuUl5S~{}cCxBI+Ok z5+DH*AOR8}0TLhq5+DH*AOR9MUrA0fyfU!s-u0%d z@6`TEZFkOp9i!=-|Lz!pbN)MSb`KxWo&SA$@P}f=LTB{5FLL+9Z)j%n{`P+U($l`u zvuMDMr~Pm1vnYUnyw7A3%C{FR$SjnwLcRp!x= zDjb+X9BL?>e!@P%-)S<|6&TmJy3PL`(l7M#$bPTPdGE-O>ywicADnr9)w=H&WGsDS zV8)wyMN|5m*Z9S>-yV1(@A-b2Kfd)-*UN7GWBAMq*1tL8k-1lAe{}cjYf`Veq$VY( zW6ZCk4?p9BS^r(TEwZpWXz0~X4|yau_P({{!C|$&mdKI@KE@pe!&>_rXF9dGaguC+ zaXsM>V4UgH;>Jm`0mij!YMklR;>Jm`0mgM`YMklR;>Jm`0mgM|YMklR;>Jm`0mgM{ zYMklR;>Jm`0mgN0YMklR;>Jm`0mgN2YMklR;>Jm`0mjLXS-@9`>D1!JNwNXPNi}+a zai&v?8)sJN`~5=5+B*B;w@Q)?z!VP$mn+)$htzUv;U7{fS)U(Lc~f$2^BNcJ&@WHo z)RM;eBx@N5rx2wY1IS_RpFk&EL5#EI-%8A6{oao(ORP)4TNK{lq67F^PA$yWO4c$C ze8p*-Lgvph-}>MbWbtk4>VA2yRj3-Prl|3#U+Aa`P`^-##qUaWT|EB{)yj7FWCJmuRc4Wf02{E(JbjO;x=PSq8hu>U*OU z@g;3pdeM8`&Dk$`8>mD0NPg}(W*bZZA=5=H0MlyND!J1DJN(_{UN!GRnJ~f|-poz$ zsdnFY^~giHuWO;jdq;~URoX%);>%rX`O3XzJ`s|46>t2&iY=c1c^oJXoQd@FSBrzMKOh5M|W;p&zdlkCrZLq;)xxP zRMWB7XsVsv=lNQL+_lx9SmyEXf$y7Yq+Q|;FWRb_FldV>cY!L_6y;8mXLc&I6stS% zon|0ah3_u&o2m#`YlPwbS^eJwi#t}|e`?m++v@FgkDc>>k(k}%Fy&CPzNW}+Ax3?}hn5s>IKBxZBUx8-iUzA0dGd-_}XIpw!XXoq&XovmCp+ zQ>sU52C4vM`BS+YElYd7l=*7;(Zv(aSuinpT;#d=yI|?ACV4;Xk{>tOtmGzM@qXKh z#$Dqtt#eLncjC5rVyj(j6%xTBypA7|5cQ%8f6+NbVg|+#w?XHBdh_w$ZB7zdwsKsO zWX>$y4CW0jmn&P~<)IAJM5Ev^x4>*`F0_@^?kE8V;Paj4#_cQF6pD+piGWL12ErkS zy*ELG#URr1jdJ@UWUy1q&!&hR?UfxdkOeZ_9kE_HxRp0d@F7}$G(`Znme3OTP&nds zPs?p|0G$K2KFZ)vvNUh-C)s>e3jD$6Pcna!`IF3_WWOJA`IX~Ovi^DgOMa5gA7!a- zZp0g$l;j%l1677!?_~Y1Js0n!QmVDyU}fR?C8~#Hi}&>luYNI}@=URQJIA{)%HO@U z-Z=d>E^pTIMr@YyCh9lqc}PhXmp{};pS(=SpJ5p0i-hbn;bUz zIr$`qJs)~s==GufL)(Y8e^x#rq34905Hc@hYw)Jvmx2p|Q-kA!9|*cJ==`9LL196^ zIF>mo9fgjM?HlbIpOVkR_H=uKy^H;3+l96ZpOnvXTZHX5W3y3hOgF|Euc}A&#W;Y( zUEAVqmbaW*vT6lY+mfu*zFCz#a6;L_tP1iPXF0X7aguC+aZyc;vz%JkI7v3ZIK1Nq zlCzvz*f>cxz&O;C1sZ2LwXkuLY=CiivIC8?oLbm8NjAW^>+#h3Hvixmv7B1iI4fD7 zr}e6)##v4+Y@C&>k8zhYHO_KsVdJc1eT=)Hsd1K53ma!8>to#6O^vghTG%)%Ss&w8 zH8sw1YGLE7WPOZV(bPE0sfCTRlJzmJv8i#EQwtksCF^5cXwxrY%c+HplVk(Fg!7w{ zvz%JkI4fBnaub^xXF0X7aaOWE#$`7(&T?vDOJ`&P^aA@?6&KqBja9$F1$xA(> z?uk4Er5|o2KmsH{0wh2JBtQZrKmvbb0;n>I)y;$Y8k_5yWw}XT!&yF^x609uDSh`W zf8Xw0&4sf%d(F~4+M0_cUAxXvXQFT8JoE^4qHC7R-#oJ`p>!hjP0Z_Rb?lW8_1Mkc zWoCljP`+^`$x=02WvWpszPTi&f1}yLYWA}9Pr|FT9&NGyAh{~U zBrRBy1-^2i@;y${QY!i8pR0SD>z2O2T({hX#+mALwGbTwlbWO9HOC(1aknj-ldPi@ z<)1WEQuH8GQK_m>bt)DoHtg}LpX#l;sWz&W3WrOGT4orleaioLZZxCuKM9Zk36KB@ zkN^pg011!)36KB@kidQ<5TZg$8mCK%-#Ye#H7MIRdX1W>CaGMNsnS)dnyeP7Divdf zQDf8ym8g37m;aNTSp~^ix3#|1Fw{h+R}Cc+AOR8}0TLhq5+DH*AOR8}0TS3TfgpHG zL-ZJTu+Pgs9GdIMOk1g5UKcU>hC*@vu=YpmToM;p0o+Ou1|GkQhbRY0ot=&}eu-0Dr&s{hL# zf6D0({kg&s+i6F-s?`Ei2^7PkI#^;DFY5CD1wX~w4D}w%|L)x3fdoi^1W14cNPq-L zfCNZ@1W4fEB4E`;?5HMT+~tE}pAM)==zunL-@1q$*CcFG|H^Fh)zRaw%=&lgF|~6G zr2HLNXCXBS=VAA+N%$;hW|v=X3{GEl$jznB!@7*yUd-ld5|W@zwrk(7`ggZ;u1vk) zo+COvd-~iJJJMm*f>^Z?hH-;W|NnLD|8FAYe-a=85+DH*AOR8}0TLhq5+DH**#88Y zjsoZpqXuK#ztcVL-+v5%)&GB(8jOw^0ptHK_bLD1#`*vDf9}!(5+DH*AOR8}0TLhq z5+DH*Ac222fu^(l9SI;^Lse3YyVO5R6{r-IjNt+P<$r7bzZ5+KKtTE5Z~i})|Nq(d z7_XiLNPq-LfCNZ@1W14cNPq-L;J_fzv<_e(4BM;u|NQ#@v;2QxN)?~VeZAkV5MZfgb3_1AEWP< zV}p}TY8p(hlW@c?n*^85A@R*E43izmECjMSRJeGELPLoM<{8x6Hp8JOLkPvxiZZof zk`OZtMuU2iUIA~+m6{a`f!6CkFj*61ry z2Ro{eejTQ2oPdcDmq_~DNPq-LfCNZ@1W14cNPq-LfCNb3??b>aIz?MoV^Crz6pG-fwc zZAS~8_a}j6je2;dG(ZLixVMuL1bei^u}i_y?Aq`4 zjR_nKV2up$34!% zPW)Bq!0+@(*>I_a&t!D!uZ538*oFA zT56;tz13MiS(TuRdp$k{nAtuV9plY;^+ORxrpC`vnJNSG-nUV$F!I}m&i=~`V?)FW zw=So;Z)0V2_l<8l&wqL1%fG*L?MsDGF;Oo?u6%K9cYY-Wu1vsgHI_gLy8m&SGW0BWZx}G4{kee^}wy4ca9Us zrAl4!Q><;A8m0QF-YOWyh#=J^NJYV~R#l?JQH`~{>fI_f-v7YB85-~U?XNr1n^7U96zg)NBxGL5=j9&`&2?m^tyC|s ziv;To~xIHhiD-HZxMiG|CkK~YKyPZf}=J&JnAwLkCsvwDnw;KQekR>RIIcot#R zV@kbRS!5f5f>meL-g`M=@Uv_QMElFVPmNzuGI{K+iCZU}azgi$wW3FqdSX~Jilq2v zDUyrY%^bT`sq;TBXqsa()O#<~-lWt|cQvC{hI;S(MrbWraE(&;Tr%0## z7?q&9Aul~QrVMZ2ty|(er4IQrujwrzg>dV_n%Xq+iuc=2H0~OIX`ORoyA!v~dtPk% zmr`e+lxG{I;#HjL=(S1sc~$v8xXs>Or{I=Pm>6hNnDKpdRzY%>Bn6eP$dMZfkN^pg z011%5KZ!v0qy#kvFK~@``$#izcDx9tOhSl^$0fw|I2jT3cOW|dp-7YypzQtl@d>*MI7F{;_(>@_Y#Dt z!W*3V4qgmRqCwutOLV%uk&d{@qP>!)X#aZm z`+l6BKWHJA2A1NCq%0{kK$-)sLShWq%!RxNelqLOLd2Y-!QjRv0ao*aqu zSd<34N}yfxMhat-p{*G4#vmQZfd=^1!B1?I+>m*Z>fkE*n~$ShVG*uILRk4KSKnSu zgD3{HYRD$DQVRor5K~_9AF97qG6!U1gFR4_oD#=;w2l3q0JKUW<9vz1;Vh zzYgSK=JJ`cs9*%A@4VqFf7#+`!w+j{5JDGZ=IWjwJ6Is*Ajd;1*Ve^Ds@6s<`%L?nRJ9NF0xZ6DLhQsb7n-jn(G*GMXAbd;4tKq0u8G@t43ib&Z;?brY zp^#re;Tkna_AtmOG$XFEOCxuN3d6$i5t1?l18S7~b40myiLX<9#WC8gG)@`eF~|(_ zD_FiXWuGY{09k&V0Z2$sr^moC5(P(f~(9Oi?KyBHEVAM+^k{ zk|0#?p&&~wnxv`TyW^DvHNr zj_pA$>?Gd*@>j_JYyCd}sZS9Q0TB=Z5qP%}(E5L{dLLiqim#Yy{a@?gv?#sYix44{!d_Yn3-v-uT4q%BP2Y zYFJu2030a&7Xc9v0TB=Z5fA|p7%T)v@<;G?$la#P%*pp|U9|U=7v~0_Y-70NHr!Ag z`1Q3ld-2-U5I>KSYkojqV`f95KmMBHXX=gQHh;ezkDWI5_slf-Wa4mxc61wZ=$l1hbr8Rg zzvhRv#)f~tfCt~V>OWXO@W}#tZ5AW#?SoLM>jvu%!5y69%L16*$;gB?%-7r4UfN8hOL1n0KdR5U(od{78raM z7Fc{tEnYhxqWAIF+%Wq)kc)>Q>zV&IwdQ{@`=3wv`PgUi*;n?(GzctSJFX0z{+Vfv zKU^0>VO;oH^HJmLy)=fP~8bm41OSZ|8WI~=!tc*ET+VB~}UV_Z-`?{i`C+Ut?I_pr;{4cD32 zT@t=#gqdHJ&wSFj7rx2NCtW!DxFGWYN@3k^WZnPKW$#ALEE9dr46;vn58_H;%m-2Z z^RaD%I|`^60$&S`WeIpC3^gIxpsVqTHxEYVkz{&zlp~wGx2a$NQ+b8~2|w>QuseiX zRLbz?hO8!YnN8yzIAHqvOQ6ip`Gr6S2#z3cx;^G>$B>uccZOL<5O#-k4d8R90b9)F9KOTzd%L_h>YKmYKmn(AEKqga)<+-Lc}S$%i|K(}DdScc$oo5XYTqI$+l2&Pt<01VlgtL_h>Y zKm3fs$6k&-cK%O?o&VEe=l^(Ywa3o?v8QAY zcZcW@0TB=Z5fA|p5CIVo0TB=Z5g42V%Dq>u{y(-3v%>v@vz2O<2#A0Ph=2%)K;HzG zuAE`!z!c1OGv3TI%S@wbFd1{M*=$-(x9NdS*_0J+~J>q0gN;6)qh>^v&8PKXU&71*OGh%d@F4Kfq zZDt*EVh+vt-fYXQMLG0qLVheW@Xy%N>C+Au%dJK`TFn-`3uBHgD0{UH&!Q~WK7%w( zNV5X}I}zea$icM%;UqB!Y&OEZH6OPPVXn3=hcIm;(y^YbdB)7Q?h1TvMrrM!mqIzD zb+K`^7;hFKPSz|3qxFc*JY;R}2^r;}u@z888 zL3!OMp%ZSV;`mr*Yg3Ojt+vHkGdVJTGG?XCag(hVM}y_b>X!NX>&;1ij=G) zdFH^OE7I!us2^Fi*nX+)Bc4l523fx^YGN^$qLfaAyPlea8nolZzIJ`ilF2uR*1MQl zQxl0*k1(bPLu(_ULBHqFcb#b0CcN4~l`SHdu(ZN3^5tk`zwlfM<28Z;$+scA-JAn= z4`QScgX9_z!V!5&q?McV+j3Xi#vlIRP z;yJq7vf*`%?07D9*fK~ZIFAeCa3p1HAMtv(4eu5+^ANF@+4h_oOEu*XsW|#Okdo)h z81x!P)+UtAE2+B%@|>+Ha!m@ZaVhmsx%UFDBLbLlPrUKKh`oKxLi^W_cbU5tC=MgFnLxF`DZUNjB(-ckd5KL8L$%!?*3O5rV!IaM(yIz|PKV**EY;5asLj0qga1&$gxSf)45 zFOykKU??jx5uU$;Iy<^g@FUPYDdIj6ZXWcX9C4o%ao58Av>#_m#Q$WtQ9ktlJqKZM zV~)d@^U-b8|5t`L!=i_;|Bu@oY|xGP#G41B^Ee{<|4`;luDD|Q|5&{@spD_7z4`KT zzzcAXfBAIk0R4jWAp#;G0wN#+A|L`HAOa#F0wN#+1D$~M{|)pWRQ*Lj1VlgtL_h>Y zKmYKmYKmN*$yf^z!?AkZx zvGp_Wx%8D6=hDrC3-Z6hzb)VcTr`Zb1~hc`$l#*u4BN!E$n+dI4+z3-U}k zvbXu747^wq?&VKJ0;uD`2DmzeDJpFm!bs(jUS#1^12$FRP}zl3?Bo0^(E(JCvkvgP z&1JTt9=81V^_M_PzvQ>-O8dz)(A3aZ0{E98%{_ja?fEo`gQiI$&HV*w2*MF!S0U&s zygiR>Y!BRpeqRt95^yiDnwO68w-YD;K$)Oz8AM_J`KYUr8A*F zainm8eW61HL_h>YKm!qEE)AXlce{T;WzhD zZ|?u^BS_u@gaG&ULnvdn-Q)wGm^;E$|O)Zab^h+}}ux_U+g#w#v68&a^b7 zO#dw2>k)@m%$u!o(!H{w6*$(qwjHr*BY+>FxN?Y6}g@Y!T8hLv*Gay)jH(u%q>KHZL3%!fA1vtY*U zcjwubErosbhJ25(9B0YA4tdc&eFsvpCsrZ1bx1J>bz%?X5Y~+_){*6M4=OEqvwvw} zo%Xz&teyF=U)i#;z7_U5#3!i@$UPVjQ$d`T-kZ%OD6bnObi(bdjJKc%SetsJX|*k; zo%_(3b_Ukqnd2r~FK23-Oj-XC=p|aQUxlCn$BTKoJXkXM=FoZdkx)NUFT5xX0L&>nkQk>E&EPgf1*cd$D#`lUFQ0A4Zr$~4s zYROUL!teEXo53vv2kp|k9p!Wz>^^oj=joq-JBU*fadZ1O53EO448c`$nmN-t0fU&C&Iy+<1v$j0=Z{Yz+S;hx>UkG{sPQ zru|Ga#;X{C&TyAtUNm{R3@=&Csfsz#F)DBz6F8~^$FYH9OyD>!aMZxTGQDwrnapYe zLs^lD@cbQichh}>AA#;k5%-C3^PvCai2J07yB6-J{Ww!1{wKqY@{Q*IB&b6KL_h>Y zKm^{+1T_EG{GW3V&Hpw3ch8tK|L5~0&HwofMe~3AV2h7QH2;4$|4dTbML+~ZKm|ATdVt^c>iWC*nWe{g95t^aHNpN|Fx&ia4C`$wy@e>tQl0{#Ex_)SCE zfatMo2)rWt|8GMSym>Hsa5%va_bu2(ez^7jQ*faqVi@2E=>JDcZ}*!R>i<8uF8>mw z`L>^CyZyZEkTwI7Nb^8Jngad*RP-Oy@o#ni!#lzLx&iNg=>IRK-9I!-ku?(`LRHL2 zMd*8I3jnBz4iOLm5fA|p5CIVo0TB=Z5fFi+iGcL~A5FcXx`==Xh=2%)fCz|y2#A0P zh=2(6O(4^EQ2#>?gP!~Nih2JFFO110-M4)7I}_^v|4JXlN&kNzUYKma}Qtq+9&?@PxUuV`1jP9doH};U@2)=mG(I=^7B~a zvM{smn6ae$BM+VZ-Q?w?p8VwTzv(NFs}Y~pN1ZiQ_k23YD`4@<8*0w^bLrT5yB5y- z$mO}G?(QouwuF{VI$(K|HeY4`&+iO zwf=9`<28ua{}bMQR{wuJGzL)FJfE_R#5=CdU|9(~OYq`<9A8Hiym^dvAND^smgf%} z58n=_{(t)nC1nbqsie?FoA7G!pRrKUKB{-%fa&WmfvSJQuV{Z2`X`a*K0nQN`*~=E z{zH)Fx`H%hOyvyZYnAqI=NHfFYY3G6^GkyNt||<}H+LMsL02+qyJ?0UqFETHyeLnC zgO)z6_)lN=EexL-@e62X^L~A$8f{kKsZkrAA2s2#$DD)wdq`P_2#A0Ph=2%)fCz|y z2#A0Ph`>=!!1F$rm-#O>52m-Ir>Cdy`+e%pyzf!o098)}L_h>YKmY z;9Wp~()owwI1CxhJuDS5<}jEdcoUfqCA|L`HAOa#F0wN#+A|L_-ntX1(*!(FMRzby*IsgA79@{eYKmY;H?u# zU|TnL(jRzZ$)@I}T-&D3OlMO^Yi9biF)+aHA(RXIeT9}J3@6v|;4_c4X%R|s{CMc> zd}u|H&@=L(F!J6j?JPgk^Ug1${(nT_#(vEIJED8|>HT&cR5r8|f*0Gd=DZN*MjA|= zse!qPCa624y2U1J^LOfaRzhWAJGPn^4_$?jZHQZKmfOwgtx(*Ni=?hJ^~k3kepGpw zvawpMdpDKuxx7h?+3@GadZ%8pC-0v{o}H!< z+wZwez7?D1Hz6Kt)re2lqspv;A8Xl;^ef@sYQ_}QlQ}Gbe-lWIEmFrIY>ZiiJlURQ zcyG0Nv?A9QjJNqn-E1yFS+4Y|ypO9JQ`I1pY695WdX&dnHsC+Qwwc*xUY=Yha%0`Y zT!VBAkd7)UyCW$l9yFz^&!mII32QhFd|E9BGHFMjt+6%k^yxR-T6ZE&v#nnXYFKCM z+T^Q1XodemJ2qO7o@GU(Bs4IIXhZ-09bF7ka zH~Kvq-}NR#I{k5%MZ2hUp$oaV^MNCpHK7`Y97gK`e1@SMTkect-?fgSBn{M#{x&uRh>J9F#k#b6B1+|5vxN{Upb!E<&E za#?3~;G*cERLaY^D^(L(>)}c}!koY7)aU2?+qAleez4>Dmp=9By^y*oIo2ehCgZ>X zy2rrH1ChPss0gGS3P2_WjuYYVDvVb$8MllMh9yq&!xFV{lrZ*t842kV;~0cYljHpY z7(Wwu9`BcwMQNVlO(KbwwB&30+WWH`M_jRY{@3rh;LIBzsH-nlQ)(EA)U>}ve#dGi zfwB`E0hm92=lczpHLqHD*R0pix#Hs|T+X_du&&IX_ek@v5LOy$9yb+Fq|Rf?cnbQh zS^CKBmqv8__SS8}SjNN~N2M_F{0PGx@lGoiJLqUXN$dmgtoEEjZ+21{nwFpg4K^O) zp?||6Ff1TY8H5h^LlLtyW!;a>r#l_GlOy0JV)!RVhVIg;Fiz;B$+;vLP{jC>3{ zshNlFY8%1wPfTIyZ?pbC-SKtD@B8yEEGe!*`9-c5DK=gs=YoURfCz|y2#CPDh``&t{%-|tD6o^odp(4AG7$P{wt_hn zJj$3Eu<$(1oB<={UW z!b@z~Qiw!R%*lx~W%4zugHJPZr$`?~q*fufbx1J>Djk!wH*N8~AyR&LI7>)jUD z>dF2XE6l@+x2o22vKw}i!?m5SE9D-@M6uJ;BRzPQD~AP zlR=I({>Urrr`3o>k=N=-%Qzx}F*_0d>@S|9POO-shh)cdsl%2*D#hbaOf-YK1){Kg zXfg8;v6tEQoEl3tqE;P9$?MA)^cqDdH=*o6D3RB;9QaWvx$v44T;nJr91jfz zPp9+>i(k#c^KE>uxB+Eexq5JIikH)fx^fh`@OwSpF5Png2(&@W%}Kg(1>1w0!Sqk$ z{k>#K#GUlrRmM~d!BujaInzuvr{j~UN+U6c!tHW1$uhY2!(tjAXq3Z!4N8HyV@U;M zDC@06g)e32LHy3j;CabF%8pMZQp|}3P{fXzW+0_j{s`-$Cj$;D{WFnjo zcYNBQ8aVjO!5im4b71@l4CRA}iSYa#_UX}mf**nINfGynaPy%5;DmvCC=5Wf|>lNz;R6A7)bN~52d&Jzj0tEZvRW^C(=*s(3()$0d z`VFYYihu}+fCz|y2#A0Ph=2%)z_@*k2*v-B?;_L$fxU7K^q*a`!rW~1W{8#v{`4k(hx$$zR{4G`4DW5C8lXNW2kYne>d~LS@V8}MgK)W1VlgtL_h>YKm;5>_7q=H>b41GDn; za%xH_9^%jP^Jz}Yr=iq;G>!kX0rP)af)<2qNx}RIp`^)f~`)EZXSw@?M zItDO-zuS&I9>(l0r31rbcUj=5qyvL&cX@#WkC1i`8Ndxz)kQ!AL_h>YKm#8S~Thz3D5`%hJcBA4^@CT9PVB?H>N|;b#s1@5*mio?AJ#@~L58 z8rC?hdf0C(uB}*D@t5+SmfuzW$?~=3?<-H0zg%{&vSksTH3Zj%GlAbSWNvmzbd?<}2{%f|7J9Ql~0? zMyNJbVFa#)1o==`c&`XI6yy-C0HbE0raNEQ=ixyO-A)g_(=6a}tbuCjd^Cz*21Um6 z8xO_a`G}Vx;!@}m??Jt&g`4{Em*TU_*0P}J?FD&8aTFBY7|C%Ba;}3#0BR#Apd1)e zJ3BeIp$u127u?iA&&JL*9|$YAqDWRzmGx9+e+jat$pBV4n$a9{R+!P!q8SDD9Ri)` zwEeKnYDjN~zVwcw*)D+{g*?1Pk!;ySnxLQ=1ezOgoiYi%mygch#8K9v-u2~X9V|6a z-##_?*ZGMHM%mmx6E8%GESCliHbJ|1n3b!;2h8lS4)5l2O!F2DR{qIwCj{3d(;kJl5lMJky+w*3hKKX~1-*nFZDMXF!$vOem6{ zhLAJyzYc!&aLqK+@pi^P79jpCq`L^A9EMGHuzd)`@=ZJ`QnSJlvC6+5T!f5sHZd&_ z@J!(e&$<>g@x*>)v(a?NDj_*en3t@_Z1C5n0 zD1Smf5;vd|_@Yga%@}SxZ+cM}_a-uG^e+HKGkQ-yGFpO~1XqxP<{a0L#Lid)%?+>- z95H#6$Mz%nc_=xsTta&ev}i!93(RajMn*m}m>09qdWdKOvz;bPxk*X4EQi<(CGh5dan=X6ZK*T<^MCq0^~Pf2vD{k4}qCA|L`HAOa#F0wN#+ zA|L{TiU8;T+!R;rkp917R0fuxKmXrlm-H))*<}R*QgB#}fY9%_Yp6f%-^HCJIz&JO zL_h>YKm2WP(qt>WAs+AZAtpAI|!ht&x;?T7rodk}!Rzvlk| zG<}MI2#A0Ph=2%)fCz|y2#CNSB;a|=)4{rLiFrA_CEW~Ba2+Bb0wN#+A|L`HAOa#F z0wN#+A|L{9l0ed6M!o&OfwWn?w$fB!Id*91wP^co)z6GNrR>XFuG{{*5B=A!htGZdl*O+-{eO@D(p`T!^THc`@UyeN zyYcp=zy8)w{%OHiZr(J1NX>{peek3!e|gcL?|-B6{LUd~+`jkp?~WY#&-bq{E$@mK zdrnXj&-?MvC9CHxVVgYjJl2DCh=2%)fCz|y2n+%ORO){rRJv?8WhSsCRby6LgH&x$ zY8{$-TM5fUwChwnG_ZqJ4ZCH|IuT83g{doH$*T?NX;7)#q-?Af>!z8ds@V7CFvXOL znX#*enW|RU4r{XY$f1t3fwUF2!s_74LJ>I))Ai*2v&gd(X6rV>w;M56z$^*P)8*jT zX6sR9?X0nu?MS~8;ag#PFIrFLK$BEWAThQ`9fPnjFeXP@t*A5W#5`yyuf>dj=_s0~ zy98yq(yQ`5u5L_KgV2rmr1oeUPGKz@@SkDZ(876na-GPH48vT5bk6n^O|OM1CmuAV ztB*5U!sSobc}z?p&Ih$d|sZ_8nHFji>HZ3WuMerL)m+ap~Vw>j9|Vp}f3=%$suFt;%_ zeROnlRMOVh2uuE>aJQi}lC449=!j>{Ibvu%upOnXLM+;(=AFgMwQjU6HS3>iL0nRzT|~z1MC*ERb}T^a>cDRWLTEzH8Q-J@ z!!?Mt&U_75NzaVN{}k%v%Df1%T9C$r(y0;VrDYdR_~SQ9&%SEZH(OH2PFPe4MN`L` zq&a|t?lExlKxFSY3amoGdZGr71DG#WPJjyQX;$ZYhGFn3IUZgejGmZCFXWLt!OxFL zPYgUK`x!^8xE>X!bDsuu9~J8_l?3g?!D<|jpsTjrR((z7$$yx;`;F^voBsN5#}j7> zak6hp=@{>sVM9%|SMfyZJf@7Npx>e|pEh#uD=*Han@3>almoDsrB)X!-c(LU$4$O3(p#7{35l5gFja0-BXU=x{$2 zF-ud{{n&iE)1f;#0&c*!Lw#iEF0BgVl#a6Q@6Bgdjb?0Qk~{{UT;iv@+D5Q_nK+51 zd)@_UnzZFnW?oFcxR0;L)AyurNcTt*z=6?!5fA|p5CIVo0TB=Z5fA|p5CIYRYY8MU z-8SaH8!OtII&+y^PgiSZ)@VG6@k~jAX4wjZX6A$Vu%;l@Y55>Nizo=1kq_d7gMy&x zevs!~nhx~;;ivepHlG48OG*Ry0iJht`euCP zF+4K=H~U{szr636^rPuV_dUAr+jYKm(yE1);jclJ2YKm;xo~eM?1%a~5)rwy&-c(0yZFy^OpmWz<)=PP&inC|YyZJx0DK+h zf3;~nZ&I52{~w;+l<>?<&G7+8hX{y(2#A0Ph=2%)fCz|y2#A0P1O%vSZyMfpzQ-TG z^Zka)npZ8nYu4-MT=DS}E~odJrH|ZxX~YHs=itA>zrYp(?I1Wy6voW*^Lg$4*^MKv z*gOC0_grx1jStk-a|$2Nn^XI%@phIF&hk^9zvtBF=lt8Wx`%$SmWauiE)PGeOn%^HYZih=2%)fCvl>0y1$Y6L)jtoog79}^=%+8KHNCTi`OYMkQawuEOs#idGYa7EM4&t>Ds%e z>SqV8dS+?E6`y(Vzb{LU99JxTCu~V}z;+}pa~3}^L;Injol?sGqZmA>_#v$X=nw%B5CIVo zfdN85>;GE+*ZP0A8Dkb;p}5^HG;KTJ?$H#x(fU8-Ns6uC$0xB)BE|h)h_7lFOCMbgFa9e->;I-? zj4uns0eKt;Bt=vv!g07HcRcU>vS9uX?E(8c$~qn^-W>zUm%j&h;xWl~XjNEf&NB_T z>eranxZ=0ldtwu=_)d^&CGM5&xHA+FU4@Wsh+A!z;||eg@1*>t6{M~-_3&-ScZ#v3 zY%JbyyUl#uTdHE;m*YO1GRu&@196t(vkN)b!Mz@C)+2{HvXrf6cI-YC_-B!4r*RUE zyrZqaeX9*VIrz2NdQfI>6I^U-)~tkkEADI2dNPM4@NdHXaBPt}24Q3TUl6URGwZ}W zT9IoD^i9l1>Sl8Z%5tSw<$XeF%Nm4kL<+XH9_6u?4fsz&+t9+kf3bz>-0zu9AR4Be zc+ixtK9dd-C#>N#@M*Oi$fO;8w#L@D)2H8TYu$-B&6aHoT3Ltqq?@%dTj5@4$3_d% zvuuie9lZYR+jt)2!~Q&Y%IbpOcWY2y3(DV!Q55~%$Fb^0;o$f^SY`XZ3uj2qo;6vF zyEh~AIo^&1-mtcswP4KOdQ0%xX*O7T2mei&Lg`D**?4cVRLA?@8*L6e^E)v*cs{%E zNx0s0qGvdE*bD5L4xH)i-7H@2y3_YB%^kSVde(kx8PdCP5{Qfa{?qSy0m)UwRF0cH428r@PoJ?wz?U$CsCbnsO6L zP*dJsBlFGv-j=^pi{#Scjems9$j;G*_Fusl+fAkP+vxqm2H`#c8;Vn7d zX~kj>{#$Z%{_mN#GV<0T0wN#+A|L`HAOeSlfad<1`)lq$SVS~5_Yda&@h7{*X4JfZ zMrPF5bL}2YdwL|VNAegj-f%;ie*3VfG-ch7&4+(!I&>#Tz|BW2@K25m-KAAwoYGO& z{k{1dY@->Qk&l5V4Fk|!Z6nyxn6QuJrT>rIb%=lnh=2$jJp?#m{E1|^ATc5tu5L)w zP!guKh?JRRxSAnb)CS>{s8k}Q$vP}E>GWFx$+2}-I*&4Yl#X13k+jYnN-pf}k^JgQ zV(PS~Y9Ia9F&|iZ<<1Y6^wc(Q#LxATWASr6x-`qHb7Ugf-=*39YZ9Dw$BZT2A9?8P z?F{CjH5Jr~|^#H)Bp5lw>ocJ7+~ z;UDH29%wpn&w}SW|ImA(dy&;7I5)3JFrI>4J9^noCqy*~hVo~@5_f!%aM3!RQ@F$( zM^!9#AlDX^-;a-iV(H?G@X_?YyrJftKbMZ3w`<|Nk6fO6>h5CcCI4?AMja=0#0RtI zeKxZH|4Z8c&+|}+2#A0Ph`>8YK=Xes7;C|Juq+rKjXM1`|HossLQ4Yincoqgk7)iM zu_U1RKh^9N9(eqfD8tfrf(|@pF&@S!b~U;MbUqv##)WS>Dud8>WO^__*DVz0QTVO8jm~S_o`jk z31S(;Ws8sEx5Tsf^bmG2+<PO}&)@xbP$K|7fVg9yD|_m@L72h|eylSEwlANYE%O z<7lYEHZZvb?=o;X$!8N^G7A><3TyxNemffK@EUmhCz|;woP(bPBOc*Y=bbyNj)po+ z1)Jx<<9qnr)QinKF=A}@MEd8Qs{=PDLye2M8Sf1~o8VlJ+ERBlK63w$hB|x?&7}_c zW#IBdzv*GUf<^u;9`}U4q4oKV2YPPzxs3$99X22}zG;;=A)TKooT9g57v$9;wfd)~VtroUgltV3kO~{XB z2L2gaI(>NGW4YB;sovZUfm6`-wp!sWsrE)QJ0h050XyK!_x#eKA z-b%5t4oeU_i#lY@XrJg(XqBU;GN*Mcldn-7e43FvweYbgRw1`_NH+)Num^Goqi!2Eo?$-7$fLcwrs2~MMwRGB((v#2c=I1A!`0}8Unjf0(GQ0W-Xw} z+SDVB(QlM9L;o5Aix%6LJajDGVcDjz;zi&y_Go{yg*-js169_G^%sIZ8 znrHPoTQjGtGdil+kJNG)D0Z0lh$bC3Q*9JVfkewmqlDQcXETDr%(cKuTU;#-P_YvNoaYK#w4=Z8`9x z9?`;UQgDrG8-u>A}rl`X}=KUa}9urkQF^$0t*jMq&3{5d77QpRy%rt`qh7srtcM0Z2 zlNY5>RVNa8Rfq|_iJmtqa2yjjssqQdfdiXIU1aL?wW(_0V42=Hzf5K|fuXF(M0oxV zvn9Gu@FUPYDdIj6ZXWcX9C4o%ao58Av>#_m#Q$Wt*-+i_op#RPF0MO%aP`z3Uw8aY X|6Zy)eqX;2bjQ~npEvG-bI1SxLMyR! literal 0 HcmV?d00001 diff --git a/Database.sln b/Database.sln new file mode 100644 index 0000000..7fd9a53 --- /dev/null +++ b/Database.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33130.400 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Database", "Database\Database.csproj", "{BAF17228-60DE-4081-A24F-F6DD8A12C06A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Debug|x64.ActiveCfg = Debug|x64 + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Debug|x64.Build.0 = Debug|x64 + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Release|Any CPU.Build.0 = Release|Any CPU + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Release|x64.ActiveCfg = Release|x64 + {BAF17228-60DE-4081-A24F-F6DD8A12C06A}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D5EB1D96-D46B-4FBF-B2F5-859350FD64B0} + EndGlobalSection +EndGlobal diff --git a/Database/App.config b/Database/App.config new file mode 100644 index 0000000..5754728 --- /dev/null +++ b/Database/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Database/Database.csproj b/Database/Database.csproj new file mode 100644 index 0000000..3f21c8c --- /dev/null +++ b/Database/Database.csproj @@ -0,0 +1,112 @@ + + + + + Debug + AnyCPU + {BAF17228-60DE-4081-A24F-F6DD8A12C06A} + WinExe + Database + Database + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + true + + + + + + + + + + + + + + + + + + + + + + Form + + + MainForm.cs + + + + + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/Database/FishFood.cs b/Database/FishFood.cs new file mode 100644 index 0000000..292903d --- /dev/null +++ b/Database/FishFood.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.OleDb; +using System.Text; +using System.Windows.Forms; + +namespace Database +{ + class FishFood : OleDBDataGridViewHandler + { + public FishFood(DataGridView dataGridView) : base("fish_food", dataGridView) {} + public void Insert(String name) + { + (string, object) pair = ("data", name); + OleDBHandler.Insert(nameTable, pair); + RefreshView(); + } + public void Update(String name) + { + int id = CurrentId(); + if (id < 0) + return; + (string, object) pair = ("data", name); + OleDBHandler.Update(nameTable, id, pair); + RefreshView(); + } + } +} diff --git a/Database/FishRations.cs b/Database/FishRations.cs new file mode 100644 index 0000000..d14671b --- /dev/null +++ b/Database/FishRations.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Data.OleDb; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Database +{ + class FishRations : OleDBDataGridViewHandler + { + static OleDbCommand SelectCommand() + { + string command = "SELECT [FFF].[id], [FT].[data] AS [type], [FF].[data] AS [food]" + + "FROM [fish_types_fish_food] AS [FFF], [fish_types] AS [FT], [fish_food] AS [FF]" + + "WHERE [type_id] = [FT].[id] AND [food_id] = [FF].[id];"; + var result = new OleDbCommand(command, OleDBHandler.Connection); + return result; + } + public FishRations(DataGridView dataGridView) : base(SelectCommand(), "fish_types_fish_food", dataGridView) { } + public void Insert(int typeId, int foodId) + { + string command = "SELECT COUNT(*) FROM [fish_types_fish_food]" + + $"WHERE [type_id] = {typeId} AND [food_id] = {foodId};"; + var result = OleDBHandler.Execute(command, OleDBHandler.ExecuteType.Scalar); + if (Convert.ToInt32(result) > 0) + return; + (string, object) pair1 = ("type_id", typeId); + (string, object) pair2 = ("food_id", foodId); + OleDBHandler.Insert(nameTable, pair1, pair2); + RefreshView(); + } + } +} diff --git a/Database/FishTypes.cs b/Database/FishTypes.cs new file mode 100644 index 0000000..aa9ec02 --- /dev/null +++ b/Database/FishTypes.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.OleDb; +using System.Text; +using System.Windows.Forms; + +namespace Database +{ + class FishTypes : OleDBDataGridViewHandler + { + public FishTypes(DataGridView dataGridView) : base("fish_types", dataGridView) { } + public void Insert(String name) + { + (string, object) pair = ("data", name); + OleDBHandler.Insert(nameTable, pair); + RefreshView(); + } + public void Update(String name) + { + int id = CurrentId(); + if (id < 0) + return; + (string, object) pair = ("data", name); + OleDBHandler.Update(nameTable, id, pair); + RefreshView(); + } + } +} diff --git a/Database/Fishes.cs b/Database/Fishes.cs new file mode 100644 index 0000000..4c594b3 --- /dev/null +++ b/Database/Fishes.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.OleDb; +using System.Text; +using System.Windows.Forms; + +namespace Database +{ + class Fishes : OleDBDataGridViewHandler + { + static OleDbCommand SelectCommand() { + string command = + "SELECT [F].[id], [FT].[data] AS [type], [L].[data] AS [location], [F].[number]" + + "FROM[fishes] AS[F], [fish_types] AS[FT], [locations] AS[L]" + + "WHERE[type_id] = [FT].[id] AND[location_id] = [L].[id]"; + var result = new OleDbCommand(command, OleDBHandler.Connection); + return result; + } + public Fishes(DataGridView dataGridView) : base(SelectCommand(), "fishes", dataGridView) {} + private bool Exists(int typeId, int locationId) { + string command = "SELECT COUNT(*) FROM [fishes]" + + $"WHERE [type_id] = {typeId} AND [location_id] = {locationId};"; + var result = OleDBHandler.Execute(command, OleDBHandler.ExecuteType.Scalar); + if (Convert.ToInt32(result) > 0) + return true; + return false; + } + public void Insert(int number, int typeId, int locationId) { + if (Exists(typeId, locationId) == true) + return; + (string, object) pair1 = ("type_id", typeId); + (string, object) pair2 = ("location_id", locationId); + (string, object) pair3 = ("number", number); + OleDBHandler.Insert(nameTable, pair1, pair2, pair3); + RefreshView(); + } + public void Update(int number, int typeId, int locationId) { + if (Exists(typeId, locationId) == true) + return; + int id = CurrentId(); + if (id < 0) + return; + (string, object) pair1 = ("type_id", typeId); + (string, object) pair2 = ("location_id", locationId); + (string, object) pair3 = ("number", number); + OleDBHandler.Update(nameTable, id, pair1, pair2, pair3); + RefreshView(); + } + } +} diff --git a/Database/Locations.cs b/Database/Locations.cs new file mode 100644 index 0000000..4721893 --- /dev/null +++ b/Database/Locations.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.OleDb; +using System.Text; +using System.Windows.Forms; + +namespace Database +{ + class Locations : OleDBDataGridViewHandler + { + public Locations(DataGridView dataGridView) : base("locations", dataGridView) { } + public void Insert(String name) { + (string, object) pair = ("data", name); + OleDBHandler.Insert(nameTable, pair); + RefreshView(); + } + public void Update(String name) { + int id = CurrentId(); + if (id < 0) + return; + (string, object) pair = ("data", name); + OleDBHandler.Update(nameTable, id, pair); + RefreshView(); + } + } +} diff --git a/Database/MainForm.Designer.cs b/Database/MainForm.Designer.cs new file mode 100644 index 0000000..53c44f4 --- /dev/null +++ b/Database/MainForm.Designer.cs @@ -0,0 +1,1066 @@ + +namespace Database +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.fishFoodRationsLabel = new System.Windows.Forms.Label(); + this.fishFoodRationsComboBox = new System.Windows.Forms.ComboBox(); + this.fishTypeRationsLabel = new System.Windows.Forms.Label(); + this.fishTypeRationsComboBox = new System.Windows.Forms.ComboBox(); + this.fishRationsDataGridView = new System.Windows.Forms.DataGridView(); + this.plantTypePlantslabel = new System.Windows.Forms.Label(); + this.plantTypePlantsComboBox = new System.Windows.Forms.ComboBox(); + this.deletePlantType = new System.Windows.Forms.Button(); + this.updatePlantType = new System.Windows.Forms.Button(); + this.addPlantType = new System.Windows.Forms.Button(); + this.plantTypeTextBox = new System.Windows.Forms.TextBox(); + this.plantTypelabel = new System.Windows.Forms.Label(); + this.plantTypesDataGridView = new System.Windows.Forms.DataGridView(); + this.numberPlantsNumericUpDown = new System.Windows.Forms.NumericUpDown(); + this.deletePlant = new System.Windows.Forms.Button(); + this.updatePlant = new System.Windows.Forms.Button(); + this.addPlant = new System.Windows.Forms.Button(); + this.numberPlantsLabel = new System.Windows.Forms.Label(); + this.locationPlantLabel = new System.Windows.Forms.Label(); + this.locationPlantsComboBox = new System.Windows.Forms.ComboBox(); + this.plantsDataGridView = new System.Windows.Forms.DataGridView(); + this.numberFishLabel = new System.Windows.Forms.Label(); + this.numberFishNumericUpDown = new System.Windows.Forms.NumericUpDown(); + this.deleteFish = new System.Windows.Forms.Button(); + this.updateFish = new System.Windows.Forms.Button(); + this.addFish = new System.Windows.Forms.Button(); + this.locationFishesLabel = new System.Windows.Forms.Label(); + this.locationFishComboBox = new System.Windows.Forms.ComboBox(); + this.deleteLocation = new System.Windows.Forms.Button(); + this.updateLocation = new System.Windows.Forms.Button(); + this.addLocation = new System.Windows.Forms.Button(); + this.locationTextBox = new System.Windows.Forms.TextBox(); + this.locationLabel = new System.Windows.Forms.Label(); + this.deleteFishType = new System.Windows.Forms.Button(); + this.updateFishType = new System.Windows.Forms.Button(); + this.addFishType = new System.Windows.Forms.Button(); + this.updateFishFood = new System.Windows.Forms.Button(); + this.deleteFishFood = new System.Windows.Forms.Button(); + this.addFishFood = new System.Windows.Forms.Button(); + this.fishFoodTextBox = new System.Windows.Forms.TextBox(); + this.fishFoodLabel = new System.Windows.Forms.Label(); + this.fishFoodDataGridView = new System.Windows.Forms.DataGridView(); + this.fishTypeTextBox = new System.Windows.Forms.TextBox(); + this.fishTypeLabel = new System.Windows.Forms.Label(); + this.fishTypeFishesLabel = new System.Windows.Forms.Label(); + this.fishTypeFishesComboBox = new System.Windows.Forms.ComboBox(); + this.locationsDataGridView = new System.Windows.Forms.DataGridView(); + this.fishTypesDataGridView = new System.Windows.Forms.DataGridView(); + this.fishesDataGridView = new System.Windows.Forms.DataGridView(); + this.locationsTopLabel = new System.Windows.Forms.Label(); + this.fishTypesTopLabel = new System.Windows.Forms.Label(); + this.fishFoodTopLabel = new System.Windows.Forms.Label(); + this.plantTypesTopLabel = new System.Windows.Forms.Label(); + this.plantsTopLabel = new System.Windows.Forms.Label(); + this.fishRationsTopLabel = new System.Windows.Forms.Label(); + this.fishesTopLabel = new System.Windows.Forms.Label(); + this.locationsTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.fishTypesTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.fishFoodTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.plantTypesTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.fishesTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.fishRationsTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.deleteFishRation = new System.Windows.Forms.Button(); + this.addFishRation = new System.Windows.Forms.Button(); + this.plantsTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.mainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + ((System.ComponentModel.ISupportInitialize)(this.fishRationsDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.plantTypesDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numberPlantsNumericUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.plantsDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numberFishNumericUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.fishFoodDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.locationsDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.fishTypesDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.fishesDataGridView)).BeginInit(); + this.locationsTableLayoutPanel.SuspendLayout(); + this.fishTypesTableLayoutPanel.SuspendLayout(); + this.fishFoodTableLayoutPanel.SuspendLayout(); + this.plantTypesTableLayoutPanel.SuspendLayout(); + this.fishesTableLayoutPanel.SuspendLayout(); + this.fishRationsTableLayoutPanel.SuspendLayout(); + this.plantsTableLayoutPanel.SuspendLayout(); + this.mainTableLayoutPanel.SuspendLayout(); + this.SuspendLayout(); + // + // fishFoodRationsLabel + // + this.fishFoodRationsLabel.AutoSize = true; + this.fishFoodRationsLabel.Location = new System.Drawing.Point(3, 137); + this.fishFoodRationsLabel.Name = "fishFoodRationsLabel"; + this.fishFoodRationsLabel.Size = new System.Drawing.Size(53, 13); + this.fishFoodRationsLabel.TabIndex = 4; + this.fishFoodRationsLabel.Text = "Fish food:"; + // + // fishFoodRationsComboBox + // + this.fishRationsTableLayoutPanel.SetColumnSpan(this.fishFoodRationsComboBox, 2); + this.fishFoodRationsComboBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishFoodRationsComboBox.FormattingEnabled = true; + this.fishFoodRationsComboBox.Location = new System.Drawing.Point(3, 155); + this.fishFoodRationsComboBox.Name = "fishFoodRationsComboBox"; + this.fishFoodRationsComboBox.Size = new System.Drawing.Size(316, 21); + this.fishFoodRationsComboBox.TabIndex = 3; + // + // fishTypeRationsLabel + // + this.fishTypeRationsLabel.AutoSize = true; + this.fishTypeRationsLabel.Location = new System.Drawing.Point(3, 94); + this.fishTypeRationsLabel.Name = "fishTypeRationsLabel"; + this.fishTypeRationsLabel.Size = new System.Drawing.Size(52, 13); + this.fishTypeRationsLabel.TabIndex = 4; + this.fishTypeRationsLabel.Text = "Fish type:"; + // + // fishTypeRationsComboBox + // + this.fishRationsTableLayoutPanel.SetColumnSpan(this.fishTypeRationsComboBox, 2); + this.fishTypeRationsComboBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishTypeRationsComboBox.FormattingEnabled = true; + this.fishTypeRationsComboBox.Location = new System.Drawing.Point(3, 112); + this.fishTypeRationsComboBox.Name = "fishTypeRationsComboBox"; + this.fishTypeRationsComboBox.Size = new System.Drawing.Size(316, 21); + this.fishTypeRationsComboBox.TabIndex = 3; + // + // fishRationsDataGridView + // + this.fishRationsDataGridView.AllowUserToAddRows = false; + this.fishRationsDataGridView.AllowUserToDeleteRows = false; + this.fishRationsDataGridView.AllowUserToResizeRows = false; + this.fishRationsDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.fishRationsTableLayoutPanel.SetColumnSpan(this.fishRationsDataGridView, 2); + this.fishRationsDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishRationsDataGridView.Location = new System.Drawing.Point(3, 18); + this.fishRationsDataGridView.MultiSelect = false; + this.fishRationsDataGridView.Name = "fishRationsDataGridView"; + this.fishRationsDataGridView.ReadOnly = true; + this.fishRationsDataGridView.RowTemplate.Height = 25; + this.fishRationsDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.fishRationsDataGridView.Size = new System.Drawing.Size(316, 73); + this.fishRationsDataGridView.TabIndex = 0; + // + // plantTypePlantslabel + // + this.plantTypePlantslabel.AutoSize = true; + this.plantTypePlantslabel.Location = new System.Drawing.Point(3, 94); + this.plantTypePlantslabel.Name = "plantTypePlantslabel"; + this.plantTypePlantslabel.Size = new System.Drawing.Size(57, 13); + this.plantTypePlantslabel.TabIndex = 4; + this.plantTypePlantslabel.Text = "Plant type:"; + // + // plantTypePlantsComboBox + // + this.plantsTableLayoutPanel.SetColumnSpan(this.plantTypePlantsComboBox, 3); + this.plantTypePlantsComboBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.plantTypePlantsComboBox.FormattingEnabled = true; + this.plantTypePlantsComboBox.Location = new System.Drawing.Point(3, 112); + this.plantTypePlantsComboBox.Name = "plantTypePlantsComboBox"; + this.plantTypePlantsComboBox.Size = new System.Drawing.Size(316, 21); + this.plantTypePlantsComboBox.TabIndex = 3; + // + // deletePlantType + // + this.deletePlantType.Dock = System.Windows.Forms.DockStyle.Fill; + this.deletePlantType.Location = new System.Drawing.Point(217, 182); + this.deletePlantType.Name = "deletePlantType"; + this.deletePlantType.Size = new System.Drawing.Size(102, 24); + this.deletePlantType.TabIndex = 11; + this.deletePlantType.Text = "delete"; + this.deletePlantType.UseVisualStyleBackColor = true; + this.deletePlantType.Click += new System.EventHandler(this.deletePlantType_Click); + // + // updatePlantType + // + this.updatePlantType.Dock = System.Windows.Forms.DockStyle.Fill; + this.updatePlantType.Location = new System.Drawing.Point(110, 182); + this.updatePlantType.Name = "updatePlantType"; + this.updatePlantType.Size = new System.Drawing.Size(101, 24); + this.updatePlantType.TabIndex = 10; + this.updatePlantType.Text = "update"; + this.updatePlantType.UseVisualStyleBackColor = true; + this.updatePlantType.Click += new System.EventHandler(this.updatePlantType_Click); + // + // addPlantType + // + this.addPlantType.Dock = System.Windows.Forms.DockStyle.Fill; + this.addPlantType.Location = new System.Drawing.Point(3, 182); + this.addPlantType.Name = "addPlantType"; + this.addPlantType.Size = new System.Drawing.Size(101, 24); + this.addPlantType.TabIndex = 10; + this.addPlantType.Text = "add"; + this.addPlantType.UseVisualStyleBackColor = true; + this.addPlantType.Click += new System.EventHandler(this.addPlantType_Click); + // + // plantTypeTextBox + // + this.plantTypesTableLayoutPanel.SetColumnSpan(this.plantTypeTextBox, 3); + this.plantTypeTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.plantTypeTextBox.Location = new System.Drawing.Point(3, 154); + this.plantTypeTextBox.Name = "plantTypeTextBox"; + this.plantTypeTextBox.Size = new System.Drawing.Size(316, 20); + this.plantTypeTextBox.TabIndex = 6; + // + // plantTypelabel + // + this.plantTypelabel.AutoSize = true; + this.plantTypelabel.Location = new System.Drawing.Point(3, 136); + this.plantTypelabel.Name = "plantTypelabel"; + this.plantTypelabel.Size = new System.Drawing.Size(57, 13); + this.plantTypelabel.TabIndex = 5; + this.plantTypelabel.Text = "Plant type:"; + // + // plantTypesDataGridView + // + this.plantTypesDataGridView.AllowUserToAddRows = false; + this.plantTypesDataGridView.AllowUserToDeleteRows = false; + this.plantTypesDataGridView.AllowUserToResizeRows = false; + this.plantTypesDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.plantTypesTableLayoutPanel.SetColumnSpan(this.plantTypesDataGridView, 3); + this.plantTypesDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.plantTypesDataGridView.Location = new System.Drawing.Point(3, 18); + this.plantTypesDataGridView.MultiSelect = false; + this.plantTypesDataGridView.Name = "plantTypesDataGridView"; + this.plantTypesDataGridView.ReadOnly = true; + this.plantTypesDataGridView.RowTemplate.Height = 25; + this.plantTypesDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.plantTypesDataGridView.Size = new System.Drawing.Size(316, 115); + this.plantTypesDataGridView.TabIndex = 1; + // + // numberPlantsNumericUpDown + // + this.plantsTableLayoutPanel.SetColumnSpan(this.numberPlantsNumericUpDown, 3); + this.numberPlantsNumericUpDown.Dock = System.Windows.Forms.DockStyle.Fill; + this.numberPlantsNumericUpDown.Location = new System.Drawing.Point(3, 69); + this.numberPlantsNumericUpDown.Name = "numberPlantsNumericUpDown"; + this.numberPlantsNumericUpDown.Size = new System.Drawing.Size(316, 20); + this.numberPlantsNumericUpDown.TabIndex = 12; + // + // deletePlant + // + this.deletePlant.Dock = System.Windows.Forms.DockStyle.Fill; + this.deletePlant.Location = new System.Drawing.Point(217, 183); + this.deletePlant.Name = "deletePlant"; + this.deletePlant.Size = new System.Drawing.Size(102, 24); + this.deletePlant.TabIndex = 11; + this.deletePlant.Text = "delete"; + this.deletePlant.UseVisualStyleBackColor = true; + this.deletePlant.Click += new System.EventHandler(this.deletePlant_Click); + // + // updatePlant + // + this.updatePlant.Dock = System.Windows.Forms.DockStyle.Fill; + this.updatePlant.Location = new System.Drawing.Point(110, 183); + this.updatePlant.Name = "updatePlant"; + this.updatePlant.Size = new System.Drawing.Size(101, 24); + this.updatePlant.TabIndex = 10; + this.updatePlant.Text = "update"; + this.updatePlant.UseVisualStyleBackColor = true; + this.updatePlant.Click += new System.EventHandler(this.updatePlant_Click); + // + // addPlant + // + this.addPlant.Dock = System.Windows.Forms.DockStyle.Fill; + this.addPlant.Location = new System.Drawing.Point(3, 183); + this.addPlant.Name = "addPlant"; + this.addPlant.Size = new System.Drawing.Size(101, 24); + this.addPlant.TabIndex = 10; + this.addPlant.Text = "add"; + this.addPlant.UseVisualStyleBackColor = true; + this.addPlant.Click += new System.EventHandler(this.addPlant_Click); + // + // numberPlantsLabel + // + this.numberPlantsLabel.AutoSize = true; + this.numberPlantsLabel.Location = new System.Drawing.Point(3, 51); + this.numberPlantsLabel.Name = "numberPlantsLabel"; + this.numberPlantsLabel.Size = new System.Drawing.Size(90, 13); + this.numberPlantsLabel.TabIndex = 8; + this.numberPlantsLabel.Text = "Number of plants:"; + // + // locationPlantLabel + // + this.locationPlantLabel.AutoSize = true; + this.locationPlantLabel.Location = new System.Drawing.Point(3, 137); + this.locationPlantLabel.Name = "locationPlantLabel"; + this.locationPlantLabel.Size = new System.Drawing.Size(51, 13); + this.locationPlantLabel.TabIndex = 4; + this.locationPlantLabel.Text = "Location:"; + // + // locationPlantsComboBox + // + this.plantsTableLayoutPanel.SetColumnSpan(this.locationPlantsComboBox, 3); + this.locationPlantsComboBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.locationPlantsComboBox.FormattingEnabled = true; + this.locationPlantsComboBox.Location = new System.Drawing.Point(3, 155); + this.locationPlantsComboBox.Name = "locationPlantsComboBox"; + this.locationPlantsComboBox.Size = new System.Drawing.Size(316, 21); + this.locationPlantsComboBox.TabIndex = 3; + // + // plantsDataGridView + // + this.plantsDataGridView.AllowUserToAddRows = false; + this.plantsDataGridView.AllowUserToDeleteRows = false; + this.plantsDataGridView.AllowUserToResizeRows = false; + this.plantsDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.plantsTableLayoutPanel.SetColumnSpan(this.plantsDataGridView, 3); + this.plantsDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.plantsDataGridView.Location = new System.Drawing.Point(3, 18); + this.plantsDataGridView.MultiSelect = false; + this.plantsDataGridView.Name = "plantsDataGridView"; + this.plantsDataGridView.ReadOnly = true; + this.plantsDataGridView.RowTemplate.Height = 25; + this.plantsDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.plantsDataGridView.Size = new System.Drawing.Size(316, 30); + this.plantsDataGridView.TabIndex = 0; + // + // numberFishLabel + // + this.numberFishLabel.AutoSize = true; + this.numberFishLabel.Location = new System.Drawing.Point(3, 51); + this.numberFishLabel.Name = "numberFishLabel"; + this.numberFishLabel.Size = new System.Drawing.Size(78, 13); + this.numberFishLabel.TabIndex = 8; + this.numberFishLabel.Text = "Number of fish:"; + // + // numberFishNumericUpDown + // + this.fishesTableLayoutPanel.SetColumnSpan(this.numberFishNumericUpDown, 3); + this.numberFishNumericUpDown.Dock = System.Windows.Forms.DockStyle.Fill; + this.numberFishNumericUpDown.Location = new System.Drawing.Point(3, 69); + this.numberFishNumericUpDown.Name = "numberFishNumericUpDown"; + this.numberFishNumericUpDown.Size = new System.Drawing.Size(316, 20); + this.numberFishNumericUpDown.TabIndex = 12; + // + // deleteFish + // + this.deleteFish.Dock = System.Windows.Forms.DockStyle.Fill; + this.deleteFish.Location = new System.Drawing.Point(217, 183); + this.deleteFish.Name = "deleteFish"; + this.deleteFish.Size = new System.Drawing.Size(102, 24); + this.deleteFish.TabIndex = 11; + this.deleteFish.Text = "delete"; + this.deleteFish.UseVisualStyleBackColor = true; + this.deleteFish.Click += new System.EventHandler(this.deleteFish_Click); + // + // updateFish + // + this.updateFish.Dock = System.Windows.Forms.DockStyle.Fill; + this.updateFish.Location = new System.Drawing.Point(110, 183); + this.updateFish.Name = "updateFish"; + this.updateFish.Size = new System.Drawing.Size(101, 24); + this.updateFish.TabIndex = 10; + this.updateFish.Text = "update"; + this.updateFish.UseVisualStyleBackColor = true; + this.updateFish.Click += new System.EventHandler(this.updateFish_Click); + // + // addFish + // + this.addFish.Dock = System.Windows.Forms.DockStyle.Fill; + this.addFish.Location = new System.Drawing.Point(3, 183); + this.addFish.Name = "addFish"; + this.addFish.Size = new System.Drawing.Size(101, 24); + this.addFish.TabIndex = 10; + this.addFish.Text = "add"; + this.addFish.UseVisualStyleBackColor = true; + this.addFish.Click += new System.EventHandler(this.addFish_Click); + // + // locationFishesLabel + // + this.locationFishesLabel.AutoSize = true; + this.locationFishesLabel.Location = new System.Drawing.Point(3, 137); + this.locationFishesLabel.Name = "locationFishesLabel"; + this.locationFishesLabel.Size = new System.Drawing.Size(51, 13); + this.locationFishesLabel.TabIndex = 4; + this.locationFishesLabel.Text = "Location:"; + // + // locationFishComboBox + // + this.fishesTableLayoutPanel.SetColumnSpan(this.locationFishComboBox, 3); + this.locationFishComboBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.locationFishComboBox.FormattingEnabled = true; + this.locationFishComboBox.Location = new System.Drawing.Point(3, 155); + this.locationFishComboBox.Name = "locationFishComboBox"; + this.locationFishComboBox.Size = new System.Drawing.Size(316, 21); + this.locationFishComboBox.TabIndex = 3; + // + // deleteLocation + // + this.deleteLocation.Dock = System.Windows.Forms.DockStyle.Fill; + this.deleteLocation.Location = new System.Drawing.Point(654, 182); + this.deleteLocation.Name = "deleteLocation"; + this.deleteLocation.Size = new System.Drawing.Size(321, 24); + this.deleteLocation.TabIndex = 11; + this.deleteLocation.Text = "delete"; + this.deleteLocation.UseVisualStyleBackColor = true; + this.deleteLocation.Click += new System.EventHandler(this.deleteLocation_Click); + // + // updateLocation + // + this.updateLocation.Dock = System.Windows.Forms.DockStyle.Fill; + this.updateLocation.Location = new System.Drawing.Point(328, 182); + this.updateLocation.Name = "updateLocation"; + this.updateLocation.Size = new System.Drawing.Size(320, 24); + this.updateLocation.TabIndex = 10; + this.updateLocation.Text = "update"; + this.updateLocation.UseVisualStyleBackColor = true; + this.updateLocation.Click += new System.EventHandler(this.updateLocation_Click); + // + // addLocation + // + this.addLocation.Dock = System.Windows.Forms.DockStyle.Fill; + this.addLocation.Location = new System.Drawing.Point(3, 182); + this.addLocation.Name = "addLocation"; + this.addLocation.Size = new System.Drawing.Size(319, 24); + this.addLocation.TabIndex = 10; + this.addLocation.Text = "add"; + this.addLocation.UseVisualStyleBackColor = true; + this.addLocation.Click += new System.EventHandler(this.addLocation_Click); + // + // locationTextBox + // + this.locationsTableLayoutPanel.SetColumnSpan(this.locationTextBox, 3); + this.locationTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.locationTextBox.Location = new System.Drawing.Point(3, 154); + this.locationTextBox.Name = "locationTextBox"; + this.locationTextBox.Size = new System.Drawing.Size(972, 20); + this.locationTextBox.TabIndex = 9; + // + // locationLabel + // + this.locationLabel.AutoSize = true; + this.locationLabel.Location = new System.Drawing.Point(3, 136); + this.locationLabel.Name = "locationLabel"; + this.locationLabel.Size = new System.Drawing.Size(38, 13); + this.locationLabel.TabIndex = 8; + this.locationLabel.Text = "Name:"; + // + // deleteFishType + // + this.deleteFishType.Dock = System.Windows.Forms.DockStyle.Fill; + this.deleteFishType.Location = new System.Drawing.Point(217, 182); + this.deleteFishType.Name = "deleteFishType"; + this.deleteFishType.Size = new System.Drawing.Size(102, 24); + this.deleteFishType.TabIndex = 11; + this.deleteFishType.Text = "delete"; + this.deleteFishType.UseVisualStyleBackColor = true; + this.deleteFishType.Click += new System.EventHandler(this.deleteFishType_Click); + // + // updateFishType + // + this.updateFishType.Dock = System.Windows.Forms.DockStyle.Fill; + this.updateFishType.Location = new System.Drawing.Point(110, 182); + this.updateFishType.Name = "updateFishType"; + this.updateFishType.Size = new System.Drawing.Size(101, 24); + this.updateFishType.TabIndex = 10; + this.updateFishType.Text = "update"; + this.updateFishType.UseVisualStyleBackColor = true; + this.updateFishType.Click += new System.EventHandler(this.updateFishType_Click); + // + // addFishType + // + this.addFishType.Dock = System.Windows.Forms.DockStyle.Fill; + this.addFishType.Location = new System.Drawing.Point(3, 182); + this.addFishType.Name = "addFishType"; + this.addFishType.Size = new System.Drawing.Size(101, 24); + this.addFishType.TabIndex = 10; + this.addFishType.Text = "add"; + this.addFishType.UseVisualStyleBackColor = true; + this.addFishType.Click += new System.EventHandler(this.addFishType_Click); + // + // updateFishFood + // + this.updateFishFood.Dock = System.Windows.Forms.DockStyle.Fill; + this.updateFishFood.Location = new System.Drawing.Point(110, 182); + this.updateFishFood.Name = "updateFishFood"; + this.updateFishFood.Size = new System.Drawing.Size(101, 24); + this.updateFishFood.TabIndex = 10; + this.updateFishFood.Text = "update"; + this.updateFishFood.UseVisualStyleBackColor = true; + this.updateFishFood.Click += new System.EventHandler(this.updateFishFood_Click); + // + // deleteFishFood + // + this.deleteFishFood.Dock = System.Windows.Forms.DockStyle.Fill; + this.deleteFishFood.Location = new System.Drawing.Point(217, 182); + this.deleteFishFood.Name = "deleteFishFood"; + this.deleteFishFood.Size = new System.Drawing.Size(102, 24); + this.deleteFishFood.TabIndex = 11; + this.deleteFishFood.Text = "delete"; + this.deleteFishFood.UseVisualStyleBackColor = true; + this.deleteFishFood.Click += new System.EventHandler(this.deleteFishFood_Click); + // + // addFishFood + // + this.addFishFood.Dock = System.Windows.Forms.DockStyle.Fill; + this.addFishFood.Location = new System.Drawing.Point(3, 182); + this.addFishFood.Name = "addFishFood"; + this.addFishFood.Size = new System.Drawing.Size(101, 24); + this.addFishFood.TabIndex = 10; + this.addFishFood.Text = "add"; + this.addFishFood.UseVisualStyleBackColor = true; + this.addFishFood.Click += new System.EventHandler(this.addFishFood_Click); + // + // fishFoodTextBox + // + this.fishFoodTableLayoutPanel.SetColumnSpan(this.fishFoodTextBox, 3); + this.fishFoodTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishFoodTextBox.Location = new System.Drawing.Point(3, 157); + this.fishFoodTextBox.Name = "fishFoodTextBox"; + this.fishFoodTextBox.Size = new System.Drawing.Size(316, 20); + this.fishFoodTextBox.TabIndex = 9; + // + // fishFoodLabel + // + this.fishFoodLabel.AutoSize = true; + this.fishFoodLabel.Location = new System.Drawing.Point(3, 139); + this.fishFoodLabel.Name = "fishFoodLabel"; + this.fishFoodLabel.Size = new System.Drawing.Size(53, 13); + this.fishFoodLabel.TabIndex = 8; + this.fishFoodLabel.Text = "Fish food:"; + // + // fishFoodDataGridView + // + this.fishFoodDataGridView.AllowUserToAddRows = false; + this.fishFoodDataGridView.AllowUserToDeleteRows = false; + this.fishFoodDataGridView.AllowUserToResizeRows = false; + this.fishFoodDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.fishFoodTableLayoutPanel.SetColumnSpan(this.fishFoodDataGridView, 3); + this.fishFoodDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishFoodDataGridView.Location = new System.Drawing.Point(3, 18); + this.fishFoodDataGridView.MultiSelect = false; + this.fishFoodDataGridView.Name = "fishFoodDataGridView"; + this.fishFoodDataGridView.ReadOnly = true; + this.fishFoodDataGridView.RowTemplate.Height = 25; + this.fishFoodDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.fishFoodDataGridView.Size = new System.Drawing.Size(316, 118); + this.fishFoodDataGridView.TabIndex = 7; + // + // fishTypeTextBox + // + this.fishTypesTableLayoutPanel.SetColumnSpan(this.fishTypeTextBox, 3); + this.fishTypeTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishTypeTextBox.Location = new System.Drawing.Point(3, 154); + this.fishTypeTextBox.Name = "fishTypeTextBox"; + this.fishTypeTextBox.Size = new System.Drawing.Size(316, 20); + this.fishTypeTextBox.TabIndex = 6; + // + // fishTypeLabel + // + this.fishTypeLabel.AutoSize = true; + this.fishTypeLabel.Location = new System.Drawing.Point(3, 136); + this.fishTypeLabel.Name = "fishTypeLabel"; + this.fishTypeLabel.Size = new System.Drawing.Size(52, 13); + this.fishTypeLabel.TabIndex = 5; + this.fishTypeLabel.Text = "Fish type:"; + // + // fishTypeFishesLabel + // + this.fishTypeFishesLabel.AutoSize = true; + this.fishTypeFishesLabel.Location = new System.Drawing.Point(3, 94); + this.fishTypeFishesLabel.Name = "fishTypeFishesLabel"; + this.fishTypeFishesLabel.Size = new System.Drawing.Size(52, 13); + this.fishTypeFishesLabel.TabIndex = 4; + this.fishTypeFishesLabel.Text = "Fish type:"; + // + // fishTypeFishesComboBox + // + this.fishesTableLayoutPanel.SetColumnSpan(this.fishTypeFishesComboBox, 3); + this.fishTypeFishesComboBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishTypeFishesComboBox.FormattingEnabled = true; + this.fishTypeFishesComboBox.Location = new System.Drawing.Point(3, 112); + this.fishTypeFishesComboBox.Name = "fishTypeFishesComboBox"; + this.fishTypeFishesComboBox.Size = new System.Drawing.Size(316, 21); + this.fishTypeFishesComboBox.TabIndex = 3; + // + // locationsDataGridView + // + this.locationsDataGridView.AllowUserToAddRows = false; + this.locationsDataGridView.AllowUserToDeleteRows = false; + this.locationsDataGridView.AllowUserToResizeRows = false; + this.locationsDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.locationsTableLayoutPanel.SetColumnSpan(this.locationsDataGridView, 3); + this.locationsDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.locationsDataGridView.Location = new System.Drawing.Point(3, 18); + this.locationsDataGridView.MultiSelect = false; + this.locationsDataGridView.Name = "locationsDataGridView"; + this.locationsDataGridView.ReadOnly = true; + this.locationsDataGridView.RowTemplate.Height = 25; + this.locationsDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.locationsDataGridView.Size = new System.Drawing.Size(972, 115); + this.locationsDataGridView.TabIndex = 2; + // + // fishTypesDataGridView + // + this.fishTypesDataGridView.AllowUserToAddRows = false; + this.fishTypesDataGridView.AllowUserToDeleteRows = false; + this.fishTypesDataGridView.AllowUserToResizeRows = false; + this.fishTypesDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.fishTypesTableLayoutPanel.SetColumnSpan(this.fishTypesDataGridView, 3); + this.fishTypesDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishTypesDataGridView.Location = new System.Drawing.Point(3, 18); + this.fishTypesDataGridView.MultiSelect = false; + this.fishTypesDataGridView.Name = "fishTypesDataGridView"; + this.fishTypesDataGridView.ReadOnly = true; + this.fishTypesDataGridView.RowTemplate.Height = 25; + this.fishTypesDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.fishTypesDataGridView.Size = new System.Drawing.Size(316, 115); + this.fishTypesDataGridView.TabIndex = 1; + // + // fishesDataGridView + // + this.fishesDataGridView.AllowUserToAddRows = false; + this.fishesDataGridView.AllowUserToDeleteRows = false; + this.fishesDataGridView.AllowUserToResizeRows = false; + this.fishesDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.fishesTableLayoutPanel.SetColumnSpan(this.fishesDataGridView, 3); + this.fishesDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishesDataGridView.Location = new System.Drawing.Point(3, 18); + this.fishesDataGridView.MultiSelect = false; + this.fishesDataGridView.Name = "fishesDataGridView"; + this.fishesDataGridView.ReadOnly = true; + this.fishesDataGridView.RowTemplate.Height = 25; + this.fishesDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.fishesDataGridView.Size = new System.Drawing.Size(316, 30); + this.fishesDataGridView.TabIndex = 0; + // + // locationsTopLabel + // + this.locationsTopLabel.AutoSize = true; + this.locationsTopLabel.Location = new System.Drawing.Point(3, 0); + this.locationsTopLabel.Name = "locationsTopLabel"; + this.locationsTopLabel.Size = new System.Drawing.Size(56, 13); + this.locationsTopLabel.TabIndex = 13; + this.locationsTopLabel.Text = "Locations:"; + // + // fishTypesTopLabel + // + this.fishTypesTopLabel.AutoSize = true; + this.fishTypesTopLabel.Location = new System.Drawing.Point(3, 0); + this.fishTypesTopLabel.Name = "fishTypesTopLabel"; + this.fishTypesTopLabel.Size = new System.Drawing.Size(57, 13); + this.fishTypesTopLabel.TabIndex = 14; + this.fishTypesTopLabel.Text = "Fish types:"; + // + // fishFoodTopLabel + // + this.fishFoodTopLabel.AutoSize = true; + this.fishFoodTopLabel.Location = new System.Drawing.Point(3, 0); + this.fishFoodTopLabel.Name = "fishFoodTopLabel"; + this.fishFoodTopLabel.Size = new System.Drawing.Size(53, 13); + this.fishFoodTopLabel.TabIndex = 15; + this.fishFoodTopLabel.Text = "Fish food:"; + // + // plantTypesTopLabel + // + this.plantTypesTopLabel.AutoSize = true; + this.plantTypesTopLabel.Location = new System.Drawing.Point(3, 0); + this.plantTypesTopLabel.Name = "plantTypesTopLabel"; + this.plantTypesTopLabel.Size = new System.Drawing.Size(62, 13); + this.plantTypesTopLabel.TabIndex = 15; + this.plantTypesTopLabel.Text = "Plant types:"; + // + // plantsTopLabel + // + this.plantsTopLabel.AutoSize = true; + this.plantsTopLabel.Location = new System.Drawing.Point(3, 0); + this.plantsTopLabel.Name = "plantsTopLabel"; + this.plantsTopLabel.Size = new System.Drawing.Size(39, 13); + this.plantsTopLabel.TabIndex = 18; + this.plantsTopLabel.Text = "Plants:"; + // + // fishRationsTopLabel + // + this.fishRationsTopLabel.AutoSize = true; + this.fishRationsTopLabel.Location = new System.Drawing.Point(3, 0); + this.fishRationsTopLabel.Name = "fishRationsTopLabel"; + this.fishRationsTopLabel.Size = new System.Drawing.Size(63, 13); + this.fishRationsTopLabel.TabIndex = 17; + this.fishRationsTopLabel.Text = "Fish rations:"; + // + // fishesTopLabel + // + this.fishesTopLabel.AutoSize = true; + this.fishesTopLabel.Location = new System.Drawing.Point(3, 0); + this.fishesTopLabel.Name = "fishesTopLabel"; + this.fishesTopLabel.Size = new System.Drawing.Size(40, 13); + this.fishesTopLabel.TabIndex = 16; + this.fishesTopLabel.Text = "Fishes:"; + // + // locationsTableLayoutPanel + // + this.locationsTableLayoutPanel.ColumnCount = 3; + this.mainTableLayoutPanel.SetColumnSpan(this.locationsTableLayoutPanel, 3); + this.locationsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F)); + this.locationsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.locationsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.locationsTableLayoutPanel.Controls.Add(this.locationsTopLabel, 0, 0); + this.locationsTableLayoutPanel.Controls.Add(this.locationsDataGridView, 0, 1); + this.locationsTableLayoutPanel.Controls.Add(this.locationTextBox, 0, 3); + this.locationsTableLayoutPanel.Controls.Add(this.addLocation, 0, 4); + this.locationsTableLayoutPanel.Controls.Add(this.updateLocation, 1, 4); + this.locationsTableLayoutPanel.Controls.Add(this.deleteLocation, 2, 4); + this.locationsTableLayoutPanel.Controls.Add(this.locationLabel, 0, 2); + this.locationsTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.locationsTableLayoutPanel.Location = new System.Drawing.Point(3, 3); + this.locationsTableLayoutPanel.Name = "locationsTableLayoutPanel"; + this.locationsTableLayoutPanel.RowCount = 5; + this.locationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.locationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.locationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.locationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.locationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.locationsTableLayoutPanel.Size = new System.Drawing.Size(978, 209); + this.locationsTableLayoutPanel.TabIndex = 19; + // + // fishTypesTableLayoutPanel + // + this.fishTypesTableLayoutPanel.ColumnCount = 3; + this.fishTypesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishTypesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishTypesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishTypesTableLayoutPanel.Controls.Add(this.fishTypesTopLabel, 0, 0); + this.fishTypesTableLayoutPanel.Controls.Add(this.fishTypesDataGridView, 0, 1); + this.fishTypesTableLayoutPanel.Controls.Add(this.fishTypeLabel, 0, 2); + this.fishTypesTableLayoutPanel.Controls.Add(this.fishTypeTextBox, 0, 3); + this.fishTypesTableLayoutPanel.Controls.Add(this.addFishType, 0, 4); + this.fishTypesTableLayoutPanel.Controls.Add(this.updateFishType, 1, 4); + this.fishTypesTableLayoutPanel.Controls.Add(this.deleteFishType, 2, 4); + this.fishTypesTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishTypesTableLayoutPanel.Location = new System.Drawing.Point(3, 218); + this.fishTypesTableLayoutPanel.Name = "fishTypesTableLayoutPanel"; + this.fishTypesTableLayoutPanel.RowCount = 5; + this.fishTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.fishTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.fishTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.fishTypesTableLayoutPanel.Size = new System.Drawing.Size(322, 209); + this.fishTypesTableLayoutPanel.TabIndex = 20; + // + // fishFoodTableLayoutPanel + // + this.fishFoodTableLayoutPanel.ColumnCount = 3; + this.fishFoodTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishFoodTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishFoodTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishFoodTableLayoutPanel.Controls.Add(this.fishFoodTopLabel, 0, 0); + this.fishFoodTableLayoutPanel.Controls.Add(this.fishFoodDataGridView, 0, 1); + this.fishFoodTableLayoutPanel.Controls.Add(this.fishFoodLabel, 0, 2); + this.fishFoodTableLayoutPanel.Controls.Add(this.fishFoodTextBox, 0, 3); + this.fishFoodTableLayoutPanel.Controls.Add(this.addFishFood, 0, 4); + this.fishFoodTableLayoutPanel.Controls.Add(this.updateFishFood, 1, 4); + this.fishFoodTableLayoutPanel.Controls.Add(this.deleteFishFood, 2, 4); + this.fishFoodTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishFoodTableLayoutPanel.Location = new System.Drawing.Point(331, 218); + this.fishFoodTableLayoutPanel.Name = "fishFoodTableLayoutPanel"; + this.fishFoodTableLayoutPanel.RowCount = 5; + this.fishFoodTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishFoodTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.fishFoodTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishFoodTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); + this.fishFoodTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.fishFoodTableLayoutPanel.Size = new System.Drawing.Size(322, 209); + this.fishFoodTableLayoutPanel.TabIndex = 21; + // + // plantTypesTableLayoutPanel + // + this.plantTypesTableLayoutPanel.ColumnCount = 3; + this.plantTypesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.plantTypesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.plantTypesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.plantTypesTableLayoutPanel.Controls.Add(this.plantTypesTopLabel, 0, 0); + this.plantTypesTableLayoutPanel.Controls.Add(this.plantTypesDataGridView, 0, 1); + this.plantTypesTableLayoutPanel.Controls.Add(this.plantTypelabel, 0, 2); + this.plantTypesTableLayoutPanel.Controls.Add(this.plantTypeTextBox, 0, 3); + this.plantTypesTableLayoutPanel.Controls.Add(this.addPlantType, 0, 4); + this.plantTypesTableLayoutPanel.Controls.Add(this.updatePlantType, 1, 4); + this.plantTypesTableLayoutPanel.Controls.Add(this.deletePlantType, 2, 4); + this.plantTypesTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.plantTypesTableLayoutPanel.Location = new System.Drawing.Point(659, 218); + this.plantTypesTableLayoutPanel.Name = "plantTypesTableLayoutPanel"; + this.plantTypesTableLayoutPanel.RowCount = 5; + this.plantTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.plantTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.plantTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.plantTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.plantTypesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.plantTypesTableLayoutPanel.Size = new System.Drawing.Size(322, 209); + this.plantTypesTableLayoutPanel.TabIndex = 22; + // + // fishesTableLayoutPanel + // + this.fishesTableLayoutPanel.ColumnCount = 3; + this.fishesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishesTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.fishesTableLayoutPanel.Controls.Add(this.fishesTopLabel, 0, 0); + this.fishesTableLayoutPanel.Controls.Add(this.fishesDataGridView, 0, 1); + this.fishesTableLayoutPanel.Controls.Add(this.numberFishLabel, 0, 2); + this.fishesTableLayoutPanel.Controls.Add(this.numberFishNumericUpDown, 0, 3); + this.fishesTableLayoutPanel.Controls.Add(this.fishTypeFishesLabel, 0, 4); + this.fishesTableLayoutPanel.Controls.Add(this.fishTypeFishesComboBox, 0, 5); + this.fishesTableLayoutPanel.Controls.Add(this.locationFishesLabel, 0, 6); + this.fishesTableLayoutPanel.Controls.Add(this.locationFishComboBox, 0, 7); + this.fishesTableLayoutPanel.Controls.Add(this.addFish, 0, 8); + this.fishesTableLayoutPanel.Controls.Add(this.updateFish, 1, 8); + this.fishesTableLayoutPanel.Controls.Add(this.deleteFish, 2, 8); + this.fishesTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishesTableLayoutPanel.Location = new System.Drawing.Point(3, 433); + this.fishesTableLayoutPanel.Name = "fishesTableLayoutPanel"; + this.fishesTableLayoutPanel.RowCount = 9; + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.fishesTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.fishesTableLayoutPanel.Size = new System.Drawing.Size(322, 210); + this.fishesTableLayoutPanel.TabIndex = 23; + // + // fishRationsTableLayoutPanel + // + this.fishRationsTableLayoutPanel.ColumnCount = 2; + this.fishRationsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.fishRationsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.fishRationsTableLayoutPanel.Controls.Add(this.fishRationsTopLabel, 0, 0); + this.fishRationsTableLayoutPanel.Controls.Add(this.fishRationsDataGridView, 0, 1); + this.fishRationsTableLayoutPanel.Controls.Add(this.fishTypeRationsLabel, 0, 2); + this.fishRationsTableLayoutPanel.Controls.Add(this.fishTypeRationsComboBox, 0, 3); + this.fishRationsTableLayoutPanel.Controls.Add(this.fishFoodRationsLabel, 0, 4); + this.fishRationsTableLayoutPanel.Controls.Add(this.fishFoodRationsComboBox, 0, 5); + this.fishRationsTableLayoutPanel.Controls.Add(this.deleteFishRation, 1, 6); + this.fishRationsTableLayoutPanel.Controls.Add(this.addFishRation, 0, 6); + this.fishRationsTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.fishRationsTableLayoutPanel.Location = new System.Drawing.Point(331, 433); + this.fishRationsTableLayoutPanel.Name = "fishRationsTableLayoutPanel"; + this.fishRationsTableLayoutPanel.RowCount = 7; + this.fishRationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishRationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.fishRationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishRationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.fishRationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.fishRationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.fishRationsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.fishRationsTableLayoutPanel.Size = new System.Drawing.Size(322, 210); + this.fishRationsTableLayoutPanel.TabIndex = 24; + // + // deleteFishRation + // + this.deleteFishRation.Dock = System.Windows.Forms.DockStyle.Fill; + this.deleteFishRation.Location = new System.Drawing.Point(164, 183); + this.deleteFishRation.Name = "deleteFishRation"; + this.deleteFishRation.Size = new System.Drawing.Size(155, 24); + this.deleteFishRation.TabIndex = 11; + this.deleteFishRation.Text = "delete"; + this.deleteFishRation.UseVisualStyleBackColor = true; + this.deleteFishRation.Click += new System.EventHandler(this.deleteFishRation_Click); + // + // addFishRation + // + this.addFishRation.Dock = System.Windows.Forms.DockStyle.Fill; + this.addFishRation.Location = new System.Drawing.Point(3, 183); + this.addFishRation.Name = "addFishRation"; + this.addFishRation.Size = new System.Drawing.Size(155, 24); + this.addFishRation.TabIndex = 10; + this.addFishRation.Text = "add"; + this.addFishRation.UseVisualStyleBackColor = true; + this.addFishRation.Click += new System.EventHandler(this.addFishRation_Click); + // + // plantsTableLayoutPanel + // + this.plantsTableLayoutPanel.ColumnCount = 3; + this.plantsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.plantsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.plantsTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.plantsTableLayoutPanel.Controls.Add(this.plantsTopLabel, 0, 0); + this.plantsTableLayoutPanel.Controls.Add(this.plantsDataGridView, 0, 1); + this.plantsTableLayoutPanel.Controls.Add(this.numberPlantsLabel, 0, 2); + this.plantsTableLayoutPanel.Controls.Add(this.numberPlantsNumericUpDown, 0, 3); + this.plantsTableLayoutPanel.Controls.Add(this.plantTypePlantslabel, 0, 4); + this.plantsTableLayoutPanel.Controls.Add(this.plantTypePlantsComboBox, 0, 5); + this.plantsTableLayoutPanel.Controls.Add(this.locationPlantLabel, 0, 6); + this.plantsTableLayoutPanel.Controls.Add(this.deletePlant, 2, 8); + this.plantsTableLayoutPanel.Controls.Add(this.locationPlantsComboBox, 0, 7); + this.plantsTableLayoutPanel.Controls.Add(this.updatePlant, 1, 8); + this.plantsTableLayoutPanel.Controls.Add(this.addPlant, 0, 8); + this.plantsTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.plantsTableLayoutPanel.Location = new System.Drawing.Point(659, 433); + this.plantsTableLayoutPanel.Name = "plantsTableLayoutPanel"; + this.plantsTableLayoutPanel.RowCount = 9; + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.plantsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.plantsTableLayoutPanel.Size = new System.Drawing.Size(322, 210); + this.plantsTableLayoutPanel.TabIndex = 25; + // + // mainTableLayoutPanel + // + this.mainTableLayoutPanel.ColumnCount = 3; + this.mainTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.mainTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.mainTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.mainTableLayoutPanel.Controls.Add(this.locationsTableLayoutPanel, 0, 0); + this.mainTableLayoutPanel.Controls.Add(this.plantsTableLayoutPanel, 2, 2); + this.mainTableLayoutPanel.Controls.Add(this.fishTypesTableLayoutPanel, 0, 1); + this.mainTableLayoutPanel.Controls.Add(this.fishRationsTableLayoutPanel, 1, 2); + this.mainTableLayoutPanel.Controls.Add(this.fishFoodTableLayoutPanel, 1, 1); + this.mainTableLayoutPanel.Controls.Add(this.fishesTableLayoutPanel, 0, 2); + this.mainTableLayoutPanel.Controls.Add(this.plantTypesTableLayoutPanel, 2, 1); + this.mainTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.mainTableLayoutPanel.Location = new System.Drawing.Point(0, 0); + this.mainTableLayoutPanel.Name = "mainTableLayoutPanel"; + this.mainTableLayoutPanel.RowCount = 3; + this.mainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.mainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.mainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.mainTableLayoutPanel.Size = new System.Drawing.Size(984, 646); + this.mainTableLayoutPanel.TabIndex = 26; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(984, 661); + this.Controls.Add(this.mainTableLayoutPanel); + this.DoubleBuffered = true; + this.MinimumSize = new System.Drawing.Size(800, 600); + this.Name = "MainForm"; + this.Padding = new System.Windows.Forms.Padding(0, 0, 0, 15); + this.Text = "Application"; + ((System.ComponentModel.ISupportInitialize)(this.fishRationsDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.plantTypesDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numberPlantsNumericUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.plantsDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numberFishNumericUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.fishFoodDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.locationsDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.fishTypesDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.fishesDataGridView)).EndInit(); + this.locationsTableLayoutPanel.ResumeLayout(false); + this.locationsTableLayoutPanel.PerformLayout(); + this.fishTypesTableLayoutPanel.ResumeLayout(false); + this.fishTypesTableLayoutPanel.PerformLayout(); + this.fishFoodTableLayoutPanel.ResumeLayout(false); + this.fishFoodTableLayoutPanel.PerformLayout(); + this.plantTypesTableLayoutPanel.ResumeLayout(false); + this.plantTypesTableLayoutPanel.PerformLayout(); + this.fishesTableLayoutPanel.ResumeLayout(false); + this.fishesTableLayoutPanel.PerformLayout(); + this.fishRationsTableLayoutPanel.ResumeLayout(false); + this.fishRationsTableLayoutPanel.PerformLayout(); + this.plantsTableLayoutPanel.ResumeLayout(false); + this.plantsTableLayoutPanel.PerformLayout(); + this.mainTableLayoutPanel.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Label fishFoodRationsLabel; + private System.Windows.Forms.ComboBox fishFoodRationsComboBox; + private System.Windows.Forms.Label fishTypeRationsLabel; + private System.Windows.Forms.ComboBox fishTypeRationsComboBox; + private System.Windows.Forms.DataGridView fishRationsDataGridView; + private System.Windows.Forms.Label plantTypePlantslabel; + private System.Windows.Forms.ComboBox plantTypePlantsComboBox; + private System.Windows.Forms.Button deletePlantType; + private System.Windows.Forms.Button updatePlantType; + private System.Windows.Forms.Button addPlantType; + private System.Windows.Forms.TextBox plantTypeTextBox; + private System.Windows.Forms.Label plantTypelabel; + private System.Windows.Forms.DataGridView plantTypesDataGridView; + private System.Windows.Forms.NumericUpDown numberPlantsNumericUpDown; + private System.Windows.Forms.Button deletePlant; + private System.Windows.Forms.Button updatePlant; + private System.Windows.Forms.Button addPlant; + private System.Windows.Forms.Label numberPlantsLabel; + private System.Windows.Forms.Label locationPlantLabel; + private System.Windows.Forms.ComboBox locationPlantsComboBox; + private System.Windows.Forms.DataGridView plantsDataGridView; + private System.Windows.Forms.Label numberFishLabel; + private System.Windows.Forms.NumericUpDown numberFishNumericUpDown; + private System.Windows.Forms.Button deleteFish; + private System.Windows.Forms.Button updateFish; + private System.Windows.Forms.Button addFish; + private System.Windows.Forms.Label locationFishesLabel; + private System.Windows.Forms.ComboBox locationFishComboBox; + private System.Windows.Forms.Button deleteLocation; + private System.Windows.Forms.Button updateLocation; + private System.Windows.Forms.Button addLocation; + private System.Windows.Forms.TextBox locationTextBox; + private System.Windows.Forms.Label locationLabel; + private System.Windows.Forms.Button deleteFishType; + private System.Windows.Forms.Button updateFishType; + private System.Windows.Forms.Button addFishType; + private System.Windows.Forms.Button updateFishFood; + private System.Windows.Forms.Button deleteFishFood; + private System.Windows.Forms.Button addFishFood; + private System.Windows.Forms.TextBox fishFoodTextBox; + private System.Windows.Forms.Label fishFoodLabel; + private System.Windows.Forms.DataGridView fishFoodDataGridView; + private System.Windows.Forms.TextBox fishTypeTextBox; + private System.Windows.Forms.Label fishTypeLabel; + private System.Windows.Forms.Label fishTypeFishesLabel; + private System.Windows.Forms.ComboBox fishTypeFishesComboBox; + private System.Windows.Forms.DataGridView locationsDataGridView; + private System.Windows.Forms.DataGridView fishTypesDataGridView; + private System.Windows.Forms.DataGridView fishesDataGridView; + private System.Windows.Forms.Label locationsTopLabel; + private System.Windows.Forms.Label fishTypesTopLabel; + private System.Windows.Forms.Label fishFoodTopLabel; + private System.Windows.Forms.Label plantTypesTopLabel; + private System.Windows.Forms.Label plantsTopLabel; + private System.Windows.Forms.Label fishRationsTopLabel; + private System.Windows.Forms.Label fishesTopLabel; + private System.Windows.Forms.TableLayoutPanel fishRationsTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel plantsTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel plantTypesTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel fishesTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel locationsTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel mainTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel fishTypesTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel fishFoodTableLayoutPanel; + private System.Windows.Forms.Button deleteFishRation; + private System.Windows.Forms.Button addFishRation; + } +} + diff --git a/Database/MainForm.cs b/Database/MainForm.cs new file mode 100644 index 0000000..90275f9 --- /dev/null +++ b/Database/MainForm.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.OleDb; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Database +{ + public partial class MainForm : Form + { + + private Fishes fishes; + private Plants plants; + private FishFood fishFood; + private Locations locations; + private FishTypes fishTypes; + private PlantTypes plantTypes; + private FishRations fishRations; + + public MainForm() + { + InitializeComponent(); + ConfigureWidgets(); + ConfigureText(); + } + private void ConfigureWidgets() { + fishes = new Fishes(fishesDataGridView); + plants = new Plants(plantsDataGridView); + fishFood = new FishFood(fishFoodDataGridView); + locations = new Locations(locationsDataGridView); + fishTypes = new FishTypes(fishTypesDataGridView); + plantTypes = new PlantTypes(plantTypesDataGridView); + fishRations = new FishRations(fishRationsDataGridView); + + var initializerList = new (ComboBox, DataGridView)[6] { + (fishTypeFishesComboBox, fishTypesDataGridView), + (locationFishComboBox, locationsDataGridView), + (fishTypeRationsComboBox, fishTypesDataGridView), + (fishFoodRationsComboBox, fishFoodDataGridView), + (plantTypePlantsComboBox, plantTypesDataGridView), + (locationPlantsComboBox, locationsDataGridView) + }; + foreach (var pair in initializerList) { + pair.Item1.DataSource = pair.Item2.DataSource; + pair.Item1.DropDownStyle = ComboBoxStyle.DropDownList; + pair.Item1.DisplayMember = "data"; + pair.Item1.ValueMember = "id"; + } + } + private void ConfigureText() { + var initializerList = new DataGridView[7] { + fishesDataGridView, + plantsDataGridView, + fishFoodDataGridView, + locationsDataGridView, + fishTypesDataGridView, + plantTypesDataGridView, + fishRationsDataGridView + }; + foreach (var dataGridView in initializerList) + dataGridView.Columns["id"].HeaderText = "Identifier"; + fishesDataGridView.Columns["id"].Visible = false; + plantsDataGridView.Columns["id"].Visible = false; + fishesDataGridView.Columns["type"].HeaderText = "Type of fish"; + fishesDataGridView.Columns["location"].HeaderText = "Place of residence"; + fishesDataGridView.Columns["number"].HeaderText = "Population"; + plantsDataGridView.Columns["type"].HeaderText = "Type of plant"; + plantsDataGridView.Columns["location"].HeaderText = "Plant location"; + plantsDataGridView.Columns["number"].HeaderText = "Number of plants"; + fishFoodDataGridView.Columns["data"].HeaderText = "Fish nutrition"; + locationsDataGridView.Columns["data"].HeaderText = "Place of residence"; + fishTypesDataGridView.Columns["data"].HeaderText = "Type of fish"; + plantTypesDataGridView.Columns["data"].HeaderText = "Type of plant"; + fishRationsDataGridView.Columns["type"].HeaderText = "Type of fish"; + fishRationsDataGridView.Columns["food"].HeaderText = "What does it eat"; + } + private void addLocation_Click(object sender, EventArgs e) { + string data = locationTextBox.Text.Trim(); + if (data.Length < 1) + return; + locations.Insert(data); + } + private void updateLocation_Click(object sender, EventArgs e) { + string data = locationTextBox.Text.Trim(); + if (data.Length < 1) + return; + locations.Update(data); + } + private void deleteLocation_Click(object sender, EventArgs e) { + locations.Delete(); + } + private void addFishType_Click(object sender, EventArgs e) { + string data = fishTypeTextBox.Text.Trim(); + if (data.Length < 1) + return; + fishTypes.Insert(data); + } + private void updateFishType_Click(object sender, EventArgs e) { + string data = fishTypeTextBox.Text.Trim(); + if (data.Length < 1) + return; + fishTypes.Update(data); + } + private void deleteFishType_Click(object sender, EventArgs e) { + fishTypes.Delete(); + } + private void addFishFood_Click(object sender, EventArgs e) { + string data = fishFoodTextBox.Text.Trim(); + if (data.Length < 1) + return; + fishFood.Insert(data); + } + private void updateFishFood_Click(object sender, EventArgs e) { + string data = fishFoodTextBox.Text.Trim(); + if (data.Length < 1) + return; + fishFood.Update(data); + } + private void deleteFishFood_Click(object sender, EventArgs e) { + fishFood.Delete(); + } + private void addPlantType_Click(object sender, EventArgs e) { + string data = plantTypeTextBox.Text.Trim(); + if (data.Length < 1) + return; + plantTypes.Insert(data); + } + private void updatePlantType_Click(object sender, EventArgs e) { + string data = plantTypeTextBox.Text.Trim(); + if (data.Length < 1) + return; + plantTypes.Update(data); + } + private void deletePlantType_Click(object sender, EventArgs e) { + plantTypes.Delete(); + } + private void addFish_Click(object sender, EventArgs e) { + int number = Convert.ToInt32(numberFishNumericUpDown.Value); + int typeId = Convert.ToInt32(fishTypeFishesComboBox.SelectedValue); + int locationId = Convert.ToInt32(locationFishComboBox.SelectedValue); + fishes.Insert(number, typeId, locationId); + } + private void updateFish_Click(object sender, EventArgs e) { + int number = Convert.ToInt32(numberFishNumericUpDown.Value); + int typeId = Convert.ToInt32(fishTypeFishesComboBox.SelectedValue); + int locationId = Convert.ToInt32(locationFishComboBox.SelectedValue); + fishes.Update(number, typeId, locationId); + } + private void deleteFish_Click(object sender, EventArgs e) { + fishes.Delete(); + } + private void addPlant_Click(object sender, EventArgs e) { + int number = Convert.ToInt32(numberPlantsNumericUpDown.Value); + int typeId = Convert.ToInt32(plantTypePlantsComboBox.SelectedValue); + int locationId = Convert.ToInt32(locationPlantsComboBox.SelectedValue); + plants.Insert(number, typeId, locationId); + } + private void updatePlant_Click(object sender, EventArgs e) { + int number = Convert.ToInt32(numberPlantsNumericUpDown.Value); + int typeId = Convert.ToInt32(plantTypePlantsComboBox.SelectedValue); + int locationId = Convert.ToInt32(locationPlantsComboBox.SelectedValue); + plants.Update(number, typeId, locationId); + } + private void deletePlant_Click(object sender, EventArgs e) { + plants.Delete(); + } + private void addFishRation_Click(object sender, EventArgs e) { + int typeId = Convert.ToInt32(fishTypeFishesComboBox.SelectedValue); + int foodId = Convert.ToInt32(fishFoodRationsComboBox.SelectedValue); + fishRations.Insert(typeId, foodId); + } + private void deleteFishRation_Click(object sender, EventArgs e) { + fishRations.Delete(); + } + } +} diff --git a/Database/MainForm.resx b/Database/MainForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Database/MainForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Database/OleDBDataGridViewHandler.cs b/Database/OleDBDataGridViewHandler.cs new file mode 100644 index 0000000..39d9650 --- /dev/null +++ b/Database/OleDBDataGridViewHandler.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.OleDb; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Database +{ + abstract class OleDBDataGridViewHandler + { + protected string nameTable; + private int idIndex; + public OleDbDataAdapter select; + private DataGridView dataGridView; + protected OleDBDataGridViewHandler(OleDbCommand selectCommand, string nameTable, DataGridView dataGridView, int idIndex = 0) + { + this.nameTable = nameTable; + this.idIndex = idIndex; + select = new OleDbDataAdapter(selectCommand); + this.dataGridView = dataGridView; + this.dataGridView.DataSource = new DataTable(); + RefreshView(); + var lastColIndex = dataGridView.Columns.Count - 1; + var lastColumn = dataGridView.Columns[lastColIndex]; + lastColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + } + protected OleDBDataGridViewHandler(string nameTable, DataGridView dataGridView, string fields = "*", int idIndex = 0) + : this(OleDBHandler.SelectCommand(nameTable, fields), nameTable, dataGridView, idIndex) + { } + protected void RefreshView() + { + var dataTable = this.dataGridView.DataSource as DataTable; + dataTable.Clear(); + select.Fill(dataTable); + } + protected int CurrentId() + { + if (dataGridView.SelectedCells.Count < 1) + return -1; + var selectedRowIndex = dataGridView.SelectedCells[0].RowIndex; + var value = dataGridView.Rows[selectedRowIndex].Cells[idIndex].Value; + return Convert.ToInt32(value); + } + public void Delete() + { + int id = CurrentId(); + if (id < 0) + return; + OleDBHandler.Delete(nameTable, id); + RefreshView(); + } + } +} diff --git a/Database/OleDBHandler.cs b/Database/OleDBHandler.cs new file mode 100644 index 0000000..7d21338 --- /dev/null +++ b/Database/OleDBHandler.cs @@ -0,0 +1,127 @@ +using System; +using System.Windows.Forms; +using System.Data; +using System.Data.OleDb; +using System.Text; + +namespace Database { + static public class OleDBHandler { + static private OleDbConnection connection; + static public OleDbConnection Connection { + get { + if (connection == null) { + InitializeConnection(); + } + return connection; + } + } + static private void InitializeConnection() { + try { + using (var ofDlg = new OpenFileDialog()) { + ofDlg.InitialDirectory = "c:\\"; + ofDlg.Filter = "Access database files (*.accdb;*.mdb)|*.accdb;*.mdb"; + ofDlg.RestoreDirectory = true; + ofDlg.CheckFileExists = true; + + if (ofDlg.ShowDialog() == DialogResult.OK) { + connection = new OleDbConnection(string.Format( + "Provider = Microsoft.ACE.Oledb.12.0; Data Source = {0}" + , ofDlg.FileName + )); + } + else { + Environment.Exit(0); + } + } + connection.Open(); + } + catch (Exception e) { + MessageBox.Show( + e.Message + , "Database connection error" + , MessageBoxButtons.OK + , MessageBoxIcon.Error + ); + Environment.Exit(e.HResult); + } + } + public enum ExecuteType { NonQuery, Scalar }; + public static object Execute(string command, ExecuteType type) + { + using (var statement = new OleDbCommand(command, Connection)) + { + switch (type) + { + case ExecuteType.NonQuery: + return statement.ExecuteNonQuery(); + case ExecuteType.Scalar: + return statement.ExecuteScalar(); + default: + throw new ArgumentException("An unsupported method is specified"); + } + } + } + public static OleDbCommand SelectCommand(string tableName, string fields) + { + var command = $"SELECT {fields} FROM [{tableName}];"; + return new OleDbCommand(command, Connection); + } + public static bool Delete(string tableName, int id) { + string command = $"DELETE FROM [{tableName}] WHERE [id] = {id};"; + var result = Execute(command, ExecuteType.NonQuery); + return Convert.ToBoolean(result); + } + private static string UpdatePart(params (string, object)[] listPairColumnNameValue) { + StringBuilder result = new StringBuilder(string.Empty); + var size = listPairColumnNameValue.Length; + if (size < 1) + return result.ToString(); + foreach (var pair in listPairColumnNameValue) + if(pair.Item2 is string) + result.Append($"[{pair.Item1}]='{pair.Item2}',"); + else + result.Append($"[{pair.Item1}]={pair.Item2},"); + + return result.ToString().TrimEnd(','); + } + public static bool Update(string tableName, int id, params (string, object)[] listPairColumnNameValue) + { + string partCommand = UpdatePart(listPairColumnNameValue); + if (partCommand.Length < 1) + return true; + string command = $"UPDATE [{tableName}] SET {partCommand} WHERE [id] = {id};"; + var result = Execute(command, ExecuteType.NonQuery); + return Convert.ToBoolean(result); + } + private static string InsertPart(params (string, object)[] listPairColumnNameValue) + { + var size = listPairColumnNameValue.Length; + if (size < 1) + return string.Empty; + + StringBuilder left = new StringBuilder("("); + StringBuilder right = new StringBuilder("VALUES ("); + foreach (var pair in listPairColumnNameValue) { + left.Append('['); + left.Append(pair.Item1); + left.Append("],"); + if (pair.Item2 is string) + right.Append('\'' + pair.Item2.ToString() + '\'' + ','); + else + right.Append(pair.Item2.ToString() + ','); + } + var leftResult = left.ToString().TrimEnd(',') + ')'; + var rightResult = right.ToString().TrimEnd(',') + ')'; + return leftResult + rightResult; + } + public static bool Insert(string tableName, params (string, object)[] listPairColumnNameValue) + { + string partCommand = InsertPart(listPairColumnNameValue); + if (partCommand.Length < 1) + return true; + string command = $"INSERT INTO [{tableName}] {partCommand};"; + var result = Execute(command, ExecuteType.NonQuery); + return Convert.ToBoolean(result); + } + } +} diff --git a/Database/PlantTypes.cs b/Database/PlantTypes.cs new file mode 100644 index 0000000..017783a --- /dev/null +++ b/Database/PlantTypes.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.OleDb; +using System.Text; +using System.Windows.Forms; + +namespace Database +{ + class PlantTypes : OleDBDataGridViewHandler + { + public PlantTypes(DataGridView dataGridView) : base("plant_types", dataGridView) { } + public void Insert(String name) + { + (string, object) pair = ("data", name); + OleDBHandler.Insert(nameTable, pair); + RefreshView(); + } + public void Update(String name) + { + int id = CurrentId(); + if (id < 0) + return; + (string, object) pair = ("data", name); + OleDBHandler.Update(nameTable, id, pair); + RefreshView(); + } + } +} diff --git a/Database/Plants.cs b/Database/Plants.cs new file mode 100644 index 0000000..391bc3a --- /dev/null +++ b/Database/Plants.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Data.OleDb; +using System.Text; +using System.Windows.Forms; + +namespace Database +{ + class Plants : OleDBDataGridViewHandler + { + static OleDbCommand SelectCommand() { + string command = + "SELECT [F].[id], [PT].[data] AS [type], [L].[data] AS [location], [F].[number]" + + "FROM[plants] AS[F], [plant_types] AS[PT], [locations] AS[L]" + + "WHERE[type_id] = [PT].[id] AND[location_id] = [L].[id]"; + var result = new OleDbCommand(command, OleDBHandler.Connection); + return result; + } + public Plants(DataGridView dataGridView) : base(SelectCommand(), "plants", dataGridView) { } + private bool Exists(int typeId, int locationId) { + string command = "SELECT COUNT(*) FROM [plants]" + + $"WHERE [type_id] = {typeId} AND [location_id] = {locationId};"; + var result = OleDBHandler.Execute(command, OleDBHandler.ExecuteType.Scalar); + if (Convert.ToInt32(result) > 0) + return true; + return false; + } + public void Insert(int number, int typeId, int locationId) { + if (Exists(typeId, locationId) == true) + return; + (string, object) pair1 = ("type_id", typeId); + (string, object) pair2 = ("location_id", locationId); + (string, object) pair3 = ("number", number); + OleDBHandler.Insert(nameTable, pair1, pair2, pair3); + RefreshView(); + } + public void Update(int number, int typeId, int locationId) { + if (Exists(typeId, locationId) == true) + return; + int id = CurrentId(); + if (id < 0) + return; + (string, object) pair1 = ("type_id", typeId); + (string, object) pair2 = ("location_id", locationId); + (string, object) pair3 = ("number", number); + OleDBHandler.Update(nameTable, id, pair1, pair2, pair3); + RefreshView(); + } + } +} diff --git a/Database/Program.cs b/Database/Program.cs new file mode 100644 index 0000000..f3269ad --- /dev/null +++ b/Database/Program.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Database +{ + static class Program + { + /// + /// Главная точка входа для приложения. + /// + [STAThread] + static void Main() + { + //MessageBox.Show(RuntimeInformation.FrameworkDescription); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/Database/Properties/AssemblyInfo.cs b/Database/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..905995a --- /dev/null +++ b/Database/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанных со сборкой. +[assembly: AssemblyTitle("Database")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Database")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, следует установить атрибут ComVisible в TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("baf17228-60de-4081-a24f-f6dd8a12c06a")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Database/Properties/Resources.Designer.cs b/Database/Properties/Resources.Designer.cs new file mode 100644 index 0000000..e0a4a68 --- /dev/null +++ b/Database/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программным средством. +// Версия среды выполнения: 4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если +// код создан повторно. +// +//------------------------------------------------------------------------------ + + +namespace Database.Properties +{ + /// + /// Класс ресурсов со строгим типом для поиска локализованных строк и пр. + /// + // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder + // класс с помощью таких средств, как ResGen или Visual Studio. + // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen + // с параметром /str или заново постройте свой VS-проект. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Database.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Переопределяет свойство CurrentUICulture текущего потока для всех + /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Database/Properties/Resources.resx b/Database/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/Database/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Database/Properties/Settings.Designer.cs b/Database/Properties/Settings.Designer.cs new file mode 100644 index 0000000..1ff1830 --- /dev/null +++ b/Database/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + +namespace Database.Properties +{ + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Database/Properties/Settings.settings b/Database/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Database/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +