Compare commits
17 Commits
MedienAusl
...
main
Author | SHA1 | Date |
---|---|---|
|
d7ebd00706 | |
|
de0b00d4ae | |
|
eda91e849a | |
|
6fabcb4d46 | |
|
e89fa80185 | |
|
55934bacfe | |
|
8006b66f42 | |
|
7858e0c1ce | |
|
194a7df9e0 | |
|
d22956b53f | |
|
b62bed0fb0 | |
|
712087279b | |
|
da0ce0845f | |
|
1b02808644 | |
|
34b2daa2bb | |
|
76334da35f | |
|
c58e4e9dcf |
Before Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 65 KiB |
|
@ -1,9 +1,12 @@
|
|||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36" version="24.8.4">
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36" version="24.8.6">
|
||||
<diagram name="Seite-1" id="xkmZ0K6vz5A5_BixXH1Q">
|
||||
<mxGraphModel dx="2714" dy="1416" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<mxGraphModel dx="1873" dy="1415" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-16" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;" vertex="1" parent="1">
|
||||
<mxGeometry x="750" y="260" width="1580" height="1340" as="geometry" />
|
||||
</mxCell>
|
||||
<object label="" TUI="" id="ydUtLetK26WXyeJ3qCt--1">
|
||||
<mxCell style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;points=[[0,0,0,-5,-13],[0,0,0,0,14],[0,0,0,0,78],[0,0,0,0,142],[0,0,0,0,206],[0,0,0,0,270],[0,0,0,20,0],[0,0,0,40,0],[0,0,0,160,14],[0,0,0,280,14],[0,0,0,280,78],[0,0,0,280,142],[0,0,0,280,206],[0,0,0,280,270],[0,0.5,0,0,0],[0.04,0.02,0,0,0],[0.06,0.04,0,0,0],[0.09,0.03,0,0,0],[0.13,0.04,0,0,0],[0.25,1,0,0,0],[0.5,1,0,0,0],[0.75,1,0,0,0]];" parent="1" vertex="1">
|
||||
<mxGeometry x="90" y="280" width="300" height="220" as="geometry" />
|
||||
|
@ -18,9 +21,6 @@
|
|||
<mxCell id="ydUtLetK26WXyeJ3qCt--5" value="Bib Ui" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="160" y="390" width="110" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--6" value="<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div>" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="756" y="270" width="1110" height="770" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--7" value="package" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="140" y="600" width="240" height="170" as="geometry" />
|
||||
</mxCell>
|
||||
|
@ -55,144 +55,109 @@
|
|||
<mxGeometry x="130" y="600" width="70" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--28" value="<font style="font-size: 11px;">domain</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="757" y="270" width="70" height="20" as="geometry" />
|
||||
<mxGeometry x="767" y="260" width="70" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--29" value="registrieren" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="300" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="bG3rtPKbTOfA4ERHpklN-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--30" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="430" y="378" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--30" value="Medium ausleihen" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="440" y="370" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--32" value="Medium&nbsp;leihfrist verlängern" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="430" y="440" width="100" height="30" as="geometry" />
|
||||
<mxGeometry x="430" y="518" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--33" value="Medium zurückgeben" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="512" width="60" height="30" as="geometry" />
|
||||
<mxGeometry x="440" y="590" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--34" value="Gebühren bezahlen" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="590" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--36" value="Medium druchsuchen" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="460" y="690" width="60" height="30" as="geometry" />
|
||||
<mxGeometry x="440" y="690" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--38" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.flowchart.on-page_reference;" parent="1" vertex="1">
|
||||
<mxGeometry x="580" y="690" width="60" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--41" value="<i>Medium</i>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1100" y="720" width="180" height="130" as="geometry" />
|
||||
<mxGeometry x="1700" y="640" width="180" height="110" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--42" value="- KennungNummer: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--41" vertex="1">
|
||||
<mxGeometry y="26" width="180" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--43" value="- title: String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--41" vertex="1">
|
||||
<mxGeometry y="52" width="180" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--44" value="- erscheinungsjahr: date<div><span style="background-color: initial; color: rgba(0, 0, 0, 0); font-family: monospace; font-size: 0px; text-wrap-mode: nowrap;">- %3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22-%20title%3A%20String%22%20style%3D%22text%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3Balign%3Dleft%3BverticalAlign%3Dtop%3BspacingLeft%3D4%3BspacingRight%3D4%3Boverflow%3Dhidden%3Brotatable%3D0%3Bpoints%3D%5B%5B0%2C0.5%5D%2C%5B1%2C0.5%5D%5D%3BportConstraint%3Deastwest%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%221100%22%20y%3D%22658%22%20width%3D%22180%22%20height%3D%2226%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E</span></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--41" vertex="1">
|
||||
<mxGeometry y="78" width="180" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--46" value="Buch" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="890" y="954" width="140" height="66" as="geometry">
|
||||
<mxRectangle x="890" y="954" width="70" height="30" as="alternateBounds" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--50" value="Cd" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1070" y="954" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--54" value="Dvd" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1241" y="954" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--58" value="Brettspiel" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1410" y="954" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--62" value="Videospiel" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1570" y="954" width="140" height="52" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--42" value="- ID: String<div>- erscheinungsjahr: int</div><div>- title: String</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--41" vertex="1">
|
||||
<mxGeometry y="26" width="180" height="84" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--79" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="960" y="954" as="sourcePoint" />
|
||||
<mxPoint x="960" y="904" as="targetPoint" />
|
||||
<mxPoint x="1560" y="864" as="sourcePoint" />
|
||||
<mxPoint x="1560" y="814" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--80" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="960" y="904" as="sourcePoint" />
|
||||
<mxPoint x="1650" y="904" as="targetPoint" />
|
||||
<mxPoint x="1560" y="814" as="sourcePoint" />
|
||||
<mxPoint x="2250" y="814" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--81" value="" style="endArrow=none;html=1;rounded=0;exitX=0.584;exitY=0.003;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--62" edge="1">
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--81" value="" style="endArrow=none;html=1;rounded=0;exitX=0.584;exitY=0.003;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1650" y="944" as="sourcePoint" />
|
||||
<mxPoint x="1650" y="904" as="targetPoint" />
|
||||
<mxPoint x="2251.7599999999998" y="864.156" as="sourcePoint" />
|
||||
<mxPoint x="2250" y="814" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--82" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.399;entryY=0.998;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--44" edge="1">
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--82" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.401;entryY=1.012;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--42" edge="1">
|
||||
<mxGeometry width="160" relative="1" as="geometry">
|
||||
<mxPoint x="1170" y="904" as="sourcePoint" />
|
||||
<mxPoint x="1330" y="904" as="targetPoint" />
|
||||
<mxPoint x="1770" y="814" as="sourcePoint" />
|
||||
<mxPoint x="1771.8199999999997" y="753.8760000000002" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--84" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1120" y="954" as="sourcePoint" />
|
||||
<mxPoint x="1120" y="904" as="targetPoint" />
|
||||
<mxPoint x="1720" y="864" as="sourcePoint" />
|
||||
<mxPoint x="1720" y="814" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--86" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1309.45" y="954" as="sourcePoint" />
|
||||
<mxPoint x="1309.45" y="904" as="targetPoint" />
|
||||
<mxPoint x="1909.45" y="864" as="sourcePoint" />
|
||||
<mxPoint x="1909.45" y="814" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="1309.45" y="924" />
|
||||
<mxPoint x="1909.45" y="834" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--87" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1470" y="954" as="sourcePoint" />
|
||||
<mxPoint x="1470" y="904" as="targetPoint" />
|
||||
<mxPoint x="2070" y="864" as="sourcePoint" />
|
||||
<mxPoint x="2070" y="814" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--88" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1650" y="954" as="sourcePoint" />
|
||||
<mxPoint x="1650" y="904" as="targetPoint" />
|
||||
<mxPoint x="2250" y="864" as="sourcePoint" />
|
||||
<mxPoint x="2250" y="814" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="a17Tyx0-SzZjYovz-tY2-10">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="a17Tyx0-SzZjYovz-tY2-5">
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--131" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--10" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="880" y="572" />
|
||||
</Array>
|
||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--117" value="<font style="font-size: 12px;">BibSystem</font>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="790" y="338" width="180" height="52" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--132" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.985;entryY=0.664;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--11" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--131" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="ydUtLetK26WXyeJ3qCt--10" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--12" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--132" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.985;entryY=0.664;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="ydUtLetK26WXyeJ3qCt--11" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--134" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--13" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="ydUtLetK26WXyeJ3qCt--12" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--135" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--14" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--134" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="ydUtLetK26WXyeJ3qCt--13" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--135" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="ydUtLetK26WXyeJ3qCt--14" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--136" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--117" target="ydUtLetK26WXyeJ3qCt--38" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--136" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--38" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--137" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--5" target="ydUtLetK26WXyeJ3qCt--10" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
|
@ -243,121 +208,281 @@
|
|||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--158" value="Ausleihe" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1280" y="340" width="160" height="114" as="geometry" />
|
||||
<mxGeometry x="850" y="1090" width="310" height="118" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--159" value="- type: String<div>- availability: boolean</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--158" vertex="1">
|
||||
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--159" value="- ausleihBeginn: LocalDate<div>- ausleihEnde: LocalDate&nbsp;</div><div>- medium: Mediumverwalter</div><div>- benutzer: Benutzer</div><div>- verlängerungen: int</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--158" vertex="1">
|
||||
<mxGeometry y="26" width="310" height="84" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--160" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="ydUtLetK26WXyeJ3qCt--158" vertex="1">
|
||||
<mxGeometry y="80" width="160" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--161" value="+ method(type): type" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--158" vertex="1">
|
||||
<mxGeometry y="88" width="160" height="26" as="geometry" />
|
||||
<mxGeometry y="110" width="310" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--162" value="Ausweis" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1300" y="528" width="160" height="114" as="geometry" />
|
||||
<mxGeometry x="1220" y="1300" width="160" height="90" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--163" value="- kartenNummer: int<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--162" vertex="1">
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--163" value="- kartenNummer: String<div>- <u>generiereNummer </u>= 1000</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--162" vertex="1">
|
||||
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--164" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="ydUtLetK26WXyeJ3qCt--162" vertex="1">
|
||||
<mxGeometry y="80" width="160" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--165" value="+ method(type): type" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--162" vertex="1">
|
||||
<mxGeometry y="88" width="160" height="26" as="geometry" />
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--165" value="<div><br></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="ydUtLetK26WXyeJ3qCt--162" vertex="1">
|
||||
<mxGeometry y="88" width="160" height="2" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--190" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="1" source="ydUtLetK26WXyeJ3qCt--175" target="ydUtLetK26WXyeJ3qCt--163" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--175" target="ydUtLetK26WXyeJ3qCt--162" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1300" y="1250" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--175" value="<i>Benutzer</i>" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=37;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;strokeColor=default;spacingTop=10;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" parent="1" vertex="1">
|
||||
<mxGeometry x="1560" y="310" width="260" height="320" as="geometry" />
|
||||
<mxGeometry x="1470" y="1010" width="260" height="320" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--176" value="<span style="font-weight: normal;">- bibAusweis: Ausweis</span><div style="line-height: 140%;"><span style="background-color: initial; font-weight: normal;">- name: String</span></div><div style="line-height: 140%;"><span style="background-color: initial; font-weight: normal;">- alter: int</span></div><div style="line-height: 140%;"><span style="background-color: initial; font-weight: normal;">- istStudent: boolean</span></div><div style="line-height: 160%;"><span style="font-weight: normal;">-&nbsp;<span style="background-color: initial;">ausgeliehenenMedien[]: Medium</span></span></div><div><span style="font-weight: normal;">- angemeldet: boolean</span></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--175" vertex="1">
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--176" value="<span style="font-weight: normal;">- bibAusweis: Ausweis</span><div style="line-height: 140%;"><span style="background-color: initial; font-weight: normal;">- name: String</span></div><div style="line-height: 140%;"><span style="background-color: initial; font-weight: normal;">- alter: int</span></div><div style="line-height: 140%;"><span style="background-color: initial; font-weight: normal;">- istStudent: boolean</span></div><div style="line-height: 160%;"><span style="font-weight: normal;">-&nbsp;<span style="background-color: initial;">ausgeliehenenMedien[]: Ausleihe</span></span></div><div><span style="font-weight: normal;">- angemeldet: boolean</span></div><div><span style="font-weight: normal;">- gebühren: double</span></div><div><span style="font-weight: normal;">- anmeldeBeginn: LocalDate</span></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--175" vertex="1">
|
||||
<mxGeometry y="37" width="260" height="163" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--177" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--175" vertex="1">
|
||||
<mxGeometry y="200" width="260" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--178" value="<span style="font-weight: normal;">+ anmelden(int kartenNummer): boolean</span><div><span style="font-weight: normal;">+ ausleihe()</span></div><div><span style="font-weight: normal;">+ anzeigen()</span></div><div><span style="font-weight: normal;">+ verlängren()</span></div><div><span style="font-weight: normal;">+ zurückgeben()</span></div><div><span style="font-weight: normal;">+ gebührenbezahlen(int betrag): boolean</span></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--175" vertex="1">
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--178" value="<span style="font-weight: normal;">+ anmelden(): void</span><div><span style="font-weight: 400;">+ abmelden: void<br></span><div><span style="font-weight: normal;">+ ausleihen(medium: Ausleihe): void</span></div><div><span style="font-weight: normal; background-color: initial;"><i>+ jahresgebühren(): double</i></span></div><div><span style="font-weight: normal;">+ zurückgeben(medium: Ausleihe): void</span></div><div><br></div></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--175" vertex="1">
|
||||
<mxGeometry y="208" width="260" height="112" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--179" value="Kunde" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=36;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;strokeColor=default;spacingTop=10;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" parent="1" vertex="1">
|
||||
<mxGeometry x="1450" y="750" width="160" height="96" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--180" value="<span style="font-weight: normal;">+ field: type</span>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--179" vertex="1">
|
||||
<mxGeometry y="36" width="160" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--181" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--179" vertex="1">
|
||||
<mxGeometry y="62" width="160" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--182" value="<span style="font-weight: normal;">+ method(type): type</span>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--179" vertex="1">
|
||||
<mxGeometry y="70" width="160" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--183" value="Mitarbeiter" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=36;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;strokeColor=default;spacingTop=10;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" parent="1" vertex="1">
|
||||
<mxGeometry x="1670" y="750" width="160" height="110" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--184" value="<span style="font-weight: normal;">+ field: typ</span>e" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--183" vertex="1">
|
||||
<mxGeometry y="36" width="160" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--185" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="ydUtLetK26WXyeJ3qCt--183" vertex="1">
|
||||
<mxGeometry y="62" width="160" height="48" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--191" value="<div><br></div>1..*" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1500" y="430" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--192" value="hat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1459" y="472" width="60" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--193" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1450" y="550" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--203" value="" style="endArrow=none;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1519" y="750" as="sourcePoint" />
|
||||
<mxPoint x="1519" y="700" as="targetPoint" />
|
||||
<mxPoint x="1429" y="1450" as="sourcePoint" />
|
||||
<mxPoint x="1429" y="1400" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="1520" y="730" />
|
||||
<mxPoint x="1430" y="1430" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--204" value="" style="endArrow=none;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1719" y="750" as="sourcePoint" />
|
||||
<mxPoint x="1719" y="700" as="targetPoint" />
|
||||
<mxPoint x="1629" y="1450" as="sourcePoint" />
|
||||
<mxPoint x="1629" y="1400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--205" value="" style="endArrow=none;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1519" y="700" as="sourcePoint" />
|
||||
<mxPoint x="1719" y="700" as="targetPoint" />
|
||||
<mxPoint x="1429" y="1400" as="sourcePoint" />
|
||||
<mxPoint x="1629" y="1400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ydUtLetK26WXyeJ3qCt--206" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;entryX=0.344;entryY=0.997;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="ydUtLetK26WXyeJ3qCt--178" edge="1">
|
||||
<mxGeometry width="160" relative="1" as="geometry">
|
||||
<mxPoint x="1649" y="700" as="sourcePoint" />
|
||||
<mxPoint x="1630" y="680" as="targetPoint" />
|
||||
<mxPoint x="1559" y="1400" as="sourcePoint" />
|
||||
<mxPoint x="1540" y="1380" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="a17Tyx0-SzZjYovz-tY2-5" target="ydUtLetK26WXyeJ3qCt--41">
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-2" value="BibSystem" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="790" y="330" width="490" height="280" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-3" value="<div style="font-size: 11px;"><span style="background-color: initial;"><font style="font-size: 11px;">- allBibBenutzer: ArrayList&lt;Benutzer&gt;</font></span></div><div style="font-size: 11px;"><span style="background-color: initial;"><font style="font-size: 11px;">- medien: HashMap&lt;String,Mediumverwalter&gt;</font></span></div><div style="font-size: 11px;"><span style="background-color: initial;"><font style="font-size: 11px;">- ausleihe: ArrayList&lt;Ausleihe&gt;</font></span></div><div style="font-size: 11px;"><span style="background-color: initial;"><font style="font-size: 11px;">- ausleiheSystem: AusleihSystem</font></span></div><div style="font-size: 11px;"><span style="background-color: initial;"><font style="font-size: 11px;">- bibAdmin: Benutzer</font></span></div><div style="font-size: 11px;"><span style="background-color: initial;"><font style="font-size: 11px;"><br></font></span></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;strokeWidth=3;" parent="i-RIzz4hhB1Q3m7lVkjo-2" vertex="1">
|
||||
<mxGeometry y="26" width="490" height="104" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-4" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="i-RIzz4hhB1Q3m7lVkjo-2" vertex="1">
|
||||
<mxGeometry y="130" width="490" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-5" value="+ userRegistrieren(name:String, type: String, alter: int, istAdmin: String): void<div>+ userAnmelden(bibKartennummer: String): boolean</div><div>+&nbsp;mediumDurchsuchen(auswahl: String, bibKartennummer: String): ArrayList&lt;String&gt;</div><div>+&nbsp;mediumAusleihen(bibKartenNummer:&nbsp;<span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">,eindeutigeKennung:&nbsp;</span><span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">): String</span></div><div><span style="background-color: initial;">+&nbsp;</span><span style="background-color: initial;">medienVerlängern(eindeutigeKennung:</span><span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">, bibKartennummer:&nbsp;</span><span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">): boolean</span></div><div><span style="background-color: initial;">+&nbsp;</span><span style="background-color: initial;">gebührenBezahlen(betrag:&nbsp;</span><span style="background-color: initial;">double</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">, bibKartennummer:&nbsp;</span><span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">): boolean</span></div><div><span style="background-color: initial;">+&nbsp;</span><span style="background-color: initial;">medienRückgabe(eindeutigeKennung:&nbsp;</span><span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">): ArrayList&lt;String&gt;</span></div><div><span style="background-color: initial;">+&nbsp;</span><span style="background-color: initial;">jahresGebührenBerechnen(bibKartennummer:&nbsp;</span><span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">, datum:&nbsp;</span><span style="background-color: initial;">String</span><span style="background-color: initial;">&nbsp;</span><span style="background-color: initial;">): double</span></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-2" vertex="1">
|
||||
<mxGeometry y="138" width="490" height="142" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-10" value="Mediumverwalter" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1580" y="390" width="160" height="128" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-11" value="- verlängerbar: boolean<div>- anzahl: int</div><div>- leihdauer: int</div><div>- medium: Medium</div><div>- istAusgeliehen: boolean</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-10" vertex="1">
|
||||
<mxGeometry y="26" width="160" height="94" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-12" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="i-RIzz4hhB1Q3m7lVkjo-10" vertex="1">
|
||||
<mxGeometry y="120" width="160" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.398;entryY=0.01;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="i-RIzz4hhB1Q3m7lVkjo-10" target="ydUtLetK26WXyeJ3qCt--41" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-5" value="Mediumverwalter" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="1040" y="546" width="160" height="34" as="geometry" />
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-21" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1640" y="518" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="a17Tyx0-SzZjYovz-tY2-5">
|
||||
<mxGeometry y="26" width="160" height="8" as="geometry" />
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-22" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1750" y="610" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-10" value="AusleiheSystem" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="1020" y="368" width="160" height="34" as="geometry" />
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-25" value="Buch" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1490" y="864" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-12" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="a17Tyx0-SzZjYovz-tY2-10">
|
||||
<mxGeometry y="26" width="160" height="8" as="geometry" />
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-26" value="- autor: String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-25" vertex="1">
|
||||
<mxGeometry y="26" width="140" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="a17Tyx0-SzZjYovz-tY2-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.025;entryY=0.151;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="ydUtLetK26WXyeJ3qCt--158">
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-29" value="Cd" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1650" y="864" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-30" value="- künstler: String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-29" vertex="1">
|
||||
<mxGeometry y="26" width="140" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-31" value="Dvd" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1838" y="864" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-32" value="- regisseur: String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-31" vertex="1">
|
||||
<mxGeometry y="26" width="140" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-37" value="Dvd" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="2008" y="864" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-38" value="- verlag: String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-37" vertex="1">
|
||||
<mxGeometry y="26" width="140" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-39" value="Videospiel" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="2178" y="864" width="140" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-40" value="- plattform: String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-39" vertex="1">
|
||||
<mxGeometry y="26" width="140" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="i-RIzz4hhB1Q3m7lVkjo-3" target="i-RIzz4hhB1Q3m7lVkjo-10" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-43" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1280" y="375" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-44" value="hat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1490" y="340" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-45" value="<font style="font-size: 18px;"><b>*</b></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=5;" parent="1" vertex="1">
|
||||
<mxGeometry x="1650" y="360" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-48" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1060" y="740" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-49" value="AusleihSystem" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="801" y="770" width="539" height="180" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-50" value="- ausleihBeginn: LocalDate<div>- ausleihEnde: LocalDate&nbsp;</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-49" vertex="1">
|
||||
<mxGeometry y="26" width="539" height="64" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-51" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="i-RIzz4hhB1Q3m7lVkjo-49" vertex="1">
|
||||
<mxGeometry y="90" width="539" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-52" value="+ mediumAusleihen(benutzer: Benutzer, eindutigeNummer: String): Ausleihe<div>+ mediumRückgabe(ausleihe: ArrayList&lt;Ausleihe&gt;, eindutigeKennung: String): ArrayList&lt;String&gt;</div><div>+ medienVerlängern(benutzer:Benutzer, eindutigeKennung: String): boolean</div><div>- findMedium(eindutigeKennung: String): Mediumverwalter</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="i-RIzz4hhB1Q3m7lVkjo-49" vertex="1">
|
||||
<mxGeometry y="98" width="539" height="82" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.001;entryY=0.1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="i-RIzz4hhB1Q3m7lVkjo-2" target="ydUtLetK26WXyeJ3qCt--158" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="1180" y="407" as="sourcePoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="770" y="470" />
|
||||
<mxPoint x="770" y="1102" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-58" value="<font style="font-size: 22px;">*</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="790" y="1080" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-59" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="741" y="444" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-61" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.998;entryY=0.588;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ydUtLetK26WXyeJ3qCt--175" target="ydUtLetK26WXyeJ3qCt--159" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-62" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1400" y="1134" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-63" value="hat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1300" y="1134" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-64" value="<font style="font-size: 21px;">*</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1160" y="1134" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-65" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1420" y="1218" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-66" value="hat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1300" y="1220" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-68" value="<font style="font-size: 12px;">1</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1240" y="1270" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-69" value="erstellt" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1005" y="990" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-70" value="<font style="font-size: 12px;">1</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="960" y="1060" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-71" value="verwaltet" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1760" y="550" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-72" value="kommuniziert" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1060" y="670" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-73" value="hat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="767" y="690" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="xSOr38UQ6ttjsq0tnJFV-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.388;entryY=0.019;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="i-RIzz4hhB1Q3m7lVkjo-49" target="ydUtLetK26WXyeJ3qCt--158" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="xSOr38UQ6ttjsq0tnJFV-2" value="<font style="font-size: 12px;">1</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="1060" y="950" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="xSOr38UQ6ttjsq0tnJFV-5" value="Studenten" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="1350" y="1450" width="160" height="34" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="xSOr38UQ6ttjsq0tnJFV-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="xSOr38UQ6ttjsq0tnJFV-5" vertex="1">
|
||||
<mxGeometry y="26" width="160" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="xSOr38UQ6ttjsq0tnJFV-17" value="Medium druchsuchen" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="375" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="xSOr38UQ6ttjsq0tnJFV-18" value="Medium<div>Ausleihen</div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="440" y="440" width="80" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.057;entryY=-0.011;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="i-RIzz4hhB1Q3m7lVkjo-2" target="ydUtLetK26WXyeJ3qCt--175">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-2" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="1290" y="439" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-3" value="hat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="1470" y="690" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-4" value="*" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="1470" y="970" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-5" value="Mitarbeiter" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="1740" y="1437" width="300" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="l42d9aidsTNYsLyE-SN_-5">
|
||||
<mxGeometry y="26" width="300" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-8" value="+ gebührenVerbuchen(benutzer: Benutzer): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="l42d9aidsTNYsLyE-SN_-5">
|
||||
<mxGeometry y="34" width="300" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-9" value="Erwachsener" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="1550" y="1450" width="160" height="34" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-11" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="l42d9aidsTNYsLyE-SN_-9">
|
||||
<mxGeometry y="26" width="160" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-13" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1630" y="1400" as="sourcePoint" />
|
||||
<mxPoint x="1630" y="1400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-14" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1630" y="1400" as="sourcePoint" />
|
||||
<mxPoint x="1890" y="1400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-15" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="l42d9aidsTNYsLyE-SN_-5">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="1840" y="1450" as="sourcePoint" />
|
||||
<mxPoint x="1890" y="1400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-17" value="" style="endArrow=none;html=1;rounded=0;exitX=0.457;exitY=0.004;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.526;entryY=1.014;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="i-RIzz4hhB1Q3m7lVkjo-49" target="i-RIzz4hhB1Q3m7lVkjo-5">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="970" y="660" as="sourcePoint" />
|
||||
<mxPoint x="1020" y="610" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="l42d9aidsTNYsLyE-SN_-18" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="1040.5" y="620" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
|
|
After Width: | Height: | Size: 298 KiB |
Before Width: | Height: | Size: 89 KiB |
|
@ -1,29 +0,0 @@
|
|||
private Benutzer findBenutzer(int kartennummer) {
|
||||
alleBibBenutzer.stream()
|
||||
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wie kann ich hier Benutzer mit Stream zurückgeben?
|
||||
|
||||
Antwort:
|
||||
Um in der Methode findBenutzer den Benutzer mit der angegebenen Kartennummer zurückzugeben,
|
||||
kannst du den stream()-Ansatz verwenden und das Ergebnis filtern.
|
||||
Schließlich kannst du mit findFirst() das erste (und in diesem Fall das einzige) Element des Streams
|
||||
abrufen, das die Bedingung erfüllt. Wenn kein Benutzer mit dieser Kartennummer vorhanden ist, könnte findFirst() ein Optional-Objekt ohne Wert zurückgeben.
|
||||
|
||||
Hier ist die angepasste Methode:
|
||||
private Benutzer findBenutzer(int kartennummer) {
|
||||
return alleBibBenutzer.stream()
|
||||
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
|
||||
.findFirst()
|
||||
.orElse(null); // Gibt null zurück, falls kein Benutzer mit der Kartennummer gefunden wurde
|
||||
}
|
||||
|
||||
Erklärung der Anpassung
|
||||
stream(): Wandelt die ArrayList in einen Stream um.
|
||||
filter(...): Filtert den Stream nach Benutzern, deren Kartennummer mit der gesuchten übereinstimmt.
|
||||
findFirst(): Nimmt das erste Element des Streams, das die Filterbedingung erfüllt.
|
||||
orElse(null): Gibt null zurück, falls kein Benutzer gefunden wurde.
|
|
@ -1,48 +0,0 @@
|
|||
package domain.AusleiheSystem;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import domain.Medium.Medium;
|
||||
import domain.Medium.Mediumverwalter;
|
||||
|
||||
public class Ausleihe {
|
||||
|
||||
private SimpleDateFormat simpleFormatter;
|
||||
private Date ausleiheBeginn, ausleiheEnde;
|
||||
private Mediumverwalter medium;
|
||||
private int verlängerungen;
|
||||
|
||||
public Ausleihe(Mediumverwalter medium,Date ausleiheBeginn, Date ausleiheEnde) {
|
||||
this.medium = medium;
|
||||
this.ausleiheBeginn = ausleiheBeginn;
|
||||
this.ausleiheEnde = ausleiheEnde;
|
||||
this.simpleFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm");
|
||||
this.verlängerungen = 0;
|
||||
}
|
||||
|
||||
public Date getAusleiheBeginn() {
|
||||
return ausleiheBeginn;
|
||||
}
|
||||
|
||||
public void setAusleiheBeginn(Date ausleiheBeginn) {
|
||||
this.ausleiheBeginn = ausleiheBeginn;
|
||||
}
|
||||
|
||||
public Date getAusleiheEnde() {
|
||||
return ausleiheEnde;
|
||||
}
|
||||
|
||||
public void setAusleiheEnde(Date ausleiheEnde) {
|
||||
this.ausleiheEnde = ausleiheEnde;
|
||||
}
|
||||
|
||||
public Mediumverwalter getMedium() {
|
||||
return medium;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Ausgeliehene Mediums= "+ medium.toString()+ " Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde) + " ,verlängerungen= " + verlängerungen;
|
||||
}
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
package domain.AusleiheSystem;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import domain.Benutzer.Benutzer;
|
||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||
import domain.Medium.*;
|
||||
|
||||
public class AusleiheSystem {
|
||||
|
||||
private HashMap<String,Mediumverwalter> medien;
|
||||
private Date ausleiheBeginn;
|
||||
private Date ausleiheEnde;
|
||||
private Calendar calendar;
|
||||
|
||||
|
||||
public AusleiheSystem( HashMap<String,Mediumverwalter> medien) {
|
||||
this.medien = medien;
|
||||
}
|
||||
|
||||
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);
|
||||
mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1);
|
||||
this.ausleiheBeginn = new Date();
|
||||
this.calendar = Calendar.getInstance();
|
||||
calendar.setTime(ausleiheBeginn);
|
||||
|
||||
calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getLeihdauer());
|
||||
this.ausleiheEnde = calendar.getTime();
|
||||
Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen,ausleiheBeginn,ausleiheEnde);
|
||||
benutzer.ausleihen(neueAusleihe);
|
||||
System.out.println(benutzer.getAusgeliehenenMedien());
|
||||
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");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -1,124 +0,0 @@
|
|||
package domain.Benutzer;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
import domain.AusleiheSystem.Ausleihe;
|
||||
import domain.Medium.Medium;
|
||||
|
||||
public abstract class Benutzer {
|
||||
|
||||
private Ausweis bibAusweis;
|
||||
private String name;
|
||||
private int alter;
|
||||
private boolean istStudent;
|
||||
private ArrayList<Ausleihe> ausgeliehenenMedien;
|
||||
private boolean angemeldet;
|
||||
private double gebühren;
|
||||
private Date anmeldebeginn,anmeldeEnde;
|
||||
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
|
||||
|
||||
public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||
super();
|
||||
this.bibAusweis = bibAusweis;
|
||||
this.name = name;
|
||||
this.alter = alter;
|
||||
this.istStudent = istStudent;
|
||||
this.ausgeliehenenMedien = new ArrayList<>();
|
||||
this.angemeldet = false;
|
||||
this.gebühren = 0;
|
||||
this.anmeldebeginn = new Date();
|
||||
}
|
||||
|
||||
public Ausweis getBibAusweis() {
|
||||
return bibAusweis;
|
||||
}
|
||||
|
||||
public void setBibAusweis(Ausweis bibAusweis) {
|
||||
this.bibAusweis = bibAusweis;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getAlter() {
|
||||
return alter;
|
||||
}
|
||||
|
||||
public void setAlter(int alter) {
|
||||
this.alter = alter;
|
||||
}
|
||||
|
||||
public boolean isIstStudent() {
|
||||
return istStudent;
|
||||
}
|
||||
|
||||
public void setIstStudent(boolean istStudent) {
|
||||
this.istStudent = istStudent;
|
||||
}
|
||||
|
||||
public ArrayList<Ausleihe> getAusgeliehenenMedien() {
|
||||
return ausgeliehenenMedien;
|
||||
}
|
||||
|
||||
public void ausleihen(Ausleihe medium) {
|
||||
this.ausgeliehenenMedien.add(medium);
|
||||
}
|
||||
|
||||
public void removeMedium(Ausleihe medium) {
|
||||
this.ausgeliehenenMedien.remove(medium);
|
||||
}
|
||||
|
||||
public boolean isAngemeldet() {
|
||||
return angemeldet;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Date getAnmeldebeginn() {
|
||||
return anmeldebeginn;
|
||||
}
|
||||
|
||||
public void setAnmeldebeginn(String anmeldebeginn) throws ParseException {
|
||||
this.anmeldebeginn = formatter.parse(anmeldebeginn);
|
||||
}
|
||||
|
||||
public Date getAnmeldeEnde() {
|
||||
return anmeldeEnde;
|
||||
}
|
||||
|
||||
public void setAnmeldeEnde(String anmeldeEnde) throws ParseException {
|
||||
this.anmeldeEnde= formatter.parse(anmeldeEnde);
|
||||
}
|
||||
|
||||
public abstract double getJahresgebühr();
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent="
|
||||
+ istStudent + ", ist im System Online = " + angemeldet + "Gebühren= "+ gebühren +"Anmeldet seit= " + formatter.format(anmeldeEnde) + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
package domain.Benutzer;
|
||||
|
||||
public class Kunde extends Benutzer {
|
||||
|
||||
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||
super(bibAusweis, name, alter, istStudent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getJahresgebühr() {
|
||||
return 25.0;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
package domain.Bibliothekskatalog;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import domain.Medium.*;
|
||||
|
||||
public class Mediensuchen {
|
||||
|
||||
public ArrayList<String> title(String title, HashMap<String,Mediumverwalter> medien) {
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().getMedium().getTitle().equalsIgnoreCase(title))
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public ArrayList<String> ausgeliehen(String ausgeliehen, HashMap<String,Mediumverwalter> medien) {
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().isIstAusgeliehen())
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public ArrayList<String> nichtAusgeliehen(String ausgeliehen, HashMap<String,Mediumverwalter> medien) {
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> !(t.getValue().isIstAusgeliehen()))
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public ArrayList<String> medienart(String medienart, HashMap<String,Mediumverwalter> medien) {
|
||||
switch(medienart) {
|
||||
case "Bücher":
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().getMedium() instanceof Buch)
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
case "Brettspiele":
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().getMedium() instanceof Brettspiel)
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
case "Dvds":
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().getMedium() instanceof Dvd)
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
case "Cds":
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().getMedium() instanceof Cd)
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
case "Videospiele":
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().getMedium() instanceof Videospiel)
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
default:
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
package domain.UserRegistieren;
|
||||
|
||||
import domain.Benutzer.*;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
|
||||
public class Registieren {
|
||||
|
||||
public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
|
||||
Benutzer benutzer;
|
||||
Ausweis ausweis;
|
||||
|
||||
if (!name.isEmpty() && (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student")) && istAdmin.equalsIgnoreCase("nein")) {
|
||||
ausweis = new Ausweis("K");
|
||||
benutzer = new Kunde(ausweis,name,alter,false);
|
||||
}
|
||||
else if (!name.isEmpty() && type.equalsIgnoreCase("mitarbeiter") && istAdmin.equalsIgnoreCase("ja")) {
|
||||
ausweis = new Ausweis("A");
|
||||
benutzer = new Mitarbeiter(ausweis,name,alter,true);
|
||||
}
|
||||
else
|
||||
throw new FalscheEingabeException("Falsche Eingabe");
|
||||
|
||||
return benutzer;
|
||||
|
||||
}
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
package domain.UserRegistieren;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import domain.Benutzer.Ausweis;
|
||||
import domain.Benutzer.Benutzer;
|
||||
import domain.Benutzer.Kunde;
|
||||
import domain.Benutzer.Mitarbeiter;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
import domain.Medium.Buch;
|
||||
import domain.Medium.Mediumverwalter;
|
||||
import domain.fassade.BibSystem;
|
||||
|
||||
class RegistrierenTest {
|
||||
private BibSystem bib;
|
||||
|
||||
@BeforeEach
|
||||
void erstelleObjekt() {
|
||||
this.bib = new BibSystem();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testKunde() throws FalscheEingabeException {
|
||||
|
||||
Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein");
|
||||
// True, da Kunde ist
|
||||
assertTrue(benutzer instanceof Kunde);
|
||||
String bibKartenNummer = "K1000";
|
||||
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMitarbeiter() throws FalscheEingabeException {
|
||||
|
||||
Benutzer benutzer = Registieren.userRegistrieren("obai", "mitarbeiter", 15, "ja");
|
||||
// True, da Mitarbeiter ist
|
||||
assertTrue(benutzer instanceof Mitarbeiter);
|
||||
String bibKartenNummer = "A1001";
|
||||
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package domain.ausleihSystem;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
import domain.benutzer.Benutzer;
|
||||
import domain.medium.Mediumverwalter;
|
||||
|
||||
public class Ausleihe {
|
||||
|
||||
private LocalDate ausleiheBeginn, ausleiheEnde;
|
||||
private Mediumverwalter medium;
|
||||
private Benutzer benutzer;
|
||||
private int verlängerungen;
|
||||
|
||||
public Ausleihe(Mediumverwalter medium, Benutzer benutzer,LocalDate ausleiheBeginn, LocalDate ausleiheEnde) {
|
||||
this.medium = medium;
|
||||
this.ausleiheBeginn = ausleiheBeginn;
|
||||
this.ausleiheEnde = ausleiheEnde;
|
||||
this.verlängerungen = 0;
|
||||
this.benutzer = benutzer;
|
||||
}
|
||||
|
||||
public Mediumverwalter getMediumverwalter() {
|
||||
return medium;
|
||||
}
|
||||
|
||||
public Benutzer getBenutzer() {
|
||||
return benutzer;
|
||||
}
|
||||
|
||||
public LocalDate getAusleiheBeginn() {
|
||||
return ausleiheBeginn;
|
||||
}
|
||||
|
||||
public void setAusleiheBeginn(LocalDate ausleiheBeginn) {
|
||||
this.ausleiheBeginn = ausleiheBeginn;
|
||||
}
|
||||
|
||||
public LocalDate getAusleiheEnde() {
|
||||
return ausleiheEnde;
|
||||
}
|
||||
|
||||
public void setAusleiheEnde(LocalDate ausleiheEnde) {
|
||||
this.ausleiheEnde = ausleiheEnde;
|
||||
}
|
||||
|
||||
public int getVerlängerungen() {
|
||||
return verlängerungen;
|
||||
}
|
||||
|
||||
public void setVerlängerungen(int verlängerungen) {
|
||||
this.verlängerungen = verlängerungen;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Ausgeliehene Mediums= "+ medium.toString()+
|
||||
" Ausleihe Beginn= " +ausleiheBeginn +
|
||||
" ,Ausleihe Ende= " + ausleiheEnde +
|
||||
" ,verlängerungen= " + verlängerungen +
|
||||
" ,inhaber= " + benutzer.toString() ;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package domain.AusleiheSystem;
|
||||
package domain.ausleihSystem;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
|
@ -19,8 +19,10 @@ class AusleiheJTest {
|
|||
@Test
|
||||
void test() throws Exception {
|
||||
bib.userRegistrieren("obai", "student", 15, "nein");
|
||||
bib.userAnmdelden("K1000");
|
||||
bib.mediumAusleihen("K1000", "B001");
|
||||
bib.userAnmelden("K1001");
|
||||
double userGebühren = bib.mediumAusleihen("K1001", "B001");
|
||||
assertEquals(0.0,userGebühren);
|
||||
|
||||
}
|
||||
|
||||
}
|
After Width: | Height: | Size: 40 KiB |
|
@ -0,0 +1,144 @@
|
|||
package domain.ausleihSystem;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
|
||||
import domain.benutzer.Benutzer;
|
||||
import domain.exceptionsKlassen.MediumNichtGefundenException;
|
||||
import domain.medium.*;
|
||||
|
||||
public class AusleiheSystem {
|
||||
|
||||
private HashMap<String, Mediumverwalter> medien;
|
||||
private LocalDate ausleiheBeginn, ausleiheEnde;
|
||||
|
||||
public AusleiheSystem(HashMap<String, Mediumverwalter> medien) {
|
||||
this.medien = medien;
|
||||
}
|
||||
|
||||
|
||||
public Ausleihe mediumAusleihen(Benutzer benutzer, String eindeutigenummer) throws MediumNichtGefundenException {
|
||||
Mediumverwalter mediumAusleihen = findMedium(eindeutigenummer);
|
||||
|
||||
if (mediumAusleihen.isIstAusgeliehen())
|
||||
throw new MediumNichtGefundenException("Das Medium ist ausgeliehen");
|
||||
|
||||
mediumAusleihen.setIstAusgeliehen(true);
|
||||
mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1);
|
||||
|
||||
this.ausleiheBeginn = LocalDate.now();
|
||||
|
||||
this.ausleiheEnde = ausleiheBeginn.plusDays(mediumAusleihen.getLeihdauer());
|
||||
|
||||
Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen, benutzer, ausleiheBeginn, ausleiheEnde);
|
||||
|
||||
return neueAusleihe;
|
||||
}
|
||||
|
||||
public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) {
|
||||
Ausleihe ausgelieheneMedium = ausleihe.stream()
|
||||
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
ArrayList<String> ausgeliehenMedien = new ArrayList<>();
|
||||
LocalDate heutigesDatum;
|
||||
Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer();
|
||||
|
||||
if (ausgelieheneMedium != null) {
|
||||
heutigesDatum = LocalDate.now();
|
||||
if (heutigesDatum.isAfter(ausgelieheneMedium.getAusleiheEnde())) {
|
||||
long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS);
|
||||
double gebühren = 0.0;
|
||||
if (überfälligeTage <= 7)
|
||||
gebühren = überfälligeTage * 1.0;
|
||||
|
||||
else {
|
||||
gebühren = (7 * 1.0);
|
||||
gebühren += ((überfälligeTage - 7) * 2.0);
|
||||
|
||||
}
|
||||
|
||||
bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren);
|
||||
|
||||
}
|
||||
ausgelieheneMedium.getBenutzer().mediumZurückgeben(ausgelieheneMedium);
|
||||
ausleihe.remove(ausgelieheneMedium);
|
||||
ausgelieheneMedium.getMediumverwalter().setIstAusgeliehen(false);
|
||||
ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1);
|
||||
for (Ausleihe a : ausgelieheneMedium.getBenutzer().getAusgeliehenenMedien())
|
||||
ausgeliehenMedien.add(a.toString());
|
||||
|
||||
}
|
||||
|
||||
return ausgeliehenMedien;
|
||||
}
|
||||
|
||||
public double SimulieremediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung, String ausleiheBeginn, String ausleiheEnde,String datum) throws MediumNichtGefundenException {
|
||||
Ausleihe ausgelieheneMedium = ausleihe.stream()
|
||||
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
|
||||
.orElse(null);
|
||||
|
||||
LocalDate beginn = LocalDate.parse(ausleiheBeginn);
|
||||
LocalDate ende = LocalDate.parse(ausleiheEnde);
|
||||
LocalDate heutigesDatum = LocalDate.parse(datum);
|
||||
Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer();
|
||||
|
||||
ausgelieheneMedium.setAusleiheBeginn(beginn);
|
||||
ausgelieheneMedium.setAusleiheEnde(ende);
|
||||
|
||||
if (heutigesDatum.isAfter(ausgelieheneMedium.getAusleiheEnde())) {
|
||||
long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS);
|
||||
double gebühren = 0.0;
|
||||
if (überfälligeTage <= 7)
|
||||
gebühren = überfälligeTage * 1.0;
|
||||
|
||||
else {
|
||||
gebühren = (7 * 1.0);
|
||||
gebühren += ((überfälligeTage - 7) * 2.0);
|
||||
|
||||
}
|
||||
|
||||
bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren);
|
||||
}
|
||||
|
||||
return bibBenutzer.getGebühren();
|
||||
}
|
||||
|
||||
public boolean medienVerlängern(Benutzer benutzer, String eindeutigeKennung) throws MediumNichtGefundenException {
|
||||
Ausleihe medium = benutzer.getAusgeliehenenMedien().stream()
|
||||
.filter(m -> m.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (medium == null)
|
||||
return false;
|
||||
|
||||
LocalDate heutigesDatum = LocalDate.now();
|
||||
if (heutigesDatum.isAfter(medium.getAusleiheEnde()))
|
||||
return false;
|
||||
|
||||
if (!medium.getMediumverwalter().isVerlängerbar())
|
||||
return false;
|
||||
|
||||
if (medium.getVerlängerungen() == 3)
|
||||
return false;
|
||||
|
||||
medium.setVerlängerungen(medium.getVerlängerungen() + 1);
|
||||
medium.setAusleiheBeginn(LocalDate.now());
|
||||
medium.setAusleiheEnde(LocalDate.now().plusDays(medium.getMediumverwalter().getLeihdauer()));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
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");
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package domain.ausleihSystem;
|
||||
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import domain.benutzer.Benutzer;
|
||||
import domain.fassade.BibSystem;
|
||||
|
||||
class MedienRückgabeTest {
|
||||
|
||||
private BibSystem bib;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
this.bib = new BibSystem();
|
||||
}
|
||||
|
||||
@Test
|
||||
void test() throws Exception {
|
||||
bib.userRegistrieren("obai", "student", 15, "nein");
|
||||
bib.userAnmelden("K1001");
|
||||
bib.mediumAusleihen("K1001", "B001");
|
||||
|
||||
Benutzer bibUser = bib.findeBenutzer("K1001");
|
||||
double gebühren = bib.datumÄndern("B001", "2022-09-01", "2022-10-01", "2022-10-09");
|
||||
assertEquals(9.0,gebühren);
|
||||
assertTrue(bib.adminAnmelden("A1000"));
|
||||
assertTrue(bib.getgbührenBenutzer("K1001") == 9.0);
|
||||
bib.gebührenVerbuchen("K1001");
|
||||
assertTrue (bibUser.getGebühren() == 0.0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package domain.ausleihSystem;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import domain.fassade.BibSystem;
|
||||
|
||||
class MediumVerlängernTest {
|
||||
|
||||
private BibSystem bib;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
this.bib = new BibSystem();
|
||||
}
|
||||
|
||||
@Test
|
||||
void test() throws Exception {
|
||||
bib.userRegistrieren("obai", "student", 15, "nein");
|
||||
bib.userAnmelden("K1001");
|
||||
bib.mediumAusleihen("K1001", "B001");
|
||||
assertTrue(bib.medienVerlängern("B001", "K1001"));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package domain.Benutzer;
|
||||
package domain.benutzer;
|
||||
|
||||
public class Ausweis {
|
||||
private String kartennummer;
|
|
@ -0,0 +1,147 @@
|
|||
package domain.benutzer;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import domain.ausleihSystem.Ausleihe;
|
||||
|
||||
public abstract class Benutzer {
|
||||
|
||||
private Ausweis bibAusweis;
|
||||
private String name;
|
||||
private int alter;
|
||||
private boolean istStudent;
|
||||
private ArrayList<Ausleihe> ausgeliehenenMedien;
|
||||
private boolean angemeldet;
|
||||
private double gebühren;
|
||||
private LocalDate anmeldebeginn;
|
||||
|
||||
public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||
super();
|
||||
this.bibAusweis = bibAusweis;
|
||||
this.name = name;
|
||||
this.alter = alter;
|
||||
this.istStudent = istStudent;
|
||||
this.ausgeliehenenMedien = new ArrayList<>();
|
||||
this.angemeldet = false;
|
||||
this.gebühren = 0;
|
||||
this.anmeldebeginn = LocalDate.now();
|
||||
}
|
||||
|
||||
public Ausweis getBibAusweis() {
|
||||
return bibAusweis;
|
||||
}
|
||||
|
||||
public void setBibAusweis(Ausweis bibAusweis) {
|
||||
this.bibAusweis = bibAusweis;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getAlter() {
|
||||
return alter;
|
||||
}
|
||||
|
||||
public void setAlter(int alter) {
|
||||
this.alter = alter;
|
||||
}
|
||||
|
||||
public boolean isIstStudent() {
|
||||
return istStudent;
|
||||
}
|
||||
|
||||
public void setIstStudent(boolean istStudent) {
|
||||
this.istStudent = istStudent;
|
||||
}
|
||||
|
||||
public ArrayList<Ausleihe> getAusgeliehenenMedien() {
|
||||
return ausgeliehenenMedien;
|
||||
}
|
||||
|
||||
public void ausleihen(Ausleihe medium) {
|
||||
this.ausgeliehenenMedien.add(medium);
|
||||
}
|
||||
|
||||
public void mediumZurückgeben(Ausleihe medium) {
|
||||
this.ausgeliehenenMedien.remove(medium);
|
||||
}
|
||||
|
||||
public boolean isAngemeldet() {
|
||||
return angemeldet;
|
||||
}
|
||||
|
||||
public boolean anmelden() {
|
||||
this.angemeldet = true;
|
||||
return this.angemeldet;
|
||||
}
|
||||
|
||||
public boolean abmelden() {
|
||||
this.angemeldet = false ;
|
||||
return this.angemeldet;
|
||||
}
|
||||
|
||||
|
||||
public double getGebühren() {
|
||||
return gebühren;
|
||||
}
|
||||
|
||||
public void setGebühren(double gebühren) {
|
||||
this.gebühren = gebühren;
|
||||
}
|
||||
|
||||
public LocalDate getAnmeldebeginn() {
|
||||
return anmeldebeginn;
|
||||
}
|
||||
|
||||
public void setAnmeldebeginn(LocalDate anmeldebeginn) {
|
||||
this.anmeldebeginn = anmeldebeginn;
|
||||
}
|
||||
|
||||
|
||||
public double jahresgebühren(String datum) {
|
||||
// Falls ein Testdatum angegeben ist
|
||||
if (!datum.isEmpty()) {
|
||||
LocalDate aktuellesDatum = LocalDate.parse(datum);
|
||||
while (this.anmeldebeginn.isBefore(aktuellesDatum)) {
|
||||
this.gebühren += getJahresgebühren();
|
||||
this.anmeldebeginn = this.anmeldebeginn.plusYears(1); // Aktualisieren des Startdatums
|
||||
}
|
||||
|
||||
this.anmeldebeginn = aktuellesDatum; // Letztes Aktualisieren des Startdatums
|
||||
}
|
||||
else {
|
||||
LocalDate nachEinemJahr = this.anmeldebeginn.plusYears(1);
|
||||
while (LocalDate.now().isAfter(nachEinemJahr)) {
|
||||
this.gebühren += getJahresgebühren();
|
||||
this.anmeldebeginn = nachEinemJahr;
|
||||
nachEinemJahr = this.anmeldebeginn.plusYears(1);
|
||||
}
|
||||
}
|
||||
|
||||
return this.gebühren;
|
||||
}
|
||||
|
||||
|
||||
public abstract double getJahresgebühren();
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() +
|
||||
", name=" + name +
|
||||
", alter=" + alter +
|
||||
", istStudent=" + istStudent +
|
||||
", ist im System Online = " + angemeldet +
|
||||
" ,Gebühren= "+ gebühren + "]";
|
||||
}
|
||||
|
||||
public String zeigeAusgeliehenMediums() {
|
||||
return "Ausgeliehene Mediums= " + ausgeliehenenMedien;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package domain.benutzer;
|
||||
|
||||
public class Erwachsener extends Benutzer {
|
||||
|
||||
public Erwachsener(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||
super(bibAusweis, name, alter, istStudent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getJahresgebühren() {
|
||||
return 50.0;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package domain.Benutzer;
|
||||
package domain.benutzer;
|
||||
|
||||
public class Mitarbeiter extends Benutzer {
|
||||
|
||||
|
@ -7,11 +7,12 @@ public class Mitarbeiter extends Benutzer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public double getJahresgebühr() {
|
||||
return 50.0;
|
||||
public double getJahresgebühren() {
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
public void gebührVerbuchen(Benutzer benutzer) {
|
||||
benutzer.setGebühren(getGebühren() * 0);
|
||||
benutzer.setGebühren(0.0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package domain.benutzer;
|
||||
|
||||
public class Student extends Benutzer {
|
||||
|
||||
public Student(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||
super(bibAusweis, name, alter, istStudent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getJahresgebühren() {
|
||||
return 25.0;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package domain.Bibliothekskatalog;
|
||||
package domain.bibliothekskatalog;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
|
@ -8,13 +8,13 @@ import org.junit.jupiter.api.BeforeEach;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import domain.Benutzer.Benutzer;
|
||||
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||
import domain.UserRegistieren.Registieren;
|
||||
import domain.benutzer.Benutzer;
|
||||
import domain.exceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||
import domain.exceptionsKlassen.BenutzerNichtGefundenException;
|
||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
||||
import domain.exceptionsKlassen.MediumNichtGefundenException;
|
||||
import domain.fassade.BibSystem;
|
||||
import domain.fassade.Registieren;
|
||||
|
||||
class MedienSuchenTest {
|
||||
|
||||
|
@ -24,27 +24,27 @@ private BibSystem fassade;
|
|||
void erstelleObjekt() throws FalscheEingabeException, BenutzerNichtGefundenException {
|
||||
this.fassade = new BibSystem();
|
||||
fassade.userRegistrieren("obai", "student", 15, "nein");
|
||||
fassade.userAnmdelden("K1000");
|
||||
fassade.userAnmelden("K1001");
|
||||
|
||||
}
|
||||
|
||||
@Disabled
|
||||
void testMedienSuchenNachTitle()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException {
|
||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Effektives Java Programmieren", "K1000");
|
||||
void testMedienSuchenNachTitle()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException {
|
||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Effektives Java Programmieren", "K1001");
|
||||
nichtAusgeliehen.forEach(System.out::println);
|
||||
|
||||
}
|
||||
|
||||
@Disabled
|
||||
void testMedienSuchenNachMedienart()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException {
|
||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Videospiele", "K1000");
|
||||
nichtAusgeliehen.forEach(System.out::println);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMedienSuchenNachausgeliehen()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException {
|
||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("ausgeliehen", "K1000");
|
||||
void testMedienSuchenNachMedienart()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException {
|
||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Videospiele", "K1001");
|
||||
nichtAusgeliehen.forEach(System.out::println);
|
||||
|
||||
}
|
||||
|
||||
@Disabled
|
||||
void testMedienSuchenNachausgeliehen()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException {
|
||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("ausgeliehen", "K1001");
|
||||
nichtAusgeliehen.forEach(System.out::println);
|
||||
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
package domain.bibliothekskatalog;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import domain.ausleihSystem.Ausleihe;
|
||||
import domain.medium.*;
|
||||
|
||||
public class Mediensuchen {
|
||||
|
||||
public ArrayList<String> title(String title, HashMap<String,Mediumverwalter> medien) {
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().getMedium().getTitle().equalsIgnoreCase(title))
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public ArrayList<String> ausgeliehen(String ausgeliehen, HashMap<String,Mediumverwalter> medien) {
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> t.getValue().isIstAusgeliehen())
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public ArrayList<String> nichtAusgeliehen(String ausgeliehen, HashMap<String,Mediumverwalter> medien) {
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> !(t.getValue().isIstAusgeliehen()))
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
|
||||
public ArrayList<String> medienart(String medienart, HashMap<String, Mediumverwalter> medien) {
|
||||
// Map zur Zuordnung von medienart zu Klassen
|
||||
Map<String, Class<?>> medienKlassen = Map.of(
|
||||
"Bücher", Buch.class,
|
||||
"Brettspiele", Brettspiel.class,
|
||||
"Dvds", Dvd.class,
|
||||
"Cds", Cd.class,
|
||||
"Videospiele", Videospiel.class
|
||||
);
|
||||
|
||||
// Ermitteln der entsprechenden Klasse für die angegebene Medienart
|
||||
Class<?> klasse = medienKlassen.get(medienart);
|
||||
|
||||
if (klasse == null) {
|
||||
return null; // Ungültige Medienart
|
||||
}
|
||||
|
||||
// Stream für die Filterung und Konvertierung
|
||||
return medien.entrySet().stream()
|
||||
.filter(t -> klasse.isInstance(t.getValue().getMedium())) // Filtert nach der Klasse
|
||||
.map(t -> klasse.cast(t.getValue().getMedium())) // Castet das Medium zur richtigen Klasse
|
||||
.map(t -> "Eindutige Kennung= " + t.toString()) // Konvertiert zu String
|
||||
.collect(Collectors.toCollection(ArrayList::new)); // Sammeln als ArrayList
|
||||
}
|
||||
|
||||
|
||||
public ArrayList<String> baldVerfügbareMedien(ArrayList<Ausleihe> ausleihe) {
|
||||
LocalDate heutigesDatum = LocalDate.now();
|
||||
|
||||
return ausleihe.stream()
|
||||
.filter(t -> t.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS) <= 3)
|
||||
.map(t -> t.getMediumverwalter())
|
||||
.map(t -> t.toString())
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package domain.ExceptionsKlassen;
|
||||
package domain.exceptionsKlassen;
|
||||
|
||||
public class BenutzerNichtAngemeldetException extends Exception {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package domain.ExceptionsKlassen;
|
||||
package domain.exceptionsKlassen;
|
||||
|
||||
public class BenutzerNichtGefundenException extends Exception {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package domain.ExceptionsKlassen;
|
||||
package domain.exceptionsKlassen;
|
||||
|
||||
public class FalscheEingabeException extends Exception {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package domain.ExceptionsKlassen;
|
||||
package domain.exceptionsKlassen;
|
||||
|
||||
public class MediumNichtGefundenException extends Exception {
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package domain.fassade;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class AusleihfristenGebührenTest {
|
||||
|
||||
private BibSystem bib;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
this.bib = new BibSystem();
|
||||
}
|
||||
|
||||
@Test
|
||||
void test() throws Exception {
|
||||
bib.userRegistrieren("obai", "student", 15, "nein");
|
||||
bib.userAnmelden("K1001");
|
||||
bib.mediumAusleihen("K1001", "B001");
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,131 +1,231 @@
|
|||
package domain.fassade;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collector;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.*;
|
||||
|
||||
import domain.AusleiheSystem.Ausleihe;
|
||||
import domain.AusleiheSystem.AusleiheSystem;
|
||||
import domain.Benutzer.*;
|
||||
import domain.Bibliothekskatalog.Mediensuchen;
|
||||
import domain.ExceptionsKlassen.*;
|
||||
import domain.Medium.Brettspiel;
|
||||
import domain.Medium.Buch;
|
||||
import domain.Medium.Medium;
|
||||
import domain.Medium.Mediumverwalter;
|
||||
import domain.Medium.Videospiel;
|
||||
import domain.UserRegistieren.Registieren;
|
||||
import domain.ausleihSystem.*;
|
||||
import domain.benutzer.*;
|
||||
import domain.bibliothekskatalog.Mediensuchen;
|
||||
import domain.exceptionsKlassen.*;
|
||||
import domain.medium.*;
|
||||
|
||||
public class BibSystem {
|
||||
private ArrayList<Benutzer> alleBibBenutzer;
|
||||
private HashMap<String,Mediumverwalter> medien;
|
||||
private HashMap<String, Mediumverwalter> medien;
|
||||
private ArrayList<Ausleihe> ausleihe;
|
||||
private AusleiheSystem ausleiheSystem;
|
||||
private Date heutigesDatum;
|
||||
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
|
||||
|
||||
private Benutzer bibAdmin;
|
||||
|
||||
public BibSystem() {
|
||||
|
||||
this.alleBibBenutzer = new ArrayList<>();
|
||||
this.medien = new HashMap<>();
|
||||
this.ausleiheSystem = new AusleiheSystem(medien);
|
||||
this.heutigesDatum = new Date();
|
||||
this.ausleihe = new ArrayList<>();
|
||||
this.bibAdmin = new Mitarbeiter(new Ausweis("A"),"Xy Müller",20,false);
|
||||
mediumsAufladen();
|
||||
}
|
||||
|
||||
public ArrayList<String> mediumDurchsuchen(String auswahl, String bibKartenNummer) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||
if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer))
|
||||
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
||||
|
||||
ArrayList<String> treffer = new ArrayList<>();
|
||||
Mediensuchen medienSuchen = new Mediensuchen();
|
||||
|
||||
if(auswahl.equalsIgnoreCase("ausgeliehen"))
|
||||
treffer = medienSuchen.ausgeliehen(auswahl, medien);
|
||||
|
||||
else if(auswahl.equalsIgnoreCase("nicht Ausgeliehen"))
|
||||
treffer = medienSuchen.nichtAusgeliehen(auswahl, medien);
|
||||
// Registrierung
|
||||
public void userRegistrieren(String name, String type, int alter, String istAdmin) throws FalscheEingabeException {
|
||||
Benutzer bibBenutzer = Registieren.userRegistrieren(name, type, alter, istAdmin);
|
||||
alleBibBenutzer.add(bibBenutzer);
|
||||
}
|
||||
|
||||
else if(auswahl.equalsIgnoreCase("Bücher") || auswahl.equalsIgnoreCase("Brettspiele") || auswahl.equalsIgnoreCase("Dvds") || auswahl.equalsIgnoreCase("Cds") || auswahl.equalsIgnoreCase("Videospiele") )
|
||||
// Anmeldung
|
||||
public double userAnmelden(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||
Benutzer bibBenutzer = findeBenutzer(bibKartenNummer);
|
||||
bibBenutzer.anmelden();
|
||||
return bibBenutzer.getGebühren();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Mediums Durchsuchen
|
||||
public ArrayList<String> mediumDurchsuchen(String auswahl, String bibKartenNummer) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException {
|
||||
Benutzer benutzer = findeBenutzer(bibKartenNummer);
|
||||
|
||||
if (benutzer.abmelden())
|
||||
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
||||
|
||||
ArrayList<String> treffer = new ArrayList<>();
|
||||
Mediensuchen medienSuchen = new Mediensuchen();
|
||||
|
||||
if (auswahl.equalsIgnoreCase("ausgeliehen"))
|
||||
treffer = medienSuchen.ausgeliehen(auswahl, medien);
|
||||
|
||||
else if (auswahl.equalsIgnoreCase("nicht Ausgeliehen"))
|
||||
treffer = medienSuchen.nichtAusgeliehen(auswahl, medien);
|
||||
|
||||
else if (auswahl.equalsIgnoreCase("Bücher") || auswahl.equalsIgnoreCase("Brettspiele")
|
||||
|| auswahl.equalsIgnoreCase("Dvds") || auswahl.equalsIgnoreCase("Cds")
|
||||
|| auswahl.equalsIgnoreCase("Videospiele"))
|
||||
treffer = medienSuchen.medienart(auswahl, medien);
|
||||
|
||||
else if (auswahl.equalsIgnoreCase("ja")) {
|
||||
treffer = medienSuchen.baldVerfügbareMedien(ausleihe);
|
||||
}
|
||||
|
||||
else
|
||||
treffer = medienSuchen.title(auswahl, medien);
|
||||
|
||||
|
||||
|
||||
if (treffer.size() == 0)
|
||||
throw new MediumNichtGefundenException("Kein treffer");
|
||||
|
||||
return treffer;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Aufgaben des Leihsystems:
|
||||
* 1. Mediums ausleihen lassen
|
||||
* 2. Mediums verlängern
|
||||
* 3. Mediums Rückgabe
|
||||
*/
|
||||
|
||||
// Mediums Ausleihen
|
||||
public double mediumAusleihen(String bibKartenNummer, String eindeutigeKennung) throws Exception {
|
||||
Benutzer bibBenutzer = findeBenutzer(bibKartenNummer);
|
||||
|
||||
if (bibBenutzer instanceof Mitarbeiter)
|
||||
throw new Exception("Mitarbeiter können keine Mediums ausleihen!");
|
||||
|
||||
if (bibBenutzer.abmelden())
|
||||
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
||||
|
||||
Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(bibBenutzer, eindeutigeKennung);
|
||||
ausleihe.add(neueAusleihe);
|
||||
bibBenutzer.ausleihen(neueAusleihe);
|
||||
return bibBenutzer.getGebühren();
|
||||
}
|
||||
|
||||
// Mediums verlängern
|
||||
public boolean medienVerlängern(String eindeutigeKennung, String bibKartennummer) throws BenutzerNichtGefundenException, MediumNichtGefundenException {
|
||||
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
||||
return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung);
|
||||
}
|
||||
|
||||
// Mediums Rückgabe
|
||||
public ArrayList<String> medienRückgabe(String eindeutigeKennung) {
|
||||
return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung);
|
||||
}
|
||||
|
||||
/* Admin Methoden:
|
||||
* 1. Anmeldung
|
||||
* 2. Gebühren des BibBenutzers anzeigen
|
||||
* 3. Gebühren verbuchen
|
||||
* 4. akteulle ausgelihene Mediums der Benutzer anzeigen
|
||||
*
|
||||
*/
|
||||
|
||||
// Anmeldung
|
||||
public boolean adminAnmelden(String bibKartennummerAdmin){
|
||||
this.bibAdmin.anmelden();
|
||||
return this.bibAdmin.isAngemeldet();
|
||||
}
|
||||
|
||||
|
||||
// aktuelle Gebühren der Benutzer
|
||||
public double getgbührenBenutzer(String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
||||
return benutzer.getGebühren();
|
||||
}
|
||||
|
||||
// akteulle ausgelihene Mediums der Benutzer
|
||||
public ArrayList<String> ausgeliehenGegenstände(String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||
Benutzer bibUser = findeBenutzer(bibKartennummer);
|
||||
ArrayList<String> treffer = new ArrayList<>();
|
||||
for (Ausleihe ausleihe : bibUser.getAusgeliehenenMedien())
|
||||
treffer.add(ausleihe.toString());
|
||||
|
||||
return treffer;
|
||||
|
||||
}
|
||||
|
||||
public void userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
|
||||
Benutzer bibBenutzer = Registieren.userRegistrieren(name, type, alter, istAdmin);
|
||||
alleBibBenutzer.add(bibBenutzer);
|
||||
public boolean gebührenVerbuchen(String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||
Benutzer bibUser = findeBenutzer(bibKartennummer);
|
||||
((Mitarbeiter)this.bibAdmin).gebührVerbuchen(bibUser);
|
||||
return bibUser.getGebühren() == 0.0;
|
||||
}
|
||||
|
||||
public boolean userAnmdelden(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||
Benutzer bibBenutzer = findeBenutzer(bibKartenNummer);
|
||||
bibBenutzer.setAngemeldet(true);
|
||||
return bibBenutzer.isAngemeldet();
|
||||
|
||||
|
||||
// Simuliere Datum
|
||||
public double datumÄndern(String eindeutigeKennung,String ausleiheBeginn, String ausleiheEnde,String datum) throws MediumNichtGefundenException {
|
||||
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, ausleiheBeginn, ausleiheEnde, datum);
|
||||
}
|
||||
|
||||
public String mediumAusleihen(String bibKartenNummer, String eindeutigeKennung) throws Exception {
|
||||
Benutzer tempBenutzer = findeBenutzer(bibKartenNummer);
|
||||
|
||||
if (tempBenutzer instanceof Mitarbeiter)
|
||||
throw new Exception("Mitarbeiter können keine Mediums ausleihen!");
|
||||
|
||||
if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer))
|
||||
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
||||
|
||||
Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung);
|
||||
|
||||
ausleihe.add(neueAusleihe);
|
||||
return "Das Medium wurde erfolgreich ausgeliehen";
|
||||
|
||||
}
|
||||
public Date getHeutigesDatum() {
|
||||
return heutigesDatum;
|
||||
// jahresGebühren berechnen
|
||||
public double jahresGebührenBerechnen(String bibKartennummer, String datum) throws BenutzerNichtGefundenException {
|
||||
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
||||
return benutzer.jahresgebühren(datum);
|
||||
}
|
||||
|
||||
|
||||
// Mediums Aufladen
|
||||
public void mediumsAufladen(String type, String ID, String title, int erscheinungsjahr, String ersteller,
|
||||
String verlängbar, int anzahl, int leihdauer) throws FalscheEingabeException {
|
||||
Mediumverwalter medium;
|
||||
boolean verlängerung = (verlängbar.equalsIgnoreCase("ja")) ? true : false;
|
||||
switch (type) {
|
||||
case "Buch":
|
||||
medium = new Mediumverwalter(new Buch(ID, title, erscheinungsjahr, ersteller), verlängerung, anzahl,
|
||||
leihdauer);
|
||||
break;
|
||||
|
||||
public void setHeutigesDatum(String heutigesDatum) throws ParseException {
|
||||
this.heutigesDatum = formatter.parse(heutigesDatum);
|
||||
}
|
||||
case "Cd":
|
||||
medium = new Mediumverwalter(new Cd(ID, title, erscheinungsjahr, ersteller), verlängerung, anzahl,
|
||||
leihdauer);
|
||||
break;
|
||||
|
||||
// Temporäre Test Methode
|
||||
case "Brettspiel":
|
||||
medium = new Mediumverwalter(new Brettspiel(ID, title, erscheinungsjahr, ersteller), verlängerung, anzahl,
|
||||
leihdauer);
|
||||
break;
|
||||
|
||||
case "Dvd":
|
||||
medium = new Mediumverwalter(new Dvd(ID, title, erscheinungsjahr, ersteller), verlängerung, anzahl,
|
||||
leihdauer);
|
||||
break;
|
||||
|
||||
case "Videospiel":
|
||||
medium = new Mediumverwalter(new Videospiel(ID, title, erscheinungsjahr, ersteller), verlängerung, anzahl,
|
||||
leihdauer);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new FalscheEingabeException("Falsch Eingabe");
|
||||
}
|
||||
|
||||
medien.put(ID, medium);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* => Hilfsmethoden
|
||||
*/
|
||||
|
||||
private void mediumsAufladen() {
|
||||
Mediumverwalter buch = new Mediumverwalter(true, 10, 4, new Buch("Effektives Java Programmieren", 2018, "Joshua Bloch"));
|
||||
medien.put("B001",buch);
|
||||
|
||||
Mediumverwalter buchIStAusgeliehen = new Mediumverwalter(true, 10, 4, new Buch("Effektives C++ Programmieren", 2018, "Joshua Bloch"));
|
||||
Mediumverwalter buch = new Mediumverwalter(new Buch("B001", "Effektives Java Programmieren", 2018, "Joshua Bloch"),true, 10, 28);
|
||||
medien.put(buch.getMedium().getID(), buch);
|
||||
|
||||
Mediumverwalter buchIStAusgeliehen = new Mediumverwalter(new Buch("B00", "Effektives C++ Programmieren", 2018, "Joshua Bloch"),true, 10, 28);
|
||||
buchIStAusgeliehen.setIstAusgeliehen(true);
|
||||
medien.put("B00", buchIStAusgeliehen);
|
||||
|
||||
Mediumverwalter buchIStNichtAusgeliehen = new Mediumverwalter(true, 10, 4, new Buch("Javascript lenren", 2018, "Joshua Bloch"));
|
||||
medien.put("BG001",buchIStNichtAusgeliehen);
|
||||
|
||||
Mediumverwalter Videospiel = new Mediumverwalter(true,2,1,new Videospiel ("The Legend of Zelda: Breath of the Wild", 2017,"Nintendo Switch"));
|
||||
medien.put("BG00122",Videospiel);
|
||||
medien.put(buchIStAusgeliehen.getMedium().getID(), buchIStAusgeliehen);
|
||||
|
||||
Mediumverwalter buchIStNichtAusgeliehen = new Mediumverwalter(new Buch("BG001", "Javascript lenren", 2018, "Joshua Bloch"),true, 10, 28);
|
||||
medien.put(buchIStNichtAusgeliehen.getMedium().getID(), buchIStNichtAusgeliehen);
|
||||
|
||||
Mediumverwalter Videospiel = new Mediumverwalter(new Videospiel("BG00122", "The Legend of Zelda: Breath of the Wild", 2017, "Nintendo Switch"),false, 2, 28);
|
||||
medien.put(Videospiel.getMedium().getID(), Videospiel);
|
||||
}
|
||||
|
||||
private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) {
|
||||
return alleBibBenutzer.stream().anyMatch(user -> user.isAngemeldet());
|
||||
}
|
||||
|
||||
|
||||
private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||
public Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||
return alleBibBenutzer.stream()
|
||||
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
|
||||
.orElseThrow(() -> new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + bibKartenNummer + " nicht gefunden"));
|
||||
.orElseThrow(() -> new BenutzerNichtGefundenException(
|
||||
"Benutzer mit Kartennummer " + bibKartenNummer + " nicht gefunden"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package domain.fassade;
|
||||
|
||||
import static org.junit.Assert.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import domain.benutzer.Benutzer;
|
||||
import domain.exceptionsKlassen.BenutzerNichtGefundenException;
|
||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
||||
|
||||
class GebührenTest {
|
||||
|
||||
BibSystem fassade;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
fassade = new BibSystem();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGebühren() throws Exception {
|
||||
fassade.userRegistrieren("obai", "schüler", 15, "nein");
|
||||
fassade.userAnmelden("K1001");
|
||||
Benutzer user = fassade.findeBenutzer("K1001");
|
||||
double gebühren = fassade.jahresGebührenBerechnen("K1001", "2026-11-16");
|
||||
assertEquals(50.0, gebühren);
|
||||
assertTrue (user.getGebühren() == gebühren);
|
||||
|
||||
assertTrue(fassade.adminAnmelden("A1000"));
|
||||
assertTrue(fassade.getgbührenBenutzer("K1001") == 50.0);
|
||||
fassade.gebührenVerbuchen("K1001");
|
||||
assertTrue (user.getGebühren() == 0.0);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package domain.fassade;
|
||||
|
||||
import domain.benutzer.*;
|
||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
||||
|
||||
public class Registieren {
|
||||
|
||||
public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
|
||||
|
||||
Benutzer benutzer;
|
||||
Ausweis ausweis;
|
||||
|
||||
if (!name.isEmpty()) {
|
||||
boolean admin = (istAdmin.equalsIgnoreCase("Ja"))? true : false;
|
||||
if ((type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))) {
|
||||
ausweis = new Ausweis("K");
|
||||
benutzer = new Student(ausweis,name,alter,admin);
|
||||
}
|
||||
else if (type.equalsIgnoreCase("erwachsener")) {
|
||||
ausweis = new Ausweis("K");
|
||||
benutzer = new Erwachsener(ausweis,name,alter,admin);
|
||||
}
|
||||
else if (type.equalsIgnoreCase("mitarbeiter")) {
|
||||
ausweis = new Ausweis("A");
|
||||
benutzer = new Mitarbeiter(ausweis,name,alter,admin);
|
||||
}
|
||||
else
|
||||
throw new FalscheEingabeException("Falsche Eingabe");
|
||||
|
||||
}
|
||||
else
|
||||
throw new FalscheEingabeException("Falsche Eingabe");
|
||||
|
||||
return benutzer;
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
@ -0,0 +1,41 @@
|
|||
package domain.fassade;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import domain.benutzer.Benutzer;
|
||||
import domain.benutzer.Erwachsener;
|
||||
import domain.benutzer.Mitarbeiter;
|
||||
import domain.benutzer.Student;
|
||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
||||
|
||||
class RegistrierenTest {
|
||||
private BibSystem bib;
|
||||
|
||||
@BeforeEach
|
||||
void erstelleObjekt() {
|
||||
this.bib = new BibSystem();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testKunde() throws FalscheEingabeException {
|
||||
|
||||
Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein");
|
||||
// True ist
|
||||
assertTrue(benutzer instanceof Student);
|
||||
String bibKartenNummer = "K1000";
|
||||
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
|
||||
|
||||
|
||||
Benutzer erwachsener = Registieren.userRegistrieren("obai", "erwachsener", 15, "nein");
|
||||
// True
|
||||
assertTrue(erwachsener instanceof Erwachsener);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -6,8 +6,8 @@ import static org.junit.jupiter.api.Assertions.*;
|
|||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
import domain.exceptionsKlassen.BenutzerNichtGefundenException;
|
||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
||||
|
||||
class UserAnmeldenTest {
|
||||
|
||||
|
@ -22,14 +22,14 @@ class UserAnmeldenTest {
|
|||
|
||||
// True => User ist Angemeldet
|
||||
fassade.userRegistrieren("obai", "Student", 15, "nein");
|
||||
assertTrue(fassade.userAnmdelden("K1000"));
|
||||
fassade.userAnmelden("K1001");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBenutzerIstNichtImSystem() throws FalscheEingabeException, BenutzerNichtGefundenException {
|
||||
|
||||
// True, da Benutzer nicht im System ist
|
||||
assertThrows( BenutzerNichtGefundenException.class, () -> fassade.userAnmdelden("K1000") );
|
||||
assertThrows( BenutzerNichtGefundenException.class, () -> fassade.userAnmelden("K1001") );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package domain.Medium;
|
||||
package domain.medium;
|
||||
|
||||
|
||||
public class Brettspiel extends Medium {
|
||||
|
||||
private String Verlag;
|
||||
|
||||
public Brettspiel(String title, int erscheinungsjahr, String Verlag) {
|
||||
super(title, erscheinungsjahr);
|
||||
public Brettspiel(String ID,String title, int erscheinungsjahr, String Verlag) {
|
||||
super(ID,title, erscheinungsjahr);
|
||||
|
||||
if (Verlag.isEmpty())
|
||||
this.Verlag = "-";
|
|
@ -1,12 +1,12 @@
|
|||
package domain.Medium;
|
||||
package domain.medium;
|
||||
|
||||
public class Buch extends Medium {
|
||||
|
||||
|
||||
private String autor;
|
||||
|
||||
public Buch(String title, int erscheinungsjahr, String autor) {
|
||||
super(title, erscheinungsjahr);
|
||||
public Buch(String ID,String title, int erscheinungsjahr, String autor) {
|
||||
super(ID,title, erscheinungsjahr);
|
||||
|
||||
if (autor.isEmpty())
|
||||
this.autor = "-";
|
|
@ -1,12 +1,13 @@
|
|||
package domain.Medium;
|
||||
package domain.medium;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class Cd extends Medium {
|
||||
|
||||
private String Künstler;
|
||||
public Cd(String title, int erscheinungsjahr,String Künstler) {
|
||||
super(title, erscheinungsjahr);
|
||||
|
||||
public Cd(String ID,String title, int erscheinungsjahr,String Künstler) {
|
||||
super(ID,title, erscheinungsjahr);
|
||||
|
||||
if (Künstler.isEmpty())
|
||||
this.Künstler = "-";
|
|
@ -1,11 +1,11 @@
|
|||
package domain.Medium;
|
||||
package domain.medium;
|
||||
|
||||
|
||||
public class Dvd extends Medium {
|
||||
|
||||
private String regisseur;
|
||||
public Dvd(String title, int erscheinungsjahr,String regisseur) {
|
||||
super(title, erscheinungsjahr);
|
||||
public Dvd(String ID,String title, int erscheinungsjahr,String regisseur) {
|
||||
super(ID,title, erscheinungsjahr);
|
||||
|
||||
if (regisseur.isEmpty())
|
||||
this.regisseur = "-";
|
|
@ -1,16 +1,17 @@
|
|||
package domain.Medium;
|
||||
package domain.medium;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public abstract class Medium {
|
||||
|
||||
private String title;
|
||||
private int erscheinungsjahr;
|
||||
private String ID;
|
||||
|
||||
public Medium(String title, int erscheinungsjahr) {
|
||||
public Medium(String ID,String title, int erscheinungsjahr) {
|
||||
super();
|
||||
this.title = title;
|
||||
this.erscheinungsjahr = erscheinungsjahr;
|
||||
this.ID = ID;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
|
@ -20,10 +21,14 @@ public abstract class Medium {
|
|||
public int getErscheinungsjahr() {
|
||||
return erscheinungsjahr;
|
||||
}
|
||||
|
||||
public String getID() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "title=" + title + ", erscheinungsjahr=" + erscheinungsjahr;
|
||||
return "ID= "+ ID + " ,title=" + title + ", erscheinungsjahr=" + erscheinungsjahr;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package domain.Medium;
|
||||
package domain.medium;
|
||||
|
||||
public class Mediumverwalter {
|
||||
|
||||
|
@ -8,7 +8,7 @@ public class Mediumverwalter {
|
|||
private Medium medium;
|
||||
private boolean istAusgeliehen;
|
||||
|
||||
public Mediumverwalter(boolean verlängerbar, int anzahl, int leihdauer, Medium medium) {
|
||||
public Mediumverwalter( Medium medium, boolean verlängerbar, int anzahl, int leihdauer) {
|
||||
super();
|
||||
this.verlängerbar = verlängerbar;
|
||||
this.anzahl = anzahl;
|
||||
|
@ -48,9 +48,13 @@ public class Mediumverwalter {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", Leihdauer="
|
||||
+ leihdauer ;
|
||||
return "Medium=" + medium.toString() +
|
||||
" ,verlängerbar=" + verlängerbar +
|
||||
", anzahl=" + anzahl +
|
||||
",ist Ausgeliehen= " + istAusgeliehen +
|
||||
", Leihdauer=" + leihdauer ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package domain.Medium;
|
||||
package domain.medium;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
@ -6,8 +6,8 @@ public class Videospiel extends Medium {
|
|||
|
||||
private String plattform;
|
||||
|
||||
public Videospiel(String title, int erscheinungsjahr, String plattform) {
|
||||
super(title, erscheinungsjahr);
|
||||
public Videospiel(String ID,String title, int erscheinungsjahr, String plattform) {
|
||||
super(ID,title, erscheinungsjahr);
|
||||
|
||||
if (plattform.isEmpty())
|
||||
this.plattform = "-";
|
|
@ -1,15 +1,14 @@
|
|||
package main;
|
||||
|
||||
|
||||
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||
import domain.exceptionsKlassen.*;
|
||||
import tui.Tui;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||
new Tui();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
package medienHinzüfugen;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
||||
import domain.fassade.BibSystem;
|
||||
|
||||
public class MedienHinzufügen {
|
||||
private Scanner scanner = new Scanner(System.in);
|
||||
private BibSystem fassade;
|
||||
|
||||
public MedienHinzufügen(BibSystem fassade) {
|
||||
this.fassade = fassade;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
System.out.println("Willkommen im Bibliothekssystem!");
|
||||
boolean beenden = false;
|
||||
|
||||
while (!beenden) {
|
||||
System.out.println("\nBitte wählen Sie eine Aktion aus:");
|
||||
System.out.println("1: Neues Medium hinzufügen");
|
||||
System.out.println("2: System beenden");
|
||||
System.out.print("Ihre Auswahl: ");
|
||||
|
||||
int auswahl = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
|
||||
switch (auswahl) {
|
||||
case 1:
|
||||
mediumHinzufügen();
|
||||
break;
|
||||
case 2:
|
||||
beenden = true;
|
||||
System.out.println("Programm beendet.");
|
||||
break;
|
||||
default:
|
||||
System.out.println("Ungültige Auswahl. Bitte erneut versuchen.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void mediumHinzufügen() {
|
||||
try {
|
||||
System.out.println("Geben Sie den Typ des Mediums ein (Buch, Cd, Brettspiel, Dvd, Videospiel): ");
|
||||
String type = scanner.nextLine();
|
||||
|
||||
System.out.println("Geben Sie die ID des Mediums ein: ");
|
||||
String id = scanner.nextLine();
|
||||
|
||||
System.out.println("Geben Sie den Titel des Mediums ein: ");
|
||||
String title = scanner.nextLine();
|
||||
|
||||
System.out.println("Geben Sie das Erscheinungsjahr ein: ");
|
||||
int erscheinungsjahr = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
|
||||
System.out.println("Geben Sie den Macher (Autor/Regisseur/Entwickler) ein: ");
|
||||
String ersteller = scanner.nextLine();
|
||||
|
||||
System.out.println("Ist das Medium verlängerbar? (ja/nein): ");
|
||||
String verlängerbar = scanner.nextLine();
|
||||
|
||||
System.out.println("Geben Sie die Anzahl der verfügbaren Exemplare ein: ");
|
||||
int anzahl = scanner.nextInt();
|
||||
|
||||
System.out.println("Geben Sie die maximale Leihdauer (in Tagen) ein: ");
|
||||
int leihdauer = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
|
||||
fassade.mediumsAufladen(type, id, title, erscheinungsjahr, ersteller, verlängerbar, anzahl, leihdauer);
|
||||
System.out.println("Medium erfolgreich hinzugefügt!");
|
||||
|
||||
} catch (FalscheEingabeException e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,160 +1,311 @@
|
|||
package tui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Scanner;
|
||||
|
||||
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||
import domain.exceptionsKlassen.*;
|
||||
import domain.fassade.BibSystem;
|
||||
import medienHinzüfugen.MedienHinzufügen;
|
||||
|
||||
public class Tui {
|
||||
private BibSystem fassade;
|
||||
private Scanner eingabe = new Scanner(System.in);
|
||||
|
||||
public Tui() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||
this.fassade = new BibSystem();
|
||||
startBibProgramm();
|
||||
}
|
||||
|
||||
private void startBibProgramm() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||
String aktion;
|
||||
System.out.println("<< Willkommen in der Bibliothek >>");
|
||||
|
||||
boolean programmIstAktiv = true;
|
||||
while(programmIstAktiv) {
|
||||
System.out.println("1.Registrieren");
|
||||
System.out.println("2.Anmelden");
|
||||
System.out.println("4.Medien Durchsuchen");
|
||||
System.out.println("3.Ausleihen eines Gegenstandes");
|
||||
System.out.println("5.Rückgabe eines Gegenstandes");
|
||||
System.out.println("6.Ausgeliehene Gegenstände, Fälligkeitsdaten und aufgelaufene Gebühren anzeigen");
|
||||
System.out.println("7.Verlängern der Leihfrist");
|
||||
System.out.println("8.Verbuchen von überfälligen Gebühren (Admin)");
|
||||
System.out.println("9.Gebühren berechnen");
|
||||
System.out.println("Wählen Sie bitte eine Aktion aus: ");
|
||||
System.out.print(">");
|
||||
aktion = eingabe.nextLine();
|
||||
|
||||
switch(aktion) {
|
||||
case "1":
|
||||
registrierenProzess();
|
||||
break;
|
||||
|
||||
case "2":
|
||||
anmeldenProzess();
|
||||
break;
|
||||
|
||||
case "3":
|
||||
mediumDurchsuchenProzess();
|
||||
break;
|
||||
|
||||
case "4":
|
||||
mediumAusleihenProzess();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void mediumAusleihenProzess(){
|
||||
String kartennummer;
|
||||
String eindutigeKennung;
|
||||
boolean mediumAusleihenProzess = true;
|
||||
|
||||
System.out.println("Geben Sie bitte Ihre kartennummer");
|
||||
System.out.print(">");
|
||||
kartennummer = eingabe.nextLine();
|
||||
while(mediumAusleihenProzess) {
|
||||
System.out.println("Geben Sie bitte die eindutige Kennung des Mediums");
|
||||
System.out.print(">");
|
||||
eindutigeKennung = eingabe.nextLine();
|
||||
|
||||
System.out.println("Geben Sie bitte den Datum ein");
|
||||
System.out.println("Geben Sie bitte die Ausleihebeginn");
|
||||
private BibSystem fassade;
|
||||
private Scanner eingabe;
|
||||
private MedienHinzufügen mediumsHinzufügen;
|
||||
|
||||
public Tui() {
|
||||
this.fassade = new BibSystem();
|
||||
this.eingabe = new Scanner(System.in);
|
||||
this.mediumsHinzufügen = new MedienHinzufügen(fassade);
|
||||
|
||||
System.out.println("<< Willkommen in der Bibliothek >>");
|
||||
try {
|
||||
startBibProgramm();
|
||||
} catch (Exception e) {
|
||||
System.out.println("Ein unerwarteter Fehler ist aufgetreten: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void startBibProgramm() {
|
||||
boolean programmIstAktiv = true;
|
||||
|
||||
while (programmIstAktiv) {
|
||||
zeigeHauptmenü();
|
||||
System.out.print("> ");
|
||||
String aktion = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
switch (aktion) {
|
||||
case "1":
|
||||
registrierenProzess();
|
||||
break;
|
||||
case "2":
|
||||
anmeldenProzess();
|
||||
break;
|
||||
case "3":
|
||||
mediumDurchsuchenProzess();
|
||||
break;
|
||||
case "4":
|
||||
mediumAusleihenProzess();
|
||||
break;
|
||||
case "5":
|
||||
mediumsRückgabeProzess();
|
||||
break;
|
||||
case "6":
|
||||
zeigeAusgelieheneGegenstände();
|
||||
break;
|
||||
case "7":
|
||||
mediumsVerlängernProzess();
|
||||
break;
|
||||
case "8":
|
||||
verbucheGebührenProzess();
|
||||
break;
|
||||
case "9":
|
||||
datumÄndern();
|
||||
break;
|
||||
case "0":
|
||||
programmIstAktiv = false;
|
||||
System.out.println("Programm beendet.");
|
||||
break;
|
||||
default:
|
||||
System.out.println("Ungültige Eingabe. Bitte wählen Sie eine gültige Option.");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void zeigeHauptmenü() {
|
||||
System.out.println("\nHauptmenü:");
|
||||
System.out.println("1. Registrieren");
|
||||
System.out.println("2. Anmelden");
|
||||
System.out.println("3. Medien durchsuchen");
|
||||
System.out.println("4. Medium ausleihen");
|
||||
System.out.println("5. Medium zurückgeben");
|
||||
System.out.println("6. Ausgeliehene Gegenstände anzeigen");
|
||||
System.out.println("7. Leihfrist verlängern");
|
||||
System.out.println("8. Gebühren verbuchen (Admin)");
|
||||
System.out.println("9. Datum ändern");
|
||||
System.out.println("0. Programm beenden");
|
||||
}
|
||||
|
||||
|
||||
// Aktion: 1
|
||||
private void registrierenProzess() {
|
||||
System.out.println("<< Registrierung >>");
|
||||
|
||||
System.out.print("Name: ");
|
||||
String name = eingabe.nextLine();
|
||||
|
||||
System.out.print("Alter: ");
|
||||
int alter = Integer.parseInt(eingabe.nextLine());
|
||||
|
||||
System.out.print("Sind Sie Schüler oder Student? (Ja/Nein): ");
|
||||
String type = eingabe.nextLine();
|
||||
|
||||
System.out.print("Sind Sie ein Admin? (Ja/Nein): ");
|
||||
String istAdmin = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
fassade.userRegistrieren(name, type, alter, istAdmin);
|
||||
System.out.println("Registrierung erfolgreich!");
|
||||
} catch (FalscheEingabeException e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Aktion: 2
|
||||
private void anmeldenProzess() {
|
||||
System.out.println("<< Anmeldung >>");
|
||||
|
||||
System.out.print("Kartennummer: ");
|
||||
String kartennummer = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
{
|
||||
double gebühren = fassade.userAnmelden(kartennummer);
|
||||
System.out.println("Erfolgreich angemeldet.\n" + "Gebühren= " + gebühren);
|
||||
}
|
||||
} catch (BenutzerNichtGefundenException e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Aktion: 3
|
||||
private void mediumDurchsuchenProzess() {
|
||||
System.out.println("<< Medien durchsuchen >>");
|
||||
System.out.print("Suchkriterium (z. B. Titel, Medienart, Ausgeliehen, nicht Ausgeliehen,Medien die bald wieder verügbar sind (ja/nein)): ");
|
||||
String auswahl = eingabe.nextLine();
|
||||
|
||||
System.out.print("BibKartennummer: ");
|
||||
String bibKartennummer = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
if (auswahl.equalsIgnoreCase("Medienart")) {
|
||||
System.out.println("Bücher, Brettspiele, Dvds, Cds, Videospiele");
|
||||
auswahl = eingabe.nextLine();
|
||||
}
|
||||
|
||||
ArrayList<String> treffer = fassade.mediumDurchsuchen(auswahl, bibKartennummer);
|
||||
treffer.forEach(System.out::println);
|
||||
} catch (Exception e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Aktion: 4
|
||||
private void mediumAusleihenProzess() {
|
||||
System.out.println("<< Medium ausleihen >>");
|
||||
|
||||
System.out.print("Kartennummer: ");
|
||||
String kartennummer = eingabe.nextLine();
|
||||
|
||||
System.out.print("Eindeutige Kennung des Mediums: ");
|
||||
String eindeutigeKennung = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
double gebühren = fassade.mediumAusleihen(kartennummer, eindeutigeKennung);
|
||||
System.out.println("Akteulle Gebühren= " + gebühren);
|
||||
} catch (Exception e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Aktion: 5
|
||||
private void mediumsRückgabeProzess() {
|
||||
System.out.println("<< Medium zurückgeben >>");
|
||||
|
||||
System.out.print("Eindeutige Kennung des Mediums: ");
|
||||
String eindeutigeKennung = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
ArrayList<String> ausgelieheneMedien = fassade.medienRückgabe(eindeutigeKennung);
|
||||
System.out.println("Medium erfolgreich zurückgegeben.");
|
||||
if (ausgelieheneMedien.isEmpty())
|
||||
System.out.println("Sie haben keine weiteren ausgeliehenen Medien.");
|
||||
else {
|
||||
System.out.println("Ihre verbleibenden ausgeliehenen Medien:");
|
||||
ausgelieheneMedien.forEach(System.out::println);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Aktion: 6
|
||||
private void zeigeAusgelieheneGegenstände() {
|
||||
System.out.println("<< Ausgeliehene Gegenstände anzeigen >>");
|
||||
|
||||
System.out.print("BibKartennummer: ");
|
||||
String bibKartennummer = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
ArrayList<String> treffer = fassade.ausgeliehenGegenstände(bibKartennummer);
|
||||
if (treffer.size() == 0)
|
||||
System.out.println("Sie haben keine ausgeliehen Medien");
|
||||
else
|
||||
treffer.forEach(System.out::println);
|
||||
} catch (Exception e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Aktion: 7
|
||||
private void mediumsVerlängernProzess() {
|
||||
System.out.println("<< Leihfrist verlängern >>");
|
||||
|
||||
System.out.print("BibKartennummer: ");
|
||||
String bibKartennummer = eingabe.nextLine();
|
||||
|
||||
System.out.print("Eindeutige Kennung des Mediums: ");
|
||||
String eindeutigeKennung = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
fassade.medienVerlängern(eindeutigeKennung, bibKartennummer);
|
||||
System.out.println("Leihfrist erfolgreich verlängert.");
|
||||
} catch (Exception e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
//Aktion: 8
|
||||
private void verbucheGebührenProzess() {
|
||||
System.out.println("<< Gebühren verbuchen >>");
|
||||
|
||||
System.out.print("BibKartennummer des Admins: ");
|
||||
String bibKartennummer = eingabe.nextLine();
|
||||
|
||||
try {
|
||||
if (fassade.adminAnmelden(bibKartennummer)) {
|
||||
System.out.println("Erfolgreich Angemeldt");
|
||||
System.out.println("Welche Aktion: ");
|
||||
System.out.println("1.Betrag verbuchen");
|
||||
System.out.println("2.ausgeliehene Mediums anzeigen");
|
||||
System.out.println("3.aktuelles Betrag anzeigen");
|
||||
System.out.print(">");
|
||||
String auswahl = eingabe.nextLine();
|
||||
String userID = eingabe.nextLine();
|
||||
|
||||
switch (auswahl) {
|
||||
case "1":
|
||||
System.out.println(fassade.gebührenVerbuchen(userID));
|
||||
break;
|
||||
|
||||
case "2":
|
||||
ArrayList<String> treffer = fassade.ausgeliehenGegenstände(userID);
|
||||
treffer.forEach(System.out::println);
|
||||
break;
|
||||
|
||||
case "3":
|
||||
System.out.println(fassade.getgbührenBenutzer(userID));
|
||||
break;
|
||||
default:
|
||||
System.out.println("Falsche Eingabe");
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Aktion 9
|
||||
private void datumÄndern() {
|
||||
System.out.println("1.Jahresgebühren");
|
||||
System.out.println("2.Ausleihefristen");
|
||||
String auswahl = eingabe.nextLine();
|
||||
|
||||
switch (auswahl) {
|
||||
case "1":
|
||||
try {
|
||||
System.out.println("Bibkartennummer:");
|
||||
String bibkartennummer = eingabe.nextLine();
|
||||
System.out.println("Datum: ");
|
||||
String datum = eingabe.nextLine();
|
||||
fassade.jahresGebührenBerechnen(bibkartennummer, datum);
|
||||
} catch (BenutzerNichtGefundenException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
break;
|
||||
case "2":
|
||||
|
||||
try {
|
||||
System.out.println(fassade.mediumAusleihen(kartennummer, eindutigeKennung));
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void mediumDurchsuchenProzess() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||
String auswahl;
|
||||
String bibKartennummer;
|
||||
boolean mediumDurchsuchenProzess = true;
|
||||
System.out.println("Wählen Sie bitte aus, wonache Sie suchen möchten");
|
||||
while (mediumDurchsuchenProzess) {
|
||||
System.out.println("Katalog der Bibliothek: ");
|
||||
System.out.println("Title");
|
||||
System.out.println("Ausgeliehene Medien");
|
||||
System.out.println("Nicht Ausgeliehene Medien");
|
||||
System.out.println("Medienart (Bücher,Brettspiele,Dvds,Cds oder Videospiele");
|
||||
System.out.println("zurück");
|
||||
auswahl = eingabe.nextLine();
|
||||
if (auswahl.equalsIgnoreCase("zurück")){
|
||||
mediumDurchsuchenProzess = false;
|
||||
startBibProgramm();
|
||||
System.out.println("Bibkartennummer:");
|
||||
String bibkartennummer = eingabe.nextLine();
|
||||
System.out.println("AusleihBeginn: ");
|
||||
String ausleihbeginn = eingabe.nextLine();
|
||||
System.out.println("AusleihEnde: ");
|
||||
String ausleihEnde = eingabe.nextLine();
|
||||
System.out.println("Datum vom heute: ");
|
||||
String heutigesDatum = eingabe.nextLine();
|
||||
System.out.println("Medium ID: ");
|
||||
String mediumID = eingabe.nextLine();
|
||||
fassade.datumÄndern(mediumID, ausleihEnde, ausleihEnde, heutigesDatum);
|
||||
} catch (MediumNichtGefundenException e) {
|
||||
System.out.println("Fehler: " + e.getMessage());
|
||||
}
|
||||
System.out.println("gebe Sie nun Ihre BibKartenummer");
|
||||
bibKartennummer = eingabe.nextLine();
|
||||
|
||||
fassade.mediumDurchsuchen(auswahl, bibKartennummer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void anmeldenProzess() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||
String kartennummer;
|
||||
System.out.println("Geben Sie bitte die Kartennummer Ihres Bibliotheksausweises an: ");
|
||||
System.out.print(">");
|
||||
kartennummer = eingabe.nextLine();
|
||||
try {
|
||||
if (fassade.userAnmdelden(kartennummer))
|
||||
System.out.println("Sie sind nun im System Angemeldet");
|
||||
} catch (BenutzerNichtGefundenException e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
startBibProgramm();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void registrierenProzess() throws MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||
boolean registrierenProzess = true;
|
||||
String name;
|
||||
int alter;
|
||||
String type;
|
||||
String istAdmin;
|
||||
|
||||
while (registrierenProzess) {
|
||||
System.out.println("Name: ");
|
||||
System.out.print(">");
|
||||
name = eingabe.nextLine();
|
||||
System.out.println("Alter: ");
|
||||
System.out.print(">");
|
||||
alter = eingabe.nextInt();
|
||||
System.out.println("sind Sie Schüler oder Student: Ja/Nein");
|
||||
System.out.print(">");
|
||||
type = eingabe.nextLine();
|
||||
System.out.println("Admin: Ja/Nein");
|
||||
System.out.print(">");
|
||||
istAdmin = eingabe.nextLine();
|
||||
try {
|
||||
fassade.userRegistrieren(name, type, alter, istAdmin);
|
||||
registrierenProzess = false;
|
||||
startBibProgramm();
|
||||
} catch (FalscheEingabeException e) {
|
||||
System.out.println(e.getMessage());
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,27 @@
|
|||
Projektstruktur aufsetzen:
|
||||
|
||||
ich werde erst das Git-Repository und die Grundstruktur erstellen.
|
||||
werde danach die Hauptverzeichnisse und grundlegende Klassen erstellen.
|
||||
|
||||
Ich werde in meiner Hauptverzeichnisse drei Packages anlegen:
|
||||
1. domain für das Geschäftslogik
|
||||
2. Tui texteulle user Interface Benutzeroberfläche (UI) und Controller-Logik
|
||||
- die BibliotheksUI-Klasse, die die Interaktion mit dem Benutzer ermöglicht.
|
||||
- hierbei werde ich Methoden für Anmeldung, Medienausleihe, Medienrückgabe, Verlängerung, und Gebührenerfassung erstellen
|
||||
3. Main main klasse damit ich mein Software ausführe
|
||||
|
||||
|
||||
Anforderungsanalyse:
|
||||
Für das Bibliotheksverwaltungssystem werde ich zunächst eine gründliche Analyse der Anforderungen durchführen.
|
||||
Hierbei werde ich festlegen, welche Funktionen und Ziele die Software erfüllen soll. Ein wesentlicher Aspekt ist auch,
|
||||
die unterschiedlichen Akteure zu identifizieren, die die Software verwenden werden, um ihre Bedürfnisse und Anforderungen zu berücksichtigen.
|
||||
Hierbei werde ich festlegen, welche Funktionen und Ziele die BibSoftware erfüllen soll.
|
||||
|
||||
Das Bibsystem unterstützt 6 Aktionen:
|
||||
Aktion1 : Registrieren
|
||||
Also hier werde ich in der UI dem Benutzer die Möglichkeit seine Daten einzugeben(Name,alter,etc...)
|
||||
die Fassade nimmt die Daten entgegen und erstellt für die Benutzer ein neues Konto und ein neuer Ausweis
|
||||
hier soll der kunde eingeben, ob er normale Kunde ist oder ein Mitarbeiter(Admin)
|
||||
danach werde ich festlegen, welche Klassen ich für mein Software benötige
|
||||
- Entwickle die abstrakte Klasse Medium mit Attributen und Methoden.
|
||||
- Implementiere spezifische Medienklassen (Buch, DVD, CD, Brettspiel, Videospiel).
|
||||
- Erstelle eine abstrakte Klasse Benutzer und spezifische Benutzerklassen (Erwachsener, Schüler, Student).
|
||||
- Implementiere die AdminBenutzer-Klasse für spezielle Verwaltungsfunktionen.
|
||||
|
||||
|
||||
|
||||
Design und Datenstrukturentscheidung:
|
||||
In diesem Schritt plane und entwerfe ich die grundlegende Klassenstruktur.
|
||||
Dazu werde ich ermitteln, wie viele Klassen benötigt werden und welche Attribute und Methoden jede Klasse enthalten soll.
|
||||
ich werde auch die Beziehungen zwischen den Klassen definieren(z.b Vererbung, Assoziation, etc..)
|
||||
|
||||
|
||||
|
|