Středoškolská odborná činnost 2007/2008 Obor 18 – Informatika
Pokladní systém
Autor: Radim Laga Gymnázium JAK Komenského 169 688 31, Uherský Brod Sexta
Uherský Brod, 2008 Zlínský Kraj
Prohlašuji tímto, že jsem soutěžní práci vypracoval samostatně a uvedl v seznamu literatury veškerou použitou literaturu a další informační zdroje včetně internetu.
V Uherském Brodě dne 17.3.2008 vlastnoruční podpis autora
Obsah Seznam použité literatury
3
1 Úvod
1
2 Hardware 2.1 Čtečka čárových kódů VIRTUOS MT-9062 2.1.1 Typy čárových kódů . . . . . . . . . 2.2 Použité čárové kódy . . . . . . . . . . . . . 2.3 Termální tiskárna EPSON TM–T88II . . .
. . . .
1 1 2 2 3
3 Software 3.1 Popis funkce programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Popis primárního jádra programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 4 4
4 Závěr
7
5 Ukázky použití programu
8
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
1
Úvod
Přibližně před rokem jsem byl postaven před problém, zda bych dokázal vytvořit pokladní systém pro restaurační zařízení. Protože již čtvrtým rokem programuji v Delphi, rozhodl jsem se celý program napsat v tomto prostředí. Přestože je tato technologie relativně zastaralá, stále se jeví dostatečně výkoná pro menší aplikace. Byly dány tyto požadavky: • Zákazník bude mít svou kartu • Obsluha bude mít svou kartu • Vstup a ovládání programu přes čárové kódy • Výstup na termotiskárnu • Záznam všech účtů a provizí k vyplacení • Možnost editace položek ve „skladuÿ1 První verze tohoto programu se objevila za pár měsíců intenzivního programování. Obsahovala přibližně 4000 řádků kódu a byla pomalá a poněkud nestabilní. Téměř okamžitě jsem začal psát důmyslnější, flexibilnější a hlavně jednoduší algoritmus. Přibližně za 3 měsíce jsem dokončil druhou verzi tohoto programu. Tato verze je dlouhá pouhých 1200 řádků, poskytuje lepší uživatelské prostředí a bezproblémový provoz.
2
Hardware
2.1
Čtečka čárových kódů VIRTUOS MT-9062
Výše zmiňovaná CCD čtečka používá jako zdroj světla LED diody, takže její životnost (vzhledem k LED diodám) je téměř neomezená. Přesto však po hardwarové stránce nevyhovuje její tlačítko, které slouží k aktivaci čtení kódu. Časem se stává méně citlivé, až nakonec dojde k jeho kompletní nefunkčnosti. Tuto čtečku v České republice distribuje firma Virtuos [5].
Obrázek 1: CCD čtečka čárového kódu MT-9062 Tato čtečka [3] se vyrábí ve dvou typech provedení. Tyto typy se od sebe liší způsobem komunikace s počítačem. První verze čtečky používá klasický sériový port (RS232), kdežto druhá verze emuluje funkci klávesnice na jejím portu (PS/2 nebo DIN). Vybral jsem si typ pro sériovou komunikaci skrz RS232, aby samotná klávesnice mohla být používána k jiným účelům. Pokud by bylo třeba čtečku připojit na USB port, tak by stačilo mezi počítačem a čtečkou vložit převodník U SB <=> RS232, který se ve Windows objeví jako sériový port RS232. Tento typ čtečky, ihned po dekódování patřičného čárového kódu, odešle jeho číselnou hodnotu přes sériový port.
1 aktuální
seznam, množství a cen položek
1
2.1.1
Typy čárových kódů
Čárový kód je prostředek pro automatizovaný sběr dat. Je tvořen černými vytištěnými pruhy (u některých novějších verzích kódu mozaikou) definované šířky, umožňující přečtení pomocí čteček či skenerů. Podle způsobu, jakým se konkrétní znak kóduje do skupiny pruhů se kódy dělí do skupin. Nejpoužívanější skupiny kódů jsou: • Code 2/5 (rok 1968) • Codabar (rok 1972) • UPC (rok 1973) • Code 3/9 (rok 1974) • EAN (rok 1976) • Code 11 (rok 1978) • Code 128 (rok 1981) • Code 93 (rok 1982) Pro tento systém jsem vybral kódy typu EAN, konkrétně typ EAN-13. Tyto kódy jsou používány po celém světě, navíc svými rozměry perfektně vyhovují pro tisk na používané karty.
Obrázek 2: Ukázka tří typů čárového kódu se stejným číslem
2.2
Použité čárové kódy
Obrázek 3: Grafické zpracování používaných karet Výše uvedený obrázek je ukázka jak vypadají karty pro obsluhu a pro administrátora. Mají velikost 80x45mm. Na vrchní straně je barevný potisk (obsluha, zákazník, admin) a na druhé straně je černobílý čárkový kód pro danou kartu. Tyto karty jsou nakonec zataveny do plastové fólie a nařezány na potřebné rozměry. Po této úpravě se stávají vysoce trvanlivými kartami pro náročné podmínky. Karty pro zákazníky mají jedinečné logo společnosti na vrchní straně, které též obsahuje otevírací dobu a název příslušného podniku. 2
2.3
Termální tiskárna EPSON TM–T88II
Pro pokladní systémy se nejčastěji používají dva typy tiskáren – jehličkové nebo termální tiskárny. Každá z nich má své výhody a nevýhody. Jehličkové tiskárny poskytují velký výkon, mají delší životnost a jejich případná oprava není tak drahá. Avšak při tisku vydávají značné množství hluku a jejich pořizovací cena je mnohdy dvakrát vyšší než u termálních tiskáren. Naopak termální tiskárny se podle typu tisku rozdělují do dvou skupin: • přímé – tisková hlava je tvořena malými odpory s malou tepelnou setrvačností – výhodou je, že jediný spotřební materiál je papír, nevýhodou je vyšší cena papíru a malá stabilita tisku, často se používají v supermarketech, rychle a potichu tisknou. Tato metoda tisku se používala ve faxech (dnes již převážně nahrazeno laserovým tiskem). • termosublimační – jedná se vlastně o sublimační tisk, princip je stejný jako u přímého termálního tisku, jen mezi hlavou a papírem je speciální termotransferová fólie, ze které se barva teplem přenese na potiskované medium, kterým může být běžný papír. Tento typ tisku lze použít i pro více barev, proto se nejčastěji používá pro potisk štítků, karet nebo při tisku fotografií ve vysokém rozližení. Primárním problémem termálních tiskáren je omezená životnost tiskové hlavy. Vzhledem k tomu, že nová tisková hlava stojí přes polovinu ceny nové tiskárny, je lepší koupit přímo novou funkční tiskárnu. Současné pokladní tiskárny jsou již vybavovány automatickými střihači papíru, takže jediné o co se obsluha stará je podání vytištěného účtu zákazníkovi. Pro použití v tomto pokladním systému jsem se zaměřil především na množství hluku vydávaného tiskárnou. Proto jsem použil termální tiskárnu TM–T88II od firmy Epson [4].
Obrázek 4: Termální tiskárna EPSON TM–T88II v činnosti
3
3 3.1
Software Popis funkce programu
Program je napsán ve vývojovém prostředí Delphi 7. Práce s databází a výstup na tiskárnu je pomocí defaultních komponent Delphi; přístup na sériový port je realizován pomocí rozšiřující komponenty Async 32 [2]. Pro přístup k databázi je použito jádro BDE (Borland Database Engine). Přes BDE má programátor možnost přistupovat k celé řadě databází. Pomocí tohoto jádra může programátor přistupovat k mnoha typům databází naprosto jednoduše. Ovladače BDE „převedouÿ databázovou operaci na správnou realizaci pro konkrétní databázový systém. Pro přístup k databázi jsem si zvolil jazyk SQL, protože jsem ho dříve používal ve spojení s databázemi MySQL na internetových stránkách. Funkce programu byly následujíci: Přijde nový zákazník, dostane klientskou kartu (po dobu pobytu v pohostinném zařízení). Pokud si chce objednat nějakou položku z nabídky, obsluha si půjčí jeho kartu. Pomocí čtečky první načte svou kartu (OBSLUHA č. n), poté kartu zákazníka. Dále načte položky pomocí čárového kódu, který mají vedle počítače (obvykle několik A4 plných položek s čárovými kódy – viz obrázek 9). Nakonec se obsluha odhlásí ze systému a nebo vytiskne účet zákazníkovi. Všechny příkazy, jak k přidávání položek nebo k ovládání programu (tisk účtu, odhlášení) probíhá přes čárové kódy. Je to mnohem rychlejší, nežli hledat příslušné tlačítka na klávesnici. Pokud nastane situace, že obsluha systému udělá chybu a zákazníkovi načte jinší položku, tak může poslední operaci vrátit pomocí tlačítka ESC.
3.2
Popis primárního jádra programu NAÈTE ID
NE
NE
ANO
ADMIN?
POLOKA?
ANO
NE
KARTA NA PROVIZE ?
ANO
PØÍKAZY
ANO
NE
ADMIN PRÁVA
ANO
PØÍKAZ?
ZÁKAZNÍK PØIHLÁŠEN ?
OBSLUHA PØIHLÁŠENA ?
NE
ID!=<2,3>
NE
ANO
ID KARTY
ID=<2,3>
VYTVOØENÍ ÚÈTU ZÁKAZNÍKOVI
PROVIZE OK
OBSLUHA OK
PØIDÁNÍ POLOKY NA ÚÈET ANO
PROVIZE Z POLOKY ?
PØIDÁNÍ POLOKY K PROVIZÍM
KONEC
Obrázek 5: Vývojový diagram hlavní části celého programu
4
NE
Celý pokladní systém používá celkem 4 tabulky v databázi: • stock – seznam, množství a cena položek • accounts – seznam „otevřenýchÿ účtů • bonus – provize pro obsluhu • case – zde jsou uloženy jednotlivé tržby za každého zákazníka Komponenta pro obsluhu sériového portu je nastavena tak, aby se při každém dokončení přijetí datového balíčku spustilo přerušení s následujícím zpracování: procedure TForm1.VaComm1RxBuf(Sender: TObject; Data: PVaData; Count: Integer); var num_B, i: integer; begin num_B:=VaBuffer1.BufUsed; VaBuffer1.Read(prijem,num_B); VaBuffer1.Clear; cislo:=’’; inc(n); for i:=1 to num_B-3 do // prevede data z pole na retezec begin cislo:=cislo+prijem[i]; end; Edit4.Text:=cislo; if n=2 then // pri druhem prijmu dat pokracovat begin Dalsi_zpracovani; n:=0; end; end; Procedura Dalsi zpracovani odpovídá algoritmu na obrázku 5.
5
4
Závěr
Po celkových sedmi měsících vývoje softwaru, jeho ladění a úprav jsem nakonec dospěl k použitelnému výsledku. Současné verze 2.4 běží v jednom nejmenovaném baru již rok. Zatím nenastaly žádné komplikace, zamrzání softwaru nebo problémy se stabilitou databáze. Přestože je program poměrně jednoduchý (vzhledem k jeho délce) tak dosahuje velkých potenciálů při velké denní zátěži. Jediná věc, která se zatím pokazila, bylo nekvalitní tlačítko na čtečce čárových kódů, které časté mačkání příliš nevydrželo. Systém je velmi pohodlný na ovládání skrz čárové kódy. Vstup do administrace aplikace je chráněn kartou ADMIN a také heslem, které je třeba zadat po načtení karty, jinak vás systém nepustí k administraci. Pokud je člověk přihlášen jako administrátor, může měnit množství položek na „skladěÿ, jejich ceny a názvy. Nechybí ani položka pro změnu hesla nebo tlačítko na vytištění celkové tržby za celý den. Administrativní rozhraní je už ovládáno přes klávesnici. Vytištěné účty pro zákazníky jsou v hlavičce vybaveny grafickým logem firmy (v monochromatickém rozlišení) a kontaktem na ni, popř. další volitelné položky. Toto logo lze upravit jako „logo.bmpÿ soubor v kořenovém adresáři programu. Na přiloženém CD je instalační soubor pro vyzkoušení demo verze.
6
5
Ukázky použití programu
Obrázek 6: Vzhled programu ihned po spuštění
Obrázek 7: Administrátorské rozhraní pro správu celého systému
7
Obrázek 8: Otevřený účet s účtem pro vyplácení provizí obsluze
Obrázek 9: Ukázka části seznamu položek s jejich čárovými kódy
8
Seznam použité literatury [1] PÍSEK, Slavoj. Delphi : praktické příklady. Praha : Grada Publishing, 2002. 220 s. ISBN 80–247–0323–8. [2] VYKOPAL, Jan. Sériové rozhraní URL: hhttp://builder.cz/serial85.htmli
v
Delphi
[3] EZ One Shot CCD scanner : programovací URL: hhttp://www.virtuos.cz/download/mt9062.pdfi
[online]. příručka
www.builder.cz,
5.2.2007.
Virtuos,
2.11.2006.
[online].
[4] TM-T88II/T88III Technical reference guide [online]. Epson, 3.1.2007. URL: hhttp://www.epson.comi [5] Virtuos [online], 18.3.2008. URL: hhttp://www.virtuos.czi
9