AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fahrkartenautomat

Ein Thema von b2info · begonnen am 17. Mär 2009 · letzter Beitrag vom 18. Mär 2009
Antwort Antwort
b2info

Registriert seit: 17. Mär 2009
Ort: Hepstedt
1 Beiträge
 
#1

Fahrkartenautomat

  Alt 17. Mär 2009, 21:27
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
Angehängte Dateien
Dateityp: exe project2_157.exe (384,5 KB, 34x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Fahrkartenautomat

  Alt 17. Mär 2009, 21:33
Addiere erst das eingezahlte Geld zum Bestand hinzu und dann ziehst du das Rückgeld wieder ab.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fahrkartenautomat

  Alt 17. Mär 2009, 21:35
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
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#4

Re: Fahrkartenautomat

  Alt 17. Mär 2009, 21:37
hiho
machs halt mit schleifen

Delphi-Quellcode:
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;
...
und später kannst du dann Wechselgeld neuberechnen

wechselgeld:=100*strtoint(edit100.text)+50*stroint(edit50.text)...
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Fahrkartenautomat

  Alt 18. Mär 2009, 08:41
Zitat von blink182:
hiho
machs halt mit schleifen

Delphi-Quellcode:
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;
...
und später kannst du dann Wechselgeld neuberechnen

wechselgeld:=100*strtoint(edit100.text)+50*stroint(edit50.text)...
Guten Morgen,

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 div benutzen um die Anzahl einer gewissen Sorte an Scheinen/Münzen zu ermitteln.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Fahrkartenautomat

  Alt 18. Mär 2009, 09:19
Zitat von blink182:
hiho
machs halt mit schleifen

Delphi-Quellcode:
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;
...
und später kannst du dann Wechselgeld neuberechnen

wechselgeld:=100*strtoint(edit100.text)+50*stroint(edit50.text)...
Man könnte diese Struktur aber eventuell abwandeln, indem man in die while Schleifen erweitert zu
Delphi-Quellcode:
while (rueckgeld>=100) and (Anzahl_100ter > 0) do
...
Wenn alle Schleifen so erwitert werden, sollte er automatisch fehlende große Scheine durch kleinere ersetzen.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Fahrkartenautomat

  Alt 18. Mär 2009, 09:34
.. eigentlich wollte ich ja von den ganzen while Schleifen Gedöns weg.

Im Prinzip könnte es doch so laufen:

Delphi-Quellcode:
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;
Wenn mann noch die Schein und Münzwerte (und eventuell deren Anzahl) in ein Array packt
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:
  TGeld = record
    wert : Integer;
    anzahl : Integer;
  end;
und ein Array Geldspeicher

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
Klaus
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Fahrkartenautomat

  Alt 18. Mär 2009, 10:08
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz