Datenbank

Kooki

Grünschnabel
Hi liebe COm,

ich bin neu hier und dachte ich fange gleich mal an eure Weißheit zu nutzen *g*.
Ich bin noch mehr oder weniger ein völliger Anfänger in Java (Kenntnisse nur durch Informatikunterricht und googln) und habe mich einfach mal rangesetzt eine kleine "Datenbank" zu schreiben.Wobei der Begriff Datenbank noch völlig falsch ist.
Zur Zeit ist das kleine Programm nur in der Lage Datensätze in eine "Tabelle" zu schreiben.Aber ich wollte mal fragen ob ihr euch den Code mal ansehen könntet,um mir zu helfen meine Form und meinen Programmierstil zu verbessern.
Kurze Rede und hoffentlich langer Sinn ist hier der Code:

PS: Die sache mit dem Geschlecht ist gerade in Bearbeitung und funktioniert noch absolut nicht ;-)

Code:
import java.awt.*;                            //Importe
import java.awt.event.*;
import java.awt.datatransfer.*;

public class Oberflaeche extends Frame implements TextListener,KeyListener,ActionListener,MouseListener       //Klasse 'Oberflaeche' wird initialisiert
{
  // Anfang Variablen
  Panel grund = new Panel(new BorderLayout());       //Deklarieren der GUI
  Panel links = new Panel(null);
  Panel mitte = new Panel(null);
  Panel rechts = new Panel(null);
  
  TextField Name =new TextField("Name");
  TextField Vorname =new TextField("Vorname");
  TextField Geschlecht =new TextField("Geschlecht");
  TextField Geburtsdatum =new TextField("Geburtsdatum");
  TextField Wohnort =new TextField("Wohnort");
  TextField Augenfarbe =new TextField("Augenfarbe");

  Button gendb= new Button("DB erzeugen!!");
  Button eintragen =new Button("In DB eintragen!");
  
  VPanel datenfeld[][] = new VPanel[6][11];
  
  Label werte[] = new Label[30];
  Label labname=new Label("Name");
  Label labvorname=new Label("Vorname");
  Label labgesch=new Label("Geschlecht");
  Label labgeb=new Label("Geburtsdatum");
  Label labwohn=new Label("Wohnort");
  Label labauge=new Label("Augenfarbe");
  
  Checkbox m=new Checkbox("m",false);
  Checkbox w=new Checkbox("w",false);
  
  int y;
  int mann=0;
  int frau=0;
  // Ende Variablen

          public Oberflaeche (String title)    //Obj Oberflaeche --> GUI
          {
            super(title);
            int x;
                                                        //Hauptframe
            this.setSize(1106, 532);
            this.setVisible(true);
            this.addWindowListener(new fensterzu());
            this.addKeyListener(this);
            this.add(grund);
                                                        //grund,links,rechts => Panel als Border
            grund.setSize(1006, 532);
            grund.add(links, BorderLayout.WEST);
            grund.add(mitte, BorderLayout.CENTER);
            grund.add(rechts, BorderLayout.EAST);
            
            links.setSize(250, 532);
            links.setBackground(new Color(150, 150, 150));
            
            mitte.setSize(600, 532);
            mitte.setLocation(350, 100);
            mitte.setBackground(new Color(200, 200, 200));
            
            rechts.setSize(250, 532);
            rechts.setBackground(new Color(150, 150, 150));
            rechts.add(Name);
            rechts.add(Vorname);
            rechts.add(Geschlecht);
            rechts.add(Geburtsdatum);
            rechts.add(Wohnort);
            rechts.add(Augenfarbe);
            rechts.add(eintragen);
            rechts.add(gendb);
            rechts.add(m);
            rechts.add(w);
            
            m.setLocation(151,61);                        //Checkboxen für das Geschlecht
            m.setSize(50,20);
            m.setVisible(true);
            m.addKeyListener(this);
            m.addMouseListener(this);
            
            w.setLocation(201,61);
            w.setSize(50,20);
            w.setVisible(true);
            w.addKeyListener(this);
            w.addMouseListener(this);

            Name.setLocation(0,21);                       //Textfelder für DB-Eingabe
            Name.setSize(150,20);
            Name.setVisible(true);
            Name.addTextListener(this);
            Name.addKeyListener(this);
            
            Vorname.setLocation(0,41);
            Vorname.setSize(150,20);
            Vorname.setVisible(true);
            Vorname.addTextListener(this);
            Vorname.addKeyListener(this);
            
            Geschlecht.setLocation(0,61);
            Geschlecht.setSize(150,20);
            Geschlecht.setVisible(true);
            Geschlecht.addTextListener(this);
            Geschlecht.addKeyListener(this);
            
            Geburtsdatum.setLocation(0,81);
            Geburtsdatum.setSize(150,20);
            Geburtsdatum.setVisible(true);
            Geburtsdatum.addTextListener(this);
            Geburtsdatum.addKeyListener(this);
            
            Wohnort.setLocation(0,101);
            Wohnort.setSize(150,20);
            Wohnort.setVisible(true);
            Wohnort.addTextListener(this);
            Wohnort.addKeyListener(this);
            
            Augenfarbe.setLocation(0,121);
            Augenfarbe.setSize(150,20);
            Augenfarbe.setVisible(true);
            Augenfarbe.addTextListener(this);
            Augenfarbe.addKeyListener(this);
            
            eintragen.setVisible(true);                //Buttons für DB-Erzeugen und Werte eintragen
            eintragen.setLocation(0,161);
            eintragen.setSize(100,80);
            eintragen.addActionListener(this);
            eintragen.addMouseListener(this);
            
            gendb.setVisible(true);
            gendb.setLocation(0,261);
            gendb.setSize(100,80);
            gendb.addActionListener(this);
            gendb.addMouseListener(this);
            
            
                                                                  //Schleife zum erstellen des DatenbankLayouts
              for (x = 0; x < 6; x++)
               {
                for (y = 0;y <= 10 ;y++)
                 {
                  datenfeld[x][y] = new VPanel();
                  mitte.add(datenfeld[x][y]);
                  datenfeld[x][y].setLocation(x*100,y*53);
                  datenfeld[x][y].setSize(100,53);
                  datenfeld[x][y].setBackground(new Color(0, 177, 195));
                 }

               }

            y=1;                //Resetten des y-Wertes -> Sonst Fehlermeldung (class voll)

           }                                             //Beginn der Methodendeklarierung der implementierten Listener
  // Anfang Ereignisprozeduren
           public void textValueChanged(TextEvent tvt)        //Textwertänderung
           {

           }

           public void keyPressed(KeyEvent kev)               //Taste wird gedrückt...
           {

           }

           public void keyReleased(KeyEvent kre)             //...und wieder losgelassen
           {

           }

           public void mouseClicked(MouseEvent mcl)                   //Event bei Mausklick
           {
                if (mcl.getSource() == m)
                {
                  mann = 1;
                }
                if (mcl.getSource() == w)
                {
                  frau= 1;
                }
                if (mcl.getSource() == gendb)                            //Aktivierung bei Klick auf "DB-Erzeugen" (gendb-Button)
               {

                labname.setVisible(true);                             //Erzeugen der Kopfzeile
                labname.setText("Name");
                labname.setBounds(0, 0, 100, 53);
                labname.setFont(new Font("Arial", Font.BOLD, 15));
                labname.setBackground(new Color(22,100,43));
                datenfeld[0][0].add(labname);

                labvorname.setVisible(true);
                labvorname.setText("Vorname");
                labvorname.setBounds(0, 0, 100, 53);
                labvorname.setFont(new Font("Arial", Font.BOLD, 15));
                labvorname.setBackground(new Color(22,100,43));
                datenfeld[1][0].add(labvorname);

                labgesch.setVisible(true);
                labgesch.setText("Geschlecht");
                labgesch.setBounds(0, 0, 100, 53);
                labgesch.setFont(new Font("Arial", Font.BOLD, 15));
                labgesch.setBackground(new Color(22,100,43));
                datenfeld[2][0].add(labgesch);

                labgeb.setVisible(true);
                labgeb.setText("Geb.dat.");
                labgeb.setBounds(0, 0, 100, 53);
                labgeb.setFont(new Font("Arial", Font.BOLD, 15));
                labgeb.setBackground(new Color(22,100,43));
                datenfeld[3][0].add(labgeb);

                labwohn.setText("Wohnort");
                labwohn.setBounds(0, 0, 100, 53);
                labwohn.setFont(new Font("Arial", Font.BOLD, 15));
                labwohn.setBackground(new Color(22,100,43));
                datenfeld[4][0].add(labwohn);

                labauge.setText("Augenfarbe");
                labauge.setBounds(0, 0, 100, 53);
                labauge.setFont(new Font("Arial", Font.BOLD, 15));
                labauge.setBackground(new Color(22,100,43));
                datenfeld[5][0].add(labauge);
               }
           }
           
           public void mouseEntered(MouseEvent men)          //Maus über Objekt
           {

           }
           
           public void mouseExited(MouseEvent mex)           //Maus von Objekt weg
           {

           }
           
           public void mousePressed(MouseEvent mpr)         //Maustaste wird gedrückt --> passiert noch VOR dem wieder loslassen
           {

              if (mpr.getSource() == eintragen)            //Event für "Eintragen"
                {

                    int x=0;
                    werte[x] = new Label();                //Einlesen der Textfelder und eintragen in Datenbank
                    werte[x].setText(Name.getText());
                    werte[x].setBounds(0, 0, 100, 53);
                    werte[x].setFont(new Font("Arial", Font.BOLD, 15));
                    werte[x].setBackground(new Color(22,100,43));
                    datenfeld[x][y].add(werte[x]);

                    werte[x+1] = new Label();
                    werte[x+1].setText(Vorname.getText());
                    werte[x+1].setBounds(0, 0, 100, 53);
                    werte[x+1].setFont(new Font("Arial", Font.BOLD, 15));
                    werte[x+1].setBackground(new Color(22,100,43));
                    datenfeld[x+1][y].add(werte[x+1]);
                    werte[x+2] = new Label();
                    if (mann==1)
                    {
                    
                      mann = 0;
                      werte[x+2].setText("männlich");

                    } else
                    {
                      if (frau==1)
                      {
                      
                        frau = 0;
                        werte[x+2].setText("weiblich");

                      } else
                      {
                        if (frau==1 && mann == 1)
                        {
                        
                          frau = 0;
                          mann = 0;
                          werte[x+2].setText("transsexuell");

                        } else
                        {
                        
                          frau = 0;
                          mann = 0;
                          werte[x+2].setText("asexuell");

                        }

                      }

                    }


                    werte[x+2].setBounds(0, 0, 100, 53);
                    werte[x+2].setFont(new Font("Arial", Font.BOLD, 15));
                    werte[x+2].setBackground(new Color(22,100,43));
                    datenfeld[x+2][y].add(werte[x+2]);

                    werte[x+3] = new Label();
                    werte[x+3].setText(Geburtsdatum.getText());
                    werte[x+3].setBounds(0, 0, 100, 53);
                    werte[x+3].setFont(new Font("Arial", Font.BOLD, 15));
                    werte[x+3].setBackground(new Color(22,100,43));
                    datenfeld[x+3][y].add(werte[x+3]);

                    werte[x+4] = new Label();
                    werte[x+4].setText(Wohnort.getText());
                    werte[x+4].setBounds(0, 0, 100, 53);
                    werte[x+4].setFont(new Font("Arial", Font.BOLD, 15));
                    werte[x+4].setBackground(new Color(22,100,43));
                    datenfeld[x+4][y].add(werte[x+4]);

                    werte[x+5] = new Label();
                    werte[x+5].setText(Augenfarbe.getText());
                    werte[x+5].setBounds(0, 0, 100, 53);
                    werte[x+5].setFont(new Font("Arial", Font.BOLD, 15));
                    werte[x+5].setBackground(new Color(22,100,43));
                    datenfeld[x+5][y].add(werte[x+5]);

                 }
           }
           
           public void mouseReleased(MouseEvent mre)           //Maustaste wird gedrückt --> passiert WÄHREND wieder losgelassen wird
           {
             if (mre.getSource() == eintragen)
               {

                 if (y<=10)                                   //Bedingung
                   {
                    y++;
                   }
                 else
                   {
                      voll v =new voll("MITTEILUNG!!");
                   }
               }
           }
           
          public void keyTyped(KeyEvent kty)
          {
          
          }
          
          public void actionPerformed(ActionEvent evt)
          {
          
          }

          public static void main(String[]args)                //Starten des "Hauptprogramms" durch Erzeugung des Hauptframes
          {
          
            Oberflaeche o = new Oberflaeche("Datenbank");

          }
  // Ende Ereignisprozeduren
}

class voll extends Frame                //Erzeugung eines Info-Frame falls DB voll ist
{
   Label b=new Label("Datenbank ist leider voll!!");

   public voll (String title)
    {
      super(title);
      this.setSize(250, 150);
      this.setVisible(true);
      this.addWindowListener(new fensterzu());
      this.setBackground(new Color(0, 150, 150));
      this.add(b);

    }
}
                          
class VPanel extends Panel
{

   public VPanel()
   {
   
     super(null);

   }
   
   public void paint (Graphics g)
   {

   }
}

class fensterzu extends WindowAdapter
{
  public void windowClosing(final WindowEvent wevt)
  {
  
   wevt.getWindow().dispose();

  }

}

Liebe Grüße Kooki
 
Gut, ich leg dann einfach mal los ;)

Als erstes von mir ein kleiner Rat den Stil betreffend: Theoretisch musst du dich an keinen wenn auch noch so hoch gepriesenen Programmierstil von irgendwem halten, sprich, keiner verbietet es dir deinen eigenen Stil zu haben. Wichtig ist dabei nur, dass du deinen Stil durchziehst und dass der auch verständlich ist für andere.
Das ist jetzt sehr allgemein gesagt, natürlich gibt es einige Punkte den Stil betreffend, die du auch oft in diversen Tutorien findest, die wirklich sinnvoll sind. Zum Beispiel finde ich(und nicht nur ich, sun z.B. auch ;) ) es sehr wichtig Variablen- und Objektnamen mit einem Kleinbuchstaben zu beginnen und Klassen- und Interface-Namen mit einem Großbuchstaben. Dadurch werden diese zwei Bereiche ganz klar abgetrennt, und jeder Programmierer weiß sofort: aha, Objekt! oder aha, Klasse! Das ist zum Beispiel im Bezug auf statische Methoden sehr sinnvoll, z.B.:
Java:
Name.tuIrgendwas();
In diesem Fall kann Name ein Objekt sein und tuIrgendwas() eine Methode der Klasse von Name. Aber name kann auch eine Klasse sein und tuIrgendwas() eine statische Methode. Ich würde jetzt als erstes von der zweiten Variante ausgehen, da ich anhand des Großbuchstabens von einer Klasse ausgehe.
Ich spreche dieses Beispiel an, weil mir das bei dir aufgefallen ist.

Im Gegensatz zu diesen schon-fast-Normen stehen Dinge, die jeder für sich entscheiden muss, wie er es tut. Ein kleines Beispiel, die geschweiften Klammern:
Java:
//Eine Funktion kann so aussehen:
public void tuIrgendwas() {
  //Er tut was
}

//Oder auch so:

public void tuIrgendwas()
{
  //Er tut was
}
Das ist jetzt z.B. nur eine Kleinigkeit, aber solche Kleinigkeiten gibt es viele und da gibt es die Argumentation wie bei dem Anfangsbuchstaben nicht. Wichtig ist nur, wie gesagt, dass du es einheitlich machst, sprich im ganzen Code einen Stil durchziehst.

Noch ein paar Worte zum inhaltlichen.
Zuerst: Warum tust du dir AWT? ;) Ich persönlich bin ein starker Gegner von AWT, habe zwar nicht so viele technischen Erfahrungen damit, aber dafür umso mehr optische. Und außerdem habe ich viel Erfahrung mit Swing, womit es wirklich einfach es, eine vernünftige GUI zu basteln, die auch noch auf allen Betriebssystemen gleich aussieht.

Also dir als Anfänger würde ich raten, mich direkt mit Swing zu beschäftigen.

Außerdem habe ich auch eine Abneigung. Ich würde dir raten, guck dir lieber Collections an, damit hat man viel mehr und speziellere Möglichkeiten. Ein Vector oder eine ArrayList bieten mindestens die selbe Funktionalität wie ein Array, sind aber wesentlich leichter zu handeln.

Soviel erstmal von mir.

Gruß
Matt
 
Zuletzt bearbeitet:
Außerdem würde ich die Label und Fields wie Name, Vorname, Geschlecht, Geburtstag ect. in zu jeweils 2 Array machen. Die Dinge wie das Label oder die/den Bounds kannst du per Konstante(n) in einen 1- oder 2-D-Array festlegen, und das ganze per Schleife anlegen lassen.
Den direkten Zugriff auf ein Feld kannst du dann einfach per byte-Konstante die die Feld-Adresse angibt realisieren.
z. B.:

Java:
public static final byte PRE_NAME = 0;
public static final byte SUF_NAME = 1;
public static final byte SEX = 2; //Oder Gender, ich weiß nicht was wann gehört.
public static final byte BIRTHDAY = 3;
public static final byte LIVING_PLACE = 4;
public static final byte EYES_COLOR = 5;

Kürzt die Klasse enorm und macht Änderungen wesendlich einfacher.
 

Neue Beiträge

Zurück