# Miethaus-Verwaltung



## Guest (28. Jan 2005)

Hallo liebe Leute und Progger!
Ich hoffe ihr könnt mir weiterhelfen, undzwar geht es um eine komische Sache die für mich zu hoch ist, dabei ist zusagen ich bin ganz neu eingestiegen und noch anfänger und habe mir sachen wie java in 21 tagen durcgelesen!

Mein nachbar fragte mich ob ich ihm irgenwie weiterhelfen kann undzwar will er ein kleines verwaltungsprogramm für sein miethaus haben, es ist nämlich hausmeister eines größeren hauses, er möchte also etwas haben womit er das verwalten kann und auch angaben zu den personen machen kann, quasi name alter und sowas!

es sollen also egal wie viele wohnungen und mieter verwaltet werden,
jede wohnung , hat die punkte zimmerart, zimmeranzahl, wohnfläche (quadratmeter) etage, besonderheite wie balkon terasse und sowas!
die miter können durch personalisierung, anzalh der familienmitlgieder, beruf, alter, kontodaten verwaltet werden!
ein mieter kann natürlich beliebig viele wohnungen mieten/kündigen, der preis wird nach quadratmeter berechnet, und natürlich auch die nebenkosten, die am jahresende mit den tatsächlich angefallenen nebenkosten verrechnet werden.
die nebenkostenabrechnung kann für jeden mieter automatisch erstellt werden und als letztes soll das programm einen wahnhinweiß ausgeben wenn ein mieter  im zahlungsverzug ist!

Jetzt ist es so ich habe schon ein wenig gelernt aber ist halt echt schwer ich weiß das ich das so mit klassen machen kann, also eine klasse die daten des mieters und in eine andere klasse die daten der wohnung rein müssen und in einem hauptprogramm das ganze ausgeführt wird, dabei darf das hauptproggi net zu kompliziert sein damit nicht viel drinne steht nur das nötigste damit dieser übersichtlich ist, weil er dort eventuelle geldbeträge und namen anschrit der mieter ändern will!
nunja und jetzt kommt das schwere ich weiß noch nichtmal wie ich anfangen soll mit dem ganzen und bin voll überfordert, ich weiß halt nur das mit den klassen und das es da diese private und public gibt und sowas aber dann hörts auch schon auf könnt ihr mir da helfen??? it denke ich schoon mit einem bisschen zeitaufwand behaftet oder, nur für mich würd jahre dauern wiel ich anfänger bin und noch net mal weiß wie es los geht! wäre für schnelle und gute hilfe sehr erfreut! DAnke


----------



## mic_checker (28. Jan 2005)

Also hast du gar keinen Ansatz? 

Sagen wir mal du gehst von ner Klasse Miethaus aus, außerdem kannst du Klassen für Wohnung,Mieter etc. anlegen.
Zusätzliche Attribute wären bspw. Anzahl der Wohnungen, Preis pro Quadratmeter (soll  ja sicher immer gleich sein oder ?) etc.

Bei den Wohnungen kannst du wiederrum unterteilen:
Anzahl der Familienmitglieder, QM, Besonderheiten etc.

Für die Mieter an sich wiederrum:
Alter, Beruf etc.

Das ganze ist prinzipiell nicht so schwer, allerdings mit etwas Aufwand verbunden (für einen Anfänger).

Probier einfach mal rum , bei Problemen kannst du ja weiter posten.


----------



## Guest (28. Jan 2005)

Ja genau so meine ich das (also der Preis soll auch immer gleich sein) ich hab mich jetzt fett hingesetzt und mein Hirn das qualmt schon und das habe ich jetzt hinbekommen!

Also das meine Klasse Wohnungen:

```
import java.io.*;
public class Wohnungen
{

int Zimmeranzahl;
int Wohnflaeche;
int Etage;

private int zimmeranzahl;
private int wohnflaeche;
private int etage;
private String name;
private String besonderheiten;
private boolean telefonanschluss;




  public void setZimmeranzahl(int zimmeranzahl) throws IOException
  {
   BufferedReader zimmeranzahlIn=new BufferedReader(new InputStreamReader(System.in));
   System.out.println("Bitte geben Sie die Zimmeranzahl ein: ");
   zimmeranzahl = Integer.parseInt (zimmeranzahlIn.readLine());

    if(zimmeranzahl >=1)
    zimmeranzahl = zimmeranzahl;
    else
    zimmeranzahl = 1;
  }
  public int getZimmeranzahl()
  {
    return Zimmeranzahl;
  }
  
  
  public void setWohnflaeche(int wohnflaeche) throws IOException
  {
   BufferedReader wohnflaecheIn=new BufferedReader(new InputStreamReader(System.in));
   System.out.println("Bitte geben Sie die Wohnflaeche ein: ");
   wohnflaeche = Integer.parseInt (wohnflaecheIn.readLine());

    if(wohnflaeche >=1)
    wohnflaeche = wohnflaeche;
    else
    wohnflaeche = 1;
  }
  public int getWohnfleache()
  {
    return Wohnflaeche;
  }


  public void setEtage(int etage) throws IOException
  {
   BufferedReader etageIn=new BufferedReader(new InputStreamReader(System.in));
   System.out.println("Bitte geben Sie die Etage ein: ");
   etage = Integer.parseInt (etageIn.readLine());

    if(etage >=1)
    etage = etage;
    else
    System.out.println("Falsche Eingabe");
  }
  public int getEtage()
  {
    return Etage;
  }

}
```
und das ist mein Hauptprogramm:


```
import java.io.*;
public class Haupt
{


  public static void main(String argv[])
  {
    Wohnungen.setZimmeranzahl(Zimmeranzahl);
    Wohnungen.setWohnflaeche(wohnflaeche);
    Wohnungen.setEtage(etage);
    System.out.println("Programmende!");
  }
}
```

Nunja und jetzt hab ich schon die Fehler im Haupt, ich bekomms net mehr hin, hab keine Ahnung wie ich weitermachen soll, ohne Hilfe das mir das wer mir irgendwie so ein lauffähiges Proggi schreibt, kann ich das net hinbekommen!

_Edit von L-ectron-X: Codetags repariert._


----------



## mic_checker (28. Jan 2005)

Füge in Wohnungen.java noch z.B. folgenden Konstruktor ein:


```
public Wohnungen(int flaeche,int etage,int anz_zimmer,String name,String besonderheiten,boolean telefon)
	{
		this.wohnflaeche = flaeche;
		this.etage = etage;
		this.zimmeranzahl = anz_zimmer;
		this.name = name;
		this.besonderheiten = besonderheiten;
		this.telefonanschluss = telefon;
	}
```

Diesen kannst du dann in deinem Hauptprogramm aufrufen:


```
import java.io.*;
public class Haupt
{


  public static void main(String argv[])
  {
	 Wohnungen wg = new Wohnungen(30,2,2,"name","keine besonderheiten",false);

    System.out.println("Programmende!");
  }
}
```

Dann brauchst erstma die set Methoden nicht.

Ansonsten überleg mal weiter, hab mir den andern Code noch nicht angeguckt, hab jetzt leider keine Zeit.


----------



## Dukel (28. Jan 2005)

Ich würde die Daten (Wohnungen, Mieter,...) in einer DB speichern.
Evtl. hsqldb, da das vom Java programm aus aufgerufen werden kann (ist selber in Java programmiert und kann eingebunden werden). Ist dann kein Aufwand für den User (muss keine extra Db installieren) und die Daten sind schön aufgeräumt.


----------



## mic_checker (28. Jan 2005)

Hab mal deine Wohnungen.java etwas umgeschrieben:


```
import java.io.*;

public class Wohnungen
{
	private int zimmeranzahl;
	private int wohnflaeche;
	private int etage;
	private String name;
	private String besonderheiten;
	private boolean telefonanschluss;

	/*
	* Standard-Konstruktor
	*/
	public Wohnungen()
	{
		this(0,0,0,"","",false);
	}
	
	/*
	* Kopier-Konstruktor
	*/
	public Wohnungen(Wohnungen wg)
	{
		this(wg.wohnflaeche,wg.etage,wg.zimmeranzahl,wg.name,wg.besonderheiten,wg.telefonanschluss);
	}

	/*
	* Allgemeiner Konstruktor - wird von andern Konstruktoren auch aufgerufen
	*/
	public Wohnungen(int flaeche,int etage,int anz_zimmer,String name,String besonderheiten,boolean telefon)
	{
		this.wohnflaeche = flaeche;
		this.etage = etage;
		this.zimmeranzahl = anz_zimmer;
		this.name = name;
		this.besonderheiten = besonderheiten;
		this.telefonanschluss = telefon;
	}	

	/*
	* Im folgenden habe ich die Eingaberoutinen in den setMethoden weggelassen.
	* 
	* Grund:
	* Wenn man set aufruft übergibt man der Methode einen Wert auf den eine best. Variable gesetzt werden
	* soll,da macht es keinen Sinn nochmal was einzulesen
	*/
	
	public void setZimmeranzahl(int num) 
  	{
		if(num > 0)
			this.zimmeranzahl = num;
	}
	
	public int getZimmeranzahl()
  	{
   	return zimmeranzahl;
  	}
 
 
  	public void setWohnflaeche(int wohnflaeche) 
  	{
		if(wohnflaeche > 0)
			this.wohnflaeche = wohnflaeche;
  }
  
  	public int getWohnfleache()
  	{
    	return wohnflaeche;
  	}

	/*
	* Hier wäre zu überlegen ob auch negative Etagen zugelassen werden, also Keller-Etagen etc.
	*/
	public void setEtage(int etage)
  	{
		if(etage >= 0)
			this.etage = etage;
  	}
  
  	public int getEtage()
  	{
    	return etage;
  	}
}
```

Die Klasse lässt sich noch erweitern, aber ich wollt net den ganzen Code posten.

Ansonsten wäre eine "Verwaltung" per DB sicher brauchbar.


----------



## Guest (28. Jan 2005)

Boar ich sitze hier immernoch dran, und hab grade wieder hier reingeguckt, ich habe erstmal herausgefunden bei den kleinen proggie was du gepostet hast das ich da von private auf public umstellen musste! das hat dann alles wunderbar geklappt und jetzt sehe ich das ihr schon wieder weitergemacht habt! lol wie gut seit ihr eigentlich - respekt!
sweit raffe ich das jetzt mit den erklärungen und so, ist ja mit den erläuterungen recht einfach! nur wo ich die ganze zeit am überlegen bin, wie ich das noch einbinden soll, das die sachen wie größe anzahl und so per tastatur eingegeben werden soll, deswegen am anfang meine eintragenen für das einlesen per tastatur, und was mich noch mich durcheinander bringt ist das problem das nicht nur ein haus sondern mehrere genauso wie mieter haben will, aber ich versuche jetzt erstmal diese eine sache wohnungen fertig zu machen!
schonmal vielen dank ich hoffe ich bekomme weiter so unterstützung bei euch!


----------



## Guest (28. Jan 2005)

So ich glaube ich ahbe jetzt die Klasse Wohnung.java soweit fertig! 

```
import java.io.*;

public class Wohnungen
{
   private int zimmeranzahl;
   private int wohnflaeche;
   private int etage;
   private String name;
   private String besonderheiten;
   private boolean telefonanschluss;

   /*
   * Standard-Konstruktor
   */
   public Wohnungen()
   {
      this(0,0,0,"","",false);
   }

   /*
   * Kopier-Konstruktor
   */
   public Wohnungen(Wohnungen wg)
   {
      this(wg.wohnflaeche,wg.etage,wg.zimmeranzahl,wg.name,wg.besonderheiten,wg.telefonanschluss);
   }

   /*
   * Allgemeiner Konstruktor - wird von andern Konstruktoren auch aufgerufen
   */
   public Wohnungen(int flaeche,int etage,int anz_zimmer,String name,String besonderheiten,boolean telefon)
   {
      this.wohnflaeche = flaeche;
      this.etage = etage;
      this.zimmeranzahl = anz_zimmer;
      this.name = name;
      this.besonderheiten = besonderheiten;
      this.telefonanschluss = telefon;
   }

   /*
   * Im folgenden habe ich die Eingaberoutinen in den setMethoden weggelassen.
   *
   * Grund:
   * Wenn man set aufruft übergibt man der Methode einen Wert auf den eine best. Variable gesetzt werden
   * soll,da macht es keinen Sinn nochmal was einzulesen
   */

   public void setZimmeranzahl(int num)
     {
      if(num > 0)
         this.zimmeranzahl = num;
   }

   public int getZimmeranzahl()
     {
      return zimmeranzahl;
     }


     public void setWohnflaeche(int wohnflaeche)
     {
      if(wohnflaeche > 0)
         this.wohnflaeche = wohnflaeche;
  }

     public int getWohnfleache()
     {
       return wohnflaeche;
     }

   /*
   * Hier wäre zu überlegen ob auch negative Etagen zugelassen werden, also Keller-Etagen etc.
   */
   public void setEtage(int etage)
     {
      if(etage >= 0)
         this.etage = etage;
     }

     public int getEtage()
     {
       return etage;
     }
     
     public void setName(String name)
     {

         this.name = name;
     }

     public String getName()
     {
       return name;
     }
     
     public void setBesonderheiten(String besonderheiten)
     {

         this.besonderheiten = besonderheiten;
     }

     public String getBesonderheiten()
     {
       return besonderheiten;
     }
     
     public void setTelefonanschluss(boolean telefon)
     {

         this.telefonanschluss = telefon;
     }

     public boolean getTelefonanschluss()
     {
       return telefonanschluss;
     }
}
```

Und kanns vielleicht sein das man die Tastatureingaben dann im Hauptprogramm machen muss??? Also könnte ich mir jetzt so vorstellen, hab ich mal drüber nachgedacht! Was dann nur noch zu hoch für mich ist, wie bekomme ich mehrere Häuser und Mieter hin? Wenn man das Programm starten soll er halt fragen wie viele Häuser und dann wie viele Mieter in Haus 1 und dann soll das für Haus 1 ablaufen können und sowas...glaube das geht dann mit nem Array oder so richtig? Ich seh schon das wird noch ein haufen Arbeit für nen Anfänger!


----------



## mic_checker (29. Jan 2005)

Die Tastatureingaben wirst du am besten im Hauptprogramm machen, dann dem Konstruktor mitteilen, bzw. per entsprechender set Methode nachträglich ändern.

Du hast mehrere Häuser? ich hab gedacht das sei nur für eins gedacht. egal....Du kannst ja ein Feld von Häusern anlegen, in jedem Haus dann ein Feld von Wohnungen etc., falls klar ist wieviele Wohnungen,Häuser etc. Falls die Anzahl dynamisch wachsen können soll müsstest du das ganze vielleicht per ArrayList, oder allgemein per Verketteter Liste machen.


----------



## Guest (29. Jan 2005)

Ja genau... es ist nicht für nur ein Haus!!! Also werde ich die Tastatureingaben in das Hauptprogramm einbinden. Jetzt ist noch die Frage die sich stellt kommen dann die Arrays ins Hauptprogramm rein, weil ich ja dann auch 2 brauche quasi einmal die Wohnungen und die Mieter, oder ob die einzeln in die Klassen kommen? Und noch schwerer wird dann die Verknüpfung der drei Klassen mit den Arrays, aber ich glaube ich schreibe jetzt erstmal die Klasse Mieter.java! Denn das schlimmsten wird glaube ich anchher das Hauptprogramm :-(


----------



## Guest (29. Jan 2005)

So ich habe mich mal wieder hingesetzt und einfach die Wohnung.java undgeschreiben, das war ja nicht so schwer! Jetzt habe ich hier die komplette Mieter.java falls was falsch sein sollte bitte schreiben, wa aber eigentlich erflogreich compiliert!


```
import java.io.*;

public class Mieter
{
   private String personalien;
   private int personenanzahl;
   private String beruf;
   private int erwachsene;
   private int kinder;
   private boolean verheiratet;


   public Mieter()
   {
      this("",0,"",0,0,false);
   }


   public Mieter(Mieter mt)
   {
      this(mt.personalien,mt.personenanzahl,mt.beruf,mt.erwachsene,mt.kinder,mt.verheiratet);
   }


   public Mieter(String personalien,int personenanzahl,String beruf,int erwachsene,int kinder,boolean verheiratet)
   {
      this.personalien = personalien;
      this.personenanzahl = personenanzahl;
      this.beruf = beruf;
      this.erwachsene = erwachsene;
      this.kinder = kinder;
      this.verheiratet = verheiratet;
   }



   public void setPersonalien(String personalien)
   {
         this.personalien = personalien;
   }

   public String getPersonalien()
     {
      return personalien;
     }


     public void setPersonenanzahl(int personenanzahl)
     {

         this.personenanzahl = personenanzahl;
     }

     public int getPersonenanzahl()
     {
       return personenanzahl;
     }


   public void setBeruf(String beruf)
     {

         this.beruf = beruf;
     }

     public String getBeruf()
     {
       return beruf;
     }
     
     public void setErwachsene(int erwachsene)
     {
         if(erwachsene >=1)
         this.erwachsene = erwachsene;
         else
         this.erwachsene = 1;
     }

     public int getErwachsene()
     {
       return erwachsene;
     }
     
     public void setKinder(int Kinder)
     {

         this.kinder = kinder;
     }

     public int getKinder()
     {
       return kinder;
     }
     
     public void setVerheiratet(boolean verheiratet)
     {

         this.verheiratet = verheiratet;
     }

     public boolean getVerheiratet()
     {
       return verheiratet;
     }
}
```
So jetzt bin ich nämlich mit meinem Wissen am Ende, denn jetzt muss ich irgenwie die Eingaben und die Arrays schreiben und naja... für mich ist das nicht leicht, würde mich um weitere Hilfe sehr freuen! Danke


----------



## mic_checker (29. Jan 2005)

Hab noch eine kleine Änderung an einer Methode:


```
public void setKinder(int kinder)
   {
	   if(kinder > 0)
	   	this.kinder = kinder;
   }
```

Ansonsten müsste es so weit stimmen.

Wie genau willst du im Hauptprogramm vorgehen?
1) Eingabe der Anzahl der Häuser
2) Eingabe der Anzahl der Wohnungen für Haus1
3) Eingabe der Anzahl der Mieter in Wohnung1/Haus1
4) Eingabe der Anzahl von QM von Wohnung1/Haus1
5) Sonstige Daten eingeben für Wohnung1/Haus1
6) etc. pp.

So ungefähr?

Wenn du einliest wieviele Mieter in jeder Wohnung sein sollen, so kannst du ein Array von Mietern anlegen. Wenn allerdings nicht sicher ist wie viele Mieter untergebracht werden so könntest du eine Verkettete Liste verwenden.

Die Anzahl der Wohnungen ist wahrscheinlich fest, d.h. nicht variabel oder? Dann brauchst du für jedes Haus nur ein Array von Wohnungen anzulegen, welches für die entsp. Kapazität geeignet ist.

Ich wollte ersteinmal ein paar weitere grundlegende Dinge geklärt haben bevor ich Code poste, da ich ja nicht ganz genau weiss wie du es willst....


----------



## Guest (30. Jan 2005)

Ja also so ähnlich soll das aussehen! Die Sache ist so es soll "nur" ein Haus verwaltet werden, indem aber beliebig viele wohnungen und mieter drinne sein können! Sprich manchmal 5 wohnungen und 4 mieter, oder 8 wohnungen und 3 mieter!
Also soll am anfang ausgewählr werden, wie viele wohnungen das Haus hat!
Dann fängts an mit den Details für die Wohnung 1 ( Zimmeranzahl, Etage...)
wenn das soweit alles beschrieben ist soll abgefragt werden ob die wohnung vermietet ist oder nicht, ist sie nicht vermietet dann soll die wohnung2 an die reihe kommen! ist die wohnung1 vermietet so kommen die details des mieters(personalien, anzahl personen...) ist das fertig so soll dann die nächste wohnung kommen!

was dann nachher nur noch dazu muss sind die sachen, wie der preis und die nebenkosten und sowas und das er eine warnung ausgibt wenn ein mieter im verzug ist!

Danke schonmal für die ganze Hilfe!!!


----------



## mic_checker (30. Jan 2005)

Die Anzahl der Wohnungen ist also dynamisch und nicht statisch. (btw. ist das nicht ungewöhnlich für ein Miethaus ?)

In diesem Fall würde ich zu einer ArrayList (bzw. LinkedList) greifen und in der Klasse Miethaus eine solche ArrayList deklarieren etc.

Zusätzlich kommt in die Klasse Wohnungen dann noch eine boolesche Variable "vermietet" (und get/set Methoden dazu). Außerdem noch Variablen zur Aufnahme von Preis etc.

Was genau meinst du mit "wenn ein mieter im verzug ist"? meinst du wenn er noch nicht bezahlt hat?

Ansonsten sollte das ganze eigentlich kein so großes prob sein....


----------



## mic_checker (30. Jan 2005)

Btw. mir ist gerade erst was in deiner Klasse Mieter aufgefallen:

Du deklarierst ne Variable "personenanzahl". Das heisst du willst für eine Wohnung ein Mieter Objekt erzeugen und in diesem Mieter - Objekt die weiteren Personalien für die personenanzahl Personen eingeben lassen (richtig ?). Dafür müsstest du aber wahrscheinlich noch eine Klasse Person (oder wie auch immer du die nennen willst) schreiben - da du ja irgendwie die Personalien jedes einzelnen Mieters aufnehmen möchtest.

Oder aber du machst es so wie ich es bisher gedacht habe: Für jeden Mieter ein Mieter-Objekt anlegen und in der Wohnung eine Liste von Mietern verwalten, so dass du dynamisch Mieter für eine Wohnung hinzufügen/löschen etc. kannst.


----------



## Guest (30. Jan 2005)

Also du hast recht... die Wohnungsanzahl soll dynamisch sein, soll quais zwischen 1 und unendlich liegen können so zu sagen, woebei man eh nicht mehr als 50 wohnungen oder so in einem haus hat soll aber nach oben hin offen sein! wenns möglich wäre bitte mit dem Array machen weil da hab ich wenigstens ein ganz bisschen ahnung von dem anderen weiß ich gar net was das ist (denke mal sowas änliches) nur beim array versteh ich wneigstens was das ist!
Genau die variable "vermietet" brauch ich noch und es müssen die get/set methoden rein, genauso wie eine für den Preis (pro quadratmeter) dieser soll am besten am anfang der hauptprogrammes abgefragt werden...
mit verzug meine ich, wenn er eine monatsmiete noch nich bezahlt hat, ma müsste also wieder quasi noch irgendwas anlegen wo man eintragen kann, wo 12 monate sind und man dann imemr eintragen kann ob er bezahlt hat und wenn er im verzug ist muss das programm eine wahnung ausgeben!

Mit der personenanzahl meine ich nur wie viele personen in dieser wohnung wohnen (z.b. 2 erwachsene 2 kinder) darum auch nachher noch die "erwachsene" und "kinder" in der Mieterklasse!!!

Zitat:

Oder aber du machst es so wie ich es bisher gedacht habe: Für jeden Mieter ein Mieter-Objekt anlegen und in der Wohnung eine Liste von Mietern verwalten, so dass du dynamisch Mieter für eine Wohnung hinzufügen/löschen etc. kannst.

genau das brauche ich auch ich muss alles dynamisch löschen können und so...

wenn das alles laufen würde das wär schonabsolut geil...dann wäre noch der hammer wenn jeden für jeden mieter monatliche Nebenkosten eingegeben werden können (dieser wert müsste man für jede wohnung am anfang eingeben können, quasi wieder eine variable "nebenkosten") und diese nebenkosten sollen am ende des jahres mit den tatsächlichen nebenkosten verrechnet werden! also wenn ein mieter jeden monat 100€ nebenkosten bezahlt sind das 1200€, hat er aber in dem jahr nut tatsächliche 1000€ nebenkosten soll das verrechnet werden, er hätte dann sozusagen 200€ "gutschrift" diese könnte dann von der miete abgezogen werden (falls das möglich ist)

nur bei den ganzen sachen bin ich mit meinen kenntnissen am ende und habe gar keine ahnung mehr was ich da machen soll?!?!?!


----------



## mic_checker (30. Jan 2005)

Anonymous hat gesagt.:
			
		

> Also du hast recht... die Wohnungsanzahl soll dynamisch sein, soll quais zwischen 1 und unendlich liegen können so zu sagen, woebei man eh nicht mehr als 50 wohnungen oder so in einem haus hat soll aber nach oben hin offen sein! wenns möglich wäre bitte mit dem Array machen weil da hab ich wenigstens ein ganz bisschen ahnung von dem anderen weiß ich gar net was das ist (denke mal sowas änliches) nur beim array versteh ich wneigstens was das ist!
> Genau die variable "vermietet" brauch ich noch und es müssen die get/set methoden rein, genauso wie eine für den Preis (pro quadratmeter) dieser soll am besten am anfang der hauptprogrammes abgefragt werden...



Die get/set Methoden sollten kein Prob sein, lässt sich analog zu den bisherigen Sachen erledigen.  Der Umgang mit z.B. einer ArrayList ist ganz einfach, schau dir als Einführung zum Beispiel mal das Kapitel im Handbuch der Javaprogrammierung an - so könntest du wenigstens eine dynamische Anzahl an Wohnungen recht leicht realisieren.

Für den Preis pro Quadratmeter gilt das selbe. Noch ne get/set Methode und im Hauptprogramm individuell für jede Wohnung einlesen (wohnungen mit extras sollen ja sicher mehr kosten als andere).



> mit verzug meine ich, wenn er eine monatsmiete noch nich bezahlt hat, ma müsste also wieder quasi noch irgendwas anlegen wo man eintragen kann, wo 12 monate sind und man dann imemr eintragen kann ob er bezahlt hat und wenn er im verzug ist muss das programm eine wahnung ausgeben!
> 
> Mit der personenanzahl meine ich nur wie viele personen in dieser wohnung wohnen (z.b. 2 erwachsene 2 kinder) darum auch nachher noch die "erwachsene" und "kinder" in der Mieterklasse!!!



Dann schreib die Variablen nicht in die Klasse Mieter, sondern in Wohnungen. Schließlich gelten die Angaben für eine Wohnung , nicht für *einen* Mieter 



> genau das brauche ich auch ich muss alles dynamisch löschen können und so...



-> Listen 



> wenn das alles laufen würde das wär schonabsolut geil...dann wäre noch der hammer wenn jeden für jeden mieter monatliche Nebenkosten eingegeben werden können


Du meinst wohl eher für jede Wohnung die Nebenkosten oder willst du individuell für jeden Mieter eine solche Abfrage machen?

Das ganze ist schon mit etwas Aufwand verbunden, aber nur so lernst du programmieren. Bei weiteren Fragen stehen dir die Leute hier (damit schließe ich mich mit ein *g*) sicher gerne zur Verfügung.


----------



## Guest (30. Jan 2005)

jau genau nicht für jeden mieter sondern für jede wohnung halt! du hast das schon gut verstanden merke ich! ich werde es mal versuchen aber ich habe wenig hoffnung das irgendwie hinzubekommen, weil da reichts bei mir net mit der ahnung und dem wissen :-( aber hoffe auf weitere hilfe, danke!


----------



## mic_checker (30. Jan 2005)

Anonymous hat gesagt.:
			
		

> du hast das schon gut verstanden merke ich!



Danke ,ich weiss 



> ich werde es mal versuchen aber ich habe wenig hoffnung das irgendwie hinzubekommen, weil da reichts bei mir net mit der ahnung und dem wissen :-( aber hoffe auf weitere hilfe, danke!



Bevor du einfach drauf los programmierst, versuch dir die genaue Struktur aufzuzeichnen, was soll jede Klasse machen etc. seh die Zusammenhänge zwischen den einzelnen Klassen. Der Rest ist dann ganz einfach *g*

Geh auch mal in die Bücher/Tutorial Sektion des Forums hier, da sind einige hilfreiche Links.


----------



## Gast (1. Feb 2005)

Hi.
Was mir sofort negativ aufgefallen ist, ist, dass deine Klasse "Wohnungen" heißt, obwohl sie nur eine Wohnung repräsentiert.

Da würde ich ein bisschen aufpassen ...das bringt einen nur durcheinander.

Gruß, Kai.


----------



## Guest (1. Feb 2005)

Ja danke, aber wie gesagt ich hänge fest und komme nicht mehr weiter! ich denke da muss ich vor kapitulieren vor solch einer aufgabe! da hb ich nicht genug einegene kenntnisse und auch lesen bringt nix, weil ich einige sahcen bzw vieles nicht verstehe bzw nicht weiss wie man es umsetzten soll und somit fehlt das dann alles! Naja muss ich dann mal gucken was man da machen kann, vll gibt ja sowas schon als software oder so??!! falls doch nochmal wer lust und zeit hat sich damit zu beschäftigen wäre es toll wenn er die quellcoeds hier reinstellen würde, ich gucke dann mal ab und zu hier rein! danke auf jedenfall für die schnelle und gute hilfe!


----------



## mic_checker (1. Feb 2005)

Anonymous hat gesagt.:
			
		

> falls doch nochmal wer lust und zeit hat sich damit zu beschäftigen wäre es toll wenn er die quellcoeds hier reinstellen würde, ich gucke dann mal ab und zu hier rein! danke auf jedenfall für die schnelle und gute hilfe!



Das ist der falsche Ansatz. Natürlich ist das ganze nicht so leicht, wenn du erst angefangen hast Java zu programmieren, aber warum direkt aufgeben? Wenn du z.B. den Umgang mit Listen nicht kennst, dann lernst es halt jetzt - ist in Java echt nicht schwer, ansonsten peu a peu die Grundlagen beibringen und immer wieder dran weiterarbeiten.

Aber hier wird sicher keiner für dich die ganze aufgabe lösen, wenn du selber keine Lust mehr dazu hast. Ich bin gerne dazu bereit dir weiter zu helfen, aber wofür wenn ich weiss das es nur wenig sinn hat?

Wo genau hängt es denn momentan? Poste einfach mal eine konkrete Problematik u. man kann weiter sehen...


----------



## mic_checker (5. Feb 2005)

So hab mal minimal Code hinzugefügt, sieht jetzt so aus:


```
package miethaus;

public class Mieter
{
	private String name;
	private String strasse;
	private String ort_plz;
   private String beruf;
   private boolean verheiratet;

   public Mieter()
   {
      this("","","","",false);
   }

   public Mieter(Mieter mt)
   {
      this(mt.name,mt.strasse,mt.ort_plz,mt.beruf,mt.verheiratet);
   }

   public Mieter(String name,String strasse,String ort_plz,String beruf,boolean verheiratet)
   {
      this.name = name;
      this.strasse = strasse;
      this.ort_plz = ort_plz;
      this.beruf = beruf;
      this.verheiratet = verheiratet;
   }   
  
   public void setStrasse(String strasse)
   {
	   this.strasse = strasse;
   }

   public String getStrasse()
   {
   	return strasse;
   }
   
   public void setOrtPlz(String ort_plz)
   {
	   this.ort_plz = ort_plz;
   }

   public String getOrtPlz()
   {
   	return ort_plz;
   }

   public void setBeruf(String beruf)
   {
	   this.beruf = beruf;
   }

   public String getBeruf()
   {
   	return beruf;
   }
   
   public void setName(String name)
   {
	   this.name = name;
   }

   public String getName()
   {
   	return name;
   }
        
   public void setVerheiratet(boolean verheiratet)
   {
	   this.verheiratet = verheiratet;
   }

   public boolean getVerheiratet()
   {
   	return verheiratet;
   }
   
   public String toString()
   {	   
	   return name+"\n"+"Straße = "+strasse+"\n"+ort_plz+"\nBeruf = "+beruf+"\nVerheiratet = "+verheiratet;
	}
}
```


```
package miethaus;

import java.io.*;
import java.util.*;

public class Wohnungen
{
	private int zimmer;
	private int flaeche;
	private int etage;
	private int qm_preis;
	private int erwachsene;
   private int kinder;
	private int personenanzahl;
	private int nebenkosten;
	
	private String name;
	private String besonderheiten;
	
	private boolean telefon;
	private boolean vermietet;
	private boolean bezahlt;
	
	private ArrayList mieter;	

	public Wohnungen()
	{
		this(0,0,0,"","",false);
	}

	public Wohnungen(Wohnungen wg)
	{
		this(wg.flaeche,wg.etage,wg.zimmer,wg.name,wg.besonderheiten,wg.telefon);
	}

	public Wohnungen(int flaeche,int etage,int zimmer,String name,String besonderheiten,boolean telefon)
	{
		this.flaeche = flaeche;
		this.etage = etage;
		this.zimmer = zimmer;
		this.name = name;
		this.besonderheiten = besonderheiten;
		this.telefon = telefon;
		mieter = new ArrayList();
	}	

	public void addMieter(Mieter m)
	{
		mieter.add(m);
	}
	
	/*
	* Momentan wird der entspr. Index der Liste gelöscht um den Mieter zu löschen.
	* Es wäre zu überlegen ob man das nicht anders machen sollte.
	*/
	public void removeMieter(int num)
	{
		try
		{
			mieter.remove(num);
		}
		catch(IndexOutOfBoundsException ioobe)
		{
			System.err.println("IndexOutOfBounds in removeMiter - Wohnungen.java");
		}
	}
	
	public int getNumMieter()
	{
		return mieter.size();
	}
	
   public void setErwachsene(int erwachsene)
   {
   	if(erwachsene >= 1)
      	this.erwachsene = erwachsene;
   }

   public int getErwachsene()
   {
   	return erwachsene;
   }
   
   public void setKinder(int kinder)
   {
	   if(kinder > 0)
	   	this.kinder = kinder;
   }

   public int getKinder()
   {
   	return kinder;
   }
   
   public void setPersonenanzahl(int personenanzahl)
   {
	   if(personenanzahl > 0)
	   	this.personenanzahl = personenanzahl;
   }

   public int getPersonenanzahl()
   {
   	return personenanzahl;
   }
	
	public void setNumZimmer(int num) 
  	{
		if(num > 0)
			this.zimmer = num;
	}
	
	public int getNumZimmer()
  	{
   	return zimmer;
  	} 
 
  	public void setFlaeche(int flaeche) 
  	{
		if(flaeche > 0)
			this.flaeche = flaeche;
  	}
  
  	public int getFlaeche()
  	{
    	return flaeche;
  	}

  	public void setQmPreis(int preis) 
  	{
		if(preis > 0)
			this.qm_preis = preis;
  	}
  
  	public int getQmPreis()
  	{
    	return qm_preis;
  	}
	  
  	public void setNebenkosten(int preis)
  	{
		if(preis > 0)
			this.nebenkosten = preis;
  	}
  
  	public int getNebenkosten()
  	{
    	return nebenkosten;
  	}	  

	/*
	* Hier wäre zu überlegen ob auch negative Etagen zugelassen werden, also Keller-Etagen etc.
	*/
	public void setEtage(int etage)
  	{
		if(etage >= 0)
			this.etage = etage;
  	}
  
  	public int getEtage()
  	{
    	return etage;
  	}
	  
	public void setBesonderheiten(String besonderheiten)
	{
		this.besonderheiten = besonderheiten;
	}
	
	public String getBesonderheiten()
	{
		return besonderheiten;
	}
	
	public void setTelefon(boolean telefon)
	{
		this.telefon = telefon;
	}
	
	public boolean getTelefon()
	{
		return telefon;
	}
	
	public void setVermietet(boolean vermietet)
	{
		this.vermietet = vermietet;
	}
	
	public boolean getVermietet()
	{
		return vermietet;
	}
	
	public void setBezahlt(boolean bezahlt)
	{
		this.bezahlt = bezahlt;
	}
	
	public boolean getBezahlt()
	{
		return bezahlt;
	}
	
	public void setName(String name)
	{
		this.name = name;
	}
	
	public String getName()
	{
		return name;
	}
}
```


```
package miethaus;

import java.io.*;

public class Haupt
{
	public static void main(String argv[])
  	{
		BufferedReader input;
		int num_mieter,count = 0;  
		String eingabe;
		  
		/* Beispiel für eine Wohnung mit einem Mieter - geht schneller ;) */
		/* Btw. wofür soll "name" in Wohnungen eigentlich gut sein ? */		  
		Wohnungen wg = new Wohnungen(30,2,2,"Wohnung1","Balkon",true);
		
		/* Das Einlesen der Daten für die Wohnung erspar ich mir jetzt */
		try
		{
			System.out.print("Ist die Wohnung '"+wg.getName()+"' bereits vermietet ? (j/J oder n/N) > ");
			input = new BufferedReader(new InputStreamReader(System.in));			
			
			eingabe = input.readLine();
			
			if(eingabe.equalsIgnoreCase("J"))
				wg.setVermietet(true);
			else
				wg.setVermietet(false);
			
			if(!wg.getVermietet())
			{
				System.out.print("\nGeben Sie bitte die Anzahl der Mieter ein:  ");
				num_mieter = Integer.parseInt(input.readLine());
				
				while(count < num_mieter)
				{
					Mieter m	= new Mieter();
					
					System.out.print("\nBitte geben Sie den Namen für den "+(count+1)+".ten Mieter/in ein:  ");
					eingabe = input.readLine();	
					m.setName(eingabe);	
					
					System.out.print("In welcher Straße haben Sie bisher gewohnt? ");
					eingabe = input.readLine();	
					m.setStrasse(eingabe);	
										
					System.out.print("Bitte geben Sie den bisherigen Wohnort , sowie zugehörige Postleitzahl an: ");
					eingabe = input.readLine();	
					m.setOrtPlz(eingabe);	
					
					System.out.print("Bitte geben Sie ihren Beruf ein:   ");
					eingabe = input.readLine();	
					m.setBeruf(eingabe);
					
					System.out.print("Sind Sie verheiratet ?: (j/J oder n/N) >  ");
					eingabe = input.readLine();
					
					if(eingabe.equalsIgnoreCase("J"))
						m.setVerheiratet(true);
					else
						m.setVerheiratet(false);
					
					wg.addMieter(m);
					
					System.out.println((count+1)+". Mieter:");
					System.out.println(m);
					System.out.println("-----------------");
					
					count++;
				}
				
				System.out.println("\nAnzahl Mieter = "+wg.getNumMieter());
			}	
		}
		catch(IOException ioe)
		{
			System.err.println("Fehler beim Einlesen von der Standardeingabe");
			
			/*
			* Hier kommt es drauf an welche Reaktion du in Folge einer Exception haben willst.
			* Programm zu beenden könnte evtl. nicht so gut sein, wenn du bereits ein paar Mieter 
			* angelegt hast und nicht dazu kamst die Sachen zu speichern.
			*/
		}
		catch(NumberFormatException nfe)
		{
			System.err.println("Ungültiges Format bei Eingabe der Daten");
			
			/* gleiches gilt wie oben */
		}			
	}
}
```

Hab das ganze in ein Package gemacht, kannst das ja ändern falls gewünscht, das ganze müsste eigentlich funktionieren, ansonsten posten. 

Der Rest ist auch nicht so schwer...


----------



## Guest (9. Feb 2005)

Jau fett das ja genial, ja veränderungen dürfte ich selbst hinbekommen, nur wenn ich das alles compiliere und so dann kommen da ein paar fehler raus und mit denen bin ich schon wieder voll überfordert!

Nunja also ein fehler beim arry vom mieter da kann es irgendwas nicht machen und dann im hauptprogramm paar fehler oder ich bin zu doof aber die klasse mieter geht zu 100%

aber erstmal danke für die ganze mühe!!!


----------



## mic_checker (9. Feb 2005)

Wo genau tauchen Fehler auf?

Hoffe hab jetzt auch den richtigen Code gepostet  Müsste eigentlich stimmen. Habs nur mal mit 2 Mietern für Wohnung1 getestet und nachher die Daten beider Mieter ausgeben lassen (Name etc.). Hat afair geklappt.


----------



## mic_checker (10. Feb 2005)

Anonymous hat gesagt.:
			
		

> Nunja also ein fehler beim arry vom mieter da kann es irgendwas nicht machen und dann im hauptprogramm paar fehler oder ich bin zu doof aber die klasse mieter geht zu 100%



Verwende doch gar kein Array von Mietern, sondern in Wohnungen eine ArrayList zur Aufnahme der Mieter. Kann allerdings sein das evtl. da ne remove etc. Methode net so 100% funzt, hab die net ausführlich getestet, sollte aber dennoch kein Problem sein das auszubauen.

Ansonsten kannst ja weiter posten.


----------



## Gast (4. Mrz 2005)

Zugegebn ich habe mir nicht alles durchgelesen aber so wie sich das anhört bracuhst du ne Access Datenbanküber ODBC angebunden und dann ne nette Swing gui mit den nötigen Feldern und funktionen eine Tabelle für Mieter eine für Wohnungstypen und eine für die Verbindung beider. alles gaaannzzz einfach ..... dauert wohl alleine ne gutte Woche und das Ding ist marktreif.... Aber by the way mal ne Frage wieviel zahlt er dir dafür?


----------



## Gast (4. Mrz 2005)

achja ich nochmal ichhabe da eben noch Buffered Reader gesehen *G* ich habe irgendwo noch ne alte Klasse liegen die sowas stark vereinfacht ...... die bindet man ein und dann stellt die alles zur verfügung und gibt gleich den richtigen wert zurück falls ihr bei der Konsole bleiben wollt.

Aber mal ehrlich dehalb schrieben wir JAVA weil die Guis so fitze fatze einfach sind meld dich wegen evtl. Hilfe bei mir ICQ 103632338 ....... andere die mit Datenbanken probs haben auch gerne..... ui ich bin net eingeloggt.


----------



## mic_checker (4. Mrz 2005)

Die Code-Teile die zum Einlesen der Werte dienen sind doch gar nicht das Problem - es kommt auf das Konzept dahinter an, dass du auch entwerfen musst wenn du mit ner GUI programmierst.

Natürlich sieht es mit ner GUI schöner aus und ist einfacher zu verwenden.


----------



## TRunKX (10. Mrz 2005)

..such dir doch mal ne möglichkeit raus ein CVS einzurichten da können mir uns dann alle dran einloggen und dir effektiver helfen. Sourceforge oda so bieten sowas an .... und  mit cvs lernt man immer was neues.

BTW: endlicha auf Swing umgestiegen?


----------



## Guest (22. Apr 2005)

So also ich habe jetzt was hinbekommen! Nur jetzt stecke ich beim letzten Problem fest! Ich versuche eine tx. datei mit dem filewriter zu erzeugen, soweit auch alles ohne Probleme! Geht auch nur wenn ich dat ganze jetzt einlesen will da bekomme ich das net hin, und habe schon ales versucht, auch Kollegen gefragt aber keiner weiss was leider! Könnt ihr mir helfen?
Also ich poste hiermal meine Klasse "Verwaltung" vll könnt ihr da schon auf den ersten blick meine Fehler sehen, sollte euch das nicht reichen habe ich unter folgendem link eine Rardatei, wo der Rest auch noch mit drinne ist!

http://home.arcor.de/dominic.schlecht/miethausverwaltung.rar

Hoffe ihr könnt mir soweit helfen das ich das hinbekomme, vorher hatte ich nämlich nur die Mietermethooden beim speichern udn einlesen dirnne, da smierte das programm dann immer bei der anzeige des einzelnen mieters ab, wenn ich zuvor mit dem filereader den datensatz geladen hatte! ich hoffte damit das ich wenn ich noch die sachen von der wohnung mit reinpacke das das ganze dann geht ??? 
Danke schonmal im vorraus!!!

```
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");
     }
   }


  }
```


----------



## mic_checker (23. Apr 2005)

Anonymous hat gesagt.:
			
		

> Geht auch nur wenn ich dat ganze jetzt einlesen will da bekomme ich das net hin..


Was genau funktioniert denn nicht? Bevor ich mir den Code angucke würd ich das gerne genau wissen 

Du kannst keine Dateien einlesen oder kannst du das ganze nicht mehr speichern?


----------



## Guest (23. Apr 2005)

Lol ein wenig komisch ausgedrückt von mir!
Also es sieht so aus, jeder Mieter und jede Wohnung hat bestimmte Eigenschaften, diese habe ich in den Filewriter (hoffe das ich alle reingepackt habe) reingeschrieben, somit kann ich beim speichern alle daten des Mieters (Name...) und die dazu gehörigen Wohnungsdaten in einer txt datei speichern! Das geht auch ohne probleme! Jetzt möchte ich versuche diese daten wieder einzulesen (die mietereigenschaften kann ich schon ohne probleme einlesen) jedoch brauche ich ja auch die wohnugseigenschaften die zum mieter gehören, das geht noch nicht! da habe ich irgendwie bzw irgendwo fehler drinne!
Hatte schon das problem das wnen ich zewei meiter abgespeichert hatte ich beim einlesen dann 2 mal den gleichen mieter hatte, aber das haben wir alles hinbekommen! jedoch kleben wir jetzt wie gesagt an der oben genannten stelle fest! die wohnungsdaten müssen nämliche ebenfalls in den vector zurückgeschreiben werden, sonst schmiert das programm z.b. ab wenn man einen mieter löschen will oder sich einen mieter angucken weill was der für eine wohnung besitzt (weil dazu braucht das programm die wohnungsinfo die zu demjenigen mieter passt)! hoffe du hast mein problem verstanden, wäre glaube ich am besten wenn du dir oben die rar datei downloadest dann verstehstes vll besser! danke!


----------



## Guest (27. Apr 2005)

Mh scheint so als könnte mir da wohl keiner helfen oder ist das so viel arbeit? Naja bis  Fretiag habe ich ja noch :-(


----------

