Guten Tag,
ich habe eine Aufgabe zur Lagerverwaltung erhalten, habe versucht zu programmieren, allerdings funktioniert noch nicht richtig.
Aufgabe)
Erstellen Sie eine „Lagerverwaltung“, die folgende Daten für Kisten speichern kann:
•eine eindeutige Nummer zur Identifikation jeder einzelnen Kiste,
•die Breite, Länge und Höhe jeder Kiste.
Die Nummer zur Identifikation der Kiste können Sie nach einem beliebigen Schema selbst vergeben. Stellen Sie aber durch geeignete Verfahren sicher, dass bei der Eingabe einer neuen Kiste nicht eine bereits vergebene Nummer benutzt wird.
Das Programm soll die Daten der Kisten lediglich zur Laufzeit speichern – also nur so lange, wie das Programm arbeitet. Es sollen maximal Daten von 95 Kisten verwaltet werden können.
Das Programm soll folgende Funktionen anbieten:
•Eingabe einer neuen Kiste,
•Löschen der Daten einer vorhandenen Kiste,
•Ändern der Daten einer vorhandenen Kiste,
•Anzeigen der Daten einer vorhandenen Kiste und
•eine Listenfunktion, die die Daten aller vorhandenen Kisten anzeigt.
Beim Löschen, Ändern und Anzeigen soll der Zugriff auf die Daten der Kiste über die Nummer der Kiste erfolgen.
Für die Umsetzung gelten folgende Vorgaben:
•Speichern Sie die Daten in einem mehrdimensionalen Array. Erstellen Sie dieses Array lokal in der Methode main(). Verwenden Sie bitte keine Klassenvariable für das Array.
•Stellen Sie sicher, dass beim Zugriff auf die Daten der Kisten die Grenzen des Arrays nicht verlassen werden.
•Erstellen Sie für das Eingeben, Löschen, Ändern, Anzeigen und Auflisten jeweils eigene Methoden.
•Sorgen Sie dafür, dass beim Löschen, Ändern, Anzeigen und Auflisten nur auf Einträge zugegriffen werden kann, für die bereits Daten erfasst wurden. Dazu können Sie zum Beispiel überprüfen, ob die Nummer der Kiste noch den Wert 0 hat, der beim Anlegen des Arrays automatisch zugewiesen wird. Um eine Kiste zu löschen, reicht es dann, die Nummer der Kiste wieder auf den Wert 0 zu setzen.
•Erstellen Sie in der Methode main() ein Auswahlmenü für den Zugriff auf die einzelnen Funktionen der Lagerverwaltung.
•Kommentieren Sie sowohl die verwendeten Variablen als auch die Methoden. Geben Sie bei den Methoden bitte eine kurze Beschreibung der Funktionsweise, der verwendeten Argumente und eines eventuellen Rückgabewerts an.
Mein Vorschlag:
ich habe eine Aufgabe zur Lagerverwaltung erhalten, habe versucht zu programmieren, allerdings funktioniert noch nicht richtig.
Aufgabe)
Erstellen Sie eine „Lagerverwaltung“, die folgende Daten für Kisten speichern kann:
•eine eindeutige Nummer zur Identifikation jeder einzelnen Kiste,
•die Breite, Länge und Höhe jeder Kiste.
Die Nummer zur Identifikation der Kiste können Sie nach einem beliebigen Schema selbst vergeben. Stellen Sie aber durch geeignete Verfahren sicher, dass bei der Eingabe einer neuen Kiste nicht eine bereits vergebene Nummer benutzt wird.
Das Programm soll die Daten der Kisten lediglich zur Laufzeit speichern – also nur so lange, wie das Programm arbeitet. Es sollen maximal Daten von 95 Kisten verwaltet werden können.
Das Programm soll folgende Funktionen anbieten:
•Eingabe einer neuen Kiste,
•Löschen der Daten einer vorhandenen Kiste,
•Ändern der Daten einer vorhandenen Kiste,
•Anzeigen der Daten einer vorhandenen Kiste und
•eine Listenfunktion, die die Daten aller vorhandenen Kisten anzeigt.
Beim Löschen, Ändern und Anzeigen soll der Zugriff auf die Daten der Kiste über die Nummer der Kiste erfolgen.
Für die Umsetzung gelten folgende Vorgaben:
•Speichern Sie die Daten in einem mehrdimensionalen Array. Erstellen Sie dieses Array lokal in der Methode main(). Verwenden Sie bitte keine Klassenvariable für das Array.
•Stellen Sie sicher, dass beim Zugriff auf die Daten der Kisten die Grenzen des Arrays nicht verlassen werden.
•Erstellen Sie für das Eingeben, Löschen, Ändern, Anzeigen und Auflisten jeweils eigene Methoden.
•Sorgen Sie dafür, dass beim Löschen, Ändern, Anzeigen und Auflisten nur auf Einträge zugegriffen werden kann, für die bereits Daten erfasst wurden. Dazu können Sie zum Beispiel überprüfen, ob die Nummer der Kiste noch den Wert 0 hat, der beim Anlegen des Arrays automatisch zugewiesen wird. Um eine Kiste zu löschen, reicht es dann, die Nummer der Kiste wieder auf den Wert 0 zu setzen.
•Erstellen Sie in der Methode main() ein Auswahlmenü für den Zugriff auf die einzelnen Funktionen der Lagerverwaltung.
•Kommentieren Sie sowohl die verwendeten Variablen als auch die Methoden. Geben Sie bei den Methoden bitte eine kurze Beschreibung der Funktionsweise, der verwendeten Argumente und eines eventuellen Rückgabewerts an.
Mein Vorschlag:
Code:
package lagerverwaltung;
import javax.swing.*;
import java.util.Arrays;
public class Lagerverwaltung {
// Eingabe: Eine neue Kiste
static void eingabe(int [][] argEingabe) {
int nummer;
int breite, laenge, hoehe;
//Kistennummer eingeben.
do { nummer = Integer.parseInt(JOptionPane.showInputDialog(" Bitte geben Sie eine Kistennummer (1-95)."));
//Überprüfung der Kistennumer, ob vergeben ist! (Äußere Array zur Überprüfung der Kistennummer!)
if (nummer>0 && nummer<argEingabe.length) // Überprüfe ob kleiner als eingabe(95) ? & grösser als 0 sonst endet!
// [nummer-1][0] == 0 , 2 Array muss [0] sein, sonst ist die Kiste nicht frei und
//somit Eingabe nicht gültig!
if (argEingabe[nummer-1][0]==0) {
argEingabe[nummer-1][0] = nummer; // nummer-1, da der Index mit 0 beginnt!
//werte einlesen
breite = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie die Breite der Kiste ein."));
argEingabe[nummer-1][1] = breite;
laenge = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie die Länge der Kiste ein."));
argEingabe[nummer-1][2] = laenge;
hoehe = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie die Höhe der Kiste ein."));
argEingabe[nummer-1][3] = hoehe;
}
else {
System.out.println("\n Die Kistennummer ist ungültig oder schon vergeben");
}
}
while (nummer <=0 || nummer > argEingabe.length); // Eingegebe Kistennummer zwischen [1-95] dann Wiederholung
// der Schleife nicht notwendig, wenn man z.b. 98 eintippe , muss man die Eingabe wiederhollen bis es Passt und
// vor Allem die Nummer noch frei ist!
}
// Löschen eine Kiste
static void loeschen(int [][] argLoeschen) {
int nummer;
//Kistennummer eingeben
do { nummer = Integer.parseInt(JOptionPane.showInputDialog("Geben Sie bitte die löschende Kistennummer ein."));
// Kontrolle ob die eingegebene Kistennumer einer bereits gespeicherten Kiste entspricht.
if(nummer>0 && nummer<=argLoeschen.length) {
argLoeschen[0][0] = nummer;
}
else {
System.out.println("\n Die Kistennummer"+nummer+"ist nicht bekannt");
}
}
while (nummer <= 0 || nummer > argLoeschen.length);
}
// Ändern einer Kiste
static void aendern(int [][] argAendern) {
int nummer;
int breite, laenge, hoehe;
// Kistennummer eingeben.
do { nummer = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie neue Kistennummer ein.(1-95)"));
// Wenn Kistennummer gültig und noch nicht vergeben
if (nummer>0 && nummer<=argAendern.length)
if(argAendern[nummer-1][0] !=0) {
//Werte einlesen
breite = Integer.parseInt(JOptionPane.showInputDialog("kistenbreite"));
argAendern[nummer-1][1] = breite;
laenge = Integer.parseInt(JOptionPane.showInputDialog("kistenbreite"));
argAendern[nummer-1][2] = laenge;
hoehe = Integer.parseInt(JOptionPane.showInputDialog("kistenbreite"));
argAendern[nummer-1][3] = hoehe;
}
else {
System.out.println("\n Die Kistennumer ist ungültig oder noch nicht vergeben");
}
}
while(nummer<=0 || nummer<argAendern.length);
}
// Eine Kiste anzeigen
static void anzeigen(int [][] argAnzeigen) {
int nummer; // nummer wird jedes Mal neue vereinbart, da nur innerhalb der Methode gültig ist (lokale Variable)?
nummer = Integer.parseInt(JOptionPane.showInputDialog("Geben Sie eine vorhandene Kistennummer ein"));
for ( int i=0; i<argAnzeigen.length; i++) {
if(nummer>0 && nummer<=argAnzeigen.length && argAnzeigen[0] == nummer) {
System.out.println("\n Die Daten der Kiste sind t:\t"+Arrays.toString(argAnzeigen));
return;
}
}
}
public static void main(String[] args) {
//Vereinbarung des Arrays
int [][] kistenArray = new int [95][4];
// Auswahl der Funktion
String functionEinlesen;
char function;
System.out.println("Folgende Funktionen stehen Ihnen zur Auswahl: \n");
System.out.println("A \t Eingabe einer neuen Kiste");
System.out.println("B \t Löschen einer Kiste");
System.out.println("C \t Ändern einer Kiste");
System.out.println("D \t Daten einer Kiste anzeigen");
System.out.println("E \t Daten aller Kisten anzeigen");
functionEinlesen = JOptionPane.showInputDialog("Wählen Sie eine Funktion");
function = funktionEinlesen.charAt(0);
// Auswahl auswerten
switch(function) {
case 'a':
case 'A':
System.out.println("\n Sie haben Eingabe einer neuen Kiste gewählt.");
eingabe(kistenArray);
break;
case 'b':
case 'B':
System.out.println("\n Sie haben Löschen einer Kiste ausgewählt.");
loeschen(kistenArray);
break;
case 'c':
case 'C':
System.out.println("\n Sie haben Ändern einer Kiste ausgewählt.");
aendern(kistenArray);
break;
case 'd':
case 'D':
System.out.println("\n Sie haben Daten einer Kiste anzeigen gewählt.");
anzeigen(kistenArray);
break;
case 'e':
case 'E':
System.out.println("\n Sie haben Daten aller Kisten anzeigen gewählt.");
System.out.println(Arrays.toString(kistenArray));
}
System.exit(0);
}
}