Diplomová práce. Informační systém pro podporu obchodní činnosti



Podobné dokumenty
8.2 Používání a tvorba databází

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové a informační systémy Informační systém prodejny nábytku. Jakub Kamrla, KAM087

Databáze I. 5. přednáška. Helena Palovská

FIREBIRD relační databázový systém. Tomáš Svoboda

Úvod do databázových systémů

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Databázové systémy úvod

Databáze II. 1. přednáška. Helena Palovská

Databázové a informační systémy

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Databázové systémy trocha teorie

ARCHITEKTURA INFORMAČNÍCH SYSTÉMŮ PODLE ÚROVNĚ ŘÍZENÍ

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

UDS for ELO. Univerzální datové rozhraní. >> UDS - Universal Data Source

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

1. Webový server, instalace PHP a MySQL 13

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Microsoft Access tvorba databáze jednoduše

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen

Maturitní témata Školní rok: 2015/2016

Modelování procesů s využitím MS Visio.

Business Intelligence

Databázové systémy a SQL

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

Použití databází na Webu

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

1 Webový server, instalace PHP a MySQL 13

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK3PH (vm3bph)

Architektury Informačních systémů. Jaroslav Žáček

Vývoj IS - strukturované paradigma II

SQL - trigger, Databázové modelování

PRODUKTY. Tovek Tools

Allegro účetnictví. Schéma účetního modulu. Podstatné vlastnosti. Allegro Business Solution Účetnictví

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu:

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje

Úvod do databázových systémů. Ing. Jan Šudřich

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Profilová část maturitní zkoušky 2017/2018

Architektury Informačních systémů. Jaroslav Žáček

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Jak používat statistiky položkové v systému WinShop Std.

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

PRODUKTY. Tovek Tools

Úvod do databázových systémů

Úloha 1. Úloha 2. Úloha 3. Text úlohy. Text úlohy. Text úlohy

Databázové a informační systémy Jana Šarmanová

4IT218 Databáze. 4IT218 Databáze

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databáze I. 1. přednáška. Helena Palovská

Delphi - objektově orientované

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

CASE nástroje. Jaroslav Žáček

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Institut elektronických aplikací, s.r.o. Stránka 1 z 7. AVEPOP - Automatický Výdej a Evidence Pracovních a Ochranných Prostředků

IS Restaurace. Semestrální práce. Tomáš Rumíšek V Brně dne Peter Ševčík

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Obsah. Zpracoval:

Úvodní přednáška. Význam a historie PIS

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Architektura informačních systémů. - dílčí architektury - strategické řízení taktické řízení. operativní řízení a provozu. Globální architektura

DUM 12 téma: Příkazy pro tvorbu databáze

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Sada 1 - Základy programování

Profilová část maturitní zkoušky 2013/2014

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Objekty, třídy, vazby 2006 UOMO 30

Objektově orientované databáze. Miroslav Beneš

PŘEHLED FUNKCÍ PROGRAMU KROK ZA KROKEM

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

10 Metody a metodologie strukturované analýzy

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Allegro obchodní doklady

Databázové systémy úvod

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Systém elektronického rádce v životních situacích portálu

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

Specifikace požadavků. POHODA Web Interface. Verze 1.0. Datum: Autor: Ondřej Šrámek

MBI - technologická realizace modelu

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

Transkript:

Diplomová práce Informační systém pro podporu obchodní činnosti vypracoval: Václav Klofera vedoucí práce: Ing. Vladimír Dumek, Ph.D. obor: Inženýrská informatika a automatizace specializace: Informatika 2006

ANOTACE Diplomová práce se zabývá návrhem a realizací informačního systému pro podporu obchodní činnosti. Řešení je realizováno pomocí vývojového prostředí Delphi s použitím relačního databázového systému MySQL. ANNOTATION The thesis deals with design and realization of the information system for business support. IDE Delphi and the relational database system MySQL were used for development of this information system.

PODĚKOVÁNÍ Děkuji panu Ing. Vladimíru Dumkovi, Ph.D., za vedení mé diplomové práce a za jeho podnětné rady a připomínky. PROHLÁŠENÍ Prohlašuji, že jsem tuto práci vypracoval samostatně podle rad a pokynů svého vedoucího diplomové práce pana Ing. Vladimíra Dumka, Ph.D. Pro vypracování jsem použil literaturu a zdroje uvedené na konci práce. V Brně dne 26. 5. 2006

Informační systém pro podporu obchodní činnosti Strana 9 OBSAH Obsah... 9 Seznam použitých symbolů a zkratek... 11 1 Úvod... 13 2 Informační systémy... 15 2.1 Informace a systém... 15 2.1.1 Charakteristika informace... 15 2.1.2 Pojem systém... 15 2.2 Informační systém... 17 2.3 Tvorba informačních systémů... 18 3 Realizační prostředky... 19 3.1 Objektově orientované programování... 19 3.2 Vývojové prostředí Delphi... 20 3.2.1 Historie... 20 3.2.2 Možnosti Delphi... 20 3.2.3 Komponenta Zeos... 21 3.3 Jazyk SQL... 22 3.3.1 Základní příkazy... 22 3.3.2 Transakce... 24 3.3.3 Izolační úrovně transakcí... 25 3.4 Databázový systém MySQL... 26 3.4.1 Charakteristika... 26 3.4.2 Typy tabulek... 27 3.5 Použité prostředky... 28 4 Specifikace požadavků... 29 4.1 Momentální stav... 29 4.2 Požadavky na systém... 29 5 Datová a funkční analýza... 31 5.1 Datový model systému... 31 5.1.1 Tok dat v systému... 31 5.1.2 Návrh datového modelu... 32 5.2 Funkce systému... 33 5.3 Návrh databáze... 34 5.3.1 Normalizace databáze... 34 5.3.2 Návrh struktury databáze... 35

Strana 10 Informační systém pro podporu obchodní činnosti 6 Implementace... 43 6.1 Vytvoření databáze... 43 6.1.1 Tvorba tabulek... 43 6.2 Datové třídy... 44 6.2.1 Datový modul... 44 6.2.2 Třída Class_Generic... 45 6.2.3 Třída ClassObjednavka... 47 6.2.4 Ostatní datové třídy... 48 6.3 Konfigurace aplikace... 48 6.3.1 Třída TSchemata... 48 6.3.2 Konfigurační soubor... 48 6.3.3 Třída TNastaveni... 48 6.4 Grafické rozhraní aplikace... 49 6.4.1 Hlavní formulář aplikace... 49 6.4.2 Připojení... 50 6.4.3 Formuláře entit... 50 6.4.4 Formulář Editace objednávky... 52 6.4.5 Formulář Editace faktury... 53 6.4.6 Faktura... 54 6.4.7 Statistiky... 55 6.4.8 Uživatelská nastavení... 55 6.5 Instalace a požadované prostředky... 56 7 Závěr... 57 8 Seznam použité literatury... 59

Informační systém pro podporu obchodní činnosti Strana 11 SEZNAM POUŽITÝCH SYMBOLŮ A ZKRATEK ANSI BDB CORBA CSV DFD DLL DNS E-R GNU GPL IDE IDEF INI InnoDB IP ISAM LAN LGPL MDI MEIN MERISE OOP PHP RAD RDBMS SDM SQL SSADM VCL WIN32 API XML American National Standards Institute Berkeley Database Common Object Request Broker Architecture Comma-Separated Values Data Flow Diagram Dynamic-Link Library Domain Name System Entity Relationship GNU s Not Unix General Public License Integrated Development Environment Integrated Definition Initialization File Inno Database Internet Protocol Indexed Sequential Access Method Local Area Network Lesser General Public License Multiple Document Interface Methodologia Informatica Methode d'etude et de Realisation Informatique pour les Systemes d'enteprise Object Oriented Programming PHP Hypertext Preprocessor, původně Personal Home Page Rapid Application Development Relational Database Management System Sytem Development Methodology Structured Query Language Structured System Analysis and Design Method Visual Component Library 32-bit Windows Application Interface Extensible Markup Language

Informační systém pro podporu obchodní činnosti Strana 13 1 ÚVOD Bez počítačové podpory se v současné době neobejde takřka žádná organizace. Firmy dnes používají hardwarové a softwarové vybavení, které jim umožňuje přehledně vytvářet a zpracovávat doklady vystavované klientům. Na našem trhu se nachází několik takových softwarových produktů. Pokud ale tyto produkty nevyhovují požadavkům firmy, je firma nucena vyvinout vlastní systém, který odpovídá zavedeným vnitrofiremním postupům a zvyklostem. Diplomová práce navrhuje řešení informačního systému pro firmu provozující druhým rokem internetový obchod Moře her na adrese www.more-her.cz. Obchod nabízí hry, stavebnice, hračky a jiný sortiment pro volný čas určený jak pro děti, tak dospělé. Dále v sekci Baby program umožňuje výběr zboží pro nejmenší. První část této práce se věnuje informačním systémům obecně. Nastiňuje jejich hlediska rozdělení, jejich úlohy a cíle. Seznamuje se zavedenými postupy používanými při jejich návrhu. V druhé části jsou popsány realizační prostředky, které byly použity pro tvorbu informačního systému. Tato část se věnuje způsobům a možnostem programování v prostředí Delphi ve spojení s relačním databázovým serverem MySQL. Popisuje také jazyk SQL používaný pro jejich vzájemnou komunikaci. V další části jsou uvedeny požadavky firmy a jejich datová a funkční analýza. Jsou zde navrženy tabulky databáze a definice vztahů mezi nimi. Poslední část práce představuje návrh aplikace informačního systému. Věnuje se nejen vytvoření databáze na serveru MySQL, ale také popisu nejdůležitějších datových tříd a popisu uživatelského rozhraní klientské aplikace, která spravuje databázi.

Informační systém pro podporu obchodní činnosti Strana 15 2 INFORMAČNÍ SYSTÉMY 2.1 INFORMACE A SYSTÉM 2.1.1 Charakteristika informace Pojem informace je pojem vysoce abstraktní. V zásadě je informace nový poznatek o určité události jevu obsažený v nějaké zprávě, která má charakter výroku. Odebráním konkrétního obsahu jevu nebo události, o němž se vydávají informace, zůstane jen nějaká množina vzájemně odlišných stavů. Každý objekt může být v každém časovém okamžiku v jednom z mnoha možných stavů. Různé jevy se vzájemně liší počtem možných stavů a zvláštnostmi jejich výběru (pravděpodobností výskytu jednotlivých stavů). Jednotkou informace je jeden bit, který v informatice představuje rozhodnutí mezi dvěma alternativami, nulou a jedničkou. Informace je přenášena a poskytována různými prostředky. Vždy je však vysílána subjektu prostřednictvím nějakého přenosového kanálu. Informace je v určité zprávě obsažená jen tehdy, jestliže u přijímacího subjektu odstraňuje neurčitost. To umožňuje chápat informaci jako něco nového, co momentálně nebo v budoucnosti určitým způsobem ovlivní konání příjemce. Informací tedy míníme sdělení, které odstraňuje nejistotu nebo nevědomost, daty pak míníme jakékoli zaznamenané poznatky či fakta. Jako zvláštní pojem zde vystupuje také znalost představující zobecnění poznání určité části reality. Informaci je možno také chápat jako data s nějakým přidaným významem (informace = data + význam). 2.1.2 Pojem systém Systémem se obecně rozumí soubor prvků, mezi nimiž existují vzájemné vazby. Systém jako celek splňuje nějaký cíl a má určité vztahy ke svému okolí. Každý materiální objekt obsahuje nekonečné množství proměnných a je možné na něm definovat nekonečné množství systémů. Při studiu objektu sledujeme jisté zájmové hledisko, jímž z objektu vymezujeme systém, který je konkrétním předmětem studia. Hranice systému vymezuje samotný systém nebo odděluje více systémů. Logická hranice je hranicí pomyslnou a vymezuje podsystémy v rámci systému. Okolí systému je již hranicí viditelnou. Prvky vně hranice pak ovlivňují chování systému přes jeho vstupy. Nekonečné množství různých systémů lze rozdělit podle různých hledisek: podle povahy prvků: reálné abstraktní podle původu: přírodní umělé

Strana 16 Informační systém pro podporu obchodní činnosti podle fungování: řízené neřízené podle stupně složitosti: jednoduché složité podle vztahu k okolí: otevřené uzavřené podle délky existence: stálé dočasné podle reakce na podněty na vstupech: stabilní nestabilní podle charakteru reakce na působení okolí: aktivní pasivní podle typu signálu: spojité diskrétní podle pravděpodobnosti stavů na výstupu: deterministické stochastické podle závislosti na předchozích hodnotách vstupu: statické dynamické. objektivní realita (nekonečná hmota) SYSTÉM (určité zájmové hledisko) objekt okolí Obr. 1: Systém a jeho zařazení do reality. Systémy se skládají ze vstupů, procesů a výstupů. Každý systém je charakterizován dvěma základními vlastnostmi: Chování systému: charakterizuje jeho vnitřní funkční vztahy. Chování systému je závislost mezi podněty okolí působícími na jeho vstup a příslušnými odezvami objevujícími se na jeho výstupu. Struktura systému: charakterizuje jeho vnitřní funkční vztahy. Strukturou systému rozumíme způsob uspořádání (organizaci) vzájemných vazeb mezi prvky systému, ale i chování těchto prvků. Obě tyto vlastnosti systému spolu úzce souvisejí. Určité struktuře jednoznačně odpovídá chování systému a naopak určitému chování systému odpovídá třída struktur, která je definována tímto chováním.

Informační systém pro podporu obchodní činnosti Strana 17 2.2 INFORMAČNÍ SYSTÉM Informační systém (IS) je systém pro sběr, udržování, zpracování a poskytování informací a dat. Vazby v něm jsou chápány jako informace nebo data a prvky jako místa vzniku, sběru, přenosu, uchování, zpracování a distribuce informací. Systém je tedy soubor prostředků vzájemně účelně vybraných a propojených pro automatizované získávání informací potřebných k rozhodování a řízení. Úkolem systému je dobrá informační strategie, tedy jak včas a ve správnou chvíli dodat určitému člověku informaci, kterou právě potřebuje. Obecně chápeme IS jako systém pro zpracování dat, který má tyto cíle: strategické (plánování investic) taktické (vedení, kontrola rozpočtů) operační (každodenní rutina). Důležité jsou také úlohy IS: manažerské (EIS - Executive IS) taktické (DSS - Decision Support System) vedení (MIS - Management IS) expertní (KWS - Knowledge Work System) kancelářské (OIS - Office IS) operativní: transakční (bankovní systémy), CRM (péče o zákazníka), RIS (rezervační systémy), CAM (konstrukční systémy (CAD)), GIS (geografické systémy). Tato práce se zabývá manažerským IS, který podporuje obchodní činnost firmy správou dat o obchodujících subjektech a předmětech obchodování a zpracováním dokumentace obchodní činnosti firmy. INFORMAČNÍ SYSTÉM OKOLÍ SYSTÉMU Vstupy Výstupy Vstupní prvky Výstupní prvky Procesy zpracování informací Datová báze Obr. 2: Model informačního systému.

Strana 18 Informační systém pro podporu obchodní činnosti 2.3 TVORBA INFORMAČNÍCH SYSTÉMŮ Při narůstající složitosti informačních systémů je nutno provádět jejich návrh standardizovanými metodami a upustit od intuitivního navrhování ad hoc. To lze použít pouze pro jednoduché systémy. Existuje množství studií a metodik používaných při tvorbě IS, například: procesně orientované přístupy (DeMarco, Gane/Sarson - velký důraz na DFD) datově orientované přístupy (Warnier/Orr - rozšíření o stavové diagramy) kombinace obou metod (tzv. Yourdonova metoda) strukturované metody (SSADM, MERISE, IDEF, MAIN, SDM, ). V dnešní době se nejvíce používají strukturované metody. Stanovují, jak postupovat a jaké techniky používat pro analýzu, návrh a popis skutečností, jakými jsou: pohyby formulářů, dokumentů, dat a informací ve firmě vztahy mezi údaji používanými ve firmě průběhy procesů ve firmě stavy jednotlivých procesů a vyhodnocení stavu jednotlivých organizačních jednotek i firmy jako celku události, na které má IS reagovat další významné skutečnosti potřebné pro následný návrh IS (objemy dat, periodicita dat, požadovaný stupeň utajení dat apod.). Rozbor zadání Analytické modelování Systémový design Objektový design Implementace Zkušební provoz Nasazení IS Obr. 3: Fáze řízení tvorby a návrhu IS.

Informační systém pro podporu obchodní činnosti Strana 19 3 REALIZAČNÍ PROSTŘEDKY 3.1 OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Objektově orientované programování (OOP) je metodika vývoje softwaru založená na objektech, jejich vlastnostech a operacích s nimi. Některé z vlastností OOP jsou unikátní, jiné (např. abstrakce) jsou běžnou vlastností i jiných vývojových metodik. OOP popisuje nejen způsob vývoje a zápisu programu, ale i způsob, jakým návrhář programu o problému přemýšlí. OOP používá následující techniky a myšlenky: Objekty: jednotlivé prvky modelované reality (jak data, tak související funkčnost) jsou v programu seskupeny do entit, nazývaných objekty. Objekty si pamatují svůj stav a navenek poskytují operace přístupné jako metody pro volání. Abstrakce: programátor, resp. program, který programátor vytváří, může abstrahovat od některých detailů práce jednotlivých objektů. Každý objekt pracuje jako černá skříňka, která dokáže provádět určené činnosti a komunikovat s okolím, aniž by vyžadovala znalost způsobu, kterým vnitřně pracuje. Zapouzdření: zaručuje, že objekt nemůže přímo přistupovat k vnitřním vlastnostem a metodám jiných objektů, což by mohlo vést k nekonzistenci dat. Každý objekt navenek zpřístupňuje rozhraní, pomocí kterého (a ne jinak) se s objektem pracuje. Skládání: objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace. Dědičnost: objekty jsou organizovány stromovým způsobem. Objekty jednoho druhu mohou dědit z jiného druhu objektů, čímž přebírají jejich schopnosti. K nim pouze přidávají svoje vlastní rozšíření. Tato myšlenka se obvykle implementuje pomocí rozdělení objektů do tříd, přičemž každý objekt je instancí nějaké třídy. Každá třída pak může dědit od jiné třídy (v některých programovacích jazycích i z několika jiných tříd). Polymorfismus: odkazovaný objekt se chová podle toho, jaký je jeho skutečný typ. Pokud několik objektů poskytuje stejné rozhraní, pracuje se s nimi stejným způsobem, ale jejich konkrétní chování se liší. V praxi se tato vlastnost projevuje např. tak, že na místo, kde je očekávána instance nějaké třídy, můžeme dosadit i instanci libovolné její podtřídy (třídy, která přímo či nepřímo z této třídy dědí). Dědící třída se může chovat jinak, než by se chovala instance rodičovské třídy, ovšem pouze v rámci hranic daných popisem rozhraní.

Strana 20 Informační systém pro podporu obchodní činnosti Základním principem OOP je snaha modelovat při řešení úloh svět v počítači pokud možno tak, aby činnosti společné všem dědícím objektům byly stejné. Objekty se tedy liší jen vlastnostmi a metodami, které jsou pro daný objekt logicky jedinečné. Použitím této myšlenky mohou při vývoji složitých informačních systémů jednotliví vývojáři používat již vytvořené komponenty, podle potřeby si je upravit nebo je používat jako stavebnici pro sestavování důmyslnějších a složitějších objektů. Při tom je však nezbytné dbát na zodpovědnost objektu, tedy na to, co objekt umí a o co se stará. Existuje velké množství programovacích jazyků umožňujících objektově orientované programování, např. Smalltalk, Java, C++, Object Pascal, C#, Lisp, PHP atd. Tyto jazyky můžeme rozčlenit jako: čistě objektové jazyky, ve kterých se programuje pouze pomocí objektů (např. Smalltalk) hybridní jazyky, ve kterých programátor může a nemusí dodržovat metody OOP (např. C++) objektová rozšíření původně neobjektových jazyků (např. Object Pascal, který vznikl jako rozšíření neobjektového jazyka Pascal). 3.2 VÝVOJOVÉ PROSTŘEDÍ DELPHI Delphi je grafické integrované vývojové prostředí (IDE) vyvinuté firmou Borland. Slouží k tvorbě aplikací pro MS Windows pomocí programovacího jazyka Object Pascal. 3.2.1 Historie První verzi produktu, Delphi 1, vytvořila firma Borland v roce 1995. Představila tak první překladač s grafickým, objektově orientovaným IDE, který významě ovlivnil tvorbu programů pro MS Windows. Následující verze byly vydávány takřka každý rok a přinášely stále nové možnosti a dokonalejší prostředky. Dnes jsou po verzích 1 až 8 dostupné verze 2005 a 2006, které mimo jiné podporují i platformu.net a kromě jazyka Object Pascal také jazyk C#. 3.2.2 Možnosti Delphi Jako každý RAD nástroj má Delphi editor kódu, ladicí program, návrhář formulářů a další nástroje. Umožňuje vizuální návrh grafického uživatelského rozhraní, na jehož základě je automaticky vytvářena kostra zdrojového kódu. To výrazně urychluje vývojový proces aplikace. Programování v Delphi je z velké části založeno na použití komponent. Komponenty jsou dopředu vytvořené objekty, které vykonávají určitou činnost. Dělí se na vizuální (zobrazují např. text nebo obrázky) a nevizuální (např. komunikují s databází). Komponenty

Informační systém pro podporu obchodní činnosti Strana 21 je možno v Delphi vytvářet. Velkou předností Delphi je skutečnost, že knihovny komponent jsou již součástí instalace. Dodávané komponenty významně usnadňují tvorbu aplikací. Kromě samostatných aplikací lze v Delphi vyvíjet také dynamické knihovny DLL, nástroje pro řízení systému, konzolové aplikace, aplikace založené na spolupráci s databázemi i aplikace pro webové servery a práci s internetem. Většina verzí Delphi se dělí na tři typy: Delphi Personal je základní verzí, poskytuje vše potřebné pro tvorbu aplikací a je ideální zejména pro studenty. Tato verze je nabízena zdarma ke stažení s licencí, jež umožňuje pouze tvorbu aplikací pro osobní spotřebu. Delphi Professional je určena profesionálním programátorům a oproti základní verzi obsahuje větší počet komponent, podporu databází včetně databázového serveru InterBase s licencí pro 5 uživatelů, řadu komponent pro vývoj internetových aplikací, grafů a tabulek, nástroj pro tvorbu instalačních programů atd. Od této verze jsou programátorům k dispozici i zdrojové kódy knihoven. Delphi Enterprise je určena pro tvůrce rozsáhlých síťových firemních systémů. Obsahuje podporu standardů XML, CORBA, podporu pro týmový vývoj aplikací, pokročilé nástroje pro tvorbu aplikací založených na jazyku SQL atd. K vytváření vlastních aplikací lze použít mnoho vývojových nástrojů. Delphi dnes patří mezi nejpoužívanější zvláště z několika důvodů. Jsou jimi: grafické IDE typu RAD rychlý a výkonný překladač s optimalizací kódu v jazyku Object Pascal komfortní práce s integrovaným debuggerem dodávané knihovny komponent VCL velké množství volně dostupných komponent snadný návrh pomocí komponent, jejich vlastností a jejich přednastavených reakcí na události vizuální dědičnost formulářů, což představuje maximální spojení OOP a vizuálního návrhu aplikací databázová podpora a podpora internetových aplikací podpora WIN32 API a zpracování v paralelních podprocesech vláknech (multithreading). 3.2.3 Komponenta Zeos Prostředí Delphi, jež bylo použito, samo neumožňuje nativní přístup k databázi. Bylo proto použito balíčku Zeos Database Objects, který je součástí projektu ZeosLib na serveru www.sourceforge.net. Jde o balíček komponent pro nativní přístup aplikace k databázím MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle a DB/2. Komponenty jsou vyvíjeny jako Open Source pro prostředí Delphi, Kylix a C++ Builder a šířeny pod

Strana 22 Informační systém pro podporu obchodní činnosti licencemi GNU GPL, GNU Library a GNU LGPL. Znamená to tedy, že ke zdrojovým kódům produktu má kdokoli přístup, a může tedy přispívat k vývoji opravami, vylepšováním kódu a navrhováním optimalizací. Dostupné zdrojové kódy umožňují vytvořit balíček komponent a ten nainstalovat do vývojového prostředí, v případě této diplomové práce do prostředí Delphi. Balíček obsahuje různé komponenty, z nichž nejdůležitější jsou: TZConnection: zapouzdřuje databázové spojení a transakční operace TZReadOnlyQuery: komponenta typu TDataset k provádění SQL dotazů v neinteraktivním režimu spojení TZQuery: komponenta typu TDataset umožňující změnu dat v normálním a cacheovaném interaktivním režimu TZSQLMonitor: monitoruje všechny odchozí SQL dotazy a zaznamenává informace o spojení. Základní myšlenkou vývoje komponent Zeos je kompatibilita s příslušnými komponentami Delphi. Proto je možné je použít bez obtíží ve spojení s ostatními prostředky Delphi, které pak využívají jejich vlastnosti a metody. 3.3 JAZYK SQL SQL je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích. Vznikl v 70. letech dvacátého století ve firmě IBM jako jazyk, ve kterém by se příkazy tvořily syntakticky co nejblíže přirozenému jazyku (v tomto případě v angličtině). Americký institut ANSI ho přijal poprvé v roce 1986 jako SQL-86. Dnes vychází většina databázových systémů ze zdokonalené verze standardu SQL-92, případně novějších SQL-99 a SQL-2003, které reagují na potřeby práce nejmodernějších databází s objektovými prvky, rekurzivními výrazy, triggery (spouštěmi) nebo exportem dat do XML. 3.3.1 Základní příkazy Dotazy jazyka SQL můžeme rozdělit do 4 základních skupin: Příkazy pro manipulaci s daty: jsou to příkazy pro získání dat z databáze a pro jejich úpravy. Označují se zkráceně DML Data Manipulation Language. Jedná se například o příkazy: o SELECT vybírá data z databáze, umožňuje výběr podmnožiny dat o INSERT vkládá do databáze nová data o UPDATE mění existující záznam v databázi. Příkazy pro definici dat: těmito příkazy vytváříme struktury databáze tabulky, indexy, pohledy a další objekty. Vytvořené struktury můžeme upravovat,

Informační systém pro podporu obchodní činnosti Strana 23 doplňovat a odstraňovat. Tato skupina příkazů se nazývá zkráceně DDL Data Definition Language. Jako příklad lze uvést: o CREATE vytváření nových objektů o ALTER změny existujících objektů. Příkazy pro řízení dat: do této skupiny patří příkazy pro nastavování přístupových práv a řízení transakcí. Označují se jako DCL Data Control Language, někdy také TCC Transaction Control Commands. Jsou to například: o GRANT příkaz pro přidělení oprávnění uživateli k určitým objektům o BEGIN zahájení transakce o COMMIT potvrzení transakce. Ostatní příkazy: do této skupiny se řadí příkazy pro správu databáze. Pomocí nich se přidávají uživatelé, nastavují parametry (kódování, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntax příkazů je zavislá na databázovém systému. V některých dialektech jazyka SQL jsou přidány i příkazy pro kontrolu běhu, takže lze tyto dialekty zařadit i mezi programovací jazyky. Příkladem je například: o SET příkaz pro nastavení proměnných serveru o SOURCE příkaz pro dávkové zpracování souboru příkazů. Při sestavování dotazu SQL se použije příkaz a argumenty podle jeho předepsané syntaxe. Dotazy jsou ukončovány středníkem. Následuje jednoduchý příklad výběru dat z tabulky databáze pomocí příkazu SELECT (při použití tab. 1, viz kap. 5.3.2): SELECT idzakaznika, prijmeni, jmeno, ulice, mesto, psc, email, telefon, nazevspol, ico, dic, bankucet, datum_reg, poznamka FROM tbl_zakaznici; Vkládání do databáze zajišťuje příkaz INSERT (při použití tab. 1, viz kap. 5.3.2): INSERT INTO tbl_zakaznici SET prijmeni= Soukup, jmeno= Karel, ulice= Berkova 1, mesto= Brno, psc= 61200, email= Soukup@firma.cz, telefon= 549123456 ; Příklad syntaxe vytvoření databázové tabulky viz kap. 6.1.1.

Strana 24 Informační systém pro podporu obchodní činnosti Pro nastavení systémových proměnných se užívá příkaz SET, tedy například nastavení maximálního počtu aktuálních připojení k databázi se provede příkazem (v tomto případě pro MySQL): SET Max_used_connections=50; 3.3.2 Transakce Transakční zpracování se považuje za jeden z největších přínosů databází typu klient-server. Transakce totiž minimalizují možné škody při nestandardní situaci. Jejich úkolem je zabezpečit konzistenci dat. Transakční zpracování je obecný koncept, jehož účelem je zajistit integritu jakéhokoliv dynamického systému v rámci přechodu z jednoho konzistentního stavu do druhého. Každá databáze prochází transformacemi v podobě přidávání, změn a rušení záznamů. SQL dotazy se vykonávají jeden po druhém. V případě běžného použití není důležité, v jakém pořadí databáze příkazy vykonává, pokud všechny obslouží rychle. Určité druhy dotazů se však musejí vykonat v konkrétním pořadí. To platí například pro dotazy, které závisejí na výsledcích předchozího dotazu, nebo skupiny aktualizací, jež je zapotřebí vykonat jako celek. Další důvod použití transakcí je v problému fyzického spojení klienta a serveru. Pokud se přistupuje k databázi vzdáleně, je pravděpodobné, že dojde k výpadku spojení. Je tedy možné, že nebude dokončena požadovaná posloupnost příkazů. V případě transakcí je tato možná nekonzistence dat ošetřena. Podpora transakčního zpracování zajišťuje takové provádění transakcí, aby databáze zůstala v konzistentním stavu i v případě selhání některé z operací prováděných na datech. Pro provedení takové operace musí být splněny tři základní podmínky: řádná definice konzistentních stavů databáze řádná definice jednotlivých transakcí korektnost provádění jednotlivých transakcí. Základní vlastnosti transakcí jsou definovány takto: Atomicita všechny operace prováděné v rámci transakce jsou chápány jako operace jediná a nedělitelná. Konzistence v průběhu transakce může být databáze v nekonzistentním stavu, ale po úspěšném ukončení transakce je stav databáze považován za konzistentní. Izolovanost každá transakce je zcela izolována od operací prováděných jinými transakcemi, jako kdyby měla výhradní přístup k celé databázi. Trvalost pouze po úspěšném ukončení transakce jsou všechny změny provedené transakcí trvale zachyceny v databázi.

Informační systém pro podporu obchodní činnosti Strana 25 Začátek transakce označuje příkaz BEGIN, příkaz COMMIT znamená její úspěšné dokončení. Mezi těmito dvěma příkazy se provede posloupnost potřebných příkazů. Po zadání příkazu COMMIT se změny stanou trvalými. Pokud se ale stane něco nepředvídatelného, lze použít příkaz ROLLBACK, po kterém dojde k vrácení změn provedených transakcí. Následuje příklad sledu příkazů při použití transakce (při použití tabulky tbl_zakaznici z kap. 5.3.2): BEGIN SELECT * FROM tbl_zakaznici WHERE prijmeni= Novák ;... (práce se záznamy v programu, např. kontrola údajů) UPDATE * FROM tbl_zakaznici SET poznamka= K objednávce přibalit dárek akce Dárky pro věrné Nováky WHERE prijmeni= Novák ; COMMIT 3.3.3 Izolační úrovně transakcí Při souběžném použití transakcí by se mohlo stát, že se dvě různé transakce budou pokoušet měnit stejné údaje. V ten okamžik může dojít ke ztrátě informace, protože měněná data jsou změněna ještě před tím, než je první změna potvrzena. Aby se předešlo takovému stavu, používá se mechanismus úrovní izolace transakcí. Server řídí přístup transakcí k datům pomocí různých typů zámků. Jelikož má soupeření transakcí o data negativní vliv na výkon systému, definuje standard SQL několik izolačních úrovní, které představují různou míru kompromisu mezi nechráněným přístupem a exkluzivním přístupem blokujícím práci všem transakcím. Úroveň izolace je vlastností transakce, a různé transakce tedy mohou pracovat s odlišnou úrovní izolace. Standard SQL92 definuje následující izolační úrovně: Read Uncommitted dovoluje transakcím číst nepotvrzená data z jiných transakcí nečistá čtení. Aktualizace stejných dat je však zablokována. Úroveň dovoluje nejvyšší propustnost dat, ale zároveň může dojít k celé škále anomálií z důvodu čtení nepotvrzených dat. Některé databázové systémy tuto úroveň izolace z bezpečnostních důvodů vůbec nepřipouštějí. Read Commited nepovoluje nečistá čtení (viz úroveň Read Uncommited). Blokuje souběžnou aktualizaci dat a povoluje pouze čtení potvrzených změn. Při krátkých a jednoduchých změnách dat dovoluje tato úroveň propustnost dat srovnatelnou s úrovní Read Uncommited. Přesto může při přidávání nových záznamů docházet k anomáliím k přidávání fantomových řádků, kdy dva

Strana 26 Informační systém pro podporu obchodní činnosti stejné dotazy vrátí po časové prodlevě jinou množinu dat. Úroveň povoluje neopakovatelná čtení vzniklá opakovaným čtením řádků měněných a potvrzených jinou transakcí. Repeatable Read nepovoluje neopakovatelná čtení, stále ale hrozí anomálie vzniklé přidáním nových řádků. Úroveň je vhodné používat při transakcích, které potřebují neměnný pohled na data. Možnost vzniku fantomových řádků je většinou vyloučena použitím operací, které na základě přečtených údajů mění data. Serializable nepovoluje ani fantomová čtení, data přístupná v transakci jsou stejná jako na začátku transakce. Změnu izolační úrovně na úroveň Read Commited pro všechny nové transakce aktuálního spojení zajistí SQL příkaz: SET SESSION TRANSACTION ISOLATION LEVEL READ_COMMITED; 3.4 DATABÁZOVÝ SYSTÉM MYSQL 3.4.1 Charakteristika MySQL je Open Source databázový systém vytvořený švédskou firmou MYSQL AB. Je považován za úspěšného průkopníka dvojího licencování je k dispozici jak pod bezplatnou licencí GPL, tak pod komerční placenou licencí. Jde o multiplatformní databázi typu klient-server. Komunikace s ní probíhá jak už název napovídá pomocí jazyka SQL. Podobně jako u ostatních SQL databází se jedná o dialekt tohoto jazyka s některými rozšířeními. Databáze MySQL je systém řízení relačních databází RDBMS. Je to program schopný ukládat velké množství různých dat a vracet je zpět při naplňování potřeb jakéhokoliv typu firmy nebo organizace. MySQL byla od počátku optimalizována především pro rychlost, a to i za cenu některých zjednodušení, například měla jen jednoduché způsoby zálohování. Nové vlastnosti jsou doplňovány teprve v posledních letech, kdy je začali postrádat nejčastější uživatelé produktu programátoři. Z přehledu podporovaných vlastností jsou nejdůležitější: použití cizích klíčů (od verze 3.23 podporovány v tabulkách typu InnoDB) použití transakcí (od verze 3.23 podporovány v tabulkách typu InnoDB) podpora různých znakových sad a časových pásem v datech (od verze 4.1) poddotazy (od verze 4.1).

Informační systém pro podporu obchodní činnosti Strana 27 Pro svou snadnou implementovatelnost (lze jej instalovat na Linux, MS Windows, ale i další operační systémy), výkon a především díky tomu, že se jedná o volně šiřitelný software, má MySQL vysoký podíl na databázích, které se v současné době používají na českých i zahraničních serverech. Velmi oblíbená a často nasazovaná je kombinace MySQL, PHP a serveru Apache jako základní software webového serveru. 3.4.2 Typy tabulek V MySQL existují dva typy tabulek. Tabulky InnoDB a BDB jsou transakčně zabezpečeny, ISAM, MyISAM, MERGE a HEAP transakčně zabezpečeny nejsou. Volba správného typu tabulky může mít zásadní vliv na výkonnost a rychlost databáze. Typ ISAM je starým standardem MySQL a je nahrazen typem MyISAM, který je ideální pro systémy s převahou výběrových dotazů před aktualizacemi. Tabulky typu MERGE vznikají sloučením tabulek MyISAM a používají se k urychlení práce s příliš velkými tabulkami MyISAM. Tabulky typu HEAP jsou nejrychlejším typem, protože jsou umístěny v operační paměti. Vytváří se z jiného typu tabulky například kopírováním záznamů. To je užitečné pro současné procesy aktualizace a rychlého čtení záznamů tabulky. Standardním typem pro podporu transakcí je typ InnoDB. Ve srovnání rychlosti přístupu jsou tabulky InnoDB oproti MyISAM pomalejší, protože mají větší režii při používání transakcí. Podpora tabulek typu BDB je ve fázi vývoje, a není tedy zaručena plná funčnost tabulky. Pracovní stanice Pracovní stanice Klientská aplikace Klientská aplikace Transakce SQL konverzace Síťové připojení přes LAN Transakce SQL konverzace Síťové připojení přes Internet Serverová síťová stanice Klientská aplikace Transakce SQL konverzace lokální připojení Server MySQL Databáze Databáze Obr. 4: Model klient-server připojení k serveru MySQL.

Strana 28 Informační systém pro podporu obchodní činnosti 3.5 POUŽITÉ PROSTŘEDKY Při tvorbě aplikace pro tuto diplomovou práci bylo použito programovací prostředí Delphi verze 5 Professional. Použitá komponenta Zeos, která byla nainstalována do prostředí Delphi, nese označení ZeosDBO-6.5.1-alpha14-11-2004. Pro kompilaci komponenty bylo nutné přidat k jejímu zdrojovému kódu programovou jednotku DateUtils, která obsahovala definici konverzní procedury DecodeDateTime. Poté již proběhlo sestavení a nainstalování komponenty bez obtíží. Následuje definice zmíněné procedury: procedure DecodeDateTime(Date: TDateTime; var Year, Month, Day, Hour, Min, Sec, MSec: Word); begin DecodeDate(Date,Year,Month,Day); DecodeTime(Date,Hour,Min,Sec,MSec); end; Aplikace byla vyvíjena s použitím databázového serveru MySQL verze 4.1.14-nt-max. Server byl nainstalován pod operačním systémem MS Windows XP na lokálním počítači.

Informační systém pro podporu obchodní činnosti Strana 29 4 SPECIFIKACE POŽADAVKŮ 4.1 MOMENTÁLNÍ STAV V současnosti není ve firmě zaveden žádný informační systém. Internetový obchod využívá placeného webhostingu. Aplikace internetového obchodu je spuštěna nad databázovým serverem MySQL verze 4.1.7. Ke vkládání produktů do databáze se používá webové rozhraní. Databáze obsahuje záznamy o zboží a vytvořených objednávkách. Objednávky jsou posílány z webové aplikace internetového obchodu na firemní e-mail. Faktury jsou vytvářeny v tabulkovém procesoru MS Excel. Firma se rozhodla kvůli zjednodušení a zároveň i k zefektivnění obchodní činnosti zavést informační systém, který by komplexně obsluhoval internetový obchod. 4.2 POŽADAVKY NA SYSTÉM Aplikace má pracovat pod operačním systémem MS Windows XP a má používat stávající databázi MySQL. Základním požadavkem je rozšíření databáze o evidenci zákazníků a archivaci faktur. Systém má automaticky zjišťovat nové objednávky, umožňovat jejich snadné vyřizování a tisk souvisejících faktur. Dalším požadavkem je zobrazování statistických údajů o prodejích (vystavených fakturách) za určité období, a to o celkovém počtu prodejů, o prodejích tříděných podle výrobce a o průměrném počtu prodejů.

Informační systém pro podporu obchodní činnosti Strana 31 5 DATOVÁ A FUNKČNÍ ANALÝZA Cílem datové analýzy je vymezení datové základny, nad níž bude systém pracovat. Dále se analýza zabývá návrhem a realizací struktury datové základny. Analýza musí identifikovat charakteristiky objektů a určit vztahy mezi těmito objekty. Funkční analýza informačního systému se zaměřuje na shromáždění požadavků konečného uživatele pro vytvoření konceptuálního modelu, na identifikování hlavních činností systému a objektů hlavních činností. Datová a funkční analýza se navzájem doplňují a překrývají. 5.1 DATOVÝ MODEL SYSTÉMU Datová část využívá původní databázi typu MySQL. Pro kompatibilitu s původní databází je databáze rozšířena podle požadavků na funkce informačního systému. Informační systém zpracovává následující části: katalog zákazníků katalog produktů katalog výrobců katalog objednávek katalog faktur. 5.1.1 Tok dat v systému V diagramu toku dat (obr. 5) je znázorněn postup uskutečnění prodeje produktu. Zákazník vytváří podle předem vystavené nabídky objednávku. Existují tři typové možnosti postupu vystavování dokladů. Pokud si zákazník zvolí platbu převodem, je mu zaslána zálohová faktura. Po následném uskutečněném peněžním převodu potvrzeném bankou se vystaví faktura, která je přiložena k expedovanému zboží (obr. 5, činnosti 1 a 2). Při volbě zákazníka doručení zásilky zásilkovou službou ve formě dobírky je vystavena faktura. Ta je přiložena k expedovanému zboží (obr. 5, činnost 3). Poslední možností je platba při osobním odběru. Zákazník si po vytvoření objednávky osobně vyzvedne zboží a při přebírání je zaplatí. Systémem je v tomto případě vystavena faktura a příjmový pokladní doklad (obr. 5, činnosti 3 a 4).

Strana 32 Informační systém pro podporu obchodní činnosti Objednávka zákazníka 1 Vystavení zálohové faktury Nabídka obchodu Zálohová faktura Uhrazení zálohové faktury zákazníkem 2 Vystavení faktury Zálohová faktura Faktura Objednávka zákazníka 3 Vystavení faktury Nabídka obchodu Faktura Uhrazení faktury zákazníkem 4 Vystavení příjmového pokladního dokladu Faktura Příjmový pokladní doklad Obr. 5: Diagram toku dat. 5.1.2 Návrh datového modelu Základním stavebním prvkem datového modelu jsou entity, které popisují jednotlivé objekty systému. Každou entitu determinují vlastnosti, které nazýváme atributy. Entita Zákazníci Entita obsahuje informace o zákaznících. Prvním atributem je jedinečné číslo zákazníka. Je tu dále uvedeno jméno a příjmení zákazníka, respektive název společnosti,

Informační systém pro podporu obchodní činnosti Strana 33 kontaktní údaje, fakturační adresa a případně také informace o bankovním spojení. Entita Zákazníci vstupuje do vztahu s entitou Objednávky. Entita Produkty Produkty popisují objekty, které jsou předmětem prodeje. Každý produkt je v systému rozlišen jedinečným identifikátorem. Produkt je zařazen do kategorie produktů a přidružen k výrobci. Pro potřeby firmy se uchovává kód produktu, název produktu, ceny, reklamní popis produktu, údaje o poskytované slevě, o zařazení do kategorie produktů v obchodě, o aktuálním skladovém stavu produktu, o eventuální záruční době a status produktu v nabídce obchodu. Entita Produkty je v relaci s entitou Výrobci a také s entitou Objednávky. Entita Výrobci Tato entita uchovává informace o výrobcích produktů. Obsahuje jedinečný identifikátor výrobce v systému, název výrobce, adresu internetových stránek výrobce, poštovní a e-mailovou adresu výrobce, údaje o kontaktní osobě a případné údaje o bankovním účtu. Je ve vztahu s entitou Produkty. Entita Objednávky Entita obsahuje informace o objednávkách. Každá objednávka je v systému rozlišena jedinečným identifikátorem. Dále je zde uvedeno unikátní číslo objednávky formátované podle potřeb firmy, identifikátor zákazníka, identifikátor způsobu platby, způsob doručení, datum vytvoření objednávky, celková cena objednávky, status vyřizování objednávky a případné datum expedování. Entita vstupuje do vztahu s entitami Produkty, Faktury a Zákazníci. Entita Faktury Faktury jsou základním dokumentem v obchodní činnosti. Systém je uchovává pod jedinečným identifikátorem. Další atributy určují číslo faktury podle firemního formátu, číslo relevantní objednávky, identifikátor zákazníka, identifikátor způsobu platby, datum vystavení, datum splatnosti a datum zaplacení faktury. Jsou zde i atributy pro identifikaci bankovního spojení a atribut identifikátoru statusu zaplacení faktury. Entita je v relaci s entitou Objednávky. 5.2 FUNKCE SYSTÉMU Podle požadavků uživatele obstarává informační systém zejména následující činnosti: Evidence zákazníků: v informačním systému jsou uchovávána data o zákazníkovi. Je možné přidávat data o nových zákaznících, měnit údaje o stávajících zákaznících a používat tyto údaje při vyřizování objednávek.

Strana 34 Informační systém pro podporu obchodní činnosti Evidence produktů: systém spravuje detailní informace o produktu, který je předmětem prodeje, umožňuje tyto informace měnit a zadávat do databáze data o nových produktech. Systém také kontroluje zásoby daného produktu na skladě, v případě potřeby doplnění skladu je možno měnit údaje o stavu skladových zásob. Informace o produktu a skladovém stavu lze použít při vyřizování objednávek. Vyřizování objednávek: pomocí systému je možno přijímat objednávky a vyřizovat je, případně vytvářet nové objednávky (například po telefonické domluvě). Systém pravidelně zjišťuje existenci nových objednávek. Udržuje také informaci o stavu objednávky (je definováno pět stavů: čeká na vyřízení, přijatá, vyřizuje se, expedovaná, stornovaná). Ze systému lze vytvářet doklady k vyřizovaným objednávkám a ukládat vystavené dokumenty. Evidence dokumentů: systém eviduje vystavené faktury a umožňuje jejich zpětné vyhledávání. Tisk dokumentů: ze systému je možno tisknout všechny potřebné doklady, tedy faktury, zálohové faktury, přehledy například o stavu skladu a statistické přehledy. Zpracování statistických údajů: systém poskytuje souhrnné statistické údaje za dané období. Vytváří statistiky o všech prodejích v Kč, o prodejích podle určitého výrobce a statistiky o počtu prodejů. 5.3 NÁVRH DATABÁZE Entita je v relační databázi reprezentována databázovou tabulkou nebo množinou tabulek se vzájemnými vztahy relacemi. Vztahy mezi tabulkami v systému se znázorňují pomocí E-R diagramů. Každá tabulka sestává z definovaných sloupců, které odpovídají atributům entity. Řádky tabulky odpovídají jednomu výskytu entity. Každá entita musí být jednoznačně identifikovatelná. K tomu slouží atribut nebo skupina atributů nazývaná identifikační klíč. Jestliže identifikační klíč identifikuje entitu jednoznačně, jde o jednoznačný klíč a takový klíč je zvolen jako primární klíč tabulky. Volí se vždy klíč složený z nejmenšího počtu atributů. V tabulce se vyskytuje vždy jen jeden primární klíč. Konkrétní výskyt vztahu mezi tabulkami je identifikován dvěma klíči v tabulce: primárním klíčem aktuální tabulky a primárním klíčem jiné tabulky, tzv. cizím klíčem. 5.3.1 Normalizace databáze Normalizace databáze je sada pravidel, podle které by se mělo postupovat při návrhu struktury databázových tabulek v relačních databázích. Normalizace pomáhá vyhnout se datovým anomáliím a pozdějším potenciálním problémům se správou dat. Základní myšlenkou normalizace je provést rozklad nenormalizovaného relačního schématu (tj. popisu

Informační systém pro podporu obchodní činnosti Strana 35 tabulek) do dílčích relačních schémat bez ztráty informace (bezeztrátová dekompozice). Technika normalizace vede: k eliminaci nadbytečnosti dat, a tedy k menší prostorové náročnosti databáze k usnadnění změny dat a zabránění vzniku anomálií při této činnosti k ulehčení zavádění omezení referenční integrity k vytváření snadno pochopitelné struktury, která je velice blízká situaci reprezentované daty a umožňuje další rozvinutí databáze. Proces normalizace dat je prováděn postupnými tzv. normalizačními kroky, přičemž vznikají jednotlivé normální formy. Je popsáno několik stupňů normalizace, ale používají se v podstatě jen první tři: 1. normální forma: tabulka neobsahuje žádné opakující se atributy, jsou definovány všechny klíčové atributy a všechny atributy závisejí na primárním klíči. V této fázi se obvykle aplikuje i požadavek atomičnosti atributů (jméno a příjmení místo celého jména). 2. normální forma: tabulka je v 1. normální formě a nezahrnuje žádné závislosti, kdy atribut závisí jen na části primárního klíče. Pokud se primární klíč skládá jen z jednoho atributu a tabulka je v 1. normální formě, pak je i v 2. normální formě. 3. normální forma: tabulka je v 2. normální formě a neobsahuje žádné tranzitivní závislosti, tedy když nějaký neklíčový atribut závisí na primárním klíči prostřednictvím jiného neklíčového atributu. 5.3.2 Návrh struktury databáze Podle výše popsaných entit a původní databáze byly navrženy struktury pro databázi systému. Použité původní tabulky byly případně rozšířeny podle požadavků na funkce systému. Primární klíče a cizí klíče v tabulkách začínají písmeny ID a primární klíče jsou vždy prvním atributem tabulky. Následující tabulky definují jednotlivé entity systému. Pole Atribut udává jméno atributu v tabulce, pole Datový typ udává název datového typu atributu používaný v databázi MySQL. Tabulky jsou v 3. normální formě. Atribut Datový typ Popis IDZakaznika INTEGER(6) Jedinečný identifikátor zákazníka Jmeno VARCHAR(25) Jméno Prijmeni VARCHAR(30) Příjmení Ulice VARCHAR(35) Fakturační adresa Mesto VARCHAR(35) Město

Strana 36 Informační systém pro podporu obchodní činnosti Atribut Datový typ Popis PSC VARCHAR(6) Poštovní směrovací číslo Email VARCHAR(40) E-mailová adresa Telefon VARCHAR(24) Telefonní kontakt NazevSpol VARCHAR(40) Název společnosti ICO VARCHAR(8) Identifikační číslo organizace DIC VARCHAR(12) Daňové identifikační číslo BankUcet VARCHAR(40) Číslo bankovního účtu DatumReg INTEGER(11) Datum, kdy byl zákazník zaregistrován JePlatny TINYINT(1) Platnost záznamu v databázi Poznamka TEXT Poznámka o zákazníkovi Tab. 1: Tabulka tbl_zakaznici. Atribut Datový typ Popis IDProduktu INTEGER(6) Jedinečný identifikátor produktu IDKategorie MEDIUMINT(4) Identifikátor kategorie KodProduktu VARCHAR(15) Firemní kód produktu NazevProduktu VARCHAR(145) Prezentovaný název produktu PopisProduktu TEXT Reklamní popis produktu IDVyrobce SMALLINT(4) Identifikátor výrobce Zaruka SMALLINT(2) Záruka na produkt v měsících Jednotka VARCHAR(8) Měrná jednotka produktu (ks, kg, ) DatumPridani INTEGER(10) Datum přidání produktu do systému DatumAktualizace INTEGER(10) Datum poslední aktualizace záznamu DodaciLhuta TINYINT(4) Dodací lhůta produktu ve dnech Vyrazeno TINYINT(1) Indikace platnosti nabídky produktu Doporucujeme TINYINT(1) Indikace doporučovaného produktu Sleva DECIMAL(3,1) Sleva na produkt v %

Informační systém pro podporu obchodní činnosti Strana 37 Atribut Datový typ Popis DoporucenaCena DECIMAL(8,2) Doporučená cena výrobku Cenabdph DECIMAL(8,2) Prodejní cena bez DPH IDDph TINYINT(2) Identifikátor uvažované DPH SkladovaCena DECIMAL(8,2) Nákupní cena produktu na sklad KusuSkladem INTEGER(6) Počet produktů na skladě KusuObjednano INTEGER(6) Počet produktů objednaných zákazníky Tab. 2: Tabulka tbl_produkty. Obr. 6: Detailní schéma vztahů tabulky tbl_produkty. Atribut Datový typ Popis IDVyrobce SMALLINT(4) Jedinečný identifikátor výrobce NazevVyrobce VARCHAR(30) Název výrobce URLVyrobce VARCHAR(40) Internetové stránky výrobce

Strana 38 Informační systém pro podporu obchodní činnosti Atribut Datový typ Popis Ulice VARCHAR(35) Sídlo výrobce Mesto VARCHAR(35) Město sídla výrobce PSC VARCHAR(6) Poštovní směrovací číslo Email VARCHAR(40) E-mailová adresa Telefon VARCHAR(24) Kontaktní telefon KontaktJmeno VARCHAR(50) Jméno kontaktní osoby ICO VARCHAR(8) Identifikační číslo organizace DIC VARCHAR(12) Daňové identifikační číslo BankUcet VARCHAR(40) Číslo bankovního účtu Poznamka TEXT Poznámka o výrobci Tab. 3: Tabulka tbl_vyrobci. Atribut Datový typ Popis IDObjednavky INTEGER(6) Jedinečný identifikátor objednávky CisloObjednavky INTEGER(10) Číslo objednávky podle firemního formátu IDZakaznika INTEGER(6) Identifikátor zákazníka IDPlatby SMALLINT(4) Identifikátor typu platby IDDoruceni SMALLINT(4) Identifikátor způsobu doručení Datum INTEGER(10) Datum přijetí objednávky Cenabdph DECIMAL(8,2) Cena bez DPH Poznamka TEXT Poznámka k objednávce IDStatusu TINYINT(2) Identifikátor stavu vyřizování objednávky Expedovano INTEGER(10) Datum expedice objednávky BylaZobrazena TINYINT(1) Ukazatel zobrazení objednávky Tab. 4: Tabulka tbl_objednavky.

Informační systém pro podporu obchodní činnosti Strana 39 Obr. 7: Detailní schéma vztahů tabulky tbl_objednavky. Atribut Datový typ Popis IDPolozky INTEGER(6) Jedinečný identifikátor položky objednávky IDObjednavky INTEGER(6) Identifikátor objednávky IDProduktu INTEGER(6) Identifikátor produktu KodProduktu VARCHAR(15) Kód produktu ve firemním formátu NazevProduktu VARCHAR (100) Prezentovaný název produktu Cenabdph DECIMAL(8,2) Účtovaná cena bez DPH Sleva DECIMAL(3,1) Sleva na produkt v době objednávky DPH TINYINT(2) Uvažovaná DPH PocetKs DECIMAL(7,2) Objednaný počet kusů produktu Jednotka VARCHAR(5) Měrná jednotka produktu Tab. 5: Tabulka tbl_objednavky_polozky.

Strana 40 Informační systém pro podporu obchodní činnosti Atribut Datový typ Popis IDFaktury INTEGER(6) Jedinečný identifikátor faktury CisloFaktury INTEGER(10) Číslo faktury podle firemního formátu IDObjednavky INTEGER(6) Identifikátor objednávky IDPlatby SMALLINT(4) Identifikátor typu platby DatumVystaveni INTEGER(10) Datum vystavení faktury DatumSplatnosti INTEGER(10) Datum splatnosti faktury DatumZaplaceni INTEGER(10) Datum zaplacení faktury VarSymbol INTEGER(8) Variabilní symbol KonstSymbol INTEGER(4) Konstantní symbol Cenabdph DECIMAL(8,2) Cena bez DPH Poznamka TEXT Poznámka k faktuře IDStatusu TINYINT(1) Stav faktury (zaplacená, nezaplacená, ) Zaloha DECIMAL(8,2) Případná záloha Sleva DECIMAL(3,1) Sleva na fakturu v procentech Tab. 6: Tabulka tbl_faktury. Obr. 8: Detailní schéma vztahů tabulky tbl_faktury.

Informační systém pro podporu obchodní činnosti Strana 41 Atribut Datový typ Popis IDKategorie INTEGER(4) Jedinečný identifikátor kategorie ParentKat INTEGER(4) Identifikátor nadřazené kategorie NazevKat VARCHAR(100) Prezentovaný název kategorie StatusKat TINYINT(1) Indikace prezentování kategorie Tab. 7: Tabulka tbl_kategorie. Atribut Datový typ Popis IDPlatby SMALLINT(4) Jedinečný identifikátor platby NazevPlatby VARCHAR(60) Prezentovaný název platby PopisPlatby TEXT Prezentovaný popis platby JePlatny TINYINT(1) Platnost způsobu platby Tab. 8: Tabulka tbl_platby. Atribut Datový typ Popis IDDoruceni SMALLINT(4) Jedinečný identifikátor způsobu doručení NazevDoruceni VARCHAR (60) Prezentovaný název způsobu doručení CenovyLimit DECIMAL(5,2) Limit zvýhodněné ceny CenaPodLimit DECIMAL(4,2) Účtovaná cena pod cenovým limitem CenaNadLimit DECIMAL(4,2) Účtovaná cena nad cenovým limitem Popis TEXT Prezentovaný popis způsobu doručení JePlatny TINYINT(1) Platnost způsobu doručení Tab. 9: Tabulka tbl_doruceni. Atribut Datový typ Popis IDDPH SMALLINT(4) Jedinečný identifikátor DPH NazevDPH VARCHAR(60) Název DPH DPH DECIMAL(4,2) Uvažovaná hodnota DPH v % PopisDPH VARCHAR(255) Prezentovaný popis DPH JePlatny TINYINT(1) Platnost typu DPH v systému Tab. 10: Tabulka tbl_dph.

Strana 42 Informační systém pro podporu obchodní činnosti Obr. 9: E-R diagram entit. Atribut Datový typ Popis IDStatusu TINYINT(2) Jedinečný identifikátor statusu objednávky NazevStatusu VARCHAR (20) Prezentovaný název statusu objednávky JePlatny TINYINT(1) Platnost statusu objednávky Tab. 11: Tabulka tbl_objednavky_statusy. Atribut Datový typ Popis IDStatusu TINYINT(2) Jedinečný identifikátor statusu faktury NazevStatusu VARCHAR (20) Prezentovaný název statusu faktury JePlatny TINYINT(1) Platnost statusu faktury Tab. 12: Tabulka tbl_faktury_statusy.

Informační systém pro podporu obchodní činnosti Strana 43 6 IMPLEMENTACE Implementace navrženého systému probíhá v několika krocích: Prvním krokem je vytvoření databáze na serveru, tedy definice tabulek a jejich atributů. V další fázi se pro jednotlivé entity vytvoří odpovídající datové třídy. Následuje navržení grafického rozhraní aplikace a chování jednotlivých ovládacích prvků. Posledním krokem je napojení nevizuálních komponent datových tříd na komponenty vizuální, tedy na grafické rozhraní. 6.1 VYTVOŘENÍ DATABÁZE Databáze je vytvořena přesně podle návrhu její struktury (viz kap. 5.3.2). 6.1.1 Tvorba tabulek Tabulky lze nejjednoduššeji vytvořit pomocí skriptu. Je to textový soubor (standardně s příponou.sql), který obsahuje jednotlivé příkazy v jazyce SQL na vytvoření struktury databáze. Následuje ukázková definice struktury tabulky tbl_zakaznici v generovacím skriptu struktura.sql: CREATE TABLE `tbl_zakaznici` ( `idzakaznika` int(6) NOT NULL auto_increment, `jmeno` varchar(25) NOT NULL default '', `prijmeni` varchar(30) NOT NULL default '', `ulice` varchar(35) NOT NULL default '', `mesto` varchar(35) NOT NULL default '', `psc` varchar(6) NOT NULL default '', `email` varchar(40) NOT NULL default '', `telefon` varchar(24) NOT NULL default '', `nazevspol` varchar(40) NOT NULL default '', `ico` varchar(8) NOT NULL default '', `dic` varchar(12) NOT NULL default '', `bankucet` varchar(40) NOT NULL default '',

Strana 44 Informační systém pro podporu obchodní činnosti `datum_reg` int(11), `poznamka` text NOT NULL default '', `jeplatny` tinyint(1) NOT NULL default '1', PRIMARY KEY (`idzakaznika`) ) ENGINE=InnoDB DEFAULT CHARSET=latin2; Jednotlivé atributy mají odpovídající typ. Primárním klíčem tabulky je jednoznačný identifikátor idzakaznika typu int (celé číslo). Má zadán příkaz pro automatickou inkrementaci. Poté co server MySQL takto vytvoří tabulku, pamatuje si poslední použité číslo (i když je naposledy vložený záznam vymazán) a automaticky číslo při vkládání nového záznamu o 1 zvyšuje. Počáteční hodnotou číselné řady je 1. Řetězcové atributy jsou vytvořeny jako varchar (pole znaků dynamické délky) s udanou maximální délkou pole. Tento typ se používá, aby se ušetřil diskový prostor obsazený databází. Maximální délka řetězce vychází ze znalosti zadávaných dat a měla by ve všech případech plně dostačovat pro uchování potřebných informací. Pokud atributu není při vkládání nového záznamu přiřazena hodnota, server MySQL na jeho místo vloží prázdný řetězec (''). Atribut popisující datum je celočíselného typu. Ukládá se v něm údaj o datu známý z unixových systémů. Jde o počet sekund, které uběhly od půlnoci 1. 1. 1970. Při čtení a ukládání atributu se používají funkce serveru pro převod dat FROM_UNIXTIME a UNIX_TIMESTAMP. Pokud není datum při vkládání nového záznamu definováno, nabývá pole hodnoty NULL. Tento datový typ byl použit s ohledem na kompatibilitu s původní databází. Konec příkazu vytvářejícího strukturu tabulky udává použitý typ tabulky. Zde je zvolen typ InnoDB, protože umožňuje komunikovat mezi klientem a databází MySQL v bezpečném přenosovém režimu v režimu transakcí. Databáze MySQL umožňuje nastavit pro každou tabulku znakovou sadu, ve které se data ukládají. Aby zobrazování a používání českých znaků s diakritickými znaménky bylo bezproblémové, nastavuje se pro všechny tabulky znaková sada Latin2 (ISO-8859-2). 6.2 DATOVÉ TŘÍDY 6.2.1 Datový modul DModul je datový modul typu TDataModule. Třída TDataModule se v Delphi používá ke sdružování nevizuálních, zpravidla datových komponent aplikace. Je zde umístěna stěžejní komponenta ZConnection, pomocí níž se aplikace připojuje k databázi. Tuto komponentu dále využívají ostatní datové komponenty pro komunikaci

Informační systém pro podporu obchodní činnosti Strana 45 s databází. ZConnection obsahuje parametr Hostname, který udává IP adresu nebo DNS jméno serveru v síti. Dále jsou zde přihlašovací údaje User a Password, jméno používané databáze Database a parametr TransactIsolationLevel definující transakční úroveň. V této aplikaci bylo použito transakční úrovně Read Committed. Pro správnou funkci přenosu dat s českou diakritikou je nutno po vytvoření spojení vhodně nastavit proměnné serveru. To bylo ošetřeno v události komponenty ZConnection AfterConnect SQL dotazem SET NAMES Latin2, který se vykonává ihned po připojení aplikace k databázi. Dotaz nastavuje proměnné serveru character_set_client, character_set_connection a character_set_results na hodnotu Latin2. Ostatní komponenty v DModulu jsou dotazovací nástroje přistupující k databázi pomocí dotazů jazyka SQL. Jejich prostřednictvím se přistupuje v aplikaci k vlastním záznamům databáze. Obr. 10: DModul a datové komponenty. 6.2.2 Třída Class_Generic Práce s jednotlivými záznamy v odlišných tabulkách je v zásadě velmi podobná. Používá se vkládání nových záznamů, dále pak změna stávajících a rušení nepotřebných záznamů. Tyto operace se liší atributy v jednotlivých tabulkách, a tedy i použitým SQL

Strana 46 Informační systém pro podporu obchodní činnosti dotazem. Užívaný postup je vždy stejný, a proto je jako schéma vytvořena rodičovská třída Class_Generic. Z ní dědí vlastnosti a metody ostatní třídy, jež odpovídají operacím s jednotlivými tabulkami. Jsou to třídy: ClassDPH ClassFaktura ClassKategorie ClassObjednavka ClassPolozkyObj ClassProdukt ClassStatusFaktury ClassStatusObj ClassVyrobci ClassZakaznik ClassZpusobDoruceni ClassZpusobPlatby Chráněné metody třídy Class_Generic: procedure NaplnPolozky; virtual; abstract; metoda připravená pro naplnění vlastností třídy, které odpovídají atributům relevantní tabulky procedure NaplnSeznamy(NazevSloupce,ID,Value:string); virtual; abstract; metoda připravená pro naplnění seznamů ListNames, ListIDs a ListValues příslušnými daty function NaplnSQL(SQLString:string):string; virtual; abstract; metoda využívaná k vytvoření správného SQL dotazu odpovídajícího zpracovávané tabulce function Proved(SQL:string): boolean; virtual; metoda provádí zadaný výkonný SQL dotaz. Veřejné vlastnosti a metody třídy Class_Generic: ListNames:TStringList; vlastnost pro ukládání seznamu názvů, příp. seznamu jmen ListIDs:TStringList; vlastnost, kam se ukládá seznam identifikátorů záznamů odpovídajících položkám vlastnosti ListNames ListValues:TStringList; do vlastnosti se ukládá případný seznam hodnot položek příslušných vlastnosti ListNames function NactiPolozky(SQL:string):boolean; virtual; abstract; funkce, která je volána aplikací při požadavku načtení atributů záznamu

Informační systém pro podporu obchodní činnosti Strana 47 function NactiSeznamy(SQL,nazevsloupce,ID,Value:string):boolean; virtual; abstract; funkce je volána při požadavku načtení položek do seznamů ListNames, ListIDs a ListValues function DecimalPointConvert(cena:currency):string; funkce řeší problém s ukládáním záznamu typu currency (měna), ve kterém je kvůli nastavení formátů čísel v systému Windows pro Českou republiku jako oddělovač desetinných míst použita čárka místo serverem užívané tečky procedure Init; virtual; abstract; metoda je připravena na nastavení vlastnosti třídy na výchozí hodnotu, číselné vlastnosti na nulu, řetězcové na prázdný řetězec ('') a datum na hodnotu 0. 6.2.3 Třída ClassObjednavka Třída ClassObjednavka je děděna z třídy Class_Generic. Rozšiřuje rodičovskou třídu o vlastnosti a metody související s operacemi nad tabulkou tbl_objednavky. Veřejné vlastnosti a metody třídy ClassObjednavka: vlastnosti třídy: jména vlastností jsou shodná s příslušnými atributy tabulky tbl_objednavka a mají odpovídající datové typy function SmazID(id:integer):boolean; funkce podle zadaného identifikátoru označí položku z tabulky tbl_objednavky jako stornovanou a vrátí úspěšnost celé operace function UlozID(id:integer):boolean; podle zadaného argumentu id uloží položku do tabulky tbl_objednavky. Pokud je identifikátor id roven 0, vytvoří položku novou, v opačném případě aktualizuje položku s identifikátorem idobjednavky, který se rovná argumentu funkce id function NactiPolozky(SQL:string):boolean; override; funkce naplní podle zadaného SQL dotazu jednotlivé vlastnosti třídy function NactiSeznamy(SQL,nazevsloupce,ID,Value:string):boolean; override; funkce načte podle zadaného SQL dotazu a argumentů seznam položek do zděděných vlastností ListNames, ListIDs a ListValues procedure Init; virtual; override; metoda nastavuje vlastnosti třídy na výchozí hodnotu (viz kap. 6.2.2). Třída ClassObjednavka využívá všechny vlastnosti a metody třídy Class_Generic. Třída také používá k práci s databází nevizuální komponentu ZQueryObj, jež je obsažena v datovém modulu DModul.

Strana 48 Informační systém pro podporu obchodní činnosti 6.2.4 Ostatní datové třídy Příslušnosti k jednotlivým tabulkám napovídají názvy tříd (viz kap. 5.2.2). Těla, tedy vlastnosti a metody ostatních tříd, jsou analogická a spravují odpovídající tabulku databáze. 6.3 KONFIGURACE APLIKACE Uživatel může v aplikaci modifikovat různá nastavení chování systému, ať už jde o chování grafického rozhraní nebo o jiná nastavení. Vše lze v aplikaci pohodlně měnit přes menu Nastavení. Správu konfiguračních dat obstarávají třídy TSchemata a TNastaveni. 6.3.1 Třída TSchemata Tato třída za běhu aplikace udržuje informace o uložených připojeních k databázím. Veřejnými vlastnostmi třídy jsou například Nazev, Server, Databaze, Uzivatel atd. Tyto vlastnosti jsou objekty typu TStringList a obsahují seznamy jednotlivých položek potřebných při připojování k databázi. 6.3.2 Konfigurační soubor Nastavení aplikace se ukládá do souboru konfigurace ISystem.ini. Jde o soubor typu INI používaný běžně v operačním systému MS Windows. Soubor obsahuje popis schémat připojení k databázím (viz kap. 6.3.1) a informace o nastavení programu (viz kap. 6.3.3). 6.3.3 Třída TNastaveni V třídě TNastavení se shromažďují informace o uživatelském nastavení programu. Třída obsluhuje čtení a ukládání dat do konfiguračního souboru (viz kap. 6.3.2). Obsahuje ale hlavně vlastnosti popisující chování grafického prostředí aplikace, jako například nastavení automatického zarovnávání sloupců v tabulkách, zobrazování detailu aktuálně vybrané položky v tabulce nebo nastavení automatického obnovování dat z databáze v určitém časovém intervalu. Při spuštění aplikace se načte konfigurační soubor s uloženým nastavením. Pokud v souboru nejsou žádná nastavení k dispozici, anebo soubor neexistuje, použijí se hodnoty přednastavené v aplikaci. Při ukončování běhu programu se aktuálně nastavené parametry uloží.

Informační systém pro podporu obchodní činnosti Strana 49 6.4 GRAFICKÉ ROZHRANÍ APLIKACE K interakci uživatele s aplikací se používá její grafické rozhraní. Aplikace je vytvořena jako typ MDI. Obsahuje tedy možnost zobrazit na své ploše mnoho formulářů, které se používají k modifikaci dat databáze. 6.4.1 Hlavní formulář aplikace Po spuštění programu se zobrazí hlavní formulář (obr. 11). V titulkovém pruhu je vedle názvu aplikace umístěna informace o aktuálním datu a systémovém čase. Z menu okna jsou přístupné veškeré položky obsluhující zobrazování jednotlivých dceřiných oken. Pro zobrazení oken lze také použít navigační panel v levé části formuláře s nabídkou akcí. Obr. 11: Hlavní formulář. Na liště pod položkami menu jsou umístěny nástroje pro připojení k databázi. Z rozbalovacího pole lze vybrat název uloženého připojení a sousedícími tlačítky spojení navázat nebo zrušit.

Strana 50 Informační systém pro podporu obchodní činnosti Dalšími objekty na liště jsou tlačítka pro snadný přístup k zobrazení přednastavené internetové stránky a k spuštění zvoleného e-mailového klienta. Internetová stránka je otevřena v implicitním internetovém prohlížeči, e-mailovým klientem může být program na lokálním počítači nebo internetová stránka. Na pravé straně lišty je pro informaci zobrazen týdenní kalendář. Po kliknutí na něj se zobrazí okno s kalendářem měsíčním. 6.4.2 Připojení Před navázáním spojení jsou aplikací požadovány login a heslo pro přístup k databázi. Po připojení aktualizuje aplikace automaticky obsah případných otevřených podoken. Od této chvíle je možno pracovat s informacemi databáze. Obr. 12: Přihlašovací okno připojení k databázi. 6.4.3 Formuláře entit Kliknutím na požadovanou položku v navigačním panelu se otevře příslušné podokno entity s přehlednou tabulkou, která zobrazuje nejdůležitější informace (obr. 13). V horní části dceřiného okna se nacházejí tlačítka pro vytvoření nové položky a pro opětovné načtení tabulky. Dále je zde tlačítko pro tisk obsahu tabulky a tlačítka pro import a export záznamů z a do souboru ve formátu CSV. Jde o jednoduchý formát určený pro výměnu dat. Jednotlivé záznamy jsou v něm uchovávány na samostatných řádcích, položky záznamu jsou odděleny definovaným oddělovačem (například čárkou či středníkem). Tento formát podporuje většina databázových systémů. Pro vyhledávání v tabulce slouží textové pole, do kterého lze zadat počáteční znaky hledaného řetězce. Po potvrzení požadovaného řetězce klávesou Enter nebo po stisknutí tlačítka Najít se v tabulce v aktuálně zvoleném sloupci najde první položka odpovídající zadání. Kliknutím pravého tlačítka myši na záznam v tabulce se zobrazí PopUp nabídka. Umožňuje správu jednotlivých položek podobně jako nástrojový panel formuláře. Po vybrání akce Detail z PopUp nabídky, po stisknutí klávesy Enter v tabulce nebo po dvojkliku na vybraný záznam tabulky se otevře modální okno se všemi dostupnými informacemi (obr. 14).

Informační systém pro podporu obchodní činnosti Strana 51 Obr. 13: Formulář pro správu zákazníků. Obr. 14: Detail záznamu o zákazníkovi.

Strana 52 Informační systém pro podporu obchodní činnosti 6.4.4 Formulář Editace objednávky Detail objednávky se svou strukturou od většiny oken detailů liší (obr. 15). Obsahuje veškeré potřebné informace o přijaté objednávce. V případě potřeby se pomocí něj také nová objednávka zadává. V horní části okna je uvedeno číslo objednávky, lze nastavovat statusy objednávky a způsob doručení zboží. Celková cena objednávky se aktualizuje v závislosti na nastavených pravidlech, která ošetřují připočítávání poštovného k zakázce. Napravo od informací o objednávce jsou zobrazeny údaje o kupujícím zákazníkovi. Zákazníka je možné v případě nové objednávky vyhledat přes tlačítko Najít. Střední část okna je vyhrazena položkám objednávky. Zobrazují se zde důležitá data o kusových cenách položek, o objednávaném množství a o celkové ceně za jednotlivé položky. Je zde také uvedena výše případné procentuální slevy, jež byla na zboží poskytována obchodem v době objednávky. Tlačítkem nebo prostřednictvím PopUp menu lze položky přidávat, případně stávající položky měnit nebo odstraňovat. Ve spodu okna se zobrazují údaje o celkové ceně položek a o konečné ceně zahrnující poplatek za doručení a haléřové vyrovnání. Obr. 15: Formulář Editace objednávky.

Informační systém pro podporu obchodní činnosti Strana 53 6.4.5 Formulář Editace faktury Otevřít formulář pro vytvoření či úpravu faktury lze dvěma způsoby. Buď se vytvoří nová faktura z objednávky přes tlačítko Fakturace v okně Editace objednávky (viz kap. 6.4.4), nebo se otevře existující faktura z okna zobrazujícího seznam vystavených faktur. Okno (obr. 16) zobrazuje číslo objednávky, na jejímž základě je faktura vystavena, číslo faktury, způsob doručení, údaje o zákazníkovi a seznam fakturovaných položek. Dále jsou zde zobrazena data vystavení, splatnosti a zaplacení, konstantní symbol, procentuální sleva a záloha. Tyto položky může uživatel měnit. Variabilní symbol je shodný s číslem faktury. Posledními údaji jsou v tomto okně součet cen všech položek a celková suma k úhradě. Částky se při změně slevy a zálohy automaticky přepočítávají. Posledním krokem k dokončení fakturace je vytištění faktury. To proběhne po stisknutí tlačítka Faktura v oblasti Tisk. Pokud zákazník platí při osobním vyzvednutí zboží, je k dispozici tisk Příjmového daňového dokladu. Obr. 16: Formulář Editace faktury.

Strana 54 Informační systém pro podporu obchodní činnosti 6.4.6 Faktura Základním tiskovým výstupem systému je faktura. Jde o daňový dokument, který obsahuje všechny náležitosti související s uskutečněním obchodního styku. Na faktuře jsou uvedeny adresy obou obchodujících stran. Umístění jména a adresy odběratele zboží je zvoleno tak, aby bylo možno použít typizovanou obálku formátu DL s okénkem v adresové části (obr. 17). Dále faktura obsahuje seznam fakturovaných položek s odpovídajícími cenami a celkovou cenou fakturovaného zboží s údajem o koncové platební povinnosti odběratele. Obr. 17: Ukázka části vytištěné faktury.

Informační systém pro podporu obchodní činnosti Strana 55 6.4.7 Statistiky Aplikace zpracovává statistické údaje o prodejích. V okně statistiky lze v horní liště měnit sledované období prodejů. Stisknutím tlačítka Dodnes se nastaví v poli konce období aktuální datum. Statistika se zobrazuje buď v přehledné tabulce, nebo v grafu (obr. 18). Zobrazení se volí zaškrtnutím pole Graf. Obr. 18: Graf statistiky prodejů. 6.4.8 Uživatelská nastavení Aplikace dovoluje uživatelské nastavení chování různých prvků (viz kap. 6.3). K tomu slouží položky z menu Nastavení. Kromě chování vizuálních prvků, jako je například zarovnávání sloupců, umožňuje nastavit nutné parametry pro připojení k databázi. K nastavování chování aplikace slouží modální okno Nastavení prostředí. Obsahuje záložky s nastavením pro odpovídající okna aplikace a umožňuje také nastavit chování uživatelských tlačítek a možností tisku. Pomocí přehledného dialogu Nastavení připojení se nastavují jednotlivá schémata připojení (obr. 18). Příslušné akce se provádějí přes tlačítka ve spodní části okna. Pro každou uvažovanou databázi je třeba zadat název firmy (název schématu), DNS název nebo IP adresu hostitelského serveru, na němž se nachází databázový systém, dále jméno databáze, ke které aplikace bude přistupovat, a uživatelské jméno pro připojení k databázi. Heslo není z bezpečnostních důvodů ukládáno a je nutné ho před každým připojením zadat.

Strana 56 Informační systém pro podporu obchodní činnosti Pokud na serveru není databáze vytvořena, je možné použít tlačítko Vytvořit databázi. Systém se pokusí připojit k serveru, zkontroluje, zda databáze skutečně neexistuje, a poté ji vytvoří. Obr. 18: Dialogové okno pro nastavení připojení. 6.5 INSTALACE A POŽADOVANÉ PROSTŘEDKY Pro snadné zahájení práce s aplikací byl vytvořen instalační balíček, který nainstaluje informační systém do počítače. Aplikace je určena pro spouštění pod operačním systémem MS Windows XP. Předpokládá možnost spojení se serverem MySQL min. verze 4.1, který podporuje transakční přístup. Pokud nejsou transakce podporovány (například z důvodu existující databáze s tabulkami typu MyISAM), je aplikace plně funkční, avšak není zajištěna integrita dat, například při společném přístupu více instancí aplikace k databázi.