NG CAO ĐẲNG CÔNG NGHỆ THỦ ĐỨC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO KẾT QUẢ THỰC TẬP TỐT NGHIỆP Địa chỉ: 168/6 Bùi Thị Xuân, P3, quận Tân Bình, tp THỦ ĐỨC THƯ VIẸ... Trường Cao Đẳng Công Ng
Trang 1)NG CAO ĐẲNG CÔNG NGHỆ THỦ ĐỨC KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO KẾT QUẢ THỰC
TẬP TỐT NGHIỆP
Địa chỉ: 168/6 Bùi Thị Xuân, P3, quận Tân Bình, tp
THỦ ĐỨC
THƯ VIẸ
Trang 2PHIẾU ĐÁNH GIÁ
Học sinh- sinh
viên
Thời gian thực
tập
Người đánh giá
KÉT QUẢ THỰC TẬP CỦA DOANH NGHIỆP
Họ tên:- _ I > tz Kita MqA Lóp: c£> \4 TV V,
Ngày đến Ô.9 / °/ Í.CO
Ngày bắt đầu / 0*5 / Ngày kết thúc 2-3 / ồ(> / 2.0lì
Họ tên: T77/V TÀM _
Chức vụ: /vWiik M/SziajU/l
quan: Coria TnJ 'H H CiữA map J)I dtâna úựý DmQ Lee Xữa
CẠÍQ ,ÒIM Tfiu XtjLX, I PC TtXr? t Tf, pfo CCa LXveC
Điện thoại: _ VĐ: aw L<2$ ìi 2 Email: t&r” cOYr}
Đánh giá tổng quát
Ghì chủ: 1 = rất chưa tốt; 2= chưa tốt; 3 = chấp nhận được; 4 = tốt; 5 = rat tot
(Có thể bỏ qua các tiêu chỉ không có trong chương trình thực tập của HSSV)
(1) (2) (3) (4) (5)
Quản lí
Thời gian 1 Bắt đầu và kết thúc công việc
5 Thực hiện yêu cầu công việc
Thái độ
7 Đam mê công việc
8 Tinh thần học hỏi
9 Tinh thần làm việc nhóm
10 sẵn sàng khi có yêu cầu trợ giúp người khác Quan hệ 11 Với người hướng dẫn/anh/chị trong công ty/cơ quan
12 Với các thành viên khác trong nhóm
Kỹ năng thực hàn 1/thực tập
Thực hành 13 Có kế hoạch cụ thể, rõ ràng để thực hiện các công
TDN 7.5.1 L-B6
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DÀN
1 vềhìnhthức trình bày báo cáothực tập:
2 Nội dung thực tập:
ztf
3 Trình bày bài họccủa HSSVvê khoá thựctập :
4 Điểm yếu của HSSV về thực tập :
5 Điểm mạnh của HSSV vềthực tập:
chìa ẠLỈ / A
6 Kết luận:
7 Tổng số điểm của HSSV đạt được là: 0 điểm
ngày ŨLỊthủng tLThăm (kĩ.4
Giảng viên hướng dẫn
(ký ghi rõ họ tên)
Trang 4Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
NỘI DƯNG 2
Chương 1 Nội đung thực tập : 3
I Mô tả quy trình thực tập và công việc thực tập : 3
1 Quy trình thực tập : 3
2 Công việc thực hiện : 4
2.1 Giói Thiệu Ngôn Ngữ Lập Trình Swift 4
2.2 Học Swift Cơ Bản 4
3 Xây Dựng ứng Dụng 11
KẾT LUẬN 23
TÀI LIỆU ĐÍNH KÈM 24
Báo Cáo Thực Tập Kiều Mạnh Thắng
Trang 5Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công nghệ Thông Tin
LỜI MỞ ĐẦU
Trong xã hội ngày càng phát triển hiện nay,mọi người ngày càng đòi hỏi chúngta phải tiên tiến hơn,phát triển hơn nhàm phục vụ cho đất nước ngày càng lớn mạnh, trong
đó ngành CNTT là một trong số các ngành nghề rất quan trọng và đang được phổ biến
rộng rãi trên toàn thế giới hiện nay Đóng một vai trò to lớn đối với sựpháttriển các tập thể doanh nghiệp và cáccá nhântrong nước và ngoài nước Được thiết kế và tạo ra những
phần mềm.ứng dụng ,tài liệu quan trọng nhằm bảo mật thông tin chung vàcá nhân.Tạo
ra những bản thiếtkế các mô hình quan trọng trong nhiều lĩnh vực để mang lạinhững lợi ích cho các doanhnghiệp cũngnhư cáccá nhânvà thu lại lợi nhuận cao
Ngày nay hầu nhưmọi người hầu như đều sở hữu cho mình ítnhất một thiết bị di động thông minh như điện thoại, máy tínhbảng Việc sử dụng các thiết bị thông minh
giúp chúng ta thuận tiện hơn trong việc giải quyết các vấn đề trong cuộc sống như: giao
tiếp liên lạc, buôn bán, quảng bá, hỗ trợ công việc Với sự phát triển vô cùng mạnh mẽ của thị trường di động thông minhnhưvậy sẽ kéo theo nhu cầu thiết kếvà pháttriển ứng dụng trên những chiếc điện thoạivô cùng lớn
Công ty TNHH Giải Pháp Di Động Apps Cyclone là một công ty lớn mạnh,
chuyên thiếtkếvà phát triển các ứng dụngtrêncác nền tảng như Website, Mobile , cung
cấp các giải pháp giải quyết các vấn đềtrên Di Động Ngoài việc phát triển các ứng dụng
của Công Ty, Apps Cyclone còn cung cấp các dịch vụ như: phát triển ứng dụng trên di
động, website, cung cấp giải pháp, ý tưởng cho ứng dụng di động, tái thiết ứng dụng với các khách hàng đến từ khắp nơi trên thế giới như: Singapore, Nhật, úc, Hoa Kỳ, Canada
Trang 6Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
NỘI DƯNG
Chuông 1 Nội dung thực tập :
I Mô tả quy trình thực tập và công việc thực tập :
1 Quy trình thực tập :
- Sau khi được nhận vào thực tập tại công ty sinhviên chọn cho mình mộttrong những hướng:
• Lập Trình IOS
• LậpTrình Game
• Lập Trình Android
• Lập Trình Website
• Kiểm Thử
- Sau đó sẽ đượchướng dẫndẫn và đào tạotheo đúng hướng mình đãchọn
- Do sởthích và niền dam mê với công việc phát triển ứng dụng trêncác thiết bị
di động nên em chọn cho mình Lập TrìnhIOS
- Kếhoạch đào tạo LậpTrình IOS :
• Bốn tuần đầutiên được đào tạo về ngôn ngữlậptrình trên IOS cụ thể là
ngôn ngữ lậptrình Swift xen kẽ với việc lập trìnhcác ứng dụng nhỏ trên thiết bị IOS
• Ba tuần cuối sẽ làm một ứng dụngtổnghợp
• Trong quá trìnhđào tạo sẽ được đào tạo thêm vềviệc sửdụng cáccông
cụ quản lý source code như github, sử dụng redmine đểbáo cáocông
việchằng ngày cũng như quy trình làm việc trongmôitrường làm việc
chuyên nghiệp
3
Báo Cáo Thực Tập Kiều Mạnh Thắng
Trang 7Trường Cao Đăng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
Tronglúc khaibáo biến cũng có thể định kiểu dữ liệu chobiến.Neu không
biến sẽ cókiểu dữ liệulà kiểu dữ liệu củagiá trị mà được gán vào biến Vd: lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
let name:String = “Thang” //biến name có kiêu dữ liệu là String
let name - “Kieu”//bien name cũng có kiêu dữ liệu là String llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
■ Int: các dạng đặc biệt của Int: Int8, Intl6, Int32, Int64, ƯInt8,
Ulntló, UInt32, UInt64 Ở môi trường 32bit thì Int tương đương với Int32, môi trường 64 bitthì Int tươngđương với Int64
■ Float: hiển thị 32 chữ số thập phân
■ Double: hiển thị 64 chữ số thập phân Nếu số dàitacó thể thêm _
dướimỗi hàng
■ Character: kiểu char vd: " 1"
■ String: kiểustring Vd: "xin chao"
■ Book nhận 2 giátrị làtrue vàfalse
■ Array
yfrdlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
let arr = [1,2,3,4,5]//mảng chứa các số tự nhiên từ 1 đến 5
varempty Array: [String] = [] //tạo mảng rỗng
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
kiểu dữ liệu Array đượchỗ trợ rấtnhiều hàm như thêm, sửa xóa phần tử (chi tiếtxem tại
https://developer.apple.com/library/content/documentation/Swift/Co nceptual/Swift Programming Language/TheBasics.hĩml')
■ Dictionary Khágiống với Array, thay vì quản lý cácphẩn từ bằng chỉ số (index)
thìchúng tacó thểđặttên cho phần tử đó, vàkhi truy cập thì chúng
tacó thể lấytên đó ra ["key": "value"]
Vd:
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
let die: [String:String] = [“name”: “Thang”]
let name= die [“name”] // lúc này giá trị của name sẽ là “Thang ”
Trang 8Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
var name:String?
var age:Int?
func printName(){
print(name) }
}
//Extensionclass Student
extension Student {
func printAge(){
print(self.age) }
}
Khi bạn định nghĩa 1 hàm nào đó trong lập trình swift thìcần sử
dụngtừkhoá “ func“,nó khác với cáchkhai báo hàm trong những ngônngữ lập trìnhkhác thường là “function“,hàm có thể truyền vào thamsố hoặc không, hoặc hàm có thểtrảvề giátrị nào đó hoặc không.Để trảvề giátrị nào đó trong hàm ta dùng lệnh return
Vd////////////////////////////////////////////////////////////////////////////////////
funcgreet(person: String) -> String {
let greeting = "Hello," + person+ "!"
return greeting }
về mặt ngữnghĩa là một "Bao đóng", nó gần giống với một khối lệnh trong c hoặc Object-C Closurelà mộtkhối lệnhđặc biệt, nó có
thể có 0 hoặc nhiều tham số, và có thể có kiểutrả về
Cú pháp:
{ (parameters)-> returntype in //statements
}
Vd: lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
7 Báo Cáo Thực Tập Kiều Mạnh Thắng
Trang 9Trường Cao Đăng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
nhiều lựachọn hơn khi quyết định sử dụng struct hayclass Sự khác biệt
giữa class và struct
• Type (kiểu): struct là value typecòn class là reference type.
• Inheritance (kế thừa): Struct không thể kế thừa,còn class thì có thể ( hiển nhiên -OOPmà)
• Deinitializers: Struct không cóhàm huỷ (destructor trong
java/c++), chỉcó hàm khởi tạo initializer (constructor trong
java/c++), còn Class thìcó đầy đủ
• Multiple reference (đa tham chiếu): chúng ta có thể cónhiều đối
tượng cùng thamchiếu đến 1 class instance,còn ởstruct thì không thể (vìnó là value type mà)
Vd:////////////////////////////////////////////////////////////////////////////////////////////
struct Color { let blue = UlColor.blue let red: UlColor = red
func print(){
print(“In Struct Color”) }
} class SameClass{
// properties // function
}
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
- Optional trong swift
TrongSwift, khi khởi tạo các biến, các biến này mặc định sẽ được khởi
tạo dưới dạng non-optional: tức là phải được gángiá trị mà không được
để nil(non-nil) Nếu chúng tagán giátrị nil chocácbiếnnon-optional
này, trình biên dịch sẽ thông báo lỗi
Vd:
let number = nil//compile-time error Optional trong Swift được sửdụng đểgiải quyết vấn đề này, biến optional được khởi tạobằng dấuhỏi “? sau khaibáo kiểu biến
Trang 10Trường Cao Đăng Cụng Nghệ Thủ Đức Khoa Cụng Nghệ Thụng Tin
3 Xõy Dựng ủng Dụng
Saukhi kếtthỳc ba tuần đầuhọc vềngụn ngữ Swift em cú xõy dựng một ứng
dụng game sửdụng ngụnngữ swift tờn làPokemon Battle
Ngụn ngữ lậptrỡnh: Swift
Thiết bị: Iphone
Cụng cụ phỏt triển : Xcode
Game sửdụng APIs của trang Pokộmon TCG APIstrảvề được địnhdạng JSON vàchứa cỏcthụng tin củatấm thẻ Pokemon như mỏu, lựcchiến đấu, hỡnh ảnh
Dựavào dữ liệu trảvềemxõydựng một game dựng cỏc thẻbài Pokemon
để đỏnh với mỏy
<
“carets4’ 1 ỉ
1
***** ***'tl1 a
* linagsUrl “ > ô - t
" seẩrc rpằf* i
"&tỡị>ertVPằ“ớ -ability-; ớ
"naw": "Bright • ,
•t : la>’ X ■
K
a
’artist* ,
’'rfcrity-J ‘ ",
■■ series,”: •
“set*! *■■■'■ 2-lg?' ■
* setớoốtp" : Ị
ị airý*
ỉ'
'"attacks’ớ ớ (
C 52 ớt •
ỉr
*naôe“' ĩ ’ !:Ỳ 'ớỊđằ sô
*eemwertô*ỉĩS 'CTH* &ĩit' - 5f-
I 1ằ
*ô•***•ằ•**• r
ớ
*type‘f i
“võlia**:
>
h
<
_w' ■ ■■■■ ■ ■■■•
1
)
Hỡnh 1 API của thẻ Pokemon
11 Bỏo Cỏo Thực Tập Kiều Mạnh Thắng
Trang 11Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
Find Pokemon Screen:
Hĩnh 4 Màn hĩnh tìm Pokemon
Sau khi kết thúc Splash Screen sẽ xuất hiện màn hình Find Pokemon Screen để người chơi có thể tìm các thẻ bài Pokemon yêu thích và add vào My Team Screen.
Sau khi người chơi nhập kiểu và nhấp tìm kiếm chương trình sẽ gởi yêu cầu đó theo API được cung cấp
https://api.pokemontcq.io/v1/cards?supertvpe=Pokémon&types= fire
Sau đó API sẽ trả về dữ liệu được định dạng JSON Sau đó ta có thể tách dữ liệu
từ JSON đổ vào Model.
Trang 12Trường Cao Đăng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
Khi đã đầy đủ dữ liệu ta sẽ hiện thị nó lên màn hình bàng cách sử dụng UlCollectionView.
ứxterssi00 f iiivSilC'C*ta<ViNt&cg«t«( jỉCoUctutawịfeĩaỉs,Kỉ, ưiOsUeK;sn?'esííìeịíĩtf;»»lỉỉfcỉ Ị
w wllectiwviwt wllectiorWec KKkrisnV’®, nurtoetOnttMỈnSectien section: ?:I -> ĩrt ( taro CiilWiOTn.i! 'ỉtỉí.í ta.iowt )
‘li® coUecỉiínViííl KllectiwViw vICóteỉiMỉVits, itWM àdeshỉí: ĩíằxPỉtíil -> SCừcetiỉSMiôll í let cell - ■ ■ dejaewiewseleCcHlrichSsHelanri'ier: , ta hdsỉPathỉ ss!
let card: : 'k< = íicdeíPỉĩk.ĩaỉ
«11.: sctlrsgsr:rii.i«l: &(í«ỉ»j; card .Hì
if tsi T: cd!
:::t KlliCttaWest wllectronviw: JíầlloKÌwiíiỉ, layout csllcctitiiiviotjyw: 01isll®tta;«iayw, riaforltwM Mfexfcth: Iwfchi ->"$:« 1 tars MSứíỊridtl: colie«ionVies.krw.«0tt!/2, height: csllectionVia.íĩỉaỉ.Páịhĩ/íi
CK coliKtiwiViwi cíìlectionta J’CdlhctbiiVlci, layout collectionViewLoymn: JICsItataMayta ỉíriwbterit»ổ0ỉcbịF5tỉecỉi«»t section: loti ->
CSFloat ị
taĩt Ỉ
collectisoViffii j:tclls-t»Vies, layout eollectlooviBJyost: sintatMeỉííỉinịPoĩSectititót section: loti -> SF;52t !
tats Ỉ
■ collcctioiViee' tc.lcct.orftea ỈCT, a&taltertt wdeiPath: 'CC'tj- '
:;rdt«w .
;• :: :ÌÁ
■ =e
iata'C • :?.ỉtoĩysoard?.iestasỉiíte'tìe»fefltrolleỉí»itMd«itifie:: ?ẹ'O.; Ị í$; : • ■ <
■preswiistaC, Mimed: ỉií, corpiotioc: úlí
Mồi item trong UlCollectionView là một tấm hình nên ta sử dụng UllmageView
để load tấm hình từ url được lấy từ Json.
func setlfnageFromJRKurl: JRL){
self sd.setShowActivitylndicatorViewl true)
self sd”setIndiestorStylei.white) self.sd setlnagetwith: url) }
}
15
Báo Cáo Thực Tập Kiều Mạnh Thắng
Trang 13Trường Cao Đăng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
ÍỈSActioo tiiííc diđĩapBtiAddcrỉìeíSăvei sender: An0 1
if rrosr a» g {
let contains = - contains (where: í (card) -> Êooì íỉì return == card name
;f ‘contains {
CardFi^iw^ shared,y-rei* append; on ĨĨ>W; c J rd) self disnss (animated: rue, completion: nil) k-lse{
li?;- alert ■ UlAkĩĩControlỉcrí title: "Card Existed", message; ’ it existed", preferredStylc; UĨAlertControllerStyle alert) alert add Action (ulAlertActiorự title: "íỉr, style: cancel, handler: I (action) jr.
self, dismiss (animated: tn:fcf completion: C:il5
)))
seif, present (alert, animated: true, completion: nil)
}clsc{
if frot ss 11
Ca ri Poker i.-r Sha red r^'ear resole; at : del iitePosiran]
self-dismiss (anípared: true, cospleticn: nil) myterf.mCel 1 ? reìoaổíỉatí (?
My Team Screen:
Hình 6 Mán hình các the đã chon
TRƯỜNG CAO ĐẲNG CÔNG NGh.
THƯVtr
Trang 14Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
Battle Screen:
Hình 7 Màn hình chọn thẻ đê đánh
Ở màn hình này sẽ lấy toàn hình ảnh của thẻ bài trong MY Team Screen hiện lên UlCollectionView cho người chơi lựa chọn một thẻ bài để đánh với thẻ bài mà máy chọn ra Máy sẽ chọn ngẫu nhiên trong danh sách các thẻ bài.
gctRandcraCardsToFighti H
if CarđPokesoii.shared.ollFigr.tCard.count > ?(
let randonỉĩnt = Intlarttrỉndon.unitOCTitUIntlỉlCorílPokenon.slìared.sHPiặhtCỉrd.count-l)))
cardfigm ~ CardPexmn.shered.allFightCaxdi ranctej
}clse{
//alert
1
)
19 Báo Cáo Thực Tập Kiều Mạnh Thắng
Trang 15Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
var rcsult:Rcsul*Fight ỉ
if hp 8 S l & nyHP > 0 <
result = WIN
}elsc{
if hp <= s â& myHP <= 0{
result = HATCHES
>elscT
if hp > 0 && ryHP <= 0(
result = LOSE
}else{
result = LIVE
>
>
return result
Trang 16Trường Cao Đẳng Công Nghệ Thủ Đức Khoa Công Nghệ Thông Tin
KẾT LUẬN
Trước hết em xin được cảm ơn phía NhàTrườngCĐ CôngNghệ Thủ Đức ,khoa CNTT,
thầyPhan Gia Phước GVHDTT đã tạo điều kiện để em được học tập, tiếp xúc trong môi
trường làm việc chuyênnghiệp và được thực tập đúng với nguyệnvọng củabản thân
Quakì thực tập em đã tích lũy được nhiềukinh nghiệmtrongmôi trường làm việc tại
doanh nghiệp cũng như đã học được nhiềukiến thức mới mẻ màem nghĩlà một sự chuẩn
bị rấttuyệt vời cho công việcsau này
Em xin chân thành cảm ơn!
23
Báo Cáo Thực Tập Kiều Mạnh Thắng