To jest stara wersja strony!
1. Projekt konceptualny
Tematem projektu jest aplikacja działająca na systemie mobilnym Android, która pozwoli użytkownikowi na odnalezienie najbliżej znajdujących się przystanków komunikacji miejskiej, zlokalizowanie siebie oraz przystanku na mapie oraz sprawdzenie rozkładu jazdy komunikacji miejskiej. W odróżnieniu od jakdojade.pl czy aplikacji Transportoid nie chcemy wyznaczać połączeń, które umożliwiają dostanie się do zamierzonej lokacji, a pomoc zagubionym mieszkańcom i turystom w znalezieniu najbliższego węzła komunikacji miejskiej.
Naszym celem jest zapoznanie się przy tworzeniu projektu z nowoczesnymi technologami związanymi z platformą Android oraz posiadanie pierwszej aplikacji w Android Market.
1.2 Analiza stanu wyjściowego
Przy implementacji aplikacji zostanie użyty język Java oraz Android SDK, a kluczowymi elementami będzie wykorzystanie GPS oraz Google API. Natomiast implementacja samej bazy danych zostanie wykonana w SQLite. Dystrybucja oraz aktualizowanie rozkładów jazdy w bazie będzie dokonywane za pomocą Android Market.
1.3 Analiza wymagań użytkownika
Must
Lokalizacja położenia posiadacza aplikacji i naniesienie jego pozycji na mapę
Odnalezienie najbliżej znajdujących się przystanków względem położenia posiadacza aplikacji i naniesienie ich pozycji na mapę
Posiadanie bazy linii, przystanków oraz połączeń komunikacji miejskiej oraz umożliwienie przeglądania ich za równo z poziomu przystanka jak i linii
Could
Wyznaczenie trasy przejścia od miejsca znajdowania się posiadacza aplikacji do wybranego przystanku
Lokalizacja dowolnego przystanka za pomocą wyszukiwarki
Won’t
Wyznaczenie dogodnych połączeń z punktu startowego do punktu końcowego podróży
1.4 Określenie scenariuszy użycia
Geolokalizacja
Włączenie aplikacji
Wybranie opcji geolokalizacji
Odnalezienie pozycji użytkownika
Odnalezienie najbliższych przystanków
Wyświetlenie znaczników na mapie
Sprawdzenie kursów danej linii MPK
Włączenie aplikacji
Wybranie opcji wyszukiwania połączeń po linach
Wybranie linii
Wybranie przystanku
Wyświetlenie podziału godzinowego
Sprawdzenie kursów z danego przystanka MPK
Włączenie aplikacji
Wybranie opcji wyszukiwania połączeń po przystankach
Wybranie przystanka
Wybranie linii
Wyświetlenie podziału godzinowego
1.5 Identyfikacja funkcji
Istnieją trzy możliwości użycia aplikacji:
Geolokalizacja – urządzenie za pomocą GPS sprawdza nasze położenie i względem znanej lokalizacji przystanków znajduje dla nas te najbliższe
Sprawdzenie kursów danej linii MPK – po wybraniu odpowiedniej linii komunikacyjnej dowiadujemy się o której godzinie pojawia się na konkretnych przystankach
Sprawdzenie kursów z danego przystanka MPK – po wybraniu odpowiedniego przystanka dowiadujemy się o jakich godzinach odjeżdżają z niego konkretne linie
1.6 Data Flow Diagram
Data Flow Diagram - poziom zerowy
Data Flow Diagram - poziom pierwszy
Data Flow Diagram - poziom drugi
1.7 Wybór encji (obiektów) i ich atrybutów
Stops
stop_id (int) PK
localisationX (real)
localisationY (real)
name (text)
Lines
line_id (int) PK
number (int)
from_id (int) FK (references Przystanki(stop _id))
destination_id (int) FK (references Przystanki(stop _id))
Connections
stop_id (int) FK (references Stops(stop _id))
line_id (int) FK (references Lines(line _id))
day (text)
hour (int)
minute (int)
legend (text)
order (int)
1.8 Entity-Relationship Diagram
1.9 State Transition Diagram
2. Projekt logiczny
2.1 Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów, etc. w oparciu o zdefiniowany diagram ERD
// STOPS
public static final String PK_KEY_STOPID = "stop_id";
public static final String STOPID_OPTIONS = "INTEGER PRIMARY KEY AUTOINCREMENT";
public static final String KEY_LOCALISATIONX = "localisationX";
public static final String LOCALISATIONX_OPTIONS = "REAL NOT NULL";
public static final String KEY_LOCALISATIONY = "localisationy";
public static final String LOCALISATIONY_OPTIONS = "REAL NOT NULL";
public static final String KEY_NAME = "name";
public static final String NAME_OPTIONS = "TEXT NOT NULL";
// LINES
public static final String PK_KEY_LINEID = "line_id";
public static final String LINEID_OPTIONS = "INTEGER PRIMARY KEY AUTOINCREMENT";
public static final String KEY_NUMBER = "number";
public static final String NUMBER_OPTIONS = "INTEGER NOT NULL";
public static final String FK_KEY_FROMID = "from_id";
public static final String FROMID_OPTIONS = "INTEGER NOT NULL";
public static final String FK_KEY_DESTINATIONID = "destination_id";
public static final String DESTINATIONID_OPTIONS = "INTEGER NOT NULL";
// CONNECTIONS
public static final String FK_KEY_STOPID = "stop_id";
public static final String STOPID_FK_OPTIONS = "INTEGER NOT NULL";
public static final String FK_KEY_LINEID = "line_id";
public static final String LINEID_FK_OPTIONS = "INTEGER NOT NULL";
public static final String KEY_ORDERID = "order_id";
public static final String ORDERID_OPTIONS = "INTEGER NOT NULL";
public static final String KEY_DAY = "day";
public static final String DAY_OPTIONS = "TEXT NOT NULL";
public static final String KEY_HOUR = "hour";
public static final String HOUR_OPTIONS = "INTEGER NOT NULL";
public static final String KEY_MINUTE = "minute";
public static final String MINUTE_OPTIONS = "INTEGER NOT NULL";
public static final String KEY_LEGEND = "legend";
public static final String LEGEND_OPTIONS = "TEXT";
// CREATE STOPS
private static final String CREATE_STOPS = "create table " + TABLE_STOPS
+ " (" + PK_KEY_STOPID + " " + STOPID_OPTIONS + ", "
+ KEY_LOCALISATIONX + " " + LOCALISATIONX_OPTIONS + ", "
+ KEY_LOCALISATIONY + " " + LOCALISATIONY_OPTIONS + ", " + KEY_NAME
+ " " + NAME_OPTIONS + ");";
// CREATE LINES
private static final String CREATE_LINES = "create table " + TABLE_LINES
+ " (" + PK_KEY_LINEID + " " + LINEID_OPTIONS + ", " + KEY_NUMBER
+ " " + NUMBER_OPTIONS + ", " + FK_KEY_FROMID + " "
+ FROMID_OPTIONS + ", " + FK_KEY_DESTINATIONID + " "
+ DESTINATIONID_OPTIONS + ", " + "FOREIGN KEY(" + FK_KEY_FROMID
+ ") REFERENCES " + TABLE_STOPS + "(" + PK_KEY_STOPID + "), "
+ "FOREIGN KEY(" + FK_KEY_DESTINATIONID + ") REFERENCES "
+ TABLE_STOPS + "(" + PK_KEY_STOPID + ")" + ");";
// CREATE CONNECTIONS
private static final String CREATE_CONNECTIONS = "create table "
+ TABLE_CONNECTIONS + " (" + FK_KEY_STOPID + " "
+ STOPID_FK_OPTIONS + ", " + FK_KEY_LINEID + " "
+ LINEID_FK_OPTIONS + ", " + KEY_ORDERID + " " + ORDERID_OPTIONS
+ ", " + KEY_DAY + " " + DAY_OPTIONS + ", " + KEY_HOUR + " "
+ HOUR_OPTIONS + ", " + KEY_MINUTE + " " + MINUTE_OPTIONS + ", "
+ KEY_LEGEND + " " + LEGEND_OPTIONS + ", " + "FOREIGN KEY("
+ FK_KEY_STOPID + ") REFERENCES " + TABLE_STOPS + "("
+ PK_KEY_STOPID + "), " + "FOREIGN KEY(" + FK_KEY_LINEID
+ ") REFERENCES " + TABLE_LINES + "(" + PK_KEY_LINEID + ")" + ");";