• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Personalnummer automatisch generieren

S

SteffiBee

Mitglied
Hallo,

ich suche nach einer Möglichkeit, eine Personalnummer als int-Wert automatisch beim
erzeugen eines neuen Objekts (hier Mitarbeiter) zu generieren.

Wie es rein theoretisch funktioniert ist mir schon bewusst, umgesetzt habe ich sowas
bisher wie im folgenden Code:

Java:
[/B]
public abstract class Mitarbeiter implements IGehalt {

    private static int counter = 1000;
    private int personalNr;
    private String nachname;
    private String vorname;
    private Adresse adresse;
    private String telefon;
    private LocalDate geburtsdatum;
    private Firmenwagen firmenwagen;
    private Einsatzort einsatzort;
    private double stundenanzahl;
    private double stundenlohn;

    public Mitarbeiter(String nachname, String vorname, String telefon, LocalDate geburtsdatum, double stundenlohn) {

        this.personalNr = counter++;
        this.nachname = nachname;
        this.vorname = vorname;
        this.telefon = telefon;
        this.geburtsdatum = geburtsdatum;
        this.stundenlohn = stundenlohn;
        this.stundenanzahl = 0;
    }
[B]

Die Personalnummer soll beim ersten Mitarbeiter bei 1000 beginnen und für jeden weiteren eben um eins erhöht werden.
Jeder Mitarbeiter wird in einer Liste gespeichert. Diese Liste lässt sich speichern und bei erneutem Ausführen
des Programms auch laden, so dass die erstellten Mitarbeiter nach Programmende eben nicht verloren gehen.
Das ist auch soweit machbar.
Aber natürlich ist bei einem erneuten Programmstart die Variable Counter wieder bei 1000.
Somit kann ich zwar meine Mitarbeiter wieder laden, aber wenn ich jetzt neue hinzufüge, fängt
der Counter ja wieder bei 1000 an. Und genau das soll verhindert werden.

Es ist zwingend notwendig, dass jeder Mitarbeiter eine eindeutige nur einmal vergebene Personalnummer hat.

Mir ist mit meinem derzeitigen Anfängerstand bisher nur eingefallen, eventuell eine Liste mit Personalnummern
zu führen, der bei jedem neu erzeugten Mitarbeiter nur die Personalnummer hinzugefügt bekommt. Diese Liste
ebenfalls zu speichern und bei Programmstart das letzte Element (also die letzte vergebene Personalnummer)
der Variablen Counter zuzuweisen.

Das kommt mir sehr aufwendig vor, allerdings reichen meine Kenntnisse noch nicht sehr weit.
Gibt es eine effizientere Möglichkeit?

Für jegliche Hilfestellung wäre ich sehr dankbar.

Kleine Anmerkung: Dies ist mein erster Post in diesem Forum. Ich bemühe mich, mich an alle Regeln
hier zu halten. Sollte ich irgendetwas nicht richtig umgesetzt haben, bin ich für Hinweise offen :)

Liebe Grüße
Steffi
 
Kirby.exe

Kirby.exe

Top Contributor
Du könntest beim Laden die letzte Personalnummer rufen (also die größte) und setzt diese als deine static variable :)
 
S

SteffiBee

Mitglied
Jaaa, hab auch schon an sowas gedacht. Bin nur irgendwie nicht fähig an die größte Personalnummer zu kommen :)
 
Kirby.exe

Kirby.exe

Top Contributor
Naja da die Liste vermutlich von vorne bis hinte gefüllt wird, steht die Person mit der größten Personalnummer vermutlich am Ende ;) Also am Index List.size()-1
 
kneitzel

kneitzel

Top Contributor
Zwei Möglichkeiten:
a) Du speicherst auch den statischen Wert mit. Wenn Du also einen Stand lädst, dann lädst du auch diese Variable. Hat den Vorteil, dass beim Löschen von Mitarbeitern die Nummer nicht noch einmal vergeben wird.

b) Wenn Du die Mitarbeiter lädst, dann erzeugst Du ja auch Instanzen. Du hast also einen Konstruktor, der aufgerufen wird. In diesem Konstruktor kannst Du prüfen, ob die personalNr + 1 > counter ist. Ist dies der Fall, dann setzt du counter auf personalNr + 1.

Aber bei b) sehe ich eine mögliche Wiederverwendung. Wenn das ok ist, ist das natürlich kein Thema.
Also Szenario noch einmal zum Verständnis:
- Neuer Mitarbeiter bekommt persNr. x
- neuer Mitarbeiter wird gekündigt, daher fliegt er aus der Datenbank (evtl. gibt es aber noch Dokumente mit personalNr x!)
- speichern der Mitararbeiter
- laden der Mitarbeiter
- erneut neuer Mitarbeiter, persNr x wird wieder vergeben.

Generell ist daher a) zu empfehlen. Der Wert gehört also auch gespeichert.
 
S

SteffiBee

Mitglied
Richtig, die Personalnummer soll nicht noch einmal vergeben werden können.
Auch nicht, wenn der Mitarbeiter gelöscht wird.

Die Lösung a) finde ich super. Bin allerdings noch nicht ganz sicher, wie ich das Speichern der Variablen umsetzen soll.
Evtl. ganz einfach über eine txt-Datei, in der der Wert gespeichert wird?
Bin da noch nicht so ganz fit drin, habe das mit dem Laden und Speichern erst einmal in einem Praktikum umgesetzt.
 
kneitzel

kneitzel

Top Contributor
Wie speicherst Du denn die Mitarbeiter derzeit? Dann könnte man dir anhand dessen aufzeigen, wie Du diese statische Variable mit speichern könntest.
 
S

SteffiBee

Mitglied
In etwa soll das so aussehen. Das waren die Methoden aus dem letzten Praktikum, die haben super
funktioniert und würde die gerne wieder verwenden

Java:
[/B]
public Kontakt[] laden() {

        File file = new File("kontakte.ser");

        try (FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fis)) {
            
            HashSet<Kontakt> kontakte = (HashSet<Kontakt>) ois.readObject();
            kontaktliste = kontakte;
            
            return kontakte.toArray(new Kontakt[kontakte.size()]);
            
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return new Kontakt[0];
    }

    public void speichern() {

        File file = new File("kontakte.ser");

        try (FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos)) {

            oos.writeObject(kontaktliste);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
[B]

Nicht irritieren lassen von den anderen Bezeichnungen. Das waren jetzt die Methoden aus dem vorherigen Projekt.
Die Vorgehensweise ist aber identisch.
 
kneitzel

kneitzel

Top Contributor
Ja danke, das reicht so schon. Du nutzt also ObjectInputStream / ObjectOutputStream.

Damit kannst Du auch einzelne int Werte speichern. Mit writeInt schreibst du ein int und mit readInt liest du diesen.

Wichtig ist die Reihenfolge: Wenn Du erst den counter in die Datei schreibst und dann die Mitarbeiter, dann muss es beim Lesen genau so sein: Also erst den counter lesen und dann die Mitarbeiter.

Was noch etwas unschön ist: Du musst natürlich counter verändern. Wenn Du in einer anderen Klasse das Lesen / Schreiben machst, dann benötigt diese Klasse Zugriff auf counter.

Generell gefällt mir so ein Ansatz nicht ganz so gut. Aber das liegt an der Nutzung der statischen Variable. Da dies aber so erst einmal gegeben ist, würde ich das so in der beschriebenen Art vorschlagen.
 
S

SteffiBee

Mitglied
Hallo.

Der Hinweis, den int-Wert zu speichern war Gold wert. Danke dafür.
Hab es so jetzt umgesetzt und es funktioniert 1A.

Also nochmal: DANKEEEEEEEEEEEEEEE!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Personalnummer Überprüfung Java Basics - Anfänger-Themen 2
B Personalnummer aus Datenbank Java Basics - Anfänger-Themen 3
H Automatisch Folgen? Java Basics - Anfänger-Themen 1
T TextField Breite automatisch gebunden Java Basics - Anfänger-Themen 8
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
J CMD schließt sich automatisch Java Basics - Anfänger-Themen 5
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
P Array wird automatisch überschrieben Java Basics - Anfänger-Themen 3
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
S Dialogfeld nach 5 Sek automatisch öffnen Java Basics - Anfänger-Themen 15
D Einer Variable automatisch Zahlen hinzuaadieren Java Basics - Anfänger-Themen 3
JavaNewbie2.0 Tausende Wörter in Arrays automatisch einfügen Java Basics - Anfänger-Themen 10
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
J Sequenz diagram automatisch erstellen / Ablaufdiagramm Java Basics - Anfänger-Themen 0
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
A Klassen welche Klassen importiert Eclipse automatisch Java Basics - Anfänger-Themen 2
N Sequenzdiagamm automatisch erstellen Java Basics - Anfänger-Themen 1
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
B Erst lesen: Automatisch Texteingabe bestätigen Java Basics - Anfänger-Themen 6
K Methoden Automatisch nach unten scrollen Java Basics - Anfänger-Themen 2
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
M Automatisch hoch zählen Java Basics - Anfänger-Themen 8
A Bildgröße automatisch auf JLabel Größe konvertieren Java Basics - Anfänger-Themen 9
R eine Methode automatisch wiederholen Java Basics - Anfänger-Themen 12
H Regulären Ausdruck automatisch erstellen Java Basics - Anfänger-Themen 5
Viktormk java - int wert automatisch einlesen Java Basics - Anfänger-Themen 8
S Methode automatisch invoked Java Basics - Anfänger-Themen 4
E JTextArea beim Schreiben automatisch vergrößern Java Basics - Anfänger-Themen 7
S OOP Objekte automatisch erzeugen Java Basics - Anfänger-Themen 13
S Mehrere Objekte einer Klasse automatisch erzeugen Java Basics - Anfänger-Themen 15
D Automatisch zweidimensionale Arrays durchiterieren Java Basics - Anfänger-Themen 2
D Letztes Änderungs-Datum als Version automatisch eintragen Java Basics - Anfänger-Themen 5
A Downcast automatisch? Java Basics - Anfänger-Themen 17
T methode mehrfach automatisch ausfuehren Java Basics - Anfänger-Themen 6
M Vererbung Objekt automatisch einem Set zuordnen... Java Basics - Anfänger-Themen 7
A Input/Output Datei automatisch erstellen. Java Basics - Anfänger-Themen 29
T Varibalen automatisch in Schleife erstellen oder anderen Lösungsvorschlag Java Basics - Anfänger-Themen 18
jmar83 properties values automatisch escapen ??? Java Basics - Anfänger-Themen 3
J eclipse kommentar nicht automatisch löschen Java Basics - Anfänger-Themen 3
T Datenbank automatisch erzeugen beim ersten Start Java Basics - Anfänger-Themen 6
M JFrame automatisch ausrichten Java Basics - Anfänger-Themen 3
G Variablen automatisch erstellen.. Java Basics - Anfänger-Themen 4
J Dateien automatisch per Mail versenden Java Basics - Anfänger-Themen 3
G Ampel automatisch umschalten Java Basics - Anfänger-Themen 18
E Mehrdimensionales Array automatisch befüllen Java Basics - Anfänger-Themen 9
P OOP Automatisch neue Objekte erstellen Java Basics - Anfänger-Themen 14
S Eingabe über Scanner einlesen und automatisch beenden Java Basics - Anfänger-Themen 11
M Datei automatisch erstellen Java Basics - Anfänger-Themen 5
H zustände speichern und beim erneuten programmstart zustände automatisch laden Java Basics - Anfänger-Themen 26
F JAVA_HOME automatisch setzen? Java Basics - Anfänger-Themen 2
X Programm beim Systemstart automatisch ausführen Java Basics - Anfänger-Themen 2
M String und Int Werte automatisch erstellen Java Basics - Anfänger-Themen 5
S UML mit Eclipse automatisch erstellen Java Basics - Anfänger-Themen 5
M Threads automatisch erzeugen Java Basics - Anfänger-Themen 10
X Errechte Werte automatisch in einem Array speichern Java Basics - Anfänger-Themen 11
T Variablennamen automatisch erstellen Java Basics - Anfänger-Themen 6
G Sonderzeichen automatisch ändern lassen Java Basics - Anfänger-Themen 23
J ImageIcon im JLabel automatisch resizen. Java Basics - Anfänger-Themen 6
J Automatisch Button drücken/Event ausführen? Java Basics - Anfänger-Themen 6
N Programm automatisch schließen Java Basics - Anfänger-Themen 3
M Swing Anwendung - boolean schaltet automatisch auf true Java Basics - Anfänger-Themen 2
L Lokale Variablen automatisch durch Schleife erzeugen Java Basics - Anfänger-Themen 2
L Sonderzeichen automatisch escapen. Java Basics - Anfänger-Themen 7
G JSP-Seite automatisch schließen Java Basics - Anfänger-Themen 4
G Eclipse startet automatisch Fenster. Java Basics - Anfänger-Themen 4
S Attribut beim erzuegen eines Objektes automatisch erhöhen Java Basics - Anfänger-Themen 6
G jtable, zeile automatisch hinzufügen Java Basics - Anfänger-Themen 3
E ScrollBar automatisch scrollen Java Basics - Anfänger-Themen 8
M Spaltengrößen automatisch anpassen mit POI Bibliothek ? Java Basics - Anfänger-Themen 4
M for-Schleife und Variablen automatisch durchlaufen Java Basics - Anfänger-Themen 2
P Automatisch auf die nächst höere zahl runden? Java Basics - Anfänger-Themen 7
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
D Editor automatisch starten ? Java Basics - Anfänger-Themen 4
G Dem array automatisch werte von -10 bis +10 zuweisen Java Basics - Anfänger-Themen 6
G automatisch ausrechnen Java Basics - Anfänger-Themen 3
G automatisch speichern beim schliessen eines Spiels Java Basics - Anfänger-Themen 13
X Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 8
X Viele Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 2
A Punkte automatisch verbinden? Java Basics - Anfänger-Themen 3
K Object automatisch initialisiert? Java Basics - Anfänger-Themen 7
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
Gaudimagspam Nummern generieren Array Java Basics - Anfänger-Themen 4
W Erste Schritte Ein Spielfeld aufbauen/generieren Java Basics - Anfänger-Themen 1
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S Aus gleichverteilte Zufallszahlen normalverteilte Zufallszahlen generieren ? Java Basics - Anfänger-Themen 1
G Generieren neuer ID Java Basics - Anfänger-Themen 21
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
SchmidiMC Methoden Random in Methode neu generieren lassen Java Basics - Anfänger-Themen 1
3 Zufalls-Zahlen aus ArrayList generieren & auslesen Java Basics - Anfänger-Themen 6
T Hash von doubles generieren Java Basics - Anfänger-Themen 5
I String teilen und zwei Wörter generieren Java Basics - Anfänger-Themen 1
D Methoden Listen generieren Java Basics - Anfänger-Themen 4
T Javadoc in Eclipse generieren Java Basics - Anfänger-Themen 1
S JLabels generieren lassen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Anzeige

Neue Themen


Oben