Compare commits

...

4 Commits

Author SHA1 Message Date
dustineversmann 41d21e4149 Testklassen erstellt 2024-10-02 10:10:34 +02:00
dustineversmann 82fda84637 Aufgabenstellung 2024-10-02 09:47:17 +02:00
dustineversmann e658f08152 erste Funktionen und Attribute 2024-10-01 16:22:25 +02:00
dustineversmann 58a383bac7 Erste Klassen hinzugefügt 2024-10-01 15:28:37 +02:00
10 changed files with 296 additions and 9 deletions

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

14
.idea/misc.xml 100644
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -1,4 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings" defaultProject="true" /> <component name="CommitMessageInspectionProfile">
<profile version="1.0">
<inspection_tool class="CommitFormat" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CommitNamingConvention" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project> </project>

View File

@ -13,5 +13,13 @@
<maven.compiler.target>21</maven.compiler.target> <maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project> </project>

20
readme.txt 100644
View File

@ -0,0 +1,20 @@
Was soll programmiert werden?
Eine (textuelle) UI, in der ein PKW einfahren kann, also ein Kennzeichen und ein Zeitstempel eingegeben werden können. Sehen Sie am besten auch eine Möglichkeit vor, um die aktuelle Zeit ohne großen Eingabeaufwand übernehmen zu können, z.B. bei leerer Eingabe wird die aktuelle Zeit verwendet. Kennzeichen können Sie hier auch gerne zufällig generieren.
Kennzeichen sollen das folgende Format haben: MA-SH 4077 mit optional einem E an der Zahl, also ROK-ME 123E.
Timestamps, s.u.
Eine (textuelle) UI, in der Autofahrer sein Kennzeichen eingeben kann und dafür die aktuellen Parkgebühren berechnet bekommt und diese durch Eingabe einer Kreditkartennummer (Simulation für die echte Karte) bezahlt bekommt. Auch hier soll es die Möglichkeit zur Eingabe einer Zeit geben, um verschiedene Parkdauern simulieren zu können.
um es nicht zu kompliziert zu machen, wollen wir nur 16stellige VISA-Karten unterstützen und zur Sicherheitsprüfung ausschließlich deren Prüfziffer berechnen wie hier beschrieben.
Eine (textuelle) UI, um einen PKW wieder ausfahren zu lassen, hier müssen wieder Kennzeichen und Zeit eingegeben werden können (da auch PKWs ohne Bezahlung ausfahren können sollen).
Ferner folgende Funktionalität:
Verwaltung der ein- und ausfahrenden PKW.
Berechnung der Parkgebühren.
Überwachung der Zahlungen.
Ausgabe einer Meldung, wenn ein PKW ohne vorheriges Zahlen das Parkhaus verlässt. (Wir gehen der Einfachheit halber davon aus, dass ein PK, der seine Gebühren gezahlt hat, auch immer sofort ausfährt.)
Ausgabe einer Meldung, wenn ein PKW mit "Schulden" erneut in das Parkhaus einfährt sowie optional eine Addition der früheren Schulden auf die neue Rechnung.
Orientieren Sie sich für die Berechnung der Parkgebühren an folgendem Schema:
Die ersten 15 min Parken sind kostenfrei weil unser Parkhaus am Bahnhof steht ("kiss and ride").
Jede angefangene Stunde kostet 1 Euro.
Zwischen 20 und 6 Uhr kostet das Parken maximal 5 Euro.
Der Preis ist pro Tag (also alle 24 h) auf 15 Euro gedeckelt.
E-Autos (mit E am Ende des Kennzeichens) erhalten 20% Rabatt.

View File

@ -0,0 +1,58 @@
package de.deversmann;
import java.util.Calendar;
import java.util.Date;
public class Auto {
public Auto(String kennzeichen) {
this.kennzeichen = kennzeichen;
this.einfahrtZeit = new Date();
this.bezahlt = false;
this.ausfahrtZeit = new Date();
this.bezahlZeit = new Date();
}
private Calendar calendar = Calendar.getInstance();
private final String kennzeichen;
private Date einfahrtZeit;
private Date bezahlZeit;
private Date ausfahrtZeit;
private boolean bezahlt;
public String getKennzeichen() {
return kennzeichen;
}
public Date getEinfahrtZeit() {
return einfahrtZeit;
}
public void setEinfahrtZeit() {
this.einfahrtZeit = calendar.getTime() ;
}
public Date getBezahlZeit() {
return bezahlZeit;
}
public void setBezahlZeit(Date bezahlZeit) {
this.bezahlZeit = bezahlZeit;
}
public Date getAusfahrtZeit() {
return ausfahrtZeit;
}
public void setAusfahrtZeit(Date ausfahrtZeit) {
this.ausfahrtZeit = ausfahrtZeit;
}
public boolean isBezahlt() {
return bezahlt;
}
public void setBezahlt(boolean bezahlt) {
this.bezahlt = bezahlt;
}
}

View File

@ -1,17 +1,20 @@
package de.deversmann; package de.deversmann;
import java.text.SimpleDateFormat;
import java.util.Date;
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or //TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter. // click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main { public class Main {
public static void main(String[] args) { public static void main(String[] args) {
//TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text
// to see how IntelliJ IDEA suggests fixing it.
System.out.printf("Hello and welcome!");
for (int i = 1; i <= 5; i++) {
//TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint Parkhaus parkhaus = new Parkhaus();
// for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>. Auto auto1 = new Auto("D-DL-2023");
System.out.println("i = " + i); System.out.println(parkhaus.isGeöffnet());
} System.out.println(auto1.getEinfahrtZeit());
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
System.out.println(sdf.format(new Date()));
} }
} }

View File

@ -0,0 +1,71 @@
package de.deversmann;
public class Parkhaus {
private boolean geöffnet;
private int anzahlParkplätze;
public int getBelegteParkplätze() {
return belegteParkplätze;
}
public void setBelegteParkplätze(int belegteParkplätze) {
this.belegteParkplätze = belegteParkplätze;
}
private int belegteParkplätze;
private double kosten;
private double ticketPreis;
private double maxTagessatz;
private final int geöffnetAb = 6;
private final int geschlossenAb = 22;
public boolean isGeöffnet() {
return geöffnet;
}
public void setGeöffnet(boolean geöffnet) {
this.geöffnet = geöffnet;
}
public int getAnzahlParkplätze() {
return anzahlParkplätze;
}
public void setAnzahlParkplätze(int anzahlParkplätze) {
this.anzahlParkplätze = anzahlParkplätze;
}
public double getKosten() {
return kosten;
}
public void setKosten(double kosten) {
this.kosten = kosten;
}
public double getTicketPreis() {
return ticketPreis;
}
public void setTicketPreis(double ticketPreis) {
this.ticketPreis = ticketPreis;
}
public double getMaxTagessatz() {
return maxTagessatz;
}
public void setMaxTagessatz(double maxTagessatz) {
this.maxTagessatz = maxTagessatz;
}
}

View File

@ -0,0 +1,43 @@
package de.deversmann;
import org.junit.jupiter.api.Test;
class AutoTest {
@Test
void getKennzeichen() {
}
@Test
void getEinfahrtZeit() {
}
@Test
void setEinfahrtZeit() {
}
@Test
void getBezahlZeit() {
}
@Test
void setBezahlZeit() {
}
@Test
void getAusfahrtZeit() {
}
@Test
void setAusfahrtZeit() {
}
@Test
void isBezahlt() {
}
@Test
void setBezahlt() {
}
}

View File

@ -0,0 +1,55 @@
package de.deversmann;
import org.junit.jupiter.api.Test;
class ParkhausTest {
@Test
void getBelegteParkplätze() {
}
@Test
void setBelegteParkplätze() {
}
@Test
void isGeöffnet() {
}
@Test
void setGeöffnet() {
}
@Test
void getAnzahlParkplätze() {
}
@Test
void setAnzahlParkplätze() {
}
@Test
void getKosten() {
}
@Test
void setKosten() {
}
@Test
void getTicketPreis() {
}
@Test
void setTicketPreis() {
}
@Test
void getMaxTagessatz() {
}
@Test
void setMaxTagessatz() {
}
}