[Anfänger] Betriebsinterne Kioskkassenverwaltung

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
CrashBandicoot
User
Beiträge: 7
Registriert: Montag 10. Februar 2020, 10:14

Hallo zusammen,

ich würde gerne mittels Python / Tkinter eine GUI-Anwendung zur Verwaltung unserer kleinen Kioskkasse basteln und euch in diesem Thread hier an meinem Vorhaben teilhaben lassen. Ich hoffe, dass das Projekt für einen Anfänger umsetzbar und nicht zu komplex ist - bin aber zumindest noch guter Dinge.
Für Ideen, Vor- und Ratschläge bin ich immer offen!

Folgenden Aufbau habe ich geplant:
1. LogIn-Fenster
Das Programm soll zunächst allen Nutzern den aktuellen Kassenstand anzeigen und darunter ein Passworteingabefeld, sowie einen Login-Button anzeigen.
Bei Klick auf den Login-Button soll logischerweise das eingegebene Passwort abgeglichen werden. Bei Übereinstimmung soll sich ein neues Fenster öffnen, s. Punkt 2. Bei Nichtübereinstimmung soll nichts geschehen, außer, dass ein Zähler die Fehlversuche trackt und nach dem 3. Fehlversuch das Programm beendet.

2.Hauptmenü
Im Hauptmenü soll ebenfalls ganz oben der aktuelle Kontostand angezeigt werden. Da keine Datenbankkenntnisse vorhanden sind, soll dieser zunächst in einer .txt-Datei gepseichert und aus dieser auch abgerufen werden.
Darunter sollen sich -5- Buttons befinden:

1. Schuldner-Liste anzeigen (neues Fenster soll sich öffnen, in welchem in einer Liste die Namen, sowie der aktuelle Schuldenstand angezeigt werden - keine Bearbeitungsmöglichkeit, reine Darstellung)

2. Einzahlung (neues Fenster, in welchem Schuldnername und eingezahlter Betrag eingegeben werden können. Name soll dann mit den Namen aus der Schuldner-Datei abgeglichen werden. Falls vorhanden, soll der eingezahlte mit den vorhandenen Schulden verrechnet werden. Des Weiteren muss im Erfolgsfall der aktuelle Kassenstand bzw. die entsprechende .txt-Datei geändert werden. )

3. Einkauf (neues Fenster, in welchem die Art des Einkaufs (Brötchen, Getränke etc.), der ausgegebene Betrag, sowie der Name des Einkäufers eingegeben werden sollen. Anschließend soll der ausgegebene Betrag dem einzelnen Beamten gutgeschrieben (analog Einzahlung) werden, allerdings erhöht sich dadurch logischerweise der Gesamtkassenstand nicht.

4. Abrechnung (Eingabe des monatlichen Konsums zu einem entsprechenden Kunden. Zunächst Eingabe und Abgleich des Namens - falls noch nicht vorhanden, muss Kunde neu erzeugt werden. Falls vorhanden, soll eingegeben werden, wieviel der Kunde von was gekauft hat. Der Gesamtpreis sollte dann automatisch errechnet und in der Schuldner-Liste so hinterlegt bzw. zu dieser addiert werden.

5. Beenden (selbsterklärend)



Werde hier zukünfitg immer mit Zwischenständen updaten und hoffe, dass ich das Projekt - mit eurer Hilfe - verwirklichen kann.

Beste Grüße
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@CrashBandicoot: Was bedeutet das, dass sich nach drei Fehlversuchen das Programm beendet? Wenn man das wieder starten kann, ist das sinnlos. Wenn man es nicht wieder starten kann, hast Du eine supereinfache Möglichkeit eingebaut wie man die Kasse sabotieren/lahmlegen kann bis jemand mit den nötigen Rechten aufgetrieben ist das Programm wieder starten zu können.

Eine übliche Massnahme das ausprobieren von Passworten auszubremsen ist eine immer länger werdende Wartezeit zwischen erfolglosen Anmeldeversuchen einzubauen.

Statt lauter neuer Fenster fürdie einzelnen Menüpunkte würde ich ein `ttk.Notebook` vorschlagen.

Man kann den aktuellen Kassenstand natürlich gerne auch irgendwo Speichern, aber eigentlich berechnet man den aus den Transaktionen. Und die sollte man Speichern um sie später nachvollziehen zu können.

Das man Namen für Leute speichert die Anschreiben lassen ist in Ordnung und Notwending wenn Leute schulden machen können, aber das man aufzeichnet wer was wann kauft und das auswertet ist für den Betrieb nicht zwingend notwendig. Auf beides muss man die Kunden hinweisen, die müssen da explizit vorher zustimmen, und man muss auch die sonstigen Punkte der DSGVO berücksichtigen. Beispielsweise das ein Kunde dessen persönliche Daten gespeichert sind, das Recht hat all seine Daten in einem sinnvollen Format übermittelt zu bekommen oder sofern seine Schulden getilgt sind, das Recht hat das seine persönlichen Daten auf Wunsch gelöscht werden. Punkt 4 muss wahrscheinlich auch nicht jeder Mitarbeiter aufrufen können dürfen. Oder wie lange die vorgesehenen Löschfristen für persönliche Daten aussehen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
CrashBandicoot
User
Beiträge: 7
Registriert: Montag 10. Februar 2020, 10:14

Stimmt. Dass drei Fehlversuche das Programm beenden, macht tatsächlich keinen Sinn. Dann werde ich es mit der längere Wartezeit versuchen, danke.

Über `ttk.Notebook´werde ich mich informieren, kannte ich bis jetzt noch nicht. :)

In Sachen DSGVO ist alles geklärt.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es gibt hier im Forum ein anderes Kassen-Projekt, in das du dich ggf. einklinken oder das nutzen kannst. Such mal ein bisschen, es ist auch vor nicht allzu langer Zeit wieder mehr Leben reingekommen - wenn ich mich recht erinnere aufgrund von gesetzlichen Vorgaben.

Und ich muss gestehen ich bin skeptisch. Sowas umzusetzen ist nicht trivial, und ich halte das fuer nicht geeignet fuer einen Anfaenger. Nun wird man nicht erfahrener vom nichtstun, aber es ist wichtig, dass du damit rechnest, dass du es *nicht* schaffst. Und nicht versprichst etwas zu liefern, dass das dann nicht kann. Und fuer so manches der Vorgaben reicht IMHO auch eine Excel-Datei, und ein schnell lockender Bildschirmschoner, so dass man nicht an das System kann.

Ich wuerde auch in Frage stellen, ob es tkinter sein muss, oder ueberhaupt ein klassisches GUI-Framework. Vieles ist heute mit Webanwendungen deutlich besser zu loesen, von Datenbankanbindung bis Darstellung.
CrashBandicoot
User
Beiträge: 7
Registriert: Montag 10. Februar 2020, 10:14

@__deets__:

Aktuell verwalte ich die Kasse in einer umfassenden Excel-Tabelle. Es läuft auch alles soweit, so dass ich bei dem Projekt keinen Zeitdruck oder ähnliches habe. Ich wollte nur ein halbwegs sinnvolles Projekt angehen und bin daher auf die Idee gekommen.
Ich schau mal, wie weit ich komme und wenn es nicht funktioniert, dann ist es so. Alles gut - probieren kann man es ja mal :)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Klar. Wenn da keine Koepfe rollen, weil es nicht geklappt hat, dann ist das ja eine gute Vorraussetzung.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Ich wuerde auch in Frage stellen, ob es tkinter sein muss, oder ueberhaupt ein klassisches GUI-Framework. Vieles ist heute mit Webanwendungen deutlich besser zu loesen, von Datenbankanbindung bis Darstellung.
+1

Eben weil man die einzelnen Komponenten entkoppeln kann. Von Ansatz her wäre hier IMHO Django das Framework der Wahl, weil das alles unter einer Haube integriert und viele "high level" APIs bietet.
Bei einem Webframework hätten man auch die Möglichkeit, mit mehr als einem "Terminal" zuarbeiten, bei tkinter würde das aufwendiger.

Ist halt die Frage, wie die Einstellung zu Webprogrammierung und zum Lernen von Django ist. Wobei es mit dem Tutorial aus der Django Doku und dem "Django for Girls" Tutorial zwei sehr guter Einsteiger-Tutorials gibt.

Gruß, noisefloor
Antworten