Tải bản đầy đủ (.pdf) (125 trang)

Mẫu báo cáo đồ án chuyên ngành, khóa luận tốt nghiệp công nghệ thông tin

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.35 MB, 125 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH

TRIỂN KHAI WEBSITE THƯƠNG MẠI
ĐIỆN TỬ SỬ DỤNG CÔNG NGHỆ DOCKER

Giảng viên hướng dẫn: ThS. Thái Huy Tân
Sinh viên thực hiện:
Trần Trung Tiến

- 15520891

Nguyễn Hoài Thanh Ngọc - 15520915
Nghiêm Quang Trung

- 15520943

Phạm Nhật Trường

- 15520953

Thành phố Hồ Chí Minh, Tháng 6/2019


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

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


KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH

TRIỂN KHAI WEBSITE THƯƠNG
MẠI ĐIỆN TỬ SỬ DỤNG CÔNG NGHỆ
DOCKER

Giảng viên hướng dẫn: ThS.Thái Huy Tân
Sinh viên thực hiện:
Trần Trung Tiến
- 15520891
Nguyễn Hoài Thanh Ngọc - 15520915
Nghiêm Quang Trung
- 15520943
Phạm Nhật Trường
- 15520953

Thành phố Hồ Chí Minh, Tháng 6/2019

1


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc


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

NHẬN XÉT ĐỒ ÁN CHUYÊN NGÀNH CỦA
CÁN BỘ HƯỚNG DẪN
Tên đề tài:
TRIỂN KHAI WEBSITE THƯƠNG MẠI ĐIỆN TỬ SỬ DỤNG
CÔNG NGHỆ DOCKER
Cán bộ hướng dẫn:

Nhóm SV thực hiện:
Phạm Nhật Trường

- 15520953

Trần trung Tiến

- 15520891

Nghiêm Quang Trung

- 15520943

ThS. Thái Huy Tân

Nguyễn Hoài Thanh Ngọc - 15520915
Đánh giá đồ án:
1. Về cuốn báo cáo :
Số trang

Số chương


Số bảng số liệu

Số hình vẽ

Số tài liệu tham khảo

Sản phẩm

Một số nhận xét về hình thức cuốn báo cáo :
2. Về nội dung nghiên cứu :

3. Về chương trình ứng dụng :

2


4. Về thái độ làm việc của sinh viên :
Đánh giá chung:
Điểm từng sinh viên:

Người nhận xét

Trần Trung Tiến

:

/10

Nguyễn Hoài Thanh Ngọc


:

/10

Phạm Nhật Trường

:

/10

Nghiêm Quang Trung

:

/10

(Ký tên và ghi rõ họ tên)

3


LỜI CẢM ƠN
Đầu tiên, với tất cả lòng biết ơn và sự kính trọng, chúng tôi xin trân trọng cảm ơn
quý thầy, cô khoa Mạng máy tính và Truyền thông, cũng như các thầy, cô đang công tác
tại trường Đại học Công nghệ Thông tin – ĐHQG-HCM đã dùng tất cả tri thức và tâm
huyết để truyền đạt những kiến thức, kinh nghiệm quý báu cho chúng tôi trong suốt quá
trình học tập và rèn luyện tại ngôi trường này.
Đặc biệt, chúng tôi xin gửi lời tri ân chân thành và sâu sắc đến Ths. Thái Huy
Tân – người thầy hướng dẫn đã hết sức tận tâm, nhiệt tình hỗ trợ và hết lòng giúp đỡ

cho nhóm chúng tôi trong suốt quá trình thực hiện khóa luận tốt nghiệp. Những định
hướng, bổ sung, góp ý của thầy là nguồn cảm hứng và nền tảng cơ sở góp phần giúp
chúng tôi có những nghiên cứu đúng đắn, đạt được kết quả tốt nhất trong việc xây
dựng, phát triển ứng dụng và hoàn thiện đồ án chuyên ngành.
Tiếp theo, chúng tôi xin được phép gửi lời cảm ơn đặc biệt đến gia đình và người
thân. Gia đình luôn là chỗ dựa tinh thần vững chắc, là nguồn động lực lớn giúp chúng tôi
vượt qua mọi khó khăn, phấn đấu hoàn thành tốt đồ án chuyên ngành này.
Cuối cùng, nhóm chúng tôi xin gửi lời cảm ơn đến các anh, chị và các bạn sinh
viên trường Đại học Công nghệ Thông tin đã nhiệt tình hỗ trợ, chia sẻ ý kiến, góp ý giúp
chúng tôi trong suốt thời gian thực hiện khóa luận.
Một lần nữa, chúng tôi xin chân thành cảm ơn và xin gửi lời chúc sức khỏe đến
quý thầy, cô. Kính chúc khoa Mạng máy tính và Truyền thông ngày càng phát triển và
thành công trong sự nghiệp “chèo đò” cao quý.
TP. Hồ Chí Minh, ngày 10 tháng 6 năm 2019
Nhóm tác giả

4


TÓM TẮT ĐỒ ÁN
Đồ án chuyên ngành với đề tài Xây dựng website thương mại điện tử sử dụng
công nghệ Docker - Implements Ecommerce system in Docker (IESD) được thực hiện
dựa trên các công nghệ và framework trong việc thiết kế các ứng dụng web Single
page Application (SPA) giúp nâng cao trải nghiệm người dùng.
Thương mại điện tử đang ngày càng phát triển, nhu cầu mua sắm online của
người dùng cũng tăng cao. Bên cạnh đó, việc mua sắm online cũng đặt ra nhiều vấn đề
cho cả người bán lẫn người mua. Đối với bên bán hàng, việc quản lí và phân chia đơn
hàng để giao rất tốn thời gian và công sức. Còn người mua thì có thể phải chờ đợi đơn
hàng của mình được giao quá lâu dẫn đến trải nghiệm người dùng không tốt. Chính
điều này là lí do để nhóm chúng tôi đưa ra ý tưởng xây dựng một website thương mại

điện tử có tích hợp việc gom nhóm đơn hàng để hỗ trợ việc vận chuyển được nhanh
hơn trên nền tảng Docker.
Giải pháp mà nhóm đưa ra là sử dụng các thuật toán K-mean để gom nhóm các
đơn hàng nằm trong một cụm lại với nhau và đưa ra đường đi ngắn nhất. Các công
nghệ, kĩ thuật và thư viện được áp dụng trong web là Sails.js, MongoDB, Angular,
Docker, REST, Firebase và Google API vào xây dựng và phát triển.
Website có thiết kế là một trang web bán điện thoại có các chức năng như quản
lý tài khoản, quản lý đơn hàng, danh mục sản phẩm, thanh toán trực tuyến, quản lý
admin, …. Và đặc biệt là tính năng gom nhóm đơn hàng.
TP. Hồ Chí Minh, ngày 10 tháng 6 năm 2019
Nhóm tác giả

5


MỤC LỤC
Chương 1. Tổng quan đề tài
1.1. Tên đề tài
1.2. Đặt vấn đề
1.3. Tìm hiểu các ứng dụng hiện nay
1.4. Mục tiêu của đề tài
1.5. Đối tượng và phạm vi nghiên cứu
1.5.1 Đối tượng nghiên cứu
1.5.2. Phạm vi nghiên cứu
1.5.3. Phương pháp nghiên cứu
1.5.4. Cấu trúc đồ án

15

Chương 2. Cơ sở lý thuyết

2.1. Sails.js
2.1.1. Giới thiệu về Sails.js [1]
2.1.2. Tại sao nên sử dụng Sails.js
2.1.3. Áp dụng Sails.js vào xây dựng trang web TWEML
2.2. MongoDB cloud [2]
2.2.1. Giới thiệu về MongoDB
2.2.2. Tại sao nên sử dụng mongoDB [3]
2.2.3. Áp dụng mongoDB vào xây dựng trang web TWEML
2.3 Angular [3]
2.3.1. Giới thiệu về Angular
2.3.2. Tại sao nên sử dụng Angular
2.3.3. Áp dụng Angular vào xây dựng trang web TWEML
2.4 Docker [4]
2.4.1. Giới thiệu về Docker
2.4.2. Tại sao nên sử dụng Docker
2.4.3. Áp dụng Docker vào xây dựng trang web TWEML
2.5. Google API [5]
2.5.1. Giới thiệu về Google API
2.5.2. Tại sao nên sử dụng Google Api
2.5.3. Áp dụng Google Api vào trang web TWEML
2.6. Firebase Storage [6]

20

15
15
16
17
18
18

19
19
19

20
20
21
22
23
23
24
24
25
25
26
27
27
27
28
29
29
29
30
31
31

6


2.6.1. Giới thiệu về Firebase Storage

2.6.2. Tại sao nên sử dụng Firebase Storage
2.6.3. Áp dụng Firebase vào xây dựng trang web TWEML
2.7. REST [7]
2.7.1. Giới thiệu về REST
2.7.2. Tại sao nên sử dụng REST
2.7.3. Áp dụng REST vào xây dựng web TWEML

31
32
33
33
33
34
35

Chương 3. Phân tích và thiết kế hệ thống
3.1. Kiến trúc hệ thống
3.2. Mô hình phân rã chức năng
3.3. Mô hình Usecase
3.3.1 Mô hình
3.3.2. Mô tả từng chức năng
3.3.2.1.Chức năng Đăng ký, đăng nhập, quên mật khẩu, đăng xuất
3.3.2.2. Các chức năng trong trang cá nhân
3.3.2.3. Các chức năng xem thông tin sản phẩm
3.3.2.4. Chức năng đặt hàng và thanh toán sản phẩm
3.3.2.5. Chức năng tìm kiếm sản phẩm
3.3.2.6. Chức năng quản lý sản phẩm
3.3.2.7. Chức năng quản lý người dùng
3.3.2.8. Chức năng quản lý danh mục sản phẩm
3.3.2.9.Chức năng quản lý đơn hàng

3.4. Mô hình luồng dữ liệu
3.5. Biểu đồ sequence diagram
3.5.1. Quản lý user
3.5.2. Thanh toán đơn hàng
3.5.3. Quản lý đơn hàng
3.5.4. Quản lý sản phẩm
3.5.5. Thống kê
3.5.6. Tìm kiếm sản phẩm
3.5.7. Đăng ký, đăng nhập, reset mật khẩu, đăng xuất.
3.6. Thiết kế cơ sở dữ liệu
3.6.1. Mô hình thực thể kết hợp (ERD)
3.6.2. Hệ thống cơ sở dữ liệu
3.7. Tổng kết

36

Chương 4. Hiện thực trang web TWEML

86

36
37
38
38
45
45
47
49
50
52

53
55
58
60
62
64
64
66
67
68
70
71
72
74
74
78
86

7


4.1. Tổng quan về trang web
4.2. Đặc tả giao diện người dùng
4.2.1 Giao diện đăng nhập
4.2.2 Giao diện đăng ký
4.2.3 Giao diện chính của trang web
4.2.4 Nội dung trang chủ
4.2.5 Nội dung trang hiển thị sản phẩm theo từng loại.
4.2.6 Thông tin tóm tắt của từng sản phẩm
4.2.7 Thông tin chi tiết của sản phẩm

4.2.8 Giao diện giỏ hàng
4.2.9 Quá trình đặt mua sản phẩm
4.2.10 Thông tin tài khoản:
4.3 Đặc tả giao diện quản lý hệ thống của admin
4.3.1 Thanh thông tin
4.3.2 Giao diện dashboard
4.3.3. Giao diện quản lý người dùng
4.3.3.1 Giao diện danh sách người dùng
4.3.3.2 Giao diện thêm người dùng.
4.3.3.3 Giao diện sửa thông tin người dùng.
4.3.4. Giao diện quản lý sản phẩm
4.3.4.1 Giao diện xem sản phẩm
4.3.4.2 Giao diện thêm sản phẩm mới.
4.3.4.3 Giao diện sửa thông tin sản phẩm.
4.3.5. Giao diện quản lý đơn hàng
4.3.6. Giao diện quản lý loại sản phẩm
4.3.7 Giao diện quản lý giao hàng.
Chương 5. Kết luận và hướng phát triển
5.1. Kết luận
5.1.1. Ưu điểm
5.1.2. Nhược điểm

86
86
86
90
92
93
94
97

98
99
100
104
108
108
108
110
110
111
111
112
113
114
115
116
119
120
121
121
121
122

8


DANH MỤC HÌNH VẼ
Hình 1.1. Ảnh chụp màn hình giao diện trang web Shopee

16


Hình 1.2 Giao diện quản lí đơn hàng của bên vận chuyển nhanh.vn

17

Hình 2.1. Tính năng của Sails.js

21

Hình 2.2 Tính năng của MongoDB

23

Hình 2.3. Tính năng của Angular

26

Hình 2.4. Tính năng của Docker

28

Hình 2.5. Chức năng Google Maps Api

30

Hình 2.6. Lợi ích khi sử dụng Firebase

32

Hình 2.7. Thiết kế của RESTful API


35

Hình 4.1. Giao diện đăng nhập

87

Hình 4.2. Giao diện form đăng nhập

87

Hình 4.3. Thông báo yêu cầu kích hoạt tài khoản

89

Hình 4.4. Giao diện form Forgot Password

90

Hình 4.5. Giao diện Đăng ký

91

Hình 4.6 Giao diện header trái (1) và phải (2)

92

Hình 4.7. Giao diện Footer của trang web.

93


Hình 4.8. Sản phẩm được hiển theo từng loại (Điện thoại).

94

Hình 4.9. Danh sách sản phẩm theo loại sản phẩm (Điện thoại).

95

Hình 4.10 Thông tin tóm tắt của sản phẩm

97

Hình 4.11 Thông tin chi tiết sản phẩm

98

Hình 4.12 Đánh giá sản phẩm

98

Hình 4.13 Nội dung giỏ hàng

99

Hình 4.14 Thông tin đơn hàng

101

Hình 4.15 Hình thức giao hàng và thanh toán.


102

Hình 4.16 Thông tin khách hàng cần giao hàng.

103

9


Hình 4.17 Thông tin hóa đơn

104

Hình 4.18 Các nút thao tác thay đổi nội dung hiển thị của trang cá nhân

105

Hình 4.19 Thông tin tài khoản.

106

Hình 4.20 Danh sách các đơn đặt hàng

107

Hình 4.21 Thanh thông tin

108


Hình 4.22 Các thống kê của hệ thống

109

Hình 4.23 Danh sách hóa đơn mới nhất, top sản phẩm bán chạy.

109

Hình 4.24 Giao diện danh sách người dùng

110

Hình 4.25 Giao diện thêm người dùng.

111

Hình 4.26 Giao diện sửa đổi thông tin người dùng.

112

Hình 4.27 Giao diện xem sản phẩm.

113

Hình 4.28 Giao diện thêm sản phẩm.

114

Hình 4.29 Giao diện sửa sản phẩm.


115

Hình 4.30 Giao diện danh sách ảnh sản phẩm

115

Hình 4.31.a, 4.31.b Bảng thông tin đơn hàng.

117

Hình 4.32 Nút thao tác đơn hàng.

118

Hình 4.33.a, 4.33.b Thay đổi trạng thái đơn hàng.

119

Hình 4.34 Thông tin loại sản phẩm.

119

Hình 4.35 Form sửa thông tin loại sản phẩm.

120

Hình 4.36 Tuyến đường giao hàng.

120


10


DANH MỤC SƠ ĐỒ
Sơ đồ 3.1. Sơ đồ kiến trúc hệ thống

36

Sơ đồ 3.2.1 phân rã chức năng web bán hàng

37

Sơ đồ 3.2.2 phân rã chức năng web admin

38

Sơ đồ 3.3.1 Mô hình Usecase cho client

39

Sơ đồ 3.3.2 Mô hình Usecase cho ADMIN

40

Sơ đồ 3.4.1. Sơ đồ luồng dữ liệu client

62

Sơ đồ 3.4.2. Sơ đồ luồng dữ liệu admin


63

Sơ đồ 3.5.1 Sơ đồ sequence diagram - chức năng quản lý user

64

Sơ đồ 3.5.2. Sơ đồ sequence diagram - chức năng thanh toán đơn hàng 66
Sơ đồ 3.5.3. Sơ đồ sequence diagram - chức năng quản lý đơn hàng

67

Sơ đồ 3.5.4. Sơ đồ sequence diagram - chức năng quản lý sản phẩm

68

Sơ đồ 3.5.5. Sơ đồ sequence diagram - chức năng thống kê

70

Sơ đồ 3.5.6. Sơ đồ sequence diagram - chức năng tìm kiếm sản phẩm

71

Sơ đồ 3.5.7. Sơ đồ sequence diagram - chức năng đăng ký, đăng nhập, reset
mật khẩu, đăng xuất.

72

11



DANH MỤC BẢNG BIỂU
Bảng 3.1. Hiện thực hóa sơ đồ Usecase cho client

40

Bảng 3.2. Hiện thực hóa sơ đồ Usecase cho admin

42

Bảng 3.3. Mô tả chức năng Đăng ký, đăng nhập, quên mật khẩu, đăng xuất 45
Bảng 3.4. Mô tả chức năng trang cá nhân

47

Bảng 3.5 Mô tả chức năng xem thông tin sản phẩm

49

Bảng 3.6 Mô tả chức năng đặt hàng và thanh toán sản phẩm

50

Bảng 3.7 Mô tả chức năng tìm kiếm sản phẩm

52

Bảng 3.8. Mô tả chức năng quản lý sản phẩm của admin

53


Bảng 3.9. Mô tả chức năng quản lý người dùng

55

Bảng 3.10 Mô tả chức năng quản lý danh mục sản phẩm

58

Bảng 3.11. Mô tả chức năng quản lý đơn hàng

60

Bảng 3.12 Cơ sở dữ liệu trong hệ thống

78

12


DANH MỤC TỪ VIẾT TẮT
STT

Từ

Viết tắt của

1

TWEML


Tien’s Web Machine Learning

2

IESD

3

API

Application Programming Interface

4

REST

Representation State Stranfer

5

SPA

Implements Ecommerce system in Docker

Single page Application

13



MỞ ĐẦU
Trong thời đại công nghệ 4.0, số lượng các ứng dụng, các sản phẩm công nghệ
phục vụ con người bùng nổ mạnh mẽ hơn bao giờ hết. Đi kèm với đó, nhu cầu của
khách hàng về việc mua sắm hàng hóa, vật dụng hay thậm chí là đồ ăn thức uống dù
đang ở bất kì đâu ngày một tăng cao. Những ngành thuộc lĩnh vực thương mại điện tử
đang càng ngày càng mở rộng để cung cấp dịch vụ cho khách hàng một cách hiệu quả
nhất.
Để cửa hàng của mình được biết đến rộng rãi và được khách hàng tin dùng, một
yếu tố cực kì quan trọng đó là nắm bắt ấn tượng ban đầu của khách hàng. Tốc độ lan
truyền tin tức trên Internet bây giờ có thể ví như tốc độ của một cái chớp mắt, chỉ với
một bình luận trong bài viết, hoặc 5 giây quảng cáo khi chúng ta đang xem Youtube,
hay chỉ là một cú click chuột đều đã đủ để đưa tên tuổi của cửa hàng vào mắt người
dùng. Do đó, một trang web chứa đầy đủ thông tin về cửa hàng và thông tin về tất cả
các mặt hàng trong kho, là vô cùng cần thiết. Nhưng vấn đề đối với đại đa số chủ cửa
hàng hiện nay chính là việc quản lý đơn hàng và tạo sản phẩm rất khó khăn.
TWEML (Tien’s web machine learning) với giao diện chính là một website bán
hàng đơn giản và có đầy đủ các chức năng cơ bản của một website thương mại điện tử
hiện nay sẽ cung cấp cái giải pháp cho người bán hàng quản lí hiệu quả hơn và người
mua sẽ có trải nghiệm tốt nhất.
Với mục tiêu đó, đối tượng TWEML hướng đến không chỉ là các doanh nghiệp
lớn, mà còn là những chủ cửa hàng nhỏ lẻ. Sự tiện dụng và đơn giản mà TWEML
mang lại có thể giúp chủ cửa hàng có thể quản lý và giảm thiểu chi phí giao hàng của
mình với quãng đường ngắn nhất.

14


Chương 1. Tổng quan đề tài
1.1. Tên đề tài
TRIỂN KHAI WEBSITE THƯƠNG MẠI ĐIỆN TỬ SỬ DỤNG CÔNG NGHỆ

DOCKER
IMPLEMENT ECOMMERCE IN DOCKER

1.2. Đặt vấn đề
Nhu cầu mua sắm là một nhu cầu cấp thiết hàng ngày của con người. Tuy nhiên,
khi xã hội ngày càng tiến bộ, đời sống vật chất được cải thiện. Đồng nghĩa với việc nhu
cầu ấy sẽ được nâng lên một mức cao hơn. Con người dần quan tâm nhiều hơn vào
việc “Mình sẽ mua gì ? “, “Thời gian giao hàng có lâu không”, “Hàng hóa có được đảm
bảo không ? “. Đa phần các các trang web bán hàng hiện nay sau khi người dùng lựa
chọn sản phẩm, tiến hành đặt hàng, người bán sẽ quản lý được đơn hàng đó và
chuyển hàng cho bên vận chuyển tiếp nhận và sắp xếp lộ trình giao hàng. Như vậy vấn
đề ở chỗ chủ cửa hàng phải phụ thuộc quá nhiều vào bên thứ ba, làm tăng chi phí vận
chuyển, giảm đi lợi nhuận. Khách hàng có thể phải chờ đợi lâu hơn dẫn đến trải nghiệm
và đánh giá không tốt về cửa hàng.
Hãy cùng lướt qua các trang thương mại điện tử lớn ở nước ta như Tiki, Lazada,
Shopee, ... Đây đều là những ông lớn đã quá quen thuộc với mọi người, tuy nhiên đây
đều là những công ty, tập đoàn lớn họ có vốn và công nghệ lớn mạnh để quản lí mọi
giai đoạn từ đơn hàng, sản phẩm cho đến vận chuyển. Còn đối với những trang web
bán hàng cho các cá nhân và công ty nhỏ, việc phải quản lí đơn hàng ,chăm sóc khách
hàng và quản lí việc vận chuyển sao cho nhanh nhất và tiết kiệm nhất là một điều rất
khó khăn.
Những yêu cầu đó đã đưa nhóm chúng tôi đến ý tưởng xây dựng một trang web
bán hàng dựa trên các nền tảng công nghệ mới tiện lợi nhất, giúp giải quyết các vấn đề

15


phát sinh trong việc quản lí và hỗ trợ người bán lẫn người mua những trải nghiệm tiện
lợi nhất. Việc cho người quản lí có thể xây dựng lộ trình đường đi vận chuyển cho các
đơn hàng là một ý tưởng mới và chưa có nhiều ứng dụng tích hợp cả hai phương diện

này với nhau. Nên đây có thể xem như một trang web thử nghiệm để cho người quản
trị có thể chủ động trong việc kinh doanh, tự chủ các quy trình bán hàng mà không cần
phụ thuộc quá nhiều vào bên vận chuyển giúp tăng cao lãi suất, tiết kiệm chi phí.

1.3. Tìm hiểu các ứng dụng hiện nay
Trong thực tế, các trang web thương mại điện tử đang được khai thác rất mạnh
mẽ và hiệu quả. Trong số đó, các trang web nổi tiếng như Tiki, Shopee, Lazada được
biết đến như những ứng dụng phổ biến hàng đầu cho phép người dùng có thể tìm
kiếm, mua sắm, và hợp tác với trang thương mại để bán các sản phẩm của mình. Tuy
nhiên việc sử dụng Shopee, Lazada hay hầu hết các trang thương mại điện tử hiện có
trên thị trường thường rất phức tạp, người bán phải đáp ứng các quy định và điều
khoản của trang, phải chuyển đơn hàng cho trang chủ trước xuất hóa đơn, kiểm duyệt
trước khi chuyển đến khách hàng. Người mua cũng sẽ rất khó lựa chọn sản phẩm trên
các trang này vì có quá nhiều sản phẩm giống nhau nhưng giá cả, chất lượng lại khác
nhau do đến từ nhiều người bán khác nhau.

16


Hình 1.1. Ảnh chụp màn hình giao diện trang web Shopee
Bên cạnh các trang web thương mại điện tử thì việc quản lí đơn hàng và sản
phẩm người bán còn phải theo dõi trang web của đối tác vận chuyển. Hầu hết các nhà
cung cấp phương thức vận chuyển hiện nay như Giao hàng nhanh, VnPost, … đều
cung cấp giao diện cho người gửi theo dõi đơn hàng của họ. Tuy nhiên việc vừa phải
theo dõi bên kênh bán hàng, vừa phải xem bên dịch vụ vận chuyển như thế nào gây ra
khá nhiều rắc rối và phức tạp, chưa kể đến tính tự chủ của người bán lẫn người mua
đều bị động.

Hình 1.2 Giao diện quản lí đơn hàng của bên vận chuyển nhanh.vn


1.4. Mục tiêu của đề tài
Xây dựng trang web thương mại điện tử sử dụng framework Angular và công
nghệ Docker với những mục tiêu cụ thể như sau:
● Tạo ra trang web thương mại điện tử với đầy đủ các tính năng cơ bản cho
người bán lẫn người mua. Là một trang web chuyên bán về điện thoại với
nhiều loại sản phẩm khác nhau của nhiều hãng.

17


● Trang web cung cấp đầy đủ các tính năng như đăng ký, đăng nhập, quên mật
khẩu, xác thực qua mail, đặt hàng, quản lý profile và trang admin.
● Trang web cung cấp tính năng đặc biệt như biểu đồ thống kê sản phẩm, đơn
hàng đã bán. Cho phép tạo lộ trình đi ngắn nhất cho shipper để rút ngắn thời
gian giao hàng và tiết kiệm chi phí.
● Trang web có server riêng để đáp ứng các nhu cầu của nhiều user, admin.
Database được đặt trên cloud tách biệt với các phần khác.
● Giao diện được thiết kế theo kiểu client side giúp giảm thiểu gánh nặng trên
server.

1.5. Đối tượng và phạm vi nghiên cứu
1.5.1 Đối tượng nghiên cứu
Đồ án chuyên ngành này hướng đến việc nghiên cứu các đối tượng sau :
● Nghiên cứu và tìm hiểu về các trang thương mại điện tử hiện nay như
Lazada, Tiki, Shoppe,.....
● Nghiên cứu về yêu cầu và kỹ thuật để xây dựng nên một trang web
Angular.
● Nghiên cứu về Sailsjs để xây dựng nên backend cho trang web.
● Tìm hiểu về REST API để hỗ trợ việc giao tiếp giữa Back-End và
Front-End.

● Nghiên cứu về công nghệ, cơ chế hoạt động và ứng dụng của
Node.js, hệ quản trị cở sở dữ liệu MongoDb, Google Firebase
Storage trong việc xây dựng server và quản lý, lưu trữ cơ sở dữ liệu
cho ứng dụng.
● Nghiên cứu ứng dụng các kỹ thuật, thư viện hỗ trợ thiết kế giao diện
ứng dụng phù hợp với xu hướng thiết kế hiện tại trên thị trường.

18


1.5.2. Phạm vi nghiên cứu
Đồ án được nghiên cứu và xây dựng trên nền tảng Framework Angular
7.2, Bootstrap 4, Sailsjs 1.1. Đồ án được nghiên cứu và chạy thử ở quy mô nhỏ
và định hướng sẽ phát triển lên thành đồ án tốt nghiệp.

1.5.3. Phương pháp nghiên cứu
Đồ án sử dụng các phương pháp nghiên cứu hướng đến thực tiễn để
phát triển và hoàn thiện ứng dụng:
● Phân tích, tham khảo các trang web thương mại điện tử lớn, tập trung
vào các điểm chung giữa các trang web để dựa vào đó phát triển ý
tưởng.
● Thu thập thông tin, tìm hiểu và nghiên cứu về các kỹ thuật, công
nghệ, thư viện cần thiết sẽ hỗ trợ xây dựng và phát triển đề tài.
● Xây dựng ứng dụng, kiểm thử nhiều lần với các trường hợp giả định
và quy mô khác nhau.
● Tự đánh giá và so sánh kết quả đạt được với các mục tiêu đề ra ban
đầu. Điều chỉnh, khắc phục các khuyết điểm và phát huy các ưu điểm.
● Hoàn thiện ứng dụng và đưa vào kiểm thử trong thực tế, tiến hành
khảo sát, thu thập ý kiến, đánh giá của người dùng.


1.5.4. Cấu trúc đồ án
Trong bài báo cáo này, chúng tôi xin được trình bày về những kiến thức,
cơ sở lý thuyết mà chúng tôi đã nghiên cứu và áp dụng. Cũng như những phân
tích, đánh giá của nhóm trong quá trình làm việc, xây dựng và phát triển trang
web TWEML. Báo cáo đồ án này được trình bày với cấu trúc như sau:
● Chương 1 : Giới thiệu tổng quan về đề tài nghiên cứu, các vấn đề cần
giải quyết, mục đích nghiên cứu, phạm vi nghiên cứu và phương
pháp nghiên cứu

19


● Chương 2 : Giới thiệu các kỹ thuật, công nghệ, các thư viện cần thiết
đã nghiên cứu, tìm hiểu và áp dụng vào việc xây dựng và phát triển
đề tài.
● Chương 3 : Đề ra các đặc tả yêu cầu phân tích thiết kế hệ thống, thiết
kế kiến trúc và các mô hình cần thiết cho toàn bộ hệ thống.
● Chương 4 : Trình bày việc hiện thực các thiết kế được xây dựng từ
chương 3, hiện thực và giới thiệu giao diện ứng dụng, minh họa cách
thức hoạt động thực tế của ứng dụng.
● Chương 5 : Tổng kết đồ án, nêu lên ý nghĩa đồ án, trình bày những
mặt tích cực đã đạt được cũng như nhìn nhận, đánh giá về những
hạn chế còn tồn đọng. Từ đó đưa ra cách giải quyết, hướng phát triển
tiếp theo cho trang web TWEML.

Chương 2. Cơ sở lý thuyết
2.1. Sails.js
2.1.1. Giới thiệu về Sails.js [1]
Sails (hay Sails.js) là một web framework được viết trên nền Node.js cho
phép lập trình viên dễ dàng tạo các ứng dụng web backend chạy trên server

(dựa trên Node.js).
Sails không thay thế Node.js, trên thực tế ứng dụng web tạo bởi Sails
được chạy dựa trên nền tảng Node.js. Máy tính (hoặc máy chủ) cần phải có
Node.js để có thể chạy ứng dụng tạo bởi Sails.js.
Sails.js hỗ trợ việc tạo các ứng dụng web theo thiết kế RESTful API một
cách nhanh chóng và đơn giản. Giống với các web framework khác Sails cũng
hỗ trợ mô hình MVC và với tính năng Object Mapper giúp việc quản lý dữ liệu
(Sails hỗ trợ cả NoSQL và SQL) dễ dàng hơn bao giờ hết. Việc xử lý cookie và
session để thực hiện việc xác thực người dùng cũng rất đơn giản trong Sails.js.

20


Ngoài ra, Sails còn cung cấp rất nhiều tính năng hữu dụng khác giúp bạn
có thể xây dựng một ứng dụng web từ đơn giản tới phức tạp một cách nhanh
chóng. Bạn sẽ thấy được điều này khi thao tác trên cửa sổ dòng lệnh sử dụng
Sails.js ở các bài học tiếp theo.
Phiên bản đầu tiên của Sails.js được cho ra mắt công chúng vào năm
2012 và là phần mềm mã nguồn mở miễn phí được phát hành dưới giấy phép
MIT.

Hình 2.1. Tính năng của Sails.js

2.1.2. Tại sao nên sử dụng Sails.js
Một số đặc điểm quan trọng giúp Sails.js trở nên rất đáng để nghiên cứu
sử dụng đó là:
● Sails.js kế thừa mô hình MVC (Model-View-Controller), cơ chế hoạt
động khá giống các Framework của PHP như Laravel,…

21



● Sails.js được tích hợp Socket.io, cực kỳ thích hợp cho ứng dụng chat
hoặc trò chơi trực tuyến.
● Sails.js được viết hoàn toàn bằng javascript. Xây dựng trên Sails có
nghĩa là ứng dụng của bạn được viết hoàn toàn bằng JavaScript,
ngôn ngữ mà bạn và nhóm của bạn đã sử dụng trong trình duyệt.
● Sails bundles là một ORM mạnh mẽ, cung cấp lớp truy cập dữ liệu
đơn giản để làm việc, bất kể bạn đang sử dụng cơ sở dữ liệu nào.
● Sails đi kèm với bản thiết kế giúp khởi động phần phụ trợ của ứng
dụng mà không cần viết bất kỳ mã nào.(Auto-generated REST APIs)
● Sails tương thích với mọi front-end: Angular, React, iOS, Android,
Windows Phone, phần cứng tùy chỉnh hoặc những thứ khác hoàn
toàn.
● Sails dịch các socket messages đến cho bạn, chúng tự động tương
thích với mọi tuyến đường trong ứng dụng Sails của bạn.
● Sails cung cấp hỗ trợ thương mại để tăng tốc phát triển và đảm bảo
thực hành tốt nhất trong code của bạn.

2.1.3. Áp dụng Sails.js vào xây dựng trang web TWEML
Nhóm chúng tôi sử dụng Sails.js vào việc xây dựng server cho ứng dụng,
tạo các phương thức Get/Post/Patch nhận và gửi kết quả cho client bởi những
lợi ích to lớn mà Sails.js mang lại. Khả năng xử lý dữ liệu thời gian thực, tốc độ
xử lý nhanh chóng, thực hiện được nhiều yêu cầu cùng lúc và dễ dàng sử dụng
rất phù hợp để xây dựng server cho ứng dụng di động. Bên cạnh đó, việc sử
dụng Sails.js để xây dựng server cho phép dễ dàng can thiệp sâu vào việc xử lý,
lưu trữ dữ liệu và khả năng mở rộng lớn.

22



2.2. MongoDB cloud [2]
2.2.1. Giới thiệu về MongoDB
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở NoSQL phổ biến
được viết bằng C++. Được phát triển bởi MongoDB Inc. Tính đến tháng 2/2015,
MongoDB được xếp thứ 4 trong số các hệ thống cơ sở dữ liệu phổ biến nhất.

Hình 2.2 Tính năng của MongoDB
MongoDB là cơ sở dữ liệu hướng tài liệu, nó lưu trữ dữ liệu trong
các document dạng JSON với schema động rất linh hoạt. Nghĩa là những nhà
phát triển ứng dụng có thể lưu các bản ghi mà không cần lo lắng về cấu trúc dữ
liệu như là số trường, kiểu của trường lưu trữ. Tài liệu MongoDB tương tự như
các đối tượng JSON.
MongoDB là một cơ sở dữ liệu NoSQL hỗ trợ đa nền tảng, nó có
thể chạy trên Windows, Linux và Mac và hỗ trợ hầu hết các ngôn ngữ lập trình
phổ biến như C#, Java, PHP, Javascript trong các môi trường phát triển khác
nhau.

23


2.2.2. Tại sao nên sử dụng mongoDB [3]
Dựa trên những lợi ích của MongoDB mang lại và nhu cầu xây dựng ứng
dụng thời gian thực đặt ra ban đầu. MongoDB thật sự là một trong những lựa
chọn thích hợp bởi vì:
● MongoDB là phần mềm mã nguồn mở miễn phí, có cộng đồng phát
triển rất lớn.
● Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn
hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ .
● MongoDB là document database, dữ liệu lưu dưới dạng JSON, không

bị bó buộc về số lượng field, kiểu dữ liệu… do đó ta có thể insert thoải
mái dữ liệu mà mình muốn.
● MongoDB là một rich query language tức là nó có sẵn các method để
thực hiện create, read, update, delete dữ liệu (CRUD).
● MongoDB hỗ trợ replica set nhằm đảm bảo việc sao lưu và khôi phục
dữ liệu.
● Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ
liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm
một node với vào cluster:
● Phù hợp với việc phát triển server Sails.js

2.2.3. Áp dụng mongoDB vào xây dựng trang web TWEML
Trong ứng dụng, MongoDB đơn giản là hệ quản trị cơ sở Nosql. Ứng
dụng sẽ tương tác lấy dữ liệu MongoDB thông qua server được viết trên nền
tảng Node js.
Với việc lưu dữ liệu mà không cần định nghĩa sẵn và không cần thiết lập
mối quan hệ giữa các cơ sở dữ liệu giúp cho việc lưu trữ cũng như lấy dữ liệu
được thực hiện nhanh chóng.
Nhờ việc lưu trữ dưới dạng JSON, đối tượng lồng đối tượng, việc quản lý
và truy xuất cơ sở dữ liệu trong MongoDB được thực hiện và kiểm soát hiệu quả

24


×