Konto (großes Projekt für anfänger in Java ^^)

Status
Nicht offen für weitere Antworten.

Spin

Top Contributor
Hallo liebe Leute, ich habe mal wieder ein kleines Problem.
Meine Aufgabe ist es ein Kontoablauf nachzubauen, wie jeder es kennt, wenn man zu bank geht.

Dazu wird man anfangs begrüßt und gebeten ein Konto einzurichten. Wenn ein Konto besteht dann sollen diese Angaben ausgegeben werden usw.


Mein derzeitiger Code:

Code:
public void run() throws IOException
{
    // benoetigte Variablen
    Kontoklasse kk = new Kontoklasse();
    boolean fertig =false;
    // Ausgabe
    System.out.println("Herzlich Willkommen bei Ihrer Bank");
    //Schleifenbeginn
    while(!fertig)
    {//Menue
     System.out.println("");
     System.out.println("Sie haben nun folgende Auswahlmöglichkeiten: "+
     "\n"+ "1. Konto neu anlegen" + "\n" + "2.Konto einloggen (PIN erforderlich)" + "\n"+ "3.Beenden");
     int auswahl = Integer.parseInt(eingabe.readLine());

    //Fallunterscheidung
    switch (auswahl)
    {//Konto anlegen
        case 1:
        System.out.println("Bitte geben Sie ihren Namen an:");
            kk.name= eingabe.readLine();
       
        System.out.println("Bitte geben Sie ihren Vornamen an:");
        kk.vorname= eingabe.readLine();
        
        System.out.println("Bitte geben Sie ihre Bankleitzahl an:");
        kk.blz= Integer.parseInt(eingabe.readLine());
       
        System.out.println("Bitte geben Sie ihre Kontunummer an:");
        kk.kontonummer= Integer.parseInt(eingabe.readLine());
       
        System.out.println("Die von Ihnen eigegebenen Daten lauten:"+
                            "\n"+ "Name:" + kk.name+
                            "\n"+"Vorname:" + kk.vorname+
                            "\n"+"Bankleitzahl:" + kk.blz+
                            "\n"+"Kontonummer:" + kk.kontonummer);
        
        System.out.println("Nun fehlt Ihnen noch ein entsprechender PIN, den Sie" +"\n"+
                            "automatisch zugewiesen bekommen");

        
        Random pin = new Random();
        int i = pin.nextInt(4);
        System.out.println("Ihr PIN lautet:" + i);
        break;


         case 2: System.out.println("Bitte geben Sie ihren Pin ein");
                int nummer = Integer.parseInt(eingabe.readLine());
                
                if(nummer == i)
                {System.out.println("Sie haben sich erfolgreich eingeloggt");
                }
                else
                 {System.out.println("Fehler beim Einloggen");}








        case 3: // Programm beenden
              fertig=true;
              break;
    }

Das ist alles nicht wahnsinnig interessant und schwer, jedoch stehe ich vor dem Problem des PINS:

Ich möchte einen Pin bekommen, der 4 stellig ist. Die zahl in den Klammer ( hier 4) bedeutet anscheind nur, das er Zahlen von 0-4 wiedergibt.
Kann mir da wer helfen.?



Ich möchte den durch zufall erstellten Pin, also die Zahl speichern lassen und dem Konto zuweisen. Beim nächsten durchlauf muss man sich dann mit der zufallszahl, die erst überprüft wird auf "Richtige Eingabe", einloggen.

Geht das überhaupt?
Kann man eine Zufallszahl überprüfen lassen?

Mein Ziel ist eine Endlosschleife, bis case 3....denn bevor das Programm nicht beendet wurde, sind ja alle daten drin .
Kann mir da wer helfn, danke!


gruessele spin


Edit: Habe die IF Bedingung dazugefügt. Wäre es vielleicht sinnvoll diese als methoden auszulagern ?
 

reliC

Mitglied
hi,
also erstmal vorweg wäre es vielleicht nicht einfacher wenn du eine Datenbank dahinter legst?
So kannst du zu jeder person eine bestimmte Kontonummer Kartennummer Pin Soll und Haben etc schön spezifizieren.

Beim erstellen eines Kontos fügst du dann diese Daten 1 mal in die Datenbank und danach arbeitest du nur noch mit Abfragen. So sparrst du dir glaube ich sehr viel denkarbeit und musst nicht immer schleifen durchrennen lassen usw.


Anstatt random() a = new random();...
würde ich es mal mit Math.random(); versuchen, das gibt dir einen Zufallswert zwischen 0 und 1 aus diesen kannst du dann beliebig multipliezieren usw und später natürlich auch überprüfen.

Bei Pins bin ich mir aber dennoch nicht sicher ich glaube die werden mit einer MD5 Codierung oder sonstigem Algorithmus gespeichert und nicht nur einfach als zahl
 

Spin

Top Contributor
Danke relic für deine antwort, jedoch habe ich noch nicht mit Datenbänken gearbeitet, und weiß nicht wie ich in java klar machen soll, das die eingegeben daten gespeichert werden in der oder der Datenbank.


Die Daten von der Datenbank denn zu überprüfen und wiederzugeben ist denke ich auch einfacher.
Habe ich denn die mgl mit Netbeans eine Datenbank zu erzeugen, oder müsste ich mich da vorerst mit sql auseinander setzen?
 
M

maki

Gast
Von einer DB würde dir als Anfänger auch erstmal abraten.

Der zweite Tipp denn ich habe lautet:
Schreibe nicht dein ganzes Programm in eine einzige Methode. ;)
 

Spin

Top Contributor
Jepp, weiß ich doch mein bester ;)


Ich lager das ganze noch in Methoden aus, und werde this benutzen als Zeiger. Obwohl ich das total unsinnig finde bei kleinen Projekten.

Aber meine Aufgabe besteht nun mal darin get und set zu benutzen ;)

Doch möchte ich das gerne mit der Daten bank machen, habe mir dazu eine angelegt.

Ich benutze phpmyadmin und habe darüber eine Tabelle erstellt.
SELECT `Name`, `Vorname`, `Kontonummer`, `Bankleitzahl`, `Pin` FROM `Kontotabelle`


Mit 5 Spalten. Nun möchte ich gerne auf diese Datenbank zugreifen, in dieser Schreiben und sie überprüfen.


Code:
 Connection verb = null;
    Statement stmt = null;
    ResultSet rs = null;

    String  url = "jdbc:db2://localhost/Kontotabelle";
    String user = "Kontotabelle";
    String passw = "Secred";

    String name;
    int kontonummer;

    try{
        //Datenbanktreiber laden und verbinden
        Class.forName("COM.ibm.db2.jdbc.net.DB2Driver");
        verb = DriverManager.getConnection(url, user, passw);

        // Absetzen eines SQL Statements
         stmt= verb.createStatement();
         rs = stmt.executeQuery("SELECT Name, Vorname, Kontonummer, Bankleitzahl,Pin FROM Kontotabelle");

         // Auswerten der Ergebnisse

         System.out.println("Kontonummer name    ");
         System.out.println("-----------------------");

         while(rs.next())
         {
             kontonummer= rs.getInt(1);
             name = rs.getString(2);
             System.out.println(kontonummer + "          " + name);
         }
             // Statement abschließen
             stmt.close();
             verb.close();
         }
        catch (Exception ex)
        {
            System.out.println("Exception: " + ex.getMessage());




    }







    }

}


Könnte mir da bitte einer einen Tipp geben, wie ich auf diese Datenbank zugreife, und ob sich der Treiber in der java API befindet.? Muss ich den bei Netbeans vielleicht erst dazu installieren?
Mir geht es darum mit meinen ersten Code in eine Datenbank zu schreiben, zu der ich vorher eine Verbindung herstellen muss.


Danke für eure Hilfe.
 

Tobias

Top Contributor
Bevor du nicht verstanden hast, was verschiedene Methoden und this bedeuten, solltest du nicht weitermachen. Diese Grundlagen sind essentiell. Nur so als nett gemeinter Tipp.

Den MySQL-Treiber findest du, wenn du in die Suchmaschine deiner Wahl "MySQL Java Connector" eingibst. Das heruntergeladene JAR muß anschließend in den Classpath, über die Forumssuche solltest du dazu einige Beiträge finden.
 

Spin

Top Contributor
Hallo Tobias, ich habe mein Programm nun noch mal umgeschrieben und die Datenbank rausgelassen, da ich leider noch keinen Schimmer davon habe,



Code:
public class Kontoklasse {

BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
private double kontostand, neuerKontostand,zahl,zahl1;
private int pin = 1234, kontonummer=5300300,blz = 20070024;
private String name, vorname;

	public Kontoklasse()
	{

        }
	public double getkontostand()
        {
		return kontostand;
	}

	public void setkontostand(double kontostand)
        {
		this.kontostand = kontostand;
	}
        
        public double getneuerkontostand() {
		return neuerKontostand;
	}

	public void setneuerKontostand(double neuerKontostand) {
		this.neuerKontostand = neuerKontostand;
	}
        public double getZahl() {
		return zahl;
	}

	public void setZahl1(double zahl) {
		this.zahl = zahl;
	}

	public double getZahl1() {
		return zahl1;
	}

	public void setZahl(double zahl1) {
		this.zahl1 = zahl1;
	}

       public int getpin()
       {
           return pin;
       }
       public void setpin(int pin)
       {
           this.pin=pin;
       }
       public int getkontonummer()
       {
           return kontonummer;
       }
       public void setkontonummer(int kontonummer)
       {
           this.kontonummer=kontonummer;
       }
       public int getblz()
       {
           return blz;
       }
       public void setblz(int blz)
       {
           this.blz=blz;
       }
   
 public static double addieren(double x, double y)
 {
     double summe = x+y;
     
     return summe;
 }

public static double subtrahieren(double x, double y)
{
    double differenz = x-y;
    
    return differenz;
}
 
 
public void run() throws IOException
{



    // benoetigte Variablen
    Kontoklasse kk = new Kontoklasse();
    boolean fertig =false;
    // Ausgabe
    System.out.println("Herzlich Willkommen bei Ihrer Bank");
    //Schleifenbeginn
    while(!fertig)
    {//Menue
     System.out.println("");
     System.out.println("Sie haben nun folgende Auswahlmöglichkeiten: "+
     "\n"+ "1. Konto neu anlegen" + "\n" + "2.Konto einloggen (PIN erforderlich)" + "\n"+ "3.Beenden");
     int auswahl = Integer.parseInt(eingabe.readLine());

    //Fallunterscheidung
    switch (auswahl)
    {//Konto anlegen
        case 1:
     
            
            System.out.println("Bitte geben Sie ihren Namen an:");
            kk.name= eingabe.readLine();
       
        System.out.println("Bitte geben Sie ihren Vornamen an:");
        kk.vorname= eingabe.readLine();
        
      
      
       
        System.out.println("Die von Ihnen eigegebenen Daten lauten:"+
                            "\n"+ "Name:" + kk.name+
                            "\n"+"Vorname:" + kk.vorname);
                            
        
        System.out.println("Zusätzlich bekommen Sie noch folgende Daten +" +
                            "\n" +"Kontonummer"+ kk.kontonummer + 
                            "\n" +"Bankleitzahl"+ kk.blz +
                            "\n" +"Pin"+ kk.pin  );

        
       
        break;


        case 2: System.out.println("Bitte geben Sie ihren Pin ein");
                int nummer = Integer.parseInt(eingabe.readLine());
                
                if(nummer == pin)
                {System.out.println("Sie haben sich erfolgreich eingeloggt");
                
                System.out.println("Ihr Kontostand beträgt derzeit: " + kontostand);
                System.out.println("Was möchten Sie nun tun: " + "\t"+ "1.Einzahlung"+ "\t"+ "2.Auszahlung");
                int auswahl1 = Integer.parseInt(eingabe.readLine());
                     switch(auswahl1)
                     {
                    case 1: System.out.println("Geben Sie an wie viel Geld Sie auf Ihren Konto einzahlen möchten");
                            double zahl = Double.parseDouble(eingabe.readLine());
                     
                             neuerKontostand = addieren(zahl,kontostand);
                           
                             System.out.println("Ihr neuer Kontostand lautet:" + neuerKontostand);
                             System.out.println("Danke für Ihren Besuch");
                    break;
                    case 3:System.out.println("Geben Sie an wie viel Geld Sie von Ihren Konto abholen möchten");
                            double zahl1 = Double.parseDouble(eingabe.readLine());
                            neuerKontostand = subtrahieren(kontostand,zahl1);
                            System.out.println("Ihr neuer Kontostand lautet:" + neuerKontostand);
                             System.out.println("Danke für Ihren Besuch");
               break;

                    default: System.out.println("Falsche eingabe");
                    break;
                }
                
                
                }
                else
                 {System.out.println("Fehler beim Einloggen");}
    








        case 3: // Programm beenden
              fertig=true;
               System.out.println("Danke für Ihren Besuch");
              break;
    }







    }
}
    
    


    public static void main (String[]args)throws IOException
    {

        Kontoklasse o = new Kontoklasse(); // Objekte mit ihren Instanzvariablen liegen auf dem Heap
        o.run();


    }
}



Ich habe schon verstanden warum man einige Methoden deklariert, doch leider happerts noch an der globalen Erkenntnis. Damit meine ich: Warum, ist doch eigentlich unsinnig.


mhh..

Mit get und set sagt man doch eigentlich, das man ein Objekt versucht festzuhalten um nur einen kontollierten Zugriff auf die Daten zu erlauben.
Bei der Ausführung eines Programms liegen doch
die Methoden auf der Method Area und die
Objekte mit ihren Instanz variablen auf dem
Heap.
woher wissen also die Methoden, wo sie das Datenfeld herbekommen?

Normallerweise bräuchte jede Methode, die auf
Instanz variablen arbeitet, auch eine Referenz auf
die im Heap befindlichen Daten. .....und das passiert durch this.


Wenn also jetzt hundert verschiedene Daten in einer Methode angelegt werden muss die Methode in der Lage sein, auf hundert verschiedene Ojekte zuzugreifen.

Ich denke ich habe es verstanden, wenn nicht, korrigiert mich bitte!
Doch warum mache ich das für ein Objekt in einer Methode ?


Danke , gruß spin
 

Tobias

Top Contributor
Ein Objekt ist die Einheit von Daten und Verhalten. Die Daten werden durch Instanzvariablen, das Verhalten durch Methoden abgebildet. Die Methoden eines Objekts arbeiten in aller Regel (Ausnahmen sind selten!) mit den Daten des selben Objekts.

Hier ist auch ein wesentliches Problem deines Programms zu suchen: Deine Methoden addieren() und subtrahieren() verändern das Objekt Konto nämlich nicht! Wenn ich ein Konto anlege und Geld einzahle, muß sich mein Kontostand verändern. Überprüfen läßt sich diese Veränderung, indem ich mich nach dem Einzahlen aus- und wieder einlogge. Beim zweiten Einloggen muß da Kontostand = alterKontostand + Einzahlung stehen, ansonsten bescheißt mich die Bank!

Dieses korrekte Verhalten erreichst du nur mit zwei Instanzmethoden in der Klasse Konto, die den Kontostand auch wirklich verändern (und gleichzeitig Überprüfungen durchführen - etwa soll ein negativer Betrag eingezahlt werden, soll mehr Geld abgehoben werden als verfügbar etc.).

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Konto- auszahlen Java Basics - Anfänger-Themen 9
H Konto Java Basics - Anfänger-Themen 4
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
L PROBLEM! "Bug" bei Konto-Projekt! Java Basics - Anfänger-Themen 7
S Implementierung der Klasse Konto und Nutzung bereits vorhandener Klassen Java Basics - Anfänger-Themen 7
G Konto-Historie speichern/lesen Java Basics - Anfänger-Themen 4
F Klassen Konto Programm Java Basics - Anfänger-Themen 11
S Bank-Konto Aufgabe Java Basics - Anfänger-Themen 2
M Erste Schritte Konto darf nicht überzogen werden... Java Basics - Anfänger-Themen 5
L Rekursion - Konto mit Spareinlage Java Basics - Anfänger-Themen 11
A Konto anlegen Java Basics - Anfänger-Themen 3
M Konto-Programm Java Basics - Anfänger-Themen 9
K Konto Programm Java Basics - Anfänger-Themen 3
E Konto ins Array speichern! Java Basics - Anfänger-Themen 4
E Konto! Java Basics - Anfänger-Themen 9
C Erste Schritte Muster ausgeben in der Konsole - großes V Java Basics - Anfänger-Themen 5
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Großes Problem Java Basics - Anfänger-Themen 6
J Großes Problem mit .jar Datei Java Basics - Anfänger-Themen 7
M sehr großes Byte Array Java Basics - Anfänger-Themen 3
M Sortieralgoritmus für großes Array gesucht Java Basics - Anfänger-Themen 10
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
A Kleines bzw. großes Problem ! Java Basics - Anfänger-Themen 2
W Komplexe Zahlen und großes Problem Java Basics - Anfänger-Themen 21
Bierhumpen mein erstes großes Programm. Was ändern? verbessern? Java Basics - Anfänger-Themen 12
F Großes Problem: Vector-Übergabe Java Basics - Anfänger-Themen 7
T Variabel großes String-Array in ein String speichern Java Basics - Anfänger-Themen 3
P Einlesen von großes Datein optimieren durch Thread(s) Java Basics - Anfänger-Themen 7
P großes problem vector Java Basics - Anfänger-Themen 9
B VISA.jar in Projekt einbinden (Library) Java Basics - Anfänger-Themen 5
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
C externe jar einbinden in Eclipse-Projekt Java Basics - Anfänger-Themen 2
B non-modular dependency in modularem Projekt verwenden Java Basics - Anfänger-Themen 3
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
J Projekt neu übersetzen Java Basics - Anfänger-Themen 3
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
B Quicksort in Verbindung mit einem Projekt Java Basics - Anfänger-Themen 1
S Video Projekt Java Basics - Anfänger-Themen 28
A Hilfe bei Java Projekt Java Basics - Anfänger-Themen 4
B Grundsatzfragen zu meinem neuen Projekt Einnahmen-Ausgaben App Java Basics - Anfänger-Themen 8
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
D Gemeinsames Projekt Java Basics - Anfänger-Themen 13
J Veranstaltungs Projekt Java Basics - Anfänger-Themen 2
K Java Projekt Hilfe Java Basics - Anfänger-Themen 5
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
G Projekt architektur (implementierung) Java Basics - Anfänger-Themen 3
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
R Java-Projekt im FTP hochladen Java Basics - Anfänger-Themen 6
C Projekt öffnen BlueJ Java Basics - Anfänger-Themen 1
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
D Ausführbare jar/exe aus JAVAFX Projekt erstellen (IntelliJ) Java Basics - Anfänger-Themen 14
A Wie kann ich folgendes Projekt realisieren? Java Basics - Anfänger-Themen 4
B Derzeit JSF - Projekt, später soll MobileApp folgen Java Basics - Anfänger-Themen 5
H projekt 1 code schöner schreiben. Java Basics - Anfänger-Themen 25
H java erstes projekt Java Basics - Anfänger-Themen 502
B Erste Schritte nio oder io für neues Projekt Java Basics - Anfänger-Themen 1
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
alkaA Intellij Java Datei aus nicht Projekt ausführen? Java Basics - Anfänger-Themen 2
D Erste Schritte Projekt in Ecplise in einer .zip Datei speichern Java Basics - Anfänger-Themen 8
I Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt Java Basics - Anfänger-Themen 4
F Git Projekt im Build Path Java Basics - Anfänger-Themen 3
Edin Sinnvolle Projekt-/Codepräsentation Java Basics - Anfänger-Themen 2
L Suche ein sampel Projekt Java Basics - Anfänger-Themen 2
J App.jar muss im Projekt App als Bibliothek vorhanden sein?! Java Basics - Anfänger-Themen 1
J Projekt nicht editierbar modifizieren (NetBeans 8) Java Basics - Anfänger-Themen 10
L Compiler-Fehler AndroidStudio Projekt startet nicht mehr!!! Java Basics - Anfänger-Themen 2
F Eclipse alle Projekt weg Java Basics - Anfänger-Themen 6
D Erste Schritte Projekt Zuul Java Basics - Anfänger-Themen 192
D JavaFX, Verweis auf Datei im Projekt Java Basics - Anfänger-Themen 0
M Hilfe bei Roulette Projekt Java Basics - Anfänger-Themen 7
M bestehendes Projekt als Applet speichern Java Basics - Anfänger-Themen 2
M Netbeans Projekt lauffähig abspeichern Java Basics - Anfänger-Themen 3
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
S Best Practice Projekt als .JAR exportiert Java Basics - Anfänger-Themen 4
H Ist Java überhaupt die richtige Sprache für das Projekt? Java Basics - Anfänger-Themen 8
elischa Eclipse Plugin Projekt, Maven Projekt und dependencies Java Basics - Anfänger-Themen 5
M Open Source Projekt mit Unit Tests gesucht Java Basics - Anfänger-Themen 5
T Java Projekt aufbau Java Basics - Anfänger-Themen 5
C java Projekt mit Xuggler exportieren Java Basics - Anfänger-Themen 9
H Menüführung Projekt Wecker Java Basics - Anfänger-Themen 5
S Klassen Externe Klasse in ein Projekt mit einbinden Java Basics - Anfänger-Themen 7
T Config: Projekt erkennt Javaversion nicht Java Basics - Anfänger-Themen 12
M Erste Schritte Heruntergeladenes Java Projekt lauffähig kriegen Java Basics - Anfänger-Themen 1
A Java Projekt Java Basics - Anfänger-Themen 1
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
N Eclipse Projekt im Terminal (Mac) öffnen.... Java Basics - Anfänger-Themen 4
O Zu viel static im Projekt Java Basics - Anfänger-Themen 9
M Bekomm altes Uni-Projekt in java nicht mehr zum laufen Java Basics - Anfänger-Themen 7
H Empfohlene Projekt-Struktur und mehr ... Java Basics - Anfänger-Themen 5
J Thread erstellen (BlueJ Projekt) Java Basics - Anfänger-Themen 3
I Fehler mit kurzem Projekt Java Basics - Anfänger-Themen 7
J Schule Java Projekt Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben