Eigenes Kontosystem vervollständigen

Status
Nicht offen für weitere Antworten.
Hy @ all!

Also ich habe vor ein paar Wochen angefangen, die Java-Sprache zu erlernen und wollte jetzt mein eigenes Testprogramm schreiben.

Jetzt hab ich aber folgendes Problem:

Und zwar habe ich 3 verschiedene Swing- Klassen erstellt die auch funktionieren und habe auch eine Java Klasse Konto angelegt um eben ein neues Konto zu erstellen.

Mein Problem ist das ich nicht weiß wie ich das deklarieren soll, dass wenn sich ein neuer Benutzer registriert, automatisch ein Konto erstellt wird auf dem man später auch zugreifen kann bzw. abheben, einzahlen und den Kontostand abfragen kann.

Code der Klasse Konto:

public class Konto {
double kontostand;
String benutzername;


/** Creates a new instance of Konto */
public Konto() {
}
public void setKontostand(double ktoStand) {
kontostand=ktoStand;
}

public double getKontostand() {
return kontostand;
}

public void setBenutzername(String benutzer) {
benutzername=benutzer;
}

public String getBenutzername() {
return benutzername;
}

public void einzahlen(double ein) {
kontostand = kontostand + ein;
}

public void abheben(double aus) {
kontostand = kontostand - aus;
}


}



Habe schon probiert wenn man auf dem Button registrieren klickt soll er mit folgendem Code ein neues Konto erstellen. Funktioniert aber nicht da er es jedes mal überschreibt:


private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {


Konto vornachname = new Konto();
vornachname.setKontostand(0);
vornachname.setBenutzername(vornachname);

}


wobei vornachname ein zusammengeführter String aus dem vor und nachnamen des registrierten benutzers ist.

Bitte um Hilfe!!!Weiss einfach nicht mehr weiter!

Lg XxX_Cobra_XxX
 
Du brauchsten ne Collection
HashMap <String,Konto>
würde sich anbieten

Dynamische Varaiblennamen gibt es nicht in Java.
 
wenn sie ne Referenz auf diese HashMap haben bzw. auf das Object das die HashMap kapselt, dann ja. Ansonsten nein.
(Bitte komm nicht auf die Idee, irgendwas mit static oder Singleton anzufangen, dass ist hier unpassend und auch insgesamt meistens schlechter Programmierstil)
 
Können Sie mir bitte einen Beispielscode zeigen, wie das aussehen würde das ich eine Referenz auf diese Hashmap habe und wie man eine Hashmap kapselt?

Ich habe es bis jetzt so gelöst, da jeder neue Benutzer Vorname, Nachname und ein Passwort eigeben muss, danach wenn man auf den "Registrieren - Button" klickt eine neue Datei mit den namen (vornamen und den nachnamen) in meinem package erstellt wird und darin das Passwort liegt.
Funktioniert super nur kann ich nicht für jeden neuen Benutzer eine Konto erstellen.

Hier ist der Code dafür den ich verwendet habe:

Java:
Properties addname= new Properties();
        
        addname.put("Passwort",jPasswordField1.getText());
        try{
       
                FileOutputStream addName = new FileOutputStream(jTextField2.getText()+jTextField1.getText());
                addname.store(addName,"");
                addName.close();
         }
         catch(Exception ex){
         ex.printStackTrace();
danach habe ich eine Abfrage gemacht ob der eingegebene Benutzername überhaupt existiert und ob das dazugehörige Passwort stimmt wenn ein Benutzer auf den "Login- Button" klickt.

Code:

Java:
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
// Klasse Login/ Benutzer und Passwort- Abfrage

        String alt = jTextField1.getText();
        String neu = alt.toLowerCase().replace(" ","");
        
        Properties addName = new Properties();
        
        try {
            
            FileInputStream verifyUser = new FileInputStream(neu);
            
            
            addName.load(verifyUser);
                
        } catch(Exception ex) {
            
            jLabel5.setText("Der von Ihnen angegebene Benutzername existiert nicht!");
               jLabel3.setForeground(new java.awt.Color(255, 51, 51));
            
        }
        
        if(addName.getProperty("Passwort").equals(jPasswordField1.getText()))
        {   dispose();
            new LoginKonto();
         
            LoginKonto Names = new LoginKonto();
            Names.setName(alt);
            
            alt.toString();
            
        }
        if(true)
        {
            jLabel5.setText("Das von Ihnen angegebene Passwort ist falsch!");
               jLabel4.setForeground(new java.awt.Color(255, 51, 51));
        }
        
        
    }

Ist dies einigermassen korrekt oder eher nicht?

Und noch eine Frage warum wird immer dieser Code gelb unterstrichen?:

Java:
jPasswordField1.getText()
 
> Und noch eine Frage warum wird immer dieser Code gelb unterstrichen?

falsche Frage, richtige Frage wäre: was bedeutet es, wenn IRGENDETWAS gelb unterstrichen ist, und wieso weiß ich das nicht?

wenn du eine Entwicklungumgebung verwendest, solltest du die nennen, Eclipse?
wennst du die View 'Problems' mit ihren Errors und Warnings? da steht das drin,
falls es nicht unter tausenden anderen Meldungen unter geht,

auch wenn du der Maus über die Zeile gehts oder über das zugehörige Symbal am Rand, wird eine Info eingeblendet
 
Ich verwende Netbeans. Hier die Info wenn ich mit der Maus über diese Zeile gehe:

warning: [deprecation] getText() in javax.swing.jPasswordField has been deprecated

Hab schon nachgeschaut was deprecated bedeutet nämlich veraltet oder abgelehnt?
Damit kann ich aber nichts anfangen?Weiß da vielleicht jemand bescheid?
 
der nächste Schritt ist nun, in der API zu dieser Methode die Begründung nachzulesen:
JPasswordField (Java Platform SE 6)

Grund ist letztlich: ein Passwort sollte nicht als String in der JVM existieren, da dieser gesondert gespeichert werden
und dann für andere zugreifbar sind oder so
 
Jetzt hab ich alle jPasswordField1.getText() in jPasswordField1.getPassword() geändert womit ich gleich das nächste Problem habe und zwar gibt es jetzt die Methode isEmpty() nicht mehr.

Hat jemand vielleicht eine Lösung für dieses Problem?
 
getPassword() liefert doch ein ganz anders Objekt zurück, ein char[] statt String (eben weil String hier leicht sicherheitsgefährdend ist)
bisschen mitdenken und schauen, bitte
 
für ein paar wochen java gehst du aber gleich gscheid in medias rais.
Swing, Mouse bzw. ActionListener, FileInputStreams, Passwortfelder

also ich hab das nach ein paar wochen noch bei weitem nicht gelernt. Ich hab begonnen alle Primzahlen bis 100 ausgeben zu lassen, oder eine kleine Temperaturübung, aber net glei so ein Bsp.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben