ELEKTROTEHNIČKI FAKULTET

BEOGRAD

 

 

 

 

DIPLOMSKI RAD

-SISTEM ZA REZERVACIJU KARATA-

 

student: Nenad Ljubičić 610/98

profesor: dr Milan Prokin

 

 

Beograd

24.09.2005.


 

 

1      Uvod. 4

1.1       O projektu... 4

1.2       Namena. 4

2      Konfiguracija sistema. 5

2.1       Server 5

2.2       Podserver 6

2.3       Mobilna aplikacija. 7

2.4       Klijent 8

3      Tipični scenario upotrebe. 9

3.1       Administriranje podataka podservera. 9

3.1.1        Administriranje aerodroma. 10

3.1.2        Administriranje aviona. 12

3.1.3        Administriranje letova. 13

3.2       Konfigurisanje aplikacije mobilnog telefona. 14

3.3       Rezervacija karata. 15

3.3.1        Prva upotreba sistema. 16

3.3.2        Prva i svaka sledeća upotreba sistema. 16

3.4       Otkaz karata. 17

3.5       Kupovina karata. 19

4      Funkcionalne i logičke celine. 21

4.1       Funkcionalne i logičke celine servera. 21

4.1.1        Server.java. 21

4.1.2        DialogServerPort.java. 21

4.1.3        TStartServer.java.java. 21

4.1.4        DialogErrorDialog.java. 21

4.1.5        DialogErrorFrame.java. 21

4.1.6        LogServer.java. 21

4.1.7        SubServerCollection.java. 21

4.1.8        TServer.java. 21

4.2       Funkcionalne i logičke celine podservera. 21

4.2.1        SubServer.java. 21

4.2.2        DialogSubServerParam.java. 22

4.2.3        DialogErrorDialog.java. 22

4.2.4        DialogFrameError.java. 22

4.2.5        Let.java. 22

4.2.6        FlightCollection.java. 22

4.2.7        DBCommunication.java. 22

4.2.8        SubServerServer.java. 22

4.2.9        SubServerClient.java. 22

4.2.10      TCancel.java. 22

4.2.11      TSubServer.java. 22

4.3       Podserverska WEB aplikacija. 22

4.3.1        login.php. 22

4.3.2        login_fns.php. 22

4.3.3        user_auth_fns.php. 23

4.3.4        addaerodrom.php. 23

4.3.5        addplane.php. 23

4.3.6        admin.php. 23

4.3.7        output_fns.php. 23

4.3.8        db_fns.php. 23

4.3.9        logout.php. 23

4.4       Funkcionalne i logičke celine klijenta. 23

4.4.1        Klijent.java. 23

4.4.2        DijalogAdresaServera.java. 23

4.4.3        DialogErrorDialog.java. 23

4.4.4        Komunikacija.java. 23

4.4.5        DBCommunication.java. 23

4.4.6        SimpleRead.java. 23

4.5       Funkcionalne i logičke celine mobilne aplikacije. 24

4.5.1        Rervacija.java. 24

4.5.2        MyCanvas.java. 24

4.5.3        AbautCanvas.java. 24

4.5.4        Komunikacija.java. 24

4.5.5        DBCommunication.java. 24

4.5.6        Flight.java. 24

4.5.7        FlightCollection.java. 24

4.5.8        MyForm.java. 24

4.5.9        FlightList.java. 24

4.5.10      SettingsForm.java. 24

4.5.11      CancelForm.java. 24

4.5.12      BuyTicketForm.java. 24

5      Strukture podataka. 25

5.1       Komunikacini protokol 25

5.2       Struktura baze podataka. 26

5.2.1        Model baze podataka. 26

5.2.2        Skript za formiranje baze. 27

6      Nedostaci i dalji mogući pravci razvoja. 30

6.1       Uočeni nedostaci 30

6.2       Prevazilaženje nedostataka. 30

7      Literatura. 31

 

 


 

1       Uvod

1.1   O projektu...

Ovaj projekat je urađen na Elektrotehničkom fakultetu u Beogradu, kao diplomski rad iz predmeta „Mikroprocesorska elektronika“ autora, studenta ovog fatulteta.

Sistem aplikacija je, najvećim delom, rađena u programskom jeziku Java, dok je jedan deo urađen u jeziku PHP. Baza podataka je implementirana u MySQL-u. Ovoj bazi podataka pristupaju i Java i PHP aplikacije.

U projektu je korišćeno razvojno okruženje „NetBeans IDE 4.1“ za Java-aplikacije. Korišćena je Java, verzije 1.5.0_02. Bluetooth adapter je bio MSI  Transceiving Key, pri čemu je instaliran drajver WIDCOMM, verzije 1.3.2.7.

Za WEB aplikacije korišćen je  PHP 5.0.4, na WEB serveru Apache 2.0.

Baza podataka je implementirana korišćenjem MySQL-a, verzije 4.1.

Za razvoj aplikacije mobilnog telefona korišćen je Nokia S40 DP 2.0 SDK 1.1, Nokia Connectivity Framework Lite, tako da je aplikacija detaljno istestirana na telefonu Nokia 6230. Inače ovaj telefon podržava Java-aplikacije koje ispunjavaju standarde:

 

Takođe, ovaj telefon je prvi pravi predstavnik serije telefona Nokia Series 40, tako da bi aplikacija trebalo da radi na svim telefonima koje su se na tržištu pojavili posle njega, a ispunjavaju gore navedene standarde.

1.2   Namena

Aplikacija je nastala, prvenstveno da bi se prikazali mogući pravci komunikacije mobilnog telefona, računara, kako putem GPRS-a, tako bluetooth vezom. Aplikacija je demonstrativna, i nije namenjena korišćenju bez dodatne dorade.

Ovaj sistem aplikacija treba da od telefona napravi tzv. „elektronski novčanik“, to jest da se neki podaci prime u telefon sa PC-a, putem GPRS-a, zapamte se, a kasnije se putem bluetooth porta prenesu drugom PC-u.

Takođe, za potrebe ovog projekta, razrađen je sistem računarske mreže sa centralnim serverom i podserverima. Na podserverima se nalaze baze podataka i sva „inteligencija“ koja obavlja rezervaciju karata. Centralni server služi samo da vodi evidenciju o trenutno aktivnim podserverima, njihovim IP adresama i portovima za pristup. Aplikacija na mobilnom telefonu i klijentska aplikacija se obraća uvek prvo serveru i traži od njega IP adresu i port odgovarajućeg podservera, a zatim, sa tako dobijenim, parametrima obraća se podserveru.

2       Konfiguracija sistema

2.1   Server

Server se nalazi na fiksnoj IP adresi na Internetu. Ta adresa je unapred poznata i mora da se zna pre početka korišćenja sistema. Takođe, port na kome server osluškuje konekcije mora biti unapred određen i poznat. Port se zadaje prilikom startovanja servera i to je prvi prozor koji se tom prilikom otvara.

Slika 1 – Prvi prozor servera

Server ima zadatak da usluškuje zadati port na Internetu i prihvata pristigle konekcije. O tim konekcijama server vodi log-fajl. Zato server ima 2 prozora. Prvi prozor servera služi za prikaz trenutno aktivnih podservera, za uključivanje i isključivanje servera. Drugi prozor servera služi da se u njemu ispisuje ono što ide i u log-fajl.

Slika 2 – Izgled dva serverska prozora na startu

 

Kada korisnik mobilnog telefona zatraži rezervaciju ili otkaz karata, obraća se serveru sa zahtevom da mu server prosledi adresu i port odgovarajućeg podservera.

2.2   Podserver

Kada se uključi podserver, on mora najpre da uspostavi vezu sa centralnim serverom i da njemu prijavi svoje prisustvo. U prvom prozoru koji se otvara prilikom pokretanja podservera unose se ime podservera, port za pristup tom podserveru, adresa za pristup serveru i port koji osluškuje server.

Slika 3 – Prvi prozor podservera

 Podserver serveru šalje svoje ime (ime grada gde je aerodrom), svoju IP adresu i port koga osluškuje podserver. Server prihvata ove podatke i skladišti ih u svojoj internoj bazi podataka, a u prozoru servera i log-prozru servera imamo informacije o tome da se podserver prijavio sistemu

Slika 4 – Podserver se prijavio serveru

Podserver je povezan sa bazom podataka i na zahtev klijenta i mobilne aplikacije vrši otkaz ili rezervaciju karata.

Slika 5 – Izgled podserverskog prozora pri startovanju

 Prozor podservera ima samo ulogu da prikazuje log o tome ko, kada i zašto pristupa podserveru.

2.3   Mobilna aplikacija

Aplikacija koja se izvršava na telefonu bi trebalo da se skida sa Interneta WAP protokolom. Na taj način ona se automatski instalira u memoriji mobilnog telefona. Pokretanjem ove aplikacije dobijamo njen osnovni meni.

Slika 6 – Izgled mobilne aplikacije pri startovanju

 

2.4   Klijent

Klijentska aplikacija bi trebalo da se izvršava na računaru, koji se nalazi u poslovnici, gde se dolazi kako bi se kupile karte. U prvom prozoru, koji se prikazuje startovanjem klijentske aplikacije, treba uneti adresu i port servera.

Slika 7 – Prvi prozor klijenta

Na tom računaru mora da postoji bluetooth adapter koga aplikacija po pokretanju inicijalizuje. U prozoru klijenta prikazuju se log-podaci o kupovini karata.

Slika 8 – Izgled klijentske aplikacije na startu


 

3       Tipični scenario upotrebe

3.1   Administriranje podataka podservera

Administriranje baze podataka vrši se uz pomoć WEB aplikacije. Administriranje vrši posebno lice- „administrator“. On mora uz pomoć browsera (Internet Explorera, Mozile, Opere,...) da ode na odgovarajuću adresu i otvori odgovrajuću WEB stranu. Potom mora da se identifikuje unoseći svoje korisničko ime i lozinku.

Slika 9 – WEB strana za logovanje administratora

Pošto se ispravno identifikuje biće mu prikazana sledeća – osnovna WEB strana. To je strana na kojoj on može odnah da administrira letove.

Slika 10 – Osnovna WEB strana

3.1.1      Administriranje aerodroma

Administrator može da dodaje sistemu nove aerodrome, do kojih avio-kompanija leti. Može i da briše aerodrome koji se više ne koriste. Do te opcije stiže ako klikne na osnovnoj WEB strani na link „Administriranje aerodroma“. Tada mu se prikazuje sledeća strana.

Slika 11 – WEB strana za administriranje aerodroma

Ime novog aerodroma se unosi u odgovarajuće polje, a unos se potvrđuje klikom na dugme „Unesi“ i aerodrom je dodat sistemu.

Slika 12 – Nov aerodrom je dodat

 

Klikom na odgovarajuće „radio“ dugme ispred aerodroma koda želimo da uklonimo iz sistema, a zatim klikom na dugme „Obrisi“, aerodrom se briše iz sistema.

3.1.2      Administriranje aviona

Administrator može da dodaje sistemu nove avione, koje avio-kompanija koristi. Može i da briše avione koji se više ne koriste. Do te opcije se stiže ako klikne na osnovnoj WEB strani na link „Administriranje aviona“. Tada mu se prikazuje sledeća strana.

Slika 13 – WEB strana za administriranje aviona

Tip novog aviona se unosi u odgovarajuće polje, kao i kapacitet mesta, a unos se potvrđuje klikom na dugme „Unesi“ i avion je dodat sistemu.

Slika 14 – Avion je dodat

Klikom na odgovarajuće „radio“ dugme ispred aviona koga želimo da uklonimo iz sistema, a zatim klikom na bugme „Obrisi“, avion se briše iz sistema.

3.1.3      Administriranje letova

Administriranje letova vrši se na osnovnoj WEB strani, do koje se dolazi logovanjem ili kasnije pomoću linka „Letovi“.  Prikazana WEB strana ima dva dela. U gornjem delu imamo tabelu sa planiranim letovima (relacija, datum i sat poletanja, broj slobodnih mesta, rezervisnih, kupljenih, kao i kapacitet aviona). U donjem delu je formular za unos novog leta.

Slika 15 – WEB strana za administriranje letova

Nov let se unosi tako što se popuni formular i to: unese se dužine relacije, polazni i arodrom sletanja, dan, mesec, godina, sat i minut poletanja. Klikom na dugme „Dodaj let“, let se dodaje sistemu.

Slika 16 – Nov let je dodat

Klikom na odgovarajuće „radio“ dugme ispred leta koga želimo da uklonimo iz sistema, a zatim klikom na dugme „Obrisi let“, let je izbrisan iz sistema.

3.2   Konfigurisanje aplikacije mobilnog telefona

Da bi se koristila aplikacija na mobilnom telefonu, mora se najpre uneti tačna IP adresa servera i port za pristup serveru. To se radi tako što se iz glavnog menija izabere opcija „Podesavanja“

Slika 17 – Izbor opcije Podesavanja, glavnog menija

Izborom ove opcije otvara se forma na kojoj korisnik treba da unese IP adresu i port servera.

Slika 18 – Forma za unos parametara

Aplikacija trajno beleži u internoj bazi podataka na telefonu ove podatke izborom opcije „Promeni“ opcionog menija.

Slika 19 – Izbor opcije Promeni opcionog menija

 

3.3   Rezervacija karata

Rezervacija karata se obavlja uz pomoć mobilnog telefona biranjem opcije „Rezervacija“, glavnog menija.

Slika 20 – Izbor opcije Rezervacija, glavnog menja

Na formi za rezervaciju karata potrebno je da korisnik ukuca aerodrom poletanja, aerodrom sletanja i datum kada želi da putuje.

Slika 21 – Forma za unos parametara leta

 Zatim je potrebno da iz opcionog menija izabre „Prikaz letova“.

Slika 22 – Izbor opcije Prikaz letova, opcionog menija

Kada se izabere ova opcija, aplikacija se ponaša dvojako, zavisno od toga da li se sistem koristi prvi put ili je to svaki naredni put.

3.3.1      Prva upotreba sistema

Aplikacija mobilnog telefona se najpre obraća serveru, na adresi i portu zadatim pri konfiguraciji apikacije. Aplikacija „zna“ da se koristi prvi put i šalje serveru odgovarajuću poruku. Kada je prihvati server šalje aplikaciji ID-broj, jedinstven u celom sistemu, što se vidi u log-u servera.

 

Slika 23 – Dodela ID-a pri prvom korišćenju sistema od strane telefona

 

Taj ID-broj, telefon trajno beleži u svojoj bazi podataka i šalje ga prilikom svake rezervacije karata. Na taj način sistem se štiti od toga da neko može da prekomerno rezerviše karte, ograničavajući broj rezevacija karata po određenom ID-u, određeno vreme.

3.3.2      Prva i svaka sledeća upotreba sistema

Aplikacija na telefonu se obraća serveru sa zahtevom da joj ovaj pošalje IP adresu i port podservera koji odgovara gradu iz koga se leti. Ukoliko takav aerodrom postoji i prijavljen je serveru, server mobilnom telefonu šalje zahtevane podatke, što se vidi u log-prozoru servera na gornjoj slici.

Telefon dobija adresu i port podservera i šalje podserveru poruku kojom zahteva listu letova, na odgovarajućoj relaciji, odgovarajućeg dana. Pristigli zahtev se može videti u log-prozoru i log-fajlu podservera (Oznaka L stoji ispred odgovarajućeg reda).

Slika 24 – Podserver je poslao telefonu listu adekvatnih letova

 

Ukoliko u sistemu postoji predviđen let (letovi), na datoj relaciji, datog dana, on(oni) će biti poslati od strane podservera telefonu i  na ekranu telefona biće prikazana lista letova (ako ima više letova na datoj relaciji, datog dana i samo jedan let) u formatu <sifra leta, vreme poletanja, trenutni broj slobodnih mesta>

Slika 25 – Lista letova prikazana na telefonu

Korisnik sada treba da izabere let i iz opcionog menija izabere stavku „Rezervisi“

Slika 26 – Izbor opcije Rezerviši, opcionog menija

Izborom ove stavke telefon se obraća podserveru porukom kojom zahteva rezervisanje karte. Podserver tada, na osnovu ID-a korisnika, proverava da li on može da rezerviše tu kartu i ako je sve u redu šalje telefonu potvrdu da je karta rezervisana i u bazi podataka na podserveru traži prvo slobodno sedište, dodeljuje ga tom korisniku, a telefonu šalje i informaciju i tome koje je sedište rezervisao. U prozoru podservera se može primetiti da je dodat novi red koji počinje slovom R i znači da je korisnik „0“ rezervisao kartu za let „13“.

Slika 27 – Podserver je rezervisao kartu

Prilikom rezervisanja karte, u bazi podataka na podserveru, beleži se i vreme kada je karta rezervisna. Ovo vreme je potrebno da bi podserver mogao na svakih 10 minuta da pretrži bazu i sve rezervacije koje su starije od 24 časa, a nisu kupljene, izbriše.

3.4   Otkaz karata

Rezervisane karte se mogu otkazati. Potrebno je izabrati opciju „Otkaz“ glavnog menija.

Slika 28 – Izbor opcije Otkaz, glavnog menija

Tada se ulazi u formu na kojoj se bira karta, koju želimo otkazati.

Slika 3 – Lista letova koji se mogu otkazati

Izborom opcije „Otkazi“ opcionog menija, telefon se obraća serveru, sa zahtevom za adresom i portom odgovarajućeg podservera. Kad mu je server pošalje (ukoliko je dati podserver aktivan i prijavljen), obraća se tom podserveru, sa zahtevom za otkazom karte.

Slika 3 – Podserver je otkazao let

Ukoliko je sve u redu i karta je uspešno otkazana, u prozoru podservera, možemo videti liniju koja počenje slovom „O“. Telefon, kada dobije od podservara  potvrdu da je karta uspešno otkazana, briše je iz svoje interne baze podataka.

Slika 31 – Let je izbrisan i na telefonu

Na ekranu telefona vidimo da date karte više nema.

3.5   Kupovina karata

Da bi se karte kupovale, preduslov je da korisnik telefona dođe u odgovarajuću poslovnicu u kojoj je na PC računaru startovan program „Klijent“, a na tom računaru postoji bluetooth adapter. Korisnik telefona treba da izabere opciju „Kupovina“ iz glavng menija.

Slika 32 – Izbor opcije Kupovina, glavnog menija

Tada se ulazi u formu na kojoj se bira karta, koju želimo kupiti.

Slika 33 – Lista karata koje se mogu kupiti

Izborom opcije „Kupi“ opcionog menija pokrećemo bluetooth port telefona.

Slika 34 – Izbor opcije Kupi, opcionog menija

Tada bi trebalo da se bluetooth adapteri telefona i računara međusobno identifikuju i dozvole jedan drugom komunikaciju (upare se). Kada se to desi, telefon šalje računaru poruku kojom mu kaže da želi kupovinu određene karte. Klijent se tada obraća serveru i traži adresu adekvatnog podservera. Kada mu je server pošalje, klijent se tada obraća podserveru i traži direktno u bazi kupovinu odgovarajuće karte. Podserver klijentu šalje potvrdu o tome. Kada primi potvrdu, klijent šalje bluetooth vezom svoju potvrdu telefonu, a telefon onda tu kartu briše iz svoje liste rezervisanih karata. Na log-prozoru klijenta se ispisuje linija koja govori o tome da je kupljena karta za let sa šifrom 13, polaznog aerodroma Beograd i sedišta 4.

Slika 35 – Klijent je »kupio« kartu

Time je karta kupljena i baza podataka update-ovana na novo stanje sistema, a krug elekrtonskog novčanika zatvoren


 

4       Funkcionalne i logičke celine

Čitav projekat ima pet aplikacija: Server, Subserver, Klijent, MobileApplication i WEB aplikaciju podservera. Svaka od ovih aplikacija ima svoje funkcionalne i logičke celine. Te celine su uglavnom grupisane u Java-klasama. Za svaku od ovih klasa biće dato kratko pojašnjenje funkcije koju ona obavlja u celom sistemu.

4.1   Funkcionalne i logičke celine servera

4.1.1      Server.java

Ovo je osnovna klasa. U njoj se nalazi metoda main(). Takođe, u ovoj klasi je takođe opisano iscrtavanje forme i osnovnog prozora. Pre otvaranja ovog prozora, otvara se prozor dijaloga, u kome se unose parametri servera.

4.1.2      DialogServerPort.java

Iscrtava dijalog za unos parametara Servera i prosleđuje ih serverskom prozoru.

4.1.3      TStartServer.java.java

Ovu klasu startuje serverski prozor. Ona služi da osluškuje port i prikuplja konekcije. Kada uhvati konekciju startuje nit implementiranu u klasi TServet.java.

4.1.4      DialogErrorDialog.java

Iscrtava dijalog, koji korisnika obaveštava o greškama u unošenju parametara servera.

4.1.5      DialogErrorFrame.java

Iscrtava dijalog, koji korisnika obaveštava o greškama u korišćenju servera.

4.1.6      LogServer.java

Iscrtava drugi prozor servera i sadrži metode za ispisivanje log-poruka servera i za upisivanje istih u log-fajl.

4.1.7      SubServerCollection.java

Sadrži metode za dodavanje i brisanje podataka o podservarima serveru

4.1.8      TServer.java

Ova klasa biva startovana od strane klase TServerStart i obavlja komunikaciju sa podserverima, klijentima i mobilnim aplikacijama.

4.2   Funkcionalne i logičke celine podservera

4.2.1      SubServer.java

Ovo je osnovna klasa. U njoj se nalazi metoda main(). Takođe, u ovoj klasi je takođe opisano iscrtavanje forme i osnovnog prozora. Pre otvaranja ovog prozora, otvara se prozor dijaloga, u kome se unose parametri servera i podservera.

4.2.2      DialogSubServerParam.java

Iscrtava dijalog za unos parametara servera i podserevera i prosleđuje ih serverskom prozoru.

4.2.3      DialogErrorDialog.java

Iscrtava dijalog, koji korisnika obaveštava o greškama u unošenju parametara servera

4.2.4      DialogFrameError.java

Iscrtava dijalog, koji korisnika obaveštava o greškama u korišćenju servera.

4.2.5      Let.java

Sadrži metode i polja za enkapsulaciju podtaka o letovima.

4.2.6      FlightCollection.java

Sadrži metode za dodavanje i brisanje podataka letovima.

4.2.7      DBCommunication.java

Sadrži metode i polja koja omogućava komunikaciju sa bazom podataka..

4.2.8      SubServerServer.java

Klasa koja komunicira sa serverom šaljući mu IP adresu i port podservera.

4.2.9      SubServerClient.java

Ovu klasu startuje podserverski prozor. Ona služi da osluškuje port i prikuplja konekcije. Kada uhvati konekciju startuje nit implementiranu u klasi TSubServet.java.

4.2.10 TCancel.java

Na svakiv 10 minuta pregleda bazu podataka i ako postoje rezervacije starije od 24 časa, briše ih.

4.2.11 TSubServer.java

Ova klasa biva startovana od strane klase TSubServerStart i obavlja komunikaciju sa mobilnim aplikacijama i serverom.

 

4.3   Podserverska WEB aplikacija

4.3.1      login.php

Login.php je skript koji se učitava odmah po otvaranju stranice. U njemu se odmah poziva funkcija display_login_form().

4.3.2      login_fns.php

Ovo je skript o kome se učitavaju sve važnije funkcije, tako da kasnije, uključujući ovaj skript u druge skriptove, sve funkcije su dostupne u svim skriptovima.

4.3.3      user_auth_fns.php

Sadrži funkciju koja proverava identitet korisnika, proveravajući username i password

4.3.4      addaerodrom.php

Sadrži ufunkcije za administriranje aerodroma.

4.3.5      addplane.php

Sadrži ufunkcije za administriranje aviona

4.3.6      admin.php

Sadrži funkcije koje prikazuju osnovnu formu za unos parametara novog leta, dugmiće za operacije sa letovima i linkovima ka novim formama.

4.3.7      output_fns.php

Sadrži finkcije koje su ispisuju u browser-u određene formulare.

4.3.8      db_fns.php

Sadrži funkciju za efikasno konektovanje na MySQL bazu podataka.

4.3.9      logout.php

Ispisuje formu na kojoj korisnik jedino može da se uloguje ponovo u sistem.

4.4   Funkcionalne i logičke celine klijenta

4.4.1      Klijent.java

Ovo je osnovna klasa. U njoj se nalazi metoda main(). Takođe, u ovoj klasi je takođe opisano iscrtavanje forme i osnovnog prozora. Pre otvaranja ovog prozora, otvara se prozor dijaloga, u kome se unose parametri.

4.4.2      DijalogAdresaServera.java

Iscrtava dijalog za unos parametara servera i podserevera i prosleđuje ih klijentskom prozoru.

4.4.3      DialogErrorDialog.java

Iscrtava dijalog, koji korisnika obaveštava o greškama u unošenju parametara servera

4.4.4      Komunikacija.java

Klasa sadrži metode koje omogućavaju komunikaciju sa serverom.

4.4.5      DBCommunication.java

Klasa sadrži metode koje omogućavaju komunikaciju MySQL bazom podataka na podserveru.

4.4.6      SimpleRead.java

Osluškuje bluetooht port i komunicira preko njega sa mobilnom aplikacijom

4.5   Funkcionalne i logičke celine mobilne aplikacije

4.5.1      Rervacija.java

Osnova MIDLet klasa. Pokreće se na startu moblne aplikacije.

4.5.2      MyCanvas.java

Iscrtava osnovni ekran i meni mobilne aplikacije.

4.5.3      AbautCanvas.java

Ekran koji nosi poruku o autoru i nameni programa.

4.5.4      Komunikacija.java

Sadrži metode koje obavljaju GPRS komunikaciju sa serverom i podserverom.

4.5.5      DBCommunication.java

Sadrži metode za efikasan rad sa internom RMS bazom podataka na telefonu.

4.5.6      Flight.java

Sadrži metode i polja za rad sa letovima.

4.5.7      FlightCollection.java

Sadrži metode i polja za efikasan rad sa kolekcijom letova.

4.5.8      MyForm.java

Iscrtava osnovnu formu na kojoj se unose parametri leta, za koga želimo da rezervišemo kartu.

4.5.9      FlightList.java

Kada zahtevani letovi postoji, na ovoj formi se oni ispisuju.

4.5.10 SettingsForm.java

Iscrtava osnovnu formu na kojoj se unose parametri servera (IP adresa i port).

4.5.11 CancelForm.java

Ukolio postoje rezervisani letovi,  oni se u ovoj formi prikazuju i sa ove forme se mogu otkazati.

4.5.12 BuyTicketForm.java

Ukolio postoje rezervisani letovi,  oni se u ovoj formi prikazuju i sa ove forme se mogu kupiti korišćenjem bluetooth komunikacijom.

 


 

5       Strukture podataka

5.1   Komunikacini protokol

Poruke, koje međusobno razmenjuju aplikacije, kako preko GPRS-a, tako i preko bluetooth-a, imaju jedinstvenu formu. Sve poruke su, zapravo oblika:

<Start><Command><Parameters><CheckSum><Stop>

<Start> je jedan bajt i to vrednosti 27h.

<Stop> je jedan bajt i to vrednosti 28h.

<Command> je komanda, du\ine jedan ili dva bajta. To može biti:

Komande Servera:

Komande Podservera:

Komande Klijenta (bluetooth)

<Parameters> su parametri, kod komadi koje ih zahtevaju. Svi parametri su oblika:

    <Parameter><Separator>

            <Parametar> je parametar

            <Separator> jedan bajt vrednosti FFh.

<CheckSum> je jedan bajt, koji se računa po sledećem algoritmu:

            <check>=FFh;

            For i = svi bajtvo komande od <start> do poslednjeg bajta <parameters>{

                        <check>=<check> XOR <byte[i]>;

            }

    <CheckSum>=<check>;

 

5.2   Struktura baze podataka

Baze podataka se nalazi na svakom Podserveru. Baza podataka sadrži podatke o aerodromima do kojih lete avioni date avio-kompanije. Za svaki aerodrom se beleži ime aerodroma (ime grada u kojem se on nalazi) i svakom aerodromu se dodeljuje generički, jedinstveni identifikacioni broj. U bazi se vodi evidencija o svim avionima, date avio-kompanije, pri čemu se za svaki avion vodi evidencija o imenu i broju slobodnih mesta, a svaki avion dobija id-broj. U sistemu se vodi evidencija o administratoru, za koga se beleži njegov username i password. Letovi se planiraju na relaciji između dva grada, uz korišćenje odgovarajućeg aviona. Za svaki let se vodi evodencija o dužini relacije, danu, mesecu, godini, satu i minutu poletanja. Takođe letu se dodeljuje jedinstveni id. Karta se rezerviše za određeni let i sedište. Pri rezervaciji karte evidentiraju se vreme rezervacije i id mobilne aplikacije, koja rezerviše kartu. Kada je karta kupljena, evidentira se linija, sedište, dan mesec, godina, sat i minut kada je karta kupljena

Podvučene reči u opisu baze podataka implementiraju se posebnim tabelama, sa odgovarajućim poljima. Takođe iz prethodnog teksta vide se i veze među tabelama.

5.2.1      Model baze podataka

Na osnovu prethodnog teksta, alatom DBDesigner 4, projektovana je baza podataka. Na sledećoj slici vidimo model baze podataka

Slika 35 – DBDesigner model baze podataka

 

5.2.2      Skript za formiranje baze

Na osnovu ovog modela napravljen je MySQL skript za formiranje baze podataka.

 

CREATE TABLE Avion (

  idAvio INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

  ime VARCHAR(20) NULL,

  mesta INTEGER UNSIGNED NULL,

  PRIMARY KEY(idAvio)

)

TYPE=InnoDB;

 

CREATE TABLE Aerodrom (

  idAer INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

  ime VARCHAR(20) NULL,

  PRIMARY KEY(idAer)

)

TYPE=InnoDB;

 

CREATE TABLE Administrator (

  username VARCHAR(20) NOT NULL,

  passwrd VARCHAR(20) NULL,

  PRIMARY KEY(username)

)

TYPE=InnoDB;

 

CREATE TABLE Linija (

  idLin INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

  duzina INTEGER UNSIGNED NULL,

  polazni INTEGER UNSIGNED NOT NULL,

  odredisni INTEGER UNSIGNED NOT NULL,

  idAvio INTEGER UNSIGNED NOT NULL,

  dan INTEGER UNSIGNED NULL,

  mesec INTEGER UNSIGNED NULL,

  godina INTEGER UNSIGNED NULL,

  sat INTEGER UNSIGNED NULL,

  minut INTEGER UNSIGNED NULL,

  PRIMARY KEY(idLin),

  INDEX Linija_FKIndex1(polazni),

  INDEX Linija_FKIndex2(odredisni),

  INDEX Linija_FKIndex3(idAvio),

  FOREIGN KEY(polazni)

    REFERENCES Aerodrom(idAer)

      ON DELETE CASCADE

      ON UPDATE NO ACTION,

  FOREIGN KEY(odredisni)

    REFERENCES Aerodrom(idAer)

      ON DELETE CASCADE

      ON UPDATE NO ACTION,

  FOREIGN KEY(idAvio)

    REFERENCES Avion(idAvio)

      ON DELETE CASCADE

      ON UPDATE NO ACTION

)

TYPE=InnoDB;

 

CREATE TABLE Rezervisano (

  idLin INTEGER UNSIGNED NOT NULL,

  sediste INTEGER UNSIGNED NOT NULL,

  vreme DATETIME NULL,

  idKlijent INTEGER UNSIGNED NULL,

  PRIMARY KEY(idLin, sediste),

  INDEX Rezervisano_FKIndex1(idLin),

  FOREIGN KEY(idLin)

    REFERENCES Linija(idLin)

      ON DELETE CASCADE

      ON UPDATE NO ACTION

)

TYPE=InnoDB;

 

CREATE TABLE Prodato (

  idLin INTEGER UNSIGNED NOT NULL,

  sediste INTEGER UNSIGNED NOT NULL,

  dan INTEGER UNSIGNED NULL,

  mesec INTEGER UNSIGNED NULL,

  godina INTEGER UNSIGNED NULL,

  sat INTEGER UNSIGNED NULL,

  minut INTEGER UNSIGNED NULL,

  PRIMARY KEY(idLin, sediste),

  INDEX Prodato_FKIndex1(idLin, sediste),

  FOREIGN KEY(idLin, sediste)

    REFERENCES Rezervisano(idLin, sediste)

      ON DELETE CASCADE

      ON UPDATE NO ACTION

)

TYPE=InnoDB;

 

6       Nedostaci i dalji mogući pravci razvoja

6.1   Uočeni nedostaci

Ř      Mobilna aplikacija je prilagiđena za rad na telefonu tipa Nokia 6230 i čitavoj seriji Nokia Series 40. Takođe je neophodno da telefon podržava standarde MIDP 2.0 i CLDC 1.1, kao i da ima bluetooth port. Glavni nedostatak prethodnih generacija telefona, koji podržavaju standard MIDP 1.0, je nedostatak Socket konekcije.

Ř      Na svim aplikacijama, takođe, nije do kraja odrađen korisnički interfejs u smislu detaljnog obaveštavanja korisnika o mogićim greškama u sistemu (npr. ukoliko korisnik traži da rezerviše kartu, a traženi podserver nije u sistemu, mobilna aplikacija obaveštava korisnika opštom porukom: „Nekorektno logovanje na server“, isto kao i da server nije uključen).

6.2   Prevazilaženje nedostataka

Ř      Glavni nedostatak Socket konnekcije standarda MIDP 1.0 može da se prevaziđe korišćenjem HttpSocket konekcije na telefonu, a na računaru mora da se koristi Socket konekcija i osluškivanje porta 80 fiksno, uz ignorisanje dodatnih header-a i prosleđivanje podataka serveru HTTP POST metodom. U suštini trebalo bi na serveru implementirati neki mini HTTP protokol, a čitav sistem bi radio i sa starijim telefonima standarda MIDP 1.0 i CLDC 1.0.

Ř      Trebalo bi još detaljnije doraditi obaveštenja koja korisnik dobija ukoliko nije uspela neka akcija, sa jasnom naznakom šta se zapravo u sistemu deslio. Tačnije, one opšte pokuke o greškama treba zameniti posepnim porukama o svakoj neuspeloj akciji ponaosob.

 


 

7       Literatura

 

[1]

Java 2 kompletan priručnik , Prevod četvrtog izdanja, Herbert SCHildt, Mikro knjiga, 2001.

[2]

PHP i MySQL Razvoj aplikacija , Prevod drugog izdanja, Luke Welling, Mikro knjiga, 2004.

[3]

Relacione baze podataka, Treće dopunjeno izdanje, Vladimir Blagojević, Klub NT, 2003.

[4]

Series 40 Developer Platform 2.0 SDK 1.1 Users Guide, Nokia, december 2004.

[5]

Efikasno programiranje na Javi, Joshua Bloch, Addison-Wesley, 2004.

[6]

Micro Java™ Game Development, David Fox, Roman Verhosek, Addison Wesley, April  2002

[7]

Learning Wireless Java, O’Relly, 2003.

[8]

The Design Patterns,James W. Cooper, Java Companion, October 1998

[9]

www.forum.nokia.com

[10]

www.zend.com

[11]

www.mysql.com

[12]

www.php.net