Tải bản đầy đủ (.docx) (44 trang)

THIẾT KẾ WEBSITE ĐẶT TOUR DU LỊCH

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.25 MB, 44 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ

BÁO CÁO ĐỒ ÁN MƠN HỌC
LẬP TRÌNH MẠNG VÀ TRUYỀN THƠNG

THIẾT KẾ WEBSITE ĐẶT TOUR DU LỊCH

GVHD: Ths. Nguyễn Văn Cường
Nhóm sinh viên: Nhóm 7
1.
2.
3.
4.
5.

Nguyễn Bá Tùng
Vũ Hồng Sơn
Lê Văn Đạt
Đinh Thị Quỳnh Hoa
Bùi Quang Đạt

Hà Nội - 2023

Mã SV: 2020603041
Mã SV: 2020601027
Mã SV: 2020605036
Mã SV: 2020600238
Mã SV: 2020601626



LỜI CẢM ƠN
Nhóm em xin chân thành cảm ơn Thầy Nguyễn Văn Cường đã tận tình
dạy dỗ, giúp đỡ nhóm trong quá trình chuẩn bị và thực hiện đồ án. Hướng dẫn,
cung cấp tài liệu và truyền đạt nhiều ý kiến thiết thực trong suốt quá trình thực
hiện đồ án. Những kinh nghiệm quý báu mà Thầy truyền đạt sẽ là những kinh
nghiệm quý báu cho nhóm em trong việc thực hiện các đề tài khác trong tương
lai.
Mặc dù đã có nhiều cố gắng nhưng với kiến thức cịn hạn hẹp và thời
gian tiếp xúc với thực tế chưa nhiều, vì vậy bài báo cáo đồ án của nhóm em
khơng thể tránh khỏi nhiều thiếu sót. Em rất mong có được những ý kiến
đóng góp chân thành của các Thầy Cô để cho kiến thức trong cuốn báo cáo
này được hoàn thành hơn.
Em xin chân thành cảm ơn!
Hà Nội, ngày 12 tháng 12 năm 2023
Nhóm sinh viên
Nhóm 7


MỤC LỤC
DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT............................................iv
DANH MỤC BẢNG BIỂU.............................................................................v
DANH MỤC HÌNH ẢNH..............................................................................vi
MỞ ĐẦU..........................................................................................................1
1.

Lý do lựa chọn đề tài............................................................................1

2.

Mục tiêu nghiên cứu.............................................................................1


3.

Đối tượng nghiên cứu...........................................................................1

4.

Phạm vi nghiên cứu..............................................................................1

5.

Cấu trúc của báo cáo.............................................................................2

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT..............................................................3
1.1 NODE.JS.................................................................................................3
1.1.1 Định nghĩa NodeJS...........................................................................3
1.1.2 NodeJS hoạt động như thế nào?.......................................................4
1.1.3 Thành phần và đặc điểm của NodeJS...............................................4
1.1.4 Một số ưu điểm của NodeJS............................................................5
1.1.5 Ứng dụng của NodeJS......................................................................6
1.1.6 Một số ứng dụng được viết bằng NodeJS........................................6
1.1.7 Một số nhược điểm còn tồn tại của NodeJS.....................................7
1.2 MongoDB................................................................................................7
1.2.1 NoSql................................................................................................7
1.2.2 Khái niệm mongoDB.......................................................................8
1.2.3 Những tính năng nổi bật của mongoDB...........................................9
1.2.4 Ưu điểm của mongoDB..................................................................10
1.2.5 Nhược điểm của mongoDB............................................................11
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG................................12
2.1 Phân tích thiết kế chức năng của hệ thống............................................12

2.1.1 Các chức năng chính của hệ thống.................................................12
2.1.2 Sơ đồ usecase chính.......................................................................13
2.1.3 Sơ đồ usecase đăng ký tài khoản....................................................13
2.1.4 Sơ đồ usecase đăng nhập................................................................14


2.1.5 Sơ đồ usecase xem tất cả các tour..................................................15
2.1.6 Sơ đồ usecase xem chi tiết một tour...............................................15
2.1.6 Sơ đồ usecase đặt tour....................................................................16
2.1.6 Sơ đồ usecase cài đặt người dùng..................................................17
2.2 Xây dựng cơ sở dữ liệu.........................................................................17
2.2.1 Dữ liệu bảng “bookings”................................................................17
2.2.2 Dữ liệu bảng “reviews”..................................................................18
2.2.3 Dữ liệu bảng “tour”........................................................................18
2.2.4 Dữ liệu bảng “user”........................................................................19
CHƯƠNG 3: THỰC NGHIỆM VÀ ĐÁNH GIÁ.......................................20
3.1 Giao diện hệ thống................................................................................20
3.1.1 Giao diện website...........................................................................20
3.1.2 Giao diện chi tiết của một tour.......................................................21
3.1.3 Giao diện đăng nhập.......................................................................23
3.1.4 Giao diện đăng kí tài khoản............................................................23
3.1.5 Giao diện thanh toán......................................................................24
3.1.6 Giao diện cài đặt tài khoản.............................................................24
3.2 Kiểm thử sản phẩm................................................................................25
3.2.1 Kiểm thử chức năng đăng ký.........................................................25
3.2.2 Kiểm thử chức năng đăng nhập......................................................29
3.2.3 Kiểm thử chức năng đặt tour..........................................................32
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN............................36
4.1 Kết luận.................................................................................................36
4.2 Hướng phát triển....................................................................................36

TẠI LIỆU THAM KHẢO............................................................................37


DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT
Phần tử mô hình
Tác nhân
(Actor)

Use case

Mối quan hệ giữa
các use case

Ký hiệu

Ý nghĩa
Một người / nhóm
người hoặc một thiết
bị hoặc hệ thống tác
động hoặc thao tác
đến chương trình.
Biểu diễn một chức
năng xác định của
hệ thống
Use case này sử
dụng lại chức năng
của use case kia
Use case này kế
thừa các chức năng
từ use case kia


DANH MỤC BẢNG BIỂU
Bảng 2. 1 Bảng dữ liệu “bookings”.................................................................17
Bảng 2. 2 Bảng dữ liệu “reviews”...................................................................18
Bảng 2. 3 Bảng dữ liệu “tour”.........................................................................18
Bảng 2. 4 Bảng dữ liệu “user”.........................................................................19


DANH MỤC HÌNH ẢNH

Hình 1. 1 Node.js Development........................................................................3
Hình 1. 2 các thành phần của NodeJ.................................................................5
Hình 1. 3 MongoDB..........................................................................................8
Hình 2. 1 Sơ đồ usecase của hệ thống.............................................................13
Hình 2. 2 Sơ đồ usecase đăng ký tài khoản.....................................................13
Hình 2. 3 Sơ đồ usecase đăng nhập.................................................................14
Hình 2. 4 Sơ đồ usecase xem tất cả tour.........................................................15
Hình 2. 5 Sơ đồ usecase xem chi tiết tour.......................................................15
Hình 2. 6 Sơ đồ usecase đặt tour.....................................................................16
Hình 2. 7 Sơ đồ usecase cài đặt người dùng...................................................17
Hình 3. 1 Giao diện website khi chưa đăng nhập............................................20
Hình 3. 2 Giao diện website khi đã đăng nhập................................................20
Hình 3. 3 Giao diện chi tiết tour “The forest hiker tour”................................21
Hình 3. 4 Thơng chi tiết tour “The forest hiker tour”.....................................21
Hình 3. 5 Đánh giá chi tiết của khách hàng với tour “The forest hiker tour”. 22
Hình 3. 6 Đặt tour “The forest hiker tour”......................................................22
Hình 3. 7 Giao diện đăng nhập........................................................................23
Hình 3. 8 Giao diện đăng kí tài khoản.............................................................23
Hình 3. 9 Giao diện thanh tốn.......................................................................24
Hình 3. 10 Giao diện cài đặt tài khoản............................................................24

Hình 3. 11 Minh họa cho trường hợp kiểm thử đăng ký tài khoản test case 126
Hình 3. 12 Minh họa cho trường hợp kiểm thử đăng ký tài khoản test case 227
Hình 3. 13 Minh họa cho trường hợp kiểm thử đăng ký tài khoản test case 328
Hình 3. 14 Minh họa cho trường hợp kiểm thử đăng ký tài khoản test case 428
Hình 3. 15 Minh họa cho trường hợp kiểm thử đăng nhập test case 1............30
Hình 3. 16 Minh họa cho trường hợp kiểm thử đăng nhập test case 2...........30
Hình 3. 17 Minh họa cho trường hợp kiểm thử đăng nhập test case 3............31


Hình 3. 18 Minh họa cho trường hợp kiểm thử test case 4.............................32
Hình 3. 19 Minh họa cho trường hợp kiểm thử đặt tour test case 1................33
Hình 3. 20 Minh họa cho trường hợp kiểm thử đặt tour test case 2................34
Hình 3. 21 Minh họa cho trường hợp kiểm thử đặt tour test case 3................34
Hình 3. 22 Minh họa cho trường hợp kiểm thử đặt tour test case 4................35


1
MỞ ĐẦU
1. Lý do lựa chọn đề tài
Thương mại điện tử hiện đại là một trong những xu hướng không thể
phủ nhận của nền kinh tế ngày nay. Với sự hỗ trợ mạnh mẽ từ công nghệ và
sự bùng nổ của các thiết bị kết nối internet, doanh nghiệp đang có cơ hội ngày
càng lớn để mở rộng kênh bán hàng và quảng bá sản phẩm đến đối tượng
khách hàng. Sự xuất hiện của các trang web đã đóng góp quan trọng và lớn
lao trong việc thúc đẩy sự phát triển nhanh chóng của kinh doanh, đưa sản
phẩm và dịch vụ gần hơn với người tiêu dùng.
Với mong muốn xây dựng một hệ thống giới thiệu tour du lịch trên
website tiện lợi và giúp người dùng dễ dàng dặt cho mình một chuyến du lịch.
Nhóm em đã thực hiện đề tài “Thiết kế website đặt tour du lịch”. Nhóm em
tin tưởng rằng đây sẽ là một đề tài có giá trị, có thể hỗ trợ nhiều cơng ty du

lịch trong việc tối ưu hóa quy trình quản lý và thu hút đối tượng khách hàng
mục tiêu của họ.
2. Mục tiêu nghiên cứu
Xây dựng một Website về du lịch, cung cấp những thông tin cần thiết
cho việc lựa chọn địa điểm du lịch cho khách hàng.
Giao diện thân thiện, dễ dàng cho viêc chọn tour và đặt tour.
Nhiều thông tin cần thiết về đánh giá của những khách hàng trước, và
giới thiệu về tour du lịch.
3. Đối tượng nghiên cứu
Nghiên cứu chủ yếu về thiết kế website hỗ trợ khách hàng dễ dàng
trong việc xem và đặt tour.
4. Phạm vi nghiên cứu
Website được ứng dụng cho các công ty du lịch vừa và nhỏ,cho các du
khách muốn di tìm hiểu về du lịch và đặt tour du lịch.
Website thực hiện các chức năng :


2
- Đăng nhập/ Đăng xuất khỏi website
- Xem các tour du lịch đang hiện có
- Xem chi tiết từng tour du lịch
- Xem được những đánh giá của các khách hàng trước
- Xem các tour mà mình đã đặt
- Đổi tên, mật khẩu, avatar
- Thanh toán qua thẻ ngân hàng
Nền tảng sử dụng :
- Sử dụng Node.js Platform (Express Framework) để xây dựng được
website kết hợp với cơ sở dữ liệu NoSQL đó là MongoDB.
- Sử dụng cơng cụ phát triển ứng dụng: Visual StudioCode
5. Cấu trúc của báo cáo

Báo cáo đồ án bao gồm những nội dung chính sau:
Chương 1. Tổng quan về đề tài.
Chương 2. Phân tích và thiết kế hệ thống.
Chương 3. Xây dựng cơ sở dữ liệu.
Chương 4. Thiết kế giao diện.


3
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 NODE.JS
1.1.1 Định nghĩa NodeJS

Hình 1. 1 Node.js Development.
NodeJS được phát triển từ Javascript vào năm 2009 bởi Ryan Dahl.
NodeJS có cách thức hoạt động chủ yếu trên Server sử dụng để xây dựng cho
các ứng dụng realtime.
NodeJS dùng mơ hình I/O lập trình dựa theo sự kiện non-blocking.
Chính vì vậy, NodeJS tương đối gọn nhẹ, hiệu quả và là một cơng cụ hồn
hảo dành cho mọi ứng dụng chuyên sâu về dữ liệu dựa theo khoảng thời gian
thực khi chạy trên những thiết bị phân tán.
Node.js là một mã nguồn mở, đa nền tảng cho phát triển các ứng dụng
phía Server và các ứng dụng liên quan đến mạng. Ứng dụng Node.js được
viết bằng Javascript và có thể chạy trong mơi trường Node.js trên hệ điều
hành Window,Linux,...
NodeJs thường xuyên được dùng cho mục đích xây dựng một số ứng
dụng như: Ad Server, Websocket server, Fast File Upload Client, RESTful
API, Cloud Services, Any Real-time Data Application.


4

1.1.2 NodeJS hoạt động như thế nào?
NodeJS sử dụng chính là non-blocking hướng sự vào ra dữ liệu qua các
tác vụ thời gian một cách nhanh chóng. NodeJS có khả năng mở rộng nhanh
chóng, khả năng xử lý một số lượng lớn đồng thời bằng thông lượng cao
Nếu như ở các ứng dụng web truyền thống, các request sẽ tạo ra một
luồng xử lý yêu cầu mới và chiếm RAM của hệ thống thì việc tài ngun của
hệ thống có thể được sử dụng khơng hiệu quả. Chính vì lẽ đó giải pháp mà
NodeJS sử dụng đó là Single-Threaded, kết hợp với non-blocking I/O để xử
lý những yêu cầu.
1.1.3 Thành phần và đặc điểm của NodeJS
NodeJS sở hữu những đặc điểm nổi bật dưới đây:
 NodeJS là một Platform mà khơng phải là một Framework mà. Chính
vì vậy, nó cho phép chúng ta có thể xây dựng cho các website một cách
độc lập và nhanh chóng hơn.
 NodeJS thường sẽ chạy trên đa nền tảng phía Server nên nó có thể thực
hiện chạy ở bất kỳ các máy như: Mac – Window – Linux.
 NodeJS không được xem là một ngơn ngữ lập trình, nên những người
mới bắt đầu làm quen với NodeJS thì khơng thể học ngay được nếu như
khơng nắm chắc kiến thức lập trình căn bản như: các giao thức,
Javascript,... Tuy nhiên, cộng đồng NodeJS thường rất lớn và nó sẵn
sàng support cho bạn mọi lúc mọi nơi.
 NodeJS được xem là một máy chủ đơn luồng và khơng có khả năng hỗ
trợ đa luồng.
 Phần core của NodeJS thường được biết bằng ngôn ngữ C++ nên nó
hiệu năng cung như tốc độ xử lý tương đối cao. Nhờ vậy, hầu hết các
ứng dụng NodeJS đều có khả năng đáp ứng được thời gian thực chạy
trên đa nền tảng, đa thiết bị,...


5


Nguồn: />
Hình 1. 2 các thành phần của NodeJ
1.1.4 Một số ưu điểm của NodeJS
 Sử dụng Javascript
 IO hướng sự kiện không đồng bộ, cho phép xử lý nhiều yêu cầu đồng thời
 Chia sẻ cùng code ở phía client và cả serve
 Cộng đồng hỗ trợ tích cực
 NPM ( Node Package Manager) và Module Node ngày càng phát triển

mạnh mẽ
 Cho phép stream các file có kích thước lớn

1.1.5 Ứng dụng của NodeJS
Như đã chia sẻ phía trên, NodeJS là một trong những thành phần quan
trọng để xây dựng các ứng dụng realtime. Chính vì vậy, lập trình viên cần


6
phải biết được các ứng dụng của NodeJS để việc áp dụng sẽ được đơn giản
hóa. Hãy cùng ITNavi tìm hiểu ngay các ứng dụng của NodeJS nào:
 NodeJS có thể tạo, mở, đọc, ghi, xóa và đóng các tập tin ngay khi đang

truy cập trên máy chủ.
 Tạo ra nội dung cho các trang web động.
 NodeJS thực hiện thu thập các dữ liệu theo yêu cầu.
 NodeJS thực hiện truy vấn, sửa, xóa, thêm các dữ liệu trong các hệ cơ

sở như: Microsoft SQL Server, MySql, MongoDB, PostgreSQL
1.1.6 Một số ứng dụng được viết bằng NodeJS

Với những ứng dụng cần tính ổn định cao, cần có logic phức tạp thì các
ngơn ngữ cấp cao như PHP hoặc Ruby,... đều được xem là sự lựa chọn tốt hơn
cả. Còn đối với NodeJS thì dưới đây là những ứng dụng bạn có thể hoặc nên
viết bằng NodeJS:
 Fast File Upload: Đây là những chương trình up load file với tốc độ
cao.
 Websocket server: Là các máy chủ của web socket các dạng như:
Game server, online chat,...
 Restful API: đây là các ứng dụng thường được dùng cho những ứng
dụng khác thông qua API.
 Any Real-time Data Application: Bất kỳ mọi ứng dụng đều có yêu
cầu cao về tốc độ thực hiện trong thời gian thực. Ứng dụng này lấy ý
tưởng chia nhỏ ứng dụng lớn thành dịch vụ nhỏ rồi kết nối chúng lại
với nhau. Việc này NodeJS có khả năng thực hiện rất tốt.
 Ad server: Đây là những máy chủ quảng cáo.
1.1.7 Một số nhược điểm còn tồn tại của NodeJS
Tương tự các công nghệ mới, khi bạn triển khai Node.JS trên host thì
đều sẽ khơng dễ dàng. Nếu như bạn sở hữu một web hosting có thể sử dụng
chung thì bạn hồn tồn khơng thể tải lên đơn giản cho một ứng dụng Node.js


7
và chờ mong rằng nó có thể hoạt động tốt. VPS và dedicated server thường sẽ
là những lựa chọn vô cùng tốt cho phép bạn có thể cài đặt được NodeJS dễ
dàng hơn khi ở trên chúng.
Ngồi ra, nó sẽ dễ hơn việc sử dụng một dịch vụ với khả năng mở rộng
như Heroku Nhờ vậy, bạn hồn tồn có thể an tâm cho việc phát triển trang
web của mình ở trên đó bằng cách trả tiền nếu như cần thêm nhiều tài nguyên.
Node.js đơn giản là sự thay thế dành cho Apache mà các ứng dụng web
đang tồn tại thường khơng thể tương thích với hiệu quả với những ứng dụng

đã được phát triển ngay từ đầu.
Node.js đó đang nằm trong giai đoạn phát triển ban đầu nên quá trình
hồn thiện có thể làm thay đổi một số đặc trưng ban đầu. Chính vì vậy, nó sẽ
thường bao gồm những chỉ số ổn định và chỉ số này thường có thấy mức độ
rủi ro khi bạn sử dụng sẽ có nhiều nét đặc trưng hơn rất nhiều.
1.2 MongoDB
1.2.1 NoSql
NoSQL là 1 dạng CSDL mã nguồn mở và được viết tắt bởi: NoneRelational SQL hay có nơi thường gọi là Not-Only SQL.
NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là
JSON và dạng dữ liệu theo kiểu key và value.
NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót
cũng như hạn chế của mơ hình dữ liệu quan hệ RDBMS (Relational Database
Management System - Hệ quản trị cơ sở dữ liệu quan hệ) về tốc độ, tính năng,
khả năng mở rộng,...
Với NoSQL bạn có thể mở rộng dữ liệu mà khơng lo tới những việc
như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc .v.v ...
NoSQL bỏ qua tính tồn vẹn của dữ liệu và transaction để đổi lấy hiệu
suất nhanh và khả năng mở rộng.


8
NoSQL được sử dụng ở rất nhiều công ty, tập đồn lớn, ví dụ như
FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử
dụng BigTable,...
1.2.2 Khái niệm mongoDB

Hình 1. 3 MongoDB
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL
thuộc NoSql và được hàng triệu người sử dụng.
MongoDB là một database hướng tài liệu (document), các dữ liệu được

lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên
truy vấn sẽ rất nhanh.
Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan
hệ (như MySQL hay SQL Server...) sử dụng các bảng để lưu dữ liệu thì với
MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng
So với RDBMS thì trong MongoDB collection ứng với table, còn
document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row
trong RDBMS. Các collection trong MongoDB được cấu trúc rất linh hoạt,
cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định.
Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh
thông qua ngơn ngữ truy vấn MongoDB.
1.2.3 Những tính năng nổi bật của mongoDB
MongoDB có khá nhiều những tính năng hỗ trợ người dùng trong quản
lý, lưu trữ và xử lý dữ liệu phức tạp:


9
- Sử dụng truy vấn Ad hoc
Đây là một trong những tính năng hiệu quả nhất của chương trình.
MongoDB truy vấn Ad hoc sẽ hỗ trợ các trường, truy vấn vào phạm vi và truy
xuất các biểu thức để trả về những trường document cụ thể gồm những
JavaScript function do người dùng xác định hoặc những truy vấn được cấu
hình và trả lại những kết mẫu kết quả có kích thước xác định.
- Khả năng nhân rộng
Khả năng nhân rộng Replication hay còn được hiểu là nhân bản, tức là
sẽ có những bản sao tương tự những phiên bản mà bạn đang sử dụng. Nhu cầu
lưu trữ dữ liệu lớn do cơ sở dữ liệu ngày càng đa dạng, chính vì vậy nó càng
địi hỏi dữ liệu phải được tồn vẹn và tránh bị mất mát trước những sự cố
trong q trình xử lý.
Chính vì thế khả năng nhân bản của MongoDB sẽ hỗ trợ rất hiệu quả

trong phòng ngừa những sự cố hư hỏng cơ sở dữ liệu xảy ra. Đặc biệt hơn
MongoDB còn cho phép phân chia thứ cấp bản sao:
+ Bản sao chính được sử dụng để đọc và ghi dữ liệu đồng thời với bản
gốc.
+ Bản sao thứ cấp dùng bản sao tích hợp để duy trì dữ liệu trên bảo
sao chính của bản gốc.
- Trong cân bằng tải
Thông qua Sharding, MongoDB phân chia tỷ lệ theo chiều ngang giúp
người sử dụng chọn lựa chọn 1 Shard key, xác định những data được phân phối
trong Collection. Về cơ bản, những dữ liệu được phân chia, phân phối đồng đều
dựa trên những Shard key. Hỗ trợ chạy trên nhiều máy chủ, cân bằng tải hoặc copy
dữ liệu để giúp hệ thống luôn hoạt động ngay cả khi có lỗi về phần cứng.
- Hỗ trợ lưu trữ các tệp dữ liệu


10
MongoDB sử dụng như hệ thống tệp nhờ khả năng lưu trữ tệp dữ liệu
từ đó hỗ trợ cân bằng tải và copy dữ liệu từ nhiều máy tính. Trong đó, hệ
thống tệp GridFS sẽ phân chia từng tệp ra những phần hay đoạn lưu thành
những document riêng và người dùng có thể truy xuất GridFS thơng qua tiện
ích Mongofiles.
- Tập hợp
MongoDB cung cấp 3 phương pháp tập hợp chính bao gồm
Aggregation Pipeline, Single-purpose Aggregation và Mapreduce. Trong đó,
Aggregation Pipeline được đánh giá là mang lại hiệu suất cao hơn so với
những hoạt động tổng hợp khác.
- Quy định kích thước giới hạn Collection
MongoDB có hỗ trợ cho những Collection giới hạn. Khi dữ liệu vượt
quá mức giới hạn cho phép thì những tài liệu cũ trước đó sẽ bị xóa mà khơng
cần người dùng sử dụng bất kỳ câu lệnh điều khiển nào.

- Khả năng giao dịch
MongoDB mang lại tính năng trợ giúp cho những giao dịch đa tài liệu
ACID và bắt đầu có hiệu dụng kể từ version 4.0 ra mắt vào tháng 6 năm 2018.
1.2.4 Ưu điểm của mongoDB
- Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên
mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh
hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải
mái.
- Dữ liệu trong MongoDB khơng có sự ràng buộc lẫn nhau, khơng có join
như trong RDBMS nên khi insert, xóa hay update nó khơng cần phải mất
thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong
RDBMS.


11
- MongoDB rất dễ mở rộng (Horizontal Scalability). 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:
- Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ
truy vấn thông tin đạt hiệu suất cao nhất.
- Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để
phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ
cứng.
- Hiệu năng cao: 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ệ
(RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ
insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL.
1.2.5 Nhược điểm của mongoDB
- Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB
khơng có các tính chất ràng buộc như trong RDBMS nên khi thao tác với

mongoDB thì phải hết sức cẩn thận.
- Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về
value do đó key sẽ bị lặp lại. Khơng hỗ trợ join nên dễ bị dữ thừa dữ liệu.
- Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay
xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ
liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có
nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện...


12
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Nhằm nắm được các ràng buộc do người sử dụng áp đạt lên hệ thống.
vậy ta cần xác định rõ những gì mà hệ thống cần thực hiện.
2.1 Phân tích thiết kế chức năng của hệ thống
2.1.1 Các chức năng chính của hệ thống
Giai đoạn phân tích trả lời câu hỏi hệ thống làm gì thì sang thiết kế hệ
thống trả lời câu hỏi “ hệ thống làm như thế nào”. Trong phần này chúng em
sẽ điểm qua công việc và yêu cầu của bài toán.
Mục tiêu của giai đoạn thiết hệ thống là đưa ra bản thiết kế đáp ứng đặc
tả yêu cầu chức năng trong phạm vi các ràng buộc kì thuật của dự án, cũng
như tài liệu thiết kế cho hệ thống phuc vụ cho việc quản lý, theo dõi việc phát
triển hể hệ thống và hỗ trợ cho việc bảo hành và bảo trì hệ thống trong tương
lai.
Như ta đã biết, đối tượng sử dụng chính của website là khách hàng. Vì
vậy, Website có những chức năng như sau:
- Xem tour và đặt tour theo yêu cầu:
 Khách hành có thể xem từng tour hoặc tất cả các tour
 Tại mỗi tour hiển thị tên của chuyến đi, thời gian, số điểm dừng,
số người tham gia, chi phí cho chuyến đi
 Khi ấn vào chi tiết của 1 tour thì khách hàng sẽ thấy giới thiệu

chi tiết về chuyến đi đó, hướng dẫn viên của chuyến đi và các
nhận xét của khách hàng đã ham gia chuyến đi trước đó.
 Khách hàng có thể đặt tour trực tiếp qua chuyến đi và thanh toán
qua thẻ ngân hàng
- Cài đặt tài khoản:
 Khách hàng có thể thay đổi tên, địa chỉ email và avatar của khách
hàng
 Xem được những tour mà mình đã đặt


13
- Đăng ký:
 Khi đăng ký, khách hàng phải cung cấp đầy đủ các thông tin yêu
cầu trong bản đăng ký, sau đó gửi yêu cầu, nếu hợp lệ, web sẽ
cung cấp account cho khách hàng.
- Đăng nhập:
 Tài khoản đã được đăng kí sẽ có thể đăng nhập truy cập vào các
tiện ích của web.
2.1.2 Sơ đồ usecase chính

Hình 2. 1 Sơ đồ usecase của hệ thống
2.1.3 Sơ đồ usecase đăng ký tài khoản

Hình 2. 2 Sơ đồ usecase đăng ký tài khoản
- Tác nhân: Khách hàng
- Mô tả khái quát: Cho phép khách hàng đăng ký tài khoản để đăng nhập
vào hệ thống và đặt tour du lịch.
- Điều kiện đầu vào: Chức năng bắt đầu khi khách hàng truy cập vào hệ
thống và chọn vào “REGISTER”.
- Dòng sự kiện chính:

+ Khách hàng chọn mục “REGISTER”.
+ Giao diện đăng kí tài khoản hiển thị.



×