Đồ án tốt nghiệp Danh mục các từ và thuật ngữ viết tắtBốn thuộc tính quan trọngACID Atomicity, | Consistency, | của một hệ quản tri cơ sở Isolation, và Durability dữ liệu khi xử ly bat k
Trang 1BO THONG TIN VÀ TRUYEN THONG HOC VIEN CONG NGHE BUU CHINH VIEN THONG
DO AN TOT NGHIEP DAI HOC
Dé tai:
XAY DUNG HE THONG QUAN LY CONG DONG DAT VA
CHO THUE CAN HO HOMELIKE
Giảng viên hướng dẫn: Th.S NGUYÊN MẠNH SƠNSinh viên thực hiện: NGUYEN SY QUANG ANH
Mã sinh viên: B17DCCN031
Lớp: DI7CNPM3 Khóa: 2017-2022 Hệ: Đại học Chính quy
HÀ NOI, 2021
Trang 2BO THONG TIN VÀ TRUYEN THONG HOC VIEN CONG NGHE BUU CHINH VIEN THONG
DO AN TOT NGHIEP DAI HOC
Dé tai:
XAY DUNG HE THONG QUAN LY CONG DONG DAT VA
CHO THUE CAN HO HOMELIKE
Giảng viên hướng dẫn: Th.S NGUYÊN MẠNH SƠNSinh viên thực hiện: NGUYEN SY QUANG ANH
Mã sinh viên: B17DCCN031
Lớp: DI7CNPM3 Khóa: 2017-2022 Hệ: Đại học Chính quy
HÀ NOI, 2021
Trang 3NHAN XÉT, ĐÁNH GIÁ, CHO DIEM
(Của người hướng dẫn)
Điểm: cà, (bang chữ: cc c2 c2: )
Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?
Hà Nội, ngày thang năm 20
GIẢNG VIÊN HƯỚNG DẪN
(ký và ghi rõ họ tên)
Trang 4NHAN XÉT, ĐÁNH GIÁ, CHO DIEM
(Của người phản biện)
Điểm: c (băng chữ: c 22c: )
Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng châm đồ án tốt nghiệp?
Hà Nội, ngày thang năm 20
GIẢNG VIÊN PHẢN BIỆN
(ký và ghi rõ họ tên)
Trang 5Đồ án tốt nghiệp Mục lục
MỤC LỤC
AY LOL On 0) Ol 2125 5LOT CAM OWN 057 7DANH MỤC BANG BIEU - 2-5 << <©S£©S£Es£ 9£ sEEsEEsEsEsEseEsersersersessese 8
1.2.2 Lưu trữ dữ liệu trong ElASfiCS@TCỈ, 5 5s rưệt 17
1.3 Thuật toán TE/IDE 2s se +s££Ss££x+©ExEESeEvseESsEEAETAeEkserkserssrrssre 19
1.4 Các thư viện và framework lập trình được lựa chọn s«<<s« 20
“1N nn 20
Jl”N/2Á90 06 ốốỐốỐốỐồỒồ 21 1.4.3 MySQL 5-55 5S E22 212222112112 re 23 7w YNnnnẽnẽẽ e.= 24 1.4.5, PayPal 2 ) 08n6n ốẦ5ẦŠẦŠ.Ầ e ố 25
ca he 27
CHUONG 2 PHAN TÍCH VA THIẾT KE HỆ THÓNG °-5°- 28
2.1 Phân tích hệ thong cc.sscsssssssssessessescessessssssssssssessessessessessssussessessessesseesesssessenes 282.1.1 Các tác nhân chính của hệ thống - + + ©cSt+St‡E‡E+EtEEerEerkerkerkersses 282.1.2 Biểu đồ ca hoạt động tÔỔng qIHÁtK 2-52 £SE‡EE‡E‡EEE2EEEESEEerkerkerkersses 28D.1.3 Kich DG nh nẽ.ẽaaasaẶỶN 29
Trang 6Đồ án tốt nghiệp Mục lục
2.1.2 Biểu đô lớp phân tÍCh, +- +: + ©£++E+EE£EE£EEEEEEEEEEEEEEEEEEEEEEE1 2121111 382.2 Thiét ké on 110 41
2.2.1 Liên kết các QUAN NE H-HI 25:22 ©5£2SSt2Et‡EESEEEEEkEEEEEEEEEESrkrrrkrrkrerkree 41
2.2.2 Thiết kế lược đô cơ sở dữ WCU ce ceeccesseessesssesssesssesssesssssesssessssssesssesssessesssessvecs 452.2.3 Một số biểu đỗ tun tue ceccccccceccecsessssssessessesssessessessussssssessesssssessessessesssesseesess 47CHUONG 3 CÀI ĐẶT THU NGHIỆM VÀ ĐÁNH GIA 5 s-< 563.1 Kiến trúc hệ thống s-s«°se+s©ss©+ssevseErsetxeetsettsettstrksstssrrserssersee 563.2 Một số hình ảnh về giao diện hệ thống -2 s- 2s s2 se =se=sesses57B.QD THANG CRU nn 57 3.2.2 Trang mạng xã hỘi Sàn HH HH HH kg ky 573.2.3 Chi ti€t CON NG ng ah aỮỒ Ả 583.2.4 Chi ti€t DGi nnẶối 593.2.5 Trang cá nhân Hgười đÙH cv ng kg key 60 3.2.6 Xem danh sách người theo đỐi - - cv tk key 60
3.2.7 Tim kiếm căn hộ và hiển thị trên bản dO ceccccccessscscssesvesesesvessesvevesesvsesesveseees ó1
3.2.8 Đặt thuê căn hộ và thanh ÍOIï c5 5555555 511111 kkkkkkeee 62 3.2.9 Giao diện trang chủ của người Cho thu occccccccccesccessecerscesceeeseeenseesnseetsees 65900.0007757 66TÀI LIEU THAM KHẢO 5° 522 s° s2 SSsSs£EsESeESSESseEseEserssexserserssrssess 67
Trang 7Đồ án tốt nghiệp Lời cảm ơn
LỜI CẢM ƠN
Đầu tiên, em xin trân trọng gửi lời cảm ơn đặc biệt và bày tỏ lòng biết ơn sâu sắcđến giảng viên hướng dẫn của em, thay Nguyễn Mạnh Son đã luôn tận tâm, nhiệt tìnhchỉ bảo, giải đáp những khúc mắc, khó khăn của em trong suốt quá trình học tập và thực
hiện đồ án, giúp em có thé hoàn thành được đồ án một cách tốt nhất.
Em xin gửi lời cảm ơn chân thành đến các Thầy, Cô của Học viện Công nghệ Bưuchính Viễn thông, đặc biệt là các Thay, Cô khoa Công nghệ thông tin 1 đã tận tình giảng
day va trang bi cho em những kiến thức bổ ích, quan trong va tạo mọi điều kiện thuận
lợi dé em có thé hoàn thành đồ án
Em cũng xin được cảm ơn các anh chị khóa trên, các anh chị đồng nghiệp đã giúp
đỡ em rất nhiều trong thời gian qua; cảm ơn gia đình và bạn bè đã luôn ở bên quan tâm,ủng hộ em trong suốt quá trình thực hiện dé án
Cuối cùng, dù đã rất cô gắng nhưng do thời gian, kiến thức và kinh nghiệm của em
còn hạn chế nên đồ án này không tránh khỏi nhiều thiếu sót, chính vì vậy, em rất mongnhận được những sự góp ý cũng như chỉ bảo tận tình từ các thầy cô dé em có thé hoànthiện các kĩ năng, bổ sung cho mình thêm nhiều kiến thức bồ ích
Em xin chân thành cảm ơn!
Hà Nội, tháng 12 năm 2021
Sinh viên thực hiện
Nguyễn Sỹ Quang Anh
Trang 8Đồ án tốt nghiệp Danh mục bảng biéu
DANH MỤC BANG BIEU
Kịch bản chức năng đăng nhập - - - c2 3233 re.29
Kịch bản chức năng thêm bài ViẾT ¿2-2 S+SE+SE£EE2E£E£EeEEerEerxrrsrrs 30
Kịch bản chức năng theo dõi người dùng c Sc cScssssssxeeserrrss 32 Kịch bản chức năng đặt thuê căn hộ - 2 3+ +ssirrserrrsrrrre 33
Kịch bản chức năng thanh tOán - - - - c3 32313 3 ng.34
Kịch bản chức năng thêm căn hộ 55 S22 +32 xsErseerrererrrrrerree 35
Kịch bản chức năng xóa căn hộộ - - - c0 2< 2311 1 1 HH ng 36 Kịch bản chức năng xóa người dùng - «xe seeeserrersre 38
Trang 9Đồ án tốt nghiệp Danh mục hình vẽ
DANH MỤC HÌNH VE
Hình 1.1 Mô hình kiến trúc phân tán của Elasticsearch -¿2 +22 16Hình 1.2 Qua trình lưu đữ liệu của Elasticsearch - s+ + +sssseesesserssrsres 18Hình 1.3 Quá trình lấy dữ liệu của Elasticsearch 2 2 2+ z+Ee£Ee£xerxerxsreee 18Hình 1.4 Giao diện ví dụ về thư viện LeafletJS [Ó]- -. CS ẶẶSS SH 21Hình 1.5 Các công ty xây dựng trên nền tang Ruby on Rails [7] - - 23Hình 1.6 Luồng hoạt động của quá trình thanh toán qua PayPal API [§] 25Hình 1.7 Luéng hoạt động của quá trình trả tiền qua PayPal API [9] 26Hình 2.1 Biểu đồ ca sử dung tổng quát 2-2 2 eSkeEE£EE£EEEEE2EEEEEEerEerkerkereee 28Hình 2.2 Biểu đồ ca sử dụng của người dùng hệ thống -2- 5z: 29Hình 2.3 Biéu đồ ca sử dụng của khách hang 2-2 25£+S£+E£Ee£Eerxerxereee 33Hình 2.4 Biéu dé ca sử dụng của chủ căn NG 5c 32+ 323 Eviseirssrrrrrrrres 35Hình 2.5 Biéu đồ ca sử dung của người quản trị - 2- s s++2 ++Ezxerxerxerxsreee 37
Hình 2.6 Biểu đồ lớp phân tích - 2-22 2 E+EE++E£+EE+EE£EEt2EE2EEEEEEEEtEEErEkrrkerkrrex 39
Hình 2.7 Liên kết quan hệ cho User (người theo đối) va User (người được theo dõi) 42Hình 2.8 Liên kết quan hệ cho User và Role - ¿2 2 + £+££+E£+E££E££Ee£Eerxsrxee 42Hình 2.9 Liên kết quan hệ cho Post và Item - ¿2 2 + £+££+E£+E££E£Eerxerxsrxee 43Hình 2.10 Liên kết quan hệ cho Apartment và Facility . ¿- 5z ©s©sz+cxz2csze: 44Hình 2.11 Liên kết quan hệ cho Item và Tag - 2-2552 22£E+EE+£EezEEzEerxerxezes 44Hình 2.12 Lược đỗ cơ sở dữ liệu -¿ 5+ccc+vtttEEkrrttEkrrtttrrrrriierrrirrrirri 45Hình 2.13 Biéu đồ tuần tự chức năng đăng nhập - 2 2 + xzE+z£e+zxsrxczes 47Hình 2.14 Biéu đồ tuần tự chức năng theo dõi người dùng -2- 55255248Hình 2.15 Biéu đồ tuần tự chức năng thêm bài viẾt 2-2 2 s2E22£+£xsrxczes 49Hình 2.16 Biéu đồ tuần tự chức năng bình luận VỀ bài VIẾK -c-cccccccxerrxererreree 50Hình 2.17 Biểu đồ tuần tự chức năng đặt thuê căn hộ, -¿ 5¿- s+©5+z=+2 51
Trang 10Đồ án tốt nghiệp Danh mục hình vẽ
Hình 2.18 Biểu đồ tuần tự chức năng xem thanh toán 2- 2 2s s+zs+zs+ss+2 52Hình 2.19 Biéu đồ tuần tự chức năng thêm căn hộ - - 55+ £++sseeseesserse 53Hình 2.20 Biéu đồ tuần tự chức năng xóa căn NG woe cesesseessesssesssesssecstessesssecssecseesseessecs 54Hình 2.21 Biéu đồ tuần tự chức năng xóa người dùng : -¿©2 +22: 55
Hình 3.2 Giao diện trang Củ 1t TT HH Hàn Hàng ng 57 Hình 3.3 Giao diện trang mạng xã HOI - - - G2 1k1 SH TH Hệ, 58Hình 3.4 Giao diện thông tin chỉ tiết căn hộ, -2¿©22©5+22x+2zxvzxevrxesrxesrxeee 58Hình 3.5 Giao diện thông tin chỉ tiết căn hộ (tiẾp) - 2- 2-52 2+ 2+Ec£Ee£xerxerxereee 59Hình 3.6 Giao diện chỉ tiết bai Viét ececcseecsseecesseeeessneeessnnecessneeessneeesneeesnneeessneees 59Hình 3.7 Giao diện trang cá nhân người dung - 5xx reereereee 60 Hình 3.8 Giao diện danh sách người theo dõI s5 «1t nen 60Hình 3.9 Giao diện tìm kiếm căn hộ hiền thị trên bản đồ c-ccsc:-+ 61Hình 3.10 Giao diện tìm kiếm căn hộ hiền thị trên bản đồ (tiếp) -: 62Hình 3.11 Giao diện đặt căn hộ - - c2 EE 2223111111 11233111 111g 111 ng vn 62
Hình 3.12 Giao diện thanh tOáñ - <5 22 3332221111 23111 25311 192311 1821 12 1 cv vre 63
Hình 3.13 Giao diện thông tin chi tiết đặt thuê ¿cv EEEkSEEEEkrkrrrksrerrs 64
Hình 3.14 Giao diện danh sách đặt thuê của khách hàng -¿++<+++<<++ss2 64
Hình 3.15 Giao diện danh sách căn hộ của chủ nhà - c5 <<<<s+++++ss<<+ 65
10
Trang 11Đồ án tốt nghiệp Danh mục các từ và thuật ngữ viết tắt
DANH MỤC CÁC TỪ VÀ THUẬT NGU VIET TAT
JSON Javascript ObJect Notation
Là một kiểu dữ liệu mởtrong JavaScript Kiểu ditliệu này bao gồm chủ yếu
DOM Document ObJect Model
Là một giao diện lập trình ứng dụng, có dạng một cây
cấu trúc dữ liệu, được dùng
để truy xuất các tài liệu
ra từ phía máy chủ web,
thay vì máy chủ tải lại toan
bộ trang web như truyềnthống
CSS Cascading Style Sheets
Được dùng dé miêu tả cáchtrình bày các tài liệu viếtbằng ngôn ngữ HTML vàXHTML.
11
Trang 12Đồ án tốt nghiệp Danh mục các từ và thuật ngữ viết tắt
Bốn thuộc tính quan trọngACID Atomicity, | Consistency, | của một hệ quản tri cơ sở
Isolation, và Durability dữ liệu khi xử ly bat kỳ
giao dịch nào.
12
Trang 13Đồ án tốt nghiệp Danh mục các thuật ngữ tiếng Anh
DANH MỤC CÁC THUẬT NGỮ TIENG ANH
Từ tiếng Anh Nghĩa tiếng Việt
Full-text search Tìm kiếm toàn văn bản
Framework Khung phần mềm
Client Máy khách
Server May chu
Request Yéu cau
Broadcast Truyén quang ba
Callback Ham thuc hién sau
13
Trang 14Đồ án tốt nghiệp Lời mở đầu
LỜI MỞ ĐẦU
Tính đến đầu năm 2021, Việt Nam có 68,72 triệu người sử dụng Internet, chiếm70,3% dân số, theo số liệu từ của Trung tâm Internet Việt Nam [1] Số liệu này đã chothấy được sự phát triển mạnh mẽ và mức ảnh hưởng của Internet tới cuộc sống củachúng ta hiện nay.
Sự phổ biến của Internet đã mang lại những doanh thu không lồ cho các mạng xãhội và các nền tảng kinh doanh số dựa trên mạng xã hội, khi mà người dùng có thể bỏ
ra nhiều giờ đồng hồ mỗi ngày để sử dụng các tiện ích mà mạng xã hội đem lại Bêncạnh mạng xã hội, sự phô biến của Internet còn làm cho các nhu cầu số của người dùngngày một tăng cao, vì sự tiện lợi của các hình thức kinh doanh trực tuyến: chỉ cần ngồi
tại nhà với một thiết bị kết nối Internet là đã có thé thoải mái mua sắm, chọn lựa.
Hiện nay, nhu cầu về homestay cũng ngày một tăng cao và đang dần trở thành một
xu hướng của giới trẻ vì sự tiện lợi của nó với giá thành phải chăng cộng thêm không
gian riêng tư, thoải mái phù hợp cho những buôi đi chơi ngăn ngày bên bạn bè
Nhận thấy tiềm năng của mạng xã hội và xu hướng của các homestay, bản đồ ánnày đưa ra đề tài “Xây dựng Hệ thống quản lý cộng đồng đặt và cho thuê căn hộHomeLike”, kết hợp giữa hai mô hình đang là xu hướng, nhằm cụ thé hóa và giải quyếtcác bài toán con:
e Tim kiêm căn hộ trực tuyên theo vi trí có hiên thi ban do.
e Đặt thuê, đánh giá và chia sẻ vê căn hộ với bạn bẻ thông qua mô hình mang
xã hội.
Đối với mỗi bài toán, đồ án sẽ trình bày những kiến thức và các công nghệ liên
quan, sau đó là giải pháp và cài đặt thử nghiệm Câu trúc đô án bao gôm:
Chương 1 Giới thiệu bài toán và Công nghệ xây dựng hệ thong
Chương này trình bày bài toán và các công nghệ được sử dụng khi cài đặt hệ thống.Bao gồm: Elastis Search, Thuật toán TF/IDF, các thư viện và ngôn ngữ lập trình
Chương 2 Phân tích và thiết kế hệ thống
Chương này trình bày các bước và các biéu đồ phân tích thiết kế hệ thống theo phương
pháp hướng đối tượng
Chương 3 Cài đặt thử nghiệm và đánh giá
Chương này trình bày sơ đồ kiến trúc hệ thống và một số giao diện kết quả
Cuối cùng là Kết luận và Tài liệu tham khảo
14
Trang 15Đồ án tốt nghiệp Chương 1 Giới thiệu bài toán và các các công nghệ
CHUONG 1 GIỚI THIỆU BÀI TOÁN VÀ CÁC CÔNG NGHỆ XÂY
DỰNG HỆ THÓNG
Homestay là loại hình dịch vụ lưu trú dựa vào cộng đồng, khách du lịch sẽ ngủ
nghỉ tại nhà riêng của người dân, được sử dụng ngôi nhà hoặc căn hộ đó giống như nhưnhà của mình xuyên suốt thời gian thuê, do đó có được những trải nghiệm chân thực vềcuộc song tại địa phương đó mà các loại hình lưu trú khác như khách san, nhà nghỉ
không có được.
Hiện nay, loại hình kinh doanh homestay không chỉ xuất hiện tại các địa phươngtrọng điểm về du lịch, mà còn xuất hiện tại các đô thị, trở thành điểm đến vào mỗi cuốituần của những khách hàng muốn tận hưởng sự tiện nghi, hiện đại trong khoảng thời
gian ngắn với giá thành hợp lý
Xu hướng du lịch homestay cùng với sự phát triển mạnh của các nền tảng mạng
xã hội và xu hướng chuyên đổi số hiện nay đã định ra bài toán về một hệ thống đặt chỗ
và cho thuê căn hộ homestay trực tuyến có thể tìm kiếm và hiển thị vị trí trên bản đồ,
kết hợp cùng mô hình mạng xã hội giúp người dùng tiếp cận được tốt hơn với các căn
hộ chất lượng, đồng thời những tương tác giữa người với người trên mô hình mạng xãhội sẽ mang lại sự thích thú, qua đó có thể thu hút được nhiều người dùng
Đồ án này tập trung vào giải quyết bài toán trên bằng cách tiếp cận các bài toáncon: tìm kiếm, hién thi vi trí trên bản đồ; đặt chỗ, cho thuê va xây dựng cộng đồng déngười dùng có thé kết bạn và chia sẻ, gợi ý cho nhau những căn hộ chat lượng
1.1 Giới thiệu bài toán
Tìm kiếm là bài toán không còn xa lạ gì trong ngành Công nghệ thông tin Chúng
ta dễ dang bắt gặp bài toán nay trong hầu hết các ứng dụng quen thuộc sử dụng hàngngày Tuy nhiên trong thực tế, người tìm kiếm luôn mong muốn được nhập dữ liệu đầu
vào ngăn gọn nhất mà hệ thống vẫn có thé đưa ra những kết quả liên quan nhất đến dữ
liệu đầu vào đó Điều này khiến bài toán tìm kiếm trở nên phức tạp hơn Đồ án này sử
dụng Elasticsearch là một giải pháp cho bài toán tìm kiếm nêu trên
Đối với những hệ thống liên quan đến địa điểm, nơi chốn, hiển thị vị trí lên bản đồ
là một tinh năng không thể thiếu Hiển thị lên bản đồ giúp người dùng có cái nhìn trựcquan hơn, dễ tiếp cận và dễ dàng cân nhắc hơn khi lựa chọn điểm đến
Hiện nay có rất nhiều các dịch vụ, thư viện giúp cho việc hiển thị bản đồ trở nên
dễ dàng, cùng rất nhiều các tính năng hữu ích Trong khuôn khổ của đồ án, em lựa chọnLeafletJS, một thư viện mã nguồn mở với đầy đủ các tính năng cần thiết, dé giải quyết
bài toán trên.
15
Trang 16Đồ án tốt nghiệp Chương | Giới thiệu bai toán và các các công nghệ
Bài toán được đưa ra là xây dựng hệ thống quản lý việc cho thuê căn hộ ngắn hạnkết hợp với mô hình mạng xã hội Hệ thống sẽ hướng tới đối tượng người dùng là những
khách hang có nhu cầu thuê nhà dé ở ngắn ngày, như khách du lịch thích trải nghiệm,
khách đi nghỉ dưỡng, và những chủ căn hộ kinh doanh homestay, từ đó tạo ra một
cộng đồng kết nối những người có nhu cầu thuê và những người cho thuê Khách hàng
có thé theo đõi bạn bè, chủ căn hộ, qua đó thấy được những bai viết về những căn hộđược đánh giá tốt, được bạn bè gợi ý, chia sẻ, giúp họ tìm được những homestay chấtlượng nhất
1.2 Giới thiệu Elasticsearch
1.2.1 Giới thiệu chung
Elasticsearch là công cụ phân tích và tìm kiếm phân tán mã nguồn mở, hoạt động
như một server chạy trên nền tang Apache Lucene, một search engine mã nguồn mở
được phát triển bởi Apache bằng Java Elasticsearch cung cấp API cho công việc lưu trữ
tìm kiếm dữ liệu một cách rất nhanh chóng Điểm mạnh của Elasticsearch còn thé hiệnrất rõ ở tính phân tán và khả năng mở rộng theo chiều ngang (horizontal scale) Tuynhiên, trong khuôn khô của đồ án này, lợi thế về tính phân tán và khả năng mở rộng củaElasticsearch không được áp dụng.
NODE 1 - # MASTER NODE 2 NODE 3
Hình 1.1 Mô hình kiến trúc phân tán của Elasticsearch
CLUSTER
- Node: mỗi node là một thực thé đang hoạt động của Elasticsearch, là nơi lưu trữ
toàn bộ dữ liệu và thực hiện tiếp nhận request từ phía client
- Cluster: là tập hợp các Node hoạt động cùng nhau, có cùng cluster.name và chia
sẻ với nhau dữ liệu, khối lượng công việc Mỗi cluster có một Node Master, được
lựa chon tự động và hoan toàn có thé được thay thế néu xảy ra sự cố
- Shard: Các index được chia theo chiều ngang thành các shard, mỗi shard chứa
tat cả các thuộc tính của document nhưng chứa ít đối trong JSON hon index MỗiNode sẽ bao gồm nhiều Shard, Elasticsearch sẽ đảm nhiệm việc quản lý các giao
tiếp với Shard, vì thế Shard sẽ là đối tượng nhỏ nhất, hoạt động ở mức thấp nhất,
đóng vai trò lưu trữ dir liệu.
16
Trang 17Đồ án tốt nghiệp Chương 1 Giới thiệu bài toán và các các công nghệ
Shard rất quan trọng vì:
- Cho phép phân mảnh theo chiều ngang mở rộng khối lượng bản ghi
- Cho phép phân tan và hoạt động song song trên các phân đoạn, nhờ đó tăng hiệu
suât làm việc.
Có 2 loại shard được sử dụng là Primary Shard va Replica Shard [2]
Primary Shard
e Primary Shard là phần nằm ngang gốc của một index và sau đó các primary shard
này được sao chép thành các Replicas Shard.
e Primary Shard là sẽ lưu trữ dữ liệu và đánh index Sau khi đánh xong dữ liệu sẽ được
vận chuyên tới các Replica Shard
e Mac định của Elasticsearch là mỗi index sẽ có 5 Primary Shard đối với phiên bản
6.x trở xuống, 1 Primary Shard ké từ phiên bản 7.x, và mỗi Primary Shard thì sé đikèm 1 Replica Shard.
Replica Shard
¢ Nơi lưu trữ dir liệu sao chép của Primary Shard, được sử dung dé thay thé Primary
Shard khi có lỗi xảy ra Đó cũng là lý do vì so Replica Shard không được phân bótrên cùng một node với Primary Shard của nó, dé đảm bảo tính toàn ven đữ liệu va
tính chịu lỗi.
e Tăng cường tốc độ tìm kiếm bởi có thé cài đặt lượng Replica Shard nhiều hơn mặc
định của Elasticsearch hoặc thực hiện thao tác tìm kiếm song song trong các bản sao
này.
1.2.2 Lưu trữ dữ liệu trong Elasticsearch
Don vi dit liệu co ban của Elasticsearch là Document, là một đối tượng JSON cóđịnh danh duy nhất Document trong Elasticsearch giống với bản ghi dữ liệu của cơ sở
dữ liệu quan hệ, tuy nhiên không bị ràng buộc bởi schema Mỗi Document khi tạo ra sẽ
được đánh chỉ mục bằng cách sử dụng cấu trúc inverted index giống như các cơ sở ditliệu có hỗ trợ full-text search Hiểu một cách đơn giản thi inverted index là một cách
đánh chỉ mục dựa trên đơn vị là từ nhằm mục đích tạo mối liên kết giữa các từ và các
document chứa từ đó [2].
Index là một tập hợp những Document có chung thuộc tính, tính chất Khi tạo một
index có thể xác định số lượng shard tạo ra cho index đó Mặc định đối với phiên bản7.x trở lên, mỗi index tạo ra sẽ chỉ có 1 shard được tạo cùng, thay vì 5 shard như các
phiên bản trước, điều này giúp làm giảm dư thừa phân mảnh với những dữ liệu khôngquá lớn.
17
Trang 18Đồ án tốt nghiệp Chương | Giới thiệu bai toán và các các công nghệ
NODE 1 - # MASTER NODE 2 NODE 3
CLUSTER
Hình 1.2 Quá trình lưu dữ liệu của Elasticsearch
Quá trình lưu trữ dữ liệu trên Elasticsearch có thé chia thành 3 bước [3]:
1) Request được gửi đến Node Master (Node 1) Tại đây thực hiện tính toán dé
tìm ra Primary Shard của Document sẽ là 0.
2) Sau khi xác định được Primary Shard là 0, request sẽ được gửi đến Node 3,
nơi chứa P0 (Primary Shard 0).
3) Node 3 thực hiện request và xử lý lưu trữ dữ liệu Sau khi thành công, nó gửi
tiếp request đến các Replica Shard ở Node 1 va Node 2 dé dam bảo dữ liệuthống nhất giữa các node
NODE 1 - # MASTER NODE 2 NODE 3
CLUSTER
Hình 1.3 Quá trình lấy dữ liệu của Elasticsearch
Quá trình lấy dữ liệu trên Elasticsearch có thê chia thành 3 bước [3]:
1) Request được gửi đến Node Master (Node 1) Tại đây xác định Primary Shard
cho Document sẽ là 0.
18
Trang 19Đồ án tốt nghiệp Chương 1 Giới thiệu bài toán và các các công nghệ
2) Do tất cả Node đều lưu đữ liệu, nên Master Node sẽ chọn ra 1 Node va lay dt
liệu ở Shard số 0 (P0 hoặc R0) Việc chon này giúp giảm tap trung vào một
node Thuật toán Round-Robin được sử dụng để các Shard được chọn khác
nhau ở mỗi request Trong trường hợp này Node 2 được chọn.
3) Replica Shard 0 ở Node 2 trả về kết quả cho Master Node
Elastic thực hiện các công việc sau cho công đoạn truy vấn tìm kiếm đữ liệu [3]:
1) Node nhận request sẽ gửi broadcast request đó đến tat cả các Node khác Tại
mỗi Node này sẽ chỉ định một Shard thực hiện công việc tìm kiếm theo yêucầu
2) Mỗi Shard sẽ thực hiện công việc tìm kiếm, trả về _id Về _score cua
Document Trong đó, _id là định danh duy nhất của Document, _ score là giá
trị dùng dé sắp xếp Document theo thứ tự của độ liên quan với thông tin cần
tìm kiếm
3) Node tiếp nhận request sau khi nhận kết quả trả về từ các Node khác sẽ thực
hiện công việc sắp xếp toàn cục tất cả các Document được trả về, dựa theo_id và _score để đảm bảo tính đúng đắn của dit liệu Cuối cùng Node tiếpnhận request sẽ trả ra kết quả sau khi sắp xếp về phía client
1.3 Thuật toán TF/IDF
Thuật toán đánh giá được sử dụng rất phố biến trong Elasticsearch có tên gọi là
TF/IDF, viết tắt của Term Frequency/Inverse Document Frequency, bao gồm các yếu tôđánh giá: Term frequency, Inverse document frequency, Field-length norm [4,5]
1.3.1 Term frequency
Yéu tô này được sử dung dé đánh giá tan suât xuât hiện cua term trong field Càng
xuât hiện nhiêu, relevance càng cao Term frequency được tính bởi công thức:
tft, d) = //frequency
Giải thích: term frequency tf của term t trong document d sẽ được tinh bằng căn bậc haicủa tần suất xuất hiện của t trong d
19
Trang 20Đồ án tốt nghiệp Chương 1 Giới thiệu bài toán và các các công nghệ
1.3.2 Inverse document frequency
Yếu tố này đánh giá tan suất xuất hiện của term trên toàn bộ index Nếu term xuất
hiện càng nhiều thì sẽ càng ít thích hợp Ví dụ với các từ không mang ý nghĩa riêng biệtnhư “sinh viên”, khi tìm kiếm sẽ có ít giá trị hơn so với “sinh viên học viện Công nghệ
Bưu chính viễn thông”.
1.3.3 Field-length norm
Yếu tô này đánh giá độ dài của field chứa term Với field càng ngăn, việc xuất hiện
của term trong đó sẽ có giá trị càng cao Điển hình như việc xuất hiện term ở tiêu đề sẽ
có giá trị hơn hắn khi xuất hiện trong nội dung bài viết
Công thức tính:
1
vnumFieldTerms
Giải thích: Field-length norm (norm) của document d là nghịch đảo căn bậc 2 của số
lượng của term trong field.
norm(d) =
Tổng hợp lai, ta có công thức tính _ score như sau:
_ score = IDF score * TF score * fieldNorms
1.4 Các thư viện va framework lập trình được lựa chon
Trang 21Đồ án tốt nghiệp Chương | Giới thiệu bai toán và các các công nghệ
Leaflet được thiết kế chú trọng tới sự đơn giản, hiệu suất, và khả năng sử dụng Nócũng hoạt động hiệu quả trên cả nền tảng máy tính lẫn điện thoại, có thể được mở rộng
với rất nhiều các plugin
Hình 1.4 Giao diện ví dụ về thư viện LeafletJS [6]
Lý do lựa chọn LeafletJS:
Đối với API cho bản đồ thì Google Maps luôn đi đầu, nhưng giá thành cần phải trảrất tốn kém Leaflet là một thư viện mã nguồn mở, không tốn kém chi phí, nhưng cũng
cung cap khá đầy đủ các tính năng cần thiết cho phát triển ứng dụng
Do đó trong khuôn khổ đồ án nay, em lựa chọn LeafletJS cho việc hiển thị vị trítrên bản đồ
1.4.2 Ruby On Rails
Ruby on Rails là một web framework được viết dựa trên ngôn ngữ lập trình Ruby
Do vậy, trước khi đi vào tìm hiểu Rails framework thì em sẽ trình bày đôi nét về ngôn
ngữ lập trình Ruby.
21
Trang 22Đồ án tốt nghiệp Chương 1 Giới thiệu bài toán và các các công nghệ
a Ngôn ngữ lập trình Ruby
Ruby được tạo ra bởi Yukihiro "Matz" Matsumoto từ 24 thang 2, 1993 và đưa ra
bản chính thức vào năm 1995, và hiện tại vẫn đang được tiếp tục phát triển Ké từ sau
khi ngôn ngữ Ruby được công khai, những hiệu quả phát triển mà nó mang lại ngàycàng được biết đến rộng rãi, và hiện tại nó đã trở thành 1 ngôn ngữ nỗi tiếng trên khắpthế giới
Ruby là ngôn ngữ hướng đối tượng hoàn toản, với mọi thứ đều là một đối tượng.
Điểm mạnh của Ruby:
- Tất cả những mặt mạnh của ngôn ngữ hướng đối tượng, Ruby đều kế thừa
hoàn toàn, bao gồm cả sự linh động của chính ngôn ngữ Ta có thé viết thêm nhữngmethod khác vào Ruby mà không hề ảnh hưởng tới những method đã có
- Dé dang đọc hiểu, do có cú pháp ngắn gon, súc tích Lập trình viên khi lập
trình với Ruby sẽ có cảm giác cú pháp của nó rất “thanh thoát”
Điểm yêu của Ruby: Điểm yếu lớn nhất của Ruby là tốc độ, so sánh với Javathì Ruby chậm hơn rất nhiều
b Ruby on Rails framework
Được phát triển dựa trên ngôn ngữ Ruby dé phục vu cho việc xây dung ứng dụngweb, Rails là một framework nồi tiếng về sự tiện ích với thế mạnh về cú pháp của Ruby,cùng với đó là rất nhiều những thư viện có sẵn mạnh mẽ giúp cho lập trình viên tập trungvào phát triển ứng dụng hơn là phải xử lý từ những thứ nhỏ nhất Không chỉ là nhữngthư viện có sẵn, cộng đồng sử dụng Ruby on Rails rất lớn và do đó có rất nhiều nhữngthư viện tiện lợi cho Rails.
Ruby on Rails đưa ra những quy ước dé lập trình viên tuân theo, từ đó framework
sẽ có các cơ chế để giúp cho việc lập trình của lập trình viên trở nên tiện lợi hơn, ví dụ
như tự động sinh ra những file cần thiết, tự động tìm kiếm và import các file
Rails được xây dựng dựa trên mô hình nổi tiếng MVC, tuy nhiên với những cập
nhật gần đây nó cũng có những hỗ trợ dé phát triển một ứng dụng Restful API chứ khôngchỉ là MVC.
Vì những lý do trên, có rất nhiều những ô ông lớn trong ngành công nghệ đã và đang
sử dung Ruby on Rails làm công cụ phát triển, ví dụ một số cái tên nổi bật như: Twitter (hiện đã chuyền đổi qua Scala), Github, Airbnb, Soundcloud
22
Trang 23Đồ án tốt nghiệp Chương | Giới thiệu bai toán và các các công nghệ
©» STORLET 3 Basecamp
CAR RENTAL
Hình 1.5 Các công ty xây dựng trên nền tang Ruby on Rails [7]
c Lý do lựa chon Ruby on Rails:
Đồ an nay sử dung Ruby on Rails dé phát triển phía server vì những tiện dụng của
nó như cú pháp ngắn gọn, dễ đọc của ngôn ngữ Ruby, sự mạnh mẽ đến từ các thư viện
có sẵn và bên ngoài cua Rails framework, dé dang tích hợp với các dịch vụ bên thứ ba
do tính phố biến của framework
1.4.3 MySQL
MySQL là hệ quan tri cơ sở dt liệu quan hệ mã nguồn mở, hoạt động theo mô hình
client-server Công ty Thuy Điển MySQL AB phát trién MySQL vào năm 1994 Công
ty công nghệ Mỹ Sun Microsystem sau đó giữ quyền sở hữu MySQL sau khi mua lạiMySQL vào năm 2008 Năm 2010, gã khổng 16 Oracle mua Sun Microsystems vàMySQL thuộc quyền sở hữu của Oracle từ đó
MySQL tương thích với nhiều hệ điều hành máy tính phổ biến như Linux, macOS
và Microsoft Windows Hiện nay có rất nhiều ông lớn trong ngành công nghệ sử dụng
MySQL như Facebook, Youtube và MySQL cũng được giảng dạy rộng rãi ở các
trường đại học trong nước và quốc tế
Các đặc điểm giúp cho MySQL trở nên nồi tiếng và được ứng dụng rộng rãi [7]:
e MySQL được phát hành theo giấy phép nguồn mở Nó hoàn toàn miễn phí
e MySQL sử dụng một dạng chuẩn của ngôn ngữ truy van dữ liệu SQL nổitiêng
23
Trang 24Đồ án tốt nghiệp Chương 1 Giới thiệu bài toán và các các công nghệ
e MySQL tương thích với nhiều hệ điều hành và nhiều ngôn ngữ lập trìnhkhác nhau bao gồm Ruby, C, C ++, Java, PHP
e MySQL hoạt động rất nhanh và hoạt động tốt ngay cả với các tập dit liệulớn
e MySQL rất thân thiện với PHP, một ngôn ngữ phổ biến trên toàn thế giớitrong nhiều năm qua
e = MySQL hỗ trợ co sở dit liệu lớn, lên tới 50 triệu hàng hoặc nhiều hơntrong một bảng Giới hạn kích thước tệp mặc định cho một bảng là 4GB, nhưng ta
có thé điều chỉnh giới hạn này theo lý thuyết lên đến 8 triệu TB
Lý do lựa chọn MySQL
Đồ án sử dụng MySQL để lưu trữ dữ liệu vì những nó là mã nguồn mở, đồng thời
với tính phố biến rộng rãi, dé sử dụng và tương thích với nhiều nền tảng, ngôn ngữ khácnhau của nó.
Việc lựa chọn co sở dữ liệu quan hệ cho đồ án mà không lựa chọn công nghệ khác
mới hơn hiện nay như cơ sở dữ liệu không quan hệ NoSQL dựa trên tính năng và phạm
vi của đồ án Đồ án không có các tính năng cần truy vấn lượng lớn đữ liệu với tốc độcao và lưu trữ linh hoạt vốn là thế mạnh của NoSQL, mặt khác, đồ án có các tính năngyêu cau tính ACID của cơ sở dữ liệu có quan hệ, đồng thời việc duy trì quan hệ giữa các
bảng một phan cũng dam bao tính an toàn của dữ liệu, tránh việc xóa nhằm dữ liệu
1.4.4 ReactJS
ReactJS là một thư viện viết bang Javascript, dùng dé xây dựng giao diện người
dùng, được Facebook opensource vào năm 2015 React được sử dụng rộng rãi và có hệ
sinh thái đa dạng phong phú.
ReactJs sử dụng Virtual DOM giúp cho hiệu suất tốt hơn với DOM Ngay trướckhi có thay đôi diễn ra, React sẽ lấy một snapshot của Virtual DOM và so sánh với một
Virtual DOM được cập nhật thay đổi Từ đó phát hiện những phan thay đổi và chỉ cậpnhật chúng, bỏ qua những phần không liên quan, qua đó giúp tăng tốc độ so với tải lạitoàn bộ các phan tử trên DOM mỗi khi có thay đổi như cách truyền thống
ReactJs là một SPA, toàn bộ tài nguyên của web bao gồm các file CSS, Javascript
sẽ được load lần đầu tiên khi bắt đầu duyệt website Khi chuyên qua các trang khác ở
lần sau, chỉ những dữ liệu cần thiết mới được tải xuống, giúp mang đến trải nghiệmmượt mà hơn cho người dùng, giảm thời gian tải lại toàn bộ tài nguyên, tiết kiệm băngthông và quan trọng nhất là giảm thời gian chờ đợi
Lý do lựa chọn ReactJS
24
Trang 25Đồ án tốt nghiệp Chương | Giới thiệu bai toán và các các công nghệ
ReactJS với những ưu điểm nêu trên cho hiệu suất tốt hơn cách tải giao điện truyềnthống Ngoài ra, ReactJS hỗ trợ việc tái sử dụng các thành phần của ứng dụng, giúp cho
việc lập trình trở nên dé dàng, đồng thời dé đọc hiểu và chỉnh sửa mã nguồn hơn
1.4.5 PayPal Developer
PayPal là một công thanh toán điện tử trực tuyến giúp chúng ta có thé đưa tiền từtài khoản ngân hàng vào tài khoản PayPal dé tiến hành giao dịch trên mạng Hoặc rúttiền từ tài khoản PayPal về tài khoản ngân hàng Khi sử dụng PayPal làm trung gian thìquá trình giao dịch sẽ đơn giản hơn và bảo mật hơn, do dữ liệu về tài khoản ngân hàng
của người dùng không bị phía server của trang web lưu trữ lại.
a Thanh toán qua PayPal
Thanks for your payment!
Trang 26Đồ án tốt nghiệp Chương | Giới thiệu bai toán và các các công nghệ
PayPal hỗ trợ các API giúp cho việc tích hợp thanh toán trở nên thuận tiện hơn cho lập
trình viên [8]
Luông hoạt động của tinh năng thanh toán với PayPal diễn ra như sau:
- Người thanh toán chọn nút Thanh toán PayPal được tích hợp vào trang web
- Nut Thanh toán sẽ gọi đến hàm tạo giao dịch, đồng thời hiển thị giao diện thanh toán
của PayPal để người dùng xác nhận thanh toán
- Nguoi dung chọn Xác nhận
- Sau khi được xác nhận, PayPal Orders API sẽ trả về callback để gọi tới API tiến hành
giao dịch
- _ Giao dịch hoàn tat, trang web thông báo cho người dùng thanh toán thành công
b Rút tiền qua PayPal
Existing user
P PAvPAL ma
Acme paid you $10.00 Acme funds! I
New user Download and sign up $10.00 is yours!
Hình 1.7 Luồng hoạt động của quá trình trả tiền qua PayPal API [9]
Việc rút tiền qua PayPal được thực hiện bởi PayPal Payouts API với các yêu cầu như
sau: cần có tài khoản PayPal Business, có cài đặt Payout, xác thực danh tinh, email, tai
khoản ngân hàng liên kết tới tài khoản PayPal Business và cuối cùng là đủ số du dé thực
hiện trả tiền [9]
Luông trả tiền sẽ dién ra như sau:
- PayPal Payouts API sẽ cung cap API dé tao Payout, trong API cần lựa chọn nhập vào
email/s6 điện thoại của người nhận
- PayPal sẽ gửi thông báo tới người nhận qua hai hình thức:
26
Trang 27Đồ án tốt nghiệp Chương 1 Giới thiệu bài toán và các các công nghệ
+ Nếu người nhận đã có tài khoản PayPal, sẽ có thông báo qua email và trên ứng
dụng PayPal Người nhận có thể vào nhận trực tiếp
+ Nếu người nhận chưa có tài khoản PayPal, sẽ có thông báo qua email hoặc số điện
thoại, người nhận cần tạo tài khoản PayPal dé nhận tiền
c Lý do lựa chọn PayPal
PayPal cung cấp những API cần thiết, dé sử dụng cho lập trình viên, đồng thời có
một trang tai liệu dé đọc giúp việc tích hợp trở nên dễ dàng hơn PayPal tương thích với
ngôn ngữ Ruby.
1.5 Kết luận
Chương 1 đã giới thiệu bài toán và trình bày những khái niệm tông quát, các công
nghệ được sử dụng trong đồ án Chương 2 sẽ trình bày chỉ tiết về phân tích, thiết kế hệ
thống giải quyết bài toán đã đặt ra ở chương 1
27
Trang 28Đồ án tốt nghiệp Đại học Chương 2 Phân tích và Thiết kế Hệ thống
CHƯƠNG 2 PHAN TÍCH VÀ THIET KE HE THONG 2.1 Phan tich hé thong
2.1.1 Các tác nhân chính của hệ thống
Tác nhân chính của hệ thống bao gồm: Người dùng hệ thống: Chủ nhà, Khách hàng,Người quản trị hệ thống
Người dùng hệ thống có thé: đăng nhập, đăng kí, đăng tai bài viết, thich/chia sẻ/bình
luận bài viết của bạn bè, theo dõi/hủy theo dõi người dùng hệ thống khác
Chủ nhà có thé: đăng tải nội dung về căn hộ mình muốn cho thuê, chỉnh sửa thông
tin về căn hộ của mình, tìm kiếm căn hộ của mình, nhận tiền của khách đặt thuê căn
hộ.
Khách hàng có thé: tìm kiếm căn hộ muốn thuê theo tên, địa điểm, đánh giá, giá tiền;đặt căn hộ muốn thuê, gửi đánh giá, bình luận về căn hộ, thanh toán, xem chỉ tiết
thanh toán sau khi thanh toán thành công.
Người quản trị hệ thống có thể: đăng nhập, quản lý căn hộ, quản lý người dùng hệthống: sửa thông tin/xóa thông tin/kích hoạt/đình chỉ hoạt động, theo dõi lợi nhuận.2.1.2 Biểu đồ ca hoạt động tổng quát
28
Trang 29Đồ án tốt nghiệp Đại học Chương 2 Phân tích và Thiết kế Hệ thống
Mô tả Cho phép người dùng đăng nhập vào hệ thông
Tác nhân Khách hàng, Chủ căn hộ, Quản trị hệ thống
Tiền điều kiện | Người dùng đã có tài khoản dé đăng nhập
29
Trang 30Đồ án tốt nghiệp Đại học Chương 2 Phân tích và Thiết kế Hệ thống
Hậu điều kiện Người dùng đăng nhập thành công.
Luong chính
1 Hệ thống hiển thị giao diện Đăng nhập
2 Người dùng nhập tài khoản và mật khẩu và chọn đăng nhập
3 Hệ thống kiểm tra tính chính xác của tài khoản, mật khẩu và tiễnhành đăng nhập Người dùng vào hệ thống
4 Hệ thống hién thị giao diện Trang chủ tùy vào tác nhân thực hiệnđăng nhập
Luéng phu
b Thém bai viét
Tai bước 3: Thông tin đăng nhập bi sai
3.1 Hệ thống báo lỗi sai tên đăng nhập hoặc mật khẩu
3.2 Quay lại bước 2
Bảng 2.2 Kịch bản chức năng thêm bai viếtTên Thêm bài viết
Mô tả Cho phép người dùng đăng tải bài viết lên trang cá nhân
Tác nhân Người dùng
Tiên điêu kiện
Hậu điêu kiện
Người dùng đã đăng nhập vào hệ thốngNgười dùng đăng tải bài viết thành công
Luong chính
1 Hệ thống hiển thị giao điện Đăng bài viết
2 Người dùng nhập vào các trường: tiêu đề, nội dung, có thể chọn
đính kèm hình ảnh; sau đó chọn Thêm
3 Hệ thống thông báo thêm căn hộ thành công
30
Trang 31Đồ án tốt nghiệp Đại học Chương 2 Phân tích và Thiết kế Hệ thống
Tại bước 2:
2.1 Người dùng nhập thiếu thông tin bắt buộc
2.1.1 Hiển thị thông báo các trường bắt buộc2.1.2 Quay lại bước 1
: 2.2 Người dùng chọn Hủy đăng bài
c Bình luận về bai viet
Bảng 2.3 Kịch bản chức năng bình luận về bài viếtTên Bình luận về bài viết
Mô tả Cho phép Người dùng bình luận về bài viết của bạn bè
Tác nhân Người dùng
Tiền điều kiện | Người dùng đã đăng nhập vào hệ thống
Hệ thống hiển thị giao diện Chi tiết bài viết kèm theo bình luận
Hậu điêu kiện
mới
1 Người dùng chọn Bình luận ở bài viết bất kì trong hệ thống
2 Hệ thống hiển thị giao điện Bình luận cho người dùng điền nội
Trang 32Đồ án tốt nghiệp Đại học Chương 2 Phân tích và Thiết kế Hệ thống
d Theo dõi người dùng
Bảng 2.4 Kịch bản chức năng theo dõi người dùng
Tên Theo dõi người dùng
Mô tả Cho phép Người dùng theo dõi một người dùng khác trong hệ thống
Tác nhân Người dùng
Tiền điều kiện | Người dùng đã đăng nhập vào hệ thống
Hậu điều kiện | Hệ thống hiển thi giao diện chính
1 Hệ thống hiển thị giao diện Danh sách người dùng
2 Người dùng chọn Theo dõi
Luong chính Í|+ Hạ thống ghi nhận lượt theo doi, các bài viết của Người dùng
được theo dõi sẽ hiển thị lên Trang cá nhân của Người dùng thực
hiện theo dõiLuong phụ Không
32
Trang 33Đồ án tốt nghiệp Đại học Chương 2 Phân tích và Thiết kế Hệ thống
Một số kịch bản cho khách hàng đặt thuê căn hộ
Bảng 2.5 Kịch bản chức năng đặt thuê căn hộ
Tên Đặt thuê căn hộ
Mô tả Người dùng thực hiện đặt căn hộ muốn thuê
Tác nhân Khách hàng
Tiền điều kiện | Khách hàng đã đăng nhập vào hệ thống
Hậu điều kiện | Hệ thống hiển thị giao diện Thanh toán
33