VYSOKÁ ŠKOLA BÁŇSKÁ – TECHNICKÁ UNIVERZITA OSTRAVA
INFORMAČNÍ SYSTÉMY A DATOVÉ SKLADY
INFORMAČNI SYSTÉM PŮJČOVNY NARADI (semestrální projekt) ZS 2011-2012
Tým číslo 5
Členové:
Markéta Migdalová Martin Ševčík Zdeněk Chvilíček Jaroslav Dyba Jiří Beran
1
Zadání
Cílem projektu je vytvoření informačního systému pro společnost Praktik s.r.o., která se zabývá půjčováním nářadí a příslušenství. Firma je organizačně rozdělena na několik poboček a servisních středisek rozmístěných po celé ČR. Organizace takového podnikatelského záměru si žádá vytvoření koncipovaného informačního systému, díky němuž bude firma Praktik s.r.o. mít strategický nástroj pro svou podnikatelskou činnost. Tento nástroj bude využíván jak zákazníky, tak zaměstnanci firmy Praktik s.r.o. Systém musí reflektovat, že zákazník má možnost si vypůjčit a vrátit nářadí na libovolné pobočce. Informace o aktuálním umístění nářadí musí být zaznamenávány v informačním systému. Zaměstnanci (servisní technici, pracovníci poboček) budou spravovat evidenci nářadí, jejich servis, pronájem a stav. Informační systém musí vedoucím zaměstnancům umožnit vkládat a editovat tarify cen, slevy, obchodní novinky a také své zaměstnance. Možnost zrušit výpůjčku nářadí by měl mít možnost také pouze vedoucí zaměstnanec. Zákazník po vstupu na webový portál může vyhledávat nejbližší pobočky v požadované lokalitě a také si může vyhledat z řady dostupných nářadí či příslušenství. Zákazník má možnost si vybrané nářadí vypůjčit přímo na pobočce, případně se zaregistrovat a nářadí si rezervovat předem. Součástí zákaznického účtu bude zobrazení historie půjčených nářadí či příslušenství.
1.1
Funkční požadavky
Proč nový IS S přibývajícími léty je nutné držet krok s konkurencí a je tedy dobré, aby se firma ve své činnosti neustále rozvíjela. Díky nasazení internetové technologie, lze výrazně z efektivit, jak už pro zákazníka, tak i pro zaměstnance celkovou kvalitu služeb.
K čemu má IS sloužit Hlavní funkcí systému by měla být prezentace nabízeného nářadí a příslušenství s možností rezervace. Půjčovny nářadí Praktik, spol. s. r. o. nabízí široký sortiment nářadí pro profesionály i domácí kutily. Naše půjčovna vám nabídne nářadí či zařízení pro jakoukoliv práci na stavbě, pro domácí hobby práce, pro práce na zahradě. Kdo s IS bude pracovat vedoucí pracovník - právo editovat zaměstnance, nářadí (příslušenství), ceny tarifů, slevy. Dále zastává stejné funkce jako zaměstnanec. zaměstnanec - možnost rezervace, vypůjčení, fakturace za vypůjčení nářadí. Publikace novinek, evidence servisních úkonů a účast v diskusi. zákazník - stejná práva jako nepřihlášený uživatel, kromě možnosti rezervace vybraného nářadí (příslušenství) nepřihlášený uživatel - prohlížení nabízených nářadí (příslušenství), ceníků, novinek. Možnost registrace.
VSTUPY do systému
U nářadí evidujeme jeho název, značku výrobce, rok pořízení. Dalšími informacemi o nářadí jsou fotografie a cenový tarif. U každého nářadí se také nachází aktuální stav (vypůjčeno / na pobočce) a fyzický výskyt, na které pobočce se dané nářadí nachází nebo kde bylo vypůjčeno. Pokud nářadí bylo opravováno, jsou u každého nářadí evidovány i servisní úkony. U poboček evidujeme adresu pobočky (město, ulici, PSČ) a také kontaktní informace (telefon, email). U výpůjček evidujeme datum vypůjčení, datum navrácení, zákazníka, který provedl výpůjčku a zaměstnance, který nářadí vypůjčil. Dále je evidováno vypůjčené nářadí a příslušenství. U fotogalerie evidujeme její popisek. U fotografie evidujeme její umístění, popisek a fotogalerii do, které náleží. U zaměstnanců evidujeme jméno, příjmení, telefon, email, adresu a pobočku, na které pracuje. U zákazníků evidujeme jméno, příjmení, telefonní číslo, rodné číslo a adresu trvalého bydliště. U rezervací evidujeme nářadí nebo příslušenství, které je rezervováno, datum od kdy do kdy je rezervace platná a zákazníka, který rezervaci vytvořil. Nedílnou součástí je i informace o pobočce, kam si zákazník nářadí přijde vyzvednout. U tarifů evidujeme název tarifu, popis a cenu vztaženou na jeden den vypůjčení jednoho nářadí. U novinek evidujeme datum vložení novinky, zaměstnance, který ji vložil a textový obsah. U příslušenství evidujeme název, popis a pevnou cenu vztaženou na jeden den. U slev evidujeme slevu vyjádřenou v procentech vztaženou na množství vypůjčeného nářadí. U faktur evidujeme unikátní číslo faktury, datum vystavení, datum splatnosti, cena faktury, forma úhrady. Součástí faktury je identifikace zákazníka a zaměstnance, který fakturu vystavil. Déle evidujeme, zda je faktura již uhrazena. U položek faktury je evidované zboží, které si zákazník objednal (příslušenství, nářadí) a jeho cena. U servisních úkonů evidujeme textový popis úkonu, a kdo a kdy daný servisní úkon prováděl.
VÝSTUPY ze systému
Seznam nářadí, kde se nářadí nachází a jeho servisní úkony. Seznam příslušenství. Aktuální počet tohoto příslušenství na pobočce. Seznam poboček. Seznam výpůjček. Dále název pobočky, kde byla výpůjčka provedena a také jméno a příjmení zaměstnance, který daný předmět vypůjčil. Seznam zaměstnanců. Seznam zákazníků a aktivní rezervace. U tarifů jsou požadovány položky jako název, popis, cenu vztaženou na jeden den vypůjčení a počet nářadí, spadajících do tohoto tarifu. U novinek jsou požadovány položky jako datum a čas přidání novinky a textový obsah. Velikost slevy vyjádřenou v procentech a množství nářadí, při kterém je sleva aktivována. Faktura k objednávce – datum objednání, datum expedice, adresa zákazníka, jméno pracovníka, který vyřizuje objednávku, informace o objednaném zboží (id, názvy, kusy, ceny), celková cena U položek faktury je evidováno jaké zboží se zákazník objednal (příslušenství, nářadí), cena a k jaké faktuře daná položka patří. U servisních úkonů jsou požadovány položky jako název, textový popis, datum provedení a jméno zaměstnance, který daný servisní úkon provedl.
Nefunkční požadavky
Informační systém bude tvořen jako webová aplikace a bude přístupný z libovolného počítače připojeného k internetu. Implementace bude provedena tak, aby dodržovala W3C standardy. Navrhovaný systém bude splňovat veškeré právní požadavky České republiky, které se týkají ochrany osobních údajů.
2. 2.1
Analýza
Datová analýza
Lineární zápis typů entit Naradi (id_naradi, nazev, rok_porizeni, tarif_id_tarifu, stav_naradi_id_stavNaradi, znackaNaradi_id_znackaNaradi, fotogalerie_id_fotogalerie)
Pobocka (id_pobocka, mesto, ulice, psc, telefon, email) Vypujcka (id_vypujcka, datum_vypujcky, datum_navratu, zamestnanec_id_zamestnance, zakaznik_id_zakaznik, prislusenstvi_id_prislusenstvi, naradi_id_naradi) Fotogalerie (id_fotogalerie, popisek) Fotografie (id_fotografie, url, titulek, fotogalerie_id_fotogalerie) Zamestnanec (id_zamestnanec, jmeno, prijmeni, telefon, email, plat, pobočka_id_pobocka) Zakaznik (id_zakaznik, jmeno, prijmeni, rodne_cislo, telefon, email, mesto, ulice, psc) Rezervace (id_rezervace, datum_od, datum_do, zakaznik_id_zakaznik, naradi_id_naradi, pobočka_id_pobocka, prislusenstvi_id_prislusenstvi) Tarif (id_tarif, nazev_tarifu, cena_den) Novinky (id_novinky, id_zamestnance, datum, text, zamestnanec_id_zamestnance) Příslusenstvi (id_prislusenstvi, nazev_prislusenstvi, popis_prislusenstvi, cena_den, pocet_kusu) Stav_naradi (id_stavNaradi, stav) Sleva (id_sleva, pocet_naradi, sleva) Faktura (id_faktura, cena, datum, datum_splatnosti, forma_uhrady, dodavatel, uhrazeno, stornovano, zamestnanec_id_zamestnance, zakaznik_id_zakaznik, sleva_id_sleva) PolozkaFaktury (id_polozkaFaktury, faktura_id_faktura, prislusenstvi_id_prislusenstvi, naradi_id_naradi) ServisniUkon (id_servisniUkon, datum_provedeni, zamestnanec_id_zamestnance, naradi_id_naradi) ZnackaNaradi (id_znackaNaradi, znacka)
ER diagram
Datový slovník typ entity Naradi
typ entity Pobocka
typ entity Vypujcka
typ entity Fotogalerie
název atributu
datový velikost klíč nulový typ
id_naradi
integer
10
ano
ne
nazev rok_porizeni
varchar date
25
ne ne
ne ne
tarif_id_tarifu Stav_naradi_id_stavNaradi znackaNaradi_id_znackanaradi Fotogalerie_id_fotogalerie
integer integer integer integer
4 10 10 10
ano ano ano ano
ne ne ne ne
název atributu
číslo jednoznačně identifikující dané nářadí název nářadí rok pořízení nářadí DD-MMYYYY cizí klíč cizí klíč cizí klíč cizí klíč
datový typ
velikost
klíč
nulový
id_pobocka
integer
10
ano
ne
mesto
varchar
25
ne
ne
ulice psc telefon
varchar integer integer
20 5 9
ne ne ne
ne ne ne
email
varchar
30
ne
ne
název atributu
integer
datum_vypujcky
ano
ne
date
ne
ne
datum_navratu
date
ne
ne
zamestnanec_id_zamestnance zakazni_id_zakaznik prislusenstvi_id_prislusenstvi naradi_id_naradi
integer integer integer integer
ano ano ano ano
ne ne ne ne
název atributu
10
10 10 10 10
datový velikost klíč nulový typ
id_fotogalerie
integer
10
ano
ne
popisek
varchar
50
ne
ne
IO+popis číslo jednoznačně identifikující danou pobočku město, ve kterém se pobočka nachází ulice pobočky psč pobočky telefonní kontakt na pobočku ve formátu +420XXXXXXXXX emailový kontakt na pobočku
datový velikost klíč nulový typ
id_vypujcka
IO+popis
IO+popis číslo jednoznačně identifikující danou výpůjčku datum vytvoření vypůjčení nářadí nebo příslušenství ve formátu DD-MM-YYYY datum vrácení nářadí nebo příslušenství ve formátu DDMM-YYYY cizí klíč cizí klíč cizí klíč cizí klíč
IO+popis číslo jednoznačně identifikující danou fotogalerii titulek a stručný popis fotogalerie
typ entity Fotografie
typ entity Zamestnanec
typ entity Zakaznik
typ entity Tarif
typ entity Novinky
název atributu
datový velikost klíč nulový typ
id_fotografie
integer
10
ano
ne
url titulek id_fotogalerie
varchar varchar integer
100 150 10
ne ne ne
ano ano ne
název atributu
integer
10
ano
ne
jmeno prijmeni telefon
varchar varchar integer
20 20 9
ne ne ne
ne ne ne
email plat Pobočka_id_pobocka
varchar integer integer
30 6 10
ne ne ne
ne ano ne
IO+popis číslo jednoznačně identifikující daného zaměstnance jméno zaměstance příjmení zaměstnance telefonní kontakt na zaměstnance ve formátu +420XXXXXXXXX emailový kontakt na zaměstnance měsíční plat zaměstnance pobočka, na které daný zaměstnanec pracuje
datový velikost klíč nulový typ
id_zakaznik
integer
10
ano
ne
jmeno prijmeni rodne_cislo
varchar varchar integer
20 20 10
ne ne ne
ne ne ne
telefon
integer
9
ne
ano
email mesto ulice psc
varchar varchar varchar integer
30 25 20 5
ne ne ne ne
ne ne ne ne
název atributu
číslo jednoznačně identifikující danou fotografii umístění daného obrázku titulek a stručný popis fotografie cizí klíč, označuje fotogalerii, ke které daná fotografie náleží
datový velikost klíč nulový typ
id_zamestnanec
název atributu
IO+popis
IO+popis číslo jednoznačně identifikující daného zákazníka jméno zákazníka příjmení zákazníka rodné číslo zákazníka ve tvaru XXXXXXXXXXX telefonní kontakt na zákazníka ve formátu +420XXXXXXXXX emailový kontakt na zákazníka bydliště zákazníka bydliště zákazníka bydliště zákazníka
datový velikost klíč nulový typ
id_tarif
integer
10
ano
ne
nazev_tarifu cena_den
varchar integer
15 4
ne ne
ne ne
název atributu
IO+popis číslo jednoznačně identifikující daný tarif název tarifu cena za půjčení daného nářadí za den
datový velikost klíč nulový typ
id_novinky
integer
datum
date
text Zamestnanec_id_zamestnance
varchar integer
10
200 10
ano
ne
ne
ne
ne ne
ne ne
IO+popis číslo jednoznačně identifikující danou novinku datum vložení novinky ve formátu DD-MM-YYYY text dané novinky cizí klíč
typ entity Prislusenstvi
typ entity Stav_naradi
typ entity Sleva
typ entity Faktura
název atributu
datový velikost klíč nulový typ
id_prislusenstvi
integer
10
ano
ne
nazev_prislusenstvi popis_prislusenstvi cena_den
varchar varchar integer
25 200 6
ne ne ne
ne ano ano
pocet_kusu
integer
4
ne
ne
název atributu
číslo jednoznačně identifikující dané příslušenství název příslušenství popis daného příslušenství cena, za kterou stojí vypůjčení daného příslušenství za den počet dostupných kusů
datový velikost klíč nulový typ
id_stavNářadí
integer
10
ano
ne
stav
varchar
15
ne
ne
název atributu
IO+popis
IO+popis číslo jednoznačně identifikující daný stav nářadí název a popis stavu ve, kterém se nářadí nachází
datový velikost klíč nulový typ
id_sleva
integer
10
ano
ne
pocet_naradi
integer
3
ne
ne
sleva
integer
2
ne
ne
název atributu
IO+popis číslo jednoznačně identifikující danou slevu minimální počet nářadí, na která jde uplatnit daná sleva sleva na danou zakázku vyjádřená v procentech
datový velikost klíč nulový typ
id_faktura cena datum
integer integer date
datum_platnosti
date
forma_uhrady dodavatel uhrazeno
varchar varchar boolean
stornovano
10 6
ano ne ne
ne ne ne
ne
ne
20 50 1
ne ne ne
ne ne ne
boolean
1
ne
ne
Sleva_id_sleva
integer
10
ano
ano
Zamestnanec_id_zamestnanec
integer
10
ano
ne
zkaznik_id_zakaznik
integer
10
ano
ne
IO+popis jednoznačné číslo faktury celková cena datum vystavení faktury ve formátu DD-MM-YYYY datum splatnosti faktury ve formátu DD-MM-YYYY forma úhrady dodavatel zboží udává, zda je faktura uhrazena, přípustné jsou pouze hodnoty “ano” a “ne” udává, zda je faktura stornována, přípustné jsou pouze hodnoty “ano” a “ne” cizí klíč, id slevy, pokud zákazník odebírá větší množství nářadí cizí klíč, id zaměstnance, který fakturu vystavil cizí klíč, id zákazníka, které se zboží rezervuje
typ entity PolozkaFaktury
typ entity ServisniUkon
typ entity ZnackaNaradi
typ entity Rezervace
název atributu
datový velikost klíč nulový typ
Id_polozkafaktury
integer
10
ano
ne
cena_polozky Naradi_id_naradi
integer integer
6 10
ne ne
ano ne
Prislusenstvi_id_prislusenstvi
integer
10
ne
ne
Faktura_id_faktura
integer
10
ne
ne
název atributu
datový velikost klíč nulový typ
id_servisniUkon
integer
10
ano
ne
popis_ukonu datum_provedeni
varchar date
50
ne ne
ne ne
Naradi_id_naradi
integer
10
ano
ne
Zamestnanec_id_zamestnanec
integer
10
ano
ne
název atributu
datový velikost klíč nulový typ
id_znackaNaradi
integer
10
ano
ne
znacka
varchar
15
ne
ne
název atributu
integer
datum_od
10
číslo jednoznačně identifikující danou položku faktury cena dané položky cizí klíč, označující zboží, které si zákazník vybral cizí klíč, označující zboží, které si zákazník vybral cizí klíč, označující číslo faktury, které daná položka náleží
IO+popis číslo jednoznačně identifikující daný servisní úkon popis úkonu datum provedení úkonu ve formátu DD-MM-YYYY cizí klíč, označuje nářadí, které bylo opravováno cizí klíč, označuje zaměstnance, který úkon provedl
IO+popis číslo jednoznačně identifikující danou značku nářadí značka nářadí
datový velikost klíč nulový typ
id_rezervace
IO+popis
ano
ne
date
ne
ne
datum_do
date
ne
ne
pobocka_id_pobocka
integer
10
ne
ne
naradi_id_naradi
integer
10
ne
ne
Prislusenstvi_id_prislusenstvi
integer
10
ne
ne
Zakaznik_id_zakaznik
integer
10
ne
ne
IO+popis číslo jednoznačně identifikující danou rezervaci datum, od kterého si zákazník dané zboží zarezervoval ve formátu DD-MM-YYYY datum, do kterého si zákazník dané zboží zarezervoval ve formátu DD-MM-YYYY pobočka, na které si zboží zákazník vyzvedne id nářadí, které si zákazník zarezervoval id příslušenství, které si zákazník zarezervoval id zákazníka, který si zboží rezervuje
2.2
Analýza funkční
2.2.1 DF diagramy + minispecifikace 2.2.1.1 Kontextový diagram
Nepřihlášený uživatel
Vedoucí pracovník
Zákazník
Zaměstnanec
IS Půjčovny Nářadí
2.2.1.2 DF diagram 0. úroveň
1. Evidence nářadí
1.1 Evidence značek nářadí
1.2 Evidence nářadí
zjistit ne-rezervovanost nářadí na datum Zobraz seznam dostupných nářadí Uživatel označí požadované nářadí a klikne na tlačítko dostupnost Zapiš atribut vybraného nářadí id_nářadí do proměnné p_nářadí Zobraz formulář pro vybrání požadovaného datumu Zapiš vybrané datum do proměnné p_datum Proveď spojení tabulek Nářadí a Rezervace podle id_nářadí, v podmínce uveď id_naradi=p_naradi a datum_od
p_datum, zjisti, kolik dotaz vrací výsledků a počet zapiš do proměnné p_vysledek 7. JE-LI p_vysledek==0 PAK zobraz okno s textem "Dané nářadí je dostupné pro dané datum" konec algoritmu JINAK vytvoř proměnnou p_pocet_dni a zapiš do ní 0
1. 2. 3. 4. 5. 6.
DOKUD p_pocet_dni<30 o DĚLEJ zvyš proměnnou p_datum o jeden den Proveď spojení tabulek Naradi a Rezervace podle id_naradi, v podmínce uveď id_naradi=p_naradi a datum_odp_datum, zjisti, kolik dotaz vrací výsledků a počet zapiš do proměnné p_vysledek, o JE LI p_vysledek==0 PAK přesuň se na bod 9. JINAK inkrementuj p_pocet_dni 8. Zobraz okno s textem "Dané nářadí je na požadované datum nedostupné a v nejbližsích 30-ti dnech dostupné nebude." 9. Konec algoritmu 10. Zobraz okno s textem "Dané nářadí je na požadované datum nedostupné, nejbližší možný termín vypůjčení je ", kde bude vypsána proměnná p_datum
Evidence zaměstnanců
Evidence slev
Evidence tarifů
Evidence poboček
Evidence fotek
Evidence fotografií
Evidence fotogalerií
Evidence novinek
Evidence příslušenství
Evidence faktur
zobraz příjem za období 1. Zobraz formulář Vyber Obdobi 2. Uživatel vybere počáteční datum a konečné datum 3. Zapiš počáteční datum do proměnné p_datum_poc a konečné datum do
proměnné p_datum_kon 4. Proveď dotaz na tabulku Faktura, v podmínce uveď
datum_splatnosti>p_datum_poc a datum_splatnosti
zobrazit neuhrazené faktury 1. Uživatel klikne na tlačítko Zobrazit neuhrazené faktury 2. Proveď spojení tabulek Faktura, Zakaznik, Sleva a Zamestnanec podle
atributu id_faktura, do podmínky uveď Faktura.uhrazeno=='ne' 3. Vytvoř kolekci objektů NeuhrazenaFaktura s názvem NeuhrazeneFaktury, kde
každý objekt bude mít proměnné id_faktura, cena, datum, datum_splatnosti, forma_uhrady, dodavatel, sleva, zamestnanec_jmeno, zamestnanec_ prijmeni, zakaznik_jmeno, zakaznik_prijmeni 4. PRO KAŽDÝ vrácený výsledek DĚLEJ přidej do kolekce nový záznam, do proměnné id_faktura vlož Faktura.id_faktura, do proměnné cena vlož Faktura.cena, do proměnné datum vlož Faktura.datum, do proměnné datum_splatnosti vlož Faktura.datum_splatnosti, do proměnné forma_uhrady vlož Faktura.forma_uhrady, do proměnné dodavatel vlož Faktura.dodavatel, do proměnné sleva vlož Sleva.sleva, do proměnné zamestnanec_jmeno vlož Zamestnanec.jmeno, do proměnné zamestnanec_prijmeni vlož Zamestnanec.prijmeni, do proměnné zakaznik_jmeno vlož Zakaznik.jmeno a do proměnné zakaznik_prijmeni vlož Zakaznik.prijmeni 5. Zobraz okno s tabulkou, kde každý řádek reprezentuje jeden vrácený výsledek a sloupce tabulky reprezentují atributy objektu NeuhrazenaFaktura 6. PRO KAŽDÝ objekt v kolekci NeuhrazeneFaktury DĚLEJ přidej nový řádek do tabulky, do sloupců vypiš atributy daného objektu.
Evidence výpůjček
Evidence servisních úkonů
Evidence zákazníků
Registrace zákazníka
1. Zobraz formulář pro registraci uživatele (požadováno jméno, příjmení, heslo, rodné 2. 3.
číslo, telefon, email, město, ulice, PSČ) Uživatel zadá svoje osobní údaje a heslo Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně I. Vyber z tabulky Role id_role, kde role="zakaznik" II. Zapamatuj si do zakaznik.id_role= Role.id_role BEGIN III. Vygeneruj zakaznik.id_zakaznik IV. Zapiš vyplněný formulář zákaznik.id_zakaznik dotabulky Zakaznik END b) kontrola proběhla neúspěšně I. Vypiš uživateli hlášku o chybě
Evidence rezervací
2.3
Analýza časová
2.3.1
STD Rezervace
2.3.2 STD Faktury
2.3.2
STD Nářadí
2.4
Návrh uživatelského prostředí