Lagerverwaltung umsetzung

Status
Nicht offen für weitere Antworten.
P

philli

Gast
HiHo,

ich bin gerade dabei eine Lagerverwaltung zu schreiben und dabei stehe ich jetzt vor einem gößeren Problem bei dem ich echt nicht weiter weiß. Deswegen dachte ich schreibe ich euch das mal vielleicht habt ihr ja ne Idee zum Lösungsweg.

Und zwar habe ich ein Programm geschrieben welches sich zur Zeit aus einem Fenster zusammensetzt und ein Paar Buttons (zurück hinzufügen löschen ändern) nun wird bei dem drücken von hinzufügen ein fenster geöffnet welches mir ermöglicht eine ware mit seinen merkmalen einzugeben (Artikel nr. , menge, größe usw.) nun will ich das wenn ich auf ok drücke das ganze in dem hauptfenster erscheint... das problem ist nur das das ganze auch speicherbar sein soll da ich ja nicht jedesmal alles wieder neu eingeben will. Nur wie schaffe ich das ganze sollte ich lieber eine class schreiben eigene methoden erstellen und dann mit set. get. usw arbeiten oder lieber doch alles einfach in nen txt. speichern welches er dann ließt... der vorteil beim ner neuen klasse wäre ja das Array, da jeder Artikel dann ja ein "Arrayteil" (representant? kA wie man das nennt) sein kann... nur wie schreibe ich das ganze?

Ist es möglich eine klasse zu schreiben in der ich eine methode erstelle welches mir ein rechteck ausgibt in roter farbe mit zB. der artikelnummer?

Hat jemand nen gutes beispiel für ne geschriebene klasse mit Konstruktor methoden usw ? Ich hatte das vor jahren und habe keine ahnung mehr wie das geht...

Hoffentlich habt ihr alles verstanden
 

ARadauer

Top Contributor
du willst wirklich eine lagerveralltung schreiben, weißt aber nicht wie du eine klasse mit konstruktor erstellen sollst?

also grundlegend zu deinem speicherproblem.... ich würde mal eine Ware Klasse schreiben... ungefähr so
Code:
public class Ware{
	private String artNr;
	private String bezeichnung;
	private int menge;
	float preis;
	
	public Ware(String artNr){
		this.artNr = artNr;		
	}
	
	public String getArtNr() {
		return artNr;
	}
	public void setArtNr(String artNr) {
		this.artNr = artNr;
	}
	public String getBezeichnung() {
		return bezeichnung;
	}
	public void setBezeichnung(String bezeichnung) {
		this.bezeichnung = bezeichnung;
	}
	public int getMenge() {
		return menge;
	}
	public void setMenge(int menge) {
		this.menge = menge;
	}
	public float getPreis() {
		return preis;
	}
	public void setPreis(float preis) {
		this.preis = preis;
	}
	
}
Dann schreibst du dir vielleicht einen Container, der die Waren hält. Zb eine einfache klasse mit ArrayList in der die Waren enthalten sind.
Dieser Container könnte Methoden zum Speichern und Laden anbieten. Das Speichern und Laden übernhemen wieder andere Klassen. Ob das jetzt in einer Textdatei oder Datenbank passiert ist ja egal, das kannst du programmieren wie du willst.

wegen dem Rechteck.. ungfähr so
Code:
public class PreisRechteck extends JComponent{
	
	private preis;
	
	public Ware(float preis){
		this.preis = preis;
	}
	
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		g.setColor(Color.RED);
		g.drawRect(2, 2, 500, 200);
		g.setColor(Color.BLACK);
		g.drawString(preis+"", 50, 50);
	}
JComponent erweitern und paint überschreiben...
oder was sagen die anderen? soll man was anders überschreiben, hab das schon länger nicht mehr gemacht....
 

ARadauer

Top Contributor
aja, vielleicht noch mal in die grunlagen einlesen.
mvc pattern anschaun
dao pattern anschaun

eine Lagerverwalltung schreibt man nicht von heute auf morgen...
 
P

philli

Gast
Hey cool danke :) hilft mir schonmal weiter ich habe jetzt einfach mal etwas geschrieben was nicht geht! Ist mir bewusst. Ich will damit nur zeigen wie in etwa ich mir das ganze vorstelle.. Vielleicht hat dann ja jemand ne Idee? Ich will eben versuchen mit einer klasse gleich alles auszugeben (also einen zB Jlabel in demm gleich die ganzen daten drinnen stehen) Es muss dann natürlich auch noch ein weg gefunden werden diese Daten abzuspeichern und dann so zu sagen stück für stück (also array um array) zu lesen... gibt es da evt. schon Beispiel Programme ?

Code:
public class Lagerclass{


  String lagername [];
  String lagergroesse [];
  String lagermenge [];
  String lagerpreis [];
  
  
  int lagernummer = 1;
  
  
  public JLabel[] rechteck = new JLabel[];
  
  
  Lagerclass() {

  }

  Lagerclass(String lagername, String  lagergroesse, String lagermenge, String lagerpreis) {
    this.lagername[lagernummer] = lagername;
    this.lagergroesse[lagernummer] = lagergroesse;
    this.lagermenge[lagernummer] = lagermenge;
    this.lagerpreis[lagernummer] = lagerpreis;
    this.lagernummer = this.lagernummer + 1;
  }
  

  public Object getLagerinstanz (int x, int y, int breite, int hoehe, String container, int nr){

    return

      rechteck[nr].setBounds(x, y, breite, hoehe);
      rechteck[nr].setText(this.lagername[lagernummer] + "\n" + this.lagergroesse[lagernummer] + "\n" + this.lagermenge[lagernummer] + "\n" + this.lagerpreis[lagernummer]);
      container.add(rechteck[nr]);

  }

}
 

FenchelT

Bekanntes Mitglied
Hallo,

ist das eine Uebungsidee fuer Dich um Dich mit ja Java zu beschaeftigen und Verstaendnis uber die Sprache zu erhalten, oder ist es tatsaechlich beabsichtigt, dies in eurem Unternehmen produktiv einzusetzen?

Sollte letzteres des Fall sein, so habe ich die Befuerchtung, dass Du von Java wirklich keine Ahnung hast - was ja nicht schlimm ist, kann man ja aendern - und diesen Umstand erstmal ein wenig korregieren solltest, bevor Du Dich an eine Lagerverwaltung setzt, die ihr produktiv einsetzen wollt.


Just my 2 Cent
 
P

philli

Gast
joa auf lange sicht gesehen schon ;)

das oben ist nur ne idee wie ich mein anliegen bestmöglich zeigen soll das das nicht funktionniert ist mir schon klar :D

hat einer eine idee wie man das ganze lösen könnte?
 

ARadauer

Top Contributor
Code:
String lagername []; 
  String lagergroesse []; 
  String lagermenge []; 
  String lagerpreis [];

mach dir ein objekt das, diese 4 eigenschaften hat (zb Lager), und halte diese in einer ArrayList.

Code:
this.lagername[lagernummer] = lagername
das geht nicht du musst, die arrays vorher initialisieren, kannst du aber nicht, da du noch nicht wießt wie groß sie werden. wir sind hier nicht bei php :) nimm arraylists


btw: wie war jetzt nochmal die konkrete frage?
 
P

philli

Gast
hi ARadauer danke schonmal :)

Ich habe jetzt mal nen bisl rum gegoogelt und eine Lagerverwaltung für java gefunden (also hat irgendwer anders geschrieben) dieses habe ich mir jetzt zu nutze gemacht und versucht zu verstehen was nicht wirklich gut gelungen ist. Weil ich bei sehr vielen schritten immernoch nicht weis warum man das so macht. meine verwaltungsklasse sieht bis jetzt so aus:

Code:
public static class Verwaltung{


              private static Artikelliste anker = new Artikelliste();         //Erster Verweis auf ein Listeneintrag

              //Stammdaten-Klasse
              //Klasse Artikel
              //erstellt einen Artikel
              private class Artikel {
                 //Konstruktor Artikel
                 public Artikel(String name, String groesse, float preis, int menge){
                     lagername = name;
                     lagergroesse = groesse;
                     lagerpreis = preis;
                     lagermenge = menge;
                 }
                 String lagername;
                 String lagergroesse;
                 float lagerpreis;
                 int lagermenge;
                 //Konstuktor für die Stammdaten
              }




              //Liste aller Stammdaten
              //Klasse Artikelliste
              //Erweitertung von Artikel
              public static class Artikelliste{

                 Artikel sdaten;
                                                                          //Instanz auf den Aritkel
                 Artikelliste index;
                                                                          //Instanz auf nächsten Listeneintrag
                 Artikelliste vorindex;
                                                                          //Instanz auf vorherigen Listeneintrag
                 int lagernummer;                                         //Schlüssel = Nummer des Artikels

              }




              //Methoden
              public void eintrag(String name, String groesse ,float preis, int menge, int lagernummer){

                Artikelliste asuche;
                Artikelliste vsuche;


                  if(lagernummer > 0){
                                                                  //Nur Zulässig wenn Artikelnummer >0 ist
                    asuche = anker;                               //Erstes Element in der Liste zuordnen

                    vsuche = anker;
                                                                  //Vorgängerelement ist das Ankerelement selbt.

                    while(asuche.lagernummer>0){                  //Zum Ende der Liste gehen
                       vsuche=asuche;                             //Vorgänger Listenelement immer merken
                       asuche=asuche.index;
                    };


                    asuche.index = new Artikelliste();                               //Neuer leerer Listeneintrag
                    asuche.vorindex = vsuche;
                                                                                     //Vorg„nger Element speichern
                    asuche.sdaten = new Artikel(name, groesse, preis, menge);        //Neuen Datensatz anlegen

                    asuche.lagernummer = lagernummer;                                //Artikelnummer

                  }
                  else{
                    System.out.println("fehler");
                  }

              }



              public void loeschen(int Nummer){

                Artikelliste asuche;
                asuche = anker;                                          //Erstes Element in der Liste zuordnen

                while((asuche.lagernummer>0) && (asuche.lagernummer!=Nummer))       //Zum Eintrag oder Ende der Liste gehen

                  asuche=asuche.index;

                  if(asuche.lagernummer != 0){                                 //Wenn nicht am Ende der Liste

                     if (asuche.vorindex.index==asuche.index){            //Wenn Vorg„nger auf sich Zeigt
                        anker=asuche.index;
                        anker.vorindex=anker;                             //Erste Listenelment Zeigt auf sich
                     }
                     else
                     {
                       asuche.vorindex.index=asuche.index;                //Dem Vorg„ngerelement einen neuen Index geben
                       asuche.index.vorindex=asuche.vorindex;             //Dem Folgeelement den Vor„nger geben
                     }
                  }
              }





              public String ausgeben(){

                Artikelliste asuche;

                int indexcounter = 0;


                asuche=anker;      //Erstes Element in der Liste zuordnen
                while(asuche.lagernummer>0){  //Zum Ende der Liste gehen
                   return asuche.lagernummer + asuche.sdaten.lagername + asuche.sdaten.lagergroesse + asuche.sdaten.lagerpreis + asuche.sdaten.lagermenge;


                   indexcounter++;
                   asuche=asuche.index;
                }

              }


              public void sort(){
                Artikelliste asuche;
                Artikelliste vsuche;
                int tempNummer;
                Artikel tempArtikel;
                asuche=anker;      //Erstes Element in der Liste zuordnen

                  while(asuche.lagernummer>0){  //Zum Ende der Liste gehen
                    vsuche=asuche;
                    while(vsuche.lagernummer>0){  //Zum Ende der Liste gehen
                      if(vsuche.lagernummer<asuche.lagernummer){
                         tempNummer=vsuche.lagernummer;
                         tempArtikel=vsuche.sdaten;
                         vsuche.lagernummer=asuche.lagernummer;
                         vsuche.sdaten=asuche.sdaten;
                         asuche.lagernummer=tempNummer;
                         asuche.sdaten=tempArtikel;
                      }
                      vsuche=vsuche.index;
                    }
                    asuche=asuche.index;
                  }
              }


              public void writeFile(DataOutputStream dout,DataOutputStream oout) throws IOException{
                Artikelliste asuche;
                asuche=anker;      //Erstes Element in der Liste zuordnen
                while(asuche.lagernummer>0){  //Zum Ende der Liste gehen

                   dout.writeInt(asuche.lagernummer);
                   oout.writeUTF(asuche.sdaten.lagername);
                   oout.writeUTF(asuche.sdaten.lagergroesse);
                   oout.writeFloat(asuche.sdaten.lagerpreis);
                   oout.writeInt(asuche.sdaten.lagermenge);
                   asuche=asuche.index;
                }
                dout.writeInt(0); //Endekennung EOF
              }

              public void readFile(DataInputStream din,DataInputStream oin) throws Exception{

                String name;
                String groesse;
                int menge;
                float preis;
                int nummer;

                do{

                   nummer=din.readInt();

                   if(nummer!=0){
                     name=oin.readUTF();
                     groesse=oin.readUTF();
                     preis=oin.readFloat();
                     menge=oin.readInt();
                     this.eintrag(name, groesse, preis, menge, nummer);
                   }

                }while(nummer>0);

              }

            }
            //  ende der Verwalung-Klasse




            //  Methoden
            public static Verwaltung DateiErstellen(){
               return new Verwaltung();       //Erzeugt einen neue Instanz der Verwaltung
            }


            public static void ArtikelEinfuegen(Verwaltung lagerinstanz) throws IOException{
              lagerinstanz.eintrag(uebergabehinzwarenname, uebergabeboxgrosse, uebergabehinzpreis, uebergabeboxmenge, uebergabeartikelnummer);
            }
            

            public static void ArtikelLoeschen(Verwaltung lagerinstanz) throws IOException{
              lagerinstanz.loeschen(uebergabeartikelnummer);
            }

            public static void DateiSortieren(Verwaltung lagerinstanz){
               lagerinstanz.sort();
            }

            public static void DateiDrucken(Verwaltung lagerinstanz){
               lagerinstanz.ausgeben();
            }

            public static void SchreibeDatei(Verwaltung lagerinstanz) throws IOException{
                DataOutputStream dout=new DataOutputStream(new FileOutputStream("save.idx"));
                DataOutputStream oout=new DataOutputStream(new FileOutputStream("save.dat"));
                lagerinstanz.writeFile(dout,oout);
            }

            public static void LeseDatei(Verwaltung lagerinstanz) throws Exception{
                DataInputStream din=new DataInputStream(new FileInputStream("save.idx"));
                DataInputStream oin=new DataInputStream(new FileInputStream("save.dat"));
                lagerinstanz.readFile(din,oin);
            }
 
M

maki

Gast
meiner Meinung nach ist es viel schwerer fremden Code zu verstehen, als eigenen zu schreiben.
Vor allem ist es viel schwieriger die Fehler zu finden... naja, ein paar springen einem dann doch ins Gesicht.

Vor allem fehlt aber die Erfahrung, wenn man's selber macht lernt man was, von der Analyse, über's Design bis hin zur Implementierung.
 
P

philli

Gast
So ich habe jetzt einfach mal selber weiterprobiert und das hier ist dabei rausgekommen er zeigt mir zwar kein Problem an aber es passiert leider auch nichts...

Mit dieser Methode will ich daten aus vier verschiedenen datein einlesen. Jede Datei ist einer der vier Lagerelemente


Code:
  File filename = new File(".", "name.txt");
  File filegroesse = new File(".", "groesse.txt");
  File filepreis = new File(".", "preis.txt");
  File filemenge = new File(".", "menge.txt");

Name
Größe
Menge
Preis

So will ich die Daten einlesen. Ich weis nur noch nicht wie er bei der readUTF oder readLine die nächste Zeile einlesen kann:

Code:
if (filename.exists() && filegroesse.exists() && filemenge.exists() && filepreis.exists()) {

      try {

        FileInputStream fisname = new FileInputStream(filename);
        ObjectInputStream oisname = new ObjectInputStream(fisname);

        FileInputStream fisgroesse = new FileInputStream(filegroesse);
        ObjectInputStream oisgroesse = new ObjectInputStream(fisgroesse);

        FileInputStream fismenge = new FileInputStream(filemenge);
        ObjectInputStream oismenge = new ObjectInputStream(fismenge);

        FileInputStream fispreis = new FileInputStream(filepreis);
        ObjectInputStream oispreis = new ObjectInputStream(fispreis);


        int i = 1;
        while (i <= arraynr) {
        
          arrayname[i] = oisname.readUTF();
          arraygrosse[i] = oisgroesse.readUTF();
          arraymenge[i] = oismenge.readInt();
          arraypreis[i] = oispreis.readFloat();

          lagerdaten.append(arrayname[i] + arraygrosse[i] + arraymenge[i] + arraypreis[i]);

          i++;
          

        }

        fisname.close();
        oisname.close();

        fisgroesse.close();
        oisgroesse.close();

        fismenge.close();
        oismenge.close();

        fispreis.close();
        oispreis.close();

      } catch(Exception e) {
        JOptionPane.showMessageDialog(null, "jkl", "Keine Lagerdaten vorhanden", JOptionPane.INFORMATION_MESSAGE);
      }

    }else{
      JOptionPane.showMessageDialog(null, "\n                                               Keine Daten vorhanden!\n Sollten sie bereits Daten eingefügt haben überprüfen sie bitte den Dateipfad!      ", "Keine Lagerdaten vorhanden", JOptionPane.INFORMATION_MESSAGE);
    }

Und mit dieser Methode Speichere ich die daten in den Datein. Das Problem hierbei ist nur das er die daten nicht hinten dran setzt sondern sondern alte löscht und nur das neue hineinschreibt.

Code:
try {
      ObjectOutputStream oosname = new ObjectOutputStream(new FileOutputStream(filename));
      ObjectOutputStream oosgroesse = new ObjectOutputStream(new FileOutputStream(filegroesse));
      ObjectOutputStream oosmenge = new ObjectOutputStream(new FileOutputStream(filemenge));
      ObjectOutputStream oospreis = new ObjectOutputStream(new FileOutputStream(filepreis));

      oosname.writeUTF(hinzwarenname.getText() + "\n");
      oosgroesse.writeUTF(boxgrosse.getSelectedItem() + "\n");
      oosmenge.writeInt(Integer.parseInt(boxmenge.getSelectedItem()));
      oospreis.writeFloat(Float.parseFloat(hinzpreis.getText()));
      
      oosname.flush();
      oosname.close();

      oosgroesse.flush();
      oosgroesse.close();

      oosmenge.flush();
      oosmenge.close();

      oospreis.flush();
      oospreis.close();
      
    } catch(Exception e) {

    }



    arraynr = arraynr + 1;
    arrayname[arraynr] = hinzwarenname.getText();
    arraygrosse[arraynr] = boxgrosse.getSelectedItem();
    arraymenge[arraynr] = Integer.parseInt(boxmenge.getSelectedItem());
    arraypreis[arraynr] = Float.parseFloat(hinzpreis.getText());
    lagerdaten.append(arraynr + artikelnr.getText() + hinzwarenname.getText() + boxgrosse.getSelectedItem() + Integer.parseInt(boxmenge.getSelectedItem()) + hinzpreis.getText());
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
R Java (Eclipse) "Lagerverwaltung" HILFE Java Basics - Anfänger-Themen 13
C Lagerverwaltung Java Basics - Anfänger-Themen 5
C 2dimensionales array, Lagerverwaltung Java Basics - Anfänger-Themen 64
B Lagerverwaltung Java Basics - Anfänger-Themen 45
X Lagerverwaltung mit mehrdimensionalen Array Java Basics - Anfänger-Themen 13
T Hilfe! --> Lagerverwaltung Java Basics - Anfänger-Themen 5
R Umsetzung von Formel Java Basics - Anfänger-Themen 2
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
E Umsetzung von Mehrfachvererbung in Java Java Basics - Anfänger-Themen 8
D [Concurrency/Threads] Code Umsetzung Schriftlich Java Basics - Anfänger-Themen 2
C Hilfe bei der Umsetzung Java Basics - Anfänger-Themen 1
R Tipps zur umsetzung eines Musters mit for-schleife Java Basics - Anfänger-Themen 1
kaoZ Input/Output Umsetzung einer Klasse Java Basics - Anfänger-Themen 8
U Serialisierung Probleme bei Umsetzung Java Basics - Anfänger-Themen 26
Z Switch umsetzung Java Basics - Anfänger-Themen 6
C OOP Umsetzung des MVC Java Basics - Anfänger-Themen 3
A Grafische Umsetzung von Aktienkursen Java Basics - Anfänger-Themen 2
eXistenZ Java-Boon kommt nicht zurrecht mit der Umsetzung einer Aufgabe... Java Basics - Anfänger-Themen 7
M JavaSpiel ohne grafische Umsetzung Java Basics - Anfänger-Themen 3
sliwalker Ratschläge zur Umsetzung einer Lizenzsierung Java Basics - Anfänger-Themen 10
S Umsetzung von verschiedenen Anweisungen Java Basics - Anfänger-Themen 8
A Grafik2d Objekte drehen, Idee da, Problem in Umsetzung Java Basics - Anfänger-Themen 3
L Falsche Umsetzung von MVC, brauche Hilfe Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben