ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
853
853
EMPFEHLEN
-
12.12.11 20:16 #1
- Registriert seit
- Jul 2011
- Beiträge
- 9
Hi liebe Programmierer Community,
ich habe folgendes Problem.
Von der Hochschule wurde mir eine Aufgabe gestellt für die ich entweder einfach zu doof oder zu kompliziert denke hier einmal die Aufgabenstellung:
Aufgabe 6.1
Optimieren Sie die in Aufgabe 5 angelegte Klasse Ferienwohnung, indem Sie
- Einen Konstruktor anlegen.
- Die Attribute private setzen und den Zugriff über getter/setter-Methoden regeln.
Aufgabe 6.2
Die Ferienwohnungen müssen gebucht werden können. Dazu sollen die Buchungen in einer
geordneten Liste an die jeweilige Wohnung angeheftet werden.
- Legen Sie hierzu eine neue Klasse „Buchung“ an, in der Anfangsdatum und
Endedatum gespeichert werden, sowie eine Buchungsnummer incl. der notwendigen
Methoden.
- Jede Ferienwohnung enthält ein Array oder einen Vector (Ihre Wahl) und kann dort
beliebig viele Buchungen speichern
Überschneidungen sind dabei auszuschließen und bedingen eine Fehlermeldung.
Erweitern Sie Buchen entsprechend und fügen Sie eine Funktion Stornieren und
showBuchungen hinzu (optional auch weitere zum Bearbeiten der Buchung).
Desweiteren Soll das ganze so Aufgebaut sein das das Hauptrogramm eine verbindung zu Ferienwohnung hat(nicht bidirektional), die Ferienwohnung über ein Array oder Vektor auf die Buchung zugreift und die Buchung auf die Datumsklasse.
Mein Problem ist das ich das ganze nicht richtig verstehe und wenn ich versuche eine Datumsüberprüfung zu machen dann geht wieder garnichts. Und die FUnktion für den Mengenrabatt scheint auch nicht mehr zu stimmen. Ich bin inzwischen total verwirrt und frage mich ob ich das ganze überhaupt richtig angegangen bin.
Im moment ist es mir wichtig das das letzte erzeugte Elemnt nich mehr auftaucht, da sich dort die Buchung überschneidet und an dieser Stelle verstehe ich nicht was falsch ist.....
Hier habe ich schonmal die geschriebenen Codes
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
public class Hauptprogramm { private static Ferienwohnung w1; private static String name; private static double basispreis; private static int bettenzahl; private static String adresse; private static int sterne; private static int mengengrundrabatt; public static void main (String[]args){ w1 = new Ferienwohnung(); w1.buchen(new Datum (1,1,2012),10); //wähleFerienwohnung(1); w1.buchen(new Datum (2,2,2012),3); //wähleFerienwohnung(3); w1.buchen(new Datum (6,1,2012),6); //wähleFerienwohnung(1); } public static void wähleFerienwohnung(int zahl){ switch(zahl){ case 1: name = "Abstellkammer"; basispreis = 23.00; bettenzahl = 1; adresse= "Hinterhof 17"; sterne =2; mengengrundrabatt = 40; break; case 2: name = "Abendruh"; basispreis = 56.70; bettenzahl = 4; adresse= "Sonnenweg 3"; sterne =4; mengengrundrabatt = 12; break; case 3: name = "Schwarzwaldpalast"; basispreis = 79.90; bettenzahl = 3; adresse= "Baumallee 1"; sterne =5; mengengrundrabatt = 10; break; default: System.out.println("Bitte eine Zahl zwischen 1 und 3 eingeben!"); System.exit(0); } } }Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
import java.util.Vector; public class Ferienwohnung{ private Buchung buchen; private Vector b=new Vector(); private double bruttopreis; private double endpreis1; private double nettopreis; private double endpreis2; private double steuern=7; private double mengenrabatt; private int anzahl; private double basispreis=23.00; private double mengengrundrabatt=40; private String name="Abstellkammer"; private int bettenzahl=1; private String adresse= "Hinterhof 17"; private int sterne=2; public void buchen(Datum datum, int uebernacht) { buchen = new Buchung(datum,uebernacht); anzahl = uebernacht; int grösse=b.size(); System.out.println(grösse); if(grösse!=0){ for(int i=0;i<grösse;i++){ Buchung buchen2=(Buchung) b.get(i); boolean gebucht = buchen.prüfeBuchung(buchen2); if (gebucht==true){ b.addElement(buchen); brutto(basispreis); netto(basispreis); mengenrabatt(anzahl,mengengrundrabatt, basispreis); show(name,bettenzahl,adresse,sterne); } else{ System.out.println("Buchungen überschneiden sich!"); } } } else if (grösse == 0){ b.addElement(buchen); brutto(basispreis); netto(basispreis); mengenrabatt(anzahl,mengengrundrabatt, basispreis); show(name,bettenzahl,adresse,sterne); } } public double brutto(double basispreis){ bruttopreis = anzahl*basispreis; endpreis1 = this.runden(bruttopreis); return(endpreis1); } public double netto (double basispreis){ nettopreis = ((endpreis1/100)*steuern)+endpreis1; endpreis2 = this.runden(nettopreis); return(endpreis2); } public double runden(double preis){ double endpreis=Math.rint(preis*100)/100; return(endpreis); } public int getUebernachtung(){ int n = anzahl; return(n); } public double mengenrabatt(int n, double rabatt, double basispreis){ switch(n){ case 0: System.out.println("Sie müssen mindestens 1 Übernachtung angeben"); break; case 1: break; default: n=n-1; mengenrabatt =((1.00-((rabatt/n)/100))*basispreis)+(mengenrabatt(n,rabatt,basispreis)); brutto(basispreis); break; } mengenrabatt =runden(mengenrabatt); return (mengenrabatt); } public void show(String name, int bettenzahl, String adresse,int sterne){ System.out.println("Anreisedatum: "+buchen.getAnLong()); System.out.println("Abreisedatum: "+buchen.getAbLong()); System.out.println("Ferienwohnung: "+name+", "+bettenzahl+" Betten, "+sterne+" Sterne"); System.out.println("Adresse: "+adresse); System.out.println("Bruttopreis: "+endpreis1); System.out.println("Nettopreis: "+endpreis2); System.out.println("Endpreis: "+mengenrabatt); } }Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
public class Buchung { private Datum aktuell; private Datum anreise;; private Datum abreise; public Buchung(Datum datum, int uebernachtungen) { aktuell = new Datum(15,12,2011); anreise = datum; abreise = berechenAbreise(uebernachtungen); } public Datum berechenAbreise(int uebernachtungen) { int btag = anreise.getTag(); int bmonat = anreise.getMonat(); int bjahr = anreise.getJahr(); Datum date = new Datum(btag,bmonat,bjahr); for (int i=1;i<=uebernachtungen;i++){ date = date.getNextTag(); } return (date); } public boolean prüfeBuchung (Buchung buchen){ int pTag; int pMonat; int pJahr; boolean gebucht =true; int altAn =buchen.getAnLong(); int altAb =buchen.getAbLong(); int dif = altAb-altAn; int angesamtzahl = anreise.getLong(); int abgesamtzahl = abreise.getLong(); if(altAn ==angesamtzahl||altAb==abgesamtzahl){ gebucht=false; } for (int i=1;i<=dif;i++){ altAn = ++altAn; if(angesamtzahl ==altAn){ gebucht =false; } } return (gebucht); } public boolean getIsSchaltjahr(int pJahr) { boolean isSchaltjahr=abreise.isSchaltjahr(pJahr); return (isSchaltjahr); } public int getMaxTage(int pMonat, int pJahr) { int maxTage = abreise.getMaxTage(pMonat, pJahr); return (maxTage); } public int getAnLong() { int angesamtzahl=anreise.getLong(); return (angesamtzahl); } public int getAbLong() { int abgesamtzahl = abreise.getLong(); return (abgesamtzahl); } }Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
public class Datum { private int tag; private int monat; private int jahr; public Datum(int pTag, int pMonat, int pJahr) { tag =pTag; monat = pMonat; jahr = pJahr; boolean pruefung=pruefeDatum(); if (pruefung ==false){ tag=15; monat=12; jahr=2012; } } public int getTag(){ int gTag=tag; return(gTag); } public int getMonat(){ int gMonat=monat; return(gMonat); } public int getJahr(){ int gJahr=jahr; return(gJahr); } public int getLong (){ int gesamtzahl = tag + monat*100 +jahr*10000; return(gesamtzahl); } public static boolean isSchaltjahr(int einJahr){ int jahr1=einJahr%4; int jahr2 = einJahr%100; if(jahr1!=0||jahr2==0){ boolean schaltjahr=false; return(schaltjahr); } else{ boolean schaltjahr=true; return(schaltjahr); } } public static int getMaxTage(int einMonat, int einJahr){ int maxTage=0; switch(einMonat){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: maxTage =31; break; case 4: case 6: case 9: case 11: maxTage =30; break; case 2: boolean schaltjahr= isSchaltjahr(einJahr); if(schaltjahr==false){ maxTage=28; } else{ maxTage=29; } break; default: System.out.println("Bitte machen Sie korrekte Angaben"); } return (maxTage); } public Datum getNextTag(){ switch (monat){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(tag<=30){ tag++; } else{ tag = 1; if(monat<=11){ monat++; } else{ monat = 1; jahr++; } } break; case 4: case 6: case 9: case 11: if(tag<=29){ tag++; } else{ tag = 1; if(monat<=11){ monat++; } else{ monat = 1; jahr++; } } break; case 2: int schaltjahr=jahr%4; int jahr2 = jahr%100; if(schaltjahr!=0||jahr2==0){ if(tag<=27){ tag++; } else{ tag = 1; if(monat<=11){ monat++; } else{ monat = 1; jahr++; } } } else{ if(tag<=28){ tag++; } else{ tag = 1; if(monat<=11){ monat++; } else{ monat = 1; jahr++; } } } break; default: System.out.println("Bitte machen Sie korrekte Angaben"); } return (new Datum(tag,monat,jahr)); } public boolean pruefeDatum(){ boolean b; switch (monat){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(tag>=1&&tag<=31){ b=true; } else{ System.out.println("Bitte machen Sie korrekte Angaben!"); b=false; System.exit(0); } break; case 4: case 6: case 9: case 11: if(tag>=1&&tag<=30){ b=true; } else{ System.out.println("Bitte machen Sie korrekte Angaben!"); b=false; System.exit(0); } break; case 2: boolean schaltjahr= isSchaltjahr(jahr); if(schaltjahr==false){ if(tag>=1&&tag<=28){ b=true; } else{ System.out.println("Bitte machen Sie korrekte Angaben!"); b=false; System.exit(0); } } else{ if(tag>=1&&tag<=29){ b=true; } else{ System.out.println("Bitte machen Sie korrekte Angaben!"); b=false; System.exit(0); } } break; default: System.out.println("Bitte machen Sie korrekte Angaben!"); b=false; System.exit(0); } return(b); } }Geändert von FutureProgrammer (12.12.11 um 20:44 Uhr)
-
12.12.11 20:54 #2
- Registriert seit
- Jul 2011
- Beiträge
- 9
Okay das mit dem Datum überprüfen habe ich jetzt doch hinbekommen da war ein kleiner Fehler bei der If abfrage.
Aber Mir fehlt noch der Mengenrabatt und die möglichkeit hardcodiert eine der Ferienwohnungen auszuwählen wenn mir da jemand helfen könnte wäre super
Dankeschön
-
Hi
zuerst mal Aufgabe 6.1:
Private hast du ja gemacht, aber die Getter/Setter?
Zu
das:Code java:1
private double bruttopreis;
Sowas in der Art.Code java:1 2 3 4 5 6
public double getBruttopreis() { return bruttopreis; } public void setBruttopreis(double newPreis) { bruttopreis = newPreis; }
Und zwar für jede Variable in der Ferienwohnung.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Ebenfalls zu 6.1: Der Konstruktor fehlt. Sowas in der Art
Code :1 2 3 4 5 6 7 8 9
public Ferienwohnung(double basispreis, double mengenrabatt, String name, int bettenzahl, String adresse, int sterne) { b =new Vector(); this.basispreis = basispreis; this.mengengrundrabatt = mengenrabatt; this.name = name; this.bettenzahl = bettenzahl; this.adresse = adresse; this.sterne = sterne; }
erlaubt, Ferienwohnungen mit verschiedenen Basispreisen, Bettenzahlen etc. zu instantieren.
Zur Buchung: Sollen nur ganze Tage buchbar sein? Theoretisch könnte ein Kunde am Mittag auschecken und ein neuer am gleichen Tag am Nachmittag einchecken.Geändert von j2se (13.12.11 um 11:50 Uhr)
-
14.12.11 13:36 #5
- Registriert seit
- Jul 2011
- Beiträge
- 9
Danke für die Antworten werde Versuchen das alles so schnell wie geht in die Tat umzusetzen.
Ähm Buchungen sollen nur für ganze Tage gelten.
Ähnliche Themen
-
Struktureller Vergleich der rt.jar's zwischen Java 6 und Java 7 aus dem OpenJDK
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 15.03.09, 16:43 -
Neue Version des Java Plugins in Java SE 6 Update N Early Access
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 01.05.08, 13:38 -
java.sun.com Artikel zeigt die neuen Features für Java on the Desktop von Java 6
Von Thomas Darimont im Forum Java Technology NewsAntworten: 1Letzter Beitrag: 17.02.07, 18:39 -
COM4J eine alternative Java - COM Bridge mit Java 5 Mitteln
Von Thomas Darimont im Forum Java Technology NewsAntworten: 0Letzter Beitrag: 10.10.06, 17:49 -
Java is Hot! Java News - Java Polis 2005
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 03.12.05, 16:23





Zitieren

Login





