Inzynieria Oprogramowania M Blocki


Inżynieria Oprogramowania
Temat: Projektowanie systemów informatycznych  Wypożyczalnia Video 
analiza i projektowanie strukturalne oraz analiza i projektowanie obiektowe.
Miron Błocki
III Inf grupa laboratoryjna 1 semestr 5
rok akademicki 2007/2008
0
Spis Treści:
" Opis Projektu
o Cel Projektu .............................................................................................................. 2
o Opis Dziedziny Problemu.......................................................................................... 2
o Obszar Modelowania ............................................................................................... 2
o Opis Wymagań Funkcjonalnych ............................................................................... 2
o Opis Wymagań Niefunkcjonalnych .......................................................................... 2
" Analiza strukturalna:
o Diagram Przepływu Danych (DFD). ....................................................................... 3-9
o Macierze CRUD .................................................................................................. 10-27
o Diagram Związków Encji (ERD) ............................................................................... 32
o Słownik Danych ................................................................................................. 33-35
o Specyfikacja Procesów ........................................................................................... 36
" Częściowa fizyczna implementacja systemu
o Fizyczny Model Danych .......................................................................................... 37
o Skrypty SQL........................................................................................................ 38-47
o Wstępny Projekt GUI .............................................................................................. 48
o Sugestia Wyboru Narzędzi Programistycznych ................................................. 48-49
o Sugestia Wyboru Architektury Systemu................................................................. 49
o Sugestia Wyboru Platformy Sprzętowej................................................................. 49
" Analiza Obiektowa Modelu
o Diagram Procesów Biznesowych ....................................................................... 50-51
o Diagram Przypadków Użycia .................................................................................. 52
o Diagram Klas ........................................................................................................... 53
o Deklaracja Klas C# ............................................................................................. 53-59
o Dodatkowe Diagramy UML .................................................................................... 60
Diagram Obiektów .................................................................................... 60
Diagram Stanów ........................................................................................ 60
Diagram Sekwencji .................................................................................... 61
1
1 Opis Projektu
1.1 Cel Projektu:
Celem projektu jest stworzenie opisu wycinka rzeczywistości w sposób zrozumiały,
ujednolicony i pomocny w budowie finalnej aplikacji. Wycinkiem rzeczywistości jest tu problem
budowy systemu informatycznego dla Wypożyczalni Filmów (zwanego pózniej problemem). Projekt
ten ma również ułatwić analizę problemu oraz jego dziedziny a także implementację systemu.
1.2 Dziedzina Projektu:
Projekt tworzony jest dla internetowej wypożyczalni video. Wypożyczalnia posiada własną
księgowość. Księgarnia działa na zasadzie pre-paid. Odsetki liczone są za ewentualne przetrzymanie
nośnika. Obowiązują umowy dżentelmeńskie.
1.3 Obszar Modelowania
System przeznaczony dla jednostki odpowiedzialnej za proces wypożyczania. Jednostka
obsługuje klienta zdalnie. Weryfikuje jego dane oraz na bieżąco wysyła mu informacje zwrotne
dotyczące postępu procesu  wypożyczania .
Do zadań jednostki należą:
" Wypożyczanie Pozycji
" Rezerwacja Zasobów
" Weryfikacja Tożsamości Klientów
" Kontrolowanie Zasobów
" Ewidencja Klientów
" Ewidencja Pracowników
" Katalogowanie Zasobów
" Ewidencja Zasobów
" Przechowywanie Informacji  Magazynowych
1.4 Wymagania funkcjonalne
Problem ogranicza się do weryfikacji użytkownika (autentykacji i autoryzacji), umożliwienia
mu wypożyczenia nośnika z filmem, ewentualną rezerwację pozycji, zwrócenie pozycji,
zweryfikowanie płatności, edycję danych w bazach, stworzenia ewidencji klientów i pracowników,
kontrolę automatyczną oraz manualną nad bazami danych oraz procesami, przyznawanie praw
dostępu wszystkim użytkownikom, zautomatyzowanie procesu wypożyczania oraz obsługę  trzech
terminali .
1.5 Wymagania niefunkcjonalne
Projekt ma ułatwić i zautomatyzować proces wypożyczania oraz zarządzania zasobami. Dzięki
wprowadzanemu systemowi pracownicy będą mogli w łatwy sposób przeprowadzać ewidencję
wypożyczonych pozycji, klientów oraz zasobów. Ponadto usprawni to działanie samej jednostki.
Praca będzie przebiegać szybciej i przejrzyściej a sam system będzie bardziej elastyczny, łatwy w
rozbudowie, łatwiejszy w obsłudze i będzie posiadał zwiększoną kontrolę baz oraz rejestrowanie akcji
serwera zapewniając tym samym wysokie bezpieczeństwo przechowywanych danych.
2
2 Analiza strukturalna:
2.1 Diagram Przepływu Danych (DFD):
2.1.1 Diagram Kontekstowy
Wypozyczalnia Filmów
diagram kontekstowy
Ksiegowosc
PracownikSignIn
PracownikSignOut
InformacjaZwrotnaPracownikSignIn
InformacjaZwrotnaPracownikSignOut
PobierzInfoKsiegowosc
DopiszTytul
PrzekazWszystko
DopiszPozycje
Promocje
PoinformujOPromocjach
Rejestrowanie
1
Weryfikacja
Wypozyczalnia
Akceptacja_Weryfikacji
Klient Pracownik
_Filmow
SignIN
+
potwierdzenieSignIN
SignOUT
PrzegladajTabele
PotwierdzenieSignOUT
Sprawdz_Film
InformacjaZwrotnaSprawdzFilm
DodajPracownikaDoStalejBazyDanych
doKoszyka
zKoszyka
Zarezerwowano
InformacjaZwrotnaWyslijFilm
3
2.1.2 Subproces Wypozyczalnia_Filmow
[PrzekazWszystko]
Ksiegowosc
1.7
pobierzWszystko
Udostepnij
PobierzID
1.1
Klient
Rejestracja Klienci
[Rejestrowanie]
ZapisanieInfoOKliencie
+
Klient Klient
[Weryfikacja]
SprawdzWBazieDoZwrotu
Klient
[Akceptacja_Weryfikacji]
Pracownik
[zKoszyka]
Klient
[doKoszyka]
1.9 SkontrolujDane
Klient Skontroluj
Zwrot
Pracownik
1.2
Zwroc
[SignIN]
ZwrotDane
Klient
Logowanie
SprawdzWBazie
PobierzInfoDoZwrot
+
[DopiszPozycje]
Pracownik
Klient
[DodajPracownikaDoStalejBazyDanych]
[potwierdzenieSignIN]
[PracownikSignIn]
PobierzInfoOKliencieDoWyslij
pobierzIDKlientaDoWypozyczenia
[Promocje]
[InformacjaZwrotnaPracownikSignIn]
Pracownik
Klient usun
[SignOUT]
Pracownicy
Tytuly Odczyt4
PobierzPrawa
Klient PracownikDopisujeUsuwaTytol
1.10
[PotwierdzenieSignOUT]
Szukaj [InformacjaZwrotnaPracownikSignOut]
DodajPracownika Pracownik
LogowaniePra
cownikow
pobierzDoLogowaniaPracownikow
Zamow
ZamowDane
+
1.3
CzyDostepny
[Sprawdz_Film]
odczyt2
Wypozyczenia
Przegladaj
Klient
Pracownik
PobierzInfo [PracownikSignOut]
[PoinformujOPromocjach]
CzyDostepnyWypozyczenia
Klient
[InformacjaZwrotnaSprawdzFilm]
Wypozycz
Odczyt5 Pracownik
[DopiszTytul]
[PobierzInfoKsiegowosc]
Ksiegowosc
WyslijDoKlientaDane
1.4
1.6
PobierzPozycje
[InformacjaZwrotnaWyslijFilm]
odczyt1
PracownikDopisujeUsuwaPozycje
Pozycje
Klient WyslijFilm WyslijDoKlienta
Wypozyczenie
+
Pracownik
WypozyczRezerwacje
PrzekazDoPoczekalni
OdczytIDRez
WypozyczRezerwacjeDane
1.5 1.8
[Zarezerwowano] utworzRezerwacje PobierzInfoORezerwacji
1.11
KontrolaRezer
Klient Rezerwacja
Rezerwacje
wacji
[PrzegladajTabele]
UdostepnijDa
Pracownik
neZTabel
usunRezerwacje
Odczyt3
4
2.1.3 Subproces Rejestracja
Po odebraniu danych od klienta
proces SPRAWDZ wysyła mejla weryfikujacego do
Klienta z dodatkowaInformacjaWeryfikacyjna (np. link)
oraz wyzwala proces Potwierdz.
By zapobiec sytuacji utraty danych przez proces Sprawdz - trafiają one
do bazy danych gdzie sa przechowywane az do potwierdzenia
informacji od Klienta
Dopiero wtedy dane zostaja zapisane do bazy KLIENCI
1.1.1
Klient Sprawdz
DaneWeryfikacji
[Rejestrowanie] ChwilowoZapisz
WyzwolPotwierdzenie PobierzDane
Klient
[Weryfikacja]
1.1.2
[Akceptacja_Weryfikacji]
Klient
Potwierdz
UunChwiloweDane
[PobierzID]
[ZapisanieInfoOKliencie]
Klienci : 2
ten przepływ słuzy do generowania kolejnego ID - klucza głównego
tabeli
Klienci : 1
5
2.1.4 Subproces Logowanie
[SprawdzWBazie]
Klienci
1.2.1 sprawdzDodatkowo
WynikPorownania
Porownaj
Klient WynikPorownaniaDane
[SignIN]
1.2.2
Klient Zalogowani ZalogowaniKlienci
[potwierdzenieSignIN] dopisz
Wypozyczenie
Wypozyczenie
Zwrot
Zwrot
1.2.3
[SignOUT]
Klient
Wyloguj
pobierzdoWylogowania
PobierzDoWypozyczenia
1.2.4
wynik_porownania
usunWpis
[PotwierdzenieSignOUT]
Flow_225
Klient
[doKoszyka]
Klient
1.2.5
[Zamow] [Zwroc]
PorownajDoWy
pozyczenia
[ZamowDane]
+
[ZwrotDane]
Klient
[zKoszyka]
6
2.1.5 Subproces PorownajDoWypozyczenia
[ZwrotDane]
Wypozyczenie
Wypozyczenie 1.2.5.1
Zwrot
Zwrot
[zKoszyka] [Zwroc]
Klient Zwracaj
oddaj
[PobierzDoWypozyczenia]
ZalogowaniKlienci
wez
1.2.5.2
[doKoszyka] [Zamow]
Klient Zamawiaj
[ZamowDane]
7
2.1.6 Subproces Wypozyczenie
[WypozyczRezerwacjeDane]
[ZamowDane]
1.4.1
Identyfikuj
[WypozyczRezerwacje]
[Zamow]
Bezposrednio
1.4.2
[PobierzPozycje] [PobierzInfo]
PorownajTytul
Pozycje
Tytuly
Pozycje
KontrolaRezerwacji
KontrolaRezerwacji
Rezerwacja
Logowanie
Logowanie
WyslijFilm
WyslijFilm
SprawdzDostepnosc
1.4.3
[CzyDostepnyWypozyczenia]
PrzekazInformacjeOPozycjiTytule
Wypozyczenia : 1 Klienci
CzyDostepny
niedostepny
Dostepny
1.4.4
1.4.5
[Wypozycz]
[pobierzIDKlientaDoWypozyczenia]
ZbierzInforma
Wypozyczenia : 2
Rezerwuj
cje
[PrzekazDoPoczekalni]
[WyslijDoKlienta]
[WyslijDoKlientaDane]
8
2.1.7 Subproces LogowaniePracowników
Pracownik
1.10.4
Pracownicy : 3 Pracownicy : 1
WylogujPracow
Pracownik
nika
[InformacjaZwrotnaPracownikSignIn]
[PracownikSignOut]
[pobierzDoLogowaniaPracownikow]
[PobierzPrawa]
UsuwamWpisZTablicyTymczasowej
[InformacjaZwrotnaPracownikSignOut]
1.10.1
DopisujeDoTymczasowejBazyZalogowaniPracow
PorownajiDopis
[PracownikSignIn] nicy
zDoBazyTymcz
Pracownik
asowej
Pracownik
PobierzDaneCzyMogeDopisac
Pozycje
1.10.3
[DopiszPozycje]
[PoinformujOPromocjach]
[DodajeUsuwaPozycje] CzyMogeDopis
Pracownik
[PracownikDopisujPracownika]
ac
[DopiszTytul]
[PracownikDopisujeUsuwaTytol]
[DodajPracownikaDoStalejBazyDanych]
Pracownik
Tytuly
Pracownik
[Promocje]
Pracownik
Pracownicy : 2
Klient
9
2.2 Macierze CRUD
2.2.1 Data Store CRUD
KontrolaRezerwac
CzyDostepny CzyMogeDopisac Identyfikuj Logowanie
ji
DaneWeryfikacji
Klienci R
Pozycje CUD
Pracownicy CUD
Rezerwacje RD
Tytuly CUD
Wypozyczenia R
ZalogowaniKlienc
i
ZalogowaniPraco
R
wnicy
10
PorownajiDopiszD
LogowaniePracow PorownajDoWypo PorownajTytulPoz
Porownaj oBazyTymczasow
nikow zyczenia ycje
ej
DaneWeryfikacji
Klienci R
Pozycje CUD R
Pracownicy CRUD R
Rezerwacje
Tytuly CUD R
Wypozyczenia
ZalogowaniKlienc
R R
i
ZalogowaniPraco
CU
wnicy
11
Potwierdz Przegladaj Rejestracja Rezerwacja Rezerwuj
DaneWeryfikacji RD
Klienci CRUD CRUD
Pozycje
Pracownicy
Rezerwacje CRU
Tytuly R
Wypozyczenia R
ZalogowaniKlienc
i
ZalogowaniPraco
wnicy
12
UdostepnijDaneZ
Sprawdz Udostepnij usunWpis Wyloguj
Tabel
DaneWeryfikacji CU
Klienci R R
Pozycje R
Pracownicy R
Rezerwacje R
Tytuly
Wypozyczenia R
ZalogowaniKlienc
D R
i
ZalogowaniPraco
wnicy
13
WylogujPracownik Wypozyczalnia_Fi
Wypozyczenie WyslijFilm Zalogowani
a lmow
DaneWeryfikacji
Klienci R R
Pozycje R
Pracownicy
Rezerwacje
Tytuly R
Wypozyczenia CRU
ZalogowaniKlienc
CU
i
ZalogowaniPraco
UD
wnicy
14
Zamawiaj ZbierzInformacje Zwracaj Zwrot
DaneWeryfikacji
Klienci R R
Pozycje
Pracownicy
Rezerwacje
Tytuly
Wypozyczenia CU RD
ZalogowaniKlienc
R R
i
ZalogowaniPraco
wnicy
15
2.2.2 Data Item CRUD
KontrolaRezerwac
CzyDostepny CzyMogeDopisac Identyfikuj Logowanie
ji
AKodPocztowyKli
enta
AMiastoKlienta
ANrDomuKlienta
AUlicaKlienta
CenaWypozyczeni
CUD
a
CzasTrwania CUD
DataPremiery CUD
DataWypozyczeni
a
DodatkowaInfWery
fikacyjna
DostepneNosniki CUD
dostepnosc
EMaliKlienta
Gatunek CUD
HasloKlienta R
Identyfikator R CUD RD
IDKlienta RD R
IDRezerwacji RD
ImieKlienta
ListaPlac CUD
LoginKlienta R
16
PorownajiDopiszD
LogowaniePracow PorownajDoWypo PorownajTytulPoz
Porownaj oBazyTymczasow
nikow zyczenia ycje
ej
AKodPocztowyKli
enta
AMiastoKlienta
ANrDomuKlienta
AUlicaKlienta
CenaWypozyczeni
CUD R
a
CzasTrwania CUD
DataPremiery CUD
DataWypozyczeni
a
DodatkowaInfWery
fikacyjna
DostepneNosniki CUD
dostepnosc
EMaliKlienta
Gatunek CUD
HasloKlienta R
Identyfikator CUD R
IDKlienta R R
IDRezerwacji
ImieKlienta
ListaPlac CUD
LoginKlienta R R
17
Potwierdz Przegladaj Rejestracja Rezerwacja Rezerwuj
AKodPocztowyKli
CRUD CUD
enta
AMiastoKlienta CRUD CUD
ANrDomuKlienta CRUD CUD
AUlicaKlienta CRUD CUD
CenaWypozyczeni
R
a
CzasTrwania R
DataPremiery R
DataWypozyczeni
a
DodatkowaInfWery
fikacyjna
DostepneNosniki R
dostepnosc
EMaliKlienta CRUD CUD
Gatunek R
HasloKlienta CRUD CUD
Identyfikator R CU
IDKlienta CRUD CRUD CU
IDRezerwacji CRU
ImieKlienta CRUD CUD
ListaPlac R
LoginKlienta CRUD CUD
18
UdostepnijDaneZ
Sprawdz Udostepnij usunWpis Wyloguj
Tabel
AKodPocztowyKli
CU R R
enta
AMiastoKlienta CU R R
ANrDomuKlienta CU R R
AUlicaKlienta CU R R
CenaWypozyczeni
R
a
CzasTrwania
DataPremiery
DataWypozyczeni
R
a
DodatkowaInfWery
fikacyjna
DostepneNosniki
dostepnosc
EMaliKlienta CU R R
Gatunek
HasloKlienta CU R
Identyfikator R
IDKlienta R R
IDRezerwacji R
ImieKlienta CU R R
ListaPlac
LoginKlienta CU R D R
19
WylogujPracownik Wypozyczalnia_Fi
Wypozyczenie WyslijFilm Zalogowani
a lmow
AKodPocztowyKli
R
enta
AMiastoKlienta R
ANrDomuKlienta R
AUlicaKlienta R
CenaWypozyczeni
CRU
a
CzasTrwania
DataPremiery
DataWypozyczeni
CU
a
DodatkowaInfWery
fikacyjna
DostepneNosniki
dostepnosc
EMaliKlienta R
Gatunek
HasloKlienta
Identyfikator CRU
IDKlienta CRU R CU
IDRezerwacji
ImieKlienta R
ListaPlac
LoginKlienta CU
20
Zamawiaj ZbierzInformacje Zwracaj Zwrot
AKodPocztowyKli
enta
AMiastoKlienta
ANrDomuKlienta
AUlicaKlienta
CenaWypozyczeni
CU RD
a
CzasTrwania
DataPremiery
DataWypozyczeni
CU RD
a
DodatkowaInfWery
fikacyjna
DostepneNosniki
dostepnosc
EMaliKlienta
Gatunek
HasloKlienta
Identyfikator CU RD
IDKlienta CRU RD
IDRezerwacji
ImieKlienta
ListaPlac
LoginKlienta
21
KontrolaRezerwac
CzyDostepny CzyMogeDopisac Identyfikuj Logowanie
ji
NazwiskoKlienta
NrEwidencyjny CUD
NrMieszkaniaKlie
nta
NrTelefonuKlient
a
Obada CUD
potwierdzenieSI
potwierdzenieSO
PracownikAdres CUD
PracownikHaslo CUD
PracownikID CUD
PracownikLogin CRUD
PracownikPrawa CRUD
PracownikSIgnInF
eedBack
PracownikSignOut
FeedBack
PracownikStanowi
CUD
sko
PracownikTyp CUD
Promocja
Tytul CUD
Wplata
wyslanoFilm
22
PorownajiDopiszD
LogowaniePracow PorownajDoWypo PorownajTytulPoz
Porownaj oBazyTymczasow
nikow zyczenia ycje
ej
NazwiskoKlienta
NrEwidencyjny CUD R
NrMieszkaniaKlie
nta
NrTelefonuKlient
a
Obada CUD
potwierdzenieSI
potwierdzenieSO
PracownikAdres CUD
PracownikHaslo CRUD R
PracownikID CUD
PracownikLogin CRUD CRU
PracownikPrawa CRUD CRU
PracownikSIgnInF
eedBack
PracownikSignOut
FeedBack
PracownikStanowi
CUD
sko
PracownikTyp CUD
Promocja
Tytul CUD R
Wplata
wyslanoFilm
23
Potwierdz Przegladaj Rejestracja Rezerwacja Rezerwuj
NazwiskoKlienta CRUD CUD
NrEwidencyjny
NrMieszkaniaKlie
CRUD CUD
nta
NrTelefonuKlient
CRUD CUD
a
Obada R
potwierdzenieSI
potwierdzenieSO
PracownikAdres
PracownikHaslo
PracownikID
PracownikLogin
PracownikPrawa
PracownikSIgnInF
eedBack
PracownikSignOut
FeedBack
PracownikStanowi
sko
PracownikTyp
Promocja
Tytul R
Wplata
wyslanoFilm
24
UdostepnijDaneZ
Sprawdz Udostepnij usunWpis Wyloguj
Tabel
NazwiskoKlienta CU R R
NrEwidencyjny R
NrMieszkaniaKlie
CU R R
nta
NrTelefonuKlient
CU R R
a
Obada
potwierdzenieSI
potwierdzenieSO
PracownikAdres R
PracownikHaslo R
PracownikID R
PracownikLogin R
PracownikPrawa R
PracownikSIgnInF
eedBack
PracownikSignOut
FeedBack
PracownikStanowi
R
sko
PracownikTyp R
Promocja
Tytul R
Wplata
wyslanoFilm
25
WylogujPracownik Wypozyczalnia_Fi
Wypozyczenie WyslijFilm Zalogowani
a lmow
NazwiskoKlienta R
NrEwidencyjny CRU
NrMieszkaniaKlie
R
nta
NrTelefonuKlient
a
Obada
potwierdzenieSI
potwierdzenieSO
PracownikAdres
PracownikHaslo
PracownikID
PracownikLogin UD
PracownikPrawa UD
PracownikSIgnInF
eedBack
PracownikSignOut
FeedBack
PracownikStanowi
sko
PracownikTyp
Promocja
Tytul CRU
Wplata
wyslanoFilm
26
Zamawiaj ZbierzInformacje Zwracaj Zwrot
NazwiskoKlienta
NrEwidencyjny CU RD
NrMieszkaniaKlie
nta
NrTelefonuKlient
a
Obada
potwierdzenieSI
potwierdzenieSO
PracownikAdres
PracownikHaslo
PracownikID
PracownikLogin
PracownikPrawa
PracownikSIgnInF
eedBack
PracownikSignOut
FeedBack
PracownikStanowi
sko
PracownikTyp
Promocja
Tytul CU RD
Wplata
wyslanoFilm
27
2.3 Lista procesów
2.3.1 Diagram kontekstowy
Nazwa Kod
Wypozyczalnia_Filmow WYPOZYCZALNIA_FILMOW
2.3.2 Proces Wypozyczalnia_Filmow
Nazwa Kod
KontrolaRezerwacji KONTROLAREZERWACJI
Logowanie LOGOWANIE
LogowaniePracownikow LOGOWANIEPRACOWNIKOW
Przegladaj PRZEGLADAJ
Rejestracja REJESTRACJA
Rezerwacja REZERWACJA
Udostepnij UDOSTEPNIJ
UdostepnijDaneZTabel UDOSTEPNIJDANEZTABEL
Wypozyczenie WYPOZYCZENIE
WyslijFilm WYSLIJFILM
Zwrot ZWROT
2.3.3 Proces Rejestracja
Nazwa Kod
Potwierdz POTWIERDZ
Sprawdz SPRAWDZ
2.3.4 Proces Logowanie
Nazwa Kod
Porownaj POROWNAJ
PorownajDoWypozyczenia POROWNAJDOWYPOZYCZENIA
usunWpis USUNWPIS
28
Nazwa Kod
Wyloguj WYLOGUJ
Zalogowani ZALOGOWANI
2.3.5 Proces PorownajDoWypozyczenia
Nazwa Kod
Zamawiaj ZAMAWIAJ
Zwracaj ZWRACAJ
2.3.6 Proces Wypozyczenie
Nazwa Kod
CzyDostepny CZYDOSTEPNY
Identyfikuj IDENTYFIKUJ
PorownajTytulPozycje POROWNAJTYTULPOZYCJE
Rezerwuj REZERWUJ
ZbierzInformacje ZBIERZINFORMACJE
2.3.7 Proces LogowaniePracownikow
Nazwa Kod
CzyMogeDopisac CZYMOGEDOPISAC
PorownajiDopiszDoBazyTymczasowej POROWNAJIDOPISZ
WylogujPracownika WYLOGUJPRACOWNIKA
2.4 Lista Przepływów Diagramu Kontekstowego
Name Code
Akceptacja_Weryfikacji AKCEPTACJA_WERYFIKACJI
DodajPracownikaDoStalejBazyDanych DODAJPRACOWNIKADOSTALEJBAZYDANYCH
doKoszyka DOKOSZYKA
DopiszPozycje DOPISZPOZYCJE
29
Name Code
DopiszTytul DOPISZTYTUL
InformacjaZwrotnaPracownikSignIn INFORMACJAZWROTNAPRACOWNIKSIGNIN
InformacjaZwrotnaPracownikSignOut INFORMACJAZWROTNAPRACOWNIKSIGNOUT
InformacjaZwrotnaSprawdzFilm INFORMACJAZWROTNASPRAWDZFILM
InformacjaZwrotnaWyslijFilm INFORMACJAZWROTNAWYSLIJFILM
PobierzInfoKsiegowosc POBIERZINFOKSIEGOWOSC
PoinformujOPromocjach POINFORMUJOPROMOCJACH
potwierdzenieSignIN POTWIERDZENIESIGNIN
PotwierdzenieSignOUT POTWIERDZENIESIGNOUT
PracownikSignIn PRACOWNIKSIGNIN
PracownikSignOut PRACOWNIKSIGNOUT
Promocje PROMOCJE
PrzegladajTabele PRZEGLADAJTABELE
PrzekazWszystko PRZEKAZWSZYSTKO
Rejestrowanie REJESTROWANIE
SignIN SIGNIN
SignOUT SIGNOUT
Sprawdz_Film SPRAWDZ_FILM
Weryfikacja WERYFIKACJA
Zarezerwowano ZAREZERWOWANO
zKoszyka ZKOSZYKA
2.5 Lista Magaznów
Nazwa Kod
DaneWeryfikacji DANEWERYFIKACJI
Klienci KLIENCI
Pozycje POZYCJE
Pracownicy PRACOWNICY
30
Nazwa Kod
Rezerwacje REZERWACJE
Tytuly TYTULY
Wypozyczenia WYPOZYCZENIA
ZalogowaniKlienci ZALOGOWANIKLIENCI
ZalogowaniPracownicy ZALOGOWANIPRACOWNICY
2.6 Lista Terminatorów
Nazwa Kod
Klient KLIENT
Ksiegowosc KSIEGOWOSC
Pracownik PRACOWNIK
31
Rezyser
RezyserImie PoleTekstowe
Rezyseruje
RezyserNazwisko PoleTekstowe
Film-Rezyser
RezyserID I
RezyserDataUrodzenia D
RezyserNagrody MBT
RezyserWebSite A40
RezyserAgencyContact TXT20
Identifier_1
JestRezyserowanyPrzez
Tytuły
Klienci
Tytul PoleTekstowe
Obsadza
KlientImie PoleTekstowe Identyfikator N5
KlientNazwisko PoleTekstowe ListaPlac TXT100
KlientID I CenaWpozyczenia Kwota
Aktorzy
Film-Aktor
KlientAKodPocztowy N5 CzasTrwania T
AktorID I
Wystepuje w
KlientANumerDomu N3 DataPremiery D
AktorImie PoleTekstowe
KlientANumerMieszkania N3 DostepneNosniki NO3
AktorNazwisko PoleTekstowe
KlientAMiasto PoleTekstowe
Identifier_1
Jest Dodawany przez AktorDataUrodzenia D
KlientAUlica PoleTekstowe
AktorNagrody MBT
KlientEMail A30
AktorWebSite A40
KlientLogin PoleTekstowe
zawiera wiele AktorAgencyContact TXT20
KlientHaslo A30
Identifier_1
KlientNumerTelefonu N11 Tytul-Pracownik
Identifier_1
Pozycje-tytuly
Dodaje
posiada jeden
PytaOWyp zyczenie
Wypozyczenia-Klienoci
PytaORezerwacje
Pracownicy
Wypo\yczenia PracownikID I
Pozycje Dodaje
PracownikLogin TXT20
wypozycza
IDWypozyczenia I
PracownikHaslo TXT20
NrEwidencyjny NO Pracownicy-pozycje
CzyOddane BL
UdzielaWypozyczenia
PracownikTyp I
wypozyczenia-PozycjeDataDodania D
Rezerwacje-Klienci CenaWypozyczenia Kwota
PracownikAdres TXT
IDPozycji I
DataWypozyczenia D jest wypozyczany przez Jest Dodawana przez
PracownikStanowisko I
Identifier_1
Identifier_1
PracownikPrawa N3
jest rezerwwany przez
Identifier_1
posiada
Dodaje
UdzielaRezerwacji
Rezerwacje
Rabaty - wypozyczenia
DataRezerwacji D
IDRezerwacji I
Rezerwuje
Rezerwacje-pozycje
Identifier_1
Zmniejsza cene
RabatyPromocje
Pozycja I
DataPromocji D
DataPromocji2 D
Jest dodawana przez Pracownik-Promocje
IDPromocji I
Ile Kwota
Identifier_1
32
2.7
Diagram Związków Encji
2.8 Słownik Danych
Tytuły = *Dane Opisujące Film"
Tytul + @Identyfikator + (ListaPlac) + CenaWypozyczenia + CzasTrwania + DataPremiery+DostepneNosniki
Tytul = *Tytul Filmu*
Tekst
@Identyfikator= *Identyfikator Filmu w Bazie*
Liczba
ListaPlac= *Dodatkowy Opis Filmu*
Tekst
CenaWypozyczenia= *Cena Katalogowa*
Liczba
CzasTrwania= *Czas Trwania Filmu*
Liczba
DataPremiery= * Kiedy WYpuszczono Film *
Data
DostepneNosniki= *Lista Dostępnych Nośnikó z Filmem*
Liczba
Aktorzy = *Dane Opisujące AKtora*
@AktorID + AktorImie +AktorNazwisko + AktorDataUrodznia + (AktorNagrody) +(AKtorWebSite) +
(AktorAgencyContact)
@AktorID =*Identyfikator Aktora*
Liczba
AktorImie=*Nazwa Własna jaką Aktorowi nadali rodzice*
Tekst
AktorNazwisko=*Nazwisko Aktora*
Tekst
AktorDataUrodznia=*Data Urodzenia Aktora*
Data
AktorNagrody=*Nagrody otrzymane Przez AKtora*
Tekst
AKtorWebSite=*Adres Strony Oficjalnej Aktora*
Tekst
AktorAgencyContact=*Oficjalny Kontakt*
Tekst
Rezyser = *Dane Opisujace Rezysera*
RezyserImie + RezyserNazwisko + @RezyserID + RezyserDataUrodzenia + (RezyserNagrody) + (RezyserWebSite)
+
(RezyserAgencyContact)
RezyserImie=*Imie Reżysera*
Tekst
RezyserNazwisko=*nazwisko Reżysera*
Tekst
@RezyserID=*Identyfikator Reżysera*
Liczba
RezyserDataUrodzenia=*Data w której urodził się Reżyser*
Data
RezyserNagrody=*Ewentualne nagrody przyznane Reżyserowi*
Tekst
33
RezyserWebSite=*Adres Stromny Reżysera*
Tekst
RezyserAgencyContact=*Kontakt Reżysera*
Tekst
Pozycje = *Dane Opisujące Pozycję*
NrEwidencyjny + DataDodnia + @IDPozycji
NrEwidencyjny=*Numer Ewidencyjny Pozycji*
Liczba
DataDodnia=*Data Dodania Pozycji*
Data
@IDPozycji=*Identyfikator Pozycji*
Liczba
Wypożyczenia= *Dane Opisujące Wypożyczenie"
@IDWypożyczenia + CzyOddane + CenaWypożyczenia + DataWypożyczenia
@IDWypożyczenia=*Identyfikator Wypożyczenia*
Liczba
CzyOddane=*Flaga Opisująca Fakt Oddania Nośnika*
Boolean
CenaWypożyczenia=*Cena Za Wypożuczenie Nośnika*
Liczba
DataWypożyczenia=*Data w kótrej dokonano wypożyczenia*
Data
Rezerwacje = *Dane Opisujące Rezerwację"
DataRezerwacji + @IdRezerwacji
DataRezerwacji=*Data Rezerwacji*
Data
@IdRezerwacji=*Identyfikator Rezerwacji*
Liczba
RabatyPromocje = *Dane opisujące Rabaty i Promocje*
Pozycja+DataPromocji+DataPromocji2 + @IDPromocji + Ile
Pozycja=* Identyfikator Pozycji *
Liczba
DataPromocji=*Data od Któej zaczyna się Promocja*
Data
DataPromocji2=*Data W kórej kończy sie promocja*
Data
@IDPromocji=*Idnetyfikator Promocji*
Liczba
Ile=*Ile wynosi promocja w %*
Liczba
Klienci = *Dane Opisujące Klientów"
KlientImie +Klientnazwisko + @KlientID + KlientAKodPocztowy + KlientANumerDomu +
klientANumerMieszkania +
KlientAMiasto + KlientAUlica + KlientEMail + KlientLogin+ KlientHaslo + KlientNumerTelefonu
34
KlientImie=*Imie Klienta*
Tekst
Klientnazwisko=*nazwisko Klienta*
Tekst
@KlientID=*identyfikator Klienta*
Liczba
KlientAKodPocztowy=*kod pocztowy Klienta*
Liczba
KlientANumerDomu=*Numer Domu klienta*
Liczba
klientANumerMieszkania=*Numer Mieszkania Klienta*
Liczba
KlientAMiasto=*Miasto w którym mieszka Klient*
Tekst
KlientAUlica=*Ulica na której mieszka klinent*
Tekst
KlientEMail=*Email Klienta*
Tekst
KlientLogin=*Login Klienta*
Tekst
KlientHaslo=*Haslo Klienta*
Tekst
KlientNumerTelefonu=*Nuemr telefonu Klienta*
Liczba
Pracownicy = *Dane Opisujące Pracowników*
@PracownikID + PracownikLogin + PracownikHaslo + PracownikTyp + PracownikAdres + PracownikStanowisko
+ PracownikPrawa
@PracownikID=*Identyfikator Pracownika*
Liczba
PracownikLogin=*Login Pracownika*
Tekst
PracownikHaslo=*Hasło pracownika*
Tekst
PracownikTyp=*Typ Praconika*
Tekst
PracownikAdres=*Adres Praconika*
Tekst
PracownikStanowisko=*Stanowisko Pracownika*
Tekst
PracownikPrawa=*Prawa dostępu do baz dla pracownika*
Liczba
Boolean = [ Tak | Nie ]
Data = Dzień + Miesiąc + Rok
Liczba = {Cyfra}
Tekst = {Litera | Cyfra | Znak}
Cyfra = [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
Litera = [ A Z | a z ]
Znak = [ | , | . |  |  |  |  | : | / | ! | ? | $ | & | ( | ) ]
Dzień = *Numer dnia w miesiącu. Zakres 1-31*
1{Cyfra}2
Miesiąc = *Numer miesiąca w roku. Zakres 1-12*
1{Cyfra}2
Rok = *Rok. Wartość minimalna 1900*
4{Cyfra}4
35
2.9 Specyfikacja Procesów (pseudokod)
Proces Sprawdz
StreamRead( AKodPocztowyKlienta,
AMiastoKlienta,
ANrDomuKlienta,
AUlicaKlienta,
EMaliKlienta,
HasloKlienta,
ImieKlienta,
LoginKlienta,
NazwiskoKlienta,
NrMieszkaniaKlienta,
NrTelefonuKlienta);
PutInto (DaneWeryfikacji)
SendMessageWIthLink(EMailKlienta,LoginKlienta);
CallProcedure(Potwierdz,Listen);
Proces Potwierdz
Listen While Signal From Klient!=null
ReadStatic(DaneWeryfikacji)=>AllData
GetPrimaryKey From Klienci i++ Until PrimaryKey Exist
IdKlienta=i
PutStatic(Klienci,i,AllData)
Proces Identyfikuj
Listen While SIgnal From KontrolaRezerwacji Or Signal From Logowanie != null
Identyti Source Logowanie or KontrolaRezewacji
Get IDKlienta,Tytul,LoginKlienta From Logowanie Or From KontrolaRezerwacji
CallPorownajTytulPozycje(IdKlienta,Tytul,LoginKlienta)
Proces PorownajTytolPozycje
Get Atribute Tytul from Identyfikuj Stream into a
Get Value Identyfikator from Tytuly DataBase where Tytuly.Tytul==a into b
Get Value NrEwidencyjny from Pozycje Where Pozycje.Identyfikator == b into c
if (Call(CzyDostepny) with Atribute c)==True
Call (ZbierzInformacje) with Atribute LoginKlienta, c
Proces ZbierzInformacje
StreamRead(LoginKlienta) from PorownajTytulPOzycje into b
label
StaticRead From Klienci IDKlienta,LoginKlienta => a
if a==b then goto label2
else goto label1
Tieout = RaiseBusinesError!
label2
StreamRead(Dostepnosc)From Czy dostepny into => c
If c=true then
write into wypożyczenia values date=GetDate IDKlient=a idPOzyczji=%IdPOzycji from Atribute
else
write into rezerwacje values date=GetDate IDKlient=a idPOzyczji=%IdPOzycji from Atribute
36
3 Częściowa Fizyczna Implemenatacja Systemu
3.1 Fizyczny Model Danych(PDM)
Rezyser
Physical Data Model
RezyserImie CHAR(20)
Model: PhysicalDataModelBasedOnConceptualDataModel_1
RezyserNazwisko CHAR(20)
Package:
RezyserID INTEGER
Diagram: Diagram_1
RezyserDataUrodzenia DATE
Author: Miron Błocki Date : 2008-01-22
RezyserNagrody CHAR(1)
RezyserWebSite CHAR(40) Version : 1
RezyserAgencyContact CHAR(40)
View_3 View_2
FK_TYTULY_FILM-REZY_REZYSER Tytul AktorImie
ListaPlac AktorNazwisko
CenaWpozyczenia AktorDataUrodzenia
CzasTrwania AktorNagrody
Procedurka
DataPremiery AktorWebSite
DostepneNosniki AktorAgencyContact
"Tytuly" "Tytuly"
"Aktorzy"
"FilmAktor"
Tytuły
Aktorzy
Tytul CHAR(20)
Identyfikator NUMBER(5) AktorID INTEGER
PracownikID INTEGER Film-Aktor AktorImie CHAR(20)
FK_FILMAKTO_WYSTEPUJE_TYTULY FK_FILMAKTO_OBSADZA_AKTORZY
RezyserID INTEGER AktorNazwisko CHAR(20)
AktorID INTEGER
ListaPlac CHAR(40) AktorDataUrodzenia DATE
Identyfikator NUMBER(5)
CenaWpozyczenia NUMBER(6,2) AktorNagrody CHAR(1)
CzasTrwania DATE AktorWebSite CHAR(40)
DataPremiery DATE AktorAgencyContact CHAR(40)
DostepneNosniki NUMBER(3)
RabatyPromocje
Pozycja INTEGER
DataPromocji DATE
DataPromocji2 DATE
FK_TYTULY_TYTUL-PRA_PRACOWNI
IDPromocji INTEGER
FK_POZYCJE_POZYCJE-T_TYTULY
IDWypozyczenia INTEGER
PracownikID INTEGER
Ile NUMBER(6,2)
Pracownicy
Pozycje
PracownikID INTEGER
NrEwidencyjny NUMBER(6) PracownikLogin CHAR(20)
FK_RABATYPR_RABATY - _WYPOZYCZ FK_POZYCJE_PRACOWNIC_PRACOWNIkHaslo CHAR(20)
DataDodania DATE Pracowni
IDPozycji INTEGER PracownikTyp INTEGER
PracownikID INTEGER PracownikAdres CHAR(40)
Identyfikator NUMBER(5) PracownikStanowisko INTEGER
PracownikPrawa NUMBER(3)
FK_WYPOZYCZ_WYPOZYCZE_POZYCJE
Wypo\yczenia
IDWypozyczenia INTEGER
IDPozycji INTEGER
KlientID INTEGER
CzyOddane SMALLINT
CenaWypozyczenia NUMBER(6,2)
DataWypozyczenia DATE
FK_REZERWAC_REZERWACJ_POZYCJE
FK_WYPOZYCZ_WYPOZYCZE_KLIENCI
Klienci
KlientImie CHAR(20) Rezerwacje
KlientNazwisko CHAR(20)
DataRezerwacji DATE
KlientID INTEGER
IDRezerwacji INTEGER
MiastoID INTEGER
IDPozycji INTEGER
UlicaID INTEGER
KlientID INTEGER
KlientAKodPocztowy NUMBER(5)
FK_REZERWAC_REZERWACJ_KLIENCI
KlientANumerDomu NUMBER(3)
KlientANumerMieszkania NUMBER(3)
KlientEMail CHAR(30)
KlientLogin CHAR(20)
KlientHaslo CHAR(30)
KlientNumerTelefonu NUMBER(11)
FK_KLIENCI_REFERENCE_MIASTAFK_KLIENCI_REFERENCE_ULICE
Ulice
Miasta
UlicaID INTEGER
MiastoID INTEGER
UlicaNazwa CHAR(20)
Nazwa CHAR(20)
FK_RABATYPR_PRACOWNIK_PRACOWNI
37
3.2 Skrypty SQL
/*===============================================================*/
/* Database name: PhysicalDataModelBasedOnConceptualDataModel_1 */
/* DBMS name: ORACLE Version 7 */
/* Created on: 2008-01-20 10:09:08 */
/*===============================================================*/
drop view "View_3";
drop view "View_2";
alter table "FilmAktor"
drop constraint FK_FILMAKTO_OBSADZA_AKTORZY;
alter table "FilmAktor"
drop constraint FK_FILMAKTO_WYSTEPUJE_TYTULY;
alter table "Klienci"
drop constraint FK_KLIENCI_REFERENCE_MIASTA;
alter table "Klienci"
drop constraint FK_KLIENCI_REFERENCE_ULICE;
alter table "Pozycje"
drop constraint "FK_POZYCJE_POZYCJE-T_TYTULY";
alter table "Pozycje"
drop constraint FK_POZYCJE_PRACOWNIC_PRACOWNI;
alter table "RabatyPromocje"
drop constraint FK_RABATYPR_PRACOWNIK_PRACOWNI;
alter table "RabatyPromocje"
drop constraint "FK_RABATYPR_RABATY - _WYPOZYCZ";
alter table "Rezerwacje"
drop constraint FK_REZERWAC_REZERWACJ_KLIENCI;
alter table "Rezerwacje"
drop constraint FK_REZERWAC_REZERWACJ_POZYCJE;
alter table "Tytuly"
drop constraint "FK_TYTULY_FILM-REZY_REZYSER";
alter table "Tytuly"
drop constraint "FK_TYTULY_TYTUL-PRA_PRACOWNI";
alter table "Wypozyczenia"
drop constraint FK_WYPOZYCZ_WYPOZYCZE_KLIENCI;
alter table "Wypozyczenia"
drop constraint FK_WYPOZYCZ_WYPOZYCZE_POZYCJE;
drop table "Aktorzy" cascade constraints;
drop table "FilmAktor" cascade constraints;
drop table "Klienci" cascade constraints;
drop table "Miasta" cascade constraints;
drop table "Pozycje" cascade constraints;
drop table "Pracownicy" cascade constraints;
drop table "RabatyPromocje" cascade constraints;
drop table "Rezerwacje" cascade constraints;
drop table "Rezyser" cascade constraints;
drop table "Tytuly" cascade constraints;
drop table "Ulice" cascade constraints;
drop table "Wypozyczenia" cascade constraints;
/==============================================================*/
/* Table: "Aktorzy" */
/*==============================================================*/
create table "Aktorzy" (
"AktorID" INTEGER not null,
"AktorImie" CHAR(20),
"AktorNazwisko" CHAR(20),
"AktorDataUrodzenia" DATE,
38
"AktorNagrody" CHAR(1),
"AktorWebSite" CHAR(40),
"AktorAgencyContact" CHAR(40),
constraint PK_AKTORZY primary key ("AktorID")
);
comment on column "Aktorzy"."AktorID" is
'AktorID';
comment on column "Aktorzy"."AktorImie" is
'AktorImie';
comment on column "Aktorzy"."AktorNazwisko" is
'AktorNazwisko';
comment on column "Aktorzy"."AktorDataUrodzenia" is
'AktorDataUrodzenia';
comment on column "Aktorzy"."AktorNagrody" is
'AktorNagrody';
comment on column "Aktorzy"."AktorWebSite" is
'AktorWebSite';
comment on column "Aktorzy"."AktorAgencyContact" is
'AktorAgencyContact';
/*==============================================================*/
/* Table: "FilmAktor" */
/*==============================================================*/
create table "FilmAktor" (
"AktorID" INTEGER not null,
"Identyfikator" NUMBER(5) not null,
constraint PK_FILMAKTOR primary key ("AktorID", "Identyfikator")
);
comment on column "FilmAktor"."AktorID" is
'AktorID';
comment on column "FilmAktor"."Identyfikator" is
'Identyfikator';
/*==============================================================*/
/* Table: "Klienci" */
/*==============================================================*/
create table "Klienci" (
"KlientImie" CHAR(20),
"KlientNazwisko" CHAR(20),
"KlientID" INTEGER not null,
"MiastoID" INTEGER,
"UlicaID" INTEGER,
"KlientAKodPocztowy" NUMBER(5),
"KlientANumerDomu" NUMBER(3),
"KlientANumerMieszkania" NUMBER(3),
"KlientEMail" CHAR(30),
"KlientLogin" CHAR(20) not null,
"KlientHaslo" CHAR(30),
"KlientNumerTelefonu" NUMBER(11),
constraint PK_KLIENCI primary key ("KlientID")
);
comment on column "Klienci"."KlientImie" is
'KlientImie';
comment on column "Klienci"."KlientNazwisko" is
'KlientNazwisko';
comment on column "Klienci"."KlientID" is
'KlientID';
comment on column "Klienci"."MiastoID" is
39
'MiastoID';
comment on column "Klienci"."UlicaID" is
'UlicaID';
comment on column "Klienci"."KlientAKodPocztowy" is
'KlientAKodPocztowy';
comment on column "Klienci"."KlientANumerDomu" is
'KlientANumerDomu';
comment on column "Klienci"."KlientANumerMieszkania" is
'KlientANumerMieszkania';
comment on column "Klienci"."KlientEMail" is
'KlientEMail';
comment on column "Klienci"."KlientLogin" is
'KlientLogin';
comment on column "Klienci"."KlientHaslo" is
'KlientHaslo';
comment on column "Klienci"."KlientNumerTelefonu" is
'KlientNumerTelefonu';
/*==============================================================*/
/* Table: "Miasta" */
/*==============================================================*/
create table "Miasta" (
"MiastoID" INTEGER not null,
"Nazwa" CHAR(20),
constraint PK_MIASTA primary key ("MiastoID")
);
comment on column "Miasta"."MiastoID" is
'MiastoID';
comment on column "Miasta"."Nazwa" is
'Nazwa';
/*==============================================================*/
/* Table: "Pozycje" */
/*==============================================================*/
create table "Pozycje" (
"NrEwidencyjny" NUMBER(6),
"DataDodania" DATE,
"IDPozycji" INTEGER not null,
"PracownikID" INTEGER not null,
"Identyfikator" NUMBER(5) not null,
constraint PK_POZYCJE primary key ("IDPozycji")
);
comment on column "Pozycje"."NrEwidencyjny" is
'NrEwidencyjny';
comment on column "Pozycje"."DataDodania" is
'DataDodania';
comment on column "Pozycje"."IDPozycji" is
'IDPozycji';
comment on column "Pozycje"."PracownikID" is
'PracownikID';
comment on column "Pozycje"."Identyfikator" is
'Identyfikator';
/*==============================================================*/
/* Table: "Pracownicy" */
/*==============================================================*/
create table "Pracownicy" (
"PracownikID" INTEGER not null,
"PracownikLogin" CHAR(20),
"PracownikHaslo" CHAR(20),
40
"PracownikTyp" INTEGER,
"PracownikAdres" CHAR(40),
"PracownikStanowisko" INTEGER,
"PracownikPrawa" NUMBER(3),
constraint PK_PRACOWNICY primary key ("PracownikID")
);
comment on column "Pracownicy"."PracownikID" is
'PracownikID';
comment on column "Pracownicy"."PracownikLogin" is
'PracownikLogin';
comment on column "Pracownicy"."PracownikHaslo" is
'PracownikHaslo';
comment on column "Pracownicy"."PracownikTyp" is
'PracownikTyp';
comment on column "Pracownicy"."PracownikAdres" is
'PracownikAdres';
comment on column "Pracownicy"."PracownikStanowisko" is
'PracownikStanowisko';
comment on column "Pracownicy"."PracownikPrawa" is
'PracownikPrawa';
/*==============================================================*/
/* Table: "RabatyPromocje" */
/*==============================================================*/
create table "RabatyPromocje" (
"Pozycja" INTEGER,
"DataPromocji" DATE,
"DataPromocji2" DATE,
"IDPromocji" INTEGER not null,
"IDWypozyczenia" INTEGER not null,
"PracownikID" INTEGER not null,
"Ile" NUMBER(6,2),
constraint PK_RABATYPROMOCJE primary key ("IDPromocji")
);
comment on column "RabatyPromocje"."Pozycja" is
'Pozycja';
comment on column "RabatyPromocje"."DataPromocji" is
'DataPromocji';
comment on column "RabatyPromocje"."DataPromocji2" is
'DataPromocji2';
comment on column "RabatyPromocje"."IDPromocji" is
'IDPromocji';
comment on column "RabatyPromocje"."IDWypozyczenia" is
'IDWypozyczenia';
comment on column "RabatyPromocje"."PracownikID" is
'PracownikID';
comment on column "RabatyPromocje"."Ile" is
'Ile';
/*==============================================================*/
/* Table: "Rezerwacje" */
/*==============================================================*/
create table "Rezerwacje" (
"DataRezerwacji" DATE,
"IDWypozyczenia2" INTEGER not null,
"IDPozycji" INTEGER,
"KlientID" INTEGER not null,
constraint PK_REZERWACJE primary key ("IDWypozyczenia2")
);
41
comment on column "Rezerwacje"."DataRezerwacji" is
'DataRezerwacji';
comment on column "Rezerwacje"."IDWypozyczenia2" is
'IDRezerwacji';
comment on column "Rezerwacje"."IDPozycji" is
'IDPozycji';
comment on column "Rezerwacje"."KlientID" is
'KlientID';
/*==============================================================*/
/* Table: "Rezyser" */
/*==============================================================*/
create table "Rezyser" (
"RezyserImie" CHAR(20),
"RezyserNazwisko" CHAR(20),
"RezyserID" INTEGER not null,
"RezyserDataUrodzenia" DATE,
"RezyserNagrody" CHAR(1),
"RezyserWebSite" CHAR(40),
"RezyserAgencyContact" CHAR(40),
constraint PK_REZYSER primary key ("RezyserID")
);
comment on column "Rezyser"."RezyserImie" is
'RezyserImie';
comment on column "Rezyser"."RezyserNazwisko" is
'RezyserNazwisko';
comment on column "Rezyser"."RezyserID" is
'RezyserID';
comment on column "Rezyser"."RezyserDataUrodzenia" is
'RezyserDataUrodzenia';
comment on column "Rezyser"."RezyserNagrody" is
'RezyserNagrody';
comment on column "Rezyser"."RezyserWebSite" is
'RezyserWebSite';
comment on column "Rezyser"."RezyserAgencyContact" is
'RezyserAgencyContact';
/*==============================================================*/
/* Table: "Tytuly" */
/*==============================================================*/
create table "Tytuly" (
"Tytul" CHAR(20),
"Identyfikator" NUMBER(5) not null,
"PracownikID" INTEGER not null,
"RezyserID" INTEGER not null,
"ListaPlac" CHAR(40),
"CenaWpozyczenia" NUMBER(6,2),
"CzasTrwania" DATE,
"DataPremiery" DATE,
"DostepneNosniki" NUMBER(3),
constraint PK_TYTULY primary key ("Identyfikator")
);
comment on column "Tytuly"."Tytul" is
'Tytul';
comment on column "Tytuly"."Identyfikator" is
'Identyfikator';
comment on column "Tytuly"."PracownikID" is
'PracownikID';
42
comment on column "Tytuly"."RezyserID" is
'RezyserID';
comment on column "Tytuly"."ListaPlac" is
'ListaPlac';
comment on column "Tytuly"."CenaWpozyczenia" is
'CenaWpozyczenia';
comment on column "Tytuly"."CzasTrwania" is
'CzasTrwania';
comment on column "Tytuly"."DataPremiery" is
'DataPremiery';
comment on column "Tytuly"."DostepneNosniki" is
'DostepneNosniki';
/*==============================================================*/
/* Table: "Ulice" */
/*==============================================================*/
create table "Ulice" (
"UlicaID" INTEGER not null,
"UlicaNazwa" CHAR(20),
constraint PK_ULICE primary key ("UlicaID")
);
comment on column "Ulice"."UlicaID" is
'UlicaID';
comment on column "Ulice"."UlicaNazwa" is
'UlicaNazwa';
/*==============================================================*/
/* Table: "Wypozyczenia" */
/*==============================================================*/
create table "Wypozyczenia" (
"IDWypozyczenia" INTEGER not null,
"IDPozycji" INTEGER not null,
"KlientID" INTEGER not null,
"CzyOddane" SMALLINT,
"CenaWypozyczenia" NUMBER(6,2),
"DataWypozyczenia" DATE,
constraint PK_WYPOZYCZENIA primary key ("IDWypozyczenia")
);
comment on column "Wypozyczenia"."IDWypozyczenia" is
'IDWypozyczenia';
comment on column "Wypozyczenia"."IDPozycji" is
'IDPozycji';
comment on column "Wypozyczenia"."KlientID" is
'KlientID';
comment on column "Wypozyczenia"."CzyOddane" is
'CzyOddane';
comment on column "Wypozyczenia"."CenaWypozyczenia" is
'CenaWypozyczenia';
comment on column "Wypozyczenia"."DataWypozyczenia" is
'DataWypozyczenia';
alter table "FilmAktor"
add constraint FK_FILMAKTO_OBSADZA_AKTORZY foreign key ("AktorID")
references "Aktorzy" ("AktorID");
alter table "FilmAktor"
add constraint FK_FILMAKTO_WYSTEPUJE_TYTULY foreign key ("Identyfikator")
references "Tytuly" ("Identyfikator");
alter table "Klienci"
add constraint FK_KLIENCI_REFERENCE_MIASTA foreign key ("MiastoID")
references "Miasta" ("MiastoID");
43
alter table "Klienci"
add constraint FK_KLIENCI_REFERENCE_ULICE foreign key ("UlicaID")
references "Ulice" ("UlicaID");
alter table "Pozycje"
add constraint "FK_POZYCJE_POZYCJE-T_TYTULY" foreign key ("Identyfikator")
references "Tytuly" ("Identyfikator");
alter table "Pozycje"
add constraint FK_POZYCJE_PRACOWNIC_PRACOWNI foreign key ("PracownikID")
references "Pracownicy" ("PracownikID");
alter table "RabatyPromocje"
add constraint FK_RABATYPR_PRACOWNIK_PRACOWNI foreign key ("PracownikID")
references "Pracownicy" ("PracownikID");
alter table "RabatyPromocje"
add constraint "FK_RABATYPR_RABATY - _WYPOZYCZ" foreign key ("IDWypozyczenia")
references "Wypozyczenia" ("IDWypozyczenia");
alter table "Rezerwacje"
add constraint FK_REZERWAC_REZERWACJ_KLIENCI foreign key ("KlientID")
references "Klienci" ("KlientID");
alter table "Rezerwacje"
add constraint FK_REZERWAC_REZERWACJ_POZYCJE foreign key ("IDPozycji")
references "Pozycje" ("IDPozycji");
alter table "Tytuly"
add constraint "FK_TYTULY_FILM-REZY_REZYSER" foreign key ("RezyserID")
references "Rezyser" ("RezyserID");
alter table "Tytuly"
add constraint "FK_TYTULY_TYTUL-PRA_PRACOWNI" foreign key ("PracownikID")
references "Pracownicy" ("PracownikID");
alter table "Wypozyczenia"
add constraint FK_WYPOZYCZ_WYPOZYCZE_KLIENCI foreign key ("KlientID")
references "Klienci" ("KlientID");
alter table "Wypozyczenia"
add constraint FK_WYPOZYCZ_WYPOZYCZE_POZYCJE foreign key ("IDPozycji")
references "Pozycje" ("IDPozycji");
create or replace view "View_2" as
select "Tytuly"."Tytul", "Tytuly"."Identyfikator" "Tytuly"_"Identyfikator", "Tytuly"."PracownikID",
"Tytuly"."RezyserID", "Tytuly"."ListaPlac", "Tytuly"."CenaWpozyczenia", "Tytuly"."CzasTrwania",
"Tytuly"."DataPremiery", "Tytuly"."DostepneNosniki", "Aktorzy"."AktorID" "Aktorzy"_"AktorID",
"Aktorzy"."AktorImie", "Aktorzy"."AktorNazwisko", "Aktorzy"."AktorDataUrodzenia", "Aktorzy"."AktorNagrody",
"Aktorzy"."AktorWebSite", "Aktorzy"."AktorAgencyContact", "FilmAktor"."AktorID" "FilmAktor"_"AktorID",
"FilmAktor"."Identyfikator" "FilmAktor"_"Identyfikator"
from "Tytuly", "Aktorzy", "FilmAktor"
Where "Tytuly"."Tytul" = '&tyt'
And "Tytuly"_"Identyfikator"="FilmAktor"_"Identyfikator"
And "FilmAktor"_"AktorID" = "Aktorzy"_"AktorID";
create or replace view "View_3" as
select "Tytuly"."Tytul", "Tytuly"."Identyfikator", "Tytuly"."PracownikID", "Tytuly"."RezyserID",
"Tytuly"."ListaPlac", "Tytuly"."CenaWpozyczenia", "Tytuly"."CzasTrwania", "Tytuly"."DataPremiery",
"Tytuly"."DostepneNosniki"
from "Tytuly";
3.3 Dane Testowe
insert into Aktorzy ("AktorID", "AktorImie", "AktorNazwisko", "AktorDataUrodzenia", "AktorNagrody",
"AktorWebSite", "AktorAgencyContact") values (1, 'KK4MFB1KRRH9UPXWI4F7', 'XN4USJ55SG4HPD9JNQOG',
44
'1-1-1 0:0:0', ' ', '2L2EW0V97QD6LKFFKLTSLOJC5PIV75KOKBG1PLLN', 'XL5C3PXL0A1M3TUKOT
3OL615LBACMRSHKRV4LD8');
insert into Aktorzy ("AktorID", "AktorImie", "AktorNazwisko", "AktorDataUrodzenia", "AktorNagrody",
"AktorWebSite", "AktorAgencyContact") values (2, 'U6RTYYLD89T C2N1 W88', '3CT0HME2XWIBFCTAF8Y9',
'910-11-16 1:38:59', '0', 'R4JUVLP0NYAJA52UTP4A11MSIFD9FH4APASXUP9W',
'3T1EJ9I7A2S39RVRPLCT7U77IY01HE28V743W101');
insert into Aktorzy ("AktorID", "AktorImie", "AktorNazwisko", "AktorDataUrodzenia", "AktorNagrody",
"AktorWebSite", "AktorAgencyContact") values (3, 'KNTPG6PFFXP2KCPKJC47', 'PJ6QTDHV YJ0I5TLM6T3', '297-
3-3 0:5:59', '1', '31RHKX1UMA2H79WIM3GCGRHCNIKD O2LUGPGCRIB', 'BVDEXTITND8 HXD7K8NXEV WKRJ47C
E1MT1SMNR');
insert into Aktorzy ("AktorID", "AktorImie", "AktorNazwisko", "AktorDataUrodzenia", "AktorNagrody",
"AktorWebSite", "AktorAgencyContact") values (0, 'SP5TOH9 2C44YF3 CIJ', 'ERHYQB5MG1OH4X4VN9E1',
'1309-4-3 7:6:54', '2', 'TOKP84 1ST63I 3FQNI1E6O9E7JIL4HXOW5B5YFY',
'IN4NPQ0UMO2IX184YL9WCO647HV2VE1R5YQU6F Q');
insert into Rezyser ("RezyserImie", "RezyserNazwisko", "RezyserID", "RezyserDataUrodzenia",
"RezyserNagrody", "RezyserWebSite", "RezyserAgencyContact") values ('DDVACJBPPPP468NVCH2V', ' LD
0FTWDPLSUJK1RFKK', 3, '925-5-11 10:20:43', '1', 'NS440B YM0VLE 7DMR S3LIYF69RBGK2YQ4FOYQM',
'41N0BOREYL9GU1244WACS0S7V8867TUUTK055BF5');
insert into Rezyser ("RezyserImie", "RezyserNazwisko", "RezyserID", "RezyserDataUrodzenia",
"RezyserNagrody", "RezyserWebSite", "RezyserAgencyContact") values ('6HMEN2110BAO4D1NP6NL', 'JSNB
8B7QCU3PLV5IVRX', 1, '551-8-7 16:49:8', '2', 'LXN9J9IO7IGXNQLFRPY6LVKWHGFVW586PWL0M0JI',
'F1Y3K05MAAMDE6N4GHRE BC3SPVMMHPPXFC3VSF2');
insert into Rezyser ("RezyserImie", "RezyserNazwisko", "RezyserID", "RezyserDataUrodzenia",
"RezyserNagrody", "RezyserWebSite", "RezyserAgencyContact") values ('8DB0R61DK164MFKOENDT',
'MI2I0YFXPINNCC0S51AR', 0, '1291-12-3 18:10:22', ' ', '1ST3AJGQ5PY MN518NTJCR7L76X9 Q40 BMBDD2I',
'UQ0EW1463K3LJNPVN9SCYQ65C5J6X5C9360QQU F');
insert into Rezyser ("RezyserImie", "RezyserNazwisko", "RezyserID", "RezyserDataUrodzenia",
"RezyserNagrody", "RezyserWebSite", "RezyserAgencyContact") values ('K6XUDY5VJELO098DVOPV', '6AG
EHKQDBTWLY0JUCA9', 2, '1-1-1 0:0:0', '0', 'OBMUIJ0F8EUG2JORUT9UMPSQUVVHE2BSE5 MQ12C',
'ERFGP7J2WVT1GLPQ8VR6I0HRO PIVUR9DG0M QQ6');
insert into Pracownicy ("PracownikID", "PracownikLogin", "PracownikHaslo", "PracownikTyp",
"PracownikAdres", "PracownikStanowisko", "PracownikPrawa") values (2, '0JD3AV6W3TVF6LJLE U4',
'WTXKK1D9G1U9RWK69JU8', 0, 'YHL1CXTB790Y5169RM2836J5L2FQB19NUJU1RYLL', 3, 0);
insert into Pracownicy ("PracownikID", "PracownikLogin", "PracownikHaslo", "PracownikTyp",
"PracownikAdres", "PracownikStanowisko", "PracownikPrawa") values (1, '89NJXKRESP3H PBVFQ0',
'9PU75FVJ0Y1L8537GX01', 2, 'FU3 6SRRM9RWT7G 10BOD595P31HBS4V305S7JBI', 0, 3);
insert into Pracownicy ("PracownikID", "PracownikLogin", "PracownikHaslo", "PracownikTyp",
"PracownikAdres", "PracownikStanowisko", "PracownikPrawa") values (3, 'L NXHO8SMK8TFPB GLDC',
'B9HGDWK9GDXITRRKUAW8', 3, 'MUWX24JRV1USCINF9XYPK836KGB7GNXNY7H7VGAI', 1, 2);
insert into Pracownicy ("PracownikID", "PracownikLogin", "PracownikHaslo", "PracownikTyp",
"PracownikAdres", "PracownikStanowisko", "PracownikPrawa") values (0, 'H7QV60Q7JSTAIYUM7SCC', '
9KUEWCI YUEOAKGJ0C7', 1, 'JBB596WPSMN8Q1OTB0G TLIKJQMOQU4ER E0H817', 2, 1);
insert into Miasta ("MiastoID", "Nazwa") values (3, 'BDXHEKQ2462AFLA1L49S');
insert into Miasta ("MiastoID", "Nazwa") values (1, 'INDY2D N8575UQ0G1X2J');
insert into Miasta ("MiastoID", "Nazwa") values (2, 'XJUDDDMSX9 L0MEXK6DB');
insert into Miasta ("MiastoID", "Nazwa") values (0, 'LS 2D8ASTA6JFYECECJU');
insert into Ulice ("UlicaID", "UlicaNazwa") values (3, 'V7A4B5865B1HXSFV5GFO');
insert into Ulice ("UlicaID", "UlicaNazwa") values (1, '7W89SSLR 89XTHO8WG2S');
insert into Ulice ("UlicaID", "UlicaNazwa") values (2, '19CMHE4Y1 VDQ52ENHST');
insert into Ulice ("UlicaID", "UlicaNazwa") values (0, 'GADQTDEPP21QTLBG2D5B');
insert into Tytuly ("Tytul", "Identyfikator", "PracownikID", "RezyserID", "ListaPlac", "CenaWpozyczenia",
"CzasTrwania", "DataPremiery", "DostepneNosniki") values ('XCANUCEN8GIRRPGSJ9B0', 3, 2, 3, '
2068DOE3ITS6WA4K XIC 7UK4 IWM7DX2DHBAL8', 2, '1-1-1 0:0:0', '1904-3-28 23:38:15', 2);
insert into Tytuly ("Tytul", "Identyfikator", "PracownikID", "RezyserID", "ListaPlac", "CenaWpozyczenia",
"CzasTrwania", "DataPremiery", "DostepneNosniki") values ('VQC96A0U7D4UKR6FQELR', 0, 1, 1,
'9IVGANFJDW3M4732NSGFMEM2SCUHXDPLCST1PC7S', 1, '1569-10-20 7:15:6', '640-6-13 2:28:17', 0);
45
insert into Tytuly ("Tytul", "Identyfikator", "PracownikID", "RezyserID", "ListaPlac", "CenaWpozyczenia",
"CzasTrwania", "DataPremiery", "DostepneNosniki") values ('5AXO6U0P031IJI6191D3', 2, 3, 1,
'R8J53QD95I7A7MONM1AXAA4C8X78LQJ8OBO OL3O', 0, '417-6-22 17:19:52', '1-1-1 0:0:0', 3);
insert into Tytuly ("Tytul", "Identyfikator", "PracownikID", "RezyserID", "ListaPlac", "CenaWpozyczenia",
"CzasTrwania", "DataPremiery", "DostepneNosniki") values ('6656XKP9NRWWT821V4VB', 1, 2, 0,
'OF9BHSH1SI2HXPGFWICUM3H39IRCTPFBEKCLJGT5', 3, '945-7-21 17:45:1', '1300-4-17 21:3:22', 1);
insert into Klienci ("KlientImie", "KlientNazwisko", "KlientID", "MiastoID", "UlicaID", "KlientAKodPocztowy",
"KlientANumerDomu", "KlientANumerMieszkania", "KlientEMail", "KlientLogin", "KlientHaslo",
"KlientNumerTelefonu") values ('JBP12Y0D2DE8F78MVUFD', '1SPYTA369XT76UE6WQDC', 2, 3, 3, 0, 0, 0,
'QYJ9G3H5ICHNPOL3XP17G3YFRLQLT9', 'CU3X1EBB A6RG1VDJFOJ', '1C 7JPBE3SDAWKJUK7A7LMMQGH5EFY',
0);
insert into Klienci ("KlientImie", "KlientNazwisko", "KlientID", "MiastoID", "UlicaID", "KlientAKodPocztowy",
"KlientANumerDomu", "KlientANumerMieszkania", "KlientEMail", "KlientLogin", "KlientHaslo",
"KlientNumerTelefonu") values ('7XPBPKLVN72IOJ HFXVO', 'JLWPPCIYLAELOGN8214F', 1, 1, 2, 1, 2, 3,
'8GQJBOXD8UKKBRSSE1LYNG5J7U9YSD', 'YTB42XYK31ADEPRKUJV6', 'U 12DAWSJGDWH3TEQY70F3BBW
WRQQ', 3);
insert into Klienci ("KlientImie", "KlientNazwisko", "KlientID", "MiastoID", "UlicaID", "KlientAKodPocztowy",
"KlientANumerDomu", "KlientANumerMieszkania", "KlientEMail", "KlientLogin", "KlientHaslo",
"KlientNumerTelefonu") values ('728FK0C3YP0 NXOQ4NLM', '5MT8SLW28GOO2CGX2F2H', 3, 1, 3, 2, 1, 1,
'ADMWV8QHXWM089R89BVS7A7X7WS2J7', '75EA6TRTDEX0R9H6N95U',
'KK6CQVJSRXQ6LHTSPNLDUYI8KNMXJ8', 2);
insert into Klienci ("KlientImie", "KlientNazwisko", "KlientID", "MiastoID", "UlicaID", "KlientAKodPocztowy",
"KlientANumerDomu", "KlientANumerMieszkania", "KlientEMail", "KlientLogin", "KlientHaslo",
"KlientNumerTelefonu") values ('ULOP4Q4DLOSU1DKGFQJB', 'Y1VULVJ4VJ85LTNTFYMO', 0, 2, 2, 3, 3, 2,
'C5RVA0QOJIC21Q AA4HAPKJWMOJ19 ', 'GTVK4FNSYXH20JUKKJ9R', 'H6U54ONJLYYKHH0SVI8 WS23TCQ1A ', 1);
insert into FilmAktor ("AktorID", "Identyfikator") values (1, 3);
insert into FilmAktor ("AktorID", "Identyfikator") values (2, 0);
insert into FilmAktor ("AktorID", "Identyfikator") values (3, 2);
insert into FilmAktor ("AktorID", "Identyfikator") values (0, 1);
insert into Pozycje ("NrEwidencyjny", "DataDodania", "IDPozycji", "PracownikID", "Identyfikator") values (2,
'1655-5-29 3:1:53', 0, 1, 3);
insert into Pozycje ("NrEwidencyjny", "DataDodania", "IDPozycji", "PracownikID", "Identyfikator") values (3,
'714-8-13 10:36:57', 3, 3, 0);
insert into Pozycje ("NrEwidencyjny", "DataDodania", "IDPozycji", "PracownikID", "Identyfikator") values (0,
'1360-1-4 0:56:15', 1, 2, 3);
insert into Pozycje ("NrEwidencyjny", "DataDodania", "IDPozycji", "PracownikID", "Identyfikator") values (1, '1-
1-1 0:0:0', 2, 3, 0);
insert into Rezerwacje ("DataRezerwacji", "IDWypozyczenia2", "IDPozycji", "KlientID") values ('734-4-5
10:13:52', 1, 0, 2);
insert into Rezerwacje ("DataRezerwacji", "IDWypozyczenia2", "IDPozycji", "KlientID") values ('1-1-1 0:0:0', 3, 3,
2);
insert into Rezerwacje ("DataRezerwacji", "IDWypozyczenia2", "IDPozycji", "KlientID") values ('1508-6-8 4:0:3',
2, 3, 1);
insert into Rezerwacje ("DataRezerwacji", "IDWypozyczenia2", "IDPozycji", "KlientID") values ('1239-9-5
18:24:29', 0, 1, 1);
insert into Wypozyczenia ("IDWypozyczenia", "IDPozycji", "KlientID", "CzyOddane", "CenaWypozyczenia",
"DataWypozyczenia") values (3, 0, 2, 3, 1, '1711-8-18 5:34:43');
insert into Wypozyczenia ("IDWypozyczenia", "IDPozycji", "KlientID", "CzyOddane", "CenaWypozyczenia",
"DataWypozyczenia") values (1, 1, 2, 2, 3, '666-3-15 10:25:21');
insert into Wypozyczenia ("IDWypozyczenia", "IDPozycji", "KlientID", "CzyOddane", "CenaWypozyczenia",
"DataWypozyczenia") values (0, 0, 3, 0, 0, '1-1-1 0:0:0');
insert into Wypozyczenia ("IDWypozyczenia", "IDPozycji", "KlientID", "CzyOddane", "CenaWypozyczenia",
"DataWypozyczenia") values (2, 0, 2, 1, 2, '1028-11-27 11:43:21');
insert into RabatyPromocje ("Pozycja", "DataPromocji", "DataPromocji2", "IDPromocji", "IDWypozyczenia",
"PracownikID", "Ile") values (3, '854-8-10 4:27:13', '1-1-1 0:0:0', 0, 0, 3, 0);
insert into RabatyPromocje ("Pozycja", "DataPromocji", "DataPromocji2", "IDPromocji", "IDWypozyczenia",
"PracownikID", "Ile") values (0, '1-1-1 0:0:0', '592-6-24 6:33:12', 3, 1, 3, 2);
46
insert into RabatyPromocje ("Pozycja", "DataPromocji", "DataPromocji2", "IDPromocji", "IDWypozyczenia",
"PracownikID", "Ile") values (2, '1175-6-14 18:10:15', '1490-9-9 15:13:0', 1, 3, 2, 3);
insert into RabatyPromocje ("Pozycja", "DataPromocji", "DataPromocji2", "IDPromocji", "IDWypozyczenia",
"PracownikID", "Ile") values (1, '423-3-15 6:15:26', '1063-7-17 9:10:25', 2, 1, 1, 1);
Wybrane Triggery
create or replace trigger sprawdz
after update of Aktorzy on Imie
for each row
declare
wartosc Aktorzy.Imie%type;
begin
if :new.Imie= 
then raise_application_error(
-20000,'nie można');
end if;
end;
/
47
3.4 Wstępny Projekt GUI
Prosty przejrzysty Graficzny Interfejs Użytkownika. Duże ikony uzupełnione są tekstem. Symbole oraz
Prosty przejrzysty Graficzny Interfejs Użytkownika. Duże ikony uzupełnione są tekstem. Symbole oraz
Prosty przejrzysty Graficzny Interfejs Użytkownika. Duże ikony uzupełnione są tekstem. Symbole oraz
kolorystyka są jednoznaczne. Pola uniemożliwiają wprowadzanie błędnych danych. System dodaje
kolorystyka są jednoznaczne. Pola uniemożliwiają wprowadzanie błędnych danych. System dodaje
 ułatwienia w postaci sprawdzenia w bazie czy dany obiekt już istnieje (login,ulica,miasto) lub np.
 ułatwienia w postaci sprawdzenia w bazie czy dany obiekt już istnieje (login,ulica,miasto) lub np.
 ułatwienia w postaci sprawdzenia w bazie czy dany obiekt już istnieje (login,ulica,miasto) lub np.
sprawdza jak silne jest hasło  poprzez kolorowe kłódki.
poprzez kolorowe kłódki.
Dodatkowo  szybkie wyszukiwanie. Logowanie łatwo dostępne.
szybkie wyszukiwanie. Logowanie łatwo dostępne.
3.5 Sugestia Wyboru Narzędzi Programistycznych
Wyboru Narzędzi Programistycznych
Platformą programistyczną odpowiednią dla tego systemu jest C#. Powodami dla których go
Platformą programistyczną odpowiednią dla tego systemu jest C#. Powodami dla których go
Platformą programistyczną odpowiednią dla tego systemu jest C#. Powodami dla których go
polecam są:
-pełna obiektowość
-łatwa implementacja
-typy generyczne
-odśmiecanie pamięci
-klasy BCL
-Wspomaga rozwiązania firmy Microsoft. Serwis w postaci strony internetowej stworzonej przy
Wspomaga rozwiązania firmy Microsoft. Serwis w postaci strony internetowej stworzonej przy
użyciu ASP.NET w C# doskonale współpracuje z Bazą Danych SQL Server. Ponadto Windows 2003
użyciu ASP.NET w C# doskonale współpracuje z Bazą Danych SQL Server. Ponadto Windows 2003
użyciu ASP.NET w C# doskonale współpracuje z Bazą Danych SQL Server. Ponadto Windows 2003
Server jest bardzo stabilny a cały system umożliwia łatwą rozbudowę oraz wykrywanie usterek
Server jest bardzo stabilny a cały system umożliwia łatwą rozbudowę oraz wykrywanie usterek
Server jest bardzo stabilny a cały system umożliwia łatwą rozbudowę oraz wykrywanie usterek 
meta programowanie.
48
-Serwis powinien mieć ładną szatę graficzną, kontrolować przesyłane informacje oraz zarządzać
zasobami. C# współpracuje z najnowszymi technologiami Microsoft u  Microsoft Presentation
Fundation, Microsoft Communication Foundation I Microsoft WorkFlow Fundation.
Pod wieloma względami  głównie wydajnościowymi  C# przewyższa najczęściej
porównywaną z nim Javę. Toteż moja sugestia to C#.
3.6 Sugestia Wyboru Architektury Systemu
Nasz System jest typowym serwisem Webowym. Poprzez przeglądarkę internetową klient
może zarządzać zasobami w wypożyczalni. Zasady współpracy podsystemów ograniczają się jedynie
do warstwy logicznej  fizycznie mogą to być ewentualne kopie zapasowe baz danych
przechowywane na innych dyskach. Dzięki Technologiom Microsoft możemy stworzyć w pełni
funkcjonalny, elastyczny i kompatybilny serwis. Cała logika będzie odbywać się po stronie serwera
toteż nie będzie stanowić problemu nawet gdy klient będzie posiadał system Linux na swoim
komputerze.
Baza Danych powinna opierać się na Microsoft SQL Server 2003 a system operacyjny 
Windows 2003 Server.
Implementacja całego oprogramowania przebiega szybko i łatwo. Wdrożenie systemu nie
będzie sprawiało problemów  za całą  elastyczność będzie odpowiadał Framework.
3.7 Sugestia Wyboru Platformy Sprzętowej
Serwer Tyan Tank GT25 (B5381)
Z procesorami serii Intel Xeon 5000/5100
Dyskiem SATA (Serwer wykorzystuje opcje RAID 0,1,10,5)
Pamięcią operacyjną 48 BG DDR2 533/667
Złączami 2x GbE LAN
49
4 Analiza Obiektowa Modelu
Analiza Obiektowa Modelu
4.1 Diagram Procesów Biznesowych
Diagram Procesów Biznesowych
50
Proces Dostawa
51
4.2 Diagram Przypadków Użycia
Diagram Przypadków Użycia
Określiłem tu funkcjonalność ser m związki pomiędzy
rwisu  stanowiącą wartość dla Aktora. Określiłem
poszczególnymi przypadkami uży wcześniej w
ycia. Serwis dostarcza funkcje wyspecyfikowane w
wymaganiach
52
4.3 Diagram Klas
4.4 Deklaracje Klas w Języku C#
Deklaracje Klas w Języku C#
using System;
namespace ObjectOrientedModel_1
namespace ObjectOrientedModel_1
{
public class Klient
{
/// bool
public bool ZmienImie()
{
// TODO: implement
return false;
}
/// bool
public bool ZmienNazwisko()
{
// TODO: implement
return false;
}
/// string
public string ZwrocImie()
{
// TODO: implement
return "";
}
53
/// string
public string ZwrocNazwisko()
{
// TODO: implement
return "";
}
/// string
public string ZwrocAdres()
{
// TODO: implement
return "";
}
/// int
public int ZwrocId()
{
// TODO: implement
return 0;
}
public ObjectOrientedModel_1.Wypozyczenie Association_2;
public ObjectOrientedModel_1.Weryfikacja[] Association_9;
public ObjectOrientedModel_1.Rezerwacja Association_7;
private string Imie;
private string Nazwsko;
private string Adres;
private int ID;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Magazyn
{
/// string
public string OkreslMiejsce()
{
// TODO: implement
return "";
}
public void ZglosUsterke()
{
// TODO: implement
}
/// bool
public bool UsunNosnik()
{
// TODO: implement
return false;
}
54
/// bool
public bool DodajNosnik()
{
// TODO: implement
return false;
}
public int PozycjaWMagazynie;
public int ParametryMagazynu;
public ObjectOrientedModel_1.Pozycja[] Association_8;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Pozycja
{
/// int
public int ZwrocNrEwindecyjny()
{
// TODO: implement
return 0;
}
/// bool
public bool ZwrocCzyDostepna()
{
// TODO: implement
return false;
}
public int ParametryPozycji;
public int Identyfikatortytulu;
public bool Dostepny;
private int NrEwidencyjny;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class PracownikWypozyczalni
{
/// int
public int PodniesPlace()
{
// TODO: implement
return 0;
}
public string Imie;
55
public string Nazwisko;
public int IDPracownika;
public int Placa;
public ObjectOrientedModel_1.Tytul[] Association_1;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Rezerwacja
{
/// int
public int Konstruktor()
{
// TODO: implement
return 0;
}
/// int
public int Destruktor()
{
// TODO: implement
return 0;
}
public int Pozycja;
public int Data;
public int Klient;
public ObjectOrientedModel_1.Pozycja Association_10;
public ObjectOrientedModel_1.Pozycja[] Association_7B;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Robol : ObjectOrientedModel_1.PracownikWypozyczalni
{
/// bool
public bool PrzyznajPrawa()
{
// TODO: implement
return false;
}
public int parametryRobola;
}
}
using System;
56
namespace ObjectOrientedModel_1
{
public class Szef : ObjectOrientedModel_1.PracownikWypozyczalni
{
public int ParametrySzefa;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Tytul
{
public void ZmienOpis()
{
// TODO: implement
}
public void ZmienTytul()
{
// TODO: implement
}
/// int
public int ZmienParametry()
{
// TODO: implement
return 0;
}
public void ZmienCene()
{
// TODO: implement
}
public void ZmienCzas()
{
// TODO: implement
}
/// int
public int ZmienIdentyfikatorTytulu()
{
// TODO: implement
return 0;
}
/// Tytul
public ObjectOrientedModel_1.Tytul ZwrocParametry()
{
// TODO: implement
return null;
}
public ObjectOrientedModel_1.Pozycja[] Association_4;
57
private string Tytul;
private int Parametry;
private string Opis;
private int Cena;
private int Czas;
private int IdentyfikatorTytulu;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Weryfikacja
{
/// bool
public bool GenerujNoweHaslo()
{
// TODO: implement
return false;
}
public string Login;
public string Haslo;
public int IDKlientaBezpieczenstwo;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Wplata
{
/// int
public int NaliczPodatek()
{
// TODO: implement
return 0;
}
/// int
public int ZmienWplate()
{
// TODO: implement
return 0;
}
public void ZwrocWplate()
{
// TODO: implement
}
public int KlientWplacajacy;
public int ParametrWplaty;
58
public ObjectOrientedModel_1.Wypozyczenie Association_7;
public ObjectOrientedModel_1.Rezerwacja Association_8;
}
}
using System;
namespace ObjectOrientedModel_1
{
public class Wypozyczenie
{
/// int
public int Konstruktor()
{
// TODO: implement
return 0;
}
/// int
public int Destruktor()
{
// TODO: implement
return 0;
}
public void Przegladaj()
{
// TODO: implement
}
/// bool
public bool SprawdzCzyDostepny()
{
// TODO: implement
return false;
}
public void UtworzRezerwacje()
{
// TODO: implement
}
public void FeedBack()
{
// TODO: implement
}
public void SpradzPlatnosc()
{
// TODO: implement
}
public int ParametryWypozyczenia;
public int DataWypozyczenia;
public int KlientWypozyczajacy;
public int PozycjaWypozyczana;
public ObjectOrientedModel_1.Rezerwacja Association_9;
public ObjectOrientedModel_1.Pozycja[] Association_2B;
}}
59
4.5 Dodatkowe Diagramy UML
Dodatkowe Diagramy UML
4.5.1 Diagram Obiektów
4.5.2 Diagram Stanów
60
4.5.3 Diagram Sekwencji
:Tytul :Pozycja
Klinet Ksiegowosc
<>
:Wypozyczenie
1: Konstruktor
UtworzWplate
:Wplata
3: Przeglądaj
4: ZwrocidentyfikatorTytulu
5: SprawdzCzyDostepny
6: ZwrocCzyDostepna
SprawdzPlatnosc
ZwrocWplate
<>
:Rezerwacja
UtworzRezerwacje
7: FeedBack
61


Wyszukiwarka

Podobne podstrony:
2006 06 Wstęp do Scrum [Inzynieria Oprogramowania]
Inżynieria oprogramowania II
2006 09 Wielozadaniowość w systemach operacyjnych [Inzynieria Oprogramowania]
Inżynieria oprogramowania
2006 03 XFire w akcji [Inzynieria Oprogramowania]
2007 08 UML – modelowanie statycznych aspektów oprogramowania [Inzynieria Oprogramowania]
Inżynieria oprogramowania Diagramy ERD
2006 10 Przegląd modeli cyklu życia oprogramowania [Inzynieria Oprogramowania]
,Inżynieria oprogramowania L, operacje w bazie danych biblioteki
2007 06 UML – potrzeba standaryzacji notacji [Inzynieria Oprogramowania]
2007 11 Extreme Programming i CMMI [Inzynieria Oprogramowania]
Inżynieria oprogramowania zakupy on line
2006 10 Łączenie kodu C z zarządzanym kodem NET [Inzynieria Oprogramowania]
2006 04 Rozszerzenie wzorca Template [Inzynieria Oprogramowania]

więcej podobnych podstron