Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze
Radek Šubrt Návrh, vývoj a implementace evidenčního systému pro firmu Autodoplňky Ondřej Horniecký PROJEKT Bakalářská práce
2007
Prohlášení: Prohlašuji, že jsem bakalářskou práci na téma „Návrh, vývoj a implementace evidenčního systému pro firmu autodoplňky Ondřej Horniecký“ zpracoval samostatně a použil pouze zdroje, které cituji a uvádím v seznamu použité literatury. V Praze dne 2.1.2008
Poděkování: Děkuji vedoucí práce PhDr. Kateřině Julišové za odborné rady, připomínky a konzultace při vypracování bakalářské práce.
ANOTACE Cílem této bakalářské práce je návrh, vývoj a implementace jednoduché aplikace pro sledování skladového stavu ve firmě Autodoplňky Ondřej Horniecký, jejíž sklad se nachází ve stejném místě jako prodejna a zboží není evidováno rozdílně mezi skladem a prodejnou. Aplikace by dále měla obsahovat základní funkce spojené s procesy probíhajícími v prodejně, jako je pokladna, vyhledávání zboží a základní statistiky prodeje. The aim of this bachelor's thesis is design, development and implementation of a simple application for monitoring of stock balance in the company Autodoplňky Ondřej Horniecký. The stock is located at the same place like company and there is no difference between registration of commodities in the stock and in the shop. The application should also contains basic functions associated with processes which running in the shop - like cash register, commodities searching and basic sale statistics.
1.
ÚVOD
8
2.
ANALÝZA FIRMY
9
3.
NÁVRH
10
3.1. NÁVRH PARAMETRŮ EVIDOVANÉHO ZBOŽÍ 3.2. NÁVRH FUNKCÍ - ANALÝZA PROCESŮ PŘIDÁVÁNÍ ZBOŽÍ VYHLEDÁVÁNÍ EVIDOVANÉHO ZBOŽÍ POKLADNA STATISTIKY STAVY ZBOŽÍ EDITACE PARAMETRŮ ZBOŽÍ ODOLNOST VŮČI NÁHODNÝM A LOGICKY CHYBNÝM HODNOTÁM
10 12 12 12 12 13 13 13 13
4.
VÝVOJ
14
5.
PREZENTACE PROGRAMU EVID V. 3.0
15
6.
UŽIVATELSKÁ PŘÍRUČKA PROGRAMU EVID V. 3.0 – IMPLEMENTACE PROGRAMU DO FIRMY
18
6.1. KARTA VYHLEDAT ZBOŽÍ (OBR.1) 6.2. POKLADNA (OBR. 1) 6.3. PŘIDAT NOVÉ ZBOŽÍ (OBR. 2) 6.4. STATISTIKY (OBR. 3) 6.5. STAVY ZBOŽÍ (OBR. 4) 6.6. ZMĚNA PARAMETRŮ (OBR. 5) 6.7. OBECNÁ UPOZORNĚNÍ: 6.8. SEZNAM CHYBOVÝCH HLÁŠENÍ A DIALOGŮ PROGRAMU 6.9. SITUACE, KTERÉ NEVÍTE PROČ NASTALY NEBYL NALEZEN ŽÁDNÝ ARTIKL VYHLEDANÉ ZBOŽÍ NEODPOVÍDÁ ZADANÉMU PARAMETRU
18 19 20 21 22 23 25 26 27 27 27
7.
28
TECHNICKÁ DOKUMENTACE PROGRAMOVÝCH POSTUPŮ
7.1. DEFINICE TŘÍD A GLOBÁLNÍCH PROMĚNNÝCH TZBOZI TSTATISTIKA GLOBÁLNÍ PROMĚNNÉ 7.2. DEFINICE FUNKCÍ FUNKCE STANDARD FUNKCE STANDARD2 7.3. PROCEDURA TFORM1.FORMCREATE – ÚKONY PŘI INICIALIZACI APLIKACE
29 29 29 29 30 30 30 31
7.4. 7.5. 7.6. 7.7. 7.8. 7.9. 7.10. 7.11. 7.12. 7.13. 7.14. 7.15. 7.16. 7.17. 7.18. 7.19. 7.20. 7.21. 7.22. 7.23. 7.24.
PROCEDURA TFORM1.BUTTON1CLICK – BUTTON ZAPIŠ NOVÉ ZBOŽÍ, TABSHEET2 - PŘIDAT NOVÉ ZBOŽÍ PROCEDURY S GRAFICKÝM ÚČELEM – 1. ČÁST, TABSHEET2 PŘIDAT NOVÉ ZBOŽÍ PROCEDURA TFORM1.BUTTON2CLICK - BUTTON PŘIDEJ NOVÝ DRUH, TABSHEET2 - PŘIDAT NOVÉ ZBOŽÍ PROCEDURA TFORM1.TABSHEET2SHOW – PŘIDAT NOVÉ ZBOŽÍ PROCEDURY TFORM1.EDIT5EXIT A TFORM1.EDIT6EXIT PROCEDURA TFORM1.TABSHEET1SHOW – VYHLEDAT ZBOŽÍ PROCEDURY ZAMEZUJÍCÍ ZDÁNÍ VYHLEDÁVÁNÍ PODLE VÍCE PARAMETRŮ – TABSHEET1 – VYHLEDAT ZBOŽÍ PROCEDURA TFORM1.BUTTON4CLICK – BUTTON VYHLEDEJ ZBOŽÍ, TABSHEET1 – VYHLEDAT ZBOŽÍ PROCEDURY TFORM1.BUTTON6CLICK A TFORM1.BUTTON5CLICK, BUTTONY PŘEDCHOZÍ A DALŠÍ, TABSHEET1 – VYHLEDAT ZBOŽÍ PROCEDURY S GRAFICKÝM ÚČELEM – 2.ČÁST, TABSHEET2 – PŘIDAT NOVÉ ZBOŽÍ PROCEDURA TFORM1.BUTTON7CLICK – BUTTON PŘIDAT K NÁKUPU, TABSHEET1 – VYHLEDAT ZBOŽÍ PROCEDURA TFORM1.BUTTON9CLICK – BUTTON STORNO, FORM1 – PROSTOR POKLADNY PROCEDURA TFORM1.BUTTON8CLICK – BUTTON OK, FORM1 – PROSTOR POKLADNY PROCEDURY ZAMEZUJÍCÍ ZDÁNÍ VYHLEDÁVÁNÍ PODLE VÍCE PARAMETRŮ – TABSHEET1 – VYHLEDAT ZBOŽÍ PROCEDURA TFORM1.BUTTON10CLICK – BUTTON UKONČIT PROGRAM, FORM1 – PROSTOR POKLADNY PROCEDURA TFORM1.BUTTON11CLICK - BUTTON ZOBRAZIT DETAIL/SKRÝT DETAIL,TABSHEET1 – VYHLEDAT ZBOŽÍ PROCEDURA TFORM1.BUTTON12CLICK – BUTTON ZAPIŠ ZMĚNY, TABSHEET1 – ZAPIŠ ZMĚNY (FORMULÁŘ PRO ZMĚNU PARAMETRŮ) PROCEDURA TFORM1.TABSHEET4SHOW - STATISTIKY PROCEDURY TFORM1.BUTTON13CLICK A TFORM1.BUTTON14CLICK – BUTTONY ZOBRAZIT, TABSHEET4 - STATISTIKY PROCEDURY TFORM1.BUTTON15CLICK A TFORM1.BUTTON16CLICK – BUTTONY ZOBRAZIT A ZOBRAZIT VEŠKERÉ ZBOŽÍ, TABSHEET5 – STAVY ZBOŽÍ PROCEDURY TFORM1.EDIT15EXIT A TFORM1.EDIT11EXIT
32 34 34 35 35 35 36 37 38 39 39 40 41 42 42 42 43 44 44 45 46
8.
ZÁVĚR
47
9.
SEZNAM ZDROJŮ:
48
POUŽITÉ ZDROJE: DALŠÍ ZDROJE
48 50
10.
SEZNAM OBRÁZKŮ
51
11.
SEZNAM PŘÍLOH
52
1. Tato
ÚVOD práce
vychází
z předpokladu
neefektivního
využívání
informačních
technologií (dále IT) v oblasti malého podnikání. Při nakupování jsme často svědky situace, kdy společnost s jednou nebo několika málo prodejnami nevyužívá pro podnikání žádný specifický software. Intervence malých podnikatelů v oblasti IT se často omezuje na pořízení osobního počítače se základním programovým vybavením. Operační systém a sada programů Microsoft Office jsou tak mnohdy jediným softwarem využívaným v podnikání malého rozsahu. Odborník IT oprávněně namítne, že sada Microsoft Office poskytuje dostatečné nástroje pro evidenci zboží, vyhledávání jednotlivých artiklů, sledování statistik prodeje a přidružené relevantní funkce. Vyvstává zde však otázka, zda se ve společnosti o několika zaměstnancích nachází osoba, která by dokázala pro takovýto účel nakonfigurovat dokument v aplikaci Microsoft Excel nebo dokonce databázi v aplikaci Microsoft Access. Připustíme-li existenci takové osoby v podniku, nemáme ještě zaručeno, že ostatní personál bude schopen s takovým nástrojem správně a efektivně zacházet. Tudíž lze poměrně snadno zamítnout myšlenku externího vytvoření. Nabízí se možnost koupě hotového produktu, jako je například účetní a evidenční systém EKONOM®1, avšak aplikací kterou navrhuji nechci konkurovat systémům, které zahrnují i účetnictví.
1
Ing. Jan Bláha – Blahasoft, Švihov 340 12, IČO: 69274533 dostupné z: http://obchod.blahasoft.cz/software/ekonom-system [cit.14.12.2007]
8
2.
ANALÝZA FIRMY
Firma se specializuje na tunningové doplňky, tvoří ji jedna pobočka a dva zaměstnanci. Pobočka se skládá z prodejní plochy a malého skladu, který však není využíván jako sklad v pravém slova smyslu. Ukládá se zde zboží, které si zákazník objednal a není určeno k vystavení za účelem prodeje. Pro účely navrhovaného systému tedy existence skladu nebude hrát roli. Veškeré zboží je evidováno jako skladem, ale míní se tím zboží na prodejně. Provozovna je vybavena osobním počítačem s operačním systémem Microsoft Windows XP a nainstalovanou sadou programů Microsoft Office 2000. Specifikem prodejny je využívání plazmové širokoúhlé obrazovky jako monitoru počítače. Počítač zde prozatím slouží pouze jako přehrávač tématických videí a není zde druhý zobrazovací prvek (monitor) pro obsluhu počítače. Při návrhu evidenčního systému bude důležité zohlednit, že zákazník uvidí tentýž obsah obrazovky jako prodejce. Dále je nutné zohlednit omezené rozlišení obrazovky1. Aplikace nemůže využívat vysokého rozlišení pro „zvětšení“ pracovní plochy, čímž je limitován i počet prvků na jednotlivých screenech2 programu. Zásobování zajišťuje sám majitel a realizuje se intuitivně. Nově nakoupené zboží se neprodleně umisťuje na prodejnu. V tomto ohledu je tedy směrodatný pouze požadavek na aktuální stav veškerých zásob. IT gramotnost personálu je na uživatelské úrovni. Proto se program budu snažit navrhovat co možná nejvíce intuitivní a vyhovět zásadním požadavkům zadavatele, který si přál, aby byl program spolehlivý, v maximální možné míře odolný vůči nestandardnímu zacházení a samostatný (bez použití dalších programů3).
1
Fyzické rozlišení obrazovky nedosahuje ani standardu HD ready. Písmo pod 10b je špatně čitelné. screen – statický obraz na monitoru v jednom okamžiku 3 Zadavatel si přeje vyhnout nákladům na licenci databázového nástroje jako je například Microsoft SQL. 2
9
3.
NÁVRH 3.1.
Návrh parametrů evidovaného zboží
Základním stavebním kamenem evidenčního systému je návrh evidovaných parametrů u jednotlivých artiklů a určení primárního klíče1. Evidované parametry: -
kód (primární klíč),
-
název,
-
druh,
-
značka,
-
typ,
-
nákupní cena,
-
prodejní cena,
-
kusy,
-
poznámka. Kód = kód zboží, je zde primárním klíčem a bude přebírán z kódování
výrobce (číselný kód na obalu produktu). Zavádění vlastního kódování je v rozsahu jedné prodejny s přibližně 200artikly zbytečné. Pravděpodobnost stejného kódu u více jak jednoho produktu je mizivá. Jednotliví výrobci si hlídají unikátnost svých kódů a používání stejného kódování dvou výrobců je také nepravděpodobné. Přesto systém nebude umožňovat zápis již použitého kódu jako nový artikl. Je pak volbou prodejce, zda stejný artikl (např. jen v jiném barevném provedení) bude evidovat pod stejným kódem a barvu uvede v poznámce, nebo zda upraví převzatý kód (např. přidáním počátečního písmene barvy k převzatému kódu). Název = název zboží, je parametr sloužící spíše pro zaznamenání výrobce artiklu, jelikož mnoho produktů jako jsou barevné žárovky, nemá své vlastní jméno. Na druhou stranu například pneumatiky dnes často mají svůj vlastní název. Potom hodnota takového 1
primární klíč – parametr, kterému je přiřazen speciální význam, hodnota tohoto parametru je pro každý artikl jedinečná (jednoznačně určující parametr)
10
parametru může vypadat takto: Goodyear Excellent (Googyear = výrobce, Excellent = jméno konkrétního druhu pneumatik výrobce Goodyear). Druh = druh zboží, je jedním z nejdůležitějších parametrů. Určuje do jaké kategorie produkt spadá - např. žárovka, pneu, lišta, spoiler atd. Významný bude při otázkách zákazníků typu.: „Jaké máte koncovky výfuků?“ Značka = značka automobilu. Značkou automobilu se myslí vyhraněnost pro určitou značku automobilu
–
např. Škoda. Tento
parametr
úzce souvisí
s parametrem typ, avšak některé artikly nejsou vyhraněny striktně pro typ automobilu (např. nálepka „Škoda auto“), proto jsou parametry značka a typ evidovány jako dva parametry. Typ = typ automobilu. Zde mluvíme již o konkrétním vymezení. Těžko bychom např.
spoiler
určený
pro
Porsche
928
(sportovní
vůz)
nainstalovali
majitele
firmy
Autodoplňky
na Porsche Cayenne (terénní vůz). Nákupní
cena
=
pořizovací
cena
pro
Ondřej Horniecký. Nákupní cena je parametr, který bude s ohledem na využívání plazmové obrazovky jako monitoru nutno vhodně zpřístupňovat. Prodejní cena = cena pro zákazníka. Kusy = počet kusů daného artiklu skladem. Poznámka = parametr pro zaznamenání dalších vlastností zboží, které není vhodné systematicky zaznamenávat v podobě parametru (např. rozměr pneumatik).
11
3.2.
Návrh funkcí - Analýza procesů
Evidenční systém by teoreticky mohl stát pouze na systému evidence zboží, který by neumožňoval více než přidávání a odebírání zboží (nákup resp. prodej, inventura). Abych však naplnil zadání efektivního využívání IT v malém podnikání, je nutné, aby aplikace měla i další funkce. Se zadavatelem jsme se shodli na následujících funkcích: Pozn.: Funkce jsou řazeny chronologicky podle životního cyklu jednoho artiklu v prodejně.
Přidávání zboží Výchozím předpokladem je již z části naplněná evidence. Přidáváme nový doposud nenabízený artikl. Při přidávání nového zboží je nutné definovat, které parametry budou povinné a nebude možno je vynechat, dále bude nutné hlídat unikátnost primárního klíče (parametr kód), abychom nevědomky nepřidávali artikl jako nový, přičemž by byl již evidovaný.
Vyhledávání evidovaného zboží Tato funkce reaguje hned na několik situací: a)
Chceme zkontrolovat, dříve než začneme vyplňovat formulář pro přidání nového artiklu, zda již daný artikl neevidujeme.
b)
Dotaz zákazníka. Zde bude nutné definovat podle jakých parametrů bude možno vyhledávat. V ostatních případech bychom se totiž mohli spokojit s vyhledáváním podle primárního klíče (kódu zboží).
c)
Nakoupíme nové kusy evidovaného zboží a chceme je přidat do evidence.
d)
Zákazník si již vybral a chce si daný artikl koupit.
e)
Odepisujeme poškozený výrobek.
f)
Chceme upravit parametry artiklu. Z výše uvedeného vyplývá, že funkce vyhledávání zboží bude mít zásadní význam.
Pokladna Na pokladnu zde budou z programového hlediska kladeny poměrně vysoké nároky. Pokladna musí sloužit nejen jako kalkulačka, ale také musí odepisovat prodané zboží ze stavu zásob. Dalším nárokem na pokladnu bude schopnost vrátit stornovaný nákup 12
do evidence. V neposlední řadě bude pokladna také zapisovat jednoduché statistiky o prodeji.
Statistiky Doplňková funkce zobrazující základní statistiky. Funkce bude zobrazovat náklad vynaložený na určitou tržbu, hrubý zisk, počet zákazníků, průměrný hrubý zisk na zákazníka, průměrný procentuální zisk a průměrný zisk na den.
Stavy zboží Stavy zboží je obdobná funkce jako vyhledávání, bude sloužit pro výpis kompletního stavu skladu a také jako vyhledávač zboží s nízkým stavem (málo kusů skladem). Pro omezenost pracovního prostoru (daného rozlišením plazmové obrazovky) byla tato funkce navržena jako samostatná.
Editace parametrů zboží V aplikaci by se měla na vhodném místě nacházet funkce editace zboží, aby bylo umožněno opravit chybně zadaný údaj, popřípadě jej změnit zcela. Zejména ve zkušebním provozu systému bude na uživatele kladen poměrně vysoký nárok, aby si vytvořil vlastní přístup k evidenci. Bude se muset rozhodnout, které parametry bude systematizovat, a které vlastnosti bude uvádět nesystematicky jako poznámku. Odhaduji, že tento proces bude dlouhodobý a editace parametrů jej značně usnadní.
Odolnost vůči náhodným a logicky chybným hodnotám Největším úkolem celé realizace bude ošetření náhodných a logicky chybných hodnot. Náhodnou hodnotou myslím například mezeru za kódem zboží - ta nesmí být vnímána jako rozdílná od tytéž hodnoty bez mezery na konci textového řetězce. Logicky chybnou hodnotou může být pokus o zaevidování již existujícího artiklu nebo uvedení nižší prodejní ceny než je cena pořizovací.
13
4.
VÝVOJ
V polovině roku 2006 vznikla na základě vyhodnocení požadavků a konzultace se zadavatelem první verze aplikace Evid. Stejně jako následující verze byla realizována pomocí Delphi Enterprise v. 7.0, Borland Software Corporation. Po zkušebním provozu programu Evid 1.0 vznikla verze druhá (Evid v. 2.0), která oproti první verzi již nabízela funkce Stavy zboží a Statistiky. Obě tyto verze však byly programově realizovány pomocí rekordů1. V srpnu 2007 jsem dokončil Evid v. 3.0, který se od předešlých verzí liší především objektovým přístupem programování. Dále se liší také možností měnit parametry evidovaného zboží, možností výstupu evidovaného zboží ve formátu pro export a dalšími rozšiřujícími funkcemi. Nutno také podotknout, že Evid v. 3.0 s daty pracuje efektivněji. Oproti minulým verzím zde byl zásadně změněn přístup k zpracování dat. Zejména při přidávání nového zboží a naplňování ComboBoxů2 pro vyhledávání. V předešlých verzích se například vždy kontroloval obsah ComboBoxů pomocí znovunačtení hodnot, ve verzi 3.0 se za běhu programu přidávají pouze nové hodnoty. Evid v. 3.0 se tak vzhledově příliš neliší od předchozích verzí, ale značně se liší zdrojovým kódem, který byl od základu přepsán.
1 2
typ stavby entit při programování v Delphi komponenta nabízející uživateli výběr ze seznamu existujících hodnot
14
5.
PREZENTACE PROGRAMU EVID V. 3.0
Tyto screeny programu jsou výsledkem vývoje, kdy původně sloužili jako návrh uživatelského prostředí a později se staly funkčním uživatelským rozhraním. Uživatelské rozhraní (obr. 1) je vizuálně rozděleno na dva základní celky. První je tvořen pokladnou (levá část) a druhý je tvořen komponentou PageControl (pravá část s přepínatelnými kartami). Toto uspořádání bylo zvoleno dle přání zadavatele, který si přál, aby pokladna byla vždy zobrazena. Důvodem je možnost zákazníka si kdykoliv prohlížet svůj účet. V pravé části se na úvodní obrazovce1 zobrazí karta Vyhledat zboží (obr. 1). Předpokládá se, že nejčastějším úkonem prodejce je vyhledávání zboží pro připsání do pokladny (pro prodej). Obr. 1 Úvodní obrazovka1
V pořadí druhou je karta Přidávání nového zboží (obr. 2). Tato karta slouží pro přidávání doposud neevidovaného zboží. Pravou část karty tvoří formulář pro vyplnění
1
první obrazovka, zobrazí se po spuštění programu
15
údajů o novém artiklu. V pravé části je zobrazen seznam evidovaných druhů zboží v pořadí jak byly druhy přidávány1. Obr. 2 Přidávání nového zboží
Obr. 3 Statistiky
1
Na přání zákazníka, kterému toto řazení pomáhá v orientaci mezi existujícími druhy. Abecedně jsou druhy řazeny v ComboBoxu formuláře pro přidávání nového zboží na téže kartě v levé části
16
Dále (třetí karta) se nachází karta Statistiky (obr. 3). Zde si může majitel nechat zobrazit základní statistiky prodeje (náklad, tržba, hrubý zisk, počet zákazníků, průměrný hrubý zisk na zákazníka, průměrný procentuální zisk a průměrný zisk na den). Tyto údaje lze zobrazit pro uživatelsky zadané období (první řádek) nebo pro předdefinované období. Poslední kartou je karta Stavy zboží (obr. 4), která slouží nejen pro zobrazení artiklů uživatelsky zadaným počtem kusů a méně, ale také pro výpis veškerého evidovaného zboží. Výstup lze vypisovat ve dvou formátech: -
formátovaný (parametry artiklů jsou rozděleny do sloupců) nebo
-
formátovaný pro export (parametry artiklů jsou vypsány v řetězcích bez mezer a odděleny středníkem).
Obr. 4 Stavy zboží
17
6.
UŽIVATELSKÁ PŘÍRUČKA PROGRAMU EVID V. 3.0 – IMPLEMENTACE PROGRAMU DO FIRMY
V této části bakalářské práci bych rád rozšířil předchozí kapitolu, v které jsem program základně představil. Přestože jsem tuto kapitolu nazval Uživatelská příručka programu Evid v. 3.0, nebude se zde jednat o příručku jako takovou, jelikož potřebné představení a základní screeny byly již uvedeny. Pozn. Jednotlivé části jsou řazeny podle častosti využívání uživatelem pro snadnější orientaci v příručce a jak již bylo zmíněno v 5.kapitole, jsou výsledkem konzultace se zadavatelem. Také používané termíny se řídí úrovní IT gramotnosti uživatele. Technická dokumentace programových postupů se nachází v 7.kapitole.
6.1.
Karta Vyhledat zboží (obr.1)
Při vyhledávání zboží máme na výběr z šesti kritérií vyhledávání: -
kód zboží,
-
druh zboží,
-
název zboží,
-
značka automobilu,
-
cena (prodejní cena),
-
typ automobilu.
Pozn.: Mezi políčky parametrů lze přepínat klávesou Tab v pořadí výše uvedeného výčtu.
Kritéria nelze kombinovat a vyhledávání se vždy provádí na základě jednoho parametru. Rolovací okénka1 jsou naplněna existujícími hodnotami příslušného parametru. Každá hodnota parametru se v okénku nachází pouze jednou a jsou řazeny abecedně. Do okének lze vepisovat a program s postupným vepisováním automaticky nabízí shodné varianty. V nabízených variantách se pohybuje klávesami šipka nahoru a šipka dolu. Nabízenou variantu stačí potvrdit klávesou Enter.
1
ComboBoxy
18
Stiskem tlačítka Vyhledej zboží program vyhledá zboží podle aktuálního parametru. Vpravo od tlačítka se zobrazí počet nalezených artiklů. V téže části se zobrazí i podle jakého parametru se vyhledávalo a jaká byla hodnota parametru. Tato informace je směrodatná, jelikož při změně vyhledávacího parametru se již neshoduje s jediným vyplněným vyhledávacím parametrem, jako v prvním okamžiku. Byl-li vyhledán alespoň jeden artikl, zobrazí se níže jeho parametry (zobrazované parametry viz obr. 1). Při vyhledávání pomocí obecnějších parametrů (např. druh zboží) se s velkou pravděpodobností nalezne více artiklů. Mezi nimi se pohybuje tlačítky Předchozí a Další. Nad touto dvojicí tlačítek je zobrazena informace, na kterém z vyhledaných artiklů se nacházíme (př.: „Zobrazuji 2. z 5 nalezených záznamů.“). Tip: Pro vyhledání veškerého zboží ponechte všechna rolovací okénka pro zadávání kritérií vyhledávání prázdná (případně vymažte jejich obsah). Veškeré zboží lze také zobrazit postupem uvedeným v kapitole 6.5 Stavy zboží. Tlačítko Přidat k nákupu slouží k připsání zobrazovaného artiklu do pokladny. Připisuje se počet kusů uvedený od tohoto tlačítka vlevo. Počet kusů lze měnit vepsáním hodnoty nebo využitím šipek u této komponenty1. Program automaticky hlídá, zda se nepokoušíme připsat do pokladny (prodat) více kusů než je evidováno skladem. Pozn.: Tlačítko Zobraz detail bude vysvětleno v kapitole 6.6 Změna parametrů.
6.2.
Pokladna (obr. 1)
Pokladna je především kalkulátor nakupovaného zboží. V její hlavní části2 se nachází výčet zboží přidaného k nákupu. Bez uživatelského zásahu lze vidět pouze jednotlivé sumy. Nakupuje-li zákazník více kusů téhož artiklu, je zde uvedena pouze jedna suma tvořena příslušným násobkem prodejní ceny jednoho kusu. Pro zobrazení detailu položky v pokladně použijte vodorovný posuvník pokladny3. Obdobně při větším počtu
1
SpinEdit Memo 3 horizontální SrollBar Mema 2
19
položek v pokladně. V dolní části se v průběhu přidávání nových artiklů k nákupu aktualizuje celkový součet k úhradě. K dokončení prodeje slouží tlačítko OK. Po jeho stisku již nelze automaticky vrátit položky nákupu zpět do evidence a stornovat zápis do statistik, proto je vhodné jej použít až při předávání hotovosti zákazníkem. Naopak tlačítko Storno vrátí obsah celé pokladny do evidence a neproběhne zápis do statistik. Se stiskem tlačítka Storno je také aktualizován počet kusů právě vyhledaných artiklů. Posledním prvkem pokladny je tlačítko Ukončit program, jak však jeho název napovídá, nemá žádnou spojitost s Pokladnou a slouží ke stejnému účelu jako křížek v pravém horním rohu programu – čili k ukončení aplikace.
6.3.
Přidat nové zboží (obr. 2)
Na této kartě se nachází nástroje pro přidávání nových artiklů. Formulář v levé části karty slouží pro vyplnění parametrů nového artiklu, přičemž tyto čtyři parametry jsou povinné: -
kód zboží,
-
druh zboží,
-
nákupní cena,
-
prodejní cena. Program nedovolí zápis nového artiklu, nejsou-li tyto hodnoty vyplněny. Kód zboží musí být jedinečný, to znamená, že se nesmí shodovat s již použitým
kódem. U parametru Kód nelze používat malá písmena abecedy. Chybové hlášení „Již existuje zboží se stejným kódem!“ signalizuje, že se pokoušíte použít tentýž kód již podruhé. Zkontrolujte si na kartě Vyhledat zboží, zda se jedná o stejný artikl nebo o shodu převzatého kódu od výrobce. Jedná-li se o náhodnou shodu
20
kódů, upravte u vkládaného artiklu kód přidáním například jednoho písmene. Zjistíte-li, že se jedná o stejný artikl jako již evidujete, vyhledejte jej na kartě Vyhledat zboží a s použitím tlačítka Zobraz detail přidejte nově nakoupené kusy. Pozn.: O tlačítku Zobraz detail a přidání kusů již evidovaného zboží je uvedeno v kapitole 6.6 Změna parametrů.
Druh zboží není možné přímo vyplnit a je nutno vybrat z již existujících druhů nebo zavést nový druh. Nový druh se zavádí pomocí políčka nadepsaného Přidání nového druhu zboží a je zde opět omezení velikosti písmen. Lze vepisovat pouze malá písmena. Po vepsání nového druhu zboží stiskněte tlačítko Přidej nový druh. Pokud vepsaný druh doposud neexistuje, bude úspěšně přidán a vy jej již naleznete v rolovacím okénku1 ve formuláři pro zápis nového zboží. Zůstanou-li nepovinné parametry (název, značka, typ, poznámka a kusy) nevyplněny, program je automaticky doplní defaultními hodnotami (_bez názvu, _univerzální, _univerzální, _bez poznámky, 0). K zápisu formuláře jako nového artiklu použijte tlačítko Zapiš nové zboží. Úspěšný zápis je níže signalizován zobrazením stručného výpisu posledního artiklu. Stručný výpis slouží také jako orientační pomůcka, zapisujete-li více nových artiklů. Pro případy, kdy zapisujete více nových artiklů s podobnými parametry, zůstane formulář vyplněný i po přidání posledního nového artiklu. Chcete-li pokračovat s prázdným formulářem, použijte tlačítko Smazat formulář. Pozn.: Nákupní a prodejní cena jsou zaokrouhlovány na dvě desetinná místa.
6.4.
Statistiky (obr. 3)
Statistiky je doplňková funkce umožňující uživateli zobrazení základních statistik prodeje. Na výběr je statistika za uživatelem zadané období, kdy vepíše den, měsíc a rok 1
ComboBox
21
do připravených políček a statistika za předdefinovaná období 7, 14, 21 a 28dní. Pro zobrazení
statistiky
použijeme
příslušné
tlačítko
Zobrazit.
Výše
umístěné
pro uživatelsky zadané datum, níže umístěné pro předdefinovaná období. V části uživatelsky zadávaného období je datum od vždy automaticky převyplněno aktuálním rokem. Datum do je předvyplněno celým aktuálním datumem. Volba mezi předefinovanými obdobími se intuitivně mění pomocí kliknutí myši na jednu z možností. Jednotlivé údaje statistiky za zadané období: -
Tržba představuje objem peněz přijatý za prodané zboží.
-
Náklad je suma pořizovacích nákladů na prodané zboží.
-
Hrubý zisk je rozdíl mezi tržbou a nákladem.
-
Počet zákazníků prezentuje počet jednotlivých nákupů, hodnota tohoto údaje je striktně závislá na správném používání Pokladny a nemusí vždy odpovídat skutečnosti počtu zákazníků jako fyzických osob.
-
Průměrný hrubý zisk na zákazníka se vypočítává jako hrubý zisk děleno počtem zákazníků.
-
Průměrný procentuální hrubý zisk je procentuálně vyjádřený hrubý zisk z nákladu.
-
Průměrný hrubý zisk na den je podíl hrubého zisku a počtu dnů za které se statistika zobrazuje. Pozn.: Nad údaji statistiky je vždy uvedeno období, za jaké se statistika zobrazuje.
6.5.
Stavy zboží (obr. 4)
Zde je možné zobrazit artikly s nízkým stavem kusů skladem. Limitující hodnotu zadejte do políčka nadepsaného Zobrazit zboží počet kusů a méně. Po stisku tlačítka Zobrazit budou vypsány artikly, jejichž stav skladem je roven nebo menší než limitující hodnota. Součástí výpisu jsou veškeré parametry evidovaného zboží.
22
Druhým účelem této karty je výpis veškerého zboží (artiklů). K tomuto účelu slouží tlačítko Zobrazit veškeré zboží. Výstup je pro oba výpisy řazen podle počtu kusů artiklů skladem (vzestupně). V pravém horním rohu nám aplikace dává na výběr, zda výpis chceme formátovaný (rozdělený do sloupců) nebo formátovaný pro export (souvislý text, kde jsou parametry odděleny středníkem). Volba formátu je funkční pro oba výpisy.
6.6.
Změna parametrů (obr. 5)
Tento nástroj aktivujete tlačítkem Zobraz detail1. Formulář pro změnu údajů je přístupný pouze tehdy, je-li vyhledán alespoň jeden artikl. Změny parametrů lze v jednom okamžiku provádět pouze pro jeden artikl a to právě pro ten zobrazený. Pozn.: Název tlačítka se po aktivování formuláře změní na Skryj detail a do doby jeho použití slouží pro skrytí formuláře. Posléze se jeho název změní opět na Zobraz detail.
Měnit můžete veškeré parametry kromě kódu zboží2. Políčka jsou vyplněna aktuálními hodnotami parametrů pro pohodlnější opravu. Všimněte si, že je zde jedno z mála míst, kde můžete zobrazit pořizovací cenu. Druhým a posledním místem, kde ji můžete zobrazit , je karta Stavy zboží (viz kapitola 6.5).
1
viz obr. 1 kapitola 5 Prezentace programu Evid v. 3.0; s ohledem na skutečnost, že se obrázek v této práci již nachází, jej zde neuvádím podruhé 2 kód zboží jako primární klíč není možné měnit
23
Obr. 5 Změna parametrů
Parametry můžete měnit najednou, a pak všechny změny potvrdit tlačítkem Zapiš změny. Nechcete-li některý parametr měnit, ponechte jej v políčku nezměněný tak, jak vám byl nabídnut. Výjimku tvoří počet kusů. Toto políčko je také uvedeno s popisem „Přidej kusů“. Nula tedy znamená beze změny a kladné číslo znamená přidat daný počet kusů k již evidovaným kusům. Pro odpis je hodnota záporná. Kontrolou úspěšné aktualizace údajů je přepis zobrazených parametrů Tip: Zvyšujete-li například paušálně všechny prodejní ceny. Postupujte takto: -
nechte si všechna vyhledávací okénka1 prázdná,
-
stiskněte tlačítko Vyhledat zboží – vyhledá se veškeré zboží,
-
použijte tlačítko Zobraz detail – zobrazí se formulář pro změny,
-
upravte prodejní cenu u prvního vyhledaného artiklu,
-
použijte tlačítko Zapiš změny – uloží se nová cena prvního artiklu,
-
k druhému artiklu přejděte pomocí tlačítka Další (bez použití Skryj detail) atd.
Formulář zůstane zobrazený a předepsané hodnoty se aktualizují dle vlevo zobrazovaného artiklu. 1
všechny ComboBoxy
24
6.7.
Obecná upozornění:
1) Umožnění úpravy pořizovací ceny slouží k opravě chybně zadané částky na kartě Přidat nové zboží. Nedoporučuji tuto hodnotu měnit s menšími nebo většími pořizovacími náklady na daný artikl. Pokud se přesto rozhodnete tuto hodnotu měnit v souvislosti se změnou nákladů, čiňte tak prosím uváženě a ohlídejte si, kdy prodáváte zboží s původními náklady a kdy s novými. Doporučený postup je artikl zaevidovat jako nový a ke kódu zboží přidat například znaky „_2“. Nedodržením ani jednoho z těchto postupů, zkreslíte výsledky statistik. 2) Dále bych chtěl upozornit, že tlačítko Přidat k nákupu vychází z prodejní ceny zobrazované ve výpisu parametrů zboží. Po přidání artiklu do Pokladny se dodatečně změněná cena již neaktualizuje. To znamená, změníte-li prodejní cenu artiklu, který již před změnou byl připsán do Pokladny, nová cena nebude Pokladnou respektována. Pro předejití chybné sumy Pokladny a pro předejití ukládaní nesprávných dat pro statistiky (změna prodejní ceny) prosím neprovádějte změny nákupní a prodejní ceny během prodeje. 3) Formulář pro změnu údajů se při přechodu na jinou kartu a posléze návratu na kartu Vyhledat zboží, vždy skryje. Je tomu tak z důvodu, abyste mohli například při prohlížení statistik a náhlém příchodu zákazníka, bez obav přepnout na kartu Vyhledat zboží, aniž by hrozilo „prozrazení“ vaší pořizovací ceny právě zobrazovaného artiklu. Pokud však potřebujete z nějakého důvodu dočasně přepnout na jinou kartu, nemusíte se obávat, že rozpracovaná data ve formuláři změn zmizí. Formulář
opětovně
snadno
vyvoláte
pomocí
tlačítka
Zobraz
detail
i s rozpracovanými daty. Tyto data se uchovávají do doby, než jakýmkoliv způsobem zobrazíte v levé části této karty jiný artikl. Změny se však zapisují výlučně tlačítkem Zapiš změny - do jeho použití nejsou údaje ve formuláři respektovány.
25
6.8.
Seznam chybových hlášení a dialogů programu
V aplikaci Evid v. 3.0 se setkáte se třemi typy hlášení. Prvním je chybové hlášení (příklad obr. 6.1), které vám nedovolí dokončit činnost, druhým je dotazovací hlášení. Dotazovací hlášení obsahuje tlačítka ano a ne. Podle vaší volby se buďto bude, nebo nebude pokračovat v činnosti, kterou toto hlášení bylo vyvoláno. Příkladem takového hlášení je obr. 6.2. Třetí hlášení je pouze informativní a obsahuje stejně jako chybové hlášení pouze jedno tlačítko OK (příklad obr. 6.3) Obr. 6.1 Příklad chybového hlášení
Obr. 6.2 Příklad dotazovacího hlášení
Obr. 6.3 Příklad informativního hlášení
Seznam tabulek hlášení1: Tab. 1 Chybová hlášení Tab. 2 Dotazovací hlášení Tab. 3 Informativní hlášení
Pozn.: Výčet hlášení je řazen abecedně. 1
tabulky hlášení viz Příloha 1
26
6.9.
Situace, které nevíte proč nastaly
Existují dva případy, kdy zdánlivě není něco v pořádku, přestože program nevrátil žádné chybové hlášení.
Nebyl nalezen žádný artikl Není snadné nevědomky vyplnit neexistující hodnotu parametru, ale může se vám to stát. Vyberte z nabídky rolovacího okénka jednu z nabízených hodnot a znovu použijte tlačítko Vyhledej zboží. Tento případ může snadno nastat u parametru Druh zboží. Pravděpodobně jste na kartě Přidat nové zboží zaevidovali nový druh, který jste ještě nepoužili u žádného artiklu. Jste-li si jisti, že tomu tak není, pak se jedná o následující příčinu. Editovali jste parametry jednoho z artiklů a hodnota, kterou jste změnili byla použita pouze u editovaného artiklu (před změnou to byl jediný artikl s takovou hodnotou). Pokud jste měnili parametry u více artiklů a neexistující hodnoty vás obtěžují, ukončete program a spusťte jej znovu. Neexistující hodnoty se vám již nebudou nabízet.
Vyhledané zboží neodpovídá zadanému parametru Směrodatnou informací podle jakého parametru se vyhledávalo je věta vpravo od tlačítka Vyhledej zboží. Parametr uváděný v této větě se nemusí shodovat s obsahem jediného vyplněného rolovacího okénka. Nastání opravdové neshody může nastat pouze v případě, že jste editovali jeden nebo více artiklů a měnili jste parametr, podle kterého bylo vyhledáváno. Pokud si přejete, aby vyhledané zboží opět souhlasilo s parametrem vyhledávání, zadejte vyhledávací parametr znovu a stiskněte tlačítko Vyhledej zboží.
27
7. TECHNICKÁ DOKUMENTACE PROGRAMOVÝCH POSTUPŮ V této kapitole se nachází technický popis programových postupů, které jsem použil při realizaci programu Evid v. 3.0. Jedná se o dokumentaci využitelnou pro změny v zdrojovém kódu. Termíny zde uváděné předpokládají znalost programátorského prostředí Delphi Enterprise v. 7.0 společnosti Borland Software Corporation a znalost jeho programovacího jazyku. Text je řazen v souladu s chronologickým vznikem1 kódu a jedná se tedy zároveň o dokumentaci vývoje programu. Dále je text členěn podle navrhovaných funkcí, které se posléze staly logickými celky nejčastěji prezentovanými TabSheety. Součástí dokumentace jsou příslušné soubory (CD Příloha 3), s jejichž pomocí lze v programu Delphi zpřístupnit uživateli skryté komponenty a názvy jednotlivých komponent. Zároveň bych rád zmínil, že se budu pokoušet o podrobnou dokumentaci, ale uvědomuji si, že nebude zcela vyčerpávající. Doplňkové informace a účelovost jednotlivých komponent jsou popsány v kapitole 6. Uživatelská příručka programu Evid v. 3.0 - Implementace programu do firmy.
„Komentovaný zdrojový kód je nejlepší dokumentací.“ Autor neznámý
1
Chronologický postup byl podřízen především možnosti jednotlivé dílčí funkce odladit.
28
7.1.
Definice tříd a globálních proměnných
Globální proměnné vznikaly v průběhu vývoje, ale uznal jsem za vhodné je uvést pohromadě.
Tzbozi třída definující entitu Zboží: -
kod : string
-
nazev: string
-
druh : string
-
znacka : string
-
typ : string
-
nakup_cena : real
-
prodej_cena : real
-
kusy : integer
-
poznamka : string
Tstatistika potomek třídy Tzbozi, rozšiřujícím parametrem je dat_prodeje: TdateTime
Globální proměnné -
zbozi : pole prvků třídy Tzbozi pro práci s existujícími artikly
-
pocet_zbozi : proměnná typu integer pro počítání prvků v poli zbozi
-
vyhledane : pole prvků třídy Tzbozi pro záznam vyhledaných artiklů
-
pocet_vyhl : proměnná typu integer pro počítání prvků pole vyhledane
-
zobrazeni : proměnná typu integer pro zaznamenání aktuálního zobrazovaného artiklu z pole vyhledane
-
nakup : pole prvků třídy Tzbozi pro uchování nedokončeného nákupu (obsahu pokladny)
-
pocet_nakup : proměnná typu integer pro počítání položek pole nakup
29
-
zobrazeni2 : pomocná proměnná typu boolean pro správnou funkci buttonu Zobraz detail/Skryj detail
-
sta : pole prvků třídy Tstatistika pro načtení dat statistik
-
poc_zakazniku : proměnná typu integer pro počítání jednotlivých nákupů
7.2.
Definice funkcí
Funkce standard Slouží k převodu reálného čísla na standardně dlouhý string, což je využíváno při formátování výstupu v memu Pokladny a výstupu v memu TabSheetu Stavy zboží. Vstupními parametry je reálné číslo a délka výstupního textového řetězce. Reálné číslo převede na textový řetězec, který je dále podroben testu, zda se jedná o celočíselnou hodnotu bez desetinné čárky (celé číslo je podmnožina reálných čísel) nebo s desetinnou čárkou. Pozici desetinné čárky si funkce uchová. V prvním případě přidá před číselné hodnoty příslušný počet mezer a za číselné hodnoty znaky ,00. V druhém případě postupuje takto: Podle pozice čárky, která určuje jeli počet číslic za desetinnou čárkou 1 respektive 21, připojí nakonec znak nuly respektive nepřipojí nic. Na začátek řetězce připojí opět příslušný počet mezer.
Funkce standard2 Je obdobná funkce se stejným účelem (pro formátování na standardně dlouhý výstupní řetězec). Má také dva vstupní parametry. Prvním je však proměnná typu string. Druhým opět délka výstupního řetězce.
1
Funkce je využívána pro výpis již evidovaných hodnot (nákupní a prodejní cena), které jsou již při vkládání zaokrouhleny na dvě desetinná místa. Také je použita pro formátování výpisu sumy pokladny, ta však vychází z hodnot prodejních cen.
30
7.3.
Procedura TForm1.FormCreate – úkony při inicializaci aplikace
1) Inicializuje pole zbozi a nakup. 2) Nastaví hodnoty pocet_zbozi a pocet_nakup na nula. 3) Přiřadí labelu pokladny pro sčítání celkové sumy nákupu text 0,00. 4) Naplní pole zbozi daty ze souboru zbozi.txt (evidované zboží), počítá počet artiklů. 5) Naplní combobox3 daty ze souboru druhy.txt, kde jsou uloženy existující druhy. Combobox3 slouží pro zadávání parametru druh zboží při vyhledávání. 6) Naplní combobox2 existujícími kódy zboží. V comboboxu se nesmí z estetických a praktických důvodů nacházet tatáž hodnota dvakrát. Jelikož hodnoty kódu zboží by měli být unikátní a neměli by se nacházet v seznamu zboží vícekrát jak jednou, teoreticky je zbytečné provádět kontrolu, zda již stejný kód nebyl do comboboxu přidán. Uvedený postup ve zdrojovém kódu, který kontrolu provádí zde měl význam při odlaďování programu (vysvětlení postupu kontroly viz bod 7). 7) Jinou situací je plnění comboboxu4. Jak již bylo řečeno, tatáž hodnota by se v nabídce comboboxu neměla nacházet vícekrát. Hodnoty parametru Název zboží již nejsou unikátní a kontrola je nutná. Kontrola probíhá při samotném naplňování takovýmto způsobem: Načítají se postupně všechny názvy zboží z pole zbozi a každý název je porovnáván s položkami již obsaženými v comboboxu. Před porovnáváním každého jednotlivého názvu zboží (z pole zbozi) je pomocná proměnná pridat nastavena na ‚ano‘. Objeví-li se shoda s obsahem položky comboboxu, změní se hodnota pridat na ‚ne‘. Podle hodnoty pridat se přidá, nebo nepřidá právě testovaný název zboží do obsahu comboboxu. 8) Stejným způsobem (viz bod 7) jako se naplňuje combobox4 (název zboží) se naplní i combobox5 (značka automobilu) a combobox7 (typ automobilu). Naplnění comboboxu6 (prodejní cena) se liší pouze převodem parametru prodejní cena, který je v poli zbozi proměnná typu real, na stingovou hodnotu. Porovnání dále probíhá shodně jako u comboboxů 2, 4, 5 a 7.
31
7.4.
Procedura TForm1.Button1Click – button ZAPIŠ NOVÉ ZBOŽÍ, TabSheet2 - Přidat nové zboží
1) Hodnoty editů 1 až 7 (formulář pro přidávání nových artiklů) jsou nejprve trimovány, aby se předešlo zbytečnému vyvolání chybového hlášení. Nezkušený IT uživatel by jen těžko odhalil, že například chybové hlášení o nesprávném formátu prodejní ceny je způsobeno mezerou za číselnou hodnotou. Také je to ochrana před pokusem evidovat kódy ‚XXX‘ a ‚XXX mezera‘ jako dva rozdílné. 2) Údaje vepsané do formuláře jsou před zápisem do evidence podrobeny logickému testování v uvedeném pořadí následujících bodů. Každý následující bod je podmíněn pozitivním průchodem předešlou podmínkou. Prvním takovým testováním je: Kontrola unikátnosti kódu (vepsaný kód se porovná s kódy v poli zbozi). 3) Kontrola zda je druh zboží vyplněn (kontrola zda není combobox1 pro výběr druhu zboží prázdný). Combobox1 je naplněn1 druhy zboží ze souboru zbozi.txt, vlastnost comboboxu1 Style je nastavena na csDropDownList, tudíž uživatel nemůže do comboboxu vepisovat. Kromě prázdné hodnoty tak nehrozí neplatný druh zboží a není nutné další testování této hodnoty. 4) Testování nákupní a prodejní ceny (dále jen částky). Pro co nejširší podchycení nesprávného formátu vepsané částky používám poměrně rozsáhlou kontrolu. Nejdříve je použita procedura val umožňující podchycení nesprávného formátu celočíselné proměnné (procedura val označí reálné číslo jako „chybné“). Vyhodnotí-li procedura val částku pozitivně, znamená to, že se jedná o správný formát celočíselné hodnoty a program ji přijme. Parametr nákupní respektive prodejní cena je v třídě Tzbozi proměnná typu real, proto používám funkci strtofloat, i když je zřejmé, že se jedná o celočíselnou hodnotu. Vyhodnotí-li procedura val částku jako neceločíselnou, je nutné rozhodnout, zda se jedná o reálnou částku (a ji popřípadě podrobit testu správného formátu) nebo o chybný textový řetězec. Toto rozhodnutí se provádí hledáním desetinné čárky
1
viz kapitola 7.7 Procedura TForm1.TabSheet2Show
32
v řetězci. Není-li nalezena desetinná čárka (ztvárněna čárkou, nikoliv tečkou) program vyhodnotí vepsanou částku jako chybnou a vrátí chybové hlášení. Naopak je-li desetinná čárka nalezena pokračuje se v testování1 správného formátu reálné hodnoty následovně: Podle zaznamenané pozice desetinné čárky se řetězec rozdělí na celočíselnou a desetinou část. Obě části jsou v tuto chvíli celočíselné hodnoty a lze na jejich testování použít proceduru val. Jsou-li obě části v pořádku, může být textový řetězec bez obav převeden na reálnou hodnotu pomocí funkce strtoflat. Nejsou-li obě části bezchybné, program opět vrátí chybové hlášení. 5) Nyní se testuje není-li prodejní cena nižší než nákupní. Pokud ano, pak bude uživatel dotázán, činí-li tak úmyslně. Dialogové okno obsahuje text „Prodejní cena je menší než nákupní. Chcete pokračovat v zápisu?“ a uživatel má na výběr ano/ne. Zvolí-li ne, zápis bude přerušen a uživatel o tom bude informován. Zvolí-li ano, pokračuje se v dalším kroku (bod 6). 6) Ve formuláři se doplní vynechané nepovinné parametry. Hodnoty se vyplní odpovídajícími přednastavenými údaji. 7) Nákupní a prodejní cena se metodou round zaokrouhlí2 na dvě desetinná místa. 8) Proběhne přidání nového artiklu do pole zbozi. Nový artikl je v poli zbozi přidán na první volnou pozici (řízeno globální proměnnou pocet_zbozi, která je po dokončení přidání inkrementována). 9) Proběhne aktualizace obsahů comboboxů na TabSheet1 – Vyhledat zboží. Při aktualizaci se postupuje obdobně jako při prvotním naplňování popsaném v kapitole 7.3, bod 7. 10) Jako zpětná vazba úspěšného přidání je zobrazen stručný výpis právě přidaného zboží. 11) Závěrem je aktualizované pole zbozi zapsáno do souboru zbozi.txt.
1
Testovací algoritmus pro správnost formátu reálného čísla jsem ztvárnil svépomocí, jelikož neexistuje obdobná funkce jako val pro reálná čísla. 2 Metodu round lze bez obav použít – bod 4 „nepropustí“ nesprávný formát nákupní ani prodejní ceny.
33
7.5.
Procedury s grafickým účelem – 1. část, TabSheet2 - Přidat nové zboží
Uvedené procedury zdrojového kódu slouží pouze ke grafickému účelu (změna barvy písma). Jejich význam je snadno dohledatelný, a proto je uvádím pouze výčtem. -
TForm1.Edit1Click
-
TForm1.Button3Click
-
TForm1.ComboBox1Change
-
TForm1.SpinEditChange Za zmínku snad stojí pouze procedura, která slouží k vymazání formuláře
pro přidávání nového zboží (TForm1.Button3Click - button Smaž formulář).
7.6.
Procedura TForm1.Button2Click - button PŘIDEJ NOVÝ DRUH, TabSheet2 - Přidat nové zboží
1) Odstraní se mezery na začátku a na konci vepsaného textu v Editu8 (zadávání nového druhu) – ochrana proti evidování téhož druhu zboží s mezerou na konci/začátku. 2) Před přidáním nového druhu se zkontroluje unikátnost, aby nebyl tentýž druh evidován dvakrát. Nový druh se porovnává s obsahem Mema1, kde jsou vypsány existující druhy zboží. 3) Zdánlivě zbytečná podmínka k zapsání nového druhu je test neprázdnosti obsahu Editu8. Podmínka má však zásadní význam. Zabrání přidání odřádkování jako nové druhu zboží. 4) Připíše se nový druh do výčtu existujících v Memu1. 5) Aktualizuje se obsah Comboboxu1 pro výběr druhu zboží ve formuláři přidávání nového zboží. 6) Memo1 se zapíše do souboru druhy.txt.
34
7) Připíše se nový druh do obsahu Comboboxu3 pro zadávání vyhledávacího parametru Druh zboží na TabSheet1 – Vyhledat zboží. Unikátnost nového druhu je již zkontrolovaná, proto se provádí přímí zápis bez kontroly1.
7.7.
Procedura TForm1.TabSheet2Show – Přidat nové zboží
Tato procedura má za úkol při zobrazení karty Přidat nové zboží (TabSheet2) naplnit obsahy dvou komponent. Mema1 (zobrazení existujících druhů zboží) a Comboboxu1 (výběr druhu zboží při zápisu nového artiklu).
7.8.
Procedury TForm1.Edit5Exit a TForm1.Edit6Exit
Evidovat zápornou hodnotu nákupní nebo prodejní ceny (TabSheet1 – Přidat nové zboží) není logické, a proto to aplikace nesmí umožnit. Procedury automaticky odmazávají znaménko mínus na začátcích vepsaných částek (zde pořád ještě textový řetězec). Záporná hodnota by totiž bez problému prošla kontrolou2 správného formátu. Důvodem
umístění
procedur
jako
samostatných
je
rozložení
zátěže.
Nepředpokládá se, že uživatel bude často zadávat záporné částky nákupní nebo prodejní ceny. 7.9.
Procedura TForm1.TabSheet1Show – Vyhledat zboží
1) Přiřadí globální proměnné zobrazeni2 hodnotu true3. 2) Zajišťuje aktuálnost obsahu Comboboxu8, který slouží pro změnu parametru Druh zboží (referenčním je Combobox3 pro vyhledávání podle parametru Druh zboží).
1
Sice ještě neexistuje artikl s novým druhem zboží a nebude podle něj nic vyhledáno, ale Combobox3 slouží jako reference platných druhů pro Combobox8 (viz kapitola 7.20, bod 4). Podporou pro toto řešení je i skutečnost, že aktualizace comboboxu3 by musela být zajištěna procedurou TForm1.TabSheet1Show. Taková procedura by se vykonávala častěji (než jednorázové přidání) a kladla by zbytečný nárok na zdroje počítače. 2 kontrola viz kapitola 7.4, bod 4 3 více o globální proměnné zobrazeni2 v kapitole 7.19 Procedura TForm1.Button11Click
35
3) Skrývá při přechodu z jiného TabSheetu detail zobrazovaného zboží1.
7.10.
Procedury zamezující zdání vyhledávání podle více parametrů –
TabSheet1 – Vyhledat zboží Výčet uvedených procedur slouží k vyprázdnění „nezúčastněných“ comboboxů pro zadávání vyhledávání zboží. Mění-li uživatel hodnotu jednoho z parametrů vyhledávání, vymaže se aktuální hodnota ostatních comboboxů. Tím se zamezuje zdání vyhledávání podle více jak jednoho z parametrů. Procedury také slouží pro správnou funkci buttonu4 (Vyhledej zboží – viz následující kapitola 7.11). -
TForm1.Combobox2Click
-
TForm1.Combobox3Click
-
TForm1.Combobox4Change
-
TForm1.Combobox5Change
-
TForm1.Combobox6Change
-
Tform1.Combobox7Change Jelikož jsem se zpočátku domníval, že pro zajištění výše popsané funkce jsou
procedury Change a Click zaměnitelné, nebylo pro mě prioritou, kterou z nich použiji. Pokračoval jsem v programování a přidával další procedury. Při jejich odlaďování jsem si všiml, že existence pouze těchto procedur nezajistí zmíněnou funkci zcela. Má-li být funkce zajištěna kompletně, musí být použita pro každou jednotlivou komponentu jak procedura Change, tak procedura Click. Výčet procedur je doplněn v kapitole 7.17.
1
Striktně skrývá formulář pro editaci zboží, kde je znázorňována i nákupní cena. Proměnná zobrazeni2 řídí správnou funkci Buttonu11 (Zobraz detail/Skryj detail).
36
7.11.
Procedura TForm1.Button4Click – button VYHLEDEJ ZBOŽÍ,
TabSheet1 – Vyhledat zboží 1) Nastaví vlastnost Visible pro labely určené k zobrazení parametrů vyhledaného zboží na hodnotu false. 2) Přiřadí globální proměnné (zobrazeni) pro listování položkami vyhledaného zboží hodnotu 1. 3) Vynuluje globální proměnnou pocet_vyhl, která počítá vyhledané artikly. 4) Inicializuje pole vyhledane pro zaznamenávání vyhledaných artiklů. 5) Zkoumá, podle kterého parametru má vyhledávat. Prvním zkoumaným parametrem je Kód zboží (podle zbylých parametrů se vyhledává analogicky). Kódu zboží odpovídá Combobox2, proto se ptá je-li neprázdný1. 6) Porovnává hodnotu Comboboxu2 s kódy zboží načtených v poli zbozi. 7) Nalezne-li shodu, přidá artikl do pole vyhledane (na pozici řízenou proměnnou pocet_vyhl). 8) Zobrazí Label28, jehož Caption je naplněno informací o výsledku vyhledávání. Tento bod přirozeně není podmíněn nalezením alespoň jednoho artiklu, aby program vypisoval i informaci o nalezení nula záznamů. 9) Zato zobrazení parametrů první vyhledané položky (pole vyhledane, index 0) musí být podmíněno nalezením alespoň jednoho artiklu. 10) Automaticky je prvním vyhledaným artiklem předvyplněn formulář pro editaci zboží (přístupný Buttonem11 – Zobraz detail/Skryj detail). Opět podmíněno nalezením alespoň jednoho artiklu.
1
Není nutné trimovat text comboboxu, jelikož se jedná o vyhledávání, nikoliv zápis artiklu. Navíc je poměrně nesnadné vepsat neexistující hodnotu bez povšimnutí, že něco není v pořádku (všech šest comboboxů má vlastnosti AutoComnplete a AutoDropDown nastaveny na true).
37
11) Inicializuje hlášení ztvárněné Labelem43 (umístěno nad buttony Předchozí a Další1). Label43 nese informaci o pořadí aktuálně zobrazovaného artiklu z celkového množství vyhledaných.
Zajímavostí je postup při vyhledávání podle parametru prodejní cena, kde by mohl nastat problém s porovnáváním ručně vepsané částky do řádku Comboboxu6. Porovnávají se proto hodnoty textově vyjádřená cena z pole zbozi a hodnota Comboboxu6. Číselné porovnávání by bylo zbytečně mnohem náročnější na zdroje počítače. Poslední blok kódu této procedury slouží k vypsání veškerých záznamů (nebyl zadán žádný parametr). Pole zbozi je nakopírováno2 do pole vyhledane.
7.12.
Procedury TForm1.Button6Click a TForm1.Button5Click, buttony
PŘEDCHOZÍ A DALŠÍ, TabSheet1 – Vyhledat zboží Procedury obsluhující buttony Předchozí a Další. Procedury pouze posuzují, má-li smysl listovat v obsahu pole vyhledane. Pro button Další je rozhodujícím parametrem posuzování globální proměnné pocet_vyhl. Jednička pak pro button Předchozí (jednička prezentuje první prvek v poli vyhledane). Zároveň s listováním se aktualizují i předvyplněné hodnoty ve formuláři pro zápis změn3. Procedury zároveň příslušně mění hodnotu globální proměnné zobrazeni.
1
Popis funkce buttonů Předchozí a Další viz procedury TForm1.Button5Click a TForm1.Button6Click, kapitola 7.12 2 Pole je nutné zkopírovat, aby jiné procedury zacházeli jednoduše vždy s polem vyhledane. 3 přístupný Buttonem11 – Zobraz detail/Skryj detail
38
7.13.
Procedury s grafickým účelem – 2.část, TabSheet2 – Přidat
nové zboží Ze stejného důvodu, jako v kapitole 7.5, uvádím pouze výčtem: -
TForm1.Edit1Change
-
TForm1.Edit2Change
-
TForm1.Edit3Change
-
TForm1.Edit4Change
-
TForm1.Edit5Change
-
TForm1.Edit6Change
-
TForm1.Edit7Change
7.14.
Procedura TForm1.Button7Click – button PŘIDAT K NÁKUPU,
TabSheet1 – Vyhledat zboží 1) Test smysluplnosti vykonání procedury. Zkontroluje se, zda je zobrazována hodnota parametru Kód zboží, tudíž je-li zobrazované nějaké zboží. Ze stavby kódu je tím také ověřeno, že pole vyhledane není prázdné. 2) Kontrola nepokouší-li se uživatel prodat (připsat do pokladny) více kusů než je evidováno skladem. 3) Přidání zobrazovaného artiklu do pole nakup1. 4) Aktualizace pole zbozi. Podle unikátního kódu zboží se vyhledá shodný artikl v poli zbozi a je odečten počet kusů, který byl přidán k nákupu. 5) Labelu42 pro zobrazování parametru počtu kusů skladem je přiřazena aktuální hodnota. 6) Vypočte se cena položky nákupu (pro případy nákupu více kusů jednoho artiklu). 7) Do Mema2 (memo pokladny) se zapíše naformátovaná2 položka nákupu.
1 2
Pole nakup bylo inicializováno při spuštění aplikace – kapitola 7.3, bod 1. Využitím funkce standard2 popsané v kapitole 7.2 Definice funkcí.
39
8) Hodnota SpinEditu2 (zadávání počtu kusů, které se mají přidat k nákupu) je nastavena zpět na jedna1. 9) Připočte se suma položky k celkovému součtu pokladny2 (Label49).
7.15.
Procedura TForm1.Button9Click – button STORNO, Form1 –
prostor Pokladny Navrácení nepotvrzeného3 nákupu zpět. 1) Každý artikl v poli nakup je porovnán s artikly v poli zbozi a je-li zde shoda kódu zboží, přičte se počet kusů z pole nakup ke kusům v poli zbozi. 2) Při příležitosti procházením pole nakup se též hlídá, aby případně byla aktualizována i hodnota počtu kusů skladem zobrazovaného zboží. 3) Memo2 (Pokladna) se vymaže. 4) Z estetických důvodů se do Mema2 přidá prázdný řádek. 5) Součtu celkové sumy v pokladně je přiřazena hodnota 0,00. 6) Globální proměnná pro počítání počtu kusů nákupu (pocet_nakup) je vynulována.
1
Není časté, aby uživatel následně přidával stejný počet jiného artiklu. Jeden kus je výchozí hodnotou nového přidávání k nákupu. 2 Pokladna je vždy formátována funkcí standard. Funkce standard je popsána v kapitole 7.2 Definice funkcí. 3 Nepotvrzeného = nebyl použit Button8 - OK. Procedura TForm1.Button8Click je popsána v kapitole 7.16.
40
7.16.
Procedura TForm1.Button8Click – button OK, Form1 –
prostor Pokladny Button8 dokončí prodej. Jeho úkolem je mimo jiné zapsat změněné pole zbozi do souboru zbozi.txt. Vyjma tohoto případu se během chodu programu vyhází pouze z pole zbozi (aby byl minimalizován počet přístupů k souboru). 1) Celá procedura je podmíněna alespoň jednou položkou nákupu. Memo2 z estetických důvodů již obsahuje jeden prázdný řádek1, čili počet řádků Mema2 pro dokončení prodeje musí být vyšší než jeden. 2) Pole zbozi, které je již aktualizováno od přidání artiklu k nákupu (kapitola 7.14, bod 4), se zapíše do souboru zbozi.txt. 3) Pomocné Memo3 (uživateli skryté) se naplní ze souboru statistiky.txt daty o již proběhlých prodejích. 4) Do Mema3 jsou přidány vybrané parametry artiklů z pole nakup. Novým parametrem je datum, které bude sloužit k zobrazení statistik za určitá období2. 5) Obsah Mema3 je i s novými údaji zapsán do souboru statistiky.txt. 6) Memo3 je vymazáno (při dalším nákupu musí být prázdné, aby se příště přidávala pouze nová statistika). 7) Memo2 (Pokladna) se vymaže. 8) Součtu celkové sumy v pokladně je přiřazena hodnota 0,00. 9) Globální proměnná pro počítání počtu kusů nákupu (pocet_nakup) je vynulována.
1
Memo2 obsahuje jeden prázdný řádek již od překladu zdrojového kódu. Také po stornování nákupu je jeden prázdný řádek respektován (viz kapitola 7.15, bod 4). 2 Zobrazení statistik je popsáno v kapitole 7.22 Procedury TForm1.Button13Click a TForm1.Button14Click.
41
7.17.
Procedury zamezující zdání vyhledávání podle více parametrů –
TabSheet1 – Vyhledat zboží Výčet procedur je pokračováním kapitoly 7.10, kde se nachází popis jejich účelu. Na tomto místě je uvádím v souladu s řazením zdrojového kódu, které kopíruje postup realizace. -
TForm1.Combobox2Change
-
TForm1.Combobox3Change
-
TForm1.Combobox4Click
-
TForm1.Combobox5Click
-
TForm1.Combobox6Click
-
TForm1.Combobox7Click
7.18.
Procedura TForm1.Button10Click – button UKONČIT PROGRAM,
Form1 – Prostor pokladny Button10 je v aplikaci spíše z estetických důvodů a jeho účelem je ukončení programu.
7.19.
Procedura TForm1.Button11Click - button
ZOBRAZIT DETAIL/SKRÝT DETAIL, TabSheet1 – Vyhledat zboží Procedura slouží ke správné obsluze Buttonu11, který zobrazuje respektive skrývá detail aktuálně zobrazovaného artiklu. Globální proměnná zobrazeni2 je zavedena proto, aby nebylo možné zobrazit komponenty detailu zboží (jinak také formulář pro změnu parametrů), není-li žádné zboží zobrazováno.
42
7.20.
Procedura TForm1.Button12Click – button ZAPIŠ ZMĚNY,
TabSheet1 – Zapiš změny (Formulář pro změnu parametrů) Button je uživateli zpřístupňován Buttonem11 (kapitola 7.19). 1) Připraví se referenční hodnota pro kontrolu, zda se uživatel nepokouší evidovat záporný počet kusů. Referencí je zobrazovaný údaj u Počet skladem1. 2) Na rozdíl od SpinEditu2 (počet kusů pro přidání k nákupu) je SpinEditem3 (editace parametru) možno zadávat záporné hodnoty. Je tedy nutné ohlídat, aby absolutní hodnota záporného čísla nebyla větší než počet evidovaných kusů skladem. 3) Textové řetězce formuláře pro změnu parametrů se trimují. 4) Zadaný druh zboží v Comboboxu8 pro změnu druhu zboží se porovná s hodnotami v Comboboxu3 (pro zadávání vyhledávacího parametru druh zboží), kde jsou načteny všechny2 platné druhy zboží. 5) Ověření zda kontrola druhu zboží proběhla pozitivně. 6) Dále probíhá testování hodnot vepsaných do editů nákupní a prodejní ceny. Použitý algoritmus je shodný s algoritmem popsaným v kapitole 7.4, bod 4. 7) Dále proběhnou kroky shodné s následujícími body kapitoly 7.4: -
bod 5, kontrola vztahu nákupní a prodejní ceny,
-
bod 7, zaokrouhlení nákupní a prodejní ceny, Proběhne také aktualizace obsahů comboboxů pro zadávání parametru
Vyhledávání
zboží.
Aktualizace
spočívá
pouze
v přidání
nových
hodnot
a do opětovného spuštění aplikace se v comboboxech budou nacházet hodnoty, pro které již nemusí být nalezen žádný artikl3.
1
Hodnota je textový řetězec tvaru ‚X mezera ks‘, kde X je žádaná hodnota, proto se v přípravě textový řetězec zkrátí o poslední tři znaky. 2 Combobox3 je aktualizován i novým druhem zboží (z přidávání nového druhu zboží na TabSheet2 – Přidat nové zboží), přestože ještě žádný artikl daného druhu zboží neexistuje (viz kapitola 7.6, bod 7). Nehrozí tak situace, že by uživatel nemohl změnit hodnotu parametru Druh zboží na právě přidaný nový druh zboží. 3 Byla-li změněna hodnota parametru, který byl před změnou použit pouze u jednoho artiklu. Hodnoty jsou zde ponechány pro kontrolu úspěšné změny pomocí vyhledávání.
43
Také se neaktualizují obsahy Comboboxů 2 respektive 3 (Kód zboží respektive Druh zboží). Kód není možné měnit vůbec, jelikož se jedná o parametr s významem primárního klíče a nový druh zboží se v editaci parametrů nedá zavést. 8) Aktualizuje se pole zbozi a pole vyhledane. 9) Labelům pro výpis parametrů zobrazovaného artiklu je přiřazena aktuální hodnota. 10) Aktualizované pole zbozi se zapíše do souboru zbozi.txt. 11) SpinEditu3 pro změnu počtu kusů skladem je přiřazena nula1.
7.21.
Procedura TForm1.TabSheet4Show - Statistiky
1) Inicializuje se pole sta. 2) Pole sta se naplní daty o proběhlých prodejích (ze souboru statistiky.txt). 3) Edity pro zadávání uživatelských datumů jsou naplněny aktuálními hodnotami (vyjma dne a měsíce počátečního datumu).
7.22.
Procedury TForm1.Button13Click a TForm1.Button14Click –
buttony ZOBRAZIT, TabSheet4 - Statistiky Procedura Buttonu14 se od procedury Buttonu13 liší intuitivně. Při používání vnitřně generovaných datumů není třeba žádná kontrola. Počáteční datum je přiřazeno pomocí funkce case of a vlastnosti ItemIndex RadioGroupu12. 1) Hodnoty vepsané do editů pro zadávání datumů se trimují. 2) Jednotlivé edity jsou testovány procedurou val. Zároveň se provádí základní testování datumů (měsíc nesmí být vyšší než 12 a den nesmí převyšovat číslo 31).
1 2
Předchází se omylu, že by uživatel u následné editace opět upravoval počet kusů. Na TabSheetu3 – Statistiky jsou předdefinovaná období 7,14,21 a 28dní.
44
3) Proběhne-li testování pozitivně, spojí se edity do jednoho řetězce (odděleného tečkami) a řetězec se zkouší převést na datum pomocí funkce strtodate1. 4) Pokud bylo napočítáno nula zákazníků (proměnná zakaznici), vypíší se nulové hodnoty statistiky. 5) Pro nenulový počet zákazníků se vypočítají a zobrazí statistiky2.
7.23.
Procedury TForm1.Button15Click a TForm1.Button16Click –
buttony ZOBRAZIT A ZOBRAZIT VEŠKERÉ ZBOŽÍ, TabSheet5 – Stavy zboží Procedura Buttonu15 slouží k výpisu artiklů, jejichž stav skladem je nízký. Limitující hodnotu zadává uživatel. Procedura Buttonu16 slouží k výpisu veškerého evidovaného zboží (formátovaný výpis pole zbozi, tím pádem i souboru zbozi.txt). Procedury se liší intuitivně. 1) Vymaže se Memo4 pro výpis artiklů. 2) Trimuje se obsah Editu21 pro zadávání limitující hodnoty. 3) Pomocí procedury val se kontroluje správnost vepsané hodnoty. 4) Je-li vepsaná hodnota nečíselná nebo neceločíselná neprojde procedurou val. Průchod k výpisu artiklů je také podmíněn nezáporností hodnoty. 5) Test má-li se přidat záhlaví pro výstup formátovaný pro export a případné přidání záhlaví do Mema4. 6) Pokud
je
hodnota
RadioGroup2.ItemIndex
rovna
nule
(je
vybrán
formátovaný výpis), postupně se hledají artikly (v poli zbozi) se stavem nula
1
Uvědomuji si, že základní testování datumů v bodě 2 této procedury je nedostačující. Nenašel jsem však funkci, která by jednoduše umožňovala podchytit neexistující datum. Chybové hlášení, které program v takovém případě vrátí, jsem uvedl v uživatelské příručce i s odůvodněním příčiny a řešením (viz Příloha 1). 2 Způsob výpočtu jednotlivých hodnot statistiky je uveden v kapitole 6.4 uživatelské příručky. Vzhledem k sortimentu firmy Autodoplňky Ondřej Horniecký a na přání zadavatele, jsou vypočítané částky zaokrouhlovány na celá čísla.
45
až uživatelem zadaná limitující hodnota1. Vyhovující artikly se vypisují do Mema4 (formátované funkcí standard22). 7) Je-li hodnota RadioGroup2.ItemIndex rovna jedné, uživatel vybral možnost výpisu pro export a artikly (shodně vyhledané jako v bodě 6) se do Mema4 vypisují odděleny středníkem (bez formátujících mezer)3. 8) Je zobrazena informace, kolik takových artiklů bylo nalezeno.
7.24.
Procedury TForm1.Edit15Exit a TForm1.Edit11Exit
Procedury odmazávající znaménko mínus ze začátku textových řetězců v editech 15 a 16 (určených pro změnu parametrů nákupní a prodejní ceny; TabSheet1 Vyhledat zboží, formulář pro editaci parametrů). Tyto procedury byly původně opomenuty a doplnili se až po testování programu.
1
Postup vyhledávání je takto zvolen pro výpis řazený podle počtu kusů. Funkce standard2 viz kapitola 7.2 Definice funkcí. 3 Standardní výpis pro předávání hodnot mezi programy. Takto vypsaná data lze zkopírovat například do programu Microsoft Excel, rozdělit podle oddělovače „středník“ do sloupců a dále data zpracovávat. Program neošetřuje, aby nebyl středník použit jako součást některé hodnoty. Nicméně tato funkce slouží spíše mně, jakožto realizátorovi a technikovi programu, kterému je tato skutečnost známa. Zamezování použití středníku v parametrech by relativně zbytečně prodlužovalo zdrojový kód a zejména by kladlo zbytečné nároky na zdroje počítače. 2
46
8. ZÁVĚR Návrh, vývoj a implementace programu proběhly úspěšně. Základní návrh aplikace, o kterém bych dnes mluvil spíše jako o návrhu databáze s přidruženými obsluhujícími funkcemi, byl poměrně snadný. Navrhnout uživatelské prostředí bylo omezeno především širokoúhlou plazmovou obrazovkou s nízkým rozlišením, ale s využitím komponenty PageControl byl tento problém snadno překonán. Opravdový návrh aplikace ve skutečnosti probíhal až při vývoji. Provázanost entit byla definována s postupným přidáváním dalších funkcí a při realizaci jsem vycházel z bohatých zkušeností s předchozími verzemi programu Evid. Největším úkolem při programování aplikace Evid v. 3.0 tak pro mě vlastně byl návrh zefektivnění postupů předchozích verzí. Popis změn by však vydal na poměrně rozsáhlou práci. Implementace proběhla bez nejmenších problémů, jelikož jsem při realizaci vycházel striktně z požadavků zadavatele a byly zohledněny připomínky k předchozím verzím. Neocenitelnou osobní zkušeností z tohoto projektu je pro mě přiznání absolutního významu kvalitnímu návrhu, který by měl obsahovat nejen základní, ale i zdánlivě podružné vazby.
47
9. SEZNAM ZDROJŮ:
Použité zdroje: Richard
Papík,
Martin
Souček;
Ústav
informačních
studií
a
knihovnictví,
Filozofická fakulta, Univerzita Karlova, Praha; Zpřístupňování textových informací z profesionálních zdrojů. Databázová centra, databáze a digitální knihovny., dostupné z http://www.fi.muni.cz/znalosti2004/zn04_tut_papik.pdf [cit. 5.11.2007] Miroslav Padalík; AURA, s.r.o., Brno; Automatizovaná tvorba informačních systémů, dostupné z http://si.vse.cz/archiv/clanky/1999/padalik.pdf [cit. 5.11.2007] Helena Kučerová; Vyšší odborná škola informačních služeb, Praha; Domovská stránka dostupné z http://info.sks.cz/users/ku/ [cit. 5.11.2007] Jiří Voříšek; Vysoká škola ekonomická v Praze; Vliv globálních ICT trendů na změny požadavků trhu na ICT specialisty, dostupné z http://si.vse.cz/archiv/clanky/2006/vorisek1.pdf [cit. 5.11.2007] Milena Tvrdíková; VŠB-TU Ostrava; Příprava společnosti na zavádění a inovace informačního systému, dostupné z http://si.vse.cz/archiv/clanky/2001/tvrdikov.pdf [cit. 5.11.2007] Jiří Pavlíček; Ostravská univerzita v Ostravě; Systémy a jejich projektování dostupné z http://www.osu.cz/fpd/kik/dokumenty/itvv/systemy_projektovani.pdf [cit. 5.11.2007] Archiv Inforum; Konference o profesionálních informačních zdrojích, dostupné z http://www.inforum.cz/archiv/ [cit. 5.11.2007] Pavel Drbal; Vysoká škola ekonomická v Praze; Extrémní programování a metodický přístup, dostupné z http://honor.fi.muni.cz/tsw/2002/023.pdf [cit. 5.11.2007]
48
Hana Netrefová, Milan Šorm; Ústav informatiky PEF MZLU v Brně; Metody zvyšování uživatelské přívětivosti informačních systémů, dostupné z https://akela.mendelu.cz/~hanac/papers/netrefova_sorm_edamba03.pdf [cit. 5.11.2007] konjunktura.cz; Informační server, dostupné z http://www.konjunktura.cz/ [cit. 5.11.2007] Richard Papík; Ústav informačních studií a knihovnictví FF UK; Vyhledávání informací II., Uživatelské rozhraní a vlivy oboru „Human-Computer Interaction“, dostupné z http://full.nkp.cz/nkkr/pdf/0102/nk0102081.pdf [cit. 5.11.2007] Ikaros.cz; Elektronický časopis o informační společnosti, dostupné z http://www.ikaros.cz/ [cit. 5.11.2007] CVIS; Centrum pro Výzkum informačních Systémů, dostupné z http://www.cvis.cz/index_cz.htm [cit. 5.11.2007] UNICON, a.s.; Elektronická správa dat a informací, dostupné z http://www.unicorn.cz/cz/press/clanek.php?id=15102 [cit. 5.11.2007] Ing. Jan Bláha – Blahasoft, Švihov 340 12, IČO: 69274533; http://obchod.blahasoft.cz/software/ekonom-system [cit.14.12.2007] Delphi Help, Borland Delphi Enterprise Version 7.0 (Build 4.453), Borland Software Corporation
49
Další zdroje DM UES 1.0 beta; freeware program určený k evidenci libovolných entit, dostupný z http://www.stahuj.cz/podnikani_a_domacnost/databaze/ostatni/dmues/download/?g[hledano]=&g[oz]=1.0&g[up]=beta [cit. 5.11.2007] NET servis, s.r.o.; společnost věnující se vývoji software na zakázku, dostupné z http://www.netservis.cz [cit. 5.11.2007] Software Petr Zajíc; společnost věnující se vývoji software na zakázku, dostupné z http://www.xzajic.cz/ [cit. 5.11.2007] Financial Systems Development, s.r.o.; společnost věnující se vývoji software na zakázku, dostupné z http://www.fsd.cz/ [cit. 5.11.2007] T-soft, s.r.o.; společnost věnující se vývoji software na zakázku, dostupné z http://www.tsoft.cz/index.php?q=cz/index [cit. 5.11.2007] THINline interactive s.r.o.; společnost věnující se vývoji software na zakázku, dostupné z http://www.thinline.cz/ [cit. 5.11.2007] Petr Březina; společnost věnující se vývoji software na zakázku, dostupné z http://www.bre.cz/index.php [cit. 5.11.2007]
50
10.SEZNAM OBRÁZKŮ Obr. 1 Úvodní obrazovka .......................................................................................... 15 Obr. 2 Přidávání nového zboží .................................................................................. 16 Obr. 3 Statistiky ......................................................................................................... 16 Obr. 4 Stavy zboží ..................................................................................................... 17 Obr. 5 Změna parametrů ............................................................................................ 23 Obr. 6.1 Příklad chybového hlášení ........................................................................... 26 Obr. 6.2 Příklad dotazovacího hlášení ....................................................................... 26 Obr. 6.2 Příklad informativního hlášení .................................................................... 26
51
11.SEZNAM PŘÍLOH Příloha 1 (počet stran 2) ............................................................................. Tabulky hlášení Příloha 2 (počet stran 44) ............................................................................... Zdrojový kód Příloha 3 ......................................................................................... CD souborů Evid v. 3.0