PROJEKT SYSTEMU ZARZĄDZANIA KLUBAMI PIŁKARSKIMI D. K. Informatyka II stopnia sem. 3 Analiza Projektowanie i Programowanie Obiektowe
WYMAGANIA SYSTEMOWE Wymaganie jakie musi spełniać system zostały przedstawione na poniższym diagramie wymagań systemowych. 1
PRZYPADKI UŻYCIA 2
OPIS FUNKCJONALNY 1. Zarządzanie klubami piłkarskimi 2. Rejestracja 2.1. Rejestracja ligi Kluby piłkarskie są przypisane do określonych lig, które z kolei funkcjonują w określonych okręgach i pod-okręgach. Stąd też musi istnieć możliwość rejestracji danej ligi piłkarskiej na terenie danego okręgu. Rejestracją ligi zajmuje się administrator systemu - z reguły danego okręgu. Po rejestracji danej ligi kluby będą mogły być do niej przypisane. 2.2. Rejestracja klubu 2.3. Rejestracja drużyny Rejestracją klubu zajmuje się prezes klubu. Wysyła on formularz zgłoszeniowy, który z kolei jest akceptowany przez administratora systemu. Po akceptacji prezes otrzymuje uprawnienia do dodawania drużyny wchodzącej w skład danego klubu piłkarskiego. Od tej pory może również dodawać piłkarzy do klubu, drużyny. W zależności od ligi w której znajduje się dany klub, powinien on posiadać określoną liczbę grup juniorskich: - 1 liga - 2 drużyny - A klasa - 1 drużyna - B klasa - 0 drużyn 2.4. Rejestracja piłkarza Pierwsza rejestracja piłkarza odbywa się poprzez formularz zgłoszeniowy - wpisywane są dane osobowe, zdjęcie (zgoda rodziców jeżeli dany piłkarz nie jest pełnoletni). Po wprowadzeniu do systemu piłkarz otrzymuje swój własny identyfikator. Piłkarze są podzieleni według określonych grup wiekowych: - seniorzy - juniorzy starsi - juniorzy młodsi - trampkarze - młodzicy - orliki - żacy Piłkarze mogą być przypisani tylko do jednego klubu piłkarskiego jednocześnie. Kierownik drużyny lub prezes klubu który chce przypisać piłkarza do swojego klubu wybiera z listy dostępnych piłkarzy. Takie przypisanie musi potwierdzić administrator systemu. 3. Zgłoszenia 3.1. Zgłoszenie klubu do rozgrywek Jeżeli drużyna główna (seniorska) gra w lidze okręgowej to przed rozgrywkami prezes klubu zgłasza drużynę do systemu oraz podaje zawodników którzy zagrają w danym sezonie. Drużyna może zagrać w niższej lidze (jeżeli np. nie ma pieniędzy) ale musi spełniać wymagania na liczebność grup juniorskich. 3
3.2. Zgłoszenie meczu piłkarskiego Po zgłoszeniu wszystkich klubów do rozgrywek system powinien ustalić daną kolejkę (która drużyna gra z którą - na zasadzie każdy z każdym) oraz ustalić terminarz. 3.3. Zgłoszenie składu sędziowskiego Do danego meczu powinno się zgłaszać tróję sędziowską czyli sędziego głównego oraz dwóch sędziów liniowych. Robi to odpowiedni organ. Po zgłoszeniu sędziów do meczu sędzia główny logując się do systemu będzie miał dostęp do meczu który sędziuje. 3.4. Zgłoszenie zawodnika Do każdego meczu kierownik drużyny powinien zgłosić zawodników. Lista wszystkich zawodników którzy mogą grać w danym sezonie jest podawana przez prezesa klubu. Kierownik drużyny wybiera zawodników tylko z tej listy. Do danego meczu podawana jest lista zawodników grających oraz rezerwowych. Podczas wybierania danego zawodnika system powinien sprawdzić ilość żółtych oraz czerwonych kartek i w zależności od ich ilości w poprzednich meczach ew. nie dopuścić zawodnika do meczu. 3.5. Zgłoszenie transferu Możliwe jest wypożyczenie zawodnika z innego klubu. Możliwe jest to na podstawie umowy zawartej między klubem pozyskującym oraz odstępującym. Opcję transferu w systemie musi zaakceptować administrator. Po jego akceptacji na liście zawodników, który może wybrać klub pojawia się zawodnik którego transferujemy. Niemożliwe jest wypożyczenie 2 razy pod rząd tego samego zawodnika. System po wykryciu takiej sytuacji nie powinien pozwolić na transfer zawodnika. 4. Dokumenty 4.1. Karta rejestracji zawodnika Wydruk karty rejestracji zawodnika powinien być możliwy w każdej chwili i powinien zawierać wszystkie dane wprowadzane podczas rejestracji zawodnika oraz jego zdjęcie. 4.2. Protokół meczowy Po zakończonym meczu sędzia główny wprowadza do systemu dane na temat odbytego meczu - ilość strzelonych bramek, żółte oraz czerwone kartki. Po wprowadzeniu danych powinien być możliwy wydruk protokołu w dowolnym momencie. 4
OPIS TECHNICZNY 1. Klasy 5
Okreg - klasa reprezentująca okręg w kraju - id (int) - identyfikator okręgu - nazwa (string) - nazwa okręgu Liga - klasa reprezentująca ligę piłkarską - id (int) - identyfikator ligi - nazwa (string) - nazwa ligi piłkarskiej - okreg (Okreg) - obiekt klasy Okreg Klub - klasa reprezentująca klub piłkarski - id (int) - identyfikator klubu piłkarskiego - nazwa (string) - nazwę klubu piłkarskiego - liga (Liga) - obiekt klasy Liga Klasa - klasa reprezentująca klasę drużyn piłkarskich w danej lidze - id (int) - identyfikator klasy - nazwa (string) - nazwa klasy Druzyna - klasa reprezentująca drużynę piłkarską - id (int) - identyfikator drużyny piłkarskiej - nazwa (string) - nazwa drużyny piłkarskiej - klasa (Klasa) - obiekt klasy Klasa - klub (Klub) - obiekt klasy Klub Osoba - abstrakcyjna klasa reprezentująca osobę jako człowieka - id (int) - identyfikator osoby - imie (string) - imię osoby - nazwisko (string) - nazwisko osoby - wiek (int) - wiek osoby Sedzia - klasa reprezentująca sędziego i dziedzicząca wszystkie atrybuty po klasie Osoba Pilkarz - klasa reprezentująca piłkarza i dziedzicząca wszystkie atrybuty po klasie Osoba Mecz - klasa reprezentująca konkretny mecz piłkarski - id (int) - identyfikator meczu - data (Date) - obiekt klasy Date zawierający datę rozgrywania meczu piłkarskiego - kolejka (Kolejka) - obiekt klasy Kolejka - druzyny (array) - tablica zawierająca obiekty klas Druzyna - pilkarze (array) - tablica zawierająca obiekty klasy Pilkarz - sedziowie (array) - tablica zawierająca obiekty klasy Sedzia 6
Rozgrywka - klasa reprezentująca daną rozgrywkę i implementująca interfejs Obserwowany - mecz (Mecz) - obiekt klasy mecz Statystyka - klasa reprezentująca statystykę danego meczu i implementująca interfejs Obserwator Transfer - klasa narzędziowa służąca do dokonania transferu zawodnika Rejestracja - klasa narzędziowa służąca do dokonania rejestracji podmiotów System - główna klasa zarządzająca systemem - rejestracja (Rejestracja) - obiekt klasy rejestracja - transfer (Transfer) - obiekt klasy Transfer - rozgrywka (Rozgrywka) - obiekt klasy Rozgrywka Na diagramie klas oraz opisie zostały pominięte metody klas. Dla wszystkich klas powinny natomiast powstać podstawowe metody do pobierania i ustawiania atrybutów (gettery i settery) oraz metody pobierające i zapisujące dane do bazy danych. 7
2. Obiekty (diagramy sekwencji) 2.1. Rejestracja podmiotów Rejestracja podstawowych podmiotów (piłkarz, liga, klub itd) przebiega w sposób identyczny. Powyżej przedstawiono prosty przykład rejestracji piłkarza. W programie głównym tworzony jest obiekt klasy System i wywoływana jest metoda rejestruj z parametrem pilkarz. Tworzony jest obiekt klasy Rejestracja który z kolei powołuje do życia klasę Pilkarz. Do klasy przesyłane są dane wypełnione w formularzu, a następnie zapisywane do bazy danych. 8
2.2. Rejestracja meczu piłkarskiego 9
Rejestracja meczu piłkarskiego w początkowej fazie wygląda identycznie jak przy rejestracji podmiotów (rejestrowane są podstawowe dane). W dalszym etapie następuje rejestracja piłkarzy oraz sędziów - jest to proces wielokrotny i tak dla piłkarzy został przyjęta minimalna wymagana ilość (22 piłkarzy grających) oraz 3 sędziów. W dalszej fazie dodawane są drużyny piłkarskie - zostało to ujęte w ogólnym bloku Pobierz drużyny ponieważ jest to stosunkowo prosty proces - każda klasa tworzy obiekt który jest jej atrybutem (z diagramu klas) będzie to wyglądało następująco: Druzyna->Klasa,->Klub->Liga- >Okreg. Jeżeli wszystkie dane zostaną wypełnione, wykonywany jest zapis do bazy danych. 10
2.3. Statystyka meczu Statystykę meczu uzupełnia sędzia główny po zakończonym meczu piłkarskim. Wprowadza dane do protokołu pomeczowego, który może być następnie wydrukowany. Do tego celu wykorzystano wzorzec projektowy Obserwator. Wprowadzenie każdej kolejnej zmiany (wpisanie żółtej kartki, zmiany zawodnika itp.) jest odnotowywane. Po utworzeniu obiektu Rozgrywka dodawany jest obserwator który jest obiektem klasy Statystyka, następnie pobierane są dane meczu, a na końcu powiadamiany jest obserwator o zmianie stanu. Wywołanie metody uaktualnij() powoduje zapis do bazy danych odpowiedniej wartości (opisane w sekcji Baza Danych) 11
3. Baza danych okreg - tabela zawierająca dane o okręgach lig piłkarskich - id (smallint) - identyfikator okręgu - nazwa (varchar 45) - nazwa okręgu - okreg_id (smallint) - identyfikator okręgu rodzica (dla pod okręgów) liga - tabela zawierająca dane o ligach piłkarskich - id (tinyint) - identyfikator ligi - nazwa (varchar 45) - nazwa ligi okregi_ligi_kluby - tabela łącząca dane o 3 z trzech tabel i określa który klub znajduje się w której lidze w jakim okręgu - okreg_id (smallint) - identyfikator okręgu - liga_id (tinyint) - identyfikator ligi - klub_id (int) - identyfikator klubu 12
klub - tabela zawierająca dane o klubie piłkarskim - id (int) - identyfikator klubu piłkarskiego - nazwa (varchar 255) - nazwa klubu piłkarskiego klasa - tabela zawierająca dane o klasie drużyn piłkarskich - id (tinyint) - identyfikator klasy - nazwa (varchar 45) - nazwa klasy druzyna - tabela zawierająca dane o drużynie piłkarskiej - id (int) - identyfikator drużyny - nazwa (varchar 255) - nazwa drużyny piłkarskiej - klub_id (int) - identyfikator klubu do którego należy drużyna - klasa_id (tinyint) - identyfikator klasy druzyny_pilkarze - tabela łącząca piłkarza z daną drużyną - druzyna_id (int) - identyfikator drużyny - pilkarz_id (int) - identyfikator piłkarza transfer - tabela zawierająca dane o transferach piłkarzy - id (int) - identyfikator transferu - pilkarz_id (int) - identyfikator piłkarza - druzyna_id (int) - identyfikator drużyny odstępującej - data_od (date) - data rozpoczęcia transferu - data_do (date) - data zakończenia transferu osoba - tabela zawierająca dane o osobach (piłkarzach, sędziach i innych użytkownikach) - id (int) - identyfikator osoby - imie (varchar 100) - imię osoby - nazwisko (varchar 200) - nazwisko osoby - data_urodzenia (date) - data urodzenia osoby - rola_id (tinyint) - identyfikator roli rola - tabela zawierająca informacje o rolach osób (piłkarz sędzia itd) - id (tinyint) - identyfikator roli - nazwa (varchar 45) - nazwa roli 13
mecz - tabela zawierająca podstawowe informacje o meczu piłkarskim (która drużyna z którą, data itp) - id (int) - identyfikator meczu - kolejka_id (int) - identyfikator kolejki - druzyna1_id (int) - identyfikator pierwszej drużyny - druzyna2_id (int) - identyfikator drugiej drużyny - data (datetime) - data i godzina rozegrania meczu kolejka - tabela zawierająca informacje o kolejce meczów piłkarskich - id (int) - identyfikator kolejki - numer (tinyint) - numer kolejki - runda (enum) - wiosenna, jesienna mecze_sedziowie - tabela łącząca zawierająca informacje o przypisaniu sędziów do danego meczu - mecz_id (int) - identyfikator meczu - sedzia_id (int) - identyfikator sędziego mecze_pilkarze - tabela łącząca zawierająca informacje o przypisaniu piłkarzy do danego meczu - mecz_id (int) - identyfikator meczu - pilkarz_id (int) - identyfikator piłkarza mecz_statystyka - tabela zawierająca rozszerzone informacje o danym meczu piłkarskim - jest to uniwersalna struktura która może zawierać wiele różnych informacji naraz. Może być wprowadzana po meczu przez sędziego, lub uzupełniana na bieżąco podczas trwania meczu. - id (int) - identyfikator statystyki - mecz_id (int) - identyfikator meczu którego dotyczy statystyka - akcja (enum) - żółta karta, czerwona kartka, zmiana zawodnika, gol dla drużyny i inne rzeczy które w danym meczu można wpisywać - druzyna_id (int) - identyfikator drużyny której akcja dotyczy - pilkarz_id (int) - identyfikator piłkarza którego akcja może dotyczyć (nie musi) - wartosc (text) - wartość dla akcji czyli np. w której minucie padł gol, który piłkarz się zmienił, w której minucie był rzut rożny - data (datetime) - data i czas dla akcji 14
4. Rozlokowanie Diagram rozlokowania przedstawia fizyczną strukturę z której może być zbudowany system. Przedstawiono główny serwer (fizyczny) na którym zainstalowane są dwie maszyny wirtualne (osobno dla aplikacji i osobno dla bazy danych). Maszyny wirtualne pozwalają w większym stopniu wykorzystać procesory serwera. Może istnieć oczywiście więcej maszyn lecz wtedy trzeba będzie wprowadzić narzędzie loadbalancingu dla aplikacji oraz replikacji dla bazy danych. Jednak dla takiego wykorzystania jak w projekcie przedstawiony schemat powinien w zupełności wystarczyć. Aplikacja powinna być oparta o jeden z języków skryptowych (np. PHP) z tego powodu iż nie będzie konieczna instalacja oprogramowania na stacjach klienckich (wystarczy przeglądarka www). Jako serwer bazodanowy wybrano Mysql ponieważ dla takiego rozwiązania w zupełności wystarczy (w wersji komercyjnej). Administrator ma dostęp do maszyny fizycznej jak również do maszyn wirtualnych. 15