TRNG I HC M THÀNH PH H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN
KHÓA LUN TT NGHIP
tài:
XÂY DNG NG DNG
TÌM NG I BNG XE BUÝT TI U THEO NHIU
TIÊU CHÍ TRÊN IN THOI WINDOWS PHONE 8
- Ging viên hng dn:
Thc s H Quang Khi
- Sinh viên thc hin:
Lê Hu Tài MSSV: 1051012145
Thành
p
h H Chí Minh, thán
g
5 nm 2014
- i -
LI CM N
Trc tiên, em xin gi li tri ân đn quý Thy (Cô) khoa công ngh thông tin –
trng i hc M Thành ph H Chí Minh đã nhit tình ch dy, truyn đt kin thc
cng nh kinh nghim thc t cho em và các bn trong sut quá trình hc tp ti trng.
c bit, em xin gi li cm n sâu sc nht đn Thy Thc s H Quang Khi,
ngi đã ht s
c quan tâm và nhit tình hng dn em trong sut thi gian va qua đ
hoàn thành đ tài t đ án ngành đn khóa lun tt nghip. Bên cnh đó, em xin gi li
cm n chân thành đn Thy Tin s Phan t Phúc đã ch dy và chia s kinh nghim đ
em hoàn thành tính nng s dng bn đ offline cho đ tài.
Cui cùng, em xin gi li chúc sc khe và thành công đn quý Thy, Cô trng
i hc M thành ph
H Chí Minh nói chung và quý Thy, Cô khoa công ngh thông tin
nói riêng, kính chúc quý Thy (Cô) tht nhiu sc khe và luôn gt hái đc nhiu thành
công trong công vic và trong cuc sng!.
Tp. HCM, tháng 5 nm 2014
Trân trng
Sinh viên Lê Hu Tài
- ii -
NHN XÉT CA GING VIÊN HNG DN
- iii -
MC LC
LI CM N i
NHN XÉT CA GING VIÊN HNG DN ii
DANH MC CÁC BNG vi
DANH MC HÌNH NH vii
DANH MC CÁC T VIT TT ix
LI M U x
CHNG 1: TNG QUAN 1
1.1 t vn đ 1
1.1.1 Thc trng giao thông hin nay 1
1.1.2 Các gii pháp công ngh hin có 1
1.1.3 Lý do chn đ tài 3
1.2 Mc tiêu đ tài 3
1.3 Phng pháp thc hin 3
CHNG 2: C S LÝ THUYT 4
2.1 Tng quan v lp trình Windows phone 8 4
2.1.1 Cài đt môi trng 4
2.1.2 B cc ca mt ng dng 4
2.1.3 Tìm hiu XAML trong lp trình Windows phone 5
2.1.4 Ngôn ng C# trong vic xây dng ng dng trên Windows phone 5
2.1.5 Tìm hiu LINQ To SQL 12
2.2 S dng GPS và A-GPS trên Windows phone 15
2.2.1 Tng quan v GPS 15
2.2.2 Tng quan v A-GPS 15
2.2.3 S dng GPS trên Windows phone 17
2.3 S dng Google maps trong ng dng Windows phone 8 20
2.3.1 Gii thiu control Maps trong Windows phone 8 20
2.3.2 So sánh Bing maps và Google maps 20
2.3.3 Chuyn đi Bing maps sang Google maps 22
- iv -
2.4 Lp trình client – server trên .NET 24
2.4.1 Tng quan v lp trình client – server 24
2.4.2 Xây dng Server h tr s dng bn đ offline 27
2.5 Tng quan v Web service 30
2.5.1 Gii thiu v Web service 30
2.5.2 Xây dng Web service 31
2.6 Google maps API Web services 32
2.6.1 Cú pháp s dng 32
2.6.2 X lý kt qu tr v 32
2.6.3 Google Direction API Service 34
2.6.4 Google Geocoding API Service 37
2.6.5 Google Reverse Geocoding API Service 38
2.6.6 Google Place Autocomplete API Service 39
2.6.7 Google Place API Nearby Search Service 41
2.6.8 Google Place API Radar Search Service 42
2.6.9 Google Place Details API Service 43
2.7 Áp dng công thc hình cu ca cosines (Spherical Law of Cosines) 44
2.7.1 Gii thiu 44
2.7.2 Vn dng 44
2.8 Xây dng phng thc gii mã ta đ
46
2.8.1 Tính cp bách ca vn đ 46
2.8.2 C s ca vic xây dng phng thc gii mã 46
2.8.3 Phng thc gii mã ta đ 50
CHNG 3: XÂY DNG NG DNG 54
3.1 Gii thiu ng dng 54
3.2 T chc c s d liu 55
3.2.1 D liu cc b (Local Database) 55
3.2.2 D liu t Google Maps API Web Services: 58
3.3 Hin thc ng dng 59
3.3.1 Giao din trang ch 59
- v -
3.3.2 Hin th danh sách tuyn xe lên trang tuyn xe 60
3.3.3 Hin th thông tin ca tuyn xe lên trang thông tin 61
3.3.4 Hin th danh sách trm dng theo tng tuyn 62
3.3.5 Hin th l trình xe buýt lên bn đ 64
3.3.6 nh v cá nhân 66
3.3.7 Chc nng tìm kim trm dng 67
3.3.8 Tìm đng đi bng xe buýt 73
3.3.9 Xây dng trang download bn đ 81
3.3.10 S dng pushpin trong ng dng 82
3.3.11 Xây dng màn hình ch tin trình thc hin 84
CHNG 4: KT LUN 85
4.1 Kt qu đt đc 85
4.2 Nhng hn ch 85
4.3 Hng phát trin 85
TÀI LIU THAM KHO 86
PH LC 87
- vi -
DANH MC CÁC BNG
Bng 2.1: Bng mô t mt s kiu d liu đã đc xây dng sn 7
Bng 2.2: Bng tóm tt các thuc tính truy cp ca mt lp trong C# 11
Bng 2.3: Bng so sánh A-GPS và GPS trên mt s lnh vc 16
Bng 2.4: Bng so sánh GeoCoordinateWatcher class và Geolocator class 17
Bng 3.1: Bng TUYENXE 56
Bng 3.2: Bng TRAMDUNG 57
Bng 3.3: Bng LUOT 57
Bng 3.4: Bng LOTRINH
57
Bng 3.5: Bng các thuc tính ca pushpin 82
- vii -
DANH MC HÌNH NH
Hình 2.1: Mô hình hot đng ca LINQ To SQL 12
Hình 2.2: Cách thc hot đng ca A-GPS 16
Hình 2.3: So sánh Bing maps vi Google maps 21
Hình 2.4: Mô hình chung ca mt ng dng client – server có kt ni (TCP) 25
Hình 2.5: Mô hình hot đng ca server h tr s dng bn đ offline 28
Hình 2.6: Cu trúc ca mt bn tin yêu cu HTTP 28
Hình 2.7: Cu trúc ca mt bn tin tr li HTTP 29
Hình 2.8: Danh mc trng thái trong thông đip server gi client 29
Hình 2.9: Kin trúc Web service 30
Hình 2.10: Minh ha chc nng AutoComplete 39
Hình 2.11: Lc đ xây d
ng phng thc v hình tròn t mt đim và bán kính 45
Hình 2.12: Lc đ 11 bc mã hóa thành phn points 47
Hình 2.13: S đ 11 bc gii mã ta đ 51
Hình 2.14: Lc đ xây dng phng thc gii mã ta đ. 52
Hình 3.1: S đ chc nng ca ng dng 54
Hình 3.2: S đ liên kt c s d liu ca ng dng 55
Hình 3.3: Mô hình client – server ca ng dng 58
Hình 3.4: Giao din trang ch
trc và sau khi chn tuyn xe 59
Hình 3.5: Giao din trang tuyn xe 60
Hình 3.6: S đ phân tích chc nng trang tuyn xe
60
Hình 3.7: S đ phân tích chc nng hin th thông tin tuyn xe 61
Hình 3.8: Giao din trang thông tin trc và sau khi chn tuyn xe 61
Hình 3.9: S đ phân tích chc nng hin th trm dng theo tuyn xe 62
Hình 3.10: Giao din trang trm dng 62
- viii -
Hình 3.11: Giao din hin th danh sách trm dng lên bn đ 63
Hình 3.12: S đ phân tích chc nng hin th l trình lên bn đ 64
Hình 3.13: S đ xây dng hàm v l trình ca tuyn xe buýt lên bn đ 64
Hình 3.14: Giao din hin th l trình di chuyn ca tuyn xe lên bn đ 65
Hình 3.15: Giao din hin th v trí ngi dùng lên bn đ 66
Hình 3.16: S đ phân tích chc nng tìm kim trm dng theo mã trm 67
Hình 3.17: Giao din chc nng tìm kim trm dng theo mã trm 68
Hình 3.18: S đ phân tích chc nng tìm kim trm dng t mt đim và bán kính 69
Hình 3.19: S đ phân tích chc nng nhp đa ch ti hp tìm kim 70
Hình 3.20: Xác đnh v trí tìm trm dng 71
Hình 3.21: Giao din hin th kt qu tìm trm dng 72
Hình 3.22: S
đ phân tích chc nng tìm đng đi bng xe buýt 74
Hình 3.23: Xác đnh đim bt đu và kt thúc bng cách nhp đa ch trc tip 75
Hình 3.24: La chn đim bt đu hay kt thúc trên bn đ 76
Hình 3.25: Giao din trang download bn đ 81
Hình 3.26: Các pushpin đc s dng trong ng dng 82
Hình 3.27: Giao din màn hình ch tin trình thc thi 84
- ix -
DANH MC CÁC T VIT TT
A-GPS Assisted - Global Positioning System
API Application Programming Interface
BTS Base Transceiver Station
CSDL C s d liu
GPS Global Positioning System
HTTP HyperText Transfer Protocol
IEEE Institute of Electrical and Electronics Engineers
IP Internet Protocol
LINQ Language Integrated Query
PDA Personal Digital Assistant
SDK Software Development Kit
SOAP Simple Object Access Protocol
SQL Structure Query Language
TCP Transmission Control Protocol
UDP User Datagram Protocol
XAML Extensible Application Markup Language
XML Extensible Markup Language
- x -
LI M U
Hin nay, nhu cu đi li bng xe buýt ca ngi dân ngày càng tng cao kéo theo
đó là nhu cn tìm các tuyn xe buýt, trm dng, đng đi cng tng lên đáng k. Tuy
nhiên, vi mt bn đ lu thông xe buýt bng giy nh hin nay, vic tìm kim mt tuyn
xe buýt gây rt nhiu khó khn cho ngi dân trong vic đi li, đc bit là đi vi hc
sinh, sinh viên, ngi dân mi đn thành ph. Còn đ
i vi ngi dân đã “quen” vi vic
s dng dch v xe buýt thì nhu cu cn tìm mt l trình theo ý mình nh thi gian đi
nhanh nht, ít tn chi phí nht, thi gian đi b ngn nht hoc s tuyn đi ít nht là mt
điu rt cn thit. Do đó, cn phi có mt tin ích h tr ngi dùng tìm đng đi bng xe
buýt theo nhiu tiêu chí giúp cho vic đ
i li ca ngi dân nhanh chóng và hiu qu hn.
Nhng nm gn đây, ngành đin thoi di đng phát trin vt bc. Smartphone ra
đi làm thay đi nhn thc ca con ngi v đin thoi di đng. Vi mt chic
smartphone nh, gn trong tay, ngi s dng có th làm mi điu mình thích, t các
chc nng c bn truyn thng nh nghe, g
i, nhn tin,…đn các chc nng nâng cao nh
lt web, xem phim, nghe nhc, đnh v GPS, xem bn đ trc tuyn,…Song, s lng
các phn mm h tr ngi dùng tìm đng đi bng xe buýt là rt ít và còn nhiu hn ch.
Xut phát t thc t đi li và các gii pháp công ngh hin có, em đã xây dng
ng dng tìm đng đi bng xe buýt ti u theo nhiu tiêu chí trên đin tho
i Windows
phone 8. ng dng là s kt hp gia d liu v các tuyn xe buýt, trm dng vi bn đ
Google maps và truy xut thông tin t các cng Google maps API Web services đ to
nên ng dng hoàn chnh kt hp vi giao din đp, giúp vic đi li ca ngi dùng tr
nên d dàng, nhanh chóng và hiu qu.
Khóa lun đc thc hin trong khong thi gian t tháng 3/2014 đn cui tháng
05/2014 và đc phát tri
n t đ án ngành. ây là kt qu nghiên cu trong sut quá trình
tìm kim, thu thp d liu v các tuyn xe, trm dng vi mc tiêu là xây dng mt ng
dng tìm đng đi bng xe buýt theo nhiu tiêu chí, bên cnh đó, ng dng cng phi có
chc nng cho phép ngi dùng tra cu thông tin, tìm kim trm dng, đnh v cá nhân,…
Báo cáo khóa lun tt nghip đc chia làm 4 phn chính:
CHNG 1: TNG QUAN
CHNG 2: C S LÝ THUYT
CHNG 3: XÂY DNG NG DNG
CHNG 4: KT LUN
Tuy đã rt c gng, tìm hiu, hc hi đ thc hin đ tài, song do kh nng vn
dng còn hn ch, thi gian thc hin không nhiu, lng kin thc tip thu còn hp nên
phn báo cáo và ng dng ca em còn nhiu thiu sót. Em xin ghi nhn tt c ý kin đ
óng
góp t quý Thy (Cô), các bn sinh viên,…đ ng dng ngày càng đc hoàn thin hn.
Trân trng
Sinh viên Lê Hu Tài
Trang 1
CHNG 1: TNG QUAN
1.1 t vn đ
1.1.1 Thc trng giao thông hin nay
Thành ph H Chí Minh cùng vi th đô Hà Ni và các thành ph ln chính là
đng lc đ phát trin c v kinh t, vn hóa, xã hi, thng mi, khoa hc, giáo dc,
v.v… cho đt nc. Tuy nhiên, h thng giao thông ti đây rt phc tp vi kt cu
đng xá chn cht, gây khó khn cho ngi dân trong vic đi li. Vn nn kt xe, tình
tr
ng ách tách giao thông xy ra thng xuyên vào gi cao đim gây bc xúc trong nhân
dân. Vn đ trên đòi hi cn phi có mt gii pháp đ gii quyt bài toán v giao thông.
Hng nm, các thành ph ln đón nhn hàng ngàn hc sinh, sinh viên, công nhân,
ngi dân t nhiu tnh, thành trong c nc v hc tp, sinh sng và làm vic. S lng
xe máy quá đông đc xem là mt trong nhng nguyên nhân gây nên tình trng kt xe ti
đây. Do đó, đ kéo gi
m tình trng ùn tc giao thông đòi hi cn có mt gii pháp hn ch
s lng xe gn máy trên đng nhng đng thi phi bo đm không nh hng đn
vic đi li ca ngi dân.
Nhng nm qua, thành ph tp trung vào vic hoàn thin và nâng cao cht lng
ca loi hình đi li bng phng tin xe buýt. Thc t hin nay, nhu cu đi l
i bng xe
buýt ca ngi dân ngày càng tng cao kéo theo đó là nhu cu tìm các tuyn xe, trm
dng, đng đi cng tng lên đáng k.
Tuy nhiên, bên cnh nhng mt đt đc, vn còn có nhiu hn ch khin phng
tin này cha tht s tr thành ngi bn đng hành ca nhân dân trong vic đi li hng
ngày. Thông tin v các tuyn xe, trm dng cha tht s đáp
ng đc yêu cu đa dng,
mi lúc, mi ni ca ngi dùng. Mt bn đ xe buýt bng giy vi vô s các tuyn xe
gây khó khn cho ngi dân trong vic đi li nht là đi vi hc sinh, sinh viên, ngi
dân mi đn thành ph. Còn đi vi ngi dân đã “quen” vi vic s dng dch v xe
buýt thì nhu cu cn tìm mt l trình theo ý mình nh thi gian đi nhanh nht, ít t
n chi
phí nht, thi gian đi b ít nht hoc s tuyn đi ít nht là mt điu rt cn thit.
Thc trng trên đòi hi cn phi có mt gii pháp giúp ngi dân trong vic tìm
kim thông tin các tuyn xe, trm dng và tìm đng đi bng xe buýt theo nhiu tiêu chí
mt cách chính xác, nhanh chóng và hiu qu.
1.1.2 Các gii pháp công ngh hin có
Mc dù có nhiu phng pháp, cách thc đ h tr cho vic đi li, song không phi
phng pháp nào cng mang li hiu qu tt nht. Vic s dng bn đ giao thông bng
giy gây rt nhiu khó khn cho ngi dân nhng đôi khi li không chính xác. Trong khi
đó, nu s dng bn đ online trên các thit b nh máy tính bàn, laptop, máy tính
bng…nhng sn phm này mc dù cho hiu qu tt nhng li không phù hp khi giao
thông vì quá cng knh, l
i kém an toàn cho ngi s dng. Vn đ đt ra là cn phi có
Trang 2
mt thit b va gn, nh nhng phi có kh nng h tr bn đ, h tr vic tìm đng đi
nhanh chóng, hiu qu cho ngi s dng.
Nhng nm gn đây, ngành đin thoi di đng phát trin vt bc. Smartphone ra
đi làm thay đi nhn thc ca con ngi v đin thoi di đng. Vi mt chic
smartphone nh, gn trong tay, ngi s dng có th làm mi điu mình thích, t các
chc nng c bn, truyn thng nh nghe, gi, nhn tin,…đn các chc nng nâng cao
nh lt web, xem phim, nghe nhc, đnh v GPS, xem bn đ trc tuyn,… Smartphone
dn dn tr thành ngi bn đng hành ca con ngi trong xã hi hin nay. Do đó, vic
xây dng mt phn mm tìm đng
đi trên đin thoi là gii pháp ti u nht.
Ngành công nghip smartphone hin nay có nm nn tng h điu hành chính là:
Windows phone, Symbian, iOS, Android, webOS gn lin vi nhng “gã khng l” trong
ngành công ngh nh: Microsoft, Apple, Google,… Th trng phn mm phát trin trên
nn đin thoi di đng ngày càng phong phú và đa dng. Tuy nhiên, s lng các phn
mm h tr ngi dùng tìm đng đi bng xe buýt ti Vit Nam l
i rt khiêm tn, đn c
ch có mt vài phn mm nh: BusMap, BUSITUS,… Do đó, vic xây dng và phát trin
mt phn mm tìm đng đi bng xe buýt trên smartphone là mt điu rt cn thit.
Trong nm nn tng h điu hành trên, thì h điu hành Windows phone 7 ca tp
đoàn hàng đu th gii – Microsoft – mc dù là h điu hành ra đi sau cùng nhng li
có nh
ng tính nng thân thin hn vi ngi dùng. Vi Windows phone, Microsoft đã
phát trin giao din ngi dùng mi mang tên Metro – tích hp kh nng liên kt vi các
phn cng và phn mm ca hãng th ba mt cách d dàng. c bit, vi phiên bn
Windows phone 8 tung ra th trng vào ngày 29 tháng 10 nm 2012 đc xem là s k
tha và phát huy hn na so vi Windows phone 7.
Phiên bn Windows phone 8 đã thay th lõi kin trúc Windows CE trên Windows
phone 7 thành kernel ca
Windows NT vn đc thit k cho Windows 8, chính vì vy
làm cho ng dng d dàng kt ni (port) gia hai h điu hành. Ngoài ra, Windows phone
8 còn h tr CPU đa nhân, nhiu đ phân gii, tùy bin Start Screen, kèm phiên bn di
đng ca Internet Explorer 10, tích hp Nokia Maps, giao din thân thin hn. Vic lp
trình trên Windows phone nhìn chung là s dng ngôn ng C#, mt trong nhng ngôn
ng lp trình hin đi và ph bin nht hin nay, góp phn to thun li cho các nhà phát
trin. Bên cnh đó, các nhà phát trin có th to nên các ng dng sinh đng, hp dn
bng vic lp trình d
a trên hai công ngh là Silverlight và XNA.
Song, có mt thc t là, ngi dùng Windows phone 7 và 8 cho đn thi đim hin
ti vn không th truy cp Google maps t trình duyt Web trên đin thoi ca h. ây
đc xem là mt s “thit thòi” ca ngi dùng Windows phone so vi Android và iOS,
bi s cnh tranh trong kinh doanh gia hai “gã khng l” Microsoft và Google. Các
phn mm tìm đng đi bng xe buýt ti Vit Nam trên Windows phone 8 là rt ít, đn c
ch có m
t vài phn mm nh: BusMap,…Do đó, vic xây dng và phát trin mt ng
dng tìm đng đi bng xe buýt trên đin thoi Windows phone 8 là rt cn thit.
Trang 3
1.1.3 Lý do chn đ tài
Xut phát t yêu cu cp bách ca thc t đi li và các gii pháp công ngh hin có
chính là c s đ em xây dng mt ng dng tìm đng đi bng xe buýt trên smartphone
chy h điu hành Windows phone 8, ti u theo bn tiêu chí là thi gian đi nhanh nht, ít
tn chi phí nht, thi gian đi b ít nht và s tuyn đi ít nht.
1.2 Mc tiêu đ tài
Xây dng mt ng dng tìm đng đi bng xe buýt trên smartphone chy h điu
hành Windows phone 8 vi tính nng sau:
S dng bn đ Google maps hai ch đ là: online và offline.
nh v GPS, giúp xác đnh v trí ngi dùng lên bn đ.
Xem thông tin ca tng tuyn xe, danh sách tt c trm dng mà tuyn xe đi qua,
đng thi hin th l trình di chuyn ca tuyn xe lên bn đ Google maps.
Tìm kim trm dng theo hai c ch: tìm trm dng theo mã trm và tìm trm
dng t mt v trí vi bán kính tìm kim đc ch đnh bi ngi dùng.
Chc nng tìm đng vi nhiu tùy chn phong phú: hin th tt c kt qu tìm
đc hoc ti u theo bn tiêu chí là thi gian đi nhanh nht, tn chi phí ít nht,
thi gian đi b ít nht và s tuyn đi ít nht.
1.3 Phng pháp thc hin
ng dng đc phát trin trên môi trng Microsoft Visual Studio 2012 (đã cài b
Windows Phone Software Development Kit – b công c dùng đ phát trin ng dng
Windows phone). Bên cnh đó, giao din ca ng dng còn đc thit k bng phn mm
Microsoft Expression Blend to nên giao din đp, hp dn ngi s dng.
C s d liu ca ng dng tp trung vào vic qun lý thông tin, l trình di chuyn
ca các tuyn xe buýt t
i thành ph H Chí Minh, và đc xây dng trên môi trng
Microsoft SQL Server 2008 đm bo tính toàn vn và ràng buc cho d liu.
Ti thi đim thc thi, ng dng s truy xut thông tin t dch v Google maps
API Web services phc v cho thao tác tìm kim trm dng và tìm đng đi bng xe buýt
gia hai đim trên bn đ.
ng dng đã hin thc thành công vic chuyn đi bn đ Bing maps mc đnh
ca Windows phone bng bn đ Google maps to thun li hn cho ngi dùng trong
vic s dng bn đ online.
Bên cnh đó, vic lp trình mng bng socket trên môi trng .NET đã đc s
dng đ xây dng server chy trên localhost ca ng dng nhm hin thc tính nng s
dng bn đ offline.
Trang 4
CHNG 2: C S LÝ THUYT
2.1 Tng quan v lp trình Windows phone 8
2.1.1 Cài đt môi trng
Vic xây dng ng dng Windows phone 8 đc phát trin trên môi trng
Microsoft Visual Studio 2012 kèm theo b công c Windows phone SDK (Software
Development Kit) hoc Microsoft Visual Studio 2013 (đã tích hp Windows phone
SDK).
Giao din ng dng còn đc phát trin trên Microsoft Expression Blend.
C s d liu đc xây dng trên môi trng Microsoft SQL Server 2008.
2.1.2 B cc ca mt ng dng
Xét v tng th, ng dng Windows phone 8 bao gm 2 phn:
o Các trang .xaml dùng đ thit k giao din ng dng.
o Trang code behind (.cs) dùng đ lp trình cho các chc nng ca ng dng.
Xét v thành phn chính, mt ng dng Windows phone 8 bao gm:
.
o AppManifest.xml: file cu hình cho
ng dng trc khi xut ra file xap
(dùng đ cài đt trên đin thoi).
o AssemblyInfo.cs: mt file cu hình
khác ca ng dng, cha thông tin v
tên và version.
o WMAppManifest.xml: là mt file cu
hình khác cha thông tin v tên, icon,
trang mc đnh s bt đu ca ng
dng. ây cng là file đ ngi s
dng bt các ID phc v cho các lp.
o Th mc references: ch
a các th
vin cn thit cho vic s dng các
lp.
o App.xaml: file cu hình ca ng
dng. Khi ng dng khi chy thì file
App.xaml s đc “quét” trc đ
kim tra cu hình ca ng dng.
o App.xaml.cs: trang code-behind cha
các đon mã ca trang App.xaml.
Trang 5
o ApplicationIcon.png: hình nh đi din cho ng dng khi đc cài đt trên đin
thoi.
o Backgroung.png: nh nn ca ng dng trên màn hình chính ca đin thoi.
o MainPage.xaml: đây chính là trang mc đnh đ xây dng ng dng, ng dng
cng có th to thêm nhiu trang hn na tùy thuc vào mc đích s dng.
o MainPage.xaml.cs: đây là trang code-behind ca trang MainPage.xaml, là ni
x lý các ch
c nng, s kin ca trang MainPage.xaml.
o SplashScreenImage.png: nu ng dng phi mt thi gian đ load d liu thì
nh này s hin ra, nhng ch xut hin vào ln đu khi chy ng dng.
2.1.3 Tìm hiu XAML trong lp trình Windows phone
XAML là t vit tt ca Extensible Application Markup Language, là ngôn ng
đánh du dùng đ th hin các đi tng trong .NET, là mt bin th ca XML
(Extensible Markup Language). XAML cho phép ng
i dùng khi to các đi tng và
các thuc tính cho tng đi tng theo c ch m th/đóng th, đng thi còn cho phép t
chc các đi tng theo mô hình th bc.
Trong Windows phone, XAML đc s dng trong vic to lp giao din ngi
dùng. Có th nói, XAML giúp quy trình làm vic gia các cá nhân trong quá trình xây
dng và phát trin ng dng đc đn gin hn do kh nng “tách bit” phn thit k
giao di
n (designer) vi phn lp trình logic (coder) cho ng dng.
XAML cho phép ngi dùng thit k giao din ca ng dng Windows phone trên
c hai môi trng là Visual Studio và Expression Blend. Bên cnh đó, “sc mnh” ca
XAML còn th hin trong vic binding c s d liu vào mt thành phn (element) đc
ch đnh trong XAML.
2.1.4 Ngôn ng C# trong vic xây dng ng dng trên Windows phone
2.1.4.1. Gii thiu v C#
C# là ngôn ng lp trình hin đi đc xây dng da trên nn tng ca hai ngôn
ng lp trình mnh nht là C++ và Java. C# đc phát trin bi đi ng các k s ca
Microsoft trong đó tâm đim là Anders Hejlsberg và Scott Wiltamuth. Nhng đc tính ca
mt ngôn ng lp trình hin đi nh vic x lý ngoi l, thu gom b nh t đng, nhng
kiu d liu m rng và bo mt mã ngun…đu có trong C#.
C# ngôn ng
lp trình đn gin, vi vic loi b mt vài s phc tp và ri rm
ca nhng ngôn ng lp trình trc đó nh Java và C++, bao gm vic loi b nhng
macro, nhng template, đa k tha, và lp c s o (virtual base class), do đó to thun
li hn cho các nhà phát trin ng dng bng C#. C# đn gin vì phát trin da trên nn
t
ng C/C++ nhng đc ci tin đ làm cho ngôn ng ngày càng d tip cn hn. Mt
trong nhng ci tin đó là loi b s d tha, hoc thêm nhng cú pháp mi. Chng hn
nh vic thay th ba toán t trong C++ là ::, . , và -> bng mt toán t duy nht là . (dot).
Trang 6
C# là ngôn ng lp trình hng đi tng. C# h tr tt c các đc tính ca mt
ngôn ng hng đi tng (Object-oriented language) bao gm s đóng gói
(encapsulation), s k tha (inheritance), và tính đa hình (polymorphism).
C# là ngôn ng mnh m nhng cng rt mm do. C# ch b gii hn bi kh
nng s dng ca ngi dùng. Hin nay, C# đc s dng cho nhiu d án khác nhau nh
là to ra ng dng x lý vn bn, ng dng đ ha, bn tính, hay thm chí nhng trình
biên dch cho các ngôn ng khác.
C# là ngôn ng ít t khóa, ch hn 80 t khóa và mi my kiu d liu. ó là mt
trong nhng lý do làm cho C# tr thành mt trong nhng ngôn ng đc s dng ph
bin nht hin nay.
Trong Windows phone, C# là ngôn ng lp trình chính, đóng vai trò ch đo trong
vic xây dng và phát tri
n ng dng.
2.1.4.2. Nn tng ngôn ng C#
2.1.4.2.1. Kiu d liu
Kiu d liu ca mt đi tng là mt tín hiu đ trình biên dch nhn bit kích
thc và kh nng ca đi tng đó (chng hn kiu int có kích thc là 4 byte hay mt
đi tng button có th v và phn ng khi nhn,…).
C# là mt ngôn ng mnh v kiu d liu. Kiu d liu trong C# đc phân chia
theo hai góc đ sau:
Góc đ 1: kiu d liu đc phân làm hai tp hp đó là kiu d liu đã đc xây
dng sn (built – in) mà ngôn ng cung cp và kiu d liu do ngi lp trình t
đnh ngha (user – defined).
Góc đ 2: kiu d liu bao gm kiu d liu giá tr (value) và kiu d liu tham
chiu (reference). Vi
c phân chi này da trên s khác nhau trong vic lu kiu d
liu giá tr và tham chiu trong b nh. i vi mt kiu d liu giá tr thì s đc
lu đúng kích thc tht trong b nh đã cp phát là stack. Trong khi đó thì đa ch
ca kiu d liu tham chiu thì đc lu trong stack nhng đi tng tht s thì
lu trong b nh heap. Vic l
u đi tng trong b nh heap rt có ích đi vi các
đi tng có kích thc ln.
Tt c các kiu d liu xây dng sn là kiu d liu giá tr ngoi tr các đi tng
và chui. Và tt c các kiu d liu do ngi dùng đnh ngha ngoi tr kiu d liu cu
trúc đu là kiu d liu tham chiu.
Trang 7
Bng 2.1: Bng mô t mt s kiu d liu đã đc xây dng sn
Kiu C# S byte Kiu .NET tng ng Mô t
byte 1 Byte
S nguyên dng không du t 0-
255
char 2 Char Kí t Unicode
bool 1 Boolean Giá tr logic (true/false)
sbyte 1 sbyte S nguyên có du (t -128 đn 127)
short 2 Int16
S nguyên có du giá tr t -32768
đn 32767.
ushort 2 Uint16 S nguyên không du t 0 – 65535
int 4 Int32
S nguyên có du t –2.147.483.647
đn 2.147.483.647
uint 4 Uint32
S nguyên không du t 0 –
4.294.967.295
float 4 Single
Kiu du chm đng, giá tr xp x t
3,4E-38 đn 3,4E+38, vi 7 ch s
có ngha.
double 8 Double
Kiu du chm đng có đ chính xác
gp đôi, giá tr xp x t 1,7E-308
đn 1,7E+308, vi 15, 16 ch s có
ngha.
decimal 8 Decimal
Có đ chính xác đn 28 con s, đc
dùng trong tính toán tài chính, kiu
này đòi hi phi có hu t “m” hay
“M” theo sau giá tr.
long 8 Int64
Kiu s nguyên có du có giá tr
trong khong :
-9.223.370.036.854.775.808 đn
9.223.372.036.854.775.807
ulong 8 Uint64
S nguyên không du t 0 đn
0xffffffffffffffff
Trang 8
2.1.4.2.2. Bin (variable)
Bin là đi lng đc dùng đ lu tr thông tin v các đi tng vi giá tr c
th, xác đnh ti mi thi đim trong chng trình. Giá tr ca bin có th đc thay đi
bng phép gán (=).
Trong C#, cú pháp đ khai báo bin có dng nh sau:
<tên kiu> <danh sách các bin>
Trong đó :
<tên kiu> là mt kiu d liu hp l bt k trong C#.
<danh sách các bin> là mt hay nhiu bin, đc phân cách bng du ‘,’.
Trong trng hp cn thit, có th khi to giá tr trc tip cho bin trong câu lnh
khai báo: <tên kiu> <tên bin> = <giá tr>;
2.1.4.2.3. Hng (constant)
Bn cht ca hng chính là bin nhng giá tr ca hng s không thay đi trong
sut thi gian tn ti ca nó.
Trong C#, khai báo hng thng đc đt trong phn khai báo toàn cc đu
chng trình, ngay sau các khai báo tin x lý. Có hai cách đ khai báo hng:
Dùng ch th tin x lý: #define <tên hng><chui thay th>
Dùng t khóa const: const <tên kiu><tên hng> = <giá tr>;
2.1.4.2.4. Các cu trúc điu khin
Hu ht các thut toán đu có th cài đt bng 3 cu trúc c bn sau:
Cu trúc tun t: các câu lnh đc thc hin theo th t t trên xung và t trái
sang phi.
Cu trúc r nhánh và la chn: cu trúc này dùng đ “d đoán và đáp ng” tt c
các trng hp có th có ca thut toán, nhm đm bo tính đúng đn ca chng
trình.
Cu trúc lp: lp vòng quá trình thc thi câu lnh. Khi s dng cu trúc lp, phi
đm bo tính dng cho vòng lp, tránh trng hp quá trình lp din ra vô tn,
không có đim dng.
Trong C#, cu trúc r nhánh đc hin thc thông qua câu lnh if …else… vi cú
pháp nh sau:
If (<điu kin>) <lnh 1>;
[else <lnh 2>;]
Trong đó:
<điu kin> thng là mt biu thc logic.
Trang 9
Phn else là không bt buc phi có. Trng hp câu lnh if không có phn
else đc gi là câu lnh if “thiu”.
<lnh 1>, <lnh 2> có th là câu lnh đn, hoc câu lnh ghép, hoc câu lnh
điu khin.
Ý ngha: nu <điu kin> tha (giá tr là true) thì thc hin <lnh 1>, ngc li thì
thc hin <lnh 2>. Nh vy, <lnh 1>, <lnh 2> đc thc hin thông qua giá tr
đúng/sai ca <điu kin>.
Câu lnh if…else… có th đc m rng thành câu lnh if… else… lng nhau, tuy
nhiên, v bn cht câu lnh if…else là không thay đi.
Trong C#, cu trúc la chn đc hin thc thông qua câu lnh switch…case…
vi cú pháp nh sau:
switch (<biu thc điu kin>)
{
Case <value 1>: [<lnh 1>; break; ]
Case <value 2>: [<lnh 2>; break; ]
…….
Case <value n>: [<lnh n>; break; ]
[default: <l
nh>; break; ]
}
Ý ngha: nu giá tr ca <biu thc điu kin> trùng vi value ca case nào thì câu
lnh ti case đó s đc thc thi cho đn khi gp lnh break thì kt thúc câu lnh
switch(…). Vic s dng câu lnh này, đòi hi cui mi case phi có lnh break nhm
đm bo tính đúng đn cho chng trình.
Vic s dng câu lnh switch(…) là mt trng hp bin th ca ca câu lnh
if…else… Mt câu lnh switch(…) dù phc tp đn đâu cng đu có th chuy
n đi
thành công sang câu lnh if…else… Nhng, mt câu lnh if…else… cha chc có th
chuyn đi thành công sang câu lnh switch(…). Nguyên nhân ca s khác bit đó là do
câu lnh switch(…) ch có th xét điu kin mt biu thc nht đnh, sau đó so sánh giá
tr ca biu thc đó vi tng case c th. Trong khi đó, trong câu lnh if…else… biu
thc điu kin có th đc tùy bin (ch
ng hn câu lnh if ban đu xét điu kin A, nhng
câu lnh if sau có th xét điu kin B, v.v…).
Vic s dng câu lnh switch(…) hoc if…else… là tùy thuc vào tình hung s
dng. i vi trng hp ch xét điu kin trên mt biu thc và giá tr ca biu thc đó
có nhiu kt qu thì s la chn câu lnh switch(…) trong trng hp này là cn thit.
Trong C#, cu trúc lp đc hin thc thông qua 3 cu trúc sau:
Cu trúc lp while(…) vi cú pháp:
while (<điu kin>) <lnh>;
Trong đó:
o <điu kin> là mt biu thc logic.
Trang 10
o <lnh> có th là lnh đn, khi lnh, hoc câu lnh điu khin. Trong đó, có
ít nht mt câu lnh trong <lnh> có tác dng làm thay đi vic đánh giá li
<điu kin> sau mi ln lp nhm đm báo tính dng cho vòng lp.
Ý ngha: khi nào điu kin còn tha thì còn thc hin <lnh>.
Cu trúc lp for(…)
Cú pháp:
for ( [<phn khi to>] ; [<điu kin>] ; [<phn hiu chnh>] ) <lnh>;
Trong đó:
o <phn khi to> là mt hay nhiu biu thc gán (đc phân cách vi nhau
bi du ‘,’) có nhim v khi to giá tr ban đu cho các bin.
o <điu kin> thng là biu thc logic.
o <phn hiu chnh> là mt hay nhiu biu thc gán (đc phân cách bi
du ‘,’) có nhim v thay đi tr ca các bin <phn khi to>.
o
<lnh> có th là câu lnh đn, khi lnh, hoc câu lnh điu khin.
Ý ngha: khi nào điu kin còn tha thì còn thc hin lnh.
Trong vòng lp for(…) thì phn khi to ch đc thc hin đúng mt ln, <phn hiu
chnh> có nhim v làm thay đi vic đánh giá li <điu kin> sau mi ln lp nhm đm
bo tính dng cho vòng lp. Vòng lp for( ; ; ) <lnh>; là vòng lp vô hn, không có đim
dng.
Cu trúc lp do…while (…)
Cú pháp:
do{
<lnh>;
}while (<điu kin>);
Trong đó:
o <điu kin> thng là biu thc logic.
o <lnh> có th là câu lnh đn, khi lnh, hoc câu lnh điu khin. Trong
<lnh> phi có ít nht mt câu lnh làm thay đi vic đánh giá li điu kin sau
mi ln lp nhm đo bm tính dng cho vòng lp.
Ý ngha: thc hin <lnh> cho đn khi <điu kin> không còn tha.
Vic s dng ba cu trúc lp trên có nhng đim chung, đim riêng sau:
im chung:
o u lp vòng thc thi mt s câu lnh tha điu kin.
o Trong các câu lnh thc thi mi ln lp, phi có ít nht mt câu lnh làm thay
đi li vic đánh giá li điu kin lp nhm đm bo tính dng cho vòng lp.
Trang 11
o Cu trúc lp while (…) và for (…) có th đc chuyn đi cho nhau.
im riêng:
o Phn <lnh> ca vòng lp do…while (…) luôn đc thc hin ít nht mt ln
do <điu kin> đc kim tra sau khi thc hin lnh.
o Phn <lnh> ca vòng lp while (…) và for (…) có th không đc thc hin
ln nào, do <điu kin> đc xét trc khi thc hin lnh.
2.1.4.2.5. C# và lp trình hng đi tng
Lp trình hng đi tng v bn cht là to ra các kiu d liu mi. Mi kiu d
liu đó đc đóng gói vi nhng thuc tính và phng thc riêng đc trng cho kiu d
liu đó.
Trong C#, vic xây dng các kiu d liu mi đc thc hin bng cách khai báo
và đnh ngha các lp (class). M
i th hin ca lp đc gi là mt đi tng.
Trong Windows phone, vic xây dng các class có ý ngha đc bit gn lin vi c
s d liu (CSDL) ca ng dng. Theo đó, mi bng (table) trong CSDL s ng vi mt
class trong C#. Các bin thành viên ca class chính là các ct (field) trong CSDL. Các
phng thc ca class là các hàm giao tip vi CSDL (chng hn nh phng thc ly
thông tin, cp nht thông tin,…).
Khi mt đi tng đc khi to thì phng thc thit lp ca đi tng đó s
đc gi đu tiên. Phng thc thit lp có th là phng thc không tham s, hoc có
tham s hoc c hai.
Trong vic xây dng các class thì thuc tính truy cp có ý ngha rt quan trng,
quyt đnh kh nng các phng thc ca lp cng nh các phng th
c ca lp khác có
th nhìn thy và s dng các bin thành viên hay nhng phng thc bên trong lp đó
mc đ nào. Danh sách các thuc tính và gii hn truy cp đc th hin bng sau:
Bng 2.2: Bng tóm tt các thuc tính truy cp ca mt lp trong C#
Thuc tính Gii hn truy cp
public
Không hn ch. Nhng thuc tính đc đánh du là public đc
dùng bt kì phng thc nào ca lp bao gm c nhng lp
khác.
private
Thuc tính trong lp A đc đánh du là private thì ch nhng
phng thc ca A mi có quyn truy cp.
protected
Thuc tính trong lp A đc đánh du là protected thì ch có
nhng phng thc bên trong lp A và nhng phng thc dn
xut t lp A mi có quyn truy cp.
Trang 12
internal
Thuc tính trong lp A đc đánh du là internal thì có th đc
truy cp bi nhng phng thc ca bt c lp nào trong cùng
khi hp ng vi A.
protected internal
Thuc tính trong lp A đc đánh du là protected internal thì
đc truy cp bi các phng thc ca lp A, các phng thc
ca lp dn xut ca A, và bt c lp nào trong cùng khi hp
ng ca A.
2.1.5 Tìm hiu LINQ To SQL
LINQ là t vit tt ca Language Integrated Query, là ngôn ng tích hp truy vn,
ch có t phiên bn Visual Studio 2008 và .NET Framework 3.5 tr v sau.
LINQ To SQL là mt phn ca LINQ cho phép mô hình hóa c s d liu (CSDL)
thành các lp .NET, sau đó ngi dùng có th truy vn cng nh cp nht CSDL bng
ngôn ng LINQ. LINQ to SQL h tr đy đ transaction, view và các stored procedure
(SP). ng thi, cng cung cp mt cách d dàng đ thêm kh nng kim tra tính h
p l
ca d liu và các quy tc vào trong mô hình d liu.
So vi ADO.NET, LINQ cung cp mt cách tip cn mi, d hiu trong vic lp
trình vi CSDL. Vic s dng LINQ đc kt hp vi file DataContext. ây là file cha
mô hình t chc CSDL, có đc t vic ánh x CSDL.
Hình 2.1: Mô hình hot đng ca LINQ to SQL
Trong Windows Phone, LINQ to SQL đc s dng đ lp trình vi d li
u local
(SQL Database) ca ng dng.
Trang 13
2.1.5.1. Ly thông tin t CSDL:
Cú pháp đ ly thông tin t CSDL bng ngôn ng LINQ nh sau:
<DataContext name> db = new <DataContext name>();
var <tên bin 1> = from <nc danh> in db.<tên bng>
[where <điu kin>]
select <nc danh>; | select new { <nc danh>.<tên field>[,…]};
Trong đó: <tên bin 1> là danh sách các kt qu nhn đc t truy vn,
<DataContext name> là tên ca file DataContext.
2.1.5.2. Cp nht thông tin CSDL:
cp nht CSDL, trc tiên ta ly thông tin ca đi tng cn cp nht, thit lp
li giá tr và ghi li vào CSDL thông qua hàm SubmitChanges().
<DataContext name> db = new <DataContext name>();
<tên bng><tên bin> = db.<tên bng>.Single(<điu kin>);
<tên bin>.<thuc tính cn thay đi> = <giá tr thay đi>;
[<tên bin>.<thuc tính cn thay đi> = <giá tr thay đi>;………….]
db.SubmitChanges();
Trong đó: điu kin là biu thc có dng: <nc danh>=><nc danh>.<tên thuc
tính><phép so sánh><giá tr so sánh>.
2.1.5.3. Thêm d liu vào CSDL
thêm d liu vào CSDL, trc tiên ta to ra mt đi tng thuc mt lp
(table) ca CSDL. Sau đó, gán các thông tin cho đi tng, add đi tng vào lp và s
dng hàm SubmitChanges() đ lu vào CSDL.
<DataContext name> db = new <DataContext name>();
<TableName><tên đi tng> = new <TableName>();
<tên đi tng>.<tên thuc tính 1> = <giá tr 1>;
[<tên đi tng>.<tên thuc tính 2> = <giá tr 2>; ……… ]
db.<TableNames>.Add(<tên đi tng>);
db.SubmitChanges();
Trang 14
2.1.5.4. Xóa d liu ra khi CSDL
xóa d liu ra khi CSDL, ta cn phi xác đnh các đi tng mun xóa, sau đó
remove đi tng ra khi lp cha nó, và dùng hàm SubmitChanges() đ lu vào CSDL.
<DataContext name> db = new <DataContext name>();
var <tên bin 1> = from <nc danh> in db.<TableName>
[where <điu kin>]
select <nc danh>;
db.<TableNames>.DeleteAllOnSubmit(<tên bin 1>); db.SubmitChanges();
Trng hp, ch có mt đi tng cn xóa, thì đi tng đó có th đc xác đnh
nh sau: <tên bng><tên đi t
ng> = db.<tên bng>.Single(<điu kin>);
2.1.5.5. Gi mt th tc
gi mt th tc, ta thc hin nh sau:
<DataContext name> db = new <DataContext name>();
var <tên bin> = db.<Tên th tc>( [<tham s 1> [, <tham s 2> ……….]]);
Trong đó: tên bin cha kt qu có đc t th tc va gi.