From 1526c9ec0a3771d5d7aa5c5efb8bd46662513efc Mon Sep 17 00:00:00 2001 From: 3009594 Date: Tue, 12 Nov 2024 23:06:39 +0100 Subject: [PATCH] unfertiges AusleihenProzess --- .../Registrieren/RegistierenProzess.png | Bin 0 -> 28988 bytes .../Design/SystemUml.drawio | 74 ++++++++++++------ .../Design/Unfertiges System diagramm.png | Bin 0 -> 90920 bytes ...{MediumZumAusleihen.java => Ausleihe.java} | 25 ++---- .../domain/AusleiheSystem/AusleiheSystem.java | 52 ++++++------ .../src/domain/Benutzer/Ausweis.java | 11 +-- .../src/domain/Benutzer/Benutzer.java | 20 +++-- .../src/domain/BibSystem.java | 49 +++++++----- .../src/domain/JTests/AnmeldenJTest.java | 6 +- ...AusleihenJTest.java => AusleiheJTest.java} | 11 +-- .../src/domain/JTests/AusweisJTest.java | 38 +++++++++ .../src/domain/JTests/RegistrierenTest.java | 3 + .../src/domain/Medium/Brettspiel.java | 4 +- .../src/domain/Medium/Buch.java | 15 ++-- .../src/domain/Medium/Cd.java | 5 +- .../src/domain/Medium/Dvd.java | 4 +- .../src/domain/Medium/Medium.java | 49 +----------- .../src/domain/Medium/Mediumverwalter.java | 60 ++++++++++++++ .../src/domain/Medium/Videospiel.java | 4 +- Bibliotheksverwaltungssystem/src/tui/Tui.java | 12 +-- 20 files changed, 263 insertions(+), 179 deletions(-) create mode 100644 Bibliotheksverwaltungssystem/Design/Registrieren/RegistierenProzess.png create mode 100644 Bibliotheksverwaltungssystem/Design/Unfertiges System diagramm.png rename Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/{MediumZumAusleihen.java => Ausleihe.java} (51%) rename Bibliotheksverwaltungssystem/src/domain/JTests/{AusleihenJTest.java => AusleiheJTest.java} (70%) create mode 100644 Bibliotheksverwaltungssystem/src/domain/JTests/AusweisJTest.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java diff --git a/Bibliotheksverwaltungssystem/Design/Registrieren/RegistierenProzess.png b/Bibliotheksverwaltungssystem/Design/Registrieren/RegistierenProzess.png new file mode 100644 index 0000000000000000000000000000000000000000..e2775da14d75474d8f25139be20d938b2160d20b GIT binary patch literal 28988 zcmeFZbyOW$x9(lIySoPn9^45M+>&4k4grF@ySoJoEbQ)0)K!uekuPF0Lr6~ZuP(;0R(F)4LblpZGZfR=(Z{_1OV$1Y4MkD zowfJoyxg(R(u5BuVwJ>391-rN3V$;OCQB$`9YMb{4XM<@@=W!I`e2~XX;X^3qk_q+ zn5~lH%w>M)hL~F}&cHF^_iU*Jx<;n#-IYyO2X1ekC<0TJu7;?qOvnO_XOq|NpwW6o z%C5PQ)U&>wE9YIYEBE!2`Jo0U$MdwQDT0)R1H52mD=QX&oPy%z{;zLEMMyt?{6^5EvL3^y=8)r7&8uy@P{; zu^AD;f8lkNMa0F$5piL_f1&?47$)rTOvtB$V|<^^gm^kws`cqi0N`p~AUpZ?$<56T z0zg1O0Nbjir6r}HkdWfQZh)#90^xVX`p0XnH^K=kAL+ABZx~w$EPZ^E(%>M?mM{4I z0SPhgNo;UM9p0^)-ja_^kY*?AV_KNpmb38q4F@OPWM1K6%ym+hzX!tI6yMXpBCofH^Qu3-LKeC(YSt+2|LP2{ zkN=DT^=$U2KimaBLeIXT4Y8KhV8OWSrla^GIOdPT|2WOJwq_&UZPjSbTquKOJ$o^b z$g(Af%#)5AOQY*-LMMuZ-?3+)F6n5Ug9;W%74jf7=#Gqk>~Ydp24KgQi8AlkZjf?t za{e3;Pgp*=T75PL>+pq~i3tTy$DOU|;qIVMOT4|LxEOh*JF465ppn*TOTSAe&Zxs% z;+~I-uzk}x0LL~aF)^sC>s7H%v-UnEp<_fugo%ks3%Ss5F=QN=Z{NPz;*FHa%E}rj zqZ@V!gmY3l`O(n++EJEn+l%=*G0A>+Xaj6{PE6!@dd{up7v)1dkv3`bz{*3+xM z`c2*Sc9G3bn#4oq5JTx+EzFDkIR>Y#Uo$gEfRvO}biF-0*gN(P4ivn+8jnxrU%jqg zV@<(jF>ScXY%jhMYMUtDyujkL)kXC*@`19DmvIdrKYpyaTn=;j;>{?{`}%O+?ck?Y zU8f^aXF^$iXvm--ZA?3{jaXAWtEr5NFw&c#!_iHr;LIM&CDm= z9xUMlG57v>$(}Ql--b`1erKspRNFVWr`J`fx)`5n&as9oqwTXFztYX}yJC-WTz=H_ z*77=m$$Fw_9d*BzW2I18Mnu@JZi)ooH^#GwJ|FJR1jHh{AW%{knZ0~N<^A&mU4~gA zf6RAh&fa{8NsWMao=h&gXJJ)4COFIU4&)gUWPo&&+?K zr6LWFM9eYZ>b4~i(b?reJ!MiDj(2ny3h=g4NPq zXZC#}*P^q!CM6%sRpeQPu++JReNzcOP>wF+c~{;MKGo;%kn&h}PC)4l*TqAbft3+VG4`QfqEkoMoRMX~sYX^`z}!d%tl;EyTTW?Kl;OCzp`(a*i)pP+|~(QGgK9EtDia zEJ}#LdTdTlZ*Odh!^zEE+W~h1KD$0Vh5yjTrxbnte-G~d3}GE)+v<wwsfSlp~BHC`lvY)7%if(M(Bq;yQ@rrEkT zK5PfS!>%RskO2K_D)1iKQEe7ibX)Mxb>v~trG8?6b_|Xyg*lHX+DBtfNuWK>JKtkh z6BN*zgn+ogEbp6qrbqAM;u2V`NM{wNPO5W%oH#U;z4-Q%^^~7gW@;s6nY1LXn=$}V zFU#@O@7gJtMjBn}9i`}p)~2;Kh~O`sXVV)O32^Hr^oWrml@*W{YuaaRqN%3VA=Dx~ zq{5kd!B8^F$IkHu6Ceq>N?N1 z1N?bZ7;LdViT5r~H+iUAlWk5HYqM6}sp)1Q>3Qh}nGS+IJiF*Rpdy%op1rs58WN^| zrmzb`fgW*nk1GMLSx8Bir4@pL{5-ye;^OL^lIx85m;?W!99&r?{?yRf1yyIOv`Z#- z?RM!IW<`u3naB`*Dk4|q#CRqaJ)K4}+yJ*X0S#SBktJYVfUCj}f$dzTc^%p=)Qn9- zFS4O%Hd3-jnSBx>h-Vg+E;=Ji)1#mW3D|p0My`_y1;5V^Z%-PV`Ze*1Ufo)U%iCzo zQrRQmP*2eG0*I7M(5*B52u|v`?F`cyEtBJn)^ff?N3v%`WA_X&vip6nbeRBhgi&KY z2%yBRawyT|4VO1*>TAamXaGMxDJfW;j4MSx66+z7J12`1tIw%=sb#RT2X?s09->h0 zR>3ruO2tz2H6=jYUB2S;P_@U4N=~G~?axFoeJR#paR@2JI};KZf$}Q{rF##EtZu&v zaa3=Ju72MbxTU@)?;$nZ4K5h%)0~x{1uniBM~BVJ^f%YI~X|PE4pf;w1>If&Rb$ypSiq+EURb@)Pgx}n z4GlVkS{8?8kwbX#p)A}n#=h=vgKT91Bp&eGHFs)8i&B=*uIHaSbjUVo?+j_z?p?gS(D*#;j3@{5{9=ayrdUY*(6ckTA>vL?o>69Bu6r;e zan0ZhT$M zmSw0abGRvnu?@>3^Yd=v5M1?59BY1$Q{stSAl3FPU~c6!@n7OK$#g^fke0vBB{zGA z=nea0H|7R75Gt)&l7V{-{AeKABA8K5Fm30Nr1upj1&47sRVPFy9H#@+E=--@28Xb+r>rVwJQ40~#KcSu6}&InF_4)s_46udo3Bnzicqu&7*CpB^Nje7qp5vt zuG%aRopK#-hR`*|kfDWA*9i^1n?5+=)1i~-w8^BU#hXedrR3A0W@7BbbW6g!ILkSdekReTYog&TjieEj9|Ag59-Y$> z210;Tz@4ZAKX7I{>xF`Z3u78o$V%Tk5M_AYSy`Zy3T;23=cuQ(S>!VuH{S^kE$uKDOV3Sg~7rg zM}_kbk`XZXY!+T8ekN=mn?jIV4)jqM~`r5TN%w%%TwvVYnRzI5Hg!NCwlr>9p)DuJX zD2(3M*?(QCr$()#yIdiAcvNn$R8?`qAV2+UP>Iqb1{a&7lkHG&Wenk+Y_9bsLIJNL z2yd&=Je$dKB%?qLeY0CJ1o+vN$%JP-+-}q?`XZHCFNxO5;{5>)Y-S1y3P7RrAG%N> zLnxx$pu2aV?(?6aiaG_J(e6#Zb4Jn`DccJ;c75}iDwMReH0MPhxYd#*{GUMtJ9_c> z@axM{#u=cJBpQo>WPfhS@b*qMBqkvNwtg=1V!=!2QN=#$RK_w3d=j)z`Yn*4s(%cH zI>eZDUxz#Y46t4OfKDbx`07}%%k>Za`-cMj7h}*xc{oIS@ZKq@SFn6W8EU4GkHv00 z7?<)9znrej8-<8#v34WP+7!iy07MeUR7yZyyjVQBg z94`;`epFWe9N-97$5wBdt+hkZ83_wE`QmaqB589nz}@%sn}5I_x+q&)TQ%E-MSpzG z)mkDI6_uD}o}M8X46`ky_lCcZcKo-D{JT&G_5HJcP%S56L*e$o$OVI{o|4oS;*&lr z-n+*>ATGv)g0+MALjwlLBQL-DZ8Uo^wJDe}@IL`LW!}OMS3{5S=pRj9?m)Obit_ra z7fU_QimYojZP_uDHQ#?XMEEs2x@JW9>K`#rS>Wobq5DyoPTW(UOW*`p zg`^Y}gXSzH&CH5sbHfP0$$+e`JM&K{=_ocV00~cjG*ABU=FV14E_}5;{0uxCzaPf= z%Mx>P1QCIpTwJ|9|KBt`_^_xzMB-Raa?t$H^j}}=uLbu%jQ7{ND3X!H zt&t@BPYU9{(8b2~S${TxhJGUstI*N~mnSq4rBaBgJg=Sx2I z=)=Loo$&lki~c`;k}iscg#`#`qMx4QbfuZi?j+kEa|a0oa_a;&;`Z}bZFo)I;4Y*7 z^nAU8?RW0aOjj4;LfJsR0Dk3kQ=H|w7vDQnH<)-^ai=qQ5J;{%zB$dbGhlmO)w{Rx zjyoBtTTf1p9kQ8V`=#9yemH~qD`5?CLN>5bF{px*jrNdT1McV!2Nx~8)$kG*cv*Da zKIs=bhl~9-J+9e;mlR(&#m9>Y)X%$kuM1{h`y+&zT9aGb)l!T$Zc#9*X9TDWtx_TY z(f+f>suX4(LNe9I`JEi!ryiNlMe**xHw%ZqO-W>l@V%Mpl>j{L=#=)$JI`=Z!FQIw zov*j@W8&j!xFys4NI@2fWKQ%Kh0W}^ocq*MbEH9BTaJ0-dB^%<%*knQ-jCKYBgD&V zC=za7z-Obm(4M%}j$5wdg+N&3MN?D}N(CYNLKCMm)9`|AB}CQP{{4kL}*8Uf91l z`u*NY4`f(+d)wXTdoycg;$rJP=kh#|x;CHRq66L@gz28=5Y$;jX1`Id%5N#oM(W5G zY3H~Nww!*zKmc+#^9DVaE6pn*I;lBSR5m6*V`-9jY_ezN+NF_wK~nA6tYaA&@~5OH z4y5e*{p~#rpsc0EK?{YKa7R?Kd z<58`K^Bl&?8csv?QT(Jhe(n_V2Br1N9F=kHpa7cyN^m1YOJC(>o|N)30O^?D<5{Ck z{6>E6Vt>@9)=G%RQIKrOB>+7?IWcVaba58zjrjQrzyAw6kl5WuguyIglOC`sKUh~; zQ_~M6(uWd8N~q_{ExmIh=YRtbK^01&0D@-|Dc8i|mrC)NMX2YhWQcJ+c+tKQkt+?4 zRW}Ttp*0LDEKN0vxjP-h_^g#!he+Z|l`mnZ`xV->UiLcrPzNQQu@H5Puutz*d<7ss z2`;yUXtl8~P{jHk#r`_+r`Z( zNWhIcl7zjQS{8)@IsRIe^jPsk;n@n*+QWYmrPUDF;fLZgBI@Ux&A{WrIM!>CkI-wz zS7v+8*~X+`PJUg;y!VIq6q(v{^a-adHx>JKID3Fme=7=aBg26+2?N9&S5hu%sIhPr zyQ<5{`T)C>Hxg(2ci|>=!j}*kOPJ{nXW3OR6nWw%F+zQVhg|Hx^(goQ#FQ6DD%qZo zfaVCi4n|V_om;)=Pysf~;MdO>6YOq!>1FNULo<`Om= zexVh2TcbVpP$R|TXV>#SiC$N2TDHU9O?NJ_fkYFpS?6-$fqMynj;6FFE5);rjQ1@h zBO^oS=PJf5!G{0Bh&$9=_j0V6=$0-*?+&WeF1Bojg86R!wQ{{)Je^C8>h1cRtMWsS zJ%osy*B9+Et4Rt}cVgm|v*4`|pIU`~k*vX%9Y=#)p3G_S6h!jqSo#-x==3@a7)4xT zVbd~dtlS>F=%VoDR<%-4;$0Qn+hRK{?1P7p68c>?;uCI$0GOl+2fO|{2}2CbM(8SA z?;DiS1*er*P^n`BpW9YcDsN^Wy$1A}3RHxsp^ zPTCLn-Z`Dq8tKs&0EI3cwj8s?MPB|rpVM7b4CpH(EKGdkLLPA#j4mIel<6uTz?QIg@Rq{y4_}YiE z&Z;(6s78m+Pk*^o+)x6i3M=F<7WD;tDOH79fM~jdjb?%{D8TpybjdetIF%U*#vL-( zwESy%0?9kCax&_7kObgvU6|W zqsY8?ixTqLxmW;BgvwM~uw)xx6(*WWK4_21InPG{Y|F2^Ys-r2WAn0ZKWhR^>W$@C zK-o>_b9+h{8rhQ{eMWIDCnAdir>uHI2s~u-0dMZv)j4HnB0IKvnoxj2DH32EH;YdG z?BFYVGzvf<(UVbV+RTc@{sKtdL=B5Q7Qy(gGAdU`Pow~-YeFZw23Yopa(SokzbWi$ zX&53l_su8AIu{27yO-uP{C-JjNHz8ZO7FuGPaMg5w-z_sX>&2h6H)QL4J%9o5Czmr z=9z)X1NG3LH{OF8zq7SQKl#$2NtZtKo3Bdqn#{~Wl0yypG(l!;`eTXo?Q_)znTUfq z4yt$Or*gFj(%b{0ulz~uWRk^BtTIvRogjOXeEN}cna6{S-0JZ}XdUh(n$JS z+*=;N+evWz!&-0rWVKZWxSs?|Kt$*&$PsRqa&49VmLdx^M!y6$9}JW}c;C6p$b`;9 zpPr=hxDli5OP6VJpki4jN5F)Uig#Y)rY6@wmz4fQg7f#VW`Ml}5gkEg;Cx#&|Vh({gvC+N7IVHxA@9*k^Z^Ij8H6abdtv@+aNvqef08#`i_6J@m2F+Qd9` z)et;Hm!}HfqdvK{g}>Cjf)F~mK|ZV=l zf6*T)w3andfwLd>sy#sq>$Zqj^VjNH!BsUjz+~d0wm;67xN{(dM$Fsmd4%t~As0Xj zia78~lvqT%PT)oI+b`#D-h6cbMN(6^ge|!k3^4-Vp6&hW$9d#obGPfXQ%+7sDejN& ztRA@Dk+{2|haV?SERh<37wl;OaT1##f(VjhWv?t`{k&yN%5^zWrSKl?qUb;%O^;kf z5$c7T4S6rzcA1nd`PvJB-%RNtYj$emt&`Jf4)=!ZU8y}ej7Z;1Ow*_rnW82y;RN$7_LIrHaqn>PJyoMIcRJk+A~jQ2Z0(3+ zKYdTLFq#OGOrrF}w}UCa@7>7|a*`u$Eer0Wb2QeAJcX)UCW(6mqFaPo-Gq>2%#Ofj z7yZD+bjuNEZUGPJ=1#(Opc-t`ja3D(+vRuCS2ja?0X5gmjI^q2i=lZuqB{_iWLI{- zT^f>yn`QsP`z*I$veZL9vRFINOBnTZbrn|OSGe-;Q*(gi@D(3lE`0iEw4mT^Zw}Se zd#gqoZsk;caQeM>A~E7O&a{_@BK#evA7}uZev?BIrsF|ci=jXoN5fR|@{JG4+>UWO zZw0=}4$-iBBQiVfp!hh3?sYFAqq2f%ie{k7#q`L@He|TndXA|F)VAuX!LPX2Tju9J zhS?@xu|(KIt=@STo}rki>jW%+{wj614ru$1`v2Za1Z9`Fq($tDD4CAFGz zK`UJU!rU-7vbE+jj!Ct#!Cn{UxZcSk#l=Et2bKz$RTZ?{zs`q^L>v=5A>Zbzf>tE8 z&os<|`+S&f9ty>tQ1Yt1i|;LtLR-hd0rYN|@JPRj+S-x(y;Zjr{-s z!kd_klekHh&l64`TE**o7}aSU(>CiJMYOdReIc{L@B%tNVlqpqAz)`8OaoxhRCb&U zUHT^TPVhm*Wu!~Bxg>vjA~aS*Att+@1YMf`GZ=`t+VK233vV#%yk+q1Q$XpbPdHQ4 z2_tu}=b>>FNF}I4)Kjh~lx@n^%hsB;zBpOl!w@!mpTX4X*c7^1HUuRn^D`?=d zo`c~vfM}gnd_O*fg9Zgs5C08HuJXa9^BF6&#`%ZKs0X@v*PU-k2I6fye{Eu|VR&gb ze+FQ|&P&Na&Ix}1WtEpKf~FL`vrkrQN3ggWGpz2vlVPdq8C2dJg3Cx!8QrGAD`YU<^TlJK{8f5V%Q)F3FS=El8(C4W zT(Qm*oe-vZ1`|lPKl!l5CZH<}MoB>#g_FlC&+YS=B&XU;HokWRJzSSQv=wVquzKCQ zk2b4jE`iI36m9pcyP>0-GN&1)k#IR7xUMTzXXCS%r2345iP&_OcxGyG8(JH}^!qJ+ zU3nPOvF47;GFTilVB+LM&+f*u@{uX1mM^a-ng^H36+qL+FNQ|wdeq-JhR@1&7NGFD zf9j})tqfw0kqHD&*J3cg6}Rd3>^>=AF%jFs>K!L?8@`?NGhry`-Y#f%4$<+WM@{#< z{xDRO~h&%YhK7nX}|gwRFA6cy)|n z#!Oi*^E7&zg+T0*^VpnUzh1jvE(H}77w=xc>KS@Gq8$^ZvCfuI9ERxRv@_(R*oMm_IN7Yb5D6|&nJ5Zl*6>?i*01I7kP^!N7W63e{c1sJ z4U#_PV0`FDrRdo_ON^Bixzp@Vc!LI8Y&4YpvpBLoZ5`*E-){`qh$1W!T0^d#k4|L~6-?m&T_ssDk! z<*B>>a$7y3bDf@u5wJInb1vMu3{b@|3~tW%lGu$=3yX@D9P8ICwVpqJuB56O*ywga z$-p4HAIS$N2y#c-jR8PRrhM1}8^I1!7@Dsq(t1M;$Q&Wk-wFS1bv(wfo zIL2N4J=)_({Dm&F(XX_7UH{$&v4gu7xYz%g8o*Sc8 z#)6k+zr$8r>t)5Anb(b4-w0QvQy>;KOXio5kC&M@Ck0IzDhW=s@TB)h6wsy{y(C6E zFXxboMm~LqPCwxF?ouhZQqt}U)*M5GC}&pNC(k~C4};`uhDIyBxELmOJlGQV<40O~ z1$Wc^f#M-xZc~*B^UB(T+p#%1s+g_SMvYlyJbkVp`InP(Q|)jdLSF;0&H8>w??#bO zX$GE}DK#Qnf|;j`NQK39Etm3Gh#LxAM>V4MUUBm&b9M$!?Lh3ZbV8?~d{VVPzd3t( zQL0AukY|&18(vROR&-(V!g~5H#UV0%X;S* zEU|ErHXUoCG=rmAB1vMva@Wc>%*}YCG3T+BOeg+YC5a&Fr`0R-pFsm$^oP@{^6*Uj z`+52tN$;#NB8YQ9DjTLw1}@l}dwVEmQDAQVG6p@Tx>{}UD)a0@U}QaW158oK5Z5v# zNP3+BfMLQTxHwm?CY}lbc9~a)ke}UrGQ#EueLsDIJsx?uXGEq;pJ)8)f{a>}CySYo zspoN~l8%%}BITJ{3sEW$`;W8jU735)&X_)(DG91FDL}B2&=74aKPV;ei6^bFl!~&) zD*Z6wW37dkeFl}rpqe9bqDNTbCM#sbI2RG;mNIVkH}MvOB7ad4_xo??Qkg3-QELrfyur_Y^p9k$$`;jycdip}@7*eNQSO3Ke8 z$L&op8M3rqZF0hR@oeKCFsA>M)~nUg0|PrsKt&FEgj`d{p`@5 zy7ISfYyS&6nnZNU?JAtU_F{b7_l#&2>*!2@8bV;QsciCCbCs(RO>hTe@2}2=i*w`Y zKHl8g!T=31dVA#pLf4x)WmW2=M*ZM6+HilpQ@0N%6n%Vb3n8*QSI^DZl+L^90?zCQ zVoRc!G)#FIM+ig2sOr+QmK9Wp)zC`Xu|7nbLS{7pwcK5&Oz(*@4zzlaY0>0CwP_Di zD}3!DDd@)rpb?WrErJ-*Agx2167Gp{(|@8%X)sU6CCKDI*^53ZkGm^aFk{kVtW)}< zgXW>6U5ucccmA@1!VjqB)CiED`Z^&Twg-1HX+EM$y=O*+PJy)Zu@=ht0nLFUQsHU5 zeGI*bPE$W*l7MxLo2< z)p=TVsiV6Ylp__4ENO3m*7&}A4Knk1v%&Xf*rE%l$eWWG0&`nNZQm{YMgR6Y&{n7B zw}P}YQmep^r*+PenFrV7Q4Fo%upOJ1W4~p;D1~DBUS-dk(yQss9I$~+>+R_5Cn=R& z%>jfcg!4}q|NJOsjP@GfFt->9@4kiUd7~&W7a|ADdq8-98!L=cUWhuFVdg11 zL2kafpxt&Px6(_0CL9?q2WbC*$>=hwkeI6iomDtukEWd8#Mzy!ePHC$rr&25Gjl3* zS}gek>@qr=RdCn|l(aE{!8+KAHZ`&izazNn&M1USvGw`6r{j3W0Or*3U}a|XF4aNasx28pK> z1$|%NY`#Q%LHq2dpp>*7z!Ryk6@(=X9!^6a&+moy&7 zOL&Z{qt~kyr*1+*G~5JsRWK+l7obU}6Z=d$=Bu+cn)kf|PwINB&s^WqX35KYgZj1k zCH5)5c3bB7?s^*Qo<6i!k|;*`)2!>U2tB=8-ZVoKZEkv`q3d})vY0Xc;6=R#U6ma` zSJ+vN(u3^QArC-~6NwEp&*EH~@xy+Nlm^}npEr%!{0^%!q3w|vuCU=$1>IY|Eg>$` z-L{5Q#|S|s-7<@*s!vk*PE@FuBk0-zpBq)0C-U5HNk@TL_!mM;h&0w(y3ZHNaR^;6 zBuBLMo&d}4^6Pnh4yO(MZx_h^=sXUm_|sf&N*p~@oZ=f;xG?tVTdz($*p;SDgUs4Z z_ndxHeC}ypfFLgQ%~y6y@NhB^>YD7*Z7n*Ux`3ePbxDd`QNL?A$3vVWQp-^|v+{5q zJ~S0u#6uind^z7Hu%#TihDHq`SXAz6a2do6CXM1bt!W&xm*+#vDsJF7n9wAoMNZg% zl|s5YwpZA4>kdgcZW1F4#zt53poy^e>O@DH+rQO~9SB4a4zGj``+`z`4kUplSmf~u zG{Ji1o5I^h2#lZV*uyTlC$%jh0W}r~Mi)O!6rE=#y#s%@zy;ZDJ+IjnEa)Q&lHMOT znN$yYeu2z$vOUaRNxX(crHa*pBU^TDLt8g76liBeuWDu9VtPRxZWo{vq#G`XBLY=O zT7)E6+7-m9UJ2833#V)!FiQ}9HwU`<0yow&reUT|l+N6_K>yVh%c+Nf@L)Rhu1>^v zP85@^U?nALqa1fXr1QHENvoQF;D|S&1d#*kxwnrFZMC@wI z7egpR(K0mTDM8VzXxe`%t^b&crSXsC-30fDWnwELpNyXH24j__)ipRpAUJ3UZnWw zml}rt86>7pDHLF|voPmwV596%F5nNe{_NmgjFW`5=LJ{512x;`*i4bXS)pJY+07Vb zxnssTT;#FhC9L@c8P*w^@x|J+5$4nrLH)$_{EV25UtaaAW6VpR574Dsd1-SEL$ed7 zJH95+P)gs8b_drIW(xLJe0bB7Q zX$Y>L#7lGV*U0N2V81+Tg?C!*!MHsP67Kj`J^$Qk#QO5g51;!P4w~gSmy^|3Nht6B zpVJG+SQr`zVZIpKpsB=p`)mH9HP7Mcs3H_F?|vfh!bWI1dK{BsPh7MiFM1!!$6;>X zvYp#o3r`xi)&mtBT*?IVrwRW_8{QNe3Ow~PMzpU$= z`D6%D7vqGTmDAaS$_+k{5_d5VON!eMf+mg{D#^&qTpDZnOR(5L`3>@64}gL3IYh!o z;%oCWrBL7PZBtw*vBgKVZJgopjJvxd93L1S#abeSWMlnz1w-&MNf=~Ui2b05vN8s+ z*hOR&hnH{H5{`!U824|D=CA#SxPS1OKf0{}hw%_>iCePC;_sxtyQDzWHCbgrWNT}y zq@{&YJ;US_1WID)(uQNi$L@I&609G3u|eCxikZ$0VQ+8m@bq*jkyQi6LE{A}_@k&n z0D8^&w3)JsN^U4Tv4Ar=n&4@4-d-<5X$P25FZg(~qw^5j)+S2soT3g~F5@)^PiVWz zSIp*Tc!u)t*NBb60`IF~J-zY=A6>&fk4A}#S+DyIuVo~iOW(Y`bhrIhorh~R`I#us zQz}iTIfvw`1CIkY9(y`xwE0XN236f-!#$Y2c!8Id%u&MkJVyOVSsIp|p*UGotf4`q zuJF9Pyvb(;B_&;X@+lmBb9O_5HK5Oi!=kkDoKV|kEq=HeyoHrW{=>8bcgc!bF#mgW zdopA;{k@{%sD~=bWE#XFByov}?FSbIr<)@pWps=zEE9~?UJv(W;PEx%{(vOfZl-G$P|7;(_utv+(wPIix8 z@3@C}_a5FSHWqW%amFHfE#2$>YM84SRN#;4)V#gNk1Q%}LM*8IR=;0|bTMleWmMbM z)m3((uArc>*;vr<%&PGWSG8Cj?5VDB0_WSKZcdBi8xo+T>DsjTU8T&Z(dylO0E;`s z!&Sz^SB=5V8;`T?@fxtS1k~1GavbIK#M2AJQ8sJwYNpfJk4Q#HF?+B5PhSZz=`N(x zFY)rWUZDNjo#zvFHT$f^h&a_*;wJOlI7T@fGcAvB4azWe+8!$GYE zQG$WrzrT3oQ4=~|f{#-h8ynlC>!Drv7HWHEhtmSo`(l8{)K#ai{M6|>FvJI%|jaAadY8V}o$Kqxi#14MZN zp#l;X7EGibr^@p0wY5p_SA_4yMynilewXd75iMN8{w~!i{Ww$a#B#rtaW6gUIOi~t z_4O-)QsXnwnU=(9mS9xd$I?vfcD_6EBTc{slY2I^@!$kh{EKIzb#?8LFoUE6j9nDxZlL+5!DRNrG%pbhTSCB9;$jOsGxVZxv1Uon( z^FH$99bBaGJLymV_?Vnc4tmUr56#TX+BqjQb3VQS>!y0+8N>qQsQ;Jog#~-iUto3Djb1#8TR7`2ZRW?wujJWxWAsjL4iwtG`dhc`SV!hLMa%d zk@WtmH`IF_9utkEJ;KUm)PW9bN8v0XW+p8w+g{y#X8{shESBcm7r^3A+6?5Icc58n zQ&U%2_hn2d6p+Mir9G)94N|QN(2~TO%TsgEbR%k^D0D?lj0zV9;;t7Y;3lOzTVn%w zXWXvRCYR!<6Qg6qe16=BJA5rD5Yf;eINzTOD=ucN<=-ZLq*47}sO)M

-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 literal 0 HcmV?d00001 diff --git a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio index 5648089..c5ee2ce 100644 --- a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio +++ b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio @@ -1,6 +1,6 @@ - + @@ -19,7 +19,7 @@ - + @@ -163,9 +163,16 @@ - + + + + + + + + @@ -236,7 +243,7 @@ - + @@ -248,7 +255,7 @@ - + @@ -263,7 +270,7 @@ - + @@ -275,7 +282,7 @@ - + @@ -287,7 +294,7 @@ - + @@ -296,46 +303,61 @@ - + - + - - - - - - - - - + - - + + + + + - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + diff --git a/Bibliotheksverwaltungssystem/Design/Unfertiges System diagramm.png b/Bibliotheksverwaltungssystem/Design/Unfertiges System diagramm.png new file mode 100644 index 0000000000000000000000000000000000000000..8fdcc0f6100cdefe0fd0d0e63e57ea95a4794b44 GIT binary patch literal 90920 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�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 E9|%beFaQ7m literal 0 HcmV?d00001 diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MediumZumAusleihen.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java similarity index 51% rename from Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MediumZumAusleihen.java rename to Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java index e41f02c..a303e2d 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MediumZumAusleihen.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java @@ -4,19 +4,18 @@ import java.text.SimpleDateFormat; import java.util.Date; import domain.Medium.Medium; +import domain.Medium.Mediumverwalter; -public class MediumZumAusleihen { +public class Ausleihe { private SimpleDateFormat simpleFormatter; private Date ausleiheBeginn, ausleiheEnde; - private Medium medium; - private int wochenAnzahl; + private Mediumverwalter medium; - public MediumZumAusleihen(Medium medium,Date ausleiheBeginn, Date ausleiheEnde, int wochenAnzahl) { + public Ausleihe(Mediumverwalter medium,Date ausleiheBeginn, Date ausleiheEnde) { this.medium = medium; this.ausleiheBeginn = ausleiheBeginn; this.ausleiheEnde = ausleiheEnde; - this.wochenAnzahl = wochenAnzahl; this.simpleFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm"); } @@ -36,24 +35,12 @@ public class MediumZumAusleihen { this.ausleiheEnde = ausleiheEnde; } - public Medium getMedium() { + public Mediumverwalter getMedium() { return medium; } - public void setMedium(Medium medium) { - this.medium = medium; - } - - public int getWochenAnzahl() { - return wochenAnzahl; - } - - public void setWochenAnzahl(int wochenAnzahl) { - this.wochenAnzahl = wochenAnzahl; - } - @Override public String toString() { - return "Ausgeliehene Medium: Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde) + " ,Wochenanzahl zum Ausleihen= "+ this.wochenAnzahl+" ,Medium= " + medium.toString(); + return "Ausgeliehene Mediums= "+ medium.toStringOhneAnzahl() + " Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde); } } diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java index 231c7e1..19ad83f 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java @@ -8,46 +8,42 @@ import domain.Medium.*; public class AusleiheSystem { - private ArrayList mediums; + private HashMap medien; private Date ausleiheBeginn; private Date ausleiheEnde; private Calendar calendar; - private int wocheAnzahlZuAusleihen; - public AusleiheSystem(ArrayList mediums) { - this.mediums = mediums; + public AusleiheSystem( HashMap medien) { + this.medien = medien; } - public void mediumAusleihen(Benutzer benutzer, String eindutigenummer) throws MediumNichtGefundenException { - Medium mediumAusleihen = findMedium(eindutigenummer); + public Ausleihe mediumAusleihen(Benutzer benutzer, String eindutigenummer) throws MediumNichtGefundenException { + Mediumverwalter mediumAusleihen = findMedium(eindutigenummer); + if (mediumAusleihen.isIstAusgeliehen()) + throw new MediumNichtGefundenException("Das Medium ist ausgeliehen"); + + mediumAusleihen.setIstAusgeliehen(true); this.ausleiheBeginn = new Date(); this.calendar = Calendar.getInstance(); calendar.setTime(ausleiheBeginn); - if (mediumAusleihen instanceof Buch || mediumAusleihen instanceof Videospiel) - wocheAnzahlZuAusleihen = 4; - else if (mediumAusleihen instanceof Dvd) - wocheAnzahlZuAusleihen = 1; - - else if (mediumAusleihen instanceof Cd || mediumAusleihen instanceof Brettspiel) - wocheAnzahlZuAusleihen = 2; - - calendar.add(Calendar.WEEK_OF_YEAR, wocheAnzahlZuAusleihen); + calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getWocheAnzahlZumAusleihen()); this.ausleiheEnde = calendar.getTime(); - benutzer.ausleihen(new MediumZumAusleihen(mediumAusleihen,ausleiheBeginn,ausleiheEnde,wocheAnzahlZuAusleihen)); + Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen,ausleiheBeginn,ausleiheEnde); + benutzer.ausleihen(neueAusleihe); + return neueAusleihe; + } + + private Mediumverwalter findMedium(String eindeutigeKennung) throws MediumNichtGefundenException { + if (medien.containsKey(eindeutigeKennung)) + return medien.get(eindeutigeKennung); + else + throw new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar"); + + } + + - benutzer.getAusgeliehenenMedien().stream() - .forEach(System.out::println); - } - - - - private Medium findMedium(String eindeutigeKennung) throws MediumNichtGefundenException { - return mediums.stream() - .filter(m -> m.getKennungNummer().equalsIgnoreCase(eindeutigeKennung)) - .findFirst() - .orElseThrow(() -> new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar")); - } } diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Ausweis.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Ausweis.java index 06c4ee7..fba17e5 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Ausweis.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Ausweis.java @@ -1,15 +1,16 @@ package domain.Benutzer; public class Ausweis { - private int kartenNummer; + private String kartennummer; private static int generiereNummer = 1000; - public Ausweis() { - this.kartenNummer = generiereNummer++; + public Ausweis(String zeichen) { + + this.kartennummer =zeichen + generiereNummer++ ; } - public int getKartenNummer() { - return kartenNummer; + public String getKartenNummer() { + return kartennummer; } } diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java index 3b9edb0..0c0aae6 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java @@ -2,7 +2,7 @@ package domain.Benutzer; import java.util.ArrayList; -import domain.AusleiheSystem.MediumZumAusleihen; +import domain.AusleiheSystem.Ausleihe; import domain.Medium.Medium; public abstract class Benutzer { @@ -11,8 +11,9 @@ public abstract class Benutzer { private String name; private int alter; private boolean istStudent; - private ArrayList ausgeliehenenMedien; + private ArrayList ausgeliehenenMedien; private boolean angemeldet; + private double gebühren; public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) { @@ -57,15 +58,15 @@ public abstract class Benutzer { this.istStudent = istStudent; } - public ArrayList getAusgeliehenenMedien() { + public ArrayList getAusgeliehenenMedien() { return ausgeliehenenMedien; } - public void ausleihen(MediumZumAusleihen medium) { + public void ausleihen(Ausleihe medium) { this.ausgeliehenenMedien.add(medium); } - public void removeMedium(MediumZumAusleihen medium) { + public void removeMedium(Ausleihe medium) { this.ausgeliehenenMedien.remove(medium); } @@ -76,6 +77,15 @@ public abstract class Benutzer { public void setAngemeldet(boolean angemeldet) { this.angemeldet = angemeldet; } + + + public double getGebühren() { + return gebühren; + } + + public void setGebühren(double gebühren) { + this.gebühren = gebühren; + } @Override public String toString() { diff --git a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java index 0bbbccf..42f7a4c 100644 --- a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java @@ -1,26 +1,31 @@ package domain; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map.Entry; import java.util.stream.Stream; +import domain.AusleiheSystem.Ausleihe; import domain.AusleiheSystem.AusleiheSystem; import domain.Benutzer.*; import domain.ExceptionsKlassen.*; import domain.Medium.Brettspiel; import domain.Medium.Buch; import domain.Medium.Medium; +import domain.Medium.Mediumverwalter; public class BibSystem { private ArrayList alleBibBenutzer; - private ArrayList alleMediums; + private HashMap medien; + private ArrayList ausleihe; private AusleiheSystem ausleiheSystem; public BibSystem() { this.alleBibBenutzer = new ArrayList<>(); - this.alleMediums = new ArrayList<>(); - this.ausleiheSystem = new AusleiheSystem(alleMediums); - mediumAufladen(); + this.medien = new HashMap<>(); + this.ausleiheSystem = new AusleiheSystem(medien); + mediumsAufladen(); } public String userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { @@ -28,54 +33,62 @@ public class BibSystem { throw new FalscheEingabeException("Geben Sie alle Felder korrekt ein"); Benutzer benutzer; - Ausweis ausweis = new Ausweis(); + Ausweis ausweis; boolean istStudentOderSchüler = (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))? true : false; - if (istAdmin.equalsIgnoreCase("nein")) + if (istAdmin.equalsIgnoreCase("nein")) { + ausweis = new Ausweis("K"); benutzer = new Mitarbeiter(ausweis,name,alter,istStudentOderSchüler); - else + } + + else { + ausweis = new Ausweis("A"); benutzer = new Kunde(ausweis,name,alter,istStudentOderSchüler); + } alleBibBenutzer.add(benutzer); return benutzer.toString(); } - public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException { + public boolean userAnmdelden(String kartennummer) throws BenutzerNichtGefundenException { Benutzer tempUser = findBenutzer(kartennummer); tempUser.setAngemeldet(true); return tempUser.isAngemeldet(); } - public void mediumAusleihen(int kartennummer, String eindeutigeKennung) throws BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException { + public void mediumAusleihen(String kartennummer, String eindeutigeKennung) throws Exception { Benutzer tempBenutzer = findBenutzer(kartennummer); + if (tempBenutzer instanceof Mitarbeiter) + throw new Exception("Mitarbeiter können keine Mediums ausleihen!"); + if (!checkIfUserImSystemAngemeldetIst(kartennummer)) throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); - - ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung); + Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung); + ausleihe.add(neueAusleihe); } - private void mediumAufladen() { + private void mediumsAufladen() { + medien.put("B001",new Mediumverwalter (true,10,4, new Buch("Effektives Java Programmieren",2018,"Joshua Bloch"))); + medien.put("B00", new Mediumverwalter (true,10,4, new Buch("Effektives Java Programmieren",2018,"Joshua Bloch"))); + medien.put("BG001", new Mediumverwalter (false,10,4, new Brettspiel("Die Siedler von Catan",2012,"XY Müller"))); - alleMediums.add(new Buch("B001","Effektives Java Programmieren",2018,true,"Joshua Bloch")); - alleMediums.add(new Buch("B00","Effektives C++ Programmieren",2012,true,"XY Müller")); - alleMediums.add(new Brettspiel("BG001","Die Siedler von Catan",2012,true,"XY Müller")); } - private boolean checkIfUserImSystemAngemeldetIst(int kartennummer) { + private boolean checkIfUserImSystemAngemeldetIst(String kartennummer) { return alleBibBenutzer.stream() .anyMatch(user -> user.isAngemeldet()); } - private Benutzer findBenutzer(int kartennummer) throws BenutzerNichtGefundenException { + private Benutzer findBenutzer(String kartennummer) throws BenutzerNichtGefundenException { return alleBibBenutzer.stream() - .filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer) + .filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(kartennummer)) .findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt. .orElseThrow(() -> new BenutzerNichtGefundenException ("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden")); } diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java index 804d4c1..c9eee05 100644 --- a/Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java @@ -22,17 +22,15 @@ class AnmeldenJTest { @Test void testUSerIstNichtAngemeldet() { // Status => True - assertThrows(BenutzerNichtGefundenException.class, () -> bib.userAnmdelden(1110)); + assertThrows(BenutzerNichtGefundenException.class, () -> bib.userAnmdelden("1110")); } @Test void testUSerIstAngemeldet() throws FalscheEingabeException, BenutzerNichtGefundenException { - // Status => True bib.userRegistrieren("obai", "student", 16, "nein"); - int kartennummer = 1000; - assertTrue(bib.userAnmdelden(kartennummer)); + } diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/AusleihenJTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/AusleiheJTest.java similarity index 70% rename from Bibliotheksverwaltungssystem/src/domain/JTests/AusleihenJTest.java rename to Bibliotheksverwaltungssystem/src/domain/JTests/AusleiheJTest.java index c668f18..df1aef4 100644 --- a/Bibliotheksverwaltungssystem/src/domain/JTests/AusleihenJTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/AusleiheJTest.java @@ -6,13 +6,12 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import domain.BibSystem; -import domain.Benutzer.Benutzer; import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException; import domain.ExceptionsKlassen.BenutzerNichtGefundenException; import domain.ExceptionsKlassen.FalscheEingabeException; import domain.ExceptionsKlassen.MediumNichtGefundenException; -class AusleihenJTest { +class AusleiheJTest { private BibSystem bib; @@ -22,12 +21,10 @@ class AusleihenJTest { } @Test - void test() throws FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException { - + void test() throws FalscheEingabeException, BenutzerNichtGefundenException, BenutzerNichtAngemeldetException, MediumNichtGefundenException { bib.userRegistrieren("obai", "student", 15, "nein"); - bib.userAnmdelden(1000); - bib.mediumAusleihen(1000,"B001" ); - + bib.userAnmdelden("K1000"); + bib.mediumAusleihen("K1000", "B001"); } } diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/AusweisJTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/AusweisJTest.java new file mode 100644 index 0000000..e344720 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/AusweisJTest.java @@ -0,0 +1,38 @@ +package domain.JTests; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import domain.BibSystem; +import domain.Benutzer.Benutzer; +import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException; +import domain.ExceptionsKlassen.BenutzerNichtGefundenException; +import domain.ExceptionsKlassen.FalscheEingabeException; +import domain.ExceptionsKlassen.MediumNichtGefundenException; + +class AusweisJTest { + + private BibSystem bib; + + @BeforeEach + void setUp() throws Exception { + this.bib = new BibSystem(); + } + + @Test + void testKunde() throws FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException { + // bibAusweisNummer= K1000 + System.out.println(bib.userRegistrieren("obai", "student", 15, "nein")); + + } + + @Test + void testMitarbeiter() throws FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException { + // bibAusweisNummer= A1001 + System.out.println(bib.userRegistrieren("Muster Müller", "Mitarbeiter", 25, "ja")); + + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java index 4ebc464..90f098b 100644 --- a/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java @@ -10,6 +10,8 @@ import domain.Benutzer.Ausweis; import domain.Benutzer.Benutzer; import domain.Benutzer.Kunde; import domain.ExceptionsKlassen.FalscheEingabeException; +import domain.Medium.Buch; +import domain.Medium.Mediumverwalter; class RegistrierenTest { private BibSystem bib; @@ -28,6 +30,7 @@ class RegistrierenTest { assertTrue(test.contains(name)); System.out.println(test); + } } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java index 0290a78..f9fc42f 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java @@ -4,8 +4,8 @@ package domain.Medium; public class Brettspiel extends Medium { private String Verlag; - public Brettspiel(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar, String Verlag) { - super(eindeutigeKennung, title, erscheinungsjahr, verlängerbar); + public Brettspiel(String title, int erscheinungsjahr, String Verlag) { + super(title, erscheinungsjahr); this.Verlag = Verlag; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java index 102fc1c..701e68c 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java @@ -1,17 +1,20 @@ package domain.Medium; -import java.util.Date; - public class Buch extends Medium { + private String autor; - public Buch(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar, String autor) { - super(eindeutigeKennung, title, erscheinungsjahr,verlängerbar); + + public Buch(String title, int erscheinungsjahr, String autor) { + super(title, erscheinungsjahr); this.autor = autor; } + + public String getAutor() { return autor; } + public void setAutor(String autor) { this.autor = autor; } @@ -19,9 +22,5 @@ public class Buch extends Medium { public String toString() { return "Buch: " + super.toString() + " ,autor=" + autor; } - - - - } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java index 6da0dfa..9def9db 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java @@ -5,10 +5,11 @@ import java.util.Date; public class Cd extends Medium { private String Künstler; - public Cd(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar, String Künstler) { - super(eindeutigeKennung, title, erscheinungsjahr,verlängerbar); + public Cd(String title, int erscheinungsjahr,String Künstler) { + super(title, erscheinungsjahr); this.Künstler = Künstler; } + public String getKünstler() { return Künstler; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java index 8ab2ad2..4d516d5 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java @@ -4,8 +4,8 @@ package domain.Medium; public class Dvd extends Medium { private String regisseur; - public Dvd(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar,String regisseur) { - super(eindeutigeKennung, title, erscheinungsjahr,verlängerbar); + public Dvd(String title, int erscheinungsjahr,String regisseur) { + super(title, erscheinungsjahr); this.regisseur = regisseur; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java index 36a2a51..e9fe81d 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java @@ -3,68 +3,27 @@ package domain.Medium; import java.util.Date; public abstract class Medium { - - private String eindeutigeKennung; + private String title; private int erscheinungsjahr; - private boolean verlängerbar; - - public Medium(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar) { + + public Medium(String title, int erscheinungsjahr) { super(); - this.eindeutigeKennung = eindeutigeKennung; this.title = title; this.erscheinungsjahr = erscheinungsjahr; - this.verlängerbar = verlängerbar; - } - - public String getKennungNummer() { - return eindeutigeKennung; - } - - public void setKennungNummer(String kennungNummer) { - eindeutigeKennung = kennungNummer; } public String getTitle() { return title; } - public void setTitle(String title) { - this.title = title; - } - public int getErscheinungsjahr() { return erscheinungsjahr; } - public void setErscheinungsjahr(int erscheinungsjahr) { - this.erscheinungsjahr = erscheinungsjahr; - } - - public String getEindeutigeKennung() { - return eindeutigeKennung; - } - - public void setEindeutigeKennung(String eindeutigeKennung) { - this.eindeutigeKennung = eindeutigeKennung; - } - - public boolean isVerlängerbar() { - return verlängerbar; - } - - public void setVerlängerbar(boolean verlängerbar) { - this.verlängerbar = verlängerbar; - } - @Override public String toString() { - return "eindeutigeKennung=" + eindeutigeKennung + ", title=" + title + ", erscheinungsjahr=" - + erscheinungsjahr + " ,Verlängerbar= " + verlängerbar ; + return "title=" + title + ", erscheinungsjahr=" + erscheinungsjahr; } - - - - } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java new file mode 100644 index 0000000..f27ab04 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java @@ -0,0 +1,60 @@ +package domain.Medium; + +public class Mediumverwalter { + + private boolean verlängerbar; + private int anzahl; + private int wocheAnzahlZumAusleihen; + private Medium medium; + private boolean istAusgeliehen; + + public Mediumverwalter(boolean verlängerbar, int anzahl, int wocheAnzahlZumAusleihen, Medium medium) { + super(); + this.verlängerbar = verlängerbar; + this.anzahl = anzahl; + this.wocheAnzahlZumAusleihen = wocheAnzahlZumAusleihen; + this.medium = medium; + } + + + public boolean isVerlängerbar() { + return verlängerbar; + } + + public int getAnzahl() { + return anzahl; + } + + public void setAnzahl(int anzahl) { + this.anzahl = anzahl; + } + + public int getWocheAnzahlZumAusleihen() { + return wocheAnzahlZumAusleihen; + } + + public Medium getMedium() { + return medium; + } + public boolean isIstAusgeliehen() { + return istAusgeliehen; + } + + + public void setIstAusgeliehen(boolean istAusgeliehen) { + this.istAusgeliehen = istAusgeliehen; + } + + + @Override + public String toString() { + return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ", wocheAnzahlZumAusleihen=" + + wocheAnzahlZumAusleihen ; + } + + + public String toStringOhneAnzahl() { + return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", Anzahl der Wochen zum Ausleihen=" + + wocheAnzahlZumAusleihen ; + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java index eb9cb79..d4341ee 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java @@ -6,8 +6,8 @@ public class Videospiel extends Medium { private String plattform; - public Videospiel(String kennungNummer, String title, int erscheinungsjahr,boolean verlängerbar, String plattform) { - super(kennungNummer, title, erscheinungsjahr, verlängerbar); + public Videospiel(String title, int erscheinungsjahr, String plattform) { + super(title, erscheinungsjahr); this.plattform = plattform; } diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index 255a0c0..caad55d 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -58,13 +58,13 @@ public class Tui { } private void mediumAusleihenProzess(){ - int kartennummer; + String kartennummer; String eindutigeKennung; boolean mediumAusleihenProzess = true; System.out.println("Geben Sie bitte Ihre kartennummer"); System.out.print(">"); - kartennummer = eingabe.nextInt(); + kartennummer = eingabe.nextLine(); while(mediumAusleihenProzess) { System.out.println("Geben Sie bitte die eindutige Kennung des Mediums"); System.out.print(">"); @@ -73,9 +73,9 @@ public class Tui { try { fassade.mediumAusleihen(kartennummer, eindutigeKennung); - } catch (BenutzerNichtAngemeldetException | BenutzerNichtGefundenException | MediumNichtGefundenException e) { + } catch (Exception e) { System.out.println(e.getMessage()); - } + } } } @@ -86,10 +86,10 @@ public class Tui { } private void anmeldenProzess() { - int kartennummer; + String kartennummer; System.out.println("Geben Sie bitte die Kartennummer Ihres Bibliotheksausweises an: "); System.out.print(">"); - kartennummer = eingabe.nextInt(); + kartennummer = eingabe.nextLine(); try { if (fassade.userAnmdelden(kartennummer))