Wirtualna książka przeglądów (1)

Poniżej jest umieszczana automatycznie treść podstrony przeglady1 znajdującej się w namespace projektu. Proszę ją utworzyć i traktować jako stronę startową - tam umieszczamy linki do poszczególnych podstron, które też mają się znajdować w projekcie, np. analiza_wymagan. W namespace mogą też Państwo umieszczać pliki (obrazki, diagramy, archiwa) linkowane na stronie danego projektu. Proszę usunąć ten akapit po zapoznaniu się z jego treścią.

Projekt konceptualny

1. Sformułowanie zadania projektowego:

Aplikacja powinna pozwolić właścicielom samochodów na rejestrację czynności wykonywanych w serwisie. System powinien umożliwiać budowanie bazy modeli samochodów z wyszczególnieniem czynności oraz ich częstotliwości (według czasu i/lub przebiegu) z podziałem na „przeglądy” (z opcjonalną wymianą), „wymiany” (obowiązkowe). Użytkownicy definiują samochód (poprzez wybór modelu, oraz uzupełnienie atrybutów takich jak data produkcji, data rejestracji, VIN, kolor, nr rejestracyjny), a następnie mogą definiować dla nich „zdarzenia” oznaczające przeprowadzenie przy określonej dacie i przy określonym przebiegu danej czynności. Dla każdej czynności powinna być możliwość dodania notatek oraz załączników w postaci plików JPG i PDF). System powinien obliczać pozostały czas i przebieg do kolejnych czynności serwisowych, a także generować raport wszystkich czynności wykonanych przy samochodzie.

2. Analiza stanu wyjściowego:

Projekt zaczynamy od początku.

3. Analiza wymagań użytkownika (wstępna):

Celem projektu jest stworzenie aplikacji webowej (dostępnej z poziomu przeglądarki) oferującej użytkownikowi przejrzystą książkę przeglądową. Klient ma możliwość stworzenia własnego konta, dodania samochodu, edytowania danych serwisowych na jego temat (przebiegu, dat wymiany elementów), generowania raportów zawierających najważniejsze dane i datę najbliższego przeglądu oraz dodawanie zdarzeń. Z wymagań pozafunkcjonalnych ważne jest, aby system nie generował dużych opóźnień, co byłoby drażniące dla użytkownika.

4. Określenie scenariuszy użycia:

Zakładanie nowego konta

Użytkownik wchodzi na stronę pansamochodzik.pl. Widzi opcje: „załóż konto” i „zaloguj się”. Klika w „załóż konto” i zostaje przekierowany na stronę zawierającą pola do wypełnienia (login, hasło oraz podstawowe dane osobowe). Po wciśnięciu „ok” serwer sprawdza poprawność danych, jeżeli przechodzą one test pomyślnie użytkownik widzi napis „Nowe konto zostało utworzone”.

Logowanie się

Użytkownik wchodzi na stronę pansamochodzik.pl. Widzi opcje: „załóż konto” i „zaloguj się”. Klika w zaloguj się i zostaje przekierowany na stronę zawierającą pola do logowania (login i hasło). Po wciśnięciu „ok” serwer sprawdza zgodność danych, jeżeli przechodzą one test pomyślnie użytkownik zostaje przekierowany na stronę swojego konta.

Panel użytkownika

Po zalogowaniu się użytkownik jest przekierowywany do swojej strony, z której ma dostęp do poniższych funkcjonalności. Może się też wylogować. Jeżeli w którymś samochodzie jakiś podzespół wymaga wymiany/przeglądu, to jest to wyszczególnione na stronie głównej.

Edytowanie konta

Użytkownik może zmienić hasło - w takim wypadku musi najpierw podać stare, a następnie dwukrotnie nowe hasło i zatwierdzić przyciskiem „ok”. Może też zmienić swoje dane osobowe.

Moje samochody

Użytkownik zostaje przekierowany na stronę, na której znajduje się lista jego samochodów. Przy każdym samochodzie jest opcja skasowania go (przycisk „Usuń”) oraz uzyskania większej ilości informacji na jego temat (przycisk „Przeglądaj”). Na dole listy znajduje się przycisk „Dodaj samochód”. Po wybraniu „Przeglądaj” użytkownik otrzymuje raport, w którym zawarte są informacje o samochodzie, przebiegu, wszystkich częściach samochodu oraz pozostałym przebiegu/czasie do wymiany/przeglądu. Elementy, którym niewiele do wymiany brakuje, lub termin ten już przekroczyły, są wyszczególnione. Po kliknięciu w „Dodaj samochód” użytkownik zostaje przekierowany do formularza, gdzie uzupełnia podstawowe dane o samochodzie (marka, model, silnik). Dane te są zgłaszane do serwisu, który próbuje wyszukać samochód o takich parametrach, aby zwrócić listę części, którą już ktoś wypełnił. Jeżeli mu się to uda, użytkownikowi proponuje się ową konfigurację (z możliwością edytowania, dodawania i usuwania części). Jeżeli takiego samochodu w bazie nie ma, użytkownik musi sam dodać wszystkie części, nad którymi serwis ma sprawować pieczę. Po zatwierdzeniu jest proszony o ponowne przyjrzenie się temu, co wpisał i zatwierdzenie kolejne, ponieważ wpisane dane będzie mógł edytować tylko podczas zdarzenia serwisowego.

Zdarzenia

Użytkownik na tej podstronie może wyświetlić wszystkie zdarzenia, które miały miejsce lub dodać zdarzenie nowe. Po kliknięciu w „Dodaj zdarzenie” musi wybrać samochód, którego zdarzenie dotyczy. Kiedy go zatwierdzi, jest przekierowany do strony, na której wybiera, które elementy z danego samochodu przeszły przegląd/wymianę. W przypadku wymiany może też zmienić parametry nowej części (dopuszczalny przebieg/dopuszczalny czas użytkowania). Na koniec uzupełnia dodatkowe informacje: datę, komentarz, serwis oraz ewentualne zdjęcie.

Aktualizowanie przebiegu

Użytkownik widzi listę swoich samochodów wraz z wypisanymi przebiegami. Obok każdego z nich ma okno, do którego może wpisać nowy przebieg i zatwierdzić go przyciskiem „ok”.

5. Funkcje realizowane w bazie danych:

- zakładanie nowego konta - logowanie/wylogowywanie z serwisu - edycja konta - dodawanie/usuwanie samochodu - edytowanie danych samochodu - aktualizowanie danych serwisowych - dodawanie zdarzeń - dodawanie komentarzy i obrazków do zdarzeń - przeliczanie daty wymiany elementów samochodu - generowanie raportów - przechowywanie danych użytkownika

6. Diagram FHD

8. Opis encji i ich atrybutów:

Osoba

  1. ID_WŁAŚCICIELA(Primary Key, INTEGER)
  2. Imię (TEXT)
  3. Nazwisko (TEXT)
  4. Data urodzenia (DATE)
  5. Płeć (TEXT)
  6. Login (TEXT)
  7. Hasło (TEXT)

Samochód

  1. ID_SAMOCHODU (Primary Key, INTEGER)
  2. ID_WŁAŚCICIELA (Foreign Key, INTEGER)
  3. Marka (TEXT)
  4. Model (TEXT)
  5. Silnik (TEXT)
  6. Przebieg (INTEGER)

Część

  1. ID_CZĘŚCI (Primary Key, INTEGER)
  2. ID_SAMOCHODU (Foreign Key, INTEGER)
  3. Nazwa (TEXT)
  4. Symbol (TEXT)
  5. Przebieg do wymiany (INTEGER)
  6. Przebieg do przeglądu (INTEGER)
  7. Okres wymiany (INTEGER)
  8. Okres przeglądu (INTEGER)
  9. Warunki wymiany (TEXT)
  10. Warunki przeglądu (TEXT)

Zdarzenie

  1. ID_ZDARZENIA (Primary Key)
  2. ID_SAMOCHODU (Foreign Key)
  3. Data (DATE)
  4. Komentarz (TEXT)
  5. Zdjęcie (TEXT/IMAGE) - nie wiemy, czy zdjęcie można zamieszczać jako image, czy trzeba jako adres url.
  6. Serwis (TEXT)
  7. Przebieg w momencie zdarzenia (INTEGER)

Zestawienie

  1. ID_CZĘŚCI (Foreign Key, INTEGER)
  2. ID_ZDARZENIA (Foreign Key, INTEGER)
  3. Typ zdarzenia (TEXT) - przegląd czy wymiana

9. Diagram ERD

10. Projekt diagramów STD

Projekt logiczny

Projektowanie relacji między encjami

Diagram ERD przedstawiający schematy tabel wraz z atrybutami

Tablica krzyżowa: Tablica ukazująca związki pomiędzy tabelami

Projekt bazy w języku SQL (DDL)

CREATE TABLE Czesc (

ID_CZESCI INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Samochod_ID_SAMOCHODU INTEGER UNSIGNED NOT NULL,
Nazwa TEXT,
Symbol TEXT,
Przebieg_do_wymiany INTEGER UNSIGNED,
Przebieg_do_przegladu INTEGER UNSIGNED,
Okres_wymiany INTEGER UNSIGNED,
Okres_przegladu INTEGER UNSIGNED,
Warunki_wymiany TEXT NOT NULL,
Warumki_przegladu TEXT NOT NULL,
PRIMARY KEY(ID_CZESCI),
FOREIGN KEY (Samochod_ID_SAMOCHODU) REFERENCES Samochod (ID_SAMOCHODU)

);

CREATE TABLE Osoba (

ID_WŁASCICIELA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Imie TEXT NOT NULL,
Nazwisko TEXT NOT NULL,
Data urodzenia DATE NOT NULL,
Plec TEXT NOT NULL,
Login TEXT UNSIGNED NOT NULL UNIQUE,
Haslo TEXT NOT NULL,
PRIMARY KEY(ID_WŁASCICIELA)

);

CREATE TABLE Samochod (

ID_SAMOCHODU INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Osoba_ID_WŁASCICIELA INTEGER UNSIGNED NOT NULL,
Marka TEXT NOT NULL,
Model TEXT NOT NULL,
Silnik TEXT NOT NULL,
Przebieg INTEGER UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY(ID_SAMOCHODU),
FOREIGN KEY (Osoba_ID_WŁASCICIELA) REFERENCES Osoba(ID_WLASCICIELA)

);

CREATE TABLE Zdarzenie (

ID_ZDARZENIA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Data_zdarzenia DATE NOT NULL,
Komentarz TEXT,
Zdjecie TEXT,
Serwis TEXT,
Przebieg_w_momencie_zdarzenia INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(ID_ZDARZENIA)

);

CREATE TABLE Zestawienie (

Typ_zdarzenia TEXT NOT NULL,
Zdarzenie_ID_ZDARZENIA INTEGER UNSIGNED NOT NULL,
Czesc_ID_CZESCI INTEGER UNSIGNED NOT NULL,
FOREIGN KEY (Czesc_ID_CZESCI) REFERENCES Czesc(ID_CZESCI),
FOREIGN KEY (Zdarzenie_ID_ZDARZENIA) REFERENCES Zdarzenie(ID_ZDARZENIA)

);

Słowniki danych. Specyfikacja słownika danych. Specyfikacja dziedzin i ograniczeń. Dodatkowe informacje.

Dozwolone znaki:

dozwolony-znak-alf = [ A-Z | a-z | - | ]
dozwolony-znak-alfnum = [ A-Z | a-z | - | 1-9 | ]

Osoba

  Imię = *imię posiadacza konta* {dozwolony-znak-alf}
  Nazwisko = *nazwisko posiadacza konta* {dozwolony-znak-alf}
  Data urodzenia = *jednostki: dni od 01.01.1900*
  Płeć = *płeć posiadacza konta* [M|K]
  Login = *login posiadacza konta* {dowolny-znak-alfnum} 
  Hasło = *hasło posiadacza konta* {dowolny-znak-alfnum}

Samochód

  Marka = *marka samochodu* {dowolny-znak-alf}
  Model = *model samochodu* {dowolny-znak-alfnum}
  Silnik = *rodzaj silnika - diesel/benzyna + pojemność* {dowolny-znak-alfnum}
  Przebieg = *aktualny przebieg samochodu* *jednostka: km, zakres: 0-inf*

Część

  Nazwa = *nazwa części* {dowolny-znak-alf}
  Symbol = *symbol katalogowy części* 
  Przebieg do wymiany = *przebieg, po którym należy wymienić część* *jednostka: km*
  Przebieg do przeglądu = *przebieg, po którym należy przeglądnąć część* *jednostka: km*
  Okres wymiany = *czas, po którym należy wymienić część* *jednostka: liczba dni*
  Okres przeglądu = *czas, po którym należy przeglądnąć część* *jednostka: liczba dni*
  Warunki wymiany = *wskaźnik, który informuje o warunkach wymiany* [przebieg | okres]
  Warunki przeglądu = *wskaźnik, który informuje o warunkach przeglądu* [przebieg | okres]

Zdarzenie

  Data = *jednostki: dni od 01.01.1900*
  Komentarz = *komentarz użytkownika na temat czynności serwisowej*
  Zdjęcie = *adres url zdjęcia*
  Serwis = *nazwa serwisu, w którym nastąpiła czynność*
  Przebieg w momencie zdarzenia = *przebieg w momencie zdarzenia* *jednostka: km*

Zestawienie

  Typ zdarzenia = [przeglad | wymiana]
  Analiza zależności funkcyjnych i normalizacja tabel (dekompozycja do 3NF, BCNF, 4NF, 5NF); na tym etapie dokonuje się sprawdzenia, czy tabele spełniają warunki zakładanych postaci normalnych i ew. dekompozycji w celu normalizacji. Każda tabela powinna zostać przeanalizowana zgodnie z wytycznymi przedstawionymi na wykładzie; efekty tej analizy powinny zostać w całości umieszczone w raporcie.
  

Projektowanie operacji na danych: zdefiniowanie kwerend dla realizacji funkcji wyspecyfikowanych w projekcie.

Zakładanie nowego konta

Sprawdzamy, czy podany login istnieje:

SELECT * FROM Osoba
WHERE Login = login_in;

Jeżeli nie istnieje dodajemy go:

INSERT INTO Osoba (Imie,Nazwisko,Data_urodzenia,Plec,Login,Haslo)
VALUES (imie_in,nazwisko_in,data_ur_in,plec_in,login_in,haslo_in);
Logowanie/wylogowywanie z serwisu

Sprawdzamy, czy hasło podane przez użytkownika jest poprawne.

SELECT Haslo FROM Osoba
WHERE Login = login_in;
Edycja konta

Szkielet ogólnej komendy edycji konta

UPDATE Osoba
SET col = nowa_wartosc
WHERE Login = login_in;
Dodawanie/usuwanie samochodu

Dodawanie nowego samochodu

INSERT INTO Samochod (Osoba_ID_WLASCICIELA,Marka,Model,Silnik)
VALUES (osoba_id_wlasc,marka,model,silnik);

Dodawanie części do tablicy Części

INSERT INTO Czesci
(Samochod_ID_SAMOCHODU,Nazwa,Symbol,Przebieg_do_wymiany,Przebieg_do_przegladu,Okres_wymiany,Okres_przegladu,Warunki_wymiany,Warunki_przegladu)
VALUES(id_samochodu,nazwa_in,symbol_in,przebieg_do_wymiany_in,przebieg_do_przegladu_in,okres_wymiany_in,okres_przegladu_in,warunki_wymiany_in,warunki_przegladu_in);

Pokazanie użytkownikowi danych o jego samochodach

SELECT * FROM Samochod
WHERE Osoba_ID_WLASCICIELA = osoba_id_wlasc;

Usuwanie samochodu

DELETE FROM Samochod
WHERE ID_SAMOCHODU = id_samochodu; 

Usuwanie czesci

DELETE FROM Czesci
WHERE Samochod_ID_SAMOCHODU = id_samochodu;
Edytowanie danych samochodu
UPDATE Samochod
SET col = nowa_wartosc
WHERE Login = login_in;
Aktualizowanie przebiegu
UPDATE Samochod
SET Przebieg = przebieg_in
WHERE ID_SAMOCHODU = id_samochodu_in;
Dodawanie zdarzeń
INSERT INTO Zdarzenie (Data_zdarzenia,Komentarz,Zdjecie,Serwis,Przebieg_w_momencie_zdarzenia)
VALUES (data_zdarzenia_in,komentarz_in,zdjecie_in,serwis_in,przebieg_w_momencie_zdarzenia_in);

Dodawanie nowych części

INSERT INTO Czesci
(Samochod_ID_SAMOCHODU,Nazwa,Symbol,Przebieg_do_wymiany,Przebieg_do_przegladu,Okres_wymiany,Okres_przegladu,Warunki_wymiany,Warunki_przegladu)
VALUES(id_samochodu,nazwa_in,symbol_in,przebieg_do_wymiany_in,przebieg_do_przegladu_in,okres_wymiany_in,okres_przegladu_in,warunki_wymiany_in,warunki_przegladu_in);

Edytowanie części

UPDATE Czesci
SET col = nowa_wartosc
WHERE Login = login_in;

Usuwanie części

DELETE FROM Czesci
WHERE Samochod_ID_SAMOCHODU = id_samochodu;
Przeliczanie daty wymiany elementów samochodu

Pobranie części

SELECT * FROM Czesci
WHERE Samochod_ID_SAMOCHODU = id_samochodu;

Pobranie przebiegu

SELECT Przebieg FROM Samochod
WHERE ID_SAMOCHODU = id_samochodu;
Generowanie raportów

Wybieranie samochodów

SELECT * FROM Czesci
WHERE Samochod_ID_SAMOCHODU = id_samochodu;

Wybieranie części

SELECT * FROM Samochod
WHERE Osoba_ID_WLASCICIELA = osoba_id_wlasc;
2012/11/10 14:34
pl/dydaktyka/sbd/2012/projekty/przeglady1.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0