Download as pdf or txt
Download as pdf or txt
You are on page 1of 42

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN


KHOA HỆ THỐNG THÔNG TIN

ĐÀO VÕ TRƯỜNG GIANG

20521258 – TMĐT2020

BÁO CÁO THỰC TẬP DOANH NGHIỆP

LẬP TRÌNH ỨNG DỤNG ĐẶT PHÒNG KHÁCH SẠN

SỬ DỤNG FLUTTER

TP. Hồ Chí Minh, tháng 06 năm 2024


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HỆ THỐNG THÔNG TIN

BÁO CÁO THỰC TẬP DOANH NGHIỆP

LẬP TRÌNH ỨNG DỤNG ĐẶT PHÒNG KHÁCH SẠN


SỬ DỤNG FLUTTER

Công ty thực tập: Công ty cổ phần công nghệ Apps Cyclone


Giảng viên hướng dẫn: Văn Đức Sơn Hà
Người hướng dẫn tại công ty: Trần Trí Quốc
Sinh viên thực hiện: Đào Võ Trường Giang
MSSV: 20521258
Lớp: TMĐT 2020

TP. Hồ Chí Minh, tháng 06 năm 2024


LỜI CẢM ƠN
Đầu tiên, em xin gửi lời cảm ơn chân thành đến tất cả quý thầy cô giảng viên tại
Trường Đại học Công nghệ thông tin - Đại học Quốc Gia TP.HCM, cũng như quý thầy
cô thuộc Khoa Hệ Thống Thông Tin và bộ môn Thương Mại Điện Tử. Nhờ sự hỗ trợ và
tạo điều kiện học tập tốt nhất, em đã có cơ hội phát triển kiến thức và kỹ năng một cách
toàn diện.

Trong quá trình thực tập, em đã sử dụng kiến thức được trang bị từ nhà trường
kết hợp với việc tự nghiên cứu các công cụ và kiến thức mới. Tuy nhiên, với hạn chế về
thời gian và năng lực cũng như kinh nghiệm thực tế chưa đủ, báo cáo của em vẫn còn
một số hạn chế và có thể chứa đựng sai sót. Em hiểu rằng điều này là kết quả của sự nỗ
lực của bản thân, cùng với sự hỗ trợ từ bạn bè và thầy. Em rất biết ơn và trân trọng những
góp ý quý báu từ thầy đã giúp em hoàn thiện hơn.

Cuối cùng, em muốn gửi lời cảm ơn đến công ty Apps Cyclone vì sự hỗ trợ và
chia sẻ những kinh nghiệm quý báu trong quá trình làm việc tại công ty. Em cũng muốn
thể hiện sự biết ơn đối với các anh leader và các bạn cùng thực tập đã hỗ trợ và chỉ ra
những sai sót của em trong quá trình thực tập. Nhờ những góp ý này, em đã tích luỹ
thêm rất nhiều kinh nghiệm và kiến thức thực tiễn, giúp bổ trợ và cải thiện kỹ năng cần
thiết cho bản thân.

Một lần nữa xin gửi đến thầy cô, bạn bè và công ty lời cảm ơn chân thành và tốt
đẹp nhất!

TP Hồ Chí Minh, tháng 11, năm 2023

Sinh viên thực hiện

Đào Võ Trường Giang


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA HỆ THỐNG THÔNG TIN Độc lập – Tự do – Hạnh phúc

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Họ và tên sinh viên: Đào Võ Trường Giang

MSSV: 20521258

Công ty thực tập: Công ty cổ phần công nghệ Apps Cyclone

Thời gian thực tập: 06/09/2023 – 03/11/2023

Vị trí thực tập: Flutter Developer (Mobile)

Nhiệm vụ được giao: Lập trình giao diện ứng dụng, lập trình các chức năng cơ
bản của ứng dụng bằng Flutter

Đánh giá quá trình thực tập của sinh viên:

Các kết quả sinh viên đã thực hiện được: ........................................................................


.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................

Điểm: ................................... Bằng chữ: .........................................................................

……., ngày…..tháng …..năm ……

Giáo viên hướng dẫn


MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU ..........................................................................................1

1.1. Giới thiệu về công ty ................................................................................................1

1.1.1. Giới thiệu chung ....................................................................................................1


1.1.2. Lĩnh vực kinh doanh ..............................................................................................1
1.1.3. Sứ mệnh của công ty ..............................................................................................1
1.1.4. Khách hàng và đối tác ...........................................................................................2
1.1.5. Lịch sử hình thành và phát triển............................................................................2

1.2. Sản phẩm, dịch vụ cung cấp ...................................................................................3


1.3. Quy trình sản xuất sản phẩm của công ty ..............................................................3
1.4. Định hướng phát triển của công ty .........................................................................3

CHƯƠNG 2: KIẾN THỨC, CÔNG CỤ VÀ KỸ NĂNG ...........................................5

2.1. Kiến thức về công nghệ ...........................................................................................5

2.1.1. Kiến thức về Dart ..................................................................................................5


2.1.2. Kiến thức về Flutter ...............................................................................................6
2.1.3. Kiến thức về Firebase ............................................................................................7
2.1.4. Kiến thức về Git .....................................................................................................8

2.2. Công cụ hỗ trợ .........................................................................................................9

2.2.1. Visual Studio Code.................................................................................................9


2.2.2. Android Studio ..................................................................................................... 11
2.2.3. Figma ...................................................................................................................12
2.2.4. Gitlab ...................................................................................................................13

CHƯƠNG 3: NỘI DUNG CÔNG VIỆC THỰC TẬP .............................................15

3.1. Mô tả nội dung thực tập ........................................................................................15


3.2. Chi tiết về kỳ thực tập ............................................................................................15

3.2.1. Công việc chi tiết .................................................................................................15


3.2.2. Các task và commit khi thực tập..........................................................................18
3.2.3. Các màn hình của app đã làm .............................................................................23
3.2.4. Link Source Code: ...............................................................................................31
CHƯƠNG 4: ĐÁNH GIÁ – NHẬN XÉT ..................................................................32

4.1. Tự đánh giá ............................................................................................................32


4.2. Những điều đạt được .............................................................................................32
4.3. Hạn chế: .................................................................................................................32
4.4. Định hướng tương lai cho bản thân .....................................................................32

TÀI LIỆU THAM KHẢO ...........................................................................................34


DANH MỤC HÌNH ẢNH
Hình 1.1 Logo công ty Apps Cyclone .............................................................................1
Hình 1.2 Các khách hàng và đối tác công ty ...................................................................2
Hình 1.3 Quy trình sản xuất sản phẩm của công ty .........................................................3
Hình 2.1 Logo của Dart ...................................................................................................5
Hình 2.2 Logo của flutter ................................................................................................6
Hình 2.3 Logo của firebase .............................................................................................7
Hình 2.4 Logo của Visual Studio Code .........................................................................10
Hình 2.5 Logo của Android Studio................................................................................12
Hình 2.6 Logo của Figma ..............................................................................................13
Hình 2.7 Logo của Gitlab ..............................................................................................14
Hình 3.1 Màn hình gitlab của công ty ...........................................................................18
Hình 3.2 Task tuần 1 ......................................................................................................18
Hình 3.3 Task tuần 2 ......................................................................................................18
Hình 3.4 Task tuần 3 ......................................................................................................19
Hình 3.5 Task tuần 4 ......................................................................................................19
Hình 3.6 Task tuần 5 ......................................................................................................19
Hình 3.7 Task tuần 6 ......................................................................................................20
Hình 3.8 Task tuần 7 ......................................................................................................20
Hình 3.9 Task cho 2 tuần cuối .......................................................................................21
Hình 3.10 Minh chứng commit 1 ..................................................................................21
Hình 3.11 Minh chứng commit 2 ..................................................................................22
Hình 3.12 Minh chứng commit 3 ..................................................................................22
Hình 3.13 Minh chứng commit 4 ..................................................................................23
Hình 3.14 Màn hình chức năng xác thực.......................................................................23
Hình 3.15 Màn hình Homepage ....................................................................................24
Hình 3.16 Màn hình xem phòng ....................................................................................24
Hình 3.17 Màn hình chọn phòng ...................................................................................25
Hình 3.18 Màn hình đặt phòng và thanh toán phòng ....................................................25
Hình 3.19 Màn hình thêm thông tin chi tiết để đặt phòng.............................................26
Hình 3.20 Màn hình chọn thông tin chuyến bay ...........................................................26
Hình 3.21 Màn hình chọn chuyến bay...........................................................................27
Hình 3.22 Màn hình chọn ghế .......................................................................................27
Hình 3.23 Màn hình chi tiết vé bay ...............................................................................28
Hình 3.24 Màn hình kiểm tra thông tin và thanh toán chuyến bay ...............................28
Hình 3.25 Màn hình hiển thị địa điểm đã thích .............................................................29
Hình 3.26 Màn hình xem phòng đã đặt, chi tiết phòng đặt ...........................................29
Hình 3.27 Màn hình xem thông tin user, cài đặt ...........................................................30
Hình 3.28 Màn hình sau khi thay đổi theme, ngôn ngữ ................................................30
CHƯƠNG 1: GIỚI THIỆU

1.1. Giới thiệu về công ty

1.1.1. Giới thiệu chung

- Tên công ty: Công ty cổ phần công nghệ Apps Cyclone


- Logo công ty:

Hình 1.1 Logo công ty Apps Cyclone


- Địa chỉ công ty: 168/6 Bùi Thị Xuân, phường 3, quận Tân Bình, thành phố Hồ
Chí Minh, Việt Nam
- Quy mô công ty: 65 nhân viên
- Email: enquiry@apps-cyclone.com
- Website: appscyclone.com
- Thành lập: 27/02/2013
1.1.2. Lĩnh vực kinh doanh

Sản xuất phần mềm

1.1.3. Sứ mệnh của công ty

“Apps Cyclone tập trung vào con người – giá trị cốt lõi của doanh nghiệp – nhằm
mang đến những sản phẩm chất lượng cho khách hàng”.

Để thực hiện sứ mệnh này tập thể Cán bộ và nhân viên của Công ty luôn phấn
đấu không ngừng, nỗ lực thực hiện các mục tiêu như sau:

- Tạo ra, cung cấp, và phục vụ khách hàng với những sản phẩm và dịch vụ chất
lượng đạt tiêu chuẩn hàng đầu.
- Liên tục đào tạo và phát triển nhân viên.
- Hỗ trợ sinh viên học tập và trải ngiệm trong môi trường doanh nghiệp thực tế.

1
- Cung cấp và hỗ trợ các dịch vụ website, phần mềm, ứng dụng di động hướng mọi
người tới một xã hội công nghệ số hiện đại trong tương lai.
- Liên tục xúc tiến và mở rộng thị trường ra các nước trong và ngoài khu vực.
- Tiếp cận những công nghệ mới nhằm tạo ra các sản phẩm tốt nhất đáp ứng nhu
cầu khách hàng.

1.1.4. Khách hàng và đối tác

Hình 1.2 Các khách hàng và đối tác công ty


1.1.5. Lịch sử hình thành và phát triển

Công ty Apps Cyclone được thành lập vào ngày 27/02/2013. Ban đầu Công ty
chỉ có 6 thành viên bao gồm cả người sáng lập và các nhân viên. Thời gian đầu Công ty
đã phải trải qua rất nhiều khó khăn khi vừa thiếu thốn nhân sự vừa hạn chế về cơ sở vật
chất, song với công sức, tâm huyết và sự nỗ lực của tất cả các thành viên Apps Cyclone,
Công ty đã thực sự trở thành ngôi nhà chung dành cho các bạn trẻ năng động sáng tạo,
yêu thích và có niềm đam mê với công nghệ. Apps Cyclone đã có những bước đi vững
chắc, tự tin đồng hành cùng khách hàng để đem đến những sản phẩm tốt nhất, đáp ứng
nhu cầu phát triển của xã hội nhằm nâng cao đời sống con người.

Tháng 3/2014 Công ty đặt văn phòng làm việc tại tòa nhà PBS 6-6A, Đường D52,
Phường 12, Quận Tân Bình, TP Hồ Chí Minh. Số lượng nhân viên công ty đã tăng lên
26 người, Apps Cyclone đã bắt đầu mở rộng thị trường tìm kiếm khách hàng ra nước
ngoài. Ban đầu khách hàng của công ty chỉ là một vài đối tác trong khu vực Đông Nam

2
Á, sau đó vươn rộng ra tới Châu Mĩ, Châu Âu – chủ yếu tập trung vào các nước:
Singapore, Úc, Mĩ, Anh,…

Tháng 3/2017, Công ty chuyển địa điểm văn phòng làm việc về tòa nhà AC –
Building – do công ty xây dựng, tại địa chỉ 168/6 Bùi Thị Xuân, Phường 3, Quận Tân
Bình, Thành Phố Hồ Chí Minh. Hiện nay, Apps Cyclone vẫn tiếp tục duy trì tốc độ phát
triển, nâng số lượng nhân viên chính thức lên 65 nhân viên, đã hoàn thành hơn 1000 dự
án cho hơn 100 khách hàng.

1.2. Sản phẩm, dịch vụ cung cấp

Công ty Apps Cyclone cung cấp dịch vụ giải pháp phần mềm:
- Service:
• Outsource: thiết kế website, các ứng dụng di động theo yêu cầu của khách
hàng.
• Solution consultant: tư vấn giải pháp cho đơn vị CNTT bên ngoài.
- Product: Phát triển những sản phẩm, nền tảng của công ty như Blockchain,
Academy,…

1.3. Quy trình sản xuất sản phẩm của công ty

Hình 1.3 Quy trình sản xuất sản phẩm của công ty
1.4. Định hướng phát triển của công ty

- Mở rộng thị trường sang các quốc gia mới.


- Liên tục đào tạo, phát triển đội ngũ nhân viên trong công ty, tiếp cận những công
nghệ mới nhằm tạo ra các sản phẩm tốt nhất đáp ứng nhu cầu khách hàng.
- Giữ liên hệ tốt với nguồn khách hàng đã hợp tác trong thời gian qua.

3
- Luôn lấy chất lượng sản phẩm làm thước đo giá trị cốt lõi để đem lại sự thỏa mãn
tối đa cho khách hàng.
- Phát triển thêm nhiều sản phẩm mới ở lĩnh vực blockchain, crypto.
- Phát huy việc chung tay góp sức, sẻ chia cùng Cộng đồng, đóng góp và giúp đỡ
các tổ chức từ thiện, góp phần đem lại hạnh phúc, niềm vui cho những người kém
may mắn trong xã hội.
- Tiếp tục thực hiện hoạt động đào tạo thực tập sinh định kỳ 3 tháng/lần (dành cho
sinh viên năm cuối hoặc mới tốt nghiệp), nhằm tạo điều kiện cho sinh viên áp
dụng, củng cố những kiến thức đã học, rèn luyện tác phong, quy trình làm việc…..
và cung cấp cho thị trường IT nguồn Fresher chất lượng.

4
CHƯƠNG 2: KIẾN THỨC, CÔNG CỤ VÀ KỸ NĂNG

2.1. Kiến thức về công nghệ

2.1.1. Kiến thức về Dart

Dart là ngôn ngữ lập trình hướng đối tượng, được Google phát hành có mục đích
chung với mã nguồn mở và được ECMA chấp thuận làm tiêu chuẩn. Ngôn ngữ này được
sử dụng để xây dựng các ứng dụng web, di động trên nhiều nền tảng khác nhau. Hiện
tại, Dart hỗ trợ hầu hết các tính năng phổ biến của ngôn ngữ lập trình như lớp, giao diện,
chức năng,… tương tự những ngôn ngữ khác. Ngôn ngữ Dart được ra đời vào năm 2011
bởi Google để khắc phục một số nhược điểm của JavaScript.

Hình 2.1 Logo của Dart


Dart đóng vai trò là ngôn ngữ lập trình cơ bản cho Flutter, và được sử dụng để
xây dựng các ứng dụng di động có thể mở rộng. Do là ngôn ngữ có mục đích chung, nó
được sử dụng để xây dựng, lập trình các ứng dụng di động gốc cho iOS, Android hoặc
cho máy tính để bàn, máy chủ.

Ưu điểm và khuyết điểm của ngôn ngữ Dart:

- Ưu điểm:

• Là ngôn ngữ mở rộng, linh hoạt, tạo điều kiện tích cực cho việc biên dịch trở
nên nhanh chóng hơn.
• Có tính ổn định tốt, được sử dụng để xây dựng các ứng dụng về thời gian
thực với hiệu suất cao.
• Hỗ trợ cả biên dịch Vừa đúng lúc (JIT) và biên dịch Trước thời hạn (AOT).
• Có thể thích ứng nhanh chóng với các quy trình công việc có sự thay đổi.

- Khuyết điểm:

• Là ngôn ngữ lập trình mới nên hiện tại cộng đồng người sử dụng, hỗ trợ có
quy mô nhỏ, chưa có quá nhiều tài nguyên phục vụ cho công việc học tập.
5
• Chỉ bao gồm một lớp đối tượng duy nhất, không hỗ trợ quá trình lặp lại mã.
• Không hỗ trợ đổi tên hàm mà không thực hiện viết câu lệnh gán mới.
Các tính năng của ngôn ngữ Dart:

• Hướng đối tượng: Dart sử dụng dữ liệu dưới dạng đối tượng thay vì coi dữ liệu
là hàm hoặc logic và hỗ trợ cả các khác niệm lập trình hướng đối tượng cơ
bản.
• Không đồng bộ: Dart không có tính đồng bộ nhưng cho phép đồng thời nâng
cao. Hiểu đơn giản là bạn có thể chạy đồng thời nhiều tác vụ với Dart bằng
cách sử dụng thể độc lập (phân lập).
• Các thư viện tích hợp: Dart bao gồm các thư viện tích hợp mở rộng như Input
– Output (IO), Software Development Kit (SDK),… Bạn có thể tìm các đoạn
mã code viết sẵn trong những thư viện này và tối ưu theo mục đích của mình.
• Hỗ trợ đa nền tảng: Dart có thể hoạt động trên nhiều hệ điều hành khác nhau
Windows, Linux, macOS cũng như nhiều hệ điều hành khác bởi tính năng Máy
ảo Dart.

2.1.2. Kiến thức về Flutter

Flutter là một framework phát triển ứng dụng di động đa nền tảng (cross-platform
mobile development) được phát triển bởi Google. Nó cho phép bạn xây dựng các ứng
dụng di động đẹp và mượt mà trên nhiều nền tảng khác nhau, bao gồm iOS và Android,
bằng cách sử dụng cùng một mã nguồn. Flutter sử dụng ngôn ngữ lập trình Dart để phát
triển ứng dụng. Dart được thiết kế để tương thích tốt với Flutter và giúp xây dựng ứng
dụng một cách nhanh chóng và hiệu quả.

Hình 2.2 Logo của flutter


Ưu điểm và khuyết điểm của Flutter:
- Ưu điểm:
• Đa nền tảng: Mã nguồn Flutter có thể được chia sẻ và sử dụng trên nhiều nền
tảng, bao gồm iOS và Android, giúp tiết kiệm thời gian và công sức trong việc
phát triển ứng dụng cho các nền tảng khác nhau.
6
• Giao diện đồng nhất: Flutter cho phép bạn tạo ra giao diện người dùng đồng
nhất trên cả iOS và Android, giúp ứng dụng của bạn có cảm giác đồng đều và
chuyên nghiệp trên mọi nền tảng.
• Mã nguồn mở và miễn phí: Flutter là mã nguồn mở và miễn phí, điều này có
nghĩa bạn không cần phải trả phí cho việc sử dụng framework này.
• Hiệu suất cao: Flutter được tối ưu hóa cho hiệu suất cao, giúp ứng dụng chạy
mượt mà và đáp ứng nhanh chóng trên các thiết bị di động.
• Thư viện widget phong phú: Flutter đi kèm với một loạt thư viện widget phong
phú và đa dạng, giúp bạn xây dựng giao diện người dùng theo ý muốn.

- Khuyết điểm:
• Kích thước ứng dụng: Ứng dụng Flutter có thể có kích thước lớn hơn so với
ứng dụng được xây dựng bằng ngôn ngữ và công nghệ khác. Điều này có thể gây
tốn thời gian tải và lưu trữ.
• Chưa phổ biến như các ngôn ngữ khác: Mặc dù Flutter đang trở nên phổ biến
hơn, nhưng nó vẫn chưa được sử dụng rộng rãi bằng các công nghệ như React
Native hoặc phát triển ứng dụng nền tảng cố định.
• Tích hợp phức tạp: Một số tích hợp với hệ thống bên ngoài, như truy cập vào
các tính năng thiết bị cụ thể, có thể yêu cầu thời gian và công sức nhiều hơn.

2.1.3. Kiến thức về Firebase

Firebase Firestore là một dịch vụ cơ sở dữ liệu NoSQL thời gian thực (real-time)
được cung cấp bởi Firebase, một nền tảng phát triển ứng dụng di động và web của
Google. Firestore là một hệ thống lưu trữ dữ liệu trên đám mây, được thiết kế để dễ sử
dụng và tích hợp vào các ứng dụng di động và web một cách thuận tiện.

Hình 2.3 Logo của firebase


Ưu điểm và khuyết điểm của Flutter:

- Ưu điểm:

7
• Thời gian thực (Real-time): Firestore hỗ trợ tính năng đồng bộ dữ liệu thời gian
thực, cho phép ứng dụng cập nhật dữ liệu một cách tức thì trên tất cả các thiết bị
kết nối, giúp xây dựng các ứng dụng đa nền tảng đáng tin cậy và động hơn.
• Dễ sử dụng: Firestore có giao diện người dùng đơn giản và dễ sử dụng. Bạn có
thể bắt đầu sử dụng nó một cách nhanh chóng mà không cần kiến thức sâu về cơ
sở dữ liệu.
• Tích hợp dễ dàng: Firebase Firestore tích hợp tốt với các sản phẩm khác của
Firebase như Firebase Authentication, Firebase Cloud Functions, và Firebase
Hosting, giúp bạn xây dựng các ứng dụng phức tạp một cách dễ dàng.
• Hỗ trợ nhiều nền tảng: Firestore hỗ trợ nhiều nền tảng, bao gồm Android, iOS,
web, và cả các ngôn ngữ lập trình như Python và Node.js.
• Bảo mật: Firestore cung cấp các tính năng bảo mật mạnh mẽ, bao gồm kiểm soát
quyền truy cập dựa trên vai trò, xác thực người dùng và tích hợp với các dịch vụ
bảo mật của Firebase.
- Khuyết điểm:
• Giới hạn lưu trữ: Firestore có giới hạn lưu trữ dữ liệu trong một dự án cụ thể. Nếu
bạn cần lưu trữ một lượng lớn dữ liệu, bạn có thể phải trả thêm phí.
• Chi phí: Sử dụng Firestore có thể đắt đỏ nếu ứng dụng của bạn phải xử lý một
lượng lớn truy cập và dữ liệu.
• Hạn chế truy vấn phức tạp: Firestore hỗ trợ các truy vấn cơ bản, nhưng có thể gặp
khó khăn nếu bạn cần thực hiện các truy vấn phức tạp hoặc theo nhiều điều kiện.
• Không tùy biến cao: Firestore có một số hạn chế về tích hợp và tùy chỉnh cao cấp
so với các hệ thống cơ sở dữ liệu NoSQL truyền thống.
• Không có tích hợp ngoại vi: Firestore không hỗ trợ tích hợp ngoại vi như lưu trữ
hình ảnh hoặc tệp. Bạn cần phải sử dụng các dịch vụ khác để xử lý nhiệm vụ này.

2.1.4. Kiến thức về Git

Git là một hệ thống quản lý phiên bản phân tán (distributed version control system -
DVCS) được phát triển bởi Linus Torvalds vào năm 2005. Git cho phép bạn theo dõi và
quản lý các phiên bản của mã nguồn và các tệp trong dự án phát triển phần mềm của
bạn. Đây là một số khái niệm và tính năng quan trọng của Git:

8
- Repository (Kho): Repository là nơi lưu trữ dự án của bạn. Có hai loại
Repository: Repository cục bộ (local repository) và Repository từ xa (remote
repository). Local repository nằm trên máy tính cá nhân của bạn, trong khi remote
repository thường nằm trên máy chủ từ xa (như GitHub, GitLab, hay Bitbucket).
- Commit: Commit là một hành động trong Git để lưu trữ một phiên bản của mã
nguồn. Mỗi commit có một thông điệp giải thích những thay đổi đã được thực
hiện trong commit đó.
- Branch: Branch là một nhánh phát triển độc lập trong dự án. Bạn có thể tạo ra
nhiều branch khác nhau để làm việc trên các tính năng, sửa lỗi, hoặc thay đổi
khác mà không ảnh hưởng đến branch chính. Sau đó, bạn có thể merge (hợp nhất)
các branch lại với nhau.
- Merge: Merge là hành động kết hợp các thay đổi từ một branch vào branch khác.
Điều này thường được sử dụng để đồng bộ hóa các phiên bản đã được phát triển
độc lập trên các branch khác nhau.
- Pull: Pull là hành động để lấy dữ liệu từ remote repository về local repository,
thường được sử dụng để đồng bộ hóa các thay đổi từ remote repository mới nhất.
- Push: Push là hành động để đẩy dữ liệu từ local repository lên remote repository,
cập nhật các thay đổi đã được commit lên remote repository để tất cả thành viên
trong nhóm có thể thấy.
- Conflict (Xung đột): Xung đột xảy ra khi hai người cùng thay đổi một tệp hoặc
một phần của mã nguồn, và Git không thể tự động giải quyết xung đột. Người
dùng phải giải quyết xung đột bằng cách chỉnh sửa tệp thủ công.

Git là một công cụ quan trọng trong phát triển phần mềm, giúp quản lý mã nguồn
một cách hiệu quả, theo dõi lịch sử thay đổi, làm việc đồng thời với nhiều người, và bảo
đảm tính nhất quán của dự án. Git cũng được sử dụng rộng rãi trong cộng đồng phát
triển phần mềm và là cơ sở cho nhiều dịch vụ lưu trữ mã nguồn trực tuyến như GitHub,
GitLab và Bitbucket.

2.2. Công cụ hỗ trợ

2.2.1. Visual Studio Code

Visual Studio Code, thường được viết tắt là VSCode, là một trình soạn thảo mã nguồn
mã nguồn mở miễn phí phát triển bởi Microsoft. Nó là một trong các trình soạn thảo mã

9
nguồn phổ biến và mạnh mẽ được sử dụng rộng rãi trong cộng đồng phát triển phần
mềm. Dưới đây là một số điểm quan trọng về Visual Studio Code:

- Miễn phí và mã nguồn mở: Visual Studio Code là một sản phẩm mã nguồn mở
hoàn toàn miễn phí, có sẵn cho Windows, macOS và Linux. Bạn có thể tải và sử
dụng nó mà không cần trả bất kỳ phí nào.
- Hỗ trợ nhiều ngôn ngữ và khung làm việc: VSCode hỗ trợ nhiều ngôn ngữ lập
trình và khung làm việc (framework) khác nhau. Nó đi kèm với các tích hợp sẵn
cho Python, JavaScript, TypeScript, C++, và nhiều ngôn ngữ khác. Bạn cũng có
thể mở rộng khả năng hỗ trợ cho ngôn ngữ và khung làm việc bằng cách cài đặt
các tiện ích mở rộng (extensions).
- Mạnh mẽ và linh hoạt: Visual Studio Code cung cấp nhiều tính năng mạnh mẽ
như gợi ý mã (code completion), dò lỗi tự động (linting), dự đoán kiểu (type
checking), gỡ lỗi (debugging), kiểm soát phiên bản (version control), và nhiều
tính năng khác để giúp bạn phát triển ứng dụng hiệu quả.
- Mở rộng thông qua tiện ích mở rộng: VSCode cho phép bạn mở rộng chức
năng của nó bằng cách cài đặt các tiện ích mở rộng từ thư viện trực tuyến của nó.
Các tiện ích mở rộng giúp bạn tùy chỉnh trình soạn thảo và thêm tính năng mà
bạn cần.
- Cộng đồng phát triển lớn mạnh: Visual Studio Code có một cộng đồng phát
triển lớn, và có nhiều tài liệu, chủ đề thảo luận, và tiện ích mở rộng được phát
triển bởi cộng đồng giúp bạn giải quyết vấn đề và nâng cao kỹ năng sử dụng trình
soạn thảo này.
- Hỗ trợ tích hợp với các dự án lớn: VSCode hỗ trợ làm việc với các dự án phức
tạp và có khả năng tích hợp với các hệ thống quản lý mã nguồn như Git.

Hình 2.4 Logo của Visual Studio Code


Visual Studio Code đã trở thành một công cụ quan trọng trong phát triển phần mềm
và là lựa chọn phổ biến cho các lập trình viên trên toàn thế giới.

10
2.2.2. Android Studio

Android Studio là một môi trường phát triển tích hợp (IDE) được phát triển bởi
Google dành cho việc phát triển ứng dụng di động chạy trên nền tảng Android. Đây là
một công cụ quan trọng và mạnh mẽ cho các nhà phát triển ứng dụng Android. Một số
lợi ích của nó như:
- Miễn phí và mã nguồn mở: Android Studio là một sản phẩm mã nguồn mở và
hoàn toàn miễn phí. Bạn có thể tải và sử dụng nó mà không cần phải trả bất kỳ
phí nào.
- Tích hợp Android SDK: Android Studio đi kèm với Android SDK, bao gồm tất
cả công cụ, thư viện, và tài liệu cần thiết để phát triển ứng dụng Android.
- Giao diện người dùng thông minh: Android Studio cung cấp giao diện người
dùng thân thiện và dễ sử dụng, giúp bạn tạo ra và quản lý các dự án Android một
cách hiệu quả.
- Tạo và quản lý dự án: Android Studio cho phép bạn tạo và quản lý các dự án
Android dễ dàng. Bạn có thể chọn từ một loạt mẫu dự án hoặc bắt đầu từ đầu.
- Tự động hoàn thiện mã (Code completion): Android Studio cung cấp tính năng
gợi ý mã tự động (code completion), giúp bạn nhanh chóng viết mã và tránh sai
sót.
- Dự đoán kiểu (Type inference): IDE hỗ trợ dự đoán kiểu biến và phát hiện lỗi
kiểu dữ liệu trong quá trình phát triển.
- Mô phỏng và gỡ lỗi (Emulation and Debugging): Android Studio cung cấp bộ
công cụ mô phỏng và gỡ lỗi mạnh mẽ cho phát triển và kiểm tra ứng dụng trên
các thiết bị ảo hoặc thiết bị thật.
- Hỗ trợ phiên bản Android mới: Android Studio liên tục cập nhật để hỗ trợ các
phiên bản mới của Android và các tính năng mới như Dark Mode và đa màn hình.
- Hỗ trợ phiên bản cũ: Bạn có thể cấu hình dự án để hỗ trợ các phiên bản Android
cũ hơn, giúp đảm bảo ứng dụng của bạn hoạt động trên nhiều thiết bị khác nhau.
- Cộng đồng lớn và tài liệu đa dạng: Android Studio có một cộng đồng lớn và
phong phú, cùng với nhiều tài liệu, hướng dẫn, và tài liệu tham khảo trực tuyến
giúp bạn nắm vững việc phát triển ứng dụng Android.

11
Hình 2.5 Logo của Android Studio

Android Studio là một công cụ quan trọng cho việc phát triển ứng dụng di động
Android và là lựa chọn hàng đầu của các nhà phát triển trên toàn thế giới.

2.2.3. Figma

Figma là một ứng dụng thiết kế giao diện người dùng và hợp tác trực tuyến, được
phát triển bởi Figma, Inc. Nó được sử dụng rộng rãi trong lĩnh vực thiết kế để tạo ra các
giao diện người dùng, các bản vẽ dự án, và các mẫu thiết kế đa dạng. Figma có một số
tính năng nổi bật sau:

- Trình duyệt web dựa trên đám mây: Figma hoạt động trực tiếp trong trình
duyệt web, cho phép bạn truy cập và làm việc trên các dự án thiết kế từ bất kỳ
thiết bị nào có kết nối internet. Không cần cài đặt phần mềm cụ thể trên máy tính
của bạn.

- Hợp tác thời gian thực: Một trong những điểm mạnh của Figma là khả năng
hợp tác trực tuyến. Bạn có thể làm việc cùng với đồng nghiệp trong thời gian
thực trên cùng một dự án, thậm chí xem và chỉnh sửa đồng thời trên cùng một
thiết kế.

- Chia sẻ dự án dễ dàng: Figma cho phép bạn chia sẻ một liên kết đến bản vẽ
hoặc thiết kế với người khác, bất kể họ có tài khoản Figma hay không. Điều này
giúp bạn thu thập phản hồi từ người dùng, nhận xét từ đồng nghiệp, hoặc kiểm
tra giao diện với khách hàng một cách dễ dàng.

- Phong cách thiết kế (Design Systems): Figma hỗ trợ phong cách thiết kế, cho
phép bạn xây dựng và quản lý các hệ thống phong cách để đảm bảo tính nhất
quán trong thiết kế trên nhiều màn hình và dự án.

12
- Tương thích đa nền tảng: Figma hỗ trợ việc xuất các tài liệu thiết kế và giao
diện dưới nhiều định dạng khác nhau, bao gồm HTML/CSS, hình ảnh, hoặc tài
liệu vector.

- Hỗ trợ cho người phát triển: Figma cung cấp tích hợp với các công cụ phát
triển, cho phép bạn xuất mã nguồn CSS, hiển thị hộp thoại Inspect để kiểm tra
kích thước và thuộc tính của các yếu tố giao diện.

- Đa dạng công cụ thiết kế: Figma cung cấp nhiều công cụ để tạo ra các thành
phần giao diện, biểu đồ, hình ảnh vector, và nhiều tính năng khác giúp bạn thiết
kế giao diện đa dạng và thú vị.

Hình 2.6 Logo của Figma


Figma đã trở thành một công cụ phổ biến và quan trọng trong lĩnh vực thiết kế giao
diện người dùng, đặc biệt là trong các dự án cần tính hợp tác và sự đa dạng trong việc
thiết kế.

2.2.4. Gitlab

GitLab là một nền tảng quản lý mã nguồn, dự án và hệ thống tích hợp liên quan đến
phát triển phần mềm thông qua Internet. Được phát triển bởi GitLab Inc., nó được cung
cấp dưới dạng mã nguồn mở và phiên bản có giấy phép. Một số lợi ích của Gitlab có thể
kể đến như:

- Quản lý mã nguồn (Source Code Management): GitLab cung cấp một hệ thống
quản lý mã nguồn dựa trên Git, cho phép bạn quản lý và theo dõi mã nguồn của
dự án một cách hiệu quả.

- Quản lý dự án: Bạn có thể tạo, quản lý, và theo dõi các dự án phát triển phần
mềm trên GitLab. Mỗi dự án có thể có nhiều thành viên và nhiều tính năng quản
lý, bao gồm hệ thống lưu trữ, chỉnh sửa, cấp phép, và nhiều công cụ khác.

- Hệ thống CI/CD tích hợp (Continuous Integration and Continuous


Deployment): GitLab tích hợp hệ thống CI/CD, cho phép bạn tự động kiểm tra,
13
xây dựng và triển khai ứng dụng một cách liên tục. Điều này giúp cải thiện chất
lượng và tốc độ phát triển phần mềm.

- Wiki và hệ thống theo dõi lỗi (Issue Tracking): GitLab có tích hợp wiki và hệ
thống theo dõi lỗi để theo dõi và quản lý công việc và lỗi trong dự án.

- Phân quyền và bảo mật mạnh mẽ: GitLab cung cấp hệ thống quản lý phân
quyền mạnh mẽ, cho phép bạn kiểm soát quyền truy cập vào mã nguồn và các tài
liệu của dự án.

- Tích hợp liên quan đến DevOps: GitLab hỗ trợ tích hợp với các công cụ và dịch
vụ khác trong quá trình phát triển và triển khai ứng dụng, giúp tối ưu hóa quy
trình DevOps.

- Phiên bản mã nguồn mở và phiên bản cung cấp: GitLab có phiên bản mã
nguồn mở được gọi là GitLab Community Edition (CE) miễn phí để tự cài đặt.
Ngoài ra, có phiên bản trả phí được gọi là GitLab Enterprise Edition (EE) với
nhiều tính năng mở rộng và hỗ trợ.

- Cộng đồng và hỗ trợ mạnh mẽ: GitLab có một cộng đồng phát triển và nguồn
tài liệu đa dạng, bên cạnh dịch vụ hỗ trợ trả phí giúp bạn giải quyết các vấn đề và
triển khai GitLab trong tổ chức của bạn.

Hình 2.7 Logo của Gitlab

GitLab đã trở thành một nền tảng phát triển phần mềm quan trọng và phổ biến, được
sử dụng rộng rãi trong cộng đồng phát triển phần mềm để quản lý mã nguồn và quy trình
phát triển.

14
CHƯƠNG 3: NỘI DUNG CÔNG VIỆC THỰC TẬP

3.1. Mô tả nội dung thực tập

Tại Apps Cyclone, em được làm project về phát triển ứng dụng di động trên nền
tảng Flutter, database sẽ sử dụng Firebase Firestore, UI/UX có sẵn trên figma. Ứng dụng
được lập trình có tên là TravoApp với các chức năng chính như sau:

- Đăng nhập, đăng xuất, quên mật khẩu


- Sửa thông tin người dùng
- Xem danh sách các địa điểm, khách sạn, phòng
- Đặt phòng, xem lại danh sách phòng đã đặt, hủy phòng
- UI chức năng xem chuyến bay, đặt chuyến bay

Chức năng chính của app: Đăng ký, đăng nhập, đăng xuất, reset mật khẩu, đặt
phòng, xem phòng đã đặt, hủy phòng, đặt máy bay, đổi theme, đổi ngôn ngữ,…

Hình thức thực tập: từ 6/9/2023 – 27/10/2023 online, từ 30/10/2023 – 03/11/2023


offline.

3.2. Chi tiết về kỳ thực tập

3.2.1. Công việc chi tiết

Thời gian Nội dung thực tập

Ngày 6/9: Ôn lại và nghiên cứu thêm những kiến thức


cơ bản trong Flutter như Cupertino App, Material App,
Scaffold, Expanded, Column, Row, Wrap, Container,
Stack, ListView.
Tuần 1 (6/9/2023 –
Ngày 7/9: Nghiên cứu thêm về StatefulWidget với
8/9/2023)
StatelessWidget và vòng đời của các Widget, cách load
ảnh thông qua url, asset và svg.

Ngày 8/9: Nghiên cứu tích hợp Navigation vào app

15
Ngày 11/9: Xây dựng form trong ứng dụng trong các
màn hình đăng nhập, đăng ký, quên mật khẩu. Validate
các filed cho mối trường dữ liệu, bảo mật field mật khẩu,
thay đổi UI theo form tương ứng. Tách các widget chung
thành phần độc lập riêng để có thể tái sử dụng.

Ngày 12/9: Nghiên cứu State Management bằng Bloc


Tuần 2(11/9/2023 – Provider.
15/9/2023) – Giai đoạn Ngày 13/9: Tiến hành code để ứng dụng thay đổi theme
thực hiện làm app (Light/Dark) và thay đổi ngôn ngữ thông qua Bloc và
easy localization.

Ngày 14/9 – 15/9: Nghiên cứu sử dụng các thư viện liên
quan đến firebase trong Flutter: Authentication,
FireStore, Cloud Messaging. Liên kết ứng dụng đến
firebase để có thể đăng nhập, đăng ký và đổi mật khẩu.

Ngày 18/9: Nghiên cứu Build Realese APK cho ứng


dụng.

Ngày 19/9: Nghiên cứu cách sử dụng các API của


RxDart: BehaviorSubject, PublishSubject. Sự khác nhau
giữa các component. Ứng dụng Stream trong việc xây
dựng dữ liệu. Code home UI Screen.
Tuần 3 (18/9/2023 –
Ngày 20/9: Code màn hình chọn hotel, custom lại
22/9/2023)
Bottom Navigation Bar cho màn hình chính.

Ngày 21/9 – 22/9: Code chức năng ghi nhận thêm địa
điểm yêu thích (local), code chức năng xem chi tiết
thông tin về hotel đã chọn vào, chức năng hiển thị những
phòng của hotel đã chọn.

Code chức năng reset mật khẩu khi quên qua email,
showModelBottomBar tự động hiển thị khi vào màn
Tuần 4 (25/9/2023 – hình Hotel Detail.
29/9/2023)
Code màn hình Check Out khi đặt phòng, thêm model
để quản lý snap data từ firebase.

16
Ngày 2/10: Code chức năng thêm thông tin người dùng,
thêm mã khuyến mãi, thêm follow màn hình checkout
vào AppBar.

Ngày 3/10: Sửa lại textfield ở màn hình check out, code
để cho phép có thể nhập nhiều người dùng, sửa lỗi phone
code không đổi khi chọn quốc gia khác.
Tuần 5 (2/10/2023 –
Ngày 4/10: Thêm code để chọn ngày đi, ngày trả phòng
6/10/2023)
có điều kiện.

Ngày 5/10 – 6/10: Code chức năng check chưa thêm


thông tin liên lạc của người đặt, màn hình payment,
check chưa có card thêm vào, lưu thông tin khi đặt
phòng.

Tuần 6 (9/10/2023 –
Code khuôn màn hình UI chọn chuyến bay
13/10/2023)

Tuần 7 (16/10/2023 – Code UI màn hình chọn chuyến bay, màn hình chọn ghế
20/10/2023) trên máy bay, thêm UI các màn hình checkout flight

Tuần 8 (23/10/2023 –
Sửa UI các màn hình checkout flight
27/10/2023)

Ngày 30/10 - 31/10: Thêm data để dịch các màn hình,


hotel, flight, fix lỗi màn hình tự động load khi bấm vào
textfield tìm kiếm ở HomeScreen, chỉnh sửa để màn hình
Tuần 9 (30/10/2023 – chọn hotel chỉ hiện 8 kết quả, khi bấm load more sẽ hiện
03/11/2023) thêm 8 kết quả/mỗi lần bấm.

Ngày 1/11: Đổ dữ liệu thông tin về các phòng đã đặt và


cho phép hủy đặt phòng khi ngày hiện tại cách này
check-in không dưới 3 ngày.

17
3.2.2. Các task và commit khi thực tập

Hình 3.1 Màn hình gitlab của công ty

Hình 3.2 Task tuần 1

Hình 3.3 Task tuần 2

18
Hình 3.4 Task tuần 3

Hình 3.5 Task tuần 4

Hình 3.6 Task tuần 5


19
Hình 3.7 Task tuần 6

Hình 3.8 Task tuần 7

20
Hình 3.9 Task cho 2 tuần cuối

Hình 3.10 Minh chứng commit 1

21
Hình 3.11 Minh chứng commit 2

Hình 3.12 Minh chứng commit 3

22
Hình 3.13 Minh chứng commit 4
3.2.3. Các màn hình của app đã làm

- Chức năng đăng nhập, đăng ký, quên mật khẩu:

Hình 3.14 Màn hình chức năng xác thực

23
- Home page:

Hình 3.15 Màn hình Homepage

- Xem danh sách khách sạn, chi tiết khách sạn:

Hình 3.16 Màn hình xem phòng


24
- Xem danh sách phòng:

Hình 3.17 Màn hình chọn phòng

- Đặt phòng, thanh toán:

Hình 3.18 Màn hình đặt phòng và thanh toán phòng

25
Hình 3.19 Màn hình thêm thông tin chi tiết để đặt phòng

- Màn hình chọn thông tin chuyến bay:

Hình 3.20 Màn hình chọn thông tin chuyến bay

26
- Chọn chuyến bay:

Hình 3.21 Màn hình chọn chuyến bay

- Chọn ghế:

Hình 3.22 Màn hình chọn ghế

27
- Xem chi tiết vé:

Hình 3.23 Màn hình chi tiết vé bay

- Kiểm tra thông tin và thanh toán:

Hình 3.24 Màn hình kiểm tra thông tin và thanh toán chuyến bay

28
- Lưu địa điểm đã thích

Hình 3.25 Màn hình hiển thị địa điểm đã thích

- Danh sách phòng đã đặt, chi tiết phòng:

Hình 3.26 Màn hình xem phòng đã đặt, chi tiết phòng đặt

29
- Xem thông tin User, màn hình cài đặt:

Hình 3.27 Màn hình xem thông tin user, cài đặt

- Đổi Theme, đổi ngôn ngữ:

Hình 3.28 Màn hình sau khi thay đổi theme, ngôn ngữ

30
3.2.4. Link Source Code:

https://github.com/TruongGiang1502/travoapp.git

31
CHƯƠNG 4: ĐÁNH GIÁ – NHẬN XÉT

4.1. Tự đánh giá

- Các task được giao đã hoàn thành đúng hạn. Tuy còn thiếu nhiều kiến thức nhưng
vẫn cố gắng để học thêm.
- Cách tổ chức các folder, file, cấu trúc code trong 1 dự án chưa tốt phải cải thiện
hơn.

4.2. Những điều đạt được

- Kiến thức: Quá trình thực tập giúp em có thể đi theo hướng nghiên cứu có lộ trình
không bị lan man kiến thức. Nắm bắt được mình còn thiếu sót và cần cải thiện
những gì khi code.
- Mở rộng quan hệ: Khi thực tập em đã được gặp các anh chị/bạn bè cùng thực tập
và đặc biệt được gặp các anh ở những vị trí cao, có nhiều kinh nghiệm hướng dẫn
liên tục. Sau thực tập vẫn có thể cùng trao đổi với các anh, điều này giúp em có
thể dễ dàng học hỏi hơn sau này.
- Thực hiện được dự án cá nhân theo lộ trình bài bản.
- Trong tuần offline ở công ty em được trải nghiệm việc lên công ty, cách làm việc,
giao tiếp với các anh chị ở các bộ phận khác.

4.3. Hạn chế:

- Thiếu kinh nghiệm: Trong quá trình thực tập, em đã thấy được mình còn thiếu
nhiều kinh nghiệm trong việc thực hiện và tổ chức code 1 dự án, cách tổ chức
code và các folder chưa tốt.
- Chưa quản lý tốt thời gian dẫn đến việc bị quá tải và áp lực thời gian khi vừa học
vừa thực tập.
- Chưa được tham gia vào dự án thực tế: Do còn thiếu nhiều kinh nghiệm chuyên
môn nên chỉ được hướng dẫn tự làm dự án cá nhân và chưa được tham gia vào 1
dự án thực tế.

4.4. Định hướng tương lai cho bản thân

Trong quá trình thực tập em đã xác được định hướng phù hợp với mình trong
việc phát triển ứng dụng di động. Với những gì đã được học hỏi trong khi thực tập cùng

32
với nhận xét của những senior có kinh nghiệm em sẽ tiếp tục học hỏi, phát triển khả
năng, tiếp tục đi sâu về ngành phát triển ứng dụng trên các nền tảng di động.

33
TÀI LIỆU THAM KHẢO

[1] Flutter Document [Trực tuyến] Địa chỉ: https://docs.flutter.dev/


[2] Firebase Document [Trực tuyến] Địa chỉ: https://firebase.google.com/docs?hl=vi

Hết

34

You might also like