import java.util.Vector;
import Algotools.IO;
import java.io.*;
import libs.Eingabe;
public class Verwaltung {
private Vector Mieter;
private Vector Wohnungen;
private int Monat;
private int Jahr;
public Verwaltung (){
Mieter = new Vector (0,1);
Wohnungen = new Vector (0,1);
Monat = 1;
Wohnung test1 = new Wohnung (3, "Bad, Kueche",100, 3,1, false,false,false,false,false);
Wohnung test2 = new Wohnung (5, "Bad, Kueche, Abstellraum",200, 3,1, false,false,false,false,false);
Wohnung test3 = new Wohnung (10, "Bad, Kueche, Abstellraum, Fitnessraum, Kaminzimmer, Buegelzimmer ",300, 3,1, true,true,true,true,true);
Wohnungen.add(test1);
Wohnungen.add(test2);
Wohnungen.add(test3);
IO.println(" Willkommen bei ihrer Mietshausverwaltung");
showHaubtmenue();
}
// zeigt das Hauptmenue
public void showHaubtmenue(){
IO.println();
IO.println("Hauptmenue :");
IO.print(" Was moechten sie tun ?");
IO.println(" Sie befinden sich im Monat "+Monat);
IO.println(" 1. Zeige Wohnungen");
IO.println(" 2. Zeige Mieter");
IO.println(" 3. Mieter hinzufuegen");
IO.println(" 4. Mieter entfernen");
IO.println(" 5. Naechste Runde (1 Runde = ein Monat)");
IO.println(" 6. Laden der Mieterdaten");
IO.println(" 7. Speichern der Mieterdaten und Beenden des Programms");
switch (Eingabe.eingabe(1,7)){
case(1):
showWohungen ();
break;
case(2):
showMieter ();
break;
case(3):
addMieter();
break;
case(4):
deletMieter();
break;
case (5):
nextRound();
break;
case (6):
loadMieter();
break;
case (7):
safeMieter();
break;
}
IO.println();
IO.println();
}
// Methode berechnet die nächste Runde
private void nextRound (){
if (Monat == 12 || Monat == 24 || Monat == 36 || Monat == 48 || Monat == 60)
{
IO.println("\n\n\t\t\tAbschlussbericht\n");
for (int i = 0; i <Mieter.size();i++)
((Mieter)Mieter.elementAt(i)).MieterOut();
}
else {
for (int i = 0; i<Mieter.size(); i++){
((Mieter)Mieter.elementAt(i)).makeStep();
}
}
Monat++;
showHaubtmenue();
}
// die Abfragen zu der Wohnungsausgabe
private void showWohungen (){
IO.println();
IO.println();
if (Wohnungen.size() != 0){
IO.println(" Sie besitzten "+ Wohnungen.size()+" Wohnungen :");
showAllWohnungen();
IO.println("-------------------------------------------------------------------");
IO.println("Moechten sie die Eigenschaften einder ihrer Wohnungen betrachten ? (1 = ja / 2 = nein)");
if (Eingabe.eingabe(1,2) == 1){
IO.println("Von welcher Wohnung moechten Sie die Eigenschaften sehn ? (Bitte geben Sie die Zahl der Wohnung an)");;
((Wohnung)Wohnungen.elementAt(Eingabe.eingabe(1,Wohnungen.size())-1)).WohungOut();
IO.print("Bitte druecken sie die Enter um zum Hauptmenue zurueck zu kommen ");
IO.readLine();
showHaubtmenue();
}
else
showHaubtmenue();
}else{
IO.println(" Fehler : Sie besitzen keine Wohnungen die Sie sich anzeigen lassen koennten ");
showHaubtmenue();
}
}
// die Abfragen zu der Mieterausgabe
private void showMieter (){
IO.println();
IO.println();
if (Mieter.size() != 0){
IO.println(" Sie haben "+ Mieter.size()+" Mieter :");
for (int i = 0; i<Mieter.size(); i++){
IO.println(" "+(i+1)+". "+((Mieter)Mieter.elementAt(i)).getName());
}
IO.println("-------------------------------------------------------------------");
IO.println("Moechten Sie die Eigenschaften einer ihrer Mieter betrachten ? (1 = ja / 2 = nein)");
if (Eingabe.eingabe(1,2) == 1){
IO.println("Von welchem Mieter moechten Sie die Eigenschaften sehn ? (bitte geben Sie die Zahl des Mieter an)");
IO.println();
((Mieter)Mieter.elementAt(Eingabe.eingabe(1,Mieter.size())-1)).MieterOut();
IO.print("Bitte druecken Sie die Enter um zum Hauptmenue zurueck zu kommen ");
IO.readLine();
showHaubtmenue();
}
else
showHaubtmenue();
}else{
IO.println(" Fehler : Sie haben keinen Mieter die sie sich anzeigen lassen koennten ");
showHaubtmenue();
}
}
// Methode die einen neuen Mieter erstellt
public void addMieter (){
if (checkOfWohnungFree()){
String name;
int alter;
String GD;
int AP;
String Beruf;
IO.println();
IO.println("Willkommen zur Mietereingabe : ");
IO.println("------------------------------");
IO.print("Bitte geben Sie den Namen des Mieters ein : ");
name = IO.readLine();
IO.print("Bitte geben Sie das Alter des Mieters an (16 - 999): ");
alter = Eingabe.eingabe (16,999);
IO.println("Bitte geben Sie das Geburstsdatum des Mieters an : ");
GD = IO.readLine();
IO.println("Bitte geben Sie die anzahl der Personen an (1-99): ");
AP = Eingabe.eingabe (1,99);
IO.println("Bitte geben Sie den Beruf des Mieters an : ");
Beruf = IO.readLine();
IO.println("Bitte teilen Sie dem Mieter eine Wohnung zu (bitte geben sie die Nummer der Wohnung ein");
IO.println(" Wohnungen :");
while (true){
showAllWohnungen();
int temp = Eingabe.eingabe(1,Wohnungen.size());
if (((Wohnung)Wohnungen.elementAt(temp-1)).getMieter() == null){
IO.println("Wohnung ist noch nicht bewohnt ");
IO.println("Mieter "+name+" wird Wohnung : "+((Wohnung)Wohnungen.elementAt(temp-1)).getZimmerArt()+" zugewiesen ");
Mieter.add(new Mieter(name,alter,GD,AP,Beruf));
((Wohnung)Wohnungen.elementAt(temp-1)).setMieter(((Mieter)Mieter.lastElement()));
((Mieter)Mieter.lastElement()).setWohnung(((Wohnung)Wohnungen.elementAt(temp-1)));
break;
}else{
IO.println("Diese Wohnung wird bereits bewohnt von "+((Wohnung)Wohnungen.elementAt(temp-1)).getMieter().getName());
IO.println("Bitte geben sie ein andere Wohnung an");
}
}
}else
IO.println("Sie besitzen keine freien Wohnungen mehr, Sie koennen einen weiteren Mieter annehmen");
showHaubtmenue();
}
private void deletMieter (){
if (Mieter.size() != 0){
IO.println(" Mieter :");
for (int i = 0; i<Mieter.size(); i++){
IO.println(" Mieter "+(i+1)+". "+((Mieter)Mieter.elementAt(i)).getName());
}
IO.println("Welchen Mieter moechten Sie loeschen ? ");
int temp = Eingabe.eingabe(1,Mieter.size());
((Mieter)Mieter.elementAt(temp-1)).deletFromWohnungen();
Mieter.removeElementAt(temp-1);
IO.println("!!! Mieter geloescht !!!");
}else
IO.println("Sie besitzen keinen Mieter den sie loeschen koennten ");
showHaubtmenue();
}
private boolean checkOfWohnungFree (){
for (int i = 0; i< Wohnungen.size(); i++){
if (((Wohnung)Wohnungen.elementAt(i)).getMieter() == null)
return true;
}
return false;
}
private void showAllWohnungen (){
for (int i = 0; i<Wohnungen.size(); i++){
IO.print(" Wohnung "+(i+1)+". "+((Wohnung)Wohnungen.elementAt(i)).getZimmerArt()+" Quadratmeter : "+((Wohnung)Wohnungen.elementAt(i)).getWfläche()+ "m2 Mietspreis : "+((Wohnung)Wohnungen.elementAt(i)).getMietpreis()+" Euro");
if (((Wohnung)Wohnungen.elementAt(i)).getMieter() == null)
IO.println(" Wohnung vermietet = nein");
else
IO.println(" Wohnung vermietet = ja");
}
}
// Speichern der Mieterdaten
private void safeMieter ()
{
Writer f1;
BufferedWriter f2;
String s;
try
{
f1 = new FileWriter("mieter.txt");
f2 = new BufferedWriter(f1);
s = Integer.toString (Mieter.size());
f2.write(s);
f2.newLine();
for (int i = 0; i <Mieter.size();i++)
{
s = ((Mieter)Mieter.elementAt(i)).getName();
f2.write(s);
f2.newLine();
s = Integer.toString(((Mieter)Mieter.elementAt(i)).getAlter());
f2.write(s);
f2.newLine();
s = ((Mieter)Mieter.elementAt(i)).getGebursdatum();
f2.write(s);
f2.newLine();
s = Integer.toString(((Mieter)Mieter.elementAt(i)).getAnzahl_Personen());
f2.write(s);
f2.newLine();
s = ((Mieter)Mieter.elementAt(i)).getBeruf();
f2.write(s);
f2.newLine();
Wohnung w = (Wohnung)Wohnungen.elementAt(i);
s = Integer.toString(w.getZimmerZahl());
f2.write(s);
f2.newLine();
s = w.getZimmerArt();
f2.write(s);
f2.newLine();
s = Integer.toString(w.getWfläche());
f2.write(s);
f2.newLine();
s = Integer.toString(w.getEtage());
f2.write(s);
f2.newLine();
s = Boolean.toString(w.getBalkon());
f2.write(s);
f2.newLine();
s = Boolean.toString(w.getTarrasse());
f2.write(s);
f2.newLine();
s = Boolean.toString(w.getKabel());
f2.write(s);
f2.newLine();
s = Boolean.toString(w.getBadewanne());
f2.write(s);
f2.newLine();
s = Boolean.toString(w.getFussbenheitzung());
f2.write(s);
f2.newLine();
s = Double.toString(w.getMietpreis());
f2.write(s);
f2.newLine();
s = Double.toString(w.getNebenkosten());
f2.write(s);
f2.newLine();
s = Double.toString(w.getQPreis());
f2.write(s);
f2.newLine();
}
f2.close();
f1.close();
}
catch (IOException e)
{
System.out.println("Fehler beim Erstellen der Datei");
}
}
//Laden der MieterDaten
private void loadMieter ()
{ System.out.println("Daten werden geladen" );
Reader r1;
BufferedReader r2;
String s;
try
{
r1 = new FileReader("mieter.txt");
r2 = new BufferedReader(r1);
s = r2.readLine();
int t=Integer.parseInt(s);
for (int i = 0; i < t;i++)
{
Mieter m = new Mieter();
s = r2.readLine();
m.setName(s);
s = r2.readLine();
m.setAlter(Integer.parseInt(s));
s = r2.readLine();
m.setGebursdatum(s);
s = r2.readLine();
m.setAnzahl_Personen(Integer.parseInt(s));
s = r2.readLine();
m.setBeruf(s);
Wohnung w = new Wohnung();
s = r2.readLine();
m.setZimmerZahl(Integer.parseInt(s));
s = r2.readLine();
w.setZimmerArt(s);
s = r2.readLine();
w.setWfläche(Integer.parseInt(s));
s = r2.readLine();
w.setEtage(Integer.parseInt(s));
s = r2.readLine();
w.setBalkon(Boolean.parseBoolean(s));
s = r2.readLine();
w.setTarrasse(Boolean.parseBoolean(s));
s = r2.readLine();
w.setKabel(Boolean.parseBoolean(s));
s = r2.readLine();
w.setBadewanne(Boolean.parseBoolean(s));
s = r2.readLine();
w.setFussbenheitzung(Boolean.parseBoolean(s));
s = r2.readLine();
w.setMietpreis(Double.parseDouble(s));
s = r2.readLine();
w.setNebenkosten(Double.parseDouble(s));
s = r2.readLine();
w.setQPreis(Double.parseDouble(s));
m.setWohnung(w);
Mieter.add(m);
}
r2.close();
r1.close();
showHaubtmenue();
}
catch (IOException e)
{
System.out.println("Fehler beim Lesen der Datei");
}
}
}