To jest stara wersja strony!


Ogólnopolska baza połączeń minibusowych

Autorzy: Jakub Gorzała, Łukasz Kowalski


1. Sformułowanie zadania projektowego

Projekt bazy danych, która będzie wykorzystywana w projekcie z przedmiotu Technologie i programowanie WWW. Projekt ten ma na celu stworzenie portalu zawierającego rozkłady jazdy minibusów z całej polski.

2. Analiza stanu wyjściowego

W sieci istnieje strona o podobnej tematyce, lecz posiada ona sporo wad. Po pierwsze jest wykonana w bardzo prostej technologii (zwykły html + css), jest nieczytelna przez co prezentuje się bardzo nie atrakcyjnie i nie wzbudza zainteresowania. Nie jest aktualizowana, więc informacje na niej zawarte mogą być mylące dla użytkowników. Strona w głównej mierze jest zbiorem linków do poszczególnych przewoźników, a nie centralnym zbiorem rozkładów, przez co wyszukiwanie interesującego połączenia jest trudne. Storna nie posiada możliwości wystawiania opinii ani komentarzy przewoźnikom, a takie informacje mogły by być przydatne.

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

Główne funkcjonalności portalu:

  • zarejestrowanie nowej firmy przewozowej + podstawowych informacji adresowych
  • dodanie kursów oferowanych przez tą firmę
  • możliwość wyszukiwania kursów filtrując po przystankach z miejscowości A do B
  • możliwość dodania komentarzy dla poszczególnych firm przez użytkowników
  • moduł rejestracji użytkowników
  • dodawanie cen biletów na poszczególnych trasach
  • powiadomienia mailowe odnośnie nowych przewoźników w regionie bądź zmian w rozkładach jazdy

4. Określenie scenariuszy użycia

  1. Scenariusze dla Użytkownika
    1. Wyszukanie połączenia:
      • Wejście na stronę
      • Przejście na zakładkę 'Szukaj busa'
      • Wprowadzenie danych przystanku początkowego i końcowego
      • Podanie godziny odjazdu lub przyjazdu
      • Uruchomienie wyszukiwania i przeglądnięcie wyników
    2. Założenie konta:
      • Wejście na stronę
      • Kliknięci w panel 'Rejestracja!'
      • Wprowadzenie danych użytkownika
      • Potwierdzenie założenia konta
  2. Scenariusze dla Użytkownika posiadającego firmę
    1. Założenie firmy
      • Wejście na stronę
      • Zalogowanie się
      • Kliknięcie w panel 'Dodaj firmę'
      • Wprowadzenie nazwy firmy oraz maila firmowego
      • Potwierdzenie dodania firmy
    2. Wprowadzenie trasy
      • Wejście na stronę
      • Zalogowanie się
      • Wybranie zakładki 'Dodaj linię'
      • Wprowadzenie kolejnych przystanków, czasów odjazdu oraz cen biletów
      • Potwierdzenie dodania linii
    3. Zarządzanie trasami
      • Wejście na stronę
      • Zalogowanie się
      • Wybranie zakładki 'Połączenia'
      • Edycja/usuwanie zdefiniowanych połączeń

5. Identyfikacja funkcji

Baza danych będzie przechowywać informacje o:

  • kontach użytkowników
  • zarejestrowanych firmach
  • przystankach
  • zdefiniowanych połączeniach
  • opiniach o firmie

6. Analiza hierarchii funkcji projektowanej aplikacji (FHD – Functional Hierarchy Diagram)

7. Budowa i analiza diagramu przepływu danych (DFD – Data Flow Diagram)

  • Level 0

  • Level 1

  • Level 2 - Wyszukiwanie busa

  • Level 2 - Zarządzanie połączeniami

  • Level 2 - Dodawanie komentarza

8. Wybór encji (obiektów) i ich atrybutów

@Entity
@Table(name="COMPANIES")
@NamedQueries({
@NamedQuery(name="findCompanyByName", query="SELECT c FROM Company c WHERE c.name = :name"),
@NamedQuery(name="findCompanyByOwnerName", query="SELECT c FROM Company c WHERE c.owner.name = :name")
})
public class Company implements Serializable {

	private static final long serialVersionUID = 5074588959885714521L;
	
	@GeneratedValue(strategy=GenerationType.AUTO)
	private long companyid;
	
	@Column(nullable=false)
	private String name;
	
	@Column(nullable=false)
	private String mail;
	
	@ManyToOne
	private User owner;
	
	@OneToMany(mappedBy="company", targetEntity=Opinion.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	private Set<Opinion> opinions;
	
	@OneToMany(mappedBy="owner", targetEntity=Course.class, cascade=CascadeType.ALL, fetch=FetchType.LAZY)
	private Set<Course> courses;
}


@Entity
@Table(name="COURSES")
@NamedQuery(name="findCourseByCompany", query="SELECT c FROM Course c WHERE c.owner.name = :name")
public class Course implements Serializable {

	private static final long serialVersionUID = 3008699718560976506L;
	
	@GeneratedValue(strategy=GenerationType.AUTO)
	private long courseid
	
	@OneToOne
	private Company owner;
	
	@Column(nullable=true)
	private String description;
	
	@OneToMany(mappedBy="course", targetEntity=Stop.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	private List<Stop> stops;
}


9. Projektowanie powiązań (relacji) pomiędzy encjami (ERD)

10. Projekt diagramów STD (State Transition Diagram)

  • Wyszukiwanie busa

  • Dodawanie połączenia

<%TUTAJ WPISZ OSTATNIA CYFRE%>. Interfejs użytkownika (podstawowe elementy)

pl/dydaktyka/ztb/2010/projekty/minibus/start.1275428726.txt.gz · ostatnio zmienione: 2019/06/27 15:56 (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