Ticketsystem

Präsentation und Organisation von eigenen Projekten
Antworten
ontom
Beiträge: 2
Registriert: So Sep 22, 2013 2:41 pm

Ticketsystem

Beitrag von ontom » So Sep 22, 2013 3:14 pm

Hallo Leute!

Ich (17) bin absoluter Anfänger was Programmieren betrifft ... (meine Fähigkeiten beschränken sich auf ein bisschen PHP was man ja nicht gerade zum Programmieren zählen kann) bin im Web auf diesen Artikel gestoßen http://www.proggen.org/doku.php?id=start:language und hab mich sofort bei euch registriert.

Ich möchte gerne ein Programm schreiben dass im Großen und Ganzen die Funktion eines Ticketbuchsystems hat.
Hintergrund:
Bin neben der Schule im Vorstand eines "Theatervereins" (ja, bin wirklich etwas jung dafür ;) ) ... der im Jahr bei ca. 40 Vorstellungen insgesamt 80.000 Tickets verkauft. Das bisher eingesetzte Programm ist einfach zu unflexibel und eine ideale Lösung für Anzahlung und Restzahlung, konnten wir bis jetzt nicht finden. Im Gebäude gibt es nur einen Saal der ungefähr 2.000 Sitzplätze umfasst.

Was soll das Programm grob können:
Ticketbuchung vor Ort (d.h. von 5 Mitarbeitern die jeweils an einem PC arbeiten | Server natürlich vorhanden)
Rechnungsabwicklung (Anzahlung und Restzahlung für Großkunden, sowie sofortige Vollzahlung für Privatkunden) mit automatischem Mahnungswesen
Onlineticketbuchung für Kunden mit Sitzplatzwahl über unsere Webseite (Integration von Kreditkartenzahlung bspw. über QPay)
Integration von EC Zahlungsterminals

Ja, ich weiß ... großes Vorhaben für einen Anfänger, aber ich hab theoretisch 5 Jahre dafür Zeit ;) .
Nun meine Frage an euch ... welche Sprache wäre hier für mich Interessant?

Vielen Dank für eure Antworten!

sebix
Beiträge: 82
Registriert: Mo Nov 19, 2012 8:27 pm

Re: Ticketsystem

Beitrag von sebix » So Sep 22, 2013 4:37 pm

[EDIT: Du wirst hier natürlich von jedem eine andere Meinung hören, meine bescheidene ist diese hier:]

Ich würde dir hier zu Python raten, auch wenn es dazu nichts im Wiki gibt. Bücher gibt es dazu allerdings genug :)

Python ist gerade für Einsteiger sehr gut geeinget und bei der steilen Lernkurve sind Ergebnisse früh zu sehen. Die Anwendungsmöglichkeiten sind äußerst vielfältig, du kannst eigentlich alles, was du willst damit umsetzen.
Die einfache Lernbarkeit und der "natürlich" - da intuitiv - aussehende Quellcode sind auch der Grund, warum Python zb. im wissenschaftlichen Bereich so weit verbreitet ist. Es macht in Python einfach die Konstrukte einfach Sinn und sind noch dazu einfach :)

Von EC-Terminal habe ich allerdings keine Ahnung. Einbindung von C-Bibliotheken bzw. C-Code in Python ist überhaupt kein Problem und weit verbreitet.

Benutzeravatar
darksider3
Beiträge: 347
Registriert: Fr Sep 14, 2012 6:26 pm
Wohnort: /dev/sda1
Kontaktdaten:

Re: Ticketsystem

Beitrag von darksider3 » So Sep 22, 2013 9:55 pm

[EDIT: Du wirst hier natürlich von jedem eine andere Meinung hören, meine bescheidene ist diese hier:]

Ich würde dir hier zu Python raten, auch wenn es dazu nichts im Wiki gibt. Bücher gibt es dazu allerdings genug :)

Python ist gerade für Einsteiger sehr gut geeinget und bei der steilen Lernkurve sind Ergebnisse früh zu sehen. Die Anwendungsmöglichkeiten sind äußerst vielfältig, du kannst eigentlich alles, was du willst damit umsetzen.
Die einfache Lernbarkeit und der "natürlich" - da intuitiv - aussehende Quellcode sind auch der Grund, warum Python zb. im wissenschaftlichen Bereich so weit verbreitet ist. Es macht in Python einfach die Konstrukte einfach Sinn und sind noch dazu einfach :)

Von EC-Terminal habe ich allerdings keine Ahnung. Einbindung von C-Bibliotheken bzw. C-Code in Python ist überhaupt kein Problem und weit verbreitet.
Anderer Meinung^^
Ich würde erstmal auf das von dir mitgebrachte wissen in PHP aufbauen wollen. Danach sollte man, wenn es steht, auf Python oder Node.js umsteigen, so wie Sexbix es beschrieben hat.

Schwierig ist bei Python, also reinem Python, die Webserver-Integration. Django(Framework dafür) ist auch nicht gerade das Einfachste...

Das EC-Terminal könnte man lösen, indem man einfach eine HTTP Anfrage(mit Hash usw.) an eine Adresse schickt(Vom Server aus), und dieser dann den nächsten "Mitarbeiter" ruft. Dann kann der Rechner die Adresse,Postleitzahl usw. Prüfen, und schickt in "naher" Zukunft einen Paylink an eine Mail-Adresse.

Dabei wird in einer Datenbank täglich geprüft, ob jemand Überfällig ist, oder halt nicht. Dann wird eine Automatisch Generierte Mahnung an die gegebene Adresse versandt.

*Fast sebix Meinung bin* :P
effizienz ist, wenn ich ein loch bohre und hinterher mein nachbar auch ein bild aufhängen kann... ^^
Meine Homepage und der Microblog von mir :)
Live Life dont let Life Live You!
Am meisten Aktiv in Webentwicklung und PHP im Wiki

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Ticketsystem

Beitrag von cloidnerux » So Sep 22, 2013 10:07 pm

Du willst hier ein Produktivstem aufbauen, dass neben der reinen Ticketverwaltung auch noch Sitzplätze und Transaktionen, sprich Geld verwalten soll. Dazu gehört sehr viel QS, Planung und Vorbereitung und erübrigt deine Frage. Du lernst nicht mal eben schnell eine Sprache und bastelst dir dein System, dass wird in die Hose gehen.
Du wirst mit einer Sprache anfangen, das Programmieren lernen müssen, dazu gehören so dinge wie Datenstrukturen, Algorithmen, Planung, Debugging, Multithreading, Netzwerken uvm. Dies alles benötigst du, um dein System zum laufen zu bekommen und wenn du da bist, dass du das alles verstanden hast, dann bist du wrsl schon bei C/C++, Java oder C# angekommen.
Du musst bedenken, dass Bezahlen über EC Terminals nichts triviales ist. Darüber laufen Kontodaten und Geldbeträge, da muss auch auf Sicherheit geachtet werden. Jede Schwachstelle im System kann fatal sein.
Ich weiß nicht ob, aber ich gehe auch mal davon aus, dass die Banken Anforderungen an jedes System stellt, dass mit EC-Terminals arbeitet.
Zudem hast du auch noch Anwendungssoftware(GUI für die Bediener) zu schreiben und das ist eine elendige Sache. Eine GUI zu bauen ist einfach, aber bis diese dann Sinnvoll und Einfach zu bedienen ist, geht einiges an Zeit ins Land.

Alles in allem wirst du meiner Meinung nach weder mit Python, PHP oder irgendeiner anderen "Standard"-Scriptsprache zum Ziel kommen, auch nicht mehr in diesem Jahr und mit weit mehr Aufwand als du es dir bisher vorstellen kannst. Es ist machbar, aber nur wenn du dich dahinterklemmst und das Programmieren an sich sowie die notwendige Qualitätssicherung erlernst. Programmieren würde ich es dann in C/C++, Java oder C#, je nach dem was dir bis dahin am besten gefällt.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Ticketsystem

Beitrag von Xin » Mo Sep 23, 2013 10:15 am

ontom hat geschrieben:Hallo Leute!

Ich (17) bin absoluter Anfänger was Programmieren betrifft ... (meine Fähigkeiten beschränken sich auf ein bisschen PHP was man ja nicht gerade zum Programmieren zählen kann) bin im Web auf diesen Artikel gestoßen http://www.proggen.org/doku.php?id=start:language und hab mich sofort bei euch registriert.
PHP ist durchaus programmieren, da PHP durchaus die Steuerung des Programmflusses zulässt. Man kann mit PHP also Probleme lösen.
PHP ist nur kein schönes programmieren. Man kann sich mit PHP auch einfach mehr Probleme schaffen, als man ursprünglich lösen wollte. ^^

Das erste Wiki, dass ich vor ca. 10 Jahren schrieb, habe ich in PHP geschrieben. Es funktionierte. Ich wusste nur nicht so genau warum. ;-)
Also konnte ich auch nicht garantieren, dass das Wiki im echten Leben funktioniert.
Darum landete das Projekt in der Tonne und wurde nie eingesetzt. Ich würde ein größeres Projekt niemals mehr in PHP starten.
ontom hat geschrieben: Ich möchte gerne ein Programm schreiben dass im Großen und Ganzen die Funktion eines Ticketbuchsystems hat.
Hintergrund:
Bin neben der Schule im Vorstand eines "Theatervereins" (ja, bin wirklich etwas jung dafür ;) ) ... der im Jahr bei ca. 40 Vorstellungen insgesamt 80.000 Tickets verkauft.
80000 / 40 = 2000 Sitzplätze pro Vorstellung. Nicht schlecht für einen Verein. ^^

Bei 80000 Tickets darf man überlegen, ob man vielleicht etwas Professionelles einsetzt? Nichts für ungut, aber 17jährige, die von sich behaupten noch nicht wirklich programmiert zu haben, sollten sich bei 80000 Aufgaben von denen möglichst keine schief gehen soll, definitiv Hilfe holen.
ontom hat geschrieben:Das bisher eingesetzte Programm ist einfach zu unflexibel und eine ideale Lösung für Anzahlung und Restzahlung, konnten wir bis jetzt nicht finden. Im Gebäude gibt es nur einen Saal der ungefähr 2.000 Sitzplätze umfasst.
Wer lesen kann, ist klar im Vorteil, denn er muss nicht rechnen. ^^
ontom hat geschrieben:Was soll das Programm grob können:
Ticketbuchung vor Ort (d.h. von 5 Mitarbeitern die jeweils an einem PC arbeiten | Server natürlich vorhanden)
Rechnungsabwicklung (Anzahlung und Restzahlung für Großkunden, sowie sofortige Vollzahlung für Privatkunden) mit automatischem Mahnungswesen
Onlineticketbuchung für Kunden mit Sitzplatzwahl über unsere Webseite (Integration von Kreditkartenzahlung bspw. über QPay)
Integration von EC Zahlungsterminals
Das ist kein kleines Projekt.
ontom hat geschrieben:Ja, ich weiß ... großes Vorhaben für einen Anfänger, aber ich hab theoretisch 5 Jahre dafür Zeit ;) .
Theoretisch?
Erfahrungsgemäß bedeutet theoretisch Zeit haben, dass irgendwann jemand nervös wird und Resultate sehen will.
ontom hat geschrieben:Nun meine Frage an euch ... welche Sprache wäre hier für mich Interessant?
Ich habe mal ein Ticketsystem mit PHP und JavaScript geschrieben, bei dem man sich die Sitzplätze aussuchen konnte.

PHP ist eine fehleranfällige Sprache, was im Prinzip nur halb so wild wäre, wenn die Fehler nicht erst zur Laufzeit - also beim Kundeneinsatz - auffallen würden. Jeder Kunde macht irgendwelchen Mist, den man selbst nicht abgetestet hat, weil man sich nicht vorstellen konnte, dass jemand das Programm so benutzen würde.

Du musst Dich in Bezahlsysteme einlesen, Du musst Briefe bereit stellen (Ticket, Mahnung), was ich wohl am ehesten in PDF versuchen würde. Das alles geht mit PHP.
In anderen Sprachen hättest Du diese Schnittstellen sicherlich auch, trotzdem liefert Dir PHP hier vermutlich das einfachste Package - aber: Die Sprache ist eben recht fehlerintolerant.

Direkte Alternativen sind Java und C#. C# ist hierbei die fortschrittlichste Sprache. Ob das ganze mit Mono (C#-Framework für Nicht-Windows-Systeme) läuft weiß ich nicht. Also wäre ein Windows-System erforderlich. Windowsserver sind nicht außergewöhnlich, aber aus gutem Grund auch nicht die Regel. Ein Windows-System, dass durchgehend im Netz steht braucht regelmäßige Updates, einen zuverlässigen Virenkiller und das eine oder andere Menschenopfer, um die Götter gnädig zu stimmen. Java läuft auf allen Systemen, ist aber nicht unbedingt eine Zukunftstechnologie, sondern eher eine Gegenwartstechnologie im Sinne "Ist auch noch da.". Wenn Du in 5 Jahren an den Start gehen willst, könnte aus "Ist auch noch da" ein "Müsste man mal durch was mit Zukunft ersetzen" geworden sein.

Du könntest Dich mit Ruby oder Python auseinander setzen. Ich setze für die Zukunft von proggen.org inzwischen auf C++ (alles hier läuft bisher mit PHP), was aber bei einem Anfänger bedeuten würde, dass Du die 5 Jahre auch dafür einplanen könntest, damit das klappt.

Schau Dir in dem Artikel nochmal "Kriterium I: Du als Programmierer" an, die Du für Dich bestimmen musst. Du musst ein Problem lösen - aber willst Du das? Und wenn ja: wie und warum? Und sei ehrlich, das Projekt ist groß, braucht Planung und das klappt nur, wenn Du wirklich keine Luftschlösser baust.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

ontom
Beiträge: 2
Registriert: So Sep 22, 2013 2:41 pm

Re: Ticketsystem

Beitrag von ontom » Mo Sep 23, 2013 1:59 pm

Erstmal ... vielen, vielen Dank für eure ausführlichen Antworten :)

@sebix, vielen danke für deinen Rat! Python Buch bereits gestern bei Amazon bestellt. ;)
@darksider3, vielen Dank auch für deine Überlegungen mit dem EC Terminal.
cloidnerux hat geschrieben:Du willst hier ein Produktivstem aufbauen, dass neben der reinen Ticketverwaltung auch noch Sitzplätze und Transaktionen, sprich Geld verwalten soll. Dazu gehört sehr viel QS, Planung und Vorbereitung und erübrigt deine Frage. Du lernst nicht mal eben schnell eine Sprache und bastelst dir dein System, dass wird in die Hose gehen. .
Hatte schon Angst ich bekomme gar keine Kritik ;)

Ja ich weiß, es ist ein großes Vorhaben und auch eine "heikle" Angelegenheit was die Sicherheit betrifft ... aber ich will es auf jeden Fall selbst schaffen und bin auch bereit dafür sämtliche Freizeit zu opfern. Bzgl. Sicherheit bleiben mir auf 4 Jahre gerechnet dann immer noch 35.000 € die ich bspw. in Überprüfungen bzw. Verbesserung des Programms durch Profis stecken könnte, aber machen will ich es selbst ;)

Insbesondere daher dass wir im letzten Jahr eine fertige Software für 22.000 € geordert haben die einfach umständlicher als umständlich für unsere Zwecke ist (speziell bei unseren "Spezialdingen" wie Anzahlung (sprich 30%) innerhalb von 14 Tagen fällig und Restzahlung 30 Tage vor Vorstellung (die teilweise 2 Jahre in der Zukunft bei Bestellung liegen kann). Werden diese Fristen nicht eingehalten --> soll eine automatische Zahlungserinnerung gesendet werden und der Kunde auf einer Liste landen. Hier lag das Problem darin, dass wir mit dieser Software nicht zwischen Privat und Geschäftskunde unterscheiden konnten und somit die vom Programm automatisch erstellte Rechnung zuerst löschen und anschließend neu erstellen mussten. Fehler natürlich vorhersehbar. Wenn nun die Plätze vom Kunden storniert werden, müssen die zwei händisch erstellten Rechnungen vom Mitarbeiter gelöscht werden und die Plätze auch manuell ausgetragen werden (da ja keine Verbindung mehr zwischen Plätze und Rechnung besteht). Da aber ein Anwender auch Fehler macht, kam es auch nicht selten vor dass bspw. nur die Rechnung gelöscht aber nicht die Plätze ausgetragen wurden die dann im Endeffekt leer blieben und das sind dann da mal da 1.000 € und hier mal 500 € ... dasselbe Problem gibt es zwar bei uns schon seit Einsatz von PCs (2 Vorgänger) aber ich will da einfach was ändern. Es summiert sich halt dann auch auf ein Jahr gerechnet doch. Und das ist nur ein Beispiel der Probleme mit unserer bisherigen nicht an uns angepassten Software.

Die Tickets und Buchungsbestätigungen musste ich immer mit "Crystal Reports" gestalten.
cloidnerux hat geschrieben: Ich weiß nicht ob, aber ich gehe auch mal davon aus, dass die Banken Anforderungen an jedes System stellt, dass mit EC-Terminals arbeitet.
Die EC Terminals machen mir eher weniger Sorgen ... lt. Bank müssen hier nur Steuersignale an das Gerät gesendet werden. Wo ich eher Bedenken habe ist die Schnittstelle zu QPay (Onlinezahlung). Die haben zwar auch keine Anforderungen und eine recht gute Integrationsanleitung für diverse Sprachen, trotzdem hab ich einfach Sicherheitsbedenken.
cloidnerux hat geschrieben: Alles in allem wirst du meiner Meinung nach weder mit Python, PHP oder irgendeiner anderen "Standard"-Scriptsprache zum Ziel kommen, auch nicht mehr in diesem Jahr und mit weit mehr Aufwand als du es dir bisher vorstellen kannst. Es ist machbar, aber nur wenn du dich dahinterklemmst und das Programmieren an sich sowie die notwendige Qualitätssicherung erlernst. Programmieren würde ich es dann in C/C++, Java oder C#, je nach dem was dir bis dahin am besten gefällt.
Ich weiß nur nicht wo ich anfangen soll ... damit ich dann da selbst beurteilen kann ;)
Xin hat geschrieben: Ich würde ein größeres Projekt niemals mehr in PHP starten.
Ich war sogar der Meinung dass es gar nicht möglich wäre mein Projekt in PHP zur realisieren.
Xin hat geschrieben: 80000 / 40 = 2000 Sitzplätze pro Vorstellung. Nicht schlecht für einen Verein. ^^
Ja, wir sind eigentlich immer ausverkauft. Was ich vorhin aber vergessen habe dazuzuschreiben ... wir haben immer 5 Jahre Pause zwischen den "Vorstellungsjahren".
Xin hat geschrieben: Bei 80000 Tickets darf man überlegen, ob man vielleicht etwas Professionelles einsetzt? Nichts für ungut, aber 17jährige, die von sich behaupten noch nicht wirklich programmiert zu haben, sollten sich bei 80000 Aufgaben von denen möglichst keine schief gehen soll, definitiv Hilfe holen.
Ja, da hast du recht ... wie oben geschrieben bin ich auch gerne bereit für Kontrolle Geld auszugeben. Da jeder 2. Platz durchschnittlich einmal storniert oder umgebucht wird, werden es sogar 120.000 Aufgaben ;)
Xin hat geschrieben: Theoretisch?
Erfahrungsgemäß bedeutet theoretisch Zeit haben, dass irgendwann jemand nervös wird und Resultate sehen will.
Der jemand bin in diesem Fall glücklicherweise nur ich. ;) Den anderen Vorstandsmitgliedern ist es nämlich egal wie ich das mit dem Ticketverkauf bzw. Einlass funktioniert, Hauptsache es funktioniert und möglichst ohne Verluste verursacht durch Mitarbeiter die Bedienungsfehler begehen.
Xin hat geschrieben: PHP ist eine fehleranfällige Sprache, was im Prinzip nur halb so wild wäre, wenn die Fehler nicht erst zur Laufzeit - also beim Kundeneinsatz - auffallen würden. Jeder Kunde macht irgendwelchen Mist, den man selbst nicht abgetestet hat, weil man sich nicht vorstellen konnte, dass jemand das Programm so benutzen würde.
Das hast du wirklich recht … hatte teilweise bis jetzt schon Fehler durch Kunden bzw. Mitarbeiter die ich mir nicht ausmalen hätte können. ;)
Xin hat geschrieben: Also wäre ein Windows-System erforderlich. Windowsserver sind nicht außergewöhnlich, aber aus gutem Grund auch nicht die Regel. Ein Windows-System, dass durchgehend im Netz steht braucht regelmäßige Updates, einen zuverlässigen Virenkiller und das eine oder andere Menschenopfer, um die Götter gnädig zu stimmen.
Hab bereits eine aktuelle VMWare Umgebung mit Windows Servern aufgebaut und seit letztem Jahr bereits im Einsatz ... wär natürlich umso besser wenn man diese weiterhin einsetzen könnte.
Xin hat geschrieben: Java läuft auf allen Systemen, ist aber nicht unbedingt eine Zukunftstechnologie, sondern eher eine Gegenwartstechnologie im Sinne "Ist auch noch da.". Wenn Du in 5 Jahren an den Start gehen willst, könnte aus "Ist auch noch da" ein "Müsste man mal durch was mit Zukunft ersetzen" geworden sein.
:D okay ... dann lassen wir das mal besser weg
Xin hat geschrieben: Schau Dir in dem Artikel nochmal "Kriterium I: Du als Programmierer" an, die Du für Dich bestimmen musst. Du musst ein Problem lösen - aber willst Du das? Und wenn ja: wie und warum? Und sei ehrlich, das Projekt ist groß, braucht Planung und das klappt nur, wenn Du wirklich keine Luftschlösser baust.
Danke nochmal an alle für eure ehrlichen und ausführlichen Antworten ... bin für jede Hilfe und Information dankbar! :)

Antworten