![]() |
Fahrkartenautomat
Liste der Anhänge anzeigen (Anzahl: 1)
Ich muss in der Schule einen Fahrkartenautomaten programmieren
ich erklärs euch ma und zum schluss meine frage 3 Buttons für hamburg berlin münchen 8 Buttons für alle scheine bis 100 und 2, 1, 50 cent Stücke das ist halt das Portmonee Funktionsweise: Zuerst Stadt auswählen dann wird der betrag ins edit feld geladen dann aus dem portmonee geld anklicken wird dann ebenfalls je nach klicks in ein edit feld geladen Dann klickt man auf einzahlen bei dem ´´richtigen´´ geld spuckt er einen das rückgeld aus (edit feld) sonst steht da halt das man zu wenig eingezahlt hat und zu allerletzt zeigt er den wechselgeldbestand an Startwert 2500€ dann hab ich dort stehen Scheine Bestand(Anzahl) im edit feld 100 10 50 10 20 20 10 30 5 30 2 30 1 50 0,50 80 Bis hierhin hab ich schon alles programmiert & mich durchgekämpft durchs ausprobieren Meine Frage ist nun, wie schaffe ich es, wenn er das rückgeld ausspuckt das der bestand der scheine & Münzen weniger oder mehr wird, je nach dem, weil es wird ja auch geld eingezahlt im attachment ist nochma die delphi datei danke schonma im vorraus |
Re: Fahrkartenautomat
Addiere erst das eingezahlte Geld zum Bestand hinzu und dann ziehst du das Rückgeld wieder ab.
|
Re: Fahrkartenautomat
Also eigentlich musst du für die eingezahlten Scheine und Geldstücke eigentlich nur die Buttonklicks registrieren, was du ja eigentlich schon machst, wenn du das Geld einzahlst. Also druck auf 100€-Schein und die Anzahl 100€-Scheine im Automat steigt.
Beim Auszahlen das abnehmen des Geldes zu realisieren ist schon schwieriger, weil man ja 100€ unterschiedlich zusammen setzen kann: z.B. 1mal 100, 2mal 50, 5mal 30, ... Hier müsstest du vieleicht mehr Informationen geben, wie das zusammen gesetzt werden soll. Soll z.B. Ausweichzahlungen einprogrammiert werden, was wenn keine 20iger mehr da sind oder oder oder |
Re: Fahrkartenautomat
hiho
machs halt mit schleifen
Delphi-Quellcode:
und später kannst du dann Wechselgeld neuberechnen
while rueckgeld >=100 do
begin edit100.text:=inttostr(strtoint(edit100)-1); rueckgeld:=rueckgeld-100; end while rueckgeld >=50 do begin edit50.text:=inttostr(strtoint(edit50)-1); rueckgeld:=rueckgeld-50; end; ...
Delphi-Quellcode:
wechselgeld:=100*strtoint(edit100.text)+50*stroint(edit50.text)...
|
Re: Fahrkartenautomat
Zitat:
mit diesem Beispiel erschlägst Du nicht das Problem (hat Matze schon gesagt) wenn von dem Wechselgeld nicht mehr genügend Schein/Münzen einer Sorte vorhanden sind. Dann müßen die "nicht vorhandenen" großen Scheine/Münzen durch kleinere ersetzt werden. Auch kann man anstelle der While Schleifen den Operator ![]() Grüße Klaus |
Re: Fahrkartenautomat
Zitat:
Delphi-Quellcode:
Wenn alle Schleifen so erwitert werden, sollte er automatisch fehlende große Scheine durch kleinere ersetzen.
while (rueckgeld>=100) and (Anzahl_100ter > 0) do
... |
Re: Fahrkartenautomat
.. eigentlich wollte ich ja von den ganzen while Schleifen Gedöns weg.
Im Prinzip könnte es doch so laufen:
Delphi-Quellcode:
Wenn mann noch die Schein und Münzwerte (und eventuell deren Anzahl) in ein Array packt
Rückgeld = gezahltesGeld - Fahrkarte
While Rückgeld > 0 do begin 100erRück := Rückgeld div 100; if 100erRück > 100erVorhaden then begin Rückgeld := Rückgeld - (100erVorhanden * 100); end else begin 100erVorhanden := 100erVorhanden - 100erRück; Rückgeld := Rückgeld - (100erVorhanden * 100) end; ... 50er ... 20er ... 10er end; kann man durch das Array laufen und kann sich die lange Abfolge von Abprüfugen sparen. So könnte man ein Record Geld erstellen
Delphi-Quellcode:
und ein Array Geldspeicher
TGeld = record
wert : Integer; anzahl : Integer; end;
Delphi-Quellcode:
GeldSpeicher = Array [0..10] of TGeld;
Delphi-Quellcode:
Rückgeld = gezahltesGeld - Fahrkarte;
for i:=0 to length(Geldspeicher) -1 do if Rückgeld > 0 then begin tempRück := Rückgeld div Geldspeicher[i].wert; if tempRück > Geldspeicher[i].anzahl then begin Rückgeld := Rückgeld - (Geldspeicher[i].anzahl * Geldspeicher[i].wert); Geldspeicher[i].anzahl:=0; end else begin Geldspeicher[i].anzahl := Geldspeicher[i].anzahl - tempRück; Rückgeld := Rückgeld - (tempRück * Geldspeicher[i].wert) end; end; Grüße Klaus |
Re: Fahrkartenautomat
Ich denke er hat damit 2 gangare Wege. Worüber er sich noch Gedanken machen muss, wäre, was passieren soll, wenn mehr Rückgeld gezahlt werden soll als im Geldspeicher vorhanden ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz