TRNG I HC M THÀNH PH H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN
BÁO CÁO ÁN CHUYÊN NGÀNH C S D LIU
TÀI:
XÂY DNG NG DNG TÌM NG I XE
BUÝT TRÊN SMARTPHONE.
GIÁO VIÊN HNG DN:
TS. LÊ XUÂN TRNG
SINH VIÊN THC HIN:
BÙI BO ANH 0851010004
NGUYN TH HNG N 0851010061
THÁNG 2 / 2012
LI CÁM N
Cám n s quan tâm, giúp đ nhit tình ca thy Trng trong thi gian qua, giúp chúng
em thc hin tt đ án này.
Cám n khoa Công ngh thông tin đã to điu kin cho chúng em thc hin đ án, qua
đó hc hi đc nhiu kin thc mi, tip cn nhng công ngh mi.
Cám n thy Trng đã đa ra đ tài hay, và chúng em cm thy rt vinh hnh khi thc
hin đ tài này. Và chúng em xin ha s đem kin thc hc đc đ áp dng vào đi sng.
* Nhóm sinh viên thc hin *
NHN XÉT CA GIÁO VIÊN HNG DN
MC LC
TRNG I HC M THÀNH PH H CHÍ MINH 1
KHOA CÔNG NGH THÔNG TIN 1
BÁO CÁO ÁN CHUYÊN NGÀNH C S D LIU 1
LI CÁM N 2
NHN XÉT CA GIÁO VIÊN HNG DN 3
MC LC
I. TNG QUAN
1) Gii thiu chung:
Lch s hình thành h thng vn chuyn công cng (omnibus) có th bt đu Nantes
(Pháp). Vào nm 1826 bng nhng chuyn xe nga thuê đ chy theo các tuyn đã đnh trc
ch hành khách và hàng hóa gi là voiture omnibus hay còn gi là xe dành cho tt c mi
ngi. Sau đó, hình thc vn chuyn công cng này lan rng khp nc Pháp, Hoa K và các
thành th trên th gii.
Omnibus có tác đng rt ln đn cng đng. V mt xã hi omnibus tr thành mt
phng tin vn chuyn công cng đu tiên rt tin li, an toàn cho c dân. Ngày nay phng
tin này đã ph bin khp th gii, đóng mt vai trò quan trng trong c cu xã hi nhiu
nc và tr thành mt phn thit yu trong cuc sng thng ngày ca các công dân thành ph.
T nhng thp niên tr
c, phng tin vn chuyn hành khách công cng này đã tr
nên rt ph bin. ây cng là tin thân ca xe buýt ngày nay. Hin nay, hu nh đi đâu ta cng
đu thy xe buýt, t nhng quc gia kém phát trin Châu Phi đn nhng cng quc nh M,
Anh….Và vì đó xe buýt đã tr thành phng tin đi li công cng ph bin nht th gii.
nc ta, Chính Ph
đã có ch trng phát trin mng li giao thông công cng phc
v nhân nhân đc bit vi ch trng tr giá xe buýt đng thi m các lp tp hun đào to li
đi ng lái xe, ph lái và tip viên. Xe buýt đang dn tr nên hp dn vi mi ngi hn.
Trong tình hình kinh t khó khn hin nay, mi th đu đt đ và đng nhiên không ai
bàn ci v giá c xng du hin nay, hn 20.300 vnd / lít, đó không phi là mt cái giá d chu
cho hu ht mi ngi. Do đó, đi li bng phng tin công cng là s la chn tt nht hin
nay. Vi nhng chính sách tr giá ca nhà nc, ngi dân s an tâm hn trong vic đi li mà
không cn lo lng cho “túi tin” ca mình.
Ngoài ra, lý do đ bn nên di chuyn bng phng tin công cng là vì nó r
t an toàn.
Có th d dàng hn khi bn đi li bng xe riêng, nhng Vit Nam hin nay có hn 99% ngi
dân s dng xe máy hai bánh. Vì không có s bo v bên ngoài nào nên đi xe máy tr nên nguy
him rt nhiu, đt bit là tình hình giao thông nc ta. Xe buýt chính là gii pháp an toàn
cho bn, ch cn lên xe và tn hng chuyn đi.
Theo website Giao thông Vn ti, hin nay đã có ít nht 5 tuyn xe buýt đc bit phc v
ngi khuyt tt và 10 xe buýt hai tng đã đc đa vào s dng nhm đa dng hóa hình thc
phc v. Công ty qung cáo t Vit vi chin dch "Nào Ta Cùng Buýt" đc giao bi S
Giao thông Công chánh TP.HCM vi các khu hiu và hình nh thit thc đã rt thành công
trong vic đ xng và c đng ngi ngi tham gia giao thông bng xe buýt.
Tình hình giao thông nc ta hin nay đc đánh giá là không tt, xe quá nhiu mà
đng xá li không nâng cp. Bng vic đi li bng xe buýt bn đã góp phn gii quyt hin
trng xu này. Và không ch th, đi xe buýt thay vì đi xe riêng là bn đã góp phn chng ô
nhim không khí và môi trng. Ti các thành ph ln nc ta, xe buýt đã hot đng rt có
hiu qu. Hu nh các tuyn xe buýt đã đc b trí cho chy xuyên sut mi đa đim trong
thành ph. Vi s lng xe buýt và mt đ dày đt, chc chn xe buýt là s la chon s mt
trong vic đi li bng phng tin công cng hin nay.
Trong mt cuc thm dò ý kin các tng lp nhân dân v mc đ hài lòng đi vi các
dch v hành chính công thì xe buýt là mt trong nhng dch v đc mi ngi đánh giá cao
nht.
Ngoài vic phc v ngi dân tt, xe buýt cng đc phc v kinh doanh qung cáo đ
to ngun thu tái đu t phc v cng đng. Xe buýt qung cáo còn là mt transit media rt có
ích trong vic qung cáo đi chúng. Tuy hình thc qung cáo này hin nay đã rt ph bin trên
th gii nhng nc ta thc s nó cha đc thc hin rng rãi.
2) Mc đích nghiên cu:
Hot đng ca xe buýt TP.HCM bt đu nhn nhp vào nm 2003. Vào thi đim y,
hn 3.000 xe buýt mi xut hin nh ba ngun - vn cho vay h tr ca Chính ph, ngân sách
thành ph và khon đu t ca mt s doanh nghip vn ti. Mc đích ca vic đu t ào t này
rt rõ ràng: “gii quyt nn tc đng do có quá nhiu phng tin cá nhân tham gia giao
thông, góp phn gim bt tai nn giao thông và xây dng vn minh lch s đô th”. Mt vin
cnh ti sáng đã đc v ra trong cái bc tranh giao thông đô th m đm khi đó.
Nhng trm dng có ngi lên xung nhiu nht là bn xe liên tnh, bnh vin, trng
hc, ch… Khong 90% khách đi xe buýt là hc sinh, sinh viên, khách ngoi tnh,.… Khách
thng xuyên đi xe buýt gm nhng ngi không đc phép đi xe gn máy, không điu khin
đc xe, không có xe và không bit đng. Nh vy mc tiêu phát trin xe buýt đ hn ch xe
cá nhân nhm gii quyt nn tc đng, kt xe xem nh không đt đc.
Vi s b trí các tuyn xe buýt cha hp lý thì hin tng ít ngi s dng là chuyn
bình thng đt bit là đi vi ngi có ít thi gian. Tram dng thì đt quá xa nhng ni “cao
đim” khing không ít ngi ngi đi b ngoài tri. i vi ngi ít đi xe buýt, vic xác đnh
tuyn đi và đng đi là c mt vn đ, chính điu này đã nh hng không tt đn xe buýt.
gii quyt hin trang không tt này, cn phi có nhng bin pháp hiu qu.
xe buýt tr thành phng tin thông dng và đc s dng rng rãi, cn phi ci
thin, sa đi các tuyn xe cho hp lý, to s tin li và nhanh chóng cho ngi s dng.
Vì vy, đ có th đi li thun tin, bn không ch cn xe bus thôi mà bn cn mt ch dn
hp lý các tuyn xe bus đ có th di chuyn nhanh chóng, tin li. Vi mc đích mang li s
thun tin trong vic la chn các tuyn xe buýt thích hp, nhm ci thin vic đi li ca mi
ngi, nhóm đã nghiên cu, xây dng chng trình tìm đng đi vi các tuyn xe buýt trong
thành ph, giúp ích cho xã hi và góp phn phát trin đt nc ta.
Mc tiêu chính ca vic nghiên cu là tìm cho ra đc gii pháp xác đnh đng đi ngn
nht, tit kim nht vi các tuyn xe buýt thích hp cho hành khách.
3) Ph
ng pháp nghiên cu:
Phân tích các yêu cu đt ra. xác đnh các thành phn c bn, chc nng đòi hi
ca ng dng.
Nghiên cu các công ngh có liên quan, h tr cho vic xây dng h thng: h
điu hành Android, đin toán đám mây Google App Engine …
Tìm hiu c ch hot đng ca mô hình client – server, truyn thông qua giao
thc HTTP, đ to giao tip gia ng dng android vi ng d
ng server.
Thit k c s d liu và tìm hiu c ch lu tr, truy xut phía server (đin
toán đám mây).
S dng b công c Android 4.0.3 SDK và Android Virtual Device đ phát trin
ng dng phía client (smartphone).
S dng b App Engine Java SDK đ phát trin và đa ng dng server lên đám
mây.
4) Phm vi nghiên cu:
Tìm hiu các công ngh có liên quan đn h thng nh: h điu hành Android,
đin toán đám mây Google App Engine …
To c s d liu và đa d liu lên server thông qua mt ng dng trung gian,
có th thêm và cp nht thông tin.
Thit k giao din và chc nng ca ng dng client (smartphone).
To đc kt ni gia client (smartphone) và server (cloud computing).
Xây dng các dch v web đ đáp ng các yêu cu đt ra, bao gm 3 dch v:
dch v cp nht d liu, dch v truy xut d liu và dch v tìm đng đi xe
buýt.
Cài đ
t gii thut tìm đng đi ngn nht gia 2 tram xe buýt.
II. C S LÝ THUYT
1) Gii thiu v Android:
Android là mt ngn xp phn mm, bao gm h điu hành, các chng trình và
ng dng then cht cho các thit b di đng. Android SDK cung cp các công c và giao
din cn thit cho vic phát trin phn mm trên nn tng Android bng ngôn ng lp trình
Java.
Sau đây là lc đ th hin kin trúc Android:
ó Tng ng dng (Applications): bao gm mt mail client, chng trình SMS, Lch,
bn đ, trình duyt …
ó Tng khung làm vic (Framework): cung cp mt nn tng phát trin m, Android
cho phép ngi phát trin có kh nng xây dng các ng dng cc k sinh đng và
sáng to. Min phí nhn các tin ích v phn cng thit b, truy xut thông tin vi trí,
chy các dch v background, hn gi, thêm chú thích thanh trang thái, và nhiu
th khác na.
ó Tng th vin (Libraries): bao gm các th vin nh: C / C++, Media, Surface
Manager, LibWebCore, SGL, 3D, FreeType, SQLite.
ó Tng thc thi (Runtime): mi ng dng android chy trong tin trình ca nó, vi th
hin ca nó là Dalvik virtual machine. Dalvik đc to ra giúp thit b có th chy
đa lung hiu qu hn. Dalvik VM nm trên nhân Linux làm nhim v c bn nh
là qun lý lung và b nh cp thp.
ó
Nhân Linux (Linux Kernel): x lý các dch v h thng nh là bo mt, qun lý b
nh, qun lý tin trình, ngn xp network và mô hình driver. Nhân Linux còn hot
đng nh là mt lp tru tng gia phn cng và phn mm.
Có 4 thành phn ca ng dng Android:
ó Activities: trình din mt màn nh cho giao din ngi dùng.
ó Services: là thành phn chy background đ thc thi các thao tác chy lâu hoc thc
thi các điu khi
n tin trình t xa. Service không cung cp giao din s dng
ó Content providers: qun lý b d liu ng dng đc chia s vi nhau. Ta có th lu
tr tp tin h thng, c s d liu SQLite, trên web, hoc nhng v trí lu tr khác
mà ng dng có th truy cp.
ó Broadcast receivers: là thành phn phn hi các thông báo broadcast.
2) Google app engine
“
Google App Engine” (GAE) là mt nn tng hosting bao gm web server, c s d
liu BigTable and kho lu tr file GFS. GAE cho phép bn vit ng dng web da trên c
s h tng ca Google. Ngha là bn không cn quan tâm là trang web bn đc lu tr
nh th nào (k c database đi kèm), mà ch cn quan tâm đn vic phát trin ng dng
theo các API do Google cung cp.
Vi App Engine,Bn ch cn ti lên các ng dng ca bn, và nó sn sàng đ phc
v ngi dùng ca bn.
Bn có th s dng tên min riêng ca mình (chng h
n nh
thông qua google apps. Hoc bn có th dùng sub-domain min
phí ca appspot.com.
GAE cho phép đc host min phí vi dung lng 500 MB lu tr và cho phép 10
GB bng thông lu chuyn mi ngày hay tng đng 5 triu pageview hàng tháng,Vt
qua mc này bn s phi tr phí. Dùng GAE, chúng ta khi phi thit k database, vit SQL
đ truy vn data, map data vô object. Chúng ta ch cn design các class và GAE t đng lo
phn làm vic vi database.
Tóm li, gi đây bn ch cn phi ngh ra và vit nhng ng dng tuyt vi nht ri
kêu gi c th gii vào dùng. Tuy nhiên, mt trái ca vic xây dng ng dng trên GAE là
bn s ph thuc hoàn toàn vào các công ngh ca Google và rt khó có th tách ra thành
mt ng dng đc lp. Yahoo hay Microsoft s chng bao gi mua mt ng dng xây dng
trên nn tng ca đi th. Còn các nhà đu t cng rt e ngi khi tài sn ca công ty bn đt
ht vào tay ngi khác, dù cho đó là Google.
Hin AppEngine h tr 2 loi ngôn ng là:
Python và Java. Mt s ngôn ng khác nh
PHP cng có th chy đc nu cài cùng vi b chuyn t PHP sang Java.
3) Thut toán tìm đng đi ngn nht
Trong
lý thuyt đ th, bài toán đng đi ngn nht ngun đn là bài toán tìm mt
đng đi gia hai đnh sao cho tng các trng s ca các cnh to nên đng đi đó là nh
nht. nh ngha mt cách hình thc, cho trc mt đ th có trng s (ngha là mt tp
đnh V, mt tp cnh E, và mt hàm trong s có giá tr thc f: ER), cho trc mt đnh v
thuc V, tìm mt đng đi P t v ti mi đnh v' thuc V sao cho
là nh nht trong tt c các đng ni t v ti v' . Bài toán đng đi ngn nht gia
mi cp đnh là mt bài toán tng t, trong đó ta phi tìm các đng đi ngn nht cho
mi cp đnh v và v' .
Thut toán quan trng nht gii quyt bài toán này là:
ó Thut toán Dijkstra — gii bài toán ngun đn nu tt c các trng s
đu không
âm. Thut toán này có th tính toán tt c các đng đi ngn nht t mt đnh xut
phát cho trc s ti mi đnh khác mà không làm tng thi gian chy.
ó Thut toán Dijkstra có th mô t nh sau:
ó Ta qun lý mt tp hp đng S. Ban đu S={s}.
ó Vi mi đnh v, chúng ta qun lý mt nhãn d[v] là đ dài bé nht trong các đng đi
t
ngun s đn mt đnh u nào đó thuc S, ri đi theo cnh ni u-v.
Procedure Dijkstra {
For each v of V do {
d(v)=M
COLOR(v)=WHITE
d(s)=0
InsertHeap(Q,s)
k=1
While Q khác rng do {
u=Head(Q)
Push(Q,u)
k=k-1
COLOR(u)=BLACK
For each v of Ajd(u) {
if COLOR(v)=WHITE then {
k=k+1
HeapIndex(v)=k
InsertHeap(Q,v)
COLOR(v)=GRAY
PRE(v)=u
dv=d(u)+w(u,v)
}
if (COLOR(v)=GRAY and d(v)>d(u)+w(u,v)) then{
d(v)=d(u)+w(u,v)
PRE(v)=u
UpHeap(Q,HeapIndex(v))
}
}
}
III. NI DUNG NGHIÊN CU
1) Phân tích s b
Ngi hành khách khi đi xe buýt, s cn bit các thông tin c bn sau:
ó ng đi t trm xut phát đi ti trm đích.
ó Chi phí cho mi chuyn đi phi thp.
ó Phi đm bo v mt thi gian (nhanh nht nu có th).
ó Ngi dùng s phi đón tuyn xe nào đ đi t trm xut phát, khi cn
đi tuyn đ
đn đc trm đích, thi ngi ta s phi chn tuyn nào phù hp.
2) Thit k h thng
T nhng yêu cu trên, h thng cn xây dng các thành phn c bn sau:
ó Thành phn giao din s dng: cho phép ngi dùng tng tác trc quan vi bn
đ, d dàng xác đnh đc v trí đang đng, chn trm nào s xut phát và trm nào
mun đi ti. Sau khi x lý tìm đng hoàn tt, ng dng s th hin con đng tìm
đc bng cách v đng đi t đim xut phát ti đim đích trên bn đ. Qua đó,
ngi dùng s có cái nhìn trc quan hn, d dàng thy đc mình s đi qua đng
nào, đi nhng tuyn nào
ó Thành phn x lý tìm đng: da vào thông tin đu vào là v trí ca trm xut phát
và trm đích, kt hp vi d liu mà h thng đang lu tr, gm các thông tin v v
trí các nút giao thông và các kt ni (quan h) gia các nút giao thông đó, và các
thông tin kèm theo nh là tuyn xe, trm dng. ng dng s áp dng gii thut tìm
đng đi kt hp vi vic la chn các tuyn xe phù hp mà tham gia l trình đó.
ó Thành phn d liu: các thông tin mà h thng cn lu tr, phi đm bo h tr tt
cho vic x lý tìm đng đi, la chn các tuyn xe buýt thích hp cho l trình và
đáp ng đc các yêu cu v mt x lý cng nh các yêu cu đt ra cho ng dng
tìm đng. Vì vy, d liu vào s cn có các thông tin v v trí ca các nút giao
thông (kinh đ, v đ), kt ni gia các nút giao thông đó, nút giao thông đó s nm
trên tuyn đng nào. Thông tin v l trình ca các tuyn xe cng phi đc quan
tâm và đc lu tr da theo mi quan h “có đi qua” các nút giao thông nào. Lu
ý v hng đi trong mi quan h “có đi qua”, ti vì có trng hp hai xe buýt lt
đi và lt v ca chúng là cùng đi qua nút giao thông đó, nhng nh vy s gây
nhm ln trong quá trình tìm đng, không bit tuyn xe đó s tip tc đi đâu, đi ti
nút giao thông nào nu nh không bit tuyn đó đi theo hng nào. Các trm dng,
nhà ch s ph thuc vào v trí ca các nút giao thông, và phi có thông tin v quan
h “ghé vào” vi các tuyn xe buýt có đi ngang trm, vì đâu phi lúc nào tuyn xe
đó đi ngang trm đó là buc phi ghé vào trm đó đ mà tr khách, rc hành khách
mi.
ó Bi vì d liu lu tr s là khá ln, c mi mt tuyn xe trung bình s đi qua trung
bình khong 100 nút giao thông, 100 tuyn xe nh vy thì d liu v các mi quan
h s rt ln. Gii thut tìm đng s phi duyt qua tt c các nút giao thông đ
tìm đng đi ti u nht có th tìm đc, vì th thi gian x lý cng phi đc quan
tâm nhiu. ng dng đc phát trin trên nn tng Android, dành cho các thit b di
đng nh là smartphone, máy tính bng … nên s b hn ch nhiu v mt x lý và
lu tr d liu h thng. Do đó ta cn giao vic x lý và lu tr cho mt b phn
khác, di dào tài nguyên, b nh, mnh m hn, s giúp cho công vic tìm đng có
hiu qu hn, chính xác hn. Vì th, đ có đc li ích đó, ta s xây dng mt
server chuyên v x lý và lu tr d liu, kt hp vi công ngh đin toán đám mây
và nhng li ích mà nó mang li cho ng dng web, s làm tng kh nng phc v
ca server rt nhiu.
ó V c bn là h thng s có 2 phn chính là client (smartphone) và server (cloud),
nhng cn thit có 1 b phn th 3 tham gia vào h thng dùng đ cp nht d liu
lên server, bi vì client (smartphone) có nhim v chính là s dng các dch v đc
cung cp t phía server, ch không trc tip qun lý cp nht thông tin.
ó Nh vy, phía server ta cn xây dng 3 dch v: dch v cp nht d liu, dch v
truy xut d liu và dch v tìm đng đi xe buýt. 2 dch v cp nht và truy xut d
liu ch yu đc ng dng cp nht s dng, dch v tìm đng đi xe buýt ch yu
phc v cho ng dng client (smartphone).
3) Hin thc
a) Mô hình ý nim d liu:
ó Danh sách các thành phn d liu:
Tên Din gii Kiu d liu
BUSID Mã tuyn xe char(5)
QUATITY S tuyn trong ngày float
TIMESPACING Thi gian cách
khong
float
SPEED Vn tc tuyn xe float
STREETID Mã đng đi char(5)
STREET.NAME Tên đng nvarchar(100)
DISTRICT Qun nvarchar(100)
BUSTOP.NAME Tên trm xe nvarchar(100)
BUSTATION.NA Tên bn xe nvarchar(100)
ME
LOCATIONID Mã nút giao thông char(5)
LONGITUDE Kinh đ nvarchar(100)
LATITUDE V đ nvarchar(100)
ó Danh sách các thc th:
Tên Thc th
BUSROUTE Tuyn xe
STREET ng đi
BUSTOP Trm xe
BUSSTATION Bn xe
LOCATION Nút giao thông
ó Danh sách các kt hp:
Tên Din gii
Visit Ghé qua
Passing i qua
Locate Nm trên
Lying Nm trên
Lying2 Nm trên
Enrollment K
b) Mô hình logic d liu:
ó Danh sách các thc th:
Tên Din gii
BUSROUTE Tuyn xe
VISIT Ghé qua
STREET ng đi
BUSSTOP Trm xe
BUSSTATION Bn xe
PASSING i qua
LOCATION Nút giao thông
ENROLLMENT K
c) Mô hình vt lý d liu:
ó Danh sách các thc th:
Tên Din gii
BUSROUTE Tuyn xe
VISIT Ghé qua
STREET ng đi
BUSSTOP Trm xe
BUSSTATION Bn xe
PASSING i qua
LOCATION Nút giao thông
ENROLLMENT K
d) Mô hình ý nim truyn thông:
Ngi s dng (USER) s truy vn (QUERY) ti smarphone (SMARTPHONE) đ
tìm thông tin v đng đi xe buýt. Smartphone làm nhim v gi đi thông đip yêu cu
(MAKE REQUEST) t phía ngi s dng v phía server (CLOUD) . Server s truy xut
các tài nguyên, d liu cn thit phc v cho vic tìm kim đng đi xe buýt (ACCESS
AND PROCESS DATA), sau đó x lý và gi tr v client (SMARTPHONE) kt qu. Vi
thông tin nhn đc t phía server, smartphone s hin th câu tr li (ANSWER) cho
ngi s dng.
Trong mô hình truyn thông này, smartphone đóng vai trò là client, cloud đm nhn
công vic ca mt server. Client và Server giao tip nhau thông qua giao thc HTTP, chúng
hot đng theo kin trúc client – server, mt server phc v cho rt nhiu client.
e) Chi tit cài đt:
4) Kt qu
a) Gi ng dng server lên cloud (Google App Engine):
Ta s dng lnh sau đ upload ng dng lên cloud:
~/.appengine-java-sdk/bin/appcfg.sh email=
passin update ./www < ~/Projects/Gedit/Shell/pass.info
Thông tin v ng dng trên Google App Engine:
b) Chy ng dng cp nht d liu lên server:
Bng đng đi:
Bng nút giao thông:
c) Cài đt ng dng client (android):
Chy lnh sau đ cài đt ng dng vào thit b android o:
adb install ./bin/$1-debug.apk