Compare commits
No commits in common. "main" and "MedienAusleihen" have entirely different histories.
main
...
MedienAusl
After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 65 KiB |
|
@ -1,12 +1,9 @@
|
||||||
<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">
|
<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">
|
||||||
<diagram name="Seite-1" id="xkmZ0K6vz5A5_BixXH1Q">
|
<diagram name="Seite-1" id="xkmZ0K6vz5A5_BixXH1Q">
|
||||||
<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">
|
<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">
|
||||||
<root>
|
<root>
|
||||||
<mxCell id="0" />
|
<mxCell id="0" />
|
||||||
<mxCell id="1" parent="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">
|
<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">
|
<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" />
|
<mxGeometry x="90" y="280" width="300" height="220" as="geometry" />
|
||||||
|
@ -21,6 +18,9 @@
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--5" value="Bib Ui" style="html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
<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" />
|
<mxGeometry x="160" y="390" width="110" height="50" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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" />
|
<mxGeometry x="140" y="600" width="240" height="170" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
|
@ -55,109 +55,144 @@
|
||||||
<mxGeometry x="130" y="600" width="70" height="20" as="geometry" />
|
<mxGeometry x="130" y="600" width="70" height="20" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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="767" y="260" width="70" height="20" as="geometry" />
|
<mxGeometry x="757" y="270" width="70" height="20" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--29" value="registrieren" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
<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" />
|
<mxGeometry x="450" y="300" width="60" height="30" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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="518" width="100" height="30" as="geometry" />
|
<mxGeometry x="430" y="440" width="100" height="30" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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="440" y="590" width="60" height="30" as="geometry" />
|
<mxGeometry x="450" y="512" width="60" height="30" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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="440" y="690" width="60" height="30" as="geometry" />
|
<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" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--38" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.flowchart.on-page_reference;" parent="1" vertex="1">
|
<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" />
|
<mxGeometry x="580" y="690" width="60" height="60" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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="1700" y="640" width="180" height="110" as="geometry" />
|
<mxGeometry x="1100" y="720" width="180" height="130" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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="84" as="geometry" />
|
<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>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--79" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="1560" y="864" as="sourcePoint" />
|
<mxPoint x="960" y="954" as="sourcePoint" />
|
||||||
<mxPoint x="1560" y="814" as="targetPoint" />
|
<mxPoint x="960" y="904" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--80" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="1560" y="814" as="sourcePoint" />
|
<mxPoint x="960" y="904" as="sourcePoint" />
|
||||||
<mxPoint x="2250" y="814" as="targetPoint" />
|
<mxPoint x="1650" y="904" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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" 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" source="ydUtLetK26WXyeJ3qCt--62" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="2251.7599999999998" y="864.156" as="sourcePoint" />
|
<mxPoint x="1650" y="944" as="sourcePoint" />
|
||||||
<mxPoint x="2250" y="814" as="targetPoint" />
|
<mxPoint x="1650" y="904" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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">
|
||||||
<mxGeometry width="160" relative="1" as="geometry">
|
<mxGeometry width="160" relative="1" as="geometry">
|
||||||
<mxPoint x="1770" y="814" as="sourcePoint" />
|
<mxPoint x="1170" y="904" as="sourcePoint" />
|
||||||
<mxPoint x="1771.8199999999997" y="753.8760000000002" as="targetPoint" />
|
<mxPoint x="1330" y="904" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--84" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="1720" y="864" as="sourcePoint" />
|
<mxPoint x="1120" y="954" as="sourcePoint" />
|
||||||
<mxPoint x="1720" y="814" as="targetPoint" />
|
<mxPoint x="1120" y="904" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--86" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="1909.45" y="864" as="sourcePoint" />
|
<mxPoint x="1309.45" y="954" as="sourcePoint" />
|
||||||
<mxPoint x="1909.45" y="814" as="targetPoint" />
|
<mxPoint x="1309.45" y="904" as="targetPoint" />
|
||||||
<Array as="points">
|
<Array as="points">
|
||||||
<mxPoint x="1909.45" y="834" />
|
<mxPoint x="1309.45" y="924" />
|
||||||
</Array>
|
</Array>
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--87" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="2070" y="864" as="sourcePoint" />
|
<mxPoint x="1470" y="954" as="sourcePoint" />
|
||||||
<mxPoint x="2070" y="814" as="targetPoint" />
|
<mxPoint x="1470" y="904" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="ydUtLetK26WXyeJ3qCt--88" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="2250" y="864" as="sourcePoint" />
|
<mxPoint x="1650" y="954" as="sourcePoint" />
|
||||||
<mxPoint x="2250" y="814" as="targetPoint" />
|
<mxPoint x="1650" y="904" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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" target="ydUtLetK26WXyeJ3qCt--10" edge="1">
|
<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">
|
||||||
<mxGeometry relative="1" as="geometry">
|
<mxGeometry relative="1" as="geometry">
|
||||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
<Array as="points">
|
||||||
|
<mxPoint x="880" y="572" />
|
||||||
|
</Array>
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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" target="ydUtLetK26WXyeJ3qCt--11" edge="1">
|
<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 relative="1" as="geometry">
|
<mxGeometry x="790" y="338" width="180" height="52" as="geometry" />
|
||||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
</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" target="ydUtLetK26WXyeJ3qCt--12" edge="1">
|
<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">
|
<mxGeometry relative="1" as="geometry" />
|
||||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
</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" target="ydUtLetK26WXyeJ3qCt--13" edge="1">
|
<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">
|
<mxGeometry relative="1" as="geometry" />
|
||||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
</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" target="ydUtLetK26WXyeJ3qCt--14" edge="1">
|
<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">
|
<mxGeometry relative="1" as="geometry" />
|
||||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
</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" target="ydUtLetK26WXyeJ3qCt--38" edge="1">
|
<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">
|
<mxGeometry relative="1" as="geometry" />
|
||||||
<mxPoint x="790" y="364" as="sourcePoint" />
|
</mxCell>
|
||||||
</mxGeometry>
|
<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>
|
</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">
|
<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">
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
@ -208,281 +243,121 @@
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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">
|
<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="850" y="1090" width="310" height="118" as="geometry" />
|
<mxGeometry x="1280" y="340" width="160" height="114" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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="310" height="84" as="geometry" />
|
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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="110" width="310" height="8" as="geometry" />
|
<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" />
|
||||||
</mxCell>
|
</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">
|
<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="1220" y="1300" width="160" height="90" as="geometry" />
|
<mxGeometry x="1300" y="528" width="160" height="114" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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">
|
||||||
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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" />
|
<mxGeometry y="80" width="160" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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="2" as="geometry" />
|
<mxGeometry y="88" width="160" height="26" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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">
|
<mxGeometry relative="1" as="geometry" />
|
||||||
<Array as="points">
|
|
||||||
<mxPoint x="1300" y="1250" />
|
|
||||||
</Array>
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
</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">
|
<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="1470" y="1010" width="260" height="320" as="geometry" />
|
<mxGeometry x="1560" y="310" width="260" height="320" as="geometry" />
|
||||||
</mxCell>
|
</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[]: 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">
|
<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">
|
||||||
<mxGeometry y="37" width="260" height="163" as="geometry" />
|
<mxGeometry y="37" width="260" height="163" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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" />
|
<mxGeometry y="200" width="260" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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">
|
||||||
<mxGeometry y="208" width="260" height="112" as="geometry" />
|
<mxGeometry y="208" width="260" height="112" as="geometry" />
|
||||||
</mxCell>
|
</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">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="1429" y="1450" as="sourcePoint" />
|
<mxPoint x="1519" y="750" as="sourcePoint" />
|
||||||
<mxPoint x="1429" y="1400" as="targetPoint" />
|
<mxPoint x="1519" y="700" as="targetPoint" />
|
||||||
<Array as="points">
|
<Array as="points">
|
||||||
<mxPoint x="1430" y="1430" />
|
<mxPoint x="1520" y="730" />
|
||||||
</Array>
|
</Array>
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="1629" y="1450" as="sourcePoint" />
|
<mxPoint x="1719" y="750" as="sourcePoint" />
|
||||||
<mxPoint x="1629" y="1400" as="targetPoint" />
|
<mxPoint x="1719" y="700" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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">
|
<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">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="1429" y="1400" as="sourcePoint" />
|
<mxPoint x="1519" y="700" as="sourcePoint" />
|
||||||
<mxPoint x="1629" y="1400" as="targetPoint" />
|
<mxPoint x="1719" y="700" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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">
|
<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">
|
<mxGeometry width="160" relative="1" as="geometry">
|
||||||
<mxPoint x="1559" y="1400" as="sourcePoint" />
|
<mxPoint x="1649" y="700" as="sourcePoint" />
|
||||||
<mxPoint x="1540" y="1380" as="targetPoint" />
|
<mxPoint x="1630" y="680" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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">
|
||||||
<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" />
|
<mxGeometry relative="1" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-21" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
<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="1640" y="518" width="60" height="30" as="geometry" />
|
<mxGeometry x="1040" y="546" width="160" height="34" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="i-RIzz4hhB1Q3m7lVkjo-22" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
<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 x="1750" y="610" width="60" height="30" as="geometry" />
|
<mxGeometry y="26" width="160" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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="1490" y="864" width="140" height="52" as="geometry" />
|
<mxGeometry x="1020" y="368" width="160" height="34" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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="140" height="26" as="geometry" />
|
<mxGeometry y="26" width="160" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<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">
|
<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">
|
||||||
<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">
|
<mxGeometry relative="1" as="geometry">
|
||||||
<Array as="points">
|
<mxPoint x="1180" y="407" as="sourcePoint" />
|
||||||
<mxPoint x="770" y="470" />
|
|
||||||
<mxPoint x="770" y="1102" />
|
|
||||||
</Array>
|
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</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>
|
</root>
|
||||||
</mxGraphModel>
|
</mxGraphModel>
|
||||||
</diagram>
|
</diagram>
|
||||||
|
|
Before Width: | Height: | Size: 298 KiB |
After Width: | Height: | Size: 89 KiB |
|
@ -0,0 +1,29 @@
|
||||||
|
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.
|
|
@ -0,0 +1,48 @@
|
||||||
|
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,4 +1,4 @@
|
||||||
package domain.ausleihSystem;
|
package domain.AusleiheSystem;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
@ -19,10 +19,8 @@ class AusleiheJTest {
|
||||||
@Test
|
@Test
|
||||||
void test() throws Exception {
|
void test() throws Exception {
|
||||||
bib.userRegistrieren("obai", "student", 15, "nein");
|
bib.userRegistrieren("obai", "student", 15, "nein");
|
||||||
bib.userAnmelden("K1001");
|
bib.userAnmdelden("K1000");
|
||||||
double userGebühren = bib.mediumAusleihen("K1001", "B001");
|
bib.mediumAusleihen("K1000", "B001");
|
||||||
assertEquals(0.0,userGebühren);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
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,4 +1,4 @@
|
||||||
package domain.benutzer;
|
package domain.Benutzer;
|
||||||
|
|
||||||
public class Ausweis {
|
public class Ausweis {
|
||||||
private String kartennummer;
|
private String kartennummer;
|
|
@ -0,0 +1,124 @@
|
||||||
|
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 + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
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,4 +1,4 @@
|
||||||
package domain.benutzer;
|
package domain.Benutzer;
|
||||||
|
|
||||||
public class Mitarbeiter extends Benutzer {
|
public class Mitarbeiter extends Benutzer {
|
||||||
|
|
||||||
|
@ -7,12 +7,11 @@ public class Mitarbeiter extends Benutzer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getJahresgebühren() {
|
public double getJahresgebühr() {
|
||||||
|
return 50.0;
|
||||||
return 0.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void gebührVerbuchen(Benutzer benutzer) {
|
public void gebührVerbuchen(Benutzer benutzer) {
|
||||||
benutzer.setGebühren(0.0);
|
benutzer.setGebühren(getGebühren() * 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package domain.bibliothekskatalog;
|
package domain.Bibliothekskatalog;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
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.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import domain.benutzer.Benutzer;
|
import domain.Benutzer.Benutzer;
|
||||||
import domain.exceptionsKlassen.BenutzerNichtAngemeldetException;
|
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||||
import domain.exceptionsKlassen.BenutzerNichtGefundenException;
|
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
import domain.exceptionsKlassen.MediumNichtGefundenException;
|
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||||
|
import domain.UserRegistieren.Registieren;
|
||||||
import domain.fassade.BibSystem;
|
import domain.fassade.BibSystem;
|
||||||
import domain.fassade.Registieren;
|
|
||||||
|
|
||||||
class MedienSuchenTest {
|
class MedienSuchenTest {
|
||||||
|
|
||||||
|
@ -24,27 +24,27 @@ private BibSystem fassade;
|
||||||
void erstelleObjekt() throws FalscheEingabeException, BenutzerNichtGefundenException {
|
void erstelleObjekt() throws FalscheEingabeException, BenutzerNichtGefundenException {
|
||||||
this.fassade = new BibSystem();
|
this.fassade = new BibSystem();
|
||||||
fassade.userRegistrieren("obai", "student", 15, "nein");
|
fassade.userRegistrieren("obai", "student", 15, "nein");
|
||||||
fassade.userAnmelden("K1001");
|
fassade.userAnmdelden("K1000");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Disabled
|
@Disabled
|
||||||
void testMedienSuchenNachTitle()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException {
|
void testMedienSuchenNachTitle()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException {
|
||||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Effektives Java Programmieren", "K1001");
|
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Effektives Java Programmieren", "K1000");
|
||||||
|
nichtAusgeliehen.forEach(System.out::println);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Disabled
|
||||||
|
void testMedienSuchenNachMedienart()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException {
|
||||||
|
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Videospiele", "K1000");
|
||||||
nichtAusgeliehen.forEach(System.out::println);
|
nichtAusgeliehen.forEach(System.out::println);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testMedienSuchenNachMedienart()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException {
|
void testMedienSuchenNachausgeliehen()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException {
|
||||||
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("Videospiele", "K1001");
|
ArrayList<String> nichtAusgeliehen = fassade.mediumDurchsuchen("ausgeliehen", "K1000");
|
||||||
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);
|
nichtAusgeliehen.forEach(System.out::println);
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
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,4 +1,4 @@
|
||||||
package domain.exceptionsKlassen;
|
package domain.ExceptionsKlassen;
|
||||||
|
|
||||||
public class BenutzerNichtAngemeldetException extends Exception {
|
public class BenutzerNichtAngemeldetException extends Exception {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package domain.exceptionsKlassen;
|
package domain.ExceptionsKlassen;
|
||||||
|
|
||||||
public class BenutzerNichtGefundenException extends Exception {
|
public class BenutzerNichtGefundenException extends Exception {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package domain.exceptionsKlassen;
|
package domain.ExceptionsKlassen;
|
||||||
|
|
||||||
public class FalscheEingabeException extends Exception {
|
public class FalscheEingabeException extends Exception {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package domain.exceptionsKlassen;
|
package domain.ExceptionsKlassen;
|
||||||
|
|
||||||
public class MediumNichtGefundenException extends Exception {
|
public class MediumNichtGefundenException extends Exception {
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package domain.medium;
|
package domain.Medium;
|
||||||
|
|
||||||
|
|
||||||
public class Brettspiel extends Medium {
|
public class Brettspiel extends Medium {
|
||||||
|
|
||||||
private String Verlag;
|
private String Verlag;
|
||||||
|
|
||||||
public Brettspiel(String ID,String title, int erscheinungsjahr, String Verlag) {
|
public Brettspiel(String title, int erscheinungsjahr, String Verlag) {
|
||||||
super(ID,title, erscheinungsjahr);
|
super(title, erscheinungsjahr);
|
||||||
|
|
||||||
if (Verlag.isEmpty())
|
if (Verlag.isEmpty())
|
||||||
this.Verlag = "-";
|
this.Verlag = "-";
|
|
@ -1,12 +1,12 @@
|
||||||
package domain.medium;
|
package domain.Medium;
|
||||||
|
|
||||||
public class Buch extends Medium {
|
public class Buch extends Medium {
|
||||||
|
|
||||||
|
|
||||||
private String autor;
|
private String autor;
|
||||||
|
|
||||||
public Buch(String ID,String title, int erscheinungsjahr, String autor) {
|
public Buch(String title, int erscheinungsjahr, String autor) {
|
||||||
super(ID,title, erscheinungsjahr);
|
super(title, erscheinungsjahr);
|
||||||
|
|
||||||
if (autor.isEmpty())
|
if (autor.isEmpty())
|
||||||
this.autor = "-";
|
this.autor = "-";
|
|
@ -1,13 +1,12 @@
|
||||||
package domain.medium;
|
package domain.Medium;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class Cd extends Medium {
|
public class Cd extends Medium {
|
||||||
|
|
||||||
private String Künstler;
|
private String Künstler;
|
||||||
|
public Cd(String title, int erscheinungsjahr,String Künstler) {
|
||||||
public Cd(String ID,String title, int erscheinungsjahr,String Künstler) {
|
super(title, erscheinungsjahr);
|
||||||
super(ID,title, erscheinungsjahr);
|
|
||||||
|
|
||||||
if (Künstler.isEmpty())
|
if (Künstler.isEmpty())
|
||||||
this.Künstler = "-";
|
this.Künstler = "-";
|
|
@ -1,11 +1,11 @@
|
||||||
package domain.medium;
|
package domain.Medium;
|
||||||
|
|
||||||
|
|
||||||
public class Dvd extends Medium {
|
public class Dvd extends Medium {
|
||||||
|
|
||||||
private String regisseur;
|
private String regisseur;
|
||||||
public Dvd(String ID,String title, int erscheinungsjahr,String regisseur) {
|
public Dvd(String title, int erscheinungsjahr,String regisseur) {
|
||||||
super(ID,title, erscheinungsjahr);
|
super(title, erscheinungsjahr);
|
||||||
|
|
||||||
if (regisseur.isEmpty())
|
if (regisseur.isEmpty())
|
||||||
this.regisseur = "-";
|
this.regisseur = "-";
|
|
@ -1,17 +1,16 @@
|
||||||
package domain.medium;
|
package domain.Medium;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
public abstract class Medium {
|
public abstract class Medium {
|
||||||
|
|
||||||
private String title;
|
private String title;
|
||||||
private int erscheinungsjahr;
|
private int erscheinungsjahr;
|
||||||
private String ID;
|
|
||||||
|
|
||||||
public Medium(String ID,String title, int erscheinungsjahr) {
|
public Medium(String title, int erscheinungsjahr) {
|
||||||
super();
|
super();
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.erscheinungsjahr = erscheinungsjahr;
|
this.erscheinungsjahr = erscheinungsjahr;
|
||||||
this.ID = ID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
|
@ -22,13 +21,9 @@ public abstract class Medium {
|
||||||
return erscheinungsjahr;
|
return erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getID() {
|
|
||||||
return ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "ID= "+ ID + " ,title=" + title + ", erscheinungsjahr=" + erscheinungsjahr;
|
return "title=" + title + ", erscheinungsjahr=" + erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package domain.medium;
|
package domain.Medium;
|
||||||
|
|
||||||
public class Mediumverwalter {
|
public class Mediumverwalter {
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ public class Mediumverwalter {
|
||||||
private Medium medium;
|
private Medium medium;
|
||||||
private boolean istAusgeliehen;
|
private boolean istAusgeliehen;
|
||||||
|
|
||||||
public Mediumverwalter( Medium medium, boolean verlängerbar, int anzahl, int leihdauer) {
|
public Mediumverwalter(boolean verlängerbar, int anzahl, int leihdauer, Medium medium) {
|
||||||
super();
|
super();
|
||||||
this.verlängerbar = verlängerbar;
|
this.verlängerbar = verlängerbar;
|
||||||
this.anzahl = anzahl;
|
this.anzahl = anzahl;
|
||||||
|
@ -48,13 +48,9 @@ public class Mediumverwalter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Medium=" + medium.toString() +
|
return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", Leihdauer="
|
||||||
" ,verlängerbar=" + verlängerbar +
|
+ leihdauer ;
|
||||||
", anzahl=" + anzahl +
|
|
||||||
",ist Ausgeliehen= " + istAusgeliehen +
|
|
||||||
", Leihdauer=" + leihdauer ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package domain.medium;
|
package domain.Medium;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ public class Videospiel extends Medium {
|
||||||
|
|
||||||
private String plattform;
|
private String plattform;
|
||||||
|
|
||||||
public Videospiel(String ID,String title, int erscheinungsjahr, String plattform) {
|
public Videospiel(String title, int erscheinungsjahr, String plattform) {
|
||||||
super(ID,title, erscheinungsjahr);
|
super(title, erscheinungsjahr);
|
||||||
|
|
||||||
if (plattform.isEmpty())
|
if (plattform.isEmpty())
|
||||||
this.plattform = "-";
|
this.plattform = "-";
|
|
@ -0,0 +1,26 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
@ -0,0 +1,47 @@
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,65 +0,0 @@
|
||||||
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() ;
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 40 KiB |
|
@ -1,144 +0,0 @@
|
||||||
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");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
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,147 +0,0 @@
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
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,14 +0,0 @@
|
||||||
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,69 +0,0 @@
|
||||||
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,25 +0,0 @@
|
||||||
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,231 +1,131 @@
|
||||||
package domain.fassade;
|
package domain.fassade;
|
||||||
|
|
||||||
import java.util.*;
|
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 domain.ausleihSystem.*;
|
import domain.AusleiheSystem.Ausleihe;
|
||||||
import domain.benutzer.*;
|
import domain.AusleiheSystem.AusleiheSystem;
|
||||||
import domain.bibliothekskatalog.Mediensuchen;
|
import domain.Benutzer.*;
|
||||||
import domain.exceptionsKlassen.*;
|
import domain.Bibliothekskatalog.Mediensuchen;
|
||||||
import domain.medium.*;
|
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;
|
||||||
|
|
||||||
public class BibSystem {
|
public class BibSystem {
|
||||||
private ArrayList<Benutzer> alleBibBenutzer;
|
private ArrayList<Benutzer> alleBibBenutzer;
|
||||||
private HashMap<String, Mediumverwalter> medien;
|
private HashMap<String,Mediumverwalter> medien;
|
||||||
private ArrayList<Ausleihe> ausleihe;
|
private ArrayList<Ausleihe> ausleihe;
|
||||||
private AusleiheSystem ausleiheSystem;
|
private AusleiheSystem ausleiheSystem;
|
||||||
private Benutzer bibAdmin;
|
private Date heutigesDatum;
|
||||||
|
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
|
||||||
|
|
||||||
public BibSystem() {
|
public BibSystem() {
|
||||||
|
|
||||||
this.alleBibBenutzer = new ArrayList<>();
|
this.alleBibBenutzer = new ArrayList<>();
|
||||||
this.medien = new HashMap<>();
|
this.medien = new HashMap<>();
|
||||||
this.ausleiheSystem = new AusleiheSystem(medien);
|
this.ausleiheSystem = new AusleiheSystem(medien);
|
||||||
|
this.heutigesDatum = new Date();
|
||||||
this.ausleihe = new ArrayList<>();
|
this.ausleihe = new ArrayList<>();
|
||||||
this.bibAdmin = new Mitarbeiter(new Ausweis("A"),"Xy Müller",20,false);
|
|
||||||
mediumsAufladen();
|
mediumsAufladen();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Registrierung
|
public ArrayList<String> mediumDurchsuchen(String auswahl, String bibKartenNummer) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||||
public void userRegistrieren(String name, String type, int alter, String istAdmin) throws FalscheEingabeException {
|
if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer))
|
||||||
Benutzer bibBenutzer = Registieren.userRegistrieren(name, type, alter, istAdmin);
|
|
||||||
alleBibBenutzer.add(bibBenutzer);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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");
|
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
||||||
|
|
||||||
ArrayList<String> treffer = new ArrayList<>();
|
ArrayList<String> treffer = new ArrayList<>();
|
||||||
Mediensuchen medienSuchen = new Mediensuchen();
|
Mediensuchen medienSuchen = new Mediensuchen();
|
||||||
|
|
||||||
if (auswahl.equalsIgnoreCase("ausgeliehen"))
|
if(auswahl.equalsIgnoreCase("ausgeliehen"))
|
||||||
treffer = medienSuchen.ausgeliehen(auswahl, medien);
|
treffer = medienSuchen.ausgeliehen(auswahl, medien);
|
||||||
|
|
||||||
else if (auswahl.equalsIgnoreCase("nicht Ausgeliehen"))
|
else if(auswahl.equalsIgnoreCase("nicht Ausgeliehen"))
|
||||||
treffer = medienSuchen.nichtAusgeliehen(auswahl, medien);
|
treffer = medienSuchen.nichtAusgeliehen(auswahl, medien);
|
||||||
|
|
||||||
else if (auswahl.equalsIgnoreCase("Bücher") || auswahl.equalsIgnoreCase("Brettspiele")
|
else if(auswahl.equalsIgnoreCase("Bücher") || auswahl.equalsIgnoreCase("Brettspiele") || auswahl.equalsIgnoreCase("Dvds") || auswahl.equalsIgnoreCase("Cds") || auswahl.equalsIgnoreCase("Videospiele") )
|
||||||
|| auswahl.equalsIgnoreCase("Dvds") || auswahl.equalsIgnoreCase("Cds")
|
|
||||||
|| auswahl.equalsIgnoreCase("Videospiele"))
|
|
||||||
treffer = medienSuchen.medienart(auswahl, medien);
|
treffer = medienSuchen.medienart(auswahl, medien);
|
||||||
|
|
||||||
else if (auswahl.equalsIgnoreCase("ja")) {
|
|
||||||
treffer = medienSuchen.baldVerfügbareMedien(ausleihe);
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
else
|
||||||
treffer = medienSuchen.title(auswahl, medien);
|
treffer = medienSuchen.title(auswahl, medien);
|
||||||
|
|
||||||
|
|
||||||
if (treffer.size() == 0)
|
if (treffer.size() == 0)
|
||||||
throw new MediumNichtGefundenException("Kein treffer");
|
throw new MediumNichtGefundenException("Kein treffer");
|
||||||
|
|
||||||
return treffer;
|
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 userAnmdelden(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||||
* 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);
|
Benutzer bibBenutzer = findeBenutzer(bibKartenNummer);
|
||||||
|
bibBenutzer.setAngemeldet(true);
|
||||||
|
return bibBenutzer.isAngemeldet();
|
||||||
|
}
|
||||||
|
|
||||||
if (bibBenutzer instanceof Mitarbeiter)
|
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!");
|
throw new Exception("Mitarbeiter können keine Mediums ausleihen!");
|
||||||
|
|
||||||
if (bibBenutzer.abmelden())
|
if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer))
|
||||||
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
||||||
|
|
||||||
Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(bibBenutzer, eindeutigeKennung);
|
Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung);
|
||||||
|
|
||||||
ausleihe.add(neueAusleihe);
|
ausleihe.add(neueAusleihe);
|
||||||
bibBenutzer.ausleihen(neueAusleihe);
|
return "Das Medium wurde erfolgreich ausgeliehen";
|
||||||
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 Date getHeutigesDatum() {
|
||||||
public boolean gebührenVerbuchen(String bibKartennummer) throws BenutzerNichtGefundenException {
|
return heutigesDatum;
|
||||||
Benutzer bibUser = findeBenutzer(bibKartennummer);
|
|
||||||
((Mitarbeiter)this.bibAdmin).gebührVerbuchen(bibUser);
|
|
||||||
return bibUser.getGebühren() == 0.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setHeutigesDatum(String heutigesDatum) throws ParseException {
|
||||||
|
this.heutigesDatum = formatter.parse(heutigesDatum);
|
||||||
// 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// jahresGebühren berechnen
|
// Temporäre Test Methode
|
||||||
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;
|
|
||||||
|
|
||||||
case "Cd":
|
|
||||||
medium = new Mediumverwalter(new Cd(ID, title, erscheinungsjahr, ersteller), verlängerung, anzahl,
|
|
||||||
leihdauer);
|
|
||||||
break;
|
|
||||||
|
|
||||||
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() {
|
private void mediumsAufladen() {
|
||||||
Mediumverwalter buch = new Mediumverwalter(new Buch("B001", "Effektives Java Programmieren", 2018, "Joshua Bloch"),true, 10, 28);
|
Mediumverwalter buch = new Mediumverwalter(true, 10, 4, new Buch("Effektives Java Programmieren", 2018, "Joshua Bloch"));
|
||||||
medien.put(buch.getMedium().getID(), buch);
|
medien.put("B001",buch);
|
||||||
|
|
||||||
Mediumverwalter buchIStAusgeliehen = new Mediumverwalter(new Buch("B00", "Effektives C++ Programmieren", 2018, "Joshua Bloch"),true, 10, 28);
|
Mediumverwalter buchIStAusgeliehen = new Mediumverwalter(true, 10, 4, new Buch("Effektives C++ Programmieren", 2018, "Joshua Bloch"));
|
||||||
buchIStAusgeliehen.setIstAusgeliehen(true);
|
buchIStAusgeliehen.setIstAusgeliehen(true);
|
||||||
medien.put(buchIStAusgeliehen.getMedium().getID(), buchIStAusgeliehen);
|
medien.put("B00", buchIStAusgeliehen);
|
||||||
|
|
||||||
Mediumverwalter buchIStNichtAusgeliehen = new Mediumverwalter(new Buch("BG001", "Javascript lenren", 2018, "Joshua Bloch"),true, 10, 28);
|
Mediumverwalter buchIStNichtAusgeliehen = new Mediumverwalter(true, 10, 4, new Buch("Javascript lenren", 2018, "Joshua Bloch"));
|
||||||
medien.put(buchIStNichtAusgeliehen.getMedium().getID(), buchIStNichtAusgeliehen);
|
medien.put("BG001",buchIStNichtAusgeliehen);
|
||||||
|
|
||||||
Mediumverwalter Videospiel = new Mediumverwalter(new Videospiel("BG00122", "The Legend of Zelda: Breath of the Wild", 2017, "Nintendo Switch"),false, 2, 28);
|
Mediumverwalter Videospiel = new Mediumverwalter(true,2,1,new Videospiel ("The Legend of Zelda: Breath of the Wild", 2017,"Nintendo Switch"));
|
||||||
medien.put(Videospiel.getMedium().getID(), Videospiel);
|
medien.put("BG00122",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()
|
return alleBibBenutzer.stream()
|
||||||
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
|
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
|
||||||
.orElseThrow(() -> new BenutzerNichtGefundenException(
|
.orElseThrow(() -> new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + bibKartenNummer + " nicht gefunden"));
|
||||||
"Benutzer mit Kartennummer " + bibKartenNummer + " nicht gefunden"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
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.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import domain.exceptionsKlassen.BenutzerNichtGefundenException;
|
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||||
import domain.exceptionsKlassen.FalscheEingabeException;
|
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
|
|
||||||
class UserAnmeldenTest {
|
class UserAnmeldenTest {
|
||||||
|
|
||||||
|
@ -22,14 +22,14 @@ class UserAnmeldenTest {
|
||||||
|
|
||||||
// True => User ist Angemeldet
|
// True => User ist Angemeldet
|
||||||
fassade.userRegistrieren("obai", "Student", 15, "nein");
|
fassade.userRegistrieren("obai", "Student", 15, "nein");
|
||||||
fassade.userAnmelden("K1001");
|
assertTrue(fassade.userAnmdelden("K1000"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testBenutzerIstNichtImSystem() throws FalscheEingabeException, BenutzerNichtGefundenException {
|
void testBenutzerIstNichtImSystem() throws FalscheEingabeException, BenutzerNichtGefundenException {
|
||||||
|
|
||||||
// True, da Benutzer nicht im System ist
|
// True, da Benutzer nicht im System ist
|
||||||
assertThrows( BenutzerNichtGefundenException.class, () -> fassade.userAnmelden("K1001") );
|
assertThrows( BenutzerNichtGefundenException.class, () -> fassade.userAnmdelden("K1000") );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
package main;
|
package main;
|
||||||
|
|
||||||
import domain.exceptionsKlassen.*;
|
|
||||||
|
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||||
|
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
|
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||||
import tui.Tui;
|
import tui.Tui;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
public static void main(String[] args) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||||
new Tui();
|
new Tui();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
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,311 +1,160 @@
|
||||||
package tui;
|
package tui;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
import domain.exceptionsKlassen.*;
|
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||||
|
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||||
|
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
|
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||||
import domain.fassade.BibSystem;
|
import domain.fassade.BibSystem;
|
||||||
import medienHinzüfugen.MedienHinzufügen;
|
|
||||||
|
|
||||||
public class Tui {
|
public class Tui {
|
||||||
private BibSystem fassade;
|
private BibSystem fassade;
|
||||||
private Scanner eingabe;
|
private Scanner eingabe = new Scanner(System.in);
|
||||||
private MedienHinzufügen mediumsHinzufügen;
|
|
||||||
|
|
||||||
public Tui() {
|
public Tui() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||||
this.fassade = new BibSystem();
|
this.fassade = new BibSystem();
|
||||||
this.eingabe = new Scanner(System.in);
|
startBibProgramm();
|
||||||
this.mediumsHinzufügen = new MedienHinzufügen(fassade);
|
}
|
||||||
|
|
||||||
System.out.println("<< Willkommen in der Bibliothek >>");
|
private void startBibProgramm() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||||
try {
|
String aktion;
|
||||||
startBibProgramm();
|
System.out.println("<< Willkommen in der Bibliothek >>");
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("Ein unerwarteter Fehler ist aufgetreten: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startBibProgramm() {
|
boolean programmIstAktiv = true;
|
||||||
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();
|
||||||
|
|
||||||
while (programmIstAktiv) {
|
switch(aktion) {
|
||||||
zeigeHauptmenü();
|
case "1":
|
||||||
System.out.print("> ");
|
registrierenProzess();
|
||||||
String aktion = eingabe.nextLine();
|
break;
|
||||||
|
|
||||||
try {
|
case "2":
|
||||||
switch (aktion) {
|
anmeldenProzess();
|
||||||
case "1":
|
break;
|
||||||
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ü() {
|
case "3":
|
||||||
System.out.println("\nHauptmenü:");
|
mediumDurchsuchenProzess();
|
||||||
System.out.println("1. Registrieren");
|
break;
|
||||||
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");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
case "4":
|
||||||
|
mediumAusleihenProzess();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Aktion: 1
|
}
|
||||||
private void registrierenProzess() {
|
|
||||||
System.out.println("<< Registrierung >>");
|
|
||||||
|
|
||||||
System.out.print("Name: ");
|
private void mediumAusleihenProzess(){
|
||||||
String name = eingabe.nextLine();
|
String kartennummer;
|
||||||
|
String eindutigeKennung;
|
||||||
|
boolean mediumAusleihenProzess = true;
|
||||||
|
|
||||||
System.out.print("Alter: ");
|
System.out.println("Geben Sie bitte Ihre kartennummer");
|
||||||
int alter = Integer.parseInt(eingabe.nextLine());
|
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.print("Sind Sie Schüler oder Student? (Ja/Nein): ");
|
System.out.println("Geben Sie bitte den Datum ein");
|
||||||
String type = eingabe.nextLine();
|
System.out.println("Geben Sie bitte die Ausleihebeginn");
|
||||||
|
|
||||||
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 {
|
try {
|
||||||
System.out.println("Bibkartennummer:");
|
System.out.println(fassade.mediumAusleihen(kartennummer, eindutigeKennung));
|
||||||
String bibkartennummer = eingabe.nextLine();
|
|
||||||
System.out.println("AusleihBeginn: ");
|
} catch (Exception e) {
|
||||||
String ausleihbeginn = eingabe.nextLine();
|
System.out.println(e.getMessage());
|
||||||
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);
|
private void mediumDurchsuchenProzess() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||||
} catch (MediumNichtGefundenException e) {
|
String auswahl;
|
||||||
System.out.println("Fehler: " + e.getMessage());
|
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("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,27 +1,18 @@
|
||||||
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:
|
Anforderungsanalyse:
|
||||||
Für das Bibliotheksverwaltungssystem werde ich zunächst eine gründliche Analyse der Anforderungen durchführen.
|
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 BibSoftware erfüllen soll.
|
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.
|
||||||
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.
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
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..)
|
||||||
|
|
||||||
|
|
||||||
|
|