Kassensystem mit Visual basic 2010 erstellen

  • VB.NET

Es gibt 46 Antworten in diesem Thema. Der letzte Beitrag () ist von killahiraner.

    Kassensystem mit Visual basic 2010 erstellen

    Hallo leute,

    Ich bin dabei ein Ganz ganz kleines kassensystem zu Programmieren.

    Ich bin jetzt an einem punkt angelangt wo ich eure Hilfe brauche.

    Als ich habe 3 Buttons Eins heißt Coca Cola das andere Fanta und das andere Summe
    ich habe auch eine Listbox
    wenn ich auf Cola klicke Wird Da automatisch Coca Cola 2.50 € eingetragen so aber ich weiß jetzt nicht wie ich alles addieren kann
    da ich ja Auch text in der Listbox habe

    hier mein Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Coca_Cola_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Coca_Cola.Click
    3. kassenbon.Items.Add("Coca Cola 2.50 €")
    4. End Sub
    5. Private Sub kassenbon_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles kassenbon.SelectedIndexChanged
    6. End Sub
    7. Private Sub Fanta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Fanta.Click
    8. kassenbon.Items.Add("Fanta 3.00 €")
    9. End Sub
    10. Private Sub Summe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Summe.Click
    11. End Sub
    12. End Class


    ich hoffe ihr Könnt mir helfen

    Danke im Vorraus :)
    Du könntest dir die Tag-eigenschaft zu Nutze machen.

    Beim hinzufügen den Preis in € an das Tag packen:

    VB.NET-Quellcode

    1. dim neuesEinkaufsteil as new listboxitem()
    2. neuesEinkaufsteil .text = "Coca Cola 2.50 €"
    3. neuesEinkaufsteil .tag = 2.5
    4. kassenbon.Items.Add(neuesEinkaufsteil)


    Dann bei der Summe alle Elemente durchlaufen, die Tag-Eigenschaft in einen Integer konvertieren und aufsummieren:

    VB.NET-Quellcode

    1. dim summe as double = 0
    2. For each einkaufsTeil as listboxitem in kassenbon.items
    3. if einkaufsTeil.tag isnot nothing then 'ist im tag was drinne?
    4. summe += Cint(einkaufsTeil.tag) 'zur summe addieren
    5. end if
    6. next

    Diese Methode wird bei einem komplexeren System aber an Grenzen stoßen. ;)

    ..oder so wie maxwell sagt.

    Edit:
    Oh, da hab ich wohl in letzer Zeit zu viel WPF gemacht. Unter Winforms gibt es kein Listboxitem. Dann verwende die Methode von maxwell. ;)
    Von meinem iPhone gesendet

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

    killahiraner schrieb:

    Ich bin dabei ein Ganz ganz kleines kassensystem zu Programmieren.

    Ich bin jetzt an einem punkt angelangt wo ich eure Hilfe brauche.

    Der Punkt ist höchstwahrscheinlich schon längst vorüber ;)

    Ich meine: Das ist eine Datenverarbeitung, und da braucht man ohne Datenmodellierung gar nicht erst anfangen.

    Schon für das Rudiment, was du andeutest, brauchst du 3 Arten von Tabellen:

    Tabelle Artikel: mit mindestens Name, StückPreis

    Tabelle Bon: mit mindestens Summe

    Tabelle BonPosten: mit mindestens je einen Verweis auf einen Artikel und auf einen Bon, dazu AnzahlArtikel

    Für diese Tabellen brauchst du keine Zeile Code zu schreiben, die kann man im DatasetDesigner gestalten, und der generiert dir den Code für die Klassen. Auch die SummenBerechnungen kann man direkt in den DataTables hinterlegen.

    Die genannten Tabellen sind nur das MiniMinimum, mit dem man eiglich noch kaum ernsthaft was tun kann. Weitere Tabellen werden vmtl. hinzukommen, etwa Kassierer, oder Lieferant etc..

    Das kann man ganz fabelhaft mit einem typisierten Dataset abhandeln, ich mach mal ein Demo.

    Ah - Readme beachten!
    Dateien
    • MiniKass01.zip

      (26,65 kB, 606 mal heruntergeladen, zuletzt: )

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

    Kassensystem mit Visual Basic 2010

    Hey Ihr seit ja echt supper danke.

    aber jetzt bin ich durcheinander :)

    so jetzt mal zu Euren antworten:

    Renati schrieb:

    Um die beste Antwort auf deine Frage zu geben, sag' uns bitte noch, ob dieses Kassensystem praktisch wirklich eingesetzt werden soll.

    Ja sie soll eingesetzt werden Sie muss ja "Noch" nichts können nur addieren und mir am ende eventuel anzeigen wieviel geld ausgegeben wird.

    maxwell schrieb:

    Lass doch einfach einen unsichtbaren Journal (Summenzähler) mitlaufen.
    Was ist ein "summenzähler" und wo finde ich ihn in meiner Toolbox?

    nikeee13 schrieb:

    Du könntest dir die Tag-eigenschaft zu Nutze machen.
    Ist zwar jetzt nicht Böse gemeint bin dir auch dankbar, aber ich blicke in deinem Code nicht durch und weiß nicht wo das alles genau hinkommen muss und es soll ja nicht an seinen Grenzen stoßen sondern Erweitbar sein.

    danke :)

    ErfinderDesRades schrieb:

    brauchst du 3 Arten von Tabellen

    ErfinderDesRades schrieb:

    Das kann man ganz fabelhaft mit einem typisierten Dataset abhandeln, ich mach mal ein Demo.
    danke Für deine hilfe. ich wollte ja 3 Tabellen machen. Ich Hatte 3 tabellen in Access 2007 gemacht, doch Konnte ich Alles nicht so miteinander Kombinieren, also ich habs nicht geschaft und auch Kein Passendes Tutorial gefunden.

    Zu deiner Demo :D : Entweder bin ich Doof ?( oder ich kann die Demo Nicht mit Visual basic 2010 Öffnen. wenn ich sie Öffne Sehe ich nur Ein Leeres Fenster :)

    hmm Also ich habe jetzt mal ein wenig Rumprobiert. VB rechnet mir jetzt alles aus und gibt mir auch den richtigen wert. aber da ihr ja wißt wie ein kassensystem funktioniert sieht ihr schnell das mir noch einiges fehlt.
    hier mein code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Coca_Cola_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Coca_Cola.Click
    3. kassenbon.Items.Add("Coca Cola 2,50 €")
    4. TextBox4.Text = "2,50"
    5. End Sub
    6. Private Sub kassenbon_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles kassenbon.SelectedIndexChanged
    7. End Sub
    8. Private Sub Fanta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Fanta.Click
    9. kassenbon.Items.Add("Fanta 3,00 €")
    10. TextBox3.Text = "3,00"
    11. End Sub
    12. Private Sub Summe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Summe.Click
    13. TextBox2.Text = "+"
    14. End Sub
    15. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    16. End Sub
    17. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    18. End Sub
    19. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    20. If TextBox2.Text = "+" Then
    21. TextBox1.Text = Val(TextBox3.Text) + Val(TextBox4.Text)
    22. End If
    23. End Sub
    24. Private Sub ListBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    25. End Sub
    26. Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    27. End Sub
    28. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    29. End Sub
    30. End Class


    Ich danke euch nochmals für eure hilfe und Hoffe das ihr mir noch weiterhin Helfen Könnt

    danke :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „killahiraner“ ()

    was sollen wir dir denn jetzt noch helfen?

    Ein summenzähler ist kein ToolboxElement
    du kannst einfahc eine Variable nehmen, und immer wenn du in die ListBox einfügst, Coca Cola..., dann machst du die Variable +=die Kosten des Produkts

    das wäre ein Summenzähler
    am Schluss kannst du dir die Variable einffach anzeigen lassen

    Gruß Vitox
    Mit OOP könnte man da schon weiter kommen und eine Tabelle mit den Artikeln + Preis reicht auch völlig aus.

    1. Artikel Klasse

    VB.NET-Quellcode

    1. Public Class Artikel
    2. Public ArtikelName As String
    3. Public ArtikelPreis As Double
    4. Public Sub New(ByVal Name As String, ByVal Preis As Double)
    5. ArtikelName = Name
    6. ArtikelPreis = Preis
    7. End Sub
    8. Public Override Function ToString()
    9. Return ArtikelName & " " & ArtikelPreis.ToString() & "€"
    10. End Function
    11. End Class


    ArtikelListe erstellen

    VB.NET-Quellcode

    1. 'Button Cola click
    2. ListBox1.Items.Add(New Artikel("Coka Cola", 2.5))
    3. 'Button Fanta
    4. ListBox1.Items.Add(New Artikel("Fanta", 2.2))
    5. 'Button Bounty
    6. ListBox1.Items.Add(New Artikel("Bounty", 1.3))
    7. 'Button Summe
    8. Dim Summe As Double = 0
    9. For Each o As Object In ListBox1.Items
    10. Dim a As Artikel = DirectCast(o, Artikel)
    11. Summe += a.ArtikelPreis
    12. Next
    13. Label1.Text = Summe.ToString()


    Soweit mal eben fix aus dem Kopf zusammen geschrieben.
    Hey danke für schnelle Antwort :)

    Vitox schrieb:

    was sollen wir dir denn jetzt noch helfen?
    hmm ich kann zwar jetzt addieren doch fehlt mich noch einiges

    1. Ich muss dann noch eingeben Können dass der kunde mir jetzt 10,00 € gegeben hat, und Vb muss dann quasi 10,00 € - 5,00 rechnen, mir das dann so wie unten im bild dargestellt in die Listbox "Kassenbon" einfügen und dahinter € schreiben also Am ende muss der Kassenbon so aussehen
    2. Ich muss Am ende sagen Können es wurden 2 Coca Cola Flaschen verkauft.

    Hallo Dodo :)

    erstmal Danke das du mir hilfst
    und ja zu meiner Hauptfrage :P

    Was ist OOP?

    und noch eine frage du hast hier ja die 2 codes geschrieben "danke nochmal"
    ja kann ich jetzt das alles löschen was ich bis jetzt zusammengebastelt habe oder wo kommt das alles hin?

    danke für eure hilfe :D
    danke für deine Hilfe
    Bilder
    • Kassenbon.jpg

      13,85 kB, 356×243, 552 mal angesehen
    OOP = Objekt Orientierte Programmierung, eben sowas, was ich geschrieben habe, dort gibt es nämlich das Objekt "Artikel"

    und ja, mein Code würde deinen bisherigen völlig ersetzten, aber das sollte man eigentlich sehen, da du dies anscheint nicht siehst, nehme ich an dass dir noch elementare Grundlagen fehlen, somit würde das wohl darauf hinauslaufen, das wir dir hier alles Programmieren und u letztendlich die Codeschnipsel zusammen kopierst, aber leider überhaupt nicht verstehst was dort gemacht wird.
    Ich rate dir, versuche zu verstehen was dort passiert, lerne die Grundlagen, ansonsten haste wenig spaß am Programmieren.

    Auch zu deiner weiteren Frage wie nun das Rückgeld berechnest, nun das ist ja wohl simpelste Mathematik, du hast schließlich schon die Summe der Artikel, jetzt musste nur noch hinbekommen das z.B. in eine Textbox das Geld eingegeben wird welches der Kunde zahlt, diesen Wert als Double Konvertieren und die Summe von diesem Betrag abziehen, das solltest du definitiv alleine hinbekommen, weil wenn daran schon scheiterst, dann solltest du das Programmieren besser lassen, fragst im Marktplatz ob dir jemand das Kassensystem Programmiert und bietest eine entsprechende Gegenleistung an.

    danke nochmal

    Hey alsoo :)

    nein ist kopiere mir die texte nicht rein ich versuche erst sie zu verstehen und dan versuche ich sie selber einzutippen :thumbsup:
    ich bin jetzt schon fast fertig er rechnet mir das alles auch aus und rück geld auch abbbbbbbbbbberr ;( :

    das kassensystem soll über ein Touchbildschirm bedientwerden, ich habe jetzt die zahl 20 wenn ich sie mit der tastatur in die texbox eintippe klappt es,
    doch wenn ich 2 buttons mache, eine ist eine 2 und die andere eine 0, überschreibt die 0 einfach die zahl 2.

    wie kann ich das Lösen?

    hier mein code

    VB.NET-Quellcode

    1. Private Sub zahlzwei_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles zahlnull.Click
    2. meinwert.Text = "2"
    3. End Sub


    VB.NET-Quellcode

    1. Private Sub zahlnull_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles zahlnull.Click
    2. meinwert.Text = "0"
    3. End Sub


    danke für eure hilfe :)

    Ps: bis jetzt habe ich durch probieren und eure hilfe alles rausbekommen ich denke mal es wird weiterhin so klappen, sodas ich bald keine hilfe mehr brauch
    aber bis dahin muss ich mich bei euch bedanken und hoffen das ich auf eure hilfe zähken kann wenn ich nicht mehr weiterkomme. :thumbup:
    Wozu soll diese Eingabe dienen?? Zur Eingabe der Menge??

    Dann musst du den Text auch Addieren

    TextBox1.Text &= "2"

    TextBox1.Text &= "0"

    um diese Zahl auf die Artikel anzuwenden musst du dann natürlich noch etwas ändern

    VB.NET-Quellcode

    1. Public Class Artikel
    2. Public ArtikelName As String
    3. Public ArtikelPreis As Double
    4. Public ArtikelMenge As Integer
    5. Public Sub New(ByVal Name As String, ByVal Preis As Double, ByVal Menge As integer)
    6. ArtikelName = Name
    7. ArtikelPreis = Preis
    8. ArtikelMenge = Menge
    9. End Sub
    10. Public Override Function ToString()
    11. Return ArtikelMenge.ToString() & "x " & ArtikelName & " " & ArtikelPreis.ToString() & "€"
    12. End Function
    13. End Class


    VB.NET-Quellcode

    1. ' Buttons Mengen Zahlen
    2. txtMenge.Text &= "Zahl"
    3. 'Button Cola click
    4. ListBox1.Items.Add(New Artikel("Coka Cola", 2.5, CInt(txtMenge.Text)))
    5. 'Button Fanta
    6. ListBox1.Items.Add(New Artikel("Fanta", 2.2, CInt(txtMenge.Text)))
    7. 'Button Bounty
    8. ListBox1.Items.Add(New Artikel("Bounty", 1.3, CInt(txtMenge.Text)))
    9. 'Button Summe
    10. Dim Summe As Double = 0
    11. For Each o As Object In ListBox1.Items
    12. Dim a As Artikel = DirectCast(o, Artikel)
    13. Summe += (a.ArtikelMenge * a.ArtikelPreis)
    14. Next
    15. Label1.Text = Summe.ToString()

    killahiraner schrieb:

    danke Für deine hilfe. ich wollte ja 3 Tabellen machen. Ich Hatte 3 tabellen in Access 2007 gemacht, doch Konnte ich Alles nicht so miteinander Kombinieren, also ich habs nicht geschaft und auch Kein Passendes Tutorial gefunden.
    Links zu passenden Tutorials findet sich im Readme, nämlich: "DatasetOnly" auf Movie-Tuts, aber auch die anderen Tuts auf der Site. Ich könnte zu den Grund-Grund-Prinzipien relationaler Datenverarbeitung noch die relationale GrundIdee zufügen.
    Das Readme beachten! von meinem letzten Post gilt allerdings noch immer.


    Zu deiner Demo :D : Entweder bin ich Doof ?( oder ich kann die Demo Nicht mit Visual basic 2010 Öffnen. wenn ich sie Öffne Sehe ich nur Ein Leeres Fenster :)

    wie - leeres Fenster?
    Du solltest ein Kassenprogramm sehen, ohne Daten. Daten sollst du ja damit anlegen. Also zunächst mal Artikel, und dann Bons, und dann zu den Bons die BonPosten.

    Aber ich habe den Upload jetzt geändert, sodasser auch ein paar BeispielDaten enthält.

    Die Tabpage "Artikel" sieht übrigens ziemlich doof aus, weil da noch total viel Platz für weitere Sachen ist.

    @Dodo: Willst du dir "MiniKass" nicht auch einmal angugge? Dort ist die gesamte Anwendung in 63 Zeilen Code abgehandelt.

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

    Hallo leute

    Hallo leute danke für die ganzen Beiträge :)

    erstmal danke ErfinderDesRades du bist ein Held :thumbup:
    ich werde mir gleich die tutorials angucken und hoffen das ich zum ergebnis komme =)
    das mit dem aussehen ist ja nicht schlimm kann mann ja immernoch ändern.

    so Dodo jetzt zu deinem Beitrag :).

    ich verstehe nichtganz was du mit addieren meinst ich glaube du hast mich falsch verstanden :P

    also ich erkläre es nochmal:

    wenn ich auf Coca Cola klicke und dann Auf fanta klicke rechnet mir Vb z.B 2,50 + 3,50 aus. Wenn ich dann auf summe Klicke zeigt er mir 6 an das ist ja richtig
    aber wenn ich jetzt eintippen möchte das der kunde mir 20,00 gibt dann zieht er auch die 6 von der 20 ab.
    Aber ich habe ja Anstadt tippen die zahlen 0-9 als button erstellt. und dem button gesagt das wenn ich auf die 2 klicke zeig in der Texbox die 2 an. Das macht sie auch die 2 wird angezeigt, doch wenn ich dann auf die null klicke wird die 2 durch die 0 ersetzt. ich will ja das die 0 neben der 2 kommt also 20 und nicht 0

    gibt es eine möglichkeit das zu regeln ohne das ich Großartig meinen code Ändern muss? :)


    Ich danke euch nochmal für eure hilfe und hoffe auf mehr :thumbsup:

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

    Japs, musste richtig Lesen, du erstellst die Buttons für 0 - 9 die Zahlen stehen ja nun in der Texteigenschaft des Buttons, nun weist du allen Buttons ein Handle zu

    VB.NET-Quellcode

    1. Private Sub ZahlenButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button0.Click, Button1.Click, Button2.Click, Button3.Click, .... ,Button9.Click
    2. Dim This As Button = DirectCast(sender, Button)
    3. TextKundeBar.Text &= This.Text
    4. End Sub
    5. Private Sub AusgabeButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonAusgabe.Click
    6. LabelRueckGeld.Text = Cint(TextKundeBar.Text) - SummeArtikel
    7. End Sub
    Da mir gerade langweilig war, habe ich auf die Schnelle auch mal ein Kassensystem programmiert, nicht besonders sauber, aber es funktioniert =)

    download.zonicom.de/CashSystem.rar

    einfach ArtikelNr eingeben und den OK Button drücken, danach Menge eingeben, OK drücken, weiteren Artikel eingeben.
    Wenn fertig "Summe" drücken, die Summe wird angezeigt, danach auf "Bar" drücken und den Wert eingeben, den der Kunde zahlt und schließend wieder auf OK, nun wird das Rückgeld angezeigt.
    Mit einem weiteren Klick auf OK wird ein neuer Bon erstellt.
    Soooo ich habe jetzt versucht und versucht doch werde ich Langsam verrückt

    Zu Dodo :P genauso wollte ich das haben nur anstadt artickel nummer eingeben das ich nur die buttons drücken muss aber alles ist richtig
    supper :thumbsup:

    zu ErfinderDesRades ich weiß nicht entweder liegt es daran das ich eine andere Vb version als du habe aber der zeigt mir meinen Vb code anders an als Deinen.

    z.B ok du weißt wie deiner in deinem video aussehen muss ne aber meiner sieht so aus egal ob ich deine Datenbank Nehme oder meine

    Meine Datenbank

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub KassenbonBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KassenbonBindingNavigatorSaveItem.Click
    3. Me.Validate()
    4. Me.KassenbonBindingSource.EndEdit()
    5. Me.TableAdapterManager.UpdateAll(Me.KassensystemDataSet2)
    6. End Sub
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. 'TODO: Diese Codezeile lädt Daten in die Tabelle "KassensystemDataSet2.Kassenbon". Sie können sie bei Bedarf verschieben oder entfernen.
    9. Me.KassenbonTableAdapter.Fill(Me.KassensystemDataSet2.Kassenbon)
    10. End Sub
    11. End Class


    Deine Datenbank:

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub CategoryBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CategoryBindingNavigatorSaveItem.Click
    3. Me.Validate()
    4. Me.CategoryBindingSource.EndEdit()
    5. Me.TableAdapterManager.UpdateAll(Me.DBSampleDataSet)
    6. End Sub
    7. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. 'TODO: Diese Codezeile lädt Daten in die Tabelle "DBSampleDataSet.Article". Sie können sie bei Bedarf verschieben oder entfernen.
    9. Me.ArticleTableAdapter.Fill(Me.DBSampleDataSet.Article)
    10. 'TODO: Diese Codezeile lädt Daten in die Tabelle "DBSampleDataSet.Category". Sie können sie bei Bedarf verschieben oder entfernen.
    11. Me.CategoryTableAdapter.Fill(Me.DBSampleDataSet.Category)
    12. End Sub
    13. End Class


    es sieht alles ganz anders aus als bei dir im film sogwar der code ist anders so das ich nicht weiß was ich machen soll.

    es muss doch eine möglichkeit geben Deine und Dodos Kassensystem zu kombemieren ?(

    Unzwar Dodo hat das mit dem eintippen und dem bong upper getroffen doch
    du hast ein bonJournal drinnen und was nicht schade würde währe eine datenbank wo er sehen kann, aha ich habe nur noch 3 Coca Cola flaschen

    Danke euch hoffe auf weitere hilfe