You are on page 1of 60

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Mc Lc
Phn A : GII THIU CNG TY THC TP............................................................................ 2 I. II. III. 1. 2. 3. 4. Chc nng ......................................................................................................................... 2 T chc .............................................................................................................................. 3 Cc dch v.................................................................................................................... 4 Kim th phn mm: ................................................................................................... 4 pht trin ng dng di ng: ...................................................................................... 5 pht trin ng dng Web: ........................................................................................... 8 Gii php h thng CNTT:.......................................................................................... 8

Phn B : NI DUNG THC TP ................................................................................................ 9 I. 1. 2. II. 1. 2. III. 1. 2. Tm hiu v ngn ng lp trnh Objective C.................................................................. 9 Gii thiu v Objective C : .......................................................................................... 9 C bn v Objective-C ............................................................................................... 11 Xy dng ng dng tra cu thng tin cc tuyn xe but ........................................... 34 Gii thiu: ................................................................................................................... 34 Xy dng chng trnh: ............................................................................................ 34 Xy dng ng dng Ebook cc b lut ca Vit Nam trn Iphone ....................... 42 Gii thiu: ................................................................................................................... 42 Xy dng chng trnh.............................................................................................. 42

Phn C: NHT K THC TP .................................................................................................. 51

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Phn A : GII THIU CNG TY THC TP


I. Chc nng
Evers chuyn su trong kim th phn mm , pht trin ng dng di ng , pht trin ng dng Web v Gii php h thng CNTT, cung cp cc ng dng cho in thoi di ng. th nghim mng & vin thng, ng dng doanh nghip th nghim v mi th Web v ngnh cng nghip pht trin ng dng di ng. Tiu chun cht lng ca cng ty l vt qu mi tiu chun o lng trong s u vit pht ng ng dng thay mt cho khch hng ca cng ty. EVERS l c chi nhnh nm c hai H Ch Minh, Vit Nam v Santa Clara, USA. Cng ty hot ng mt s phng kim nghim c Bc M - li th m c th dn n tit kim chi ph ng k cho khch hng v mt s trang Web v ng dng di ng Nht, Singapore v Triu Tin. EVERS thc hin d n 24 / 7 ca khch hng trn c s ton cu.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

T khi u ca cng ty lun coi trng mc dch v v qun l cht lng, cho nn EVERS c chng nhn ISO 9001:2000 chng v s c cp giy chng nhn CMMi cp 3 v ISO 27001 v an ninh. Evers c dch v c th ph hp vi mc tiu khc nhau ca khch hng: c nhn, cc cng ty pht trin phn mm, cc doanh nghip v i ng IT. Cho d bn cn phi th nghim c lp / pht trin hoc bn ang tm kim thm cc ngun lc ca con ngi p ng thi hn cht ch ca mt d n phn mm, bn s tm thy gii php ca bn v cng ngh c sn ti Evers v giao tip d dng v minh bch trong qu trnh th nghim. Ty thuc vo kinh nghim ca bn trong kim th / Pht trin ng dng gia cng phn mm, Evers s cung cp tt c cc h tr cn thit lin quan n ngun lc v thng tin. Cng ty thm ch cn pht trin mt phng php c bit cho qu trnh ny, nhn c s cng nhn c bit t khch hng ca Cng ty, c hai dch v gia cng phn mm giu kinh nghim ngi s dng v ngi mi bit ln u. Bn cnh chuyn mn k thut rng ln, i Evers cn thnh tho trong hi nhp y v nhanh chng vi qu trnh pht trin phn mm ca bn bt k giai on m h tham gia d n.

II. T chc
Cng ty bao gm cc thnh vin trong hi ng qun tr: Gim c iu hnh, gim c k thut, ph ch tch ti chnh. Cng ty bo gm cc phng: phng t chc nhn s, phng k thut, phng k ton ti chnh. Phng k thut c chia thnh cc nhm lnh vc: kim th phn mm , pht trin ng dng di ng , pht trin ng dng Web v Gii php h thng CNTT

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

S t chc:

III. Cc dch v

Cng ty cung cp cc dch v:


1. Kim th phn mm: Vi H thng ti nguyn ln ca Cng ty, nhng ngi c trung bnh 10 nm kinh nghim lm vic v hng dn s dng v th nghim t ng ha nc ngoi cng nh lm vic cho Nortel Networks, cng ngh mng Blade, Mountain Iron, MobileIron, vv M v cng x l c p dng trong cng ty, chng ti t tin cung cp cho bn mt dch v kim th nh mong i (th cng v kim th t ng) vi cng ngh khc nhau v cung cp y ca kim th phn mm. Evers sau y vi nhng khch hng ca mnh pht trin mt l trnh hp tc trong vic thit lp mc tiu c xc nh r v tiu chun kim tra tiu chun, cht lng ng dng, ri ro kinh doanh, chi ph d n v thi gian trn th trng. Evers cung cp cc dch v kim th phn mm sau y: Lp k hoch chin lc v th nghim Kh nng th nghim Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 4

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Th nghim thc t Th nghim Vng i y Kim nghim nng sut Th nghim tnh d s dng Th nghim bn a ho Kim tra bo mt Th nghim tnh tng thch T ng ho th nghim Phn mm ca Cng ty th nghim quy trnh n gin:

2. pht trin ng dng di ng: Evers l mt chuyn gia pht trin ng dng di ng c mt kinh nghim rng ri trong cc ng dng di ng. Cng ty chuyn mn su trong pht trin ng dng di ng trn nhiu nn tng bao gm pht trin ng dng Windows Mobile , pht trin trang web cho php in thoi di ng,

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Pht trin ng dng in thoi di ng Nokia da trn J2ME, Samsung, in thoi LG, Google Android, in thoi NFC, pht trin trang web in thoi di ng iPhone, Pht trin ng dng di ng iPhone. Vi i ng chuyn gia pht trin ng dng di ng ca cng ty sn xut cc gii php tit kim bng cch cch ly cc thnh phn trong mt ng dng cn tr s pht trin, gii quyt vi nhng hiu qu v ngnh cng nghip k thut tiu chun. Cng ty pht trin nhiu ng dng ty chnh in thoi di ng iPhone, ng dng di ng da trn Java (J2ME) v Gii php ng dng ca Windows Mobile. Cng ty cng cung cp y cc gii php end-to-end in thoi di ng / khng dy, tch hp cc giao dch kinh doanh thng qua cc thit b di ng v h thng phn phi ni dung xut bn mt lot cc thng tin c gi tr cho c hai nh cung cp v ngi mua. Hin ti trung tm pht trin ra nc ngoi ca cng ty cung cp y Pht trin ph bin ng dng di ng bao gm ton b chu k pht trin ng dng di ng t thit k ban u v kin trc pht trin v hi nhp vo h thng hin c. Cng ty c chuyn mn trong vic xy dng nhiu ng dng s dng h iu hnh Palm OS, Windows CE, Symbian OS, in thoi CDMA & GSM v Tablet PC. Chng ti c kinh nghim pht trin trong GPS da trn cc ng dng J2ME. pht trin ng dng iPhone / iPod / iPad: Evers pht trin ng dng iPhone / iPod / iPad ang c s dng bi nhiu ngi tiu dng khc nhau, t nhng ngi dng l doanh nghip vi ngi tiu dng i chng. Cng ty c mt i ng c tay ngh cao ca cc lp trnh ng dng iPhone cho iPhone / iPod / Pht trin ng dng iPad vi kinh nghim trn iPhone / iPod / iPad SDK, 2.2 iPhone SDK 2.2.1 v SDK 3.0 beta 2 ngi lm vic cho iOS Pht trin ng dng in thoi di ng & pht trin Website iOS Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 6

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Pht trin ng dng Android: EVERS a ra Di ng ng dng Pht trin cho Google Android. ng dng Android l ngn xp phn mm cho thit b di ng bao gm h iu hnh, phn mm trung gian v cc ng dng then cht. Pht trin ng dng Android ca cng ty tm hiu kh nng v hn ca Android qua ton din ca tp hp cc cng c pht trin. Pht trin ng dng Windows Phone: Evers l mt cng ty hng u pht trin ng dng di ng v lp trnh ng dng in thoi thng minh cng ty ti Vit Nam cung cp cht lng hng u cc dch v Windows pht trin ng dng in thoi cho khch hng trn ton th gii. Evers c kinh nghim tt trong pht trin ng dng h iu hnh Windows Phone bng cch cung cp cc gii php mong mun cho cc khch hng ton cu. Pht trin ng dng Blackberry Playbook: Evers cung cp gii php hon chnh cho pht trin ng dng in thoi thng minh BlackBerry, sn sng thch thc i vi Pht trin ng dng BlackBerry Tablet. Vi cc chuyn gia lp trnh BlackBerry iu kin v Cc nh pht trin JAVA, cng ty c th cung cp cho bn phong ph v gii php pht trin ng dng c o vi gi c phi chng. Pht trin ng dng BlackBerry : EVERS gii v pht trin ng dng Blackberry ( ng dng CLDC & Both Middle), pht trin phn mm Blackberry, Lp trnh Blackberry. Cng ty thm ch c th to ra ng dng Blackberry bn th ba cho cng c cp tin. EVERS c kh nng xy dng loi khng l ca ng dng trn Blackberry.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

3. pht trin ng dng Web: EVERS cung cp cc dch v ng dng Web sau y: Pht trin ng dng doanh nghip mi ng dng doanh nghip nim yt ng dng duy tr doanh nghip Bo tr ng dng Doanh nghip

4. Gii php h thng CNTT: Bn c mt doanh nghip c nhu cu ca mt mng c tin cy cao? H thng VoIP v camera sn sng trong cng ty ca bn? Cng ty ca bn sn sng tn hng nhng p ng ca tiu chun IT mi ngi ti mt chi ph hp l khng? Bn sn sng cho s tin li ca mt mng gia nh? Bn c ngh rng bn c mt virus hoc phn mm gin ip? My tnh ca bn phn ng chm hoc cn bi cc ca s pop up? Evers c nhng g bn ang tm kim: Mng Thit k & Thc hin My tnh v bo tr mng Ci t h thng VoIP ci t h thng camera

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Phn B : NI DUNG THC TP


I. Tm hiu v ngn ng lp trnh Objective C

1. Gii thiu v Objective C : Objective-C l ngn ng lp trnh xut hin t rt lu, n c thit k v pht trin t nm 1980. Hin ti, Objective-C li tr nn ph bin v n c Apple chn lm ngn ng lp trnh cho h thng Mac v iPhone. Objective-C c thit k bi Brad Cox khi ng lm vic cho cng ty Stepstone vo u nhng nm 1980. Objective-C c thit k phc v mc ch lp trnh hng i tng. N hot ng ging nh l mt tp hp cc thnh phn m rng rt mnh m ca ngn ng C. Objective-C kt hp cc c im u t nht ca C v ngn ng SmallTalk. Objective-C kh n gin hc v c y cc kh nng ca mt ngn ng lp trnh hng i tng. Objective-C n gin v nh gn nhng li l mt thnh phn m rng rt mnh ca ngn ng chun ANSI C. Objective-C cung cp y cc kh nng lp trnh hng i tng nhng li c thc thi theo cch kh n gin v d dng. Objective-C c thit k vi mc ch a vo C cc tnh nng hng i tng mt cc n gin v d hiu nht. Objective-C l ngn ng chnh c Apple chn vit cc ng dng cho h iu hnh MAC, iPod v iPhone. Nh vy, nm c Objective-C bn phi c kinh nghim v ngn ng C. Nu bn c kin thc tt v C th bn c th nm nhanh Objective-C v c th bt u pht trin cc ng dng cho iPhone v h iu hnh MAC. Nu khng, bn nn dnh thi gian tm hiu thm v ngn ng C trc khi tm hiu Objective-C.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Hu ht cc ngn ng lp trnh hng i tng cung cp: Mt th vin cc Objects. Cc cng c pht trin cn thit H tr hng i tng v cc th vin lin quan. Objective-C cng cung cp y cc thnh phn trn. Bn c th s dng Objective-C pht trin mt phn mm hon thin. Apple chn Objective-C lm ngn ng lp trnh chnh cho h thng my Mac v iPhone. L ngn ng hng i tng nn Objective-C gii quyt cc vn lp trnh da trn khi nim cc Object. N bao gm 3 phn: Interface Interface ca mt lp(class) thng thng c nh ngha trong file header vi ui .h. N chnh l phn khai bo ca mt lp. Implementation M ngun ca chng trnh c vit trong phn implementation ca mt lp v c nh ngha trong mt file c ui .m. y l n phn nh ngha ca lp. Instantiation Sau khi khai bo v nh ngha mt lp, chng ta c th thc th ha lp ny bng vic cp pht b nh cho new object ca lp . Ngn ng lp trnh Objective-C c chn cho Cocoa framework v mt s l do di y: N l ngn ng lp trnh hng i tng v cc chc nng cung cp bi Cocoa framework ch c th c mang li bi cc k thut hng i tng. N l thnh phn m rng ca chun ANSI C v vy cc chng trnh vit bng C ca framework ny s khng b mt i tnh nng no v ngi dng c hng cc li th ca ngn ng C.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

10

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Vi ngn ng ny, ngi dng c th la chn c lp trnh hng i tng v lp trnh th tc khi cn thit. N n gin v d hc bi c php ca n kh ngn gn(ci ny nghi ng qu) nn n gip cho lp trnh vin t c hiu qu mong mun m khng gp nhiu kh khn. N rt nng ng nu so snh vi cc ngn ng m rng khc da trn C. Trnh bin dch ng mt vai tr rt quan trng trong vic bo v thng tin lin quan n cc i tng s dng lc run time. N l mt ngn ng mnh bi v cc quyt nh c th c a ra lc bin dch s c tr hon cho ti khi chng trnh chy. S nng ng ca Objective-C c hai li th ng k: N h tr rng buc ng v m to ra mt cu trc n gin i vi giao din tng tc ngi dng. N cho php pht trin cc cng c pht trin phc tp. Mt giao din cho h thng run time to iu kin cho vic tip cn cc thng tin lc run time gip cho vic monitor ng dng vit bng Objective-C.

2. C bn v Objective-C
2.1 T kha a) Khai bo class, category v protocol @interface: khai bo class hoc interface. @implementation: nh ngha class hoc category. @protocol: khai bo protocol @end: kt thc trong vic khai bo, nh ngha category hoc protocol. @private: gii hn phm vi trong lp m bin th hin c khai bo. @protected: gii hn phm vi trong lp v lp con k tha m bin th hin c khai bo. @public: khng gii hn phm vi truy xut. Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 11

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Mc nh l @protected @try @throw @catch @finally @class: khai bo trc mt tn lp c nh ngha mt ni khc. @selector(method_name): tr v mt selector c bin dch m c nh ngha thng qua method_name. @protocol(protocol_name): tr v mt protocol protocol_name (mt th hin ca mt lp Protocol). @protocol l hp l (khng c protocol_name) trong trng hp khai bo trc @synchronized: nh ngha mt block m ngun trong n phi c thc hin ng b #import: dng include mt file, tng t include trong C, C++. b) Phm vi truy xut cc bin th hin c) X l ngoi l d) Cc mc ch c th khc 2.2 Cu lnh trong Objective-C Cc cu lnh iu khin if, switch v cc cu lnh lp for, while tng t nh C/C++ hoc Java Cc cu lnh r nhnh: if ( ) { } else if ( ) { } else { } Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 12

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

switch () { case : break; default: break; } Cc cu lnh lp: for (; ; ) { } while ( ) { } do { } while ( ) 2.3 i Tng Mt chng trnh hng i tng c xy dng t cc i tng. Mi i tng bao gm d liu v cc phng thc s dng hoc tng tc trn cc d liu . Objective-C cho php nh danh mt i tng m khng cn phi ch ra mt lp c th ca i tng , iu ny cho php nh kiu ng. Trong chng trnh th ta phi lun m bo rng ta phi lun x l cc i tng khng cn cn thit na. a. ID: Trong Objective-C, nh danh i tng l mt kiu d liu khc bit: id. Kiu ny c nh ngha nh l mt con tr tr n mt i tng, trong thc t, mt con tr tr n cc bin th hin ca mt i tng, vi d liu duy nht. Ging nh hm hoc mng trong C, mt i tng c nh Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 13

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

danh bi mt a ch. Tt c cc i tng, bt k l bin th hin hay phng thc, u c kiu l id. b. nh kiu ng: Kiu id l mt kiu hon ton khng hn ch. Bn thn n khng mang thng tin v mt i tng, ngoi tr n l mt i tng. Nhng cc i tng li khng ging nhau. Ti mt vi thi im, chng trnh cn bit r cc thng tin c t ca mt i tng, cc bin th hin m n cha, cc hm m n c th thc hin, kiu id khi c thit k ra khng h tr c iu ny. h tr iu ny, mi i tng c thit k mang trong n mt bin th hin isa vi mc ch nh danh lp ca i tng, cho bit i tng thuc loi no. Nhng vy ti mi thi im runtime, i tng l cc kiu ng. Bt c lc no cn, h thng runtime c th bit chnh xc lp m i tng thuc v, bng cch hi ngay i tng . Con tr isa cho php cc i tng tm cc thng tin v bn thn chng. Trnh bin dch ghi nhn cc thng tin v nh ngha lp vo cc cu trc d liu h thng runtime s dng. Cc hm ca h thng runtime s dng isa tm ra cc thng tin ny ti thi im runtime. c. B nh: Trong lp trnh Objective-C, mt iu quan trng l phi gii phng cc i tng khng cn s dng, nu khng b nh s trn. V mt iu quan trng khng km l khng c gii phng i tng khi n ang c s dng.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

14

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.4 Lp Mt lp trong Objective-C c nh ngha gm 2 file thnh phn tng t C, C++. Mt file *.h nh ngha trc cc bin thnh phn v tn cc phng thc, file *.m nh ngha phn thc thi cho cc phng thc trong file *.h File ClassName.h

#import <headerFile.h> @interface ClassName { variable1 declaration; variable2 declaration; } method1 declaration; method2 declaration; @end Objective-C s dng t kha @interface khai bo mt tn lp trong file h. T kha @end c s dng cui phn khai bo.

File ClassName.m: #import ClassName.h @implementation ClassName -method 1 //trin khai phng thc 1 -method 2 // trin khai phng thc 2 @end Objective-C s dng t kha @implementation khai bo phn thc thi thc s ca lp trong file m. T kha @end c s dng cui phn khai bo.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

15

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.4.1 Thuc tnh: C php khai bo thuc tnh: [Access Privilege] TypeName varName; V d: @private int att1; NSString str1; @protected int att2; @public NSString str2; int att3; Mc nh khi khng s dng t kha quyn truy xut l @protected Phng thc: C php nh ngha mt phng thc [Access Privilege](return_type) methodname: (type1) para1 : (type2) para2 (); Gi phng thc [object methodname:para1 : para2]; V d: Khai bo: -(MyClass*) constructor: (int) a : (int) b; Trin khai -(MyClass*) constructor: (int) a : (int) b { self = [super init]; Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 16

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

if(self) { var1 = a; var2 = b; } return self; } } Li gi phng thc nh sau [myClassObject constructor: 100 : 200]; Trong Objective-C ch c 2 khi nim quyn truy xut n phng thc: truy xut hon ton qua lp (public static) v truy xut hon ton qua i tng (public) Objective-C qui nh phn nh ngha truy xut nh sau Phng thc truy xut thng qua tn lp s c k hiu l du + Phng thc truy xut thng qua i tng s c k hiu l du @interface MyClass: NSObject -(MyClass*) staticMethod: (int) a : (int) b; -(MyClass*) publicMethod: (int) a : (int) b; @end Trong trng hp phng thc c nhiu tham s, v th hin c ngha ca cc tham s trong li gi phng thc, Objective-C cho php mt c php khai bo khc cho phng thc nh sau:
[Access Privlilege](return_type) methodPara1: (type) para1 andPara2: (type) para2;

Li gi phng thc khi s nh sau: [object methodPara1: value1 andPara2: value2]; V d: -(void) setX: (int) x Y: (int) y; Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 17

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

-(void) setX: (int) x Y: (int) y { var1 = x; var2 = y; } [myObject setX: 15 Y: 20]; K tha

2.4.2

Tnh k tha trong Objective-C tng t trong cc ngn ng khc nh C++, #import SuperClass.h #import <headerFile.h> @interface ClassName:SuperClass { variable1 declaration; variable2 declaration; } method1 declaration; method2 declaration; @end Trong Objective-C, thc s tt c cc lp khi to ra u k tha t lp NSObject 2.4.3 Phng thc to Trong Objective-C khng c khi nim phng thc to cho mt lp. Tt c cc i tng ca mt lp phi c cp pht thng qua phng thc alloc v init. MyClass *myObject = [[MyClass alloc]init]; Trong phng thc alloc l cp pht vng nh, cn phng thc init nh l mt phng thc to mc nh trong Objective-C, c nh ngha trong lp NSObject.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

18

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

-(id) init; Ta thng nh ngha li phng thc to c tham s ca mt lp nh sau: #import SuperClass.h #import <headerFile.h> @interface MyClass: NSObject { int var1; int var2; }

-(MyClass*) constructor: (int) a : (int) b; @end

#import MyClass.h @implementation MyClass

-(MyClass*) constructor: (int) a : (int) b { self = [super init]; if(self) { var1 = a; var2 = b; } return self; }@end

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

19

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

T kha super con tr tr n lp cha ca lp hin ti, tng t nh base trong C++ hoc super trong Java. T kha self l con tr i din cho lp hin ti, tng t con tr this trong C++ hay Java

2.4.4 Properties Trong Objective-C h tr tnh nng Properties, cho php chng ta nh ngha cc b truy xut (setter/getter) v vy s c nhiu li ch s dng khi truy xut n cc bin th hin ca i tng. nh ngha trong file.h: @property (<attributes>) type propertyName; Thc thi trong file.m: @synthesize propertyName; Truy xut n properties thng qua c php object.property:

#import <Foundation/Foundation.h> @interface Address : NSObject { int countryCode; int cityCode; } @property (readonly) int countryCode; @property int cityCode; @end #import Address.h @implementation Address @synthesize countryCode; @synthesize cityCode; @end Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 20

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Address *address = [[Address alloc] init]; Int code = address.countryCode; address.cityCode = 99; Cc thuc tnh cho Properties Writability readwrite: ch ra Properties c th c v ghi, thuc tnh ny l mc nh read-only: ch ra Properties ch c th c. Setter Semantics assign: l thuc tnh mc nh. Ta thng s dng assign cho cc kiu v hng nh NSInteger, CGRect

2.5 Category Khi ta mun thm mt s phng thc vo mt lp c sn, thng thng ta s m rng lp bng cch vit li m ngun. Objective-C cung cp tnh nng Category cho php ta m rng lp m khng cn phi vit li m ngun ca lp c. Category cho php ta m rng lp c trong mt b thc thi khc. Gi s ta c mt lp MyClass nh ngha: MyClass.h @interface MyClass -(void) print; @end MyClass.m #import MyClass.h @implementation MyClass -(void) print { //to do print}

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

21

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Ta mun thm mt mt phng thc newMethod, ta s dng tnh nng Category ca Objective-C nh sau: MyCategory.h #import MyClass.h @interface MyClass (MyNewCategory) -(void) newMethod; @end MyCategory.m #import MyCategory.h @implementation MyClass (MyNewCategory)

-(void) newMethod { //to do new method } S dng nh sau: #import MyClass.h #import MyCategory.h int main(int argc, const char *argv) { MyClass *myObject = [[MyClass alloc] init]; [myObject print]; [myObject newMethod]; } Tn ca Category l duy nht, c th thm nhiu Category nhng khng c trng tn. Trong Category khng cho php thm cc bin th hin Ngoi mc ch m rng, Category thng c s dng nh ngha cc phng thc private (khng c h tr trong Objective-C) Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 22

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.6 Posing Pose l mt tnh nng ca Objective-C cho php lp con thay th (pose in place of) lp cha m n k tha trong mt ng cnh nht nh. @interface Fraction -(void) print; @end #import Fraction.h @implementation Fraction -(void) print { printf( printf of Fraction); } @end #import Fraction.h @interface FractionA : Fraction -(void) print; @end #import FractionA.h @implementation FractionA -(void) print { printf( new printf of FractionA); } @end #import Fraction.h #import FractionB.h int main( int argc, const char *argv[] ) { Fraction *frac = [[Fraction alloc] init]; Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 23

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

// print it printf( The fraction is: ); [frac print]; printf( \n ); // FractionA pose as Fraction [FractionA poseAsClass: [Fraction class]]; Fraction *frac2 = [[Fraction alloc] init]; // print it printf( The fraction is: ); [frac2 print]; printf( \n ); // free memory [frac release]; [frac2 release]; return 0; } Kt qu l: The fraction is: printf of Fraction The fraction is: new printf of FractionA Phng thc poseAsClass l mt phn ca protocol NSObject 2.7 Protocol Protocol nh ngha mt danh sch cc phng thc bt buc hoc ty chn m cc lp chp nhn (adopt) protocol bt buc phi thc thi.

@protocol MyProtocol - (void)requiredMethod; @optional Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 24

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

- (void)anOptionalMethod; - (void)anotherOptionalMethod; @required - (void)anotherRequiredMethod; @end Cc phng thc khai bo trong Protocol cng c th l cc khai bo Properties. Cc t kha @optional v @required th hin theo ng ngha ca n, nu khng s dng 2 t kha ny th mc nh l @required. @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; - (id)initWithCoder:(NSCoder *)aDecoder; @end

// Interface @interface SomeClass : NSObject <NSCoding> { }

// Implementation @implementation SomeClass -(void)encodeWithCoder:(NSCoder *)aCoder{ } -(id)initWithCoder:(NSCoder *)aDecoder{ }

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

25

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

SomeClass trin khai Protocol NSCoding theo c php <Protocol> @interface ClassName : ItsSuperclass < protocol list > @interface ClassName ( CategoryName ) < protocol list > V d: @interface Formatter : NSObject < Formatting, Prettifying > Protocol c s dng trong cc trng hp: Khai bo cc phng thc d kin s c thc thi Khai bo mt interface cho mt i tng trong khi n i lp ca n Kho st tng ng gia cc lp m khng phi lin quan n cu trc th bc

2.8 Association References S dng tham chiu lin kt gi lp vic b sung cc bin th hin i tng vo mt i tng khc. Vic khi to mt tham chiu lin kt ch yu da trn mt key, ta c th thm nhiu lin kt nu ta mun vi nhiu key khc nhau, s dng hm runtime ca Objective-C l objc_setAssociatedObject
void objc_setAssociatedObject (id object, void *key, id value, objc_AssociationPolicy policy)

object: i tng ngun ca lin kt key: kha ca lin kt. Kha ny thng l i tng static. value: gi tr lin kt vi kha cho i tng. a gi tr nil xa mt lin kt tn ti policy: cc policy cho lin kt static char overviewKey;
NSArray *array = [[NSArray alloc] initWithObjects:@One, @Two, @Three, nil];

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

26

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

NSString *overview = [[NSString alloc] initWithFormat:@%@, @First three numbers]; objc_setAssociatedObject(array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);

To lin kt overview vo i tng array, ta truy xut i tng lin kt overview thng qua i tng array v kh NSString *associatedObject = (NSString )objc_getAssociatedObject(array, &overviewKey); 2.9 Selector Trong Objective-C, khi nim Selector c 2 ngha. N c th c dng n gin l ch n tn ca mt phng thc khi n c s dng trong m ngun mt thng ip gi n mt i tng. Bn cnh n cn ch n mt nh danh duy nht m thay th cho mt tn khi m ngun c bin dch Selector khi c bin dch c kiu l SEL. Tt c cc phng thc c cng tn th c cng selector. Ta c th s dng mt selector triu gi mt phng thc trn mt i tng, iu ny th hin kh cn bn mu thit k targetaction trong Cocoa. SEL setWidthHeight; setWidthHeight = @selector(setWidth:Height:); Ch th @selector cho php ta tham chiu n mt selector c bin dch hn l tn mt phng thc y . on m trn l mt selector cho phng thc setWidth:Height c assign cho bin SEL l setWidthHeight. trn trng hp ta tham chiu n mt selector thng qua ch th @selector, trong mt s trng hp ta c th chuyn t mt chui k t thnh mt selector trong thi im runtime bng phng thc NSSelectorFromString.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

27

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

setWidthHeight = NSSelectorFromString(aBuffer); V ngc li ta c th ly tn phng thc t mt selector thng qua phng thc NSStringFromSelector.

NSString *method; method = NSStringFromSelector(setWidthHeight); Mt selector bin dch ch nh mt tn phng thc ch khng thc thi phng thc. V d, c mt phng thc Display cho mt lp, c nhiu selector ging nhau cho phng thc Display cc lp khc, vi mc ch a hnh v rng buc ng. Nu c mt selector cho mi phng thc thc thi, th mt thng ip s khng khc mt li gi phng thc. Mt phng thc lp v mt phng thc th hin c cng tn c assign bi mt selector. Tuy nhin, bi v 2 phng thc ny phn bit domain (phm vi lp, phm vi i tng ca lp) nn s khng c s nhm ln gia 2 phng thc ny. Vic nh tuyn mt thng ip truy xut vo mt phng thc ch thng qua mt selector duy nht, v vy n i x nh nhau i vi cc phng thc c cng selecor. N pht hin kiu tr v ca phng thc v kiu d liu ca cc tham s thng qua selector. V vy, ngoi tr thng ip truyn vo cc b nhn kiu tnh, cn li vi cc rng buc ng n yu cu tt c cc tn phng thc thc thi phi c cng kiu tr v v c tham s cng kiu. (cc b nhn kiu tnh l ngoi l, trnh bin dch c th bit v cc phng thc thc thi t kiu lp). Mc d nh danh ca phng thc lp v phng thc th hin l cng mt selector, nhng chng c th c kiu tr v v kiu ca cc tham s khc nhau. Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 28

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Ba phng thc performSelector:, performSelector:withObject:, v performSelector:withObject:withObject:, nh ngha trong protocol NSObject ly cc nh danh SEL nh l cc tham s khi to. Tt c cc phng thc ny nh x trc tip vo thng ip phng thc. V d: [friend performSelector:@selector(gossipAbout:) withObject:aNeighbor]; Tng ng vi [friend gossipAbout:aNeighbor]; Hoc v d: id helper = getTheReceiver(); SEL request = getTheSelector(); [helper performSelector:request]; Cc phng thc c th bin i ti thi im runtime, nh trn b nhn helper c chn thng qua phng thc getTheReceiver v b nhn ny c yu cu thc hin phng thc request thng qua phng thc getTheSelector ti thi im runtime. Lu , khi mt b nhn buc phi thc hin mt phng thc m khng thuc phm vi ca mnh thng qua selector th ng nhin s xut hin li. V nhng cng vic ny thc thi thi im runtime nn hin nhin li s ch xut hin ti thi im chng trnh c thc thi. Qun l b nh

2.10

2.10.1 Cc nguyn tc qun l b nh: Nguyn tc c bn: Khi bn nm quyn s hu mt i tng, khi to i tng bng cc phng thc m trong tn bt u vi vi alloc hoc new hoc copy (v d, Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 29

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

alloc, newObject hoc mutableCopy) hoc gi mt thng ip retain, bn phi c trch nhim gii phng quyn s hu i tng bng cch s dng release hoc autorelease. Bt k khi no bn nhn c mt i tng (khng phi t mnh khi to), bn khng c release n. Cc nguyn tc khc: Khi bn cn lu tr mt i tng c nhn nh mt property trong mt bin th hin, bn phi retain hoc copy n. (iu ny khng ng cho cho tham kho yu, nhng y l in hnh him). Mt i tng c nhn thng m bo vn c hiu lc trong phng thc m n c nhn (ngoi tr trong cc ng a lung v vi trng hp Distributes Objects). Phng thc c th tr v an ton i tng m n c triu gi. S dng retain trong vic kt hp vi release hoc autorelease khi cn thit bo v mt i tng khi hiu lc ca cc thng ip khng hp l bn ngoi. autorelease c ngha l gi mt thng ip release sau 2.10.2 Vn khi khi to i tng: Xt on code khi to i tng sau TestClass *ptr = [TestClass alloc]; [ptr init]; // Do something with the object if (ptr) Thot nhn qua c v v hi, phng thc alloc khi to mt vng nh cho i tng ptr, sau gi thng ip gi phng thc init cho i tng ptr, li c th xy ra y. Gi s dng lnh dng lnh [ptr init], phng thc init c li xy ra v tr v nil, tip theo dng lnh if, lc ny ptr vn khc Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 30

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

nil mc d phng thc init tr v nil (nhng n khng c gn cho ptr), dn ti ngha ca phng thc to thc s khng cn na. Khi , on code sau s gii quyt c kh nng li trn

TestClass *ptr = [[TestClass alloc] init]; // Do something with the object if (ptr) Gi s init c li v tr v nil th ptr vn s c gn l nil, do dng lnh if s thc hin ng ngha ca n. ngha t v d ny l, ta lun lun phi tr v nil trong phng thc init nu c li khi to xy ra v lu phi kt hp 2 li gi phng thc alloc v init.

2.10.3 Release Nu bn khi to mt i tng s dng cch th cng alloc, bn cn phi release i tng sau . Bn khng nn thc hin release th cng mt i tng autorealse bi v ng dng c th s b crash nu bn lm iu .

// string1 will be released automatically NSString* string1 = [NSString string]; // must release this when done NSString* string2 = [[NSString alloc] init]; .. [string2 release];

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

31

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.10.4 Retain Trong Objective-C, mi i tng c mt b m c s dng kim sot tt c cc tham chiu bi i tng hoc n c. bit c gi tr ca b m ny ta s dng thuc tnh retainCount [object retainCount]. Phng thc alloc, new, copy v retain u tng b m ny ln 1 v phng thc release gim b m ny i 1, khi b m c gi tr bng 0 th phng thc dealloc ca i tng s c gi. Bt c khi no mt i tng c nhu cu c s dng bi mt i tng khc n phi retain tng b m retainCount ln 1, v khi n khng cn s dng na th phi release gim b m retainCount i 1. Khi b m c gi tr bng 0 c ngha l n khng cn nhu cu s dng na, n s t hy bng phng thc dealloc.

2.10.5 Dealloc Phng thc dealloc c gi khi i tng ang c remove khi b nh. N thng c s dng nht khi gii phng tt c cc tham chiu ca cc bin th hin con ca i tng khi b nh. Hay ni cch khc, mt lp nu c cc bin th hin l cc i tng th trong phng thc dealloc ca lp phi thc hin gii phng cc bin th hin ny. - (void)dealloc { [childVar1 release]; [childVar2 release]; [super dealloc]; } Phng thc [super dealloc] c s dng thng bo cho lp cha thc hin vic dn dp (y l phng thc c nh ngha trong NSObject), Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 32

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

nu khng gi phng thc ny, c th i tng s khng c remove khi b nh, s gy nn tnh trng chim b nh. Lu : Phng thc dealloc s khng c gi trong trng hp b dn rc c bt. 2.10.6 Tham chiu yu Retain mt i tng to ra mt tham chiu mnh n i tng . Mt i tng khng th dealloc cho ti khi tt c cc tham chiu mng c gii phng ht. Trong mt s trng hp, ta c th mun c mt tham chiu n i tng m khng cn tr vic i tng t gii phng chnh n, lc ny ta c th thit lp mt tham chiu yu n i tng. Mt tham chiu yu c to ra bng cch cha mt con tr tr n mt i tng m khng retain i tng . Tham chiu yu rt cn thit trong vic thit lp cc tham chiu vng. V d, i tng A v i tng B cn trao i thng tin vi nhau nn mi i tng cn mt tham chiu n i tng kia (v nh mi quan h gia 2 i tng cha con), nu nh chng ta retain i tng kia khi thit lp tham chiu th mi i tng ch c dealloc khi no kt ni ny t, tuy nhin kt ni ny ch t khi c mt i tng c dealloc m thi. Trong trng hp ny ta thy c li ch ca tham chiu yu. Chng ta phi tht cn thn khi truyn thng ip trong tham chiu yu, trong trng hp i tng nhn thng ip dealloc th ng dng c th s b crash. ng thi, trong mi quan h tham chiu yu, i tng c tham chiu n phi c trch nhim bo cho i tng kia bit khi n thc Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 33

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

hin dealloc, v d gi mt thng ip setDelegate: vi tham s nil cho i tng kia chng hn, trong trng hp i tng dealloc l mt Delegate ca i tng nhn thng ip.

II. Xy dng ng dng tra cu thng tin cc tuyn xe but


1. Gii thiu: Finbus l chng trnh ng dng gip mi ngi tra cu thng tin cn thit nh l trnh, gi hot ng, gi vca cc tuyn xe but trn a bn cc thnh ph ln nh H Ni, Thnh ph H Ch Mnh, Hi Phng, Chng trnh cho php update thng xuyn khi cc tuyn xe but thay i hoc thm tuyn mi. Chng trnh chy trn nn in thoi Iphone

2. Xy dng chng trnh: Nghip v: Khi mt hnh khch mun tm mt tuyn xe but i n a im cn thit, khi hnh khch s xc nh a im mnh ang ng (xc nh tn ng hnh khch ang ng) v tn ng hnh khch cn ti, t hnh khc s lu chn nhng tuyn xe but c i qua c 2 a im trn xem tuyn no ph hp vi mnh nht (cn c vo l trnh, gi v). Lc ER: Chng trnh h tr tra cu thng tin xe but nhiu tnh, thnh ph khc nhau. Trong mi thnh ph s c nhiu xe but v mi xe ch thuc mt thnh ph.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

34

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

T in d liu: THANHPHO Thuc tnh MATP TENTP XEBUYT Thuc tnh MAXE MATP TENXE TUYENDI CHITIET Rng buc Not null Not null M t M phn bit gia cc thnh ph Tn ca thnh ph

Rng buc Not null Not null Not null Not null Not null

M t M phn bit gia cc xe M phn bit gia cc thnh ph Tn ca xe but im khi hnh v im dng cui ca xe but M t chi tit nhng thng tin nh: cc tuyn ng i qua, thi gian hot ng, thi gia ch, gi v

M hnh quan h: THANHPHO (MATP, TENTP) XEBUYT (MAXE, MATP, TENXE, TUYENDI, CHITET)

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

35

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

S dng chng trnh: 2.1. Giao din chnh: Giao din chnh ca chng trnh s lit k cc thnh ph c h tr tm tra cu thng tin xe but. Ngi dng thnh ph no th chn thnh ph tra cu.

2.2. La chn tuyn xe: Khi chn thnh ph ngi dng s thy hin ln danh sch ton b nhng tuyn xe ca thnh ph va chn. Ngi ng c th t tm kim trong danh sch c tuyn xe ph hp hoc s dng chc nng tm kim ca chng trnh tm kim mt cch nhanh chng hn.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

36

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.3. Hin th thng tin chi tit ca xe: Khi ngi dng chn vo 1 tuyn xe chng trnh s hin ra thng tin chi tit ca tuyn xe nh: L trnh, gi hot ng, thi gian ch, gi v

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

37

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.4. Chc nng tm kim: Ngi dng c th s dng chc nng tm kim bng cch chn biu tng tm kim, khi hnh khch ch cn nhp tn ng vo tm kim chng trnh s tm ra nhng tuyn xe i ng .

Hm tm kim tuyn xe:


- (void)searchBus { NSString *selectedStreets = [(UITextField *)[contentView viewWithTag:TEXTFIELD_TAG] text]; if ((selectedStreets == nil) || ([selectedStreets length] == 0)) { UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Thng bo" message:@"Bn cha nhp thng tin!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"ng", nil]; [alert show]; [alert release]; } else { SearchResultView *obj = [[SearchResultView alloc]init]; [obj setSearchCity:_searchCity]; [obj setSelectedStreets:selectedStreets]; CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationCurve:UIViewAnimationCurveLinear]; [UIView setAnimationDuration:1.0]; UINavigationController *navigationController = [[UINavigationController

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

38

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

alloc]initWithRootViewController:obj]; navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [[self navigationController] presentModalViewController:navigationController animated:YES]; [navigationController release]; [UIView commitAnimations]; } }

2.5.

Chc nng update:

Khi c thay i v thng tin cc tuyn xe but hoc c thm c tuyn xe but mi th ngi dng c th s dng chc nng update cp nht thng tin mi nhtt

Hm thm cc thnh ph:


-(void) insertRemoteCity:(int)ID City:(NSString*)City1 { sqlite3 *database ; @try { [[SQLiteDataProvider instance] checkAndCreateDatabase]; NSString *databasePath = [[SQLiteDataProvider instance] databasePath]; if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { const char *sqlStatement = "insert into CityTable(CityName,ID) values(?,?)"; sqlite3_stmt *compiledStatement = nil; if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

39

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

{ sqlite3_bind_text( compiledStatement, 1, [City1 UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); } else { NSLog( @"Update CityName id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table product -> %@", e); } @finally { sqlite3_close(database); } }

Hm thm cc tuyn xe but:


-(void) InsertRemoteBusName:(int)ID BusName:(NSString*)BusName1 CityID:(int)CityID1 Brief:(NSString*)brief1 { sqlite3 *database ; @try { [[SQLiteDataProvider instance] checkAndCreateDatabase]; NSString *databasePath = [[SQLiteDataProvider instance] databasePath]; if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { const char *sqlStatement = "insert into BusTable(BusName, ID,CityID,Brief) values(?,?,?,?)"; sqlite3_stmt *compiledStatement = nil; if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { sqlite3_bind_text( compiledStatement, 1, [BusName1 UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); sqlite3_bind_int(compiledStatement, 3, CityID1); sqlite3_bind_text( compiledStatement, 4, [brief1 UTF8String], -1,

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

40

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

SQLITE_TRANSIENT); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error Insert: %s", sqlite3_errmsg(database) ); } else { NSLog( @"Insert BusName id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table BusTable -> %@", e); } @finally { sqlite3_close(database); } }

Hm update Thng tin cc tuyn xe but:


-(void) updateRemoteBusDetail:(int)ID Detail:(NSString*)Detail1 CityID:(int)CityID1 { sqlite3 *database ; @try { [[SQLiteDataProvider instance] checkAndCreateDatabase]; NSString *databasePath = [[SQLiteDataProvider instance] databasePath]; if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { const char *sqlStatement = "update BusTable set Detail = ? where ID = ? and CityID=?"; sqlite3_stmt *compiledStatement = nil; if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { sqlite3_bind_text( compiledStatement, 1, [Detail1 UTF8String], 1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); sqlite3_bind_int(compiledStatement, 3, CityID1); }

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

41

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); }else { NSLog( @"Update Detail id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table BusTable -> %@", e); } @finally { sqlite3_close(database); } }

III. Xy dng ng dng Ebook cc b lut ca Vit Nam trn Iphone


1. Gii thiu: ng dng gip ngi dng xem cc b lut ca Vit nam nh Lut lao ng, Lut s hu tr tu, Lut giao thng, Lut dn s, Lut hnh stheo tng chng. Ngoi ra ngi dng c th xem c h thng bin bo giao thng ng b, ng thy, ng st ca Vit Nam. ng dng cn c chc nng update ni dung cc b lut khi c thay i hoc khi thm cc b lut mi. 2. Xy dng chng trnh

Lc ER:

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

42

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

T in d liu: TENLUAT Thuc tnh Maluat Tenluat CHUONG Thuc tnh Machuong Maluat Tenchuong Noidung M hnh quan h: TENLUAT (Maluat, Tenluat) CHUONG (Maluat, Machuong, Tenchuong, Noidung) S dng chng trnh: 2.1. Giao din chnh: Giao din ca chng trnh s lit k tn tt c cc b lut m chng trnh h tr. Ngi dng c th chn vo 1 b lut m mnh quan tm xem ni dung ca b lut . Rng buc Not null Not null Not null Not null M t M phn bit gia cc chng M phn bit gia cc b lut Tn chng ca b lut Ni dung ca chng lut Rng buc Not null Not null M t M phn bit gia cc b lut Tn ca cc b lut

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

43

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.2. La chn b lut Khi ngi dng chn 1 b lut th chng trnh s lit k tt c cc chng ca b lut . Ngi dng c th chn 1 chng lut xem ni dung ca chng lut .

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

44

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.3. Hin th ni dung chng Khi ngi dng chn 1 chng th chng trnh s hin ni dung ca chng lut

2.4. Hin th bin bo Khi chn b lut giao thng chng trnh s cho php ngi dng chn xem vn bn lut hoc xem h thng bin bo. Khi chn h thng bin bo chng trnh s hin th danh sch cc loi bin bo.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

45

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Ngi dng chn loi bin bo cn xem chng trnh s hin th cc bin bo thuc loi bin bo

2.5.

Chc nng update Khi Cc b lut c thay i ni dung hay thm b lut mi th ngi dng c th update chng trnh theo tng b lut hoc update cho tt c cc b lut.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

46

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Hm thm b lut:
-(void) InsertLaw:(int)ID Law:(NSString*)Law1 URL:(NSString*)URL1 { sqlite3 *database ; @try { [[SQLiteDataProvider instance] checkAndCreateDatabase]; NSString *databasePath = [[SQLiteDataProvider instance] databasePath]; if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { const char *sqlStatement = "insert into LAWS(Title, ID, Url) values(?,?,?)"; sqlite3_stmt *compiledStatement = nil; if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { sqlite3_bind_text( compiledStatement, 1, [Law1 UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); sqlite3_bind_text( compiledStatement, 3, [URL1 UTF8String], -1, SQLITE_TRANSIENT); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); }else { NSLog( @"Update Chapter id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table product -> %@", e); } @finally { sqlite3_close(database); } }

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

47

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Hm thm chng lut:


-(void) InsertChapter:(int)ID Chapter:(NSString*)Chapter1 Brief:(NSString*)Brief1 { sqlite3 *database ; @try { [[SQLiteDataProvider instance] checkAndCreateDatabase]; NSString *databasePath = [[SQLiteDataProvider instance] databasePath]; if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { const char *sqlStatement = "insert into Chapters(Title, IDChapter, IDLaw, Brief) values(?,?,?,?)"; sqlite3_stmt *compiledStatement = nil; if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { sqlite3_bind_text( compiledStatement, 1, [Chapter1 UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); sqlite3_bind_int(compiledStatement, 3, LawID); sqlite3_bind_text( compiledStatement, 4, [Brief1 UTF8String], -1, SQLITE_TRANSIENT); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); }else { NSLog( @"Insert Chapter id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table product -> %@", e); } @finally { sqlite3_close(database); } }

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

48

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Hm update ni dung chng lut:


-(void) updateRemoteContents:(int)ID Contents:(NSString*)Contens1 { sqlite3 *database ; @try { [[SQLiteDataProvider instance] checkAndCreateDatabase]; NSString *databasePath = [[SQLiteDataProvider instance] databasePath]; if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { const char *sqlStatement = "update Chapters set Contents = ? where IDChapter = ? and IDLaw = ?"; sqlite3_stmt *compiledStatement = nil; if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { sqlite3_bind_text( compiledStatement, 1, [Contens1 UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); sqlite3_bind_int(compiledStatement, 3, LawID); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); }else { NSLog( @"Update Content id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table product -> %@", e); } @finally { sqlite3_close(database); } }

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

49

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

2.6.

Chc nng tnh thu thu nhp c nhn

Khi ngi dng chn tab cng c chng trnh s hin th giao din tnh thu thu nhp c nhn, ngi dng cn nhp thu nhp trong 1 thng v s ngi ph thuc chng trnh s tnh ton ra s tin thu cn phi ng v s tin cn li.

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

50

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Phn C: NHT K THC TP


Tun s: 01
Th Ngy Ngi hng dn Nhn xt ca ngi hng dn cng vic

Cng vic thc hin

Mc

Hai

Ba

Nm

Su

10/02

Tm hiu v Objective c

Nguyn Thanh Tn

By CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

51

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 02
Th Ngy

Cng vic thc hin

Ngi hng dn

Mc

Nhn xt ca ngi hng dn cng vic

Hai

13/02 Tm hiu v Objective c

Nguyn Thanh Tn

Ba

14/02 Tm hiu v Objective c

Nguyn Thanh Tn

15/02 Sa li app SidePuzzle

Nguyn Thanh Tn

Nm

16/02 Sa li app TravelService

Nguyn Thanh Tn

Su

17/02 Sa li app whacking

Nguyn Thanh Tn

By

CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

52

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 03
Th Ngy

Cng vic thc hin

Ngi hng dn

Mc

Nhn xt ca ngi hng dn cng vic

Hai

20/02

Sa li app TaxiServices

Nguyn Thanh Tn

Ba

21/02

Sa li app View Manga

Nguyn Thanh Tn

22/02

Sa li app Vui

Nguyn Thanh Tn

Nm 23/02

Xy dng app FindBus: phn tch CSDL

Nguyn Thanh Tn

Su

24/02

FindBus: Xy dng CSDL

Nguyn Thanh Tn

By CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

53

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 04
Th Ngy

Cng vic thc hin

Ngi hng dn

Mc

Nhn xt ca ngi hng dn cng vic

Hai

27/02

FindBus: load danh sch cc thnh ph

Nguyn Thanh Tn

Ba

28/02

FindBus: load danh sch cc tuyn xe cho tng thnh ph

Nguyn Thanh Tn

29/02

FindBus: Hin th thng tin cho tng tuyn xe

Nguyn Thanh Tn

Nm

01/03

FindBus: Xy dng chc nng tm kim tuyn xe

Nguyn Thanh Tn

Su

02/03

FindBus: Xy dng chc nng update Thnh ph

Nguyn Thanh Tn

By CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

54

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 05
Th Ngy

Cng vic thc hin

Ngi hng dn

Mc

Nhn xt ca ngi hng dn cng vic

Hai

05/03

FindBus: Xy dng chc nng update Tuyn xe

Nguyn Thanh Tn

Ba

06/03 Gn About cho app FindBus

Nguyn Thanh Tn

07/03

Test v sa li cho app FindBus

Nguyn Thanh Tn

Nm

08/03

Xy dng app LAW: Phn tch Nguyn CSDL Thanh Tn

Su

09/03

Xy dng app LAW: xy dng Nguyn CSDL Thanh Tn

By CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

55

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 06
Th Ngy

Cng vic thc hin

Ngi hng dn

Nhn xt ca Mc ngi hng dn cng vic

Hai

12/03

Xy dng app LAW: Nhp d liu

Nguyn Thanh Tn

Ba

13/03

Xy dng app LAW: Load danh sch tn cc B lut

Nguyn Thanh Tn

Xy dng app LAW: Load 14/03 danh sch tn cc chng cho tng b lut

Nguyn Thanh Tn

Nm

15/03

Xy dng app LAW: Hin th Nguyn ni dung cho tng chng lut Thanh Tn

Su

Xy dng app LAW: xy 16/03 dng cha nng update tn cc b lut

Nguyn Thanh Tn

By

CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

56

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 07
Th Ngy

Cng vic thc hin

Ngi hng dn

Nhn xt ca Mc ngi hng dn cng vic

Hai

Xy dng app LAW: xy Nguyn 19/03 dng cha nng update tn cc Thanh Tn b lut Xy dng app LAW: xy Nguyn 20/03 dng cha nng update tn cc Thanh Tn chng lut Xy dng app LAW: xy 21/03 dng cha nng update ni dung cho tng chng. Xy dng app LAW: xy 22/03 dng chc nng xem bin bo giao thng Xy dng app LAW: xy 23/03 dng tin ch tnh thu thu nhp c nhn

Ba

Nguyn Thanh Tn

Nm

Nguyn Thanh Tn

Su

Nguyn Thanh Tn

By CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

57

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 08
Th Ngy

Cng vic thc hin

Ngi hng dn

Nhn xt ca Mc ngi hng dn cng vic

Hai

Xy dng app LAW: Test v 26/03 sa li chc nng Xem bin bo giao thng Xy dng app LAW: Test v 27/03 sa li chc nng Tnh thu thu nhp c nhn

Nguyn Thanh Tn

Ba

Nguyn Thanh Tn

28/03 Gn About cho app LAW

Nguyn Thanh Tn

Nm

29/03 Test v sa li cho app LAW

Nguyn Thanh Tn

Su

30/03

Update d liu cho app FindBus

Nguyn Thanh Tn

By

CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

58

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 09
Th Ngy

Cng vic thc hin

Ngi hng dn

Nhn xt ca Mc ngi hng dn cng vic

Hai

02/04

Ba

03/04

Gn About cho app TravelService

Nguyn Thanh Tn

04/04 Gn About cho app

Nguyn Thanh Tn

Nm

05/04

Gn About cho app SlidePuzzle

Nguyn Thanh Tn

Su

06/07

Gn About cho app TaxiServices

Nguyn Thanh Tn

By CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

59

Bo co thc tp

GVHD: Nguyn Th Minh Hiu

Tun s: 10
Th Ngy

Cng vic thc hin

Ngi hng dn

Mc

Nhn xt ca ngi hng dn cng vic

Hai

09/04

Gn About cho app View Manga

Nguyn Thanh Tn

Ba

10/04 Gn About cho app vui

Nguyn Thanh Tn

Nm

Su

By

CN

Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh

60

You might also like