|
|
ELEKTROTEHNIČKI FAKULTET BEOGRAD |
DIPLOMSKI RAD
-SISTEM ZA REZERVACIJU KARATA-
student: Nenad Ljubičić 610/98
profesor: dr Milan Prokin
Beograd
24.09.2005.
3.1 Administriranje podataka podservera
3.1.1 Administriranje aerodroma
3.2 Konfigurisanje aplikacije mobilnog telefona
3.3.2 Prva i svaka sledeća upotreba sistema
4 Funkcionalne i logičke celine
4.1 Funkcionalne i logičke celine servera
4.1.7 SubServerCollection.java
4.2 Funkcionalne i logičke celine podservera
4.2.2 DialogSubServerParam.java
4.3 Podserverska WEB aplikacija
4.4 Funkcionalne i logičke celine klijenta
4.4.2 DijalogAdresaServera.java
4.5 Funkcionalne i logičke celine mobilne aplikacije
5.2.2 Skript za formiranje baze
6 Nedostaci i dalji mogući pravci razvoja
6.2 Prevazilaženje nedostataka
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.
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.
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.
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.
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 |
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 |
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 |
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.
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.
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.
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 |
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.
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.
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.
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.
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
Č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.
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.
Iscrtava dijalog za unos parametara Servera i prosleđuje ih serverskom prozoru.
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.
Iscrtava dijalog, koji korisnika obaveštava o greškama u unošenju parametara servera.
Iscrtava dijalog, koji korisnika obaveštava o greškama u korišćenju servera.
Iscrtava drugi prozor servera i sadrži metode za ispisivanje log-poruka servera i za upisivanje istih u log-fajl.
Sadrži metode za dodavanje i brisanje podataka o podservarima serveru
Ova klasa biva startovana od strane klase TServerStart i obavlja komunikaciju sa podserverima, klijentima i mobilnim aplikacijama.
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.
Iscrtava dijalog za unos parametara servera i podserevera i prosleđuje ih serverskom prozoru.
Iscrtava dijalog, koji korisnika obaveštava o greškama u unošenju parametara servera
Iscrtava dijalog, koji korisnika obaveštava o greškama u korišćenju servera.
Sadrži metode i polja za enkapsulaciju podtaka o letovima.
Sadrži metode za dodavanje i brisanje podataka letovima.
Sadrži metode i polja koja omogućava komunikaciju sa bazom podataka..
Klasa koja komunicira sa serverom šaljući mu IP adresu i port podservera.
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.
Na svakiv 10 minuta pregleda bazu podataka i ako postoje rezervacije starije od 24 časa, briše ih.
Ova klasa biva startovana od strane klase TSubServerStart i obavlja komunikaciju sa mobilnim aplikacijama i serverom.
Login.php je skript koji se učitava odmah po otvaranju stranice. U njemu se odmah poziva funkcija display_login_form().
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.
Sadrži funkciju koja proverava identitet korisnika, proveravajući username i password
Sadrži ufunkcije za administriranje aerodroma.
Sadrži ufunkcije za administriranje aviona
Sadrži funkcije koje prikazuju osnovnu formu za unos parametara novog leta, dugmiće za operacije sa letovima i linkovima ka novim formama.
Sadrži finkcije koje su ispisuju u browser-u određene formulare.
Sadrži funkciju za efikasno konektovanje na MySQL bazu podataka.
Ispisuje formu na kojoj korisnik jedino može da se uloguje ponovo u sistem.
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.
Iscrtava dijalog za unos parametara servera i podserevera i prosleđuje ih klijentskom prozoru.
Iscrtava dijalog, koji korisnika obaveštava o greškama u unošenju parametara servera
Klasa sadrži metode koje omogućavaju komunikaciju sa serverom.
Klasa sadrži metode koje omogućavaju komunikaciju MySQL bazom podataka na podserveru.
Osluškuje bluetooht port i komunicira preko njega sa mobilnom aplikacijom
Osnova MIDLet klasa. Pokreće se na startu moblne aplikacije.
Iscrtava osnovni ekran i meni mobilne aplikacije.
Ekran koji nosi poruku o autoru i nameni programa.
Sadrži metode koje obavljaju GPRS komunikaciju sa serverom i podserverom.
Sadrži metode za efikasan rad sa internom RMS bazom podataka na telefonu.
Sadrži metode i polja za rad sa letovima.
Sadrži metode i polja za efikasan rad sa kolekcijom letova.
Iscrtava osnovnu formu na kojoj se unose parametri leta, za koga želimo da rezervišemo kartu.
Kada zahtevani letovi postoji, na ovoj formi se oni ispisuju.
Iscrtava osnovnu formu na kojoj se unose parametri servera (IP adresa i port).
Ukolio postoje rezervisani letovi, oni se u ovoj formi prikazuju i sa ove forme se mogu otkazati.
Ukolio postoje rezervisani letovi, oni se u ovoj formi prikazuju i sa ove forme se mogu kupiti korišćenjem bluetooth komunikacijom.
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>;
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.
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 |
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;
Ř 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).
Ř 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.
|
[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 User’s 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] |
|
|
[10] |
|
|
[11] |
|
|
[12] |