Lohnrechner / Probleme mit Programmierung

  • VB.NET

Es gibt 50 Antworten in diesem Thema. Der letzte Beitrag () ist von verbatim001.

    Lohnrechner / Probleme mit Programmierung

    Hallo liebe Community,

    ich muss aufgrund meines Studiums ein kleines Programm schreiben, was als Prüfungsleistung mit eingeht. Leider waren die Vorlesungen recht rar was Theorie und Praxis beim programmieren angeht, deshalb möchte ich versuchen mit ein bisschen Hilfe von euch etwas hinzubekommen.

    Mein Thema ist es ein Lohnrechner zu erstellen. Ich habe bis jetzt nur die Maske erstellt, grundsätzlich orientiere ich mich an diesem Rechner http://www.steuerberaten.de/do_it_yourself/rechner/lohn/index.php.

    Der Rechner sollte alles nötige berechnen können und man sollte am Ende die Möglichkeit haben die zuletzt eingegebenen Daten zu sichern (hab schonmal ein bisschen was gelesen, das man ganz gut auf eine Datenbank verzichten kann, aber mehr weiß ich noch auch nicht). Ich möchte noch dazu sagen das ich im Laufe des Projekts öfters Fragen haben werde.

    Also mein derzeitiges Problem liegt darin aus einer Combobox Daten auszuwählen bzw. Frage ich mich ernsthaft, wie ich überhaupt die Möglichkeiten festlegen kann mit VB... Könnt ihr mir da weiterhelfen?

    Quellcode

    1. Private Sub ComboBox7_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox7.SelectedIndexChanged ' Was muss jetzt hier rein? Ich will dann z. B. aus 1,2,3,4 auswählen können und diese Zahlen sollen dann weiter in der Berechnung berücksichtigt werden. Auch muss eine Eingabe abgesichert werden, da ohne diese Info nicht gerechnet werden kann. End Sub



    Puh ja das wärs erstmal, ich hoffe ihr könnt mir weiterhelfen und seid nicht zu angepisst aufgrund der primitiven Fragen^^ :rolleyes:
    Bitte VB-Tag benutzen - aber richtig

    wieviel Zeit hast du?

    die einfachste Bereitstellung einer Auswahl besteht darin, eine List(Of T) zu befüllen, und als DataSource der Combobox anzudrehen. In Keine Strings in die File-Listbox! geschieht dergleichen mit einer List(Of FileInfo)

    Man kann aber auch alle Listen und Tabellen, die man so braucht, in einem typisierten Dataset zusammenfassen - gugge etwa Daten laden, speichern, verarbeiten

    Damit hat man ein einheitliche und enorm leistungsfähige Technologie, aus der man sich für jede Anforderung ein geeignetes Datenmodell basteln kann.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo,

    schonmal danke für die Links, werde mich heut und morgen ein bisschen reinlesen.

    Hab leider nur bis zum 25. Januar Zeit, bin schon recht am verzweifeln wie man nach 3 Stunden Vorlesung das hinbekommen soll. Naja learning by doing.
    Hab leider bis jetzt nur 2 "Programme" geschrieben, jedoch hab ich eigentlich lediglich nur versucht in der Unterrichtszeit alles abzutippen, um wenigstens irgendein Anhaltspunkt dann zu haben.

    Von der Materie selbst hab ich eigentlich kein Plan und muss mir nahezu alles irgendwie jetzt klar machen :D

    Das Steuergesetz ... ja gute Frage. Haben im Unterricht eine Formel zur Berechnung der LST verwendet, diese wollte ich wieder verwenden. Glaub kaum, dass ich es programmiertechnisch hinbekommen werde bis dahin, dass anders zu machen.

    Hier mal ein Bild wies aussehen soll: imageshack.us/photo/my-images/72/nettolohnrechner.jpg/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „verbatim001“ ()

    Naja der erste Schritt ist einfach, und hat mit proggen eiglich nix zu tun: Du mußt dir klar werden, was input und output werden soll.

    Welche Daten willst du erheben, welche Daten sind vorgegeben (müssen im Grunde auch erhoben werden, aber seltener), und was willst du daraus ausrechnen?
    Denke mal das ich das schon recht gut hab. Weiß was die Konstanten sind und was die variablen und was ich ausrechnen muss. Muss halt jetzt programmieren und da stoß ich halt schon bei den Comboboxen vor die Probleme. Ich kann da ja bei VB ein Text einfügen der dann auch erscheint beim ausführen, doch wie sag ich z.B. das wenn Tag-Rechnung ausgewählt ist das das Programm dann weiß okay er hat Tag gewählt... rechne das jetzt so. Daran scheiterts eigentlich ?(
    Schau Dir mal des hier an:

    VB.NET-Quellcode

    1. Dim Times As New Dictionary(Of String, Integer)
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. With Times
    4. .Add("Day", 1)
    5. .Add("Week", 7)
    6. .Add("Month", 30)
    7. .Add("Quarter", 120)
    8. .Add("Year", 365)
    9. End With
    10. ComboBox1.DataSource = Times.Keys.ToList
    11. End Sub
    12. Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    13. Label2.Text = Times(ComboBox1.SelectedItem.ToString).ToString
    14. End Sub

    verbatim001 schrieb:

    Denke mal das ich das schon recht gut hab.
    Ja, die Frage war so gemeint, dass du das mir mitteilst. Aus klar definierten Bedingungen kannman in 10 Minuten ein Datenmodell hinkloppen inklusive deiner Comboboxen, laden, speichern, pipapo. Ohne Kenntnis der Bedingungen kannman garnix machen, quasi komische Übungen in der Luft, mit Dictionaries und Comboboxen.
    Obwohl der erste Schritt einfach scheint, wird hier am meisten verbockt, grad weil die Leuts denken, sie hätten es schon.
    Ich frage nochmal: Welche Daten müssen erhoben werden?
    Hallo,

    Erstmal Danke für den Quellcode, hat mir sehr weitergeholfen.

    Jetzt hab ich das folgende Problem: Ich will jetzt mit der getroffenen Auswahl rechnen ... wie kann sowas aussehen? Sag ich dann z. B. Kirchensteuer_Gesamt = Lohnsteuer * Kirchensteuersatz ( Diesen muss sich der Nutzer aus der Auswahl ja jetzt aussuchen und dann soll das Programm damit rechnen, nur leider bekomm ich den Bezug dann nicht hin)

    So also INPUT:

    Lohnzahlungszeitraum
    Bruttolohn
    Geburtsdatum
    Steuerklasse
    Kinderfreibeträge
    Kinderlos und älter als 23 Jahre?
    Krankenversicherung
    Sachsen
    West
    Ost
    Kirchensteuerpflichtig
    Rentenversicherungspflichtig
    Einmal bzw. sonstige Bezüge
    Schon abgerechnete einmalbezüge
    Bezüge aus mehrjähriger Tätigkeit
    Jahresfreibetrag auf LST-Karte
    Hinzurechnungsbetrag

    Output soll dann sein:

    Lohnsteuer
    Soli
    Kirchensteuer
    Summe der Steuern
    Rentenversicherung
    Arbeitslosenversicherung
    Krankenversicherung
    Pflegeversicherung
    Summe Sozialversicherungen
    Nettolohn

    Ja mehr bis jetzt eigentlich nicht.

    Hoffe das ist auch das was du meinst. :)

    THX schonmal für die Antworten! Echt Top
    bleiben wir beim Input.
    Das sind ja bisher nur Einzelwerte, die vom User abgefragt werden - damit wirst du die ERgebnisse noch nicht ausrechnen können.

    Weitere Daten wären: die Steuerklassen, die's gibt, vorgesehene Zeitbereiche (Flofuchs macht dazu einen Versuch mit Dictionary), Krankenversichereungen, die's gibt, "Sachsen West Ost" könnte ebenfalls eine Entität sein, aus der ein Element auszuwählen wäre.

    Also sowas sind auch Daten, die erhoben werden müssen, weil ohne die kannst du ja keine Ergebnisse liefern, nehme ich an.
    Also was brauchst du noch, um deine Berechnungen ausführen zu können - oder war das schon alles?
    Steuerklasse und Krankenversicherung steht ja schon da beim Input, oder meinst das irgendwie anders? Das mit der Steuer wird eh noch son dickes Problem, normalerweise wäre es ja sinnvoll eine Tabelle zu hinterlegen wo dann anhand der Steuerklasse und des Bruttobetrages die Steuer rausgesucht wird automatisch (so hab ich mir das zumindest gedacht).

    Mein Programm kann jetzt auch schon einige Dinge rechnen, ich brauch wirklich eher Hilfe beim programmieren und bei der Umsetzung von manchen Sachen, wie halt das mit den Steuerklassen/Lohnsteuer.

    Kannst du mir weiterhelfen bei meiner Frage aus dem letzten Post?
    Jetzt hab ich das folgende Problem: Ich will jetzt mit der getroffenen Auswahl rechnen ... wie kann sowas aussehen? Sag ich dann z. B. Kirchensteuer_Gesamt = Lohnsteuer * Kirchensteuersatz ( Diesen muss sich der Nutzer aus der Auswahl ja jetzt aussuchen und dann soll das Programm damit rechnen, nur leider bekomm ich den Bezug dann nicht hin)
    Was mich auch noch heiß interessiert derweil ist, wie ich es schaffe, dass beim Programmstart in allen Textboxen wo ein Wert eingegeben werden muss von Anfang an 0 steht? Zurzeit muss ich bei jeder Berechnung wenigstens eine 0 in alle Felder eingeben, damit die Kontrollstrukturen nicht anschlagen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „verbatim001“ ()

    Du kannst einer TExtbox ja direkt beim Programmstart oder sogar schon im Designer den Wert 0 zuweisen.
    ZUm Thema Bezug:
    Schau dir nochmal mein Beispiel oben an. Es muss ja nich ein Dictionary sein, es geht nur um die verwendung der Combobox

    ErfinderDesRades schrieb:

    Obwohl der erste Schritt einfach scheint, wird hier am meisten verbockt, grad weil die Leuts denken, sie hätten es schon.

    Glaub mir: Bevor du nicht das Konzept des Inputs erstellt hast, brauchst du Visualstudio ühaupt nicht zu starten.
    Das mit den Steuerklassen ist nicht wirklich schwer, nur man muß sich drauf verständigen.
    Ebenso mit den Krankenkassen: Willst du eine Combobox anbieten, bei der aus den Krankenkassen, dies gibt, ausgesucht wird, oder soll der User seine KK in eine Textbox reinschreiben (und allerlei Schreibfehler riskieren)?
    Ich hab k.A. von Steuerrecht - was hängt mit einer Steuerklasse noch zusammen, ausser eines Prozentsatzes?

    Weil daraus entstünde ja eine Tabelle, mit den Spalten "Steuerklasse" und "Prozentsatz"

    Wozu wird Krankenkasse erhoben?
    @FloFuchs: Danke, hab das Problem gelöst indem ich die Variable einfach in eine Textbox schreiben lasse anstatt eines Labels, jetzt kann ich rechnen mit den Daten. Meine Textfelder haben jetzt auch von Anfang an den Wert null.

    @ErfinderdesRades: Also zum Thema Krankenkassen... ich will eigentlich nur das der Nutzer am Ende auswählt ob 0 % Krankenversicherung oder 14,9 % oder 15,5 % abgerechnet werden soll. Eine Auswahl der Krankenkasse selber soll nicht stattfinden.

    Tja das mit der Steuerklasse ist so eine Sache... Ich denke du hast recht das nicht mehr als Steuerklasse und Prozentsatz da von Nöten sind. Das Programm sollte dann aus dieser Tabelle das richtige heraussuchen. Muss man nur noch programmieren :S

    Hab mal ne Frage bezüglich eines Codes von mir:

    VB.NET-Quellcode

    1. ' Rentenversicherung / RV_GES
    2. If CheckBox5.Checked = True Then
    3. RV_GES = 0
    4. ElseIf CheckBox3.Checked = True Then
    5. If Brutto >= BRVO Then
    6. RV_GES = BRVO * RV
    7. Else
    8. RV_GES = Brutto * RV
    9. End If
    10. Else : CheckBox4.Checked = True
    11. If Brutto >= BRVW Then
    12. RV_GES = BRVW * RV
    13. Else
    14. RV_GES = Brutto * RV
    15. End If
    16. End If


    Kann man das so schreiben? Sieht irgendwie bescheiden aus, funktioniert zwar aber naja. BRVW und BRVO sind die Bemessungsgrenzen ;)
    Ja sry wegen der Formatierung, hatte es schon abgeschickt bevor mir einfiel das ich das anders machen soll ;) Habs extra gleich korrigiert.

    Aber diese NumericUpDowns sehen ziemlich bescheiden aus... Was ist denn der Vorteil von dieser Variante.

    Werde mal versuchen das ganze mit Select Case zu schreiben, hatte es auch gleich am Anfang versucht mit Select Case aber irgendwie gabs nur unterstrichene Linien von VB. Lets try again :D
    das der Nutzer am Ende auswählt ob 0 % Krankenversicherung oder 14,9 % oder 15,5 % abgerechnet werden soll.
    Das kriegt man ebenso einfach in eine Tabelle (und damit in eine Combobox) wie die Steuerklassen.

    Ach guck! - es gibt auch noch Bemessungsgrenzen!
    Das mögen zwar nur 2 Werte sein, aber die müssen auch erhoben werden, und abgespeichert. Denn sicherlich werden die Bemessungsgrenzen auch mal geändert.
    Genau hab diese Auswahl auch in einer Combobox und so gestaltet wie FloFuchs vorgeschlagen hat. :)

    Bemessungsgrenzen hab ich vergessen zu erwähnen, aber auch die hab ich schon berücksichtigt und Definiert.

    Zur Zeit funktionieren folgende Bestandteile perfekt: Kirchensteuer, Soli, Summe Steuern, Rentenversicherung, Arbeitslosenversicherung, Pflegeversicherung, Summe Sozialversicherungen

    Probleme hab ich derzeit noch mit der Lohnsteuer und mit der Krankenversicherung (nur noch nicht programmiert).

    Kann mir jemand sagen wie ich Absichere das der Benutzer je nur ein Checkbutton anklicken kann? Muss ja zwischen Ost und West unterscheiden und da darf ja nicht beides ausgewählt werden.